本文整理汇总了C++中reflect::ObjectPtr类的典型用法代码示例。如果您正苦于以下问题:C++ ObjectPtr类的具体用法?C++ ObjectPtr怎么用?C++ ObjectPtr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ObjectPtr类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnMoveDown
void ReflectStlVectorInterpreter::OnMoveDown( const ButtonClickedArgs& args )
{
Reflect::ObjectPtr clientData = args.m_Control->GetClientData();
if ( clientData.ReferencesObject() && clientData->IsClass( Reflect::GetClass<ClientData>() ) )
{
ClientData* data = static_cast< ClientData* >( clientData.Ptr() );
List* list = static_cast< List* >( data->GetControl() );
std::set< size_t > selectedItemIndices = list->a_SelectedItemIndices.Get();
if ( !selectedItemIndices.empty() )
{
// for each array in the selection set (the objects the array data is connected to)
std::vector< DataPtr >::const_iterator serItr = m_Datas.begin();
std::vector< DataPtr >::const_iterator serEnd = m_Datas.end();
for ( ; serItr != serEnd; ++serItr )
{
Reflect::StlVectorData* arrayData = Reflect::AssertCast<Reflect::StlVectorData>(*serItr);
arrayData->MoveDown( selectedItemIndices );
}
list->a_SelectedItemIndices.Set( selectedItemIndices );
args.m_Control->GetCanvas()->Read();
}
}
}
示例2: OnRemove
///////////////////////////////////////////////////////////////////////////////
// Callback for when the remove button is pressed. If there are any items
// selected in the list control, they will be removed from the list.
//
void ReflectStlSetInterpreter::OnRemove( const ButtonClickedArgs& args )
{
Reflect::ObjectPtr clientData = args.m_Control->GetClientData();
if ( clientData.ReferencesObject() && clientData->IsClass( Reflect::GetClass<ClientData>() ) )
{
ClientData* data = static_cast< ClientData* >( clientData.Ptr() );
List* list = static_cast< List* >( data->GetControl() );
const std::set< size_t >& selectedItemIndices = list->a_SelectedItemIndices.Get();
if ( !selectedItemIndices.empty() )
{
// for each item in the array to remove (by index)
std::set< size_t >::const_reverse_iterator itr = selectedItemIndices.rbegin();
std::set< size_t >::const_reverse_iterator end = selectedItemIndices.rend();
for ( ; itr != end; ++itr )
{
// for each array in the selection set (the objects the array data is connected to)
std::vector< DataPtr >::const_iterator serItr = m_Datas.begin();
std::vector< DataPtr >::const_iterator serEnd = m_Datas.end();
for ( ; serItr != serEnd; ++serItr )
{
Reflect::StlSetData* setData = Reflect::AssertCast<Reflect::StlSetData>(*serItr);
std::vector< DataPtr > items;
setData->GetItems( items );
setData->RemoveItem( items[ *itr ] );
}
}
list->a_SelectedItemIndices.Set( std::set< size_t > () );
args.m_Control->GetCanvas()->Read();
}
}
}
示例3: OnRestoreDefaults
void SettingsDialog::OnRestoreDefaults( wxCommandEvent& args )
{
wxMessageDialog dialog( this, wxT( "Are you sure you want to reset these settings to the default values?" ), wxT( "Confirm Default Settings" ), wxYES_NO );
if ( dialog.ShowModal() == wxID_NO )
{
return;
}
if ( !m_CurrentSetting )
{
return;
}
Reflect::ObjectPtr defaultElement = Reflect::SafeCast<Reflect::Object>( Reflect::Registry::GetInstance()->CreateInstance( m_CurrentSetting->m_Clone->GetClass() ) );
if ( !defaultElement )
{
return;
}
if ( !defaultElement->Equals( m_CurrentSetting->m_Clone ) )
{
defaultElement->CopyTo( m_CurrentSetting->m_Clone );
m_CurrentSetting->m_Clone->RaiseChanged();
m_CurrentSetting->m_Canvas->Read();
}
}
示例4: CanAdd
///////////////////////////////////////////////////////////////////////////////
// Returns true if the specified item can be added to the array. This is
// determined by checking to make sure that the item derived from the common
// base class that was specified earlier.
//
bool ClipboardElementArray::CanAdd( const Reflect::ObjectPtr& item ) const
{
if ( !item.ReferencesObject() )
{
return false;
}
return item->IsA( GetCommonBaseClass() );
}
示例5: OnAdd
///////////////////////////////////////////////////////////////////////////////
// Callback for when the add button is pressed. Displays a dialog that lets
// you enter a new key-value pair. If you enter a key that already exists in
// the list, you will be asked if you want to replace it or not.
//
void ReflectStlSetInterpreter::OnAdd( const ButtonClickedArgs& args )
{
Reflect::ObjectPtr clientData = args.m_Control->GetClientData();
if ( clientData.ReferencesObject() && clientData->IsClass( Reflect::GetClass<ClientData>() ) )
{
ClientData* data = static_cast< ClientData* >( clientData.Ptr() );
List* list = static_cast< List* >( data->GetControl() );
list->e_AddItem.Raise( AddItemArgs() );
args.m_Control->GetCanvas()->Read();
}
}
示例6:
bool Helium::Material::LoadPersistentResourceObject( Reflect::ObjectPtr &_object )
{
HELIUM_ASSERT(_object.ReferencesObject());
if (!_object.ReferencesObject())
{
return false;
}
_object->CopyTo(&m_persistentResourceData);
return true;
}
示例7: MemorySet
bool Helium::Font::LoadPersistentResourceObject( Reflect::ObjectPtr &_object )
{
HELIUM_ASSERT(_object.ReferencesObject());
if (!_object.ReferencesObject())
{
return false;
}
_object->CopyTo(&m_persistentResourceData);
uint_fast32_t characterCount = static_cast<uint_fast32_t>(m_persistentResourceData.m_characters.GetSize());
uint_fast8_t textureCount = m_persistentResourceData.m_textureCount;
delete [] m_persistentResourceData.m_pspTextures;
m_persistentResourceData.m_pspTextures = NULL;
delete [] m_persistentResourceData.m_pTextureLoadIds;
m_persistentResourceData.m_pTextureLoadIds = NULL;
if( textureCount != 0 )
{
m_persistentResourceData.m_pspTextures = new RTexture2dPtr [ textureCount ];
HELIUM_ASSERT( m_persistentResourceData.m_pspTextures );
if( m_persistentResourceData.m_pspTextures )
{
m_persistentResourceData.m_pTextureLoadIds = new size_t [ textureCount ];
HELIUM_ASSERT( m_persistentResourceData.m_pTextureLoadIds );
if( m_persistentResourceData.m_pTextureLoadIds )
{
MemorySet(
m_persistentResourceData.m_pTextureLoadIds,
0xff,
static_cast< size_t >( textureCount ) * sizeof( m_persistentResourceData.m_pTextureLoadIds[ 0 ] ) );
}
else
{
delete [] m_persistentResourceData.m_pspTextures;
m_persistentResourceData.m_pspTextures = NULL;
}
}
if( !m_persistentResourceData.m_pspTextures )
{
m_persistentResourceData.m_textureCount = 0;
}
}
return true;
}
示例8:
bool Helium::Mesh::LoadPersistentResourceObject( Reflect::ObjectPtr &_object )
{
m_spVertexBuffer.Release();
m_spIndexBuffer.Release();
HELIUM_ASSERT(_object.ReferencesObject());
if (!_object.ReferencesObject())
{
return false;
}
_object->CopyTo(&m_persistentResourceData);
return true;
}
示例9: CacheResource
//.........这里部分代码省略.........
resource_data->m_shaderVariantIndices[ shaderTypeIndex ] );
if( IsInvalid( variantLoadId ) )
{
continue;
}
ShaderVariantPtr spVariant;
while( !pShader->TryFinishLoadVariant( variantLoadId, spVariant ) )
{
}
ShaderVariant* pVariant = spVariant;
if( !pVariant )
{
continue;
}
const Resource::PreprocessedData& rVariantData = pVariant->GetPreprocessedData(
static_cast< Cache::EPlatform >( platformIndex ) );
HELIUM_ASSERT( rVariantData.bLoaded );
const DynamicArray< DynamicArray< uint8_t > >& rVariantSubDataBuffers = rVariantData.subDataBuffers;
size_t variantSubDataCount = rVariantSubDataBuffers.GetSize();
HELIUM_ASSERT( variantSubDataCount != 0 );
HELIUM_ASSERT( variantSubDataCount % shaderProfileCount == 0 );
size_t systemOptionSetCount = variantSubDataCount / shaderProfileCount;
for( size_t profileIndex = 0; profileIndex < shaderProfileCount; ++profileIndex )
{
// Get the first option set of each profile
const DynamicArray< uint8_t >& rVariantSubData =
rVariantSubDataBuffers[ profileIndex * systemOptionSetCount ];
Reflect::ObjectPtr variantSubDataObjectPtr =
Cache::ReadCacheObjectFromBuffer(rVariantSubData);
if (!variantSubDataObjectPtr.ReferencesObject())
{
HELIUM_TRACE(
TraceLevels::Error,
"MaterialResourceHandler: A shader variant subdata could not be read. (Option Set: %d Profile: %d)",
0,
profileIndex );
failedToWriteASubdata = true;
}
else if (!variantSubDataObjectPtr->IsA(Reflect::GetMetaClass<CompiledShaderData>()))
{
HELIUM_TRACE(
TraceLevels::Error,
"MaterialResourceHandler: A shader variant subdata was of an unexpected type. (Option Set: %d Profile: %d)\n",
0,
profileIndex );
failedToWriteASubdata = true;
}
else
{
CompiledShaderData &csd = *Reflect::AssertCast<CompiledShaderData>(variantSubDataObjectPtr.Get());
size_t bufferCount = csd.constantBuffers.GetSize();
for( size_t bufferIndex = 0; bufferIndex < bufferCount; ++bufferIndex )
{
const ShaderConstantBufferInfo& rBufferInfo = csd.constantBuffers[ bufferIndex ];
示例10: if
bool Helium::AssetIdentifier::Identify( const Reflect::ObjectPtr& object, Name* identity )
{
Asset *pAsset = Reflect::SafeCast<Asset>(object);
if ( pAsset )
{
if ( identity )
{
identity->Set(pAsset->GetPath().ToString());
HELIUM_TRACE( TraceLevels::Info, "Identifying object [%s]\n", identity->Get() );
}
return true;
}
else if ( object )
{
HELIUM_TRACE( TraceLevels::Info, "Deferring identification of object of type [%s]\n", object->GetMetaClass()->m_Name );
}
return false;
}