Skip to content

Commit 2b0493f

Browse files
committed
feat: reset interp tick on identity initialize
1 parent fee3eaf commit 2b0493f

File tree

1 file changed

+22
-8
lines changed

1 file changed

+22
-8
lines changed

Scripts/GameApi/LiteNetLibTransform.cs

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,18 @@ public Vector3 GetScale(Vector3 defaultScale)
142142

143143
public override void OnIdentityInitialize()
144144
{
145+
Manager.LogicUpdater.OnTick -= LogicUpdater_OnTick;
145146
Manager.LogicUpdater.OnTick += LogicUpdater_OnTick;
147+
_hasInterpTick = false;
148+
_interpTick = InitialInterpTick = 0;
149+
_prevSyncData = new TransformData()
150+
{
151+
Tick = Manager.LocalTick,
152+
SyncData = syncData,
153+
Position = transform.position,
154+
EulerAngles = transform.eulerAngles,
155+
Scale = transform.localScale,
156+
};
146157
_interpFromData = _interpToData = new TransformData()
147158
{
148159
Position = transform.position,
@@ -160,13 +171,14 @@ public override void OnSetOwnerClient(bool isOwnerClient)
160171
{
161172
base.OnSetOwnerClient(isOwnerClient);
162173
_hasInterpTick = false;
163-
TransformData transformData = _prevSyncData;
164-
transformData.Tick = Manager.Tick;
165-
transformData.SyncData = syncData;
166-
transformData.Position = transform.position;
167-
transformData.EulerAngles = transform.eulerAngles;
168-
transformData.Scale = transform.localScale;
169-
_prevSyncData = transformData;
174+
_prevSyncData = new TransformData()
175+
{
176+
Tick = Manager.LocalTick,
177+
SyncData = syncData,
178+
Position = transform.position,
179+
EulerAngles = transform.eulerAngles,
180+
Scale = transform.localScale,
181+
};
170182
}
171183

172184
private void LogicUpdater_OnTick(LogicUpdater updater)
@@ -302,10 +314,12 @@ private void OwnerSyncTransform(TransformData[] data)
302314
[AllRpc]
303315
private void ServerSyncTransform(TransformData[] data)
304316
{
317+
if (IsServer)
318+
return;
305319
if (syncByOwnerClient && IsOwnerClient)
306320
return;
307321
StoreSyncBuffers(data, 30);
308-
if (!IsServer && !_hasInterpTick && _buffers.Count > 0)
322+
if (!_hasInterpTick && _buffers.Count > 0)
309323
{
310324
_hasInterpTick = true;
311325
uint interpTick = _buffers.Keys[_buffers.Count - 1];

0 commit comments

Comments
 (0)