Various users want automatic demo recording. Add new command line options:
-auto-record-demo start recording on level entry
-record-demo-format set demo name automatically
For -record-demo-format, specify a template containing any mix of strftime
insertions, variable insertions, and literal text. As a special case, specify
"." to use the builtin template "%Y%m%d.%H%M%S-$p-$m". Most users should use
".". Supported variables:
$p name of pilot recording the demo
$m name of msn/mn2 file played
Suggested by jeffersoncarpenter in https://github.com/dxx-rebirth/dxx-rebirth/pull/33, but implemented by vLKp.
Use ?: to pick Stretch_scale_* value.
Mark bogosity as unlikely.
Cache vector subtraction.
Defer constructing rotation matrix.
Move uvl assignment into reusable lambda.
This also fixes clang build. btb reports that clang chokes on:
extern T t;
extern const T ct;
[]() {
if (a)
return ct;
return t;
}
with
error: return type 'vms_matrix' must match previous return type 'const vms_matrix' when lambda expression has unspecified explicit return type
Compiler failure report: d38dd0aeef (commitcomment-9909178)
Mac OS X defines uint_fast32_t to unsigned int, causing ambiguous
overloads between RAIIdmem::operator[](std::size_t) and
RAIIdmem::operator[](int). Adding a disambiguating overload for OS X
breaks Windows. Remove operator pointer and operator[]. Rely on the
inherited operator[] for indexing. Require users to call ->get() to
convert to a simple pointer.
First btb ambiguity reported: https://github.com/dxx-rebirth/dxx-rebirth/pull/34
Second btb ambiguity reported: https://github.com/dxx-rebirth/dxx-rebirth/pull/43
Locked doors, including the exit door, were permanently impassable in
Descent 1 because the door has state WALL_DOOR_OPENING even after it has
flags WALL_DOOR_OPENED.
Fixes: fd01d4c673 ("Reorder wall_is_doorway to favor likely results")
Reported by: zicodxx @ https://github.com/dxx-rebirth/dxx-rebirth/issues/40
That way we get the D1 music when playing a D1 mission.
This also means we get D1 music in the menu, etc.
Therefore only keeps D1 assets loaded until non-D1 mission is selected.
Compiling net_udp.cpp with clang-3.4 crashes the compiler when parsing
a decltype that refers into the class currently being compiled. Parsing
a decltype that refers to a parent class works. Rearrange the decltype
usage to avoid referencing the current class. This makes the code
harder to read and less flexible, but prevents clang from crashing.
Clang self trace:
1. <eof> parser at end of file
2. similar/main/net_udp.cpp:317:8: instantiating function definition 'operator()'
3. similar/main/net_udp.cpp:317:8: LLVM IR generation of declaration '(anonymous namespace)::sockaddr_dispatch_t<(anonymous namespace)::dxx_recvfrom_t>::operator()'
4. similar/main/net_udp.cpp:317:8: Mangling declaration '(anonymous namespace)::sockaddr_dispatch_t<(anonymous namespace)::dxx_recvfrom_t>::operator()'
[Update: also affects OS X clang v6, as reported by btb: https://github.com/dxx-rebirth/dxx-rebirth/pull/35#issuecomment-73350066]
Previously, the code set itype=IT_POINT, then picked a closest point.
If the closest point was v0 or v1, itype stayed IT_POINT, otherwise it
became IT_EDGE. If itype==IT_POINT, then the function returns
(itype == IT_POINT) ? IT_NONE : itype;
=>
IT_NONE
for (dist <= rad). Otherwise, it returns IT_NONE. Short-circuit this
by returning IT_NONE without computing the distance.
Modifying a by-value temporary does not affect the underlying container,
so modifying it is almost always a bug. Require use of a by-reference
capture when modification is desired.
sed -i -e 's/range_for\s*(\s*\(const\s\+\)\?auto\s\+\([[:alpha:]_]\)/range_for (const auto \2/g'