コード例 #1
0
    void Start()
    {
        // Use Simplex Terrain and our basic Marching Cubes algorithm
        terrGen = new SimplexTerrainGenerator ();

        // Generate the lookup table for the 256 first pass smoothed surface net possibilities
        SurfaceNetLookupTable.GenerateSmoothedPointLocations(Smoothing);

        // Set the MeshGenerator of your choice
        //meshGen = new RegularCubeMeshGenerator ();
        //meshGen = new MarchingCubesMeshGenerator();
        meshGen = new SurfaceNetsMeshGenerator();

        world = new WorldData (terrGen, meshGen, ChunkXSize, ChunkYSize);

        // Add chunks to the list of nearby chunks for instantiation during runtime
        // Reduces black screen load time
        nearbyChunks = new List<Chunk> ();
        for (int i=0; i<world.chunks.GetLength(0); i++) {
            for (int j=0; j<i+1 && j<world.chunks.GetLength(1); j++) {
                nearbyChunks.Add (world.chunks [i, j]);
            }
            for (int k=0; k<i; k++)
            {
                nearbyChunks.Add (world.chunks[k,i]);
            }
        }
    }
コード例 #2
0
 public MapViewGenerator(IMeshGenerator meshGenerator, IOutlineDrawer outlineDrawer,
                         MonoBehaviourProvider monoBehaviourProvider)
 {
     _meshGenerator         = meshGenerator;
     _outlineDrawer         = outlineDrawer;
     _monoBehaviourProvider = monoBehaviourProvider;
 }
コード例 #3
0
    void Start()
    {
        // Use Simplex Terrain and our basic Marching Cubes algorithm
        terrGen = new SimplexTerrainGenerator();
        meshGen = new MarchingCubesMeshGenerator();
        world = new WorldData(terrGen, meshGen);

        // Grab the meshfilter from our current object
        // Replace the mesh data with calculated mesh data from WorldData
        var meshfilter = GetComponent<MeshFilter>();
        Mesh mesh = new Mesh();
        Chunk testChunk = world.chunks[0,0];
        mesh.vertices = testChunk.vertices;
        mesh.uv = testChunk.uvRays;
        mesh.triangles = testChunk.triangles;
        meshfilter.mesh = mesh;
        //meshfilter.mesh.vertices = world.vertices;
        //meshfilter.mesh.uv = world.uvRays;
        //meshfilter.mesh.triangles = world.triangles;

        // Update the mesh collider to use the graphical mesh for the physics engine
        mesh.RecalculateNormals();
        var meshcollider = GetComponent<MeshCollider>();
        meshcollider.sharedMesh = mesh;
    }
コード例 #4
0
ファイル: WorldData.cs プロジェクト: ckimes89/Homeless-Rubber
    public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen)
    {
        chunks = new Chunk[numChunksX,numChunksY];
        TerrainGenerator = terrGen;
        MeshGenerator = meshGen;

        RegenerateWorld();
    }
コード例 #5
0
 public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen)
 {
     points = new bool[ChunkXSize,ChunkYSize,ZSize];
     TerrainGenerator = terrGen;
     MeshGenerator = meshGen;
     TerrainGenerator.GenerateTerrain(this);
     MeshGenerator.GenerateMesh(this);
 }
コード例 #6
0
        public void SetSize(MeshGeneratorType type, Vector2 size)
        {
            IMeshGenerator generator = GetGenerator(type);

            if (generator != null)
            {
                generator.SetSize(size);
            }
        }
コード例 #7
0
ファイル: World.cs プロジェクト: luym11/ninecraft
 public World(WorldData worldData, ITerrainGenerator terrainGenerator, ILightProcessor lightProcessor,
              IMeshGenerator meshGenerator, IWorldDecorator worldDecorator)
 {
     m_WorldData        = worldData;
     m_LightProcessor   = lightProcessor;
     m_MeshGenerator    = meshGenerator;
     m_WorldDecorator   = worldDecorator;
     m_TerrainGenerator = terrainGenerator;
 }
コード例 #8
0
ファイル: WorldData.cs プロジェクト: ckimes89/Homeless-Rubber
    public WorldData(IGenerateTerrain terrGen, IMeshGenerator meshGen, int chunksX, int chunksY)
    {
        numChunksX = chunksX;
        numChunksY = chunksY;
        chunks = new Chunk[numChunksX,numChunksY];
        TerrainGenerator = terrGen;
        MeshGenerator = meshGen;

        RegenerateWorld();
    }
コード例 #9
0
        public Vector2 GetSize(MeshGeneratorType type)
        {
            IMeshGenerator generator = GetGenerator(type);

            if (generator != null)
            {
                return(generator.GetSize());
            }
            return(default(Vector2));
        }
コード例 #10
0
        private void Start()
        {
            _environmentProfileRepository = metaContext.Get <IEnvironmentProfileRepository>();
            Validate();

            _meshGenerator          = metaContext.Get <IMeshGenerator>();
            _meshGenerator.Material = _scanningMaterial;
            _modelFileManipulator   = metaContext.Get <IModelFileManipulator>();
            SetState(ReconstructionState.Initializing);
        }
