示例#1
0
        private void Update(FovData fovData)
        {
            var moveDelta = _nodeSplitController.CameraLastPosition.FlatDistance(fovData.CameraPosition);

            if (moveDelta > _configuration.MinimumTreeUpdateDelta)
            {
                _nodeSplitController.SetCameraPosition(fovData.CameraPosition);
                _visibilityResolver.SetFovDataOverride(null);
                _visibilityResolver.SetFovData(fovData);
                _rootNode.UpdateLod();
            }
        }
示例#2
0
        public static FovData FromCamera(Camera camera, Repositioner repositioner = null)
        {
            var lastPosition = camera.transform.position;

            var newPosition = new Vector3(lastPosition.x, 1, lastPosition.z);

            if (repositioner != null)
            {
                newPosition = repositioner.InvMove(newPosition);
            }
            camera.transform.position = newPosition;
            var data = new FovData(camera.transform.position, GeometryUtility.CalculateFrustumPlanes(camera));

            camera.transform.position = lastPosition;
            return(data);
        }
示例#3
0
        public static FovData FromCamera(ICameraForUpdate camera, Repositioner repositioner = null)
        {
            var lastPosition = camera.Position;

            var newPosition = new Vector3(lastPosition.x, 1, lastPosition.z);

            if (repositioner != null)
            {
                newPosition = repositioner.InvMove(newPosition);
            }
            camera.Position = newPosition;
            //BoundDebugging.SetCamera(camera);
            var data = new FovData(camera.Position, camera.CalculateFrustumPlanes(camera));

            camera.Position = lastPosition;
            return(data);
        }
示例#4
0
 public void UpdateCameraPosition()
 {
     _ring1TreeProxy.UpdateCamera(FovData.FromCamera(ActiveCamera));
 }
 public void SetFovData(FovData fovData)
 {
     _fovData = fovData;
 }
 public Ring1VisibilityResolver(Ring1BoundsCalculator ring1BoundsCalculator,
                                Vector3 initialCameraPosition = default(Vector3))
 {
     _ring1BoundsCalculator = ring1BoundsCalculator;
     _fovData = new FovData(initialCameraPosition, null);
 }
示例#7
0
 public void UpdateLod(FovData fovData)
 {
     Update(fovData);
 }