public void SetTileProp(int type, int toType, byte bits, int specifiedIndex = -1, UVRotateType rotateType = UVRotateType.None) { this.type = type; this.toType = toType; this.bits = bits; this.specifiedIndex = specifiedIndex; this.rotateType = rotateType; }
void PaintNormalTile(PATile tile, int t, int specifiedIndex = -1, UVRotateType rotateType = UVRotateType.None) { if (tile == null) { return; } tile.SetTileProp(t, t, 0, specifiedIndex, rotateType); UpdateTileUV(tile); }
public void Reset() { ResetQtrTiles(); specifiedIndex = -1; rotateType = UVRotateType.None; element.Reset(); decalTilesetIndex = -1; //distance = -1; affectShuijing = null; }
void PaintTileDecal(PATile tile, UVRotateType rotateType = UVRotateType.None) { PaintNormalTile(tile, 0, tile.decalTilesetIndex, rotateType); }
public void PaintATileDecal(PATile tile) { if (tile == null || tile.decalTilesetIndex != -1) { return; } //融合处不能贴花 if (!tile.IsElementFull()) { return; } PATile[] nTiles = GetNeighboringTilesNxN(tile, 1); PATile leftTile = nTiles[1]; PATile topTile = nTiles[3]; PATile rightTile = nTiles[5]; PATile rightBottomTile = nTiles[6]; PATile bottomTile = nTiles[7]; foreach (var config in ConfigDataBase.instance.DecalConfigAsset.configs) { if (tile.decalTilesetIndex != -1) { return; } if (config.elementType != (int)tile.element.GetDecalSuitTileType()) { continue; } if (!config.elementValue.Contains(tile.element.GetMaxElementValue())) { continue; } TileSetType tileSetType = (TileSetType)config.tileSetType; if (tile.tileSetType != tileSetType) { continue; } //float rate = (config.maxRate - tile.distance * config.atten); int rate = config.rate; int randomValue = RandomManager.instance.Range(0, 1000); if (20 < randomValue) { continue; } //int randomRotate = RandomManager.instance.Range(0,4); //UVRotateType rotateType = (UVRotateType)randomRotate; UVRotateType rotateType = UVRotateType._90; if (config.decalType == (int)TileDecalType.Decal_2) { if (config.tileSetIndex.Count != 2) { Debug.LogError("config.tileSetIndex.Count != 2"); continue; } if (rotateType == UVRotateType._90) { if (rightTile == null || rightTile.decalTilesetIndex != -1 || !rightTile.IsElementFull()) { continue; } if (rightTile.tileSetType != tileSetType) { continue; } tile.decalTilesetIndex = config.tileSetIndex[0]; rightTile.decalTilesetIndex = config.tileSetIndex[1]; PaintTileDecal(rightTile, rotateType); } else if (rotateType == UVRotateType.None) { if (topTile == null || topTile.decalTilesetIndex != -1 || !topTile.IsElementFull()) { continue; } if (topTile.tileSetType != tileSetType) { continue; } tile.decalTilesetIndex = config.tileSetIndex[0]; topTile.decalTilesetIndex = config.tileSetIndex[1]; PaintTileDecal(topTile, rotateType); } else if (rotateType == UVRotateType._180) { if (bottomTile == null || bottomTile.decalTilesetIndex != -1 || !bottomTile.IsElementFull()) { continue; } if (bottomTile.tileSetType != tileSetType) { continue; } tile.decalTilesetIndex = config.tileSetIndex[0]; bottomTile.decalTilesetIndex = config.tileSetIndex[1]; PaintTileDecal(bottomTile, rotateType); } else if (rotateType == UVRotateType._270) { if (leftTile == null || leftTile.decalTilesetIndex != -1) { continue; } if (leftTile.tileSetType != tileSetType) { continue; } tile.decalTilesetIndex = config.tileSetIndex[0]; leftTile.decalTilesetIndex = config.tileSetIndex[1]; PaintTileDecal(leftTile, rotateType); } PaintTileDecal(tile, rotateType); } else if (config.decalType == (int)TileDecalType.Decal_4) { if (rightTile == null || rightTile.decalTilesetIndex != -1 || !rightTile.IsElementFull() || rightBottomTile == null || rightBottomTile.decalTilesetIndex != -1 || !rightBottomTile.IsElementFull() || bottomTile == null || bottomTile.decalTilesetIndex != -1 || !bottomTile.IsElementFull()) { continue; } if (rightTile.tileSetType != tileSetType) { continue; } if (rightBottomTile.tileSetType != tileSetType) { continue; } if (bottomTile.tileSetType != tileSetType) { continue; } if (config.tileSetIndex.Count != 4) { Debug.LogError("config.tileSetIndex.Count != 4"); continue; } if (rotateType == UVRotateType._90) { tile.decalTilesetIndex = config.tileSetIndex[0]; rightTile.decalTilesetIndex = config.tileSetIndex[1]; bottomTile.decalTilesetIndex = config.tileSetIndex[2]; rightBottomTile.decalTilesetIndex = config.tileSetIndex[3]; } else if (rotateType == UVRotateType.None) { tile.decalTilesetIndex = config.tileSetIndex[1]; rightTile.decalTilesetIndex = config.tileSetIndex[3]; bottomTile.decalTilesetIndex = config.tileSetIndex[0]; rightBottomTile.decalTilesetIndex = config.tileSetIndex[2]; } else if (rotateType == UVRotateType._270) { tile.decalTilesetIndex = config.tileSetIndex[3]; rightTile.decalTilesetIndex = config.tileSetIndex[2]; bottomTile.decalTilesetIndex = config.tileSetIndex[1]; rightBottomTile.decalTilesetIndex = config.tileSetIndex[0]; } else if (rotateType == UVRotateType._180) { tile.decalTilesetIndex = config.tileSetIndex[2]; rightTile.decalTilesetIndex = config.tileSetIndex[0]; bottomTile.decalTilesetIndex = config.tileSetIndex[3]; rightBottomTile.decalTilesetIndex = config.tileSetIndex[1]; } PaintTileDecal(tile, rotateType); PaintTileDecal(rightTile, rotateType); PaintTileDecal(bottomTile, rotateType); PaintTileDecal(rightBottomTile, rotateType); } else { if (config.tileSetIndex.Count != 1) { Debug.LogError("config.tileSetIndex.Count != 1"); continue; } tile.decalTilesetIndex = config.tileSetIndex[0]; PaintTileDecal(tile, rotateType); } } }