forked from cgvr/DeltaVR
		
	
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
 | 
						|
using System;
 | 
						|
using System.Runtime.CompilerServices;
 | 
						|
using System.Runtime.InteropServices;
 | 
						|
using UnityEngine;
 | 
						|
 | 
						|
namespace FishNet.Serializing.Helping
 | 
						|
{
 | 
						|
    /// <summary>
 | 
						|
    /// Static class used for fast conversion of quaternion structs. Not thread safe!
 | 
						|
    /// </summary>
 | 
						|
    [StructLayout(LayoutKind.Explicit)]
 | 
						|
    public struct QuaternionConverter
 | 
						|
    {
 | 
						|
        //    [FieldOffset(0)]
 | 
						|
        //    public Quaternion Q;
 | 
						|
        //    [FieldOffset(0)]
 | 
						|
        //    public Quaternion64 Q64;
 | 
						|
        //    [FieldOffset(0)]
 | 
						|
        //    public Quaternion128 Q128;
 | 
						|
 | 
						|
        //    public static QuaternionConverter StaticRef = new QuaternionConverter();
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static Quaternion64 QtoQ64(Quaternion quaternion64)
 | 
						|
        //    {
 | 
						|
        //        StaticRef.Q = quaternion64;
 | 
						|
        //        return StaticRef.Q64;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static Quaternion Q64toQ(Quaternion64 quaternion)
 | 
						|
        //    {
 | 
						|
        //        StaticRef.Q64 = quaternion;
 | 
						|
        //        return StaticRef.Q;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static Quaternion128 QtoQ128(Quaternion quaternion128)
 | 
						|
        //    {
 | 
						|
        //        StaticRef.Q = quaternion128;
 | 
						|
        //        return StaticRef.Q128;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static Quaternion Q128toQ(Quaternion128 quaternion)
 | 
						|
        //    {
 | 
						|
        //        StaticRef.Q128 = quaternion;
 | 
						|
        //        return StaticRef.Q;
 | 
						|
        //    }
 | 
						|
        //}
 | 
						|
 | 
						|
        //public struct Quaternion64
 | 
						|
        //{
 | 
						|
        //    public float x;
 | 
						|
        //    public float y;
 | 
						|
        //    public float z;
 | 
						|
        //    public float w;
 | 
						|
 | 
						|
        //    public Quaternion64(float x, float y, float z, float w)
 | 
						|
        //    {
 | 
						|
        //        this.x = x;
 | 
						|
        //        this.y = y;
 | 
						|
        //        this.z = z;
 | 
						|
        //        this.w = w;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    public Quaternion64(Quaternion q)
 | 
						|
        //    {
 | 
						|
        //        this.x = q.x;
 | 
						|
        //        this.y = q.y;
 | 
						|
        //        this.z = q.z;
 | 
						|
        //        this.w = q.w;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    /*[MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static implicit operator Quaternion64(Quaternion q) => new Quaternion64(q);
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static implicit operator Quaternion(Quaternion64 q) => new Quaternion(q.x, q.y, q.z, q.w);*/
 | 
						|
        //}
 | 
						|
 | 
						|
        //public struct Quaternion128
 | 
						|
        //{
 | 
						|
        //    public float x;
 | 
						|
        //    public float y;
 | 
						|
        //    public float z;
 | 
						|
        //    public float w;
 | 
						|
        //    public Quaternion128(float x, float y, float z, float w)
 | 
						|
        //    {
 | 
						|
        //        this.x = x;
 | 
						|
        //        this.y = y;
 | 
						|
        //        this.z = z;
 | 
						|
        //        this.w = w;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    public Quaternion128(Quaternion q)
 | 
						|
        //    {
 | 
						|
        //        x = q.x;
 | 
						|
        //        y = q.y;
 | 
						|
        //        z = q.z;
 | 
						|
        //        w = q.w;
 | 
						|
        //    }
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static implicit operator Quaternion128(Quaternion q) => new Quaternion128(q);
 | 
						|
 | 
						|
        //    [MethodImpl(MethodImplOptions.AggressiveInlining)]
 | 
						|
        //    public static implicit operator Quaternion(Quaternion128 q) => new Quaternion(q.x, q.y, q.z, q.w);
 | 
						|
        //}
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        ///     Credit to this man for converting gaffer games c code to c#
 | 
						|
        ///     https://gist.github.com/fversnel/0497ad7ab3b81e0dc1dd
 | 
						|
        /// </summary>
 | 
						|
    }
 | 
						|
 | 
						|
    public enum ComponentType : uint
 | 
						|
    {
 | 
						|
        X = 0,
 | 
						|
        Y = 1,
 | 
						|
        Z = 2,
 | 
						|
        W = 3
 | 
						|
    }
 | 
						|
 | 
						|
} |