Free Electron
StrataI.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2021 Free Electron Organization
2  Any use of this software requires a license. If a valid license
3  was not distributed with this file, visit freeelectron.org. */
4 
5 /** @file */
6 
7 #ifndef __terrain_StrataI_h__
8 #define __terrain_StrataI_h__
9 namespace fe
10 {
11 namespace ext
12 {
13 
14 /**************************************************************************//**
15  @brief Layered environment delimited by surfaces
16 
17  @ingroup terrain
18 
19  TODO solid surface contacts
20 *//***************************************************************************/
21 class FE_DL_EXPORT StrataI: virtual public Component
22 {
23  public:
24 virtual void addStratum(sp<StratumI> spStratumI) =0;
25 virtual void removeStratum(sp<StratumI> spStratumI) =0;
26 virtual U32 numStratum(void) =0;
27 virtual sp<StratumI> stratum(U32 index) =0;
28 
29 virtual void setTime(Real time) =0;
30 
31  /** @brief Discover the burdens of the world
32 
33  Drag and buoyancys are likely candidates. */
34 virtual void calcInfluence(SpatialVector& rForce,Real radius,
35  SpatialVector center,
36  SpatialVector velocity) =0;
37 
38  /// @brief Adjust location and velocity if colliding
39 virtual void impact(SpatialVector& center,SpatialVector& velocity,
40  Real mass,Real radius,Real deltaT) =0;
41 };
42 
43 } /* namespace ext */
44 } /* namespace fe */
45 
46 #endif /* __terrain_StrataI_h__ */
Layered environment delimited by surfaces.
Definition: StrataI.h:21
kernel
Definition: namespace.dox:3
Base for all interfacable components.
Definition: Component.h:20