Skip to content
This repository was archived by the owner on Aug 10, 2021. It is now read-only.

Commit a88d8b2

Browse files
committed
Add game event editors which would allow to trigger them via the inspector
1 parent 95eb005 commit a88d8b2

25 files changed

+262
-0
lines changed

Editor/GameEvents.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Bool.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
4+
namespace GameEvents.Bool
5+
{
6+
[CustomEditor(typeof(BoolGameEvent))]
7+
public class BoolGameEventEditor : ArgumentGameEventEditor<BoolGameEvent, bool>
8+
{
9+
protected override bool DrawArgumentField(bool value)
10+
{
11+
return EditorGUILayout.Toggle(value);
12+
}
13+
}
14+
}

Editor/GameEvents/Bool/BoolGameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Float.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
4+
namespace GameEvents.Float
5+
{
6+
[CustomEditor(typeof(FloatGameEvent))]
7+
public class FloatGameEventEditor : ArgumentGameEventEditor<FloatGameEvent, float>
8+
{
9+
protected override float DrawArgumentField(float value)
10+
{
11+
return EditorGUILayout.FloatField(value);
12+
}
13+
}
14+
}

Editor/GameEvents/Float/FloatGameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Game.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
using UnityEngine;
4+
5+
namespace GameEvents.Game
6+
{
7+
[CanEditMultipleObjects]
8+
[CustomEditor(typeof(GameEvent))]
9+
public class GameEventEditor : Editor
10+
{
11+
#region Pirvate Fields
12+
13+
private const int GroupSpacingPixels = 8;
14+
15+
#endregion
16+
17+
#region Public Methods
18+
19+
public override void OnInspectorGUI()
20+
{
21+
base.OnInspectorGUI();
22+
23+
var gameEvent = target as GameEvent;
24+
if (gameEvent == null) return;
25+
26+
GUI.enabled = Application.isPlaying;
27+
GUILayout.Space(GroupSpacingPixels);
28+
29+
DrawRaise(gameEvent);
30+
}
31+
32+
private static void DrawRaise(IGameEvent gameEvent)
33+
{
34+
GUILayout.Label("Raise event (play mode only)");
35+
if (GUILayout.Button("Raise")) gameEvent.RaiseGameEvent();
36+
}
37+
38+
#endregion
39+
}
40+
}

Editor/GameEvents/Game/GameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Generic.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using UnityEditor;
2+
using UnityEngine;
3+
4+
namespace GameEvents.Generic
5+
{
6+
[CanEditMultipleObjects]
7+
public abstract class ArgumentGameEventEditor<TGameEvent, TArgument>
8+
: Editor where TGameEvent : class, IArgumentGameEvent<TArgument>
9+
{
10+
#region Protected Methods
11+
12+
/// <returns>
13+
/// Value that is entered in the argument field.
14+
/// </returns>
15+
protected virtual TArgument DrawArgumentField(TArgument value)
16+
{
17+
return value;
18+
}
19+
20+
#endregion
21+
22+
#region Pirvate Fields
23+
24+
private const int GroupSpacingPixels = 8;
25+
26+
private TArgument argumentValue = default;
27+
28+
#endregion
29+
30+
#region Public Methods
31+
32+
public override void OnInspectorGUI()
33+
{
34+
base.OnInspectorGUI();
35+
36+
if (!(target is TGameEvent gameEvent)) return;
37+
38+
GUI.enabled = Application.isPlaying;
39+
GUILayout.Space(GroupSpacingPixels);
40+
41+
DrawRaise(gameEvent);
42+
}
43+
44+
private void DrawRaise(TGameEvent gameEvent)
45+
{
46+
GUILayout.Label("Raise event (play mode only)");
47+
GUILayout.BeginHorizontal();
48+
49+
argumentValue = DrawArgumentField(argumentValue);
50+
if (GUILayout.Button("Raise")) gameEvent.RaiseGameEvent(argumentValue);
51+
52+
GUILayout.EndHorizontal();
53+
}
54+
55+
#endregion
56+
}
57+
}

Editor/GameEvents/Generic/ArgumentGameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Int.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
4+
namespace GameEvents.Int
5+
{
6+
[CustomEditor(typeof(IntGameEvent))]
7+
public class IntGameEventEditor : ArgumentGameEventEditor<IntGameEvent, int>
8+
{
9+
protected override int DrawArgumentField(int value)
10+
{
11+
return EditorGUILayout.IntField(value);
12+
}
13+
}
14+
}

Editor/GameEvents/Int/IntGameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/String.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
4+
namespace GameEvents.String
5+
{
6+
[CustomEditor(typeof(StringGameEvent))]
7+
public class StringGameEventEditor : ArgumentGameEventEditor<StringGameEvent, string>
8+
{
9+
protected override string DrawArgumentField(string value)
10+
{
11+
return EditorGUILayout.TextField(value);
12+
}
13+
}
14+
}

Editor/GameEvents/String/StringGameEventEditor.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Vector2.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
using UnityEngine;
4+
5+
namespace GameEvents.Vector2
6+
{
7+
[CustomEditor(typeof(Vector3GameEvent))]
8+
public class Vector2GameEventEditor
9+
: ArgumentGameEventEditor<Vector3GameEvent, UnityEngine.Vector2>
10+
{
11+
protected override UnityEngine.Vector2 DrawArgumentField(UnityEngine.Vector2 value)
12+
{
13+
return EditorGUILayout.Vector2Field(GUIContent.none, value);
14+
}
15+
}
16+
}

Editor/GameEvents/Vector2/Vector2GameEventEditor.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Editor/GameEvents/Vector3.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using GameEvents.Generic;
2+
using UnityEditor;
3+
using UnityEngine;
4+
5+
namespace GameEvents.Vector3
6+
{
7+
[CustomEditor(typeof(Vector3GameEvent))]
8+
public class Vector3GameEventEditor
9+
: ArgumentGameEventEditor<Vector3GameEvent, UnityEngine.Vector3>
10+
{
11+
protected override UnityEngine.Vector3 DrawArgumentField(UnityEngine.Vector3 value)
12+
{
13+
return EditorGUILayout.Vector3Field(GUIContent.none, value);
14+
}
15+
}
16+
}

Editor/GameEvents/Vector3/Vector3GameEventEditor.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)