//private void OnTimerUp(int seq) //{ // int layer = transform.parent.gameObject.layer; // //设置layer // transform.parent.SetChildLayer(layer); //} #if UNITY_EDITOR public void PreviewCharacter() { if (m_MoveSetPrefab == null) { return; } string previewName = string.Format("__Preview_{0}", gameObject.name); GameObject go = GameObject.Find(previewName); if (go != null) { GameObject.DestroyImmediate(go); } go = GameObject.Instantiate(m_MoveSetPrefab, gameObject.transform.position, Quaternion.identity) as GameObject; go.name = previewName; AvatarComponent avatar = go.AddComponent <AvatarComponent>(); avatar.PreviewTransformName = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform; avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform; avatar.PreviewCharacter(m_Partitions); InitFX(m_MoveSetPrefab.name); }
public void Awake() { // Create modules. avatarComponent = new AvatarComponent(this); // Avatar component module. avatarAnimation = new AvatarAnimation(this); avatarFx = new AvatarFx(this); // Avatar effect module. }
public VMAvatar(GameObject obj) : base(obj) { PlatformState = new VMTSOAvatarState(); //todo: ts1 switch BodyStrings = Object.Resource.Get <STR>(Object.OBJ.BodyStringID); SetAvatarType(BodyStrings); SkinTone = AppearanceType.Light; if (UseWorld) { WorldUI = new AvatarComponent(); var avatarc = (AvatarComponent)WorldUI; avatarc.Avatar = Avatar; var type = BodyStrings.GetString(0); if (type != "adult" && type != "child") { avatarc.IsPet = true; } } MotiveDecay = new VMAvatarMotiveDecay(); for (int i = 0; i < 16; i++) { MotiveChanges[i] = new VMMotiveChange(); MotiveChanges[i].Motive = (VMMotive)i; } }
private void CreateAvatarComponentDisplayItems(string setName, string componentName, Profile.LockState lockState, float yPosition) { string name = string.Concat(componentName, " ", setName); string messageText = Translator.Translation(string.Concat("item-", lockState).ToLower()).Replace("[ITEM]", Translator.Translation(name)); if (lockState == Profile.LockState.FullVersionOnly) { messageText = Translator.Translation("buy full game to unlock"); } _registerObject( new TextContent(messageText, new Vector2(Unlock_Text_X, yPosition + Unlock_Text_Y_Offset)) { FadeFraction = 0.0f, FadeFractionModifier = LockStateFadeModifier(lockState), Alignment = TextWriter.Alignment.Left, Scale = Unlock_Text_Scale }); AvatarComponent component = AvatarComponentManager.Component(setName, componentName); AvatarContent avatar = new AvatarContent(new Vector2(Unlock_Image_X, yPosition), AvatarComponentManager.DisplaySkeletonForSet(setName)); if (setName != "body") { avatar.AddComponent(AvatarComponentManager.Component("body", "Blue")); } avatar.AddComponent(AvatarComponentManager.Component(setName, componentName)); avatar.SkinSkeleton(); avatar.FadeFraction = 0.0f; avatar.FadeFractionModifier = LockStateFadeModifier(lockState); avatar.Scale = 0.65f; _registerObject(avatar); }
public VMAvatar(GameObject obj) : base(obj) { AvatarState = new VMTSOAvatarState(); //todo: ts1 switch PlatformState = AvatarState; BodyStrings = Object.Resource.Get <STR>(Object.OBJ.BodyStringID); Visitor = false; SetAvatarType(BodyStrings); SkinTone = AppearanceType.Light; if (UseWorld) { WorldUI = new AvatarComponent(); var avatarc = (AvatarComponent)WorldUI; avatarc.Avatar = Avatar; } MotiveDecay = new VMAvatarMotiveDecay(); for (int i = 0; i < 16; i++) { MotiveChanges[i] = new VMMotiveChange(); MotiveChanges[i].Motive = (VMMotive)i; } }
public override void OnLookupUpdate(string dataID, object value) { base.OnLookupUpdate(dataID, value); if (value == null) { return; } Dictionary <string, string> .Enumerator enumerator = m_EquipmentRegisterIDs.GetEnumerator(); while (enumerator.MoveNext()) { KeyValuePair <string, string> current = enumerator.Current; AvatarComponent avatar = GetComponent <AvatarComponent>(); int colorIndex = 0; if (dataID == enumerator.Current.Value) { if (int.TryParse(value.ToString(), out colorIndex)) { if (avatar != null) { avatar.UpdateEquipmentColor(current.Key, colorIndex - 1); } } } } }
private static void FindSelectors() { HandSelector[] selectors = Object.FindObjectsOfType(typeof(HandSelector)) as HandSelector[]; if (selectors.Length == 0) { Debug.LogWarning("Found 0 selectors. Expected 2. Not initializing any."); return; } if (selectors.Length == 1) { Debug.LogWarning("Found 1 selectors. Expected 2."); selectorLeft = selectors[0]; return; } if (selectors.Length > 2) { Debug.LogWarning("Found more than 2 selectors. Expected 2."); } AvatarComponent avatarComponent0 = selectors[0].transform.GetComponentInParent(typeof(AvatarComponent)) as AvatarComponent; AvatarComponent avatarComponent1 = selectors[1].transform.GetComponentInParent(typeof(AvatarComponent)) as AvatarComponent; if (avatarComponent0.thisEntityType != Entity_Type.users_Lhand && avatarComponent1.thisEntityType != Entity_Type.users_Lhand) { Debug.LogWarning("Left hand not found."); return; } if (avatarComponent0.thisEntityType != Entity_Type.users_Rhand && avatarComponent1.thisEntityType != Entity_Type.users_Rhand) { Debug.LogWarning("Right hand not found."); return; } if (avatarComponent0.thisEntityType == Entity_Type.users_Rhand) { selectorLeft = selectors[1]; selectorRight = selectors[0]; return; } selectorLeft = selectors[0]; selectorRight = selectors[1]; }
public VMAvatar() : base(Content.Get().WorldObjects.Get(TEMPLATE_PERSON)) { WorldUI = new AvatarComponent(); Avatar = new AdultSimAvatar(); Avatar.Head = Content.Get().AvatarOutfits.Get("mah108_apallo.oft"); Avatar.Body = Content.Get().AvatarOutfits.Get("mab011_lsexy.oft"); WorldUI.Avatar = Avatar; }
private void UpdateMipMapBias(AvatarComponent avatar, float mipMapBias) { if (m_Avatar != null) { var iter = m_Avatar.Partitions.GetEnumerator(); while (iter.MoveNext()) { iter.Current.Value.UpdateMipMapBias(mipMapBias); } iter.Dispose(); } }
public void InstantiateCharacter(IDictionary partitions) { if (m_MoveSetPrefab != null) { if (m_CharacterInstance == null) { m_CharacterInstance = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject; m_CharacterInstance.name = m_MoveSetPrefab.name; // OnTimerUpInitCharacter(0, partitions); // EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name); } else { EB.Debug.LogPSPoolAsset(string.Format("<color=#00ff00>已经存在这个角色变体<color=#000000>{0}</color>,开启协程重新注册一次身上的所有特效</color>", this.name)); //需要重新将特效列表~注册进入特效缓存池 FXLib fxLib = m_CharacterInstance.GetComponent <FXLib>(); if (fxLib != null) { StartCoroutine(fxLib.TryRegisterAll()); } else { EB.Debug.LogError("为什么~模型对象身上没有这个FXLib特效组件了?"); } m_CharacterInstance.transform.SetParent(transform.parent); m_CharacterInstance.CustomSetActive(true); AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.SyncLoad = SyncLoad; int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { if (partitions != null && partitions.Contains(m_Partitions[i].Name)) { string assetname = partitions[m_Partitions[i].Name].ToString(); avatar.LoadEquipment(m_Partitions[i].Name, assetname); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(assetname); } } } } } InitFX(m_MoveSetPrefab.name); } }
// 设置avatar显示组件 protected void SetAvatarComponent(AvatarComponent avatar) { _avatar = avatar; if (_avatar == null) { RemoveComponent(typeof(AvatarComponent).FullName); } else { AddComponent(_avatar); } }
private IEnumerator ScaleOutLine(AvatarComponent m_Avatar) //by pj { while (m_Avatar != null && m_Avatar.GetToLoadCount() != 0) { yield return(null); } if (m_Character != null) { CartoonHelp.ScaleCartoonOutLine(m_Character, 0.005f); } }
private void OnTimerUpInitAvatar(int seq, object arg) { AvatarComponent avatar = arg as AvatarComponent; if (avatar == null) { return; } avatar.PreviewTransformName = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform; avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform; avatar.SyncLoad = SyncLoad; avatar.InitAvatar(); m_CharacterInstance.transform.SetParent(transform.parent); }
public void InitAnimator() { m_Animator = GetComponent <Animator>(); m_AvatarComponent = GetComponent <AvatarComponent>(); //主要战斗当中~有些模型会是从屏幕外进入屏幕内的情况 m_Animator.cullingMode = AnimatorCullingMode.AlwaysAnimate; // for (int i = 0, count = m_Moves.Length; i < count; ++i) { if (m_Moves[i] != null) { m_Moves[i]._animationEvents = m_Moves[i].CompileEvents(); } } }
private void AddSkeletonForComponent(string skeletonName, AvatarComponent component, bool addBody) { ComponentSetDisplayAvatar avatar = new ComponentSetDisplayAvatar((component == null) ? "none" : component.Name, 0.0f); avatar.CreateBonesFromDataManager(skeletonName); avatar.Name = skeletonName; if (addBody) { avatar.Components.Add(AvatarComponentManager.Component("body", "Blue")); } if (component != null) { avatar.Components.Add(component); } avatar.SkinFromComponents(); avatar.RenderLayer = RenderLayer; AddItem(avatar); }
public VMAvatar(GameObject obj) : base(obj) { Name = "Sim"; WorldUI = new AvatarComponent(); BodyStrings = Object.Resource.Get <STR>(Object.OBJ.BodyStringID); SetAvatarType(BodyStrings); SkinTone = AppearanceType.Light; var avatarc = (AvatarComponent)WorldUI; avatarc.Avatar = Avatar; for (int i = 0; i < 16; i++) { MotiveChanges[i] = new VMMotiveChange(); MotiveChanges[i].Motive = (VMMotive)i; } }
private void OnTimerUpInitCharacter(int seq, object arg) { TimerManager.instance.RemoveTimer(OnTimerUpInitCharacter); IDictionary partitions = arg as IDictionary; if (m_CharacterInstance == null) { return; } AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar == null) { avatar = m_CharacterInstance.AddComponent <AvatarComponent>(); int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { if (partitions != null && partitions.Contains(m_Partitions[i].Name)) { avatar.AddPartition(m_Partitions[i].Name, partitions[m_Partitions[i].Name].ToString()); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(partitions[m_Partitions[i].Name].ToString()); } } else { avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName); } } } } OnTimerUpInitAvatar(0, avatar); }
public void RemoveAvatar(AvatarComponent avatar) { this.Avatars.Remove(avatar); }
public void AddAvatar(AvatarComponent avatar) { this.Avatars.Add(avatar); }
/// <summary> /// Set headShape in current User /// </summary> /// <param name="headShape"></param> public void SetUserHeadShape(AvatarComponent headShape) { userData.user.Avatar.HeadShape = headShape; }
/* * protected void UpdateEquipmentColor(string equipmentType, int equipmentColorIndex) * { * CombinedMesh avatar = GetComponent<CombinedMesh>(); * if(avatar != null) * { * avatar.UpdateEquipmentColor(equipmentType, equipmentColorIndex); * } * } */ protected void UpdateEquipment(string equipmentType, string inventoryDataID) { string equipmentAssetName = !string.IsNullOrEmpty(inventoryDataID) ? GetLookupData <string>(inventoryDataID + ".economy_id") + "-prefab" : "MaleWarrior_Default" + equipmentType; //bool foundAsset = false; string nexteqpname = inventoryDataID; string preeqpname = null; if (preEquipmentDic.ContainsKey(equipmentType)) { preeqpname = preEquipmentDic[equipmentType]; } OnEquipmentChanged(equipmentType, preeqpname, nexteqpname); AvatarComponent avatar = GetComponent <AvatarComponent>(); if (avatar != null) { avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/); } /* * Combatant c = GetComponent<Combatant>(); * if (c != null) { * if (c.Equipment != null) { * for(int i = 0; i < c.Equipment.Length; i++) * { * if(c.Equipment[i].name == equipmentAssetName) * { * foundAsset = true; * * c.Equipment[i].SetActive(true); * * CombinedMesh avatar = GetComponent<CombinedMesh>(); * * avatar.SetToCombineGameObjectByRowName(equipmentType, c.Equipment[i], equipmentDataID); * OnEquipmentChanged(equipmentType,preeqpname,nexteqpname); * * c.Equipment[i].SetActive(false); * } * } * } * } * System.Action<string, GameObject, bool> onAssetLoaded = delegate(string arg1, GameObject arg2, bool arg3) { * if(!arg3) * { * EB.Debug.LogError("Failed to load assset: " + arg1); * return; * } * CombinedMesh avatar = GetComponent<CombinedMesh>(); * avatar.SetToCombineGameObjectByRowName(equipmentType, arg2, equipmentDataID); * OnEquipmentChanged(equipmentType,preeqpname,nexteqpname); * Destroy(arg2); * Resources.UnloadUnusedAssets(); // slow * }; * * if (!foundAsset) { * GM.AssetManager.GetAsset<GameObject> (equipmentAssetName, onAssetLoaded, GameEngine.Instance.gameObject); * } */ }
public void ChangeModel(string modelName, bool firstCreate, float scale = 1) { if (playerController == null) { EB.Debug.LogWarning("playerController is null"); return; } if (playerController.CharacterModel != null && playerController.CharacterModel.ResourcePrefabNameMain.IndexOf(modelName) >= 0) { EB.Debug.LogWarning("ChangeModel: Aready Exist model={0}", modelName); return; } if (_HeadBar != null) { _HeadBar.ClearBars(); _HeadBar = null; } try { CharacterVariant CV = mDMono.transform.GetComponentInChildren <CharacterVariant>(); MoveEditor.FXHelper FH = mDMono.transform.GetComponentInChildren <MoveEditor.FXHelper>(); if (FH != null) { FH.StopAll(true); } if (CV != null && GameEngine.Instance != null) { SetObjLayer(CV.CharacterInstance, GameEngine.Instance.defaultLayer); CV.Recycle(); PoolModel.DestroyModel(CV.gameObject); } if (playerController.SkinnedRigPrefab != null) { PoolModel.DestroyModel(playerController.SkinnedRigPrefab); } /// playerController.Gender = eGender.Male; playerController.CharacterModel = CharacterCatalog.Instance.GetModel(modelName); string prefabName = playerController.CharacterModel.PrefabNameFromGenderMain(playerController.Gender); PoolModel.GetModelAsync(prefabName, mDMono.transform.position, Quaternion.identity, (o, prm) => { var variantObj = o as GameObject; variantObj.transform.SetParent(mDMono.transform); variantObj.transform.localPosition = Vector3.zero; CharacterVariant variant = variantObj.GetComponent <CharacterVariant>(); variant.SyncLoad = true; IDictionary partions = GetPartitionsData(LoginManager.Instance.LocalUserId.Value); variant.InstantiateCharacter(partions); InitDataLookupSet(); playerController.SkinnedRigPrefab = variant.CharacterInstance; playerController.SkinnedRigPrefab.name = prefabName + "_Character"; playerController.SkinnedRigPrefab.tag = "CharacterMesh"; playerController.SkinnedRigPrefab.transform.SetParent(mDMono.transform); playerController.SkinnedRigPrefab.transform.localRotation = Quaternion.identity; playerController.SkinnedRigPrefab.transform.localScale = new Vector3(scale, scale, scale); _combatController = mDMono.GetComponent <CombatController>(); _combatController.Initialize(playerController.SkinnedRigPrefab.transform, playerController.CharacterModel, 1 << LayerMask.NameToLayer("Enemy")); playerController.CharacterComponent = mDMono.GetComponent <CharacterComponent>(); playerController.CharacterComponent.OnSpawn(playerController.CharacterModel, playerController.SkinnedRigPrefab, -1, false); _HeadBar = playerController.SkinnedRigPrefab.GetMonoILRComponent <HeadBars2D>(false); if (_HeadBar == null) { _HeadBar = playerController.SkinnedRigPrefab.AddMonoILRComponent <HeadBars2D>("Hotfix_LT.UI.HeadBars2D"); } if (mDMono.GetComponent <Collider>() != null && mDMono.GetComponent <Collider>() is BoxCollider) { BoxCollider box = mDMono.GetComponent <Collider>() as BoxCollider; box.size = new Vector3(1.5f, 1.5f, 1.5f) + new Vector3(0, playerController.CharacterModel.heightOffset, 0); box.center = new Vector3(0, box.size.y / 2.0f, 0); } _muzzle = GameUtils.SearchHierarchyForBone(playerController.SkinnedRigPrefab.transform, "muzzle"); if (null == _muzzle) { _muzzle = mDMono.transform; } if (firstCreate) { LevelOwnerComponent.AssignLevelOwner(mDMono.gameObject); // this must be called after PlayerManager.RegisterPlayerController(this); } _avatar = playerController.SkinnedRigPrefab.GetComponent <AvatarComponent>(); _shouldSetHideColor = !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice; if (!firstCreate) { PlayerDataLookupSet PDLS = playerController.SkinnedRigPrefab.transform.GetDataLookupILRComponent <PlayerDataLookupSet>(); if (PDLS != null) { PDLS.UserId = playerController.playerUid; } } MoveController mc = playerController.SkinnedRigPrefab.GetComponent <MoveController>(); if (mDMono != null && mDMono.GetComponent <CharacterComponent>().State != eCampaignCharacterState.Idle) { mc.TransitionTo(MoveController.CombatantMoveState.kLocomotion); } }, null); } catch (System.NullReferenceException e) { EB.Debug.LogError(e.ToString()); } }
public void AddComponent(AvatarComponent toAdd) { _skeleton.Components.Add(toAdd); }
/// <summary> /// 实例化角色.将根据身上记录的部件数据组装 /// </summary> public void InstantiateCharacter() { if (m_MoveSetPrefab != null) { if (m_CharacterInstance == null) { // EB.Debug.LogObjectMgrAsset("<color=#ff0000>克隆CharacterVariant变体身上记录的预置体</color>同时身上的部件进行初始化,<color=#00ff00>{0}</color>", m_MoveSetPrefab.name); m_CharacterInstance = GameObject.Instantiate(m_MoveSetPrefab, transform.position, transform.rotation) as GameObject; m_CharacterInstance.name = m_MoveSetPrefab.name; AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar == null) { avatar = m_CharacterInstance.AddComponent <AvatarComponent>(); int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { avatar.AddPartition(m_Partitions[i].Name, m_Partitions[i].AssetName); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName); } } } avatar.PreviewTransformName = string.IsNullOrEmpty(PreviewTransform) ? DefaultPreviewTransform : PreviewTransform; avatar.RootBoneTransformName = string.IsNullOrEmpty(RootBoneTransform) ? DefaultRootBoneTransform : RootBoneTransform; avatar.SyncLoad = SyncLoad; avatar.InitAvatar(); m_CharacterInstance.transform.SetParent(transform.parent); } else { // EB.Debug.LogObjectMgrAsset("<color=#00ffff>已经_克隆过这个预置体</color>:<color=#00ff00>{0}</color>,将其设置可见", m_MoveSetPrefab.name); m_CharacterInstance.transform.SetParent(transform.parent); m_CharacterInstance.CustomSetActive(true); AvatarComponent avatar = m_CharacterInstance.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.SyncLoad = SyncLoad; int partitionCount = m_Partitions.Count; for (int i = 0; i < partitionCount; i++) { avatar.LoadEquipment(m_Partitions[i].Name, m_Partitions[i].AssetName); if (IsPlayer) { PartitionObject.PlayerPartitions.Add(m_Partitions[i].AssetName); } } } } InitFX(m_MoveSetPrefab.name); } else { EB.Debug.LogError("[" + Time.frameCount + "]为什么角色变体没有相应的预置体呢?"); } //TimerManager.instance.AddLateUpdateTimer(70, 1, OnTimerUp); }
/// <summary> /// Muniuma_Model Muniuma+"_Model_" Muniuma 取自Muniuma-Variant /// </summary> /// <param name="equipmentType"></param> /// <param name="inventoryDataID"></param> protected void UpdateEquipment(string equipmentType, string ecomomy_id) { string equipmentAssetName; //卸下逻辑 if (string.IsNullOrEmpty(ecomomy_id)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { //穿上逻辑 if (string.IsNullOrEmpty(ecomomy_id)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { string raceModel = PlayerEquipmentDataLookup.GetModeAtributeName(userid.ToString()); if (string.IsNullOrEmpty(raceModel)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { //string equipmentName = EconemyTemplateManager.GetPartitionName(raceModel, ecomomy_id); TODOX string equipmentName = string.Empty; if (string.IsNullOrEmpty(equipmentName)) { equipmentAssetName = GetDefaltEquipAssetName(userid + "", equipmentType); } else { equipmentAssetName = equipmentName; } } } } //bool foundAsset = false; string nexteqpname = ecomomy_id; string preeqpname = null; if (preEquipmentDic.ContainsKey(equipmentType)) { preeqpname = preEquipmentDic[equipmentType]; } OnEquipmentChanged(equipmentType, preeqpname, nexteqpname); AvatarComponent avatar = mDL.transform.GetComponent <AvatarComponent>(); if (avatar != null) { avatar.LoadEquipment(equipmentType, equipmentAssetName /*, inventoryDataID*/); } long uid = 0; DataLookupsCache.Instance.SearchDataByID <long>("user.uid", out uid); //LoginManager.Instance.LocalUserId.Value if (userid == uid && !PerformanceManager.Instance.CurrentEnvironmentInfo.slowDevice) { GameEngine.Instance.SetHideColorTarget(mDL.gameObject); } }
public ParticleSystem PlayParticle(ParticleEventProperties properties, float time = 0, bool forcePlay = false, bool target = false, Vector3 tarPos = new Vector3(), Animator tarAimator = null, Vector3 tarOrgPos = new Vector3(), Vector3 tarHitPos = new Vector3()) { if (!m_CanPlayParticle) { return(null); } //判断是否被禁止播放特效 if (DisableFX) { return(null); } if (properties._applyOnTargetList) { ParticleEventProperties clone = ParticleEventProperties.Deserialize(properties.Serialize()); PlayParticleOnTargetList(clone); return(null); } //ToDo:改调热更 //if (LTInstanceMapModel.Instance.IsInsatnceViewAction() && properties._flippedParticleReference.Name.Contains("paobu")) if (GameFlowControlManager.IsInView("InstanceView") && properties._flippedParticleReference.Name.Contains("paobu")) { return(null); } //如果是世界boss的封印特效,则必须要在主场景才会出现 //ToDo:改调热更 //if (properties._flippedParticleReference.Name.Contains("fx_f_M00") && (!_animator.name.Contains("-Variant-Normal-M") || LTWorldBossDataManager.Instance.IsOpenWorldBoss())) if (properties._flippedParticleReference.Name.Contains("fx_f_M00") && (!_animator.name.Contains("-Variant-Normal-M") || (bool)GlobalUtils.CallStaticHotfix("Hotfix_LT.UI.LTWorldBossDataManager", "IsOpenWorldBossFromILR"))) { return(null); } //世界boss某个出场特效播放之后需要特殊处理场景状态 if (properties._flippedParticleReference.Name.Equals("fx_m_m001_specialappear03") || properties._flippedParticleReference.Name.Equals("fx_m_m002_specialappear03") || properties._flippedParticleReference.Name.Equals("fx_m_m003_specialappear03")) { if (WorldBossCombatScene.Instance != null) { WorldBossCombatScene.Instance.SetSceneStatus(2);//世界boss播放出场镜头的时候需要特殊设置场景状态 } } if (!string.IsNullOrEmpty(properties._partition)) { //AvatarComponent avatar = _player != null ? _player.GetComponent<AvatarComponent>() : GetComponent<AvatarComponent>(); AvatarComponent avatar = GetComponent <AvatarComponent>(); if (avatar == null) { return(null); } if (!avatar.Partitions.ContainsKey(properties._partition)) { return(null); } /*string fxName = avatar.Partitions[properties._partition].AssetName; * if (properties._particleReference.Valiad && !properties._particleReference.Name.EndsWith(fxName)) * { * return null; * } * if (properties._flippedParticleReference.Valiad && !properties._flippedParticleReference.Name.EndsWith(fxName)) * { * return null; * } * if (!string.IsNullOrEmpty(properties.ParticleName) && !properties.ParticleName.EndsWith(fxName)) * { * return null; * } * if (!string.IsNullOrEmpty(properties.FlippedParticleName) && !properties.FlippedParticleName.EndsWith(fxName)) * { * return null; * }*/ } bool canPlay = true; // TJ: Test conditions that would prevent the particle from playing if (!forcePlay) { // check if there are any particles playing using this event name if (properties._eventName.Length > 0 && _activeParticles.Count(pi => pi._name == properties._eventName) > 0) { ParticleInfo info = _activeParticles.Find(pi => pi._name == properties._eventName); if (!info._stopOnOverride) { canPlay = false; } } // check if we need to wait for attacks to be resolved else if (properties._killIfBlocked || properties._cancelIfMissed || properties._cancelIfHit) { _cachedConditionalParticles.Add(properties); canPlay = false; } } if (!canPlay) { return(null); } ParticleInfo last = null; if (properties._eventName.Length > 0 && _activeParticles.Count(pi => pi._name == properties._eventName) > 0) { foreach (ParticleInfo info in _activeParticles.FindAll(pi => pi._name == properties._eventName)) { if (info._stopOnOverride) { if (!info._particleSystem.loop || last != null) { StopParticle(info._name); } else { last = info; } } } } //EB.Debug.Log("PlayParticle: play {0} _activeParticles = {1}", properties._eventName, _activeParticles.Count); ParticleInfo new_pi = last; ParticleSystem ps = last != null ? last._particleSystem : null; if (new_pi == null) { ps = InstantiateParticle(properties, _flipped, target, tarPos, tarAimator, tarOrgPos, tarHitPos); if (ps == null) { //如果是开场动画,如果还没播放开场动画,还需要隔一段时间播放 //if (CombatUtil.IsHeroStartEffect(MoveUtils.GetParticleName(properties, true))) if (IsHeroStartEffect(MoveUtils.GetParticleName(properties, true))) { mCurrentReplayTime++; if (mCurrentReplayTime >= mReplayTime) { TimerManager.instance.RemoveTimer(mTimer); mCurrentReplayTime = 0; return(null); } mTimer = TimerManager.instance.AddTimer(100, 1, delegate(int seq) { TimerManager.instance.RemoveTimer(mTimer); PlayParticle(properties, time, forcePlay); }); } return(null); } new_pi = RegisterParticle(ps, properties._eventName, properties._interruptable, properties._stopOnExit, properties._stopOnDuration, properties._duration); } new_pi._stopOnOverride = properties._stopOnOverride; new_pi._stopOnEndTurn = properties._stopOnEndTurn; new_pi._stopAfterTurns = properties._stopAfterTurns; new_pi._turns = properties._turns; new_pi.properties = properties; new_pi._activeTurn = Mathf.Max(1, GetCurrentTurn()); if (last == null) { ps.EnableEmission(true); if (time < 0.01f) { ps.Simulate(0.0001f, true, true); } else { ps.Simulate(time, true, true); } ps.gameObject.layer = gameObject.layer; ps.transform.SetChildLayer(gameObject.layer); ps.Play(true); } //EB.Debug.LogPSPoolAsset(string.Format(">>播放指定的特效:<color=#00ff00>{0}</color>", ps.name)); if (PlayParticleAction != null) { PlayParticleAction(ps); } return(ps); }
private void CreatCharacterAsync() { if (character != null || m_Loading) { if (m_VariantName == CharacterVariantTemplate) { EB.Debug.Log("already loaded variant {0}", CharacterVariantTemplate); return; } else { EB.Debug.Log("destroy last instance {0}", m_VariantName); DestroyCharacter(); } } if (string.IsNullOrEmpty(CharacterVariantTemplate)) { return; } m_Loading = true; m_VariantName = CharacterVariantTemplate; var listener = this; string variant_name = m_VariantName; string prefab_path = variantPath; PoolModel.GetModelAsync(prefab_path, Vector3.zero, Quaternion.identity, delegate(Object obj, object param) { GameObject variantObj = obj as GameObject; if (variantObj == null) { EB.Debug.LogError("UIBuddy3DModelCreater.CreatCharacter: No Resources for {0}", prefab_path); return; } if (listener == null) { EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: creator already destroyed"); PoolModel.DestroyModel(variantObj); return; } if (variant_name != m_VariantName) { EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: resource not match"); PoolModel.DestroyModel(variantObj); return; } if (m_Character != null) { EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: character set"); PoolModel.DestroyModel(variantObj); return; } if (!m_Loading) { EB.Debug.LogWarning("UIBuddy3DModelCreater.CreatCharacter: load canceled"); PoolModel.DestroyModel(variantObj); return; } // everything is ok m_Loading = false; variantObj.transform.SetParent(m_CharacterContainer.transform); CharacterVariant variant = variantObj.GetComponent <CharacterVariant>(); if (variant != null) { variant.SyncLoad = true; if (m_Partitions == null) { variant.InstantiateCharacter(); } else { variant.InstantiateCharacter(m_Partitions); } m_Character = variant.CharacterInstance; } if (m_Character != null) { m_Character.transform.SetParent(m_CharacterContainer.transform); m_Character.transform.localScale = modelScale; m_Character.transform.localRotation = Quaternion.identity; m_Character.transform.localPosition = Vector3.zero; SetObjLayer(m_Character, m_CharacterContainer.gameObject.layer); //StartCoroutine(SetParticleScaleMode(m_Character)); m_Avatar = m_Character.GetComponent <AvatarComponent>(); SetNeedToTransitionToIdle(m_Character, true); //StartCoroutine(ScaleOutLine(m_Avatar)); //by pj 异步 开启协程判断 } ShouldSetMipMapBias = true; if (mDMono.gameObject.activeInHierarchy)// && HuDState.IsLTLegionFBHudOpen) { if (m_Coroutine != null) { StopCoroutine(m_Coroutine); m_Coroutine = null; } m_Coroutine = StartCoroutine(SetMaterial()); } }, null); }
private TextureRegion2D GetSprite(AvatarComponent avatar) { return(atlas[avatar.id]); }
public override void OnEnable() { mDL.hasStarted = true; IsLoadFashion = true; _avatar = mDL.transform.GetComponent <AvatarComponent>(); }
public void RemoveAvatar(AvatarComponent avatar) { this.Avatars.Remove(avatar); HeadlineObjects.Remove(avatar); }