Пример #1
0
        public void HandleHoleAdded(DynamicTerrainHoleDescription holeDescription)
        {
            InvalidatePaths();

            foreach (var entity in AssociatedEntities)
            {
                var characterRadius          = statsCalculator.ComputeCharacterRadius(entity);
                var paddedHoleDilationRadius = characterRadius + InternalTerrainCompilationConstants.AdditionalHoleDilationRadius + InternalTerrainCompilationConstants.TriangleEdgeBufferRadius;
                if (holeDescription.ContainsPoint(paddedHoleDilationRadius, entity.MovementComponent.WorldPosition))
                {
//               Console.WriteLine("Out ouf bounds!");
                    FixEntityInHole(entity);
                }
            }
        }
Пример #2
0
 public RemoveTemporaryHoleGameEvent(GameTime time, GameLogicFacade gameLogicFacade, DynamicTerrainHoleDescription dynamicTerrainHoleDescription) : base(time)
 {
     this.gameLogicFacade = gameLogicFacade;
     this.dynamicTerrainHoleDescription = dynamicTerrainHoleDescription;
 }
Пример #3
0
 public void AddTemporaryHole(DynamicTerrainHoleDescription holeDescription)
 {
     terrainService.AddTemporaryHoleDescription(holeDescription);
     // todo: can optimize to only invalidate paths intersecting hole.
     movementSystemService.HandleHoleAdded(holeDescription);
 }
Пример #4
0
 public void RemoveTemporaryHole(DynamicTerrainHoleDescription holeDescription)
 {
     terrainService.RemoveTemporaryHoleDescription(holeDescription);
     movementSystemService.InvalidatePaths();
 }
Пример #5
0
 public GameEvent CreateRemoveTemporaryHoleEvent(GameTime time, DynamicTerrainHoleDescription dynamicTerrainHoleDescription)
 {
     return(new RemoveTemporaryHoleGameEvent(time, GameLogicFacade, dynamicTerrainHoleDescription));
 }