public VoxelObject SpawnAsteroid(Swordfish.Position _position)
    {
        VoxelComponent component = Instantiate(voxelObjectPrefab, _position.toVector3(), Quaternion.identity).GetComponent <VoxelComponent>();

        component.setName("asteroid" + voxelMaster.voxelObjects.Count);
        component.setSize(4);
        component.setStatic(true);
        component.Initialize(VoxelObjectType.ASTEROID);
        return(component.voxelObject);
    }
    public VoxelObject SpawnVoxelObject(Swordfish.Position _position)
    {
        VoxelComponent component = Instantiate(voxelObjectPrefab, _position.toVector3(), Quaternion.identity).GetComponent <VoxelComponent>();

        component.setName("voxelObject" + voxelMaster.voxelObjects.Count);
        component.setSize(2);
        component.setStatic(false);
        component.Initialize(VoxelObjectType.GENERIC);
        return(component.voxelObject);
    }
    public Item DropItemNaturally(Swordfish.Position _position, Item _item, int _count = 1)
    {
        Vector3     offset  = new Vector3(UnityEngine.Random.value - 0.5f, UnityEngine.Random.value - 0.5f, UnityEngine.Random.value - 0.5f) * 0.5f;
        GameObject  temp    = (GameObject)Instantiate(droppedItemPrefab, _position.toVector3() + offset, Quaternion.identity);
        DroppedItem dropped = temp.GetComponent <DroppedItem>();
        Item        item    = _item.copy();

        item.setAmount(_count);
        dropped.setItem(item);
        return(item);
    }
 public Item DropItemNaturally(Swordfish.Position _position, ItemType _type, int _count = 1)
 {
     return(DropItemNaturally(_position, _type.toItem(), _count));
 }
 public Item DropItemNaturally(Swordfish.Position _position, Voxel _voxel, int _count = 1)
 {
     return(((BLOCKITEM)DropItemNaturally(_position, _voxel.toItem(), _count)).setVoxel(_voxel));
 }
    public void CreateVoxelThumbnails()
    {
        Voxel[] voxels = (Voxel[])Enum.GetValues(typeof(Voxel));
        voxelThumbnails = new CachedImage[voxels.Length];
        for (int i = 0; i < voxels.Length; i++)
        {
            Voxel voxel     = voxels[i];
            Block thisBlock = voxel.toBlock();

            int       width = 512, height = 512;
            Texture2D result       = new Texture2D(width, height);
            Camera    renderCamera = new GameObject().AddComponent <Camera>();
            renderCamera.transform.position = new Vector3(-1, 1, -1);
            renderCamera.transform.LookAt(Vector3.zero);
            renderCamera.orthographic     = true;
            renderCamera.orthographicSize = 1.0f;
            renderCamera.clearFlags       = CameraClearFlags.SolidColor;
            renderCamera.backgroundColor  = Color.green;
            // renderCamera.allowMSAA = false;

            RenderTexture temp      = RenderTexture.active;
            RenderTexture renderTex = RenderTexture.GetTemporary(width, height, 32);
            RenderTexture.active       = renderTex;
            renderCamera.targetTexture = renderTex;
            // GL.Clear(true, true, Color.green);

            Mesh mesh = ModelBuilder.GetVoxelMesh(voxel);

            Swordfish.Position offset = thisBlock.getViewOffset();
            Graphics.DrawMesh(mesh, Matrix4x4.TRS(new Vector3(offset.x, offset.y, offset.z), Quaternion.identity, Vector3.one), thumbnailMaterials[0], 0, renderCamera);

            renderCamera.Render();
            renderCamera.targetTexture = null;

            result = new Texture2D(width, height, TextureFormat.RGBA32, false);
            result.ReadPixels(new Rect(0, 0, width, height), 0, 0, false);
            result.Apply(false, false);

            RenderTexture.active = temp;
            RenderTexture.ReleaseTemporary(renderTex);

            Color clearColor = new Color(0, 0, 0, 0);
            for (int x = 0; x < width; x++)
            {
                for (int y = 0; y < width; y++)
                {
                    if (result.GetPixel(x, y).g >= 0.7f && result.GetPixel(x, y).r <= 0.4f && result.GetPixel(x, y).b <= 0.4f)
                    {
                        clearColor   = result.GetPixel(x, y);
                        clearColor.a = 0.0f;
                        result.SetPixel(x, y, clearColor);
                    }
                }
            }
            result.Apply(false, false);
            result.filterMode = FilterMode.Point;

            voxelThumbnails[i] = new CachedImage(result, voxel.ToString());
            Destroy(renderCamera.gameObject);
        }
    }