/// <summary> /// Sets the material of the voxel at the given world position. /// </summary> /// <param name="worldPos"></param> /// <param name="val"></param> public void setMaterialFromWorldPos(Vector3 worldPos, byte val) { worldPos = worldPos - position; Vector3I arrayPos = new Vector3I((int)Math.Round(worldPos.x) / NodeManager.LODSize[LOD], (int)Math.Round(worldPos.y) / NodeManager.LODSize[LOD], (int)Math.Round(worldPos.z) / NodeManager.LODSize[LOD]); if (arrayPos.x < -1 || arrayPos.x > 17 || arrayPos.y < -1 || arrayPos.y > 17 || arrayPos.z < -1 || arrayPos.z > 17) { Debug.Log("Wrong node. " + arrayPos); return; } bool change = (densityChangeData.getMaterial(arrayPos.x, arrayPos.y, arrayPos.z) != val); densityChangeData.setMaterial(arrayPos.x, arrayPos.y, arrayPos.z, val); if (change) { setPermanence(true); hasDensityChangeData = true; MeshFactory.requestSave(this); } }
/// <summary> /// Sets the density of a point, given a world pos. /// </summary> /// <param name="worldPos"></param> public void setDensityFromWorldPos(Vector3 worldPos, float val) { worldPos = worldPos - position; Vector3I arrayPos = new Vector3I((int)(worldPos.x), (int)(worldPos.y), (int)(worldPos.z)); if (arrayPos.x < -1 || arrayPos.x > 17 || arrayPos.y < -1 || arrayPos.y > 17 || arrayPos.z < -1 || arrayPos.z > 17) { Debug.Log("Wrong node. " + arrayPos); return; } densityChangeData.set(arrayPos.x, arrayPos.y, arrayPos.z, val); setPermanence(true); hasDensityChangeData = true; MeshFactory.requestSave(this); }
/// <summary> /// Sets the density of a point, given a world pos. /// </summary> /// <param name="worldPos"></param> public void setDensityFromWorldPos(Vector3 worldPos, float val) { worldPos = worldPos - position; Vector3I arrayPos = new Vector3I((int)Math.Round(worldPos.x) / NodeManager.LODSize[LOD], (int)Math.Round(worldPos.y) / NodeManager.LODSize[LOD], (int)Math.Round(worldPos.z) / NodeManager.LODSize[LOD]); if (arrayPos.x < -1 || arrayPos.x > 17 || arrayPos.y < -1 || arrayPos.y > 17 || arrayPos.z < -1 || arrayPos.z > 17) { Debug.Log("Wrong node. " + arrayPos + ":" + worldPos + ":" + containsDensityPoint(worldPos).ToString()); return; } densityChangeData.set(arrayPos.x, arrayPos.y, arrayPos.z, val); setPermanence(true); hasDensityChangeData = true; MeshFactory.requestSave(this); }