Prefab Tool More-Or-Less done
This commit is contained in:
		@@ -9,9 +9,9 @@ target_sources(${DAWN_TARGET_NAME}
 | 
			
		||||
    AnimationController.cpp
 | 
			
		||||
    Camera.cpp
 | 
			
		||||
    Material.cpp
 | 
			
		||||
    MeshHost.cpp
 | 
			
		||||
    MeshRenderer.cpp
 | 
			
		||||
    PixelPerfectCamera.cpp
 | 
			
		||||
    TiledSprite.cpp
 | 
			
		||||
    SimpleRenderTargetQuad.cpp
 | 
			
		||||
)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
add_subdirectory(mesh)
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
// https://opensource.org/licenses/MIT
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "scene/components/display/MeshHost.hpp"
 | 
			
		||||
#include "scene/components/display/mesh/MeshHost.hpp"
 | 
			
		||||
#include "display/RenderTarget.hpp"
 | 
			
		||||
#include "display/mesh/QuadMesh.hpp"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,8 +5,8 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "scene/SceneItemComponent.hpp"
 | 
			
		||||
#include "scene/components/display/MeshRenderer.hpp"
 | 
			
		||||
#include "scene/components/display/MeshHost.hpp"
 | 
			
		||||
#include "scene/components/display/mesh/MeshRenderer.hpp"
 | 
			
		||||
#include "scene/components/display/mesh/MeshHost.hpp"
 | 
			
		||||
#include "display/mesh/QuadMesh.hpp"
 | 
			
		||||
#include "display/Tileset.hpp"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								src/dawn/scene/components/display/mesh/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/dawn/scene/components/display/mesh/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
# Copyright (c) 2023 Dominic Masters
 | 
			
		||||
# 
 | 
			
		||||
# This software is released under the MIT License.
 | 
			
		||||
# https://opensource.org/licenses/MIT
 | 
			
		||||
 | 
			
		||||
# Sources
 | 
			
		||||
target_sources(${DAWN_TARGET_NAME}
 | 
			
		||||
  PRIVATE
 | 
			
		||||
    MeshRenderer.cpp
 | 
			
		||||
    CubeMeshHost.cpp
 | 
			
		||||
    MeshHost.cpp
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										25
									
								
								src/dawn/scene/components/display/mesh/CubeMeshHost.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/dawn/scene/components/display/mesh/CubeMeshHost.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
// Copyright (c) 2023 Dominic Masters
 | 
			
		||||
// 
 | 
			
		||||
// This software is released under the MIT License.
 | 
			
		||||
// https://opensource.org/licenses/MIT
 | 
			
		||||
 | 
			
		||||
#include "CubeMeshHost.hpp"
 | 
			
		||||
 | 
			
		||||
using namespace Dawn;
 | 
			
		||||
 | 
			
		||||
CubeMeshHost::CubeMeshHost(SceneItem *item) :
 | 
			
		||||
  MeshHost(item),
 | 
			
		||||
  size(glm::vec3(1,1,1))
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CubeMeshHost::onStart() {
 | 
			
		||||
  this->mesh.createBuffers(
 | 
			
		||||
    CUBE_VERTICE_COUNT,
 | 
			
		||||
    CUBE_INDICE_COUNT
 | 
			
		||||
  );
 | 
			
		||||
  
 | 
			
		||||
  useEffect([&]{
 | 
			
		||||
    CubeMesh::buffer(&this->mesh, glm::vec3(this->size) * -0.5f, this->size, 0, 0);
 | 
			
		||||
  }, this->size)();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								src/dawn/scene/components/display/mesh/CubeMeshHost.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/dawn/scene/components/display/mesh/CubeMeshHost.hpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
// Copyright (c) 2023 Dominic Masters
 | 
			
		||||
// 
 | 
			
		||||
// This software is released under the MIT License.
 | 
			
		||||
// https://opensource.org/licenses/MIT
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "MeshHost.hpp"
 | 
			
		||||
#include "display/mesh/CubeMesh.hpp"
 | 
			
		||||
 | 
			
		||||
namespace Dawn {
 | 
			
		||||
  class CubeMeshHost : public MeshHost {
 | 
			
		||||
    public:
 | 
			
		||||
      // @optional
 | 
			
		||||
      StateProperty<glm::vec3> size;
 | 
			
		||||
 | 
			
		||||
      CubeMeshHost(SceneItem *item);
 | 
			
		||||
 | 
			
		||||
      void onStart() override;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@@ -1,27 +1,27 @@
 | 
			
		||||
// Copyright (c) 2022 Dominic Masters
 | 
			
		||||
// 
 | 
			
		||||
// This software is released under the MIT License.
 | 
			
		||||
// 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->meshHost = this->item->getComponent<MeshHost>()
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MeshRenderer::onStart() {
 | 
			
		||||
  SceneItemComponent::onStart();
 | 
			
		||||
 | 
			
		||||
  if(this->mesh == nullptr && this->meshHost != nullptr) {
 | 
			
		||||
    this->mesh = &this->meshHost->mesh;
 | 
			
		||||
  }
 | 
			
		||||
// Copyright (c) 2022 Dominic Masters
 | 
			
		||||
// 
 | 
			
		||||
// This software is released under the MIT License.
 | 
			
		||||
// 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->meshHost = this->item->getComponent<MeshHost>()
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MeshRenderer::onStart() {
 | 
			
		||||
  SceneItemComponent::onStart();
 | 
			
		||||
 | 
			
		||||
  if(this->mesh == nullptr && this->meshHost != nullptr) {
 | 
			
		||||
    this->mesh = &this->meshHost->mesh;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,31 +1,31 @@
 | 
			
		||||
// 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;
 | 
			
		||||
 | 
			
		||||
  class MeshRenderer : public SceneItemComponent {
 | 
			
		||||
    protected:
 | 
			
		||||
      MeshHost *meshHost = nullptr;
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
      // @optional
 | 
			
		||||
      Mesh * mesh = nullptr;
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Constructs a MeshRenderer scene item component.
 | 
			
		||||
       * 
 | 
			
		||||
       * @param item Scene Item this mesh renderer belongs to.
 | 
			
		||||
       */
 | 
			
		||||
      MeshRenderer(SceneItem *item);
 | 
			
		||||
 | 
			
		||||
      std::vector<SceneItemComponent*> getDependencies() override;
 | 
			
		||||
      void onStart() override;
 | 
			
		||||
  };
 | 
			
		||||
// 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;
 | 
			
		||||
 | 
			
		||||
  class MeshRenderer : public SceneItemComponent {
 | 
			
		||||
    protected:
 | 
			
		||||
      MeshHost *meshHost = nullptr;
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
      // @optional
 | 
			
		||||
      Mesh * mesh = nullptr;
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Constructs a MeshRenderer scene item component.
 | 
			
		||||
       * 
 | 
			
		||||
       * @param item Scene Item this mesh renderer belongs to.
 | 
			
		||||
       */
 | 
			
		||||
      MeshRenderer(SceneItem *item);
 | 
			
		||||
 | 
			
		||||
      std::vector<SceneItemComponent*> getDependencies() override;
 | 
			
		||||
      void onStart() override;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
#include "ExampleSpin.hpp"
 | 
			
		||||
#include "game/DawnGame.hpp"
 | 
			
		||||
#include "scene/components/display/MeshRenderer.hpp"
 | 
			
		||||
#include "scene/components/display/mesh/MeshRenderer.hpp"
 | 
			
		||||
#include "display/mesh/CubeMesh.hpp"
 | 
			
		||||
#include "scene/components/display/material/SimpleTexturedMaterial.hpp"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user