Beispiel #1
0
 void GenerateHeightmap(MapManager manager)
 {
     Status                 = ChunkStatus.Generating;
     float[,] hmp           = new float[ChunkSize + 1, ChunkSize + 1];
     Percentage[,] biomeMap = new Percentage[ChunkSize + 1, ChunkSize + 1];
     int[] xztmp = new int[2];
     for (int z = 0; z < ChunkSize + 1; z++)
     {
         for (int x = 0; x < ChunkSize + 1; x++)
         {
             if (thr_stopflag)
             {
                 Status = ChunkStatus.Idle;
                 return;
             }
             NonGC_TransformXZ(xztmp, x, z);
             biomeMap[z, x] = GeneratorRef.GetBiome(xztmp[1], xztmp[0]);
             hmp[z, x]      = GeneratorRef.Gen01_KnownBiome(xztmp[1], xztmp[0], biomeMap[z, x]);
             Thread.Sleep(0);
         }
     }
     HeightMap = hmp;
     BiomeMap  = biomeMap;
     GenExtramap(manager);
     Status = ChunkStatus.Prepared;
 }
Beispiel #2
0
        private void Update()
        {
            if (status == ChunkStatus.Ready)
            {
                status = ChunkStatus.NoChange;
                if (!needsRecalculating || recalcToken == null)
                {
                    SetMesh();
                }
                else
                {
                    //Debug.Log("Recalculating");
                    needsRecalculating = false;
#if UNITY_EDITOR
                    GenerateMesh(recalcToken.voxels, recalcToken.voxelSize, recalcToken.overlapAmount, recalcToken.xOffset, recalcToken.yOffset, recalcToken.zOffset, recalcToken.xSize, recalcToken.ySize, recalcToken.zSize, recalcToken.ub0, recalcToken.ub1, recalcToken.ub2, recalcToken.selfShadeIntensity, recalcToken.mode, recalcToken.colliderMode, false, recalcToken.paintMode);
#else
                    GenerateMesh(recalcToken.voxels, recalcToken.voxelSize, recalcToken.overlapAmount, recalcToken.xOffset, recalcToken.yOffset, recalcToken.zOffset, recalcToken.xSize, recalcToken.ySize, recalcToken.zSize, recalcToken.ub0, recalcToken.ub1, recalcToken.ub2, recalcToken.selfShadeIntensity, recalcToken.mode, recalcToken.colliderMode, false);
#endif
                }
            }

            if (updateColliderNextFrame)
            {
                UpdateCollider();
            }
        }
Beispiel #3
0
    public void DrawChunk()
    {
        if (!treesCreated)
        {
            for (int z = 0; z < World.chunkSize; z++)
            {
                for (int y = 0; y < World.chunkSize; y++)
                {
                    for (int x = 0; x < World.chunkSize; x++)
                    {
                        BuildTrees(chunkData[x, y, z], x, y, z);
                    }
                }
            }
            treesCreated = true;
        }
        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkData[x, y, z].Draw();
                }
            }
        }
        CombineQuads(chunk.gameObject, cubeMaterial);
        MeshCollider collider = chunk.gameObject.AddComponent(typeof(MeshCollider)) as MeshCollider;

        collider.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;

        CombineQuads(fluid.gameObject, fluidMaterial);
        status = ChunkStatus.DONE;
    }
    public Chunk GetChunk(int x, int z, ChunkStatus status, bool nonnull)
    {
        if (Thread.CurrentThread != _mainThread)
        {
            throw new Exception("Wrong Thread");
        }

        var positionHash = ChunkPos.AsLong(x, z);

        for (int i = 0; i < 4; i++)
        {
            if (_recentPositions[i] != positionHash || _recentStatuses[i] != status)
            {
                continue;
            }

            var recentChunk = _recentChunks[i];
            if (recentChunk != null || !nonnull)
            {
                return(recentChunk);
            }
        }

        var task  = ProvideChunk(x, z, status, nonnull);
        var chunk = task.GetAwaiter().GetResult();

        if (chunk == null && nonnull)
        {
            throw new Exception("Chunk not there when requested");
        }

        UpdateCache(positionHash, chunk, status);
        return(chunk);
    }
