Example #1
0
    private void DrawMesh(C_HasMesh cRenderMesh, Matrix4x4 transMatrix)
    {
        uv[0] = cRenderMesh.UV;
        materialPropertyBlock.SetVectorArray(shaderPropertyTex, uv);
        materialPropertyBlock.SetColor(shaderPropertyColor, cRenderMesh.color);

        Graphics.DrawMesh(
            Resource.GetMesh(cRenderMesh.mesh),
            transMatrix,
            Resource.GetMat(cRenderMesh.material),
            0,
            camera,
            0,
            materialPropertyBlock
            );
    }
    private void SetMeshFromBitmask(Entity entity, C_HasMesh cMesh, Rotation cRotation, int bitmask)
    {
        switch (bitmask)
        {
        // no top or bottoms
        case 0:                         cMesh.mesh = Resource.Mesh.Block_RoundLone;         cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case s:                         cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case w:                         cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case s + w:                     cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case e:                         cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case s + e:                     cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case w + e:                     cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case s + w + e:                 cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case n:                         cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case n + s:                     cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case n + w:                     cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case n + s + w:                 cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case n + e:                     cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case n + e + s:                 cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case n + e + w:                 cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case n + e + w + s:             cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        // top but no bottoms
        case t:                         cMesh.mesh = Resource.Mesh.Block_RoundLone;         cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case t + s:                     cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case t + w:                     cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case t + s + w:                 cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case t + e:                     cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case t + s + e:                 cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case t + w + e:                 cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case t + s + w + e:             cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0);  break;

        case t + n:                     cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case t + n + s:                 cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case t + n + w:                 cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case t + n + s + w:             cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0);    break;

        case t + n + e:                 cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case t + n + e + s:             cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0);  break;

        case t + n + e + w:             cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0);   break;

        case t + n + e + w + s:         cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0);    break;



        // 1 bottom

        // south bottom only, no top
        case sb:                        cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case sb + w:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case sb + e:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case sb + w + e:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + sb:                    cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case n + sb + w:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case n + e + sb:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case n + e + w + sb:            cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south bottom only, with top
        case t + sb:                    cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + sb + w:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + sb + e:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + sb + w + e:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + sb:                cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + n + sb + w:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + n + e + sb:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + n + e + w + sb:        cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west bottom only, no top
        case wb:                        cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case s + wb:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case wb + e:                    cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case s + wb + e:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + wb:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case n + s + wb:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case n + e + wb:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case n + e + wb + s:            cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west bottom only, with top
        case t + wb:                    cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + s + wb:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + wb + e:                cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + s + wb + e:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + wb:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + n + s + wb:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + n + e + wb:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + n + e + wb + s:        cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // east bottom only, no top
        case eb:                        cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case s + eb:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case w + eb:                    cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case s + w + eb:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + eb:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case n + eb + s:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case n + eb + w:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case n + eb + w + s:            cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // east bottom only, with top
        case t + eb:                    cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + s + eb:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + w + eb:                cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + s + w + eb:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + eb:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + n + eb + s:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + n + eb + w:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + n + eb + w + s:        cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // north bottom only, no top
        case nb:                        cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + s:                    cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + w:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + s + w:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + e:                    cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + e + s:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + e + w:                cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + e + w + s:            cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // north bottom only, with top
        case t + nb:                    cMesh.mesh = Resource.Mesh.Block_RoundEnd;          cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + s:                cMesh.mesh = Resource.Mesh.Block_Lane;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + w:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + s + w:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + e:                cMesh.mesh = Resource.Mesh.Block_RoundCorner;       cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + e + s:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + e + w:            cMesh.mesh = Resource.Mesh.Block_Edge;              cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + e + w + s:        cMesh.mesh = Resource.Mesh.Block_Mid;               cRotation.Value = Quaternion.Euler(0, 0, 0); break;



        // 2 bottoms

        // south and west bottoms, no top
        case sb + wb:                   cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case sb + wb + e:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + sb + wb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case n + e + wb + sb:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south and west bottoms, with top
        case t + sb + wb:               cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + sb + wb + e:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + sb + wb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + n + e + wb + sb:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south and east bottoms, no top
        case sb + eb:                   cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case sb + w + eb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + eb + sb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case n + eb + w + sb:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south and east bottoms, with top
        case t + sb + eb:               cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + sb + w + eb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + eb + sb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + n + eb + w + sb:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south and north bottoms, no top
        case nb + sb:                   cMesh.mesh = Resource.Mesh.Block_Lane; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + sb + w:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + e + sb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + e + w + sb:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south and north bottoms, with top
        case t + nb + sb:               cMesh.mesh = Resource.Mesh.Block_Lane; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + sb + w:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + e + sb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + e + w + sb:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west and east bottoms, no top
        case wb + eb:                   cMesh.mesh = Resource.Mesh.Block_Lane; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case s + wb + eb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + eb + wb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case n + eb + wb + s:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west and east bottoms, with top
        case t + wb + eb:               cMesh.mesh = Resource.Mesh.Block_Lane; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + s + wb + eb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + eb + wb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + n + eb + wb + s:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west and north bottoms, no top
        case nb + wb:                   cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + s + wb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + e + wb:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + e + wb + s:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west and north bottoms, with top
        case t + nb + wb:               cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + s + wb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + e + wb:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + e + wb + s:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // east and north bottoms, no top
        case nb + eb:                   cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + eb + s:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + eb + w:               cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + eb + w + s:           cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // east and north bottoms, with top
        case t + nb + eb:               cMesh.mesh = Resource.Mesh.Block_RoundCorner; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + eb + s:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + eb + w:           cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + eb + w + s:       cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;



        // 3 bottoms

        // south, west, and east bottoms, no top
        case sb + wb + eb:              cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case n + eb + wb + sb:          cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south, west, and east bottoms, with top
        case t + sb + wb + eb:          cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, -90, 0); break;

        case t + n + eb + wb + sb:      cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south, west, and north bottoms, no top
        case nb + sb + wb:              cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case nb + e + wb + sb:          cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south, west and north bottoms, with top
        case t + nb + sb + wb:          cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + e + wb + sb:      cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south, east, and north bottoms, no top
        case nb + eb + sb:              cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case nb + eb + w + sb:          cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // south, east, and north bottoms, with top
        case t + nb + eb + sb:          cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 180, 0); break;

        case t + nb + eb + w + sb:      cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west, east, and north bottoms, no top
        case nb + eb + wb:              cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case nb + eb + wb + s:          cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        // west, east, and north bottoms, with top
        case t + nb + eb + wb:          cMesh.mesh = Resource.Mesh.Block_Edge; cRotation.Value = Quaternion.Euler(0, 90, 0); break;

        case t + nb + eb + wb + s:      cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;



        // 4 bottoms
        case nb + eb + wb + sb:         cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;

        case t + nb + eb + wb + sb:     cMesh.mesh = Resource.Mesh.Block_Mid; cRotation.Value = Quaternion.Euler(0, 0, 0); break;



        default: return;
        }
        PostUpdateCommands.SetComponent(entity, cMesh);
        PostUpdateCommands.SetComponent(entity, cRotation);
    }