private void UpdatePointerProjectRay(Vector3 destination) { //Make ray start at player's reticle and end at the global "destination" point Vector3 origin = _Camera.ProjectRayOrigin(PlayerReticle.GetPointerPosition()); Vector3 normal = _Camera.ProjectLocalRayNormal(PlayerReticle.GetPointerPosition()); Transform update = new Transform(_Camera.GlobalTransform.basis, origin); PointerProjectRay.GlobalTransform = update; PointerProjectRay.CastTo = normal * -ScanRay.CastTo.z; }
private void UpdateCursorAndCarryWorldPosition() { CarryWorldPosition = ScanRay.GlobalTransform.origin - (ScanRay.GlobalTransform.basis.z * CarryDistance); if (ScanRay.IsColliding()) { CursorWorldPosition = ScanRay.GetCollisionPoint(); } else { CursorWorldPosition = ScanRay.GlobalTransform.origin - (ScanRay.GlobalTransform.basis.z * -ScanRay.CastTo.z); } //Position Reticle at proper point PlayerReticle.LerpPointAt(_Camera, CursorWorldPosition, 0.1f); //Update project ray UpdatePointerProjectRay(CursorWorldPosition); }