Example #1
0
        private void LoadLight()
        {
            if (!lightMotor.sword.isLoaded)
            {
                Collider[] colliders        = Physics.OverlapSphere(playerMotor.transform.position, .5f);
                LightZone  closestZone      = null;
                float      shortestDistance = 10000f;

                foreach (Collider col in colliders)
                {
                    LightZone zone = col.GetComponent <LightZone>();
                    if (zone != null && zone.canBeAbsorbed)
                    {
                        float distance = (playerMotor.transform.position - zone.transform.position).magnitude;
                        if (distance < shortestDistance)
                        {
                            shortestDistance = distance;
                            closestZone      = zone;
                        }
                    }
                }

                if (closestZone != null)
                {
                    closestZone.Absorb();
                    lightMotor.sword.Load();
                }
            }
        }
Example #2
0
        void MasterExecAdd()
        {
            MasterAddMode = true;

            MasterCurrentObject              = new LightZone();
            MasterCurrentObject.PointType    = PointTypeEnum.W;
            MasterCurrentObject.Partition    = AppContext.Partition;
            MasterCurrentObject.ControlSpace = AppContext.ControlSpace;
            MasterCurrentObject.LE_ProxyList = new ObservableCollection <LE_Proxy>();

            MasterAddCmd.RaiseCanExecuteChanged();
            MasterRemoveCmd.RaiseCanExecuteChanged();
            ViewCmd.RaiseCanExecuteChanged();

            MasterObjectPanelVisibility   = Visibility.Visible;
            MasterObjectButtonsVisibility = Visibility.Visible;

            MasterListCurtainVisibility   = Visibility.Visible;
            DetailListCurtainVisibility   = Visibility.Visible;
            MasterObjectCurtainVisibility = Visibility.Collapsed;

            ProxyListCurtainVisibility = Visibility.Visible;

            MessengerInstance.Send("", AppContext.BlockUIMsg);
        }
Example #3
0
        public List <Led[]> GetArraysForZones(LightZone zones)
        {
            List <Led[]> list = new List <Led[]>();

            if (zones.HasFlag(LightZone.Keyboard))
            {
                list.Add(Keyboard);
            }
            if (zones.HasFlag(LightZone.Strip))
            {
                list.Add(Strip);
            }
            if (zones.HasFlag(LightZone.Mouse))
            {
                list.Add(Mouse);
            }
            if (zones.HasFlag(LightZone.Mousepad))
            {
                list.Add(Mousepad);
            }
            if (zones.HasFlag(LightZone.Headset))
            {
                list.Add(Headset);
            }
            if (zones.HasFlag(LightZone.Keypad))
            {
                list.Add(Keypad);
            }
            if (zones.HasFlag(LightZone.General))
            {
                list.Add(General);
            }
            return(list);
        }
Example #4
0
        // fadeoutDuration in seconds
        private void FadeOutToColor(LEDData frameData, LightZone zones, float fadeoutDuration, HSVColor color)
        {
            int          frames           = (int)Math.Round(fadeoutDuration * FPS);
            List <Led[]> frameLightArrays = frameData.GetArraysForZones(zones);

            for (int i = 0; i < frames; i++)
            {
                float        fadeout             = (float)Utils.Scale(i, 0, frames, 0, 1);
                LEDData      newFrame            = LEDData.Empty;
                List <Led[]> newFrameLightArrays = newFrame.GetArraysForZones(zones);

                for (int j = 0; j < frameLightArrays.Count; j++)
                {
                    Led[] arrCurrent = frameLightArrays[j];
                    Led[] arrNew     = newFrameLightArrays[j];
                    for (int k = 0; k < arrCurrent.Length; k++)
                    {
                        Led      l = arrCurrent[k];
                        HSVColor fadedColor;
                        if (color.Equals(HSVColor.Black))
                        {
                            fadedColor = l.color.FadeToBlackBy(fadeout);
                        }
                        else
                        {
                            fadedColor = l.color.FadeToColorBy(color, fadeout);
                        }
                        arrNew[k].Color(fadedColor);
                    }
                }
                SendFrame(newFrame, zones);
            }
        }
Example #5
0
        /// <summary>
        /// Plays the specified animation once for <paramref name="loopDuration"/> seconds.
        /// </summary>
        /// <param name="fadeOutAfterRate">Optionally fade out the last animation frame progressively.</param>
        public void RunAnimationInLoop(string animPath, LightZone zones, float loopDuration, float fadeoutDuration = 0, bool priority = true, float timeScale = 1)
        {
            LEDColorData[] anim         = LoadAnimation(animPath).Frames;
            float          animDuration = anim.Length * 0.03f;
            float          loopRatio    = (int)(loopDuration / animDuration);
            float          time         = 0;
            LEDData        data         = null;

            while (time < anim.Length * loopRatio)
            {
                int i = ((int)time) % anim.Length;
                data = LEDData.FromColors(anim[i]);
                if (time == 0)
                {
                    SendFrame(data, zones, priority);
                }
                else
                {
                    SendFrame(data, zones);
                }
                time += 1 * timeScale;
            }
            if (fadeoutDuration > 0)
            {
                // data is last frame
                FadeOutToBlack(data, zones, fadeoutDuration);
            }
            else
            {
                /*LEDData black = LEDData.Empty;
                 * SendFrame(black, zones);*/
            }
        }
