TSTransform2D interpolation bug fix
Options
I was wondering if there's a public git repo or something I can submit a pull request to? I have a bug fix for the TSTransform2D class. If not, I can just paste the code change here.
0
Comments
-
Either way, here's the code. This fixes the Interpolate and Extrapolate options (at least for position) from a TSRigidBody2D.
private void UpdatePlayMode() { if (rb != null) { if (rb.interpolation == TSRigidBody2D.InterpolateMode.Interpolate) { var lerpAmount = (float)((Time.time - TrueSyncManager.Time) / TrueSyncManager.TrueSyncGlobalConfig.lockedTimeStep); transform.position = Vector3.Lerp(transform.position, position.ToVector(), lerpAmount); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, rotation.AsFloat()), lerpAmount); transform.localScale = Vector3.Lerp(transform.localScale, scale.ToVector(), lerpAmount); return; } else if (rb.interpolation == TSRigidBody2D.InterpolateMode.Extrapolate) { transform.position = (position + tsCollider.Body.TSLinearVelocity * Time.deltaTime).ToVector(); transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, rotation.AsFloat()), Time.deltaTime * DELTA_TIME_FACTOR); transform.localScale = Vector3.Lerp(transform.localScale, scale.ToVector(), Time.deltaTime * DELTA_TIME_FACTOR); return; } } transform.position = position.ToVector(); Quaternion rot = transform.rotation; rot.eulerAngles = new Vector3(0, 0, rotation.AsFloat()); transform.rotation = rot; transform.localScale = scale.ToVector(); }
0 -
Can't find where to edit my response, but a small correction: should be TrueSyncManager.Config.lockedTimeStep instead of TrueSyncManager.TrueSyncGlobalConfig.lockedTimeStep0
-
Thanks @WhaleFood, we don't have a public repo but thanks for sharing.0
-
Sorry. Realized my code is still off because Time.time and TrueSyncManager.Time don't necessarily start together. I was able to finally fix it, but my solution is a bit too messy to share.0