2017-08-31 13:17:22 +03:00
|
|
|
|
//
|
|
|
|
|
// MDLCamera Unit Tests
|
|
|
|
|
//
|
|
|
|
|
// Authors:
|
|
|
|
|
// Rolf Bjarne Kvinge <rolf@xamarin.com>
|
|
|
|
|
//
|
|
|
|
|
// Copyright 2017 Microsoft Inc.
|
|
|
|
|
//
|
|
|
|
|
|
2017-10-31 19:09:21 +03:00
|
|
|
|
#if !__WATCHOS__ && !MONOMAC
|
2017-08-31 13:17:22 +03:00
|
|
|
|
|
|
|
|
|
using System;
|
|
|
|
|
using CoreGraphics;
|
|
|
|
|
using Foundation;
|
|
|
|
|
#if !MONOMAC
|
|
|
|
|
using UIKit;
|
|
|
|
|
#endif
|
|
|
|
|
#if !__TVOS__
|
|
|
|
|
using MultipeerConnectivity;
|
|
|
|
|
#endif
|
|
|
|
|
using ModelIO;
|
|
|
|
|
using ObjCRuntime;
|
|
|
|
|
using OpenTK;
|
2017-09-13 18:08:39 +03:00
|
|
|
|
|
|
|
|
|
using MatrixFloat2x2 = global::OpenTK.NMatrix2;
|
|
|
|
|
using MatrixFloat3x3 = global::OpenTK.NMatrix3;
|
|
|
|
|
using MatrixFloat4x4 = global::OpenTK.NMatrix4;
|
|
|
|
|
using VectorFloat3 = global::OpenTK.NVector3;
|
|
|
|
|
|
2017-08-31 13:17:22 +03:00
|
|
|
|
using Bindings.Test;
|
|
|
|
|
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
|
|
|
|
namespace MonoTouchFixtures.ModelIO
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
// we want the test to be available if we use the linker
|
|
|
|
|
[Preserve (AllMembers = true)]
|
|
|
|
|
public class MDCameraTest
|
|
|
|
|
{
|
2020-07-15 19:14:22 +03:00
|
|
|
|
[OneTimeSetUp]
|
2017-08-31 13:17:22 +03:00
|
|
|
|
public void Setup ()
|
|
|
|
|
{
|
|
|
|
|
TestRuntime.AssertXcodeVersion (7, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void ProjectionMatrix ()
|
|
|
|
|
{
|
|
|
|
|
using (var obj = new MDLCamera ()) {
|
|
|
|
|
Assert.AreEqual (0.1f, obj.NearVisibilityDistance, 0.0001f, "NearVisibilityDistance");
|
|
|
|
|
Assert.AreEqual (1000f, obj.FarVisibilityDistance, 0.0001f, "FarVisibilityDistance");
|
|
|
|
|
Assert.AreEqual (54f, obj.FieldOfView, 0.0001f, "FieldOfView");
|
|
|
|
|
var initialProjectionMatrix = new Matrix4 (
|
|
|
|
|
1.308407f, 0, 0, 0,
|
|
|
|
|
0, 1.962611f, 0, 0,
|
|
|
|
|
0, 0, -1.0002f, -1,
|
|
|
|
|
0, 0, -0.20002f, 0
|
|
|
|
|
);
|
|
|
|
|
Asserts.AreEqual (initialProjectionMatrix, obj.ProjectionMatrix, 0.0001f, "Initial");
|
|
|
|
|
Asserts.AreEqual (MatrixFloat4x4.Transpose ((MatrixFloat4x4) initialProjectionMatrix), obj.ProjectionMatrix4x4, 0.0001f, "Initial 4x4");
|
|
|
|
|
Asserts.AreEqual (MatrixFloat4x4.Transpose ((MatrixFloat4x4) initialProjectionMatrix), CFunctions.GetMatrixFloat4x4 (obj, "projectionMatrix"), 0.0001f, "Initial native");
|
|
|
|
|
|
|
|
|
|
obj.NearVisibilityDistance = 1.0f;
|
|
|
|
|
var modifiedProjectionMatrix = new Matrix4 (
|
|
|
|
|
1.308407f, 0, 0, 0,
|
|
|
|
|
0, 1.962611f, 0, 0,
|
|
|
|
|
0, 0, -1.002002f, -1,
|
|
|
|
|
0, 0, -2.002002f, 0
|
|
|
|
|
);
|
|
|
|
|
Asserts.AreEqual (modifiedProjectionMatrix, obj.ProjectionMatrix, 0.0001f, "Second");
|
|
|
|
|
Asserts.AreEqual (MatrixFloat4x4.Transpose ((MatrixFloat4x4) modifiedProjectionMatrix), obj.ProjectionMatrix4x4, 0.0001f, "Second 4x4");
|
|
|
|
|
Asserts.AreEqual (MatrixFloat4x4.Transpose ((MatrixFloat4x4) modifiedProjectionMatrix), CFunctions.GetMatrixFloat4x4 (obj, "projectionMatrix"), 0.0001f, "Second native");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif // !__WATCHOS__
|