My Project
Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ParaEngine::DataGrid Struct Reference

Class providing a 3d grid of data values and methods for accessing and modifying it. More...

#include <DataGrid.h>

Inheritance diagram for ParaEngine::DataGrid:
ParaEngine::AssetEntity ParaEngine::IAttributeFields ParaEngine::IObject ParaEngine::CRefCounted

Public Types

enum  GridFlags { HAS_GRADIENT = 0x01, HAS_COLOURS = 0x02, HAS_WORLD_FRAGMENTS = 0x04 }
 Flags describing what data is stored in the data grid. More...
 
- Public Types inherited from ParaEngine::AssetEntity
enum  AssetState {
  ASSET_STATE_NORMAL, ASSET_STATE_LOCAL, ASSET_STATE_REMOTE, ASSET_STATE_CACHE,
  ASSET_STATE_SYNC_START, ASSET_STATE_SYNC_SUCCEED, ASSET_STATE_SYNC_FAIL, ASSET_STATE_FAILED_TO_LOAD
}
 the asset state. More...
 
enum  AssetType {
  base =0, texture, mesh, multianimation,
  spritevertex, font, sound, mdx,
  parax, database, effectfile, dllplugin,
  datagrid, cadMesh, image
}
 each asset type has a unique asset type number
 
- Public Types inherited from ParaEngine::IAttributeFields
typedef ParaEngine::weak_ptr< IObject, IAttributeFieldsWeakPtr_type
 
- Public Types inherited from ParaEngine::IObject
typedef ParaEngine::weak_ptr< IObjectWeakPtr_type
 

Public Member Functions

virtual AssetType GetType ()
 
 DataGrid ()
 Constructor.
 
virtual ~DataGrid ()
 Virtual destructor.
 
void initialize (int numCellsX, int numCellsY, int numCellsZ, float gridScale, int flags)
 Initializes the data grid. More...
 
int getNumCellsX () const
 Returns the number of grid cells along the x axis.
 
int getNumCellsY () const
 Returns the number of grid cells along the y axis.
 
int getNumCellsZ () const
 Returns the number of grid cells along the z axis.
 
float getGridScale () const
 Returns the grid scale (i.e. the distance along the axes between grid points).
 
Vector3 getPosition ()
 Returns the grids position in space.
 
const void setPosition (const Vector3 &pos)
 Sets the grids position in space.
 
bool hasGradient () const
 Returns true if the grid stores gradient vectors.
 
bool hasColours () const
 Returns true if the grid stores colour values.
 
bool hasMetaWorldFragments () const
 Returns true if the grid stores closest world fragment.
 
float * getValues ()
 Returns a pointer to the array of grid values.
 
const Vector3getVertices () const
 Returns a pointer to the (const) array of grid vertices.
 
Vector3getGradient ()
 Returns a pointer to the array of gradient vectors. More...
 
ColorgetColours ()
 Returns a pointer to the array of colour values. More...
 
std::pair< float, MetaWorldFragment * > * getMetaWorldFragments ()
 Returns a pointer to the array of closest world fragments. More...
 
const CShapeAABBgetBoundingBox () const
 Returns the bounding box of the grid.
 
const CShapeAABBgetBoxSize () const
 
int getGridIndex (int x, int y, int z) const
 Returns the index of the specified grid point.
 
bool mapAABB (const CShapeAABB &aabb, int &x0, int &y0, int &z0, int &x1, int &y1, int &z1) const
 Maps an axis aligned box to the grid points inside it. More...
 
void clear ()
 Clears the data grid.
 
- Public Member Functions inherited from ParaEngine::AssetEntity
 AssetEntity (const AssetKey &key)
 
 ATTRIBUTE_DEFINE_CLASS (AssetEntity)
 
virtual int InstallFields (CAttributeClass *pClass, bool bOverride)
 this class should be implemented if one wants to add new attribute. More...
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetLocalFileName_s, const char **)
 
 ATTRIBUTE_METHOD1 (AssetEntity, SetLocalFileName_s, const char *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetRemoteAssetURL_s, const char **)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsValid_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsLoaded_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsLocked_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, IsInitialized_s, bool *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, GetState_s, int *)
 
 ATTRIBUTE_METHOD1 (AssetEntity, SetState_s, int)
 
virtual const std::string & GetIdentifier ()
 
virtual bool AutoSync (bool bForceSync=false, bool bLazyLoading=true)
 call this function to automatically sync with the remote server according to current asset state More...
 
