Ejemplo n.º 1
0
        /// <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;
        }
Ejemplo n.º 2
0
 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);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 5
0
        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);
            }
        }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        public GetEffects()
        {
            var effects = EffectHelper.GetEffectInfosDictionary();
            var effectDefaultModifiers = EffectHelper.GetEffectDefaultModifiersDictionary();

            _effectInfos = new Dictionary <string, object>
            {
                { "effects", effects },
                { "effectDefaultModifiers", effectDefaultModifiers }
            };
        }
Ejemplo n.º 9
0
 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);
 }
Ejemplo n.º 10
0
        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();
            }
        }
Ejemplo n.º 11
0
        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);
            }
        }
Ejemplo n.º 12
0
        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;
        }
Ejemplo n.º 13
0
        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;
        }
Ejemplo n.º 14
0
        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);
        }
Ejemplo n.º 15
0
        /// <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;
        }
Ejemplo n.º 16
0
        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;
        }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
        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;
        }
Ejemplo n.º 19
0
        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");
            }
        }
Ejemplo n.º 20
0
    /// <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);
        }
    }
Ejemplo n.º 21
0
        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);
        }
Ejemplo n.º 22
0
        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);
        }
Ejemplo n.º 23
0
    /// <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;
        }
    }
Ejemplo n.º 24
0
        // 战场初始化数据
        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();
        }
Ejemplo n.º 25
0
        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);
        }
Ejemplo n.º 26
0
    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);
        //}
    }
Ejemplo n.º 27
0
 public override bool LaunchConfiguration()
 {
     return(EffectHelper.LaunchSimpleEffectDialog(this, AddinManager.CurrentLocalizer));
 }
Ejemplo n.º 28
0
        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);
        }
Ejemplo n.º 29
0
 public override bool LaunchConfiguration()
 {
     return(EffectHelper.LaunchSimpleEffectDialog(this));
 }
Ejemplo n.º 30
0
        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);
        }