#pragma once // Our hooks into SceneWindow.dll's scene code, installed once, the first time an engine is made. Each replaces a // pointer IMVU's code calls through (an entry of an exported vtable), after checking it holds the function expected, // with ours, which calls IMVU's: nothing else is changed, and nothing is if a check fails (an unexpected // SceneWindow.dll: the hooks' features are then off, and the client runs as it would without them). // // - SceneViewer::step (the IFrameListener vtable): the client's tick, 30 times a second (SceneWindow.dll's runApp // calls stepFrame, which steps each scene viewer). Recorded, for the frame pacer and for drawing between ticks. #include namespace t5de::scene_hooks { void install(); // Whether the hooks are installed. [[nodiscard]] bool installed(); // When a scene viewer last stepped (QueryPerformanceCounter), or 0 if none has. [[nodiscard]] std::int64_t lastStep(); } // namespace t5de::scene_hooks