Subversion Repositories Games.Carmageddon

Rev

Rev 18 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 18 Rev 20
Line 1... Line 1...
1
#include "brucetrk.h"
1
#include "brucetrk.h"
2
 
2
 
3
#include "brender.h"
3
#include "brender/brender.h"
4
#include "errors.h"
4
#include "errors.h"
5
#include "formats.h"
-
 
6
#include "globvars.h"
5
#include "globvars.h"
7
#include "globvrbm.h"
6
#include "globvrbm.h"
8
#include "harness/trace.h"
7
#include "harness/trace.h"
9
#include "init.h"
8
#include "init.h"
10
#include "pd/sys.h"
9
#include "pd/sys.h"
Line 148... Line 147...
148
        }
147
        }
149
    }
148
    }
150
}
149
}
151
 
150
 
152
// IDA: br_uint_32 __cdecl FindNonCarsCB(br_actor *pActor, tTrack_spec *pTrack_spec)
151
// IDA: br_uint_32 __cdecl FindNonCarsCB(br_actor *pActor, tTrack_spec *pTrack_spec)
153
br_uintptr_t FindNonCarsCB(br_actor* pActor, tTrack_spec* pTrack_spec) {
152
intptr_t FindNonCarsCB(br_actor* pActor, tTrack_spec* pTrack_spec) {
154
    int i;
153
    int i;
155
    br_scalar r1;
154
    br_scalar r1;
156
    br_scalar r2;
155
    br_scalar r2;
157
    br_scalar r3;
156
    br_scalar r3;
158
    LOG_TRACE("(%p, %p)", pActor, pTrack_spec);
157
    LOG_TRACE("(%p, %p)", pActor, pTrack_spec);
Line 194... Line 193...
194
        return BrActorEnum(pActor, (br_actor_enum_cbfn*)FindNonCarsCB, pTrack_spec);
193
        return BrActorEnum(pActor, (br_actor_enum_cbfn*)FindNonCarsCB, pTrack_spec);
195
    }
194
    }
196
}
195
}
197
 
196
 
198
// IDA: br_uint_32 __cdecl ProcessModelsCB(br_actor *pActor, tTrack_spec *pTrack_spec)
197
// IDA: br_uint_32 __cdecl ProcessModelsCB(br_actor *pActor, tTrack_spec *pTrack_spec)
199
br_uintptr_t ProcessModelsCB(br_actor* pActor, tTrack_spec* pTrack_spec) {
198
intptr_t ProcessModelsCB(br_actor* pActor, tTrack_spec* pTrack_spec) {
200
    unsigned int x;
199
    unsigned int x;
201
    unsigned int z;
200
    unsigned int z;
202
    int group;
201
    int group;
203
    LOG_TRACE("(%p, %p)", pActor, pTrack_spec);
202
    LOG_TRACE("(%p, %p)", pActor, pTrack_spec);
204
 
203
 
Line 211... Line 210...
211
        }
210
        }
212
        BrActorEnum(pActor, (br_actor_enum_cbfn*)FindNonCarsCB, pTrack_spec);
211
        BrActorEnum(pActor, (br_actor_enum_cbfn*)FindNonCarsCB, pTrack_spec);
213
        if (gMr_blendy) {
212
        if (gMr_blendy) {
214
            BrActorAdd(pActor, gMr_blendy);
213
            BrActorAdd(pActor, gMr_blendy);
215
            BrModelAdd(gMr_blendy->model);
214
            BrModelAdd(gMr_blendy->model);
216
            for (group = 0; group < V11MODEL(gMr_blendy->model)->ngroups; group++) {
215
            for (group = 0; V11MODEL(gMr_blendy->model)->ngroups > group; ++group) {
217
                V11MODEL(gMr_blendy->model)->groups[group].user = gMr_blendy->model->faces[*V11MODEL(gMr_blendy->model)->groups[group].face_user].material;
216
                V11MODEL(gMr_blendy->model)->groups[group].face_colours_material = gMr_blendy->model->faces[*V11MODEL(gMr_blendy->model)->groups[group].face_user].material;
218
            }
217
            }
219
            gMr_blendy->model->flags &= ~BR_MODF_UPDATEABLE;
218
            gMr_blendy->model->flags &= ~BR_MODF_UPDATEABLE;
220
            DodgyModelUpdate(gMr_blendy->model);
219
            DodgyModelUpdate(gMr_blendy->model);
221
            pTrack_spec->blends[z][x] = gMr_blendy;
220
            pTrack_spec->blends[z][x] = gMr_blendy;
222
        }
221
        }
