// 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); } }