Beispiel #1
0
        public async Task Setup()
        {
            string ip = await GetBridgeIp();

            hueClient = new LocalHueClient(ip, Secrets.HueUsername);

            var lights = await hueClient.GetLightsAsync();

            foreach (var light in lights)
            {
                lightToId.Add(light.Name, light.Id);
                Lights.Add(light.Name);
            }

            var groups = await hueClient.GetGroupsAsync();

            foreach (var group in groups)
            {
                var name = group.Name;
                if (name.Contains("Group for"))
                {
                    continue;
                }
                if (Lights.Contains(name))
                {
                    name = $"{name} (group)";
                }
                groupToId.Add(name, group.Id);
                Lights.Add(name);
            }
        }
Beispiel #2
0
        // Sorts scene node into correct list.
        protected void AddNode(SceneNode node)
        {
            if (node is DecalNode)
            {
                DecalNodes.Add(node);
            }
            else if (node is LightNode)
            {
                Lights.Add(node);
            }
            else if (node is LensFlareNode)
            {
                LensFlareNodes.Add(node);
            }
            else if (node is SkyNode)
            {
                SkyNodes.Add(node);
            }
            else if (node is FogNode)
            {
                FogNodes.Add(node);
            }
            else if (node.IsRenderable)
            {
                RenderableNodes.Add(node);
            }

            // Unsupported types are simply ignored.
        }
Beispiel #3
0
        protected override void ReadData(DataBuffer buf, FileFormat fmt)
        {
            WheelDamageEffect = buf.ReadFloat();
            Engine            = buf.ReadByte();
            Wheels            = buf.ReadArray <WheelStatus>(NumWheels);
            Doors             = buf.ReadArray <DoorStatus>(NumDoors);
            buf.Skip(1);
            int lightStatus = buf.ReadInt32();
            int panelStatus = buf.ReadInt32();

            Field24h = buf.ReadInt32();

            Lights.Clear();
            for (int i = 0; i < NumLights; i++)
            {
                Lights.Add((LightStatus)(lightStatus & 0x3));
                lightStatus >>= 2;
            }

            Panels.Clear();
            for (int i = 0; i < NumPanels; i++)
            {
                Panels.Add((PanelStatus)(panelStatus & 0xF));
                panelStatus >>= 4;
            }

            Debug.Assert(buf.Offset == SizeOfType <DamageManager>());
        }
Beispiel #4
0
        public void Read(System.IO.BinaryReader r)
        {
            TileWidth  = r.ReadInt32();
            TileHeight = r.ReadInt32();
            int lc = r.ReadInt32();

            for (int i = 0; i < lc; i++)
            {
                var l = new Vivid.Scene.GraphLight();
                l.Read(r);
                Lights.Add(l);
            }
            int mc = r.ReadInt32();

            for (int i = 0; i < mc; i++)
            {
                var m = new Vivid.Scene.GraphMarker();
                m.Read(r);
                Markers.Add(m);
            }
            int layc = r.ReadInt32();

            Layers = new List <MapLayer>();
            for (int l = 0; l < layc; l++)
            {
                var ml = new MapLayer(1, 1, this);
                ml.Read(r);
                Layers.Add(ml);
            }
        }
Beispiel #5
0
        private void CalculateLighting()
        {
            //Setup lights for NEE
            this.Lights = new List <Shape>();
            foreach (Shape S in Shapes)
            {
                if (S.Material.HasProperty("emission") && !(S is Plane)) //Infinite planes not included
                {
                    Lights.Add(S);
                }
            }

            //Setup light probabiltiies
            this.LightProbabilityTable = new double[Lights.Count];
            double TotalLightWeight = 0;

            for (int i = 0; i < Lights.Count; i++)
            {
                double LightWeight = Lights[i].Material.GetProperty("emission", Vector2.Zero).Color.SumComponents() * Lights[i].Area();
                TotalLightWeight        += LightWeight;
                LightProbabilityTable[i] = TotalLightWeight;
            }
            for (int i = 0; i < Lights.Count; i++)
            {
                LightProbabilityTable[i] /= TotalLightWeight;
            }
        }
