eng Namespace Reference

Engine core. More...


Classes

class  BSP
 Axis-aligned BSP tree (specialized for Object class). More...
class  PolygonBSP
 Polygon-aligned BSP tree. More...
class  ExceptionBSP
 Exception in BSP. More...
class  Engine
 Engine interface. More...
class  Events
 Engine event nexus. More...
class  Global
 Global class collects globals as members to determine their order of construction. More...
class  Graph
 Graph class. More...
class  VisitorDraw
 Visitor that draws a Graph. More...
class  VisitorComputeNormals
 Visitor to compute normal vectors on polygons and vertexs. More...
struct  DefaultNodeValues
class  GraphMaker
 Facade to help make a Graph. More...
class  GraphTraversal
 Defines the traversal of a Graph, has node stack, Visitors can push. More...
class  VisitorCloner
 Visitor to re-clone every Node clone (for a new clone of a Graph). More...
class  VisitorLod
 Visitor to set the LOD of a Graph. Searches for a Graph's LodNode. This should be fast enough if LodNode is the Graph's root node. More...
class  GraphImporter
 Imports 3D model files as Graph objects. More...
class  ObjectLod
 Dynamic LOD for an Object. More...
class  UserLod
 User-selected LOD. More...
class  Node
 Base Node class. More...
class  LodNode
 LodNode acts a switch for the traversal of a Graph. More...
class  PartitionNode
 PartitionNode defines a subtree of a Graph that can be disabled. More...
class  TransformNode
 A node in the transform hierarchy. More...
class  VertexsNode
 Contains an array of local vertexs. More...
class  NormalsNode
 Contains two arrays of normals (polygon normals and vertex normals). More...
class  ModesNode
 Node that defines a bit combination of drawing modes. More...
class  MaterialNode
 Define material properties of polygons for lighting model. More...
class  TextureNode
 Contains a 2D texture object. More...
class  ColorsNode
 Node for 1,3,or 4 RGBA colors. More...
class  PolygonNode
 Polygon Node. More...
class  PolygonNode_TriColor1
 Polygon Node (triangle, same color). More...
class  PolygonNode_TriColor3
 Polygon Node (triangle, per-vertex colors). More...
class  PolygonNode_QuadColor1
 Polygon Node (quad, same color). More...
class  PolygonNode_QuadColor4
 Polygon Node (quad, per-vertex colors). More...
class  PolygonNode_Tex
 Base class for a textured polygon node. More...
class  PolygonNode_TexTriColor1
 Polygon Node (triangle, same color, textured). More...
class  PolygonNode_TexTriColor3
 Polygon Node (triangle, per-vertex colors, textured). More...
class  PolygonNode_TexQuadColor1
 Polygon Node (quad, same color, textured). More...
class  PolygonNode_TexQuadColor4
 Polygon Node (quad, per-vertex colors, textured). More...
class  SpecialNode
 Special-purpose user-defined node. More...
class  NodeClones
 During traversal, clone (private) nodes override shared (original) nodes. NodeClones is part of Graph's implementation. More...
class  Visitor
 Base class for a Visitor of a Graph. More...
class  VisitorGetFirstTransformNode
class  VisitorSetRecomputeNormals
 Visitor to schedule recomputing normal vectors. More...
class  Object
 Base class for 3D objects. More...
class  Settings
 Global program settings. More...
class  Sprite
 A Sprite is composed of quads oriented to viewplane and eye's up vector. More...
class  EngineStats
 Engine statistics. More...
class  Task
 Schedules task to be run by main thread. More...
class  Timer
 Singleton to register and invoke timer callbacks. More...
class  Int3
 Three integers. More...
class  SortableDistance
 Template class for sorting (general) objects by distance. More...
class  View
 View class (data struct). More...
class  Volume
 Abstract Volume. More...
class  SphereVolume
 Volume defined as a sphere (position,radius). More...
