public static void AttachAnimalToNetwork(AnimalSpawnZone zone, GameObject gameObject)
    {
        AnimalDespawner animalDespawner = gameObject.GetComponent <AnimalDespawner>();

        if (!animalDespawner)
        {
            animalDespawner = gameObject.AddComponent <AnimalDespawner>();
        }
        animalDespawner.SpawnedFromZone = zone;
        animalDespawner.DespawnRadius   = 70f;
        animalDespawner.UpdateRate      = 1f;
        if (BoltNetwork.isServer)
        {
            BoltEntity boltEntity = gameObject.AddComponent <BoltEntity>();
            BoltEntity component  = gameObject.GetComponent <CoopAnimalServer>().NetworkContainerPrefab.GetComponent <BoltEntity>();
            using (BoltEntitySettingsModifier boltEntitySettingsModifier = component.ModifySettings())
            {
                using (BoltEntitySettingsModifier boltEntitySettingsModifier2 = boltEntity.ModifySettings())
                {
                    boltEntitySettingsModifier2.clientPredicted          = boltEntitySettingsModifier.clientPredicted;
                    boltEntitySettingsModifier2.persistThroughSceneLoads = boltEntitySettingsModifier.persistThroughSceneLoads;
                    boltEntitySettingsModifier2.allowInstantiateOnClient = boltEntitySettingsModifier.allowInstantiateOnClient;
                    boltEntitySettingsModifier2.prefabId     = boltEntitySettingsModifier.prefabId;
                    boltEntitySettingsModifier2.updateRate   = boltEntitySettingsModifier.updateRate;
                    boltEntitySettingsModifier2.serializerId = boltEntitySettingsModifier.serializerId;
                }
            }
            BoltNetwork.Attach(gameObject);
        }
    }
Example #2
0
    public static BoltEntity AttachLocalPlayer(GameObject go, string name, bool attachToRespawn)
    {
        if (go.GetComponent <BoltEntity>() && go.GetComponent <BoltEntity>().isAttached)
        {
            return(go.GetComponent <BoltEntity>());
        }
        go.AddComponent <BoltPlayerSetup>();
        go.AddComponent <BoltEntity>();
        using (BoltEntitySettingsModifier boltEntitySettingsModifier = go.GetComponent <BoltEntity>().ModifySettings())
        {
            boltEntitySettingsModifier.prefabId                 = BoltPrefabs.player_net;
            boltEntitySettingsModifier.serializerId             = StateSerializerTypeIds.IPlayerState;
            boltEntitySettingsModifier.allowInstantiateOnClient = true;
            boltEntitySettingsModifier.persistThroughSceneLoads = true;
            boltEntitySettingsModifier.clientPredicted          = false;
            boltEntitySettingsModifier.updateRate               = 1;
        }
        BoltEntity component = BoltNetwork.Attach(go).GetComponent <BoltEntity>();

        component.GetState <IPlayerState>().name = ((!string.IsNullOrEmpty(name)) ? name : "UNKNOWN");
        LocalPlayer.Entity = component;
        LocalPlayer.State  = component.GetState <IPlayerState>();
        BoltNetwork.SetCanReceiveEntities(true);
        return(component);
    }
Example #3
0
 public void AttachToNetwork(PrefabId prefabId, UniqueId state, GameObject sourceGo)
 {
     if (BoltNetwork.isServer)
     {
         BoltEntity boltEntity = sourceGo.AddComponent <BoltEntity>();
         using (BoltEntitySettingsModifier boltEntitySettingsModifier = boltEntity.ModifySettings())
         {
             boltEntitySettingsModifier.persistThroughSceneLoads = true;
             boltEntitySettingsModifier.allowInstantiateOnClient = false;
             boltEntitySettingsModifier.clientPredicted          = false;
             boltEntitySettingsModifier.prefabId     = prefabId;
             boltEntitySettingsModifier.updateRate   = 1;
             boltEntitySettingsModifier.sceneId      = UniqueId.None;
             boltEntitySettingsModifier.serializerId = state;
         }
         BoltNetwork.Attach(boltEntity.gameObject);
     }
 }
