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(); }
protected virtual void initBaseData(GAFMovieClip _Player) { m_Player = _Player; if (m_ObjectID < 0 || m_AtlasElementID < 0) { string [] names = gameObject.name.Split('_'); m_AtlasElementID = int.Parse(names[0]); m_ObjectID = int.Parse(names[1]); } if (m_CurrentState == null) { m_CurrentState = new GAFObjectStateData(objectID); } m_TextureAtlas = movieClip.asset.getAtlases(movieClip.timelineID).Find(atlas => atlas.scale == movieClip.settings.scale); m_AtlasElement = textureAtlas.getElement(atlasElementID); m_TextureInfo = textureAtlas.getAtlas(atlasElement.atlasID); }
protected virtual void initializeBaseData() { var clip = serializedProperties.clip; m_AtlasData = clip.asset.getAtlases(clip.timelineID).Find(atlas => atlas.scale == clip.settings.scale); m_AtlasElementData = m_AtlasData.getElement(serializedProperties.atlasElementID); m_TexturesData = m_AtlasData.getAtlas(m_AtlasElementData.atlasID); m_Texture = hasCustomTexture ? serializedProperties.material.mainTexture as Texture2D : clip.resource.getTexture(System.IO.Path.GetFileNameWithoutExtension(texturesData.getFileName(clip.settings.csf))); m_Material = hasCustomTexture ? serializedProperties.material : clip.getSharedMaterial(System.IO.Path.GetFileNameWithoutExtension(texturesData.getFileName(clip.settings.csf))); m_Material.renderQueue = 3000; m_CurrentState = new GAFObjectStateData(serializedProperties.objectID); m_Colors = new Color32[4] { initialColor, initialColor, initialColor, initialColor }; m_ColorShift = new Vector4[4]; calcInitialVertices(); calcUV(); }