xolatilization/test.c

164 lines
5.0 KiB
C

#define use_fatal_failure
#define use_mathematics
#define use_png_library
#include "xtandard.h"
#include "xector.h"
#include "xormat.h"
#include "xarticle.h"
#include "xhape.h"
#include "xision.h"
static procedure print_shape (shape_node * sh) {
print ("shape data:\n");
print ("v = %i // %i\n", sh->vertex_count, sh->vertex_limit);
print ("i = %i // %i\n", sh->index_count, sh->index_limit);
}
static procedure render_shape (vision_structure * vision, shape_node * sh) {
//~natural vc = sh->vertex_count;
//~natural ic = sh->index_count;
//~real va [100] = { 0 };
//~natural ia [100] = { 0 };
//~for (natural i = 0; i < vc; i += 5) {
//~va [i+0] = sh->vertex_array [i/5]->x;
//~va [i+1] = sh->vertex_array [i/5]->y;
//~va [i+2] = sh->vertex_array [i/5]->z;
//~va [i+3] = sh->unwrap_array [i/5]->x;
//~va [i+4] = sh->unwrap_array [i/5]->y;
//~}
//~for (natural i = 0; i < ic; i += 5) {
//~ia [i] = sh->index_array [i];
//~}
vision_render_base (vision, sh->vertex_count, sh->vertex_array, sh->index_count, sh->index_array, 0, 0xff7733ff);
}
integer main (none) {
//~vector_3 as = { +2,0,0 };
//~vector_3 bs = { -2,0,0 };
//~vector_3 cs = { 0,+2,0 };
//~vector_3 ds = { 0,-2,0 };
//~vector_3 es = { 0,0,+2 };
//~vector_3 fs = { 0,0,-2 };
shape_node * a = shape_tetrahedron_colour (+2,0,0, 1, 0xff7733ff);
shape_node * b = shape_tetrahedron_colour (-2,0,0, 1, 0xff7733ff);
shape_node * c = shape_tetrahedron_colour (0,+2,0, 1, 0xff7733ff);
shape_node * d = shape_tetrahedron_colour (0,-2,0, 1, 0xff7733ff);
shape_node * e = shape_tetrahedron_colour (0,0,+2, 1, 0xff7733ff);
shape_node * f = shape_tetrahedron_colour (0,0,-2, 1, 0xff7733ff);
//~print ("> v = %i // %i\n", a->vertex_count, a->vertex_limit);
//~print ("> i = %i // %i\n", a->index_count, a->index_limit);
print_shape (a);
vision_structure * vision = vision_initialize (60, 60, false, 6000, 3000, 256);
particle_structure * particle = particle_initialize (1024);
natural i0 = vision_sprite_import (vision, "xui/goblin/end_turn_button.png");
natural i1 = vision_sprite_import (vision, "xui/goblin/separator_center.png");
natural i2 = vision_sprite_import (vision, "xui/goblin/separator_left.png");
natural i3 = vision_sprite_import (vision, "xui/goblin/separator_middle.png");
natural i4 = vision_sprite_import (vision, "xui/goblin/separator_right.png");
vision_configure (vision, 800, 600, "Xube");
while (vision->active == true) {
if (vision->signal [signal_q] == true) break;
if (vision->signal [signal_i] == true) { vision_change_field_of_view (vision, + 0.1f); }
if (vision->signal [signal_o] == true) { vision_change_field_of_view (vision, - 0.1f); }
if (vision->signal [signal_a] == true) { vision_change_translation (vision, + 0.1f, 0.0f, 0.0f); }
if (vision->signal [signal_d] == true) { vision_change_translation (vision, - 0.1f, 0.0f, 0.0f); }
if (vision->signal [signal_s] == true) { vision_change_translation (vision, 0.0f, 0.0f, + 0.1f); }
if (vision->signal [signal_w] == true) { vision_change_translation (vision, 0.0f, 0.0f, - 0.1f); }
//~vision_change_rotation (vision, 0.0f, xxx);
if (vision->signal [signal_1] == true) {
vector_3 p = {0,0,0};
vector_3 t = {0,0,0};
vector_3 s = {0.1f,0.1f,0.1f};
particle_append (particle, 0, 1.0f, 0, 0, & p, & t, & s);
}
if (vision->signal [signal_2] == true) {
vector_3 p = {1,1,1};
particle_effect_splash (particle, 0, 2.0f, 0, 0, & p, 60, 0.03, 3);
}
if (vision->signal [signal_3] == true) {
vector_3 p = {1,1,1};
particle_effect_evaporate (particle, 0, 2.0f, 0, 0, & p, 20, 0.001, 3);
}
render_shape (vision, a);
render_shape (vision, b);
render_shape (vision, c);
render_shape (vision, d);
render_shape (vision, e);
render_shape (vision, f);
//~real t0 [] = {1,0,0,0,0,1,0,1,0};
//~real t1 [] = {1,0,0,0,0,1,0,1,0};
//~real t2 [] = {1,0,0,0,0,1,0,1,0};
//~real t3 [] = {1,0,0,0,0,1,0,1,0};
//~real t4 [] = {1,0,0,0,0,1,0,1,0};
//~real t5 [] = {1,0,0,0,0,1,0,1,0};
//~vision_render_triangle (vision, t0, 0xff7733ff);
//~vision_render_triangle (vision, t1, 0xff7733ff);
//~vision_render_triangle (vision, t2, 0xff7733ff);
//~vision_render_triangle (vision, t3, 0xff7733ff);
//~vision_render_triangle (vision, t4, 0xff7733ff);
//~vision_render_triangle (vision, t5, 0xff7733ff);
//~for (natural i = 0; i < particle->count; ++i) {
//~Vector3 vector = {particle->position [i]->x, particle->position [i]->y, particle->position [i]->z};
//~DrawBillboard (camera, texture, vector, 1, RED);
//~}
//~real va [] = {
//~-1, -1, 0, 0, 1, 1, 1, 1, 1,
//~-1, +1, 0, 0, 0, 1, 1, 1, 1,
//~+1, +1, 0, 1, 0, 1, 1, 1, 1,
//~+1, -1, 0, 1, 1, 1, 1, 1, 1
//~};
//~natural ia [] = { 2, 1, 0, 3, 2, 1 };
//~vision_render_base (vision, sizeof(va)/4, va, sizeof(ia)/4, ia, 1, 0xff7733ff);
vision_synchronize (vision, 0xff);
particle_synchronize (particle, 60);
}
png_image_export ("meme.png", vision->spritesheet_data, 256, 256);
particle = particle_deinitialize (particle);
vision = vision_deinitialize (vision);
return (0);
}