private void initTexture() { GAFAtlasElementData element = atlasElement; GAFTexturesData info = textureInfo; int csf = (int)movieClip.settings.csf; m_MaskTexture = new Texture2D( (int)(element.width * csf) , (int)(element.height * csf) , TextureFormat.ARGB32 , false); Color [] textureColor = texture.GetPixels(); for (uint i = 0; i < textureColor.Length; ++i) { textureColor [i] = Color.black; } m_MaskTexture.SetPixels(textureColor); m_MaskTexture.Apply(); Texture2D atlasTexture = movieClip.resource.getTexture(System.IO.Path.GetFileNameWithoutExtension(info.getFileName(csf))); Color [] maskTexturePixels = atlasTexture.GetPixels( (int)(element.x * csf) , (int)(atlasTexture.height - element.y * csf - element.height * csf) , (int)(element.width * csf) , (int)(element.height * csf)); m_MaskTexture.SetPixels( 0 , 0 , (int)(element.width * csf) , (int)(element.height * csf) , maskTexturePixels); m_MaskTexture.Apply(true); m_MaskTexture.filterMode = FilterMode.Bilinear; m_MaskTexture.wrapMode = TextureWrapMode.Clamp; m_MaskTexture.Apply(); }
protected virtual void initMesh() { GAFAtlasElementData element = atlasElement; GAFTexturesData info = textureInfo; if (filter == null) { filter = gameObject.AddComponent <MeshFilter> (); } float scale = element.scale * movieClip.settings.pixelsPerUnit; float scaledPivotX = element.pivotX / scale; float scaledPivotY = element.pivotY / scale; float scaledWidth = element.width / scale; float scaledHeight = element.height / scale; Vector3 [] vertices = new Vector3[4]; vertices[0] = new Vector3(-scaledPivotX, scaledPivotY - scaledHeight, 0f); vertices[1] = new Vector3(-scaledPivotX, scaledPivotY, 0f); vertices[2] = new Vector3(-scaledPivotX + scaledWidth, scaledPivotY, 0f); vertices[3] = new Vector3(-scaledPivotX + scaledWidth, scaledPivotY - scaledHeight, 0f); Texture2D atlasTexture = movieClip.resource.getTexture(System.IO.Path.GetFileNameWithoutExtension(info.getFileName(movieClip.settings.csf))); float scaledElementLeftX = element.x * movieClip.settings.csf / atlasTexture.width; float scaledElementRightX = (element.x + element.width) * movieClip.settings.csf / atlasTexture.width; float scaledElementTopY = (atlasTexture.height - element.y * movieClip.settings.csf - element.height * movieClip.settings.csf) / atlasTexture.height; float scaledElementBottomY = (atlasTexture.height - element.y * movieClip.settings.csf) / atlasTexture.height; Vector2 [] uv = new Vector2[vertices.Length]; uv [0] = new Vector2(scaledElementLeftX, scaledElementTopY); uv [1] = new Vector2(scaledElementLeftX, scaledElementBottomY); uv [2] = new Vector2(scaledElementRightX, scaledElementBottomY); uv [3] = new Vector2(scaledElementRightX, scaledElementTopY); Vector3 [] normals = new Vector3[vertices.Length]; normals[0] = new Vector3(0f, 0f, -1f); normals[1] = new Vector3(0f, 0f, -1f); normals[2] = new Vector3(0f, 0f, -1f); normals[3] = new Vector3(0f, 0f, -1f); int [] triangles = new int[6]; triangles[0] = 2; triangles[1] = 0; triangles[2] = 1; triangles[3] = 3; triangles[4] = 0; triangles[5] = 2; Mesh mesh = new Mesh(); mesh.name = "Element_" + atlasElementID; mesh.vertices = vertices; mesh.uv = uv; mesh.triangles = triangles; mesh.normals = normals; filter.mesh = mesh; filter.sharedMesh.Optimize(); }