Two Noesis(s) in a game
Posted: 27 Oct 2022, 01:26
Hello,
I'm wondering if we can start a conversation about what it takes to run two distinct Noesis instances within a game .. or if not possible, what are the exact calls that need to be shared.
We're running into an issue where a game using Noesis for their UI is using a plugin for part of a functionality that has it's own UI written in Noesis
ex/ steam in game overlay in Noesis over a game also in Noesis.
Plugin does not expose any Noesis knowledge to the game, we'd very much like to keep that if possible.
Things we found so far that definitely conflict:
1) In Unity/C# this code will prevent loading of one set of xamls, we're not sure yet how to reconcile it:
[ScriptedImporter(1, "xaml")]
public class XamlImporter : ScriptedImporter
2) Shutdown logic. Noesis::Shutdown() cannot be called until both are ready to shutdown, also one can't call Noesis::Shutdown() and have next instance init new Noesis as needed
2.1) or do you expect Noesis::Init() to work correctly when called after Shutdown()?
Possible conflicts:
3) Noesis::GUI::SetPlayAudioCallback
- maybe not a problem because we can specify user?
4) Noesis::GUI::SetXamlProvider / Noesis::GUI::SetTextureProvider / Noesis::GUI::SetFontProvider
- not a problem if one uses embedded and other doesn't, but I don't know if it's a problem if both game and plugin will use same provider types (say ManifestXamlProvider(s)).
I'm wondering:
5) What else can you think of that can go wrong when using two Noesis(s)?
5.1) Is there a plan to allow for multi instance?
6) What are some recommendations you may have for sharing single Noesis instance?
I'm wondering if we can start a conversation about what it takes to run two distinct Noesis instances within a game .. or if not possible, what are the exact calls that need to be shared.
We're running into an issue where a game using Noesis for their UI is using a plugin for part of a functionality that has it's own UI written in Noesis
ex/ steam in game overlay in Noesis over a game also in Noesis.
Plugin does not expose any Noesis knowledge to the game, we'd very much like to keep that if possible.
Things we found so far that definitely conflict:
1) In Unity/C# this code will prevent loading of one set of xamls, we're not sure yet how to reconcile it:
[ScriptedImporter(1, "xaml")]
public class XamlImporter : ScriptedImporter
2) Shutdown logic. Noesis::Shutdown() cannot be called until both are ready to shutdown, also one can't call Noesis::Shutdown() and have next instance init new Noesis as needed
2.1) or do you expect Noesis::Init() to work correctly when called after Shutdown()?
Possible conflicts:
3) Noesis::GUI::SetPlayAudioCallback
- maybe not a problem because we can specify user?
4) Noesis::GUI::SetXamlProvider / Noesis::GUI::SetTextureProvider / Noesis::GUI::SetFontProvider
- not a problem if one uses embedded and other doesn't, but I don't know if it's a problem if both game and plugin will use same provider types (say ManifestXamlProvider(s)).
I'm wondering:
5) What else can you think of that can go wrong when using two Noesis(s)?
5.1) Is there a plan to allow for multi instance?
6) What are some recommendations you may have for sharing single Noesis instance?