Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Terrain Class Reference

#include <terrain.h>

Inheritance diagram for Terrain:
QuadTree

Public Member Functions

 Terrain (const char *filename, const Vector &Scales, const float mass, const float radius, updateparity *updatetransform=identityparity)
 
void SetTotalSize (float X, float Z)
 
 ~Terrain ()
 
void Collide (Unit *un, const Matrix &t)
 
void Collide (Unit *un)
 
void Collide ()
 
void SetTransformation (const Matrix &mat)
 
void Render ()
 
void DisableDraw ()
 
void EnableDraw ()
 
void DisableUpdate ()
 
void EnableUpdate ()
 
Vector GetUpVector (const Vector &pos)
 
- Public Member Functions inherited from QuadTree
 QuadTree (const char *filename, const Vector &scales, const float Radius)
 
 ~QuadTree ()
 
void Render ()
 
void SetNeighbors (QuadTree *east, QuadTree *north, QuadTree *west, QuadTree *south)
 
void Update (unsigned short numstages, unsigned short whichstage, updateparity *updateorder=identityparity)
 
void SetTransformation (const Matrix &transformation)
 
float GetHeight (Vector Location, Vector &normal, const Matrix &transform, float TotalTerrainSizeX=0, float TotalTerrainSizeZ=0) const
 
void beginElement (const std::string &name, const XMLSupport::AttributeList &attributes)
 
void endElement (const std::string &name)
 
float getminX () const
 
float getminZ () const
 
float getmaxX () const
 
float getmaxZ () const
 
float getSizeX () const
 
float getSizeZ () const
 
void StaticCullData (const float detail)
 
bool GetGroundPos (QVector &Location, Vector &norm, float TTSX=0, float TTSZ=0) const
 
bool GetGroundPos (QVector &Location, Vector &norm, const Matrix &trans, float TotalTerrainSizeX=0, float TotalTerrainSizeZ=0) const
 
Vector GetNormal (const Vector &position, const Vector &requestednorm) const
 

Static Public Member Functions

static void CollideAll ()
 
static void DeleteAll ()
 
static void RenderAll ()
 
static void UpdateAll (int resolution)
 
- Static Public Member Functions inherited from QuadTree
static void beginElement (void *userData, const XML_Char *name, const XML_Char **atts)
 
static void endElement (void *userData, const XML_Char *name)
 

Additional Inherited Members

- Protected Attributes inherited from QuadTree
Matrix transformation
 

Detailed Description

Definition at line 9 of file terrain.h.

Constructor & Destructor Documentation

Terrain::Terrain ( const char *  filename,
const Vector Scales,
const float  mass,
const float  radius,
updateparity updatetransform = identityparity 
)

Definition at line 15 of file terrain.cpp.

References allterrains, TERRAINRENDER, and TERRAINUPDATE.

19  : QuadTree( filename, scales, radius )
20  , TotalSizeX( 0 )
21  , TotalSizeZ( 0 )
22  , mass( mass )
23  , whichstage( 0 )
24 {
25  this->updatetransform = updatetransform;
26  allterrains.push_back( this );
28 }
Terrain::~Terrain ( )

Definition at line 30 of file terrain.cpp.

References allterrains, and i.

31 {
32  for (unsigned int i = 0; i < allterrains.size(); i++)
33  if (allterrains[i] == this) {
34  allterrains.erase( allterrains.begin()+i );
35  break;
36  }
37 }

Member Function Documentation

void Terrain::Collide ( Unit un,
const Matrix t 
)

Definition at line 52 of file terrain.cpp.

References BUILDINGPTR, QuadTree::GetHeight(), Unit::isUnit(), Unit::Position(), Unit::rSize(), and Vector.

Referenced by ContinuousTerrain::Collide().

53 {
54  Vector norm;
55  if (un->isUnit() == BUILDINGPTR)
56  return;
57  float dist = GetHeight( un->Position().Cast(), norm, t, TotalSizeX, TotalSizeZ )-un->rSize();
58  if (dist < 0)
59  ApplyForce( un, norm, -dist );
60 }
void Terrain::Collide ( Unit un)

Definition at line 61 of file terrain.cpp.

References Collide(), and QuadTree::transformation.

62 {
63  Collide( un, transformation );
64 }
void Terrain::Collide ( )

Definition at line 82 of file terrain.cpp.

References _Universe, Universe::activeStarSystem(), UnitCollection::createIterator(), and StarSystem::getUnitList().

Referenced by Collide().

