Exemplo n.º 1
0
    public void SetUVs(int subTextureId)
    {
        //	Debug.Log ("SetUVs");

        if (subTextureId < 0)
        {
            return;
        }

        height = myAtlas.GetSubTextureWidth(subTextureId) * 2.0f;
        width  = myAtlas.GetSubTextureHeight(subTextureId) * 2.0f;

        Default.Namespace.Globals.Assert(myAtlas != null);

        MeshFilter mf = myObject.GetComponent <MeshFilter>();

        Mesh mesh;

        if (mf.sharedMesh == null)
        {
            mesh = new Mesh();
        }
        else
        {
            mesh = mf.sharedMesh;
        }

        Vector2[] uv = new Vector2[4];

        float ux  = myAtlas.GetMinUVP1(subTextureId, 0);
        float uxm = myAtlas.GetMaxUVP1(subTextureId, 0);
        float vx  = myAtlas.GetMinUVP1(subTextureId, 1);
        float vxm = myAtlas.GetMaxUVP1(subTextureId, 1);

        float textureWidth  = myAtlas.myMaterial.mainTexture.width;
        float textureHeight = myAtlas.myMaterial.mainTexture.height;

        ux  /= textureWidth;
        uxm /= textureWidth;
        vx  /= textureHeight;
        vxm /= textureHeight;

        float tempVx = vx;

        vx  = 1.0f - vxm;
        vxm = 1.0f - tempVx;

        //uv[0] = new Vector2(0.0f, 0.0f);
        //uv[1] = new Vector2(1.0f, 0.0f);
        //uv[2] = new Vector2(0.0f, 1.0f);
        //uv[3] = new Vector2(1.0f, 1.0f);

        uv[0] = new Vector2(ux, vx);
        uv[1] = new Vector2(uxm, vx);
        uv[2] = new Vector2(ux, vxm);
        uv[3] = new Vector2(uxm, vxm);
        //uv[0] = new Vector2(vx, ux);
        //uv[1] = new Vector2(vxm, ux);
        //uv[2] = new Vector2(vx, uxm);
        //uv[3] = new Vector2(vxm, uxm);

        mesh.uv       = uv;
        mf.sharedMesh = mesh;

        for (int i = 0; i < 4; i++)
        {
//			mf.mesh.uv[i].x = uv[i].x;
            //mf.mesh.uv[i].y = uv[i].y;
        }
        //Now create a

        //MeshRenderer meshRenderer = new MeshRenderer();// GetComponent<MeshRenderer>();

//		texture2D = inAtlas.GetMaterial().GetTexture2D();//Resources.Load(inTextureName, typeof(Texture2D)) as Texture2D;

        //   if (texture2D != null)
//		{
        //       meshRenderer.material.mainTexture = texture2D;
        //	}
    }
