Nothing
cfg <- piecepackr::game_systems("sans3d")$piecepack
test_that("save_piece_obj works", {
files <- save_piece_obj("tile_face", z = NA, cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("tile_back", cfg = cfg, angle = NA, axis_x = NA, axis_y = NA)
expect_length(files, 3)
files <- save_piece_obj("die_face", cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("pyramid_top", cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("pyramid_left", cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("pyramid_right", cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("pyramid_back", cfg = cfg)
expect_length(files, 3)
files <- save_piece_obj("pyramid_face", cfg = cfg)
expect_length(files, 3)
expect_error(save_piece_obj("belt_face"))
})
test_that("rgl works", {
skip_on_cran()
skip_if_not_installed("rgl")
skip_if_not_installed("systemfonts") # prevent buggy cairo interaction with "dejavu3d" style
library("rgl", quietly = TRUE,
include.only = c("clear3d", "close3d", "open3d", "view3d"))
# go stone OBJ generation uses "rgl" in background
files <- save_piece_obj("bit_face", cfg = game_systems("dejavu3d")$go)
expect_length(files, 3)
files <- save_piece_obj("pawn_top", cfg = game_systems("sans3d", pawn="peg-doll")$piecepack)
expect_length(files, 3)
open3d(useNULL = TRUE)
df <- tibble::tibble(piece_side = "tile_face", scale = c(1, 0))
pmap_piece(df, piece3d, cfg=cfg)
clear3d()
cfg <- game_systems("sans3d", pawn = "joystick")$piecepack
l <- piece3d("pawn_top", x=-1:1, suit=1:3, cfg = cfg, lit=TRUE)
expect_true(length(l) > 2)
clear3d()
cfg <- game_systems()$dice_d4
l <- piece3d("die_face", x=1:4, suit=1:4, rank=1:4, cfg=cfg)
expect_true(length(l) == 4)
clear3d()
l <- piece3d("die_face", x=1:8, suit=c(1:6, 1:2), rank=1:8, cfg=dice_d8())
expect_true(length(l) == 8)
clear3d()
l <- piece3d("die_face", x=rep(1:5, 2), y=rep(1:2, each=5),
rank=1:10, suit=rep(1:5, 2), cfg=dice_d10())
expect_true(length(l) == 10)
clear3d()
l <- piece3d("die_face", x=rep(1:5, 2), y=rep(1:2, each=5),
rank=1:10, suit=rep(1:5, 2), cfg=dice_d10_percentile())
expect_true(length(l) == 10)
clear3d()
l <- piece3d("die_face", x=rep(1:6, 2), y=rep(1:2, each=6),
rank=1:12, suit=rep(1:6, length.out=12), cfg=dice_d12())
expect_true(length(l) == 12)
clear3d()
l <- piece3d("die_face", x=rep(1:5, 4), y=rep(1:4, each=5),
rank=1:20, suit=rep(1:6, length.out=20), cfg=dice_d20())
expect_true(length(l) == 20)
close3d()
})
test_that("rayrender works", {
skip_on_cran()
skip_if_not_installed("rayrender")
library("rayrender", include.only = "render_scene", quietly = TRUE)
scene <- piece("coin_face", x=-1:1, rank=1:3, cfg = cfg)
f <- tempfile(fileext = ".jpeg")
png(f)
render_scene(scene, samples = 1, interactive = FALSE)
dev.off()
expect_true(file.exists(f))
unlink(f)
expect_null(piece("coin_face", x=-1:1, rank=1:3, cfg = cfg, scale = 0))
cfg <- game_systems("sans3d", pawn = "joystick")$piecepack
skip_if_not_installed("rgl") # needed to generate joystick pawn obj
scene <- piece("pawn_top", x=-1:1, suit=1:3, cfg = cfg)
expect_equal(nrow(scene), 9)
# render_scene(scene, samples = 1, lookfrom=c(0, -5, 5)) # nolint
})
test_that("rayvertex works", {
skip_on_cran()
skip_if_not_installed("rayvertex")
library("rayvertex", quietly = TRUE,
include.only = c("directional_light", "rasterize_scene"))
scene <- piece_mesh("coin_face", x=-1:1, rank=1:3, cfg = cfg)
f <- tempfile(fileext = ".png")
png(f)
rasterize_scene(scene,
light_info = directional_light(c(0, 0, 1)),
lookat = c(0, 0, 0))
dev.off()
expect_true(file.exists(f))
unlink(f)
expect_null(piece_mesh("coin_face", x=-1:1, rank=1:3, cfg = cfg, scale = 0))
cfg <- game_systems("sans3d", pawn = "joystick")$piecepack
skip_if_not_installed("rgl") # needed to generate joystick pawn obj
scene <- piece_mesh("pawn_top", x=-1:1, suit=c(1,3,4), cfg = cfg)
# rasterize_scene(scene, lookfrom=c(0, -5, 5),
# light_info = directional_light(c(0, -5, 5))) # nolint
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.