public void Update()
{
Vector3 offset =
/*Character.m_Node.Orientation*/orientation * (-Vector3.UNIT_Z +
(Vector3.UNIT_Y * (float)System.Math.Tan(Angle.ValueRadians))
).NormalisedCopy * Distance;
Vector3 head = Character.m_Node.Position + Character.m_HeadOffset;
Vector3 desiredPosition = head + offset;
InterPosition += (desiredPosition - InterPosition) * 0.1f;
PredicateRaycast raycast = new PredicateRaycast((b => !(b.UserData is Tachycardia.Objects.Trigger || b.UserData is Character)));
raycast.Go(Core.Singleton.NewtonWorld, head, InterPosition);
if (raycast.Contacts.Count != 0)
{
raycast.SortContacts();
Core.Singleton.Camera.Position = head + (InterPosition - head) * raycast.Contacts[0].Distance
+ raycast.Contacts[0].Normal * 0.15f;
}
else
Core.Singleton.Camera.Position = InterPosition;
Core.Singleton.Camera.LookAt(head);
}