virtual void Refresh (const char *sFilename=NULL, bool bLazyLoad=false)
 refresh the asset from local disk. More...
 
virtual const string & GetLocalFileName ()
 the actual local file name. More...
 
virtual void SetLocalFileName (const char *sFileName)
 
virtual string GetRemoteAssetURL ()
 get the remote server url of this asset. More...
 
virtual CParameterBlockGetParamBlock (bool bCreateIfNotExist=false)
 get effect parameter block with this object. More...
 
bool IsValid ()
 whether this is a valid resource object. More...
 
bool IsInitialized ()
 whether initialized. More...
 
virtual bool IsLoaded ()
 most assets are loaded asynchronously. More...
 
virtual int Release ()
 call this function to safely release this asset. More...
 
AssetKeyGetKey ()
 return the key object. More...
 
AssetState GetState ()
 return the asset state. More...
 
void SetState (AssetState state)
 set the asset state. More...
 
virtual IAttributeFieldsGetAttributeObject ()
 get the attribute object of this asset. More...
 
virtual HRESULT InitDeviceObjects ()
 
virtual HRESULT RestoreDeviceObjects ()
 
virtual HRESULT InvalidateDeviceObjects ()
 
virtual HRESULT DeleteDeviceObjects ()
 
virtual HRESULT RendererRecreated ()
 callback of listening the event that renderer was recreated on Android/WP8 all opengl related id has already become invalid at this time, no need to release them, just recreate them all in this function.
 
virtual void Cleanup ()
 Clean up additional resources. More...
 
void LoadAsset ()
 load asset. More...
 
void UnloadAsset ()
 unload asset. More...
 
void GarbageCollectMe ()
 if its reference count is zero, unload this asset object. More...
 
bool IsLocked ()
 whether this is a locked resource resource. More...
 
virtual bool Lock (int nMethod=0)
 Lock the object. More...
 
virtual void UnLock ()
 UnLock the object.
 
virtual bool GetBoundingBox (Vector3 *pMin, Vector3 *pMax)
 Get AABB bounding box of the asset object. More...
 
- Public Member Functions inherited from ParaEngine::IAttributeFields
virtual int GetAttributeClassID ()
 attribute class ID should be identical, unless one knows how overriding rules work. More...
 
virtual const char * GetAttributeClassName ()
 a static string, describing the attribute class object's name
 
virtual const char * GetAttributeClassDescription ()
 a static string, describing the attribute class object
 
virtual int GetChildAttributeColumnCount ()
 we support multi-dimensional child object. More...
 
virtual int GetChildAttributeObjectCount (int nColumnIndex=0)
 get the number of child objects (row count) in the given column. More...
 
virtual IAttributeFieldsGetChildAttributeObject (int nRowIndex, int nColumnIndex=0)
 
virtual IAttributeFieldsGetChildAttributeObject (const std::string &sName)
 get attribute by child object. More...
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetName_s, const char **)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetName_s, const char *)
 
 ATTRIBUTE_METHOD (IAttributeFields, PrintObject_s)
 
 ATTRIBUTE_METHOD (IAttributeFields, AddRef_s)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetRefCount_s, int *)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, SetTime_s, int)
 
 ATTRIBUTE_METHOD1 (IAttributeFields, GetTime_s, int *)
 
 ATTRIBUTE_METHOD (IAttributeFields, Release_s)
 
virtual void SetIdentifier (const std::string &sID)
 
virtual bool IsModified ()
 whether some of the fields are modified.It is up to the implementation class to provide this functionality if necessary. More...
 
virtual void SetModified (bool bModified)
 set whether any field has been modified. More...
 
virtual bool ValidateFields ()
 validate all fields and return true if validation passed. More...
 
virtual string GetValidationMessage ()
 get the recent validation message due to the most recent call to ValidateFields()
 
virtual bool ResetField (int nFieldID)
 Reset the field to its initial or default value. More...
 
virtual bool InvokeEditor (int nFieldID, const std::string &sParameters)
 Invoke an (external) editor for a given field. More...
 
virtual bool AddChildAttributeObject (IAttributeFields *pChild, int nRowIndex=-1, int nColumnIndex=0)
 add child object. More...
 
virtual void * QueryObjectByName (const std::string &sObjectType)
 convert to object of a given type. More...
 
virtual void * QueryObject (int nObjectType)
 convert to object of a given type. More...
 
virtual int GetTime ()
 get the current local time in case it is animated in milli seconds frames. More...
 