Beispiel #5
0
	public void DrawChunk() {

		Verts.Clear();
		Norms.Clear();
		UVs.Clear();
		SUVs.Clear();
		Tris.Clear();

		Verts_w.Clear();
		Norms_w.Clear();
		UVs_w.Clear();
		SUVs_w.Clear();
		Tris_w.Clear();

		if (!treesCreated) {
			for (int z = 0; z < World.chunkSize; z++)
				for (int y = 0; y < World.chunkSize; y++)
					for (int x = 0; x < World.chunkSize; x++) {
						BuildTrees (chunkData [x, y, z], x, y, z);
					}
			treesCreated = true;
		}

		for (int z = 0; z < World.chunkSize; z++)
			for (int y = 0; y < World.chunkSize; y++)
				for (int x = 0; x < World.chunkSize; x++) {
					
					chunkData [x, y, z].Draw (Verts, Norms, UVs, SUVs, Tris, Verts_w, Norms_w, UVs_w, SUVs_w, Tris_w);

				}

		CombineQuads2 (chunk.gameObject, Verts, Norms, UVs, SUVs, Tris ,cubeMaterial);

		MeshCollider collider = chunk.gameObject.AddComponent (typeof(MeshCollider)) as MeshCollider;
		collider.sharedMesh = chunk.transform.GetComponent<MeshFilter> ().mesh;
		//if(waterChunk)
		CombineQuads2(fluid.gameObject, Verts_w, Norms_w, UVs_w, SUVs_w, Tris_w , fluidMaterial);
		fluid.gameObject.AddComponent<UVScroller> ();
		//CombineQuads(fluid.gameObject, fluidMaterial);

		//CombineTwoMeshes (chunk.gameObject, fluid.gameObject);
		if(waterChunk && chunk.gameObject.GetComponent<NavMeshObstacle>() == null) 
			chunk.gameObject.AddComponent<NavMeshObstacle>();
		status = ChunkStatus.DONE;
		/*if (surfaceChunk) {
			meshSurface = chunk.AddComponent<NavMeshSurface>();
			var newFlags = StaticEditorFlags.OffMeshLinkGeneration | StaticEditorFlags.NavigationStatic;
			GameObjectUtility.SetStaticEditorFlags(chunk, newFlags);
			//StaticEditorFlags.OffMeshLinkGeneration = true;
			meshSurface.BuildNavMesh ();
		}*/
		//meshSurface.BuildNavMesh ();
		//World.Instance.wtf++;
		//Debug.Log(World.Instance.wtf);
		if (World.Instance.firstbuild) {
			World.Instance.processCount++;
			World.Instance.loadingAmount.value = World.Instance.processCount / (World.totalChunks);
		}
	}
Beispiel #6
0
 private void Update()
 {
     if (status == ChunkStatus.Ready)
     {
         SetMesh();
         status = ChunkStatus.NoChange;
     }
 }
Beispiel #7
0
 internal Chunk(int size, int x, int z, MapGen generator)
 {
     Status         = ChunkStatus.Idle;
     ChunkSize      = size;
     ChunkPositionX = x;
     ChunkPositionZ = z;
     GeneratorRef   = generator;
 }
 public static ChunkStatus RegisterSelective(string name, ChunkStatus parent, int range, SelectiveWorker selective)
 {
     return(Register(name, parent, range, (status, world, generator, func, chunks, chunk) =>
     {
         selective(world, generator, chunks, chunk);
         return Task.FromResult(chunk);
     }));
 }
 public Chunk(int x, int z, int randX, int randZ)
 {
     X          = x;
     Z          = z;
     Status     = ChunkStatus.Unoccupied;
     MyRoom     = null;
     this.randX = randX;
     this.randZ = randZ;
 }
 public ChunkStatus(string name, ChunkStatus parent, int range, GenerationWorker generationWorker, LoadingWorker loadingWorker)
 {
     _name             = name;
     _parent           = parent ?? this;
     _range            = range;
     _ordinal          = parent?.Ordinal + 1 ?? 0;
     _generationWorker = generationWorker;
     _loadingWorker    = loadingWorker;
 }
