Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | pmbaty | 1 | /* |
| 2 | * This file is part of the DXX-Rebirth project <https://www.dxx-rebirth.com/>. |
||
| 3 | * It is copyright by its individual contributors, as recorded in the |
||
| 4 | * project's Git history. See COPYING.txt at the top level for license |
||
| 5 | * terms and a link to the Git history. |
||
| 6 | */ |
||
| 7 | /* |
||
| 8 | * |
||
| 9 | * took out functions declarations from include/3d.h |
||
| 10 | * which are implemented in 3d/interp.c |
||
| 11 | * |
||
| 12 | */ |
||
| 13 | |||
| 14 | #pragma once |
||
| 15 | |||
| 16 | #include "maths.h" |
||
| 17 | #include "3d.h" |
||
| 18 | |||
| 19 | #ifdef __cplusplus |
||
| 20 | #include "dxxsconf.h" |
||
| 21 | #include "dsx-ns.h" |
||
| 22 | #include <array> |
||
| 23 | |||
| 24 | namespace dcx { |
||
| 25 | class submodel_angles; |
||
| 26 | |||
| 27 | constexpr std::integral_constant<std::size_t, 1000> MAX_POLYGON_VECS{}; |
||
| 28 | struct polygon_model_points : std::array<g3s_point, MAX_POLYGON_VECS> {}; |
||
| 29 | } |
||
| 30 | |||
| 31 | #ifdef dsx |
||
| 32 | namespace dsx { |
||
| 33 | #if defined(DXX_BUILD_DESCENT_I) |
||
| 34 | #define glow_array_size 1 |
||
| 35 | #elif defined(DXX_BUILD_DESCENT_II) |
||
| 36 | #define glow_array_size 2 |
||
| 37 | #endif |
||
| 38 | struct glow_values_t : public std::array<fix, glow_array_size> {}; |
||
| 39 | #undef glow_array_size |
||
| 40 | |||
| 41 | //Object functions: |
||
| 42 | |||
| 43 | //calls the object interpreter to render an object. The object renderer |
||
| 44 | //is really a seperate pipeline. returns true if drew |
||
| 45 | void g3_draw_polygon_model(grs_bitmap *const *model_bitmaps, polygon_model_points &Interp_point_list, grs_canvas &, submodel_angles anim_angles, g3s_lrgb model_light, const glow_values_t *glow_values, const uint8_t *p); |
||
| 46 | |||
| 47 | //init code for bitmap models |
||
| 48 | int16_t g3_init_polygon_model(uint8_t *model_ptr, std::size_t model_size); |
||
| 49 | #if defined(DXX_BUILD_DESCENT_I) |
||
| 50 | void g3_validate_polygon_model(uint8_t *model_ptr, std::size_t model_size); |
||
| 51 | #endif |
||
| 52 | } |
||
| 53 | #endif |
||
| 54 | |||
| 55 | #ifdef dsx |
||
| 56 | namespace dsx { |
||
| 57 | //alternate interpreter for morphing object |
||
| 58 | void g3_draw_morphing_model(grs_canvas &, const uint8_t *model_ptr, grs_bitmap *const *model_bitmaps, submodel_angles anim_angles, g3s_lrgb light, const vms_vector *new_points, polygon_model_points &Interp_point_list); |
||
| 59 | |||
| 60 | // check a polymodel for it's color and return it |
||
| 61 | int g3_poly_get_color(const uint8_t *model_ptr); |
||
| 62 | } |
||
| 63 | #endif |
||
| 64 | |||
| 65 | namespace dcx { |
||
| 66 | #if DXX_WORDS_BIGENDIAN |
||
| 67 | // routine to convert little to big endian in polygon model data |
||
| 68 | void swap_polygon_model_data(ubyte *data); |
||
| 69 | #else |
||
| 70 | static inline void swap_polygon_model_data(uint8_t *) {} |
||
| 71 | #endif |
||
| 72 | } |
||
| 73 | |||
| 74 | #endif |