api changes and progress on filling in twn_api.json
This commit is contained in:
parent
5c89c55b3e
commit
8c401eda75
@ -159,7 +159,10 @@ static void draw_terrain(SceneIngame *scn) {
|
|||||||
(Vec3){ (float)x, d3, (float)y - 1 },
|
(Vec3){ (float)x, d3, (float)y - 1 },
|
||||||
(Vec2){ 128, 128 },
|
(Vec2){ 128, 128 },
|
||||||
(Vec2){ 128, 0 },
|
(Vec2){ 128, 0 },
|
||||||
(Vec2){ 0, 128 });
|
(Vec2){ 0, 128 },
|
||||||
|
(Color){255, 255, 255, 255},
|
||||||
|
(Color){255, 255, 255, 255},
|
||||||
|
(Color){255, 255, 255, 255});
|
||||||
|
|
||||||
draw_triangle("/assets/grass.png",
|
draw_triangle("/assets/grass.png",
|
||||||
(Vec3){ (float)x + 1, d1, (float)y },
|
(Vec3){ (float)x + 1, d1, (float)y },
|
||||||
@ -167,7 +170,10 @@ static void draw_terrain(SceneIngame *scn) {
|
|||||||
(Vec3){ (float)x, d3, (float)y - 1 },
|
(Vec3){ (float)x, d3, (float)y - 1 },
|
||||||
(Vec2){ 128, 0 },
|
(Vec2){ 128, 0 },
|
||||||
(Vec2){ 0, 0 },
|
(Vec2){ 0, 0 },
|
||||||
(Vec2){ 0, 128 });
|
(Vec2){ 0, 128 },
|
||||||
|
(Color){255, 255, 255, 255},
|
||||||
|
(Color){255, 255, 255, 255},
|
||||||
|
(Color){255, 255, 255, 255});
|
||||||
|
|
||||||
draw_billboard("/assets/grasses/10.png",
|
draw_billboard("/assets/grasses/10.png",
|
||||||
(Vec3){ (float)x, d0 + 0.15f, (float)y },
|
(Vec3){ (float)x, d0 + 0.15f, (float)y },
|
||||||
|
@ -15,7 +15,7 @@ function game_tick()
|
|||||||
}
|
}
|
||||||
|
|
||||||
draw.sprite {
|
draw.sprite {
|
||||||
path = "/assets/title.png",
|
texture = "/assets/title.png",
|
||||||
rect = {
|
rect = {
|
||||||
x = 320 - (320 / 2),
|
x = 320 - (320 / 2),
|
||||||
y = 180 - (128 / 2),
|
y = 180 - (128 / 2),
|
||||||
|
@ -50,22 +50,10 @@ TWN_API void draw_triangle(char const *texture,
|
|||||||
Vec3 v2,
|
Vec3 v2,
|
||||||
Vec2 uv0,
|
Vec2 uv0,
|
||||||
Vec2 uv1,
|
Vec2 uv1,
|
||||||
Vec2 uv2);
|
Vec2 uv2,
|
||||||
|
Color c0, /* optional, default: all 255 */
|
||||||
// TODO: decide whether it's needed to begin with?
|
Color c1, /* optional, default: all 255 */
|
||||||
// intended usage for it is baked lighting, i would think.
|
Color c2); /* optional, default: all 255 */
|
||||||
// TODO: instead add optional color parameters to 'draw_triangle'
|
|
||||||
/* pushes a colored textured 3d triangle onto the render queue */
|
|
||||||
// void unfurl_colored_triangle(const char *path,
|
|
||||||
// Vec3 v0,
|
|
||||||
// Vec3 v1,
|
|
||||||
// Vec3 v2,
|
|
||||||
// Vec2sh uv0,
|
|
||||||
// Vec2sh uv1,
|
|
||||||
// Vec2sh uv2,
|
|
||||||
// Color c0,
|
|
||||||
// Color c1,
|
|
||||||
// Color c2);
|
|
||||||
|
|
||||||
TWN_API void draw_billboard(const char *texture,
|
TWN_API void draw_billboard(const char *texture,
|
||||||
Vec3 position,
|
Vec3 position,
|
||||||
@ -90,9 +78,13 @@ TWN_API DrawCameraFromPrincipalAxesResult draw_camera_from_principal_axes(Vec3 p
|
|||||||
float yaw);
|
float yaw);
|
||||||
|
|
||||||
/* expects '*' masks that will be expanded to 6 names: 'up', 'down', 'east', 'west', 'north' and 'south' */
|
/* expects '*' masks that will be expanded to 6 names: 'up', 'down', 'east', 'west', 'north' and 'south' */
|
||||||
TWN_API void draw_skybox(const char *paths);
|
TWN_API void draw_skybox(const char *textures);
|
||||||
|
|
||||||
TWN_API void draw_fog(float start, float end, float density, Color color);
|
/* only one for setting is supported for a frame, any call overwrites previous */
|
||||||
|
TWN_API void draw_fog(float start, /* optional, default: 0.0 */
|
||||||
|
float end, /* optional, default: 1.0 */
|
||||||
|
float density, /* optional, default: 0.0 */
|
||||||
|
Color color); /* optional, default: all 255 */
|
||||||
|
|
||||||
|
|
||||||
#ifndef TWN_NOT_C
|
#ifndef TWN_NOT_C
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
"symbol": "sprite",
|
"symbol": "sprite",
|
||||||
"header": "twn_draw.h",
|
"header": "twn_draw.h",
|
||||||
"params": [
|
"params": [
|
||||||
{ "name": "path", "type": "char *" },
|
{ "name": "texture", "type": "char *" },
|
||||||
{ "name": "rect", "type": "Rect" },
|
{ "name": "rect", "type": "Rect" },
|
||||||
{ "name": "texture_region", "type": "Rect *", "default": {} },
|
{ "name": "texture_region", "type": "Rect *", "default": {} },
|
||||||
{ "name": "color", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } },
|
{ "name": "color", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } },
|
||||||
@ -121,6 +121,71 @@
|
|||||||
{ "name": "font", "type": "char *", "default": {} }
|
{ "name": "font", "type": "char *", "default": {} }
|
||||||
],
|
],
|
||||||
"return": "float"
|
"return": "float"
|
||||||
|
},
|
||||||
|
|
||||||
|
"draw_nine_slice": {
|
||||||
|
"module": "draw",
|
||||||
|
"symbol": "nine_slice",
|
||||||
|
"header": "twn_draw.h",
|
||||||
|
"params": [
|
||||||
|
{ "name": "texture", "type": "char *" },
|
||||||
|
{ "name": "corners", "type": "Vec2" },
|
||||||
|
{ "name": "rect", "type": "Rect" },
|
||||||
|
{ "name": "border_thickness", "type": "float", "default": 0 },
|
||||||
|
{ "name": "color", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"draw_triangle": {
|
||||||
|
"module": "draw",
|
||||||
|
"symbol": "triangle",
|
||||||
|
"header": "twn_draw.h",
|
||||||
|
"params": [
|
||||||
|
{ "name": "texture", "type": "char *" },
|
||||||
|
{ "name": "v0", "type": "Vec3" },
|
||||||
|
{ "name": "v1", "type": "Vec3" },
|
||||||
|
{ "name": "v2", "type": "Vec3" },
|
||||||
|
{ "name": "uv0", "type": "Vec2" },
|
||||||
|
{ "name": "uv1", "type": "Vec2" },
|
||||||
|
{ "name": "uv2", "type": "Vec2" },
|
||||||
|
{ "name": "c0", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } },
|
||||||
|
{ "name": "c1", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } },
|
||||||
|
{ "name": "c2", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"draw_billboard": {
|
||||||
|
"module": "draw",
|
||||||
|
"symbol": "billboard",
|
||||||
|
"header": "twn_draw.h",
|
||||||
|
"params": [
|
||||||
|
{ "name": "texture", "type": "char *" },
|
||||||
|
{ "name": "position", "type": "Vec3" },
|
||||||
|
{ "name": "size", "type": "Vec2" },
|
||||||
|
{ "name": "color", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } },
|
||||||
|
{ "name": "cylindrical", "type": "bool", "default": false }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"draw_skybox": {
|
||||||
|
"module": "draw",
|
||||||
|
"symbol": "skybox",
|
||||||
|
"header": "twn_draw.h",
|
||||||
|
"params": [
|
||||||
|
{ "name": "textures", "type": "char *", "default": {} }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
|
||||||
|
"draw_fog": {
|
||||||
|
"module": "draw",
|
||||||
|
"symbol": "fog",
|
||||||
|
"header": "twn_draw.h",
|
||||||
|
"params": [
|
||||||
|
{ "name": "start", "type": "float", "default": 0 },
|
||||||
|
{ "name": "end", "type": "float", "default": 1 },
|
||||||
|
{ "name": "density", "type": "float", "default": 0 },
|
||||||
|
{ "name": "color", "type": "Color", "default": { "r": 255, "g": 255, "b": 255, "a": 255 } }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -15,8 +15,14 @@ void draw_triangle(const char *path,
|
|||||||
Vec3 v2,
|
Vec3 v2,
|
||||||
Vec2 uv0,
|
Vec2 uv0,
|
||||||
Vec2 uv1,
|
Vec2 uv1,
|
||||||
Vec2 uv2)
|
Vec2 uv2,
|
||||||
|
Color c0,
|
||||||
|
Color c1,
|
||||||
|
Color c2)
|
||||||
{
|
{
|
||||||
|
// TODO: support color
|
||||||
|
(void)c0; (void)c1; (void)c2;
|
||||||
|
|
||||||
// TODO: order drawing by atlas id as well, so that texture rebinding is not as common
|
// TODO: order drawing by atlas id as well, so that texture rebinding is not as common
|
||||||
const TextureKey texture_key = textures_get_key(&ctx.texture_cache, path);
|
const TextureKey texture_key = textures_get_key(&ctx.texture_cache, path);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user