mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-26 01:54:36 +01:00
Keep launcher alive through Skate startup; trim per-frame client work
Launcher - "Close the launcher when Skate starts" now hides the launcher and exits when Skate.exe does, instead of exiting as the splash opens. Outside a Steam library, Skate's protection closed the game (TerminateProcess 0x32) when the launcher exited during startup; players confirmed turning the setting off avoided it. - STATUS tile warns when Steam isn't open or signed in that PLAY starts offline as Unknown Player (hidden when Offline mode is chosen or while launching). - Setting description updated to match. Startup interventions (20260929) - exit_return 0x87755f2 -> 0x87fe7fb: the last LEA RSP,[RSP]; JMP stub before the PUSHFQ / LOCK CMPXCHG routine, as 0x87367cf was in 20260908, and the return address player logs show. Only enforced once a frame site is armed; this build's protector has no equivalent rep stosb frame clear. Client frame cost (profiled 2026-10-02) - Transform interpolate is inline plain arithmetic (~1% of an MP frame). - Script gameplay-setting and native-setting gets are served from small per-thread caches keyed on asset/key address, name prefix and a new profile::Store::changes() counter, instead of a store lookup each call. - Hot-path reads in client tick, native settings and population controls use memory::peek instead of ReadProcessMemory. - Script error logging probes each argument pointer once.
This commit is contained in:
1 parent
ca1d82f636
commit
b7932535e5
17 files changed
+177
-60
No files matched your search
@@ -965,24 +965,6 @@ std::uint64_t map_hash(std::string_view value) noexcept {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
Transform interpolate(const Transform &a, const Transform &b, float t) {
|
||||
Transform out;
|
||||
t = std::clamp(t, 0.0f, 1.0f);
|
||||
for (unsigned i = 0; i < 3; ++i) {
|
||||
out.position[i] = std::lerp(a.position[i], b.position[i], t);
|
||||
out.scale[i] = std::lerp(a.scale[i], b.scale[i], t);
|
||||
}
|
||||
float dot{}, norm{};
|
||||
for (unsigned i = 0; i < 4; ++i)
|
||||
dot += a.rotation[i] * b.rotation[i];
|
||||
for (unsigned i = 0; i < 4; ++i) {
|
||||
out.rotation[i] = std::lerp(a.rotation[i], dot < 0 ? -b.rotation[i] : b.rotation[i], t);
|
||||
norm += out.rotation[i] * out.rotation[i];
|
||||
}
|
||||
for (float &v : out.rotation)
|
||||
v /= std::sqrt(norm);
|
||||
return out;
|
||||
}
|
||||
std::array<float, 16> to_matrix(const Transform &t) {
|
||||
const auto q = interpolate(t, t, 0).rotation;
|
||||
const float x = q[0], y = q[1], z = q[2], w = q[3];
|
||||
|
||||
Reference in new issue
Block a user