Exemplo n.º 1
0
    MasterCube.Face SideParameter(string name, MasterCube.Face faceSide)
    {
        GUILayout.BeginVertical(name, "window");
        faceSide.offset   = EditorGUILayout.Vector2Field("UV off Set", faceSide.offset);
        faceSide.scale    = EditorGUILayout.Vector2Field("UV scale", faceSide.scale);
        faceSide.scale.x  = Mathf.Clamp(faceSide.scale.x, -float.MaxValue, float.MaxValue);
        faceSide.scale.y  = Mathf.Clamp(faceSide.scale.y, -float.MaxValue, float.MaxValue);
        faceSide.rotation = EditorGUILayout.Slider("UV rotation", faceSide.rotation, -180, 180);
        GUILayout.EndVertical();
        EditorGUILayout.Space();

        return(faceSide);
    }
Exemplo n.º 2
0
    void meshTranform(MasterCube.Face faceSide)
    {
        var scaleFactor = Vector2.one;

        switch (faceSide.side)
        {
        case MasterCube.FaceSide.Front:
            scaleFactor.x = cCube.transform.localScale.x;
            scaleFactor.y = cCube.transform.localScale.y;
            break;

        case MasterCube.FaceSide.Back:
            scaleFactor.x = cCube.transform.localScale.x;
            scaleFactor.y = cCube.transform.localScale.y;
            break;

        case MasterCube.FaceSide.Left:
            scaleFactor.x = cCube.transform.localScale.z;
            scaleFactor.y = cCube.transform.localScale.y;
            break;

        case MasterCube.FaceSide.Right:
            scaleFactor.x = cCube.transform.localScale.z;
            scaleFactor.y = cCube.transform.localScale.y;
            break;

        case MasterCube.FaceSide.Top:
            scaleFactor.x = cCube.transform.localScale.x;
            scaleFactor.y = cCube.transform.localScale.z;
            break;

        case MasterCube.FaceSide.Bottom:
            scaleFactor.x = cCube.transform.localScale.x;
            scaleFactor.y = cCube.transform.localScale.z;
            break;
        }

        if (cCube.GetComponent <MeshFilter>().sharedMesh == null)
        {
            cCube.GetComponent <MeshFilter>().sharedMesh = (Mesh)Instantiate(cCube.mesh);
        }

        Vector2[] uvs = cCube.GetComponent <MeshFilter>().sharedMesh.uv;
        foreach (UV uv in faceSide.uvs)
        {
            if (cCube.mesh == null)
            {
                break;
            }
            var rot = Quaternion.Euler(0, 0, cCube.rotation + faceSide.rotation);

            var newuv = new Vector2(((cCube.mesh.uv[uv.index].x + (faceSide.offset.x + cCube.offset.x)) * scaleFactor.x) / (faceSide.scale.x * cCube.scale.x),
                                    ((cCube.mesh.uv[uv.index].y + (faceSide.offset.y + cCube.offset.y)) * scaleFactor.y) / (faceSide.scale.y * cCube.scale.y));

            newuv         = rot * newuv;
            uvs[uv.index] = newuv;
        }
        if (cCube.mesh != null)
        {
            cCube.GetComponent <MeshFilter>().sharedMesh    = (Mesh)Instantiate(cCube.mesh);
            cCube.GetComponent <MeshFilter>().sharedMesh.uv = uvs;
        }
    }