Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
        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();
            }
        }