Esempio n. 1
0
def applyToChunkSlices(self, op, chunk, slices, brushBox, brushBoxThisChunk):
    brushMask = createBrushMask(op.tool.getBrushSize(), op.options['Style'], brushBox.origin, brushBoxThisChunk, op.options['Noise'], op.options['Hollow'])

    blocks = chunk.Blocks[slices]
    data = chunk.Data[slices]

    if op.options['Block'].wildcard:
        print "Wildcard replace"
        blocksToReplace = []
        for i in range(16):
            blocksToReplace.append(op.editor.level.materials.blockWithID(op.options['Block'].ID, i))
    else:
        blocksToReplace = [op.options['Block']]

    replaceTable = block_fill.blockReplaceTable(blocksToReplace)
    replaceMask = replaceTable[blocks, data]
    brushMask &= replaceMask

    chunk.Blocks[slices][brushMask] = op.options['Block To Replace With'].ID
    chunk.Data[slices][brushMask] = op.options['Block To Replace With'].blockData
Esempio n. 2
0
def applyToChunkSlices(self, op, chunk, slices, brushBox, brushBoxThisChunk):
    brushMask = createBrushMask(op.tool.getBrushSize(), op.options['Style'], brushBox.origin, brushBoxThisChunk, op.options['Noise'], op.options['Hollow'])

    replaceWith1 = op.options['Block 1']
    chanceA = op.options['Weight 1']
    replaceWith2 = op.options['Block 2']
    chanceB = op.options['Weight 2']
    replaceWith3 = op.options['Block 3']
    chanceC = op.options['Weight 3']
    replaceWith4 = op.options['Block 4']
    chanceD = op.options['Weight 4']

    totalChance = chanceA + chanceB + chanceC + chanceD

    if totalChance == 0:
        print "Total Chance value can't be 0."
        return

    blocks = chunk.Blocks[slices]
    data = chunk.Data[slices]

    if op.options['Block'].wildcard:
        print "Wildcard replace"
        blocksToReplace = []
        for i in range(16):
            blocksToReplace.append(op.editor.level.materials.blockWithID(op.options['Block'].ID, i))
    else:
        blocksToReplace = [op.options['Block']]

    replaceTable = block_fill.blockReplaceTable(blocksToReplace)
    replaceMask = replaceTable[blocks, data]
    brushMask &= replaceMask

    brushMaskOption1 = numpy.copy(brushMask)
    brushMaskOption2 = numpy.copy(brushMask)
    brushMaskOption3 = numpy.copy(brushMask)
    brushMaskOption4 = numpy.copy(brushMask)

    x = -1

    for _ in brushMask:
        x += 1
        y = -1
        for _ in brushMask[x]:
            y += 1
            z = -1
            for _ in brushMask[x][y]:
                z += 1
                if brushMask[x][y][z]:
                    randomChance = random.randint(1, totalChance)
                    if chanceA >= randomChance:
                        brushMaskOption1[x][y][z] = True
                        brushMaskOption2[x][y][z] = False
                        brushMaskOption3[x][y][z] = False
                        brushMaskOption4[x][y][z] = False
                        continue
                    if chanceA + chanceB >= randomChance:
                        brushMaskOption1[x][y][z] = False
                        brushMaskOption2[x][y][z] = True
                        brushMaskOption3[x][y][z] = False
                        brushMaskOption4[x][y][z] = False
                        continue
                    if chanceA + chanceB + chanceC >= randomChance:
                        brushMaskOption1[x][y][z] = False
                        brushMaskOption2[x][y][z] = False
                        brushMaskOption3[x][y][z] = True
                        brushMaskOption4[x][y][z] = False
                        continue
                    if chanceA + chanceB + chanceC + chanceD >= randomChance:
                        brushMaskOption1[x][y][z] = False
                        brushMaskOption2[x][y][z] = False
                        brushMaskOption3[x][y][z] = False
                        brushMaskOption4[x][y][z] = True
                        continue

    blocks[brushMaskOption1] = replaceWith1.ID
    data[brushMaskOption1] = replaceWith1.blockData
    blocks[brushMaskOption2] = replaceWith2.ID
    data[brushMaskOption2] = replaceWith2.blockData
    blocks[brushMaskOption3] = replaceWith3.ID
    data[brushMaskOption3] = replaceWith3.blockData
    blocks[brushMaskOption4] = replaceWith4.ID
    data[brushMaskOption4] = replaceWith4.blockData