Beispiel #11
0
    //
    // public Chunk GetChunk(int chunkX, int chunkZ, ChunkStatus status)
    // {
    //     return GetChunk(chunkX, chunkZ, status, true);
    // }

    public Chunk GetChunk(int x, int z, ChunkStatus status, bool nonnull)
    {
        var chunk = _provider.GetChunk(x, z, status, nonnull);

        if (chunk == null && nonnull)
        {
            throw new Exception("Should always be able to create a chunk!");
        }

        return(chunk);
    }
Beispiel #12
0
    public BlockTerrain()
    {
        chunks = new Chunk[terrainSize * terrainSize];

        chunkStats     = new ChunkStatus(terrainSize);
        chunkInstances = new ChunkInstance[terrainSize * terrainSize];

        for (int i = 0; i < chunkInstances.Length; i++)
        {
            chunkInstances[i] = new ChunkInstance();
        }
    }
Beispiel #13
0
        private void SaveChunk(ChunkStatus status, bool lockTranslations)
        {
            string error = string.Empty;
            string Value = txtValue.Text;

            if (uwToolbar.Items.FromKeyButton("ilb").Selected)
            {
                Value = HyperCatalog.Business.Chunk.BlankValue;
            }
            //ACQ10.0 Starts
            if (Value.Length <= 0)
            {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", "<script>alert('Please, enter a value!');</script>");
                return;
            }
            //ACQ10.0 Ends

            if (chunk != null)
            // Test if user has made a change that allows database update
            {
                if (txtValue.Text != chunk.Text || ChunkComment1.Comment != chunk.Comment || status != chunk.Status)
                {
                    chunk.Text    = Value;
                    chunk.Comment = ChunkComment1.Comment;
                    chunk.Status  = status;
                }
            }
            else
            {
                chunk = new HyperCatalog.Business.Chunk(itemId, containerId, culture.Code, Value, ChunkComment1.Comment, status, SessionState.User.Id);
            }
            if (chunk.Save(SessionState.User.Id))
            {
                lbResult.Text     = "<br/>Chunk saved!";
                lbResult.CssClass = "hc_success";
                if (Value == HyperCatalog.Business.Chunk.BlankValue)
                {
                    Value = HyperCatalog.Business.Chunk.BlankText;
                }
                if (!lockTranslations)
                {
                    chunk.ForceTranslationsTo(SessionState.User.Id, ChunkStatus.Draft);
                }
                SessionState.QDEChunk = chunk;
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "update", "<script>UpdateGrid('" + HyperCatalog.Business.Chunk.GetStatusFromEnum(chunk.Status) + "', '" + UITools.CleanJSString(Value) + "');</script>");
            }
            else
            {
                lbResult.Text     = "<br/>Error: " + HyperCatalog.Business.Chunk.LastError;
                lbResult.CssClass = "hc_error";
            }
            lbResult.Visible = true;
        }
