Pioneer
Loading...
Searching...
No Matches
StaticGeometry.h
Go to the documentation of this file.
1// Copyright © 2008-2024 Pioneer Developers. See AUTHORS.txt for details
2// Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3
4#ifndef _STATICGEOMETRY_H
5#define _STATICGEOMETRY_H
6/*
7 * Geometry node containing one or more meshes.
8 */
9#include "Aabb.h"
10#include "Node.h"
11#include "graphics/Renderer.h"
13
14namespace SceneGraph {
15
16 class NodeVisitor;
17
18 class StaticGeometry : public Node {
19 public:
20 struct Mesh {
21 // XXX deprecate these fields as they're wrapped in meshObject
26 };
28 StaticGeometry(const StaticGeometry &, NodeCopyCache *cache = 0);
29 virtual Node *Clone(NodeCopyCache *cache = 0) override;
30 virtual const char *GetTypeName() const override { return "StaticGeometry"; }
31 virtual void Accept(NodeVisitor &nv) override;
32 virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
33 virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
34
35 virtual void Save(NodeDatabase &) override;
37
41 unsigned int GetNumMeshes() const { return static_cast<Uint32>(m_meshes.size()); }
42 Mesh &GetMeshAt(unsigned int i);
43
45
46 protected:
48 std::vector<Mesh> m_meshes;
49 std::vector<RefCountedPtr<Graphics::Material>> m_instanceMaterials;
51 };
52
53} // namespace SceneGraph
54#endif
Definition: Renderer.h:45
Definition: RefCounted.h:36
Definition: NodeCopyCache.h:14
Definition: NodeVisitor.h:25
Definition: Node.h:75
Definition: StaticGeometry.h:18
std::vector< Mesh > m_meshes
Definition: StaticGeometry.h:48
virtual void Save(NodeDatabase &) override
Definition: StaticGeometry.cpp:108
virtual Node * Clone(NodeCopyCache *cache=0) override
Definition: StaticGeometry.cpp:36
~StaticGeometry()
Definition: StaticGeometry.cpp:25
unsigned int GetNumMeshes() const
Definition: StaticGeometry.h:41
static StaticGeometry * Load(NodeDatabase &)
Definition: StaticGeometry.cpp:170
virtual void Render(const matrix4x4f &trans, const RenderData *rd) override
Definition: StaticGeometry.cpp:46
RefCountedPtr< Graphics::InstanceBuffer > m_instBuffer
Definition: StaticGeometry.h:50
virtual void Accept(NodeVisitor &nv) override
Definition: StaticGeometry.cpp:41
virtual const char * GetTypeName() const override
Definition: StaticGeometry.h:30
Aabb m_boundingBox
Definition: StaticGeometry.h:44
Mesh & GetMeshAt(unsigned int i)
Definition: StaticGeometry.cpp:270
void AddMesh(RefCountedPtr< Graphics::VertexBuffer >, RefCountedPtr< Graphics::IndexBuffer >, RefCountedPtr< Graphics::Material >)
Definition: StaticGeometry.cpp:257
std::vector< RefCountedPtr< Graphics::Material > > m_instanceMaterials
Definition: StaticGeometry.h:49
Definition: CityOnPlanet.h:32
Definition: Weld.h:12
Definition: Aabb.h:11
Definition: Node.h:66
Definition: Node.h:47
Definition: StaticGeometry.h:20
RefCountedPtr< Graphics::Material > material
Definition: StaticGeometry.h:25
RefCountedPtr< Graphics::VertexBuffer > vertexBuffer
Definition: StaticGeometry.h:22
RefCountedPtr< Graphics::IndexBuffer > indexBuffer
Definition: StaticGeometry.h:23
RefCountedPtr< Graphics::MeshObject > meshObject
Definition: StaticGeometry.h:24