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
00026 #ifndef CYBTOUCHSENSOR_HC
00027 #define CYBTOUCHSENSOR_HC
00028
00029
00030 #include "oaw/ctk/cybsensorc.h"
00031 #include "oaw/misc/kettec.h"
00032 #include "oaw/misc/timec.h"
00033 #include "oaw/ctk/cybwrlfields.h"
00034 #include "oaw/misc/eventpipec.h"
00035 #include "oaw/misc/matrixc.h"
00036 #include "../oawconfig.h"
00037
00038 OAW_BEGIN_NAMESPACE
00039
00040
00041
00042 class OAW_DLLMAPPING CybTouchSensorC : public CybSensorC
00043 {
00044 public:
00045 CybTouchSensorC(CybWorldC*);
00046 CybTouchSensorC(const CybTouchSensorC&);
00047 CybTouchSensorC& operator = (const CybTouchSensorC&);
00048
00049 virtual void ToSelChannelBegin(CybChannelC*){}
00050 virtual void ToSelChannelEnd(CybChannelC*){}
00051 virtual void LoadVRML(char*& iter, const char* iterEnd,long& znr);
00052
00053 virtual void Reset();
00054
00055 virtual int AddDes(EventDesI*,const StringC&,long);
00056 virtual int AddSrc(CybNodeC*,const StringC&, const StringC&);
00057 virtual void SetEvent(long,const void*, BaseI*);
00058 virtual long GetFieldEventID(const char*);
00059 virtual long GetFieldDataType(long);
00060 virtual void RouteData();
00061
00062
00063
00064
00065
00066 virtual void ToChannel(CybChannelC*,long flag);
00067 virtual void FinishInit();
00068
00069 virtual ArrayC<CybNodeC*> GetRouteList();
00070
00071 void SetIsOver(SFBool b);
00072 void SetIsActive(SFBool b);
00073 void SetHitPointInAbsCoord(SFVec3f b);
00074 void SetHitNormalInAbsCoord(SFVec3f b);
00075 void SetHitTexCoordInAbsCoord(SFVec2f b);
00076 void SetHitPointInRelCoord(SFVec3f b);
00077
00078 virtual short GetFieldData(long,void* data);
00079
00080 SFBool IsEnabled() const {return m_enabled;}
00081
00082 protected:
00083 void CallIsOver();
00084 void CallIsActive();
00085 void CallHitPoint();
00086 virtual void CreateNewCopy(CybNodeC*);
00087 protected:
00088 SFBool m_enabled;
00089
00090 SFBool m_isActive;
00091 SFBool m_isOver;
00092 SFTime m_touchTime;
00093
00094
00095 ArrayC<EventPipeC> m_ahnc;
00096 ArrayC<EventPipeC> m_ahpc;
00097 ArrayC<EventPipeC> m_ahtc;
00098 ArrayC<EventPipeC> m_aia;
00099 ArrayC<EventPipeC> m_aio;
00100 ArrayC<EventPipeC> m_att;
00101 ArrayC<EventPipeC> m_ae;
00102
00103 SFBool m_isOverOld;
00104 SFBool m_isActiveOld;
00105 SFVec3f m_hitPoint;
00106 SFVec3f m_hitNormal;
00107 SFVec2f m_hitTexCoord;
00108
00109 Matrix4C m_M;
00110
00111
00112 static char VRMLKeyStrList[][30];
00113 };
00114
00115 OAW_END_NAMESPACE
00116
00117
00118 #endif
00119
00120
00121
00122
00123