diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/entity.cc | 12 | ||||
-rw-r--r-- | src/core/entity.h | 13 | ||||
-rw-r--r-- | src/core/gameserver.cc | 5 | ||||
-rw-r--r-- | src/core/parser.cc | 14 | ||||
-rw-r--r-- | src/core/parser.h | 11 |
5 files changed, 27 insertions, 28 deletions
diff --git a/src/core/entity.cc b/src/core/entity.cc index 7f48c08..9e467fe 100644 --- a/src/core/entity.cc +++ b/src/core/entity.cc @@ -29,6 +29,8 @@ using math::Vector3f; /* ---- Static functions for the Entity registry ------------------- */ +const InfoType *Entity::entity_infotype = 0; + Entity::Registry Entity::entity_registry; size_t Entity::entity_nextid = 0; @@ -314,7 +316,9 @@ void Entity::set_model(model::Model *model) // server-side property should not clear modelname entity_model = model; if (entity_model) { - entity_radius = entity_model->radius(); + + //entity_radius = entity_model->radius(); + entity_modelname.assign(entity_model->name()); } @@ -502,6 +506,10 @@ void Entity::remove_menu(std::string const &label) void Entity::reset() { + if (!radius()) { + return; + } + // location and orientation btTransform t; t.setIdentity(); @@ -918,7 +926,7 @@ void EntityControlable::set_zone(Zone *zone) if (entity_zone) { entity_zone->add(this); - if (body() && entity_zone->physics()) { + if (body() && entity_zone->physics()) { entity_zone->physics()->addRigidBody(body()); entity_zone->physics()->addAction(entity_actioninterface); reset(); diff --git a/src/core/entity.h b/src/core/entity.h index 48dd949..1996e10 100644 --- a/src/core/entity.h +++ b/src/core/entity.h @@ -402,6 +402,16 @@ public: virtual void serialize_server_update(std::ostream & os) const; /* ---- static --------------------------------------------- */ + + /// default infotype for entities + static inline const InfoType *infotype() { + return entity_infotype; + } + + /// set the default infotype for entities + static inline void set_infotype(const InfoType *infotype) { + entity_infotype = infotype; + } /// type definition for the entity registry typedef std::map<unsigned int, Entity*> Registry; @@ -492,6 +502,9 @@ private: static size_t entity_nextid; static void add(Entity *ent); + + static const InfoType *entity_infotype; + }; diff --git a/src/core/gameserver.cc b/src/core/gameserver.cc index 5ea6206..7d6fc96 100644 --- a/src/core/gameserver.cc +++ b/src/core/gameserver.cc @@ -130,7 +130,8 @@ GameServer::GameServer() : GameInterface() server_maxplayerid = 1; server_startup = application()->timestamp(); - Parser::init(); + // create the default infotype for entities + Entity::set_infotype(new InfoType("entity")); Physics::init(); @@ -237,7 +238,7 @@ GameServer::~GameServer() Physics::done(); - Parser::done(); + Entity::set_infotype(0); server_instance = 0; } diff --git a/src/core/parser.cc b/src/core/parser.cc index 3806b99..953cd50 100644 --- a/src/core/parser.cc +++ b/src/core/parser.cc @@ -11,18 +11,6 @@ namespace core { -InfoType *Parser::entity_infotype = 0; - -void Parser::init() -{ - entity_infotype = new InfoType("entity"); -} - -void Parser::done() -{ - entity_infotype = 0; -} - bool Parser::got_entity_key(filesystem::IniFile &inifile, core::Entity *entity) { math::Vector3f v; @@ -60,7 +48,7 @@ bool Parser::got_entity_key(filesystem::IniFile &inifile, core::Entity *entity) } else if (inifile.got_key_string("info", strval)) { if (!entity->info()) { - entity->set_info(new Info(entity_infotype, entity->label().c_str())); + entity->set_info(new Info(Entity::infotype(), entity->label().c_str())); } entity->info()->add_text(strval); return true; diff --git a/src/core/parser.h b/src/core/parser.h index 993c307..06ddc27 100644 --- a/src/core/parser.h +++ b/src/core/parser.h @@ -18,19 +18,8 @@ namespace core class Parser { public: - /// initialize parser infotypes - static void init(); - - /// clean up parser internals - static void done(); - /// read default entity keys from an ini file static bool got_entity_key(filesystem::IniFile &inifile, core::Entity *entity); - -private: - /// default infotype for entities - static InfoType *entity_infotype; - }; } |