Barely progress on tilesets
This commit is contained in:
@ -35,6 +35,11 @@ void SceneItem::init() {
|
||||
bool_t waiting = false;
|
||||
auto it2 = deps.begin();
|
||||
while(it2 != deps.end()) {
|
||||
if(*it2 == nullptr) {
|
||||
continue;
|
||||
++it2;
|
||||
}
|
||||
|
||||
// Has the dep not yet inited?
|
||||
if(!(*it2)->hasInitialized) {
|
||||
waiting = true;
|
||||
|
@ -5,7 +5,9 @@
|
||||
|
||||
#pragma once
|
||||
#include "scene/components/display/Camera.hpp"
|
||||
#include "scene/components/display/MeshHost.hpp"
|
||||
#include "scene/components/display/MeshRenderer.hpp"
|
||||
#include "scene/components/display/Material.hpp"
|
||||
#include "scene/components/display/TiledSprite.hpp"
|
||||
|
||||
#include "scene/components/ui/UICanvas.hpp"
|
@ -8,5 +8,7 @@ target_sources(${DAWN_TARGET_NAME}
|
||||
PRIVATE
|
||||
Camera.cpp
|
||||
Material.cpp
|
||||
MeshHost.cpp
|
||||
MeshRenderer.cpp
|
||||
TiledSprite.cpp
|
||||
)
|
16
src/dawn/scene/components/display/MeshHost.cpp
Normal file
16
src/dawn/scene/components/display/MeshHost.cpp
Normal file
@ -0,0 +1,16 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "MeshHost.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
MeshHost::MeshHost(SceneItem *item) :
|
||||
mesh(),
|
||||
SceneItemComponent(item)
|
||||
{
|
||||
|
||||
}
|
||||
|
17
src/dawn/scene/components/display/MeshHost.hpp
Normal file
17
src/dawn/scene/components/display/MeshHost.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "scene/SceneItemComponent.hpp"
|
||||
#include "display/mesh/Mesh.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class MeshHost : public SceneItemComponent {
|
||||
public:
|
||||
Mesh mesh;
|
||||
|
||||
MeshHost(SceneItem *item);
|
||||
};
|
||||
}
|
@ -4,8 +4,25 @@
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "MeshRenderer.hpp"
|
||||
#include "MeshHost.hpp"
|
||||
#include "scene/SceneItem.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
MeshRenderer::MeshRenderer(SceneItem *item) : SceneItemComponent(item) {
|
||||
}
|
||||
|
||||
std::vector<SceneItemComponent*> MeshRenderer::getDependencies() {
|
||||
return std::vector<SceneItemComponent*>{
|
||||
this->item->getComponent<MeshHost>()
|
||||
};
|
||||
}
|
||||
|
||||
void MeshRenderer::onStart() {
|
||||
SceneItemComponent::onStart();
|
||||
|
||||
if(mesh == nullptr) {
|
||||
auto host = this->item->getComponent<MeshHost>();
|
||||
if(host != nullptr) this->mesh = &host->mesh;
|
||||
}
|
||||
}
|
@ -18,5 +18,8 @@ namespace Dawn {
|
||||
* @param item Scene Item this mesh renderer belongs to.
|
||||
*/
|
||||
MeshRenderer(SceneItem *item);
|
||||
|
||||
std::vector<SceneItemComponent*> getDependencies() override;
|
||||
void onStart() override;
|
||||
};
|
||||
}
|
35
src/dawn/scene/components/display/TiledSprite.cpp
Normal file
35
src/dawn/scene/components/display/TiledSprite.cpp
Normal file
@ -0,0 +1,35 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#include "TiledSprite.hpp"
|
||||
#include "scene/SceneItem.hpp"
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
TiledSprite::TiledSprite(SceneItem *item) : SceneItemComponent(item) {
|
||||
|
||||
}
|
||||
|
||||
std::vector<SceneItemComponent*> TiledSprite::getDependencies() {
|
||||
this->renderer = this->item->getComponent<MeshRenderer>();
|
||||
this->host = this->item->getComponent<MeshHost>();
|
||||
|
||||
return std::vector<SceneItemComponent*>{
|
||||
this->renderer,
|
||||
this->host
|
||||
};
|
||||
}
|
||||
|
||||
void TiledSprite::onStart() {
|
||||
SceneItemComponent::onStart();
|
||||
|
||||
assertNotNull(this->host);
|
||||
|
||||
QuadMesh::initQuadMesh(&this->host->mesh,
|
||||
glm::vec2(0, 0), glm::vec2(0, 0),
|
||||
glm::vec2(1, 1), glm::vec2(0.125f, 0.125f),
|
||||
0
|
||||
);
|
||||
}
|
25
src/dawn/scene/components/display/TiledSprite.hpp
Normal file
25
src/dawn/scene/components/display/TiledSprite.hpp
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright (c) 2022 Dominic Masters
|
||||
//
|
||||
// This software is released under the MIT License.
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "scene/SceneItemComponent.hpp"
|
||||
#include "scene/components/display/MeshRenderer.hpp"
|
||||
#include "scene/components/display/MeshHost.hpp"
|
||||
#include "display/mesh/QuadMesh.hpp"
|
||||
#include "display/Tileset.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class TiledSprite : public SceneItemComponent {
|
||||
protected:
|
||||
MeshRenderer *renderer;
|
||||
MeshHost *host;
|
||||
|
||||
public:
|
||||
TiledSprite(SceneItem *item);
|
||||
|
||||
std::vector<SceneItemComponent*> getDependencies() override;
|
||||
void onStart() override;
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user