mirror of
https://github.com/Xevion/Boids.git
synced 2025-12-13 14:11:00 -06:00
moved BoidEditor/BoidControllerEditor scripts away for proper Build procedure (no macro)
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
[CustomEditor(typeof(BoidController))]
|
[CustomEditor(typeof(BoidController))]
|
||||||
public class BoidControllerEditor : Editor {
|
public class BoidControllerEditor : UnityEditor.Editor {
|
||||||
public override void OnInspectorGUI() {
|
public override void OnInspectorGUI() {
|
||||||
var controller = (BoidController) target;
|
var controller = (BoidController) target;
|
||||||
bool redraw = false;
|
bool redraw = false;
|
||||||
@@ -20,7 +20,8 @@ public class BoidControllerEditor : Editor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Basic Boid Controller Attributes
|
// Basic Boid Controller Attributes
|
||||||
controller.boidStartVelocity = EditorGUILayout.Slider("Start Velocity", controller.boidStartVelocity, 0.01f, 25.0f);
|
controller.boidStartVelocity =
|
||||||
|
EditorGUILayout.Slider("Start Velocity", controller.boidStartVelocity, 0.01f, 25.0f);
|
||||||
EditorGUILayout.MinMaxSlider("Speed Limit", ref controller.minSpeed, ref controller.maxSpeed, 0.01f, 25f);
|
EditorGUILayout.MinMaxSlider("Speed Limit", ref controller.minSpeed, ref controller.maxSpeed, 0.01f, 25f);
|
||||||
// controller.minSpeed = EditorGUILayout.Slider("Minimum Speed", controller.minSpeed, 0.01f, 25.0f);
|
// controller.minSpeed = EditorGUILayout.Slider("Minimum Speed", controller.minSpeed, 0.01f, 25.0f);
|
||||||
// controller.maxSpeed = EditorGUILayout.Slider("Maximum Speed", controller.maxSpeed, 0.01f, 25.0f);
|
// controller.maxSpeed = EditorGUILayout.Slider("Maximum Speed", controller.maxSpeed, 0.01f, 25.0f);
|
||||||
@@ -29,14 +30,16 @@ public class BoidControllerEditor : Editor {
|
|||||||
|
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
controller.boidGroupRange = EditorGUILayout.Slider("Group Range", controller.boidGroupRange, 0.01f, 7.5f);
|
controller.boidGroupRange = EditorGUILayout.Slider("Group Range", controller.boidGroupRange, 0.01f, 7.5f);
|
||||||
controller.boidSeparationRange = EditorGUILayout.Slider("Separation Range", controller.boidSeparationRange, 0.01f, 5.0f);
|
controller.boidSeparationRange =
|
||||||
|
EditorGUILayout.Slider("Separation Range", controller.boidSeparationRange, 0.01f, 5.0f);
|
||||||
controller.boidFOV = EditorGUILayout.Slider("Boid FOV", controller.boidFOV, 1f, 360f);
|
controller.boidFOV = EditorGUILayout.Slider("Boid FOV", controller.boidFOV, 1f, 360f);
|
||||||
redraw = redraw || EditorGUI.EndChangeCheck();
|
redraw = redraw || EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
// Boid Bias Attributes
|
// Boid Bias Attributes
|
||||||
controller.alignmentBias = EditorGUILayout.Slider("Alignment Bias", controller.alignmentBias, 0.001f, 1.5f);
|
controller.alignmentBias = EditorGUILayout.Slider("Alignment Bias", controller.alignmentBias, 0.001f, 1.5f);
|
||||||
controller.cohesionBias = EditorGUILayout.Slider("Cohesion Bias", controller.cohesionBias, 0.001f, 1.5f);
|
controller.cohesionBias = EditorGUILayout.Slider("Cohesion Bias", controller.cohesionBias, 0.001f, 1.5f);
|
||||||
controller.separationBias = EditorGUILayout.Slider("Separation Bias", controller.separationBias, 0.001f, 2.5f);
|
controller.separationBias =
|
||||||
|
EditorGUILayout.Slider("Separation Bias", controller.separationBias, 0.001f, 2.5f);
|
||||||
controller.boundaryBias = EditorGUILayout.Slider("Boundary Bias", controller.boundaryBias, 0.01f, 1.5f);
|
controller.boundaryBias = EditorGUILayout.Slider("Boundary Bias", controller.boundaryBias, 0.01f, 1.5f);
|
||||||
|
|
||||||
controller.localFlocks = EditorGUILayout.Toggle("Use Groups?", controller.localFlocks);
|
controller.localFlocks = EditorGUILayout.Toggle("Use Groups?", controller.localFlocks);
|
||||||
@@ -49,7 +52,8 @@ public class BoidControllerEditor : Editor {
|
|||||||
|
|
||||||
// Boid Rendering
|
// Boid Rendering
|
||||||
EditorGUI.BeginChangeCheck();
|
EditorGUI.BeginChangeCheck();
|
||||||
controller.circleVertexCount = EditorGUILayout.IntSlider("Circle Vertex Count", controller.circleVertexCount, 4, 360);
|
controller.circleVertexCount =
|
||||||
|
EditorGUILayout.IntSlider("Circle Vertex Count", controller.circleVertexCount, 4, 360);
|
||||||
controller.circleWidth = EditorGUILayout.Slider("Circle Line Width", controller.circleWidth, 0.01f, 1f);
|
controller.circleWidth = EditorGUILayout.Slider("Circle Line Width", controller.circleWidth, 0.01f, 1f);
|
||||||
redraw = redraw || EditorGUI.EndChangeCheck();
|
redraw = redraw || EditorGUI.EndChangeCheck();
|
||||||
|
|
||||||
|
|||||||
17
Boids/Assets/Editor/BoidEditor.cs
Normal file
17
Boids/Assets/Editor/BoidEditor.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using UnityEditor;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
// [CustomEditor(typeof(Boid))]
|
||||||
|
// public class BoidEditor : UnityEditor.Editor {
|
||||||
|
// public override void OnInspectorGUI() {
|
||||||
|
// base.OnInspectorGUI();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
public class BoidGizmoDrawer {
|
||||||
|
[DrawGizmo(GizmoType.NonSelected | GizmoType.Selected)]
|
||||||
|
static void DrawGizmo(Boid boid, GizmoType gizmoType) {
|
||||||
|
// Simply draw the # of Boids within the perceived flock
|
||||||
|
Handles.Label(boid.transform.position, $"{boid.latestNeighborhoodCount}");
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Boids/Assets/Editor/BoidEditor.cs.meta
Normal file
3
Boids/Assets/Editor/BoidEditor.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f4b27abbe35a49dd946d059c0ebe4cea
|
||||||
|
timeCreated: 1590672982
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
// Boids are represented by a moving, rotating triangle.
|
// Boids are represented by a moving, rotating triangle.
|
||||||
@@ -11,7 +10,7 @@ public class Boid : MonoBehaviour {
|
|||||||
[NonSerialized] private bool _isWrappingX = false;
|
[NonSerialized] private bool _isWrappingX = false;
|
||||||
[NonSerialized] private bool _isWrappingY = false;
|
[NonSerialized] private bool _isWrappingY = false;
|
||||||
[NonSerialized] private Vector2 _centeringVelocity;
|
[NonSerialized] private Vector2 _centeringVelocity;
|
||||||
[NonSerialized] private int _latestNeighborhoodCount = 0;
|
[NonSerialized] public int latestNeighborhoodCount = 0;
|
||||||
[NonSerialized] private BoidController _parent;
|
[NonSerialized] private BoidController _parent;
|
||||||
[NonSerialized] private bool _isFocused = false;
|
[NonSerialized] private bool _isFocused = false;
|
||||||
|
|
||||||
@@ -36,7 +35,7 @@ public class Boid : MonoBehaviour {
|
|||||||
else {
|
else {
|
||||||
Vector2 acceleration = Vector2.zero;
|
Vector2 acceleration = Vector2.zero;
|
||||||
List<Boid> flock = _parent.localFlocks ? GetFlock(_parent.boids, _parent.boidGroupRange) : _parent.boids;
|
List<Boid> flock = _parent.localFlocks ? GetFlock(_parent.boids, _parent.boidGroupRange) : _parent.boids;
|
||||||
_latestNeighborhoodCount = flock.Count;
|
latestNeighborhoodCount = flock.Count;
|
||||||
|
|
||||||
// Calculate all offsets and multiple by magnitudes given
|
// Calculate all offsets and multiple by magnitudes given
|
||||||
if (flock.Count > 0) {
|
if (flock.Count > 0) {
|
||||||
@@ -67,13 +66,6 @@ public class Boid : MonoBehaviour {
|
|||||||
Wrapping();
|
Wrapping();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
private void OnDrawGizmos() {
|
|
||||||
// Show # of Boids in Neighborhood
|
|
||||||
Handles.Label(transform.position, $"{_latestNeighborhoodCount}");
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private Vector2 SteerTowards(Vector2 vector) {
|
private Vector2 SteerTowards(Vector2 vector) {
|
||||||
Vector2 v = vector.normalized * _parent.maxSpeed - _velocity;
|
Vector2 v = vector.normalized * _parent.maxSpeed - _velocity;
|
||||||
return Vector2.ClampMagnitude(v, _parent.maxSteerForce);
|
return Vector2.ClampMagnitude(v, _parent.maxSteerForce);
|
||||||
|
|||||||
Reference in New Issue
Block a user