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 |
|
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 |
|
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; |
215 | for (group = 0; V11MODEL(gMr_blendy->model)->ngroups > group; ++group) { |
217 | V11MODEL(gMr_blendy->model)->groups[group]. |
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 |
|
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 = |
378 | blended_polys->render_style = 4; |
380 | BrZbSceneRenderAdd(blended_polys); |
379 | BrZbSceneRenderAdd(blended_polys); |
381 | blended_polys->render_style = |
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 | } |