Exemplo n.º 2
0
/*	public void RenderAtPositionOld_(Default.Namespace.CGPoint inPosition, float inScale, float inRot, float inAlpha, int inSubtextureId)
 *      {
 *              if (currentSubtextureId != inSubtextureId)
 *              {
 *                      currentSubtextureId = inSubtextureId;
 *                      if (myAtlas != null)
 *                      {
 *                              this.SetUVs(currentSubtextureId);
 *                      }
 *              }
 *
 *              this.CheckRender();
 *
 *              if (inAlpha != prevAlpha)
 *                      this.SetAlpha(inAlpha);
 *
 *              MeshFilter mf = myObject.GetComponent<MeshFilter>();
 *              Vector3[] vertices = new Vector3[4];
 *
 *              inPosition.x -= 160.0f;
 *              inPosition.y = 240.0f - inPosition.y;
 *
 *              if (inRot == 0.0f)
 *              {
 *                      float halfWidth = width * 0.5f * inScale;//(width * 0.5f);
 *                      float halfHeight = height * 0.5f *  inScale;//(height * 0.5f);
 *
 *                      vertices[0] = new Vector3(inPosition.x - halfHeight, inPosition.y - halfWidth, Default.Namespace.Globals.renderCounter);
 *                      vertices[1] = new Vector3(inPosition.x + halfHeight, inPosition.y - halfWidth, Default.Namespace.Globals.renderCounter);
 *                      vertices[2] = new Vector3(inPosition.x - halfHeight, inPosition.y + halfWidth, Default.Namespace.Globals.renderCounter);
 *                      vertices[3] = new Vector3(inPosition.x + halfHeight, inPosition.y + halfWidth, Default.Namespace.Globals.renderCounter);
 *              }
 *              else
 *              {
 *                      float rotationAngleToFirstPoint;// = myAtlas.GetRotationAngleToFirstPoint(inSubtextureId);
 *                      float rotationAngleToSecondPoint;// = myAtlas.GetRotationAngleToSecondPoint(inSubtextureId);
 *                      float useRotationScale;// = myAtlas.GetSubTextureRotationScale(inSubtextureId) * inScale;
 *
 *                      if (myAtlas == null)
 *                      {
 *                              //Just loading bar???
 *
 *                              rotationAngleToFirstPoint = rotationAngle1;
 *                              rotationAngleToSecondPoint = rotationAngle2;
 *                              useRotationScale = rotationScale;
 *                      }
 *                      else
 *                      {
 *                              Default.Namespace.Globals.Assert(inSubtextureId != -1);
 *
 *                              rotationAngleToFirstPoint = myAtlas.GetRotationAngleToFirstPoint(inSubtextureId);
 *                              rotationAngleToSecondPoint = myAtlas.GetRotationAngleToSecondPoint(inSubtextureId);
 *                              useRotationScale = myAtlas.GetSubTextureRotationScale(inSubtextureId) * inScale;
 *                      }
 *
 *                      float radians = inRot + rotationAngleToFirstPoint; //kRadiansAngleFor2x1y;
 *                      float a = (Mathf.Cos(radians) * useRotationScale);
 *                      float b = (Mathf.Sin(radians) * useRotationScale);
 *                      radians += rotationAngleToSecondPoint; //0.9272f;//0.4636below*2//2.217f; //(M_PI - (kRadiansAngleFor2x1y * 2.0f));
 *                      float c = (Mathf.Cos(radians) * useRotationScale);
 *                      float d = (Mathf.Sin(radians) * useRotationScale);
 *                      float topRightX = inPosition.x + a;
 *                      float topRightY = inPosition.y + b;
 *                      float topLeftX = inPosition.x + c;
 *                      float topLeftY = inPosition.y + d;
 *                      float bottomLeftX = inPosition.x - a;
 *                      float bottomLeftY = inPosition.y - b;
 *                      float bottomRightX = inPosition.x - c;
 *                      float bottomRightY = inPosition.y - d;
 *
 *                      vertices[2] = new Vector3(topLeftX, topLeftY, Default.Namespace.Globals.renderCounter);
 *                      vertices[3] = new Vector3(topRightX, topRightY, Default.Namespace.Globals.renderCounter);
 *                      vertices[0] = new Vector3(bottomLeftX, bottomLeftY, Default.Namespace.Globals.renderCounter);
 *                      vertices[1] = new Vector3(bottomRightX, bottomRightY, Default.Namespace.Globals.renderCounter);
 *
 *              //	float halfHeight = 50.0f;
 *              //	float halfWidth = 50.0f;
 *
 * //			vertices[0] = new Vector3(inPosition.x - halfHeight, -80, Default.Namespace.Globals.renderCounter);
 * //			vertices[1] = new Vector3(inPosition.x + halfHeight, -80, Default.Namespace.Globals.renderCounter);
 * //			vertices[2] = new Vector3(inPosition.x - halfHeight, 85, Default.Namespace.Globals.renderCounter);
 * //			vertices[3] = new Vector3(inPosition.x + halfHeight, 85, Default.Namespace.Globals.renderCounter);
 *
 *              }
 *
 *              Default.Namespace.Globals.renderCounter -= 0.5f;
 *
 *              //could save this...
 *      //	MeshRenderer meshRenderer = myObject.GetComponent<MeshRenderer>();
 *  //    meshRenderer.material.renderQueue = Default.Namespace.Globals.renderQueueCounter;
 *      //	Default.Namespace.Globals.renderQueueCounter += 1;
 *
 *              mf.mesh.vertices = vertices;
 *      }*/

    public void SetDetailsFromAtlas(Default.Namespace.ZAtlas inAtlas, int subTextureId)
    {
        //Debug.Log ("SetDetailsFromAtlas");

        currentSubtextureId = subTextureId;

        height = inAtlas.GetSubTextureWidth(subTextureId) * 2.0f;
        width  = inAtlas.GetSubTextureHeight(subTextureId) * 2.0f;

        MeshFilter mf = myObject.GetComponent <MeshFilter>();

        Mesh mesh;
        bool newMesh = false;

        if (mf.sharedMesh == null)
        {
            mesh    = new Mesh();
            newMesh = true;
        }
        else
        {
            mesh = mf.sharedMesh;
        }

//		var mesh = new Mesh();
//		mf.mesh = mesh;

        Vector3[] vertices = new Vector3[4];

        float halfWidth  = (width * 0.5f);
        float halfHeight = (height * 0.5f);

        vertices[0] = new Vector3(-halfHeight, -halfWidth, 0);
        vertices[1] = new Vector3(halfHeight, -halfWidth, 0);
        vertices[2] = new Vector3(-halfHeight, halfWidth, 0);
        vertices[3] = new Vector3(halfHeight, halfWidth, 0);


        mesh.vertices = vertices;

        for (int i = 0; i < 4; i++)
        {
//			mesh.vertices[i].x = vertices[i].x;
//			mesh.vertices[i].y = vertices[i].y;
//			mesh.vertices[i].z = vertices[i].z;
        }

//		mesh.vertices = vertices;

        if (newMesh)
        {
            int[] tri = new int[6];

            tri[0] = 0;
            tri[1] = 2;
            tri[2] = 1;

            tri[3] = 2;
            tri[4] = 3;
            tri[5] = 1;

            mesh.triangles = tri;

            Vector3[] normals = new Vector3[4];

            normals[0] = -Vector3.forward;
            normals[1] = -Vector3.forward;
            normals[2] = -Vector3.forward;
            normals[3] = -Vector3.forward;

            mesh.normals = normals;
        }

        Vector2[] uv = new Vector2[4];

        float ux  = inAtlas.GetMinUVP1(subTextureId, 0);
        float uxm = inAtlas.GetMaxUVP1(subTextureId, 0);
        float vx  = inAtlas.GetMinUVP1(subTextureId, 1);
        float vxm = inAtlas.GetMaxUVP1(subTextureId, 1);

        float textureWidth;
        float textureHeight;

        if ((Default.Namespace.Constants.ANDROID_25) && (Default.Namespace.Globals.g_main.loadADCQueue.state == LoadADCQueue.State.kStateBuildingUpAssetList))
        {
            textureWidth  = 256.0f;
            textureHeight = 256.0f;
        }
        else
        {
            textureWidth  = inAtlas.myMaterial.mainTexture.width;
            textureHeight = inAtlas.myMaterial.mainTexture.height;
        }

        ux  /= textureWidth;
        uxm /= textureWidth;
        vx  /= textureHeight;
        vxm /= textureHeight;

        float tempVx = vx;

        vx  = 1.0f - vxm;
        vxm = 1.0f - tempVx;

        //uv[0] = new Vector2(0.0f, 0.0f);
        //uv[1] = new Vector2(1.0f, 0.0f);
        //uv[2] = new Vector2(0.0f, 1.0f);
        //uv[3] = new Vector2(1.0f, 1.0f);

        uv[0] = new Vector2(ux, vx);
        uv[1] = new Vector2(uxm, vx);
        uv[2] = new Vector2(ux, vxm);
        uv[3] = new Vector2(uxm, vxm);
        //uv[0] = new Vector2(vx, ux);
        //uv[1] = new Vector2(vxm, ux);
        //uv[2] = new Vector2(vx, uxm);
        //uv[3] = new Vector2(vxm, uxm);

        mesh.uv = uv;

        for (int i = 0; i < 4; i++)
        {
//			mesh.uv[i].x = uv[i].x;
            //mesh.uv[i].y = uv[i].y;
        }

        mesh.RecalculateBounds();

        mf.sharedMesh = mesh;

        //Now create a

        //MeshRenderer meshRenderer = new MeshRenderer();// GetComponent<MeshRenderer>();

//		texture2D = inAtlas.GetMaterial().GetTexture2D();//Resources.Load(inTextureName, typeof(Texture2D)) as Texture2D;

        //   if (texture2D != null)
//		{
        //       meshRenderer.material.mainTexture = texture2D;
        //	}
    }