ruby-procedural 0.0.1-x86-linux

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. data/Gemfile +4 -0
  2. data/README.md +29 -0
  3. data/Rakefile +65 -0
  4. data/bindings/procedural/interface/ProceduralBoxGenerator.i +12 -0
  5. data/bindings/procedural/interface/ProceduralCapsuleGenerator.i +12 -0
  6. data/bindings/procedural/interface/ProceduralConeGenerator.i +12 -0
  7. data/bindings/procedural/interface/ProceduralCylinderGenerator.i +12 -0
  8. data/bindings/procedural/interface/ProceduralExtruder.i +8 -0
  9. data/bindings/procedural/interface/ProceduralGeometryHelpers.i +15 -0
  10. data/bindings/procedural/interface/ProceduralHeader.i +8 -0
  11. data/bindings/procedural/interface/ProceduralIcoSphereGenerator.i +12 -0
  12. data/bindings/procedural/interface/ProceduralLathe.i +8 -0
  13. data/bindings/procedural/interface/ProceduralMeshGenerator.i +9 -0
  14. data/bindings/procedural/interface/ProceduralMultiShape.i +8 -0
  15. data/bindings/procedural/interface/ProceduralPath.i +8 -0
  16. data/bindings/procedural/interface/ProceduralPathGenerators.i +10 -0
  17. data/bindings/procedural/interface/ProceduralPlaneGenerator.i +12 -0
  18. data/bindings/procedural/interface/ProceduralPlatform.i +8 -0
  19. data/bindings/procedural/interface/ProceduralRoot.i +23 -0
  20. data/bindings/procedural/interface/ProceduralRoundedBoxGenerator.i +12 -0
  21. data/bindings/procedural/interface/ProceduralShape.i +8 -0
  22. data/bindings/procedural/interface/ProceduralShapeGenerators.i +10 -0
  23. data/bindings/procedural/interface/ProceduralSphereGenerator.i +11 -0
  24. data/bindings/procedural/interface/ProceduralSplines.i +8 -0
  25. data/bindings/procedural/interface/ProceduralStableHeaders.i +8 -0
  26. data/bindings/procedural/interface/ProceduralTorusGenerator.i +12 -0
  27. data/bindings/procedural/interface/ProceduralTorusKnotGenerator.i +12 -0
  28. data/bindings/procedural/interface/ProceduralTrack.i +8 -0
  29. data/bindings/procedural/interface/ProceduralTriangleBuffer.i +13 -0
  30. data/bindings/procedural/interface/ProceduralTriangulator.i +8 -0
  31. data/bindings/procedural/interface/ProceduralTubeGenerator.i +12 -0
  32. data/bindings/procedural/interface/ProceduralUtils.i +8 -0
  33. data/bindings/procedural/interface/Rakefile +22 -0
  34. data/bindings/procedural/interface/procedural.i +41 -0
  35. data/bindings/procedural/interface/procedural_wrap.cpp +36079 -0
  36. data/bindings/procedural/interface/procedural_wrap.h +19 -0
  37. data/bindings/procedural/interface/procedural_wrap.o +0 -0
  38. data/deps/include/OgreProcedural/Procedural.h +54 -0
  39. data/deps/include/OgreProcedural/ProceduralBoxGenerator.h +110 -0
  40. data/deps/include/OgreProcedural/ProceduralCapsuleGenerator.h +103 -0
  41. data/deps/include/OgreProcedural/ProceduralConeGenerator.h +90 -0
  42. data/deps/include/OgreProcedural/ProceduralCylinderGenerator.h +99 -0
  43. data/deps/include/OgreProcedural/ProceduralExtruder.h +131 -0
  44. data/deps/include/OgreProcedural/ProceduralGeometryHelpers.h +171 -0
  45. data/deps/include/OgreProcedural/ProceduralIcoSphereGenerator.h +76 -0
  46. data/deps/include/OgreProcedural/ProceduralLathe.h +129 -0
  47. data/deps/include/OgreProcedural/ProceduralMeshGenerator.h +286 -0
  48. data/deps/include/OgreProcedural/ProceduralMultiShape.h +126 -0
  49. data/deps/include/OgreProcedural/ProceduralPath.h +322 -0
  50. data/deps/include/OgreProcedural/ProceduralPathGenerators.h +281 -0
  51. data/deps/include/OgreProcedural/ProceduralPlaneGenerator.h +93 -0
  52. data/deps/include/OgreProcedural/ProceduralPlatform.h +54 -0
  53. data/deps/include/OgreProcedural/ProceduralRoot.h +65 -0
  54. data/deps/include/OgreProcedural/ProceduralRoundedBoxGenerator.h +118 -0
  55. data/deps/include/OgreProcedural/ProceduralShape.h +532 -0
  56. data/deps/include/OgreProcedural/ProceduralShapeGenerators.h +362 -0
  57. data/deps/include/OgreProcedural/ProceduralSphereGenerator.h +80 -0
  58. data/deps/include/OgreProcedural/ProceduralSplines.h +168 -0
  59. data/deps/include/OgreProcedural/ProceduralStableHeaders.h +28 -0
  60. data/deps/include/OgreProcedural/ProceduralTorusGenerator.h +88 -0
  61. data/deps/include/OgreProcedural/ProceduralTorusKnotGenerator.h +106 -0
  62. data/deps/include/OgreProcedural/ProceduralTrack.h +122 -0
  63. data/deps/include/OgreProcedural/ProceduralTriangleBuffer.h +328 -0
  64. data/deps/include/OgreProcedural/ProceduralTriangulator.h +173 -0
  65. data/deps/include/OgreProcedural/ProceduralTubeGenerator.h +96 -0
  66. data/deps/include/OgreProcedural/ProceduralUtils.h +185 -0
  67. data/deps/lib/libOgreProcedural.so +0 -0
  68. data/lib/procedural.so +0 -0
  69. data/lib/ruby-procedural/version.rb +5 -0
  70. data/lib/ruby-procedural.rb +27 -0
  71. data/ruby-procedural.gemspec +33 -0
  72. metadata +138 -0
