/// <summary> /// Returns true if the given class is name excluded /// </summary> /// <param name="cls"></param> /// <param name="parent"></param> /// <returns></returns> private bool _isNameExcluded( string cls, AbstractNode parent ) { // Run past the listener object excludeObj; bool excludeName = false; ScriptCompilerEvent evt = new ProcessNameExclusionScriptCompilerEvent( cls, parent ); bool processed = _fireEvent( ref evt, out excludeObj ); if ( !processed ) { // Process the built-in name exclusions if ( cls == "emitter" || cls == "affector" ) { // emitters or affectors inside a particle_system are excluded while ( parent != null && parent is ObjectAbstractNode ) { ObjectAbstractNode obj = (ObjectAbstractNode)parent; if ( obj.Cls == "particle_system" ) return true; parent = obj.Parent; } return false; } else if ( cls == "pass" ) { // passes inside compositors are excluded while ( parent != null && parent is ObjectAbstractNode ) { ObjectAbstractNode obj = (ObjectAbstractNode)parent; if ( obj.Cls == "compositor" ) return true; parent = obj.Parent; } return false; } else if ( cls == "texture_source" ) { // Parent must be texture_unit while ( parent != null && parent is ObjectAbstractNode ) { ObjectAbstractNode obj = (ObjectAbstractNode)parent; if ( obj.Cls == "texture_unit" ) return true; parent = obj.Parent; } return false; } } else { excludeObj = (bool)excludeObj; return excludeName; } return false; }