public static bool TryCloneObject(string key, out GameObject clonedObject) { NpcCache.CachingItem cachingItem; if (NpcCache.Enabled && NpcCache.mCachedItems.TryGetValue(key, out cachingItem) && cachingItem.model != null) { cachingItem.refCount++; clonedObject = (UnityEngine.Object.Instantiate(cachingItem.model) as GameObject); NpcCache.RegisterAutoRemover(key, clonedObject); return(true); } clonedObject = null; return(false); }
public override void FinishDownloadBase(ref IDownloadedItem wItem) { base.downloadCounter--; if (NpcCache.Enabled) { this.m_kBaseObject = NpcCache.AddAndClone(this.GenerateKey_(), wItem); } else { GameObject original = wItem.mainAsset as GameObject; this.m_kBaseObject = (UnityEngine.Object.Instantiate(original) as GameObject); } this.FinishDownloadModelSetting(); base.FinishDownloadBase(ref wItem); }
private void ClearGameInfo(bool bClear) { EventTriggerMapManager.Instance.Claer(); this.m_nLatestPersonID = 0L; this.m_kInputManager.Initialize(); TsAudioManager.Instance.InitAudioListenerSwitcher(); if (bClear && NkUserInventory.instance != null) { NkUserInventory.instance.Clear(); } NrTSingleton <NkQuestManager> .Instance.ClearCurrentQuest(); NrTSingleton <NkQuestManager> .Instance.ClearCompleteQuest(); NrTSingleton <Nr3DCharSystem> .Instance.Initialize(); NrTSingleton <NkCharManager> .Instance.DeleteAllChar(); NrTSingleton <NkCharManager> .Instance.Init(false); NrTSingleton <NkCharManager> .Instance.m_kCharAccountInfo.Init(); NrTSingleton <NkCharManager> .Instance.CharacterListSetComplete = false; if (bClear) { NrTSingleton <NewGuildManager> .Instance.Clear(); } NrTSingleton <GameGuideManager> .Instance.InitGameGuide(); NrTSingleton <GameGuideManager> .Instance.InitReserveGuide(); NrTSingleton <FormsManager> .Instance.DeleteAll(); NrTSingleton <NkClientLogic> .Instance.Init(); NrTSingleton <NrGlobalReference> .Instance.ReloginInit(); TsImmortal.bundleService.Init(); NrTSingleton <NkEffectManager> .Instance.ClearEffectCache(); NpcCache.Clear(); NrTSingleton <ItemMallItemManager> .Instance.ClearItemMallBuyCount(); NrTSingleton <ChatManager> .Instance.InitChatMsg(); NrTSingleton <UIManager> .Instance.ClearInputQueue(); }
public void SwitchModelMesh() { if (null == this.m_kRootGameObj) { Debug.LogError("Nr3DCharNonePart root go is null at Request! " + this.m_kRootGameObj.name); } else { string text = this.GenerateKey_(); if (!NpcCache.TryCloneObject(text, out this.m_kBaseObject)) { base.bStartDownloadBundle = true; base.downloadCounter++; NrTSingleton <NkBundleCallBack> .Instance.RequestBundleRuntime(text, NkBundleCallBack.NPCBundleStackName, ItemType.SKIN_BONE, 0, this.m_szCharCode.ToLower(), NkBundleParam.eBundleType.BUNDLE_CHAR_NONEPART, base.GetID().ToString(), true); } else { this.FinishDownloadModelSetting(); } } }
public static GameObject AddAndClone(string key, IDownloadedItem item) { if (!NpcCache.Enabled) { GameObject original = item.mainAsset as GameObject; return(UnityEngine.Object.Instantiate(original) as GameObject); } if (string.IsNullOrEmpty(key)) { int startIndex = item.assetPath.IndexOf('.'); key = item.assetPath.Remove(startIndex); } GameObject gameObject; if (NpcCache.TryCloneObject(key, out gameObject)) { return(gameObject); } if (NpcCache.mRoot == null) { NpcCache.mRoot = GameObject.Find("@Internal NPC"); if (NpcCache.mRoot == null) { NpcCache.mRoot = new GameObject("@Internal NPC"); NpcCache.mRoot.SetActive(false); UnityEngine.Object.DontDestroyOnLoad(NpcCache.mRoot); } } gameObject = (UnityEngine.Object.Instantiate(item.mainAsset) as GameObject); gameObject.name = key; NpcCache.mCachedItems[key] = new NpcCache.CachingItem(gameObject); gameObject.transform.parent = NpcCache.mRoot.transform; GameObject gameObject2 = UnityEngine.Object.Instantiate(gameObject) as GameObject; NpcCache.RegisterAutoRemover(key, gameObject2); return(gameObject2); }
// 1 Gremlin static string Print(NpcCache model) { string formattedId = model.Id.ToString().PadRight(5); return($"{formattedId}\t{model.Name}"); }