예제 #1
0
        public void GenerateSceneGraph()
        {
            if (regionMap != null)
            {
                DestroyImmediate(regionMap);
            }

            // 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;

            regionMap = new GameObject(RegionName);
            var sceneGraph = new SceneGraph(regionMap, GroupOptions, GameObjectOptions, features);

            sceneGraph.Generate();
        }
예제 #2
0
    void OnTaskReady(TileTask readyTask)
    {
        tasks.Add(readyTask);

        if (tasks.Count == nTasksForArea)
        {
            tasks.Clear();

            SceneGraph.Generate(regionMap, null, gameObjectOptions);
        }
    }
예제 #3
0
        public void 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(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();
        }
예제 #4
0
        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();
        }