Kp
e1aac6949a
Replace __attribute_warn_unused_result with C++17 [[nodiscard]]
...
This eliminates a configure test, and may help readers understand the
annotation more readily.
2021-06-28 03:37:51 +00:00
Kp
58a1d86c05
Fix return type of check_trans_wall lambda ( #588 )
...
The deduced return type is `grs_bitmap`, which is inefficient, but not
wrong on its own. However, `rle_expand_texture` uses the address of its
argument as a long-term cache key, so it must never be called with the
address of a stack-local variable. When the return type is
`grs_bitmap`, the argument to `rle_expand_texture` is a reference to a
stack-local variable. Fix this by setting the return type to
`const grs_bitmap &`, so that the argument to `rle_expand_texture` is a
reference to an element in the global GameBitmaps array.
AlumiuN proposed an initial fix, but based on analysis of why that fix
worked, I elected to use a different, smaller, fix instead.
Reported-by: CHILLYBUS <https://github.com/dxx-rebirth/dxx-rebirth/issues/588 >
Reported-by: KynikossDragonn <https://github.com/dxx-rebirth/dxx-rebirth/issues/588#issuecomment-825978696 >
Analyzed-by: AlumiuN <https://github.com/dxx-rebirth/dxx-rebirth/issues/588#issuecomment-826009993 >
Analyzed-by: 4C1T <https://github.com/dxx-rebirth/dxx-rebirth/issues/588#issuecomment-826016402 >
Proposed-fix-by: AlumiuN <c4d1f41946
>
Fixes: 61f186bc18
("Use enum class for texture1_value")
2021-04-24 17:32:47 +00:00
Kp
fc63029833
Move more symbols into namespaces
2020-12-26 21:17:29 +00:00
Kp
faa4d2ce34
Use enum class for vertnum_t
2020-12-26 21:17:29 +00:00
Kp
47c33cbd55
Use enum class for WALL_IS_DOORWAY_FLAG
...
This reduces the size of the debug information substantially.
2020-12-19 16:13:26 +00:00
Kp
c482d01be5
Move some fvi types to namespaces
2020-10-01 03:25:27 +00:00
Kp
61f186bc18
Use enum class for texture1_value
2020-09-11 03:08:02 +00:00
Kp
6d3dce4e16
Use enum class for tmap_num2
...
Define separate enum values for rotation data in both the high bits,
where it is usually kept, and the low bits, where it is sometimes used
for math or comparisons.
Define an enum value to represent the composite of the index and the
rotation, since the composite is not suitable for use as an array
subscript. Add helper functions to extract the component pieces.
2020-08-24 01:31:28 +00:00
Kp
de4efc4f46
Qualify more uses of shared_segment members
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
4ef247e494
Use enum class for collision_result values
2020-08-06 03:47:56 +00:00
Kp
6285878c4c
Add color_palette_index type alias, to note palette-related uint8_t
2020-07-16 02:31:04 +00:00
Kp
a4f2edfaa9
Move LevelSharedVertexState into d_level_shared_segment_state
2020-05-17 23:35:25 +00:00
Kp
53761500f1
Qualify uses of std::array
2020-05-02 21:18:42 +00:00
Kp
c9b1b5b1ec
Use susegment for WALL_IS_DOORWAY
2019-12-27 02:02:23 +00:00
Kp
5dfd62c4f6
Use susegment
for references introduced by valptridx conversion
2019-12-22 05:34:08 +00:00
Kp
30091902af
Simplify valptridx types where possible
...
Switch valptridx::ptr to a reference type.
Switch valptridx::ptridx to a reference type or to ::ptr.
Fix up uses of operator-> accordingly.
2019-12-22 05:34:08 +00:00
Kp
28d9358b00
Expand local aliases to their target variables
...
This makes the code easier to read, at the price of a bit of churn.
2019-12-16 01:56:59 +00:00
Kp
1008ab397e
Move Objects to d_level_unique_object_state
2019-03-03 00:31:08 +00:00
Kp
12403a78f7
Pass vcvertptr to sphere_intersects_wall
2019-02-02 18:36:39 +00:00
Kp
ffb5e8821c
Flatten use of sphere_intersects_wall
2019-02-02 18:36:39 +00:00
Kp
0080a8b7c7
Remove unused object_intersects_wall
2019-01-01 04:54:35 +00:00
Kp
e84a65edc6
Move Robot_info into LevelSharedRobotInfoState
2018-12-30 00:43:59 +00:00
Kp
9be3c8e2e8
Move Walls into d_level_unique_wall_state
2018-12-30 00:43:58 +00:00
Kp
1a5844e218
Move Vertices out of global scope
2018-12-30 00:43:57 +00:00
Kp
2f537133e8
Use vcobjidx_t for fvi ignore_obj_list
...
Enforce that callers provide vcobjidx_t, instead of permitting any type
compatible with objnum_t.
2018-12-30 00:43:57 +00:00
Kp
706a704c6d
Move unique_side to unique_segment
2018-12-13 02:31:38 +00:00
Kp
f7ad4d9b1a
Pass segments to find_point_seg
2018-09-19 02:13:30 +00:00
Kp
30a83eec41
Eliminate some uses of valptridx::operator->
2018-06-24 05:06:15 +00:00
Kp
0fd7e0e4ce
Pass context arrays to WALL_IS_DOORWAY
2018-06-24 05:06:15 +00:00
Kp
fb68e7f9ec
Eliminate use of side *
2018-06-24 05:06:15 +00:00
Kp
6d0d68d188
Split some segment uses based on shared vs unique
...
Leave `sides` in `shared_segment` to minimize churn. Parts of it must
move to `unique_segment` before this project finishes.
2018-06-24 05:06:14 +00:00
Kp
fa5d8b0be0
Move fvi.cpp fvi_hit_object out of global scope
2018-03-05 01:40:44 +00:00
Kp
ba81e0becb
Move fvi.cpp fvi_hit_side_seg out of global scope
2018-03-05 01:40:44 +00:00
Kp
2686bdc32b
Move fvi.cpp fvi_hit_seg2 out of global scope
...
Rename to fvi_hit_pt_seg based on comment explaining its purpose.
2018-03-05 01:40:44 +00:00
Kp
7ffd54377c
Move fvi.cpp fvi_hit_side out of global scope
2018-03-05 01:40:44 +00:00
Kp
f640917052
Move fvi.cpp wall_norm out of global scope
2018-03-05 01:40:44 +00:00
Kp
ad654648a6
Move fvi.cpp fvi_nest_count out of global scope
2018-03-05 01:40:44 +00:00
Kp
aa56477742
Propagate objects_in arguments
2017-08-13 20:38:31 +00:00
Kp
b4899aafac
Pass vcvertptr to get_seg_masks
2017-08-11 23:43:54 +00:00
Kp
5eec2a5ce5
Use valptridx for Vertices
2017-08-11 23:43:54 +00:00
Kp
e8d82d7d85
Pass valptridx factories to static functions
2017-07-26 03:15:59 +00:00
Kp
7b16571cb2
Rename countarray method count -> size
2017-06-10 03:31:03 +00:00
Kp
a03291b036
Rename countarray method size -> max_size
2017-06-10 03:31:03 +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
482dcf0ba3
Avoid temporarily moving boss while probing layout
...
Expose sphere_intersects_wall and call it directly from
boss_fits_in_seg, so that boss_fits_in_seg does not need to modify the
position and segment of the boss during the test.
2017-03-01 02:48:40 +00:00
Kp
ba914fea81
Pass up various return values
2017-02-26 00:00:02 +00:00
Kp
df54e345fe
Remove write-only fvi_hit_seg
2017-02-22 03:05:43 +00:00
Kp
9821a77372
Simplify use of get_num_faces
2017-02-19 19:33:38 +00:00
Kp
cdb193c053
Use unsigned for sides/verts in more places
2017-02-19 19:33:38 +00:00