Esempio n. 1
0
    void OnDestroy()
    {
        MessageDispatcher.RemoveObserver(InitMap, MessageType.LoadBattleComplete);
        MessageDispatcher.RemoveObserver(MapShowEffectStart, MessageType.MapShowEffectStart);

        if (endlessModeManager != null)
        {
            endlessModeManager.OnDestroy();
            endlessModeManager = null;
        }
        else if (trainingModeManager != null)
        {
            trainingModeManager.OnDestroy();
            trainingModeManager = null;
        }
        else if (tutorialModeManager != null)
        {
            tutorialModeManager.OnDestroy();
            tutorialModeManager = null;
        }

        logicWorld.Release();
        logicWorld = null;

        renderWorld.Release();
        renderWorld = null;
    }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="game"></param>
        public FXPlayback(GameWorld world)
        {
            this.world = world;
            this.game  = world.Game;
            this.rw    = game.RenderSystem.RenderWorld;
            this.sw    = game.SoundSystem.SoundWorld;

            Game_Reloading(this, EventArgs.Empty);
            game.Reloading += Game_Reloading;
        }
Esempio n. 3
0
        public ModelManager(GameWorld world)
        {
            this.world = world;
            this.game  = world.Game;
            this.rs    = game.RenderSystem;
            this.rw    = game.RenderSystem.RenderWorld;
            this.sw    = game.SoundSystem.SoundWorld;

            Game_Reloading(this, EventArgs.Empty);
            game.Reloading += Game_Reloading;

            models = new LinkedList <ModelInstance>();
        }
Esempio n. 4
0
    void Awake()
    {
        if (dataManager == null)
        {
            dataManager = DataManager.GetInstance();
        }

        GameObject.Instantiate(GameResourceLoadManager.GetInstance().LoadAsset <GameObject>("HealthbarControl"));
        logicWorld  = new LogicWorld();
        renderWorld = new RenderWorld();
        MessageDispatcher.AddObserver(InitMap, MessageType.LoadBattleComplete);
        MessageDispatcher.AddObserver(MapShowEffectStart, MessageType.MapShowEffectStart);
    }
Esempio n. 5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sfxSystem"></param>
        /// <param name="fxEvent"></param>
        public FXInstance(FXPlayback sfxSystem, FXEvent fxEvent, FXFactory fxFactory, bool looped)
        {
            this.fxAtom     = fxEvent.FXAtom;
            this.fxPlayback = sfxSystem;
            this.rw         = sfxSystem.rw;
            this.sw         = sfxSystem.sw;
            this.fxEvent    = fxEvent;

            AddParticleStage(fxFactory.ParticleStage1, fxEvent, looped);
            AddParticleStage(fxFactory.ParticleStage2, fxEvent, looped);
            AddParticleStage(fxFactory.ParticleStage3, fxEvent, looped);
            AddParticleStage(fxFactory.ParticleStage4, fxEvent, looped);

            AddLightStage(fxFactory.LightStage, fxEvent, looped);
            AddSoundStage(fxFactory.SoundStage, fxEvent, looped);
        }
