public void Invoke() { var grid = m_gridReference.Value; var pos = m_gridPos.Value.Vector3Int(); var gridTile = m_setData.GetTileIdx(grid[pos.x, pos.y, pos.z]); if (gridTile != m_auto.TileIdx) { return; } var belowTile = m_wall.TileIdx; var hasBelow = pos.y > 0; if (hasBelow) { belowTile = m_setData.GetTileIdx(m_gridReference.Value[pos.x, pos.y - 1, pos.z]); } if (belowTile == m_floor.TileIdx || belowTile == m_empty.TileIdx) { grid[pos.x, pos.y, pos.z] = m_setData.GetCombinedTile(gridTile, m_empty.TileIdx); } else if (belowTile == m_wall.TileIdx) { grid[pos.x, pos.y, pos.z] = m_setData.GetCombinedTile(gridTile, m_floor.TileIdx); } }
void UpdateGrid(Vector3 pos, HardEdgeState flag, int floorTexTypes, int activeFloorNodes) { var x = (int)pos.x; var y = (int)pos.y; var z = (int)pos.z; var tileData = m_targetGrid.Value[x, y, z]; tileData = m_hardEdgeSet.GetCombinedTile(tileData, (uint)flag); tileData = m_floorTexTypesSet.GetCombinedTile(tileData, (uint)floorTexTypes); tileData = m_activeFloorNodesSet.GetCombinedTile(tileData, (uint)activeFloorNodes); m_targetGrid.Value[x, y, z] = tileData; }
public static void TileSelectionGUI(ref TileDrawingOpData opDat, TilesSetData tileSetData) { //GUILayout.Label("Texture: ", GUILayout.Width(100)); //if (ActivityButton2(_PaintTexLeft == -1, _PaintTexRight == -1, "None", GUILayout.Width(100))) //{ // if (Event.current.button == 1) // _PaintTexRight = -1; // else _PaintTexLeft = -1; //} ushort tIdx = 0; for (; tIdx < tileSetData.Count; ++tIdx) { var current = tileSetData.TileConfig?.Result[tIdx]; if (current == null) { continue; } if (tIdx % 5 == 0) { EditorGUILayout.BeginHorizontal(); } var toolName = current.TileName; //Texture2D previewTex = null; //var floorVar = current.FloorVariations; var lIdx = tileSetData.GetTileIdx(opDat.PaintTileTypeLeft); var rIdx = tileSetData.GetTileIdx(opDat.PaintTileTypeRight); if (CustomGUI.ActivityButton2(lIdx == tIdx, rIdx == tIdx, toolName, current.PreviewTex, GUILayout.Width(100))) { //var prevLeft = _PaintTexLeft; //var prevRight = _PaintTexRight; if (Event.current.button == 1) { opDat.PaintTileTypeRight = tileSetData.GetCombinedTile(opDat.PaintTileTypeRight, tIdx); } else { opDat.PaintTileTypeLeft = tileSetData.GetCombinedTile(opDat.PaintTileTypeLeft, tIdx); } //if (_PaintTexLeft == _PaintTexRight && _PaintTileTypeLeft!= -1) //{ // if (Event.current.button == 1) // _PaintTexLeft = prevRight; // else _PaintTexRight = prevLeft; //} } if (tIdx % 5 == 4) { EditorGUILayout.EndHorizontal(); } } if (tIdx % 5 != 0) { EditorGUILayout.EndHorizontal(); } }