00001 #ifndef CYBISECTLEINCHANNELC_H 00002 #define CYBISECTLEINCHANNELC_H 00003 00004 #include "oaw/ctk/cybchannelc.h" 00005 #include "../oawconfig.h" 00006 00007 OAW_BEGIN_NAMESPACE 00008 00009 00010 class CybNodeC; 00011 class CybTouchSensorC; 00012 class CybDragSensorC; 00013 00014 class OAW_DLLMAPPING CybIsectLineChannelC:public CybChannelC 00015 { 00016 public: 00017 CybIsectLineChannelC(); 00018 struct IsectInfoS{ 00019 double m_zMin; 00020 CybNodeC* m_pN; 00021 CybTouchSensorC* m_pTS; 00022 ArrayC<CybDragSensorC*>* m_pDragSensors; 00023 Vector3C m_hitPoint; 00024 Vector3C m_hitNormal; 00025 Vector2C m_hitTexcoord; 00026 }; 00027 00028 ArrayC<IsectInfoS> GetIsects(){return m_isects;} 00029 void SetIsectLine(VectorC, VectorC); 00030 virtual Matrix4C PopTransformMatrix(); 00031 virtual void PushTransformMatrix(); 00032 virtual void MultTransformMatrix(const Matrix4C&); 00033 virtual short TestBInfo(const CybBInfoC&); 00034 virtual void Process(CybGroupC*,short flag); 00035 virtual void GetIsectLine(VectorC& startP, VectorC& endP); 00036 00037 void AddIsect(const IsectInfoS&); 00038 void PushTouchSensor(CybTouchSensorC* pTS){m_tsStack.push_back(pTS);} 00039 void PopTouchSensor(){CybTouchSensorC* pTS; m_tsStack.pop_back(pTS);} 00040 00041 void PushDragSensors(ArrayC<CybDragSensorC*>* pDragSensors) { m_tsDragSensorStack.push_back(pDragSensors); } 00042 void PopDragSensors() { ArrayC<CybDragSensorC*>* pDS; m_tsDragSensorStack.pop_back(pDS); } 00043 00044 //inline void SetButtonState(short state) { m_buttonState = state; } 00045 //inline short GetButtonState() { return m_buttonState; } 00046 00047 protected: 00048 VectorC m_startPoint; 00049 VectorC m_endPoint; 00050 VectorC m_startPointT; 00051 VectorC m_endPointT; 00052 ArrayC<IsectInfoS> m_isects; 00053 ArrayC<CybTouchSensorC*> m_tsStack; 00054 ArrayC<ArrayC<CybDragSensorC*>*> m_tsDragSensorStack; 00055 //short m_buttonState; 00056 }; 00057 00058 00059 OAW_END_NAMESPACE 00060 00061 00062 #endif 00063 00064 00065 00066 00067
1.3-rc2