world resolve function

This commit is contained in:
2019-05-24 02:45:52 +07:00
parent 27a92fc3ad
commit cc739d6bd2
5 changed files with 22 additions and 3 deletions

View File

@@ -38,6 +38,9 @@ namespace e2d
gobject_iptr instantiate(); gobject_iptr instantiate();
gobject_iptr instantiate(const prefab& prefab); gobject_iptr instantiate(const prefab& prefab);
void destroy_instance(const gobject_iptr& inst) noexcept; void destroy_instance(const gobject_iptr& inst) noexcept;
gobject_iptr resolve(ecs::entity_id ent) const noexcept;
gobject_iptr resolve(const ecs::const_entity& ent) const noexcept;
private: private:
ecs::registry registry_; ecs::registry registry_;
hash_map<ecs::entity_id, gobject_iptr> gobjects_; hash_map<ecs::entity_id, gobject_iptr> gobjects_;

View File

@@ -199,7 +199,7 @@ namespace
shader_ptr shader_; shader_ptr shader_;
texture_ptr texture1_; texture_ptr texture1_;
texture_ptr texture2_; texture_ptr texture2_;
index_buffer_ptr index_buffer_; index_buffer_ptr index_buffer_;
vertex_buffer_ptr vertex_buffer1_; vertex_buffer_ptr vertex_buffer1_;
vertex_buffer_ptr vertex_buffer2_; vertex_buffer_ptr vertex_buffer2_;
render::material material_; render::material material_;

View File

@@ -264,7 +264,7 @@ namespace
private: private:
shader_ptr shader_; shader_ptr shader_;
texture_ptr texture_; texture_ptr texture_;
index_buffer_ptr index_buffer_; index_buffer_ptr index_buffer_;
vertex_buffer_ptr vertex_buffer1_; vertex_buffer_ptr vertex_buffer1_;
vertex_buffer_ptr vertex_buffer2_; vertex_buffer_ptr vertex_buffer2_;
render::material material_; render::material material_;

View File

@@ -244,7 +244,7 @@ namespace
private: private:
shader_ptr shader_; shader_ptr shader_;
texture_ptr texture_; texture_ptr texture_;
index_buffer_ptr index_buffer_; index_buffer_ptr index_buffer_;
vertex_buffer_ptr vertex_buffer_; vertex_buffer_ptr vertex_buffer_;
render_target_ptr render_target_; render_target_ptr render_target_;
render::property_block rt_props_; render::property_block rt_props_;

View File

@@ -94,4 +94,20 @@ namespace e2d
gobjects_.erase(inst->entity().id()); gobjects_.erase(inst->entity().id());
} }
} }
gobject_iptr world::resolve(ecs::entity_id ent) const noexcept {
E2D_ASSERT(registry_.valid_entity(ent));
const auto iter = gobjects_.find(ent);
return iter != gobjects_.end()
? iter->second
: nullptr;
}
gobject_iptr world::resolve(const ecs::const_entity& ent) const noexcept {
E2D_ASSERT(registry_.valid_entity(ent));
const auto iter = gobjects_.find(ent.id());
return iter != gobjects_.end()
? iter->second
: nullptr;
}
} }