• Hi Guest!

    This is a notice regarding recent upgrades to the Hub. Over the last month, we have added several new features to improve your experience.
    You can check out the details in our official announcement!
BodyLanguage

Plugins BodyLanguage

It works when I change CreateTriggersHandlers to execute synchronously instead of as a subroutine. My configured values load fine.
I haven't really tested how it works without the delay, but my experience with HeelAdjust2 tells me that if you start adding colliders while the model isn't fully loaded things might get messed up big time. Just load a scene containing the original HeelAdjust from prestigitis - you'll get toes flying all over the place.

You may not get an error by running it synchonously and there may not be a visual bug like in the above scenario, but that's only because my colliders are triggers and thus do not interfere with the model. They may be very well misplaced though.
 
I haven't really tested how it works without the delay, but my experience with HeelAdjust2 tells me that if you start adding colliders while the model isn't fully loaded things might get messed up big time. Just load a scene containing the original HeelAdjust from prestigitis - you'll get toes flying all over the place.

You may not get an error by running it synchonously and there may not be a visual bug like in the above scenario, but that's only because my colliders are triggers and thus do not interfere with the model. They may be very well misplaced though.
Yeah, I get that it can cause other issues. It was meant as proof for the race condition being the cause of this exception. We'll have to find a way make the PresetSystem wait until this subroutine finishes, for example by enqueueing it to the routine or by starting a second subroutine that waits until the first completes.
 
Yeah, I get that it can cause other issues. It was meant as proof for the race condition being the cause of this exception. We'll have to find a way make the PresetSystem wait until this subroutine finishes, for example by enqueueing it to the routine or by starting a second subroutine that waits until the first completes.
I haven't looked at it further, but my "fix" in v24 was exactly that. The automatically called LateRestoreFromJSON is defered until the triggers are created. It now starts the coroutine DeferedLateRestoreFromJSON, which waits for a flag set by CreateTriggersHandlers to turn true.
 
I haven't looked at it further, but my "fix" in v24 was exactly that. The automatically called LateRestoreFromJSON is defered until the triggers are created. It now starts the coroutine DeferedLateRestoreFromJSON, which waits for a flag set by CreateTriggersHandlers to turn true.
Ah, that code path only happens when I reload the plugin after it has already failed once.
On scene load it doesn't get past FillMeUp.Init.
 
Ah, that code path only happens when I reload the plugin after it has already failed once.
On scene load it doesn't get past FillMeUp.Init.
Ah, I know what it is. It tries to load the latest matching preset (UserDefaults) in presetSystem.Init(), which happens without a delay. I can't move this to the DeferedLateRestore cause this has to be called on adding/reloading too. But I'll figure something out. Next version...
 
using v25 and trying to load both on person and as a scene plugin result in:

[CS1061]: Type `MacGruber.FloatTrigger' does not contain a definition for `HasActions' and no extension method `HasActions' of type `MacGruber.FloatTrigger' could be found. Are you missing an assembly reference? in <Unknown> at [75, 31]

I'm prob doing something wrong
 
using v25 and trying to load both on person and as a scene plugin result in:

[CS1061]: Type `MacGruber.FloatTrigger' does not contain a definition for `HasActions' and no extension method `HasActions' of type `MacGruber.FloatTrigger' could be found. Are you missing an assembly reference? in <Unknown> at [75, 31]

I'm prob doing something wrong
You have to update VaM.
 
CheesyFX updated BodyLanguage with a new update entry:

v26: Enhanced triggers, AltFuta support, fixed penetration detection

  • Fixed a bug which caused penetration registration to fail
  • Slap and touch triggers do now support AltFutas (penis and testes)
  • Fixed/improved some things regarding moans.
  • Enhanced triggers:
    • Slap and touch triggers now have a copy/paste functionality to copy them between regions
    • Overall enhanced trigger setup and trigger panel UI.
    • Slap triggers now feature two different sets of triggers:
      • Regular: Triggers things based on the last slap...

Read the rest of this update entry...
 
CheesyFX updated BodyLanguage with a new update entry:

v27: I/O fixes

Sorry guys, but with increasing complexity of the plugin the things that can go wrong seem to increase exponentially. Ah, I really should hire me some beta testers.

