Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials
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  {
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();
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 
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 
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 
116  {
117  for (u32 i=0; i<MeshBuffers.size(); ++i)
118  MeshBuffers[i]->setHardwareMappingHint(newMappingHint, buffer);
119  }
120 
123  {
124  for (u32 i=0; i<MeshBuffers.size(); ++i)
125  MeshBuffers[i]->setDirty(buffer);
126  }
127 
130 
133  };
134 
135 
136 } // end namespace scene
137 } // end namespace irr
138 
139 #endif
140 

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Mon May 6 2013 07:46:00 by Doxygen (1.8.1.2)