Fixed rope startup errors
This commit is contained in:
parent
9017315bfe
commit
007e762a47
|
@ -108,12 +108,16 @@ public class RopeSimulator : NetworkBehaviour
|
|||
private void OnEnable()
|
||||
{
|
||||
GameManager.OnPlayersReady += PlayersReady;
|
||||
|
||||
if (NetworkManager.Singleton != null)
|
||||
NetworkManager.Singleton.NetworkTickSystem.Tick += NetworkTick;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
GameManager.OnPlayersReady -= PlayersReady;
|
||||
|
||||
if (NetworkManager.Singleton != null)
|
||||
NetworkManager.Singleton.NetworkTickSystem.Tick -= NetworkTick;
|
||||
}
|
||||
|
||||
|
@ -153,12 +157,12 @@ public class RopeSimulator : NetworkBehaviour
|
|||
|
||||
void ShrinkenRope(int playerNumber)
|
||||
{
|
||||
int prevSubDivision = (int) subDivision;
|
||||
int prevSubDivision = (int)subDivision;
|
||||
subDivision -= ropeShrinkSpeed * Time.deltaTime;
|
||||
subDivision = Mathf.Clamp(subDivision, ropeMinLength, ropeMaxLength);
|
||||
|
||||
// Only shrinken if the numeric value has changed
|
||||
if (prevSubDivision - (int) subDivision <= 0) return;
|
||||
if (prevSubDivision - (int)subDivision <= 0) return;
|
||||
|
||||
// Shrink from rope point after start rope joint
|
||||
List<Point> newPoints = new(rope.points.Length - 1);
|
||||
|
@ -170,7 +174,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
var builder = new RopeBuilder(newPoints, new List<Stick>());
|
||||
|
||||
// Re-gen sticks
|
||||
for (int i = 0; i < (int) subDivision; i++)
|
||||
for (int i = 0; i < (int)subDivision; i++)
|
||||
{
|
||||
builder.ConnectPointsWithDesiredLength(i, i + 1, distBetweenRopePoints);
|
||||
}
|
||||
|
@ -187,10 +191,10 @@ public class RopeSimulator : NetworkBehaviour
|
|||
subDivision = Mathf.Clamp(subDivision, ropeMinLength, ropeMaxLength);
|
||||
|
||||
// Only extend if the numeric value has changed
|
||||
if (prevSubDivision - (int) subDivision >= 0) return;
|
||||
if (prevSubDivision - (int)subDivision >= 0) return;
|
||||
|
||||
// Extend from rope point after start rope point
|
||||
List<Point> newPoints = new (rope.points.Length + 1);
|
||||
List<Point> newPoints = new(rope.points.Length + 1);
|
||||
newPoints.Add(new Point(rope.points[1].position));
|
||||
for (int i = 1; i < rope.points.Length; i++)
|
||||
{
|
||||
|
@ -233,7 +237,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
builder.AddPoint(new Point(start.position, locked: true));
|
||||
|
||||
// Build rope points
|
||||
for (int i = 1; i < (int) subDivision; i++)
|
||||
for (int i = 1; i < (int)subDivision; i++)
|
||||
{
|
||||
Vector3 pointPos = Vector3.Lerp(start.position, end.position, (float)i / Mathf.Floor(subDivision));
|
||||
Debug.DrawRay(pointPos, (end.position - start.position).normalized);
|
||||
|
@ -243,7 +247,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
builder.AddPoint(new Point(end.position, locked: true));
|
||||
|
||||
// Connect rope points
|
||||
for (int i = 0; i < (int) subDivision; i++)
|
||||
for (int i = 0; i < (int)subDivision; i++)
|
||||
{
|
||||
builder.ConnectPointsWithDesiredLength(i, i + 1, desiredLength: distBetweenRopePoints);
|
||||
}
|
||||
|
@ -348,7 +352,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
foreach (var enemyPos in intermediateState.enemyPositions)
|
||||
{
|
||||
// Find corresponding client enemy with id (z-component)
|
||||
ulong enemyID = (ulong) enemyPos.z;
|
||||
ulong enemyID = (ulong)enemyPos.z;
|
||||
GameObject enemy = enemyByIds.GetValueOrDefault(enemyID);
|
||||
Assert.IsNotNull(enemy, $"Server enemy with id: {enemyID} could not be found on client!");
|
||||
|
||||
|
@ -358,7 +362,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
foreach (var playerPos in intermediateState.playerPositions)
|
||||
{
|
||||
// Find corresponding client player with id (z-component)
|
||||
ulong playerID = (ulong) playerPos.z;
|
||||
ulong playerID = (ulong)playerPos.z;
|
||||
GameObject player = playerByIds.GetValueOrDefault(playerID);
|
||||
Assert.IsNotNull(player, $"Server player with id: {playerID} could not be found on client!");
|
||||
|
||||
|
@ -384,7 +388,8 @@ public class RopeSimulator : NetworkBehaviour
|
|||
|
||||
private GameState ProcessGame()
|
||||
{
|
||||
GameState localState = new() {
|
||||
GameState localState = new()
|
||||
{
|
||||
tick = currentTick,
|
||||
nrope = Rope.ToNetworkRope(this.rope),
|
||||
enemyPositions = GameObject.FindObjectsByType<EnemyPathFinding>(FindObjectsSortMode.None).Select(e => new Vector3(e.transform.position.x, e.transform.position.y, e.GetComponent<NetworkObject>().NetworkObjectId)).ToArray(),
|
||||
|
@ -608,12 +613,12 @@ public class RopeSimulator : NetworkBehaviour
|
|||
private void TryMovePointToPosition(Point point, Vector3 position)
|
||||
{
|
||||
Vector2 moveDir = new Vector2(position.x, position.y) - new Vector2(point.position.x, point.position.y);
|
||||
int stepsRequired = (int) Mathf.Ceil(moveDir.magnitude / collisionCheckDist);
|
||||
int stepsRequired = (int)Mathf.Ceil(moveDir.magnitude / collisionCheckDist);
|
||||
moveDir.Normalize();
|
||||
|
||||
Vector2 initialPos = new Vector2(point.position.x, point.position.y);
|
||||
bool shouldBreak = false;
|
||||
for (int i = 0 ; i < stepsRequired; i++)
|
||||
for (int i = 0; i < stepsRequired; i++)
|
||||
{
|
||||
Vector2 newPos = Vector2.MoveTowards(new Vector2(point.position.x, point.position.y), new Vector2(position.x, position.y), collisionCheckDist);
|
||||
point.position.Set(newPos.x, newPos.y, point.position.z);
|
||||
|
@ -645,7 +650,7 @@ public class RopeSimulator : NetworkBehaviour
|
|||
|
||||
private void HandleStaticCollidersOfPoint(Point p)
|
||||
{
|
||||
foreach (var hitCollider in Physics2D.OverlapCircleAll(p.position, ropeRadius*1.1f, staticColliderMask))
|
||||
foreach (var hitCollider in Physics2D.OverlapCircleAll(p.position, ropeRadius * 1.1f, staticColliderMask))
|
||||
{
|
||||
if (hitCollider == null) continue;
|
||||
if (hitCollider.isTrigger) continue;
|
||||
|
|
Loading…
Reference in New Issue