Irrlicht 3D Engine
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
SMesh.h
Go to the documentation of this file.
1
// Copyright (C) 2002-2012 Nikolaus Gebhardt
2
// This file is part of the "Irrlicht Engine".
3
// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5
#ifndef __S_MESH_H_INCLUDED__
6
#define __S_MESH_H_INCLUDED__
7
8
#include "
IMesh.h
"
9
#include "
IMeshBuffer.h
"
10
#include "
aabbox3d.h
"
11
#include "
irrArray.h
"
12
13
namespace
irr
14
{
15
namespace
scene
16
{
18
struct
SMesh
:
public
IMesh
19
{
21
SMesh
()
22
{
23
#ifdef _DEBUG
24
setDebugName
(
"SMesh"
);
25
#endif
26
}
27
29
virtual
~SMesh
()
30
{
31
// drop buffers
32
for
(
u32
i=0; i<
MeshBuffers
.
size
(); ++i)
33
MeshBuffers
[i]->
drop
();
34
}
35
37
virtual
void
clear
()
38
{
39
for
(
u32
i=0; i<
MeshBuffers
.
size
(); ++i)
40
MeshBuffers
[i]->
drop
();
41
MeshBuffers
.
clear
();
42
BoundingBox
.
reset
( 0.f, 0.f, 0.f );
43
}
44
45
47
virtual
u32
getMeshBufferCount
()
const
48
{
49
return
MeshBuffers
.
size
();
50
}
51
53
virtual
IMeshBuffer
*
getMeshBuffer
(
u32
nr)
const
54
{
55
return
MeshBuffers
[nr];
56
}
57
59
60
virtual
IMeshBuffer
*
getMeshBuffer
(
const
video::SMaterial
& material)
const
61
{
62
for
(
s32
i = (
s32
)
MeshBuffers
.
size
()-1; i >= 0; --i)
63
{
64
if
( material ==
MeshBuffers
[i]->getMaterial())
65
return
MeshBuffers
[i];
66
}
67
68
return
0;
69
}
70
72
virtual
const
core::aabbox3d<f32>
&
getBoundingBox
()
const
73
{
74
return
BoundingBox
;
75
}
76
78
virtual
void
setBoundingBox
(
const
core::aabbox3df
& box)
79
{
80
BoundingBox
= box;
81
}
82
84
void
recalculateBoundingBox
()
85
{
86
if
(
MeshBuffers
.
size
())
87
{
88
BoundingBox
=
MeshBuffers
[0]->getBoundingBox();
89
for
(
u32
i=1; i<
MeshBuffers
.
size
(); ++i)
90
BoundingBox
.
addInternalBox
(
MeshBuffers
[i]->getBoundingBox());
91
}
92
else
93
BoundingBox
.
reset
(0.0f, 0.0f, 0.0f);
94
}
95
97
98
void
addMeshBuffer
(
IMeshBuffer
* buf)
99
{
100
if
(buf)
101
{
102
buf->
grab
();
103
MeshBuffers
.
push_back
(buf);
104
}
105
}
106
108
virtual
void
setMaterialFlag
(
video::E_MATERIAL_FLAG
flag,
bool
newvalue)
109
{
110
for
(
u32
i=0; i<
MeshBuffers
.
size
(); ++i)
111
MeshBuffers
[i]->getMaterial().setFlag(flag, newvalue);
112
}
113
115
virtual
void
setHardwareMappingHint
(
E_HARDWARE_MAPPING
newMappingHint,
E_BUFFER_TYPE
buffer=
EBT_VERTEX_AND_INDEX
)
116
{
117
for
(
u32
i=0; i<
MeshBuffers
.
size
(); ++i)
118
MeshBuffers
[i]->
setHardwareMappingHint
(newMappingHint, buffer);
119
}
120
122
virtual
void
setDirty
(
E_BUFFER_TYPE
buffer=
EBT_VERTEX_AND_INDEX
)
123
{
124
for
(
u32
i=0; i<
MeshBuffers
.
size
(); ++i)
125
MeshBuffers
[i]->
setDirty
(buffer);
126
}
127
129
core::array<IMeshBuffer*>
MeshBuffers
;
130
132
core::aabbox3d<f32>
BoundingBox
;
133
};
134
135
136
}
// end namespace scene
137
}
// end namespace irr
138
139
#endif
140
Irrlicht Engine
Documentation © 2003-2012 by Nikolaus Gebhardt. Generated on Mon Jun 6 2022 20:53:06 for Irrlicht 3D Engine by
Doxygen
1.8.1.2