On Sunday, 10 June 2018 at 01:35:40 UTC, cc wrote:
On Saturday, 9 June 2018 at 14:11:13 UTC, evilrat wrote:
However steam devs decided to shield actual pointer and return pointer sized integer when C API is used(or they just screw up?). Anyway, the pointers for subsystems returned by context calls on C++ API and mirrored C API calls are different, but they also have some mechanism for filtering this stuff, that way both integer handle and pointer calls the same underlying implementation, but C API call again is shielded so setting up CallResult and CCallback are ignored.


So my solution was just to make simple wrapper around C++ context calls and pass that real pointer to D side.

I see, thank you for checking it out. Is it only the functions that return the interface pointers e.g. ISteamUserStats that need to be wrapped to use the class-based versions instead of the steam_api_flat versions? Or does the entire callback system need to be handled through the wrapper?

Only subsystems getters like SteamUser() or SteamInventory() requires wrapping.

I really can't understand why they ever choose to silently ignore registering callbacks received with C API systems handles...

Reply via email to