Exemple #1
0
        public void OnObstacleInteractiveObjectDestroyed(ObstacleInteractiveObject ObstacleInteractiveObjectDestroyed)
        {
            foreach (var ObstaclesWithFrustums in CalculatedOcclusionFrustums.Values)
            {
                ObstaclesWithFrustums.Remove(ObstacleInteractiveObjectDestroyed.ObstacleInteractiveObjectUniqueID);
            }

            this.ObstacleLastFramePositions.Remove(ObstacleInteractiveObjectDestroyed);
        }
Exemple #2
0
 public void RemoveNearSquareObstacle(ObstacleInteractiveObject ObstacleInteractiveObject)
 {
     nearSquareObstacles.Remove(ObstacleInteractiveObject);
 }
Exemple #3
0
 public void AddNearSquareObstacle(ObstacleInteractiveObject ObstacleInteractiveObject)
 {
     nearSquareObstacles.Add(ObstacleInteractiveObject);
 }
Exemple #4
0
 public List <FrustumPointsPositions> GetCalculatedOcclusionFrustums(ObstacleListenerSystem ObstacleListener, ObstacleInteractiveObject obstacleInteractiveObject)
 {
     return(GetCalculatedOcclusionFrustums()[ObstacleListener.ObstacleListenerUniqueID][obstacleInteractiveObject.ObstacleInteractiveObjectUniqueID]);
 }
Exemple #5
0
        private void ClearAndCreateCalculatedFrustums(ObstacleListenerSystem obstacleListener, ObstacleInteractiveObject obstalceInteractiveObject)
        {
            CalculatedOcclusionFrustums.TryGetValue(obstacleListener.ObstacleListenerUniqueID, out var obstalceFrustumPointsPositions);
            if (obstalceFrustumPointsPositions == null)
            {
                CalculatedOcclusionFrustums.Add(obstacleListener.ObstacleListenerUniqueID, new Dictionary <int, List <FrustumPointsPositions> >());
                obstalceFrustumPointsPositions = CalculatedOcclusionFrustums[obstacleListener.ObstacleListenerUniqueID];
            }

            obstalceFrustumPointsPositions.TryGetValue(obstalceInteractiveObject.ObstacleInteractiveObjectUniqueID, out var squareObstacleFrustumPositions);
            if (squareObstacleFrustumPositions == null)
            {
                obstalceFrustumPointsPositions.Add(obstalceInteractiveObject.ObstacleInteractiveObjectUniqueID, new List <FrustumPointsPositions>());
            }
            else
            {
                squareObstacleFrustumPositions.Clear();
            }
        }
Exemple #6
0
        private static void AddToArrays(ref NativeArray <FrustumOcclusionCalculationData> FrustumOcclusionCalculationDatas, NativeArray <FrustumV2Indexed> AssociatedFrustums,
                                        ref int currentOcclusionCalculationCounter, ref int currentFrustumCounter, ObstacleListenerSystem obstacleListenerThatChanged, ObstacleInteractiveObject nearSquareObstacle)
        {
            foreach (var nearSquaureObstacleFrustum in nearSquareObstacle.GetFaceFrustums())
            {
                AssociatedFrustums[currentFrustumCounter] = new FrustumV2Indexed
                {
                    FrustumV2            = nearSquaureObstacleFrustum,
                    CalculationDataIndex = currentOcclusionCalculationCounter
                };
                currentFrustumCounter += 1;
            }

            FrustumOcclusionCalculationDatas[currentOcclusionCalculationCounter] = new FrustumOcclusionCalculationData
            {
                FrustumCalculationDataID = new FrustumCalculationDataID
                {
                    ObstacleListenerUniqueID     = obstacleListenerThatChanged.ObstacleListenerUniqueID,
                    SquareObstacleSystemUniqueID = nearSquareObstacle.ObstacleInteractiveObjectUniqueID,
                },
                ObstacleListenerTransform = obstacleListenerThatChanged.AssociatedRangeTransformProvider(),
                SquareObstacleTransform   = nearSquareObstacle.GetObstacleCenterTransform()
            };

            currentOcclusionCalculationCounter += 1;
        }
Exemple #7
0
 public void OnSquareObstacleSystemDestroyed(ObstacleInteractiveObject obstacleInteractiveObject)
 {
     this.AllObstacleInteractiveObjects.Remove(obstacleInteractiveObject);
 }
Exemple #8
0
 public int OnSquareObstacleSystemCreated(ObstacleInteractiveObject obstacleInteractiveObject)
 {
     this.AllObstacleInteractiveObjects.Add(obstacleInteractiveObject);
     this.SquareObstacleSystemAddedCounter += 1;
     return(this.SquareObstacleSystemAddedCounter);
 }
Exemple #9
0
 public void RemoveNearSquareObstacle(ObstacleInteractiveObject ObstacleInteractiveObject)
 {
     nearSquareObstacles.Remove(ObstacleInteractiveObject);
     ObstacleInteractiveObject.UnRegisterInteractiveObjectDestroyedEventListener(this.OnObstacleInteractiveObjectDestroyed);
 }
Exemple #10
0
        private bool OcclusionCalculationDataAvailable(ObstacleListenerSystem ObstacleListenerSystem, ObstacleInteractiveObject ObstacleInteractiveObject)
        {
            this.CalculatedOcclusionFrustums.TryGetValue(ObstacleListenerSystem.ObstacleListenerUniqueID, out Dictionary <int, List <FrustumPointsPositions> > FrustumPointsPositionsByObstacle);
            if (FrustumPointsPositionsByObstacle != null)
            {
                FrustumPointsPositionsByObstacle.TryGetValue(ObstacleInteractiveObject.ObstacleInteractiveObjectUniqueID, out List <FrustumPointsPositions> FrustumPointsPositions);
                if (FrustumPointsPositions != null)
                {
                    return(true);
                }
            }

            return(false);
        }