Beispiel #14
0
        private void SaveChunk(ChunkStatus status, bool lockTranslations)
        {
            string error = string.Empty;
            string Value = txtValue.Text;

            if (uwToolbar.Items.FromKeyButton("ilb").Selected)
            {
                Value = HyperCatalog.Business.Chunk.BlankValue;
            }
            if (chunk != null)
            // Test if user has made a change that allows database update
            {
                if (txtValue.Text != chunk.Text || ChunkComment1.Comment != chunk.Comment || status != chunk.Status)
                {
                    chunk.Text    = Value;
                    chunk.Comment = ChunkComment1.Comment;
                    chunk.Status  = status;
                }
            }
            else
            {
                chunk = new HyperCatalog.Business.Chunk(itemId, containerId, culture.Code, Value, ChunkComment1.Comment, status, SessionState.User.Id);
            }
            if (chunk.Save(SessionState.User.Id))
            {
                //Added this line for QCs# 839 and 1028
                chunk.ModifyDate = DateTime.UtcNow;
                //Added this line for QCs# 839 and 1028

                lbResult.Text     = "<br/>Chunk saved!";
                lbResult.CssClass = "hc_success";
                if (Value == HyperCatalog.Business.Chunk.BlankValue)
                {
                    Value = HyperCatalog.Business.Chunk.BlankText;
                }
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "update", "<script>UpdateGrid('" + HyperCatalog.Business.Chunk.GetStatusFromEnum(chunk.Status) + "', '" + Value.Replace("'", "\\\'") + "');</script>");
                if (!lockTranslations)
                {
                    chunk.ForceTranslationsTo(SessionState.User.Id, ChunkStatus.Draft);
                    SessionState.QDEChunk = chunk;
                }

                //Added this line for QCs# 839 and 1028
                ChunkModifier1.Chunk = chunk;
                //Added this line for QCs# 839 and 1028
            }
            else
            {
                lbResult.Text     = "<br/>Error: " + HyperCatalog.Business.Chunk.LastError;
                lbResult.CssClass = "hc_error";
            }
        }
Beispiel #15
0
        private void Update()
        {
            if (status == ChunkStatus.Ready)
            {
                SetMesh();
                status = ChunkStatus.NoChange;
            }

            if (updateColliderNextFrame)
            {
                UpdateCollider();
            }
        }
    public Task <Chunk> GetChunk(ChunkManager manager, ChunkStatus status)
    {
        if (_tasks[status.Ordinal] != null)
        {
            return(_tasks[status.Ordinal]);
        }

        var task = manager.GetChunk(this, status);

        _tasks[status.Ordinal] = task;
        // Chain(task);
        return(task);
    }
    public Task <Chunk> ProvideChunk(int x, int z, ChunkStatus status, bool nonnull)
    {
        var holder = GetChunkHolder(x, z);

        if (holder == null && nonnull)
        {
            holder = _manager.CreateChunkHolder(x, z);
        }

        return(holder != null
            ? holder.GetChunk(_manager, status)
            : ChunkHolder.MissingChunkFuture);
    }
Beispiel #18
0
        private void Update()
        {
            if (status == ChunkStatus.Ready)
            {
                SetMesh();
                status = ChunkStatus.NoChange;
            }

            if (updateColliderNextFrame)
            {
                UpdateCollider();
            }
        }
    private void UpdateCache(long positionHash, Chunk chunk, ChunkStatus status)
    {
        for (int i = 3; i > 0; i--)
        {
            _recentPositions[i] = _recentPositions[i - 1];
            _recentStatuses[i]  = _recentStatuses[i - 1];
            _recentChunks[i]    = _recentChunks[i - 1];
        }

        _recentPositions[0] = positionHash;
        _recentStatuses[0]  = status;
        _recentChunks[0]    = chunk;
    }
Beispiel #20
0
        private void GenerateThreaded(ref Voxel[] voxels, float voxelSize, float overlapAmount, int xOffset, int yOffset, int zOffset, int xSize, int ySize, int zSize, int ub0, int ub1, int ub2, float selfShadeIntensity, MeshingMode meshMode)
#endif
        {
            status = ChunkStatus.CalculatingMesh;
#if UNITY_EDITOR
            Generate(ref voxels, voxelSize, overlapAmount, xOffset, yOffset, zOffset, xSize, ySize, zSize, ub0, ub1, ub2,
                     selfShadeIntensity, meshMode, paintMode);
#else
            Generate(ref voxels, voxelSize, overlapAmount, xOffset, yOffset, zOffset, xSize, ySize, zSize, ub0, ub1, ub2,
                     selfShadeIntensity, meshMode);
#endif

            status = ChunkStatus.Ready;
        }
