本文整理汇总了C++中scene::Path::parent方法的典型用法代码示例。如果您正苦于以下问题:C++ Path::parent方法的具体用法?C++ Path::parent怎么用?C++ Path::parent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scene::Path
的用法示例。
在下文中一共展示了Path::parent方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: post
void post( const scene::Path& path, scene::Instance& instance ) const {
Selectable *selectable = Instance_getSelectable( instance );
if ( selectable && selectable->isSelected() ) {
Entity* entity = Node_getEntity( path.top() );
if ( entity == 0 && Node_isPrimitive( path.top() ) ) {
NodeSmartReference child( path.top().get() );
NodeSmartReference parent( path.parent().get() );
if ( path.size() >= 3 && parent != worldspawn ) {
NodeSmartReference parentparent( path[path.size() - 3].get() );
Node_getTraversable( parent )->erase( child );
Node_getTraversable( group )->insert( child );
if ( Node_getTraversable( parent )->empty() ) {
//deleteme.push(DeletionPair(parentparent, parent));
Node_getTraversable( parentparent )->erase( parent );
}
}
else
{
Node_getTraversable( parent )->erase( child );
Node_getTraversable( group )->insert( child );
}
}
}
}
示例2: post
void post( const scene::Path& path, scene::Instance& instance ) const {
Entity* entity = Node_getEntity( path.top() );
if ( entity != 0 && ( instance.childSelected() || Instance_getSelectable( instance )->isSelected() ) ) {
if( path.top().get_pointer() == m_world ){ /* do not want to convert whole worldspawn entity */
if( instance.childSelected() && !m_2world ){ /* create an entity from world brushes instead */
EntityClass* entityClass = GlobalEntityClassManager().findOrInsert( m_classname, true );
if( entityClass->fixedsize )
return;
//is important to have retexturing here; if doing in the end, undo doesn't succeed; //don't do this extra now, as it requires retexturing, working for subgraph
// if ( string_compare_nocase_n( m_classname, "trigger_", 8 ) == 0 ){
// Scene_PatchSetShader_Selected( GlobalSceneGraph(), GetCommonShader( "trigger" ).c_str() );
// Scene_BrushSetShader_Selected( GlobalSceneGraph(), GetCommonShader( "trigger" ).c_str() );
// }
NodeSmartReference node( GlobalEntityCreator().createEntity( entityClass ) );
Node_getTraversable( GlobalSceneGraph().root() )->insert( node );
scene::Path entitypath( makeReference( GlobalSceneGraph().root() ) );
entitypath.push( makeReference( node.get() ) );
scene::Instance& entityInstance = findInstance( entitypath );
if ( g_pGameDescription->mGameType == "doom3" ) {
Node_getEntity( node )->setKeyValue( "model", Node_getEntity( node )->getKeyValue( "name" ) );
}
//Scene_parentSelectedBrushesToEntity( GlobalSceneGraph(), node );
Scene_parentSubgraphSelectedBrushesToEntity( GlobalSceneGraph(), node, path );
Scene_forEachChildSelectable( SelectableSetSelected( true ), entityInstance.path() );
}
return;
}
else if( m_2world ){ /* ungroupSelectedEntities */ //condition is skipped with world = 0, so code next to this may create multiple worldspawns; todo handle this very special case?
if( node_is_group( path.top() ) ){
parentBrushes( path.top(), *m_world );
Path_deleteTop( path );
}
return;
}
EntityClass* eclass = GlobalEntityClassManager().findOrInsert( m_classname, node_is_group( path.top() ) );
NodeSmartReference node( GlobalEntityCreator().createEntity( eclass ) );
if( entity->isContainer() && eclass->fixedsize ){ /* group entity to point one */
char value[64];
sprintf( value, "%g %g %g", instance.worldAABB().origin[0], instance.worldAABB().origin[1], instance.worldAABB().origin[2] );
entity->setKeyValue( "origin", value );
}
EntityCopyingVisitor visitor( *Node_getEntity( node ) );
// entity->forEachKeyValue( visitor );
NodeSmartReference child( path.top().get() );
NodeSmartReference parent( path.parent().get() );
// Node_getTraversable( parent )->erase( child );
if ( Node_getTraversable( child ) != 0 && node_is_group( node ) ) { /* group entity to group one */
parentBrushes( child, node );
}
Node_getTraversable( parent )->insert( node );
entity->forEachKeyValue( visitor ); /* must do this after inserting node, otherwise problem: targeted + having model + not loaded b4 new entities aren't selectable normally + rendered only while 0 0 0 is rendered */
if( !entity->isContainer() && !eclass->fixedsize ){ /* point entity to group one */
AABB bounds( g_vector3_identity, Vector3( 16, 16, 16 ) );
if ( !string_parse_vector3( entity->getKeyValue( "origin" ), bounds.origin ) ) {
bounds.origin = g_vector3_identity;
}
Brush_ConstructPlacehoderCuboid( node.get(), bounds );
Node_getEntity( node )->setKeyValue( "origin", "" );
}
Node_getTraversable( parent )->erase( child );
}
}