public CreatorSystem(PhysicsScene physicsScene, CollisionMatrix collisionMatrix) { _physicsScene = physicsScene; _collisionMatrix = collisionMatrix; _heroFilter = new EcsFilter().AllOf <HeroComponent>(); _staticRectFilter = new EcsFilter().AllOf <StaticRectComponent, CharacterComponent, BroadphaseRefComponent>(); _staticCircleFilter = new EcsFilter().AllOf <StaticCircleComponent, CharacterComponent, BroadphaseRefComponent>(); _dynamicBlueCircleFilter = new EcsFilter().AllOf <BlueCircleComponent, CharacterComponent, BroadphaseRefComponent>(); _dynamicYellowCircleFilter = new EcsFilter().AllOf <YellowCircleComponent, CharacterComponent, BroadphaseRefComponent>(); }
private void UpdateCollisions() { List <TankContainer> list = new List <TankContainer>(); CollisionMatrix collisionMatrix = default(CollisionMatrix); Vector3 position = base.transform.position; foreach (KeyValuePair <TankContainer, float> activeCollision in activeCollisions) { TankContainer key = activeCollision.Key; if (key == null || key.transform == null || key.CurrentHealth <= 0f) { list.Add(key); } else { Vector3 position2 = key.transform.position; if ((position - position2).sqrMagnitude > activeCollision.Value + collisionRadius) { list.Add(key); } else { bool flag = position.x < position2.x; if (key.Enemy != null && TankGame.instance.Boss != null && key.Enemy == TankGame.instance.Boss) { collisionMatrix.immovableLeft |= !flag; collisionMatrix.immovableRight |= flag; } else { collisionMatrix.movableLeft |= !flag; collisionMatrix.movableRight |= flag; } } } } if (position.x - collisionRadius <= moveBoundaries.min) { collisionMatrix.immovableLeft = true; } else if (!float.IsInfinity(moveBoundaries.max) && position.x + collisionRadius >= moveBoundaries.max) { collisionMatrix.immovableRight = true; } this.collisionMatrix = collisionMatrix; foreach (TankContainer item in list) { activeCollisions.Remove(item); } }
public void SetCollisionMatrixAndRenewDirectionIfNeeded(CollisionMatrix newMatrix) { _collisionMatrix = newMatrix; SetNewDirectionIfNeeded(); }
private void InitCollisionMatrix() { _collisionMatrix = new CollisionMatrix(); _collisionMatrix.Init(); }