fix: change ships color when spawning

This commit is contained in:
Jakob Feldmann 2024-05-14 15:01:55 +02:00
parent cca4b75827
commit 2879e82429

View File

@ -95,17 +95,7 @@ namespace Managers
foreach (Player p in players) foreach (Player p in players)
{ {
GameObject shipObject = Instantiate(p.character.shipPrefab); SpawnCharacter(p, MatchCamera, MatchArena);
p.spawnedCharacter = shipObject;
shipObject.TryGetComponent(out Ship ship);
ship.state = new ShipHandling.ShipState();
ship.cameraOperator = MatchCamera.GetComponent<CameraOperator>();
shipObject.transform.SetParent(MatchArena.transform, false);
shipObject.transform.localPosition =
MatchManager.G.ArenaProperties.spawnPositions[p.playerNumber - 1];
shipObject.transform.localScale = new Vector3();
Tween.Scale(shipObject.transform, new Vector3(0.7f, 0.7f, 0.7f), 1f);
spawned.Add(p); spawned.Add(p);
} }
return; return;
@ -130,7 +120,9 @@ namespace Managers
GameObject shipObject = Instantiate(player.character.shipPrefab); GameObject shipObject = Instantiate(player.character.shipPrefab);
player.spawnedCharacter = shipObject; player.spawnedCharacter = shipObject;
shipObject.TryGetComponent(out Ship ship); shipObject.TryGetComponent(out Ship ship);
ship.props = player.character;
ship.state = new ShipHandling.ShipState(); ship.state = new ShipHandling.ShipState();
ApplyShipColor(player.character.shipHullColor, ship.bodyMeshRenderer);
ship.cameraOperator = MatchCamera.GetComponent<CameraOperator>(); ship.cameraOperator = MatchCamera.GetComponent<CameraOperator>();
shipObject.transform.SetParent(MatchArena.transform, false); shipObject.transform.SetParent(MatchArena.transform, false);
shipObject.transform.localPosition = shipObject.transform.localPosition =
@ -144,6 +136,33 @@ namespace Managers
return; return;
} }
public void SpawnCharacter(Player p, GameObject camera, GameObject arena)
{
Log.Debug($"Spawning ship:{p.character.shipName} for player: {p.playerName}");
GameObject shipObject = Instantiate(p.character.shipPrefab);
Log.Debug($"Instantiated prefab");
p.spawnedCharacter = shipObject;
shipObject.TryGetComponent(out Ship ship);
ship.props = p.character;
ship.state = new ShipHandling.ShipState();
ship.cameraOperator = camera.GetComponent<CameraOperator>();
ApplyShipColor(p.character.shipHullColor, ship.bodyMeshRenderer);
Log.Debug($"Applied ships color");
shipObject.transform.SetParent(arena.transform, false);
shipObject.transform.localPosition =
MatchManager.G.ArenaProperties.spawnPositions[p.playerNumber - 1];
shipObject.transform.localScale = new Vector3();
Log.Debug($"Set ships location");
Tween.Scale(shipObject.transform, new Vector3(0.7f, 0.7f, 0.7f), 1f);
Log.Debug($"Started ship spawn tween");
}
private void ApplyShipColor(Color color, MeshRenderer renderer)
{
MaterialPropertyBlock materialPropertyBlock = new();
materialPropertyBlock.SetColor("_BaseColor", color);
renderer.SetPropertyBlock(materialPropertyBlock);
}
} }
} }