Beispiel #6
0
        //method to fill the scene
        public void FillScene()
        {
            //add lights to the scene
            Light light1   = new Light(new Vector3(-2, -2, 1), new Vector3(1, 0, 0), 10);
            Light light2   = new Light(new Vector3(2, -2, 7), new Vector3(0, 1, 0), 10);
            Light bigLight = new Light(new Vector3(0, -3, 2), new Vector3(1, 1, 1), 25);

            Lights.Add(bigLight);
            Lights.Add(light1);
            Lights.Add(light2);

            //add primitives to the scene
            Floor   = new Plane("Floor", new Vector3(0, 1, 0), -1, new Vector3(50, 50, 50), "Specular");    //gray floor plane
            Sphere1 = new Sphere("Sphere1", new Vector3(-2, 0, 4), 1, new Vector3(255, 0, 0), "Specular");  //left sphere
            Sphere2 = new Sphere("Sphere2", new Vector3(0, 0, 5), 1, new Vector3(255, 255, 255), "Mirror"); //middle sphere

            Sphere3 = new Sphere("Sphere3", new Vector3(3, 0, 5), 1, new Vector3(0, 0, 255), "Specular");   //right sphere

            Triangle Triangle1 = new Triangle("Triangle1", new Vector3(0, 1, 3), new Vector3(1, -2, 4), new Vector3(2, 1, 3), new Vector3(0, 0, 255), "Diffuse");


            sceneObjects.Add(Floor); //add the primitives

            sceneObjects.Add(Sphere1);

            sceneObjects.Add(Sphere2);

            sceneObjects.Add(Sphere3);

            sceneObjects.Add(Triangle1);
        }
Beispiel #7
0
        /// <summary>
        /// Adds a new light.
        /// </summary>
        /// <returns>New light.</returns>
        public Light NewLight()
        {
            Light tmp = new Light();

            Lights.Add(tmp);
            return(tmp);
        }
Beispiel #8
0
            public virtual void ReadChildData(BinaryReader reader)
            {
                int x = 0;

                _model.ReadString(reader);
                _animationgraph.ReadString(reader);
                _indoorFogScreen.ReadString(reader);
                for (x = 0; (x < _shaderFunctions.Count); x = (x + 1))
                {
                    ShaderFunctions.Add(new SkyShaderFunctionBlock());
                    ShaderFunctions[x].Read(reader);
                }
                for (x = 0; (x < _shaderFunctions.Count); x = (x + 1))
                {
                    ShaderFunctions[x].ReadChildData(reader);
                }
                for (x = 0; (x < _animations.Count); x = (x + 1))
                {
                    Animations.Add(new SkyAnimationBlock());
                    Animations[x].Read(reader);
                }
                for (x = 0; (x < _animations.Count); x = (x + 1))
                {
                    Animations[x].ReadChildData(reader);
                }
                for (x = 0; (x < _lights.Count); x = (x + 1))
                {
                    Lights.Add(new SkyLightBlock());
                    Lights[x].Read(reader);
                }
                for (x = 0; (x < _lights.Count); x = (x + 1))
                {
                    Lights[x].ReadChildData(reader);
                }
            }
            /// <summary>
            /// Adds a region to the appropriate list for its type; returns the region.
            /// </summary>
            public Region Add(Region region)
            {
                switch (region)
                {
                case Region.Region0 r: Region0s.Add(r); break;

                case Region.Light r: Lights.Add(r); break;

                case Region.StartPoint r: StartPoints.Add(r); break;

                case Region.Sound r: Sounds.Add(r); break;

                case Region.SFX r: SFXs.Add(r); break;

                case Region.Wind r: Winds.Add(r); break;

                case Region.EnvLight r: EnvLights.Add(r); break;

                case Region.Fog r: Fogs.Add(r); break;

                default:
                    throw new ArgumentException($"Unrecognized type {region.GetType()}.", nameof(region));
                }
                return(region);
            }
