diff --git a/battle_srv/models/room.go b/battle_srv/models/room.go index fe69ed2..c2391ca 100644 --- a/battle_srv/models/room.go +++ b/battle_srv/models/room.go @@ -1274,17 +1274,6 @@ func (pR *Room) refreshColliders(spaceW, spaceH int32) { topPadding, bottomPadding, leftPadding, rightPadding := pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap, pR.SnapIntoPlatformOverlap pR.Space = resolv.NewSpace(int(spaceW), int(spaceH), int(pR.CollisionMinStep), int(pR.CollisionMinStep)) // allocate a new collision space everytime after a battle is settled - jsPlayers := toJsPlayers(pR.Players) - for _, player := range jsPlayers { - wx, wy := battle.VirtualGridToWorldPos(player.VirtualGridX, player.VirtualGridY, pR.VirtualGridToWorldRatio) - colliderWidth, colliderHeight := player.ColliderRadius*2, player.ColliderRadius*4 - playerCollider := battle.GenerateRectCollider(wx, wy, colliderWidth, colliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, pR.collisionSpaceOffsetX, pR.collisionSpaceOffsetY, player, "Player") // the coords of all barrier boundaries are multiples of tileWidth(i.e. 16), by adding snapping y-padding when "landedOnGravityPushback" all "playerCollider.Y" would be a multiple of 1.0 - pR.Space.Add(playerCollider) - // Keep track of the collider in "pR.CollisionSysMap" - joinIndex := player.JoinIndex - collisionPlayerIndex := battle.COLLISION_PLAYER_INDEX_PREFIX + joinIndex - pR.CollisionSysMap[collisionPlayerIndex] = playerCollider - } for _, player := range pR.Players { joinIndex := player.JoinIndex diff --git a/charts/README.md b/charts/README.md index 84ff63f..43276b3 100644 --- a/charts/README.md +++ b/charts/README.md @@ -21,3 +21,8 @@ ffmpeg -vsync vfr -i LayDown1.gif -vf "scale=iw:188:force_original_aspect_ratio= ``` The command above uses same input-output width, but pads the output height with a top transparent section such that the output height is fixed to 188px. + +Similarly to crop a gif into pngs. +``` +ffmpeg -vsync vfr -i Idle1.gif -vf "crop=70:ih:(iw-ow-10):0" pngs/Idle1_%d.png +``` diff --git a/frontend/assets/plugin_scripts/jsexport.js b/frontend/assets/plugin_scripts/jsexport.js index 1d8605f..f31517a 100644 --- a/frontend/assets/plugin_scripts/jsexport.js +++ b/frontend/assets/plugin_scripts/jsexport.js @@ -4724,7 +4724,7 @@ $packages["resolv"] = (function() { return $pkg; })(); $packages["jsexport/battle"] = (function() { - var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, SkillMapperType, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, VirtualGridToPolygonColliderBLPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox; + var $pkg = {}, $init, math, resolv, Vec2D, Polygon2D, PlayerDownsync, InputFrameDecoded, Barrier, Bullet, MeleeBullet, FireballBullet, Skill, RoomDownsyncFrame, InputFrameDownsync, RingBuffer, SkillMapperType, CharacterConfig, SatResult, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, ptrType$8, sliceType$10, ptrType$9, sliceType$11, sliceType$12, ptrType$10, sliceType$13, ptrType$11, mapType, ptrType$12, skills, inAirSet, noOpSet, invinsibleSet, nonAttackingSet, NewRingBuffer, ConvertToInputFrameId, decodeInput, CalcPushbacks, isPolygonPairOverlapped, isPolygonPairSeparatedByDir, WorldToVirtualGridPos, VirtualGridToWorldPos, WorldToPolygonColliderBLPos, PolygonColliderBLToWorldPos, PolygonColliderBLToVirtualGridPos, calcHardPushbacksNorms, deriveOpPattern, ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, GenerateRectCollider, generateRectColliderInCollisionSpace, GenerateConvexPolygonCollider, AlignPolygon2DToBoundingBox; math = $packages["math"]; resolv = $packages["resolv"]; Vec2D = $pkg.Vec2D = $newType(0, $kindStruct, "battle.Vec2D", true, "jsexport/battle", true, function(X_, Y_) { @@ -5359,14 +5359,6 @@ $packages["jsexport/battle"] = (function() { return WorldToVirtualGridPos(wx, wy); }; $pkg.PolygonColliderBLToVirtualGridPos = PolygonColliderBLToVirtualGridPos; - VirtualGridToPolygonColliderBLPos = function(vx, vy, halfBoundingW, halfBoundingH, topPadding, bottomPadding, leftPadding, rightPadding, collisionSpaceOffsetX, collisionSpaceOffsetY) { - var _tuple, bottomPadding, collisionSpaceOffsetX, collisionSpaceOffsetY, halfBoundingH, halfBoundingW, leftPadding, rightPadding, topPadding, vx, vy, wx, wy; - _tuple = VirtualGridToWorldPos(vx, vy); - wx = _tuple[0]; - wy = _tuple[1]; - return WorldToPolygonColliderBLPos(wx, wy, halfBoundingW, halfBoundingH, topPadding, bottomPadding, leftPadding, rightPadding, collisionSpaceOffsetX, collisionSpaceOffsetY); - }; - $pkg.VirtualGridToPolygonColliderBLPos = VirtualGridToPolygonColliderBLPos; calcHardPushbacksNorms = function(joinIndex, playerCollider, playerShape, snapIntoPlatformOverlap, pEffPushback) { var {_i, _r, _ref, _ref$1, _tmp, _tmp$1, _tuple, barrierShape, collision, isBarrier, joinIndex, obj, overlapResult, overlapped, pEffPushback, playerCollider, playerShape, pushbackX, pushbackY, ret, snapIntoPlatformOverlap, $s, $r, $c} = $restore(this, {joinIndex, playerCollider, playerShape, snapIntoPlatformOverlap, pEffPushback}); /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: @@ -5469,7 +5461,7 @@ $packages["jsexport/battle"] = (function() { return [patternId, jumpedOrNot, effDx, effDy]; }; ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = function(inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex) { - var {_1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex}); + var {_1, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s, $r, $c} = $restore(this, {inputsBuffer, currRenderFrame, collisionSys, collisionSysMap, collisionSpaceOffsetX, collisionSpaceOffsetY, chConfigsOrderedByJoinIndex}); /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: roomCapacity = currRenderFrame.PlayersArr.$length; nextRenderFramePlayers = $makeSlice(sliceType$6, roomCapacity); @@ -5479,7 +5471,7 @@ $packages["jsexport/battle"] = (function() { if (!(_i < _ref.$length)) { break; } i = _i; currPlayerDownsync = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); - ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, 0, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit)); + ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i] = new PlayerDownsync.ptr(currPlayerDownsync.Id, currPlayerDownsync.VirtualGridX, currPlayerDownsync.VirtualGridY, currPlayerDownsync.DirX, currPlayerDownsync.DirY, currPlayerDownsync.VelX, currPlayerDownsync.VelY, currPlayerDownsync.Speed, currPlayerDownsync.BattleState, currPlayerDownsync.JoinIndex, currPlayerDownsync.ColliderRadius, currPlayerDownsync.Removed, currPlayerDownsync.Score, 0, currPlayerDownsync.FramesToRecover - 1 >> 0, currPlayerDownsync.FramesInChState + 1 >> 0, currPlayerDownsync.Hp, currPlayerDownsync.MaxHp, currPlayerDownsync.CharacterState, true, currPlayerDownsync.ActiveSkillId, currPlayerDownsync.ActiveSkillHit)); if (((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover < 0) { ((i < 0 || i >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i]).FramesToRecover = 0; } @@ -5549,6 +5541,7 @@ $packages["jsexport/battle"] = (function() { _i$1++; $s = 1; continue; case 2: + playerColliders = $makeSlice(sliceType$10, currRenderFrame.PlayersArr.$length, currRenderFrame.PlayersArr.$length); _ref$3 = currRenderFrame.PlayersArr; _i$2 = 0; /* while (true) { */ case 4: @@ -5560,9 +5553,6 @@ $packages["jsexport/battle"] = (function() { _tmp$3 = 0; (x$2 = joinIndex$1 - 1 >> 0, ((x$2 < 0 || x$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$2])).X = _tmp$2; (x$3 = joinIndex$1 - 1 >> 0, ((x$3 < 0 || x$3 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$3])).Y = _tmp$3; - collisionPlayerIndex = 131072 + joinIndex$1 >> 0; - playerCollider = (_entry$1 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex)], _entry$1 !== undefined ? _entry$1.v : ptrType$8.nil); - thatPlayerInNextFrame$1 = ((i$2 < 0 || i$2 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$2]); chConfig$1 = ((i$2 < 0 || i$2 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$2]); _tmp$4 = currPlayerDownsync$2.VirtualGridX + currPlayerDownsync$2.VelX >> 0; _tmp$5 = currPlayerDownsync$2.VirtualGridY + currPlayerDownsync$2.VelY >> 0; @@ -5571,10 +5561,33 @@ $packages["jsexport/battle"] = (function() { if (((i$2 < 0 || i$2 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$2])) { newVy = newVy + (chConfig$1.JumpingInitVelY) >> 0; } - _tuple$2 = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W * 0.5, playerCollider.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY); - playerCollider.X = _tuple$2[0]; - playerCollider.Y = _tuple$2[1]; - $r = playerCollider.Update(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$2 = VirtualGridToWorldPos(newVx, newVy); + wx = _tuple$2[0]; + wy = _tuple$2[1]; + _tmp$6 = $imul(currPlayerDownsync$2.ColliderRadius, 2); + _tmp$7 = $imul(currPlayerDownsync$2.ColliderRadius, 4); + colliderWidth = _tmp$6; + colliderHeight = _tmp$7; + _1 = currPlayerDownsync$2.CharacterState; + if (_1 === (9)) { + _tmp$8 = $imul(currPlayerDownsync$2.ColliderRadius, 4); + _tmp$9 = $imul(currPlayerDownsync$2.ColliderRadius, 2); + colliderWidth = _tmp$8; + colliderHeight = _tmp$9; + } else if ((_1 === (8)) || (_1 === (4)) || (_1 === (5))) { + _tmp$10 = $imul(currPlayerDownsync$2.ColliderRadius, 2); + _tmp$11 = $imul(currPlayerDownsync$2.ColliderRadius, 2); + colliderWidth = _tmp$10; + colliderHeight = _tmp$11; + } + _tuple$3 = VirtualGridToWorldPos(colliderWidth, colliderHeight); + colliderWorldWidth = _tuple$3[0]; + colliderWorldHeight = _tuple$3[1]; + _r$1 = GenerateRectCollider(wx, wy, colliderWorldWidth, colliderWorldHeight, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, currPlayerDownsync$2, "Player"); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + playerCollider = _r$1; + ((i$2 < 0 || i$2 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$2] = playerCollider); + $r = collisionSys.Add(new sliceType$10([playerCollider])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + thatPlayerInNextFrame$1 = ((i$2 < 0 || i$2 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$2]); if (currPlayerDownsync$2.InAir) { thatPlayerInNextFrame$1.VelX = thatPlayerInNextFrame$1.VelX + (0) >> 0; thatPlayerInNextFrame$1.VelY = thatPlayerInNextFrame$1.VelY + (-50) >> 0; @@ -5585,64 +5598,63 @@ $packages["jsexport/battle"] = (function() { bulletColliders = $makeSlice(sliceType$10, 0, currRenderFrame.MeleeBullets.$length); _ref$4 = currRenderFrame.MeleeBullets; _i$3 = 0; - /* while (true) { */ case 7: - /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 8; continue; } + /* while (true) { */ case 8: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 9; continue; } meleeBullet = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); - /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 9; continue; } - /* */ $s = 10; continue; - /* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 9: + /* */ if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) <= currRenderFrame.Id) && (((meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames >> 0) + meleeBullet.Bullet.ActiveFrames >> 0) > currRenderFrame.Id)) { */ case 10: offender = (x$4 = currRenderFrame.PlayersArr, x$5 = meleeBullet.Bullet.OffenderJoinIndex - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])); xfac = 1; if (0 > offender.DirX) { xfac = -xfac; } - _tuple$3 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY); - bulletWx = _tuple$3[0]; - bulletWy = _tuple$3[1]; - _tuple$4 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY); - hitboxSizeWx = _tuple$4[0]; - hitboxSizeWy = _tuple$4[1]; - _r$1 = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } - newBulletCollider = _r$1; - $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$4 = VirtualGridToWorldPos(offender.VirtualGridX + ($imul(xfac, meleeBullet.Bullet.HitboxOffsetX)) >> 0, offender.VirtualGridY); + bulletWx = _tuple$4[0]; + bulletWy = _tuple$4[1]; + _tuple$5 = VirtualGridToWorldPos(meleeBullet.Bullet.HitboxSizeX, meleeBullet.Bullet.HitboxSizeY); + hitboxSizeWx = _tuple$5[0]; + hitboxSizeWy = _tuple$5[1]; + _r$2 = GenerateRectCollider(bulletWx, bulletWy, hitboxSizeWx, hitboxSizeWy, 0.1, 0.1, 0.1, 0.1, collisionSpaceOffsetX, collisionSpaceOffsetY, meleeBullet, "MeleeBullet"); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + newBulletCollider = _r$2; + $r = collisionSys.Add(new sliceType$10([newBulletCollider])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } bulletColliders = $append(bulletColliders, newBulletCollider); - $s = 11; continue; - /* } else { */ case 10: + $s = 12; continue; + /* } else { */ case 11: nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, meleeBullet); - /* } */ case 11: + /* } */ case 12: _i$3++; - $s = 7; continue; - case 8: + $s = 8; continue; + case 9: _ref$5 = currRenderFrame.PlayersArr; _i$4 = 0; - /* while (true) { */ case 14: - /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 15; continue; } + /* while (true) { */ case 15: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 16; continue; } i$3 = _i$4; currPlayerDownsync$3 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); joinIndex$2 = currPlayerDownsync$3.JoinIndex; - collisionPlayerIndex$1 = 131072 + joinIndex$2 >> 0; - playerCollider$1 = (_entry$2 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$1)], _entry$2 !== undefined ? _entry$2.v : ptrType$8.nil); + playerCollider$1 = ((i$3 < 0 || i$3 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$3]); playerShape = $assertType(playerCollider$1.Shape, ptrType$6); - _r$2 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } - (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$2)); + _r$3 = calcHardPushbacksNorms(joinIndex$2, playerCollider$1, playerShape, 0.1, (x$6 = joinIndex$2 - 1 >> 0, ((x$6 < 0 || x$6 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$6]))); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + (x$7 = joinIndex$2 - 1 >> 0, ((x$7 < 0 || x$7 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$7] = _r$3)); thatPlayerInNextFrame$2 = ((i$3 < 0 || i$3 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$3]); chConfig$2 = ((i$3 < 0 || i$3 >= chConfigsOrderedByJoinIndex.$length) ? ($throwRuntimeError("index out of range"), undefined) : chConfigsOrderedByJoinIndex.$array[chConfigsOrderedByJoinIndex.$offset + i$3]); landedOnGravityPushback = false; collision = playerCollider$1.Check(0, 0, new sliceType$4([])); - /* */ if (!(ptrType$3.nil === collision)) { $s = 17; continue; } - /* */ $s = 18; continue; - /* if (!(ptrType$3.nil === collision)) { */ case 17: + /* */ if (!(ptrType$3.nil === collision)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!(ptrType$3.nil === collision)) { */ case 18: _ref$6 = collision.Objects; _i$5 = 0; - /* while (true) { */ case 19: - /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 20; continue; } + /* while (true) { */ case 20: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 21; continue; } obj = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); - _tmp$6 = false; - _tmp$7 = false; - _tmp$8 = false; - isBarrier = _tmp$6; - isAnotherPlayer = _tmp$7; - isBullet = _tmp$8; + _tmp$12 = false; + _tmp$13 = false; + _tmp$14 = false; + isBarrier = _tmp$12; + isAnotherPlayer = _tmp$13; + isBullet = _tmp$14; _ref$7 = obj.Data; if ($assertType(_ref$7, ptrType$5, true)[1]) { isAnotherPlayer = true; @@ -5653,25 +5665,25 @@ $packages["jsexport/battle"] = (function() { } if (isBullet) { _i$5++; - /* continue; */ $s = 19; continue; + /* continue; */ $s = 20; continue; } bShape = $assertType(obj.Shape, ptrType$6); - _r$3 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } - _tuple$5 = _r$3; - overlapped = _tuple$5[0]; - pushbackX = _tuple$5[1]; - pushbackY = _tuple$5[2]; - overlapResult = _tuple$5[3]; + _r$4 = CalcPushbacks(0, 0, playerShape, bShape); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$6 = _r$4; + overlapped = _tuple$6[0]; + pushbackX = _tuple$6[1]; + pushbackY = _tuple$6[2]; + overlapResult = _tuple$6[3]; if (!overlapped) { _i$5++; - /* continue; */ $s = 19; continue; + /* continue; */ $s = 20; continue; } normAlignmentWithGravity = overlapResult.OverlapX * 0 + overlapResult.OverlapY * -1; if (isAnotherPlayer) { - _tmp$9 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX; - _tmp$10 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY; - pushbackX = _tmp$9; - pushbackY = _tmp$10; + _tmp$15 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapX; + _tmp$16 = (overlapResult.Overlap - 0.2) * overlapResult.OverlapY; + pushbackX = _tmp$15; + pushbackY = _tmp$16; } _ref$8 = (x$8 = joinIndex$2 - 1 >> 0, ((x$8 < 0 || x$8 >= hardPushbackNorms.$length) ? ($throwRuntimeError("index out of range"), undefined) : hardPushbackNorms.$array[hardPushbackNorms.$offset + x$8])).$get(); _i$6 = 0; @@ -5693,9 +5705,9 @@ $packages["jsexport/battle"] = (function() { landedOnGravityPushback = true; } _i$5++; - $s = 19; continue; - case 20: - /* } */ case 18: + $s = 20; continue; + case 21: + /* } */ case 19: if (landedOnGravityPushback) { thatPlayerInNextFrame$2.InAir = false; if (currPlayerDownsync$3.InAir && 0 >= currPlayerDownsync$3.VelY) { @@ -5705,6 +5717,14 @@ $packages["jsexport/battle"] = (function() { thatPlayerInNextFrame$2.CharacterState = 9; thatPlayerInNextFrame$2.FramesToRecover = chConfig$2.LayDownFramesToRecover; } else { + _tmp$17 = 0; + _tmp$18 = currPlayerDownsync$3.ColliderRadius; + halfColliderWidthDiff = _tmp$17; + halfColliderHeightDiff = _tmp$18; + _tuple$7 = VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff); + halfColliderWorldHeightDiff = _tuple$7[1]; + _index$2 = joinIndex$2 - 1 >> 0; + ((_index$2 < 0 || _index$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + _index$2]).Y = ((_index$2 < 0 || _index$2 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + _index$2]).Y - (halfColliderWorldHeightDiff); thatPlayerInNextFrame$2.CharacterState = 0; thatPlayerInNextFrame$2.FramesToRecover = 0; } @@ -5722,63 +5742,63 @@ $packages["jsexport/battle"] = (function() { } } _i$4++; - $s = 14; continue; - case 15: + $s = 15; continue; + case 16: _ref$9 = bulletColliders; _i$7 = 0; - /* while (true) { */ case 22: - /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 23; continue; } + /* while (true) { */ case 23: + /* if (!(_i$7 < _ref$9.$length)) { break; } */ if(!(_i$7 < _ref$9.$length)) { $s = 24; continue; } bulletCollider = ((_i$7 < 0 || _i$7 >= _ref$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$9.$array[_ref$9.$offset + _i$7]); collision$1 = bulletCollider.Check(0, 0, new sliceType$4([])); bulletCollider.Space.Remove(new sliceType$10([bulletCollider])); _ref$10 = bulletCollider.Data; - /* */ if ($assertType(_ref$10, ptrType$1, true)[1]) { $s = 24; continue; } - /* */ $s = 25; continue; - /* if ($assertType(_ref$10, ptrType$1, true)[1]) { */ case 24: + /* */ if ($assertType(_ref$10, ptrType$1, true)[1]) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if ($assertType(_ref$10, ptrType$1, true)[1]) { */ case 25: v$1 = _ref$10.$val; if (ptrType$3.nil === collision$1) { nextRenderFrameMeleeBullets = $append(nextRenderFrameMeleeBullets, v$1); _i$7++; - /* continue; */ $s = 22; continue; + /* continue; */ $s = 23; continue; } bulletShape = $assertType(bulletCollider.Shape, ptrType$6); offender$1 = (x$9 = currRenderFrame.PlayersArr, x$10 = v$1.Bullet.OffenderJoinIndex - 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10])); _ref$11 = collision$1.Objects; _i$8 = 0; - /* while (true) { */ case 26: - /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 27; continue; } + /* while (true) { */ case 27: + /* if (!(_i$8 < _ref$11.$length)) { break; } */ if(!(_i$8 < _ref$11.$length)) { $s = 28; continue; } obj$1 = ((_i$8 < 0 || _i$8 >= _ref$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$11.$array[_ref$11.$offset + _i$8]); defenderShape = $assertType(obj$1.Shape, ptrType$6); _ref$12 = obj$1.Data; - /* */ if ($assertType(_ref$12, ptrType$5, true)[1]) { $s = 28; continue; } - /* */ $s = 29; continue; - /* if ($assertType(_ref$12, ptrType$5, true)[1]) { */ case 28: + /* */ if ($assertType(_ref$12, ptrType$5, true)[1]) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if ($assertType(_ref$12, ptrType$5, true)[1]) { */ case 29: t = _ref$12.$val; if (v$1.Bullet.OffenderJoinIndex === t.JoinIndex) { _i$8++; - /* continue; */ $s = 26; continue; + /* continue; */ $s = 27; continue; } - _tuple$6 = (_entry$3 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$3 !== undefined ? [_entry$3.v, true] : [false, false]); - existent$1 = _tuple$6[1]; + _tuple$8 = (_entry$1 = invinsibleSet[$Int32.keyFor(t.CharacterState)], _entry$1 !== undefined ? [_entry$1.v, true] : [false, false]); + existent$1 = _tuple$8[1]; if (existent$1) { _i$8++; - /* continue; */ $s = 26; continue; + /* continue; */ $s = 27; continue; } - _r$4 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } - _tuple$7 = _r$4; - overlapped$1 = _tuple$7[0]; + _r$5 = CalcPushbacks(0, 0, bulletShape, defenderShape); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$9 = _r$5; + overlapped$1 = _tuple$9[0]; if (!overlapped$1) { _i$8++; - /* continue; */ $s = 26; continue; + /* continue; */ $s = 27; continue; } xfac$1 = 1; if (0 > offender$1.DirX) { xfac$1 = -xfac$1; } - _tmp$11 = $imul(xfac$1, v$1.Bullet.PushbackVelX); - _tmp$12 = v$1.Bullet.PushbackVelY; - pushbackVelX = _tmp$11; - pushbackVelY = _tmp$12; + _tmp$19 = $imul(xfac$1, v$1.Bullet.PushbackVelX); + _tmp$20 = v$1.Bullet.PushbackVelY; + pushbackVelX = _tmp$19; + pushbackVelY = _tmp$20; atkedPlayerInNextFrame = (x$11 = t.JoinIndex - 1 >> 0, ((x$11 < 0 || x$11 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + x$11])); atkedPlayerInNextFrame.VelX = pushbackVelX; atkedPlayerInNextFrame.VelY = pushbackVelY; @@ -5791,17 +5811,17 @@ $packages["jsexport/battle"] = (function() { if (v$1.Bullet.HitStunFrames > oldFramesToRecover) { atkedPlayerInNextFrame.FramesToRecover = v$1.Bullet.HitStunFrames; } - $s = 30; continue; - /* } else { */ case 29: + $s = 31; continue; + /* } else { */ case 30: t$1 = _ref$12; - /* } */ case 30: + /* } */ case 31: _i$8++; - $s = 26; continue; - case 27: - /* } */ case 25: + $s = 27; continue; + case 28: + /* } */ case 26: _i$7++; - $s = 22; continue; - case 23: + $s = 23; continue; + case 24: _ref$13 = currRenderFrame.PlayersArr; _i$9 = 0; while (true) { @@ -5809,40 +5829,47 @@ $packages["jsexport/battle"] = (function() { i$4 = _i$9; currPlayerDownsync$4 = ((_i$9 < 0 || _i$9 >= _ref$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$13.$array[_ref$13.$offset + _i$9]); joinIndex$3 = currPlayerDownsync$4.JoinIndex; - collisionPlayerIndex$2 = 131072 + joinIndex$3 >> 0; - playerCollider$2 = (_entry$4 = collisionSysMap[$Int32.keyFor(collisionPlayerIndex$2)], _entry$4 !== undefined ? _entry$4.v : ptrType$8.nil); + playerCollider$2 = ((i$4 < 0 || i$4 >= playerColliders.$length) ? ($throwRuntimeError("index out of range"), undefined) : playerColliders.$array[playerColliders.$offset + i$4]); thatPlayerInNextFrame$3 = ((i$4 < 0 || i$4 >= nextRenderFramePlayers.$length) ? ($throwRuntimeError("index out of range"), undefined) : nextRenderFramePlayers.$array[nextRenderFramePlayers.$offset + i$4]); - _tuple$8 = PolygonColliderBLToVirtualGridPos(playerCollider$2.X - (x$13 = joinIndex$3 - 1 >> 0, ((x$13 < 0 || x$13 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$13])).X, playerCollider$2.Y - (x$14 = joinIndex$3 - 1 >> 0, ((x$14 < 0 || x$14 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$14])).Y, playerCollider$2.W * 0.5, playerCollider$2.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY); - thatPlayerInNextFrame$3.VirtualGridX = _tuple$8[0]; - thatPlayerInNextFrame$3.VirtualGridY = _tuple$8[1]; + _tuple$10 = PolygonColliderBLToVirtualGridPos(playerCollider$2.X - (x$13 = joinIndex$3 - 1 >> 0, ((x$13 < 0 || x$13 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$13])).X, playerCollider$2.Y - (x$14 = joinIndex$3 - 1 >> 0, ((x$14 < 0 || x$14 >= effPushbacks.$length) ? ($throwRuntimeError("index out of range"), undefined) : effPushbacks.$array[effPushbacks.$offset + x$14])).Y, playerCollider$2.W * 0.5, playerCollider$2.H * 0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY); + thatPlayerInNextFrame$3.VirtualGridX = _tuple$10[0]; + thatPlayerInNextFrame$3.VirtualGridY = _tuple$10[1]; if (thatPlayerInNextFrame$3.InAir) { oldNextCharacterState = thatPlayerInNextFrame$3.CharacterState; - _1 = oldNextCharacterState; - if ((_1 === (0)) || (_1 === (1))) { + _2 = oldNextCharacterState; + if ((_2 === (0)) || (_2 === (1))) { if (((i$4 < 0 || i$4 >= jumpedOrNotList.$length) ? ($throwRuntimeError("index out of range"), undefined) : jumpedOrNotList.$array[jumpedOrNotList.$offset + i$4]) || (5 === currPlayerDownsync$4.CharacterState)) { thatPlayerInNextFrame$3.CharacterState = 5; } else { thatPlayerInNextFrame$3.CharacterState = 4; } - } else if (_1 === (2)) { + } else if (_2 === (2)) { thatPlayerInNextFrame$3.CharacterState = 6; - } else if (_1 === (3)) { + } else if (_2 === (3)) { thatPlayerInNextFrame$3.CharacterState = 7; } } if (!((thatPlayerInNextFrame$3.CharacterState === currPlayerDownsync$4.CharacterState))) { thatPlayerInNextFrame$3.FramesInChState = 0; } - _tuple$9 = (_entry$5 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$5 !== undefined ? [_entry$5.v, true] : [false, false]); - existent$2 = _tuple$9[1]; + _tuple$11 = (_entry$2 = nonAttackingSet[$Int32.keyFor(thatPlayerInNextFrame$3.CharacterState)], _entry$2 !== undefined ? [_entry$2.v, true] : [false, false]); + existent$2 = _tuple$11[1]; if (existent$2) { thatPlayerInNextFrame$3.ActiveSkillId = -1; thatPlayerInNextFrame$3.ActiveSkillHit = -1; } _i$9++; } + _ref$14 = playerColliders; + _i$10 = 0; + while (true) { + if (!(_i$10 < _ref$14.$length)) { break; } + playerCollider$3 = ((_i$10 < 0 || _i$10 >= _ref$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$14.$array[_ref$14.$offset + _i$10]); + playerCollider$3.Space.Remove(new sliceType$10([playerCollider$3])); + _i$10++; + } $s = -1; return new RoomDownsyncFrame.ptr(currRenderFrame.Id + 1 >> 0, nextRenderFramePlayers, new $Int64(0, 0), nextRenderFrameMeleeBullets, sliceType$11.nil, new $Uint64(0, 0), false, false); - /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, collision, collision$1, collisionPlayerIndex, collisionPlayerIndex$1, collisionPlayerIndex$2, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f; + /* */ } return; } var $f = {$blk: ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame, $c: true, $r, _1, _2, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _index, _index$1, _index$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$13, _ref$14, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atkedPlayerInNextFrame, bShape, bulletCollider, bulletColliders, bulletShape, bulletWx, bulletWy, chConfig, chConfig$1, chConfig$2, chConfigsOrderedByJoinIndex, colliderHeight, colliderWidth, colliderWorldHeight, colliderWorldWidth, collision, collision$1, collisionSpaceOffsetX, collisionSpaceOffsetY, collisionSys, collisionSysMap, currPlayerDownsync, currPlayerDownsync$1, currPlayerDownsync$2, currPlayerDownsync$3, currPlayerDownsync$4, currRenderFrame, defenderShape, effDx, effDy, effPushbacks, existent, existent$1, existent$2, halfColliderHeightDiff, halfColliderWidthDiff, halfColliderWorldHeightDiff, hardPushbackNorm, hardPushbackNorms, hitboxSizeWx, hitboxSizeWy, i, i$1, i$2, i$3, i$4, inputsBuffer, isAnotherPlayer, isBarrier, isBullet, joinIndex, joinIndex$1, joinIndex$2, joinIndex$3, jumpedOrNot, jumpedOrNotList, landedOnGravityPushback, meleeBullet, newBullet, newBulletCollider, newVx, newVy, nextRenderFrameMeleeBullets, nextRenderFramePlayers, normAlignmentWithGravity, obj, obj$1, offender, offender$1, oldFramesToRecover, oldNextCharacterState, overlapResult, overlapped, overlapped$1, patternId, playerCollider, playerCollider$1, playerCollider$2, playerCollider$3, playerColliders, playerShape, projectedMagnitude, pushbackVelX, pushbackVelY, pushbackX, pushbackY, roomCapacity, skillConfig, skillId, t, t$1, thatPlayerInNextFrame, thatPlayerInNextFrame$1, thatPlayerInNextFrame$2, thatPlayerInNextFrame$3, v, v$1, wx, wy, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xfac, xfac$1, $s};return $f; }; $pkg.ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame = ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame; GenerateRectCollider = function(wx, wy, w, h, topPadding, bottomPadding, leftPadding, rightPadding, spaceOffsetX, spaceOffsetY, data, tag) { diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist index 07d55f2..fbfe783 100644 --- a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist +++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist @@ -15,7 +15,7 @@ spriteSourceSize {112,128} textureRect - {{524,699},{112,128}} + {{824,544},{112,128}} textureRotated @@ -30,7 +30,7 @@ spriteSourceSize {112,128} textureRect - {{524,827},{112,128}} + {{0,1200},{112,128}} textureRotated @@ -45,7 +45,7 @@ spriteSourceSize {64,128} textureRect - {{932,144},{64,128}} + {{616,403},{64,128}} textureRotated @@ -60,7 +60,7 @@ spriteSourceSize {80,128} textureRect - {{927,272},{80,128}} + {{940,0},{80,128}} textureRotated @@ -75,7 +75,7 @@ spriteSourceSize {80,128} textureRect - {{927,400},{80,128}} + {{940,128},{80,128}} textureRotated @@ -90,7 +90,7 @@ spriteSourceSize {112,128} textureRect - {{412,933},{112,128}} + {{0,964},{112,128}} textureRotated @@ -105,7 +105,7 @@ spriteSourceSize {112,128} textureRect - {{412,1061},{112,128}} + {{112,964},{112,128}} textureRotated @@ -120,7 +120,7 @@ spriteSourceSize {96,128} textureRect - {{540,443},{96,128}} + {{840,288},{96,128}} textureRotated @@ -135,7 +135,7 @@ spriteSourceSize {96,128} textureRect - {{540,571},{96,128}} + {{840,416},{96,128}} textureRotated @@ -150,7 +150,7 @@ spriteSourceSize {80,128} textureRect - {{924,528},{80,128}} + {{940,256},{80,128}} textureRotated @@ -165,7 +165,7 @@ spriteSourceSize {80,128} textureRect - {{316,553},{80,128}} + {{936,384},{80,128}} textureRotated @@ -180,7 +180,7 @@ spriteSourceSize {80,128} textureRect - {{316,681},{80,128}} + {{936,512},{80,128}} textureRotated @@ -195,7 +195,7 @@ spriteSourceSize {80,128} textureRect - {{316,809},{80,128}} + {{936,640},{80,128}} textureRotated @@ -210,7 +210,7 @@ spriteSourceSize {96,128} textureRect - {{316,937},{96,128}} + {{582,531},{96,128}} textureRotated @@ -225,7 +225,7 @@ spriteSourceSize {128,112} textureRect - {{799,387},{128,112}} + {{326,871},{128,112}} textureRotated @@ -240,7 +240,7 @@ spriteSourceSize {96,96} textureRect - {{316,1321},{96,96}} + {{696,1200},{96,96}} textureRotated @@ -255,9 +255,9 @@ spriteSourceSize {96,112} textureRect - {{328,1417},{96,112}} + {{416,983},{96,112}} textureRotated - + Atk2_3.png @@ -270,9 +270,9 @@ spriteSourceSize {96,112} textureRect - {{424,1413},{96,112}} + {{656,1092},{96,112}} textureRotated - + Atk2_4.png @@ -285,7 +285,7 @@ spriteSourceSize {96,112} textureRect - {{520,1419},{96,112}} + {{528,1113},{96,112}} textureRotated @@ -300,7 +300,7 @@ spriteSourceSize {96,112} textureRect - {{764,1075},{96,112}} + {{392,1207},{96,112}} textureRotated @@ -315,7 +315,7 @@ spriteSourceSize {144,112} textureRect - {{396,471},{144,112}} + {{328,403},{144,112}} textureRotated @@ -330,7 +330,7 @@ spriteSourceSize {128,112} textureRect - {{636,611},{128,112}} + {{454,871},{128,112}} textureRotated @@ -345,9 +345,9 @@ spriteSourceSize {160,112} textureRect - {{527,283},{160,112}} + {{680,288},{160,112}} textureRotated - + Atk2_9.png @@ -360,7 +360,7 @@ spriteSourceSize {144,112} textureRect - {{636,499},{144,112}} + {{472,403},{144,112}} textureRotated @@ -375,7 +375,7 @@ spriteSourceSize {188,144} textureRect - {{208,278},{188,144}} + {{0,0},{188,144}} textureRotated @@ -390,7 +390,7 @@ spriteSourceSize {188,144} textureRect - {{0,556},{188,144}} + {{188,0},{188,144}} textureRotated @@ -405,7 +405,7 @@ spriteSourceSize {188,144} textureRect - {{0,700},{188,144}} + {{376,0},{188,144}} textureRotated @@ -420,7 +420,7 @@ spriteSourceSize {188,144} textureRect - {{0,844},{188,144}} + {{564,0},{188,144}} textureRotated @@ -435,7 +435,7 @@ spriteSourceSize {188,144} textureRect - {{0,988},{188,144}} + {{752,0},{188,144}} textureRotated @@ -450,7 +450,7 @@ spriteSourceSize {188,144} textureRect - {{0,1132},{188,144}} + {{0,144},{188,144}} textureRotated @@ -465,7 +465,7 @@ spriteSourceSize {188,144} textureRect - {{0,1276},{188,144}} + {{188,144},{188,144}} textureRotated @@ -480,7 +480,7 @@ spriteSourceSize {188,144} textureRect - {{416,139},{188,144}} + {{376,144},{188,144}} textureRotated @@ -495,7 +495,7 @@ spriteSourceSize {188,144} textureRect - {{624,0},{188,144}} + {{564,144},{188,144}} textureRotated @@ -510,7 +510,7 @@ spriteSourceSize {188,144} textureRect - {{812,0},{188,144}} + {{752,144},{188,144}} textureRotated @@ -525,7 +525,7 @@ spriteSourceSize {96,128} textureRect - {{316,1065},{96,128}} + {{582,659},{96,128}} textureRotated @@ -540,7 +540,7 @@ spriteSourceSize {112,112} textureRect - {{540,1307},{112,112}} + {{240,1081},{112,112}} textureRotated @@ -555,7 +555,7 @@ spriteSourceSize {96,112} textureRect - {{769,1171},{96,112}} + {{504,1209},{96,112}} textureRotated @@ -570,7 +570,7 @@ spriteSourceSize {128,112} textureRect - {{636,723},{128,112}} + {{678,980},{128,112}} textureRotated @@ -585,7 +585,7 @@ spriteSourceSize {164,115} textureRect - {{0,1420},{164,115}} + {{352,288},{164,115}} textureRotated @@ -600,7 +600,7 @@ spriteSourceSize {164,115} textureRect - {{164,1420},{164,115}} + {{0,374},{164,115}} textureRotated @@ -615,7 +615,7 @@ spriteSourceSize {164,115} textureRect - {{604,144},{164,115}} + {{164,374},{164,115}} textureRotated @@ -630,7 +630,7 @@ spriteSourceSize {164,115} textureRect - {{768,144},{164,115}} + {{516,288},{164,115}} textureRotated @@ -641,11 +641,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{0,0},{208,139}} + {{806,791},{128,118}} textureRotated @@ -656,11 +656,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{0,139},{208,139}} + {{0,846},{128,118}} textureRotated @@ -671,11 +671,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{208,0},{208,139}} + {{128,846},{128,118}} textureRotated @@ -686,11 +686,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{0,278},{208,139}} + {{326,753},{128,118}} textureRotated @@ -701,11 +701,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{208,139},{208,139}} + {{454,753},{128,118}} textureRotated @@ -716,11 +716,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{416,0},{208,139}} + {{678,862},{128,118}} textureRotated @@ -731,11 +731,11 @@ spriteOffset {0,0} spriteSize - {208,139} + {128,118} spriteSourceSize - {208,139} + {128,118} textureRect - {{0,417},{208,139}} + {{806,909},{128,118}} textureRotated @@ -746,11 +746,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{639,259},{144,128}} + {{256,489},{70,128}} textureRotated @@ -761,11 +761,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{783,259},{144,128}} + {{256,617},{70,128}} textureRotated @@ -776,11 +776,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{780,499},{144,128}} + {{256,745},{70,128}} textureRotated @@ -791,13 +791,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,556},{144,128}} + {{256,873},{70,128}} textureRotated - + Idle1_13.png @@ -806,13 +806,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,700},{144,128}} + {{112,1200},{70,128}} textureRotated - + Idle1_14.png @@ -821,13 +821,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,844},{144,128}} + {{182,1200},{70,128}} textureRotated - + Idle1_15.png @@ -836,13 +836,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,988},{144,128}} + {{252,1200},{70,128}} textureRotated - + Idle1_2.png @@ -851,13 +851,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,988},{144,128}} + {{252,1200},{70,128}} textureRotated - + Idle1_3.png @@ -866,13 +866,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,844},{144,128}} + {{182,1200},{70,128}} textureRotated - + Idle1_4.png @@ -881,13 +881,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,700},{144,128}} + {{112,1200},{70,128}} textureRotated - + Idle1_5.png @@ -896,13 +896,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,556},{144,128}} + {{256,873},{70,128}} textureRotated - + Idle1_6.png @@ -911,11 +911,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{780,499},{144,128}} + {{256,745},{70,128}} textureRotated @@ -926,11 +926,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{783,259},{144,128}} + {{256,617},{70,128}} textureRotated @@ -941,13 +941,13 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,1132},{144,128}} + {{322,1200},{70,128}} textureRotated - + Idle1_9.png @@ -956,11 +956,11 @@ spriteOffset {0,0} spriteSize - {144,128} + {70,128} spriteSourceSize - {144,128} + {70,128} textureRect - {{188,1276},{144,128}} + {{528,1043},{70,128}} textureRotated @@ -975,7 +975,7 @@ spriteSourceSize {112,96} textureRect - {{524,1083},{112,96}} + {{128,1092},{112,96}} textureRotated @@ -990,7 +990,7 @@ spriteSourceSize {160,112} textureRect - {{639,387},{160,112}} + {{680,400},{160,112}} textureRotated @@ -1005,7 +1005,7 @@ spriteSourceSize {144,112} textureRect - {{396,583},{144,112}} + {{680,512},{144,112}} textureRotated @@ -1020,9 +1020,9 @@ spriteSourceSize {128,112} textureRect - {{524,955},{128,112}} + {{806,1027},{128,112}} textureRotated - + InAirAtk1_4.png @@ -1035,7 +1035,7 @@ spriteSourceSize {96,96} textureRect - {{769,1283},{96,96}} + {{792,1139},{96,96}} textureRotated @@ -1050,9 +1050,9 @@ spriteSourceSize {80,96} textureRect - {{764,1379},{80,96}} + {{934,1104},{80,96}} textureRotated - + InAirAtked1_0.png @@ -1065,7 +1065,7 @@ spriteSourceSize {112,112} textureRect - {{652,1306},{112,112}} + {{352,1081},{112,112}} textureRotated @@ -1080,7 +1080,7 @@ spriteSourceSize {128,96} textureRect - {{636,1082},{128,96}} + {{0,1092},{128,96}} textureRotated @@ -1095,9 +1095,9 @@ spriteSourceSize {80,112} textureRect - {{883,1013},{80,112}} + {{934,768},{80,112}} textureRotated - + InAirIdle1_1.png @@ -1110,9 +1110,9 @@ spriteSourceSize {80,112} textureRect - {{876,1093},{80,112}} + {{934,880},{80,112}} textureRotated - + InAirIdle1_2.png @@ -1125,9 +1125,9 @@ spriteSourceSize {64,128} textureRect - {{755,1011},{64,128}} + {{464,1079},{64,128}} textureRotated - + InAirIdle1_3.png @@ -1140,9 +1140,9 @@ spriteSourceSize {80,112} textureRect - {{865,1269},{80,112}} + {{934,992},{80,112}} textureRotated - + InAirIdle1_4.png @@ -1155,7 +1155,7 @@ spriteSourceSize {80,96} textureRect - {{865,1349},{80,96}} + {{224,1001},{80,96}} textureRotated @@ -1170,7 +1170,7 @@ spriteSourceSize {80,96} textureRect - {{860,1429},{80,96}} + {{320,1001},{80,96}} textureRotated @@ -1185,7 +1185,7 @@ spriteSourceSize {80,96} textureRect - {{632,1419},{80,96}} + {{792,1235},{80,96}} textureRotated @@ -1200,9 +1200,9 @@ spriteSourceSize {96,112} textureRect - {{865,1173},{96,112}} + {{600,1209},{96,112}} textureRotated - + InAirIdle1_8.png @@ -1215,7 +1215,7 @@ spriteSourceSize {96,128} textureRect - {{316,1193},{96,128}} + {{582,787},{96,128}} textureRotated @@ -1230,9 +1230,9 @@ spriteSourceSize {96,128} textureRect - {{412,1317},{96,128}} + {{582,915},{96,128}} textureRotated - + LayDown1_1.png @@ -1241,13 +1241,13 @@ spriteOffset {0,0} spriteSize - {131,188} + {176,86} spriteSourceSize - {131,188} + {176,86} textureRect - {{208,422},{131,188}} + {{0,288},{176,86}} textureRotated - + LayDown1_2.png @@ -1256,11 +1256,11 @@ spriteOffset {0,0} spriteSize - {131,188} + {176,86} spriteSourceSize - {131,188} + {176,86} textureRect - {{396,283},{131,188}} + {{176,288},{176,86}} textureRotated @@ -1275,7 +1275,7 @@ spriteSourceSize {119,128} textureRect - {{396,695},{119,128}} + {{0,489},{119,128}} textureRotated @@ -1290,9 +1290,9 @@ spriteSourceSize {119,128} textureRect - {{764,627},{119,128}} + {{128,489},{119,128}} textureRotated - + Walking_11.png @@ -1305,7 +1305,7 @@ spriteSourceSize {119,128} textureRect - {{883,656},{119,128}} + {{0,608},{119,128}} textureRotated @@ -1320,9 +1320,9 @@ spriteSourceSize {119,128} textureRect - {{764,755},{119,128}} + {{128,608},{119,128}} textureRotated - + Walking_13.png @@ -1335,7 +1335,7 @@ spriteSourceSize {119,128} textureRect - {{883,775},{119,128}} + {{326,515},{119,128}} textureRotated @@ -1350,7 +1350,7 @@ spriteSourceSize {119,128} textureRect - {{396,814},{119,128}} + {{454,515},{119,128}} textureRotated @@ -1365,7 +1365,7 @@ spriteSourceSize {119,128} textureRect - {{636,835},{119,128}} + {{678,624},{119,128}} textureRotated @@ -1380,9 +1380,9 @@ spriteSourceSize {119,128} textureRect - {{636,954},{119,128}} + {{806,672},{119,128}} textureRotated - + Walking_5.png @@ -1395,9 +1395,9 @@ spriteSourceSize {119,128} textureRect - {{412,1189},{119,128}} + {{0,727},{119,128}} textureRotated - + Walking_6.png @@ -1410,9 +1410,9 @@ spriteSourceSize {119,128} textureRect - {{531,1179},{119,128}} + {{128,727},{119,128}} textureRotated - + Walking_7.png @@ -1425,9 +1425,9 @@ spriteSourceSize {119,128} textureRect - {{650,1178},{119,128}} + {{326,634},{119,128}} textureRotated - + Walking_8.png @@ -1440,9 +1440,9 @@ spriteSourceSize {119,128} textureRect - {{764,883},{119,128}} + {{454,634},{119,128}} textureRotated - + Walking_9.png @@ -1455,7 +1455,7 @@ spriteSourceSize {119,128} textureRect - {{883,894},{119,128}} + {{678,743},{119,128}} textureRotated @@ -1471,9 +1471,9 @@ realTextureFileName KnifeGirl.png size - {1011,1535} + {1020,1331} smartupdate - $TexturePacker:SmartUpdate:f252fe395c8b73eac036cce868bca4bd:cc7b2dcbe80e2927a14b4c2409462644:1ae107e0c6667a1ecb5ed98687517e0e$ + $TexturePacker:SmartUpdate:9514b6b35473e14baf98f68515bcb817:1aae9dd4a8024ce783fdab093a39672a:1ae107e0c6667a1ecb5ed98687517e0e$ textureFileName KnifeGirl.png diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta index 566abdd..199cf90 100644 --- a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta +++ b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.plist.meta @@ -3,8 +3,8 @@ "uuid": "579bc0c1-f5e2-4a5d-889b-9d567e53b0e6", "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "size": { - "width": 1011, - "height": 1535 + "width": 1020, + "height": 1331 }, "type": "Texture Packer", "subMetas": { @@ -17,8 +17,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 524, - "trimY": 699, + "trimX": 824, + "trimY": 544, "width": 112, "height": 128, "rawWidth": 112, @@ -39,8 +39,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 524, - "trimY": 827, + "trimX": 0, + "trimY": 1200, "width": 112, "height": 128, "rawWidth": 112, @@ -61,8 +61,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 932, - "trimY": 144, + "trimX": 616, + "trimY": 403, "width": 64, "height": 128, "rawWidth": 64, @@ -83,8 +83,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 927, - "trimY": 272, + "trimX": 940, + "trimY": 0, "width": 80, "height": 128, "rawWidth": 80, @@ -105,8 +105,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 927, - "trimY": 400, + "trimX": 940, + "trimY": 128, "width": 80, "height": 128, "rawWidth": 80, @@ -127,8 +127,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 412, - "trimY": 933, + "trimX": 0, + "trimY": 964, "width": 112, "height": 128, "rawWidth": 112, @@ -149,8 +149,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 412, - "trimY": 1061, + "trimX": 112, + "trimY": 964, "width": 112, "height": 128, "rawWidth": 112, @@ -171,8 +171,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 540, - "trimY": 443, + "trimX": 840, + "trimY": 288, "width": 96, "height": 128, "rawWidth": 96, @@ -193,8 +193,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 540, - "trimY": 571, + "trimX": 840, + "trimY": 416, "width": 96, "height": 128, "rawWidth": 96, @@ -215,8 +215,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 924, - "trimY": 528, + "trimX": 940, + "trimY": 256, "width": 80, "height": 128, "rawWidth": 80, @@ -237,8 +237,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 553, + "trimX": 936, + "trimY": 384, "width": 80, "height": 128, "rawWidth": 80, @@ -259,8 +259,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 681, + "trimX": 936, + "trimY": 512, "width": 80, "height": 128, "rawWidth": 80, @@ -281,8 +281,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 809, + "trimX": 936, + "trimY": 640, "width": 80, "height": 128, "rawWidth": 80, @@ -303,8 +303,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 937, + "trimX": 582, + "trimY": 531, "width": 96, "height": 128, "rawWidth": 96, @@ -325,8 +325,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 799, - "trimY": 387, + "trimX": 326, + "trimY": 871, "width": 128, "height": 112, "rawWidth": 128, @@ -347,8 +347,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 1321, + "trimX": 696, + "trimY": 1200, "width": 96, "height": 96, "rawWidth": 96, @@ -366,11 +366,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 328, - "trimY": 1417, + "trimX": 416, + "trimY": 983, "width": 96, "height": 112, "rawWidth": 96, @@ -388,11 +388,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 424, - "trimY": 1413, + "trimX": 656, + "trimY": 1092, "width": 96, "height": 112, "rawWidth": 96, @@ -413,8 +413,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 520, - "trimY": 1419, + "trimX": 528, + "trimY": 1113, "width": 96, "height": 112, "rawWidth": 96, @@ -435,8 +435,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 764, - "trimY": 1075, + "trimX": 392, + "trimY": 1207, "width": 96, "height": 112, "rawWidth": 96, @@ -457,8 +457,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 396, - "trimY": 471, + "trimX": 328, + "trimY": 403, "width": 144, "height": 112, "rawWidth": 144, @@ -479,8 +479,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 611, + "trimX": 454, + "trimY": 871, "width": 128, "height": 112, "rawWidth": 128, @@ -498,11 +498,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 527, - "trimY": 283, + "trimX": 680, + "trimY": 288, "width": 160, "height": 112, "rawWidth": 160, @@ -523,8 +523,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 499, + "trimX": 472, + "trimY": 403, "width": 144, "height": 112, "rawWidth": 144, @@ -545,8 +545,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 208, - "trimY": 278, + "trimX": 0, + "trimY": 0, "width": 188, "height": 144, "rawWidth": 188, @@ -567,8 +567,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 556, + "trimX": 188, + "trimY": 0, "width": 188, "height": 144, "rawWidth": 188, @@ -589,8 +589,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 700, + "trimX": 376, + "trimY": 0, "width": 188, "height": 144, "rawWidth": 188, @@ -611,8 +611,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 844, + "trimX": 564, + "trimY": 0, "width": 188, "height": 144, "rawWidth": 188, @@ -633,8 +633,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 988, + "trimX": 752, + "trimY": 0, "width": 188, "height": 144, "rawWidth": 188, @@ -656,7 +656,7 @@ "offsetX": 0, "offsetY": 0, "trimX": 0, - "trimY": 1132, + "trimY": 144, "width": 188, "height": 144, "rawWidth": 188, @@ -677,8 +677,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 1276, + "trimX": 188, + "trimY": 144, "width": 188, "height": 144, "rawWidth": 188, @@ -699,8 +699,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 416, - "trimY": 139, + "trimX": 376, + "trimY": 144, "width": 188, "height": 144, "rawWidth": 188, @@ -721,8 +721,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 624, - "trimY": 0, + "trimX": 564, + "trimY": 144, "width": 188, "height": 144, "rawWidth": 188, @@ -743,8 +743,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 812, - "trimY": 0, + "trimX": 752, + "trimY": 144, "width": 188, "height": 144, "rawWidth": 188, @@ -765,8 +765,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 1065, + "trimX": 582, + "trimY": 659, "width": 96, "height": 128, "rawWidth": 96, @@ -787,8 +787,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 540, - "trimY": 1307, + "trimX": 240, + "trimY": 1081, "width": 112, "height": 112, "rawWidth": 112, @@ -809,8 +809,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 769, - "trimY": 1171, + "trimX": 504, + "trimY": 1209, "width": 96, "height": 112, "rawWidth": 96, @@ -831,8 +831,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 723, + "trimX": 678, + "trimY": 980, "width": 128, "height": 112, "rawWidth": 128, @@ -853,8 +853,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 1420, + "trimX": 352, + "trimY": 288, "width": 164, "height": 115, "rawWidth": 164, @@ -875,8 +875,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 164, - "trimY": 1420, + "trimX": 0, + "trimY": 374, "width": 164, "height": 115, "rawWidth": 164, @@ -897,8 +897,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 604, - "trimY": 144, + "trimX": 164, + "trimY": 374, "width": 164, "height": 115, "rawWidth": 164, @@ -919,8 +919,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 768, - "trimY": 144, + "trimX": 516, + "trimY": 288, "width": 164, "height": 115, "rawWidth": 164, @@ -941,12 +941,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 0, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 806, + "trimY": 791, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -964,11 +964,11 @@ "offsetX": 0, "offsetY": 0, "trimX": 0, - "trimY": 139, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimY": 846, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -985,12 +985,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 208, - "trimY": 0, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 128, + "trimY": 846, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1007,12 +1007,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 278, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 326, + "trimY": 753, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1029,12 +1029,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 208, - "trimY": 139, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 454, + "trimY": 753, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1051,12 +1051,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 416, - "trimY": 0, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 678, + "trimY": 862, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1073,12 +1073,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 0, - "trimY": 417, - "width": 208, - "height": 139, - "rawWidth": 208, - "rawHeight": 139, + "trimX": 806, + "trimY": 909, + "width": 128, + "height": 118, + "rawWidth": 128, + "rawHeight": 118, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1095,11 +1095,11 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 639, - "trimY": 259, - "width": 144, + "trimX": 256, + "trimY": 489, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1117,11 +1117,11 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 783, - "trimY": 259, - "width": 144, + "trimX": 256, + "trimY": 617, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1139,11 +1139,11 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 780, - "trimY": 499, - "width": 144, + "trimX": 256, + "trimY": 745, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1158,14 +1158,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 556, - "width": 144, + "trimX": 256, + "trimY": 873, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1180,14 +1180,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 700, - "width": 144, + "trimX": 112, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1202,14 +1202,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 844, - "width": 144, + "trimX": 182, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1224,14 +1224,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 988, - "width": 144, + "trimX": 252, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1246,14 +1246,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 988, - "width": 144, + "trimX": 252, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1268,14 +1268,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 844, - "width": 144, + "trimX": 182, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1290,14 +1290,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 700, - "width": 144, + "trimX": 112, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1312,14 +1312,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 556, - "width": 144, + "trimX": 256, + "trimY": 873, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1337,11 +1337,11 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 780, - "trimY": 499, - "width": 144, + "trimX": 256, + "trimY": 745, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1359,11 +1359,11 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 783, - "trimY": 259, - "width": 144, + "trimX": 256, + "trimY": 617, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1378,14 +1378,14 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 1132, - "width": 144, + "trimX": 322, + "trimY": 1200, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1403,11 +1403,11 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 188, - "trimY": 1276, - "width": 144, + "trimX": 528, + "trimY": 1043, + "width": 70, "height": 128, - "rawWidth": 144, + "rawWidth": 70, "rawHeight": 128, "borderTop": 0, "borderBottom": 0, @@ -1425,8 +1425,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 524, - "trimY": 1083, + "trimX": 128, + "trimY": 1092, "width": 112, "height": 96, "rawWidth": 112, @@ -1447,8 +1447,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 639, - "trimY": 387, + "trimX": 680, + "trimY": 400, "width": 160, "height": 112, "rawWidth": 160, @@ -1469,8 +1469,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 396, - "trimY": 583, + "trimX": 680, + "trimY": 512, "width": 144, "height": 112, "rawWidth": 144, @@ -1488,11 +1488,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 524, - "trimY": 955, + "trimX": 806, + "trimY": 1027, "width": 128, "height": 112, "rawWidth": 128, @@ -1513,8 +1513,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 769, - "trimY": 1283, + "trimX": 792, + "trimY": 1139, "width": 96, "height": 96, "rawWidth": 96, @@ -1532,11 +1532,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 764, - "trimY": 1379, + "trimX": 934, + "trimY": 1104, "width": 80, "height": 96, "rawWidth": 80, @@ -1557,8 +1557,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 652, - "trimY": 1306, + "trimX": 352, + "trimY": 1081, "width": 112, "height": 112, "rawWidth": 112, @@ -1579,8 +1579,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 1082, + "trimX": 0, + "trimY": 1092, "width": 128, "height": 96, "rawWidth": 128, @@ -1598,11 +1598,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 883, - "trimY": 1013, + "trimX": 934, + "trimY": 768, "width": 80, "height": 112, "rawWidth": 80, @@ -1620,11 +1620,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 876, - "trimY": 1093, + "trimX": 934, + "trimY": 880, "width": 80, "height": 112, "rawWidth": 80, @@ -1642,11 +1642,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 755, - "trimY": 1011, + "trimX": 464, + "trimY": 1079, "width": 64, "height": 128, "rawWidth": 64, @@ -1664,11 +1664,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 865, - "trimY": 1269, + "trimX": 934, + "trimY": 992, "width": 80, "height": 112, "rawWidth": 80, @@ -1689,8 +1689,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 865, - "trimY": 1349, + "trimX": 224, + "trimY": 1001, "width": 80, "height": 96, "rawWidth": 80, @@ -1711,8 +1711,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 860, - "trimY": 1429, + "trimX": 320, + "trimY": 1001, "width": 80, "height": 96, "rawWidth": 80, @@ -1733,8 +1733,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 632, - "trimY": 1419, + "trimX": 792, + "trimY": 1235, "width": 80, "height": 96, "rawWidth": 80, @@ -1752,11 +1752,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 865, - "trimY": 1173, + "trimX": 600, + "trimY": 1209, "width": 96, "height": 112, "rawWidth": 96, @@ -1777,8 +1777,8 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 316, - "trimY": 1193, + "trimX": 582, + "trimY": 787, "width": 96, "height": 128, "rawWidth": 96, @@ -1796,11 +1796,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 412, - "trimY": 1317, + "trimX": 582, + "trimY": 915, "width": 96, "height": 128, "rawWidth": 96, @@ -1818,15 +1818,15 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": true, + "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 208, - "trimY": 422, - "width": 131, - "height": 188, - "rawWidth": 131, - "rawHeight": 188, + "trimX": 0, + "trimY": 288, + "width": 176, + "height": 86, + "rawWidth": 176, + "rawHeight": 86, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1843,12 +1843,12 @@ "rotated": false, "offsetX": 0, "offsetY": 0, - "trimX": 396, - "trimY": 283, - "width": 131, - "height": 188, - "rawWidth": 131, - "rawHeight": 188, + "trimX": 176, + "trimY": 288, + "width": 176, + "height": 86, + "rawWidth": 176, + "rawHeight": 86, "borderTop": 0, "borderBottom": 0, "borderLeft": 0, @@ -1865,8 +1865,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 396, - "trimY": 695, + "trimX": 0, + "trimY": 489, "width": 119, "height": 128, "rawWidth": 119, @@ -1884,11 +1884,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 764, - "trimY": 627, + "trimX": 128, + "trimY": 489, "width": 119, "height": 128, "rawWidth": 119, @@ -1909,8 +1909,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 883, - "trimY": 656, + "trimX": 0, + "trimY": 608, "width": 119, "height": 128, "rawWidth": 119, @@ -1928,11 +1928,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 764, - "trimY": 755, + "trimX": 128, + "trimY": 608, "width": 119, "height": 128, "rawWidth": 119, @@ -1953,8 +1953,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 883, - "trimY": 775, + "trimX": 326, + "trimY": 515, "width": 119, "height": 128, "rawWidth": 119, @@ -1975,8 +1975,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 396, - "trimY": 814, + "trimX": 454, + "trimY": 515, "width": 119, "height": 128, "rawWidth": 119, @@ -1997,8 +1997,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 835, + "trimX": 678, + "trimY": 624, "width": 119, "height": 128, "rawWidth": 119, @@ -2016,11 +2016,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 636, - "trimY": 954, + "trimX": 806, + "trimY": 672, "width": 119, "height": 128, "rawWidth": 119, @@ -2038,11 +2038,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 412, - "trimY": 1189, + "trimX": 0, + "trimY": 727, "width": 119, "height": 128, "rawWidth": 119, @@ -2060,11 +2060,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 531, - "trimY": 1179, + "trimX": 128, + "trimY": 727, "width": 119, "height": 128, "rawWidth": 119, @@ -2082,11 +2082,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 650, - "trimY": 1178, + "trimX": 326, + "trimY": 634, "width": 119, "height": 128, "rawWidth": 119, @@ -2104,11 +2104,11 @@ "rawTextureUuid": "385b0a2b-765c-43fc-9243-977baccfd37a", "trimType": "auto", "trimThreshold": 1, - "rotated": false, + "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 764, - "trimY": 883, + "trimX": 454, + "trimY": 634, "width": 119, "height": 128, "rawWidth": 119, @@ -2129,8 +2129,8 @@ "rotated": true, "offsetX": 0, "offsetY": 0, - "trimX": 883, - "trimY": 894, + "trimX": 678, + "trimY": 743, "width": 119, "height": 128, "rawWidth": 119, diff --git a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png index 49d5136..d4ab89c 100644 Binary files a/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png and b/frontend/assets/resources/animation/KnifeGirl/KnifeGirl.png differ diff --git a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim index 06ebfb3..b0384e4 100644 --- a/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim +++ b/frontend/assets/resources/animation/KnifeGirl/LayDown1.anim @@ -17,16 +17,10 @@ "__uuid__": "4e8a4f3c-5406-4700-9230-b2abc29a1093" } }, - { - "frame": 0.03333333333333333, - "value": { - "__uuid__": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5" - } - }, { "frame": 0.05, "value": { - "__uuid__": "4e8a4f3c-5406-4700-9230-b2abc29a1093" + "__uuid__": "1ae5e6f6-ba82-485d-b3c7-59fd16ece3d5" } } ] diff --git a/frontend/assets/resources/prefabs/ControlledCharacter.prefab b/frontend/assets/resources/prefabs/ControlledCharacter.prefab index 58f4cf0..5a5db55 100644 --- a/frontend/assets/resources/prefabs/ControlledCharacter.prefab +++ b/frontend/assets/resources/prefabs/ControlledCharacter.prefab @@ -580,14 +580,14 @@ "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, - "y": 0.5 + "y": 0 }, "_trs": { "__type__": "TypedArray", "ctor": "Float64Array", "array": [ 0, - 0, + -24, 0, 0, 0, @@ -743,14 +743,14 @@ "_anchorPoint": { "__type__": "cc.Vec2", "x": 0.5, - "y": 0.5 + "y": 0 }, "_trs": { "__type__": "TypedArray", "ctor": "Float64Array", "array": [ 0, - 5, + -24, 0, 0, 0, diff --git a/frontend/assets/scenes/offline_map.fire b/frontend/assets/scenes/offline_map.fire index de9f2b1..2a2d80b 100644 --- a/frontend/assets/scenes/offline_map.fire +++ b/frontend/assets/scenes/offline_map.fire @@ -461,7 +461,7 @@ "array": [ 0, 0, - 210.4441731196186, + 210.4189861023336, 0, 0, 0, diff --git a/frontend/assets/scripts/AttackingCharacter.js b/frontend/assets/scripts/AttackingCharacter.js index ca81472..da57a40 100644 --- a/frontend/assets/scripts/AttackingCharacter.js +++ b/frontend/assets/scripts/AttackingCharacter.js @@ -10,7 +10,7 @@ window.ATK_CHARACTER_STATE = { InAirAtk1: [6, "InAirAtk1"], InAirAtked1: [7, "InAirAtked1"], BlownUp1: [8, "BlownUp1"], - LayDown1: [9, "LayDown1"], + LayDown1: [9, "LayDown1"], // The last frame of "LayDown1" should have a simliar boundingbox with the first frame of "GetUp1", otherwise the animation would seem odd GetUp1: [10, "GetUp1"], Atk2: [11, "Atk2"], Atk3: [12, "Atk3"], diff --git a/frontend/assets/scripts/Map.js b/frontend/assets/scripts/Map.js index 9a5dc06..ff7d3c1 100644 --- a/frontend/assets/scripts/Map.js +++ b/frontend/assets/scripts/Map.js @@ -833,25 +833,16 @@ batchInputFrameIdRange=[${batch[0].inputFrameId}, ${batch[batch.length - 1].inpu playerScriptIns.setSpecies(chConfig.SpeciesName); if (1 == joinIndex) { - newPlayerNode.color = cc.Color.RED; + newPlayerNode.color = cc.Color.RED; } else { - newPlayerNode.color = cc.Color.BLUE; + newPlayerNode.color = cc.Color.BLUE; } const [wx, wy] = gopkgs.VirtualGridToWorldPos(vx, vy); newPlayerNode.setPosition(wx, wy); playerScriptIns.mapNode = self.node; - const colliderRadius = playerDownsyncInfo.ColliderRadius; - const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos(colliderRadius, colliderRadius + colliderRadius); // avoid multiplying - const colliderWidth = halfColliderWidth + halfColliderWidth, - colliderHeight = halfColliderHeight + halfColliderHeight; // avoid multiplying - const newPlayerCollider = gopkgs.GenerateRectColliderJs(wx, wy, colliderWidth, colliderHeight, self.spaceOffsetX, self.spaceOffsetY, playerDownsyncInfo, "Player"); - self.gopkgsCollisionSys.Add(newPlayerCollider); - const collisionPlayerIndex = self.collisionPlayerIndexPrefix + joinIndex; - self.gopkgsCollisionSysMap[collisionPlayerIndex] = newPlayerCollider; - - console.log(`Created new player collider: joinIndex=${joinIndex}`); + console.log(`Created new player node: joinIndex=${joinIndex}`); safelyAddChild(self.node, newPlayerNode); setLocalZOrder(newPlayerNode, 5); @@ -1228,10 +1219,11 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`); showDebugBoundaries(rdf) { const self = this; - const leftPadding = self.snapIntoPlatformOverlap, - rightPadding = self.snapIntoPlatformOverlap, - topPadding = self.snapIntoPlatformOverlap, - bottomPadding = self.snapIntoPlatformOverlap; + // Hardcoded paddings for now + const leftPadding = 0.1, + rightPadding = 0.1, + topPadding = 0.1, + bottomPadding = 0.1; if (self.showCriticalCoordinateLabels) { let g = self.g; g.clear(); @@ -1264,6 +1256,72 @@ actuallyUsedinputList:{${self.inputFrameDownsyncStr(actuallyUsedInputClone)}}`); g.lineTo(wpos[0], wpos[1]); g.stroke(); } + + for (let k in rdf.PlayersArr) { + const player = rdf.PlayersArr[k]; + if (1 == player.JoinIndex) { + g.strokeColor = cc.Color.BLUE; + } else { + g.strokeColor = cc.Color.RED; + } + + let [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*4]; + switch (player.CharacterState) { + case ATK_CHARACTER_STATE.LayDown1[0]: + [colliderWidth, colliderHeight] = [player.ColliderRadius*4, player.ColliderRadius*2]; + break; + case ATK_CHARACTER_STATE.BlownUp1[0]: + case ATK_CHARACTER_STATE.InAirIdle1NoJump[0]: + case ATK_CHARACTER_STATE.InAirIdle1ByJump[0]: + [colliderWidth, colliderHeight] = [player.ColliderRadius*2, player.ColliderRadius*2]; + break; + } + + const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((colliderWidth >> 1), (colliderHeight >> 1)); + + const [wx, wy] = gopkgs.VirtualGridToWorldPos(player.VirtualGridX, player.VirtualGridY); + const [cx, cy] = gopkgs.WorldToPolygonColliderBLPos(wx, wy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0); + const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]]; + + g.moveTo(cx, cy); + for (let j = 0; j < pts.length; j += 1) { + g.lineTo(pts[j][0] + cx, pts[j][1] + cy); + } + g.lineTo(cx, cy); + g.stroke(); + } + + for (let k in rdf.MeleeBullets) { + const meleeBullet = rdf.MeleeBullets[k]; + if ( + meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames <= rdf.Id + && + meleeBullet.Bullet.OriginatedRenderFrameId + meleeBullet.Bullet.StartupFrames + meleeBullet.Bullet.ActiveFrames > rdf.Id + ) { + const offender = rdf.PlayersArr[meleeBullet.Bullet.OffenderJoinIndex-1]; + if (1 == offender.JoinIndex) { + g.strokeColor = cc.Color.BLUE; + } else { + g.strokeColor = cc.Color.RED; + } + + let xfac = 1; // By now, straight Punch offset doesn't respect "y-axis" + if (0 > offender.DirX) { + xfac = -1; + } + const [bulletWx, bulletWy] = gopkgs.VirtualGridToWorldPos(offender.VirtualGridX + xfac * meleeBullet.Bullet.HitboxOffsetX, offender.VirtualGridY); + const [halfColliderWidth, halfColliderHeight] = gopkgs.VirtualGridToWorldPos((meleeBullet.Bullet.HitboxSizeX >> 1), (meleeBullet.Bullet.HitboxSizeY >> 1)); + const [bulletCx, bulletCy] = gopkgs.WorldToPolygonColliderBLPos(bulletWx, bulletWy, halfColliderWidth, halfColliderHeight, topPadding, bottomPadding, leftPadding, rightPadding, 0, 0); + const pts = [[0, 0], [leftPadding + halfColliderWidth*2 + rightPadding, 0], [leftPadding + halfColliderWidth*2 + rightPadding, bottomPadding + halfColliderHeight*2 + topPadding], [0, bottomPadding + halfColliderHeight*2 + topPadding]]; + + g.moveTo(bulletCx, bulletCy); + for (let j = 0; j < pts.length; j += 1) { + g.lineTo(pts[j][0] + bulletCx, pts[j][1] + bulletCy); + } + g.lineTo(bulletCx, bulletCy); + g.stroke(); + } + } } }, }); diff --git a/frontend/assets/scripts/OfflineMap.js b/frontend/assets/scripts/OfflineMap.js index 360295b..061ee53 100644 --- a/frontend/assets/scripts/OfflineMap.js +++ b/frontend/assets/scripts/OfflineMap.js @@ -161,7 +161,7 @@ cc.Class({ inAir: true, }), ], - speciesIdList: [0, 1], + speciesIdList: [1, 0], }); self.selfPlayerInfo = { diff --git a/jsexport/battle/battle.go b/jsexport/battle/battle.go index e8917d5..cfe2148 100644 --- a/jsexport/battle/battle.go +++ b/jsexport/battle/battle.go @@ -419,6 +419,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer FramesInChState: currPlayerDownsync.FramesInChState + 1, ActiveSkillId: currPlayerDownsync.ActiveSkillId, ActiveSkillHit: currPlayerDownsync.ActiveSkillHit, + ColliderRadius: currPlayerDownsync.ColliderRadius, } if nextRenderFramePlayers[i].FramesToRecover < 0 { nextRenderFramePlayers[i].FramesToRecover = 0 @@ -479,12 +480,11 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer } // 2. Process player movement + playerColliders := make([]*resolv.Object, len(currRenderFrame.PlayersArr), len(currRenderFrame.PlayersArr)) // Will all be removed at the end of this function due to the need for being rollback-compatible for i, currPlayerDownsync := range currRenderFrame.PlayersArr { joinIndex := currPlayerDownsync.JoinIndex effPushbacks[joinIndex-1].X, effPushbacks[joinIndex-1].Y = float64(0), float64(0) - collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex - playerCollider := collisionSysMap[collisionPlayerIndex] - thatPlayerInNextFrame := nextRenderFramePlayers[i] + chConfig := chConfigsOrderedByJoinIndex[i] // Reset playerCollider position from the "virtual grid position" newVx, newVy := currPlayerDownsync.VirtualGridX+currPlayerDownsync.VelX, currPlayerDownsync.VirtualGridY+currPlayerDownsync.VelY @@ -492,10 +492,24 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer newVy += chConfig.JumpingInitVelY // Immediately gets out of any snapping } - playerCollider.X, playerCollider.Y = VirtualGridToPolygonColliderBLPos(newVx, newVy, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY) - // Update in the collision system - playerCollider.Update() + wx, wy := VirtualGridToWorldPos(newVx, newVy) + colliderWidth, colliderHeight := currPlayerDownsync.ColliderRadius*2, currPlayerDownsync.ColliderRadius*4 + switch currPlayerDownsync.CharacterState { + case ATK_CHARACTER_STATE_LAY_DOWN1: + colliderWidth, colliderHeight = currPlayerDownsync.ColliderRadius*4, currPlayerDownsync.ColliderRadius*2 + case ATK_CHARACTER_STATE_BLOWN_UP1, ATK_CHARACTER_STATE_INAIR_IDLE1_NO_JUMP, ATK_CHARACTER_STATE_INAIR_IDLE1_BY_JUMP: + colliderWidth, colliderHeight = currPlayerDownsync.ColliderRadius*2, currPlayerDownsync.ColliderRadius*2 + } + colliderWorldWidth, colliderWorldHeight := VirtualGridToWorldPos(colliderWidth, colliderHeight) + + playerCollider := GenerateRectCollider(wx, wy, colliderWorldWidth, colliderWorldHeight, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, SNAP_INTO_PLATFORM_OVERLAP, collisionSpaceOffsetX, collisionSpaceOffsetY, currPlayerDownsync, "Player") // the coords of all barrier boundaries are multiples of tileWidth(i.e. 16), by adding snapping y-padding when "landedOnGravityPushback" all "playerCollider.Y" would be a multiple of 1.0 + playerColliders[i] = playerCollider + + // Add to collision system + collisionSys.Add(playerCollider) + + thatPlayerInNextFrame := nextRenderFramePlayers[i] if currPlayerDownsync.InAir { thatPlayerInNextFrame.VelX += GRAVITY_X thatPlayerInNextFrame.VelY += GRAVITY_Y @@ -525,8 +539,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer // 4. Calc pushbacks for each player (after its movement) w/o bullets for i, currPlayerDownsync := range currRenderFrame.PlayersArr { joinIndex := currPlayerDownsync.JoinIndex - collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex - playerCollider := collisionSysMap[collisionPlayerIndex] + playerCollider := playerColliders[i] playerShape := playerCollider.Shape.(*resolv.ConvexPolygon) hardPushbackNorms[joinIndex-1] = calcHardPushbacksNorms(joinIndex, playerCollider, playerShape, SNAP_INTO_PLATFORM_OVERLAP, &(effPushbacks[joinIndex-1])) thatPlayerInNextFrame := nextRenderFramePlayers[i] @@ -586,6 +599,9 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_LAY_DOWN1 thatPlayerInNextFrame.FramesToRecover = chConfig.LayDownFramesToRecover } else { + halfColliderWidthDiff, halfColliderHeightDiff := int32(0), currPlayerDownsync.ColliderRadius + _, halfColliderWorldHeightDiff := VirtualGridToWorldPos(halfColliderWidthDiff, halfColliderHeightDiff) + effPushbacks[joinIndex-1].Y -= halfColliderWorldHeightDiff // To prevent bouncing due to abrupt change of collider shape thatPlayerInNextFrame.CharacterState = ATK_CHARACTER_STATE_IDLE1 thatPlayerInNextFrame.FramesToRecover = 0 } @@ -658,8 +674,7 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer // 6. Get players out of stuck barriers if there's any for i, currPlayerDownsync := range currRenderFrame.PlayersArr { joinIndex := currPlayerDownsync.JoinIndex - collisionPlayerIndex := COLLISION_PLAYER_INDEX_PREFIX + joinIndex - playerCollider := collisionSysMap[collisionPlayerIndex] + playerCollider := playerColliders[i] // Update "virtual grid position" thatPlayerInNextFrame := nextRenderFramePlayers[i] thatPlayerInNextFrame.VirtualGridX, thatPlayerInNextFrame.VirtualGridY = PolygonColliderBLToVirtualGridPos(playerCollider.X-effPushbacks[joinIndex-1].X, playerCollider.Y-effPushbacks[joinIndex-1].Y, playerCollider.W*0.5, playerCollider.H*0.5, 0, 0, 0, 0, collisionSpaceOffsetX, collisionSpaceOffsetY) @@ -694,6 +709,10 @@ func ApplyInputFrameDownsyncDynamicsOnSingleRenderFrame(inputsBuffer *RingBuffer } } + for _, playerCollider := range playerColliders { + playerCollider.Space.Remove(playerCollider) + } + return &RoomDownsyncFrame{ Id: currRenderFrame.Id + 1, PlayersArr: nextRenderFramePlayers,