00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #if !defined(_XRB_ENGINE2_PHYSICSHANDLER_HPP_)
00012 #define _XRB_ENGINE2_PHYSICSHANDLER_HPP_
00013
00014 #include "xrb.hpp"
00015
00016 #include "xrb_engine2_enums.hpp"
00017 #include "xrb_framehandler.hpp"
00018 #include "xrb_vector.hpp"
00019
00020 namespace Xrb
00021 {
00022
00023 namespace Engine2
00024 {
00025
00026 class Entity;
00027 class ObjectLayer;
00028 class World;
00029
00030
00031 class PhysicsHandler : public FrameHandler
00032 {
00033 public:
00034
00035 PhysicsHandler ()
00036 {
00037 m_owner_world = NULL;
00038 }
00039 virtual ~PhysicsHandler ()
00040 {
00041 m_owner_world = NULL;
00042 }
00043
00044 inline World *OwnerWorld () const
00045 {
00046 return m_owner_world;
00047 }
00048
00049 virtual void AddObjectLayer (ObjectLayer *object_layer) = 0;
00050 virtual void SetMainObjectLayer (ObjectLayer *object_layer) = 0;
00051
00052 virtual void AddEntity (Entity *entity) = 0;
00053 virtual void RemoveEntity (Entity *entity) = 0;
00054
00055 protected:
00056
00057 virtual void HandleFrame () = 0;
00058
00059 inline void SetOwnerWorld (World *const owner_world)
00060 {
00061 ASSERT1(owner_world != NULL);
00062 m_owner_world = owner_world;
00063 }
00064
00065 private:
00066
00067 World *m_owner_world;
00068
00069
00070
00071 friend class World;
00072 };
00073
00074 }
00075
00076 }
00077
00078 #endif // !defined(_XRB_ENGINE2_PHYSICSHANDLER_HPP_)