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