Gladly you have my plugin suit installed, so you don't have to bother updating anything manually. Just download the new version and you are set.
But wait, 5k downloads don't seem a lot compared to 90k... It seems the majority is prefering the...

Read the rest of this update entry...
 
Code:
!> Error during attempt to load assetbundle CheesyFX.BodyLanguage.27:/Custom/Scripts/CheesyFX/BodyLanguage/audiobundles/slaps.audiobundle. Not valid
!> Exception caught: System.NullReferenceException: Object reference not set to an instance of an object
  at CheesyFX.AudioImporter.ReadBundle (MeshVR.AssetBundleFromFileRequest bundle, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0
  at CheesyFX.AudioImporter.OnBundleLoaded (MeshVR.AssetBundleFromFileRequest request, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0

has been an issue for me since v24
 
Last edited:
Code:
!> Error during attempt to load assetbundle CheesyFX.BodyLanguage.27:/Custom/Scripts/CheesyFX/BodyLanguage/audiobundles/slaps.audiobundle. Not valid
!> Exception caught: System.NullReferenceException: Object reference not set to an instance of an object
  at CheesyFX.AudioImporter.ReadBundle (MeshVR.AssetBundleFromFileRequest bundle, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0
  at CheesyFX.AudioImporter.OnBundleLoaded (MeshVR.AssetBundleFromFileRequest request, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0

has been an issue for me since v24
Background? Never had this issue with my local version and neither when adding BL to a person on a clean install.
 
Awesome conglomerate of body hacks! Has anyone sent you their presets for slap/touch triggers yet, like on your other plugins. Or do those not get saved with presets? I dont ever get into the weeds of creating all that but would love to see a package that has alot of it ready to load and see in action.
 
Awesome conglomerate of body hacks! Has anyone sent you their presets for slap/touch triggers yet, like on your other plugins. Or do those not get saved with presets? I dont ever get into the weeds of creating all that but would love to see a package that has alot of it ready to load and see in action.
Thanks! No, trigger settings do not get stored with presets as they rely on other scene components. It wouldn't make sense.
On top of that, no one ever sent me a preset for ShakeIt or FlexIt either, so even if they were stored I wouldn't be too positive about getting some.
 
Background? Never had this issue with my local version and neither when adding BL to a person on a clean install.
No idea what causes it exactly but it happens when I load a scene that contains a v23 plugin and have the session plugin enabled.
 
Seems to be more widespread.
Code:
Error during attempt to load assetbundle CheesyFX.HeelAdjust2.20:/Custom/Scripts/CheesyFX/HeelAdjust2/footsteps.audiobundle. Not valid
I found an older thread from hazmhox discussing this exact issue with MacGruber and it might have something to do with duplicate asset ids, not unloading bundles and having multiple versions of the var loaded.
 
Funnily, I see the same error when I try to load your audiobundles in MacGruber.RandomSoundFromAB and it disappears if I delete all but the most recent versions of your vars.
After taking a look at vam's code the error is caused in Unity itself.

If I remember correctly vam is build on Unity 2017.x, right? It may have something to do with this bugfix:
2019.3 Fix an error that caused assets with identical names to become unloadable if there is a name collision

Once this exception occurred, it breaks all sorts of things in your plugins/vam. For example, HeelAdjust no longer unregisters event handlers in OnDestroy which in turn breaks multiple functions in vam's UI like opening another scene. Could you add some additional null checks throughout your code or at least a try{}finally{} for global event handler registrations?

Here, HeelAdjust has already been removed from the scene but event handlers are still registered:
Code:
!> Exception during load System.NullReferenceException: 
  at (wrapper managed-to-native) UnityEngine.Component:get_gameObject ()
  at CheesyFX.AudioManager.SetSoundProducers (System.String choice, Boolean onlyThis) [0x00000] in <filename unknown>:0 
  at CheesyFX.HeelAdjust2.SyncAtoms (System.Collections.Generic.List`1 uids) [0x00000] in <filename unknown>:0 
  at (wrapper delegate-invoke) SuperController/OnAtomUIDsChanged:invoke_void__this___List`1<string> (System.Collections.Generic.List`1<string>)
  at SuperController.RemoveAtom (.Atom atom, Boolean syncList) [0x00000] in <filename unknown>:0 
  at SuperController.RemoveNonStartingAtoms () [0x00000] in <filename unknown>:0 
  at SuperController.LoadInternal (System.String saveName, Boolean loadMerge, Boolean editMode) [0x00000] in <filename unknown>:0
 
System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.SlapHandler.Slap (CheesyFX.TouchZone touchZone, UnityEngine.Collision collision, Single intensity, ContactPoint contactPoint) [0x00000] in <filename unknown>:0

Hey, Cheesy what would I do to solve this. I really appreciate if I could get some help. Let me know if you need any more info or if I'm not being clear enough.

It doesn't seem to effect anything seriously but it's a message that keeps popping up and would appreciate some help on it.
 
Funnily, I see the same error when I try to load your audiobundles in MacGruber.RandomSoundFromAB and it disappears if I delete all but the most recent versions of your vars.
After taking a look at vam's code the error is caused in Unity itself.

If I remember correctly vam is build on Unity 2017.x, right? It may have something to do with this bugfix:


Once this exception occurred, it breaks all sorts of things in your plugins/vam. For example, HeelAdjust no longer unregisters event handlers in OnDestroy which in turn breaks multiple functions in vam's UI like opening another scene. Could you add some additional null checks throughout your code or at least a try{}finally{} for global event handler registrations?

Here, HeelAdjust has already been removed from the scene but event handlers are still registered:
Code:
!> Exception during load System.NullReferenceException:
  at (wrapper managed-to-native) UnityEngine.Component:get_gameObject ()
  at CheesyFX.AudioManager.SetSoundProducers (System.String choice, Boolean onlyThis) [0x00000] in <filename unknown>:0
  at CheesyFX.HeelAdjust2.SyncAtoms (System.Collections.Generic.List`1 uids) [0x00000] in <filename unknown>:0
  at (wrapper delegate-invoke) SuperController/OnAtomUIDsChanged:invoke_void__this___List`1<string> (System.Collections.Generic.List`1<string>)
  at SuperController.RemoveAtom (.Atom atom, Boolean syncList) [0x00000] in <filename unknown>:0
  at SuperController.RemoveNonStartingAtoms () [0x00000] in <filename unknown>:0
  at SuperController.LoadInternal (System.String saveName, Boolean loadMerge, Boolean editMode) [0x00000] in <filename unknown>:0
I hate the AssetLoader. It doesn't even care about the name of a bundle. There seems to be an internal checksum to decide if two assets are identical. I once tried to laod a duplicate with a different name and it failed too.

There shouldn't be any asset remnant cause I always unload them on Destroy, but yesterday I did get that HeelAdjust error too under certain circumstances. I'll investigate, but simply putting every Event in a try statement doesn't solve the issue.
 
I hate the AssetLoader. It doesn't even care about the name of a bundle. There seems to be an internal checksum to decide if two assets are identical. I once tried to laod a duplicate with a different name and it failed too.

There shouldn't be any asset remnant cause I always unload them on Destroy, but yesterday I did get that HeelAdjust error too under certain circumstances. I'll investigate, but simply putting every Event in a try statement doesn't solve the issue.
Yeah, it doesn't solve the issue but it reduces the impact exceptions have further down the line. Especially for event handlers it's good to unregister them in a finally block.
 
There are a lot of quirks due to the old unity version. With something more current we wouldn't have those periodic freezes whenever the GC kicks in, either. Much has been fixed in 2019+
 
Funnily, I see the same error when I try to load your audiobundles in MacGruber.RandomSoundFromAB and it disappears if I delete all but the most recent versions of your vars.
After taking a look at vam's code the error is caused in Unity itself.

If I remember correctly vam is build on Unity 2017.x, right? It may have something to do with this bugfix:


Once this exception occurred, it breaks all sorts of things in your plugins/vam. For example, HeelAdjust no longer unregisters event handlers in OnDestroy which in turn breaks multiple functions in vam's UI like opening another scene. Could you add some additional null checks throughout your code or at least a try{}finally{} for global event handler registrations?

Here, HeelAdjust has already been removed from the scene but event handlers are still registered:
Code:
!> Exception during load System.NullReferenceException:
  at (wrapper managed-to-native) UnityEngine.Component:get_gameObject ()
  at CheesyFX.AudioManager.SetSoundProducers (System.String choice, Boolean onlyThis) [0x00000] in <filename unknown>:0
  at CheesyFX.HeelAdjust2.SyncAtoms (System.Collections.Generic.List`1 uids) [0x00000] in <filename unknown>:0
  at (wrapper delegate-invoke) SuperController/OnAtomUIDsChanged:invoke_void__this___List`1<string> (System.Collections.Generic.List`1<string>)
  at SuperController.RemoveAtom (.Atom atom, Boolean syncList) [0x00000] in <filename unknown>:0
  at SuperController.RemoveNonStartingAtoms () [0x00000] in <filename unknown>:0
  at SuperController.LoadInternal (System.String saveName, Boolean loadMerge, Boolean editMode) [0x00000] in <filename unknown>:0
I just tried loading a scene with v23, updating it with my local session plugin to my local BL. No errors.
Please join my discord to discuss this further.

EDIT: Auto updating v23 to v27 (vars) yields no errors for me too (just 1 person with default BL v23). Anything you customized in BL in your scene? I need a way to replicate!
 
Last edited:
Yes please! What is slapping what?
Okay, I'm not completely sure what's happening here and I'm trying my best to troubleshoot. This issue I have only happens on specific scenes I have saved (not newer ones I create.)

This is a log that pops up when the scene is loaded:

!> Exception during plugin script Init: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.Anus.Init (System.String name) [0x00000] in <filename unknown>:0
at CheesyFX.FillMeUp.Init () [0x00000] in <filename unknown>:0
at MVRPluginManager.CreateScriptController (.MVRPlugin mvrp, DynamicCSharp.ScriptType type) [0x00000] in <filename unknown>:0
!> Exception during plugin script Init: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ExpressionMorph.get_uid () [0x00000] in <filename unknown>:0
at CheesyFX.ReadMyLips.Init () [0x00000] in <filename unknown>:0
at MVRPluginManager.CreateScriptController (.MVRPlugin mvrp, DynamicCSharp.ScriptType type) [0x00000] in <filename unknown>:0
!> Exception caught: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.AudioImporter.ReadBundle (MeshVR.AssetBundleFromFileRequest bundle, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0
at CheesyFX.AudioImporter.OnBundleLoaded (MeshVR.AssetBundleFromFileRequest request, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0

Maybe I have a corrupted atom or something?
 
Okay, I'm not completely sure what's happening here and I'm trying my best to troubleshoot. This issue I have only happens on specific scenes I have saved (not newer ones I create.)

This is a log that pops up when the scene is loaded:

!> Exception during plugin script Init: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.Anus.Init (System.String name) [0x00000] in <filename unknown>:0
at CheesyFX.FillMeUp.Init () [0x00000] in <filename unknown>:0
at MVRPluginManager.CreateScriptController (.MVRPlugin mvrp, DynamicCSharp.ScriptType type) [0x00000] in <filename unknown>:0
!> Exception during plugin script Init: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ExpressionMorph.get_uid () [0x00000] in <filename unknown>:0
at CheesyFX.ReadMyLips.Init () [0x00000] in <filename unknown>:0
at MVRPluginManager.CreateScriptController (.MVRPlugin mvrp, DynamicCSharp.ScriptType type) [0x00000] in <filename unknown>:0
!> Exception caught: System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.AudioImporter.ReadBundle (MeshVR.AssetBundleFromFileRequest bundle, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0
at CheesyFX.AudioImporter.OnBundleLoaded (MeshVR.AssetBundleFromFileRequest request, System.Collections.Generic.List`1 clipLibraries) [0x00000] in <filename unknown>:0

Maybe I have a corrupted scene or something?
This seems to be the same issue @8n2ybclyk982 has. I need to know:
1. What BL version is in the scene
2. What settings had been saved with the scene (explicitly or via loaded "UserDefaults")
3. Do you use my PluginSuit to update? Do you have v27 installed?
4. probably more can't think of right now...
 

Similar threads

Back
Top Bottom