Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | Related Pages

NeoEngine Namespace Reference


Detailed Description

Engine namespace All classes, global objects and other symbols are placed inside this namespace. To save some typing, use the construct using namespace NeoEngine; in your source files. We advise against using the "using" keyword in headers, or you can get problems with other headers/source files including it and not expecting to bring all symbols from the namespace into global scope.


Classes

class  AABB
 Axis-aligned bounding box. More...

class  Activator
 Simple class for activator control, use virtual inheritance Used by any objects that need to keep track of activated/deactivated state. Use virtual inheritance to avoid multiple base objects in inheritance lattice. Remember to call base methods in overridden methods. A class only needs to overload the Activate and Deactivate methods. More...

class  BoneAdaptor
 Adaptor between bone and scene node An adaptor allowing scene nodes to be attached to bones. More...

class  AnimatedNode
 Animated scene node An animated scene node extends the basic scene node with node animator control. More...

class  AnimatedSubMesh
 A vertex animated submesh. More...

class  Animation
 An animation is a collection of ordered keyframes. More...

class  AnimatorController
 An animator controller manages animations for an object. More...

class  BitParser
 Read bits from a stream A bitstream parser, capable of reading up to 0 to 32 bits from a stream in one method call. More...

class  Bone
 Data defining a single bone A bone is a simple node in a hierarchy (a skeleton). Bones are managed by skeleton, and must belong to a single master skeleton object. A skeleton can only have a single root bone. More...

class  BoundingVolume
 Base class for bounding volumes All bounding objects (AABB, OBB, Sphere, Capsule) inherit from this base class, and implement specific collision and intersection tests. More...

class  Buffer
 Reference counted buffers. More...

class  ConfigCallback
 Callback interface for config change notifications To use a config change callback, derive from this class and implement interface method, and pass object of derived class to register method in configuration repository object. More...

class  ConsoleCmdCallback
 Callback interface for console command processing To use a console command callback, derive from this class and implement interface method, and pass object of derived class to register method in console object. More...

class  FrameCallback
 Callback interface for frame listeners Use frame callbacks to listen for frame rendering events, such as frame completion, or to be called for each light active in the frame. More...

class  Camera
 Main camera abstraction class. Use for rendering. More...

class  Capsule
 Capsule bounding volume. More...

class  Color
 Color abstraction Color represented by 4 float (32 bit), RGBA order. More...

class  Color32
 Color abstraction in device native format storage, accessible through RGBA order Color represented by 32 bit unsigned int (8 bit unsigned char per element), RGBA (A high bit, R low bit) or BGRA (A high bit, B low bit) storage order. Access to components are always made through RGBA order with red as component 0 and alpha as component 3. More...

union  Color32::Color32Union
 Union for easy access as unsigned int or unsigned char[]. More...

class  ConfigValue
 Configuration data for a single key. More...

class  Config
 Configuration data repository Configuration can be loaded from a file through the loadable entity interface. The configuration repository will by default listen to the "set" and "showconfig" console commands, and the core config repository object will automatically register the commands with the core console object when the core is initialized. More...

class  ConsoleCmd
 Data for a command A console command is identified with a string (case sensetive) and matched to a callback object, receiving the command and arguments. More...

class  Console
 Dropdown console for easy debugging A console is a semi-transparent quad rendered in orthographic mode displaying the debug output sent to it. A console also has a prompt that supports registering commands (and default fallback). More...

class  Contact
 Collision detection contact data Used for returning collision detection contact results. More...

class  ContactSet
 Data defining a set of collision detection contact data Used for collision detection. More...

class  Core
 Core engine object. More...

class  FileTemplate
 Data for a file in directory/package hierarchy A file template holds information about a file in the directory/package hierarchy, and is responsible for allocating File objects on request. Specific implementations for normal and package files can then allocate the spcific class for the type of the requested file. For example, a file in a compressed package will be allocated of type VirtualFile, while a file in the normal file system will be of the base File type. With this construct the directory/package class does not need to know about the which implementation of the file type that needs to be allocated on request. More...

class  Directory
 Directory abstraction A directory can contain files and other directories, and is the base class for packages. Each directory contains templates for all files, and the actual File objects gets allocated on request, the GetByName or GetAllFiles methods. More...

class  File
 OS independant file wrapper with useful operations The File class gives access to a file in the file system, and abstracts away all platform and architecture specific issues for reading and writing. You can access a little/big endian file from a little/big endian system with no changes to your code. You can use the DetermineByteOrder method to support different endian versions of your data files on different systems (loading a little endian file on a little endian system is faster than a big endian file, and vice versa for big endian systems). The file class supports methods for reading and writing bytes, shorts, integers and strings, as well as raw byte arrays. It also has the standard printf and scanf style methods for easy text parsing. More...

class  BufferFileStreamBuf
 Stream buffer implementation for buffered files Stream buffer that reads and writes to a memory, used by BufferFile to provide the stream buffer interface for the stream. More...

class  BufferFile
 Emulate File object on data buffer A buffer file implements file operations on an arbitrary memory buffer. This can be useful if you want to load resources from data embedded in your application, you can then create a BufferFile object and pass to all classes and methods accepting a File object for loading (all classes that are derived LoadableEntity supports loading from a File object). More...

class  VirtualFile
 Virtual file in package A virtual file exists inside an (optionally compressed) package, and is derived from BufferFile since it acts on a memory buffer. For compressed packages, the data for the file is uncompressed to a memory buffer when the file is opened, and released when the file is closed. More...

class  FileCodec
 Loads custom file data from a package. More...

class  FileManager
 Package and file manager. More...

class  FiletypeIdentifier
 Base class for file type identifier A file type identifier identifies file type from data and file name. More...

class  FontCharacter
 Data for a single character in font. More...

