public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            var ob = sessionComponent as MyObjectBuilder_EnvironmentBotSpawningSystem;

            m_timeSinceLastEventInMs = ob.TimeSinceLastEventInMs;
            m_lastSpawnEventTimeInMs = MySandboxGame.TotalGamePlayTimeInMilliseconds - m_timeSinceLastEventInMs;
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            var ob = (MyObjectBuilder_SectorWeatherComponent)sessionComponent;

            m_speed = !float.IsNaN(ob.SunSpeed) ? ob.SunSpeed : MySession.Static.Settings.SunRotationIntervalMinutes;

            if (!ob.BaseSunDirection.IsZero)
            {
                m_baseSunDirection = ob.BaseSunDirection;
            }

            Enabled = MySession.Static.Settings.EnableSunRotation;
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            m_objectBuilder = (MyObjectBuilder_CutsceneSessionComponent)sessionComponent;
        
            if (m_objectBuilder != null && m_objectBuilder.Cutscenes != null && m_objectBuilder.Cutscenes.Length > 0)
            {
                foreach (var cutscene in m_objectBuilder.Cutscenes)
                {
                    if (cutscene.Name != null && cutscene.Name.Length > 0 && !m_cutsceneLibrary.ContainsKey(cutscene.Name))
                        m_cutsceneLibrary.Add(cutscene.Name, cutscene);
                }
            }
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            var builder = sessionComponent as MyObjectBuilder_SessionComponentResearch;

            if (builder == null || builder.Researches == null)
                return;

            foreach (var research in builder.Researches)
            {
                var definitions = new HashSet<MyDefinitionId>();
                foreach (var definition in research.Definitions)
                    definitions.Add(definition);

                m_unlockedResearch.Add(research.IdentityId, definitions);
            }
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            if (MyMultiplayer.Static != null && !MyMultiplayer.Static.IsServer)
                MyMultiplayer.RaiseStaticEvent(x => RequestCurrentState);

            var builder = sessionComponent as MyObjectBuilder_SessionComponentResearch;

            if (builder == null || builder.Researches == null)
                return;

            foreach (var research in builder.Researches)
            {
                var definitions = new HashSet<MyDefinitionId>();
                foreach (var definition in research.Definitions)
                    definitions.Add(definition);

                m_unlockedResearch.Add(research.IdentityId, definitions);
            }
        }
 public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
 {
     base.Init(sessionComponent);
 }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            m_obForLoading = sessionComponent as MyObjectBuilder_SpaceFaunaComponent;
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            var coordSysBuilder = sessionComponent as MyObjectBuilder_CoordinateSystem;

            this.m_lastCoordSysId = coordSysBuilder.LastCoordSysId;
            
            foreach(var coordSys in coordSysBuilder.CoordSystems)
            {
                MyTransformD origin = new MyTransformD();
                origin.Position = coordSys.Position;
                origin.Rotation = coordSys.Rotation;

                MyLocalCoordSys newCoordSys = new MyLocalCoordSys(origin, m_coorsSystemSize);
                newCoordSys.Id = coordSys.Id;

                m_localCoordSystems.Add(coordSys.Id, newCoordSys);

            }

        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponentBuilder)
        {
            if (!MyPerGameSettings.EnableAi)
                return;

            base.Init(sessionComponentBuilder);

            var ob = (MyObjectBuilder_AIComponent)sessionComponentBuilder;

            if (ob.BotBrains != null)
            foreach (var brain in ob.BotBrains)
            {
                m_loadedBotObjectBuildersByHandle[brain.PlayerHandle] = brain.BotBrain;
            }
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            var ob = sessionComponent as MyObjectBuilder_PirateAntennas;

            m_piratesIdentityId = ob.PiratesIdentity;

            int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds;

            if (ob.Drones != null)
            {
                foreach (var entry in ob.Drones)
                {
                    m_droneInfos.Add(entry.EntityId, DroneInfo.Allocate(entry.AntennaEntityId, currentTime + entry.DespawnTimer), immediate: true);
                }
            }

            m_iteratingAntennas = false;
        }
        // Load of campaign mission
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);

            // This session component is irrelevant for clients
            if(MyMultiplayer.Static != null && !MyMultiplayer.Static.IsServer)
                return;

            // Do nothing for empty object builder
            var ob = sessionComponent as MyObjectBuilder_CampaignSessionComponent;
            if (ob == null || string.IsNullOrEmpty(ob.CampaignName))
                return;

            // Restore the SM for valid OB data
            CampaignLevelOutcome = ob.CurrentOutcome;
            MyCampaignManager.Static.SwitchCampaign(ob.CampaignName, ob.IsVanilla, ob.Mod.PublishedFileId != 0);
            LoadCampaignStateMachine(ob.ActiveState);
        }
        public override void Init(MyObjectBuilder_SessionComponent sessionComponent)
        {
            base.Init(sessionComponent);
            MyObjectBuilder_WorldGenerator builder = (MyObjectBuilder_WorldGenerator)sessionComponent;
            if (Sync.IsServer == false)
            {
                m_markedAreas = builder.MarkedAreas;
            }
            m_existingObjectsSeeds = builder.ExistingObjectsSeeds;
            if(m_markedAreas == null)
            {
                m_markedAreas = new HashSet<EmptyArea>();
            }

            foreach(var area in m_markedAreas)
            {
                MarkModules(area.Position, area.Radius);
            }
        }
        //variables for scripts:
        public override void Init(MyObjectBuilder_SessionComponent sessionComponentBuilder)
        {
            base.Init(sessionComponentBuilder);

            var ob = (MyObjectBuilder_ScriptManager)sessionComponentBuilder;
            MyAPIUtilities.Static.Variables = ob.variables.Dictionary;
        }