//------------------------------------------ //called to create the mask form the texture public unsafe bool applyMask(BTerrainQuadNode node, int x, int z, bool alternate) { UInt32 *MskPtr = mStroke.getBits(); mMskImgWidth = (uint)mStroke.cBufferSize; mMskImgHeight = (uint)mStroke.cBufferSize; bool changed = Texturing_LayerEditor.setMaskAlphaToTextureBlending(node, BTerrainTexturing.getAlphaTextureWidth(), BTerrainTexturing.getAlphaTextureWidth(), MskPtr, mMskImgWidth, mMskImgHeight, mStroke.mAlphaValue, x, z, alternate); mStroke.unlockBits(); return(changed); }
//------------------------------------------ //called to apply a texutre directly to a masked area public unsafe bool applyToMask(BTerrainQuadNode node) { bool changed = false; BTerrainQuadNodeDesc desc = node.getDesc(); changed = Texturing_LayerEditor.setIndexToMaskedArea(node, desc.mMinXVert, desc.mMinZVert, desc.mMaxXVert, desc.mMaxZVert, (char)mTexArrayIndex); if (changed) { //node.getTextureData().free(); for (int i = 0; i < Terrain.BTerrainTexturing.cMaxNumLevels; i++) { node.getTextureData(i).free(); } } return(changed); }
//------------------------------------------ //called to apply the texture to the terrain public unsafe bool applyToDstLayer(BTerrainQuadNode node, int terrainGridX, int terrainGridZ, bool selectionMode, bool alternate) { UInt32 *MskPtr = mStroke.getBits(); mMskImgWidth = (uint)mStroke.cBufferSize; mMskImgHeight = (uint)mStroke.cBufferSize; bool changed = Texturing_LayerEditor.setMaskAlphaToLayer(node, MskPtr, mMskImgWidth, mMskImgHeight, mStroke.mAlphaValue, terrainGridX, terrainGridZ, (char)mTexArrayIndex); mStroke.unlockBits(); if (changed) { //node.getTextureData().free(); for (int i = 0; i < Terrain.BTerrainTexturing.cMaxNumLevels; i++) { node.getTextureData(i).free(); } } return(true); }