コード例 #1
0
        public IEnumerator TestSurfacePointDataCoordinateTransformation()
        {
            var expectedPosition = new Vector3(1.23f, 4.56f, 7.89f);

            var project = projects.AddProject("foo");

            projects.SetDataToGameCoordinatesConversionParameters(
                project: ref project,
                shift: new Vector3(-0.12f, 3.45f, 6.78f),
                scale: 0.123f);

            var data = new Core.Data.GemPy.DataPoint
            {
                position = new Vector3(
                    expectedPosition.x,
                    expectedPosition.y,
                    expectedPosition.z),
                type = Core.Data.GemPy.InputType.SurfacePoint
            };

            var gameObject = new GameObject("Surface Point");

            gameObject.transform.localPosition = new Vector3(
                data.position.x,
                data.position.y,
                data.position.z);

            projects.TransformFromDataToGameCoordinates(
                project: in project,
                gameObject: ref gameObject);

            projects.SetInputDataFromGameObject(
                project: in project,
                gameObject: in gameObject,
                dataPoint: ref data);

            Assert.IsFalse(data.position == expectedPosition);

            projects.TransformFromGameToDataCoordinates(
                project: in project,
                gameObject: ref gameObject);

            projects.SetInputDataFromGameObject(
                project: in project,
                gameObject: in gameObject,
                dataPoint: ref data);

            Assert.IsTrue(data.position == expectedPosition);

            yield return(null);
        }
コード例 #2
0
        public IEnumerator TestOrientationDataCoordinateTransformation()
        {
            var expectedPosition = new Vector3(1.23f, 4.56f, 7.89f);

            var expectedGradient = new Vector3(0.1f, -0.4f, 0.8f).normalized;

            var project = projects.AddProject("foo");

            projects.SetDataToGameCoordinatesConversionParameters(
                project: ref project,
                shift: new Vector3(-0.12f, 3.45f, 6.78f),
                scale: 0.123f);

            var data = new Core.Data.GemPy.DataPoint
            {
                position = new Vector3(
                    expectedPosition.x,
                    expectedPosition.y,
                    expectedPosition.z),
                gradient = new Vector3(
                    expectedGradient.x,
                    expectedGradient.y,
                    expectedGradient.z),
                type = Core.Data.GemPy.InputType.Orientation
            };

            var gameObject = new GameObject("Orientation");

            gameObject.transform.localPosition = new Vector3(
                data.position.x,
                data.position.y,
                data.position.z);

            // Here it gets a bit complicated to mock the spawning.
            // Maybe it'd be better just to do an integration test.
            gameObject.transform.localRotation *= Quaternion.FromToRotation(
                gameObject.transform.forward,
                data.gradient);
            //

            projects.TransformFromDataToGameCoordinates(
                project: in project,
                gameObject: ref gameObject);

            projects.SetInputDataFromGameObject(
                project: in project,
                gameObject: in gameObject,
                dataPoint: ref data);

            Assert.IsFalse(data.position == expectedPosition);

            Assert.IsFalse(data.gradient == expectedGradient);

            projects.TransformFromGameToDataCoordinates(
                project: in project,
                gameObject: ref gameObject);

            projects.SetInputDataFromGameObject(
                project: in project,
                gameObject: in gameObject,
                dataPoint: ref data);

            Assert.IsTrue(data.position == expectedPosition);

            Assert.IsTrue(data.gradient == expectedGradient);

            yield return(null);
        }