Beispiel #10
0
            /// <summary>
            /// Adds an event to the appropriate list for its type; returns the event.
            /// </summary>
            public Event Add(Event evnt)
            {
                switch (evnt)
                {
                case Event.Light e: Lights.Add(e); break;

                case Event.Sound e: Sounds.Add(e); break;

                case Event.SFX e: SFX.Add(e); break;

                case Event.Wind e: Wind.Add(e); break;

                case Event.Treasure e: Treasures.Add(e); break;

                case Event.Generator e: Generators.Add(e); break;

                case Event.Message e: Messages.Add(e); break;

                case Event.ObjAct e: ObjActs.Add(e); break;

                case Event.SpawnPoint e: SpawnPoints.Add(e); break;

                case Event.MapOffset e: MapOffsets.Add(e); break;

                case Event.Navmesh e: Navmeshes.Add(e); break;

                case Event.Environment e: Environments.Add(e); break;

                case Event.PseudoMultiplayer e: PseudoMultiplayers.Add(e); break;

                default:
                    throw new ArgumentException($"Unrecognized type {evnt.GetType()}.", nameof(evnt));
                }
                return(evnt);
            }
Beispiel #11
0
        public FirstScene()
        {
            Shape floor = new Sphere();

            floor.Transform         = Transformation.Scaling(10, 0.01f, 10);
            floor.Material.Color    = Tuple.Color(1, 0.9f, 0.9f);
            floor.Material.Specular = 0;

            Shapes.Add(floor);

            Shape leftWall = new Sphere();

            leftWall.Transform = Transformation.Translation(0, 0, 5) *
                                 Transformation.RotationY(-PI / 4) * Transformation.RotationX(PI / 2) *
                                 Transformation.Scaling(10, 0.2f, 10);

            leftWall.Material = floor.Material;

            Shapes.Add(leftWall);

            Shape rightWall = new Sphere();

            rightWall.Transform = Transformation.Translation(0, 0, 5) *
                                  Transformation.RotationY(PI / 4) * Transformation.RotationX(PI / 2) *
                                  Transformation.Scaling(10, 0.2f, 10);

            rightWall.Material = floor.Material;

            Shapes.Add(rightWall);

            Shape middle = new Sphere();

            middle.Transform         = Transformation.Translation(-0.5f, 1, 0.5f);
            middle.Material.Color    = Tuple.Color(0.1f, 1, 0.5f);
            middle.Material.Diffuse  = 0.7f;
            middle.Material.Specular = 0.3f;

            Shapes.Add(middle);

            Shape right = new Sphere();

            right.Transform         = Transformation.Translation(1.5f, 0.5f, -0.5f) * Transformation.Scaling(0.5f, 0.5f, 0.5f);
            right.Material.Color    = Tuple.Color(0.5f, 1, 0.1f);
            right.Material.Diffuse  = 0.7f;
            right.Material.Specular = 0.3f;

            Shapes.Add(right);

            Shape left = new Sphere();

            left.Transform         = Transformation.Translation(-1.5f, 0.33f, -0.75f) * Transformation.Scaling(0.33f, 0.33f, 0.33f);
            left.Material.Color    = Tuple.Color(1, 0.8f, 0.1f);
            left.Material.Diffuse  = 0.7f;
            left.Material.Specular = 0.3f;

            Shapes.Add(left);

            Lights.Add(new PointLight(Tuple.Point(-10, 10, -10), Tuple.Color(1, 1, 1)));
        }
Beispiel #12
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="lights"></param>
 /// <returns>The Elements object.</returns>
 public Elements AddLigths(List <Lights> lights)
 {
     foreach (var light in lights)
     {
         Lights.Add(light);
     }
     return(this);
 }
Beispiel #13
0
        public int AddLight(HueLight light)
        {
            var nextId = Lights.Count + 1;

            light.Id = nextId;
            Lights.Add(nextId, light);
            return(nextId);
        }
Beispiel #14
0
 public Scene(PictureBox canvas)
 {
     this.canvas = canvas;
     Camera      = new Camera();
     ResetCamera();
     Cameras.Add(Camera);
     Lights.Add(new Vector3D(0, 150, -150));
     Light = Lights[0];
 }
 //-------------------------------------------------------------------------------------
 //                                      Unity Lifecycle Functions
 //-------------------------------------------------------------------------------------
 protected override void OnEnable()
 {
     Lights.Add(this);
     if (_cullingGroup == null)
     {
         _cullingGroup = new CullingGroup();
         RenderPipelineManager.beginCameraRendering += SetupCulling;
     }
 }
