ShakeIt

Plugins ShakeIt

@CheesyFX : Glad you like it ;) I'm honestly thinking about providing a session plugin that loads the (user)defaults on any person automatically. Would that be a thing for you?

Absolutely! That would be a great feature and QoL improvement
 
Good point! It's not a big deal as is and, the way I see it, what's a couple of more clicks for great results?
Yeah, but few less clicks would be even better...
I think I'll do it this way:
  • If the scene contains an atom instance, the values will be parsed to the session instance on scene load and the atom instance will be disabled. This is basically the same as in FocusOnMe, despite the fact that there could be more than one atom instance with different settings each.
  • If the session instance is active, the user isn't allowed to put it onto an atom.
But honestly, there are barely any scenes referencing it. So this is probably much work for nothing. I also think that the great majority is using the (user)defaults and does not alter them on a per character basis, which means that I could just disable any atom instances and slap the defaults onto everything...

Right now I'm stuck improving FreeTheLegs and making it compatible with HeelAdjust2. After that I'll come back to ShakeIt. I really want a session instance for myself :)

If anyone else has thoughts or wishes regarding this topic, feel free to reply!
 
Last edited:
CheesyFX updated ShakeIt with a new update entry:

v28 Session Plugin

Now you can use it as a session plugin (same file).
Things to consider when used as a session plugin:
  • It uses either "UserDefaults.json", if present, or the factoryDefaults on every person.
  • You can add and remove persons freely or switch genders without reloading.
  • You don't get an UI. Presets have to be created from within an atom instance.
  • You cannot manually add atom instances while a session instance is present. They'll load up disabled and can't be enabled. But the...

Read the rest of this update entry...
 
My God, I was just thinking about how it would be awesome if you made this a session plugin. Then I was like, nah hes done enough, I shouldnt bother him with it. And then SHAZAM!!
Hehe, thanks! I hope it works alright for you! You can always express your wishes btw. I'm not offended by that, if it's written in a polite manner of course. :) That's the only way for me to know how people are using it.
 

I run into an exception when I save the session plugin preset.

