コード例 #1
0
    static void ReplaceEffectTime()
    {
        foreach (GameObject gameObject in Selection.gameObjects)
        {
            destroyThisTimed component = gameObject.GetComponent <destroyThisTimed>();
            if (component)
            {
                gameObject.AddComponent <EffectTime>().DestroyTime = component.destroyTime;

                GameObject.DestroyImmediate(component, true);
            }
            else
            {
                float             maxTime  = 0.0f;
                ParticleEmitter[] emitters = gameObject.GetComponentsInChildren <ParticleEmitter>(true);
                foreach (ParticleEmitter emitter in emitters)
                {
                    maxTime = Mathf.Max(maxTime, emitter.maxEnergy);
                }
                EffectTime effectTime = gameObject.GetComponent <EffectTime>();
                if (effectTime && maxTime > 0)
                {
                    effectTime.DestroyTime = maxTime;
                }
            }

            ParticleAnimator[] animators = gameObject.GetComponentsInChildren <ParticleAnimator>(true);
            foreach (ParticleAnimator animator in animators)
            {
                animator.autodestruct = false;
            }
        }
    }
コード例 #2
0
ファイル: Effect.cs プロジェクト: local-minimum/NaNoRenO2018
 protected void SetBaseState(Dictionary <string, string> tmp)
 {
     if (tmp.ContainsKey("effectType"))
     {
         _effectType  = ParseEffectType(tmp["effectType"]);
         __effectType = tmp["effectType"];
     }
     if (tmp.ContainsKey("effectTime"))
     {
         _effectTime  = ParseEffecTime("effectTime");
         __effectTime = tmp["effectTime"];
     }
     if (tmp.ContainsKey("reciever"))
     {
         reciever = tmp["reciever"];
     }
     if (tmp.ContainsKey("delay"))
     {
         try
         {
             delay = float.Parse(tmp["delay"]);
         }
         catch (System.FormatException)
         {
             delay = -1;
         }
     }
 }
コード例 #3
0
        public void Update(EffectTime time)
        {
            foreach (var driver in neoPixelSetup.Drivers)
            {
                foreach (var strip in driver.Strips)
                {
                    colorProvider.Reset();
                    effectTime.DeltaTime = (long)offset;
                    colorProvider.Update(effectTime);

                    float timeStep = 1.0f / strip.Pixels.Length;
                    effectTime.DeltaTime = (long)(timeStep * 1000);
                    for (int i = 0; i < strip.Pixels.Length; i++)
                    {
                        Color c = colorProvider.GetColor(effectTime);
                        strip.Pixels[i] = strip.Pixels[i].Add(Color.FromArgb(
                                                                  (byte)(c.R * Intensity),
                                                                  (byte)(c.G * Intensity),
                                                                  (byte)(c.B * Intensity)));
                        colorProvider.Update(effectTime);
                    }
                }
            }

            colorProvider.Update(time);
            offset += Speed * time.DeltaTime / 1000.0f;
        }
コード例 #4
0
        public Color GetColor(EffectTime time)
        {
            //https://stackoverflow.com/questions/2288498/how-do-i-get-a-rainbow-color-gradient-in-c
            float div        = (Math.Abs(offset % 1) * 6);
            int   ascending  = (int)((div % 1) * 255);
            int   descending = 255 - ascending;

            switch ((int)div)
            {
            case 0:
                return(Color.FromArgb(255, 255, ascending, 0));

            case 1:
                return(Color.FromArgb(255, descending, 255, 0));

            case 2:
                return(Color.FromArgb(255, 0, 255, ascending));

            case 3:
                return(Color.FromArgb(255, 0, descending, 255));

            case 4:
                return(Color.FromArgb(255, ascending, 0, 255));

            default:     // case 5:
                return(Color.FromArgb(255, 255, 0, descending));
            }
        }
コード例 #5
0
        public override void Update(DwarfTime time, Creature creature)
        {
            float hungerChange = creature.Status.Hunger.CurrentValue - LastHunger;

            LastHunger = creature.Status.Hunger.CurrentValue;
            switch (Type)
            {
            case HealType.Food:
                FoodValueUntilHealed -= hungerChange;
                if (FoodValueUntilHealed > 0)
                {
                    DoDamage(DwarfTime.Dt, creature);
                }
                else
                {
                    EffectTime.Reset(0);
                }
                break;

            case HealType.Sleep:
                if (!creature.Status.IsAsleep)
                {
                    DoDamage(DwarfTime.Dt, creature);
                }
                else
                {
                    EffectTime.Reset(0);
                }
                break;

            case HealType.Time:
                DoDamage(DwarfTime.Dt, creature);
                break;
            }

            if (IsContagious)
            {
                SpreadTimer.Update(time);
                if (SpreadTimer.HasTriggered && MathFunctions.RandEvent(LikelihoodOfSpread))
                {
                    foreach (CreatureAI other in creature.Faction.Minions)
                    {
                        if (other == creature.AI)
                        {
                            continue;
                        }
                        if ((other.Position - creature.AI.Position).LengthSquared() > 2)
                        {
                            continue;
                        }
                        other.Creature.AcquireDisease(Name);
                    }
                }
            }
            base.Update(time, creature);
        }
コード例 #6
0
 internal void RunEffect(EffectTime time)
 {
     foreach (var effect in effects)
     {
         if (effect.IsEnabled)
         {
             effect.Update(time);
         }
     }
 }
