Example #1
0
        private void TryAddDeviceFromOutput(GameGraphicsParameters prefferedParameters,
                                            GraphicsOutput output,
                                            GraphicsDeviceInformation deviceInfo,
                                            List <GraphicsDeviceInformation> graphicsDeviceInfos)
        {
            if (output.CurrentDisplayMode != null)
            {
                AddDevice(output.CurrentDisplayMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);
            }

            if (prefferedParameters.IsFullScreen)
            {
                // Get display mode for the particular width, height, pixelformat
                foreach (var displayMode in output.SupportedDisplayModes)
                {
                    AddDevice(displayMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);
                }
            }
        }
Example #2
0
        public IActionResult DisplayViewAsImage()
        {
            var sim = Program.uglyGlobalSimulation;

            lock (sim)
            {
                var filename = "/tmp/tmp.png";
                var w        = 1600;
                var h        = 1000;
                var scale    = 0.150;       // TODO: automatically determine boundaries of view
                var fontSize = 9;
                GraphicsOutput.RenderPng(sim.CoordSpace, sim.Network, sim.Units, Program.uglyGlobalTCSS, filename, w, h, scale, fontSize);

                byte[] filedata    = System.IO.File.ReadAllBytes(filename);
                string contentType = "image/png";

                return(File(filedata, contentType));
            }
        }
Example #3
0
        private void TryAddDeviceFromOutput(GameGraphicsParameters prefferedParameters,
                                            GraphicsOutput output,
                                            GraphicsDeviceInformation deviceInfo,
                                            List <GraphicsDeviceInformation> graphicsDeviceInfos)
        {
            var preferredMode = new DisplayMode(prefferedParameters.PreferredBackBufferFormat,
                                                prefferedParameters.PreferredBackBufferWidth,
                                                prefferedParameters.PreferredBackBufferHeight,
                                                prefferedParameters.PreferredRefreshRate);

            if (prefferedParameters.IsFullScreen)
            {
                var displayMode = output.FindClosestMatchingDisplayMode(prefferedParameters.PreferredGraphicsProfile, preferredMode);
                AddDevice(displayMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);
            }
            else
            {
                AddDevice(preferredMode, deviceInfo, prefferedParameters, graphicsDeviceInfos);
            }
        }
Example #4
0
        private static void Subscribe(Simulation sim)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost"
            };
            var connection = factory.CreateConnection();

            var channel = connection.CreateModel();

            var simStateQueue = channel.QueueDeclare().QueueName;

            channel.ExchangeDeclare(exchange: "SimState_full.cbor",
                                    type: ExchangeType.Fanout);
            channel.QueueBind(queue: simStateQueue,
                              exchange: "SimState_full.cbor",
                              routingKey: "");

            channel.ExchangeDeclare(exchange: "TSIM.cbor",
                                    type: ExchangeType.Fanout);

            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += (model, ea) =>
            {
                // var message = Encoding.UTF8.GetString(ea.Body.ToArray());
                // Console.WriteLine("RX " + message);

                var(unitsSnapshot, controlSnapshot, simInfoSnapshot) = Serialization.UnglueFullSimSnapshot(ea.Body.ToArray());

                // var message = Encoding.UTF8.GetString(unitsSnapshot);
                // Console.WriteLine("RX " + message);

                // var message = Encoding.UTF8.GetString(controlSnapshot);
                // Console.WriteLine("RX " + message);

                var controlStateMap = Serialization.DeserializeTrainControlState(controlSnapshot);

                uglyGlobalTCSS = controlStateMap;

                lock (sim)
                {
                    // Serialization.DeserializeInfoSnapshot(sim, simInfoSnapshot);
                    sim.Units.SnapshotFullRestore(unitsSnapshot);

                    // Render outputs

                    var filename = "/tmp/tmp.png";
                    var w        = 1400;
                    var h        = 1000;
                    var scale    = 0.150;       // TODO: automatically determine boundaries of view
                    var fontSize = 9;
                    GraphicsOutput.RenderPng(sim.CoordSpace, sim.Network, sim.Units, Program.uglyGlobalTCSS, filename, w, h, scale, fontSize);

                    byte[] filedata    = System.IO.File.ReadAllBytes(filename);
                    string contentType = "image/png";

                    // Wrap in CBOR & publish

                    var cbor = CBORObject.NewMap()
                               .Add("objects", CBORObject.NewArray()
                                    .Add(CBORObject.NewMap()
                                         .Add("name", "main") // deprecated
                                         .Add("topic", "main")
                                         .Add("displayName", "TSIM View")
                                         .Add("mimeType", contentType)
                                         .Add("data", filedata)
                                         )
                                    .Add(ControlSystemStateMapToCbor(Program.uglyGlobalTCSS))
                                    .Add(SimulationStateMapToCbor(/*sim.SimTimeElapsed*/ simInfoSnapshot))
                                    .Add(UnitsToCbor(sim.Units))
                                    )
                               .Add("controls", CBORObject.NewArray())
                    ;

                    channel.BasicPublish(exchange: "TSIM.cbor",
                                         routingKey: "",
                                         basicProperties: null,
                                         body: cbor.EncodeToBytes());
                    // Console.WriteLine($"Pub now");
                }
            };

            channel.BasicConsume(queue: simStateQueue,
                                 autoAck: true,
                                 consumer: consumer);
        }