Irrlicht 3D Engine
IGeometryCreator.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 __I_GEOMETRY_CREATOR_H_INCLUDED__
6 #define __I_GEOMETRY_CREATOR_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "IMesh.h"
10 #include "IImage.h"
11 
12 namespace irr
13 {
14 namespace video
15 {
16  class IVideoDriver;
17  class SMaterial;
18 }
19 
20 namespace scene
21 {
22 
24 
26 {
27 public:
28 
30 
34  virtual IMesh* createCubeMesh(const core::vector3df& size=core::vector3df(5.f,5.f,5.f)) const =0;
35 
37 
46  virtual IMesh* createHillPlaneMesh(
47  const core::dimension2d<f32>& tileSize,
48  const core::dimension2d<u32>& tileCount,
49  video::SMaterial* material, f32 hillHeight,
50  const core::dimension2d<f32>& countHills,
51  const core::dimension2d<f32>& textureRepeatCount) const =0;
52 
54 
62  const core::dimension2d<f32>& tileSize,
63  const core::dimension2d<u32>& tileCount=core::dimension2du(1,1),
64  video::SMaterial* material=0,
65  const core::dimension2df& textureRepeatCount=core::dimension2df(1.f,1.f)) const
66  {
67  return createHillPlaneMesh(tileSize, tileCount, material, 0.f, core::dimension2df(), textureRepeatCount);
68  }
69 
71 
86  virtual IMesh* createTerrainMesh(video::IImage* texture,
87  video::IImage* heightmap,
88  const core::dimension2d<f32>& stretchSize,
89  f32 maxHeight, video::IVideoDriver* driver,
90  const core::dimension2d<u32>& defaultVertexBlockSize,
91  bool debugBorders=false) const =0;
92 
94 
107  virtual IMesh* createArrowMesh(const u32 tesselationCylinder = 4,
108  const u32 tesselationCone = 8, const f32 height = 1.f,
109  const f32 cylinderHeight = 0.6f, const f32 widthCylinder = 0.05f,
110  const f32 widthCone = 0.3f, const video::SColor colorCylinder = 0xFFFFFFFF,
111  const video::SColor colorCone = 0xFFFFFFFF) const =0;
112 
113 
115 
121  virtual IMesh* createSphereMesh(f32 radius = 5.f,
122  u32 polyCountX = 16, u32 polyCountY = 16) const =0;
123 
125 
134  virtual IMesh* createCylinderMesh(f32 radius, f32 length,
135  u32 tesselation,
136  const video::SColor& color=video::SColor(0xffffffff),
137  bool closeTop=true, f32 oblique=0.f) const =0;
138 
140 
149  virtual IMesh* createConeMesh(f32 radius, f32 length, u32 tesselation,
150  const video::SColor& colorTop=video::SColor(0xffffffff),
151  const video::SColor& colorBottom=video::SColor(0xffffffff),
152  f32 oblique=0.f) const =0;
153 
155 
164  virtual IMesh* createVolumeLightMesh(
165  const u32 subdivideU=32, const u32 subdivideV=32,
166  const video::SColor footColor = 0xffffffff,
167  const video::SColor tailColor = 0xffffffff,
168  const f32 lpDistance = 8.f,
169  const core::vector3df& lightDim = core::vector3df(1.f,1.2f,1.f)) const =0;
170 };
171 
172 
173 } // end namespace scene
174 } // end namespace irr
175 
176 #endif // __I_GEOMETRY_CREATOR_H_INCLUDED__
177 
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
IMesh * createPlaneMesh(const core::dimension2d< f32 > &tileSize, const core::dimension2d< u32 > &tileCount=core::dimension2du(1, 1), video::SMaterial *material=0, const core::dimension2df &textureRepeatCount=core::dimension2df(1.f, 1.f)) const
Create a simple rectangular textured plane mesh.
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
Specifies a 2 dimensional size.
Definition: dimension2d.h:20
Interface for software image data.
Definition: IImage.h:22
Class which holds the geometry of an object.
Definition: IMesh.h:23
Helper class for creating geometry on the fly.
unsigned int u32
32 bit unsigned variable.
Definition: irrTypes.h:58
Interface to driver which is able to perform 2d and 3d graphics functions.
Definition: IVideoDriver.h:256
Class representing a 32 bit ARGB color.
Definition: SColor.h:201
Base class of most objects of the Irrlicht Engine.
Struct for holding parameters for a material renderer.
Definition: SMaterial.h:226