// Update is called once per frame void Update() { if (true_y == 0) { foreach (var nrc in GameObject.FindObjectsOfType <NetworkedRootController>()) { if (nrc.hasAuthority) { true_y = nrc.true_y; } } } Transform left = player.avatar.GetHandTransform(OvrAvatar.HandType.Left, OvrAvatar.HandJoint.HandBase); Transform right = player.avatar.GetHandTransform(OvrAvatar.HandType.Right, OvrAvatar.HandJoint.HandBase); TimedPlayerData tpd = new TimedPlayerData { data = player.GetCurrentPlayerData(), time = Time.realtimeSinceStartup, left_f = left.forward, right_f = right.forward }; buffer.Add(tpd); if (buffer.Count > max_size) { buffer.RemoveAt(0); } if (buffer.Count > f * frame_delta_slow) { var keyframe_slow = keyframes(frame_delta_slow); var keyframe_fast = keyframes(frame_delta_fast); EarthWave(keyframe_fast); LeftFireball(keyframe_fast); RightFireball(keyframe_fast); RightAir(keyframe_fast); RightAir(keyframe_slow); } }
bool right_above_waist(TimedPlayerData tpd) { return(tpd.data.right_p.y >= waist_frac * true_y + current_terrain_height); }