/// <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); }
/// <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)); }