Beispiel #1
0
    // 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;
	}
Beispiel #3
0
 // 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;
 }
Beispiel #4
0
 // 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));
 }
Beispiel #5
0
 // 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;
	}