46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
|
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 ();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|