/////////////////////////////////////////////////////////////////////// public bool ChangeFlags( string key, VariableFlags initialValue, VariableFlags changeValue, bool create, bool add, ref bool notify ) { if ((key != null) && (elementFlags != null)) { VariableFlags oldValue; VariableFlags newValue; if (elementFlags.TryGetValue(key, out oldValue)) { if (add) { newValue = oldValue | changeValue; elementFlags[key] = newValue; if (notify && EntityOps.OnFlagsChanged( variableEvent, oldValue, newValue)) { notify = false; } return(true); } else { newValue = oldValue & ~changeValue; if (newValue != VariableFlags.None) { elementFlags[key] = newValue; if (notify && EntityOps.OnFlagsChanged( variableEvent, oldValue, newValue)) { notify = false; } return(true); } if (notify && EntityOps.OnFlagsChanged( variableEvent, oldValue, newValue)) { notify = false; } return(elementFlags.Remove(key)); } } else if (create) { newValue = add ? (initialValue | changeValue) : VariableFlags.None; elementFlags.Add(key, newValue); if (notify && EntityOps.OnFlagsChanged( variableEvent, oldValue, newValue)) { notify = false; } return(true); } } return(false); }