61 lines
2.3 KiB
C#
61 lines
2.3 KiB
C#
using UnityEngine;
|
|
using Mirror;
|
|
|
|
/// <summary>
|
|
/// BaieNetworkSetup.cs - v6.3 Multijoueur
|
|
///
|
|
/// Ajouté automatiquement par BoutiqueReseau lors du spawn d'une baie.
|
|
/// Quand le client reçoit l'objet via NetworkServer.Spawn(), les materials
|
|
/// créés en runtime par BaieProcedurale.Generer() ne sont PAS synchronisés
|
|
/// (Mirror ne sync pas les materials). Ce script régénère la baie localement
|
|
/// sur chaque client après le spawn.
|
|
///
|
|
/// SETUP : Ne pas ajouter manuellement — BoutiqueReseau l'ajoute automatiquement.
|
|
/// </summary>
|
|
public class BaieNetworkSetup : NetworkBehaviour
|
|
{
|
|
public override void OnStartClient()
|
|
{
|
|
base.OnStartClient();
|
|
|
|
// Sur le serveur/host, la baie est déjà générée dans TraiterPlacementBaieServeur
|
|
// Sur les clients distants, il faut la régénérer pour avoir les materials
|
|
if (isServer) return;
|
|
|
|
BaieProcedurale bp = GetComponent<BaieProcedurale>();
|
|
if (bp != null)
|
|
{
|
|
bp.Generer();
|
|
bp.InstallerPDUAutomatiquement();
|
|
Debug.Log($"[BaieNetworkSetup] Baie régénérée côté client : {gameObject.name}");
|
|
}
|
|
|
|
BaieRack br = GetComponent<BaieRack>() ?? GetComponentInChildren<BaieRack>();
|
|
if (br != null) br.GenererSlots();
|
|
|
|
// Appliquer les layers
|
|
int layerBaie = LayerMask.NameToLayer("Baie");
|
|
int layerEquip = LayerMask.NameToLayer("Equipement");
|
|
|
|
if (layerBaie >= 0) SetLayerRecursif(gameObject, layerBaie);
|
|
|
|
foreach (Transform t in GetComponentsInChildren<Transform>(true))
|
|
{
|
|
if (t.GetComponent<PDU>() != null && layerEquip >= 0)
|
|
SetLayerRecursif(t.gameObject, layerEquip);
|
|
}
|
|
|
|
// v7.1 : notifier le gestionnaire de cables que cette baie est prete.
|
|
// Le gestionnaire va retenter de recreer les cables en attente qui
|
|
// referencent cette baie / ses PDUs / ses equipements.
|
|
if (GestionnaireCablesReseau.Instance != null)
|
|
GestionnaireCablesReseau.Instance.NotifierBaiePrete(gameObject);
|
|
}
|
|
|
|
private void SetLayerRecursif(GameObject obj, int layer)
|
|
{
|
|
obj.layer = layer;
|
|
foreach (Transform c in obj.transform)
|
|
SetLayerRecursif(c.gameObject, layer);
|
|
}
|
|
} |