Kp
4257391a47
Use enum class for polygon_model_index
2022-12-18 18:32:14 +00:00
Kp
e2c61f6aee
Pass context to init_morphs
2022-11-07 01:59:34 +00:00
Kp
44cf8b83be
Advise gcc to inline morph_data::operator new
...
This is only used in the file where it is defined, so it can be inlined
even though the definition is not in a header. Enabling inlining
encourages gcc to see that the `operator new`/`operator delete` calls
are not mismatched.
2022-08-22 01:24:49 +00:00
Kp
58061b5f45
Use C++20 std::span for morph_data
2022-07-30 17:42:59 +00:00
Kp
c68dddd372
Move various definitions into namespaces
2020-12-19 16:13:26 +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
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
699c9bc283
Fix check_header_includes=1 build
2020-05-17 23:35:25 +00:00
Kp
8839f538e0
Refer to <array> directly, not through "compiler-array.h"
2020-05-02 21:18:42 +00:00
Kp
53761500f1
Qualify uses of std::array
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
fd134851d1
Pass context to morph_start
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
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
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
003fb2697b
Use uint8_t for morph_data::n_submodels_active
...
The array it controls is only 10 elements long. uint8_t can easily
represent all valid indices.
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
cc248602fd
Track headlights in d_level_unique_light_state
2019-04-13 18:00:07 +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
88832e3679
Use constexpr integral_constant for various magic numbers
2017-10-14 17:10:30 +00:00
Kp
599ac9dee0
Always qualify valptridx type/factory
...
Previously, valptridx used PREFIX for allow-invalid+mutable, c#PREFIX
for allow-invalid+const, v#PREFIX for require-valid+mutable, vc#PREFIX
for require-valid+const. Convert the types, factories, and all usage
sites to specify a qualifier for all four combinations:
im#PREFIX -> allow-invalid+mutable
ic#PREFIX -> allow-invalid+const
vm#PREFIX -> require-valid+mutable
vc#PREFIX -> require-valid+const
Changes to common/include/valptridx.h and common/include/fwd-valptridx.h
are manual. All other changes are generated by:
git grep -lz -e '\(obj\|seg\|clwall\|wall\|actdoor\|trg\)\(ptridx\|ptr\|idx\)\(_t\)\?\>' | xargs -0 sed -i -e 's/\<\(v\?\)\(\(obj\|seg\|clwall\|wall\|actdoor\|trg\)\(ptridx\|ptr\|idx\)\(_t\)\?\)\>/\1m\2/g'
for the 'm' prefix and:
git grep -lz -e '\(obj\|seg\|clwall\|wall\|actdoor\|trg\)\(ptridx\|ptr\|idx\)\(_t\)\?\>' | xargs -0 sed -i -e 's/\<\([cm]\(obj\|seg\|clwall\|wall\|actdoor\|trg\)\(ptridx\|ptr\|idx\)\(_t\)\?\)\>/i&/g'
for the 'i' prefix.
2017-06-10 03:31:02 +00:00
Kp
25c36d4b0e
Pass canvas to draw_morph_object
2017-03-11 19:56:27 +00:00
Kp
c772385f81
Fix check_header_includes=1 Linux build
2016-08-06 19:55:24 +00:00
Kp
bb41075adb
Add preprocessor guards around types that vary by game
2015-11-26 02:56:55 +00:00
Kp
2196008178
Move fwdobject.h -> fwd-object.h for consistency
2015-10-10 03:44:14 +00:00
Kp
946048c54b
Move valptridx subtypes to individual fwd headers
2015-08-22 20:43:04 +00:00
Kp
15fb75c1c7
Fix check_header_includes build
2015-07-25 23:10:45 +00:00
Kp
90fbebf8fd
Convert most global arrays to array<>
2015-04-02 02:36:52 +00:00
Kp
66a70fd373
Prepare for global arrays to be array<>
2015-04-02 02:36:52 +00:00
Kp
91d31b1952
Wrap object signature in subtype
2015-03-22 18:49:21 +00:00
Kp
53aa70cecb
Use vsegptridx_t
2014-10-28 03:08:51 +00:00
Kp
66cb80c343
Propagate use of objptridx
2014-08-17 20:31:18 +00:00
zico
ad7cb106bc
Changed custom D1X license to GPLv3
2014-06-01 19:55:23 +02:00
Kp
073f00974a
Eliminate uses of the typedef struct X { ... } X; pattern
...
C++ does not require this pattern.
import re, fileinput
to = re.compile(r'^typedef struct ([a-z_A-Z]+)\s*{')
tc = re.compile(r'^}(.*?)\s*([a-z_A-Z]+);$')
osn = None
for line in fileinput.input(inplace=True):
m = to.match(line)
if m:
osn = m.group(1)
print 'struct %s\n{' % osn
continue
if osn:
m = tc.match(line)
if m:
csn = m.group(2)
if osn == csn:
print '}%s;' % m.group(1)
osn = None
continue
else:
osn = None
print line,
2013-12-28 22:48:07 +00:00
Kp
9de54cfa74
Switch to C++ linkage
...
import fileinput
guard = 0
cxxguard = '#ifdef __cplusplus\n'
for line in fileinput.input(inplace=True):
if line == cxxguard:
guard = 1
continue
if guard:
if line == 'extern "C" {\n':
guard = 2
continue
if line == '}\n':
guard = 0
continue
if guard == 2:
assert(line == '#endif\n')
guard = 0
print cxxguard,
continue
print line,
2013-12-06 03:35:32 +00:00
Kp
1d073475e7
Mark various headers for C linkage
2013-10-20 22:49:11 +00:00
Kp
53e4ff58e0
Move */main/morph.h -> common/main/morph.h
2013-03-03 01:03:33 +00:00