public void TestPlaceObject() { // Arrange aRObjectAlignment.RegistererUnaligned(aRObject); var blankVector = Vector3.zero; var cameraPos = new Vector3(1, 4, 6); var aRObjectPos = new Vector3(0, 1, 2); var planePoint = new Vector3(0, 5, 0); cameraSystem.Pos.Returns(cameraPos); aRObject.Pos.Returns(aRObjectPos); aRObject.IsVisible.Returns(true); raycastSystem.TryToGetPlanePoint( cameraPos, Utils.GetDirectionBetweenVectors(cameraPos, aRObjectPos), out blankVector).Returns(x => { x[2] = planePoint; return(true); }); // Act aRObjectAlignment.Tick(); // Assert aRObject.Received().SetPosition(planePoint); }
private void Align(IARObject arObject) { if (!arObject.IsVisible) { return; } var direction = Utils.GetDirectionBetweenVectors(cameraSystem.Pos, arObject.Pos); var newPos = Vector3.zero; if (!raycastSystem.TryToGetPlanePoint(cameraSystem.Pos, direction, out newPos)) { return; } arObject.SetPosition(newPos); unaligned.Remove(arObject); }