Exemplo n.º 1
0
        // Update is called once per frame
        public override void Update()
        {
            base.Update();

            for (int i = 0; i < _sources.Count; i++)
            {
                if (!(_sources[i].Equals(Sources[i])))
                {
                    _sources[i].Color.R     = Sources[i].Color.R;
                    _sources[i].Color.G     = Sources[i].Color.G;
                    _sources[i].Color.B     = Sources[i].Color.B;
                    _sources[i].Color.Alpha = Sources[i].Color.Alpha;
                    _sources[i].Enabled     = Sources[i].Enabled;
                    _sources[i].Direction   = Sources[i].Direction;

                    Ray ray = EmittedRays.Find(r => r.Direction == _sources[i].Direction);
                    if (ray != null)
                    {
                        Ray.Delete(ray);
                        EmittedRays.Remove(ray);
                    }

                    if (_sources[i].Enabled && (_sources[i].Color.R || _sources[i].Color.G || _sources[i].Color.B))
                    {
                        EmitNewRay(_sources[i].Direction, _sources[i].Color, null);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public override void ResetRays()
        {
            foreach (var ray in EmittedRays)
            {
                Ray.Delete(ray);
            }
            EmittedRays.Clear();

            for (int i = 0; i < _sources.Count; i++)
            {
                if (_sources[i].Enabled && (_sources[i].Color.R || _sources[i].Color.G || _sources[i].Color.B))
                {
                    EmitNewRay(_sources[i].Direction, _sources[i].Color, null);
                }
            }
        }