コード例 #11
0
    public ChunkGenerator(ProceduralTerrainSettings _typeSettings)
    {
        var settings = _typeSettings.Get();

        meshGenerator  = MeshGeneratorFactory.Create(_typeSettings);
        noiseGenerator = new NoiseGenerator(settings);
        chunksPerFrame = settings.chunksPerFrame;

        priorityChunkQueue = new Queue <TerrainChunk>();
        chunkQueue         = new Queue <TerrainChunk>();
        outdatedChunks     = new Queue <TerrainChunk>();
    }
コード例 #12
0
        public IMapView CreateMapView(IMapModel mapModel, IMeshGenerator meshGenerator, IOutlineDrawer outlineDrawer)
        {
            var outlineMaterial = _assetProvider.GetOutlineMaterial();
            var mapZonePrefab   = _assetProvider.GetMapZonePrefab();

            outlineDrawer.OutlineMaterial = outlineMaterial;

            IMapViewGenerator mapViewGenerator = new MapViewGenerator(meshGenerator, outlineDrawer, _monoProvider);
            var mapView = mapViewGenerator.CreateMapView(mapZonePrefab, mapModel);

            return(mapView);
        }
コード例 #13
0
        /// <summary>
        /// 生成网格
        /// </summary>
        /// <param name="target"></param>
        /// <param name="tex"></param>
        /// <param name="size"></param>
        /// <param name="xCells"></param>
        /// <param name="zCells"></param>
        /// <param name="maxLod"></param>
        /// <param name="discardSamples"></param>
        public static void GenerateMesh(GameObject target, Texture2D tex, IMeshGenerator generator)
        {
            if (tex == null)
            {
                return;
            }
            if (target == null)
            {
                return;
            }
            if (generator == null)
            {
                return;
            }
            string savePath = EditorUtility.SaveFilePanel("保存Mesh路径", "Assets/", "New Water Mesh", "asset");

            if (string.IsNullOrEmpty(savePath))
            {
                return;
            }
            savePath = FileUtil.GetProjectRelativePath(savePath);
            if (string.IsNullOrEmpty(savePath))
            {
                return;
            }

            //var unlitMesh = new ASL.UnlitWater.LodMesh(xCells, zCells, size.x*2, size.y*2,
            //    -size.x, -size.y, maxLod, uvDir, discardSamples);
            Mesh mesh = generator.GenerateMesh(tex);

            if (!mesh)
            {
                return;
            }
            MeshFilter mf = target.GetComponent <MeshFilter>();

            if (!mf)
            {
                mf = target.AddComponent <MeshFilter>();
            }
            mf.sharedMesh = mesh;

            AssetDatabase.CreateAsset(mesh, savePath);

            MeshCollider mc = target.GetComponent <MeshCollider>();

            if (mc)
            {
                mc.sharedMesh = mesh;
            }
        }
コード例 #14
0
    void Start()
    {
        terrGen = new SimplexTerrainGenerator();
        meshGen = new MarchingCubesMeshGenerator();
        world = new WorldData(terrGen, meshGen);
        transform.Rotate(new Vector3(2, 2, 2));
        var meshfilter = GetComponent<MeshFilter>();
        Mesh mesh = new Mesh();
        mesh.vertices = world.vertices;
        mesh.uv = world.uvRays;
        mesh.triangles = world.triangles;
        //meshfilter.mesh.vertices = world.vertices;
        //meshfilter.mesh.uv = world.uvRays;
        //meshfilter.mesh.triangles = world.triangles;
        meshfilter.mesh = mesh;

        mesh.RecalculateNormals();
        var meshcollider = GetComponent<MeshCollider>();
        meshcollider.sharedMesh = mesh;
        //var thing = GetComponent<MeshRenderer>();
    }
コード例 #15
0
ファイル: Chunk.cs プロジェクト: ckimes89/Homeless-Rubber
 public Chunk(int xPos, int yPos, int xySize, int zSize, IGenerateTerrain terrGen, IMeshGenerator meshGen, WorldData world)
 {
     TerrainGenerator = terrGen;
     MeshGenerator = meshGen;
     XYSize = xySize;
     ZSize = zSize;
     XPosition = xPos;
     YPosition = yPos;
     upperLimit = new int[XYSize+2, XYSize+2];
     lowerLimit = new int[XYSize+2, XYSize+2];
     blocks = new Block[xySize+2, xySize+2, zSize];
     for(int i=0; i<blocks.GetLength(0); i++)
     {
         for (int j=0; j<blocks.GetLength(1); j++)
         {
             for (int k=0; k<blocks.GetLength(2); k++)
             {
                 blocks[i,j,k] = new Block();
             }
         }
     }
     this.world = world;
 }
コード例 #16
0
 protected TargetColliderGenerator(IApiColliderGenerator api, ITargetData data, IMeshGenerator meshGenerator)
 {
     _api          = api;
     Data          = data;
     MeshGenerator = meshGenerator;
 }
コード例 #17
0
 public PrimitiveColliderGenerator(IApiColliderGenerator primitiveApi, IMeshGenerator meshGenerator)
 {
     _api           = primitiveApi;
     _meshGenerator = meshGenerator;
 }
コード例 #18
0
 public HitTargetColliderGenerator(IApiColliderGenerator api, ITargetData data, IMeshGenerator meshProvider) : base(api, data, meshProvider)
 {
 }