public void RemoveCollisionAction(int entityId) { if (CollisionActions.ContainsKey(new Tuple <string, object>("id", entityId))) { CollisionActions.Remove(new Tuple <string, object>("id", entityId)); } }
public void RemoveCollisionAction(string entityName) { if (CollisionActions.ContainsKey(new Tuple <string, object>("name", entityName))) { CollisionActions.Remove(new Tuple <string, object>("name", entityName)); } }
//- Removal methods public void RemoveCollisionAction(Type entityType) { if (CollisionActions.ContainsKey(new Tuple <string, object>("type", entityType))) { CollisionActions.Remove(new Tuple <string, object>("type", entityType)); } }
public bool AddCollisionAction(int entityId, Tuple <ColisionResponce, string[]> responce) { if (!CollisionActions.ContainsKey(new Tuple <string, object>("id", entityId))) { CollisionActions[new Tuple <string, object>("id", entityId)] = responce; return(true); } else { return(false); } }
public bool RemoveCollisionActionOrFail(int entityId) { if (CollisionActions.ContainsKey(new Tuple <string, object>("id", entityId))) { CollisionActions.Remove(new Tuple <string, object>("id", entityId)); return(true); } else { return(false); } }
private void TriggerCollisionEvent(Entity collideEntity, BoxSide side, int collideIndex) { var thisColAction = CollisionActions.FirstOrDefault(c => (c.Side == side || c.Side == BoxSide.All) && c.TargetTag == collideEntity.Tag); thisColAction?.Action.Invoke(thisColAction.ApplyActionOnCollider ? collideEntity : Entity); CollisionEvent?.Invoke(new CollisionData(Entity, collideEntity, side, collideIndex)); var collideComp = collideEntity.GetCurrentState().GetComponent <PhysicsComponent>(); var collideColAction = collideComp?.CollisionActions.FirstOrDefault(c => (c.Side == side.Inversed() || c.Side == BoxSide.All) && c.TargetTag == Entity.Tag); collideColAction?.Action.Invoke(collideColAction.ApplyActionOnCollider ? Entity : collideEntity); collideComp?.CollisionEvent?.Invoke(new CollisionData(collideEntity, Entity, side.Inversed(), collideIndex)); }
private void PushSourceAwayFromTarget(GameTime gameTime, Entity sourceEntity, Entity targetEntity) { CollisionComponent sourceCollisionComponent = ComponentManager.Instance.GetComponentOfEntity <CollisionComponent>(sourceEntity); CollisionComponent targetCollisionComponent = ComponentManager.Instance.GetComponentOfEntity <CollisionComponent>(targetEntity); GravityComponent sourceGravityComponent = ComponentManager.Instance.GetComponentOfEntity <GravityComponent>(sourceEntity); TransformComponent sourceTransformComponent = ComponentManager.Instance.GetComponentOfEntity <TransformComponent>(sourceEntity); if (sourceCollisionComponent.BoundingVolume.Center.X < targetCollisionComponent.BoundingVolume.Center.X) { CollisionActions.AccelerateColliderRightwards(gameTime, sourceEntity); } else { CollisionActions.AccelerateColliderLeftwards(gameTime, sourceEntity); } if (sourceCollisionComponent.BoundingVolume.Center.Z < targetCollisionComponent.BoundingVolume.Center.Z) { CollisionActions.AccelerateColliderBackwards(gameTime, sourceEntity); } else { CollisionActions.AccelerateColliderForwards(gameTime, sourceEntity); } }
private void CheckSurfaceOfBlock(GameTime gameTime, Entity player, Entity block) { CollisionComponent playerCollisionComponent = ComponentManager.Instance.GetComponentOfEntity <CollisionComponent>(player); CollisionComponent blockCollisionComponent = ComponentManager.Instance.GetComponentOfEntity <CollisionComponent>(block); var playerBounding = playerCollisionComponent.BoundingVolume.BoundingBox; var boxBounding = blockCollisionComponent.BoundingVolume.BoundingBox; var diff = boxBounding.Max.Y - (playerBounding.Min.Y); if (diff < 5 && diff > 0) { var gravityComponent = ComponentManager.Instance.ConcurrentGetComponentOfEntity <GravityComponent>(player); if (!gravityComponent.HasJumped) { CollisionActions.RunParticleSystem(player); } CollisionActions.HandleCollisionFromAbove(gameTime, player, diff); } else { PushSourceAwayFromTarget(gameTime, player, block); CollisionActions.HandleCollisionFromBelow(player); } }