Beispiel #21
0
        private void UpdateChunkStatusInCache(JobChunkUid chunkUid, ChunkStatus status, ProcessingMode mode)
        {
            var chunkKey    = GetJobChunkKey(chunkUid, mode);
            var chunkStatus = AzureClient.Instance.CacheClient.Get(chunkKey) as JobChunkStatus;

            if (chunkStatus == null)
            {
                throw new UnknownChunkException("Unrestered chunk")
                      {
                          ChunkUid = chunkUid
                      }
            }
            ;

            chunkStatus.Status     = status;
            chunkStatus.LastUpdate = DateTime.Now;
            AzureClient.Instance.CacheClient.Add(chunkKey, chunkStatus);
        }
    private void dg_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
    {
        bool rtl = e.Row.Cells.FromKey("rtl").Text.ToLower() == "true";

        if (rtl)
        {
            e.Row.Cells.FromKey("Value").Style.CssClass = "rtl";
        }
        if (e.Row.Cells.FromKey("Value").Text == HyperCatalog.Business.Chunk.BlankValue)
        {
            e.Row.Cells.FromKey("Value").Text = HyperCatalog.Business.Chunk.BlankText;
        }
        ChunkStatus cStatus = (ChunkStatus)Enum.Parse(typeof(ChunkStatus), e.Row.Cells.FromKey("Status").Value.ToString());
        string      status  = HyperCatalog.Business.Chunk.GetStatusFromEnum(cStatus);

        e.Row.Cells.FromKey("Status").Style.CssClass = "S" + status;
        e.Row.Cells.FromKey("Status").Value          = string.Empty;
    }
Beispiel #23
0
    public void DrawChunk()
    {
        for (var z = 0; z < World.ChunkSize; z++)
        {
            for (var y = 0; y < World.ChunkSize; y++)
            {
                for (var x = 0; x < World.ChunkSize; x++)
                {
                    ChunkData[x, y, z].Draw();
                }
            }
        }
        CombineQuads();
        var collider = ChunkObject.gameObject.AddComponent(typeof(MeshCollider)) as MeshCollider;

        collider.sharedMesh = ChunkObject.transform.GetComponent <MeshFilter>().mesh;
        Status = ChunkStatus.DONE;
    }
    public void DrawChunk()
    {
        MeshCollider col = chunk.gameObject.AddComponent(typeof(MeshCollider)) as MeshCollider;

        if (!treesCreated)
        {
            for (int z = 0; z < World.chunkSize; z++)
            {
                for (int y = 0; y < World.chunkSize; y++)
                {
                    for (int x = 0; x < World.chunkSize; x++)
                    {
                        int worldX = (int)(x + chunk.transform.position.x);
                        int worldY = (int)(y + chunk.transform.position.y);
                        int worldZ = (int)(z + chunk.transform.position.z);

                        if (Utils.GenHeight(worldX, worldZ) == worldY)
                        {
                            BuildTrees(chunkData[x, y, z], x, y, z);
                        }
                    }
                }
            }
            treesCreated = true;
        }

        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkData[x, y, z].Draw();
                }
            }
        }
        CombineMeshes(chunk.gameObject, cubeMat);
        col.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;
        if (fluid != null)
        {
            CombineMeshes(fluid.gameObject, fluidMat);
        }
        status = ChunkStatus.DONE;
    }
Beispiel #25
0
    private void BuildChunk(Block.BlockType[,,] blockMap)
    {
        bool dataFromFile = false;

        // Commented load functionality, because this may cause issues while changing the underlying code (saved files may not represent the current state of the project)
        //dataFromFile = Load();

        chunkData = new Block[World.chunkSize, World.chunkSize, World.chunkSize];
        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    Vector3 pos    = new Vector3(x, y, z);
                    int     worldX = (int)(x + chunk.transform.position.x);
                    int     worldY = (int)(y + chunk.transform.position.y);
                    int     worldZ = (int)(z + chunk.transform.position.z);

                    // Load chunk from file
                    if (dataFromFile)
                    {
                        chunkData[x, y, z] = new Block(bd.matrix[x, y, z], pos,
                                                       chunk.gameObject, this);
                        continue;
                    }

                    int surfaceHeight = Utils.GenerateHeight(worldX, worldZ);

                    chunkData[x, y, z] = new Block(blockMap[x, y, z], pos,
                                                   chunk.gameObject, this);

                    // Create caves
                    if (chunkData[x, y, z].blockType != Block.BlockType.WATER && Utils.fBM3D(worldX, worldY, worldZ, 0.1f, 3) < 0.42f)
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.AIR, pos,
                                                       chunk.gameObject, this);
                    }

                    status = ChunkStatus.DRAW;
                }
            }
        }
    }
