public CollisionEvent(Entity source, CollidableTemplate origin, CollidableTemplate target, Vector3 hitPoint, Vector3 hitNormal, int hit = -1) { Source = source; Origin = origin; Target = target; HitPoint = hitPoint; HitNormal = hitNormal; Hit = hit; }
public PerformedCollisionEvent(CollidableTemplate origin, CollidableTemplate target, Vector3 hitPoint, Vector3 hitNormal, int hit = -1) { Origin = origin; Target = target; HitPoint = hitPoint; HitNormal = hitNormal; Hit = hit; }
public static bool IsValidCollision(Entity entity, bool limitEnemy, Entity hitEntity, Collider collider, out CollidableTemplate sourceTemplate, out CollidableTemplate targetTemplate) { sourceTemplate = targetTemplate = null; if (hitEntity == entity) { return(false); } var tr = collider.transform; if (tr.CompareTag(StringConst.TagInvalidCollider) || tr.CompareTag(StringConst.TagSensor)) { return(false); } if (!hitEntity.Tags.Contain(EntityTags.CanUnityCollide)) { return(false); } if (AreEntitiesConnected(hitEntity, entity)) { return(false); } #if DEBUG DebugLog.Add(entity.DebugId + " hit actor " + tr.name); #endif sourceTemplate = entity.FindTemplate <CollidableTemplate>(); targetTemplate = hitEntity.FindTemplate <CollidableTemplate>(); if (sourceTemplate == null || targetTemplate == null || sourceTemplate == targetTemplate) { return(false); } if (limitEnemy) { if (World.Get <FactionSystem>().AreEnemies(sourceTemplate.Entity, targetTemplate.Entity)) { if (entity.Tags.IsConfused) { return(false); } } else { if (!entity.Tags.IsConfused) { return(false); } } } return(true); }