private static void Init() { TileMapWindow window = (TileMapWindow)EditorWindow.GetWindow(typeof(TileMapWindow)); window.minSize = new Vector2(800, 600); window.title = "Tile Based Level Creator"; window.Show(); windowIsOpen = !windowIsOpen; }
public IEnumerable <IRenderable> UpdatePerFrameResources(IRendererContext context, IEnumerable <IRenderable> renderables) { var c = (VeldridRendererContext)context; var cl = c.CommandList; var gd = c.GraphicsDevice; ITextureManager textureManager = Resolve <ITextureManager>(); foreach (var buffer in _instanceBuffers) { buffer.Dispose(); } _instanceBuffers.Clear(); foreach (var resourceSet in _resourceSets) { resourceSet.Dispose(); } _resourceSets.Clear(); void UpdateTilemapWindow(TileMapWindow window) { var tilemap = window.TileMap; window.InstanceBufferId = _instanceBuffers.Count; var buffer = gd.ResourceFactory.CreateBuffer(new BufferDescription((uint)window.Length * TileMap.Tile.StructSize, BufferUsage.VertexBuffer)); buffer.Name = $"B_Tile3DInst{_instanceBuffers.Count}"; cl.UpdateBuffer(buffer, 0, ref tilemap.Tiles[window.Offset], TileMap.Tile.StructSize * (uint)window.Length); _instanceBuffers.Add(buffer); textureManager.PrepareTexture(tilemap.Floors, context); textureManager.PrepareTexture(tilemap.Walls, context); } foreach (var renderable in renderables) { if (renderable is TileMap tilemap) { var dummyWindow = new TileMapWindow(tilemap, 0, tilemap.Tiles.Length); UpdateTilemapWindow(dummyWindow); yield return(dummyWindow); } else if (renderable is TileMapWindow window) { UpdateTilemapWindow(window); yield return(window); } } }
public void LoadListsAndGUIFirst() { #region Load GUI Files if (!mapCreatorWindow) { mapCreatorWindow = (TileMapWindow)EditorWindow.GetWindow(typeof(TileMapWindow)); } tileBaseTex = Resources.Load(mapCreatorWindow.directory.resourceFile[0]) as Texture2D; tileHighLTex = Resources.Load(mapCreatorWindow.directory.resourceFile[1]) as Texture2D; #endregion #region Load Game Lists backgroundTileList = Resources.LoadAll <GameObject>(mapCreatorWindow.directory.resourcesPath[4]); mecanicTileList = Resources.LoadAll <GameObject>(mapCreatorWindow.directory.resourcesPath[5]); foregroundTileList = Resources.LoadAll <GameObject>(mapCreatorWindow.directory.resourcesPath[6]); #endregion #region Load Tile In Window LoadCurrentTabList(); DrawCurrentTiles(); GetTilePositions(); #endregion }
void InitTile(GameObject vTile, int vGridx, int vGridY) { //assign sprite SpriteRenderer spriteRenderer = vTile.GetComponent <SpriteRenderer> (); if (spriteRenderer == null) { spriteRenderer = vTile.AddComponent <SpriteRenderer> (); } spriteRenderer.sprite = AssetDatabase.LoadAssetAtPath <Sprite> (TileMapWindow.GetTextureAssetPath()); //need to optimise //assign tile info TileInfo tileInfo = vTile.GetComponent <TileInfo> (); if (tileInfo == null) { tileInfo = vTile.AddComponent <TileInfo> (); } tileInfo.m_ElemType = TileMapWindow.m_SelectElemType; //grid pos tileInfo.m_GridX = vGridx; tileInfo.m_GridY = vGridY; }
public void UpdatePerFrameResources(IRendererContext context, IEnumerable <IRenderable> renderables, IList <IRenderable> results) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (renderables == null) { throw new ArgumentNullException(nameof(renderables)); } if (results == null) { throw new ArgumentNullException(nameof(results)); } var c = (VeldridRendererContext)context; var cl = c.CommandList; var gd = c.GraphicsDevice; ITextureManager textureManager = Resolve <ITextureManager>(); foreach (var buffer in _instanceBuffers) { buffer.Dispose(); } _instanceBuffers.Clear(); foreach (var resourceSet in _resourceSets) { resourceSet.Dispose(); } _resourceSets.Clear(); void UpdateTilemapWindow(TileMapWindow window) { var tilemap = window.TileMap; cl.PushDebugGroup($"Tiles3D:{tilemap.Name}:{tilemap.RenderOrder}"); window.InstanceBufferId = _instanceBuffers.Count; var buffer = gd.ResourceFactory.CreateBuffer(new BufferDescription((uint)window.Length * DungeonTile.StructSize, BufferUsage.VertexBuffer)); buffer.Name = $"B_Tile3DInst{_instanceBuffers.Count}"; unsafe { fixed(DungeonTile *tile = &tilemap.Tiles[0]) { cl.UpdateBuffer( buffer, 0, (IntPtr)(&tile[window.Offset]), DungeonTile.StructSize * (uint)window.Length); } } _instanceBuffers.Add(buffer); textureManager.PrepareTexture(tilemap.Floors, context); textureManager.PrepareTexture(tilemap.Walls, context); cl.PopDebugGroup(); } foreach (var renderable in renderables) { if (renderable is DungeonTileMap tilemap) { var dummyWindow = new TileMapWindow(tilemap, 0, tilemap.Tiles.Length); UpdateTilemapWindow(dummyWindow); results.Add(dummyWindow); } else if (renderable is TileMapWindow window) { UpdateTilemapWindow(window); results.Add(window); } } }