-
Notifications
You must be signed in to change notification settings - Fork 11
Open
Description
The Managed-OSVR library was originally created as a quick means to get Unity support. There are a few things I'd like to refactor, but can't due to backward compatibility.
So, I'm suggesting we can start fresh with a new library, keeping the current code in maintenance mode for compatibility. With the new library, we can apply the following major changes:
- Properly namespace code. Each DLL/lib with bindings gets its own namespace, and ONLY bindings from that DLL use that namespace. Currently most of the bindings are in
OSVR.ClientKitfor both client kit and osvr util functions.OSVRfor top-level classes (not specific to any given OSVR-Core library)OSVR.ClientKitto be used ONLY for bindings within the actualosvrClientKitdll/lib.OSVR.Utilto be used for bindings within theosvrUtilDLL/lib.
- Make all P/Invoke bindings private. The public API should hide native cruft not relevant to managed code (e.g.
IntPtrdata elements in custom callbacks). - Use .NET naming conventions consistently throughout.
- Hierarchical data structures instead of (or at least in addition to) flat C-Like API. For example, the
DisplayConfigAPI should result in an object tree instead of a flat API that mirrors the C API (which is just a flattening of the corresponding internal hierarchical structure). - Design for no-alloc control flows. Methods meant to be called every frame must not alloc.
- Rename the managed assembly to reflect the fact that it is binding more than just the
osvrClientKitlibrary.
The new library would be separate, and renamed to avoid conflicts. Possible names:
- OSVRSharp (more popular convention recently, e.g. CocosSharp, QtSharp, but doesn't look as good with a capitalized brand acronym as the base)
- OSVR.NET (older convention, out of style, but looks a little better than OSVRSharp)
- OSVR (just leave out the suffixes. Might be confused with the native OSVR library)
- ??? Open to suggestions.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels