added changes missing in last commit
authorsapier <sapier at gmx dot net>
Tue, 7 Feb 2012 16:01:04 +0000 (17:01 +0100)
committersapier <sapier at gmx dot net>
Tue, 7 Feb 2012 16:01:04 +0000 (17:01 +0100)
src/activeobject.h
src/collision.cpp
src/content_cao.cpp
src/content_sao.h
src/serverremoteplayer.h

index 7a5952f18ad425073b23ca29fbf86ca776ae5cd2..c46ae61b2a980987a258e45895713f928e2a2bb2 100644 (file)
@@ -62,7 +62,6 @@ public:
 
        virtual u8 getType() const = 0;
 
-       virtual aabb3f* getCollisionBox() = 0;
 protected:
        u16 m_id; // 0 is invalid, "no id"
 };
index 78597ac68a63dc43b91a14773f2072dcd5abf954..6ebe555939d370b997b8c40ec751d78108af42ad 100644 (file)
@@ -18,6 +18,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 */
 
 #include "collision.h"
+#include "collidableobject.h"
 #include "mapblock.h"
 #include "map.h"
 #include "nodedef.h"
@@ -266,13 +267,18 @@ collisionMoveResult collisionMoveSimple(Environment* env,
                for (core::list<ActiveObject*>::Iterator iter = objects.begin();
                                iter != objects.end(); iter++)
                {
-                       aabb3f* object_collisionbox = (*iter)->getCollisionBox();
-                       //TODO do we need to check if it's really near enough?
-                       if (object_collisionbox != NULL)
+                       CollidableObject* object = dynamic_cast<CollidableObject*>(*iter);
+
+                       if (object != NULL)
                        {
-                               cboxes.push_back(*object_collisionbox);
-                               is_unloaded.push_back(false);
-                               is_step_up.push_back(false);
+                               aabb3f* object_collisionbox = object->getCollisionBox();
+                               //TODO do we need to check if it's really near enough?
+                               if (object_collisionbox != NULL)
+                               {
+                                       cboxes.push_back(*object_collisionbox);
+                                       is_unloaded.push_back(false);
+                                       is_step_up.push_back(false);
+                               }
                        }
                }
        } //tt3
index b9afd8199972760fb59e409791b9bda399a58110..863c5e5f3e092eeaf8f8f584a5d3b11a18f6d54c 100644 (file)
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "tile.h"
 #include "environment.h"
 #include "collision.h"
+#include "collidableobject.h"
 #include "settings.h"
 #include <ICameraSceneNode.h>
 #include <ITextSceneNode.h>
@@ -1681,7 +1682,7 @@ void MobV2CAO::setLooks(const std::string &looks)
 
 #include "luaentity_common.h"
 
-class LuaEntityCAO : public ClientActiveObject
+class LuaEntityCAO : public ClientActiveObject , public CollidableObject
 {
 private:
        core::aabbox3d<f32> m_selection_box;
@@ -1701,7 +1702,6 @@ private:
        int m_anim_num_frames;
        float m_anim_framelength;
        float m_anim_timer;
-       aabb3f m_collisionbox;
 
 public:
        LuaEntityCAO(IGameDef *gamedef, ClientEnvironment *env):
@@ -2071,7 +2071,7 @@ LuaEntityCAO proto_LuaEntityCAO(NULL, NULL);
        PlayerCAO
 */
 
-class PlayerCAO : public ClientActiveObject
+class PlayerCAO : public ClientActiveObject, public CollidableObject
 {
 private:
        core::aabbox3d<f32> m_selection_box;
@@ -2085,7 +2085,6 @@ private:
        LocalPlayer *m_local_player;
        float m_damage_visual_timer;
        bool m_dead;
-       aabb3f m_collisionbox;
 
 public:
        PlayerCAO(IGameDef *gamedef, ClientEnvironment *env):
index 6ff2a04fe5a12807dc7a9843fcaaed95d10ca057..6db320ab44425d011b4019d98dddef5a4748f614 100644 (file)
@@ -22,6 +22,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "serverobject.h"
 #include "content_object.h"
+#include "collidableobject.h"
 
 class TestSAO : public ServerActiveObject
 {
@@ -32,7 +33,6 @@ public:
        static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
                        const std::string &data);
        void step(float dtime, bool send_recommended);
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        float m_timer1;
        float m_age;
@@ -52,7 +52,6 @@ public:
        ItemStack createItemStack();
        void punch(ServerActiveObject *puncher, float time_from_last_punch);
        float getMinimumSavedMovement(){ return 0.1*BS; }
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        std::string m_itemstring;
        bool m_itemstring_changed;
@@ -73,7 +72,6 @@ public:
        std::string getClientInitializationData();
        std::string getStaticData();
        void punch(ServerActiveObject *puncher, float time_from_last_punch);
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        bool m_is_active;
        IntervalLimiter m_inactive_interval;
@@ -100,7 +98,6 @@ public:
        std::string getStaticData();
        void punch(ServerActiveObject *puncher, float time_from_last_punch);
        bool isPeaceful(){return false;}
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        void doDamage(u16 d);
 
@@ -129,7 +126,6 @@ public:
        void step(float dtime, bool send_recommended);
        std::string getClientInitializationData();
        std::string getStaticData();
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        bool m_is_active;
        IntervalLimiter m_inactive_interval;
@@ -160,7 +156,6 @@ public:
        void step(float dtime, bool send_recommended);
        void punch(ServerActiveObject *puncher, float time_from_last_punch);
        bool isPeaceful();
-       inline aabb3f* getCollisionBox() { return NULL; }
 private:
        void sendPosition();
        void setPropertyDefaults();
@@ -198,7 +193,7 @@ private:
 
 struct LuaEntityProperties;
 
-class LuaEntitySAO : public ServerActiveObject
+class LuaEntitySAO : public ServerActiveObject, public CollidableObject
 {
 public:
        LuaEntitySAO(ServerEnvironment *env, v3f pos,
@@ -245,7 +240,6 @@ private:
        v3f m_last_sent_velocity;
        float m_last_sent_position_timer;
        float m_last_sent_move_precision;
-       aabb3f m_collisionbox;
 };
 
 #endif
index 6de36eebc8a613c0f0bd20be547481d2dab933c4..b67ba9c7fabff1c2c9a3b9421b70f9127ca74000 100644 (file)
@@ -22,13 +22,14 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 #include "player.h"
 #include "serverobject.h"
+#include "collidableobject.h"
 #include "content_object.h" // Object type IDs
 
 /*
        Player on the server
 */
 
-class ServerRemotePlayer : public Player, public ServerActiveObject
+class ServerRemotePlayer : public Player, public ServerActiveObject , public CollidableObject
 {
 public:
        ServerRemotePlayer(ServerEnvironment *env);
@@ -96,7 +97,6 @@ public:
        aabb3f* getCollisionBox();
 private:
        bool m_position_not_sent;
-       aabb3f m_collisionbox;
 };
 
 #endif