Beispiel #16
0
        /// <summary>
        /// Add new regions
        /// </summary>
        /// <param name="location"></param>
        public void Add(PointF point)
        {
            var light = new StructLights();

            light.Position = new K3DPosition(point.X, point.Y, 0f);
            Lights.Add(light);

            Added?.Invoke(this, light);
        }
Beispiel #17
0
        /// <summary>
        /// Adds a light
        /// </summary>
        /// <param name="light">Handle</param>
        public void AddLight(Light light)
        {
            if (light == null)
            {
                return;
            }

            Lights.Add(light);
        }
Beispiel #18
0
 /// <summary>
 /// Adds the light.
 /// </summary>
 /// <param name="light">The light.</param>
 public virtual void AddLight(ILight light)
 {
     if (light == null)
     {
         ActiveLogger.LogMessage("Cant Add null Light", LogLevel.RecoverableError);
         return;
     }
     Lights.Add(light);
 }
Beispiel #19
0
        /// <summary>
        /// Add new light
        /// </summary>
        /// <param name="vector"></param>
        public void Add(Vector vector)
        {
            var light = new Light
            {
                Position = vector
            };

            Lights.Add(light);

            Added?.Invoke(this, new AddedArgs(light, typeof(Light)));
        }
Beispiel #20
0
        protected override void Initialize()
        {
            base.Initialize();

            PresentationParameters pp = GraphicsDevice.PresentationParameters;

            width  = pp.BackBufferWidth;
            height = pp.BackBufferHeight;

            // Camera Position und View-Vector festlegen
            camera.Position = new Vector3(0.0f, 3.0f, 10.0f);
            camera.LookAt(new Vector3(0.0f, 1.0f, 0.0f));

            float sin = (float)Math.Sin(MathHelper.ToRadians(30.0f));
            float cos = (float)Math.Cos(MathHelper.ToRadians(30.0f));

            float lightHeight = 5.0f;
            float lightRadius = 10.0f;

            // Eigenschaften der Lichter setzen
            lights.NearPlaneDistance = 2.0f;
            lights.FarPlaneDistance  = 20.0f;
            lights.Speed             = 0.5f;

            lights.Add(0.0f, lightHeight, lightRadius);
            lights.Add(cos * lightRadius, lightHeight, -sin * lightRadius);
            lights.Add(-cos * lightRadius, lightHeight, -sin * lightRadius);

            // Würfel und Pick-Ray auf unsichtbar setzen
            cubes.Visible = false;
            ray.Visible   = false;

            // Camera-Tracker deaktivieren
            cameraTracker.Enabled = false;


            // Antialiasing auf 4x setzen
            GraphicsDevice.PresentationParameters.MultiSampleCount = 4;
        }
Beispiel #21
0
        async Task Init()
        {
            IsBusy = true;

            var lights = await _lightService.GetLightsAsync();

            foreach (var item in lights)
            {
                Lights.Add(item);
                item.PropertyChanged += Item_PropertyChanged;
            }

            IsBusy = false;
        }
Beispiel #22
0
            internal override Region ReadEntry(BinaryReaderEx br)
            {
                RegionType type = br.GetEnum8 <RegionType>(br.Position + 0xA);

                switch (type)
                {
                case RegionType.Region0:
                    var region0 = new Region.Region0(br);
                    Region0s.Add(region0);
                    return(region0);

                case RegionType.Light:
                    var light = new Region.Light(br);
                    Lights.Add(light);
                    return(light);

                case RegionType.StartPoint:
                    var startPoint = new Region.StartPoint(br);
                    StartPoints.Add(startPoint);
                    return(startPoint);

                case RegionType.Sound:
                    var sound = new Region.Sound(br);
                    Sounds.Add(sound);
                    return(sound);

                case RegionType.SFX:
                    var sfx = new Region.SFX(br);
                    SFXs.Add(sfx);
                    return(sfx);

                case RegionType.Wind:
                    var wind = new Region.Wind(br);
                    Winds.Add(wind);
                    return(wind);

                case RegionType.EnvLight:
                    var envLight = new Region.EnvLight(br);
                    EnvLights.Add(envLight);
                    return(envLight);

                case RegionType.Fog:
                    var fog = new Region.Fog(br);
                    Fogs.Add(fog);
                    return(fog);

                default:
                    throw new NotImplementedException($"Unimplemented region type: {type}");
                }
            }
