MergeActionDeleteGameObject.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using UnityEngine;
  2. using UnityEditor;
  3. namespace GitMerge
  4. {
  5. /// <summary>
  6. /// The MergeAction that handles a GameObject which exists in "our" version but not "theirs".
  7. /// </summary>
  8. public class MergeActionDeleteGameObject : MergeActionExistence
  9. {
  10. private bool oursWasActive;
  11. public MergeActionDeleteGameObject(GameObject ours, GameObject theirs)
  12. : base(ours, theirs)
  13. {
  14. oursWasActive = ours.activeSelf;
  15. if (GitMergeWindow.automerge)
  16. {
  17. UseOurs();
  18. merged = true;
  19. usingTheirs = false;
  20. usingOurs = true;
  21. }
  22. }
  23. protected override void ApplyOurs()
  24. {
  25. Debug.Log("ApplyOurs called");
  26. ours.SetActiveForMerging(true);
  27. ours.SetActive(oursWasActive);
  28. }
  29. protected override void ApplyTheirs()
  30. {
  31. Debug.Log("ApplyOurs deleting their GameObject");
  32. ours.SetActiveForMerging(false);
  33. SceneView.RepaintAll();
  34. }
  35. public override void EnsureExistence()
  36. {
  37. UseOurs();
  38. }
  39. public override void OnGUI()
  40. {
  41. var defaultOptionColor = merged ? Color.gray : Color.white;
  42. GUI.color = usingOurs ? Color.green : defaultOptionColor;
  43. if (GUILayout.Button("Keep GameObject"))
  44. {
  45. UseOurs();
  46. }
  47. GUI.color = usingTheirs ? Color.green : defaultOptionColor;
  48. if (GUILayout.Button("Delete GameObject"))
  49. {
  50. UseTheirs();
  51. }
  52. }
  53. }
  54. }