Example #4
0
 private void AttachAnimalToNetwork(GameObject gameObject)
 {
     if (BoltNetwork.isServer)
     {
         BoltEntity boltEntity = gameObject.AddComponent <BoltEntity>();
         BoltEntity component  = gameObject.GetComponent <CoopAnimalServer>().NetworkContainerPrefab.GetComponent <BoltEntity>();
         using (BoltEntitySettingsModifier boltEntitySettingsModifier = component.ModifySettings())
         {
             using (BoltEntitySettingsModifier boltEntitySettingsModifier2 = boltEntity.ModifySettings())
             {
                 boltEntitySettingsModifier2.clientPredicted          = boltEntitySettingsModifier.clientPredicted;
                 boltEntitySettingsModifier2.persistThroughSceneLoads = boltEntitySettingsModifier.persistThroughSceneLoads;
                 boltEntitySettingsModifier2.allowInstantiateOnClient = boltEntitySettingsModifier.allowInstantiateOnClient;
                 boltEntitySettingsModifier2.prefabId     = boltEntitySettingsModifier.prefabId;
                 boltEntitySettingsModifier2.updateRate   = boltEntitySettingsModifier.updateRate;
                 boltEntitySettingsModifier2.serializerId = boltEntitySettingsModifier.serializerId;
             }
         }
         BoltNetwork.Attach(gameObject);
     }
 }
    public static void AttachBuildingBoltEntity(BoltEntity entity)
    {
        if (!BoltNetwork.isServer)
        {
            return;
        }
        if (!CoopSteamServerStarter.SaveIsLoading)
        {
            return;
        }
        if (!entity)
        {
            return;
        }
        if (entity.IsAttached())
        {
            return;
        }
        BoltEntitySettingsModifier boltEntitySettingsModifier = entity.ModifySettings();
        BridgeArchitect            component  = entity.GetComponent <BridgeArchitect>();
        ZiplineArchitect           component2 = entity.GetComponent <ZiplineArchitect>();
        GardenArchitect            component3 = entity.GetComponent <GardenArchitect>();
        CraneArchitect             component4 = entity.GetComponent <CraneArchitect>();

        if (boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IFireState)
        {
            BoltNetwork.Attach(entity);
        }
        else if (boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IRaftState)
        {
            BoltNetwork.Attach(entity);
            if (entity && entity.isAttached && entity.StateIs <IRaftState>())
            {
                entity.GetState <IRaftState>().IsReal = true;
            }
        }
        else if (boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IMultiHolderState)
        {
            BoltNetwork.Attach(entity);
            if (entity && entity.isAttached && entity.StateIs <IMultiHolderState>())
            {
                entity.GetState <IMultiHolderState>().IsReal = true;
                MultiHolder[] componentsInChildren = entity.GetComponentsInChildren <MultiHolder>(true);
                if (componentsInChildren.Length > 0)
                {
                    componentsInChildren[0]._contentActual     = componentsInChildren[0]._contentAmount;
                    componentsInChildren[0]._contentTypeActual = componentsInChildren[0]._content;
                }
            }
        }
        else if (component)
        {
            BoltNetwork.Attach(entity, component.CustomToken);
        }
        else if (component2)
        {
            BoltNetwork.Attach(entity, component2.CustomToken);
        }
        else if (component3)
        {
            BoltNetwork.Attach(entity, component3.CustomToken);
        }
        else if (component4)
        {
            BoltNetwork.Attach(entity, component4.CustomToken);
        }
        else if (boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IFoundationState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IBuildingState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IRabbitCage || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.ITreeBuildingState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.ITrapLargeState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IBuildingDestructibleState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IWallChunkBuildingState)
        {
            CoopBuildingEx     component5 = entity.GetComponent <CoopBuildingEx>();
            WallChunkArchitect component6 = entity.GetComponent <WallChunkArchitect>();
            if (component6)
            {
                BoltNetwork.Attach(entity, component6.CustomToken);
            }
            else if (component5)
            {
                CoopConstructionExToken coopConstructionExToken = new CoopConstructionExToken();
                coopConstructionExToken.Architects = new CoopConstructionExToken.ArchitectData[component5.Architects.Length];
                for (int i = 0; i < component5.Architects.Length; i++)
                {
                    coopConstructionExToken.Architects[i].PointsCount     = (component5.Architects[i] as ICoopStructure).MultiPointsCount;
                    coopConstructionExToken.Architects[i].PointsPositions = (component5.Architects[i] as ICoopStructure).MultiPointsPositions.ToArray();
                    coopConstructionExToken.Architects[i].CustomToken     = (component5.Architects[i] as ICoopStructure).CustomToken;
                    if (component5.Architects[i] is FoundationArchitect)
                    {
                        coopConstructionExToken.Architects[i].AboveGround = ((FoundationArchitect)component5.Architects[i])._aboveGround;
                    }
                    if (component5.Architects[i] is RoofArchitect && (component5.Architects[i] as RoofArchitect).CurrentSupport != null)
                    {
                        coopConstructionExToken.Architects[i].Support = ((component5.Architects[i] as RoofArchitect).CurrentSupport as MonoBehaviour).GetComponent <BoltEntity>();
                    }
                    if (component5.Architects[i] is FloorArchitect && (component5.Architects[i] as FloorArchitect).CurrentSupport != null)
                    {
                        coopConstructionExToken.Architects[i].Support = ((component5.Architects[i] as FloorArchitect).CurrentSupport as MonoBehaviour).GetComponent <BoltEntity>();
                    }
                    CoopSteamServerStarter.AttachBuildingBoltEntity(coopConstructionExToken.Architects[i].Support);
                }
                BoltNetwork.Attach(entity, coopConstructionExToken);
            }
            else
            {
                BoltNetwork.Attach(entity);
            }
        }
        else if (boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IConstructionState || boltEntitySettingsModifier.serializerId == StateSerializerTypeIds.IWallChunkConstructionState)
        {
            CoopConstructionEx component7 = entity.GetComponent <CoopConstructionEx>();
            WallChunkArchitect component8 = entity.GetComponent <WallChunkArchitect>();
            if (component8)
            {
                BoltNetwork.Attach(entity, component8.CustomToken);
            }
            else if (component7)
            {
                CoopConstructionExToken coopConstructionExToken2 = new CoopConstructionExToken();
                coopConstructionExToken2.Architects = new CoopConstructionExToken.ArchitectData[component7.Architects.Length];
                for (int j = 0; j < component7.Architects.Length; j++)
                {
                    coopConstructionExToken2.Architects[j].PointsCount     = (component7.Architects[j] as ICoopStructure).MultiPointsCount;
                    coopConstructionExToken2.Architects[j].PointsPositions = (component7.Architects[j] as ICoopStructure).MultiPointsPositions.ToArray();
                    coopConstructionExToken2.Architects[j].CustomToken     = (component7.Architects[j] as ICoopStructure).CustomToken;
                    if (component7.Architects[j] is FoundationArchitect)
                    {
                        coopConstructionExToken2.Architects[j].AboveGround = ((FoundationArchitect)component7.Architects[j])._aboveGround;
                    }
                    if (component7.Architects[j] is RoofArchitect && (component7.Architects[j] as RoofArchitect).CurrentSupport != null)
                    {
                        coopConstructionExToken2.Architects[j].Support = ((component7.Architects[j] as RoofArchitect).CurrentSupport as MonoBehaviour).GetComponent <BoltEntity>();
                    }
                    if (component7.Architects[j] is FloorArchitect && (component7.Architects[j] as FloorArchitect).CurrentSupport != null)
                    {
                        coopConstructionExToken2.Architects[j].Support = ((component7.Architects[j] as FloorArchitect).CurrentSupport as MonoBehaviour).GetComponent <BoltEntity>();
                    }
                    CoopSteamServerStarter.AttachBuildingBoltEntity(coopConstructionExToken2.Architects[j].Support);
                }
                BoltNetwork.Attach(entity, coopConstructionExToken2);
            }
            else
            {
                BoltNetwork.Attach(entity);
            }
        }
    }