62 lines
2.0 KiB
C++
62 lines
2.0 KiB
C++
// Copyright (c) 2023 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
#pragma once
|
|
#include "prefab/SceneItemPrefab.hpp"
|
|
#include "scene/components/display/TiledSprite.hpp"
|
|
#include "scene/components/display/MeshHost.hpp"
|
|
#include "scene/components/display/MeshRenderer.hpp"
|
|
#include "scene/components/display/material/SimpleTexturedMaterial.hpp"
|
|
#include "scene/components/physics/3d/CubeCollider.hpp"
|
|
#include "components/TicTacToeTile.hpp"
|
|
|
|
namespace Dawn {
|
|
class TicTacToeTilePrefab : public SceneItemPrefab<TicTacToeTilePrefab> {
|
|
public:
|
|
static std::vector<Asset*> prefabAssets(AssetManager *ass) {
|
|
return std::vector<Asset*>{
|
|
ass->get<TextureAsset>("texture_xo"),
|
|
ass->get<TilesetAsset>("tileset_xo")
|
|
};
|
|
}
|
|
|
|
//
|
|
MeshHost *meshHost;
|
|
TiledSprite *sprite;
|
|
MeshRenderer *meshRenderer;
|
|
SimpleTexturedMaterial *material;
|
|
TicTacToeTile *ticTacToe;
|
|
CubeCollider *collider;
|
|
|
|
TicTacToeTilePrefab(Scene *s, sceneitemid_t i) :
|
|
SceneItemPrefab<TicTacToeTilePrefab>(s,i)
|
|
{
|
|
}
|
|
|
|
|
|
void prefabInit(AssetManager *man) override {
|
|
auto tileset = man->get<TilesetAsset>("tileset_xo");
|
|
auto texture = man->get<TextureAsset>("texture_xo");
|
|
|
|
meshHost = this->addComponent<MeshHost>();
|
|
|
|
meshRenderer = this->addComponent<MeshRenderer>();
|
|
|
|
material = this->template addComponent<SimpleTexturedMaterial>();
|
|
material->texture = &texture->texture;
|
|
|
|
sprite = this->addComponent<TiledSprite>();
|
|
sprite->setTileset(&tileset->tileset);
|
|
sprite->setSize(glm::vec2(1, 1));
|
|
sprite->setTile(0x01);
|
|
|
|
collider = this->addComponent<CubeCollider>();
|
|
collider->min = glm::vec3(-0.5f, -0.5f, -0.1f);
|
|
collider->max = glm::vec3( 0.5f, 0.5f, 0.1f);
|
|
|
|
ticTacToe = this->addComponent<TicTacToeTile>();
|
|
}
|
|
};
|
|
} |