// Token: 0x060017B2 RID: 6066 RVA: 0x000709D4 File Offset: 0x0006EBD4 private void AddKeyFrame(ref WormBodyPositions2.KeyFrame newKeyFrame) { this.newestKeyFrame = newKeyFrame; this.keyFrames.Insert(0, newKeyFrame); this.keyFramesTotalLength += newKeyFrame.length; bool flag = false; float num = this.keyFramesTotalLength; float num2 = this.totalLength + this.headDistance + 4f; while (this.keyFrames.Count > 0 && (num -= this.keyFrames[this.keyFrames.Count - 1].length) > num2) { this.keyFrames.RemoveAt(this.keyFrames.Count - 1); flag = true; } if (flag) { this.keyFramesTotalLength = 0f; foreach (WormBodyPositions2.KeyFrame keyFrame in this.keyFrames) { this.keyFramesTotalLength += keyFrame.length; } } if (NetworkServer.active) { this.CallRpcSendKeyFrame(newKeyFrame); } }
private void RpcSendKeyFrame(WormBodyPositions2.KeyFrame newKeyFrame) { if (!NetworkServer.active) { this.AddKeyFrame(ref newKeyFrame); } }
private void AttemptToGenerateKeyFrame(Vector3 position) { if (!NetworkServer.active) { Debug.LogWarning("[Server] function 'System.Void RoR2.WormBodyPositions2::AttemptToGenerateKeyFrame(UnityEngine.Vector3)' called on client"); return; } WormBodyPositions2.KeyFrame keyFrame = this.newestKeyFrame; CubicBezier3 curve = CubicBezier3.FromVelocities(keyFrame.curve.p1, -keyFrame.curve.v1, position, -this.velocity * (this.keyFrameGenerationInterval * 0.25f)); float length = curve.ApproximateLength(50); WormBodyPositions2.KeyFrame keyFrame2 = new WormBodyPositions2.KeyFrame { curve = curve, length = length, time = WormBodyPositions2.GetSynchronizedTimeStamp() }; if (keyFrame2.length >= 0f) { this.headDistance += keyFrame2.length; this.AddKeyFrame(ref keyFrame2); } }
// Token: 0x060027A3 RID: 10147 RVA: 0x000B8A63 File Offset: 0x000B6C63 public static void _WriteKeyFrame_WormBodyPositions2(NetworkWriter writer, WormBodyPositions2.KeyFrame value) { GeneratedNetworkCode._WriteCubicBezier3_None(writer, value.curve); writer.Write(value.length); writer.Write(value.time); }