class  BoxVolume
 Volume defined as an axis-aligned 3D box. More...
class  BSPVolume
 Volume precisely defined by a polygon-aligned BSP tree. More...
class  World
 World class defines a demand-loaded volumetric hiearchy of Objects. More...

Namespaces

namespace  defs
 Engine definitions, constants, enums.

Typedefs

typedef
SortableDistance
< Object
SortableObject
typedef map< string,
TextureConfig > 
TextureConfigMap

Enumerations

enum  eTestMode { eTestMode_NONE = 0, eTestMode_WORLD = (1<<0) }
enum  eAttached { eAttached_WAS_NOT_ATTACHED, eAttached_WAS_ATTACHED }
enum  {
  TYPESIG_OBJECT = TYPESIG_GFX_USER, TYPESIG_BSP_NODE, TYPESIG_NODE, TYPESIG_GRAPH,
  TYPESIG_QUADRANT, TYPESIG_AFTER_ENGINE
}
 Type signatures specifically for Engine. More...
enum  {
  AXIS_LAT = AXIS_X, LAT = AXIS_LAT, AXIS_LON = AXIS_Y, LON = AXIS_LON,
  AXIS_ALT = AXIS_Z, ALT = AXIS_ALT
}

Functions

static BoxVolume SplitLeft (const BoxVolume &volume, uint axis)
static BoxVolume SplitRight (const BoxVolume &volume, uint axis)
void DrawWorldBoxVolume (const BoxVolume &worldBoxVolume, const RGBA color)
void DrawWorldBoxVolume (const BoxVolume &worldBoxVolume, const RGBA color)
template<typename DERIVED_NODE>
DERIVED_NODE::Ptr CastNode (Node::Ptr node, const Node::TypeId typeId)
template<typename NODE, typename PARENT_NODE>
NODE::Ptr FindOrAttachNewNode (const typename NODE::Value &nodeValue, const Node::TypeId typeId, typename PARENT_NODE::Ptr parent, Node::SortedNodes &children)
SharedPtr< GraphImportGraph (const string &fnameModel, const Vector3 vertexScale=Vector3(1, 1, 1), const Vector3 vertexOffset=Vector3(0, 0, 0))
EyeVertex TransformObjectPositionToEyeSpace (SharedPtr< Object > obj)
void BeginSpecialDraw (void)
void EndSpecialDraw (void)
EyeVertex TransformObjectPositionToEyeSpace (SharedPtr< Object > obj)
void CHECK_PATERNITY (const Node &parent, const Node &child)
static int LOWER_NODE_PRIORITY1 (int priority1)
static void CHECK_PARENT_CHILD_PRIORITY (const Node &parent, const Node &child)
static void CHECK_SIBLING_PRIORITY (const Node &parent, const Node &sibling1, const Node &sibling2)
static void CHECK_CHILDREN (const Node::SortedNodes &children)
void CheckNode (const Node *node, bool nullOk)
static void ReindexSiblingNodes (SortedArray< Node::SortableNode > &sortedNodes, const uint idx)
static bool PartitionNodeOrTransformNodeLessThan (const Node::Value &valuePartitionOrTransform, const Node::Value &valueOther)
template<typename NODE>
void CHECK_NODE (SharedPtrNull< NODE > node)
template<typename NODE>
void CHECK_NODE_NULL_OK (SharedPtrNull< NODE > node)
INLINE void CHECK_NODE (const Node *node)
static TransformNode::Ptr GetFirstTransformNode (Graph &graph)
ostream & operator<< (ostream &strm, const Settings &settings)
ostream & operator<< (ostream &strm, const EngineStats &stats)
void ConfigureTexture (SharedPtr< Texture > texture, const string &textureName)
ostream & operator<< (ostream &strm, const SphereVolume &sphereVolume)
ostream & operator<< (ostream &strm, const BoxVolume &boxVolume)
INLINE fp ApproxRadiusOfBox (const fp x_width, const fp y_width, const fp z_width)
void ThreadQuadrantPopulate (long quadrant)

