From d9ffd30445c995d81320ce4359db29f3538de951 Mon Sep 17 00:00:00 2001 From: sapier Date: Tue, 7 Feb 2012 17:01:04 +0100 Subject: [PATCH] added changes missing in last commit --- src/activeobject.h | 1 - src/collision.cpp | 18 ++++++++++++------ src/content_cao.cpp | 7 +++---- src/content_sao.h | 10 ++-------- src/serverremoteplayer.h | 4 ++-- 5 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/activeobject.h b/src/activeobject.h index 7a5952f18..c46ae61b2 100644 --- a/src/activeobject.h +++ b/src/activeobject.h @@ -62,7 +62,6 @@ public: virtual u8 getType() const = 0; - virtual aabb3f* getCollisionBox() = 0; protected: u16 m_id; // 0 is invalid, "no id" }; diff --git a/src/collision.cpp b/src/collision.cpp index 78597ac68..6ebe55593 100644 --- a/src/collision.cpp +++ b/src/collision.cpp @@ -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::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(*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 diff --git a/src/content_cao.cpp b/src/content_cao.cpp index b9afd8199..863c5e5f3 100644 --- a/src/content_cao.cpp +++ b/src/content_cao.cpp @@ -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 #include @@ -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 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 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): diff --git a/src/content_sao.h b/src/content_sao.h index 6ff2a04fe..6db320ab4 100644 --- a/src/content_sao.h +++ b/src/content_sao.h @@ -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 diff --git a/src/serverremoteplayer.h b/src/serverremoteplayer.h index 6de36eebc..b67ba9c7f 100644 --- a/src/serverremoteplayer.h +++ b/src/serverremoteplayer.h @@ -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 -- 2.25.1