// Update the quad mesh size public static Mesh UpdateSpriteMeshSizeForAnim(Uni2DSprite a_rSprite, Mesh a_rSpriteMesh, float a_fWidth, float a_fHeight) { Uni2DEditorSpriteSettings rSpriteSettings = a_rSprite.SpriteSettings; Uni2DEditorSpriteData rSpriteData = a_rSprite.SpriteData; // Scale Vector2 fScale = rSpriteData.Scale; float fWidth = fScale.x * a_fWidth; float fHeight = fScale.y * a_fHeight; // Pivot Vector2 f2ScaledPivotCoords = ComputePivotCoords(a_fWidth, a_fHeight, rSpriteSettings.pivotType, rSpriteSettings.pivotCustomCoords); f2ScaledPivotCoords.x *= fScale.x; f2ScaledPivotCoords.y *= fScale.y; if (a_rSpriteMesh != null) { switch (rSpriteSettings.renderMesh) { case SpriteRenderMesh.Quad: { // Update vertices a_rSpriteMesh.vertices = GenerateQuadVertices(fWidth, fHeight, f2ScaledPivotCoords); } break; default: case SpriteRenderMesh.TextureToMesh: case SpriteRenderMesh.Grid: { // Resize the sprite mesh // From the saved original vertices Vo in ( 0; 0 ) base, // apply mesh dimensions ratio R = ( Wn; Hn ) / ( Wo; Ho ) // and finally sub new pivot Pn to have Vn // Vo * R - Pn = Vn Vector3 f3Ratio = new Vector3(a_fWidth / rSpriteData.spriteWidth, a_fHeight / rSpriteData.spriteHeight, 0.0f); Vector3 f3ScaledPivotCoords = f2ScaledPivotCoords; int iVertexCount = a_rSpriteMesh.vertexCount; Vector3[] oResizedVertices = new Vector3[iVertexCount]; for (int iVertexIndex = 0; iVertexIndex < iVertexCount; ++iVertexIndex) { oResizedVertices[iVertexIndex] = Vector3.Scale(rSpriteData.renderMeshVertices[iVertexIndex], f3Ratio) - f3ScaledPivotCoords; } a_rSpriteMesh.vertices = oResizedVertices; } break; } a_rSpriteMesh.RecalculateBounds( ); } return(a_rSpriteMesh); }
// Shallow copy constructor public Uni2DEditorSpriteData( Uni2DEditorSpriteData a_rSpriteData ) { this.spriteWidth = a_rSpriteData.spriteWidth; this.spriteHeight = a_rSpriteData.spriteHeight; this.renderMesh = a_rSpriteData.renderMesh; this.renderMeshMaterial = a_rSpriteData.renderMeshMaterial; this.generatedMaterial = a_rSpriteData.generatedMaterial; this.renderMeshVertices = a_rSpriteData.renderMeshVertices; this.renderMeshUVs = a_rSpriteData.renderMeshUVs; this.pivotCoords = a_rSpriteData.pivotCoords; this.scale = a_rSpriteData.scale; this.colliderTriangleCount = a_rSpriteData.colliderTriangleCount; this.meshCollidersRootGameObject = a_rSpriteData.meshCollidersRootGameObject; this.meshCollidersList = new List<Mesh>( a_rSpriteData.meshCollidersList ); this.meshColliderComponentsList = new List<MeshCollider>( a_rSpriteData.meshColliderComponentsList ); //this.physicIsDirty = a_rSpriteData.physicIsDirty; }
// Shallow copy constructor public Uni2DEditorSpriteData(Uni2DEditorSpriteData a_rSpriteData) { this.spriteWidth = a_rSpriteData.spriteWidth; this.spriteHeight = a_rSpriteData.spriteHeight; this.renderMesh = a_rSpriteData.renderMesh; this.renderMeshMaterial = a_rSpriteData.renderMeshMaterial; this.generatedMaterial = a_rSpriteData.generatedMaterial; this.renderMeshVertices = a_rSpriteData.renderMeshVertices; this.renderMeshUVs = a_rSpriteData.renderMeshUVs; this.pivotCoords = a_rSpriteData.pivotCoords; this.scale = a_rSpriteData.scale; this.colliderTriangleCount = a_rSpriteData.colliderTriangleCount; this.meshCollidersRootGameObject = a_rSpriteData.meshCollidersRootGameObject; this.meshCollidersList = new List <Mesh>(a_rSpriteData.meshCollidersList); this.meshColliderComponentsList = new List <MeshCollider>(a_rSpriteData.meshColliderComponentsList); //this.physicIsDirty = a_rSpriteData.physicIsDirty; }
// Same as above public bool Equals(Uni2DEditorSpriteData a_rSpriteData) { return(a_rSpriteData != null && this.colliderTriangleCount == a_rSpriteData.colliderTriangleCount && // Not sure if relevant... this.spriteWidth == a_rSpriteData.spriteWidth && this.spriteHeight == a_rSpriteData.spriteHeight && this.renderMesh == a_rSpriteData.renderMesh && this.renderMeshVertices.Equals(a_rSpriteData.renderMeshVertices) && this.renderMeshUVs.Equals(a_rSpriteData.renderMeshUVs) && this.renderMeshMaterial == a_rSpriteData.renderMeshMaterial && this.generatedMaterial == a_rSpriteData.generatedMaterial && this.pivotCoords == a_rSpriteData.pivotCoords && this.scale == a_rSpriteData.scale && this.meshCollidersRootGameObject == a_rSpriteData.meshCollidersRootGameObject && this.meshCollidersList.Equals(a_rSpriteData.meshCollidersList) && this.meshColliderComponentsList.Equals(a_rSpriteData.meshColliderComponentsList)); }
// Shallow copy constructor public Uni2DEditorSpriteData(Uni2DEditorSpriteData a_rSpriteData) { this.spriteWidth = a_rSpriteData.spriteWidth; this.spriteHeight = a_rSpriteData.spriteHeight; this.renderMesh = a_rSpriteData.renderMesh; this.renderMeshMaterial = a_rSpriteData.renderMeshMaterial; this.generatedMaterial = a_rSpriteData.generatedMaterial; this.renderMeshVertices = a_rSpriteData.renderMeshVertices; this.renderMeshUVs = a_rSpriteData.renderMeshUVs; this.pivotCoords = a_rSpriteData.pivotCoords; this.scaleMode = a_rSpriteData.scaleMode; this.scale = a_rSpriteData.scale; this.scaleNotUniform = a_rSpriteData.scaleNotUniform; this.colliderTriangleCount = a_rSpriteData.colliderTriangleCount; this.meshCollidersRootGameObject = a_rSpriteData.meshCollidersRootGameObject; this.meshCollidersList = new List <Mesh>(a_rSpriteData.meshCollidersList); this.meshColliderComponentsList = new List <MeshCollider>(a_rSpriteData.meshColliderComponentsList); #if AFTER_UNITY_4_3 this.polygonCollider2D = a_rSpriteData.polygonCollider2D; this.mesh2D = a_rSpriteData.mesh2D; #endif //this.physicIsDirty = a_rSpriteData.physicIsDirty; }
// Same as above public bool Equals( Uni2DEditorSpriteData a_rSpriteData ) { return a_rSpriteData != null && this.colliderTriangleCount == a_rSpriteData.colliderTriangleCount // Not sure if relevant... && this.spriteWidth == a_rSpriteData.spriteWidth && this.spriteHeight == a_rSpriteData.spriteHeight && this.renderMesh == a_rSpriteData.renderMesh && this.renderMeshVertices.Equals( a_rSpriteData.renderMeshVertices ) && this.renderMeshUVs.Equals( a_rSpriteData.renderMeshUVs ) && this.renderMeshMaterial == a_rSpriteData.renderMeshMaterial && this.generatedMaterial == a_rSpriteData.generatedMaterial && this.pivotCoords == a_rSpriteData.pivotCoords && this.scale == a_rSpriteData.scale && this.meshCollidersRootGameObject == a_rSpriteData.meshCollidersRootGameObject && this.meshCollidersList.Equals( a_rSpriteData.meshCollidersList ) && this.meshColliderComponentsList.Equals( a_rSpriteData.meshColliderComponentsList ); }
// Shallow copy constructor public Uni2DEditorSpriteData( Uni2DEditorSpriteData a_rSpriteData ) { this.spriteWidth = a_rSpriteData.spriteWidth; this.spriteHeight = a_rSpriteData.spriteHeight; this.renderMesh = a_rSpriteData.renderMesh; this.renderMeshMaterial = a_rSpriteData.renderMeshMaterial; this.generatedMaterial = a_rSpriteData.generatedMaterial; this.renderMeshVertices = a_rSpriteData.renderMeshVertices; this.renderMeshUVs = a_rSpriteData.renderMeshUVs; this.pivotCoords = a_rSpriteData.pivotCoords; this.scaleMode = a_rSpriteData.scaleMode; this.scale = a_rSpriteData.scale; this.scaleNotUniform = a_rSpriteData.scaleNotUniform; this.colliderTriangleCount = a_rSpriteData.colliderTriangleCount; this.meshCollidersRootGameObject = a_rSpriteData.meshCollidersRootGameObject; this.meshCollidersList = new List<Mesh>( a_rSpriteData.meshCollidersList ); this.meshColliderComponentsList = new List<MeshCollider>( a_rSpriteData.meshColliderComponentsList ); #if AFTER_UNITY_4_3 this.polygonCollider2D = a_rSpriteData.polygonCollider2D; this.mesh2D = a_rSpriteData.mesh2D; #endif //this.physicIsDirty = a_rSpriteData.physicIsDirty; }