Esempio n. 6
0
        private TabPage ProcessFile(string fileName, byte[] input, Package currentPackage)
        {
            var tab           = new TabPage();
            var vrfGuiContext = new VrfGuiContext
            {
                FileName       = fileName,
                CurrentPackage = currentPackage,
            };

            uint   magic = 0;
            ushort magicResourceVersion = 0;

            if (input != null)
            {
                magic = BitConverter.ToUInt32(input, 0);
                magicResourceVersion = BitConverter.ToUInt16(input, 4);
            }
            else
            {
                var magicData = new byte[6];

                using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    fs.Read(magicData, 0, 6);
                }

                magic = BitConverter.ToUInt32(magicData, 0);
                magicResourceVersion = BitConverter.ToUInt16(magicData, 4);
            }

            if (magic != Package.MAGIC && input == null && Regex.IsMatch(fileName, @"_[0-9]{3}\.vpk$"))
            {
                // TODO: Update tab name
                fileName = $"{fileName.Substring(0, fileName.Length - 8)}_dir.vpk";
                magic    = Package.MAGIC;
            }

            if (magic == Package.MAGIC || fileName.EndsWith(".vpk", StringComparison.Ordinal))
            {
                var package = new Package();

                if (input != null)
                {
                    package.SetFileName(fileName);
                    package.Read(new MemoryStream(input));
                }
                else
                {
                    package.Read(fileName);
                }

                // create a TreeView with search capabilities, register its events, and add it to the tab
                var treeViewWithSearch = new TreeViewWithSearchResults(ImageList)
                {
                    Dock = DockStyle.Fill,
                };
                treeViewWithSearch.InitializeTreeViewFromPackage("treeViewVpk", package);
                treeViewWithSearch.TreeNodeMouseDoubleClick += VPK_OpenFile;
                treeViewWithSearch.TreeNodeMouseClick       += VPK_OnClick;
                treeViewWithSearch.ListViewItemDoubleClick  += VPK_OpenFile;
                treeViewWithSearch.ListViewItemRightClick   += VPK_OnClick;
                tab.Controls.Add(treeViewWithSearch);

                // since we're in a separate thread, invoke to update the UI
                Invoke((MethodInvoker)(() => findToolStripButton.Enabled = true));
            }
            else if (magic == CompiledShader.MAGIC || fileName.EndsWith(".vcs", StringComparison.Ordinal))
            {
                var shader = new CompiledShader();

                var buffer = new StringWriter();
                var oldOut = Console.Out;
                Console.SetOut(buffer);

                if (input != null)
                {
                    shader.Read(fileName, new MemoryStream(input));
                }
                else
                {
                    shader.Read(fileName);
                }

                Console.SetOut(oldOut);

                var control = new TextBox();
                control.Font       = new Font(FontFamily.GenericMonospace, control.Font.Size);
                control.Text       = NormalizeLineEndings(buffer.ToString());
                control.Dock       = DockStyle.Fill;
                control.Multiline  = true;
                control.ReadOnly   = true;
                control.ScrollBars = ScrollBars.Both;
                tab.Controls.Add(control);
            }
            else if (magic == ClosedCaptions.MAGIC || fileName.EndsWith(".dat", StringComparison.Ordinal))
            {
                var captions = new ClosedCaptions();
                if (input != null)
                {
                    captions.Read(fileName, new MemoryStream(input));
                }
                else
                {
                    captions.Read(fileName);
                }

                var control = new DataGridView
                {
                    Dock                = DockStyle.Fill,
                    AutoSize            = true,
                    ReadOnly            = true,
                    AllowUserToAddRows  = false,
                    AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
                    DataSource          = new BindingSource(new BindingList <ClosedCaption>(captions.Captions), null),
                    ScrollBars          = ScrollBars.Both,
                };
                tab.Controls.Add(control);
            }
            else if (magic == BinaryKV3.MAGIC || magic == BinaryKV3.MAGIC2)
            {
                var kv3 = new BinaryKV3();

                using (var file = File.OpenRead(fileName))
                    using (var binaryReader = new BinaryReader(file))
                    {
                        kv3.Size = (uint)file.Length;
                        kv3.Read(binaryReader, null);
                    }

                var control = new TextBox();
                control.Font       = new Font(FontFamily.GenericMonospace, control.Font.Size);
                control.Text       = kv3.ToString();
                control.Dock       = DockStyle.Fill;
                control.Multiline  = true;
                control.ReadOnly   = true;
                control.ScrollBars = ScrollBars.Both;
                tab.Controls.Add(control);
            }
            else if (magicResourceVersion == Resource.KnownHeaderVersion || fileName.EndsWith("_c", StringComparison.Ordinal))
            {
                var resource = new Resource();
                if (input != null)
                {
                    resource.Read(new MemoryStream(input));
                }
                else
                {
                    resource.Read(fileName);
                }

                var resTabs = new TabControl
                {
                    Dock = DockStyle.Fill,
                };

                switch (resource.ResourceType)
                {
                case ResourceType.Texture:
                    var tab2 = new TabPage("TEXTURE")
                    {
                        AutoScroll = true,
                    };

                    try
                    {
                        var tex = (Texture)resource.Blocks[BlockType.DATA];

                        var control = new Forms.Texture
                        {
                            BackColor = Color.Black,
                        };
                        control.SetImage(tex.GenerateBitmap().ToBitmap(), Path.GetFileNameWithoutExtension(fileName), tex.Width, tex.Height);

                        tab2.Controls.Add(control);
                        Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as an image", fileName, new ExportData {
                            Resource = resource
                        });
                    }
                    catch (Exception e)
                    {
                        var control = new TextBox
                        {
                            Dock      = DockStyle.Fill,
                            Font      = new Font(FontFamily.GenericMonospace, 8),
                            Multiline = true,
                            ReadOnly  = true,
                            Text      = e.ToString(),
                        };

                        tab2.Controls.Add(control);
                    }

                    resTabs.TabPages.Add(tab2);
                    break;

                case ResourceType.Panorama:
                    if (((Panorama)resource.Blocks[BlockType.DATA]).Names.Count > 0)
                    {
                        var nameTab     = new TabPage("PANORAMA NAMES");
                        var nameControl = new DataGridView
                        {
                            Dock                = DockStyle.Fill,
                            AutoSize            = true,
                            ReadOnly            = true,
                            AllowUserToAddRows  = false,
                            AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
                            DataSource          = new BindingSource(new BindingList <Panorama.NameEntry>(((Panorama)resource.Blocks[BlockType.DATA]).Names), null),
                        };
                        nameTab.Controls.Add(nameControl);
                        resTabs.TabPages.Add(nameTab);
                    }

                    break;

                case ResourceType.PanoramaLayout:
                    Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as XML", fileName, new ExportData {
                        Resource = resource
                    });
                    break;

                case ResourceType.PanoramaScript:
                    Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as JS", fileName, new ExportData {
                        Resource = resource
                    });
                    break;

                case ResourceType.PanoramaStyle:
                    Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as CSS", fileName, new ExportData {
                        Resource = resource
                    });
                    break;

                case ResourceType.Particle:
                    var particleGLControl = new GLRenderControl();
                    particleGLControl.Load += (_, __) =>
                    {
                        particleGLControl.Camera.SetViewportSize(particleGLControl.Control.Width, particleGLControl.Control.Height);
                        particleGLControl.Camera.SetLocation(new Vector3(200));
                        particleGLControl.Camera.LookAt(new Vector3(0));

                        var particleSystem   = new ParticleSystem(resource);
                        var particleGrid     = new ParticleGrid(20, 5);
                        var particleRenderer = new ParticleRenderer(particleSystem, vrfGuiContext);

                        particleGLControl.Paint += (sender, args) =>
                        {
                            particleGrid.Render(args.Camera.ProjectionMatrix, args.Camera.CameraViewMatrix);

                            // Updating FPS-coupled dynamic step
                            particleRenderer.Update(args.FrameTime);
                            particleRenderer.Render(args.Camera);
                        };
                    };

                    var particleRendererTab = new TabPage("PARTICLE");
                    particleRendererTab.Controls.Add(particleGLControl.Control);
                    resTabs.TabPages.Add(particleRendererTab);
                    break;

                case ResourceType.Sound:
                    var soundTab = new TabPage("SOUND");
                    var ap       = new AudioPlayer(resource, soundTab);
                    resTabs.TabPages.Add(soundTab);

                    Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as {((Sound)resource.Blocks[BlockType.DATA]).Type}", fileName, new ExportData {
                        Resource = resource
                    });

                    break;

                case ResourceType.World:
                    var world       = new World(resource);
                    var renderWorld = new RenderWorld(world);
                    var worldmv     = new Renderer(mainTabs, fileName, currentPackage, RenderSubject.World);
                    renderWorld.AddObjects(worldmv, fileName, currentPackage);

                    var worldmeshTab   = new TabPage("MAP");
                    var worldglControl = worldmv.CreateGL();
                    worldmeshTab.Controls.Add(worldglControl);
                    resTabs.TabPages.Add(worldmeshTab);
                    break;

                case ResourceType.WorldNode:
                    var node   = new RenderWorldNode(resource);
                    var nodemv = new Renderer(mainTabs, fileName, currentPackage);
                    node.AddMeshes(nodemv, fileName, currentPackage);

                    var nodemeshTab   = new TabPage("MAP");
                    var nodeglControl = nodemv.CreateGL();
                    nodemeshTab.Controls.Add(nodeglControl);
                    resTabs.TabPages.Add(nodemeshTab);
                    break;

                case ResourceType.Model:
                    // Create model
                    var model       = new Model(resource);
                    var renderModel = new RenderModel(model);

                    // Create skeleton
                    var skeleton = model.GetSkeleton();

                    // Create tab
                    var modelmeshTab = new TabPage("MESH");
                    var modelmv      = new Renderer(mainTabs, fileName, currentPackage, RenderSubject.Model);
                    renderModel.LoadMeshes(modelmv, fileName, Matrix4.Identity, Vector4.One, currentPackage);

                    // Add skeleton to renderer
                    modelmv.SetSkeleton(skeleton);

                    // Add animations if available
                    var animGroupPaths = renderModel.GetAnimationGroups();
                    foreach (var animGroupPath in animGroupPaths)
                    {
                        var animGroup = FileExtensions.LoadFileByAnyMeansNecessary(animGroupPath + "_c", fileName, currentPackage);

                        modelmv.AddAnimations(AnimationGroupLoader.LoadAnimationGroup(animGroup, fileName));
                    }

                    //Initialise OpenGL
                    var modelglControl = modelmv.CreateGL();
                    modelmeshTab.Controls.Add(modelglControl);
                    resTabs.TabPages.Add(modelmeshTab);
                    break;

                case ResourceType.Mesh:
                    if (!resource.Blocks.ContainsKey(BlockType.VBIB))
                    {
                        Console.WriteLine("Old style model, no VBIB!");
                        break;
                    }

                    var meshTab = new TabPage("MESH");
                    var mv      = new Renderer(mainTabs, fileName, currentPackage, RenderSubject.Model);

                    Invoke(new ExportDel(AddToExport), $"Export {Path.GetFileName(fileName)} as OBJ", fileName, new ExportData {
                        Resource = resource, Renderer = mv
                    });

                    mv.AddMeshObject(new MeshObject {
                        Resource = resource
                    });
                    var glControl = mv.CreateGL();
                    meshTab.Controls.Add(glControl);
                    resTabs.TabPages.Add(meshTab);
                    break;
                }

                foreach (var block in resource.Blocks)
                {
                    if (block.Key == BlockType.RERL)
                    {
                        var externalRefsTab = new TabPage("External Refs");

                        var externalRefs = new DataGridView
                        {
                            Dock = DockStyle.Fill,
                            AutoGenerateColumns = true,
                            AutoSize            = true,
                            ReadOnly            = true,
                            AllowUserToAddRows  = false,
                            AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
                            DataSource          = new BindingSource(new BindingList <ResourceExtRefList.ResourceReferenceInfo>(resource.ExternalReferences.ResourceRefInfoList), null),
                        };

                        externalRefsTab.Controls.Add(externalRefs);

                        resTabs.TabPages.Add(externalRefsTab);

                        continue;
                    }

                    if (block.Key == BlockType.NTRO)
                    {
                        if (((ResourceIntrospectionManifest)block.Value).ReferencedStructs.Count > 0)
                        {
                            var externalRefsTab = new TabPage("Introspection Manifest: Structs");

                            var externalRefs = new DataGridView
                            {
                                Dock = DockStyle.Fill,
                                AutoGenerateColumns = true,
                                AutoSize            = true,
                                ReadOnly            = true,
                                AllowUserToAddRows  = false,
                                AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
                                DataSource          = new BindingSource(new BindingList <ResourceIntrospectionManifest.ResourceDiskStruct>(((ResourceIntrospectionManifest)block.Value).ReferencedStructs), null),
                            };

                            externalRefsTab.Controls.Add(externalRefs);
                            resTabs.TabPages.Add(externalRefsTab);
                        }

                        if (((ResourceIntrospectionManifest)block.Value).ReferencedEnums.Count > 0)
                        {
                            var externalRefsTab = new TabPage("Introspection Manifest: Enums");
                            var externalRefs2   = new DataGridView
                            {
                                Dock = DockStyle.Fill,
                                AutoGenerateColumns = true,
                                AutoSize            = true,
                                ReadOnly            = true,
                                AllowUserToAddRows  = false,
                                AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill,
                                DataSource          = new BindingSource(new BindingList <ResourceIntrospectionManifest.ResourceDiskEnum>(((ResourceIntrospectionManifest)block.Value).ReferencedEnums), null),
                            };

                            externalRefsTab.Controls.Add(externalRefs2);
                            resTabs.TabPages.Add(externalRefsTab);
                        }

                        //continue;
                    }

                    var tab2 = new TabPage(block.Key.ToString());
                    try
                    {
                        var control = new TextBox();
                        control.Font = new Font(FontFamily.GenericMonospace, control.Font.Size);

                        if (block.Key == BlockType.DATA)
                        {
                            switch (resource.ResourceType)
                            {
                            case ResourceType.Particle:
                            case ResourceType.Mesh:
                                //Wrap it around a KV3File object to get the header.
                                control.Text = NormalizeLineEndings(((BinaryKV3)block.Value).GetKV3File().ToString());
                                break;

                            default:
                                control.Text = NormalizeLineEndings(block.Value.ToString());
                                break;
                            }
                        }
                        else
                        {
                            control.Text = NormalizeLineEndings(block.Value.ToString());
                        }

                        control.Dock       = DockStyle.Fill;
                        control.Multiline  = true;
                        control.ReadOnly   = true;
                        control.ScrollBars = ScrollBars.Both;
                        tab2.Controls.Add(control);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);

                        var bv = new ByteViewer();
                        bv.Dock = DockStyle.Fill;
                        tab2.Controls.Add(bv);

                        Invoke((MethodInvoker)(() =>
                        {
                            resource.Reader.BaseStream.Position = block.Value.Offset;
                            bv.SetBytes(resource.Reader.ReadBytes((int)block.Value.Size));
                        }));
                    }

                    resTabs.TabPages.Add(tab2);
                }

                tab.Controls.Add(resTabs);
            }
            else
            {
                var resTabs = new TabControl
                {
                    Dock = DockStyle.Fill,
                };
                tab.Controls.Add(resTabs);

                var bvTab = new TabPage("Hex");
                var bv    = new ByteViewer
                {
                    Dock = DockStyle.Fill,
                };
                bvTab.Controls.Add(bv);
                resTabs.TabPages.Add(bvTab);

                if (input != null && !input.Contains <byte>(0x00))
                {
                    var textTab = new TabPage("Text");
                    var text    = new TextBox
                    {
                        Dock       = DockStyle.Fill,
                        ScrollBars = ScrollBars.Vertical,
                        Multiline  = true,
                        ReadOnly   = true,
                        Text       = System.Text.Encoding.UTF8.GetString(input),
                    };
                    textTab.Controls.Add(text);
                    resTabs.TabPages.Add(textTab);
                    resTabs.SelectedTab = textTab;
                }

                Invoke((MethodInvoker)(() =>
                {
                    if (input != null)
                    {
                        bv.SetBytes(input);
                    }
                    else
                    {
                        bv.SetFile(fileName);
                    }
                }));
            }

            return(tab);
        }