Variables

Global global
const uint GRAPH_TRAVERSAL_PREALLOCATE_SIZE = 256
static fp sDrawNormalScale = WORLD( 250.0 )
static EyeVertex sEyeNormal
static GFX::ePolygonMode sPolygonMode = GFX::ePolygonMode_DEFAULT
static const
DefaultNodeValues 
sDefaultNodeValues
static const string sUserLodStrings [] = { "DEFAULT", "MIN", "LOW", "MID", "HIGH", "MAX" }
static GFX::Modes sGfxModes
Settings gSettings
static const
Texture::eFunc 
DEFAULT_SPRITE_TEXTURE_FUNC = Texture::eFunc_REPLACE
TextureConfigMap sTextureConfigMap
static FPS sFPS


Detailed Description

Engine core.

Typedef Documentation

typedef SortableDistance<Object> eng::SortableObject

typedef map<string,TextureConfig> eng::TextureConfigMap [static]


Enumeration Type Documentation

anonymous enum

Type signatures specifically for Engine.

Enumerator:
TYPESIG_OBJECT 
TYPESIG_BSP_NODE 
TYPESIG_NODE 
TYPESIG_GRAPH 
TYPESIG_QUADRANT 
TYPESIG_AFTER_ENGINE 

anonymous enum

Enumerator:
AXIS_LAT 
LAT 
AXIS_LON 
LON 
AXIS_ALT 
ALT 

enum eng::eAttached

Enumerator:
eAttached_WAS_NOT_ATTACHED 
eAttached_WAS_ATTACHED 

enum eng::eTestMode

Enumerator:
eTestMode_NONE 
eTestMode_WORLD 


Function Documentation

INLINE fp eng::ApproxRadiusOfBox ( const fp  x_width,
const fp  y_width,
const fp  z_width 
)

Returns:
Approximate radius of box that fully encloses the box.

void eng::BeginSpecialDraw ( void   ) 

Common functions for special drawing outside of a Graph. These complement GFX functions:

eng::BeginDraw(); GFX::Begin( GFX::ePrim_QUADS ); ... GFX::End(); eng::EndDraw();

template<typename DERIVED_NODE>
DERIVED_NODE::Ptr eng::CastNode ( Node::Ptr  node,
const Node::TypeId  typeId 
) [inline]

[LIMITED-USE] Cast base Node to derived Node. This is a dreadful cast-by-typeid -- use only if cast really should succeed.

static void eng::CHECK_CHILDREN ( const Node::SortedNodes &  children  )  [static]

Check children (typesigs, priority).

INLINE void eng::CHECK_NODE ( const Node *  node  ) 

template<typename NODE>
void eng::CHECK_NODE ( SharedPtrNull< NODE >  node  )  [inline]

template<typename NODE>
void eng::CHECK_NODE_NULL_OK ( SharedPtrNull< NODE >  node  )  [inline]

static void eng::CHECK_PARENT_CHILD_PRIORITY ( const Node &  parent,
const Node &  child 
) [static]

General rule:

void eng::CHECK_PATERNITY ( const Node &  parent,
const Node &  child 
)

Check if parent node really is the parent.

static void eng::CHECK_SIBLING_PRIORITY ( const Node &  parent,
const Node &  sibling1,
const Node &  sibling2 
) [static]

Check sibling priority. See elsewhere for exceptions.

void eng::CheckNode ( const Node *  node,
bool  nullOk 
)

Basic check for an individual Node. CHECK_NODE*() macros expand to CheckNode() with appropriate args.

void eng::@94::ConfigureTexture ( SharedPtr< Texture texture,
const string &  textureName 
) [static]

Apply texture configuration to a Texture object.

void eng::DrawWorldBoxVolume ( const BoxVolume &  worldBoxVolume,
const RGBA  color 
)

