From 9b8b90852496f33b751678aef81553180f6eecbf Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sat, 2 Nov 2024 01:21:53 +0530 Subject: [PATCH] replay fixes and network last contact normal --- src/Marble.hx | 4 ++++ src/Replay.hx | 1 + src/net/NetPacket.hx | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/src/Marble.hx b/src/Marble.hx index 0d526699..d8d47791 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -2068,6 +2068,7 @@ class Marble extends GameObject { marbleUpdate.position = this.newPos; marbleUpdate.velocity = this.velocity; marbleUpdate.omega = this.omega; + marbleUpdate.lastContactNormal = this.lastContactNormal; marbleUpdate.move = move; marbleUpdate.moveQueueSize = this.connection != null ? this.connection.moveManager.getQueueSize() : 255; marbleUpdate.blastAmount = this.blastTicks; @@ -2106,6 +2107,7 @@ class Marble extends GameObject { this.collider.transform.setPosition(p.position); this.velocity = p.velocity; this.omega = p.omega; + this.lastContactNormal = p.lastContactNormal; this.blastTicks = p.blastAmount; this.blastUseTick = p.blastTick; this.helicopterUseTick = p.heliTick; @@ -2384,6 +2386,8 @@ class Marble extends GameObject { move = level.currentInputMoves[1].move; if (this.level.isWatching) { + move = new Move(); + move.d = new Vector(0, 0); if (this.level.replay.currentPlaybackFrame.marbleStateFlags.has(Jumped)) move.jump = true; if (this.level.replay.currentPlaybackFrame.marbleStateFlags.has(UsedPowerup)) diff --git a/src/Replay.hx b/src/Replay.hx index 44ad9770..b2bea8c7 100644 --- a/src/Replay.hx +++ b/src/Replay.hx @@ -85,6 +85,7 @@ class ReplayFrame { interpFrame.marbleVelocity = Util.lerpThreeVectors(this.marbleVelocity, next.marbleVelocity, t); interpFrame.marbleOrientation = new Quat(); interpFrame.marbleOrientation.slerp(this.marbleOrientation, next.marbleOrientation, t); + interpFrame.marbleOrientation.normalize(); interpFrame.marbleAngularVelocity = Util.lerpThreeVectors(this.marbleAngularVelocity, next.marbleAngularVelocity, t); } diff --git a/src/net/NetPacket.hx b/src/net/NetPacket.hx index 04e316cf..afffc66d 100644 --- a/src/net/NetPacket.hx +++ b/src/net/NetPacket.hx @@ -62,6 +62,7 @@ class MarbleUpdatePacket implements NetPacket { var position:Vector; var velocity:Vector; var omega:Vector; + var lastContactNormal:Vector; var blastAmount:Int; var blastTick:Int; var megaTick:Int; @@ -93,6 +94,9 @@ class MarbleUpdatePacket implements NetPacket { b.writeFloat(omega.x); b.writeFloat(omega.y); b.writeFloat(omega.z); + b.writeFloat(lastContactNormal.x); + b.writeFloat(lastContactNormal.y); + b.writeFloat(lastContactNormal.z); b.writeInt(blastAmount, 11); if (netFlags & MarbleNetFlags.DoBlast > 0) { b.writeFlag(true); @@ -172,6 +176,7 @@ class MarbleUpdatePacket implements NetPacket { position = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); velocity = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); omega = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); + lastContactNormal = new Vector(b.readFloat(), b.readFloat(), b.readFloat()); blastAmount = b.readInt(11); this.netFlags = 0; if (b.readFlag()) {