Beispiel #23
0
        /// <summary>
        /// Load existing light
        /// </summary>
        /// <param name="buffer"></param>
        public void Load(byte[] buffer)
        {
            try
            {
                using (MemoryReader mem = new MemoryReader(buffer))
                {
                    Direction.X = mem.ReadSingle();
                    Direction.Y = mem.ReadSingle();
                    Direction.Z = mem.ReadSingle();
                    Specular    = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());
                    Diffuse     = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());
                    Ambient     = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());

                    var lightCount = mem.ReadInt32();

                    for (int i = 0; i < lightCount; i++)
                    {
                        var light  = new Light();
                        var vector = new Vector
                        {
                            X = mem.ReadSingle() / 7.875f,
                            Y = mem.ReadSingle() / 7.875f,
                            Z = mem.ReadSingle()
                        };

                        light.Position    = vector.Rotate180FlipY();
                        light.Height      = mem.ReadSingle();
                        light.Direction.X = mem.ReadSingle();
                        light.Direction.Y = mem.ReadSingle();
                        light.Direction.Z = mem.ReadSingle();
                        light.Specular    = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());
                        light.Diffuse     = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());
                        light.Ambient     = new KColor(mem.ReadByte(), mem.ReadByte(), mem.ReadByte(), mem.ReadByte());
                        light.LightType   = (LightsType)mem.ReadInt32();
                        Lights.Add(light);
                    }
                }

                Render();
                Parent.Log(Levels.Success, "Ok\n");
            }
            catch (Exception exception)
            {
                Dispose();
                Parent.Log(Levels.Error, "Failed\n");
                Parent.Log(Levels.Fatal, string.Format("Nfl::Load<Exception> -> {0}\n", exception));
            }
        }
Beispiel #24
0
        /// <summary>
        /// empty constructor.
        /// </summary>
        public OpenGlDevice()
        {
            InitializeCtrlHandler();
            OnTime = new EventHandler(Timer_Tick);
            Camera = new Camera(this);
            Light L = new Light();

            L.Device = this;
            Lights.Add(L);
            ShadowSetting   = new ShadowSettings(this);
            Selector.Device = this;
            if (Devices == null)
            {
                Devices = new List <OpenGlDevice>();
            }
        }
Beispiel #25
0
        protected override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _rootGrid = GetTemplateChild <Grid>(PART_RootGrid);
            _backgroundShadowContainer = GetTemplateChild <Rectangle>(PART_BackgroundShadowContainer);
            _textShadowContainer       = GetTemplateChild <Rectangle>(PART_TextShadowContainer);
            _contentPresenter          = GetTemplateChild <ContentPresenter>(PART_ContentPresenter);

            _backgroundShadowContainer.SetDropShadow(_backgroundShadow);
            _textShadowContainer.SetDropShadow(_textShadow);

            Lights.Add(new HoverXamlLight());
            Lights.Add(new AmbientXamlLight());
            Lights.Add(new RippleXamlLight());
        }
Beispiel #26
0
        public Settings(IConfiguration configuration)
        {
            var server = configuration.GetSection("Server");

            Host = server.GetValue <string>("host");
            Port = server.GetValue <int>("port");

            var section = configuration.GetSection("Tally");
            var tallies = section.GetChildren();

            foreach (var tally in tallies)
            {
                var setting = new TallySetting(tally);
                Lights.Add(setting);
            }
        }
