Exemple #1
0
    public static void CreateGradient(GameObject gameObject, PUGameObject puGameObject, cRect bounds, cVector2 anchor, Color a, Color b, string shader)
    {
        Mesh mesh = new Mesh ();

        Vector3[] vertices = new Vector3[] {
            new Vector3 (bounds.w - bounds.w * anchor.x, bounds.h - bounds.h * anchor.y, 0.0f),
            new Vector3 (bounds.w - bounds.w * anchor.x, -bounds.h * anchor.y, 0.0f),
            new Vector3 (0.0f - bounds.w * anchor.x, bounds.h - bounds.h * anchor.y, 0.0f),
            new Vector3 (0.0f - bounds.w * anchor.x, -bounds.h * anchor.y, 0.0f),
        };

        int[] triangles = new int[] {
            0, 1, 2,
            2, 1, 3,
        };

        mesh.vertices = vertices;
        mesh.colors = new Color[4] {Color.white, Color.white, Color.white, Color.white};
        mesh.triangles = triangles;
        mesh.RecalculateNormals ();

        MeshFilter filter = (MeshFilter)gameObject.GetComponent (typeof(MeshFilter));
        filter.mesh = mesh;

        if (shader == null) {
            shader = "PlanetUnity/Color";
        }

        var shaderObj = Shader.Find (puGameObject.fullShaderPath(shader));
        Material mat = new Material (shaderObj);
        gameObject.renderer.material = mat;
        gameObject.renderer.material.color = a;
    }
Exemple #2
0
    public static void CreateGradient(GameObject gameObject, PUGameObject puGameObject, string meshName, cRect bounds, cVector2 anchor, Color a, Color b, string shader)
    {
        Transform model = Resources.Load<GameObject> (meshName).transform;
        Mesh mesh = null;
        foreach (Transform t in model.transform) {
            MeshFilter loadedFilter = (MeshFilter)t.GetComponent (typeof(MeshFilter));
            if (loadedFilter != null) {
                mesh = loadedFilter.mesh;
                break;
            }
        }

        mesh = (Mesh)Mesh.Instantiate(mesh);

        /*
        // Scale the mesh by the width and the height...
        Vector3[] vertices = new Vector3[mesh.vertexCount];
        for(int i = 0; i < mesh.vertexCount; i++){
            Vector3 v = mesh.vertices [i];
            v.x *= bounds.w;
            v.y *= bounds.h;
            vertices [i] = v;
        }
        mesh.vertices = vertices;*/

        Vector3[] vertices = mesh.vertices;
        int i = 0;
        while (i < vertices.Length) {
            vertices [i].x *= bounds.w;
            vertices [i].y *= bounds.h;
            i++;
        }
        mesh.vertices = vertices;

        mesh.RecalculateBounds ();

        MeshFilter filter = (MeshFilter)gameObject.GetComponent (typeof(MeshFilter));
        filter.sharedMesh = mesh;

        if (shader == null) {
            shader = "PlanetUnity/Color";
        }

        var shaderObj = Shader.Find (puGameObject.fullShaderPath(shader));
        Material mat = new Material (shaderObj);
        gameObject.renderer.material = mat;
        gameObject.renderer.material.color = a;
    }