Working on Prefab Parser updates
This commit is contained in:
@ -19,4 +19,4 @@ add_subdirectory(scene)
|
||||
|
||||
# Assets
|
||||
set(ROSE_ASSETS_DIR ${DAWN_ASSETS_DIR}/games/rose)
|
||||
tool_prefab(${ROSE_ASSETS_DIR}/prefabs/PlayerPrefab.xml)
|
||||
tool_prefab(${ROSE_ASSETS_DIR}/prefabs/Player.xml)
|
@ -1,52 +0,0 @@
|
||||
// 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/MeshHost.hpp"
|
||||
#include "scene/components/display/MeshRenderer.hpp"
|
||||
#include "scene/components/display/material/SimpleTexturedMaterial.hpp"
|
||||
#include "scene/components/physics/2d/CharacterController2D.hpp"
|
||||
#include "scene/components/physics/2d/BoxCollider.hpp"
|
||||
#include "scene/components/PlayerController.hpp"
|
||||
#include "display/mesh/CubeMesh.hpp"
|
||||
#include "display/mesh/CapsuleMesh.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class PlayerPrefab : public SceneItemPrefab<PlayerPrefab>, public StateOwner {
|
||||
public:
|
||||
static std::vector<Asset*> prefabAssets(AssetManager *man) {
|
||||
return {};
|
||||
}
|
||||
|
||||
PlayerController *player;
|
||||
|
||||
PlayerPrefab(Scene *s, sceneitemid_t i) : SceneItemPrefab(s, i) {}
|
||||
|
||||
void prefabInit(AssetManager *man) override {
|
||||
auto characterController = this->addComponent<CharacterController2D>();
|
||||
auto hitbox = this->addComponent<BoxCollider>();
|
||||
auto meshHost = this->addComponent<MeshHost>();
|
||||
auto meshRenderer = this->addComponent<MeshRenderer>();
|
||||
auto material = this->addComponent<SimpleTexturedMaterial>();
|
||||
|
||||
CapsuleMesh::create(&meshHost->mesh, 0.5f, 1.5f);
|
||||
|
||||
auto nose = scene->createSceneItem();
|
||||
auto noseMeshHost = nose->addComponent<MeshHost>();
|
||||
auto noseMeshRenderer = nose->addComponent<MeshRenderer>();
|
||||
auto noseMaterial = nose->addComponent<SimpleTexturedMaterial>();
|
||||
noseMeshHost->mesh.createBuffers(CUBE_VERTICE_COUNT, CUBE_INDICE_COUNT);
|
||||
glm::vec3 noseSize = glm::vec3(0.25f, 0.25f, 0.25f);
|
||||
CubeMesh::buffer(&noseMeshHost->mesh, -(noseSize * 0.5f), noseSize, 0, 0);
|
||||
noseMaterial->color = COLOR_RED;
|
||||
nose->transform.setParent(&this->transform);
|
||||
nose->transform.setLocalPosition(glm::vec3(0, 0, 0.5f));
|
||||
|
||||
|
||||
player = this->addComponent<PlayerController>();
|
||||
}
|
||||
};
|
||||
}
|
@ -6,8 +6,11 @@
|
||||
#pragma once
|
||||
#include "scene/Scene.hpp"
|
||||
#include "scene/components/GameCamera.hpp"
|
||||
#include "prefabs/PlayerPrefab.hpp"
|
||||
#include "prefabs/Player.hpp"
|
||||
#include "prefabs/SpinningCube.hpp"
|
||||
#include "prefabs/ui/debug/FPSLabel.hpp"
|
||||
#include "display/mesh/CapsuleMesh.hpp"
|
||||
#include "display/mesh/CubeMesh.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class HelloWorldScene : public Scene {
|
||||
@ -16,16 +19,14 @@ namespace Dawn {
|
||||
UICanvas *canvas;
|
||||
|
||||
void stage() override {
|
||||
auto player = PlayerPrefab::create(this);
|
||||
|
||||
auto player = Player::create(this);
|
||||
CapsuleMesh::create(&player->meshHost->mesh, 0.5f, 1.5f);
|
||||
player->meshHost->mesh.createBuffers(CUBE_VERTICE_COUNT, CUBE_INDICE_COUNT);
|
||||
CubeMesh::buffer(&player->meshHost->mesh, glm::vec3(-0.5f, -0.5f, -0.5f), glm::vec3(1, 1, 1), 0, 0);
|
||||
|
||||
canvas = UICanvas::create(this);
|
||||
|
||||
auto labelItem = FPSLabel::create(this);
|
||||
labelItem->transform.setParent(canvas->transform);
|
||||
labelItem->label->alignX = UI_COMPONENT_ALIGN_END;
|
||||
labelItem->label->alignment = glm::vec4(0, 0, 0, 0);
|
||||
labelItem->label->fontSize = 16;
|
||||
|
||||
auto wallBox = this->createSceneItem()->addComponent<BoxCollider>();
|
||||
wallBox->min = glm::vec2(-4, -3);
|
||||
wallBox->max = glm::vec2(-3, 3);
|
||||
|
Reference in New Issue
Block a user