83 {
84  Unit *unit;
85  for (un_iter iter = _Universe->activeStarSystem()->getUnitList().createIterator(); (unit=*iter)!=NULL; ++iter)
86  Collide( unit );
87 }
void Terrain::CollideAll ( )
static

Definition at line 93 of file terrain.cpp.

References allterrains, i, and TERRAINRENDER.

Referenced by TerrainCollide().

94 {
95  for (unsigned int i = 0; i < allterrains.size(); i++)
96  if (allterrains[i]->draw&TERRAINRENDER)
97  allterrains[i]->Collide();
98 }
void Terrain::DeleteAll ( )
static

Definition at line 99 of file terrain.cpp.

References allterrains.

Referenced by destroyObjects().

100 {
101  while ( !allterrains.empty() )
102  delete allterrains.front();
103 }
void Terrain::DisableDraw ( )

Definition at line 74 of file terrain.cpp.

References TERRAINRENDER.

Referenced by ContinuousTerrain::DisableDraw().

75 {
76  draw &= (~TERRAINRENDER);
77 }
void Terrain::DisableUpdate ( )

Definition at line 65 of file terrain.cpp.

References TERRAINUPDATE.

Referenced by ContinuousTerrain::DisableUpdate().

66 {
67  draw &= (~TERRAINUPDATE);
68 }
void Terrain::EnableDraw ( )

Definition at line 78 of file terrain.cpp.

References TERRAINRENDER.

Referenced by ContinuousTerrain::EnableDraw().

79 {
80  draw |= (TERRAINRENDER);
81 }
void Terrain::EnableUpdate ( )

Definition at line 70 of file terrain.cpp.

References TERRAINUPDATE.

Referenced by ContinuousTerrain::EnableUpdate().

71 {
72  draw |= TERRAINUPDATE;
73 }
Vector Terrain::GetUpVector ( const Vector pos)

Definition at line 138 of file terrain.cpp.

References QuadTree::GetNormal(), and Vector.

Referenced by ContinuousTerrain::GetUpVector().

139 {
140  return GetNormal( pos, Vector( 0, 1, 0 ) );
141 }
void Terrain::Render ( )

Definition at line 104 of file terrain.cpp.

References getTerrainColor(), GFXGetLightContextAmbient(), GFXLightContextAmbient(), and QuadTree::Render().

Referenced by ContinuousTerrain::Draw().

105 {
106  static GFXColor terraincolor( getTerrainColor() );
107  GFXColor tmpcol( 0, 0, 0, 1 );
108  GFXGetLightContextAmbient( tmpcol );
109  GFXLightContextAmbient( terraincolor );
111  GFXLightContextAmbient( tmpcol );
112 }
void Terrain::RenderAll ( )
static

Definition at line 113 of file terrain.cpp.

References allterrains, getTerrainColor(), GFXGetLightContextAmbient(), GFXLightContextAmbient(), i, and TERRAINRENDER.

Referenced by GameStarSystem::Draw().

114 {
115  static GFXColor terraincolor( getTerrainColor() );
116  GFXColor tmpcol( 0, 0, 0, 1 );
117  GFXGetLightContextAmbient( tmpcol );
118  GFXLightContextAmbient( terraincolor );
119  for (unsigned int i = 0; i < allterrains.size(); i++)
120  if (allterrains[i]->draw&TERRAINRENDER)
121  allterrains[i]->Render();
122  GFXLightContextAmbient( tmpcol );
123 }
void Terrain::SetTotalSize ( float  X,
float  Z 
)
inline

Definition at line 23 of file terrain.h.

References AiXml::X, and AiXml::Z.

Referenced by ContinuousTerrain::ContinuousTerrain().

24  {
25  TotalSizeX = X;
26  TotalSizeZ = Z;
27  }
void Terrain::SetTransformation ( const Matrix mat)

Definition at line 39 of file terrain.cpp.

References QuadTree::SetTransformation().

Referenced by createObjects(), and UnitFactory::createTerrain().

40 {
42 }
void Terrain::UpdateAll ( int  resolution)
static

Definition at line 124 of file terrain.cpp.

References allterrains, i, and TERRAINUPDATE.

Referenced by UpdateTerrain().

125 {
126  int res = 4;
127  if (resolution == 0)
128  res = 0;
129  else
130  while (resolution > res)
131  res *= 4;
132  for (unsigned int i = 0; i < allterrains.size(); i++)
133  if (allterrains[i]->draw&TERRAINUPDATE) {
134  allterrains[i]->Update( res, allterrains[i]->whichstage%res, allterrains[i]->updatetransform );
135  allterrains[i]->whichstage++;
136  }
137 }

The documentation for this class was generated from the following files: