Skip to content
This repository was archived by the owner on Apr 3, 2022. It is now read-only.

Commit fead304

Browse files
committed
Add CanTargetSelf option to DetectTargetRadius 2D and 3D decision nodes.
1 parent b90aab5 commit fead304

8 files changed

+58
-5
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using MoreMountains.TopDownEngine;
2+
using MoreMountains.Tools;
3+
using TheBitCave.MMToolsExtensions.AI.Graph;
4+
using UnityEngine;
5+
6+
namespace TheBitCave.TopDownEngineExensions.AI.Graph
7+
{
8+
/// <summary>
9+
/// A node representing a TopDown Engine <see cref="MoreMountains.TopDownEngine.AIActionChangeWeapon"/> action.
10+
/// </summary>
11+
[CreateNodeMenu("AI/Action/Invert Patrol Direction")]
12+
public class AIActionInvertPatrolDirectionNode : AIActionNode
13+
{
14+
}
15+
}

Common/Scripts/AI/Graph/Actions/AIActionInvertPatrolDirectionNode.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.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using TheBitCave.MMToolsExtensions.AI.Graph;
2+
using UnityEditor;
3+
using XNodeEditor;
4+
5+
namespace TheBitCave.TopDownEngineExensions.AI.Graph
6+
{
7+
[CustomNodeEditor(typeof(AIActionInvertPatrolDirectionNode))]
8+
public class AIActionInvertPatrolDirectionNodeEditor : AIActionNodeEditor
9+
{
10+
}
11+
}

Common/Scripts/AI/Graph/Actions/Editor/AIActionInvertPatrolDirectionNodeEditor.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.

Common/Scripts/AI/Graph/Decisions/AIDecisionDetectTargetRadius2DNode.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class AIDecisionDetectTargetRadius2DNode : AIDecisionNode
1616
public LayerMask targetLayer;
1717
public bool obstacleDetection = true;
1818
public LayerMask obstacleMask;
19+
public bool canTargetSelf = false;
1920

2021
public override AIDecision AddDecisionComponent(GameObject go)
2122
{
@@ -26,6 +27,7 @@ public override AIDecision AddDecisionComponent(GameObject go)
2627
decision.TargetLayer = targetLayer;
2728
decision.ObstacleDetection = obstacleDetection;
2829
decision.ObstacleMask = obstacleMask;
30+
decision.CanTargetSelf = canTargetSelf;
2931
return decision;
3032
}
3133
}

Common/Scripts/AI/Graph/Decisions/AIDecisionDetectTargetRadius3DNode.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,17 @@ public class AIDecisionDetectTargetRadius3DNode : AIDecisionNode
1414
public float radius = 3f;
1515
public Vector3 detectionOriginOffset = new Vector3(0, 0, 0);
1616
public LayerMask targetLayerMask;
17-
public bool obstacleDetection = true;
1817
public LayerMask obstacleMask;
1918
public float targetCheckFrequency = 1f;
19+
public bool canTargetSelf = false;
2020

2121
public override AIDecision AddDecisionComponent(GameObject go)
2222
{
2323
var decision = go.AddComponent<AIDecisionDetectTargetRadius3D>();
2424
decision.Label = label;
2525
decision.Radius = radius;
2626
decision.DetectionOriginOffset = detectionOriginOffset;
27-
decision.ObstacleDetection = obstacleDetection;
27+
decision.CanTargetSelf = canTargetSelf;
2828
decision.TargetLayerMask = targetLayerMask;
2929
decision.ObstacleMask = obstacleMask;
3030
decision.TargetCheckFrequency = targetCheckFrequency;

Common/Scripts/AI/Graph/Decisions/Editor/AIDecisionDetectTargetRadius2DNodeEditor.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public class AIDecisionDetectTargetRadius2DNodeEditor : AIDecisionNodeEditor
1212
private SerializedProperty _targetLayer;
1313
private SerializedProperty _obstacleDetection;
1414
private SerializedProperty _obstacleMask;
15+
private SerializedProperty _canTargetSelf;
1516

1617
public override void OnBodyGUI()
1718
{
@@ -22,6 +23,7 @@ public override void OnBodyGUI()
2223
_targetLayer = serializedObject.FindProperty("targetLayer");
2324
_obstacleDetection = serializedObject.FindProperty("obstacleDetection");
2425
_obstacleMask = serializedObject.FindProperty("obstacleMask");
26+
_canTargetSelf = serializedObject.FindProperty("canTargetSelf");
2527

2628
serializedObject.Update();
2729
EditorGUIUtility.labelWidth = 120;
@@ -30,6 +32,7 @@ public override void OnBodyGUI()
3032
NodeEditorGUILayout.PropertyField(_targetLayer);
3133
NodeEditorGUILayout.PropertyField(_obstacleDetection);
3234
NodeEditorGUILayout.PropertyField(_obstacleMask);
35+
NodeEditorGUILayout.PropertyField(_canTargetSelf);
3336
serializedObject.ApplyModifiedProperties();
3437
}
3538
}

Common/Scripts/AI/Graph/Decisions/Editor/AIDecisionDetectTargetRadius3DNodeEditor.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,27 @@ public class AIDecisionDetectTargetRadius3DNodeEditor : AIDecisionNodeEditor
1010
private SerializedProperty _radius;
1111
private SerializedProperty _detectionOriginOffset;
1212
private SerializedProperty _targetLayerMask;
13-
private SerializedProperty _obstacleDetection;
1413
private SerializedProperty _obstacleMask;
1514
private SerializedProperty _targetCheckFrequency;
15+
private SerializedProperty _canTargetSelf;
1616

1717
protected override void SerializeAdditionalProperties()
1818
{
1919
_radius = serializedObject.FindProperty("radius");
2020
_detectionOriginOffset = serializedObject.FindProperty("detectionOriginOffset");
21-
_obstacleDetection = serializedObject.FindProperty("obstacleDetection");
2221
_targetLayerMask = serializedObject.FindProperty("targetLayerMask");
2322
_obstacleMask = serializedObject.FindProperty("obstacleMask");
2423
_targetCheckFrequency = serializedObject.FindProperty("targetCheckFrequency");
24+
_canTargetSelf = serializedObject.FindProperty("canTargetSelf");
2525

2626
serializedObject.Update();
2727
EditorGUIUtility.labelWidth = 150;
2828
NodeEditorGUILayout.PropertyField(_radius);
2929
NodeEditorGUILayout.PropertyField(_detectionOriginOffset);
30-
NodeEditorGUILayout.PropertyField(_obstacleDetection);
3130
NodeEditorGUILayout.PropertyField(_targetLayerMask);
3231
NodeEditorGUILayout.PropertyField(_obstacleMask);
3332
NodeEditorGUILayout.PropertyField(_targetCheckFrequency);
33+
NodeEditorGUILayout.PropertyField(_canTargetSelf);
3434
serializedObject.ApplyModifiedProperties();
3535
}
3636
}

0 commit comments

Comments
 (0)