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; }
/// <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; }
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>(); }
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); }
/// <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); }
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); }
/// <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); }
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); } } } }); }
void OnEnable() { bInit = true; RenderScene = new RenderWorld("RenderScene"); RenderScene.Initializ(); }