예제 #1
0
    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));
        }
    }
예제 #2
0
    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");
        }
    }
예제 #3
0
    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));
        }
    }
예제 #4
0
    public static float GetInfluence(GameObject gameObject, ForceKind forceKind)
    {
        var material = GetMaterial(gameObject);

        return(material.GetInfluence(forceKind));
    }