Example #1
0
    /// <summary>
    /// Visite les modules qui implémentent "StateUpdater" un par un et collecte leurs informations pour les rassembler
    /// dans le StateUpdateMessage.
    /// </summary>
    void CookStateUpdate()
    {
        List <BloodAndBileEngine.Networking.Messaging.NetworkMessages.StateUpdateObject> stateUpdates = new List <BloodAndBileEngine.Networking.Messaging.NetworkMessages.StateUpdateObject>();

        foreach (IStateUpdater module in StateUpdaterModules)
        {
            foreach (BloodAndBileEngine.Networking.Messaging.NetworkMessages.StateUpdateObject stateUpdate in module.GetStateUpdateInformation())
            {
                stateUpdates.Add(stateUpdate);
            }
        }

        StateUpdateMessage = new BloodAndBileEngine.Networking.Messaging.NetworkMessages.StateUpdateMessage(stateUpdates.ToArray());
    }
Example #2
0
    /// <summary>
    /// Création des entités créées, destruction des entités détruites,
    /// et synchronisation des autres.
    /// </summary>
    /// <param name="stateUpdate"></param>
    public void OnStateUpdate(BloodAndBileEngine.Networking.Messaging.NetworkMessages.StateUpdateMessage stateUpdate)
    {
        // Synchronisation
        // Chaque EntitySynchronizationDataObject a un identifiant d'entité à synchroniser, il suffit donc
        // d'appliquer la synchronisation à l'entité en question.
        BloodAndBileEngine.EntitySynchronizationDataObject[] synchObject = (BloodAndBileEngine.EntitySynchronizationDataObject[])(stateUpdate.GetStateUpdateInfo("EntitySynchronization")[0].Information);
        if (synchObject == null || synchObject.Length == 0)
        {
            BloodAndBileEngine.Debugger.Log("ERREUR : pas de EntitySynchronizationDataObject !", UnityEngine.Color.red);
        }
        foreach (BloodAndBileEngine.EntitySynchronizationDataObject SynchData in synchObject)
        {
            BloodAndBileEngine.Entity entity = BloodAndBileEngine.EntitiesManager.GetEntityFromID(SynchData.GetEntityID());
            BloodAndBileEngine.EntitySynchroniserComponent synchComponent = (BloodAndBileEngine.EntitySynchroniserComponent)entity.GetComponent(typeof(BloodAndBileEngine.EntitySynchroniserComponent));
            if (synchComponent != null)
            {
                synchComponent.GetSynchronizationData().SetSynchInfoFromSynchObject(SynchData);

                synchComponent.OnSynch();
            }
        }
    }
Example #3
0
 public override void Stop()
 {
     base.Stop();
     StateUpdaterModules = null;
     StateUpdateMessage  = null;
 }