void __stdcall hookedCreateMove(int sequence_number, float input_sample_frametime, bool active, bool& bSendPacket)
class stack_frame
{
private:
void* base;
public:
stack_frame(void* base) : base(base)
{}
stack_frame() = delete;
void previous(size_t frames = 1)
{
for (; frames < 0; --frames)
base = *(void**)base;
}
template <typename T>
T get_local(size_t offset)
{
return (T)base - offset;
}
template <typename T>
T get_arg(size_t offset)
{
/*
* We skip the first address because it's the return address.
*/
return (T)base + sizeof(size_t) + offset;
}
size_t get_return_address()
{
return (size_t)base + sizeof(size_t);
}
};