# HG changeset patch # User John Tsiombikas # Date 1400972407 -10800 # Node ID 20d6c05529f1a42a675e7de123727ce63383552d # Parent f97dd1877f5f699d975208a2b1eeeb30ad17c543 debugging the sphere problem diff -r f97dd1877f5f -r 20d6c05529f1 liberebus/src/erebus.cc --- a/liberebus/src/erebus.cc Sat May 24 21:56:04 2014 +0300 +++ b/liberebus/src/erebus.cc Sun May 25 02:00:07 2014 +0300 @@ -39,6 +39,9 @@ std::vector keystate; std::vector bnstate; int mouse_pos[2]; + + // debugging stuff + int dbg_nodesel; }; static void render_pixel(struct erebus *ctx, int x, int y, int sample); @@ -64,6 +67,8 @@ ctx->cur_rect = INVALID_RECT; ctx->options[ERB_OPT_MAX_SAMPLES].x = (float)INF_SAMPLES; + + ctx->dbg_nodesel = -1; return ctx; } @@ -115,6 +120,8 @@ ctx->fbimg.create(xsz, ysz); ctx->accum.create(xsz, ysz); + + ctx->cur_rect = INVALID_RECT; } int erb_render(struct erebus *ctx, long timeout) @@ -215,14 +222,54 @@ bool erb_input_keyboard(struct erebus *ctx, int key, bool pressed) { if(!ctx) return false; - if(ctx->keystate.size() <= key) ctx->keystate.resize(key < 256 ? 256 : key + 1); + if((int)ctx->keystate.size() <= key) { + ctx->keystate.resize(key < 256 ? 256 : key + 1); + } ctx->keystate[key] = pressed; if(pressed) { switch(key) { + case '.': + { + int node_count = ctx->scn->get_node_count(); + if(node_count && ++ctx->dbg_nodesel >= node_count) { + ctx->dbg_nodesel = 0; + } + printf("selected node: %d\n", ctx->dbg_nodesel); + } + break; + + case ',': + { + int node_count = ctx->scn->get_node_count(); + if(node_count && --ctx->dbg_nodesel < 0) { + ctx->dbg_nodesel = node_count - 1; + } + printf("selected node: %d\n", ctx->dbg_nodesel); + } + break; + case '=': case '-': + case '0': + if(ctx->dbg_nodesel != -1) { + SceneNode *node = ctx->scn->get_node(ctx->dbg_nodesel); + Vector3 s = node->get_scaling(); + switch(key) { + case '=': + node->set_scaling(s * 1.1); + break; + case '-': + node->set_scaling(s * 0.9); + break; + case '0': + node->set_scaling(Vector3(1, 1, 1)); + break; + } + } + erb_begin_frame(ctx, 0); + return true; } } return false; @@ -231,7 +278,9 @@ bool erb_input_mouse_button(struct erebus *ctx, int bn, bool pressed, int x, int y) { if(!ctx) return false; - if(ctx->bnstate.size() <= bn) ctx->bnstate.resize(bn < 32 ? 32 : bn + 1); + if((int)ctx->bnstate.size() <= bn) { + ctx->bnstate.resize(bn < 32 ? 32 : bn + 1); + } ctx->bnstate[bn] = pressed; ctx->mouse_pos[0] = x; diff -r f97dd1877f5f -r 20d6c05529f1 src/main.cc --- a/src/main.cc Sat May 24 21:56:04 2014 +0300 +++ b/src/main.cc Sun May 25 02:00:07 2014 +0300 @@ -199,7 +199,7 @@ static void motion(int x, int y) { - if(erb_input_mouse_move(erb, x, y)) { + if(erb_input_mouse_motion(erb, x, y)) { glutPostRedisplay(); } }