All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
InteriorRenderableFactory.h
1 #pragma once
2 
3 #include "IInteriorRenderableFactory.h"
4 
5 
6 namespace Eegeo
7 {
8  namespace Resources
9  {
10  namespace Interiors
11  {
12  namespace Builder
13  {
15  {
16  public:
19  Resources::Interiors::IInteriorsMaterialService& interiorsMaterialService,
20  const Resources::Interiors::InteriorsStencilMirrorClearRenderableFactory& interiorsStencilMirrorClearRenderableFactory,
21  const Resources::Interiors::IInteriorsMaterialAssignmentObserver& materialAssignmentObserver)
22  : m_vertexBindingPool(vertexBindingPool)
23  , m_interiorsMaterialService(interiorsMaterialService)
24  , m_interiorsStencilMirrorClearRenderableFactory(interiorsStencilMirrorClearRenderableFactory)
25  , m_materialAssignmentObserver(materialAssignmentObserver)
26  {
27 
28  }
29 
30  Rendering::Renderables::InteriorFloorRenderable* CreateInteriorFloorRenderable(const std::string& interiorIdentifier,
31  InteriorRenderableCreationData& creationData,
32  const float interiorTerrainHeight) override;
33 
34  Rendering::Renderables::InstancedInteriorFloorRenderable* CreateInstancedInteriorFloorRenderable(
35  const std::string& interiorIdentifier,
36  const std::string& materialGroup,
37  InteriorRenderableCreationData& creationData,
38  int floorIndex,
39  const float interiorTerrainHeight,
40  const std::vector<m44>& instanceTransforms,
41  bool ownsMesh) override;
42 
43  Rendering::Renderables::InteriorHighlightRenderable* CreateInteriorHighlightRenderable(const std::string& interiorIdentifier,
44  InteriorRenderableCreationData& creationData,
45  const float interiorTerrainHeight) override;
46 
47  Rendering::Renderables::InstancedInteriorFloorRenderable* CreateInstancedStencilMirrorMaskRenderable(
48  const std::string& interiorIdentifier,
49  InteriorRenderableCreationData& creationData,
50  const float interiorTerrainHeight,
51  const std::vector<m44>& instanceTransforms) override;
52 
53  Rendering::Renderables::InteriorFloorRenderable* CreateStencilMirrorMaskRenderable(const std::string& interiorIdentifier,
54  InteriorRenderableCreationData& creationData,
55  const float interiorTerrainHeight) override;
56 
57  Resources::Interiors::InteriorsStencilMirrorClearRenderable* CreateStencilMirrorClearRenderable(
58  const Rendering::Renderables::InteriorRenderable& mirrorRenderable) override;
59 
60  private:
61 
63 
64  static std::string MakeRenderableIdFromMaterialName(const std::string& materialName, bool isEntity);
65 
66  Rendering::Materials::IMaterial* GetMaterialFromMaterialData(const std::string& interiorName, const InteriorMaterialData& materialData);
67 
69  Resources::Interiors::IInteriorsMaterialService& m_interiorsMaterialService;
70  const Resources::Interiors::InteriorsStencilMirrorClearRenderableFactory& m_interiorsStencilMirrorClearRenderableFactory;
71  const Resources::Interiors::IInteriorsMaterialAssignmentObserver& m_materialAssignmentObserver;
72  };
73  }
74  }
75  }
76 }