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 3 days ago
Total downloads 18285
Total rating 0 
Categories Libraries Seekers of the Storm Update
Dependency string Brynzananas-Body_Model_Additions_API-1.4.2
Dependants 2 other packages depend on this package

This mod requires the following mods to function

RiskofThunder-HookGenPatcher-1.2.5 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.5

README

How to use

Create a new "ModelPart" using ModelPartInfo class. 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.

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.

ModelPartInfo:

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

After you created your ModelPartInfo initialize your ModelPart using it:

new ModelPart(ModelPartInfo);