//------------------------------------------------------------------------- public bool SetupBinaryImageAndIslands(out int numColliderRegions, out object spriteCollectionDefinition, object spriteCollection, int spriteID) { numColliderRegions = 0; spriteCollectionDefinition = null; mMainTex = GetTextureRef(spriteCollection, spriteID); if (mMainTex == null) { //Debug.LogError("No sprite texture found at sprite '" + tk2dSpriteComponent.name + "' with spriteID " + spriteID + "."); Debug.LogError("No sprite texture found at sprite with spriteID " + spriteID + "."); return(false); } spriteCollectionDefinition = GetTK2DSpriteCollectionDefinition(spriteCollection, spriteID); if (spriteCollectionDefinition == null) { // last error is already set in GetTK2DSpriteCollectionDefinition() above. return(false); } if (mOutlineAlgorithm == null) { mOutlineAlgorithm = new PolygonOutlineFromImageFrontend(); } int regionXOffset = 0; int regionYOffset = 0; int regionWidth = UsedTexture.width; int regionHeight = UsedTexture.height; bool isRegionUsed = false; if (mRegionIndependentParameters.CustomTex == null) { isRegionUsed = ReadRegionParameters(out regionXOffset, out regionYOffset, out regionWidth, out regionHeight, spriteCollectionDefinition); regionYOffset = mMainTex.height - regionYOffset - regionHeight; } mOutlineAlgorithm.BinaryAlphaThresholdImageFromTexture(ref mBinaryImage, out mBinaryImageWidth, out mBinaryImageHeight, UsedTexture, mRegionIndependentParameters.AlphaOpaqueThreshold, isRegionUsed, regionXOffset, regionYOffset, regionWidth, regionHeight); int imageSize = mBinaryImageWidth * mBinaryImageHeight; if (mClassificationImage == null || mClassificationImage.Length < imageSize) { mClassificationImage = new int[imageSize]; } bool anyIslandsFound = CalculateIslandStartingPoints(mBinaryImage, mBinaryImageWidth, mBinaryImageHeight, ref mClassificationImage, ref mIslands, ref mSeaRegions); if (!anyIslandsFound) { return(false); } AlphaMeshCollider.SetupColliderRegions(out mColliderRegions, mIslands, mSeaRegions); numColliderRegions = mColliderRegions.Length; SetupColliderRegionParameters(ref mColliderRegionParameters, mRegionIndependentParameters.DefaultMaxPointCount, mIslands, mSeaRegions); return(true); }