Beispiel #26
0
    /// <summary>
    /// Draws the chunk. If trees are not created yet, create them.
    /// The draw process creates meshes for all blocks and then combines them to a solid and a transparent mesh.
    /// </summary>
    public void DrawChunk()
    {
        // if(!treesCreated)
        // {
        //  for(int z = 0; z < World.chunkSize; z++)
        //      for(int y = 0; y < World.chunkSize; y++)
        //          for(int x = 0; x < World.chunkSize; x++)
        //          {
        //               // Do not build a cactus if there is no cactusbase
        //              if(chunkData[x,y,z].blockType == Block.BlockType.CACTUSBASE) {
        //                  Block t = chunkData[x,y,z].GetBlock(x, y+1, z);
        //                  if(t != null ){
        //                      t.SetType(Block.BlockType.CACTUS);
        //                      chunkData[x,y,z].SetType(Block.BlockType.CACTUS);
        //                  }
        //              }
        //              BuildTrees(chunkData[x,y,z],x,y,z);
        //          }
        //  treesCreated = true;
        // }

        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkData[x, y, z].Draw();
                }
            }
        }

        // Prepare solid chunk mesh
        CombineQuads(chunk.gameObject, cubeMaterial);
        MeshCollider collider = chunk.gameObject.AddComponent(typeof(MeshCollider)) as MeshCollider;

        collider.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;

        // Prepare transparent chunk mesh
        CombineQuads(fluid.gameObject, fluidMaterial);

        status = ChunkStatus.DONE;
    }
Beispiel #27
0
    public void DrawChunk()
    {
        // Draw blocks
        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkData[x, y, z].DrawCube();
                }
            }
        }
        CombineQuads();
        MeshCollider meshCollider = (MeshCollider)chunk.gameObject.AddComponent(typeof(MeshCollider));

        meshCollider.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;
        status = ChunkStatus.DONE;
    }
    public void DrawChunk()
    {
        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkData[x, y, z].Draw();
                }
            }
        }

        CombineQuads(chunk.gameObject, cubeMaterial);
        MeshCollider collider = chunk.gameObject.AddComponent <MeshCollider>();

        collider.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;

        CombineQuads(fluid.gameObject, fluidMaterial);
        status = ChunkStatus.DONE;
    }
