/// <summary> /// Copy one frame to another. Used when the buffer is empty and either need to copy the current frame or resort to the offtick frame. /// </summary> public void CopyFrame(Frame sourceFrame, Frame targetFrame, bool includePositions = true, bool includeRotations = true) { targetFrame.pos = sourceFrame.pos; targetFrame.compPos = sourceFrame.compPos; targetFrame.endTime = sourceFrame.endTime; targetFrame.appliedTime = sourceFrame.appliedTime; // Strip the custom message flag from copies, or they will fire twice. targetFrame.msgType = (sourceFrame.msgType == MsgType.Cust_Msg) ? MsgType.Position : sourceFrame.msgType; if (includePositions) { targetFrame.positionsMask = sourceFrame.positionsMask; for (int i = 0; i < targetFrame.positions.Count; i++) { GenericX.Copy(sourceFrame.positions[i], targetFrame.positions[i]); DebugX.Log(Time.time + " " + i + " Copy Source Pos " + sourceFrame.positions[i]); } } if (includeRotations) { targetFrame.rotationsMask = sourceFrame.rotationsMask; for (int i = 0; i < targetFrame.rotations.Count; i++) { GenericX.Copy(sourceFrame.rotations[i], targetFrame.rotations[i]); DebugX.Log(Time.time + " " + i + " Copy Source Rot " + sourceFrame.rotations[i]); } } targetFrame.packetArriveTime = Time.time; }