Example #6
0
        /// <summary>
        /// Creates a color burst, starting at the given color and progressively fading to black.
        /// </summary>
        /// <param name="color">The burst color.</param>
        /// <param name="fadeoutDuration">The burst fade-out duration.</param>
        /// <param name="destinationColor">The color to progressively fade to after the color burst (black by default)</param>
        /// <returns></returns>
        public void ColorBurst(HSVColor color, LightZone zones, float fadeoutDuration = 0.15f, bool priority = true, HSVColor destinationColor = default)
        {
            LEDData data = LEDData.Empty;

            // Set all to color
            ApplyColorToZones(data, zones, color);

            SendFrame(data, zones, priority);

            // Fade to Black

            if (fadeoutDuration > 0)
            {
                if (destinationColor.Equals(HSVColor.Black))
                {
                    FadeOutToBlack(data, zones, fadeoutDuration);
                }
                else
                {
                    FadeOutToColor(data, zones, fadeoutDuration, destinationColor);
                }
            }
            else
            {
                data = LEDData.Empty;
                if (!destinationColor.Equals(HSVColor.Black))
                {
                    ApplyColorToZones(data, zones, destinationColor);
                }
                SendFrame(data, zones);
            }
        }
Example #7
0
        public void HoldLastFrame(LightZone zones, float duration)
        {
            int frames = (int)Math.Round(duration * FPS);

            for (int i = 0; i < frames; i++)
            {
                SendFrame(lastFrame.Clone(), zones);
            }
        }
Example #8
0
        public void HoldColor(HSVColor color, LightZone zones, float duration, bool priority = false)
        {
            int frames = (int)Math.Round(duration * FPS);

            for (int i = 0; i < frames; i++)
            {
                LEDData data = LEDData.Empty;
                ApplyColorToZones(data, zones, color);
                SendFrame(data, zones, priority);
            }
        }
Example #9
0
 private void SendFrame(LEDData data, LightZone zones, bool priority = false)
 {
     lastFrame = data;
     if (NewFrameReady == null)
     {
         throw new InvalidOperationException("Tried to SendFrame, but no NewFrameReady handler was attached to this AnimationModule.");
     }
     else
     {
         NewFrameReady?.Invoke(new LEDFrame(this, data, zones, priority));
     }
 }
Example #10
0
        private void ApplyColorToZones(LEDData frameData, LightZone zones, HSVColor color)
        {
            List <Led[]> colArrays = frameData.GetArraysForZones(zones);

            foreach (Led[] arr in colArrays)
            {
                foreach (Led l in arr)
                {
                    l.Color(color);
                }
            }
        }
Example #11
0
 public LEDFrame(object sender, LEDData ledData, LightZone zones, bool priority = false)
 {
     if (sender == null)
     {
         this.SenderChain = new List <object>();
     }
     else
     {
         this.SenderChain = new List <object>()
         {
             sender
         }
     };
     this.Leds     = ledData;
     this.Zones    = zones;
     this.Priority = priority;
 }
Example #12
0
        public void FadeBetweenTwoColors(LightZone zones, HSVColor col1, HSVColor col2, float rate = 0.15f, float duration = 2)
        {
            // TODO: Broken
            int frames = (int)Math.Round(duration * FPS);

            for (int i = 0; i < frames; i++)
            {
                float        currentTime         = i / FPS;
                float        sin                 = (float)Math.Sin(currentTime * rate);
                HSVColor     color               = HSVColor.Lerp(col1, col2, sin);
                LEDData      newFrame            = LEDData.Empty;
                List <Led[]> newFrameLightArrays = newFrame.GetArraysForZones(zones);

                foreach (Led[] arr in newFrameLightArrays)
                {
                    foreach (Led l in arr)
                    {
                        l.Color(color);
                    }
                }
                SendFrame(newFrame, zones);
            }
        }
 protected void RunAnimationInLoop(string animationName, LightZone zones, float loopDuration, float fadeoutAfterDuration = 0, bool priority = true, float timeScale = 1)
 {
     Animator.RunAnimationInLoop(GetAnimationPath(animationName), zones, loopDuration, fadeoutAfterDuration, priority, timeScale);
 }
Example #14
0
 private void FadeOutToBlack(LEDData frameData, LightZone zones, float fadeoutDuration)
 {
     FadeOutToColor(frameData, zones, fadeoutDuration, HSVColor.Black);
 }