Nebula
Loading...
Searching...
No Matches
modelnode.h
Go to the documentation of this file.
1#pragma once
2//------------------------------------------------------------------------------
17//------------------------------------------------------------------------------
18#include "core/refcounted.h"
19#include "util/stringatom.h"
20#include "io/binaryreader.h"
21#include "io/urn.h"
22#include "math/bbox.h"
23#include "ids/id.h"
25#include "models/model.h"
26#include "materials/material.h"
28
29#include "util/delegate.h"
30
31
32namespace Characters
33{
35}
36
37namespace Particles
38{
39class ParticleContext;
40}
41
42namespace CoreGraphics
43{
44struct ResourceTableId;
45struct CmdBufferId;
46//enum ShaderPipeline;
47}
48
49namespace Models
50{
51
52struct ModelId;
53class ModelLoader;
55{
56public:
57
59 ModelNode();
61 virtual ~ModelNode();
62
66 const NodeType GetType() const;
68 const NodeBits GetBits() const;
69
71 virtual bool GetImplicitHierarchyActivation() const;
72
74 const Util::StringAtom& GetName() const;
76 const uint32_t HashCode() const;
77
79 virtual std::function<void(const CoreGraphics::CmdBufferId)> GetApplyFunction();
81 virtual std::function<const CoreGraphics::PrimitiveGroup()> GetPrimitiveGroupFunction();
82
84 virtual void Unload();
85
86protected:
87 friend class ModelLoader;
88 friend class ModelContext;
89 friend class ModelServer;
90 friend class CharacterNode;
91 friend class CharacterSkinNode;
94
96 virtual bool Load(const Util::FourCC& fourcc, const Util::StringAtom& tag, const Ptr<IO::BinaryReader>& reader, bool immediate);
97
99 virtual void OnFinishedLoading(ModelStreamingData* streamingData);
100
102 virtual void Discard();
103
107
112
115};
116
117//------------------------------------------------------------------------------
120inline const Util::Array<ModelNode*>&
122{
123 return this->children;
124}
125
126//------------------------------------------------------------------------------
129inline const NodeType
131{
132 return this->type;
133}
134
135//------------------------------------------------------------------------------
138inline const NodeBits
140{
141 return this->bits;
142}
143
144//------------------------------------------------------------------------------
147inline const Util::StringAtom&
149{
150 return this->name;
151}
152
153//------------------------------------------------------------------------------
156inline const uint32_t
158{
159 return (uint32_t)this->uniqueId;
160}
161
162//------------------------------------------------------------------------------
165inline std::function<void(const CoreGraphics::CmdBufferId)>
167{
168 return nullptr;
169}
170
171//------------------------------------------------------------------------------
174inline std::function<const CoreGraphics::PrimitiveGroup()>
176{
177 return nullptr;
178}
179
180} // namespace Models
Assumes control over the character animation functionalities of a model if it contains a character de...
Definition charactercontext.h:58
Defines a group of primitives as a subset of a vertex buffer and index buffer plus the primitive topo...
Definition primitivegroup.h:20
Nebula's bounding box class.
Definition bbox.h:24
Definition modelloader.h:27
Definition modelnode.h:55
virtual std::function< void(const CoreGraphics::CmdBufferId)> GetApplyFunction()
Get function to apply node.
Definition modelnode.h:166
IndexT uniqueId
Definition modelnode.h:113
const Util::StringAtom & GetName() const
return name
Definition modelnode.h:148
virtual void Discard()
discard node
Definition modelnode.cc:90
virtual void OnFinishedLoading(ModelStreamingData *streamingData)
call when model node data is finished loading (not accounting for secondary resources)
Definition modelnode.cc:81
const NodeType GetType() const
get type of node
Definition modelnode.h:130
Util::Array< Models::ModelNode * > children
Definition modelnode.h:109
virtual bool Load(const Util::FourCC &fourcc, const Util::StringAtom &tag, const Ptr< IO::BinaryReader > &reader, bool immediate)
load data
Definition modelnode.cc:35
static IndexT ModelNodeUniqueIdCounter
Definition modelnode.h:114
const Util::Array< ModelNode * > & GetChildren() const
return constant reference to children
Definition modelnode.h:121
friend class CharacterSkinNode
Definition modelnode.h:91
Math::bbox boundingBox
Definition modelnode.h:110
friend class CharacterNode
Definition modelnode.h:90
virtual void Unload()
Unload data (don't call explicitly).
Definition modelnode.cc:72
virtual std::function< const CoreGraphics::PrimitiveGroup()> GetPrimitiveGroupFunction()
Get function to fetch primitive group.
Definition modelnode.h:175
const uint32_t HashCode() const
get hash
Definition modelnode.h:157
ModelNode()
constructor
Definition modelnode.cc:17
virtual bool GetImplicitHierarchyActivation() const
return true if all children should create hierarchies upon calling CreateInstance
Definition modelnode.cc:99
const NodeBits GetBits() const
get feature bits of node
Definition modelnode.h:139
friend class ModelLoader
Definition modelnode.h:87
NodeBits bits
Definition modelnode.h:106
virtual ~ModelNode()
destructor
Definition modelnode.cc:26
NodeType type
Definition modelnode.h:105
friend class ModelServer
Definition modelnode.h:89
Util::StringAtom name
Definition modelnode.h:104
Models::ModelNode * parent
Definition modelnode.h:108
friend class ModelContext
Definition modelnode.h:88
Util::StringAtom tag
Definition modelnode.h:111
Definition particlecontext.h:27
Nebula's smart pointer class which manages the life time of RefCounted objects.
Definition ptr.h:38
Nebula's dynamic array class.
Definition array.h:61
A four-character-code is a quasi-human-readable 32-bit-id.
Definition fourcc.h:19
A StringAtom.
Definition stringatom.h:22
A character encapsulates a skeleton resource, an animation resource, and the ability to instantiate s...
Definition charactercontext.cc:21
Acceleration structures are used to enable ray tracing on the GPU by dividing the scene into a BVH.
Definition accelerationstructure.h:24
A model resource consists of nodes, each of which inhibit some information read from an ....
Definition model.cc:10
NodeBits
Definition model.h:39
NodeType
Definition model.h:27
Particle context controls playing and enabling/disabling of particle attrs inside a model.
Definition modelnode.h:38
Definition commandbuffer.h:176
Definition model.h:24
Definition model.h:56
int IndexT
Definition types.h:41