class  Font
 Font abstraction. Loads, prints and other methods. More...

class  FontManager
 A collection of fonts. More...

class  Frustum
 Basic frustum data container. More...

class  HashString
 Hashed version of std::string for faster comparision The HashString stores a hash of the string for fast early-out comparision with other hashed strings by comparing the hash, and only if equal compare the actual string data. Overloads some useful operations of std::string but not all, if you need to access the string data directly, remember to call HashMe() if you modify it (not needed if you simply read from it, naturally). More...

class  HashTableNode
 Hash table node template The hash table node is a container object for the key string and the data object. More...

class  HashTable
 Hash table template Hash table storing pointers to objects of template type. The hash table never deletes any pointers stored in the hash table. Use the GetAllNodeData to get all the pointers stored if you want to delete the data objects. More...

class  HierarchyNode
 Base class for node hierarchies A hierarchy node is the building block of a node tree. Derived from the SRT node for basic capabilities, extended with hierarchy data (one parent, mutliple children). World data is cached and updated when needed by overloading SRT node methods and flagging for invalid caches. More...

class  InputEvent
 Data for a single input event. More...

class  InputGroup
 Group of input objects for easy management. More...

class  InputManager
 Collects input from devices and distributes to groups. More...

class  InputDevice
 Input event generator. More...

class  InputEntity
 Interface for objects processing input Input entites receive input events from the master InputGroup object the entity is attached to. Derived from Activator for easy on/off management. A deactivated input entity will not receive any events from the master InputGroup object. More...

class  Keyframe
 Animation keyframe base class. More...

class  Light
 Dynamic light object Dynamic lights are scene entities. The Render method will register the light as active with the render device for this frame, allowing bounding volume culling of light entities. More...

class  Line
 Data defining a 3D line Class defining a line in 3D. More...

class  Ray
 Data defining a 3D ray Class defining a ray in 3D. More...

class  LoadableEntity
 Interface for object which can be loaded A loadable entity can load its data from a file. Derived classes only needs to implement the LoadNode method, file locating/opening/closing is handled automatically by the this base class Load methods. More...

class  LogSink
 Base class for different log targets A log sink is attached to a log source and given a certain loglevel threshold. Whenever messages are sent to the log source by the program or the engine, the log source forwards it to all the attached log sinks that are listening for that loglevel threshold. The engine provides a number of sinks by default, the stdout sink (LogStdoutSink), the file sink (LogFileSink) and the console sink (Console). For an example, look at the documentation for the logstream.h file. More...

class  LogStdoutSink
 Stdout log sink The stdout sink writes log messages to the stdout stream (cout) For an example, look at the documentation for the logstream.h file. More...

class  LogFileSink
 File log sink The file sink writes log messages to a file specified or provided to the constructor. Messages are written per-line. For an example, look at the documentation for the logstream.h file. More...

class  LogMSVCDebugSink
 Log sink for MSVC++ debugger. More...

class  LogSourceStreamBuf
 Stream buffer for the log source Internal class, engine users probably shouldn't need to ever use this class. More...

class  LogManipulator
 Log manipulator. More...

class  LogLevel
 Stream manipulator for the LogSource class Sets the loglevel state for the stream. Once a loglevel state is set, it will remain until it is changed, so it is not necessary to use this loglevel manipulator for every logging call. For an example, look at the documentation for the logstream.h file. More...

class  LogLevelPush
 Log manipulator pushing log level Manipulator pushing the current log level onto the stack and settings a new log level. Use PopLogLevel class to pop and restore stored level from the stack. More...

class  LogLevelPop
 Log manipulator popping log level Manipulator popping and restoring log level from the stack. More...

class  LogErrorCallback
 Simple callback interface for monitoring error log messages Callback method is called by the log source object every time a log messages of level ERROR or more severe is parsed. More...

class  LogSource
 The log source object Contains a loglevel state and a number of data sinks for logging output, each with a loglevel threshold. When it is given output to log, it gives that output to all sinks that will accept logs equal to the current loglevel state or higher. For an example, look at the documentation for the logstream.h file. More...

class  MassParticleState
 State data for a mass particle object. More...

class  MassParticle
 Mass particle abstraction Simulate mass particle physics. A mass particle has a mass but no (infinetesimal) volume. More...

class  BlendMode
 Data describing a blend mode. More...

class  ZBufferMode
 Data describing a Z buffer mode. More...

class  TextureLayer
 Data for a single texture layer Base for texture in materials. Also used for multi-texturing. More...

class  Material
 Material abstraction. More...

class  Mesh
 A blueprint for a mesh. More...

class  MeshEntity
 An instance of a mesh in a scene A mesh scene entity, an instance of a mesh. More...

class  Module
 Loadable module object A module is an abstraction of a loadable library Abstracts all platform-specific issues and allows easy query for symbols available in the loaded module. More...

class  ModuleDynamic
 Module abstraction layer for dynamically linked modules. More...

class  ModuleStatic
 Module abstraction layer for statically linked modules. More...

class  ModuleManager
 Manages loadable modules The module manager keeps track of search paths for modules and the loaded modules for quick access. An object wanting to load a module should do so through a ModuleManager interface, preferrably the module manager in the core object. More...

class  MutexObject
 Mutex object for thread safe programming. More...

class  MutexLock
 Simple class for automatic locking/unlocking mutex object Makes it easier to manage a mutex lock by automatic lock on creation and unlock on destruction. An example:. More...

class  Vector3d
 3D vector Simple 3D vector class with useful math operations More...

class  EulerAngles
 Euler angles and order. More...

class  AxisAngle
 Rotation expressed as axis-angle. More...

class  Quaternion
 Unit quaternion Simple unit quaternion class with useful math operations. More...

class  Matrix
 4x4 matrix Simple 4x4 matrix class with useful math operations More...

