aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h b/src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h
new file mode 100644
index 0000000..b676938
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CCubeSceneNode.h
@@ -0,0 +1,93 @@
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 __C_CUBE_SCENE_NODE_H_INCLUDED__
6#define __C_CUBE_SCENE_NODE_H_INCLUDED__
7
8#include "IMeshSceneNode.h"
9#include "SMesh.h"
10
11namespace irr
12{
13namespace scene
14{
15 class CCubeSceneNode : public IMeshSceneNode
16 {
17 public:
18
19 //! constructor
20 CCubeSceneNode(f32 size, ISceneNode* parent, ISceneManager* mgr, s32 id,
21 const core::vector3df& position = core::vector3df(0,0,0),
22 const core::vector3df& rotation = core::vector3df(0,0,0),
23 const core::vector3df& scale = core::vector3df(1.0f, 1.0f, 1.0f));
24
25 virtual ~CCubeSceneNode();
26
27 virtual void OnRegisterSceneNode();
28
29 //! renders the node.
30 virtual void render();
31
32 //! returns the axis aligned bounding box of this node
33 virtual const core::aabbox3d<f32>& getBoundingBox() const;
34
35 //! returns the material based on the zero based index i. To get the amount
36 //! of materials used by this scene node, use getMaterialCount().
37 //! This function is needed for inserting the node into the scene hirachy on a
38 //! optimal position for minimizing renderstate changes, but can also be used
39 //! to directly modify the material of a scene node.
40 virtual video::SMaterial& getMaterial(u32 i);
41
42 //! returns amount of materials used by this scene node.
43 virtual u32 getMaterialCount() const;
44
45 //! Returns type of the scene node
46 virtual ESCENE_NODE_TYPE getType() const { return ESNT_CUBE; }
47
48 //! Creates shadow volume scene node as child of this node
49 //! and returns a pointer to it.
50 virtual IShadowVolumeSceneNode* addShadowVolumeSceneNode(const IMesh* shadowMesh,
51 s32 id, bool zfailmethod=true, f32 infinity=10000.0f);
52
53 //! Writes attributes of the scene node.
54 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options=0) const;
55
56 //! Reads attributes of the scene node.
57 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options=0);
58
59 //! Creates a clone of this scene node and its children.
60 virtual ISceneNode* clone(ISceneNode* newParent=0, ISceneManager* newManager=0);
61
62 //! Sets a new mesh to display
63 virtual void setMesh(IMesh* mesh) {}
64
65 //! Returns the current mesh
66 virtual IMesh* getMesh(void) { return Mesh; }
67
68 //! Sets if the scene node should not copy the materials of the mesh but use them in a read only style.
69 /* In this way it is possible to change the materials a mesh causing all mesh scene nodes
70 referencing this mesh to change too. */
71 virtual void setReadOnlyMaterials(bool readonly) {}
72
73 //! Returns if the scene node should not copy the materials of the mesh but use them in a read only style
74 virtual bool isReadOnlyMaterials() const { return false; }
75
76 //! Removes a child from this scene node.
77 //! Implemented here, to be able to remove the shadow properly, if there is one,
78 //! or to remove attached childs.
79 virtual bool removeChild(ISceneNode* child);
80
81 private:
82 void setSize();
83
84 IMesh* Mesh;
85 IShadowVolumeSceneNode* Shadow;
86 f32 Size;
87 };
88
89} // end namespace scene
90} // end namespace irr
91
92#endif
93