Nebula
Toggle main menu visibility
Loading...
Searching...
No Matches
model.h
Go to the documentation of this file.
1
#pragma once
2
//------------------------------------------------------------------------------
10
//------------------------------------------------------------------------------
11
#include "
ids/id.h
"
12
#include "
ids/idallocator.h
"
13
#include "
resources/resourceid.h
"
14
#include "
core/rttimacros.h
"
15
#include "
memory/rangeallocator.h
"
16
#include <functional>
17
namespace
Models
18
{
19
20
class
ModelNode
;
21
22
RESOURCE_ID_TYPE
(
ModelId
);
23
24
enum
NodeType
25
{
26
CharacterNodeType
,
27
TransformNodeType
,
28
ShaderStateNodeType
,
29
PrimitiveNodeType
,
30
ParticleSystemNodeType
,
31
CharacterSkinNodeType
,
32
33
NumNodeTypes
34
};
35
36
enum
NodeBits
37
{
38
NoBits
=
N_BIT
(0),
39
HasTransformBit
=
N_BIT
(1),
40
HasStateBit
=
N_BIT
(2)
41
};
42
__ImplementEnumBitOperators
(
NodeBits
);
43
44
enum class
LoadBits
45
{
46
NoBits
=
N_BIT
(0),
47
MeshBit
=
N_BIT
(1),
48
AnimBit
=
N_BIT
(2),
49
MaterialBit
=
N_BIT
(3)
50
};
51
__ImplementEnumBitOperators
(
LoadBits
);
52
53
struct
ModelStreamingData
54
{
55
LoadBits
requiredBits
;
56
LoadBits
loadedBits
;
57
};
58
59
struct
NodeInstanceRange
60
{
61
Memory::RangeAllocation
allocation
;
62
SizeT
begin
,
end
;
63
};
64
65
struct
ModelCreateInfo
66
{
67
Math::bbox
boundingBox
;
68
Util::Array<Models::ModelNode*>
nodes
;
69
};
70
72
const
ModelId
CreateModel
(
const
ModelCreateInfo
& info);
74
void
DestroyModel
(
const
ModelId
id
);
75
77
const
Util::Array<Models::ModelNode*>
&
ModelGetNodes
(
const
ModelId
id
);
79
const
Math::bbox
&
ModelGetBoundingBox
(
const
ModelId
id
);
80
81
enum
82
{
83
Model_BoundingBox
,
84
Model_Nodes
85
};
86
87
typedef
Ids::IdAllocator
<
88
Math::bbox
,
89
Util::Array<Models::ModelNode*>
90
>
ModelAllocator
;
91
extern
ModelAllocator
modelAllocator
;
92
}
// namespace Models
Ids::IdAllocator
An ID allocator associates an id with a slice in an N number of arrays.
Definition
idallocator.h:39
Math::bbox
Nebula's bounding box class.
Definition
bbox.h:24
Models::ModelNode
Definition
modelnode.h:54
Util::Array
Nebula's dynamic array class.
Definition
array.h:61
idallocator.h
id.h
Models
A model resource consists of nodes, each of which inhibit some information read from an ....
Definition
model.cc:10
Models::DestroyModel
void DestroyModel(const ModelId id)
discard model (resource)
Definition
model.cc:31
Models::ModelGetBoundingBox
const Math::bbox & ModelGetBoundingBox(const ModelId id)
Get model bounding box.
Definition
model.cc:50
Models::modelAllocator
ModelAllocator modelAllocator
Definition
model.cc:12
Models::Model_Nodes
@ Model_Nodes
Definition
model.h:84
Models::Model_BoundingBox
@ Model_BoundingBox
Definition
model.h:83
Models::CreateModel
const ModelId CreateModel(const ModelCreateInfo &info)
create model (resource)
Definition
model.cc:17
Models::NodeBits
NodeBits
Definition
model.h:37
Models::NoBits
@ NoBits
Definition
model.h:38
Models::HasTransformBit
@ HasTransformBit
Definition
model.h:39
Models::HasStateBit
@ HasStateBit
Definition
model.h:40
Models::ModelGetNodes
const Util::Array< Models::ModelNode * > & ModelGetNodes(const ModelId id)
Get model nodes.
Definition
model.cc:41
Models::ModelAllocator
Ids::IdAllocator< Math::bbox, Util::Array< Models::ModelNode * > > ModelAllocator
Definition
model.h:90
Models::LoadBits
LoadBits
Definition
model.h:45
Models::LoadBits::MaterialBit
@ MaterialBit
Definition
model.h:49
Models::LoadBits::MeshBit
@ MeshBit
Definition
model.h:47
Models::LoadBits::AnimBit
@ AnimBit
Definition
model.h:48
Models::NodeType
NodeType
Definition
model.h:25
Models::TransformNodeType
@ TransformNodeType
Definition
model.h:27
Models::CharacterNodeType
@ CharacterNodeType
Definition
model.h:26
Models::NumNodeTypes
@ NumNodeTypes
Definition
model.h:33
Models::CharacterSkinNodeType
@ CharacterSkinNodeType
Definition
model.h:31
Models::PrimitiveNodeType
@ PrimitiveNodeType
Definition
model.h:29
Models::ShaderStateNodeType
@ ShaderStateNodeType
Definition
model.h:28
Models::ParticleSystemNodeType
@ ParticleSystemNodeType
Definition
model.h:30
rangeallocator.h
resourceid.h
RESOURCE_ID_TYPE
#define RESOURCE_ID_TYPE(type)
Definition
resourceid.h:41
__ImplementEnumBitOperators
#define __ImplementEnumBitOperators(type)
rttimacros.h
This defines the macros for Nebula's RTTI mechanism (__DeclareClass, __ImplementClass,...
Memory::RangeAllocation
Describes a range allocated by the Memory::RangeAllocator.
Definition
rangeallocator.h:25
Models::ModelCreateInfo
Definition
model.h:66
Models::ModelCreateInfo::nodes
Util::Array< Models::ModelNode * > nodes
Definition
model.h:68
Models::ModelCreateInfo::boundingBox
Math::bbox boundingBox
Definition
model.h:67
Models::ModelId
Definition
model.h:22
Models::ModelStreamingData
Definition
model.h:54
Models::ModelStreamingData::requiredBits
LoadBits requiredBits
Definition
model.h:55
Models::ModelStreamingData::loadedBits
LoadBits loadedBits
Definition
model.h:56
Models::NodeInstanceRange
Definition
model.h:60
Models::NodeInstanceRange::end
SizeT end
Definition
model.h:62
Models::NodeInstanceRange::allocation
Memory::RangeAllocation allocation
Definition
model.h:61
Models::NodeInstanceRange::begin
SizeT begin
Definition
model.h:62
N_BIT
#define N_BIT(x)
Definition
types.h:52
SizeT
int SizeT
Definition
types.h:42
code
render
models
model.h
Generated on
for Nebula. Dark theme by
Tilen Majerle
. All rights reserved.