protected void Update() { var dt = Time.deltaTime; var t = Time.timeSinceLevelLoad; _throttle = Mathf.Lerp(_throttle, throttle, dt); _useFace = Mathf.Lerp(_useFace, useFace, dt); if (_throttle > 0f) { switch (mode) { case CrowdMode.Wander: Wander(t, dt); break; case CrowdMode.Gather: Gather(t, dt); break; case CrowdMode.Flow: Flow(t, dt); break; case CrowdMode.Boids: Boids(t, dt); break; default: // Stop break; } } foreach (var op in keys) { if (Input.GetKeyDown(op.Key)) { mode = op.Value; } } Update(t, dt); emissionOffset += dt * emissionSpeed; faceOffset += dt * faceScrollSpeed; Render(); }
public override void OnOSC(string address, List <object> data) { switch (address) { case "/crowd/throttle": throttle = OSCUtils.GetFValue(data, 0); break; case "/crowd/mode": mode = (CrowdMode)OSCUtils.GetIValue(data); break; case "/crowd/reset": Reset(); break; case "/crowd/face/use": useFace = OSCUtils.GetFValue(data); break; case "/crowd/face/speed": faceScrollSpeed = OSCUtils.GetFValue(data); break; case "/crowd/face/random": faceRandom = OSCUtils.GetFValue(data); break; case "/crowd/emission/use": useEmission = OSCUtils.GetBoolFlag(data); break; case "/crowd/emission/rate": emissionRate = Mathf.Clamp01(OSCUtils.GetFValue(data)); break; case "/crowd/emission/speed": emissionSpeed = OSCUtils.GetFValue(data); break; case "/crowd/emission/random": emissionRandom = OSCUtils.GetFValue(data); break; } }
protected void Reset() { Init(); mode = CrowdMode.Stop; }