コード例 #1
0
    void Awake()
    {
        drawerComponent = GetComponent <MeshBuilderDrawerComponent>();

        dataExtents = new Extents(16, 4, 16);
        dataVolume  = new DataVolume(dataExtents);
        FillData(dataVolume);

        var groundMesher = new TileMesher3D();

        groundMesher.Init(dataVolume, 0, palette, cellSize,
                          new TileMesher3D.Settings()
        {
            filledBoundaries = Tile.Direction.None,
            skipDirections   = Tile.Direction.YAxis,
        });
        Add(groundMesher, ground);
        if (useGroundNormalAlignment)
        {
            //       builders[builders.Count - 1].AddAligner(cellSize);
        }

        var topGroundMesher = new GridMesher();

        topGroundMesher.Init(dataVolume, GroundIndex, cellSize, 3, GridMesher.UVMode.Normalized);
        topGroundMesher.InitHeightMapScaleFromHeightAvgOffset(groundHeightMap, groundMaxHeight);
        Add(topGroundMesher, grass);

        var waterMesher = new GridMesher();

        waterMesher.Init(dataVolume, WaterIndex, cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -0.2f, 0));
        Add(waterMesher, water);

        var rockMesher = new TileMesher3D();

        rockMesher.Init(dataVolume, 1, palette, cellSize);
        Add(rockMesher, rock);

        foreach (var drawer in drawerComponent.Drawers)
        {
            drawer.StartBuilder();
        }

        StartCoroutine(CompleteMesh());
    }
コード例 #2
0
    void Awake()
    {
        builders = new List <BuiltMesh>();

        dataExtents = new Extents(16, 4, 16);
        dataVolume  = new DataVolume(dataExtents);
        FillData(dataVolume);

        var groundMesher = new TileMesher3D();

        groundMesher.Init(dataVolume, 0, palette, cellSize,
                          new TileMesher3D.Settings()
        {
            filledBoundaries = Tile.Direction.None,
            skipDirections   = Tile.Direction.YAxis,
        });
        Add(groundMesher, groundMeshFilter);
        if (useGroundNormalAlignment)
        {
            builders[builders.Count - 1].AddAligner(cellSize);
        }

        var topGroundMesher = new GridMesher();

        topGroundMesher.Init(dataVolume, GroundIndex, cellSize, 3, GridMesher.UVMode.Normalized);
        topGroundMesher.InitHeightMapScaleFromHeightAvgOffset(groundHeightMap, groundMaxHeight);
        Add(topGroundMesher, groundTopMeshFilter);

        var waterMesher = new GridMesher();

        waterMesher.Init(dataVolume, WaterIndex, cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -0.2f, 0));
        Add(waterMesher, waterMeshFilter);

        foreach (var built in builders)
        {
            built.Start();
        }

        targetGrid = new LatticeGridComponent.VertexGrid(startGrid.Grid);

        groundModifier = new LatticeGridModifier();
        grassModifier  = new LatticeGridModifier();
    }
コード例 #3
0
    void Awake()
    {
        drawerComponent = GetComponent <MeshBuilderDrawerComponent>();

        dataExtents = new Extents(16, 4, 16);
        dataVolume  = new DataVolume(dataExtents);
        FillData(dataVolume);

        var walkwayMesher = new TileMesher2D();

        walkwayMesher.Init(dataVolume, 0, WalkwayFill, walkwayTheme, cellSize, new TileMesher2D.Settings {
            centerRandomRotation = true
        });
        Add(walkwayMesher, walkway);

        var walkwayBgMesher = new GridMesher();

        walkwayBgMesher.Init(dataVolume, WalkwayFill, cellSize, 3, GridMesher.UVMode.Normalized, new float3(0, -1f, 0));
        walkwayBgMesher.InitHeightMapScaleFromHeightAvgOffset(groundHeightMap, groundMaxHeight);
        Add(walkwayBgMesher, walkwayBg);

        var waterMesher = new GridMesher();

        waterMesher.Init(dataVolume, WaterFill, cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -1.2f, 0));
        Add(waterMesher, water);

        var wallMesher = new TileMesher2D();

        wallMesher.Init(dataVolume, 0, WallFill, wallTheme, cellSize, new TileMesher2D.Settings()
        {
            emptyBoundaries = Tile.Direction.None
        });
        Add(wallMesher, wall);

        foreach (var drawer in drawerComponent.Drawers)
        {
            drawer.StartBuilder();
        }
    }
コード例 #4
0
        public Chunk(float3 pos, float3 offsetPos, Transform root, DataVolume data, CreationInfo info)
        {
            Data = data;

            originalPosition = pos;
            offsetPosition   = offsetPos;

            Transform = new GameObject("chunk").transform;
            Transform.SetParent(root);
            Transform.position = pos;

            drawerComponent = Transform.gameObject.AddComponent <MeshBuilderDrawerComponent>();

            var groundMesher = new TileMesher3D();

            groundMesher.Init(data, 0, info.palette, info.cellSize,
                              new TileMesher3D.Settings()
            {
                filledBoundaries = Dir.None,
                skipDirections   = Dir.YAxis,
            });
            Add(groundMesher, info.ground);

            var topGroundMesher = new GridMesher();

            topGroundMesher.Init(data, GroundIndex, info.cellSize, 3, GridMesher.UVMode.Normalized);
            topGroundMesher.InitHeightMapScaleFromHeightAvgOffset(info.groundHeightMap, info.groundMaxHeight);
            Add(topGroundMesher, info.grass);

            var waterMesher = new GridMesher();

            waterMesher.Init(data, WaterIndex, info.cellSize, 1, GridMesher.UVMode.NoScaling, new float3(0, -0.2f, 0));
            Add(waterMesher, info.water);

            var rockMesher = new TileMesher3D();

            rockMesher.Init(data, 1, info.palette, info.cellSize);
            Add(rockMesher, info.rock);
        }