class  ODE
 Base class for ODE calculations Used primarily in physics simulation classes. More...

class  SRTNode
 Base class for hierarchy objects A SRT node contains data for scaling, rotation and translation, and core methods for modification and queries. Derived classes can implement hierarchies by overloading the SetScaling, SetRotation and SetTranslation methods and calculate world cache data. More...

class  NodeKeyframe
 Data for a node keyframe A node keyframe holds rotation and translation data. More...

class  NodeAnimation
 An animation for a node. More...

class  NodeAnimatorController
 Animator controller for scene nodes. More...

class  OBB
 General bounding-box class. More...

class  VirtualFileTemplate
 Data for a file in directory/package hierarchy. More...

class  Package
 File management in packages A package can both contain real files and virtual files (read from package file). More...

class  ParticleAllocatorCallback
 Callback class for particle generation Will be called by generator for allocating particles. More...

class  ParticleGenerator
 Base class for particle generators Generate particles for a particle system. More...

class  SphereParticleGenerator
 Particle generator, spherical generation volume Generate particles in spherical outbursts. More...

class  ParticleSystem
 Particle system Manage system of particles. More...

class  ParticleSystem::ParticleSubSystem
 An array of a fixed numer of particles. More...

class  PatchSurfaceData
 Data defining a patch object (for example a bezier patch). More...

class  PatchSurfaceSubMesh
 Derived shard created from a patch surface. More...

class  PatchSurfaceTesselator
 Tesselator for patch surfaces. More...

class  QuadraticBezierPatchTesselator
 Specialized tesselator for quadratic bezier patch surfaces. More...

class  PerlinNoise
 Perlin Noise generation class. More...

class  PerlinImage
 Perlin Noise image generation class. More...

class  ContactNode
 Node in contact directed acyclic graph. More...

class  PhysicsManager
 Manager of rigidbody nodes in a scene. More...

class  PhysicsNodeState
 State date for a physics node. More...

class  PhysicsNode
 Base class for all physics nodes Base class with methods for physic simulation objects. More...

class  PixelBuffer
 Pixel buffer for offscreen rendering Pixelbuffers are used for render-to-texture effects. Create a pixelbuffer through the render device method CreatePixelBuffer. More...

class  PlanarReflection
class  Plane
 3D plane Class describing a 3D plane More...

class  RefCounter
 Base reference counter Used by all objects that are managed through smart pointers Once reference count reaches zero, deletes itself. You must NEVER delete a reference counted object directly! All access to a reference counted object MUST be done through the smart pointer interface as offered by the Pointer template class. More...

class  Pointer
 Smart pointer template for reference counted classes Reference counted objects MUST be accessed through smart pointers at all times to make sure reference counting scheme operates correctly. Failure to do so will result in strange and unpredictable behaviour and crashes. The smart pointer class takes care of reference counting management at creation, destruction and assignement of pointers, and lets the reference counting scheme correctly free objects that are no longer referenced. More...

class  Polygon
 Polygon abstraction class (triangles only). More...

class  Edge
 Primitive class for edges An edge is simply two connected vertices. Object of this class will be used in meshes to precaclulate edges and their dependencies for use in shadow volume generation. This class only holds two indices into some vertex array the owner will have to implement (probably indices into a VertexBuffer), a polygon (index into a polygon array) and some internal flags. An edge is shared by two polygons, we do not allow non-manifold meshes. More...

class  PolygonStripBuffer
 Triangle polygon strip buffer class Triangle strip buffers hold data for a single triangle strip. More...

class  PolygonBuffer
 Buffer for storing polygons (triangles) A polygon buffer holds data for a number of polygons (triangles) and optionally a strip, material and vertex buffer. Polygon buffers are managed and reference counted. More...

class  PolygonBuffer::AdjacencyData
 Adjacency data for triangles Used in stripification process. More...

class  PoolNode
 Pool node template The pool table node is a container object for the key string and the data objects associated with the key. More...

class  Pool
 Pool template A pool is a hash table with mutliple objects per key. For more detailed description of the properties, read the HashTable documentation concerning the management and non-deletion principle of the data. More...

class  ProfileData
 Data for a profile block A profiling block contains data for an execution block. It is identified by name and has data of total execution time and number of times the block has been executed. A profiling block can have any number of child blocks and a single parent block, arranging the blocks in a tree structure. This way relative percentages can be calculated to see where most of the time in a block is spent. More...

class  ProfileManager
 Manager for profile data The profile manager keeps track of all profiling blocks, the current block and the total execution time. It can be activated and rendered onscreen from the console with the "<b>showprofile</b>" command, all profile block data can be reset to zero with the "<b>resetprofile</b>" command, and all data cleared with the "<b>clearprofile</b>" command. To start a profiling block you use the BEGIN_PROFILE( name ) macro, and to end the block you use the END_PROFILE() macro. You must match all begin calls with end calls. It is (naturally) not possible to overlap blocks, since the END_PROFILE macro closes the latest activated block. If the _PROFILE preprocessor symbol is not defined, the BEGIN/END macros resolve to a nothing, making it easy to turn on/off profiling at build time. More...

class  ProgramParam
 Pipeline program parameter definition. More...

union  ProgramParam::ProgramParamValue
class  Program
 Pipeline program Base class for pipeline programs, real implementation created by render device The program expects source code in format compatible with the target for the type of program that the render device selects during initialization. Programs are reference counted and should always be accessed through a smart pointer. When a program is loaded from file, the name of the program is automatically set to the base file name (i.e without extension). More...

class  Projection
 Data describing a projection mode. More...

class  PerspectiveProjection
 Data describing perspective projection mode. More...

class  OrthographicProjection
 Data describing orthographic projection mode. More...

