Program Listing for File model_component.h¶
↰ Return to documentation for file (rootex/framework/components/visual/model/model_component.h
)
#pragma once
#include "component.h"
#include "renderable_component.h"
#include "components/space/transform_component.h"
#include "core/resource_files/model_resource_file.h"
#include "core/resource_files/basic_material_resource_file.h"
#include "core/renderer/mesh.h"
bool CompareMaterials(const Pair<Ref<MaterialResourceFile>, Vector<Mesh>>& a, const Pair<Ref<MaterialResourceFile>, Vector<Mesh>>& b);
class ModelComponent : public RenderableComponent
{
COMPONENT(ModelComponent, Category::Model);
protected:
Ref<ModelResourceFile> m_ModelResourceFile;
void assignBoundingBox();
void assignOverrides(Ref<ModelResourceFile> newModel, const HashMap<String, String>& materialOverrides);
public:
ModelComponent(Entity& owner, const JSON::json& data);
virtual ~ModelComponent() = default;
bool preRender(float deltaMilliseconds) override;
void render(float viewDistance) override;
void setModelResourceFile(Ref<ModelResourceFile> newModel, const HashMap<String, String>& materialOverrides);
ModelResourceFile* getModelResourceFile() const { return m_ModelResourceFile.get(); }
const Vector<Pair<Ref<BasicMaterialResourceFile>, Vector<Mesh>>>& getMeshes() const { return m_ModelResourceFile->getMeshes(); }
bool setupData() override;
JSON::json getJSON() const override;
void draw() override;
};
DECLARE_COMPONENT(ModelComponent);