/// <summary> /// 结束PK /// </summary> /// <param name="uidTarget">PK目标</param> /// <param name="nPKResult">PK结果</param> public void EndPK(int uidTarget, int nPKResult, int bForceEnd) { SkillCtrl sc = EntityFactory.MainHero.GetComponent <SkillCtrl>(); if (sc != null) { sc.doingPKSelection = false; sc.enablePKSelection = true; } PKResult result = new PKResult(); result.nResult = nPKResult; result.bForceEnd = bForceEnd == 1? true: false; UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_PKINFO_ENDPK, result); UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_WAR_FLOATFONT_UNLOAD, null); UTopNameManager.Instance.SetPKMode(EntityFactory.MainHeroID, false); UTopNameManager.Instance.SetPKMode(uidTarget, false); UTopNameManager.PkTargetID = -1; UBloodManager.Instance.PkTargetID = -1; UBloodManager.Instance.DestroyALL(); EffectHelper.UnloadPreLight(LightType.ActorSkin, pkTargetSkinID); UnLoadPKRelateSkin(pkTargetSkinID); UnLoadPKRelateSkin(pkSrcSkinID); pkSrcSkinID = 0; pkTargetSkinID = 0; m_bIsPK = false; }
private void printInput_Click(object sender, EventArgs e) { /*if (this.mEffectResource == null) * { * MessageBox.Show("Please open an effect file to print a list of effects it contains."); * return; * }/**/ if (this.mEffectResources != null && this.mEffectResources.Length > 0) { using (SaveFileDialog dialog = new SaveFileDialog()) { dialog.Title = "Print Input Effect Names"; dialog.Filter = "Text File|*.txt"; dialog.AddExtension = true; dialog.OverwritePrompt = true; DialogResult result = dialog.ShowDialog(); if (result == DialogResult.OK) { using (FileStream fileStream = new FileStream(dialog.FileName, FileMode.Create)) { using (StreamWriter writer = new StreamWriter(fileStream, Encoding.ASCII)) { for (int i = 0; i < this.mEffectResources.Length; i++) { EffectHelper.WriteEffectNameList(this.mEffectResources[i], writer); } } } } } } }
private void AW_UtilityProjGhost() { var obj = PrefabsCore.CreatePrefab("PrimaryProjGhost", false); var ghostControl = obj.AddComponent <ProjectileGhostController>(); var skinner = obj.AddComponent <WispSkinnedEffect>(); var sound = obj.AddComponent <StartEndSound>(); sound.startSound = "Play_lemurianBruiser_m1_fly_loop"; sound.endSound = "Stop_lemurianBruiser_m1_fly_loop"; sound.mult = 2; //Play_greater_wisp_active_loop //Stop_greater_wisp_active_loop if (!this.AW_lowPerf.Value) { var light = EffectHelper.AddLight(obj, skinner, true, 8f, 4f); } //var trail1 = EffectHelper.AddTrail( obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false ); //var trail2 = EffectHelper.AddTrail( obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false ); //var rotator = EffectHelper.AddRotator( obj, new Vector3( 0f, 0f, 360f ), Vector3.forward, 1f, trail1.transform, trail2.transform ); var flame = EffectHelper.AddFire(obj, skinner, MaterialType.Flames, 10f, 0.3f, 5f, 1f, 0f, true); AW_utilityProjGhost = obj; }
private void RW_CreateNewUtilityIndicator() { var obj = new GameObject().ClonePrefab("UtilityAim", false); obj.layer = LayerIndex.entityPrecise.intVal; var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = true; effComp.soundName = ""; EffectHelper.AddSound(obj, "Play_lemurianBruiser_m2_loop", "Stop_lemurianBruiser_m2_loop", 0.0f, 10.0f); var skin = obj.AddComponent <WispSkinnedEffect>(); var vfxAtrib = obj.AddComponent <VFXAttributes>(); vfxAtrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAtrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var destroyOnEnd = obj.AddComponent <DestroyOnEffectTimer>(); destroyOnEnd.effectComp = effComp; EffectHelper.AddMeshIndicator(obj, skin, MaterialType.AreaIndicator, MeshIndex.Sphere, false); EffectHelper.AddMeshIndicator(obj, skin, MaterialType.AreaIndicator2, MeshIndex.Sphere, false); //var tornado = EffectHelper.AddFlameTornado( obj, skin, MaterialType.FlameTornado, 1f, 10f, 7.5f, 7.5f ); //var tornadoMain = tornado.main; //tornadoMain.startSizeX = 7.5f; //tornadoMain.startSizeY = 7.5f; //var tornadoSOL = tornado.sizeOverLifetime; //tornadoSOL.enabled = true; //tornadoSOL.separateAxes = true; //tornadoSOL.x = new ParticleSystem.MinMaxCurve( 1f, AnimationCurve.Linear( 0f, 1f, 1f, 0f ) ); //tornadoSOL.y = new ParticleSystem.MinMaxCurve( 1f, AnimationCurve.Linear( 0f, 1f, 1f, 0f ) ); //tornadoSOL.z = new ParticleSystem.MinMaxCurve( 1f, AnimationCurve.EaseInOut( 0f, 0.9f, 1f, 1f ) ); var fire = EffectHelper.AddFire(obj, skin, MaterialType.Flames, 3f, 1.5f, 30f, 0f, -1f, true); var fireMain = fire.main; fireMain.scalingMode = ParticleSystemScalingMode.Local; //var col = obj.AddComponent<SphereCollider>(); //col.isTrigger = true; //col.center = Vector3.zero; //col.radius = 0.5f; //col.material = null; //var slow = obj.AddComponent<SlowDownProjectiles>(); //slow.maxVelocityMagnitude = 20f; //slow.antiGravity = 0f; utilityIndicator = obj; RegisterEffect(utilityIndicator); }
public override void drawTooltip(SpriteBatch spriteBatch, ref int x, ref int y, SpriteFont font, float alpha, StringBuilder overrideText) { base.drawTooltip(spriteBatch, ref x, ref y, font, alpha, overrideText); if (Effect != null) { EffectHelper.drawTooltip(Effect, spriteBatch, ref x, ref y, font, alpha, overrideText); } }
private void AW_UtilityChargeEffect() { var obj = PrefabsCore.CreatePrefab("UtilityChargeEffect", false); var skinner = obj.AddComponent <WispSkinnedEffect>(); if (!this.AW_lowPerf.Value) { var light = EffectHelper.AddLight(obj, skinner, true, 4f, 2f); } var chargeLines = EffectHelper.AddChargeSphereLines(obj, skinner, MaterialType.Tracer, 0.75f, 0.15f, 0.05f, 30f); var arcCircle = EffectHelper.AddArcaneCircle(obj, skinner, MaterialType.ArcaneCircle, 5f, 2f); var arcMain = arcCircle.main; arcMain.simulationSpace = ParticleSystemSimulationSpace.Local; arcMain.emitterVelocityMode = ParticleSystemEmitterVelocityMode.Transform; var arcEmis = arcCircle.emission; arcEmis.burstCount = 1; arcEmis.SetBurst(0, new ParticleSystem.Burst(0f, 1f, 1, 0.01f)); var arcShape = arcCircle.shape; arcShape.enabled = false; var arcCOL = arcCircle.colorOverLifetime; arcCOL.enabled = true; arcCOL.color = new ParticleSystem.MinMaxGradient(new Gradient { mode = GradientMode.Blend, alphaKeys = new[] { new GradientAlphaKey(0f, 0f), new GradientAlphaKey(1f, 1f), }, colorKeys = new[] { new GradientColorKey(Color.white, 0f), new GradientColorKey(Color.white, 0f), }, }); var arcSOL = arcCircle.sizeOverLifetime; arcSOL.enabled = true; arcSOL.separateAxes = false; arcSOL.size = new ParticleSystem.MinMaxCurve(1f, AnimationCurve.Linear(0f, 1f, 1f, 0f)); var arcROL = arcCircle.rotationOverLifetime; arcROL.enabled = true; arcROL.z = 2f; AW_utilityChargeEffect = obj; }
static int getDescriptionWidth(int __result, Item __instance) { // increase the width so that effect descriptions stay on one line and do not break if (ItemDefinitions.GetEffect(__instance, out IEffect effect)) { return(Math.Max(__result, EffectHelper.getDescriptionWidth(effect))); } return(__result); }
public GetEffects() { var effects = EffectHelper.GetEffectInfosDictionary(); var effectDefaultModifiers = EffectHelper.GetEffectDefaultModifiersDictionary(); _effectInfos = new Dictionary <string, object> { { "effects", effects }, { "effectDefaultModifiers", effectDefaultModifiers } }; }
public override bool LaunchConfiguration() { if (EffectHelper.LaunchSimpleEffectDialog(this)) { Data.PropertyChanged += delegate { //TODO this.defaultRadius = 2; //Math.Min(selection.Width, selection.Height) * 0.5; this.defaultRadius2 = this.defaultRadius * this.defaultRadius; }; return(true); } return(false); }
private void addEffectToolStripMenuItem_Click(object sender, EventArgs e) { PickEffectSimple box = new PickEffectSimple(); if (box.ShowDialog() == DialogResult.OK) { string result = box.Effect; CurrentAbility.Effects.Add(EffectHelper.CreateEmpty(result)); ReloadEffectList(); } }
public override Point getExtraSpaceNeededForTooltipSpecialIcons(SpriteFont font, int minWidth, int horizontalBuffer, int startingHeight, StringBuilder descriptionText, string boldTitleText, int moneyAmountToDisplayAtBottom) { Point p = base.getExtraSpaceNeededForTooltipSpecialIcons(font, minWidth, horizontalBuffer, startingHeight, descriptionText, boldTitleText, moneyAmountToDisplayAtBottom); if (Effect != null) { var newP = EffectHelper.getExtraSpaceNeededForTooltipSpecialIcons(Effect, font, minWidth, horizontalBuffer, startingHeight, descriptionText, boldTitleText, moneyAmountToDisplayAtBottom); newP.X = Math.Max(p.X, newP.X); newP.Y = Math.Max(p.Y, newP.Y); return(newP); } else { return(p); } }
private void RW_CreateNewSpecialBeam() { var obj = new GameObject().ClonePrefab("SpecialBeamEffect", false); var skin = obj.AddComponent <WispSkinnedEffect>(); var end = new GameObject("End").transform; end.parent = obj.transform; end.localPosition = Vector3.zero; end.localScale = Vector3.one; end.localRotation = Quaternion.identity; var beam = EffectHelper.SetupBeam(obj, end, 5f, 2.6f); var beamSparks = beam.AddParticles(EffectHelper.AddSparks(beam.gameObject, skin, MaterialType.Tracer, -10, 0.05f, 1f), true, true); var bsShape = beamSparks.shape; bsShape.enabled = true; bsShape.shapeType = ParticleSystemShapeType.ConeVolume; bsShape.angle = 0f; bsShape.radius = 0.25f; bsShape.length = 1f; bsShape.position = new Vector3(0f, 0f, 0f); var bsMain = beamSparks.main; bsMain.loop = true; bsMain.scalingMode = ParticleSystemScalingMode.Shape; bsMain.simulationSpace = ParticleSystemSimulationSpace.World; bsMain.maxParticles = 10000; bsMain.startSpeed = 0f; var bsNoise = beamSparks.noise; bsNoise.quality = ParticleSystemNoiseQuality.High; bsNoise.scrollSpeed = 10f; var beamLine = beam.AddBeamLine(skin, MaterialType.Beam, 0.25f, 0f, 0); specialBeam = obj; }
private void RW_CreateNewUtilityAim() { var obj = new GameObject().ClonePrefab("UtilityAim", false); var skin = obj.AddComponent <WispSkinnedEffect>(); var end = new GameObject("lineEnd"); end.transform.parent = obj.transform; end.transform.localPosition = Vector3.zero; end.transform.localScale = Vector3.one; end.transform.localRotation = Quaternion.identity; EffectHelper.AddMeshIndicator(end, skin, MaterialType.AreaIndicator, MeshIndex.Sphere, false); EffectHelper.AddMeshIndicator(end, skin, MaterialType.AreaIndicator2, MeshIndex.Sphere, false); utilityAim = obj; }
public ITimedEffect ReadEffect() { ITimedEffect result = EffectHelper.CreateEmpty(reader.ReadString()); result.BaseTime = reader.ReadSingle(); result.DeltaTime = reader.ReadSingle(); result.BaseDuration = reader.ReadSingle(); result.DeltaDuration = reader.ReadSingle(); int paramcount = reader.ReadInt32(); string[] eparams = new string[paramcount]; for (int i = 0; i < paramcount; i++) { eparams[i] = reader.ReadString(); } result.SetParamValues(eparams); return(result); }
/// <summary> /// 开始PK /// </summary> /// <param name="uidTarget">PK目标</param> /// <param name="pkLoc">PK点坐标</param> public void StartPK(int uidTarget, float[] pkLoc) { SkillCtrl sc = EntityFactory.MainHeroView.SkillCtrl; if (sc != null) { sc.doingPKSelection = false; sc.enablePKSelection = false; } PKPosInfo posInfo = new PKPosInfo(); posInfo.pos = pkLoc; UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_PKINFO_STARTPK, posInfo); UISystem.Instance.ShowWnd(WndID.WND_ID_WAR_FLOATFONTFRAME, true); UTopNameManager.Instance.SetPKMode(EntityFactory.MainHeroID, true); UTopNameManager.Instance.SetPKMode(uidTarget, true); UTopNameManager.PkTargetID = uidTarget; U3D_Render.EntityView targetEV = EntityFactory.getEntityViewByID(uidTarget); if (targetEV == null || targetEV.Property == null) { Trace.LogError("pk target ev or pk target ev property null!"); return; } UBloodManager.Instance.PkTargetID = uidTarget; UBloodManager.Instance.CreatBlood(EntityFactory.MainHeroView, (int)GFxCampTpye.CT_Self); UBloodManager.Instance.CreatBlood(targetEV, (int)GFxCampTpye.CT_Enemy); pkTargetSkinID = 0; pkTargetSkinID = targetEV.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN); pkSrcSkinID = 0; pkSrcSkinID = EntityFactory.MainHeroView.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SKIN); EffectHelper.LoadPreLight(LightType.ActorSkin, pkTargetSkinID, CachePriority.PRIORITY_MEDIUM); LoadPKRelateSkin(pkTargetSkinID); LoadPKRelateSkin(pkSrcSkinID); m_bIsPK = true; }
private void AW_PrimaryProjGhost() { var obj = PrefabsCore.CreatePrefab("PrimaryProjGhost", false); var ghostControl = obj.AddComponent <ProjectileGhostController>(); var skinner = obj.AddComponent <WispSkinnedEffect>(); if (!this.AW_lowPerf.Value) { var light = EffectHelper.AddLight(obj, skinner, true, 8f, 4f); } var trail1 = EffectHelper.AddTrail(obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false); var trail2 = EffectHelper.AddTrail(obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false); var rotator = EffectHelper.AddRotator(obj, new Vector3(0f, 0f, 360f), Vector3.forward, 1f, trail1.transform, trail2.transform); var flame = EffectHelper.AddFire(obj, skinner, MaterialType.Flames, 4f, 0.3f, 5f, 1f, 0f, true); AW_primaryProjGhost = obj; }
private void AW_UtilityOrbEffect() { var obj = PrefabsCore.CreatePrefab("LeechOrb", false); var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = true; effComp.soundName = "Play_gravekeeper_attack1_fire"; var skin = obj.AddComponent <WispSkinnedEffect>(); var vfxAtrib = obj.AddComponent <VFXAttributes>(); vfxAtrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAtrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var eventFuncs = obj.AddComponent <EventFunctions>(); var orb = obj.AddComponent <WispOrbEffect>(); orb.startVelocity1 = new Vector3(-10f, 10f, -10f); orb.startVelocity2 = new Vector3(10f, 0f, 10f); orb.endVelocity1 = new Vector3(-4f, 0f, -4f); orb.endVelocity2 = new Vector3(4f, 0f, 10f); orb.movementCurve = AnimationCurve.EaseInOut(0f, 0f, 1f, 1f); orb.faceMovement = true; orb.callArrivalIfTargetIsGone = false; orb.soundString = "Play_treeBot_m1_hit_heal"; var fireParticles = EffectHelper.AddFire(obj, skin, MaterialType.Flames, 2f, 0.3f, 20f, 10f, 0f, true); AW_utilityOrbEffect = obj; RegisterEffect(AW_utilityOrbEffect); }
private void AW_UtilityZoneGhost() { var obj = PrefabsCore.CreatePrefab("PrimaryProjGhost", false); var sound = obj.AddComponent <StartEndSound>(); sound.startSound = "Play_lemurianBruiser_m2_loop"; sound.endSound = "Stop_lemurianBruiser_m2_loop"; sound.mult = 5; //sound.startSound = "Play_magmaWorm_idle_burn_loop"; //sound.endSound = "Stop_magmaWorm_idle_burn_loop"; var ghostControl = obj.AddComponent <ProjectileGhostController>(); var skinner = obj.AddComponent <WispSkinnedEffect>(); var vecScale = obj.AddComponent <EffectVectorScale>(); vecScale.scaleOverTime = true; vecScale.durationFrac = 1f; vecScale.duration = 10f; vecScale.startScale = new Vector3(1f, 1f, 1f); vecScale.endScale = new Vector3(150f, 150f, 150f); vecScale.useEffectComponent = false; //var light = EffectHelper.AddLight( obj, skinner, true, 8f, 4f ); //var trail1 = EffectHelper.AddTrail( obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false ); //var trail2 = EffectHelper.AddTrail( obj, skinner, MaterialType.Tracer, 0.5f, 1f, 0f, 0.5f, false ); //var rotator = EffectHelper.AddRotator( obj, new Vector3( 0f, 0f, 360f ), Vector3.forward, 1f, trail1.transform, trail2.transform ); //var flame = EffectHelper.AddFire( obj, skinner, MaterialType.Flames, 10f, 0.3f, 5f, 1f, 0f, true ); //var tornado = EffectHelper.AddFlameTornado( obj, skinner, MaterialType.FlameTornado, 1f , 10f, 10f, 5f ); var indicator = EffectHelper.AddMeshIndicator(obj, skinner, MaterialType.BossAreaExplosion, MeshIndex.Sphere, false); AW_utilityZoneGhost = obj; }
private void showItemBStringsTSMI_Click(object sender, EventArgs e) { VisualEffectHandleContainer container = this.inputEffectLST.SelectedItem as VisualEffectHandleContainer; if (container != null) { string[] itemBStrings = EffectHelper.GetSurfaceStrings(container.Handle, container.Owner); StringBuilder builder = new StringBuilder(); if (itemBStrings.Length == 0) { builder.Append("No Item B Strings"); } else { for (int i = 0; i < itemBStrings.Length; i++) { builder.AppendLine(itemBStrings[i]); } } MessageBox.Show(builder.ToString(), "Item B Strings"); } }
/// <summary> /// 播放开头动画(最快下一帧开始播放) /// </summary> private void PlayBattleMovie() { LightingEffectManager lem = EntityFactory.EffectGroup.GetComponent <LightingEffectManager>(); if (lem != null) { LightEffectParam param = new LightEffectParam(); param.srcObject = MainHerpObj; param.sourcePos = MainHerpObj.transform.position; param.targetPos = MainHerpObj.transform.position; lem.AddLighting(343, param); //lem.RegisterEffectComplete(343, OnMovieFinished); } LightingEffectManager lem2 = EntityFactory.GloabaleManager; if (lem2 != null) { EffectHelper.Play(ref MainHerpEv, 333, MainHerpEv.ID, 0, MainHerpObj.transform.position); lem2.RegisterEffectStart(333, OnMovieStart); lem2.RegisterEffectComplete(333, OnMovieFinished); } }
private string PromptForEffectName(string originalName) { SimpleStringPrompt prompt = new SimpleStringPrompt("Enter Effect Name", originalName); DialogResult result = DialogResult.Cancel; string effectLC, effectName = originalName; int index; while (result != DialogResult.OK) { result = prompt.ShowDialog(); effectName = EffectHelper.CreateSafeEffectName(prompt.Result, false); effectLC = effectName.ToLowerInvariant(); index = effectLC.Equals(originalName.ToLowerInvariant()) ? 0 : -1; for (int i = 0; i < this.mEffectResources.Length && index < 0; i++) { index = EffectHelper.BinarySearchForEffectHandle(effectLC, this.mEffectResources[i]); } if (index >= 0) { MessageBox.Show(effectName + " already exists. Try a different one.", "Alert"); result = DialogResult.Cancel; } if (result == DialogResult.OK) { foreach (VisualEffectHandleContainer container in this.outputEffectLST.Items) { if (container.Handle.EffectName.ToLowerInvariant().Equals(effectLC)) { MessageBox.Show(effectName + " already exists. Try a different one.", "Alert"); result = DialogResult.Cancel; break; } } } } return(effectName); }
private void RW_CreateNewPrimaryOrbEffect() { var obj = new GameObject().ClonePrefab("PrimaryOrbEffect", false); var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = false; effComp.soundName = ""; var skin = obj.AddComponent <WispSkinnedEffect>(); var vfxAtrib = obj.AddComponent <VFXAttributes>(); vfxAtrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAtrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var rb = obj.AddComponent <Rigidbody>(); rb.useGravity = false; var orbController = obj.AddComponent <WispOrbEffectController>(); orbController.startSound = "Play_wisp_active_loop"; orbController.endSound = "Stop_wisp_active_loop"; orbController.explosionSound = "Play_item_use_fireballDash_explode"; var arcCircle = EffectHelper.AddArcaneCircle(obj, skin, MaterialType.ArcaneCircle, 2f, 0.65f); var arcCircleMain = arcCircle.main; arcCircleMain.duration = 10f; var arcCircleEmis = arcCircle.emission; arcCircleEmis.enabled = true; arcCircleEmis.rateOverDistance = 0.1f; arcCircleEmis.burstCount = 1; arcCircleEmis.SetBurst(0, new ParticleSystem.Burst(0f, 1, 1, 1)); var arcCircleRol = arcCircle.rotationOverLifetime; arcCircleRol.enabled = true; arcCircleRol.z = new ParticleSystem.MinMaxCurve(-3f, 3f); var sparks = EffectHelper.AddSparks(obj, skin, MaterialType.Tracer, -1000, 0.125f, 1f); var sparksEmis = sparks.emission; sparksEmis.rateOverTime = 0f; sparksEmis.rateOverDistance = 1f; var sparksShape = sparks.shape; sparksShape.enabled = true; sparksShape.shapeType = ParticleSystemShapeType.Cone; sparksShape.angle = 0f; sparksShape.radius = 3f; var sparksNoise = sparks.noise; sparksNoise.enabled = true; sparksNoise.quality = ParticleSystemNoiseQuality.High; sparksNoise.scrollSpeed = 1f; sparksNoise.positionAmount = 3f; primaryOrbEffect = obj; RegisterEffect(primaryOrbEffect); }
/// <summary> /// 属性更新后处理 /// </summary> /// <param name="nPropID"></param> /// <param name="nNewValue"></param> /// <param name="nOldValue"></param> private void OnAfterUpdateNumProp(int nPropID, int nNewValue, int nOldValue, int nOtherValue) { switch (nPropID) { case (int)ENTITY_PROPERTY.PROPERTY_SKIN: { if (nNewValue != nOldValue) { if (Master.SkinControl.ChangeSkin(nNewValue, nOtherValue, Master.IsHero? AssetLoadPriority.Priority_Exclusive : AssetLoadPriority.Priority_Normal) == U3D_Render.SkinCtrl.SkinChangedReslut.Succes) //if (Master.SkinControl.ChangeSkin(nNewValue, nOtherValue) == U3D_Render.SkinCtrl.SkinChangedReslut.Succes) { #if ENABLE_YUNYING_MODE if (nOldValue > 0) { EffectHelper.UnloadPreLight(ASpeedGame.Data.Scheme.LightType.ActorSkin, nOldValue); } EffectHelper.LoadPreLight(ASpeedGame.Data.Scheme.LightType.ActorSkin, nNewValue, CachePriority.PRIORITY_VERY_HIGH); #else //主城才需要这个 if (GameLogicAPI.isMainMap(SceneManager.Instance.m_curMapID)) { // 主角切英雄或皮肤时加载下光效 if (Master.IsHero) { if (nOldValue > 0) { EffectHelper.UnloadPreLight(ASpeedGame.Data.Scheme.LightType.ActorSkin, nOldValue); } EffectHelper.LoadPreLight(ASpeedGame.Data.Scheme.LightType.ActorSkin, nNewValue, CachePriority.PRIORITY_VERY_HIGH); } } #endif } } } break; case (int)ENTITY_PROPERTY.PROPERTY_SD: { BaseStateMachine fsm = Master.StateMachine; if (fsm) { fsm.maxRunForwardSpeed = nNewValue / 100.0f; fsm.maxRunSidewaySpeed = nNewValue / 100.0f * GameLogicAPI.getHeroSidewaySpeedFactor(); fsm.maxRunBackwardSpeed = fsm.maxRunForwardSpeed * GameLogicAPI.getHeroBackwardSpeedFactor(); fsm.updateMovingAnimSpeed(); } } break; case (int)ENTITY_PROPERTY.PROPERTY_MASK: { BaseStateMachine fsm = Master.StateMachine; if (fsm) { fsm.ChangeMask(Master); } } break; case (int)ENTITY_PROPERTY.PROPERTY_VOCATION: { if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.Property == this) { foreach (SSchemePersonModelData data in PersonModelConfig.Instance.PersonModelConfigs) { if (data.nHeroID == nNewValue) { OperationType fpsMode = new OperationType(); fpsMode.operationType = data.nOperationType; UISystem.Instance.SendWndMessage(WndMsgID.WND_MSG_COMMON_UPDATE_MAIN_HERO_VOCATION, fpsMode); break; } } } } break; case (int)ENTITY_PROPERTY.PROPERTY_OBSERVER: { if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.Property == this) { if (nNewValue > 0) { StageManager.Instance.CurPermissionState = EStage_PermissionState.ESPS_OB; } else { StageManager.Instance.CurPermissionState = EStage_PermissionState.ESPS_NORMAL; } } } break; default: break; } }
// 战场初始化数据 public void InitLoadingPlayerFrameInfo(IntPtr ptrParam, int nLen) { IntPtrVaArgParseHelper helper = new IntPtrVaArgParseHelper(ptrParam, nLen); cmd_Camp_Count cmdCount = helper.get <cmd_Camp_Count>(); int nMatchType = cmdCount.nMatchType; int nMapId = cmdCount.nMapID; int nSelfCamp = 0; // 自己皮肤列表 List <int> self_hero_skin_list = new List <int>(); // 友方皮肤列表 List <int> friend_hero_skin_list = new List <int>(); // 敌方皮肤列表 List <int> enemy_hero_skin_list = new List <int>(); // XP技能列表 List <int> hero_xp_list = new List <int>(); // 有效玩家数据列表,吃鸡地图只加载右方信息 List <cmd_match_load_scene_playerinfo> player_info_list = new List <cmd_match_load_scene_playerinfo>(); foreach (int nCampCount in cmdCount.vCampCount) { for (int i = 0; i < nCampCount; ++i) { cmd_match_load_scene_playerinfo data = helper.get <cmd_match_load_scene_playerinfo>(); // 有效的英雄ID,有效皮肤ID if (data.nHeroID <= 0 || data.nSkinID <= 0) { continue; } // 自己皮肤 if (data.nSelfInfo == 1) { self_hero_skin_list.Add(data.nSkinID); nSelfCamp = data.nSelfCamp; } // 友方 else if (data.nSelfCamp == data.nCamp) { friend_hero_skin_list.Add(data.nSkinID); } // 敌方 else { enemy_hero_skin_list.Add(data.nSkinID); } // 有效XP if (data.nXPSkillID > 0) { hero_xp_list.Add(data.nXPSkillID); } // 吃鸡模式只加右方,其他模式全加 if (nMatchType == (int)EMMatchType.MatchType_MultiCampMatch) { if (data.nSelfCamp == data.nCamp) { player_info_list.Add(data); } } else { player_info_list.Add(data); } } } // 设置显示数据 m_wndView.SetData(nMatchType, nMapId, nSelfCamp, cmdCount.vCampCount, player_info_list); List <SkinPreLoadInfo> skins = new List <SkinPreLoadInfo>(); List <int> self_skins = new List <int>(); List <int> friend_skins = new List <int>(); List <int> enemy_skins = new List <int>(); // 预加载皮肤 foreach (int nSkinID in self_hero_skin_list) { SkinPreLoadInfo info = new SkinPreLoadInfo(); info.skinID = nSkinID; info.nMask |= (int)CachePriority.PRIORITY_VERY_HIGH; List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info); skins.AddRange(relateSkinList); foreach (SkinPreLoadInfo peri in relateSkinList) { self_skins.Add(peri.skinID); } } foreach (int nSkinID in friend_hero_skin_list) { SkinPreLoadInfo info = new SkinPreLoadInfo(); info.skinID = nSkinID; info.nMask |= (int)CachePriority.PRIORITY_HIGH; List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info); skins.AddRange(relateSkinList); foreach (SkinPreLoadInfo peri in relateSkinList) { friend_skins.Add(peri.skinID); } } foreach (int nSkinID in enemy_hero_skin_list) { SkinPreLoadInfo info = new SkinPreLoadInfo(); info.skinID = nSkinID; info.nMask |= (int)CachePriority.PRIORITY_MEDIUM; List <SkinPreLoadInfo> relateSkinList = SkinHelper.PreLoadPlayerSkin(info); skins.AddRange(relateSkinList); foreach (SkinPreLoadInfo peri in relateSkinList) { enemy_skins.Add(peri.skinID); } } SkinHelper.PreLoadMonsterSkin(nMapId); LightingEffectFactory.Instance.AcitvieLoadingSceneQueue(); // 预加载皮肤对应的光效 EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, self_skins, CachePriority.PRIORITY_VERY_HIGH); EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, friend_skins, CachePriority.PRIORITY_HIGH); EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.ActorSkin, enemy_skins, CachePriority.PRIORITY_MEDIUM); // 预加载XP技能对应的光效 EffectHelper.LoadPreLights(nMapId, ASpeedGame.Data.Scheme.LightType.XP, hero_xp_list, CachePriority.PRIORITY_LOW); LightingEffectFactory.Instance.UnAcitvieLoadingSceneQueue(); }
private void AW_SecondaryExplosion() { var obj = PrefabsCore.CreatePrefab("SecondaryExplosionEffect", false); var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = false; effComp.soundName = null; var skin = obj.AddComponent <WispSkinnedEffect>(); var vecScale = obj.AddComponent <EffectVectorScale>(); vecScale.effectComp = effComp; vecScale.applyX = true; vecScale.applyY = false; vecScale.applyZ = true; vecScale.durationFrac = 0f; vecScale.scaleOverTime = false; var vfxAtrib = obj.AddComponent <VFXAttributes>(); vfxAtrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAtrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var timer = obj.AddComponent <DestroyOnTimer>(); timer.duration = 1f; var sounds = obj.AddComponent <EffectSoundPlayer>(); sounds.AddSound(new SoundEvent(0f, "Play_gravekeeper_attack2_shoot", 1f)); var flash1 = EffectHelper.AddFlash(obj, skin, MaterialType.Tracer); var flash1Main = flash1.main; flash1Main.scalingMode = ParticleSystemScalingMode.Local; var pillar = EffectHelper.AddFlamePillar(obj, skin, MaterialType.FlamePillar, 1000f, 3f, 0.75f); if (!this.AW_lowPerf.Value) { var sparks = EffectHelper.AddSparks(obj, skin, MaterialType.Tracer, 5000, 0.15f, 1.2f); var sparkMain = sparks.main; sparkMain.scalingMode = ParticleSystemScalingMode.Shape; sparkMain.maxParticles = 10000; var sparkShape = sparks.shape; sparkShape.enabled = true; sparkShape.shapeType = ParticleSystemShapeType.ConeVolume; sparkShape.angle = 0f; sparkShape.radius = 2f; sparkShape.length = 1000f; sparkShape.rotation = new Vector3(-90f, 0f, 0f); } var flashLines = EffectHelper.AddFlashLines(obj, skin, MaterialType.Tracer, 10, 0.2f); var flashLinesMain = flashLines.main; flashLinesMain.scalingMode = ParticleSystemScalingMode.Shape; var flashLineShape = flashLines.shape; flashLineShape.enabled = true; flashLineShape.shapeType = ParticleSystemShapeType.Cone; flashLineShape.radius = 1f; flashLineShape.length = 5f; flashLineShape.angle = 30f; flashLineShape.rotation = new Vector3(-90f, 0f, 0f); //var explosion = EffectHelper.AddExplosion( obj, skin, MaterialType.Explosion, 20, 0.3f, 5, 5f ); //var explShape = explosion.shape; //explShape.enabled = true; //explShape.shapeType = ParticleSystemShapeType.Hemisphere; //explShape.radius = 0.5f; //explShape.rotation = new Vector3( -90f, 0f, 0f ); if (!this.AW_lowPerf.Value) { var light = EffectHelper.AddLight(obj, skin, true, 20f, 100f); light.transform.localPosition += new Vector3(0f, 3f, 0f); EffectHelper.EditLightOverTime(light, 2f, AnimationCurve.EaseInOut(0f, 1f, 1f, 0f), AnimationCurve.EaseInOut(0f, 1f, 1f, 0f)); } if (!this.AW_lowPerf.Value) { var distortion = EffectHelper.AddDistortion(obj, skin, MaterialType.Distortion, 8f, 0.3f, 0f); } AW_secondaryExplosion = obj; RegisterEffect(AW_secondaryExplosion); }
public void addMoneyEffect(U3D_Render.EntityView dieEv, ulong uMurderID) { if (dieEv == null || dieEv.CampFlag != SPELL.CampFlag.CampFlag_Enemy) { return; } U3D_Render.EntityView mainEv = EntityFactory.getMainPlayer(); if (mainEv == null || mainEv.StateMachine.GetState() == GameLogic.EntityState.Dead) { return; } Vector3 deadLoc = dieEv.gameObject.transform.position; Vector3 heroLoc = mainEv.gameObject.transform.position; if ((ulong)mainEv.ID == uMurderID) { int effectCount = 0; //根据死亡对象类型控制光效数量 //如果是怪物类型 if (dieEv.Type == ENTITY_TYPE.TYPE_MONSTER) { //中立野怪 //if ((int)MONSTER_SUB_TYPE.MONSTER_SUB_TYPE_WILD_MONSTER == dieEv.Flag) effectCount = 3; //小兵和野怪都是3个 } else if (dieEv.Type == ENTITY_TYPE.TYPE_PLAYER_ROLE) { effectCount = 6; //英雄6个 } LightingEffectBehavior eff = EffectHelper.PlayAndReturnEffect(ref mainEv, GameLogicConfigApi.MoneyEffect, mainEv.ID, mainEv.ID, deadLoc, 0, 2); if (eff != null) { LightingEffectBehavior_Area effect = (LightingEffectBehavior_Area)eff; effect.SetEffectCount(effectCount); return; } } //别人杀死就没金币掉落 //int nMonsterDistance = GameLogicConfigApi.MonsterDistance; //int nTowerDistance = GameLogicConfigApi.TowerDistance; //if ((deadLoc - heroLoc).sqrMagnitude > (nMonsterDistance * nMonsterDistance)) // return; //IList<U3D_Render.EntityView> monster_Entities = MapFinderManager.Nearest(deadLoc, /*nTowerDistance*/nMonsterDistance, SPELL.CampFlag.CampFlag_Self); //if (monster_Entities == null) // return; //int nMainID = 0; //float fMinDis = 0.0f; //foreach (U3D_Render.EntityView monsterEv in monster_Entities) //{ // if (HeroDistanceMgr.CheckDistance(dieEv, monsterEv, nMonsterDistance) == false || monsterEv == null) // continue; // if ((int)MONSTER_SUB_TYPE.MONSTER_SUB_TYPE_DEFENSIVE_TOWER == monsterEv.Flag) // { // //return; // } // else if (ENTITY_TYPE.TYPE_PLAYER_ROLE == monsterEv.Type) // { // float fEntityDistance = (deadLoc - monsterEv.gameObject.transform.position).sqrMagnitude; // if (fMinDis == 0 || fEntityDistance < fMinDis) // { // fMinDis = fEntityDistance; // nMainID = monsterEv.ID; // } // } //} //U3D_Render.EntityView view = EntityFactory.getEntityViewByID((int)uMurderID); //if (nMainID == mainEv.ID && (ulong)nMainID != uMurderID && (int)MONSTER_SUB_TYPE.MONSTER_SUB_TYPE_DEFENSIVE_TOWER != view.Flag) //{ // if ((view.InitMaskFlag & (int)ENTITY_MASKFLAG.MASKFLAG_DIE_NO_COMMONLIGHT) != (int)ENTITY_MASKFLAG.MASKFLAG_DIE_NO_COMMONLIGHT) // EffectHelper.Play(ref mainEv, GameLogicConfigApi.MonsterEffect, mainEv.ID, mainEv.ID, monsterLoc); //} }
public override bool LaunchConfiguration() { return(EffectHelper.LaunchSimpleEffectDialog(this, AddinManager.CurrentLocalizer)); }
private void AW_PrimaryExplosionEffect() { var obj = PrefabsCore.CreatePrefab("PrimaryExplosionEffect", false); var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = true; effComp.soundName = "Play_item_use_meteor_impact"; var vfxAttrib = obj.AddComponent <VFXAttributes>(); vfxAttrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAttrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var skinner = obj.AddComponent <WispSkinnedEffect>(); var flash = EffectHelper.AddFlash(obj, skinner, MaterialType.Tracer, 2f); var flashLines = EffectHelper.AddFlashLines(obj, skinner, MaterialType.Tracer, 30, 0.05f, 0.05f, 1f); var flashLineShape = flashLines.shape; flashLineShape.enabled = true; flashLineShape.shapeType = ParticleSystemShapeType.Cone; flashLineShape.radius = 0.01f; flashLineShape.length = 1f; flashLineShape.angle = 60f; flashLineShape.rotation = new Vector3(-90f, 0f, 0f); flashLineShape.radiusThickness = 0.5f; if (!this.AW_lowPerf.Value) { var distortion = EffectHelper.AddDistortion(obj, skinner, MaterialType.DistortionHeavy, 2f, 0.25f, 0f); var distortionEmis = distortion.emission; distortionEmis.enabled = true; distortionEmis.burstCount = 1; distortionEmis.SetBurst(0, new ParticleSystem.Burst(0f, 1f, 1, 0.1f)); var distortionSOL = distortion.sizeOverLifetime; distortionSOL.enabled = true; distortionSOL.size = new ParticleSystem.MinMaxCurve(1f, AnimationCurve.Linear(0f, 0f, 1f, 1f)); } var explosion = EffectHelper.AddExplosion(obj, skinner, MaterialType.Explosion, 15, 0.25f, 5f, 1f); var explMain = explosion.main; explMain.gravityModifier = 0.5f; var explShape = explosion.shape; explShape.enabled = true; explShape.shapeType = ParticleSystemShapeType.Cone; explShape.angle = 60f; explShape.radius = 0.25f; explShape.rotation = new Vector3(-90f, 0f, 0f); if (!this.AW_lowPerf.Value) { var light = EffectHelper.AddLight(obj, skinner, true, 10f, 10f); light.transform.localPosition += new Vector3(0f, 0.5f, 0f); EffectHelper.EditLightOverTime(light, 0.5f, AnimationCurve.EaseInOut(0f, 1f, 1f, 0f), AnimationCurve.EaseInOut(0f, 1f, 1f, 0f)); } AW_primaryExplosionEffect = obj; RegisterEffect(AW_primaryExplosionEffect); }
public override bool LaunchConfiguration() { return(EffectHelper.LaunchSimpleEffectDialog(this)); }
private void AW_SecondaryPredictionEffect() { var obj = PrefabsCore.CreatePrefab("SecondaryPredictionEffect", false); var effComp = obj.AddComponent <EffectComponent>(); effComp.positionAtReferencedTransform = false; effComp.parentToReferencedTransform = false; effComp.applyScale = false; effComp.soundName = "Play_elite_antiHeal_turret_die"; var sound = obj.AddComponent <StartEndSound>(); sound.startSound = "Play_elite_antiHeal_turret_die"; sound.mult = 2; var skinner = obj.AddComponent <WispSkinnedEffect>(); var vecScale = obj.AddComponent <EffectVectorScale>(); vecScale.effectComp = effComp; vecScale.applyX = true; vecScale.applyY = false; vecScale.applyZ = true; vecScale.scaleOverTime = true; vecScale.durationFrac = 0.2f; var vfxAtrib = obj.AddComponent <VFXAttributes>(); vfxAtrib.vfxPriority = VFXAttributes.VFXPriority.Always; vfxAtrib.vfxIntensity = VFXAttributes.VFXIntensity.Low; var timer = obj.AddComponent <DestroyOnEffectTimer>(); timer.effectComp = effComp; var indicator = EffectHelper.AddMeshIndicator(obj, skinner, MaterialType.BossAreaIndicator, MeshIndex.Cylinder, false, false, 0.5f, 1f, true, false, true); indicator.transform.localScale = new Vector3(1f, 1000f, 1f); indicator.transform.localPosition = new Vector3(0f, 995f, 0f); //var indPS = indicator.GetComponent<ParticleSystem>(); //timer.AddLifetimeParticle( indPS ); //var indPSMain = indPS.main; //indPSMain.maxParticles = 100; //var indPSCOL = indPS.colorOverLifetime; //indPSCOL.enabled = false; //indPSCOL.color = new ParticleSystem.MinMaxGradient( new Gradient //{ // mode = GradientMode.Blend, // alphaKeys = new[] // { // new GradientAlphaKey( 0f, 0f ), // new GradientAlphaKey( 1f, 0.1f ), // new GradientAlphaKey( 1f, 1f ), // }, // colorKeys = new[] // { // new GradientColorKey( Color.white, 0f ), // new GradientColorKey( Color.white, 1f ), // }, //} ); AW_secondaryPrediction = obj; RegisterEffect(AW_secondaryPrediction); }