示例#1
0
        // ==== maintenance ===========================================================================================

        public void Awake()
        { // chunk initialization (load/generate data, set position, etc.)
            // Set variables
            ChunkIndex        = new Index(transform.position);
            SideLength        = Engine.ChunkSideLength;
            SquaredSideLength = SideLength * SideLength;
            NeighborChunks    = new Chunk[6]; // 0 = up, 1 = down, 2 = right, 3 = left, 4 = forward, 5 = back
            MeshCreator       = GetComponent <ChunkMeshCreator>();
            Fresh             = true;

            // Register chunk
            ChunkManager.RegisterChunk(this);

            LogicBlocks = new Dictionary <Index, GameObject>(); // Logic blocks array

            // Clear the voxel data
            VoxelData = new ushort[SideLength * SideLength * SideLength];

            // Set actual position
            transform.position = ChunkIndex.ToVector3() * SideLength;

            // multiply by scale
            transform.position = new Vector3(transform.position.x * transform.localScale.x, transform.position.y * transform.localScale.y, transform.position.z * transform.localScale.z);

            // Grab voxel data
            if (Engine.EnableMultiplayer && !Network.isServer)
            {
                StartCoroutine(RequestVoxelData()); // if multiplayer, get data from server
            }
            else if (Engine.EnableInternetplayer)
            {
            }
            else if (Engine.SaveVoxelData && TryLoadVoxelData() == true)
            {
                // data is loaded through TryLoadVoxelData()
            }
            else
            {
                GenerateVoxelData();
            }
        }
示例#2
0
        // ==== maintenance ===========================================================================================

        public void Awake()
        {
            chunkIndex = new Index(transform.position);

            Size = Engine.ChunkSize;

            neighborChunks = new Chunk[6]; // 0 = up, 1 = down, 2 = right, 3 = left, 4 = forward, 5 = back
            MeshCreator    = GetComponent <ChunkMeshCreator>();
            fresh          = true;

            // Register chunk
            ChunkManager.RegisterChunk(this);

            // Clear the voxel data
            voxelData = new ushort[sizeX * sizeY * sizeZ];

            // Set actual position
            Vector3 idx = chunkIndex.ToVector3();
            Vector3 s   = transform.localScale;

            transform.position = new Vector3(
                idx.x * sizeX * s.x,
                idx.y * sizeY * s.y,
                idx.z * sizeZ * s.z);

            // Grab voxel data
            if (Engine.EnableMultiplayer && !Network.isServer)
            {
                StartCoroutine(RequestVoxelData()); // if multiplayer, get data from server
            }
            else if (Engine.SaveVoxelData && TryLoadVoxelData())
            {
                // data is loaded through TryLoadVoxelData()
            }
            else
            {
                GenerateVoxelData();
            }
        }