예제 #1
0
        private static void AddCustomPrefabsToZNetSceneDictionary(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            foreach (var customItem in CustomItems)
            {
                self.m_namedPrefabs.Add(customItem.ItemPrefab.name.GetStableHashCode(), customItem.ItemPrefab);
            }
        }
예제 #2
0
        // Detours ZNetScene.Awake
        private void ZNetSceneAwake(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            ModifyItems();

            Prefabs.ModifyExistingPieces(self);
            if (AllPrefabs.Value)
            {
                Prefabs.RegisterPrefabs(self);
            }

            orig(self);
        }
예제 #3
0
        /// <summary>
        ///     Register all custom prefabs to m_prefabs/m_namedPrefabs in <see cref="ZNetScene" />.
        /// </summary>
        private void RegisterAllToZNetScene(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            Logger.LogInfo($"---- Adding custom prefabs to {self} ----");

            if (self && Instance.Prefabs.Count > 0)
            {
                foreach (var prefab in Instance.Prefabs)
                {
                    RegisterToZNetScene(prefab.Value);
                }
            }
        }
예제 #4
0
        private void RegisterAllToZNetScene(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            Logger.LogInfo("---- Registering custom zone data ----");

            // Call event handlers to load prefabs
            OnBeforeZoneLoad?.Invoke(null, EventArgs.Empty);

            foreach (var veg in Vegetation)
            {
                ZoneSystem.instance.m_vegetation.Add(veg);
                Logger.LogInfo("Added vegetation: " + veg.m_name);
            }
        }
예제 #5
0
        private void RegisterKnownBlueprints(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            // Client only
            if (!ZNet.instance.IsServerInstance())
            {
                Jotunn.Logger.LogMessage("Registering known blueprints");

                // Create prefabs for all known blueprints
                foreach (var bp in Instance.m_blueprints.Values)
                {
                    bp.CreatePrefab();
                }
            }
        }
예제 #6
0
        private static void AddCustomPrefabsToZNetSceneDictionary(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            if (self)
            {
                foreach (var weakReference in NetworkedModdedPrefabs)
                {
                    if (weakReference.IsAlive)
                    {
                        var prefab = (GameObject)weakReference.Target;
                        if (prefab)
                        {
                            self.AddPrefab(prefab);
                        }
                    }
                }
            }
        }
예제 #7
0
        private void InvokeOnPrefabsRegistered(On.ZNetScene.orig_Awake orig, ZNetScene self)
        {
            orig(self);

            OnPrefabsRegistered?.SafeInvoke();
        }
예제 #8
0
 private void ZNetSceneAwake(On.ZNetScene.orig_Awake orig, ZNetScene self)
 {
     orig(self);
     Ruins.RegisterRuins();
 }