using UnityEngine;
using Pathfinding;
using System.Collections.Generic;
namespace Pathfinding.Legacy {
using Pathfinding.RVO;
///
/// RVO Character Controller.
/// Designed to be used as a drop-in replacement for the Unity Character Controller,
/// it supports almost all of the same functions and fields with the exception
/// that due to the nature of the RVO implementation, desired velocity is set in the Move function
/// and is assumed to stay the same until something else is requested (as opposed to reset every frame).
///
/// For documentation of many of the variables of this class: refer to the Pathfinding.RVO.IAgent interface.
///
/// Note: Requires an RVOSimulator in the scene
///
/// See: Pathfinding.RVO.IAgent
/// See: RVOSimulator
///
/// Deprecated: Use the RVOController class instead. This class only exists for compatibility reasons.
///
[AddComponentMenu("Pathfinding/Legacy/Local Avoidance/Legacy RVO Controller")]
[HelpURL("http://arongranberg.com/astar/documentation/stable/class_pathfinding_1_1_legacy_1_1_legacy_r_v_o_controller.php")]
public class LegacyRVOController : RVOController {
///
/// Layer mask for the ground.
/// The RVOController will raycast down to check for the ground to figure out where to place the agent.
///
[Tooltip("Layer mask for the ground. The RVOController will raycast down to check for the ground to figure out where to place the agent")]
public new LayerMask mask = -1;
public new bool enableRotation = true;
public new float rotationSpeed = 30;
public void Update () {
if (rvoAgent == null) return;
RaycastHit hit;
Vector3 pos = tr.position + CalculateMovementDelta(Time.deltaTime);
if (mask != 0 && Physics.Raycast(pos + Vector3.up*height*0.5f, Vector3.down, out hit, float.PositiveInfinity, mask)) {
pos.y = hit.point.y;
} else {
pos.y = 0;
}
tr.position = pos + Vector3.up*(height*0.5f - center);
if (enableRotation && velocity != Vector3.zero) transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.LookRotation(velocity), Time.deltaTime * rotationSpeed * Mathf.Min(velocity.magnitude, 0.2f));
}
}
}