void eng::DrawWorldBoxVolume ( const BoxVolume &  worldBoxVolume,
const RGBA  color 
)

For debugging, draw a BoxVolume.

void eng::EndSpecialDraw ( void   ) 

template<typename NODE, typename PARENT_NODE>
NODE::Ptr eng::FindOrAttachNewNode ( const typename NODE::Value &  nodeValue,
const Node::TypeId  typeId,
typename PARENT_NODE::Ptr  parent,
Node::SortedNodes &  children 
) [inline]

Try to find a matching node. If found, NOP. Else, create and attach node.

Parameters:
nodeValue 
typeId Error-checking: children must be homogeneous.
parent 
children Children of parent.

static TransformNode::Ptr eng::GetFirstTransformNode ( Graph &  graph  )  [static]

Get the first TransformNode of a Graph.

SharedPtr<Graph> eng::ImportGraph ( const string &  fnameModel,
const Vector3  vertexScale = Vector3(1, 1, 1),
const Vector3  vertexOffset = Vector3(0, 0, 0) 
)

static int eng::LOWER_NODE_PRIORITY1 ( int  priority1  )  [static]

Returns:
Priority of level below this one.

ostream & eng::operator<< ( ostream &  strm,
const BoxVolume &  boxVolume 
)

Print BoxVolume.

ostream & eng::operator<< ( ostream &  strm,
const SphereVolume &  sphereVolume 
)

Print SphereVolume.

ostream & eng::operator<< ( ostream &  strm,
const EngineStats &  stats 
)

operator<<(EngineStats)

ostream & eng::operator<< ( ostream &  strm,
const Settings settings 
)

Print Settings configuration.

static bool eng::PartitionNodeOrTransformNodeLessThan ( const Node::Value &  valuePartitionOrTransform,
const Node::Value &  valueOther 
) [inline, static]

PartitionNode and Transform are exceptions where hetergeneous children are necessary and allowed. The priority/Value will be equal, so their order will be chronological.

static void eng::ReindexSiblingNodes ( SortedArray< Node::SortableNode > &  sortedNodes,
const uint  idx 
) [inline, static]

Re-index sibling nodes.

static BoxVolume eng::SplitLeft ( const BoxVolume &  volume,
uint  axis 
) [static]

Returns:
The left half of a BoxVolume.

static BoxVolume eng::SplitRight ( const BoxVolume &  volume,
uint  axis 
) [static]

Returns:
The right half of a BoxVolume.

void eng::ThreadQuadrantPopulate ( long  quadrant  ) 

EyeVertex eng::TransformObjectPositionToEyeSpace ( SharedPtr< Object >  obj  ) 

EyeVertex eng::TransformObjectPositionToEyeSpace ( SharedPtr< Object >  obj  ) 

Returns:
Transform an Object's world position to Eye Space.


Variable Documentation

const Texture::eFunc eng::DEFAULT_SPRITE_TEXTURE_FUNC = Texture::eFunc_REPLACE [static]

Global eng::global

const uint eng::GRAPH_TRAVERSAL_PREALLOCATE_SIZE = 256

Settings eng::gSettings

const DefaultNodeValues eng::sDefaultNodeValues [static]

fp eng::sDrawNormalScale = WORLD( 250.0 ) [static]

EyeVertex eng::sEyeNormal [static]

FPS eng::sFPS [static]

GFX::Modes eng::sGfxModes [static]

GFX::ePolygonMode eng::sPolygonMode = GFX::ePolygonMode_DEFAULT [static]

Polygon mode.

TextureConfigMap eng::sTextureConfigMap [static]

const string eng::sUserLodStrings[] = { "DEFAULT", "MIN", "LOW", "MID", "HIGH", "MAX" } [static]

LOD/string conversions.

Palomino 3D Engine documents generated by doxygen 1.5.3 on Fri Nov 23 11:26:21 2007