00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CYBELEVATIONGRID_HC
00026 #define CYBELEVATIONGRID_HC
00027
00028 #include "oaw/ctk/cybgeometryc.h"
00029 #include "oaw/ctk/cybcolorc.h"
00030 #include "oaw/ctk/cybnormalc.h"
00031 #include "oaw/ctk/cybtexturecoordinatec.h"
00032 #include "oaw/ctk/cybwrlfields.h"
00033 #include "../oawconfig.h"
00034
00035 OAW_BEGIN_NAMESPACE
00036
00037
00038 typedef ArrayC<long> LongArray;
00039
00040 class CybIsectLineChannelC;
00041
00042 class OAW_DLLMAPPING CybElevationGridC : public CybGeometryC
00043 {
00044 public:
00045 CybElevationGridC(CybWorldC*);
00046 CybElevationGridC(const CybElevationGridC&);
00047 CybElevationGridC& operator = (const CybElevationGridC&);
00048 ~CybElevationGridC();
00049 virtual void CreateNewCopy(CybNodeC*);
00050 virtual void FinishInit();
00051 virtual long GetFieldEventID(const char*);
00052 virtual long GetFieldDataType(long);
00053 virtual void SetEvent(long,const void*, BaseI*);
00054 virtual int SetNode(CybNodeC*);
00055
00056 virtual void ToChannelDefault(CybChannelC* pV, long lFlag);
00057 virtual void ToChannelTexture(CybChannelC* pV, long lFlag);
00058 virtual void ToIsectLineChannel(CybIsectLineChannelC* pIsectChan);
00059 protected:
00060 void InitDefault();
00061 virtual void LoadVRML(char*& iter, const char* iterEnd,long& znr);
00062 void SetColor(CybColorC*);
00063 void SetNormal(CybNormalC*);
00064 void SetTextureCoordinate(CybTextureCoordinateC*);
00065 void CalcPoints();
00066 void CalcBSphere();
00067 void CalcTris();
00068 void CreaseAngles();
00069 virtual void ClearArrays();
00070 virtual void EventCascadeEnd();
00071 virtual void PrepareRender();
00072
00073 ArrayC<VectorC> GetNormalsToVertex(long x, long y);
00074 VectorC CalcCreasedNormalOf(long x,long z, long t,long e);
00075 protected:
00076 CybColorC* m_pColor;
00077 CybNormalC* m_pNormal;
00078 CybTextureCoordinateC* m_pTextureCoordinate;
00079
00080 short m_bReCalc;
00081
00082 MFFloat m_height;
00083 SFBool m_ccw;
00084 SFBool m_colorPerVertex;
00085 SFFloat m_creaseAngle;
00086 SFBool m_normalPerVertex;
00087 SFBool m_solid;
00088 SFInt32 m_xDimension;
00089 SFFloat m_xSpacing;
00090 SFInt32 m_zDimension;
00091 SFFloat m_zSpacing;
00092
00093
00094 static char VRMLKeyStrList[][30];
00095
00096
00097
00098 ArrayC<SFVec3f> m_vPoints;
00099 ArrayC<float> m_vTris;
00100 ArrayC<float> m_vTriColors;
00101 ArrayC<float> m_vTriNormals;
00102 ArrayC<float> m_vTriTexCoords;
00103 ArrayC<SFVec3f> m_vTriNormals_help;
00104
00105 };
00106
00107 OAW_END_NAMESPACE
00108
00109
00110 #endif