public void Touch(string label, TryProcess process, bool create_undo_state) { if (target_type.CanBeTreatedAs <UnityEngine.Object>()) { if (create_undo_state) { Undo.RecordObjects( objects.Convert <UnityEngine.Object>().ToArray(), label ); } if (process()) { objects .Convert <IEditSerializationCallbackReciever>() .Process(r => r.OnBeforeEditSerialize()); objects .Convert <ISerializationCallbackReceiver>() .Process(r => r.OnBeforeSerialize()); objects .Convert <UnityEngine.Object>() .Narrow(o => o.IsPrefabInstance()) .Process(o => PrefabUtility.RecordPrefabInstancePropertyModifications(o)); objects .Convert <UnityEngine.Object>() .Skip(o => o.IsSceneObject()) .Process(o => EditorUtility.SetDirty(o)); } if (create_undo_state) { Undo.FlushUndoRecordObjects(); } } else { if (parent != null) { parent.Touch(label, process, create_undo_state); } else { process(); } } }
public void Execute() { target.Touch(GetName(), delegate() { target.GetObjects().Process(o => action.Execute(o)); }, true); }
public void Execute(object gadget_target, string name) { target.Touch(name, delegate() { aux_actions.GetValue(name).IfNotNull(a => a.Execute(gadget_target)); }, true); }
public void Execute() { target.Touch(GetName(), delegate() { target.GetObjects().Process(o => function.Execute(o, arguments.GetContents <object[]>())); }, true); }
public void ClearContents(bool create_undo_state) { target.Touch("Clearing " + GetName(), delegate() { return(GetVariables().ProcessOR(v => v.ClearContents().IsChange())); }, create_undo_state); }