7 ModelComponent::ModelComponent(eastl::shared_ptr<Model> newModel) noexcept : Component()
13 ModelComponent::ModelComponent(eastl::string path) noexcept : Component()
19 void ModelComponent::InitializeComponent()
39 eastl::weak_ptr<ResourceManager> resourceManager =
Engine::GetEngine().lock()->GetResourceManager();
42 eastl::weak_ptr<Model> model = resourceManager.lock()->CreateModel(path, path);
44 if (model.expired() ==
false && model.lock().get() !=
nullptr)
56 void ModelComponent::Update()
58 if (model.expired() ||
isEnabled ==
false ||
GetOwner().lock()->GetIsActive() ==
false)
61 if (transformComponent.expired())
67 void ModelComponent::Render()
69 if (model.expired() ||
isEnabled ==
false ||
GetOwner().lock()->GetIsActive() ==
false)
72 if (transformComponent.expired())
75 Engine::GetEngine().lock()->GetRenderer().lock()->Render(transformComponent.lock()->GetModelMatrix(),
Engine::GetEngine().lock()->GetResourceManager().lock()->GetModel(model.lock()->GetName()).lock());
78 void ModelComponent::OnComponentAdded(eastl::weak_ptr<Component> addedComponent)
80 if (eastl::dynamic_pointer_cast<TransformComponent>(addedComponent.lock()) && transformComponent.expired())
82 transformComponent = eastl::static_pointer_cast<
TransformComponent>(addedComponent.lock());
86 void ModelComponent::OnComponentRemoved(eastl::weak_ptr<Component> removedComponent)
88 if (transformComponent.lock().get() == removedComponent.lock().get())
89 transformComponent.reset();
92 transformComponent = GetComponent<TransformComponent>();
95 template <
typename archive>
98 ar(CEREAL_NVP(model), CEREAL_NVP(transformComponent), CEREAL_NVP(
isEnabled));
101 template <
typename archive>
104 ar(model, transformComponent,
isEnabled);
static EventHandlerImpl< T > * Bind(void(*nonMemberFunctionToCall)(T &))
eastl::weak_ptr< Model > GetModel() const
This method will return the current model of this model component.
void SetModel(eastl::shared_ptr< Model > newModel)
This method allows you to change the model to render of this model component.
IMGUI_API float GetTime()
void LoadComponent(archive ar)
loads the data from the archive to this component
eastl::weak_ptr< Entity > GetOwner() const
This method allows you to get the entity holding this component.
void SaveComponent(archive ar)
Saves the data of this component to a archive
virtual ~ModelComponent()
static eastl::weak_ptr< Engine > GetEngine() noexcept
This method allows you to get the instance of the Engine. This method will automatically initialize t...