public override void Activate() { if (isActive) { Deactivate(); shouldActivate = 10; return; } if (shouldActivate > 0) { shouldActivate = 0; } isActive = true; if (currentMagic != null) { currentMagic.Deactivate(); } print("emissionRate: " + emissionRate); magicParent = new GameObject(myElement.ToString() + " Magic Parent"); magicParent.transform.position = transform.position; GameObject magic = Instantiate(MagicList.elementMagicList[myElement], magicParent.transform) as GameObject; magic.name = myElement.ToString() + " Magic PS"; currentMagic = magic.GetComponent <ParticleMagic>(); currentMagic.SetElement(myElement); ClipperTest ct = magic.GetComponent <ClipperTest>(); if (ct == null) { magic.AddComponent <ClipperTest>(); } magicCollider = magic.GetComponent <Collider2D>(); if (currentMagic != null) { Debug.Log("Activating the " + myElement.ToString() + " Magic"); if (autoActivate) { Debug.Log("There ain't no shape, so we just shooting the magic"); currentMagic.Activate(); } else { Debug.Log("Waiting for the Form MC to activate the magic"); } } else { Debug.LogError("YO, you forgot to put the ParticleMagic on " + myElement.ToString()); } }
void OnParticleCollision(GameObject other) { ParticlePhysicsExtensions.GetCollisionEvents(ps, other, psCollisionEvents); ParticleMagic pm = other.gameObject.GetComponent <ParticleMagic>(); if (pm != null) { solidMagicCollision = true; solidMagicCollisionResetTime = .1f; ActivateOnCollision.Value()(); // // List<Vector3> collisionPoints = new List<Vector3>( psCollisionEvents.Count ); for (int i = 0; i < psCollisionEvents.Count; i++) { ParticleCollisionData pcd = new ParticleCollisionData(); pcd.pointOfCollision = psCollisionEvents[i].intersection; pcd.velocity = psCollisionEvents[i].velocity; if (myCollider.isTrigger) { ClipperTest ct = other.gameObject.GetComponent <ClipperTest>(); pcd.elementCollision = myMagic.GetElement(); ct.AddCollisionPoints(pcd); // print("ADDING TO OTHER CT"); } else { pcd.elementCollision = pm.GetElement(); collisionPoints.Add(pcd); } float markerLength = .2f; Debug.DrawLine(psCollisionEvents[i].intersection - Vector3.up * markerLength / 2, psCollisionEvents[i].intersection + Vector3.up * markerLength / 2, Color.blue); Debug.DrawLine(psCollisionEvents[i].intersection - Vector3.right * markerLength / 2, psCollisionEvents[i].intersection + Vector3.right * markerLength / 2, Color.blue); // print("ParticleCollision object " + psCollisionEvents[i].intersection ); } } }