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 | } |