コード例 #7
0
ファイル: Creature.cs プロジェクト: svifylabs/dwarfcorp
            public virtual void Update(DwarfTime time, Creature creature)
            {
                EffectTime.Update(time);
                ParticleTimer.Update(time);

                if (ParticleTimer.HasTriggered && !string.IsNullOrEmpty(Particles))
                {
                    PlayState.ParticleManager.Trigger(Particles, creature.Physics.Position, Color.White, 1);
                }
            }
コード例 #8
0
    // Update is called once per frame
    void Update()
    {
        switch (effectTime_g)
        {
        case EffectTime.ProccessStart:
            effectTime_g = EffectTime.ProccessNow;
            break;

        case EffectTime.ProccessNow:
            effectTime_g = EffectTime.ProccessEnd;
            break;

        case EffectTime.ProccessEnd:
            this.gameObject.transform.GetComponentInParent <EnemyMoveTest>().CanAttack();
            Destroy(this.gameObject);
            break;
        }
    }
コード例 #9
0
        public void Update(EffectTime time)
        {
            Color color = ColorProvider.GetColor(time);

            foreach (var driver in neoPixelSetup.Drivers)
            {
                foreach (var strip in driver.Strips)
                {
                    for (int i = 0; i < strip.Pixels.Length; i++)
                    {
                        strip.Pixels[i] = strip.Pixels[i].Add(Color.FromArgb(
                                                                  (byte)(color.R * Intensity),
                                                                  (byte)(color.G * Intensity),
                                                                  (byte)(color.B * Intensity)));
                    }
                }
            }
            ColorProvider.Update(time);
        }
コード例 #10
0
        public void Update(EffectTime time)
        {
            foreach (var driver in neoPixelSetup.Drivers)
            {
                foreach (var strip in driver.Strips)
                {
                    Span <Color> effectArea = strip.Pixels.AsSpan(AreaStartPosition, AreaLength);
                    InterpolationEffect.Apply(
                        Interpolator,
                        effectArea,
                        ColorProvider.GetColor(time),
                        offset,
                        Intensity,
                        EffectLength);
                }
            }

            ColorProvider.Update(time);
            offset += Speed * time.DeltaTime / 1000.0f;
        }
コード例 #11
0
 public void Update(EffectTime time)
 {
     foreach (var driver in neoPixelSetup.Drivers)
     {
         foreach (var strip in driver.Strips)
         {
             for (int i = AreaStartPosition; i < strip.Pixels.Length && i < AreaStartPosition + AreaLength; i++)
             {
                 double rawCalculation = strip.Pixels.Length / (double)i;
                 Color  color          = ColorProvider.GetColor(time);
                 Color  c = Color.FromArgb(
                     (byte)(color.R * rawCalculation * Intensity),
                     (byte)(color.G * rawCalculation * Intensity),
                     (byte)(color.B * rawCalculation * Intensity));
                 strip.Pixels[AreaStartPosition + (i + (int)offset) % AreaLength] =
                     strip.Pixels[AreaStartPosition + (i + (int)offset) % AreaLength].Add(c);
             }
         }
     }
     offset += Speed * time.DeltaTime / 1000.0f;
 }
コード例 #12
0
 public void Update(EffectTime time)
 {
     foreach (var driver in neoPixelSetup.Drivers)
     {
         foreach (var strip in driver.Strips)
         {
             for (int i = 0; i < strip.Pixels.Length; i++)
             {
                 var position = coordinates.GetPosition(strip, i);
                 effectTime.DeltaTime = (long)(position.X * Zoom + offset);
                 colorProvider.Reset();
                 colorProvider.Update(effectTime);
                 Color color = colorProvider.GetColor(time);
                 Color c     = Color.FromArgb(
                     (byte)(color.R * Intensity),
                     (byte)(color.G * Intensity),
                     (byte)(color.B * Intensity));
                 strip.Pixels[i] = strip.Pixels[i].Add(c);
             }
         }
     }
     offset += Speed * time.DeltaTime / 1000.0f;
 }
コード例 #13
0
        public void Update(EffectTime time)
        {
            int xOffset = (int)(offset % image.Width);
            int yOffset = (int)(offset % image.Height);

            foreach (var driver in neoPixelSetup.Drivers)
            {
                foreach (var strip in driver.Strips)
                {
                    var yStep = image.Height / strip.Pixels.Length;
                    for (int i = 0; i < strip.Pixels.Length; i++)
                    {
                        int x, y;
                        if (Horizontal)
                        {
                            x = xOffset;
                            y = yStep * i;
                        }
                        else
                        {
                            x = 0;
                            y = (yStep * i + yOffset) % image.Height;
                        }


                        var color = image.GetPixel(x, y);
                        strip.Pixels[i] = strip.Pixels[i].Add(Color.FromArgb(
                                                                  (byte)(color.R * Intensity),
                                                                  (byte)(color.G * Intensity),
                                                                  (byte)(color.B * Intensity)));
                    }
                }
            }

            offset += Speed * time.DeltaTime / 1000.0f;
        }
コード例 #14
0
 public void Exit(EffectTime time)
 {
 }
コード例 #15
0
 public void Enter(EffectTime time)
 {
 }
コード例 #16
0
 public void Update(EffectTime time)
 {
 }
コード例 #17
0
 public Color GetColor(EffectTime time)
 {
     return(Color);
 }
コード例 #18
0
 public void Update(EffectTime time)
 {
     offset += Speed * time.DeltaTime / 1000.0f;
 }
コード例 #19
0
 void Start()
 {
     effectTime_g = EffectTime.ProccessStart;
 }