void lndr_gen_mv_matrix(Lander *lander)
{
    mat4x4 ident, temp, trans;
    mat4x4_identity(ident);

    /*
    float glx = 2 / glob_game.ppw;
    float gly = 2 / glob_game.pph;
    */

    /*
    glx *= lander->x;
    gly *= lander->y;

    glx--;
    gly--;
    */

    float glx = lander->x;
    float gly = lander->y;

    mat4x4_scale_aniso(temp, ident, DEFAULT_SCALE, DEFAULT_SCALE, DEFAULT_SCALE);
    
    mat4x4_rotate_Z(temp, temp, lander->rotation);
    mat4x4_translate(trans, glx, gly, 0);
    mat4x4_mul(ident, trans, temp);
    mat4x4_transpose(lander->mvMatrix, ident);
}
void lndr_gen_jet_mv_matrix(Lander *lander)
{
    if(lander->jetState == JS_OFF)
        return;

    float scale = 0;
    if(lander->jetState == JS_INCREASING || lander->jetState == JS_DECREASING)
        scale = lander->jetFrames / FLAME_GROW_RATE;
    else if(lander->jetState == JS_ON)
    {
        if(lander->jetFrames < 10)
            return;

        lander->jetFrames = 0;

        int rnd = rand() % 6 - 3;
        scale = 1.0 + (0.07 * rnd);
    }

    mat4x4 ident, temp;
    mat4x4_identity(ident);

    mat4x4_translate_in_place(ident, 0, -0.3529412, 0);
    mat4x4_scale_aniso(temp, ident, 1.0, scale, 1.0);
    mat4x4_translate_in_place(temp, 0, 0.3529412, 0);

    mat4x4_transpose(lander->jetMatrix, temp);
}
Exemple #3
0
static void
recalculate_matrices(struct ball *b)
{
    mat4x4_identity(b->model_matrix);
    mat4x4_translate_in_place(b->model_matrix, b->x, b->y, b->z);
    mat4x4_scale_aniso(b->model_matrix, b->model_matrix, SCALE_FACTOR, SCALE_FACTOR, SCALE_FACTOR);

    mat4x4_invert(b->normal_matrix, b->model_matrix);
    mat4x4_transpose(b->normal_matrix, b->normal_matrix);

}
void lndr_get_current_points(Lander *lander, GLfloat *buf)
{
    int i;
    for(i = 0; i < 112; i += 2)
    {
        GLfloat x = position_data[i];
        GLfloat y = position_data[i + 1];

        vec4 pt = {x, y, 0, 1};
        mat4x4 mat;
        mat4x4_transpose(mat, lander->mvMatrix);
        
        vec4 out;
        mat4x4_mul_vec4(out, mat, pt);
        buf[i] = out[0];
        buf[i + 1] = out[1];

        //printf("%f %f\n", out[0], out[1]);
    }
}