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