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:
Garux
2017-08-01 14:27:03 +03:00
parent 7ca59bef0a
commit dce6730b39
14 changed files with 164 additions and 27 deletions

View File

@@ -453,12 +453,28 @@ void operator()( Patch& patch ) const {
}
};
namespace{
bool DoingSearch( const char *repl ){
return ( repl == NULL || ( strcmp( "textures/", repl ) == 0 ) );
}
}
void Scene_PatchFindReplaceShader( scene::Graph& graph, const char* find, const char* replace ){
Scene_forEachVisiblePatch( PatchFindReplaceShader( find, replace ) );
if( DoingSearch( replace ) ){
Scene_forEachVisiblePatchInstance( PatchSelectByShader( find ) );
}
else{
Scene_forEachVisiblePatch( PatchFindReplaceShader( find, replace ) );
}
}
void Scene_PatchFindReplaceShader_Selected( scene::Graph& graph, const char* find, const char* replace ){
Scene_forEachVisibleSelectedPatch( PatchFindReplaceShader( find, replace ) );
if( DoingSearch( replace ) ){
//do nothing, because alternative is replacing to notex
//perhaps deselect ones with not matching shaders here?
}
else{
Scene_forEachVisibleSelectedPatch( PatchFindReplaceShader( find, replace ) );
}
}