public static IEnumerable <SusceptibleParticleSystem> GetSusceptibleReceivers(ForceKind kind) { // TODO: cache 'em, cache em all! var receivers = GameObject.FindObjectsOfType <ParticleSystemForceReceiver> (); foreach (var receiver in receivers) { if (receiver.ParticleMass == 0) { continue; } var material = receiver.Material; if (material == null) { material = DefaultSettings.Singleton.ParticleSystemForceReceiverMaterialOrDefault; } float influence = material.GetInfluence(kind); if (influence == 0) { continue; } yield return(new SusceptibleParticleSystem(receiver, influence, material)); } }
public float GetInfluence(ForceKind forceKind) { switch (forceKind) { case ForceKind.Gravity: return(Gravity); case ForceKind.Magnetism: return(Magnetism); case ForceKind.Shockwave: return(Shockwave); case ForceKind.Wind: return(Wind); case ForceKind.Love: return(Love); default: throw new System.ArgumentOutOfRangeException("forceKind"); } }
private static IEnumerable <SusceptibleRigidbody2D> GetSusceptibleBodies(ForceKind kind) { // TODO: cache 'em, cache em all! var bodies = GameObject.FindObjectsOfType <Rigidbody2D> (); foreach (var body in bodies) { var material = ForceReceiver.GetMaterial(body.gameObject); float influence = material.GetInfluence(kind); if (influence == 0) { continue; } yield return(new SusceptibleRigidbody2D(body, influence, material)); } }
public static float GetInfluence(GameObject gameObject, ForceKind forceKind) { var material = GetMaterial(gameObject); return(material.GetInfluence(forceKind)); }