class RED::Object
Base REDsdk object class. More...
#include <REDObject.h>
Inherits: IREDObject.
Inherited by: Adapter, Address, AnimationClip, AnimationData, BoundingSphere, ChunkInterpretersDictionary, Color, Factory, FileHeader, FileInfo, FileSystemTools, FrameStatistics, ImageTools, IOTools, LayerSet, LogEntry, Map, Matrix, PassStatistics, PostProcess, Quaternion, RenderCode, RenderLayer, RenderShaderData, RenderShaderParameter, RNG, Shader, ShapePath, State, StateShaderPlatformData, StreamingPolicy, String, Thread, Timer, UserData, UserVariable, Vector, Vector3, Vector4, ViewpointStatistics, VolumetricEffect and WindowRenderInfo.
Public functions:
Object ( ) | |
virtual | ~Object ( ) |
virtual void * | As ( const RED::CID & iCID ) |
virtual const void * | As ( const RED::CID & iCID ) const |
template< class T_As > const T_As * | As ( ) const |
template< class T_As > T_As * | As ( ) |
unsigned int | GetID ( ) const |
void | operator delete ( void * iAddress ) |
void | operator delete ( void * iAddress, void * iWhere ) |
void | operator delete ( void * iAddress, int iCaller ) |
void | operator delete[] ( void * iAddress ) |
void | operator delete[] ( void * iAddress, int iCaller ) |
void | operator delete[] ( void * iAddress, void * iWhere ) |
void * | operator new ( size_t iSize, int iCaller ) |
void * | operator new ( size_t iSize ) |
void * | operator new ( size_t iSize, void * iWhere ) |
void * | operator new[] ( size_t iSize, int iCaller ) |
void * | operator new[] ( size_t iSize, void * iWhere ) |
void * | operator new[] ( size_t iSize ) |
void | SetID ( const char * iIDString ) |
void | SetID ( unsigned int iID ) |
void | SetID ( const RED::String & iString ) |
Public static functions:
static RED::CID | GetClassID ( ) |
static unsigned int | GetIDFromData ( const char * iData, RED::uint64 iLength ) |
static unsigned int | GetIDFromString ( const char * iString ) |
Protected variables:
unsigned int | _id |
Private static variables:
static unsigned int | _counter |
Detailed description:
Base REDsdk object class.
All REDsdk objects derive from this class to enable the use of the interface system. A great advantage in using that class as a base class for your objects is that all your allocation/deallocation operations will be managed by the built-in memory allocator. Therefore, if you enable memory leak tracking, you'll be able to receive detailed memory usage reports.
Each RED::Object instance can have an ID set. This ID is not guaranteed to be unique and it's up to the user to manage it. However, by having a strict ID management policy, you can easily use that feature to search nodes in DAGs, find materials or textures and so on.
The object ID is stored internally as an unsigned int. It can be set using two different methods:
myObject->SetID( 123456789 );
or
myObject->SetID( "MyObject" );
In the second case, a hash key is computed from the input string an stored as the object ID. Once again, using hash keys do not preserve from conflicts and there is always a probability that two different strings give the same hash key.
Functions documentation
public RED::Object::Object | ( | ) |
Default constructor.
Each created object receives a default unique identifier value. First object receives an ID equal to 0x80000000, which is incremented by one each time an object is created.
This method prevents most ID collisions to arise. However, we do not guarantee that two objects created on two different threads will receive different IDs, as two concurrent threads may assign the same value before incrementing the counter. On the other hand, two objects created on the same thread will never get the same ID.
The RED::Object::GetIDFromString or RED::String::GetIDFromString methods can be used to convert an unicode string into a numeric ID with a low name collision risk.
The RED::Object::SetID method can be used to define a numeric ID from the contents of a string as a char* or from the raw contents of an UTF-8 RED::String.
public virtual RED::Object::~Object | ( | ) |
Destructor.
public static RED::CID RED::Object::GetClassID | ( | ) |
Reimplemented by: RED::AnimationClip::GetClassID, RED::AnimationData::GetClassID, RED::BoundingSphere::GetClassID, RED::Color::GetClassID, RED::FastRandom::GetClassID, RED::FileHeader::GetClassID, RED::FileInfo::GetClassID, RED::FrameStatistics::GetClassID, RED::LayerSet::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Map::GetClassID, RED::Matrix::GetClassID, RED::PassStatistics::GetClassID, RED::PostProcess::GetClassID, RED::Quaternion::GetClassID, RED::Random::GetClassID, RED::RayCutoffShader::GetClassID, RED::RayGIDiffuseShader::GetClassID, RED::RayGIReflectionColorShader::GetClassID, RED::RayGIRefractionColorShader::GetClassID, RED::RayReflectionShader::GetClassID, RED::RayRefractionShader::GetClassID, RED::ReflectionShader::GetClassID, RED::RenderCode::GetClassID, RED::RenderLayer::GetClassID, RED::RenderShader::GetClassID, RED::RenderShaderAAFilter::GetClassID, RED::RenderShaderAmbient::GetClassID, RED::RenderShaderAnisotropic::GetClassID, RED::RenderShaderData::GetClassID, RED::RenderShaderEdges::GetClassID, RED::RenderShaderEnvironmental::GetClassID, RED::RenderShaderLambert::GetClassID, RED::RenderShaderLogo::GetClassID, RED::RenderShaderParameter::GetClassID, RED::RenderShaderPhong::GetClassID, RED::RenderShaderRefractionEffect::GetClassID, RED::RenderShaderSectionCut::GetClassID, RED::RenderShaderSolid::GetClassID, RED::RenderShaderText::GetClassID, RED::RenderShaderVertexColor::GetClassID, RED::RenderShaderViewport::GetClassID, RED::RNG::GetClassID, RED::Shader::GetClassID, RED::ShaderString::GetClassID, RED::ShapePath::GetClassID, RED::State::GetClassID, RED::StateShader::GetClassID, RED::StateShaderPlatformData::GetClassID, RED::StreamingPolicy::GetClassID, RED::String::GetClassID, RED::Thread::GetClassID, RED::Timer::GetClassID, RED::UserData::GetClassID, RED::UserDataRaw::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector::GetClassID, RED::Vector3::GetClassID, RED::Vector4::GetClassID, RED::ViewpointStatistics::GetClassID, RED::VolumetricEffect::GetClassID, RED::VolumetricEffectBoxVolume::GetClassID, RED::VolumetricEffectClouds::GetClassID, RED::VolumetricEffectLightVolume::GetClassID and RED::WindowRenderInfo::GetClassID.
public static unsigned int RED::Object::GetIDFromData | ( | const char * | iData, |
RED::uint64 | iLength | ||
) |
Gets a unique ID from a data array.
Converts the input iData into an unique ID. This ID can be used as an identifier on all REDsdk objects with a low collision risk between two names.
Parameters:
iData | the data array to convert into a unique key. |
iLength | length of the data array in bytes. |
Returns:
public static unsigned int RED::Object::GetIDFromString | ( | const char * | iString | ) |
Gets a unique ID from a string.
Converts the input iString into an unique ID. This ID can be used as an identifier on all REDsdk objects with a low collision risk between two names.
Parameters:
iString: | The string to convert into a unique key. |
Returns:
public virtual void * RED::Object::As | ( | const RED::CID & | iCID | ) |
Converts the object to an instance of the given type.
Parameters:
iCID: | Requested class. |
Returns:
Implements: RED::IREDObject::As.
Reimplemented by: RED::AnimationClip::As, RED::AnimationData::As, RED::BoundingSphere::As, RED::Color::As, RED::FastRandom::As, RED::FileHeader::As, RED::FileInfo::As, RED::FrameStatistics::As, RED::LayerSet::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Matrix::As, RED::PassStatistics::As, RED::PostProcess::As, RED::Quaternion::As, RED::Random::As, RED::RayCutoffShader::As, RED::RayGIDiffuseShader::As, RED::RayGIReflectionColorShader::As, RED::RayGIRefractionColorShader::As, RED::RayReflectionShader::As, RED::RayRefractionShader::As, RED::ReflectionShader::As, RED::RenderCode::As, RED::RenderLayer::As, RED::RenderShader::As, RED::RenderShaderAAFilter::As, RED::RenderShaderAmbient::As, RED::RenderShaderAnisotropic::As, RED::RenderShaderData::As, RED::RenderShaderEdges::As, RED::RenderShaderEnvironmental::As, RED::RenderShaderLambert::As, RED::RenderShaderLogo::As, RED::RenderShaderParameter::As, RED::RenderShaderPhong::As, RED::RenderShaderRefractionEffect::As, RED::RenderShaderSectionCut::As, RED::RenderShaderSolid::As, RED::RenderShaderText::As, RED::RenderShaderVertexColor::As, RED::RenderShaderViewport::As, RED::RNG::As, RED::Shader::As, RED::ShaderString::As, RED::ShapePath::As, RED::State::As, RED::StateShader::As, RED::StateShaderPlatformData::As, RED::StreamingPolicy::As, RED::String::As, RED::Thread::As, RED::Timer::As, RED::UserData::As, RED::UserDataRaw::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector3::As, RED::Vector4::As, RED::ViewpointStatistics::As, RED::VolumetricEffect::As, RED::VolumetricEffectBoxVolume::As, RED::VolumetricEffectClouds::As, RED::VolumetricEffectLightVolume::As and RED::WindowRenderInfo::As.
public virtual const void * RED::Object::As | ( | const RED::CID & | iCID | ) const |
Converts the object to an instance of the given type.
Parameters:
iCID: | Requested class. |
Returns:
Implements: RED::IREDObject::As.
Reimplemented by: RED::AnimationClip::As, RED::AnimationData::As, RED::BoundingSphere::As, RED::Color::As, RED::FastRandom::As, RED::FileHeader::As, RED::FileInfo::As, RED::FrameStatistics::As, RED::LayerSet::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Matrix::As, RED::PassStatistics::As, RED::PostProcess::As, RED::Quaternion::As, RED::Random::As, RED::RayCutoffShader::As, RED::RayGIDiffuseShader::As, RED::RayGIReflectionColorShader::As, RED::RayGIRefractionColorShader::As, RED::RayReflectionShader::As, RED::RayRefractionShader::As, RED::ReflectionShader::As, RED::RenderCode::As, RED::RenderLayer::As, RED::RenderShader::As, RED::RenderShaderAAFilter::As, RED::RenderShaderAmbient::As, RED::RenderShaderAnisotropic::As, RED::RenderShaderData::As, RED::RenderShaderEdges::As, RED::RenderShaderEnvironmental::As, RED::RenderShaderLambert::As, RED::RenderShaderLogo::As, RED::RenderShaderParameter::As, RED::RenderShaderPhong::As, RED::RenderShaderRefractionEffect::As, RED::RenderShaderSectionCut::As, RED::RenderShaderSolid::As, RED::RenderShaderText::As, RED::RenderShaderVertexColor::As, RED::RenderShaderViewport::As, RED::RNG::As, RED::Shader::As, RED::ShaderString::As, RED::ShapePath::As, RED::State::As, RED::StateShader::As, RED::StateShaderPlatformData::As, RED::StreamingPolicy::As, RED::String::As, RED::Thread::As, RED::Timer::As, RED::UserData::As, RED::UserDataRaw::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector3::As, RED::Vector4::As, RED::ViewpointStatistics::As, RED::VolumetricEffect::As, RED::VolumetricEffectBoxVolume::As, RED::VolumetricEffectClouds::As, RED::VolumetricEffectLightVolume::As and RED::WindowRenderInfo::As.
template< class T_As > public const T_As * RED::Object::As | ( | ) const |
Template version of the as const method.
Simply set T to be the class you want to retrieve an interface to.
Returns:
Reimplements: RED::IREDObject::As.
Reimplemented by: RED::AnimationClip::As, RED::AnimationData::As, RED::BoundingSphere::As, RED::Color::As, RED::FastRandom::As, RED::FileHeader::As, RED::FileInfo::As, RED::FrameStatistics::As, RED::LayerSet::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Matrix::As, RED::PassStatistics::As, RED::PostProcess::As, RED::Quaternion::As, RED::Random::As, RED::RayCutoffShader::As, RED::RayGIDiffuseShader::As, RED::RayGIReflectionColorShader::As, RED::RayGIRefractionColorShader::As, RED::RayReflectionShader::As, RED::RayRefractionShader::As, RED::ReflectionShader::As, RED::RenderCode::As, RED::RenderLayer::As, RED::RenderShader::As, RED::RenderShaderAAFilter::As, RED::RenderShaderAmbient::As, RED::RenderShaderAnisotropic::As, RED::RenderShaderData::As, RED::RenderShaderEdges::As, RED::RenderShaderEnvironmental::As, RED::RenderShaderLambert::As, RED::RenderShaderLogo::As, RED::RenderShaderParameter::As, RED::RenderShaderPhong::As, RED::RenderShaderRefractionEffect::As, RED::RenderShaderSectionCut::As, RED::RenderShaderSolid::As, RED::RenderShaderText::As, RED::RenderShaderVertexColor::As, RED::RenderShaderViewport::As, RED::RNG::As, RED::Shader::As, RED::ShaderString::As, RED::ShapePath::As, RED::State::As, RED::StateShader::As, RED::StateShaderPlatformData::As, RED::StreamingPolicy::As, RED::String::As, RED::Thread::As, RED::Timer::As, RED::UserData::As, RED::UserDataRaw::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector3::As, RED::Vector4::As, RED::ViewpointStatistics::As, RED::VolumetricEffect::As, RED::VolumetricEffectBoxVolume::As, RED::VolumetricEffectClouds::As, RED::VolumetricEffectLightVolume::As and RED::WindowRenderInfo::As.
template< class T_As > public T_As * RED::Object::As | ( | ) |
Template version of the as method.
Simply set T to be the class you want to retrieve an interface to.
Returns:
Reimplements: RED::IREDObject::As.
Reimplemented by: RED::AnimationClip::As, RED::AnimationData::As, RED::BoundingSphere::As, RED::Color::As, RED::FastRandom::As, RED::FileHeader::As, RED::FileInfo::As, RED::FrameStatistics::As, RED::LayerSet::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Map::As, RED::Matrix::As, RED::PassStatistics::As, RED::PostProcess::As, RED::Quaternion::As, RED::Random::As, RED::RayCutoffShader::As, RED::RayGIDiffuseShader::As, RED::RayGIReflectionColorShader::As, RED::RayGIRefractionColorShader::As, RED::RayReflectionShader::As, RED::RayRefractionShader::As, RED::ReflectionShader::As, RED::RenderCode::As, RED::RenderLayer::As, RED::RenderShader::As, RED::RenderShaderAAFilter::As, RED::RenderShaderAmbient::As, RED::RenderShaderAnisotropic::As, RED::RenderShaderData::As, RED::RenderShaderEdges::As, RED::RenderShaderEnvironmental::As, RED::RenderShaderLambert::As, RED::RenderShaderLogo::As, RED::RenderShaderParameter::As, RED::RenderShaderPhong::As, RED::RenderShaderRefractionEffect::As, RED::RenderShaderSectionCut::As, RED::RenderShaderSolid::As, RED::RenderShaderText::As, RED::RenderShaderVertexColor::As, RED::RenderShaderViewport::As, RED::RNG::As, RED::Shader::As, RED::ShaderString::As, RED::ShapePath::As, RED::State::As, RED::StateShader::As, RED::StateShaderPlatformData::As, RED::StreamingPolicy::As, RED::String::As, RED::Thread::As, RED::Timer::As, RED::UserData::As, RED::UserDataRaw::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector::As, RED::Vector3::As, RED::Vector4::As, RED::ViewpointStatistics::As, RED::VolumetricEffect::As, RED::VolumetricEffectBoxVolume::As, RED::VolumetricEffectClouds::As, RED::VolumetricEffectLightVolume::As and RED::WindowRenderInfo::As.
public unsigned int RED::Object::GetID | ( | ) const |
Gets the id of the object.
Returns:
public void RED::Object::operator delete | ( | void * | iAddress | ) |
Local operator delete definition.
Parameters:
iAddress: | Released memory address. |
public void RED::Object::operator delete | ( | void * | iAddress, |
void * | iWhere | ||
) |
Local operator delete definition.
Parameters:
iAddress: | Released memory address. |
iWhere: | Placement delete position parameter. |
public void RED::Object::operator delete | ( | void * | iAddress, |
int | iCaller | ||
) |
Local operator delete [] definition.
Parameters:
iAddress: | Released memory address. |
iCaller: | Caller of the memory release operation. |
public void RED::Object::operator delete[] | ( | void * | iAddress | ) |
Local operator delete [] definition.
Parameters:
iAddress: | Released memory address. |
public void RED::Object::operator delete[] | ( | void * | iAddress, |
int | iCaller | ||
) |
Local operator delete [] definition.
Parameters:
iAddress: | Released memory address. |
iCaller: | Caller of the memory release operation. |
public void RED::Object::operator delete[] | ( | void * | iAddress, |
void * | iWhere | ||
) |
Local operator delete [] definition.
Parameters:
iAddress: | Released memory address. |
iWhere: | Placement delete position parameter. |
public void * RED::Object::operator new | ( | size_t | iSize, |
int | iCaller | ||
) |
Local operator new definition.
The custom new operator is called through 'rnew'. See the RED::MemoryAllocator class for all details on customized allocations.
Parameters:
iSize: | Byte size of the allocation. |
iCaller: | Identifier of the allocation caller. |
Returns:
public void * RED::Object::operator new | ( | size_t | iSize | ) |
Local operator new definition.
Parameters:
iSize: | Byte size of the allocation. |
Returns:
public void * RED::Object::operator new | ( | size_t | iSize, |
void * | iWhere | ||
) |
Local operator new definition.
Parameters:
iSize: | Byte size of the allocation. |
iWhere: | Placement new position parameter. |
Returns:
public void * RED::Object::operator new[] | ( | size_t | iSize, |
int | iCaller | ||
) |
Local operator new [] definition.
The custom new operator is called through 'rnew'. See the RED::MemoryAllocator class for all details on customized allocations.
Parameters:
iSize: | Byte size of the allocation. |
iCaller: | Identifier of the allocation caller. |
Returns:
public void * RED::Object::operator new[] | ( | size_t | iSize, |
void * | iWhere | ||
) |
Local operator new [] definition.
Parameters:
iSize: | Byte size of the allocation. |
iWhere: | Placement new position parameter. |
Returns:
public void * RED::Object::operator new[] | ( | size_t | iSize | ) |
Local operator new [] definition.
Parameters:
iSize: | Byte size of the allocation. |
Returns:
public void RED::Object::SetID | ( | const char * | iIDString | ) |
Sets the id of the object.
Parameters:
iIDString: | The string to convert into a unique numerical ID. |
public void RED::Object::SetID | ( | unsigned int | iID | ) |
Sets the id of the object.
Parameters:
iID: | The new id of the object. |
public void RED::Object::SetID | ( | const RED::String & | iString | ) |
Sets the id of the object.
Parameters:
iString: | Source string contents used to define the ID of the object. The string untranslated buffer is used to define the numerical ID value. |
Variables documentation
_id: id of the object.
_counter: Global ID counter. Incremented by one each time an object is being created.