Subversion Repositories Games.Carmageddon

Rev

Rev 1 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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