protected virtual void OnSceneGUI() { MapPedestrianLane vmMapPed = (MapPedestrianLane)target; if (vmMapPed.mapLocalPositions.Count < 1) return; if (vmMapPed.DisplayHandles) { for (int i = 0; i < vmMapPed.mapLocalPositions.Count; i++) { EditorGUI.BeginChangeCheck(); Vector3 newTargetPosition = Handles.PositionHandle(vmMapPed.transform.TransformPoint(vmMapPed.mapLocalPositions[i]), vmMapPed.transform.rotation); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(vmMapPed, "Pedestrian points change"); vmMapPed.mapLocalPositions[i] = vmMapPed.transform.InverseTransformPoint(newTargetPosition); } } } }
public void WalkRandomly() { Agent.avoidancePriority = RandomGenerator.Next(1, 100); var position = Agent.transform.position; MapPedestrianLane closest = null; float closestDistance = float.MaxValue; int closestIndex = 0; foreach (var path in SimulatorManager.Instance.MapManager.pedestrianLanes) { for (int i = 0; i < path.mapWorldPositions.Count; i++) { float distance = Vector3.SqrMagnitude(position - path.mapWorldPositions[i]); if (distance < closestDistance) { closest = path; closestIndex = i; closestDistance = distance; } } } if (closest != null) { controller.Targets = closest.mapWorldPositions; controller.MapPath = closest; controller.NextTargetIndex = closestIndex; } else { controller.SetBehaviour <PedestrianBehaviourBase>(); controller.SetPedState(PedestrianController.PedestrianState.Idle); Debug.LogError("No pedestrian annotation found, please create annotation, setting to idle"); } }
public override void OnInspectorGUI() { DrawDefaultInspector(); MapPedestrianLane mapLane = (MapPedestrianLane)target; }