Exemple #1
0
        /// <summary>
        /// Creates native 3d vector from a Unity vector.
        /// </summary>
        /// <param name="vec">A Unity vector.</param>
        /// <param name="transformFromRUF">(Optional) If false, prevents conversion to the native SDK coordinate system.</param>
        /// <param name="applyScale">(Optional) If false, prevents scaling to the native SDK's unit per meter scale.</param>
        /// <returns>A native vector.</returns>
        public static MagicLeapNativeBindings.MLVec3f FromUnity(Vector3 vec, bool transformFromRUF = true, bool applyScale = true)
        {
            if (transformFromRUF)
            {
                vec.z = -vec.z;
            }

            if (applyScale)
            {
                if (MLDevice.WorldScale == 0.0f)
                {
                    MLPluginLog.Error("Divide by zero, unit scale vector contains 0");
                }
                else
                {
                    vec = vec / MLDevice.WorldScale;
                }
            }

            MagicLeapNativeBindings.MLVec3f outVec = new MagicLeapNativeBindings.MLVec3f();
            outVec.X = vec.x;
            outVec.Y = vec.y;
            outVec.Z = vec.z;

            return(outVec);
        }
Exemple #2
0
 /// <summary>
 /// Creates a Unity 3D vector from a native vector.
 /// </summary>
 /// <param name="vec">A native vector.</param>
 /// <param name="transformToRUF">(Optional) If false, prevents conversion to Unity's coordinate system.</param>
 /// <param name="applyScale">(Optional) If false, prevents scaling to Unity's unit per meter scale.</param>
 /// <returns>A Unity vector.</returns>
 public static Vector3 ToUnity(MagicLeapNativeBindings.MLVec3f vec, bool transformToRUF = true, bool applyScale = true)
 {
     return(ToUnity(vec.X, vec.Y, vec.Z, transformToRUF, applyScale));
 }