Esempio n. 7
0
        /// <summary>
        ///
        /// </summary>
        public override void Initialize()
        {
            debugFont = Game.Content.Load <DiscTexture>("conchars");

            var bounds = Game.RenderSystem.DisplayBounds;

            masterView = Game.RenderSystem.RenderWorld;


            Game.RenderSystem.RemoveLayer(masterView);

            viewLayer = new RenderLayer(Game);
            Game.RenderSystem.AddLayer(viewLayer);

            Game.RenderSystem.DisplayBoundsChanged += (s, e) =>
            {
                masterView.Resize(Game.RenderSystem.DisplayBounds.Width, Game.RenderSystem.DisplayBounds.Height);
            };

            viewLayer.SpriteLayers.Add(console.ConsoleSpriteLayer);


            Game.Keyboard.KeyDown += Keyboard_KeyDown;

            LoadContent();

            Game.Reloading += (s, e) => LoadContent();


            Game.Touch.Tap          += args => System.Console.WriteLine("You just perform tap gesture at point: " + args.Position);
            Game.Touch.DoubleTap    += args => System.Console.WriteLine("You just perform double tap gesture at point: " + args.Position);
            Game.Touch.SecondaryTap += args => System.Console.WriteLine("You just perform secondary tap gesture at point: " + args.Position);
            Game.Touch.Manipulate   += args => System.Console.WriteLine("You just perform touch manipulation: " + args.Position + "	" + args.ScaleDelta + "	" + args.RotationDelta + " " + args.IsEventBegin + " " + args.IsEventEnd);


            graph        = new GraphLayer(Game);
            graph.Camera = new GreatCircleCamera();

            Game.Mouse.Scroll += (sender, args) =>
            {
                graph.Camera.Zoom(args.WheelDelta > 0 ? -0.1f : 0.1f);
            };

            Game.Mouse.Move += (sender, args) =>
            {
                if (Game.Keyboard.IsKeyDown(Keys.LeftButton))
                {
                    graph.Camera.RotateCamera(mouseDelta);
                }
                if (Game.Keyboard.IsKeyDown(Keys.MiddleButton))
                {
                    graph.Camera.MoveCamera(mouseDelta);
                }
            };

            var g = new Graph();
            // Здесь должно быть чтение из файла и запись в узлы
            string path = @"Data/Hela_sonic_LMNA_interactions_diploid_10071362_iter_final.csv";
            Dictionary <int, Graph.Vertice> allVertices = new Dictionary <int, Graph.Vertice>();
            List <Graph.Link> allEdges = new List <Graph.Link>();
            var zone       = -1;
            var currentChr = "";
            var zoneIndex  = -1;
            var lines      = File.ReadAllLines(path);
            var index      = 0;

            foreach (var line in lines)
            {
                var info = line.Split(',');
                int id   = index++;
                Log.Message(info[0] + ' ' + id);

                var chr = info[0].Split(':')[0];
                if (!chr.Equals(currentChr))
                {
                    zoneIndex++;
                    currentChr = chr;
                    Log.Message("zone" + zoneIndex);
                }

                if (!allVertices.ContainsKey(id))
                {
                    if (zone == zoneIndex && id != 0)
                    {
                        try
                        {
                            var type = 1;
                            // var id = i;
                            var stock = id - 1;


                            Graph.Link link = new Graph.Link()
                            {
                                SourceID      = id,
                                StockID       = stock,
                                Length        = 10,
                                Force         = 0,
                                Orientation   = Vector3.Zero,
                                Weight        = graph.cfg.MaxLinkWidth,
                                LinkType      = type + 1,
                                Color         = paletteByZone.ElementAt(zone).ToVector4(),
                                Width         = 10,
                                LifeTime      = 0,
                                TotalLifeTime = 0,
                            };
                            allEdges.Add(link);
                        }

                        catch (Exception e)
                        {
                            Log.Message(e.StackTrace);
                        }
                    }
                    else
                    {
                        zone = zoneIndex;
                    }
                    Graph.Vertice node = new Graph.Vertice()
                    {
                        Position     = new Vector3(float.Parse(info[1]), float.Parse(info[2]), float.Parse(info[3])) * 1000, //gcConfig.LinkSize,
                        Velocity     = Vector3.Zero,
                        Color        = paletteByZone.ElementAt(zone).ToVector4(),                                            //to bechange
                        Size         = float.Parse(info[4]) * 1000,
                        Acceleration = Vector3.Zero,
                        Mass         = 0,
                        Information  = 1,
                        Id           = id,
                        Group        = zone,
                        Charge       = 1,
                        Cluster      = 0,
                        ColorType    = zone * 100 + graph.cfg.MinParticleRadius * 5,
                    };

                    allVertices.Add(id, node);
                }
            }
            //try
            //{
            //    for (int i = 0; i < lines.Count() - 1; i++)
            //    {
            //        var type = 1;
            //        var id = i;
            //        var stock = i + 1;


            //        Graph.Link link = new Graph.Link()
            //        {
            //            SourceID = id,
            //            StockID = stock,
            //            Length = 10,
            //            Force = 0,
            //            Orientation = Vector3.Zero,
            //            Weight = graph.cfg.MaxLinkWidth,
            //            LinkType = type + 1,
            //            Color = ColorConstant.paletteWhite.ElementAt(type + 1).ToVector4(),
            //            Width = 10,
            //            LifeTime = 0,
            //            TotalLifeTime = 0,
            //        };
            //        allEdges.Add(link);
            //    }
            //}
            //catch (Exception e)
            //{
            //    Log.Message(e.StackTrace);
            //}

            foreach (var pair in allVertices)
            {
                var node = pair.Value;
                //node.ColorType = 0;
                g.nodes.Add(node);
            }
            g.NodesCount = g.nodes.Count;
            g.links      = allEdges;

            graph.SetGraph(g);
            graph.cfg.GraphLayout = @"Graph/Signaling";
            graph.Initialize();
            graph.staticMode = true;
            graph.Pause();
            graph.AddMaxParticles();



            viewLayer.GraphLayers.Add(graph);
        }
