コード例 #1
0
        private void AddVisisbleCellsFromCamera(VegetationStudioCamera vegetationStudioCamera)
        {
            JobCullingGroup jobCullingGroup = vegetationStudioCamera.JobCullingGroup;

            if (jobCullingGroup == null)
            {
                return;
            }
            for (int i = 0; i <= jobCullingGroup.VisibleCellIndexList.Length - 1; i++)
            {
                VegetationCell vegetationCell =
                    vegetationStudioCamera.PotentialVisibleCellList[jobCullingGroup.VisibleCellIndexList[i]];

                SelectedVegetationCell selectedVegetationCell = GetSelectorVegetationCell(vegetationCell);

                if (selectedVegetationCell != null)
                {
                    selectedVegetationCell.AddCameraReference(vegetationStudioCamera);
                }
                else
                {
                    selectedVegetationCell = new SelectedVegetationCell(vegetationCell, vegetationStudioCamera);

                    VisibleSelectorVegetationCellList.Add(selectedVegetationCell);
                    OnVegetationCellVisibleDelegate?.Invoke(selectedVegetationCell.VegetationCell);
                }
            }
        }
コード例 #2
0
        private void RemoveVisisbleCellsFromCamera(VegetationStudioCamera vegetationStudioCamera)
        {
            JobCullingGroup jobCullingGroup = vegetationStudioCamera.JobCullingGroup;

            if (jobCullingGroup == null)
            {
                return;
            }

            for (int j = 0; j <= jobCullingGroup.VisibleCellIndexList.Length - 1; j++)
            {
                VegetationCell vegetationCell =
                    vegetationStudioCamera.PotentialVisibleCellList[jobCullingGroup.VisibleCellIndexList[j]];

                SelectedVegetationCell selectedVegetationCell = GetSelectorVegetationCell(vegetationCell);

                if (selectedVegetationCell == null)
                {
                    continue;
                }

                selectedVegetationCell.RemoveCameraReference(vegetationStudioCamera);
                if (selectedVegetationCell.CameraCount == 0)
                {
                    VisibleSelectorVegetationCellList.Remove(selectedVegetationCell);
                    OnVegetationCellInvisibleDelegate?.Invoke(selectedVegetationCell.VegetationCell);
                }
            }
        }
コード例 #3
0
 void CreateCullingGroup()
 {
     JobCullingGroup?.Dispose();
     JobCullingGroup = new JobCullingGroup {
         TargetCamera = SelectedCamera
     };
     JobCullingGroup.OnStateChanged             += OnStateChanged;
     JobCullingGroup.OnDistanceBandStateChanged += OnDistanceBandStateChanged;
 }
コード例 #4
0
        void CreateBillboardCullingGroup()
        {
            BillboardJobCullingGroup?.Dispose();
            BillboardJobCullingGroup = new JobCullingGroup {
                TargetCamera = SelectedCamera
            };
            //BillboardJobCullingGroup.OnStateChanged += OnStateChanged;

            UpdateBillboardCullingGroup();
        }
コード例 #5
0
        public void Dispose()
        {
            PotentialVisibleCellList?.Clear();
            JobCullingGroup?.Dispose();
            JobCullingGroup = null;

            BillboardJobCullingGroup?.Dispose();
            BillboardJobCullingGroup = null;

            DisposeVegetationStudioCameraRenderList();

            _potentialCellsCenterPosition = new Vector3(0, -10000, 0);
        }