virtual void SetTime (int nTime)
 
virtual CDynamicAttributeFieldGetDynamicField (const std::string &sName)
 Get a dynamic field with a given name. More...
 
virtual CDynamicAttributeFieldGetDynamicField (int nIndex)
 Get a dynamic field with a given index. More...
 
virtual const char * GetDynamicFieldNameByIndex (int nIndex)
 get field name by index
 
virtual int GetDynamicFieldCount ()
 how many dynamic field this object currently have. More...
 
virtual int SetDynamicField (const std::string &sName, const CVariable &value)
 set a dynamic field with a given name. More...
 
virtual int AddDynamicField (const std::string &sName, ATTRIBUTE_FIELDTYPE dwType)
 add dynamic field and return field index
 
virtual void RemoveAllDynamicFields ()
 remove all dynamic fields
 
virtual int SaveDynamicFieldsToString (std::string &output)
 save only text dynamic fields to fieldname = value text strings. More...
 
virtual int LoadDynamicFieldsFromString (const std::string &input)
 load only text dynamic fields from string More...
 
CAttributeClassGetAttributeClass ()
 get the main attribute class object. More...
 
void PrintObject ()
 print the content of this object to a text file at temp/doc/[ClassName].txt. More...
 
- Public Member Functions inherited from ParaEngine::IObject
virtual void Clone (IObject *obj) const
 Clone the object's contains to a pointer. More...
 
virtual IObjectClone () const
 Clone the object's contains and return a pointer to the newly created object. More...
 
virtual bool Equals (const IObject *obj) const
 Compare the object with another object. More...
 
virtual const ITypeGetType () const
 
virtual std::string ToString () const
 
WeakPtr_typeGetWeakReference ()
 get weak reference object. More...
 
virtual int ProcessObjectEvent (const ObjectEvent &event)
 this function is only used to backward compatibility of ParaObject:AddEvent() function. More...
 
- Public Member Functions inherited from ParaEngine::CRefCounted
void addref () const
 add reference count of the object. More...
 
bool delref () const
 decrease reference count of the object. More...
 
int GetRefCount () const
 get the reference count
 
CRefCountedAddToAutoReleasePool ()
 addref and releases the ownership sometime soon automatically (usually at the end of the current frame). More...
 

Protected Member Functions

virtual void initializeVertices ()
 Initializes the position of grid points and the bounding box. More...
 
- Protected Member Functions inherited from ParaEngine::IAttributeFields
virtual CAttributeClassCreateAttributeClass ()
 initialize fields
 
virtual CDynamicAttributesSetGetDynamicAttributes (bool bCreateIfNotExist=false)
 

Protected Attributes

int mNumCellsX
 The number of grid cells along the x axis of the grid.
 
int mNumCellsY
 The number of grid cells along the y axis of the grid.
 
int mNumCellsZ
 The number of grid cells along the z axis of the grid.
 
int mNumGridPoints
 Total number of grid points.
 
float mGridScale
 The scale of grid cells; this influences the position of grid vertices.
 
Vector3 mPosition
 Position of this Grid.
 
int mGridFlags
 Flags describing what data is stored in the data grid (see DataGrid::GridFlags).
 
float * mValues
 Data grid values.
 
Vector3mVertices
 Vertex positions of the grid points.
 
Vector3mGradient
 Gradient vectors of the grid. More...
 
ColormColours
 Colour values of the grid. More...
 
std::pair< float, MetaWorldFragment * > * mMetaWorldFragments
 Closest World Fragments of the grid. More...
 
CShapeAABB mBoundingBox
 Bounding box of the grid.
 
CShapeAABB mBoxSize
 
void * lastHostObject
 
- Protected Attributes inherited from ParaEngine::IObject
WeakPtr_type m_weak_reference
 
- Protected Attributes inherited from ParaEngine::CRefCounted
int m_refcount
 

Additional Inherited Members

- Static Public Member Functions inherited from ParaEngine::AssetEntity
static const string & GetAssetServerUrl ()
 get the asset server url. More...
 
static void SetAssetServerUrl (const char *pStr)
 set the asset server url. More...
 
- Static Public Member Functions inherited from ParaEngine::IAttributeFields
static HRESULT GetAttributeClassID_s (IAttributeFields *cls, int *p1)
 
static HRESULT GetAttributeClassName_s (IAttributeFields *cls, const char **p1)
 