Esempio n. 8
0
        void RenderOpaqueGBuffer(Camera RenderCamera, CullingResults CullingData, NativeArray <FVisibleMeshBatch> VisibleMeshBatchList)
        {
            //Request Resource
            RendererList  RenderList   = RendererList.Create(CreateRendererListDesc(CullingData, RenderCamera, InfinityPassIDs.OpaqueGBuffer));
            RDGTextureRef DepthTexture = GraphBuilder.ScopeTexture(InfinityShaderIDs.RT_DepthBuffer);

            RDGTextureDesc GBufferDescA = new RDGTextureDesc(RenderCamera.pixelWidth, RenderCamera.pixelHeight)
            {
                clearBuffer = true, clearColor = Color.clear, dimension = TextureDimension.Tex2D, enableMSAA = false, bindTextureMS = false, name = "GBufferATexture", colorFormat = GraphicsFormat.R16G16B16A16_UNorm
            };
            RDGTextureDesc GBufferDescB = new RDGTextureDesc(RenderCamera.pixelWidth, RenderCamera.pixelHeight)
            {
                clearBuffer = true, clearColor = Color.clear, dimension = TextureDimension.Tex2D, enableMSAA = false, bindTextureMS = false, name = "GBufferBTexture", colorFormat = GraphicsFormat.A2B10G10R10_UIntPack32
            };
            RDGTextureRef GBufferTextureA = GraphBuilder.CreateTexture(GBufferDescA, InfinityShaderIDs.RT_ThinGBufferA);
            RDGTextureRef GBufferTextureB = GraphBuilder.CreateTexture(GBufferDescB, InfinityShaderIDs.RT_ThinGBufferB);

            GraphBuilder.ScopeTexture(InfinityShaderIDs.RT_ThinGBufferA, GBufferTextureA);
            GraphBuilder.ScopeTexture(InfinityShaderIDs.RT_ThinGBufferB, GBufferTextureB);

            //Add RenderPass
            GraphBuilder.AddRenderPass <FOpaqueGBufferData>("OpaqueGBuffer", ProfilingSampler.Get(CustomSamplerId.OpaqueGBuffer),
                                                            (ref FOpaqueGBufferData PassData, ref RDGPassBuilder PassBuilder) =>
            {
                PassData.RendererList = RenderList;
                PassData.GBufferA     = PassBuilder.UseColorBuffer(GBufferTextureA, 0);
                PassData.GBufferB     = PassBuilder.UseColorBuffer(GBufferTextureB, 1);
                PassData.DepthBuffer  = PassBuilder.UseDepthBuffer(DepthTexture, EDepthAccess.ReadWrite);
            },
                                                            (ref FOpaqueGBufferData PassData, RDGContext GraphContext) =>
            {
                //Draw UnityRenderer
                RendererList GBufferRenderList = PassData.RendererList;
                GBufferRenderList.drawSettings.perObjectData         = PerObjectData.Lightmaps;
                GBufferRenderList.drawSettings.enableInstancing      = RenderPipelineAsset.EnableInstanceBatch;
                GBufferRenderList.drawSettings.enableDynamicBatching = RenderPipelineAsset.EnableDynamicBatch;
                GBufferRenderList.filteringSettings.renderQueueRange = new RenderQueueRange(0, 2450);
                GraphContext.RenderContext.DrawRenderers(GBufferRenderList.cullingResult, ref GBufferRenderList.drawSettings, ref GBufferRenderList.filteringSettings);

                //Draw CustomRenderer
                RenderWorld World = GraphContext.World;
                NativeList <FMeshBatch> MeshBatchList = World.GetMeshBatchColloctor().GetMeshBatchList();

                if (VisibleMeshBatchList.Length == 0)
                {
                    return;
                }

                for (int i = 0; i < VisibleMeshBatchList.Length; i++)
                {
                    FVisibleMeshBatch VisibleMeshBatch = VisibleMeshBatchList[i];
                    if (VisibleMeshBatch.visible)
                    {
                        FMeshBatch MeshBatch = MeshBatchList[VisibleMeshBatch.index];
                        Mesh mesh            = World.WorldMeshList.Get(MeshBatch.Mesh);
                        Material material    = World.WorldMaterialList.Get(MeshBatch.Material);

                        if (mesh && material)
                        {
                            GraphContext.CmdBuffer.DrawMesh(mesh, MeshBatch.Matrix_LocalToWorld, material, MeshBatch.SubmeshIndex, 2);
                        }
                    }
                }
            });
        }
Esempio n. 9
0
 void OnEnable()
 {
     bInit       = true;
     RenderScene = new RenderWorld("RenderScene");
     RenderScene.Initializ();
 }