public void DrawNewAgents() { List <FeatureMesh> meshList = new List <FeatureMesh>(); foreach (var agent in GamaManager.gamaAgentList) { if (!agent.isDrawed) { agent.isDrawed = true; FeatureMesh featureMesh = new FeatureMesh("NameGama1", "GamaRoads", "NameGama13", agent.agentName); List <Vector3> Vertices = new List <Vector3>(); List <Vector2> UVs = new List <Vector2>(); List <int> Indices = new List <int>(); MeshData meshData = featureMesh.Mesh; List <MeshData.Submesh> Submeshes = new List <MeshData.Submesh>(); MeshData.Submesh submesh = new MeshData.Submesh(); Vector2[] vertices2D = agent.agentCoordinate.getVector2Coordinates(); Triangulator triangulator = new Triangulator(vertices2D); Vertices = triangulator.get3dVerticesList(vertices2D, 2); Indices = triangulator.getTriangulesList(); UVs = new List <Vector2>(); Vector3[] VerticesArray = Vertices.ToArray(); Vector2[] UvArray = UvCalculator.CalculateUVs(VerticesArray, 1); UVs = UvArray.ToList(); submesh.Indices = Indices; Submeshes.Add(submesh); meshData.addGamaMeshData(Vertices, UVs, Submeshes); featureMesh.Mesh = meshData; meshList.Add(featureMesh); meshList.Add(featureMesh); } } if (regionMap != null) { // DestroyImmediate(regionMap); Debug.Log("regionMap is Null"); } // Merge all feature meshes List <FeatureMesh> features = new List <FeatureMesh>(); /* * foreach (var task in tasks) * { * if (task.Generation == generation) * { * features.AddRange(task.Data); * } * } * * tasks.Clear(); * nTasksForArea = 0; */ features.AddRange(meshList); regionMap = new GameObject(RegionName); var sceneGraph = new SceneGraph(regionMap, GroupOptions, GameObjectOptions, features); sceneGraph.Generate(); }
public void DrawNewAgents() { RegionName = "GamaMap"; bool isNewAgentCreated = false; List <FeatureMesh> meshList = new List <FeatureMesh>(); foreach (var agent in GamaManager.gamaAgentList) { if (!agent.isDrawed) { isNewAgentCreated = true; agent.isDrawed = true; //FeatureMesh featureMesh = new FeatureMesh("NameGama1", agent.geometry, "NameGama13", agent.agentName); FeatureMesh featureMesh = new FeatureMesh(agent.agentName, agent.getCollection(), agent.getLayer(), agent.agentName); List <Vector3> Vertices = new List <Vector3>(); List <Vector2> UVs = new List <Vector2>(); List <int> Indices = new List <int>(); MeshData meshData = featureMesh.Mesh; List <MeshData.Submesh> Submeshes = new List <MeshData.Submesh>(); MeshData.Submesh submesh = new MeshData.Submesh(); Vector2[] vertices2D = agent.agentCoordinate.getVector2Coordinates(); /* * // To delete. This is dealt in the UtilXml Class * List<Vector2> vect = new List<Vector2>(); * vect = vertices2D.ToList(); * if (agent.geometry.Equals("Polygon")) * { * // vect.RemoveAt(vect.Count - 1); * } * vertices2D = vect.ToArray(); */ Triangulator triangulator = new Triangulator(vertices2D); triangulator.setAllPoints(triangulator.get2dVertices()); float elevation = this.elevation; if (agent.geometry.Equals("LineString")) { elevation = 0.0f; } //Vertices = triangulator.get3dVerticesList(elevation); Vertices = triangulator.get3dVerticesList(agent.height); Debug.Log("-------------->>>> " + agent.agentName + " hight is ---------------> " + agent.height); Indices = triangulator.getTriangulesList(); Vector3[] VerticesArray = Vertices.ToArray(); Vector2[] UvArray = UvCalculator.CalculateUVs(VerticesArray, 100); UVs = new List <Vector2>(); UVs = UvArray.ToList(); /* * if (agent.geometry.Equals("Point")) * { * Vertices = agent.agentCoordinate.getVector3Coordinates().ToList(); * Indices = new List<int>(); * Indices.Add(1);Indices.Add(1);Indices.Add(1); * UVs = new List<Vector2>(); * } */ submesh.Indices = Indices; submesh.Material = buildingMaterial; Submeshes.Add(submesh); Debug.Log("addGamaMeshData ------> " + agent.geometry + " Agent name -> " + agent.agentName); meshData.addGamaMeshData(Vertices, UVs, Submeshes, agent); featureMesh.Mesh = meshData; meshList.Add(featureMesh); } } if (isNewAgentCreated) { if (regionMap != null) { //DestroyImmediate(regionMap); Debug.Log("regionMap is Null"); } // Merge all feature meshes List <FeatureMesh> features = new List <FeatureMesh>(); features.AddRange(meshList); regionMap = GameObject.Find(RegionName); if (regionMap == null) { regionMap = new GameObject(RegionName); } Debug.Log("The rgion Name is : " + RegionName); //regionMap = new GameObject(RegionName); var sceneGraph = new SceneGraph(regionMap, GroupOptions, GameObjectOptions, features); //sceneGraph sceneGraph.DrawFromGama(); } }
public void GenerateSceneGraph() { // Add tasks here! //------------------------------------------------------------------ Debug.Log("Calling method - > GenerateSceneGraph "); List <FeatureMesh> meshList = new List <FeatureMesh>(); FeatureMesh featureMesh = new FeatureMesh("NameGama1", "GamaBlocks", "NameGama3", "Blok1"); meshList.Add(featureMesh); featureMesh = new FeatureMesh("NameGama1", "GamaBlocks", "GamaBlocks", "Block2"); meshList.Add(featureMesh); featureMesh = new FeatureMesh("NameGama1", "GamaBlocks", "Na6", "Block3"); meshList.Add(featureMesh); featureMesh = new FeatureMesh("NameGama1", "GamaRoads", "NameGama9", "Road1"); meshList.Add(featureMesh); featureMesh = new FeatureMesh("NameGama11", "GamaRoads", "NameGama13", "Road2"); // featureMesh.Mesh = new MeshData(); MeshData meshData = featureMesh.Mesh; // List<Submesh> Submeshes = new List<Submesh>(); List <Vector3> Vertices = new List <Vector3>(); List <Vector2> UVs = new List <Vector2>(); List <int> Indices = new List <int>(); List <MeshData.Submesh> Submeshes = new List <MeshData.Submesh>(); MeshData.Submesh submesh = new MeshData.Submesh(); //Material Material = new Material(contents: "UVGrid"); submesh.Indices = Indices; Submeshes.Add(submesh); meshData.addGamaMeshData(Vertices, UVs, Submeshes); featureMesh.Mesh = meshData; //meshData.Meshes meshList.Add(featureMesh); featureMesh = new FeatureMesh("NameGama11", "GamaRoads", "NameGama13", "Cube3"); // featureMesh.Mesh = new MeshData(); meshData = featureMesh.Mesh; Vector2[] vertices2D = new Vector2[] { new Vector2(0, 0), new Vector2(10, 0), new Vector2(10, 10), new Vector2(0, 10), }; Triangulator triangulator = new Triangulator(vertices2D); Vertices = triangulator.get3dVerticesList(vertices2D, 2); Indices = triangulator.getTriangulesList(); UVs = new List <Vector2>(); UVs.AddRange(new List <Vector2> { new Vector2(0.0f, 0.2f), new Vector2(0.0f, 0.2f), new Vector2(0.0f, 0.0f), new Vector2(0.0f, 0.0f), new Vector2(0.1f, 0.2f), new Vector2(0.0f, 0.2f), new Vector2(0.1f, 0f), new Vector2(0.0f, 0.0f) }); Submeshes = new List <MeshData.Submesh>(); submesh = new MeshData.Submesh(); submesh.Indices = Indices; Submeshes.Add(submesh); meshData.addGamaMeshData(Vertices, UVs, Submeshes); featureMesh.Mesh = meshData; meshList.Add(featureMesh); if (regionMap != null) { DestroyImmediate(regionMap); Debug.Log("regionMap is Null"); } // Merge all feature meshes List <FeatureMesh> features = new List <FeatureMesh>(); foreach (var task in tasks) { if (task.Generation == generation) { features.AddRange(task.Data); } } tasks.Clear(); nTasksForArea = 0; features.AddRange(meshList); regionMap = new GameObject(RegionName); var sceneGraph = new SceneGraph(regionMap, GroupOptions, GameObjectOptions, features); sceneGraph.Generate(); }