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); } }
// 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); }
/// <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); } } }
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); } }
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(); } } }
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); } } } } }
private void InvokeOnPrefabsRegistered(On.ZNetScene.orig_Awake orig, ZNetScene self) { orig(self); OnPrefabsRegistered?.SafeInvoke(); }
private void ZNetSceneAwake(On.ZNetScene.orig_Awake orig, ZNetScene self) { orig(self); Ruins.RegisterRuins(); }