Kp
8f1055ca6b
Use std::span for poison helper functions
2022-09-24 17:47:51 +00:00
Kp
58061b5f45
Use C++20 std::span for morph_data
2022-07-30 17:42:59 +00:00
Kp
49dee72766
Preserve type of vm_vec_mag return value
...
Defer converting to `fix` until necessary.
2021-09-19 10:53:48 +00:00
Kp
fdf5836031
Move g3 instance contexts onto the stack
2021-09-04 12:17:14 +00:00
Kp
028f4f8a56
Use structured bindings to access enumerated ranges
2021-06-28 03:37:50 +00:00
Dmitry Grigoryev
fbd05a1592
optimize include files (include what you use)
2021-02-06 21:38:50 +01:00
Kp
fc63029833
Move more symbols into namespaces
2020-12-26 21:17:29 +00:00
Kp
0eaabdb2fb
Move N_polygon_models into d_level_shared_polygon_model_state
2020-08-24 01:31:28 +00:00
Kp
038c6aef4d
Move d_level_unique_object_state to a separate header
...
This is required to untangle the cross-inclusion of object.h and
morph.h.
2020-08-10 03:45:14 +00:00
Kp
7ad8d8c28b
Rename object::movement_type to movement_source
...
gcc and clang disagree about how to disambiguate when an identifier is
both a typename and a member. Avoid the disagreement by renaming the
member.
2020-08-10 03:45:13 +00:00
Kp
5245b1c4a3
Rename object::control_type to control_source
...
gcc and clang disagree about how to disambiguate when an identifier is
both a typename and a member. Avoid the disagreement by renaming the
member.
Reported-by: Kreeblah <https://github.com/dxx-rebirth/dxx-rebirth/issues/532 >
2020-08-10 03:45:13 +00:00
Kp
38cddb0289
Use enum class for object movement_type
2020-08-10 03:45:13 +00:00
Kp
9e2543ecbf
Use enum class for object control_type
2020-08-06 03:47:56 +00:00
Kp
c1181b7be5
Move texture_list out of global scope
2020-05-22 02:40:26 +00:00
Kp
53761500f1
Qualify uses of std::array
2020-05-02 21:18:42 +00:00
Kp
9cee93abb1
Require support for C++14 std::exchange
2020-05-02 21:18:42 +00:00
Kp
a645fd2eba
Allocate morph_data vectors dynamically
...
This greatly reduces the size of morph_data for most uses.
2020-02-26 05:07:34 +00:00
Kp
85a9034137
Move morph_data::morph_deltas into a trailing allocation
...
Initially, this just makes the code more complicated. In the end, it
will allow choosing the array size dynamically.
2020-02-26 05:07:34 +00:00
Kp
73612f6667
Move morph_data::morph_vecs into a trailing allocation
...
Initially, this just makes the code more complicated. In the end, it
will allow choosing the array size dynamically.
2020-02-26 05:07:34 +00:00
Kp
74f8fd0d4d
Move morph_data::morph_times into a trailing allocation
...
Initially, this just makes the code more complicated. In the end, it
will allow choosing the array size dynamically.
2020-02-26 05:07:34 +00:00
Kp
00df407381
Use a custom allocation for morph_data
...
This will enable shrinking the morph arrays to allocate only what is
needed.
2020-02-26 05:07:34 +00:00
Kp
5a08c40878
Use zip for morph update_points
2020-02-26 05:07:34 +00:00
Kp
4ec6a13bfa
Zip morph polymodel sequences
2020-02-26 05:07:34 +00:00
Kp
fd134851d1
Pass context to morph_start
2020-02-26 05:07:34 +00:00
Kp
d876874475
Factor out morph model header parsing
2020-02-26 05:07:34 +00:00
Kp
94401b4085
Pass LevelUniqueMorphObjectState to find_morph_data
2020-02-26 05:07:34 +00:00
Kp
c088f15384
Use std::fill to overwrite poisoned ranges
...
gcc can replace std::fill with memset when the code would be a loop
writing byte values.
2020-02-11 04:48:14 +00:00
Kp
bcf06623a5
Disable morph processing in demo files
...
It reads uninitialized values, so it was barely functional before
morph_data became a dynamic allocation, and it is broken now. Disable
it to avoid crashing the game. The demo code should have initialized
the morph_data structure properly, but does not.
Reported-by: tycho <https://github.com/dxx-rebirth/dxx-rebirth/issues/496 >
Fixes: cac5f1da56
("Move morph_data into dynamic allocations")
2020-02-06 03:22:45 +00:00
Kp
f1c6177338
Poison morph_data on allocation
...
Require the caller to provide sane values later.
2020-02-06 03:22:45 +00:00
Kp
0ea0a5ff31
Avoid scaling morph vector by length 0
2020-02-01 22:33:31 +00:00
Kp
7c9b8d61b8
Zip morph elements for traversal
...
This generates code that increments a group of pointers, instead of
incrementing an index and repeatedly multiplying it to compute each
index.
2020-02-01 22:33:31 +00:00
Kp
2bbda9d92c
Factor out morph bounding box setup
2020-02-01 22:33:31 +00:00
Kp
669c341147
Move d_level_unique_morph_object_state to d_level_unique_object_state
2020-02-01 22:33:31 +00:00
Kp
cac5f1da56
Move morph_data into dynamic allocations
...
This improves poison detection, and eliminates some large static
allocations (MAX_VECS * ((2 * vms_vector) + fix)).
2020-02-01 22:33:31 +00:00
Kp
c55c7d1bd6
Move morph_data to dcx
...
Only one member was part of dsx, and it could be dcx instead.
2020-02-01 22:33:31 +00:00
Kp
0db0230689
Use enumerate to manage morph index/pointer
2020-02-01 22:33:31 +00:00
Kp
25d782812c
Make some update_points variables const
2020-02-01 22:33:31 +00:00
Kp
f65ce8bbe4
Make some init_points variables const
2020-02-01 22:33:31 +00:00
Kp
7eaa8f03d7
Hold polymodel data const in morph code
2020-02-01 22:33:31 +00:00
Kp
0aaa263adf
Use enum class for morph_data submodel_state
...
Name the state members, instead of using magic constants. Also, switch
from `int` to `uint8_t`, since there are only 3 valid values.
2020-02-01 22:33:31 +00:00
Kp
5653124a43
Move MAX_VECS into morph_data
2020-02-01 22:33:31 +00:00
Kp
bfeca84bb8
Change object::signature to be a generation counter
...
This removes the need to walk all objects when creating a new one, since
each object can have a private generation counter, unaware of other
objects. For compatibility with demos, mix in the object's index when
writing the signature value.
2019-07-07 22:00:02 +00:00
Kp
3bd10610fc
Use xrange for loops with zero start and simple identifier end
...
s/for\s*(\s*\(\w\+\)\s\+\(\w\+\)\s*=\s*0\+u\?\s*;\s*\2\s*!=\s*\([A-Za-z_0-9]\+\)u\?\s*;\s*\(++\s*\2\|\2\s*++\s*\))/range_for (const \1 \2, xrange(\3))/
2019-05-04 18:27:37 +00:00
Kp
cc248602fd
Track headlights in d_level_unique_light_state
2019-04-13 18:00:07 +00:00
Kp
03fe3a6696
Move Polygon_models into LevelSharedPolygonModelState
2018-12-30 00:43:59 +00:00
Kp
df0692bbea
Move morph_objects into LevelUniqueMorphObjectState
2018-12-30 00:43:58 +00:00
Kp
30a83eec41
Eliminate some uses of valptridx::operator->
2018-06-24 05:06:15 +00:00
Kp
fa8253fe22
Fix -Wsign-compare warnings in morph.cpp
2018-06-18 04:11:40 +00:00
Kp
a4ed8d5c9c
Hold morph_rate constexpr
2017-11-05 20:49:09 +00:00
Kp
657bd59012
Use array<>+move for draw_model sort_list
2017-09-30 18:00:15 +00:00