Brynzananas-Body_Model_Additions_API icon

Body Model Additions API

Adds a system for developers to load custom objects onto characters in game and in lobby. Model additions can require selected skins, skills, skins and skills or custom condition.

Last updated 2 weeks ago
Total downloads 43758
Total rating 1 
Categories Libraries Seekers of the Storm Update
Dependency string Brynzananas-Body_Model_Additions_API-2.1.0
Dependants 2 other packages depend on this package

This mod requires the following mods to function

RiskofThunder-HookGenPatcher-1.2.8 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.8

README

How to use

Create a new Scriptable Object "ModelPartDef". You need to input a body name and an object you want to add to the body. You can input bone name of the Child Locator or find string to place object there, skin and skill required for object to be spawned, existing ModelPart to override it, delegate to run after model part instantiating, delegate for custom condition. You can subscribe to "beforeApplyingEvent" event that invokes before applying model parts.

After you created yout model part def run "Register" method or add it to "modelParsDefs" list

This can also add new skinned objects that deform with the main armature if you change bones to match main armature using a delegate. (No example yet sorry!)

CodeAfterApplying delegate gives you your object as "modelObject", ChildLocator of the body (make sure to null check it before using it), CharacterModel of the body and ActiveBodyParts component.

If you are gonna add components in this delegate please add them to the components list in the ActivePartsComponent component from the given delegate.

CustomCondition gives you CharacterModel of your body.

ModelPartDef:

ModelPartDef modelPartDef = ScriptableObject.CreateInstance<ModelPartDef>()
modelPartDef.bodyName = ""; //Body name of the charater you want to add model part to
modelPartDef.gameObject = null; //Prefab of your model part
modelPartDef.inputString = ""; // string to find where to place your model part. If it's  "", then it will be placed alongside your body model
modelPartDef.trueToChildLocatorFalseToFindString = true; // If "trueToChildLocatorFalseToFindString" is true: you input Child Locator transform name in inputString. if false: you input transform find string in inputString
modelPartDef.skinDef = null; // Skin condition. Checks for a selected skin if the value is not null
modelPartDef.skinName = ""; // String skin condition by its name if skinDef condition is null.
modelPartDef.skillDef = null; // Skill condition. Checks for a selected skill if the value is not null
modelPartDef.modelPartOverride = null; // Prevents other model part from from applying
modelPartDef.CodeAfterApplying codeAfterApplying = null; // Void delegate to run after model part instantiation
modelPartDef.CustomCondition customCondition = null; // Boolean delegate for a custom condition if it's not null
modelPartDef.ModelPartLocation modelPartLocation = ModelPartLocation.All; // Pick where model part appears: Lobby, Game or All

After you created your ModelPartDef run "Register" method:

modelPartDef.Register();