public void UpdateSelectedAvatarModel() { //MogoMessageBox.ShowLoading(); MogoGlobleUIManager.Instance.ShowWaitingTip(true); var avatarInfo = MogoWorld.theAccount.GetAvatarInfo(m_selectedCharacterId); NewLoginUIViewManager.Instance.SetCharacterGridDown(m_selectedCharacterId); if (avatarInfo != null && avatarInfo.Vocation != 0) { LoadChooseCharacter(avatarInfo.Vocation, (avatar) => { //if (m_lastSelectedCharacter == avatar) // return; if (m_lastSelectedCharacter != null) { m_lastSelectedCharacter.Hide(); } avatar.RemoveAll(); var list = new List <int>(); if (avatarInfo.Weapon != 0) { list.Add(avatarInfo.Weapon); } if (avatarInfo.Cuirass != 0) { list.Add(avatarInfo.Cuirass); } if (avatarInfo.Shoes != 0) { list.Add(avatarInfo.Shoes); } if (avatarInfo.Armguard != 0) { list.Add(avatarInfo.Armguard); } avatar.Equip(list, () => { //MogoMessageBox.HideLoading(); MogoGlobleUIManager.Instance.ShowWaitingTip(false); avatar.Show(); }); m_lastSelectedCharacter = avatar; }); } }
private void CreateCharacterModel(AvatarModelData ai, int vocation, CharacterInfoData ci, Action loaded) { if (m_avatarList.ContainsKey(vocation) && loaded != null) { if (m_avatarList[vocation].actorParent != null) { loaded(); return; } if (m_avatarList[vocation].gameObject != null) { AssetCacheMgr.ReleaseInstance(m_avatarList[vocation].gameObject); } } AssetCacheMgr.GetInstanceAutoRelease(ai.prefabName, (prefab, id, go) => { var ety = new EtyAvatar(); ety.vocation = vocation; ety.equipList = ci.EquipList; ety.weapon = ci.Weapon; ety.CreatePosition = ci.Location; var avatar = (go as GameObject); ety.gameObject = avatar; avatar.name = vocation.ToString(); var cc = avatar.GetComponent <Collider>() as CharacterController; cc.radius = 0.5f; ety.animator = avatar.GetComponent <Animator>(); ety.animator.applyRootMotion = false; ety.PlayerShader = PlayerShader; ety.FakeLightShader = FakeLightShader; //MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1); if (vocation == 1) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, -0.4f, 0.01f, -0.5f); } else if (vocation == 2) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if (vocation == 3) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if (vocation == 4) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if (vocation == 3 || vocation == 4) { // �����ڴ� AssetCacheMgr.GetInstanceAutoRelease("fx_jqqd.prefab", (prefabb, idd, goo) => { GameObject goFX = (GameObject)goo; goFX.transform.parent = avatar.transform; goFX.transform.localScale = Vector3.one; if (vocation == 3) { goFX.transform.localPosition = new Vector3(0, 2.2f, 0); } else { goFX.transform.localPosition = new Vector3(0, 2f, 0); } }); } #region ���� if (m_Animators.ContainsKey(vocation)) { m_Animators[vocation] = avatar.GetComponent <Animator>(); } else { m_Animators.Add(vocation, avatar.GetComponent <Animator>()); } #endregion avatar.transform.position = ci.Location; avatar.transform.localScale = Vector3.one; ety.sfxHandler = avatar.AddComponent <SfxHandler>(); #region ��Ч �� ��Чɾ��������ʱ�� if (!m_sfxHandlers.ContainsKey(vocation)) { SfxHandler handler = avatar.GetComponent <SfxHandler>(); if (handler == null) { handler = avatar.AddComponent <SfxHandler>(); } m_sfxHandlers.Add(vocation, handler); uint timer = uint.MaxValue; m_fxTimes.Add(vocation, timer); } #endregion ety.actorParent = avatar.AddComponent <ActorParent>(); ety.actorParent.SetNakedEquid(ai.nakedEquipList); ety.InitEquip(); if (m_avatarList.ContainsKey(vocation)) { m_avatarList[vocation].sfxHandler.RemoveAllFX(); AssetCacheMgr.ReleaseInstance(m_avatarList[vocation].gameObject); } ety.Hide(); m_avatarList[vocation] = ety; AssetCacheMgr.GetResource(ci.controller, (obj) => { var controller = obj as RuntimeAnimatorController; if (ety.animator) { ety.animator.runtimeAnimatorController = controller; } if (loaded != null) { loaded(); } }); }); }
private void CreateCharacterModel(AvatarModelData ai, int vocation, CharacterInfoData ci, Action loaded) { if (m_avatarList.ContainsKey(vocation) && loaded != null) { if (m_avatarList[vocation].actorParent != null) { loaded(); return; } if (m_avatarList[vocation].gameObject != null) { AssetCacheMgr.ReleaseInstance(m_avatarList[vocation].gameObject); } } AssetCacheMgr.GetInstanceAutoRelease(ai.prefabName, (prefab, id, go) => { var ety = new EtyAvatar(); ety.vocation = vocation; ety.equipList = ci.EquipList; ety.weapon = ci.Weapon; ety.CreatePosition = ci.Location; var avatar = (go as GameObject); ety.gameObject = avatar; avatar.name = vocation.ToString(); var cc = avatar.collider as CharacterController; cc.radius = 0.5f; ety.animator = avatar.GetComponent<Animator>(); ety.animator.applyRootMotion = false; ety.PlayerShader = PlayerShader; ety.FakeLightShader = FakeLightShader; //MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1); if (vocation == 1) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, -0.4f, 0.01f, -0.5f); } else if (vocation == 2) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if(vocation == 3) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if (vocation == 4) { MogoFXManager.Instance.AttachShadow(avatar, string.Concat(avatar.name, "_Shadow"), 0, 0, 0, 1.5f, 1.5f, 1, 0, 0.01f, 0.2f); } else if (vocation == 3 || vocation == 4) { // 敬请期待 AssetCacheMgr.GetInstanceAutoRelease("fx_jqqd.prefab", (prefabb, idd, goo) => { GameObject goFX = (GameObject)goo; goFX.transform.parent = avatar.transform; goFX.transform.localScale = Vector3.one; if (vocation == 3) { goFX.transform.localPosition = new Vector3(0, 2.2f, 0); } else { goFX.transform.localPosition = new Vector3(0, 2f, 0); } }); } #region 动作 if (m_Animators.ContainsKey(vocation)) m_Animators[vocation] = avatar.GetComponent<Animator>(); else m_Animators.Add(vocation, avatar.GetComponent<Animator>()); #endregion avatar.transform.position = ci.Location; avatar.transform.localScale = Vector3.one; ety.sfxHandler = avatar.AddComponent<SfxHandler>(); #region 特效 和 特效删除函数定时器 if (!m_sfxHandlers.ContainsKey(vocation)) { SfxHandler handler = avatar.GetComponent<SfxHandler>(); if (handler == null) handler = avatar.AddComponent<SfxHandler>(); m_sfxHandlers.Add(vocation, handler); uint timer = uint.MaxValue; m_fxTimes.Add(vocation, timer); } #endregion ety.actorParent = avatar.AddComponent<ActorParent>(); ety.actorParent.SetNakedEquid(ai.nakedEquipList); ety.InitEquip(); if (m_avatarList.ContainsKey(vocation)) { m_avatarList[vocation].sfxHandler.RemoveAllFX(); AssetCacheMgr.ReleaseInstance(m_avatarList[vocation].gameObject); } ety.Hide(); m_avatarList[vocation] = ety; AssetCacheMgr.GetResource(ci.controller, (obj) => { var controller = obj as RuntimeAnimatorController; if (ety.animator) ety.animator.runtimeAnimatorController = controller; if (loaded != null) loaded(); }); }); }