@@ -0,0 +1,19 @@
1
+ /* ----------------------------------------------------------------------------
2
+ * This file was automatically generated by SWIG (http://www.swig.org).
3
+ * Version 2.0.4
4
+ *
5
+ * This file is not intended to be easily readable and contains a number of
6
+ * coding conventions designed to improve portability and efficiency. Do not make
7
+ * changes to this file unless you know what you are doing--modify the SWIG
8
+ * interface file instead.
9
+ * ----------------------------------------------------------------------------- */
10
+
11
+ #ifndef SWIG_Procedural_WRAP_H_
12
+ #define SWIG_Procedural_WRAP_H_
13
+
14
+ namespace Swig {
15
+ class Director;
16
+ }
17
+
18
+
19
+ #endif
@@ -0,0 +1,54 @@
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ This source file is part of ogre-procedural
4
+
5
+ For the latest info, see http://code.google.com/p/ogre-procedural/
6
+
7
+ Copyright (c) 2010 Michael Broutin
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+ -----------------------------------------------------------------------------
27
+ */
28
+ #ifndef PROCEDURAL_H_INCLUDED
29
+ #define PROCEDURAL_H_INCLUDED
30
+
31
+ #include "ProceduralBoxGenerator.h"
32
+ #include "ProceduralCapsuleGenerator.h"
33
+ #include "ProceduralConeGenerator.h"
34
+ #include "ProceduralCylinderGenerator.h"
35
+ #include "ProceduralIcoSphereGenerator.h"
36
+ #include "ProceduralRoundedBoxGenerator.h"
37
+ #include "ProceduralSphereGenerator.h"
38
+ #include "ProceduralTorusGenerator.h"
39
+ #include "ProceduralTorusKnotGenerator.h"
40
+ #include "ProceduralTubeGenerator.h"
41
+ #include "ProceduralPlaneGenerator.h"
42
+ #include "ProceduralRoot.h"
43
+ #include "ProceduralExtruder.h"
44
+ #include "ProceduralLathe.h"
45
+ #include "ProceduralShape.h"
46
+ #include "ProceduralShapeGenerators.h"
47
+ #include "ProceduralMultiShape.h"
48
+ #include "ProceduralPath.h"
49
+ #include "ProceduralPathGenerators.h"
50
+ #include "ProceduralTriangulator.h"
51
+ #include "ProceduralTriangleBuffer.h"
52
+ #include "ProceduralTrack.h"
53
+
54
+ #endif
@@ -0,0 +1,110 @@
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ This source file is part of ogre-procedural
4
+
5
+ For the latest info, see http://code.google.com/p/ogre-procedural/
6
+
7
+ Copyright (c) 2010 Michael Broutin
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+ -----------------------------------------------------------------------------
27
+ */
28
+ #ifndef PROCEDURAL_BOX_GENERATOR_INCLUDED
29
+ #define PROCEDURAL_BOX_GENERATOR_INCLUDED
30
+
31
+ #include "ProceduralMeshGenerator.h"
32
+ #include "ProceduralPlatform.h"
33
+
34
+ namespace Procedural
35
+ {
36
+ /**
37
+ * Generates a box mesh centered on the origin.
38
+ * Default size is 1.0 with 1 quad per face.
39
+ */
40
+ class _ProceduralExport BoxGenerator : public MeshGenerator<BoxGenerator>
41
+ {
42
+ Ogre::Real mSizeX,mSizeY,mSizeZ;
43
+ int mNumSegX,mNumSegY,mNumSegZ;
44
+ public:
45
+ /// Contructor with arguments
46
+ BoxGenerator(Ogre::Real sizeX=1.f, Ogre::Real sizeY=1.f, Ogre::Real sizeZ=1.f, int numSegX=1, int numSegY=1, int numSegZ=1) :
47
+ mSizeX(sizeX), mSizeY(sizeY), mSizeZ(sizeZ), mNumSegX(numSegX), mNumSegY(numSegY), mNumSegZ(numSegZ) {}
48
+
49
+ /** Sets size along X axis (default=1) */
50
+ BoxGenerator& setSizeX(Ogre::Real sizeX)
51
+ {
52
+ mSizeX = sizeX;
53
+ return *this;
54
+ }
55
+
56
+ /** Sets size along Y axis (default=1) */
57
+ BoxGenerator& setSizeY(Ogre::Real sizeY)
58
+ {
59
+ mSizeY = sizeY;
60
+ return *this;
61
+ }
62
+
63
+ /** Sets size along Z axis (default=1) */
64
+ BoxGenerator& setSizeZ(Ogre::Real sizeZ)
65
+ {
66
+ mSizeZ = sizeZ;
67
+ return *this;
68
+ }
69
+
70
+ /** Sets the size (default=1,1,1) */
71
+ BoxGenerator& setSize(Ogre::Vector3 size)
72
+ {
73
+ mSizeX = size.x;
74
+ mSizeY = size.y;
75
+ mSizeZ = size.z;
76
+ return *this;
77
+ }
78
+
79
+ /** Sets the number of segments along X axis (default=1) */
80
+ BoxGenerator& setNumSegX(int numSegX)
81
+ {
82
+ mNumSegX = numSegX;
83
+ return *this;
84
+ }
85
+
86
+ /** Sets the number of segments along Y axis (default=1) */
87
+ BoxGenerator& setNumSegY(int numSegY)
88
+ {
89
+ mNumSegY = numSegY;
90
+ return *this;
91
+ }
92
+
93
+ /** Sets the number of segments along Z axis (default=1) */
94
+ BoxGenerator& setNumSegZ(int numSegZ)
95
+ {
96
+ mNumSegZ = numSegZ;
97
+ return *this;
98
+ }
99
+
100
+ /**
101
+ * Builds the mesh into the given TriangleBuffer
102
+ * @param buffer The TriangleBuffer on where to append the mesh.
103
+ */
104
+ void addToTriangleBuffer(TriangleBuffer& buffer) const;
105
+
106
+ };
107
+
108
+
109
+ }
110
+ #endif
@@ -0,0 +1,103 @@
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ This source file is part of ogre-procedural
4
+
5
+ For the latest info, see http://code.google.com/p/ogre-procedural/
6
+
7
+ Copyright (c) 2010 Michael Broutin
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+ -----------------------------------------------------------------------------
27
+ */
28
+ #ifndef PROCEDURAL_CAPSULE_GENERATOR_INCLUDED
29
+ #define PROCEDURAL_CAPSULE_GENERATOR_INCLUDED
30
+
31
+ #include "ProceduralMeshGenerator.h"
32
+ #include "ProceduralPlatform.h"
33
+
34
+ namespace Procedural
35
+ {
36
+ /// Generates a capsule mesh, i.e. a sphere-terminated cylinder
37
+ class _ProceduralExport CapsuleGenerator : public MeshGenerator<CapsuleGenerator>
38
+ {
39
+ ///Radius of the spheric part
40
+ Ogre::Real mRadius;
41
+
42
+ ///Total height
43
+ Ogre::Real mHeight;
44
+
45
+ unsigned int mNumRings;
46
+ unsigned int mNumSegments;
47
+ unsigned int mNumSegHeight;
48
+
49
+ public:
50
+ /// Default constructor
51
+ CapsuleGenerator() : mRadius(1.0), mHeight(1.0),
52
+ mNumRings(8), mNumSegments(16), mNumSegHeight(1)
53
+ {}
54
+
55
+ /// Constructor with arguments
56
+ CapsuleGenerator(Ogre::Real radius, Ogre::Real height, unsigned int numRings, unsigned int numSegments, unsigned int numSegHeight) :
57
+ mRadius(radius), mHeight(height), mNumRings(numRings), mNumSegments(numSegments), mNumSegHeight(numSegHeight) {}
58
+
59
+ /**
60
+ * Builds the mesh into the given TriangleBuffer
61
+ * @param buffer The TriangleBuffer on where to append the mesh.
62
+ */
63
+ void addToTriangleBuffer(TriangleBuffer& buffer) const;
64
+
65
+ /** Sets the radius of the cylinder part (default=1)*/
66
+ inline CapsuleGenerator & setRadius(Ogre::Real radius)
67
+ {
68
+ mRadius = radius;
69
+ return *this;
70
+ }
71
+
72
+ /** Sets the number of segments of the sphere part (default=8)*/
73
+ inline CapsuleGenerator & setNumRings(unsigned int numRings)
74
+ {
75
+ mNumRings = numRings;
76
+ return *this;
77
+ }
78
+
79
+ /** Sets the number of segments when rotating around the cylinder (default=16)*/
80
+ inline CapsuleGenerator & setNumSegments(unsigned int numSegments)
81
+ {
82
+ mNumSegments = numSegments;
83
+ return *this;
84
+ }
85
+
86
+ /** Sets the number of segments along the axis of the cylinder (default=1)*/
87
+ inline CapsuleGenerator & setNumSegHeight(unsigned int numSegHeight)
88
+ {
89
+ mNumSegHeight = numSegHeight;
90
+ return *this;
91
+ }
92
+
93
+ /** Sets the height of the cylinder part of the capsule (default=1)*/
94
+ inline CapsuleGenerator & setHeight(Ogre::Real height)
95
+ {
96
+ mHeight = height;
97
+ return *this;
98
+ }
99
+
100
+
101
+ };
102
+ }
103
+ #endif
@@ -0,0 +1,90 @@
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ This source file is part of ogre-procedural
4
+
5
+ For the latest info, see http://code.google.com/p/ogre-procedural/
6
+
7
+ Copyright (c) 2010 Michael Broutin
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+ -----------------------------------------------------------------------------
27
+ */
28
+ #ifndef PROCEDURAL_CONE_GENERATOR_INCLUDED
29
+ #define PROCEDURAL_CONE_GENERATOR_INCLUDED
30
+
31
+ #include "ProceduralMeshGenerator.h"
32
+ #include "ProceduralPlatform.h"
33
+
34
+ namespace Procedural
35
+ {
36
+ /// Generates a cone mesh along Y-axis
37
+ class _ProceduralExport ConeGenerator : public MeshGenerator<ConeGenerator>
38
+ {
39
+ int mNumSegBase;
40
+ int mNumSegHeight;
41
+ Ogre::Real mRadius;
42
+ Ogre::Real mHeight;
43
+ public:
44
+ /// Contructor with arguments
45
+ ConeGenerator(Ogre::Real radius = 1.f, Ogre::Real height = 1.f, int numSegBase = 16, int numSegHeight = 1) :
46
+ mNumSegBase(numSegBase),
47
+ mNumSegHeight(numSegHeight),
48
+ mRadius(radius),
49
+ mHeight(height)
50
+ {}
51
+
52
+ /**
53
+ * Builds the mesh into the given TriangleBuffer
54
+ * @param buffer The TriangleBuffer on where to append the mesh.
55
+ */
56
+ void addToTriangleBuffer(TriangleBuffer& buffer) const;
57
+
58
+ /** Sets the number of segments on the side of the base (default=16)*/
59
+ inline ConeGenerator & setNumSegBase(int numSegBase)
60
+ {
61
+ mNumSegBase = numSegBase;
62
+ return *this;
63
+ }
64
+
65
+ /** Sets the number of segments on the height (default=1) */
66
+ inline ConeGenerator & setNumSegHeight(int numSegHeight)
67
+ {
68
+ mNumSegHeight = numSegHeight;
69
+ return *this;
70
+ }
71
+
72
+ /** Sets the base radius (default=1)*/
73
+ inline ConeGenerator & setRadius(Ogre::Real radius)
74
+ {
75
+ mRadius = radius;
76
+ return *this;
77
+ }
78
+
79
+ /** Sets the height of the cone (default=1)*/
80
+ inline ConeGenerator & setHeight(Ogre::Real height)
81
+ {
82
+ mHeight = height;
83
+ return *this;
84
+ }
85
+
86
+
87
+ };
88
+ }
89
+
90
+ #endif
@@ -0,0 +1,99 @@
1
+ /*
2
+ -----------------------------------------------------------------------------
3
+ This source file is part of ogre-procedural
4
+
5
+ For the latest info, see http://code.google.com/p/ogre-procedural/
6
+
7
+ Copyright (c) 2010 Michael Broutin
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in
17
+ all copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25
+ THE SOFTWARE.
26
+ -----------------------------------------------------------------------------
27
+ */
28
+ #ifndef PROCEDURAL_CYLINDER_GENERATOR_INCLUDED
29
+ #define PROCEDURAL_CYLINDER_GENERATOR_INCLUDED
30
+
31
+ #include "ProceduralMeshGenerator.h"
32
+ #include "ProceduralPlatform.h"
33
+
34
+ namespace Procedural
35
+ {
36
+ /// Generates a cylinder mesh along Y-axis
37
+ class _ProceduralExport CylinderGenerator : public MeshGenerator<CylinderGenerator>
38
+ {
39
+ int mNumSegBase;
40
+ int mNumSegHeight;
41
+ bool mCapped;
42
+ Ogre::Real mRadius;
43
+ Ogre::Real mHeight;
44
+
45
+ public:
46
+ /// Contructor with arguments
47
+ CylinderGenerator(Ogre::Real radius = 1.f, Ogre::Real height = 1.f, int numSegBase = 16, int numSegHeight = 1, bool capped = true) :
48
+ mNumSegBase(numSegBase),
49
+ mNumSegHeight(numSegHeight),
50
+ mCapped(capped),
51
+ mRadius(radius),
52
+ mHeight(height)
53
+ {}
54
+
55
+ /**
56
+ * Builds the mesh into the given TriangleBuffer
57
+ * @param buffer The TriangleBuffer on where to append the mesh.
58
+ */
59
+ void addToTriangleBuffer(TriangleBuffer& buffer) const;
60
+
61
+ /** Sets the number of segments when rotating around the cylinder's axis (default=16) */
62
+ inline CylinderGenerator & setNumSegBase(int numSegBase)
63
+ {
64
+ mNumSegBase = numSegBase;
65
+ return *this;
66
+ }
67
+
68
+ /** Sets the number of segments along the height of the cylinder (default=1) */
69
+ inline CylinderGenerator & setNumSegHeight(int numSegHeight)
70
+ {
71
+ mNumSegHeight = numSegHeight;
72
+ return *this;
73
+ }
74
+
75
+ /** Sets whether the cylinder has endings or not (default=true) */
76
+ inline CylinderGenerator & setCapped(bool capped)
77
+ {
78
+ mCapped = capped;
79
+ return *this;
80
+ }
81
+
82
+ /** Sets the radius of the cylinder (default=1) */
83
+ inline CylinderGenerator & setRadius(Ogre::Real radius)
84
+ {
85
+ mRadius = radius;
86
+ return *this;
87
+ }
88
+
89
+ /** Sets the height of the cylinder (default=1) */
90
+ inline CylinderGenerator & setHeight(Ogre::Real height)
91
+ {
92
+ mHeight = height;
93
+ return *this;
94
+ }
95
+
96
+ };
97
+ }
98
+
99
+ #endif