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); }
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); }
public static GameObject GetRoot() { BZWWorld root = GameObject.FindObjectOfType <BZWWorld>(); if (root != null) { return(root.gameObject); } return(FromBZW.CreateNewBZWRoot(new WorldMap())); }
public static void BuildGrass(GameObject obj, BZWWorld world) { BuildGroundPlane(obj, world.Size, "Assets/BZWTools/StandardAssets/Textures/std_ground.mat"); }
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; }