Beispiel #27
0
        public PlaneScene()
        {
            Shape floor = new Plane();

            floor.Material.Color    = Tuple.Color(1, 0.9f, 0.9f);
            floor.Material.Specular = 0;

            Shapes.Add(floor);

            Shape ceiling = new Plane();

            ceiling.Transform       = Transformation.Translation(0, 2.5f, 0) * Transformation.RotationZ(PI);
            floor.Material.Color    = Tuple.Color(1, 0.9f, 0.9f);
            floor.Material.Specular = 0;

            Shapes.Add(ceiling);

            Shape middle = new Sphere();

            middle.Transform         = Transformation.Translation(-0.5f, 1, 0.5f);
            middle.Material.Color    = Tuple.Color(0.1f, 1, 0.5f);
            middle.Material.Diffuse  = 0.7f;
            middle.Material.Specular = 0.3f;

            Shapes.Add(middle);

            Shape right = new Sphere();

            right.Transform         = Transformation.Translation(1.5f, 0, -0.5f) * Transformation.Scaling(0.5f, 0.5f, 0.5f);
            right.Material.Color    = Tuple.Color(0, 0, 0.7f);
            right.Material.Diffuse  = 0.7f;
            right.Material.Specular = 0.3f;

            Shapes.Add(right);

            Shape left = new Sphere();

            left.Transform         = Transformation.Translation(-1.5f, 0.33f, -0.75f) * Transformation.Scaling(0.33f, 0.33f, 0.33f);
            left.Material.Color    = Tuple.Color(1, 0.2f, 0.1f);
            left.Material.Diffuse  = 0.7f;
            left.Material.Specular = 0.3f;

            Shapes.Add(left);

            Lights.Add(new PointLight(Tuple.Point(-1, 1, -1), Tuple.Color(1, 1, 1)));
        }
            internal override Event ReadEntry(BinaryReaderEx br)
            {
                EventType type = br.GetEnum16 <EventType>(br.Position + 0xC);

                switch (type)
                {
                case EventType.Light:
                    var light = new Event.Light(br);
                    Lights.Add(light);
                    return(light);

                case EventType.Shadow:
                    var shadow = new Event.Shadow(br);
                    Shadows.Add(shadow);
                    return(shadow);

                case EventType.Fog:
                    var fog = new Event.Fog(br);
                    Fogs.Add(fog);
                    return(fog);

                case EventType.BGColor:
                    var bgColor = new Event.BGColor(br);
                    BGColors.Add(bgColor);
                    return(bgColor);

                case EventType.MapOffset:
                    var mapOffset = new Event.MapOffset(br);
                    MapOffsets.Add(mapOffset);
                    return(mapOffset);

                case EventType.Warp:
                    var warp = new Event.Warp(br);
                    Warps.Add(warp);
                    return(warp);

                case EventType.CheapMode:
                    var cheapMode = new Event.CheapMode(br);
                    CheapModes.Add(cheapMode);
                    return(cheapMode);

                default:
                    throw new NotImplementedException($"Unimplemented event type: {type}");
                }
            }
Beispiel #29
0
        public DefaultWorld()
        {
            Lights.Add(new PointLight(Tuple.Point(-10, 10, -10), Tuple.Color(1, 1, 1)));

            Shape s1 = new Sphere();

            s1.Material.Color    = Tuple.Color(0.8f, 1, 0.6f);
            s1.Material.Diffuse  = 0.7f;
            s1.Material.Specular = 0.2f;

            Shapes.Add(s1);

            Shape s2 = new Sphere();

            s2.Transform = Transformation.Scaling(0.5f, 0.5f, 0.5f);

            Shapes.Add(s2);
        }
Beispiel #30
0
 private void LoadLights()
 {
     for (var i = 0u; i < Core.scenario_get_point_light_count(Handle); ++i)
     {
         Lights.Add(Core.scenario_get_light_handle(Handle, (int)i, Core.LightType.Point));
     }
     for (var i = 0u; i < Core.scenario_get_spot_light_count(Handle); ++i)
     {
         Lights.Add(Core.scenario_get_light_handle(Handle, (int)i, Core.LightType.Spot));
     }
     for (var i = 0u; i < Core.scenario_get_dir_light_count(Handle); ++i)
     {
         Lights.Add(Core.scenario_get_light_handle(Handle, (int)i, Core.LightType.Directional));
     }
     if (Core.scenario_has_envmap_light(Handle))
     {
         Lights.Add(Core.scenario_get_light_handle(Handle, 0, Core.LightType.Envmap));
     }
 }