// 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 { public: static std::vector prefabAssets(AssetManager *ass) { return std::vector{ ass->get("texture_xo"), ass->get("tileset_xo") }; } // MeshHost *meshHost; TiledSprite *sprite; MeshRenderer *meshRenderer; SimpleTexturedMaterial *material; TicTacToeTile *ticTacToe; CubeCollider *collider; TicTacToeTilePrefab(Scene *s, sceneitemid_t i) : SceneItemPrefab(s,i) { } void prefabInit(AssetManager *man) override { auto tileset = man->get("tileset_xo"); auto texture = man->get("texture_xo"); meshHost = this->addComponent(); meshRenderer = this->addComponent(); material = this->template addComponent(); material->texture = &texture->texture; sprite = this->addComponent(); sprite->setTileset(&tileset->tileset); sprite->setSize(glm::vec2(1, 1)); sprite->setTile(0x01); collider = this->addComponent(); collider->min = glm::vec3(-0.5f, -0.5f, -0.1f); collider->max = glm::vec3( 0.5f, 0.5f, 0.1f); ticTacToe = this->addComponent(); } }; }