Radiant:
misc... * fix: select inside and touching: ignored ANY filters and hiding, and region * fix: M3 tex paint/grab ignored _hidden_ models * fix: M3 tex paint/grab ignored group ent (world, triggers, et cetera), model filters * fix: shift+a by tex: ignored group ent (world, triggers, et cetera) filters * fix: tex find/replace: ignored any filters, regioning & hiding * fix: shift+a by classname: ignored filters, hiding, region * fix: floor walker ignored group ent filters * fix: csg subtract ignored group ent filters * fix: invert selection: ignored group ent filters * fix: tex find/replace: 'select by shader' mode for patches (was replacing with notex instead) * fix: select inside and touching: were selecting group ents, as single unit (=sensitive to parent node and its bbox) * fix: csg merge two group ents = empty group ent * fix: csg subtract group ent completely = empty group ent * fix: hollow group ent: could produce empty group ent * func_groups are filtered by world filter only, not entities one * new func_group filter, filterBar button; Rightclick = create func_group
This commit is contained in:
@@ -110,26 +110,32 @@ SelectByBounds( AABB* aabbs, Unsigned count )
|
||||
}
|
||||
|
||||
bool pre( const scene::Path& path, scene::Instance& instance ) const {
|
||||
Selectable* selectable = Instance_getSelectable( instance );
|
||||
if( path.top().get().visible() ){
|
||||
Selectable* selectable = Instance_getSelectable( instance );
|
||||
|
||||
// ignore worldspawn
|
||||
Entity* entity = Node_getEntity( path.top() );
|
||||
if ( entity ) {
|
||||
if ( string_equal( entity->getKeyValue( "classname" ), "worldspawn" ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( path.size() > 1 ) &&
|
||||
( !path.top().get().isRoot() ) &&
|
||||
( selectable != 0 )
|
||||
) {
|
||||
for ( Unsigned i = 0; i < m_count; ++i )
|
||||
{
|
||||
if ( policy.Evaluate( m_aabbs[i], instance ) ) {
|
||||
selectable->setSelected( true );
|
||||
// ignore worldspawn
|
||||
Entity* entity = Node_getEntity( path.top() );
|
||||
if ( entity ) {
|
||||
if ( string_equal( entity->getKeyValue( "classname" ), "worldspawn" ) ) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( ( path.size() > 1 ) &&
|
||||
( !path.top().get().isRoot() ) &&
|
||||
( selectable != 0 ) &&
|
||||
( !node_is_group( path.top() ) )
|
||||
) {
|
||||
for ( Unsigned i = 0; i < m_count; ++i )
|
||||
{
|
||||
if ( policy.Evaluate( m_aabbs[i], instance ) ) {
|
||||
selectable->setSelected( true );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -275,6 +281,10 @@ InvertSelectionWalker( SelectionSystem::EMode mode )
|
||||
: m_mode( mode ), m_selectable( 0 ){
|
||||
}
|
||||
bool pre( const scene::Path& path, scene::Instance& instance ) const {
|
||||
if( !path.top().get().visible() ){
|
||||
m_selectable = 0;
|
||||
return false;
|
||||
}
|
||||
Selectable* selectable = Instance_getSelectable( instance );
|
||||
if ( selectable ) {
|
||||
switch ( m_mode )
|
||||
@@ -608,6 +618,9 @@ EntityFindByPropertyValueWalker( const char *prop, const PropertyValues& propert
|
||||
: m_propertyvalues( propertyvalues ), m_prop( prop ){
|
||||
}
|
||||
bool pre( const scene::Path& path, scene::Instance& instance ) const {
|
||||
if( !path.top().get().visible() ){
|
||||
return false;
|
||||
}
|
||||
Entity* entity = Node_getEntity( path.top() );
|
||||
if ( entity != 0
|
||||
&& propertyvalues_contain( m_propertyvalues, entity->getKeyValue( m_prop ) ) ) {
|
||||
|
||||
Reference in New Issue
Block a user