Final commit of T fix
This commit is contained in:
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user