Final commit of T fix

This commit is contained in:
2023-02-03 06:59:49 -08:00
parent 19b2434348
commit 45cad7e9c7
4 changed files with 22 additions and 22 deletions

View File

@ -9,7 +9,7 @@
#include "util/array.hpp" #include "util/array.hpp"
namespace Dawn { namespace Dawn {
template<class T, typename J, class P = T> template<class O, typename J, class P = O>
class Prefab { class Prefab {
public: public:
/** /**
@ -28,7 +28,7 @@ namespace Dawn {
* @param context Custom context that this prefab needs to initialize. * @param context Custom context that this prefab needs to initialize.
* @return The instance of the created prefab. * @return The instance of the created prefab.
*/ */
static T * create(J *context) { static O * create(J *context) {
assertNotNull(context); assertNotNull(context);
return P::prefabCreate(context); return P::prefabCreate(context);
} }

View File

@ -9,10 +9,10 @@
#include "game/DawnGame.hpp" #include "game/DawnGame.hpp"
namespace Dawn { namespace Dawn {
template<class T> template<class O>
class SceneItemPrefab : class SceneItemPrefab :
public SceneItem, public SceneItem,
public Prefab<T, Scene, T> public Prefab<O, Scene, O>
{ {
public: public:
/** /**
@ -21,8 +21,8 @@ namespace Dawn {
* @param scene Scene that this prefab is going to be added to. * @param scene Scene that this prefab is going to be added to.
* @return The created prefab instance. * @return The created prefab instance.
*/ */
static T * prefabCreate(Scene *scene) { static O * prefabCreate(Scene *scene) {
T *item = scene->createSceneItemOfType<T>(); O *item = scene->createSceneItemOfType<O>();
item->prefabInit(&scene->game->assetManager); item->prefabInit(&scene->game->assetManager);
return item; return item;
} }

View File

@ -26,7 +26,7 @@ void SimpleVNScene::stage() {
// Camera // Camera
this->camera = Camera::create(this); this->camera = Camera::create(this);
this->camera->transform->lookAt( this->camera->transform->lookAt(
glm::vec3(0, 0, 3), glm::vec3(0, 0, 2),
glm::vec3(0, 0, 0) glm::vec3(0, 0, 0)
); );

View File

@ -14,8 +14,8 @@
#include "visualnovel/components/VisualNovelCharacter.hpp" #include "visualnovel/components/VisualNovelCharacter.hpp"
namespace Dawn { namespace Dawn {
template<class T> template<class O>
class CharacterPrefab : public SceneItemPrefab<T> { class CharacterPrefab : public SceneItemPrefab<O> {
protected: protected:
/** /**
* Character Prefab will request you to initialize your characters' * Character Prefab will request you to initialize your characters'
@ -31,8 +31,8 @@ namespace Dawn {
public: public:
static std::vector<Asset*> prefabAssets(AssetManager *assMan) { static std::vector<Asset*> prefabAssets(AssetManager *assMan) {
return std::vector<Asset*>{ return std::vector<Asset*>{
assMan->get<TextureAsset>(T::getCharacterTexture()), assMan->get<TextureAsset>(O::getCharacterTexture()),
assMan->get<TilesetAsset>(T::getCharacterTileset()) assMan->get<TilesetAsset>(O::getCharacterTileset())
}; };
} }
@ -47,34 +47,34 @@ namespace Dawn {
TiledSprite *tiledSprite; TiledSprite *tiledSprite;
AudioSource *audioSource; AudioSource *audioSource;
CharacterPrefab(Scene *s, sceneitemid_t i) : SceneItemPrefab<T>(s, i) {} CharacterPrefab(Scene *s, sceneitemid_t i) : SceneItemPrefab<O>(s, i) {}
void prefabInit(AssetManager *man) override { void prefabInit(AssetManager *man) override {
characterTexture = man->get<TextureAsset>(T::getCharacterTexture()); characterTexture = man->get<TextureAsset>(O::getCharacterTexture());
characterTileset = man->get<TilesetAsset>(T::getCharacterTileset()); characterTileset = man->get<TilesetAsset>(O::getCharacterTileset());
// Emotions // Emotions
auto emotion = this->defineAndGetInitialEmotion(man); auto emotion = this->defineAndGetInitialEmotion(man);
// Components // Components
meshRenderer = SceneItem::addComponent<MeshRenderer>(); meshRenderer = this->template addComponent<MeshRenderer>();
meshHost = SceneItem::addComponent<MeshHost>(); meshHost = this->template addComponent<MeshHost>();
material = SceneItem::addComponent<SimpleTexturedMaterial>(); material = this->template addComponent<SimpleTexturedMaterial>();
material->texture = &characterTexture->texture; material->texture = &characterTexture->texture;
vnCharacter = SceneItem::addComponent<VisualNovelCharacter>(); vnCharacter = this->template addComponent<VisualNovelCharacter>();
vnCharacter->nameKey = T::getLanguagePrefix() + ".name"; vnCharacter->nameKey = O::getLanguagePrefix() + ".name";
animation = SceneItem::addComponent<AnimationController>(); animation = this->template addComponent<AnimationController>();
tiledSprite = SceneItem::addComponent<TiledSprite>(); tiledSprite = this->template addComponent<TiledSprite>();
tiledSprite->setTileset(&characterTileset->tileset); tiledSprite->setTileset(&characterTileset->tileset);
float_t ratio = characterTileset->tileset.getTileWidth() / characterTileset->tileset.getTileHeight(); float_t ratio = characterTileset->tileset.getTileWidth() / characterTileset->tileset.getTileHeight();
tiledSprite->setSize(glm::vec2(ratio, 1.0f)); tiledSprite->setSize(glm::vec2(ratio, 1.0f));
tiledSprite->setTile(emotion.tile); tiledSprite->setTile(emotion.tile);
audioSource = SceneItem::addComponent<AudioSource>(); audioSource = this->template addComponent<AudioSource>();
this->transform.setLocalPosition(glm::vec3(0, 0, 0)); this->transform.setLocalPosition(glm::vec3(0, 0, 0));
} }