Esempio n. 1
0
        private SetCameraPacket.CameraBlock MakeCameraBlock(Vector3 position, Vector3 positionDelta, Rotation rotation, Rotation rotationDelta)
        {
            Rotation orientationOffset = new Rotation(Frame.Orientation.Pitch, -Frame.Orientation.Yaw);
            Vector3  lookAt            = orientationOffset.LookAtVector * rotation.Quaternion;
            //Vector3 eyePos = new Vector3(Frame.Core.EyePosition.Y, Frame.Core.EyePosition.X, -Frame.Core.EyePosition.Z);
            Vector3 eyePos = Frame.Core.EyePosition;

            eyePos *= rotation.Quaternion;

            Vector3 offset = Offset * rotation.Quaternion;

            if (Frame.Core.ControlMode == ControlMode.Absolute)
            {
                offset += eyePos / 1000f;
            }

            Vector3 cameraUp = Vector3.UnitZ * rotation.Quaternion;
            Vector3 up       = Vector3.UnitZ;

            if (orientationOffset.Yaw != 0.0)
            {
                up = orientationOffset.Yaw < 0.0 ? Vector3.Cross(lookAt, rotation.LookAtVector) : Vector3.Cross(rotation.LookAtVector, lookAt);
            }

            SetCameraPacket.CameraBlock block = new SetCameraPacket.CameraBlock();
            block.Position      = position + offset;
            block.PositionDelta = positionDelta;
            block.LookAt        = lookAt;
            block.LookAtDelta   = rotationDelta.LookAtVector;
            block.Up            = up;
            block.TickLength    = (uint)Frame.Core.TickLength * 1000;
            return(block);
        }
Esempio n. 2
0
 private Packet Listener(Packet p, IPEndPoint source)
 {
     if (Enabled && p is SetCameraPacket)
     {
         SetCameraPacket.CameraBlock camera = (p as SetCameraPacket).Camera;
         mCore.Update(camera.Position, camera.PositionDelta, new Rotation(camera.LookAt), new Rotation(camera.LookAtDelta));
     }
     return(p);
 }