private void specialPlacementLogic(GameObject g, GameObject sg = null, GameObject oldG = null) { if (sg != null) { // Special behaviour for Resize component Resize r = sg.GetComponent <Resize>(); if (r != null) { r.nonStatic = g; } } // Special behaviour for CollideTrigger component CollideTrigger ct = g.GetComponent <CollideTrigger>(); if (ct != null) { ct.initialize(); } if (oldG != null) { Transfigure oldT = oldG.GetComponent <Transfigure>(); if (oldT != null) { Transfigure t = g.GetComponent <Transfigure>(); t.targetAndTags.Clear(); foreach (TargetAnimControllerAndTags tar in oldT.targetAndTags) { TargetAnimControllerAndTags newTar = new TargetAnimControllerAndTags(); newTar.targetAnimController = tar.targetAnimController; newTar.includedTags = new List <string>(tar.includedTags); newTar.excludedTags = new List <string>(tar.excludedTags); newTar.repeatable = tar.repeatable; newTar.id = tar.id; newTar.done = false; t.targetAndTags.Add(newTar); } } } TimeTrigger tt = g.GetComponent <TimeTrigger>(); if (tt != null) { tt.initialize(); } MoveHorizontalUntilCollision mh = g.GetComponent <MoveHorizontalUntilCollision>(); if (mh != null) { mh.run(); } KoopaTroopa kt = g.GetComponent <KoopaTroopa>(); if (kt != null) { addResetListener(kt); } FirePower fp = g.GetComponent <FirePower>(); if (fp != null) { addResetListener(fp); } Invisible i = g.GetComponent <Invisible>(); if (i != null) { addResetListener(i); } }