public static void ParticleProcessor(MPWorld world, int numParticles, MPParticle *particles) { for (int i = 0; i < numParticles; ++i) { if (particles[i].hit == -1 || particles[i].hit == particles[i].hit_prev) { continue; } GameObject col = world.colliders[particles[i].hit]; RedirectForceToParent cp = col.GetComponent <RedirectForceToParent>(); if (cp) { Transform parent = col.transform.parent; if (parent) { MPUtils.CallParticleHitHandler(world, parent.gameObject, ref particles[i]); } } else { MPUtils.CallParticleHitHandler(world, col, ref particles[i]); } } }
[DllImport("MassParticle")] unsafe public static extern void mpWriteParticles(int context, MPParticle *from);
[DllImport("MassParticle")] unsafe public static extern void mpCopyParticles(int context, MPParticle *dst);
public static unsafe void DefaultParticleProcessor(MPWorld world, int numParticles, MPParticle *particles) { for (int i = 0; i < numParticles; ++i) { if (particles[i].hit != -1 && particles[i].hit != particles[i].hit_prev) { GameObject col = world.colliders[particles[i].hit]; MPColliderAttribute cattr = col.GetComponent <MPColliderAttribute>(); if (cattr) { cattr.particleHitHandler(world, col, ref particles[i]); } } } }
unsafe public static extern void mpWriteParticles(int context, MPParticle *from);
unsafe public static extern void mpCopyParticles(int context, MPParticle *dst);