LightObject.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #ifndef _LIGHTOBJECT_H_
  2. #define _LIGHTOBJECT_H_
  3. #ifndef _SCENE_OBJECT_H_
  4. #include "2d/sceneobject/SceneObject.h"
  5. #endif
  6. class RayList
  7. {
  8. public:
  9. F32 x;
  10. F32 y;
  11. F32 l;
  12. F32 ang;
  13. bool operator == (const RayList& t) const { return ((mFabs(t.x - x) < 0.01) && (mFabs(t.y - y) < 0.01)); }
  14. };
  15. class RaysCastCallback : public b2RayCastCallback
  16. {
  17. public:
  18. RaysCastCallback() : m_fixture(NULL) {}
  19. float32 ReportFixture(b2Fixture* fixture, const b2Vec2& point, const b2Vec2& normal, float32 fraction) {
  20. m_fixture = fixture;
  21. m_point = point;
  22. m_normal = normal;
  23. m_fraction = fraction;
  24. return fraction;
  25. }
  26. b2Fixture* m_fixture;
  27. b2Vec2 m_point;
  28. b2Vec2 m_normal;
  29. float32 m_fraction;
  30. };
  31. class LightObject : public SceneObject
  32. {
  33. typedef SceneObject Parent;
  34. protected:
  35. F32 mLightRadius;
  36. U32 mLightSegments;
  37. public:
  38. LightObject();
  39. ~LightObject();
  40. static void initPersistFields();
  41. virtual bool onAdd();
  42. virtual void onRemove();
  43. virtual void safeDelete(void);
  44. virtual void sceneRender(const SceneRenderState* sceneRenderState, const SceneRenderRequest* sceneRenderRequest, BatchRender* batchRender);
  45. //virtual bool validRender(void) const {}
  46. virtual bool shouldRender(void) const { return true; }
  47. /// Light segments.
  48. inline void setLightSegments(const U32 lightSegments) { mLightSegments = lightSegments; };
  49. inline U32 getLightSegments(void) const { return mLightSegments; }
  50. /// Light Radius.
  51. inline void setLightRadius(const F32 lightRadius) { mLightRadius = lightRadius; }
  52. inline F32 getLightRadius(void) const { return mLightRadius; }
  53. DECLARE_CONOBJECT(LightObject);
  54. protected:
  55. virtual void OnRegisterScene(Scene* mScene);
  56. virtual void OnUnregisterScene(Scene* mScene);
  57. protected:
  58. static bool setLightRadius(void* obj, const char* data) { static_cast<LightObject*>(obj)->setLightRadius(dAtof(data)); return false; }
  59. static bool writeLightRadius(void* obj, StringTableEntry pFieldName) { return static_cast<LightObject*>(obj)->getLightRadius() > 0.0f; }
  60. static bool setLightSegments(void* obj, const char* data) { static_cast<LightObject*>(obj)->setLightSegments(dAtoi(data)); return false; }
  61. static bool writeLightSegments(void* obj, StringTableEntry pFieldName) { return static_cast<LightObject*>(obj)->getLightSegments() > 0; }
  62. };
  63. #endif //_LIGHTOBJECT_H_
  64. S32 QSORT_CALLBACK sortRays(const void * a, const void * b);