Pioneer
Loading...
Searching...
No Matches
StaticGeometry.h
Go to the documentation of this file.
1// Copyright © 2008-2023 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#include "libs.h"
14
15namespace SceneGraph {
16
17 class NodeVisitor;
18
19 class StaticGeometry : public Node {
20 public:
21 struct Mesh {
22 // XXX deprecate these fields as they're wrapped in meshObject
27 };
29 StaticGeometry(const StaticGeometry &, NodeCopyCache *cache = 0);
30 virtual Node *Clone(NodeCopyCache *cache = 0) override;
31 virtual const char *GetTypeName() const override { return "StaticGeometry"; }
32 virtual void Accept(NodeVisitor &nv) override;
33 virtual void Render(const matrix4x4f &trans, const RenderData *rd) override;
34 virtual void Render(const std::vector<matrix4x4f> &trans, const RenderData *rd) override;
35
36 virtual void Save(NodeDatabase &) override;
38
42 unsigned int GetNumMeshes() const { return static_cast<Uint32>(m_meshes.size()); }
43 Mesh &GetMeshAt(unsigned int i);
44
46
47 protected:
49 std::vector<Mesh> m_meshes;
50 std::vector<RefCountedPtr<Graphics::Material>> m_instanceMaterials;
52 };
53
54} // namespace SceneGraph
55#endif
Definition Renderer.h:44
Definition RefCounted.h:36
Definition NodeCopyCache.h:14
Definition NodeVisitor.h:26
Definition Node.h:72
Definition StaticGeometry.h:19
std::vector< Mesh > m_meshes
Definition StaticGeometry.h:49
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:42
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:51
virtual void Accept(NodeVisitor &nv) override
Definition StaticGeometry.cpp:41
virtual const char * GetTypeName() const override
Definition StaticGeometry.h:31
Aabb m_boundingBox
Definition StaticGeometry.h:45
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:50
Definition CityOnPlanet.h:31
Definition Weld.h:10
Definition Aabb.h:9
Definition Node.h:63
Definition Node.h:44
Definition StaticGeometry.h:21
RefCountedPtr< Graphics::Material > material
Definition StaticGeometry.h:26
RefCountedPtr< Graphics::VertexBuffer > vertexBuffer
Definition StaticGeometry.h:23
RefCountedPtr< Graphics::IndexBuffer > indexBuffer
Definition StaticGeometry.h:24
RefCountedPtr< Graphics::MeshObject > meshObject
Definition StaticGeometry.h:25