Example #1
0
    // Check out  and init projectiles foreach seg
    void CheckOutProj(ProjectileSpellBookBuilder builder)
    {
        foreach (SpellCreationSegment seg in builder.GetSpellSegs())
        {
            List <GameObject> gameObjs = new List <GameObject>();
            for (int i = 0; i < 15; i++)
            {
                GameObject projParent = ProjectileParentPool.Take();
                if (builder.trigger == ProjectileSpellBookBuilder.EventTrigger.Proximity)
                {
                    projParent.GetComponent <Trigger>().active     = true;
                    projParent.GetComponent <Trigger>().spellEvent = builder.spellEvent;
                }
                foreach (SpellPixelFinal spf in seg.GetPixels())
                {
                    GameObject projPixel = ProjectilePool.Take();
                    projPixel.transform.parent        = projParent.transform;
                    projPixel.transform.localPosition = Vector2.zero + spf.m_position * .25f;
                    projPixel.transform.rotation      = Quaternion.identity;
                    projPixel.GetComponent <SpriteRenderer>().color = spf.m_ink.GetColor();
                    ProjectileCollision projCollision = projPixel.GetComponent <ProjectileCollision>();
                    projCollision.caster   = caster;
                    projCollision.priority = spf.m_ink.GetPriority();
                    projCollision.spellCollisionBehaviour = spf.m_ink.GetOnSpellCollisionEffect();
                    projCollision.damage          = spf.damage;
                    projCollision.damageBehaviour = spf.m_ink.GetOnHitEffect();
                    projCollision.backGroundCollisionBehaviour = builder.lang.GetCollisionBehaviour();
                }
                projParent.GetComponent <ProjectileController>().SetProjectile(seg, this);

                gameObjs.Add(projParent);
                projParent.SetActive(false);
            }
            openObjs.Add(seg, gameObjs);
        }
    }