revival/game/Assets/PathCreator/Examples/Scripts/PathPlacer.cs

46 lines
1.3 KiB
C#
Raw Normal View History

2021-03-12 15:33:05 +01:00
using PathCreation;
using UnityEngine;
namespace PathCreation.Examples {
[ExecuteInEditMode]
public class PathPlacer : PathSceneTool {
public GameObject prefab;
public GameObject holder;
public float spacing = 3;
const float minSpacing = .1f;
void Generate () {
if (pathCreator != null && prefab != null && holder != null) {
DestroyObjects ();
VertexPath path = pathCreator.path;
spacing = Mathf.Max(minSpacing, spacing);
float dst = 0;
while (dst < path.length) {
Vector3 point = path.GetPointAtDistance (dst);
Quaternion rot = path.GetRotationAtDistance (dst);
Instantiate (prefab, point, rot, holder.transform);
dst += spacing;
}
}
}
void DestroyObjects () {
int numChildren = holder.transform.childCount;
for (int i = numChildren - 1; i >= 0; i--) {
DestroyImmediate (holder.transform.GetChild (i).gameObject, false);
}
}
protected override void PathUpdated () {
if (pathCreator != null) {
Generate ();
}
}
}
}