Prefab Progress

This commit is contained in:
2023-01-05 17:19:32 -08:00
parent 659ab3d760
commit d13984dddc
4 changed files with 46 additions and 8 deletions

View File

@ -11,14 +11,23 @@ namespace Dawn {
template<class T> template<class T>
class Prefab { class Prefab {
public: public:
/**
* Returns the list of assets required for this prefab.
*
* @return List of required assets this prefab.
*/
static std::vector<Asset*> getRequiredAssets() { static std::vector<Asset*> getRequiredAssets() {
return T::prefabAssets(); return T::prefabAssets();
} }
static T * create(Scene *scene) { /**
T *item = scene->createSceneItemOfType<T>(); * Creates a new instance of this asset.
item->prefabInit(); *
return item; * @param scene Scene this item belongs to.
* @return The instance of the created prefab.
*/
static T * create(Scene *scene, UICanvas *canvas) {
return T::prefabCreate(scene, canvas);
} }
}; };
} }

View File

@ -16,12 +16,22 @@ namespace Dawn {
protected: protected:
public: public:
static T * prefabCreate(Scene *scene, UICanvas *canvas) {
T *item = scene->createSceneItemOfType<T>();
item->prefabInit();
return item;
}
SceneItemPrefab(Scene *scene, sceneitemid_t id) : SceneItemPrefab(Scene *scene, sceneitemid_t id) :
SceneItem(scene, id) SceneItem(scene, id)
{ {
} }
/**
* Virtual method called by the subclass for initialization after the
* prefab has been created.
*/
virtual void prefabInit() = 0; virtual void prefabInit() = 0;
}; };
} }

View File

@ -0,0 +1,23 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "Prefab.hpp"
namespace Dawn {
template<class T>
class UIPrefab :
public Prefab<T>
{
public:
static T * prefabCreate(Scene *scene) {
}
static void apply(T *item) {
}
};
}

View File

@ -33,10 +33,6 @@ namespace Dawn {
this->host->mesh.createBuffers(CUBE_VERTICE_COUNT, CUBE_INDICE_COUNT); this->host->mesh.createBuffers(CUBE_VERTICE_COUNT, CUBE_INDICE_COUNT);
CubeMesh::buffer(&this->host->mesh, glm::vec3(-0.5f, -0.5f, -0.5f), glm::vec3(1, 1, 1), 0, 0); CubeMesh::buffer(&this->host->mesh, glm::vec3(-0.5f, -0.5f, -0.5f), glm::vec3(1, 1, 1), 0, 0);
// auto param = material->getShader()->getParameterByName("u_Text");
// this->material->textureValues[param] = nullptr;
this->material->colorValues[material->getShader()->getParameterByName("u_Color")] = COLOR_RED;
std::cout << "Preab Init" << std::endl; std::cout << "Preab Init" << std::endl;
} }
}; };