Beispiel #29
0
    public void DrawChunk()
    {
        if (!_treesCreated)
        {
            for (int z = 0; z < World.chunkSize; z++)
            {
                for (int y = 0; y < World.chunkSize; y++)
                {
                    for (int x = 0; x < World.chunkSize; x++)
                    {
                        BuildTrees(chunkBlocks[x, y, z], x, y, z);
                    }
                }
            }
            _treesCreated = true;
        }

        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    chunkBlocks[x, y, z].Draw();
                }
            }
        }

        CombineQuads(chunk, chunkMaterial);
        MeshCollider meshCollider = chunk.AddComponent <MeshCollider>();

        meshCollider.sharedMesh = chunk.transform.GetComponent <MeshFilter>().mesh;

        CombineQuads(fluid, fluidMaterial);
        fluid.AddComponent <UVScroller>();

        status = ChunkStatus.done;
    }
    protected void dgPossibleValues_InitializeRow(object sender, Infragistics.WebUI.UltraWebGrid.RowEventArgs e)
    {
        //TODO: Reintroduce the Right to Left if necessary

        /*    bool rtl = e.Row.Cells.FromKey("Rtl").Text.ToLower()=="true";
         *  if (rtl)
         *  {
         *    e.Row.Cells.FromKey("Value").Style.CssClass  = "rtl";
         *  }*/
        if (e.Row.Cells.FromKey("Value").Text == HyperCatalog.Business.Chunk.BlankValue)
        {
            e.Row.Cells.FromKey("Value").Text = HyperCatalog.Business.Chunk.BlankText;
        }
        else
        {
            e.Row.Cells.FromKey("Value").Text = UITools.HtmlEncode(e.Row.Cells.FromKey("Value").Text);
        }
        ChunkStatus cStatus = (ChunkStatus)Enum.Parse(typeof(ChunkStatus), e.Row.Cells.FromKey("Status").Value.ToString());
        string      status  = HyperCatalog.Business.Chunk.GetStatusFromEnum(cStatus);

        e.Row.Cells.FromKey("Status").Style.CssClass = "S" + status;
        e.Row.Cells.FromKey("Status").Value          = string.Empty;
    }
 private void UpdateChunkStatusInCache(JobChunkUid chunkUid, ChunkStatus status, ProcessingMode mode)
 {
     var chunkKey = GetJobChunkKey(chunkUid, mode);
     var chunkStatus = AzureClient.Instance.CacheClient.Get(chunkKey) as JobChunkStatus;
     if (chunkStatus == null)
         throw new UnknownChunkException("Unrestered chunk") { ChunkUid = chunkUid };
     
     chunkStatus.Status = status;
     chunkStatus.LastUpdate = DateTime.Now;
     AzureClient.Instance.CacheClient.Add(chunkKey, chunkStatus);
 }
Beispiel #32
0
        private void GenerateThreaded(ref Voxel[] voxels, float voxelSize,float overlapAmount, int xOffset, int yOffset, int zOffset, int xSize, int ySize, int zSize, int ub0, int ub1, int ub2, float selfShadeIntensity, MeshingMode meshMode)
#endif
        {
            status = ChunkStatus.CalculatingMesh;
#if UNITY_EDITOR
            Generate(ref voxels, voxelSize, overlapAmount, xOffset, yOffset, zOffset, xSize, ySize, zSize, ub0, ub1, ub2,
                        selfShadeIntensity, meshMode, paintMode);
#else
            Generate(ref voxels, voxelSize, overlapAmount, xOffset, yOffset, zOffset, xSize, ySize, zSize, ub0, ub1, ub2,
                        selfShadeIntensity, meshMode);
#endif

            status = ChunkStatus.Ready;
        }
