Example #1
0
    void IntegrityCheck(NoColDebrisController controller)
    {
        int count = Physics2D.OverlapCircleNonAlloc(transform.position, circleCollider.radius + 0.1f, results);

        integrity++;

        for (int i = 0; i < count; i++)
        {
            var debrit = results[i].GetComponent <NoColDebrisController>();

            if (debrit == null)
            {
                continue;
            }

            debrit.CheckIntegryty(integrity);
        }

        // Iterate over each debrits
        foreach (var debrit in debrits)
        {
            if (debrit.integrity != integrity)
            {
                debrit.OnWillBeDestroyed();
                Destroy(debrit.gameObject);
            }
        }

        needsIntegrityCheck = false;
        UpdatePlayerSizeSqr();
    }
Example #2
0
 void AssignSquadron(NoColDebrisController debrit)
 {
     foreach (Squadronleader leader in general.squadList)
     {
         if ((debrit.transform.position - leader.transform.position).sqrMagnitude <= 50f)
         {
             leader.debritList.Add(debrit);
         }
     }
 }
Example #3
0
    public NoColDebrisController NewDebris(Vector3 pos)
    {
        base.GetGameObject();

        NoColDebrisController debris = debrisPool.Dequeue();

        if (debris)
        {
            debris.transform.position = pos;
        }

        Benchmark.instance.maxSimultaneousDebriss = allocatedObjectCount;

        return(debris);
    }
Example #4
0
 void OnDebritDestroyed(NoColDebrisController controller)
 {
     if (debritdistancelist.Count > 0 && debritdistancelist.Peek() == controller)
     {
         debritdistancelist.Dequeue();
         while (debritdistancelist.Count > 0 && debritdistancelist.Peek() == null)
         {
             debritdistancelist.Dequeue();
         }
         DistanceMaxOfAglo = (debritdistancelist.Count > 0) ?
                             Vector2.Distance(transform.position, debritdistancelist.Peek().transform.position) : 0;
         resizeCamera();
     }
     debrits.Remove(controller);
 }
Example #5
0
    public void AgglomerateDebrit(NoColDebrisController debrit)
    {
        float tmp;

        if ((tmp = Vector2.Distance(transform.position, debrit.transform.position)) > DistanceMaxOfAglo)
        {
            debritdistancelist.Enqueue(debrit);
            DistanceMaxOfAglo = tmp;
            resizeCamera();
        }
        AssignSquadron(debrit);
        debrits.Add(debrit);
        debrit.Agglomerate(integrity);
        debrit.onDestroyed     += OnDebritDestroyed;
        debrit.onLaserReceived += (a) => { needsIntegrityCheck = true; controller = a; };
        debrit.transform.SetParent(transform, true);

        UpdatePlayerSizeSqr();
    }
Example #6
0
 public void FreeDebris(NoColDebrisController o)
 {
     FreeGameObject(o.gameObject);
     debrisPool.Enqueue(o);
 }