Final commit of T fix
This commit is contained in:
@ -9,7 +9,7 @@
|
||||
#include "util/array.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
template<class T, typename J, class P = T>
|
||||
template<class O, typename J, class P = O>
|
||||
class Prefab {
|
||||
public:
|
||||
/**
|
||||
@ -28,7 +28,7 @@ namespace Dawn {
|
||||
* @param context Custom context that this prefab needs to initialize.
|
||||
* @return The instance of the created prefab.
|
||||
*/
|
||||
static T * create(J *context) {
|
||||
static O * create(J *context) {
|
||||
assertNotNull(context);
|
||||
return P::prefabCreate(context);
|
||||
}
|
||||
|
@ -9,10 +9,10 @@
|
||||
#include "game/DawnGame.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
template<class T>
|
||||
template<class O>
|
||||
class SceneItemPrefab :
|
||||
public SceneItem,
|
||||
public Prefab<T, Scene, T>
|
||||
public Prefab<O, Scene, O>
|
||||
{
|
||||
public:
|
||||
/**
|
||||
@ -21,8 +21,8 @@ namespace Dawn {
|
||||
* @param scene Scene that this prefab is going to be added to.
|
||||
* @return The created prefab instance.
|
||||
*/
|
||||
static T * prefabCreate(Scene *scene) {
|
||||
T *item = scene->createSceneItemOfType<T>();
|
||||
static O * prefabCreate(Scene *scene) {
|
||||
O *item = scene->createSceneItemOfType<O>();
|
||||
item->prefabInit(&scene->game->assetManager);
|
||||
return item;
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ void SimpleVNScene::stage() {
|
||||
// Camera
|
||||
this->camera = Camera::create(this);
|
||||
this->camera->transform->lookAt(
|
||||
glm::vec3(0, 0, 3),
|
||||
glm::vec3(0, 0, 2),
|
||||
glm::vec3(0, 0, 0)
|
||||
);
|
||||
|
||||
|
@ -14,8 +14,8 @@
|
||||
#include "visualnovel/components/VisualNovelCharacter.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
template<class T>
|
||||
class CharacterPrefab : public SceneItemPrefab<T> {
|
||||
template<class O>
|
||||
class CharacterPrefab : public SceneItemPrefab<O> {
|
||||
protected:
|
||||
/**
|
||||
* Character Prefab will request you to initialize your characters'
|
||||
@ -31,8 +31,8 @@ namespace Dawn {
|
||||
public:
|
||||
static std::vector<Asset*> prefabAssets(AssetManager *assMan) {
|
||||
return std::vector<Asset*>{
|
||||
assMan->get<TextureAsset>(T::getCharacterTexture()),
|
||||
assMan->get<TilesetAsset>(T::getCharacterTileset())
|
||||
assMan->get<TextureAsset>(O::getCharacterTexture()),
|
||||
assMan->get<TilesetAsset>(O::getCharacterTileset())
|
||||
};
|
||||
}
|
||||
|
||||
@ -47,34 +47,34 @@ namespace Dawn {
|
||||
TiledSprite *tiledSprite;
|
||||
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 {
|
||||
characterTexture = man->get<TextureAsset>(T::getCharacterTexture());
|
||||
characterTileset = man->get<TilesetAsset>(T::getCharacterTileset());
|
||||
characterTexture = man->get<TextureAsset>(O::getCharacterTexture());
|
||||
characterTileset = man->get<TilesetAsset>(O::getCharacterTileset());
|
||||
|
||||
// Emotions
|
||||
auto emotion = this->defineAndGetInitialEmotion(man);
|
||||
|
||||
// Components
|
||||
meshRenderer = SceneItem::addComponent<MeshRenderer>();
|
||||
meshHost = SceneItem::addComponent<MeshHost>();
|
||||
meshRenderer = this->template addComponent<MeshRenderer>();
|
||||
meshHost = this->template addComponent<MeshHost>();
|
||||
|
||||
material = SceneItem::addComponent<SimpleTexturedMaterial>();
|
||||
material = this->template addComponent<SimpleTexturedMaterial>();
|
||||
material->texture = &characterTexture->texture;
|
||||
|
||||
vnCharacter = SceneItem::addComponent<VisualNovelCharacter>();
|
||||
vnCharacter->nameKey = T::getLanguagePrefix() + ".name";
|
||||
vnCharacter = this->template addComponent<VisualNovelCharacter>();
|
||||
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);
|
||||
float_t ratio = characterTileset->tileset.getTileWidth() / characterTileset->tileset.getTileHeight();
|
||||
tiledSprite->setSize(glm::vec2(ratio, 1.0f));
|
||||
tiledSprite->setTile(emotion.tile);
|
||||
|
||||
audioSource = SceneItem::addComponent<AudioSource>();
|
||||
audioSource = this->template addComponent<AudioSource>();
|
||||
|
||||
this->transform.setLocalPosition(glm::vec3(0, 0, 0));
|
||||
}
|
||||
|
Reference in New Issue
Block a user