NAP
rendergnomoncomponent.h
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this
3  * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4 
5 #pragma once
6 
7 // Local Includes
8 #include "gnomonmesh.h"
9 #include "rendercomponent.h"
10 #include "materialinstance.h"
11 
12 // External Includes
13 #include <nap/resourceptr.h>
14 #include <transformcomponent.h>
15 
16 namespace nap
17 {
18  class RenderGnomonComponentInstance;
19 
26  {
27  RTTI_ENABLE(RenderableComponent)
29  public:
30 
32  float mLineWidth = 1.0f;
34 
38  virtual void getDependentComponents(std::vector<rtti::TypeInfo>& components) const override;
39  };
40 
41 
48  {
49  RTTI_ENABLE(RenderableComponentInstance)
50  public:
52  RenderableComponentInstance(entity, resource) { }
53 
61  virtual void onDraw(IRenderTarget& renderTarget, VkCommandBuffer commandBuffer, const glm::mat4& viewMatrix, const glm::mat4& projectionMatrix) override;
62 
66  virtual bool isSupported(nap::CameraComponentInstance& camera) const override { return true; }
67 
73  virtual bool init(utility::ErrorState& errorState) override;
74 
75  private:
76  MaterialInstance mMaterialInstance;
77  MaterialInstanceResource mMaterialInstanceResource;
78  RenderableMesh mRenderableMesh;
79  RenderService* mRenderService = nullptr;
80  TransformComponentInstance* mTransformComponent = nullptr;
81  float mLineWidth = 1.0f;
82  UniformStructInstance* mMVPStruct = nullptr;
83  UniformMat4Instance* mModelMatUniform = nullptr;
84  UniformMat4Instance* mViewMatUniform = nullptr;
85  UniformMat4Instance* mProjectMatUniform = nullptr;
86 
91  UniformMat4Instance* ensureUniform(const std::string& uniformName, utility::ErrorState& error);
92  };
93 }
nap::RenderableComponentInstance
Definition: rendercomponent.h:46
nap::RenderGnomonComponent
Definition: rendergnomoncomponent.h:25
nap::RenderGnomonComponentInstance::RenderGnomonComponentInstance
RenderGnomonComponentInstance(EntityInstance &entity, Component &resource)
Definition: rendergnomoncomponent.h:51
nap::IRenderTarget
Definition: irendertarget.h:21
nap::CameraComponentInstance
Definition: cameracomponent.h:38
nap::rtti::ObjectPtr
Definition: objectptr.h:154
nap::EDepthMode
EDepthMode
Definition: materialcommon.h:40
nap::utility::ErrorState
Definition: errorstate.h:19
nap::RenderGnomonComponentInstance
Definition: rendergnomoncomponent.h:47
nap::RenderGnomonComponent::mMesh
ResourcePtr< GnomonMesh > mMesh
Property: 'Gnomon' the Gnomon mesh this component renders.
Definition: rendergnomoncomponent.h:31
nap::RenderGnomonComponentInstance::isSupported
virtual bool isSupported(nap::CameraComponentInstance &camera) const override
Definition: rendergnomoncomponent.h:66
nap::RenderService
Definition: renderservice.h:275
nap::EntityInstance
Definition: entity.h:34
nap::RenderableComponent
Definition: rendercomponent.h:29
nap::Component
Definition: component.h:151
nap::RenderableMesh
Definition: renderablemesh.h:22
nap::MaterialInstance
Definition: materialinstance.h:297
nap
Definition: templateapp.h:17
nap::EDepthMode::ReadWrite
@ ReadWrite
Read and write depth.
nap::UniformStructInstance
Definition: uniforminstance.h:53
nap::TypedUniformValueInstance
Definition: uniforminstance.h:243
nap::TransformComponentInstance
Definition: transformcomponent.h:73
nap::MaterialInstanceResource
Definition: materialinstance.h:68