Beispiel #33
0
    private void BuildChunk()
    {
        var dataFromFile = false;

        dataFromFile = Load();

        ChunkData = new Block[World.ChunkSize, World.ChunkSize, World.ChunkSize];

        for (var z = 0; z < World.ChunkSize; z++)
        {
            for (var y = 0; y < World.ChunkSize; y++)
            {
                for (var x = 0; x < World.ChunkSize; x++)
                {
                    var pos    = new Vector3(x, y, z);
                    var worldX = (int)(x + ChunkObject.transform.position.x);
                    var worldY = (int)(y + ChunkObject.transform.position.y);
                    var worldZ = (int)(z + ChunkObject.transform.position.z);

                    if (dataFromFile)
                    {
                        ChunkData[x, y, z] = new Block(bd.matrix[x, y, z], pos, ChunkObject.gameObject, this);
                        continue;
                    }

                    if (Utils.FractalBrownianMethod3D(worldX, worldY, worldZ, 0.1f, 3) < 0.42f)
                    {
                        ChunkData[x, y, z] = new Block(Block.BlockType.AIR, pos, ChunkObject.gameObject, this);
                    }
                    else if (worldY == 0)
                    {
                        ChunkData[x, y, z] = new Block(Block.BlockType.BEDROCK, pos, ChunkObject.gameObject, this);
                    }
                    else if (worldY <= Utils.GenerateStoneHeight(worldX, worldZ))
                    {
                        if (Utils.FractalBrownianMethod3D(worldX, worldY, worldZ, 0.01f, 2) < 0.4f && worldY < 40f)
                        {
                            ChunkData[x, y, z] = new Block(Block.BlockType.DIAMOND, pos, ChunkObject.gameObject, this);
                        }
                        else if (Utils.FractalBrownianMethod3D(worldX, worldY, worldZ, 0.03f, 3) < 0.41f && worldY < 20f)
                        {
                            ChunkData[x, y, z] = new Block(Block.BlockType.REDSTONE, pos, ChunkObject.gameObject, this);
                        }
                        else
                        {
                            ChunkData[x, y, z] = new Block(Block.BlockType.STONE, pos, ChunkObject.gameObject, this);
                        }
                    }
                    else if (worldY == Utils.GenerateHeight(worldX, worldZ))
                    {
                        ChunkData[x, y, z] = new Block(Block.BlockType.GRASS, pos, ChunkObject.gameObject, this);
                    }
                    else if (worldY < Utils.GenerateHeight(worldX, worldZ))
                    {
                        ChunkData[x, y, z] = new Block(Block.BlockType.DIRT, pos, ChunkObject.gameObject, this);
                    }
                    else
                    {
                        ChunkData[x, y, z] = new Block(Block.BlockType.AIR, pos, ChunkObject.gameObject, this);
                    }

                    Status = ChunkStatus.DRAW;
                }
            }
        }
    }
Beispiel #34
0
    void BuildChunk()
    {
        bool dataFromFile = false;

        dataFromFile = Load();

        chunkData = new Block[World.chunkSize, World.chunkSize, World.chunkSize];
        for (int z = 0; z < World.chunkSize; z++)
        {
            for (int y = 0; y < World.chunkSize; y++)
            {
                for (int x = 0; x < World.chunkSize; x++)
                {
                    Vector3 pos    = new Vector3(x, y, z);
                    int     worldX = (int)(x + chunk.transform.position.x);
                    int     worldY = (int)(y + chunk.transform.position.y);
                    int     worldZ = (int)(z + chunk.transform.position.z);

                    if (dataFromFile)
                    {
                        chunkData[x, y, z] = new Block(bd.matrix[x, y, z], pos,
                                                       chunk.gameObject, this);
                        continue;
                    }


                    int surfaceHeight = Utils.GenerateHeight(worldX, worldZ);

                    if (Utils.fBM3D(worldX, worldY, worldZ, 0.1f, 3) < 0.42f)
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.AIR, pos,
                                                       chunk.gameObject, this);
                    }
                    else if (worldY == 0)
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.BEDROCK, pos,
                                                       chunk.gameObject, this);
                    }
                    else if (worldY <= Utils.GenerateStoneHeight(worldX, worldZ))
                    {
                        if (Utils.fBM3D(worldX, worldY, worldZ, 0.01f, 2) < 0.4f && worldY < 40)
                        {
                            chunkData[x, y, z] = new Block(Block.BlockType.DIAMOND, pos,
                                                           chunk.gameObject, this);
                        }
                        else if (Utils.fBM3D(worldX, worldY, worldZ, 0.03f, 3) < 0.41f && worldY < 20)
                        {
                            chunkData[x, y, z] = new Block(Block.BlockType.REDSTONE, pos,
                                                           chunk.gameObject, this);
                        }
                        else
                        {
                            chunkData[x, y, z] = new Block(Block.BlockType.STONE, pos,
                                                           chunk.gameObject, this);
                        }
                    }
                    else if (worldY == surfaceHeight)
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.GRASS, pos,
                                                       chunk.gameObject, this);
                    }
                    else if (worldY < surfaceHeight)
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.DIRT, pos,
                                                       chunk.gameObject, this);
                    }
                    else
                    {
                        chunkData[x, y, z] = new Block(Block.BlockType.AIR, pos,
                                                       chunk.gameObject, this);
                    }

                    status = ChunkStatus.DRAW;
                }
            }
        }
    }