示例#1
0
    public static WorldMap BuildBZW()
    {
        WorldMap map = new WorldMap();

        BZWWorld root = GameObject.FindObjectOfType <BZWWorld>();

        if (root == null)
        {
            return(null);
        }

        if (root.Name == string.Empty)
        {
            map.WorldInfo.Name = "Untitled BZW";
        }

        map.WorldInfo = root.ToBZWObject() as BZFlag.Map.Elements.World;

        for (int i = 0; i < root.gameObject.transform.childCount; i++)
        {
            var child = root.transform.GetChild(i);

            BZWBasicObject opt = child.GetComponent <BZWBasicObject>();
            if (opt != null)
            {
                map.AddObject(opt.ToBZWObject());
            }
        }
        return(map);
    }
示例#2
0
    public static void SetupRootObject(GameObject worldObj, WorldMap map)
    {
        BZWWorld mapRoot = worldObj.AddComponent <BZWWorld>();

        mapRoot.Setup(map.WorldInfo);

        // add map options
        GameObject optionsObject = AddToRoot(worldObj, new GameObject("Options"));

        optionsObject.AddComponent <BZWOptions>().Setup(map.WorldOptions);
    }
示例#3
0
    public static GameObject GetRoot()
    {
        BZWWorld root = GameObject.FindObjectOfType <BZWWorld>();

        if (root != null)
        {
            return(root.gameObject);
        }

        return(FromBZW.CreateNewBZWRoot(new WorldMap()));
    }
示例#4
0
 public static void BuildGrass(GameObject obj, BZWWorld world)
 {
     BuildGroundPlane(obj, world.Size, "Assets/BZWTools/StandardAssets/Textures/std_ground.mat");
 }
示例#5
0
    public static void BuildWalls(GameObject obj, BZWWorld world)
    {
        Mesh mesh = new Mesh();

        MeshFilter filter = obj.GetComponent <MeshFilter>();

        if (filter == null)
        {
            filter = obj.AddComponent <MeshFilter>() as MeshFilter;
        }

        List <Vector3> verts = new List <Vector3>();
        List <Vector3> norms = new List <Vector3>();
        List <Vector2> uvs   = new List <Vector2>();
        List <int>     tris  = new List <int>();

        int offset = 0;

        // Z+ wall
        verts.Add(new Vector3(-1, 0, 1));
        norms.Add(Vector3.back);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, 0));

        verts.Add(new Vector3(-1, WallHeight, 1));
        norms.Add(Vector3.back);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, WallHeight, 1));
        norms.Add(Vector3.back);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, 0, 1));
        norms.Add(Vector3.back);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, 0));


        tris.Add(0 + offset);
        tris.Add(1 + offset);
        tris.Add(2 + offset);

        tris.Add(2 + offset);
        tris.Add(3 + offset);
        tris.Add(0 + offset);

        offset = verts.Count;

        // Z- wall
        verts.Add(new Vector3(-1, 0, -1));
        norms.Add(Vector3.forward);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, 0));

        verts.Add(new Vector3(-1, WallHeight, -1));
        norms.Add(Vector3.forward);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, WallHeight, -1));
        norms.Add(Vector3.forward);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, 0, -1));
        norms.Add(Vector3.forward);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, 0));

        tris.Add(2 + offset);
        tris.Add(1 + offset);
        tris.Add(0 + offset);

        tris.Add(0 + offset);
        tris.Add(3 + offset);
        tris.Add(2 + offset);
        offset = verts.Count;


        // X+ wall
        verts.Add(new Vector3(1, 0, 1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, 0));

        verts.Add(new Vector3(1, WallHeight, 1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, WallHeight, -1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(1, 0, -1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, 0));


        tris.Add(0 + offset);
        tris.Add(1 + offset);
        tris.Add(2 + offset);

        tris.Add(2 + offset);
        tris.Add(3 + offset);
        tris.Add(0 + offset);

        offset = verts.Count;


        // X- wall
        verts.Add(new Vector3(-1, 0, 1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, 0));

        verts.Add(new Vector3(-1, WallHeight, 1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(-world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(-1, WallHeight, -1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, WallHeight * GrassUVSCale));

        verts.Add(new Vector3(-1, 0, -1));
        norms.Add(Vector3.left);
        uvs.Add(new Vector2(world.Size * GrassUVSCale, 0));


        tris.Add(2 + offset);
        tris.Add(1 + offset);
        tris.Add(0 + offset);

        tris.Add(0 + offset);
        tris.Add(3 + offset);
        tris.Add(2 + offset);

        offset = verts.Count;

        // add our hard work

        mesh.vertices  = verts.ToArray();
        mesh.uv        = uvs.ToArray();
        mesh.normals   = norms.ToArray();
        mesh.triangles = tris.ToArray();

        mesh.name         = "GroundWallsMesh";
        filter.sharedMesh = mesh;

        MeshRenderer render = obj.AddComponent <MeshRenderer>() as MeshRenderer;

        render.sharedMaterial = (Material)AssetDatabase.LoadAssetAtPath("Assets/BZWTools/StandardAssets/Textures/wall.mat", typeof(Material));

        MeshCollider collider = obj.AddComponent <MeshCollider>() as MeshCollider;

        collider.sharedMesh = mesh;

        obj.isStatic = true;
    }