static bool OpenWithDefaultEditor (const char *sFilename, bool bWaitOnReturn=false)
 Open a given file with the default registered editor in the game engine. More...
 
- Public Attributes inherited from ParaEngine::AssetEntity
AssetKey m_key
 this is the unique key object. More...
 
bool m_bIsInitialized
 whether this entity is initialized;Entity is by default lazily initialized
 
bool m_bIsValid
 whether this is a valid resource object. More...
 

Detailed Description

Class providing a 3d grid of data values and methods for accessing and modifying it.

original code is partially from 2007 Martin Enge, based on code from DWORD, released into public domain. marti.nosp@m.n.en.nosp@m.ge@gm.nosp@m.ail..nosp@m.com

Member Enumeration Documentation

§ GridFlags

Flags describing what data is stored in the data grid.

Enumerator
HAS_GRADIENT 

The data grid stores gradient vectors.

HAS_COLOURS 

The data grid stores colour values.

HAS_WORLD_FRAGMENTS 

The data grid stores closest world fragment.

Member Function Documentation

§ getColours()

Color* ParaEngine::DataGrid::getColours ( )
inline

Returns a pointer to the array of colour values.

Remarks
The returned pointer is only valid if HAS_COLOURS is set in DataGrid::mGridFlags.

§ getGradient()

Vector3* ParaEngine::DataGrid::getGradient ( )
inline

Returns a pointer to the array of gradient vectors.

Remarks
The returned pointer is only valid if HAS_GRADIENT is set in DataGrid::mGridFlags.

§ getMetaWorldFragments()

std::pair<float, MetaWorldFragment*>* ParaEngine::DataGrid::getMetaWorldFragments ( )
inline

Returns a pointer to the array of closest world fragments.

Remarks
The returned pointer is only valid if HAS_WORLD_FRAGMENT is set in DataGrid::mGridFlags.

§ initialize()

void DataGrid::initialize ( int  numCellsX,
int  numCellsY,
int  numCellsZ,
float  gridScale,
int  flags 
)

Initializes the data grid.

Remarks
This function should only be called once. The actual data in the grid is left uninitialized.
Parameters
numCellsXThe number of grid cells along the x axis of the grid.
numCellsYThe number of grid cells along the y axis of the grid.
numCellsZThe number of grid cells along the z axis of the grid.
gridScaleThe scale of grid cells; this influences the position of grid vertices.
flagsFlags describing what data is stored in the data grid (see DataGrid::GridFlags).

§ initializeVertices()

void DataGrid::initializeVertices ( )
protectedvirtual

Initializes the position of grid points and the bounding box.

Remarks
In the default implementation, the grid points form a regular grid centered around (0, 0, 0). The distance along the axes between grid points is determined by mGridScale.
This function is responsible for initializing mBoundingBox to fit around all grid points.

§ mapAABB()

bool DataGrid::mapAABB ( const CShapeAABB aabb,
int &  x0,
int &  y0,
int &  z0,
int &  x1,
int &  y1,
int &  z1 
) const

Maps an axis aligned box to the grid points inside it.

Remarks
This function modifies the values of x0, y0, z0, x1, y1, and z1. (x0, y0, z0) will be the 'minimum' grid point inside the axis aligned box, and (x1, y1, z1) will be the 'maximum' grid point inside the axis aligned box. I.e. the points (x, y, z) for which (x0, y0, z0) <= (x, y, z) <= (x1, y1, z1) lie inside the axis aligned box.
Returns
false if the box is completely outside the grid, otherwise it returns true.
Note
If the function returns true, it is safe to use the values of (x0, y0, z0) and (x1, y1, z1) in a call to getGridIndex().
Warning
If the function returns false, the contents of x0, y0, z0, x1, y1, and z1 are undefined.

Member Data Documentation

§ mColours

Color* ParaEngine::DataGrid::mColours
protected

Colour values of the grid.

Remarks
This array is only allocated if HAS_COLOURS is set in DataGrid::mGridFlags.

§ mGradient

Vector3* ParaEngine::DataGrid::mGradient
protected

Gradient vectors of the grid.

Remarks
This array is only allocated if HAS_GRADIENT is set in DataGrid::mGridFlags.

§ mMetaWorldFragments

std::pair<float, MetaWorldFragment*>* ParaEngine::DataGrid::mMetaWorldFragments
protected

Closest World Fragments of the grid.

Remarks
This array is only allocated if HAS_WORLD_FRAGMENTS is set in DataGrid::mGridFlags.

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