本文整理汇总了C++中CCopyEntity::GetNumChildren方法的典型用法代码示例。如果您正苦于以下问题:C++ CCopyEntity::GetNumChildren方法的具体用法?C++ CCopyEntity::GetNumChildren怎么用?C++ CCopyEntity::GetNumChildren使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CCopyEntity
的用法示例。
在下文中一共展示了CCopyEntity::GetNumChildren方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: InitEntityGraphics
// Initializes CCopyEntity::m_pMeshRenderMethod
// - Initialize the mesh render method
// - Initialize shader parameter loaders
// - Create alpha entities
// - Creates a shader
void BaseEntity::InitEntityGraphics( CCopyEntity &entity,
ShaderHandle& shader,
ShaderTechniqueHandle& tech )
{
if( shader.IsLoaded()
&& tech.GetTechniqueName()
&& 0 < strlen(tech.GetTechniqueName()) )
{
CreateMeshRenderMethod( EntityHandle<>( entity.Self() ), shader, tech );
}
else
{
InitMeshRenderMethod( entity );
}
// create transparent parts of the model as separate entities
if( m_EntityFlag & BETYPE_SUPPORT_TRANSPARENT_PARTS )
{
// Remove any previous alpha entities
int next_child_index = 0;
while( next_child_index < entity.GetNumChildren() )
// for( int i=0; i<entity.GetNumChildren(); i++ )
{
shared_ptr<CCopyEntity> pChild = entity.m_aChild[next_child_index].Get();
if( IsValidEntity(pChild.get())
&& pChild->GetEntityTypeID() == CCopyEntityTypeID::ALPHA_ENTITY )
{
CCopyEntity *pChildRawPtr = pChild.get();
m_pStage->TerminateEntity( pChildRawPtr );
}
else
next_child_index += 1;
}
CreateAlphaEntities( &entity );
}
shared_ptr<BasicMesh> pMesh = entity.m_MeshHandle.GetMesh();
if( !pMesh )
return;
BasicMesh& mesh = *pMesh;
const int num_mesh_materials = mesh.GetNumMaterials();
std::vector<GenericShaderDesc> shader_descs;
shader_descs.resize( num_mesh_materials );
std::vector<int> mirror_subsets_indices;
// std::vector<int> non_mirror_subsets_indices;
if( m_MeshProperty.m_MeshDesc.IsValid() )
// if( true )
{
// The mesh is specified in the base entity
}
else
{
// base entity has no mesh
// - entity's mesh is individual
shader_descs.resize( num_mesh_materials );
for( int i=0; i<num_mesh_materials; i++ )
{
// Fill out the shader desc based on the parameter values of the material
// reflection
bool registered_as_mirror = RegisterAsMirrorIfReflective( entity, mesh, i, shader_descs[i] );
if( registered_as_mirror )
mirror_subsets_indices.push_back( i );
// specularity
if( 0.001f < mesh.GetMaterial(i).m_Mat.fSpecularity )
shader_descs[i].Specular = SpecularSource::UNIFORM;
else
shader_descs[i].Specular = SpecularSource::NONE;
}
vector< pair< GenericShaderDesc, vector<unsigned int> > > grouped_descs;
group_elements( shader_descs, grouped_descs );
// Do a NULL check just in case
// The mesh render method is initialized by InitMeshRenderMethod() above.
if( !entity.m_pMeshRenderMethod )
entity.m_pMeshRenderMethod.reset( new MeshContainerRenderMethod );
bool shader_loaded = false;
if( grouped_descs.size() == 1 )
{
SubsetRenderMethod& render_method = entity.m_pMeshRenderMethod->PrimaryMeshRenderMethod();
render_method.m_Technique.SetTechniqueName( "Default" );
render_method.m_ShaderDesc.pShaderGenerator.reset( new GenericShaderGenerator( grouped_descs[0].first ) );
// shader_loaded = render_method.Load();
shader_loaded = render_method.m_Shader.Load( render_method.m_ShaderDesc );
}
//.........这里部分代码省略.........