public override void Trigger() { IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); AddBindLinkTargetEffectData data = GetData <AddBindLinkTargetEffectData>(); IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); ActionTarget actionTarget = SelectionTargetUtil.GetActionTarget(m_Context, data.TargetSelection.Value); if (actionTarget == null || actionTarget.TargetType == ActionTargetType.None) { Leyoutech.Utility.DebugUtility.LogWarning("AddBindLinkTargetEffectAction", "AddBindLinkTargetEffectAction::Trigger->target not found"); return; } List <Transform> bindTransforms = null; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1} " + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", property.EntityId(), property.GetItemID())); bindTransforms = new List <Transform>(); bindTransforms.Add(property.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(data.NodeType.ToLaunchPoint(), data.NodeIndex); } foreach (var tran in bindTransforms) { if (actionTarget.TargetType == ActionTargetType.Entity) { if (data.TargetSelection.Value.TargetSecondType == Eternity.FlatBuffer.Enums.TargetSecondType.Entity) { EffectActionUtil.CreateEffect(data.Address, tran, property.IsMain(), actionTarget.TargetEntity, Vector3.zero); } else { EffectActionUtil.CreateEffect(data.Address, tran, property.IsMain(), actionTarget.TargetEntity, actionTarget.TargetEntityHitPositionOffet); } } else { EffectActionUtil.CreateEffect(data.Address, tran, property.IsMain(), actionTarget.TargetPosition); } } }
/// <summary> /// 获取最远点 /// </summary> /// <param name="context"></param> /// <param name="selectionData"></param> /// <returns></returns> private static void GetFarthestPostionActionTarget(ref ActionTarget actionTarget, IContext context, Vector3 calculateDirection) { IBaseActionProperty baseActionProperty = context.GetObject <IBaseActionProperty>(); if (baseActionProperty.IsMain()) { SkillData skillData = context.GetObject <SkillData>(); MainCameraComponent mainCamComponent = context.GetObject <MainCameraComponent>(); if (mainCamComponent == null) { actionTarget = null; return; } //最远点 Vector3 distantPoint = Vector3.zero; Vector3 playerPosition = baseActionProperty.GetRootTransform().position; //玩家位置 Vector3 CamPosition = mainCamComponent.GetPosition(); //摄像机位置 Vector3 cameDir = calculateDirection; /*mainCamComponent.GetForward()*/ //摄像机方向向量 Vector3 camera2Player = playerPosition - CamPosition; //摄像机到玩家的向量 Vector3 verticalPos = CamPosition + Vector3.Dot(camera2Player, cameDir) * cameDir; //垂线坐标 = 摄像机坐标+ camera2Player在cameDir投影距离 * cameDir向量 Vector3 Play2VerticaN = (verticalPos - playerPosition).normalized; //玩家到垂线点 的单位向量 float Play2VerticaD = Vector3.Distance(verticalPos, playerPosition); //玩家跟垂线点的距离 float MaxDis = skillData.BaseData.Value.MaxDistance; if (MaxDis > Play2VerticaD) { distantPoint = Mathf.Sqrt(MaxDis * MaxDis - Play2VerticaD * Play2VerticaD) * cameDir + verticalPos; //最远点 = 三角函数求得垂线点到最远点向量+ 垂线点坐标 } else { distantPoint = playerPosition + Play2VerticaN * MaxDis;//垂线上找到距离是 MaxDis 的坐标 } actionTarget.TargetType = ActionTargetType.Position; actionTarget.TargetPosition = distantPoint; } else { SkillData skillData = context.GetObject <SkillData>(); Vector3 playerPosition = baseActionProperty.GetRootTransform().position; float d = skillData.BaseData.Value.MaxDistance; Vector3 distantPoint = playerPosition + calculateDirection * d; actionTarget.TargetType = ActionTargetType.Position; actionTarget.TargetPosition = distantPoint; //Leyoutech.Utility.DebugUtility.LogError("第三方最远点方向", string.Format("计算最远点 ---->self = {0} , calculateDirection = {1}, PlayPos = {2} , distantPoint = {3}", // baseActionProperty.EntityId(), // calculateDirection, // playerPosition, // distantPoint // )); } }
public override void Trigger() { IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); if (!property.IsMain()) { return; } //通知准星Size变化 property.SendEvent(ComponentEventName.PostWeaponFire, null); }
public override void Trigger() { PlayPointSoundData data = GetData <PlayPointSoundData>(); IBaseActionProperty baseActionProperty = m_Context.GetObject <IBaseActionProperty>(); if (baseActionProperty.IsMain()) { WwiseUtil.PlaySound(data.MainSoundID, false, data.Position.Value.ToVector3()); } else { WwiseUtil.PlaySound(data.ThirdPartSoundID, false, data.Position.Value.ToVector3()); } }
public override void Trigger() { PlayEntityPositionSoundData data = GetData <PlayEntityPositionSoundData>(); IBaseActionProperty baseActionProperty = m_Context.GetObject <IBaseActionProperty>(); Vector3 entityPosition = baseActionProperty.GetRootTransform().position; if (baseActionProperty.IsMain()) { WwiseUtil.PlaySound(data.MainSoundID, false, entityPosition); } else { WwiseUtil.PlaySound(data.ThirdPartSoundID, false, entityPosition); } }
public override void Trigger() { EmitSelectionData emitSelectionData = m_Context.GetObject <SkillRunningData>().EmitSelectoin; IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); IBaseActionProperty baseActionProperty = m_Context.GetObject <IBaseActionProperty>(); PlayEmitSoundData nodeData = GetData <PlayEmitSoundData>(); EmitData[] emitDatas = emitSelectionData.GetEmits(nodeData.EmitIndex); if (emitDatas != null && emitDatas.Length > 0) { foreach (var emitData in emitDatas) { List <Transform> bindTransforms = null; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1} " + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", baseActionProperty.EntityId(), baseActionProperty.GetItemID())); bindTransforms = new List <Transform>(); bindTransforms.Add(baseActionProperty.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(emitData.NodeType.ToLaunchPoint(), emitData.NodeIndex); } foreach (var tran in bindTransforms) { if (baseActionProperty.IsMain()) { WwiseUtil.PlaySound(nodeData.MainSoundID, false, tran); } else { WwiseUtil.PlaySound(nodeData.ThirdPartSoundID, false, tran); } } } } else { } }
public override void Trigger() { //AccumulationForceReleaseData data = GetData<AccumulationForceReleaseData>(); //蓄力技能强势释放 IBaseActionProperty baseActionProperty = m_Context.GetObject <IBaseActionProperty>(); if (!baseActionProperty.IsMain()) { return; } //通知准星Size变化 baseActionProperty.SendEvent(ComponentEventName.CoerceSkillButtonUp, null); TimelineTrackGroup trackGroup = m_Context.GetObject <TimelineTrackGroup>(); trackGroup.Pause(); }
public override void Trigger() { IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); if (!property.IsMain()) { return; } AffectCDData cdData = GetData <AffectCDData>(); SkillData skillData = m_Context.GetObject <SkillData>(); PlayerSkillProxy skillProxy = GameFacade.Instance.RetrieveProxy(ProxyName.PlayerSkillProxy) as PlayerSkillProxy; for (int i = 0; i < cdData.CdDatasLength; ++i) { CdData data = cdData.CdDatas(i).Value; skillProxy.AddCD(skillData.Id, data.CdType, data.CdTime); } }
public override void Trigger() { PlayEntityBindSoundData data = GetData <PlayEntityBindSoundData>(); IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); IBaseActionProperty baseActionProperty = m_Context.GetObject <IBaseActionProperty>(); List <Transform> bindTransforms = null; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1} " + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", baseActionProperty.EntityId(), baseActionProperty.GetItemID())); bindTransforms = new List <Transform>(); bindTransforms.Add(baseActionProperty.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(data.NodeType.ToLaunchPoint(), data.NodeIndex); } foreach (var tran in bindTransforms) { if (baseActionProperty.IsMain()) { WwiseUtil.PlaySound(data.MainSoundID, false, tran); } else { WwiseUtil.PlaySound(data.ThirdPartSoundID, false, tran); } } }
public override void DoEnter() { EmitSelectionData emitSelectionData = m_Context.GetObject <SkillRunningData>().EmitSelectoin; // IBaseActionProperty property = m_Context.GetObject<IBaseActionProperty>(); // AddEmitLinkTargetDurationEffectData data = GetData<AddEmitLinkTargetDurationEffectData>(); EmitData[] emitDatas = emitSelectionData.GetEmits(aeeData.EmitIndex); if (emitDatas == null || emitDatas.Length == 0) { Leyoutech.Utility.DebugUtility.LogWarning("AddEmitLinkTargetDurationEffectAction", "AddEmitLinkTargetDurationEffectAction::DoEnter->emitData not found"); return; } actionTarget = SelectionTargetUtil.GetActionTarget(m_Context, aeeData.TargetSelection.Value); if (actionTarget == null || actionTarget.TargetType == ActionTargetType.None) { Leyoutech.Utility.DebugUtility.LogWarning("AddEmitLinkTargetDurationEffectAction", "AddEmitLinkTargetDurationEffectAction::DoEnter->target not found"); return; } IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); for (int i = 0; i < emitDatas.Length; ++i) { EmitData emitData = emitDatas[i]; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1}" + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", property.EntityId(), property.GetItemID() )); bindTransforms = new List <Transform>(); bindTransforms.Add(property.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(emitData.NodeType.ToLaunchPoint(), emitData.NodeIndex); } foreach (var tran in bindTransforms) { EffectController effect = null; if (actionTarget.TargetType == ActionTargetType.Entity) { if (aeeData.TargetSelection.Value.TargetSecondType == Eternity.FlatBuffer.Enums.TargetSecondType.Entity) { effect = EffectActionUtil.CreateEffect(aeeData.Address, tran, property.IsMain(), actionTarget.TargetEntity, Vector3.zero); } else { effect = EffectActionUtil.CreateEffect(aeeData.Address, tran, property.IsMain(), actionTarget.TargetEntity, actionTarget.TargetEntityHitPositionOffet); } } else { effect = EffectActionUtil.CreateEffect(aeeData.Address, tran, property.IsMain(), actionTarget.TargetPosition); } if (effect != null) { effects.Add(effect); } } } }
public override void Trigger() { IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); AddEntityPositionEffectData data = GetData <AddEntityPositionEffectData>(); EffectActionUtil.CreateEffect(data.Address, property.GetRootTransform().position, property.IsMain()); }
public override void DoEnter() { EmitSelectionData emitSelectionData = m_Context.GetObject <SkillRunningData>().EmitSelectoin; IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); AddEmitDurationEffectData data = GetData <AddEmitDurationEffectData>(); EmitData[] emitDatas = emitSelectionData.GetEmits(data.EmitIndex); IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); for (int i = 0; emitDatas != null && i < emitDatas.Length; i++) { EmitData emitData = emitDatas[i]; List <Transform> bindTransforms = null; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1} " + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", property.EntityId(), property.GetItemID())); bindTransforms = new List <Transform>(); bindTransforms.Add(property.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(emitData.NodeType.ToLaunchPoint(), emitData.NodeIndex); } foreach (var tran in bindTransforms) { EffectController effect = EffectActionUtil.CreateEffect(data.Address, tran, property.IsMain()); effects.Add(effect); } } }
public override void Trigger() { EmitSelectionData emitSelectionData = m_Context.GetObject <SkillRunningData>().EmitSelectoin; IBaseActionProperty property = m_Context.GetObject <IBaseActionProperty>(); IBindNodeActionProperty bindNodeProperty = m_Context.GetObject <IBindNodeActionProperty>(); AddEmitEffectData data = GetData <AddEmitEffectData>(); bool isChangeEffectToward = false; Vector3 targetPosition = Vector3.zero; if (data.IsTowardToTarget) { isChangeEffectToward = true; ActionTarget actionTarget = SelectionTargetUtil.GetActionTarget(m_Context, data.TargetSelection.Value); if (actionTarget == null || actionTarget.TargetType == ActionTargetType.None) { Leyoutech.Utility.DebugUtility.LogWarning("AddBindLinkTargetEffectAction", "AddBindLinkTargetEffectAction::Trigger->target not found"); isChangeEffectToward = false; } else if (actionTarget.TargetType == ActionTargetType.Position) { targetPosition = actionTarget.TargetPosition; } else if (actionTarget.TargetType == ActionTargetType.Entity) { targetPosition = actionTarget.TargetEntity.position; } } EmitData[] emitDatas = emitSelectionData.GetEmits(data.EmitIndex);//获取发射口 index= -1,表示所有发射口 if (emitDatas != null && emitDatas.Length > 0) { for (int i = 0; emitDatas != null && i < emitDatas.Length; i++) { EmitData emitData = emitDatas[i]; List <Transform> bindTransforms = null; if (bindNodeProperty.GetPresentation() == null) { Leyoutech.Utility.DebugUtility.LogWarning("查找挂点", string.Format("bindNodeProperty.GetPresentation() == null ,Entity = {0} ,ItemId = {1} " + "模型未加载完毕,挂点脚本未被赋值!, 此时挂点作 root 处理", property.EntityId(), property.GetItemID() )); bindTransforms = new List <Transform>(); bindTransforms.Add(property.GetRootTransform()); } else { bindTransforms = bindNodeProperty.GetPresentation().GetBindNode(emitData.NodeType.ToLaunchPoint(), emitData.NodeIndex); } foreach (var tran in bindTransforms) { EffectController effect = EffectActionUtil.CreateEffect(data.Address, tran, property.IsMain()); if (isChangeEffectToward) { Vector3 dir = (targetPosition - tran.position).normalized; effect.CachedTransform.forward = dir; } } } } else { } }