Line 268... Line 267...
268
    }
267
    }
269
    pTrack_spec->ncolumns_x = x;
268
    pTrack_spec->ncolumns_x = x;
270
    pTrack_spec->ncolumns_z = z;
269
    pTrack_spec->ncolumns_z = z;
271
 
270
 
272
    BrActorToBounds(&bounds, pTrack_spec->the_actor);
271
    BrActorToBounds(&bounds, pTrack_spec->the_actor);
273
    pTrack_spec->column_size_x = (bounds.max.v[0] - bounds.min.v[0] + extra_room * 2.0) / (double)pTrack_spec->ncolumns_x;
272
    pTrack_spec->column_size_x = (br_scalar) (bounds.max.v[0] - bounds.min.v[0] + extra_room * (br_scalar) 2.0) / (double)pTrack_spec->ncolumns_x; // Pierre-Marie Baty -- added type casts
274
    pTrack_spec->column_size_z = (bounds.max.v[2] - bounds.min.v[2] + extra_room * 2.0) / (double)pTrack_spec->ncolumns_z;
273
    pTrack_spec->column_size_z = (br_scalar) (bounds.max.v[2] - bounds.min.v[2] + extra_room * (br_scalar) 2.0) / (double)pTrack_spec->ncolumns_z; // Pierre-Marie Baty -- added type casts
275
    pTrack_spec->origin_x = bounds.min.v[0] - extra_room;
274
    pTrack_spec->origin_x = bounds.min.v[0] - extra_room;
276
    pTrack_spec->origin_z = bounds.min.v[2] - extra_room;
275
    pTrack_spec->origin_z = bounds.min.v[2] - extra_room;
277
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->columns);
276
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->columns);
278
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->lollipops);
277
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->lollipops);
279
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->blends);
278
    AllocateActorMatrix(pTrack_spec, &pTrack_spec->blends);
Line 306... Line 305...
306
    pActor->t.t.mat.m[0][2] = pActor->t.t.mat.m[2][1] * pActor->t.t.mat.m[1][0]
305
    pActor->t.t.mat.m[0][2] = pActor->t.t.mat.m[2][1] * pActor->t.t.mat.m[1][0]
307
        - pActor->t.t.mat.m[1][1] * pActor->t.t.mat.m[2][0];
306
        - pActor->t.t.mat.m[1][1] * pActor->t.t.mat.m[2][0];
308
}
307
}
309
 
308
 
310
// IDA: br_uint_32 __cdecl LollipopizeChildren(br_actor *pActor, void *pArg)
309
// IDA: br_uint_32 __cdecl LollipopizeChildren(br_actor *pActor, void *pArg)
311
br_uintptr_t LollipopizeChildren(br_actor* pActor, void* pArg) {
310
intptr_t LollipopizeChildren(br_actor* pActor, void* pArg) {
312
    tMatrix_and_actor* maa;
311
    tMatrix_and_actor* maa;
313
    LOG_TRACE("(%p, %p)", pActor, pArg);
312
    LOG_TRACE("(%p, %p)", pActor, pArg);
314
 
313
 
315
    maa = pArg;
314
    maa = pArg;
316
    LollipopizeActor4(pActor, maa->m, maa->a);
315
    LollipopizeActor4(pActor, maa->m, maa->a);
Line 374... Line 373...
374
                    column_z2 = column_z;
373
                    column_z2 = column_z;
375
                }
374
                }
376
                if (pDraw_blends) {
375
                if (pDraw_blends) {
377
                    blended_polys = pTrack_spec->blends[column_z2][column_x2];
376
                    blended_polys = pTrack_spec->blends[column_z2][column_x2];
378
                    if (blended_polys) {
377
                    if (blended_polys) {
379
                        blended_polys->render_style = BR_RSTYLE_FACES;
378
                        blended_polys->render_style = 4;
380
                        BrZbSceneRenderAdd(blended_polys);
379
                        BrZbSceneRenderAdd(blended_polys);
381
                        blended_polys->render_style = BR_RSTYLE_NONE;
380
                        blended_polys->render_style = 1;
382
                    }
381
                    }
383
                } else {
382
                } else {
384
                    if (pTrack_spec->columns[column_z2][column_x2]) {
383
                    if (pTrack_spec->columns[column_z2][column_x2]) {
385
                        BrZbSceneRenderAdd(pTrack_spec->columns[column_z2][column_x2]);
384
                        BrZbSceneRenderAdd(pTrack_spec->columns[column_z2][column_x2]);
386
                    }
385
                    }