public static void CallParticleHitHandler(MPWorld world, GameObject obj, ref MPParticle particle) { var mpcattr = obj.GetComponent <MPColliderAttribute>(); if (mpcattr) { mpcattr.particleHitHandler(world, obj, ref particle); } }
void OnHitParticle(ref MPParticle particle) { m_mpcol.PropagateHit(ref particle); const float VelocityThreshold = 12.5f; if (particle.speed > VelocityThreshold) { particle.lifetime = 0.0f; Damage(0.25f); } }
public unsafe void PropagateHit(ref MPParticle particle) { Vector3 f = MPAPI.mpGetIntermediateData(MPWorld.GetCurrentContext())->accel * MPWorld.GetCurrent().m_particle_mass; if (m_rigid3d != null) { m_rigid3d.AddForceAtPosition(f, particle.position); } if (m_rigid2d != null) { m_rigid2d.AddForceAtPosition(f, particle.position); } }
public unsafe void PropagateHit(ref MPParticle particle) { Vector3 f = MPAPI.mpGetIntermediateData(MPWorld.GetCurrentContext())->accel *MPWorld.GetCurrent().m_particle_mass; if (m_rigid3d) { m_rigid3d.AddForceAtPosition(f, particle.position); } if (m_rigid2d) { m_rigid2d.AddForceAtPosition(f, particle.position); } }
public static void DefaultParticleHitHandler(MPWorld world, GameObject obj, ref MPParticle particle) { float force = world.force; Vector3 vel = particle.velocity3; Rigidbody rb3d = obj.GetComponent <Rigidbody>(); if (rb3d) { rb3d.AddForceAtPosition(vel * force, particle.position3); } Rigidbody2D rb2d = obj.GetComponent <Rigidbody2D>(); if (rb2d) { rb2d.AddForceAtPosition(vel * force, particle.position3); } }
void Handler(ref MPParticle particle) { particle.lifetime = 0.0f; }
public static unsafe extern void mpWriteParticles(int context, MPParticle *from);
public static unsafe extern void mpCopyParticles(int context, MPParticle *dst);