Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 public PerformedCollisionEvent(CollidableTemplate origin, CollidableTemplate target, Vector3 hitPoint, Vector3 hitNormal, int
                                hit = -1)
 {
     Origin    = origin;
     Target    = target;
     HitPoint  = hitPoint;
     HitNormal = hitNormal;
     Hit       = hit;
 }
Ejemplo n.º 3
0
        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);
        }