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 );
            }
        }
    }
 void AddCollisionPoints(ParticleCollisionData pcd)
 {
     collisionPoints.Add(pcd);
 }