Dawn/src/dawnhelloworld/scene/HelloWorldScene.cpp

47 lines
1.3 KiB
C++

// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#include "scene/SceneList.hpp"
#include "component/display/Camera.hpp"
#include "prefab/SimpleSpinningCube.hpp"
#include "display/font/TrueTypeTexture.hpp"
#include "component/display/material/SimpleTexturedMaterial.hpp"
#include "display/mesh/QuadMesh.hpp"
#include <ft2build.h>
#include FT_FREETYPE_H
using namespace Dawn;
std::shared_ptr<TrueTypeTexture> texture;
void Dawn::helloWorldScene(Scene &s) {
texture = s.getGame()->assetManager.get<TrueTypeTexture>("ysabeau_regular", 32);
while(!s.getGame()->assetManager.isLoaded("ysabeau_regular")) {
s.getGame()->assetManager.update();
}
auto cameraItem = s.createSceneItem();
auto camera = cameraItem->addComponent<Camera>();
cameraItem->lookAt({ 120, 120, 120 }, { 0, 0, 0 }, { 0, 1, 0 });
auto quad = s.createSceneItem();
auto quadMesh = std::make_shared<Mesh>();
glm::vec2 position = { 0, 0 };
glm::vec2 size = texture->bufferStringToMesh(
quadMesh,
L"Hello World!",
position,
true
);
auto quadRenderer = quad->addComponent<MeshRenderer>();
quadRenderer->mesh = quadMesh;
auto quadMaterial = quad->addComponent<SimpleTexturedMaterial>();
quadMaterial->setTexture(texture->texture);
}