diff options
author | Stijn Buys <ingar@osirion.org> | 2010-11-17 23:37:52 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2010-11-17 23:37:52 +0000 |
commit | 9f1c9694199969e1cd1fb9bf731d0e8ef2d8c184 (patch) | |
tree | 8d8b603680db00b628e7d8b916b4a1e4d3c03e90 /src | |
parent | ee017172af06f4b247038510e5ef7f8ac3596f66 (diff) |
Removed core::Info.model(), info record models must be referenced through Info::modelname().
Prevent the loading of all info record models in render::load().
Added r_loadmodels engine function, which can be used to load all referenced models at once.
Diffstat (limited to 'src')
-rw-r--r-- | src/core/info.cc | 8 | ||||
-rw-r--r-- | src/core/info.h | 8 | ||||
-rw-r--r-- | src/render/render.cc | 24 | ||||
-rw-r--r-- | src/render/render.h | 5 |
4 files changed, 19 insertions, 26 deletions
diff --git a/src/core/info.cc b/src/core/info.cc index 2ff6669..60a88f9 100644 --- a/src/core/info.cc +++ b/src/core/info.cc @@ -81,7 +81,6 @@ Info::Info(const InfoType *type, const char *label) : Label(label) info_type = type; info_registry.push_back(this); - info_model = 0; info_timestamp = 0; info_price = 0; info_volume = 0; @@ -94,7 +93,6 @@ Info::Info(const unsigned int id) info_type = 0; info_registry.push_back(this); - info_model = 0; info_price = 0; info_timestamp = 1; @@ -108,7 +106,6 @@ Info::~Info() info_modelname.clear(); info_text.clear(); info_timestamp = 0; - info_model = 0; info_type = 0; } @@ -132,11 +129,6 @@ void Info::set_modelname(const char *modelname) info_modelname.assign(modelname); } -void Info::set_model(const model::Model *model) -{ - info_model = model; -} - void Info::set_price(const long price) { info_price = price; diff --git a/src/core/info.h b/src/core/info.h index d32ccab..dfec17c 100644 --- a/src/core/info.h +++ b/src/core/info.h @@ -94,10 +94,6 @@ public: inline const std::string & modelname() const { return info_modelname; } - - inline const model::Model *model() const { - return info_model; - } inline const long price() const { return info_price; @@ -133,8 +129,6 @@ public: void set_modelname(const char *modelname); - void set_model(const model::Model *model); - /** * @brief associated price, in credits */ @@ -184,8 +178,6 @@ private: unsigned long info_timestamp; std::string info_modelname; - const model::Model* info_model; - Text info_text; /* ---- static info registry --------------------------------------- */ diff --git a/src/render/render.cc b/src/render/render.cc index 1b0d90e..2a325e9 100644 --- a/src/render/render.cc +++ b/src/render/render.cc @@ -60,6 +60,11 @@ void func_list_particles(std::string const &args) ParticleScript::list(); } +void func_load_info_models(std::string const &args) +{ + load_info_models(); +} + void init(int width, int height) { con_print << "^BInitializing renderer..." << std::endl; @@ -148,6 +153,9 @@ void init(int width, int height) func = core::Func::add("list_particles", func_list_particles); func->set_info("list registered particle scripts"); + + func = core::Func::add("r_loadmodels", func_load_info_models); + func->set_info("load all models referenced by info record"); load(); } @@ -198,12 +206,6 @@ void clear() } } - // clear info models - for (core::Info::Registry::iterator it = core::Info::registry().begin(); it != core::Info::registry().end(); it++) { - core::Info *info = (*it); - info->set_model(0); - } - // clear model registry model::Model::clear(); @@ -225,16 +227,19 @@ void load() entity->set_model(model::Model::load(entity->modelname())); } } +} +// load all models referenced by info records +void load_info_models() +{ // load info models for (core::Info::Registry::iterator it = core::Info::registry().begin(); it != core::Info::registry().end(); it++) { core::Info *info = (*it); if (info->modelname().size()) { - info->set_model(model::Model::load(info->modelname())); - } else { - info->set_model(0); + model::Model::load(info->modelname()); } } + } // reset render subsystem (module disconnect) @@ -265,6 +270,7 @@ void shutdown() core::Func::remove("list_materials"); core::Func::remove("list_particles"); core::Func::remove("list_textures"); + core::Func::remove("r_loadmodels"); clear(); diff --git a/src/render/render.h b/src/render/render.h index 97880cc..53a40dc 100644 --- a/src/render/render.h +++ b/src/render/render.h @@ -34,6 +34,9 @@ void reset(); /// load game render data void load(); +/// load all models referenced by info records +void load_info_models(); + /// unload game render data void unload(); @@ -75,7 +78,7 @@ inline RenderExt *ext_render(const core::Entity *entity) { return static_cast<RenderExt *>(entity->extension((size_t)core::Extension::Render)); } -} +} // namespace render #endif // __INCLUDED_RENDER_H__ |