Exemple #1
0
//---------------------------------------------------------------------------
//  newFrameData
//---------------------------------------------------------------------------
FrameData *newFrameData( Shared *shared )
{
    FrameData *framedata;
    if ( frameDataBuffer == NULL )
    {
        framedata = (FrameData *) mpkMalloc( sizeof(FrameData) );
    }
    else
    {
        framedata = frameDataBuffer;
        frameDataBuffer = framedata->next;
    }
    framedata->next = NULL;

    framedata->time = gettime() - shared->starttime;

    ui_move(framedata->time);
    framedata->r_eyecluster = g->r_eyecluster;
    framedata->r_eyepos[0] = g->r_eyepos[0];
    framedata->r_eyepos[1] = g->r_eyepos[1];
    framedata->r_eyepos[2] = g->r_eyepos[2];
    framedata->r_eye_az    = g->r_eye_az;
    framedata->r_eye_el    = g->r_eye_el;

    return framedata;
}
Exemple #2
0
static void
display(void)
{
    double time;

    time = (double) SDL_GetTicks() / 1000.0 - starttime;
    ui_move(time);
    ui_display(r_context, time);
    hud_render(r_context);
    SDL_GL_SwapBuffers();
}
Exemple #3
0
static void ui_toolbox_update_buttons(struct ui_toolbox *tb) {
    sf_list_iter_t iter;
    float xstep;
    float x;

    /*
     * 假设每个 buttons 的宽度相同,高度和 toolbox 一样。
     * 后期改进可以使用权重来计算每个 button 的位置。
     */
    xstep = tb->ui.area.w * 1.0f / (sf_list_cnt(&tb->buttons) + 1);

    x = xstep;

    if (sf_list_begin(&tb->buttons, &iter)) do {
        struct ui *button = *(struct ui**) sf_list_iter_elt(&iter);
        ui_move(button, x - button->area.w / 2, 0);
        x += xstep;
    } while (sf_list_iter_next(&iter));
}