Free Electron
StratumI.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_StratumI_h__
8 #define __terrain_StratumI_h__
9 namespace fe
10 {
11 namespace ext
12 {
13 
14 /**************************************************************************//**
15  @brief Elevation at location
16 
17  @ingroup terrain
18 
19  TODO a deformable phase, like sand
20 *//***************************************************************************/
21 class FE_DL_EXPORT StratumI: virtual public Component
22 {
23  public:
24  enum Phase
25  {
26  e_solid, // fixed collidable
27  e_liquid, // non-compressible
28  e_gas // compressible gradiant
29  };
30 
31 virtual Phase getPhase(void) const =0;
32 virtual void setPhase(Phase phase) =0;
33 
34 virtual Real getDensity(void) const =0;
35 virtual void setDensity(Real density) =0;
36 
37 virtual Real getOffset(void) const =0;
38 virtual void setOffset(Real offset) =0;
39 
40 virtual Real getScale(void) const =0;
41 virtual void setScale(Real scale) =0;
42 
43 virtual void setTime(Real time) =0;
44 
45 virtual Real height(Real x,Real y) const =0;
46 virtual SpatialVector normal(Real x,Real y) const =0;
47 virtual void sample(Real startx,Real starty,Real incx,Real incy,
48  U32 vertx,U32 verty,SpatialVector* pVertex,
49  SpatialVector* pNormal) =0;
50 };
51 
52 } /* namespace ext */
53 } /* namespace fe */
54 
55 #endif /* __terrain_StratumI_h__ */
kernel
Definition: namespace.dox:3
Base for all interfacable components.
Definition: Component.h:20
Elevation at location.
Definition: StratumI.h:21