Tachycardia.GameCamera.Update C# (CSharp) Method

Update() public method

public Update ( ) : void
return void
        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);
        }