// 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/Components.hpp" #include "components/PlayerController.hpp" namespace Dawn { class PlayerPrefab : public SceneItemPrefab<PlayerPrefab> { public: static std::vector<Asset*> prefabAssets(AssetManager *man) { std::vector<Asset*> assets; assets.push_back(man->get<TilesetAsset>("tileset_aqua")); assets.push_back(man->get<TextureAsset>("texture_aqua")); return assets; } // MeshHost *meshHost; TiledSprite *tiledSprite; Material *material; MeshRenderer *meshRenderer; PlayerController *playerController; PlayerPrefab(Scene *s, sceneitemid_t i) : SceneItemPrefab(s, i) {} void prefabInit(AssetManager *man) override { auto tileset = man->get<TilesetAsset>("tileset_aqua"); auto texture = man->get<TextureAsset>("texture_aqua"); meshHost = addComponent<MeshHost>(); tiledSprite = addComponent<TiledSprite>(); material = addComponent<Material>(); meshRenderer = addComponent<MeshRenderer>(); playerController = addComponent<PlayerController>(); tiledSprite->setTilesetAndSize(&tileset->tileset); tiledSprite->setTile(896); material->textureValues[material->getShader()->getParameterByName("u_Text")] = &texture->texture; } }; }