Exemple #1
0
        public static float GetRotationAngle(LTRotation rotation)
        {
            var   angle     = (float)Math.Acos(rotation.W) * 2;
            float fSinAngle = (float)Math.Sin(angle * 0.5);
            var   axisY     = rotation.Y / fSinAngle;

            if (axisY > 0)
            {
                angle *= -1;
            }
            return(Rad2Deg(angle) + 90);
        }
Exemple #2
0
        public LTRotation GetPlayerRotation(int index)
        {
            LTRotation result = null;
            IntPtr     PlayerObjectPtrAddress = GetPlayerObjectPtrAddress(index);
            IntPtr     PlayerObjectPtr        = IntPtr.Add(IntPtr.Zero, BitConverter.ToInt32(ReadMem(PlayerObjectPtrAddress), 0));

            if (PlayerObjectPtr != IntPtr.Zero)
            {
                result = new LTRotation
                {
                    X = BitConverter.ToSingle(ReadMem(IntPtr.Add(PlayerObjectPtr, 0xF4)), 0),
                    Y = BitConverter.ToSingle(ReadMem(IntPtr.Add(PlayerObjectPtr, 0xF8)), 0),
                    Z = BitConverter.ToSingle(ReadMem(IntPtr.Add(PlayerObjectPtr, 0xFC)), 0),
                    W = BitConverter.ToSingle(ReadMem(IntPtr.Add(PlayerObjectPtr, 0x100)), 0),
                };
            }
            return(result);
        }