Initial work for pre-caching resources in render system
This commit is contained in:
@@ -25,7 +25,7 @@ void Systems::RenderSystem::UpdateEntity(double dt, EntityID entity, EntityID pa
|
||||
m_CachedModels[modelComponent->ModelFile] = std::make_shared<Model>(OBJ(modelComponent->ModelFile));
|
||||
}
|
||||
|
||||
auto model = m_CachedModels[modelComponent->ModelFile];
|
||||
auto model = m_World->GetResourceManager()->Fetch<Model>(modelComponent->ModelFile);
|
||||
glm::vec3 position = m_TransformSystem->AbsolutePosition(entity);
|
||||
glm::quat orientation = m_TransformSystem->AbsoluteOrientation(entity);
|
||||
glm::vec3 scale = m_TransformSystem->AbsoluteScale(entity);
|
||||
@@ -63,6 +63,21 @@ void Systems::RenderSystem::Initialize()
|
||||
m_TransformSystem = m_World->GetSystem<Systems::TransformSystem>("TransformSystem");
|
||||
}
|
||||
|
||||
void Systems::RenderSystem::RegisterComponents(ComponentFactory* cf)
|
||||
{
|
||||
cf->Register("Camera", []() { return new Components::Camera(); });
|
||||
cf->Register("Model", []() { return new Components::Model(); });
|
||||
cf->Register("Sprite", []() { return new Components::Sprite(); });
|
||||
cf->Register("PointLight", []() { return new Components::PointLight(); });
|
||||
cf->Register("DirectionalLight", []() { return new Components::DirectionalLight(); });
|
||||
}
|
||||
|
||||
void Systems::RenderSystem::RegisterResourceTypes(ResourceManager* rm)
|
||||
{
|
||||
rm->RegisterType("Texture", [](std::string resourceName) { return new Texture(resourceName); });
|
||||
rm->RegisterType("Model", [](std::string resourceName) { return new Model(OBJ(resourceName)); });
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,9 +7,15 @@
|
||||
#include "Systems/TransformSystem.h"
|
||||
#include "Model.h"
|
||||
#include "Texture.h"
|
||||
#include "Components/Model.h"
|
||||
#include "Components/Transform.h"
|
||||
#include "Components/Camera.h"
|
||||
#include "Components/Model.h"
|
||||
#include "Components/Sprite.h"
|
||||
#include "Components/PointLight.h"
|
||||
#include "Components/DirectionalLight.h"
|
||||
|
||||
#include "Components/Template.h"
|
||||
#include "Components/Transform.h"
|
||||
#include "Renderer.h"
|
||||
|
||||
namespace Systems
|
||||
@@ -21,6 +27,8 @@ public:
|
||||
RenderSystem(World* world, std::shared_ptr<Renderer> renderer)
|
||||
: System(world), m_Renderer(renderer) { }
|
||||
|
||||
void RegisterComponents(ComponentFactory* cf) override;
|
||||
void RegisterResourceTypes(ResourceManager* rm) override;
|
||||
void Initialize() override;
|
||||
|
||||
std::unordered_map<std::string, std::shared_ptr<Model>> m_CachedModels;
|
||||
@@ -28,6 +36,9 @@ public:
|
||||
void OnComponentCreated(std::string type, std:: shared_ptr<Component> component) override;
|
||||
void UpdateEntity(double dt, EntityID entity, EntityID parent) override;
|
||||
|
||||
|
||||
|
||||
|
||||
private:
|
||||
std::shared_ptr<Renderer> m_Renderer;
|
||||
std::shared_ptr<Systems::TransformSystem> m_TransformSystem;
|
||||
|
||||
Reference in New Issue
Block a user