Code:
!> Exception during Preset Store of plugin#5_CheesyFX.ShakeIt: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[CheesyFX.JiggleRegion].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at CheesyFX.ShakeIt.MyGetJSON () [0x00000] in <filename unknown>:0
  at CheesyFX.ShakeIt.GetJSON (Boolean includePhysical, Boolean includeAppearance, Boolean forceStore) [0x00000] in <filename unknown>:0
  at MeshVR.PresetManager.StoreStorablesInList (SimpleJSON.JSONClass jc, System.Collections.Generic.List`1 sts, Boolean storeAll) [0x00000] in <filename unknown>:0
!> Exception during Preset Store of plugin#5_CheesyFX.FlexIt: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
  at System.Collections.Generic.List`1[CheesyFX.FlexRegion].get_Item (Int32 index) [0x00000] in <filename unknown>:0
  at CheesyFX.FlexIt.Store () [0x00000] in <filename unknown>:0
  at CheesyFX.FlexIt.GetJSON (Boolean includePhysical, Boolean includeAppearance, Boolean forceStore) [0x00000] in <filename unknown>:0
  at MeshVR.PresetManager.StoreStorablesInList (SimpleJSON.JSONClass jc, System.Collections.Generic.List`1 sts, Boolean storeAll) [0x00000] in <filename unknown>:0

Steps to reproduce:
1. Fresh start of the game
2. Return to scene view
3. Add the session plugin
4. Save the session plugin default preset
 
I think i found another issue.
And it should be easy to reproduce:

Load this plugin as a sessionplugin, load any scene if there is no personatom create one.
Now hide (turning it off/not on) this or any personatom and try to load any other or the same scene again.
VaM says goodbye, not crashing but its almost literally dead.

I tried it with this plugin being the only sessionplugin, still the same.
i will post an errorlog

!> System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ShakeIt.RegisterPersons () [0x00000] in <filename unknown>:0
!> Exception during load System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ShakeIt.RegisterPersons () [0x00000] in <filename unknown>:0

at that point, trying it again will result in this:

!> Exception during load System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds
at System.Array.Copy (System.Array sourceArray, Int32 sourceIndex, System.Array destinationArray, Int32 destinationIndex, Int32 length) [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[Atom].CopyTo (.Atom[] array, Int32 arrayIndex) [0x00000] in <filename unknown>:0
at SuperController.LoadInternal (System.String saveName, Boolean loadMerge, Boolean editMode) [0x00000] in <filename unknown>:0
 
I think i found another issue.
And it should be easy to reproduce:

Load this plugin as a sessionplugin, load any scene if there is no personatom create one.
Now hide (turning it off/not on) this or any personatom and try to load any other or the same scene again.
VaM says goodbye, not crashing but its almost literally dead.

I tried it with this plugin being the only sessionplugin, still the same.
i will post an errorlog

!> System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ShakeIt.RegisterPersons () [0x00000] in <filename unknown>:0
!> Exception during load System.NullReferenceException: Object reference not set to an instance of an object
at CheesyFX.ShakeIt.RegisterPersons () [0x00000] in <filename unknown>:0

at that point, trying it again will result in this:

!> Exception during load System.ArgumentException: Destination array was not long enough. Check destIndex and length, and the array's lower bounds
at System.Array.Copy (System.Array sourceArray, Int32 sourceIndex, System.Array destinationArray, Int32 destinationIndex, Int32 length) [0x00000] in <filename unknown>:0
at System.Collections.Generic.List`1[Atom].CopyTo (.Atom[] array, Int32 arrayIndex) [0x00000] in <filename unknown>:0
at SuperController.LoadInternal (System.String saveName, Boolean loadMerge, Boolean editMode) [0x00000] in <filename unknown>:0
Ahh, yeah, disabled persons... Thanks for the detailed report!
Right now I'm not sure what exactly fails, but this arises a genral question: How should disabled persons be handled? You surely don't want to reload the plugin when another person pops up during a scene. I have to think about that, from a technical and from a usability standpoint.
 
Ahh, yeah, disabled persons... Thanks for the detailed report!
Right now I'm not sure what exactly fails, but this arises a genral question: How should disabled persons be handled? You surely don't want to reload the plugin when another person pops up during a scene. I have to think about that, from a technical and from a usability standpoint.
Yea maybe there is a workaround for it to work anyway and the plugin only doing stuff to not hidden atoms and removing anything thats left behind on disabled atoms.. something like that.

in the worst case maybe dont even include targets that were originally disabled, i use the on/off function quite alot to work around in scenes. Juicy fps improvement and all

Also wanted to say a big thank you. This is one of the most astonishing plugins i saw since i started VaM 2-3 years? ago. Feels fluid, realistic and lets be honest. It is sexy af
 
CheesyFX updated ShakeIt with a new update entry:

v30 New session plugin with additional features

After a quick chat with @everlaster I completely rethought the session plugin. Now you get an additional file "ShakeIt_SessionPlugin.cs", which loads a regular atom instance on every new person (if it has none).
But there's more:

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

v31 New module 'WorkOut'

An enhanced version of my plugin WorkOut is now included as a new module.
  • It adjusts the skin gloss value of the character based on movement he or she performes
  • There is a lot more going on under the hood than 'move -> increase' and 'stay still -> decrease'. In short:
    • For every given movement pattern (or pose) you'll reach a certain plateau regarding the gloss value
    • The value of that plateau increases the longer you perform that movement (exhaustion)
    • Higher...

Read the rest of this update entry...
 
I just downloaded 30 not even 5 minutes ago. Just refreshed the page and there is 31. Perfect timing! :D
 
Just getting error with this one.

shakit error.jpg
 
Hey there boss. Adore the mod and really appreciate the work you put into it. Thanks for everything. ♥

I'm getting the same error as the fellow above me for v31. Hope the report helps ya' out.

!> Compile of CheesyFX.ShakeIt.31:/Custom/Scripts/CheesyFX/ShakeIt.cslist failed. Errors:
!> [CS122]: `CheesyFX.ShakeIt.morphUI' is inaccessible due to its protection level in <Unknown> at [78, 26]

!> [CS1929]: Type `UnityEngine.GameObject' does not contain a member `AddRbDynamic' and the best extension method overload `CheesyFX.Extensions.AddRbDynamic(this UnityEngine.Rigidbody, int)' requires an instance of type `UnityEngine.Rigidbody' in <Unknown> at [80, 72]

!> [CS1501]: No overload for method `Register' takes `2' arguments in <Unknown> at [97, 54]
 
Hey there boss. Adore the mod and really appreciate the work you put into it. Thanks for everything. ♥

I'm getting the same error as the fellow above me for v31. Hope the report helps ya' out.
Thanks, that definitely helps. I think I forgot to update the extensions file...
 
Back
Top Bottom