class  RadixSort
 Radix sorter (original implementation by Pierre Terdiman, http://www.codecorner.com) Radix sorter that can sort signed/unsigned 32-bit integers, signed/unsigned 64-bit integers and floats. To use the sorted, pass the desired data type to the constructor and then Sort(), passing the pointer to your data (of the same type as you passed to the ctor) and number of elements in the array to sort. To access the sorted indices you use GetIndices() which will return a pointer to an index array for the sorted elements. This means the radix sorter does not modify your original data array, but gives you and index array allowing you to access the objects in sorted order. More...

class  RenderDevice
 Render device. More...

class  RenderAdapter
 Device and/or OS specific data for a render adapter. More...

class  RenderCaps
 Describe capabilities for a render device. More...

class  RenderEntity
 Interface for renderable objects A renderable object overloads and implements the Render method, optionally using the base Render method to use the automatic check for redundant multiple render calls per frame. This base class keeps track of the last frame the object was rendered, and if already rendered the current frame, the base Render method will return false (otherwise true). More...

class  RenderPrimitive
 Render batch data Data for a single render operation. More...

class  RenderResolution
 Data for a rendering area resolution. More...

class  RenderWindow
 Device and/or OS specific data for window. More...

class  RigidBodyState
 State data for a rigid body. More...

class  RigidBody
 Rigidbody physics simulation class Simulate a rigid body physics. More...

class  Room
 Scene management base class A room is the top-level class for scene management, capable of holding both static geometry and dynamic objects through the scene graph capabilities in SceneNode. More...

class  RoomManager
 Room manager The room manager creates rooms and loads extension modules on demand. More...

class  RoomPartitionNode
 Base class for space paritioning. More...

class  SceneEntity
 Base class for entities in a scene graph A scene entity is an object in the scene graph, contained by scene nodes. The entity itself does not hold SRT data, that is stored in the parent scene node object. A scene entity can be anything that can be described as an object in a scene graph, such as meshes, lights, skyboxes. A scene entity has base methods for updating and rendering, as well as a collision detection interface. More...

class  SceneNode
 Base class for hierarchies in a scene graph A scene node is the building block of a scene graph. Derived from the SRT node for basic capabilities, extended with hierarchy data (one parent, mutliple children). World data is cached and updated when needed by overloading SRT node methods and flagging for invalid caches. A scene node can contain an entity, which can be anything from a mesh, a light or a sprite to a forcefield or other modifier. With this container-entity relationship we can allow for derived scene node objects (such as a physics-controlled particle or rigid-body) to hold all kinds of entities. A scene node is derived from Activator and can thus be activated/deactivated. A deactivated node will turn off calls to Update and Render for the entire subtree with that node as root. More...

class  ShadowGenerator
 Shadow generator A shadow generator processes input geometry and generates a shadow. Implementations can range from simple projected blobs to render-to-texture projected shadow textures and stencil buffer shadows. More...

class  ShadowOp
 Shadow primitive operation Storage object for shadow primitive operations, used by render callback for each active light object in the scene. More...

class  StencilShadowGenerator
 Shadow generator using stencil buffer Generates self-shadowing dynamic shadows using the stencil buffer (support for stencil buffer must be present in render device). More...

class  Skeleton
 Master class controlling a hierachy of bones A skeleton is a hierarchy of bone nodes with a single root. More...

class  SkeletonAnimation
 A skeleton animation consists of a node animation object for each channel (bone). More...

class  SkeletonAnimatorController
 Animator controller for skeletons. More...

class  BoneInfluence
 Data for bone influences for a weighted vertex. More...

class  SkinVertex
 Influences for a weighted vertex in a skin. More...

class  Skin
 An array of bone weights defining a skin. More...

class  SkeletalSubMesh
 Derived shard with bone weighted vertices for skeletal animation. More...

class  SkyBox
 Wrapper class for skybox rendering. More...

class  SkyDome
 Wrapper class for skydome rendering. More...

class  Socket
 Abstract interface for network sockets. More...

class  SocketCallback
 Callback method for socket events. More...

class  Sphere
 Base class for a 3D sphere. More...

class  Sprite
 A sprite always faces the camera, but can have size, position and rotation around viewing axis. More...

class  SubMesh
 A chunk of polygons of same material. More...

class  SubMeshKeyframe
 Data for a submesh keyframe A submesh keyframe holds a vertex buffer. More...

class  SubMeshAnimation
 An animation for a submesh. More...

class  SubMeshAnimatorController
 Animator controller for submeshes. More...

class  TaskManager
 Managing tasks in threads. More...

class  TCPSocket
 TCP/IP implementation of socket interface. More...

class  TerrainHeightmap
 Heightmap for terrain pages This object contains the elevation data and various other properties for storing terrain data in memory. Once the heightmap is created, scaling properties cannot be changed and elevation data cannot be changed. Heightmaps are necessarily square in shape, so the size property reflects the number of grid points of one side of it. More...

class  TerrainLightmap
class  TerrainTextureComponent
class  TerrainShader
class  TerrainBlock
class  TerrainPage
class  TerrainManager
 Manages modules for external terrain implementations. More...

class  TextureMatrixGen
 Generator for texture coordinate effects in texture layers. More...

class  TextureMatrixGenScroll
 Generator for scrolling texture coordinate effects in texture layers. More...

class  TextureMatrixGenScale
 Generator for scaling texture coordinate effects in texture layers. More...

class  TextureMatrixGenStretch
 Generator for stretching texture coordinate effects in texture layers. More...

class  TextureMatrixGenTurbulence
 Generator for turbulence texture coordinate effects in texture layers. More...

class  TextureMatrixGenTransform
 Generator for general transform texture coordinate effects in texture layers. More...

class  TextureMatrixGenRotate
 Generator for rotation texture coordinate effects in texture layers. More...

class  TextureMatrixGenFactory
 Create texture generator objects from name. More...

class  Texture
 Texture class. More...

class  ImageData
 Raw image data with optional mipmaps. More...

class  ImageCodec
 Loads image file data. More...

class  TextureLoader
 Base loader for textures Loads texture files and returns raw data for device to process. More...

class  Thread
 Thread abstraction class. More...

class  ThreadMethod
 Method for entry point for thread execution. More...

class  ThreadCallback
 Callback class for thread event notification. More...

class  Timer
 Timer class Used to get delta time between two moments. The timer class abstracts away OS specific implementations and gives you a single interface for timing across all supported platforms. The timer is reset when you first create it, an successive calls to GetDeltaTime() will return the deltatime passed between the calls. If you do not wish to reset the timer when querying for the deltatime, you pass false as argument to GetDeltaTime The timer also has a static heartbeat counter that can be used to synchronize unrelated objects in the game. The heartbeat is reset on application startup and increases as it executes. Use the heartbeat divisor to get the factor of increase. More...

class  UDPSocket
 UDP implementation of socket interface. More...

class  UpdateEntity
 Interface for updateable objects An updateable object overloads and implements the Update method for updating the object using the deltatime passed since last call as passed by the caller. Derived from the Activator class for easy on/off management. More...

class  Vertex
 Basic vertex class with position data. More...

class  NormalVertex
 Basic vertex class with position and normal data. More...

class  DiffuseVertex
 Basic vertex with position and diffuse color. More...

class  TexVertex
 Basic vertex class with position and one 2-dim texture coordinate. More...

class  NormalDiffuseVertex
 Basic vertex class with position, normal and diffuse color data. More...

class  NormalTexVertex
 Basic vertex class with position, normal and a 2-dim texture coordinate. More...

class  DiffuseTexVertex
 Basic vertex with position, a 2-dim texture coordinate and diffuse color. More...

class  NormalDiffuseTexVertex
 Basic vertex class with position, normal, diffuse and a 2-dim texture coordinate. More...

class  VertexBuffer
 Vertex storage in buffer Vertex buffer with flexible format, with possible agp/video ram storage managed by device. More...

class  VertexElement
 Data describing a single element in a vertex declaration. More...

class  VertexDeclaration
 Complete declaration of a vertex Complete declaration of a vertex format. All elements must be declared in offset order. More...

class  Viewport
 Data for a viewport. More...

class  BaseVisitor
 Strawman visitor class. All visitors have to inherit from this class. This class is intended to add RTTI info to all visitor subclasses and a polymorphically correct destruction sequence. And most important, it allows to use dynamic_cast to solve the identification. More...

class  Visitor
 This template is to define concrete visitors for each visitable type. More...

class  BaseVisitable
 Base class for the visitable objects This class should be inherited by the base class in an hierarchy of visitable classes. More...


Typedefs

typedef HashTable< MaterialMaterialTable
 Hash table of materials.


Enumerations

enum  INPUTEVENT {
  IE_NONE = 0, IE_SYSEVENT = 1, IE_KEYDOWN = 10, IE_KEYUP = 11,
  IE_MOUSEMOVE = 20, IE_MOUSEDOWN = 21, IE_MOUSEUP = 22
}
 Input event types. More...

enum  INPUTSYSEVENT
 System event identifiers for IE_SYSEVENT events.

enum  KEYCODE
 Keycode identifiers for IE_KEYDOWN and IE_KEYUP events.

enum  MOUSEBUTTON
 Mousebutton identifiers for IE_MOUSEDOWN and IE_MOUSEUP events.

enum  LOGLEVEL {
  PANIC = 0x01, ERROR = 0x04, WARNING = 0x08, INFO = 0x10,
  DEBUG = 0x80
}
 Predefined log levels For an example on how to use log levels, look at the documentation for the logstream.h file. More...


Functions

bool NEOENGINE_API Intersection (AABB *pkAABBOne, AABB *pkAABBTwo, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (AABB *pkAABB, OBB *pkOBB, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (AABB *pkAABB, Sphere *pkSphere, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (AABB *pkAABB, Capsule *pkCapsule, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (OBB *pkOBBOne, OBB *pkOBBTwo, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (OBB *pkOBB, Sphere *pkSphere, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (OBB *pkOBB, Capsule *pkCapsule, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (Sphere *pkSphereOne, Sphere *pkSphereTwo, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (Sphere *pkSphere, Capsule *pkCapsule, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (Capsule *pkCapsuleOne, Capsule *pkCapsuleTwo, ContactSet *pkContactSet=0, bool bInvertNormal=false)
bool NEOENGINE_API Intersection (AABB *pkAABB, Frustum *pkFrustum)
bool NEOENGINE_API Intersection (OBB *pkOBB, Frustum *pkFrustum)
bool NEOENGINE_API Intersection (Sphere *pkSphere, Frustum *pkFrustum)
bool NEOENGINE_API Intersection (Capsule *pkCapsule, Frustum *pkFrustum)
bool NEOENGINE_API Intersection (const Ray &rkRay, const Vector3d &rkV0, const Vector3d &rkV1, const Vector3d &rkV2, ContactSet *pkContactSet=0, const Vector3d &rkNormal=Vector3d::ZERO)
bool NEOENGINE_API Slice (const Vector3d &rkV0, const Vector3d &rkV1, const Vector3d &rkV2, const Vector3d &rkU0, const Vector3d &rkU1, const Vector3d &rkU2, Vector3d *pkPoint0, Vector3d *pkPoint1, int *piCoplanar=0)
int NEOENGINE_API ClipRectPoly2D (float *pfRect, float *pfPoly, int iNum, float *pfClipped)
int NEOENGINE_API ClipPolyPoly2D (float *pfRefPoly, float *pfRefPolyNormals, int iNumRef, float *pfPoly, int iNum, float *pfClipped)
void NEOENGINE_API ClosestPointLineLine (const Vector3d &rkP0, const Vector3d &rkD0, const Vector3d &rkP1, const Vector3d &rkD1, float *pfT0, float *pfT1)
unsigned int Hash (const char *pszString, unsigned int uiLength=0)
unsigned int Hash (const std::string &rstrString, unsigned int uiLength=0)
NEOENGINE_API std::ostream & operator<< (std::ostream &rkStream, const HashString &rkString)
HashString operator+ (const HashString &rstrOne, const HashString &rstrTwo)
HashString operator+ (const HashString &rstrOne, const std::string &rstrTwo)
HashString operator+ (const HashString &rstrOne, const char *pszTwo)
HashString operator+ (const std::string &rstrOne, const HashString &rstrTwo)
HashString operator+ (const char *pszOne, const HashString &rstrTwo)
NEOENGINE_API std::ostream & operator<< (std::ostream &rkOut, const LogManipulator &rkManip)
template<class T> const T & MIN (const T &a, const T &b)
template<class T> const T & MAX (const T &a, const T &b)
template<class T> const T & MIN3 (const T &a, const T &b, const T &c)
template<class T> const T & MAX3 (const T &a, const T &b, const T &c)
template<class T> void MINMAX (const T &a, const T &b, T &min, T &max)
template<class T> void MINMAX3 (const T &a, const T &b, const T &c, T &min, T &max)
template<class T> const T CLAMP (const T &val, const T &min, const T &max)
float NEOENGINE_API DEGTORAD (float fA)
int NEOENGINE_API RoundFloat (float fNum)
int NEOENGINE_API TruncFloat (float fNum)
float NEOENGINE_API FastInvSqrt (float fN)
NEOENGINE_API std::ostream & operator<< (std::ostream &rkStream, const Vector3d &rkVector)
NEOENGINE_API std::ostream & operator<< (std::ostream &rkStream, const Quaternion &rkQuat)
NEOENGINE_API std::ostream & operator<< (std::ostream &rkStream, const Matrix &rkMatrix)
int NEOENGINE_API Explode (const std::string &rstrSeparators, const std::string &rstrString, std::vector< std::string > *pvstrResult)
int NEOENGINE_API Explode (const char *pszSeparators, char *pszString, std::vector< char * > *pvpszResult)
std::string NEOENGINE_API Strip (const std::string &rstrString, const std::string &rstrDelimiters="\t\n\r")

Variables

NEOENGINE_API LogSource neolog
const NEOENGINE_API float SQRT_3
const NEOENGINE_API float HALF_SQRT_3
const NEOENGINE_API float PI
const NEOENGINE_API float TWO_PI
const NEOENGINE_API float HALF_PI
const NEOENGINE_API float EPSILON
const NEOENGINE_API float SQREPSILON


Enumeration Type Documentation

enum INPUTEVENT
 

Input event types.

Enumeration values:
IE_NONE  Invalid
IE_SYSEVENT  System event, like application close, window resize and other window manager messages
IE_KEYDOWN  Key was pressed
IE_KEYUP  Key was released
IE_MOUSEMOVE  Mouse has moved
IE_MOUSEDOWN  Mouse button pressed
IE_MOUSEUP  Mouse button released

enum LOGLEVEL
 

Predefined log levels For an example on how to use log levels, look at the documentation for the logstream.h file.

Author:
Cody Russell (cody jhu edu)
Enumeration values:
PANIC  Top-priority message that will never be filtered. DO NOT USE THIS unless you really mean it, future versions might cause abort on this message and print lots of debug info
ERROR  The normal error level
WARNING  Warnings that has important information
INFO  General information that is interesting
DEBUG  Debug data, lots of messages on this level


Function Documentation

bool NEOENGINE_API Intersection AABB *  pkAABBOne,
AABB *  pkAABBTwo,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between two AABBs

Parameters:
pkAABBOne First AABB
pkAABBTwo Second AABB
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if the AABBs intersect

bool NEOENGINE_API Intersection AABB *  pkAABB,
OBB *  pkOBB,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between AABB and OBB

Parameters:
pkAABB AABB
pkOBB OBB
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if AABB and OBB intersect

bool NEOENGINE_API Intersection AABB *  pkAABB,
Sphere *  pkSphere,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between AABB and sphere

Parameters:
pkAABB AABB
pkSphere Sphere
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if AABB and sphere intersect

bool NEOENGINE_API Intersection AABB *  pkAABB,
Capsule *  pkCapsule,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between AABB and capsule

Parameters:
pkAABB AABB
pkCapsule Capsule
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if AABB and capsule intersect

bool NEOENGINE_API Intersection OBB *  pkOBBOne,
OBB *  pkOBBTwo,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between two OBBs

Parameters:
pkOBBOne First OBB
pkOBBTwo Second OBB
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if OBBs intersect

bool NEOENGINE_API Intersection OBB *  pkOBB,
Sphere *  pkSphere,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between OBB and sphere

Parameters:
pkOBB OBB
pkSphere Sphere
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if OBB and sphere intersect

bool NEOENGINE_API Intersection OBB *  pkOBB,
Capsule *  pkCapsule,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between OBB and capsule

Parameters:
pkOBB OBB
pkCapsule Capsule
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if OBB and capsule intersect

bool NEOENGINE_API Intersection Sphere *  pkSphereOne,
Sphere *  pkSphereTwo,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between two spheres

Parameters:
pkSphereOne First sphere
pkSphereTwo Second sphere
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if spheres intersect

bool NEOENGINE_API Intersection Sphere *  pkSphere,
Capsule *  pkCapsule,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between sphere and capsule

Parameters:
pkSphere Sphere
pkCapsule Capsule
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if sphere and capsule intersect

bool NEOENGINE_API Intersection Capsule *  pkCapsuleOne,
Capsule *  pkCapsuleTwo,
ContactSet *  pkContactSet = 0,
bool  bInvertNormal = false
 

Intersection between two capsules

Parameters:
pkCapsuleOne First capsule
pkCapsuleTwo Second capsule
pkContactSet Contact set object receiving collision contact data, 0 if not needed
bInvertNormal If false, collision normal will point from second object to first. If true, normal will point from first object to second.
Returns:
true if capsules intersect

bool NEOENGINE_API Intersection AABB *  pkAABB,
Frustum *  pkFrustum
 

Intersection between AABB and frustum

Parameters:
pkAABB AABB
pkFrustum Frustum
Returns:
true if AABB and frustum intersect

bool NEOENGINE_API Intersection OBB *  pkOBB,
Frustum *  pkFrustum
 

Intersection between OBB and frustum

Parameters:
pkOBB OBB
pkFrustum Frustum
Returns:
true if OBB and frustum intersect

bool NEOENGINE_API Intersection Sphere *  pkSphere,
Frustum *  pkFrustum
 

Intersection between sphere and frustum

Parameters:
pkSphere Sphere
pkFrustum Frustum
Returns:
true if sphere and frustum intersect

bool NEOENGINE_API Intersection Capsule *  pkCapsule,
Frustum *  pkFrustum
 

Intersection between capsule and frustum

Parameters:
pkCapsule Capsule
pkFrustum Frustum
Returns:
true if capsule and frustum intersect

bool NEOENGINE_API Intersection const Ray &  rkRay,
const Vector3d &  rkV0,
const Vector3d &  rkV1,
const Vector3d &  rkV2,
ContactSet *  pkContactSet = 0,
const Vector3d &  rkNormal = Vector3d::ZERO
 

Intersection between ray and polygon

Parameters:
rkRay Ray
rkV0 First vertex, first polygon
rkV1 Second vertex, first polygon
rkV2 Third vertex, first polygon
pkContactSet Contact set object receiving collision contact data, 0 if not needed
rkNormal Optional precalculated normal
Returns:
true if ray and polygon intersect

bool NEOENGINE_API Slice const Vector3d &  rkV0,
const Vector3d &  rkV1,
const Vector3d &  rkV2,
const Vector3d &  rkU0,
const Vector3d &  rkU1,
const Vector3d &  rkU2,
Vector3d *  pkPoint0,
Vector3d *  pkPoint1,
int *  piCoplanar = 0
 

Slice two polygons and calculate intersection line

Parameters:
rkV0 First vertex, first polygon
rkV1 Second vertex, first polygon
rkV2 Third vertex, first polygon
rkU0 First vertex, second polygon
rkU1 Second vertex, second polygon
rkU2 Third vertex, second polygon
pkPoint0 Pointer to vector receiving first intersection point
pkPoint1 Pointer to vector receiving second intersection point
piCoplanar Optional pointer to integer receiving coplanar state (non-null indicates polygons are coplanar)

int NEOENGINE_API ClipRectPoly2D float *  pfRect,
float *  pfPoly,
int  iNum,
float *  pfClipped
 

Helper method, clip polygon (triangle or quad) by rectangle (axis aligned) in 2D space

Parameters:
pfRect Rectangle dimensions (x,y)
pfPoly Polygon points, xy pairs
iNum Number of points (only supports 3 or 4 at the moment)
pfClipped Array receiving clipped points, must be dimensioned to take maximum number of clipped points (6/8 for 3/4 point polys)
Returns:
Number of points in final array

int NEOENGINE_API ClipPolyPoly2D float *  pfRefPoly,
float *  pfRefPolyNormals,
int  iNumRef,
float *  pfPoly,
int  iNum,
float *  pfClipped
 

Helper method, clip polygons (triangles or quad) in 2D space

Parameters:
pfRefPoly Clipper polygon points, xy pairs
pfRefPolyNormals Normals (pointing away from polygon) for each edge in polygon
iNumRef Number of points in clipper polygon
pfPoly Polygon points for polygon to be clipped
iNum Number of points (only supports 3 or 4 at the moment)
pfClipped Array receiving clipped points, must be dimensioned to take maximum number of clipped points
Returns:
Number of points in final array

void NEOENGINE_API ClosestPointLineLine const Vector3d &  rkP0,
const Vector3d &  rkD0,
const Vector3d &  rkP1,
const Vector3d &  rkD1,
float *  pfT0,
float *  pfT1
 

Helper method, calculate closes points of two lines

Parameters:
rkP0 Point on first line
rkD0 Direction vector of first line ( l0 = rkP0 + t * rkD0 )
rkP1 Point on first line
rkD1 Direction vector of first line ( l0 = rkP0 + t * rkD0 )
pfT0 Pointer to float receiving factor for first line
pfT1 Pointer to float receiving factor for second line

unsigned int Hash const char *  pszString,
unsigned int  uiLength = 0
[inline]
 

Calculate hash value of string. All engine objects using hashes use this method for calculating the hash value. If you need to manually calculate an hash, you should use this method.

Parameters:
pszString String
uiLength Length to hash (0 for entire string, default)
Returns:
Hash value

unsigned int Hash const std::string &  rstrString,
unsigned int  uiLength = 0
[inline]
 

Calculate hash value of string. All engine objects using hashes use this method for calculating the hash value. If you need to manually calculate an hash, you should use this method.

Parameters:
rstrString String
uiLength Length to hash (0 for entire string, default)
Returns:
Hash value

NEOENGINE_API std::ostream& operator<< std::ostream &  rkStream,
const HashString &  rkString
 

Stream operator for output HashString to stream

Parameters:
rkStream Stream
rkString Hash string object
Returns:
Stream

HashString operator+ const HashString &  rstrOne,
const HashString &  rstrTwo
[inline]
 

Concatenate strings

Parameters:
rstrOne First string
rstrTwo Second string
Returns:
Resulting string

HashString operator+ const HashString &  rstrOne,
const std::string &  rstrTwo
[inline]
 

Concatenate strings

Parameters:
rstrOne First string
rstrTwo Second string
Returns:
Resulting string

HashString operator+ const HashString &  rstrOne,
const char *  pszTwo
[inline]
 

Concatenate strings

Parameters:
rstrOne First string
pszTwo Second string
Returns:
Resulting string

HashString operator+ const std::string &  rstrOne,
const HashString &  rstrTwo
[inline]
 

Concatenate strings

Parameters:
rstrOne First string
rstrTwo Second string
Returns:
Resulting string

HashString operator+ const char *  pszOne,
const HashString &  rstrTwo
[inline]
 

Concatenate strings

Parameters:
pszOne First string
rstrTwo Second string
Returns:
Resulting string

NEOENGINE_API std::ostream& operator<< std::ostream &  rkOut,
const LogManipulator &  rkManip
 

Log manipulator operator. Execute the log manipulator on the log source object (the stream)

Parameters:
rkOut Stream (log source)
rkManip Log manipulator object
Returns:
Stream

const T& MIN const T &  a,
const T &  b
[inline]
 

Parameters:
a First value
b Second value
Returns:
Min of a and b

const T& MAX const T &  a,
const T &  b
[inline]
 

Parameters:
a First value
b Second value
Returns:
Max of a and b

const T& MIN3 const T &  a,
const T &  b,
const T &  c
[inline]
 

Parameters:
a First value
b Second value
c Third value
Returns:
Min of a, b and c

const T& MAX3 const T &  a,
const T &  b,
const T &  c
[inline]
 

Parameters:
a First value
b Second value
c Third value
Returns:
Max of a, b and c

void MINMAX const T &  a,
const T &  b,
T &  min,
T &  max
[inline]
 

Parameters:
a First value
b Second value
min Receives min value
max Receives max value

void MINMAX3 const T &  a,
const T &  b,
const T &  c,
T &  min,
T &  max
[inline]
 

Parameters:
a First value
b Second value
c Third value
min Receives min value
max Receives max value

const T CLAMP const T &  val,
const T &  min,
const T &  max
[inline]
 

Clamp value

Parameters:
val Value
min Min limit
max Max limit
Returns:
Min if (val<min), max if (val>max), otherwise val

float NEOENGINE_API DEGTORAD float  fA  )  [inline]
 

Convert from degrees to radians

Parameters:
fA Angle in degrees
Returns:
Angle in radians

NEOENGINE_API int RoundFloat float  fNum  )  [inline]
 

Round float to nearest int Warning: x86 assembly, non-x86 just casts (truncates)

Parameters:
fNum Value
Returns:
Closest int

NEOENGINE_API int TruncFloat float  fNum  )  [inline]
 

Drop float to next lowest int (use this instead of float->int casts) Warning: Not implemented, just casts.

Parameters:
fNum Value
Returns:
Next lowest int

NEOENGINE_API float FastInvSqrt float  fN  )  [inline]
 

Calculate inverse square root of value

Parameters:
fN Value
Returns:
Inverse squre root of value, 1/sqrt(fN)

NEOENGINE_API std::ostream& operator<< std::ostream &  rkStream,
const Vector3d &  rkVector
 

Output vector to stream

Parameters:
rkStream Stream
rkVector Vector
Returns:
Stream

NEOENGINE_API std::ostream& operator<< std::ostream &  rkStream,
const Quaternion &  rkQuat
 

Output quaternion to stream

Parameters:
rkStream Stream
rkQuat Quaternion
Returns:
Stream

NEOENGINE_API std::ostream& operator<< std::ostream &  rkStream,
const Matrix &  rkMatrix
 

Output matrix to stream

Parameters:
rkStream Stream
rkMatrix Matrix
Returns:
Stream

int NEOENGINE_API Explode const std::string &  rstrSeparators,
const std::string &  rstrString,
std::vector< std::string > *  pvstrResult
 

Tokenize a string

Parameters:
rstrSeparators Token delimiters
rstrString String to tokenize
pvstrResult Vector receiving resulting tokens
Returns:
Number of tokens

int NEOENGINE_API Explode const char *  pszSeparators,
char *  pszString,
std::vector< char * > *  pvpszResult
 

Tokenize a string (NOTE! Modifies pszString argument!)

Parameters:
pszSeparators Token delimiters
pszString String to tokenize
pvpszResult Vector receiving resulting tokens
Returns:
Number of tokens

std::string NEOENGINE_API Strip const std::string &  rstrString,
const std::string &  rstrDelimiters = "\t\n\r"
 

Strip characters from start and end of string, deafult to whitespace stripping

Parameters:
rstrString Input string
rstrDelimiters Characters to strip from start and end of string, default to whitespace (space, tabs and newlines)
Returns:
Stripped string


Variable Documentation

NEOENGINE_API LogSource neolog
 

Global engine log object

const NEOENGINE_API float SQRT_3
 

Value of sqrt(3)

const NEOENGINE_API float HALF_SQRT_3
 

Value of 0.5 * sqrt(3)

const NEOENGINE_API float PI
 

Value of pi

const NEOENGINE_API float TWO_PI
 

Value of 2.0 * pi

const NEOENGINE_API float HALF_PI
 

Value of 0.5 * pi

const NEOENGINE_API float EPSILON
 

Float comparison threshold ( two float values fOne and fTwo are considered equal if fabsf( fOne - fTwo ) < EPSILON )

const NEOENGINE_API float SQREPSILON
 

Float comparison threshold for squares


Generated on Wed Jan 21 14:21:10 2004 for NeoEngine by doxygen 1.3.5