Closed s4e8 closed 5 months ago
hdtSMP64.log: meshes\R18pn\lingerie\D\outfit.xml(131,2):Node named SkirtA1 doesn't exist, skipped, no bone created meshes\R18pn\lingerie\D\outfit.xml(227,2):constraint SkirtA1 <-> hdtSSEPhysics_AutoRename_Armor_0000000B SkirtA0 : bone for bodyA doesn't exist, will try to create it meshes\R18pn\lingerie\D\outfit.xml(227,2):Node named SkirtA1 doesn't exist, skipped, no bone created meshes\R18pn\lingerie\D\outfit.xml(228,2):constraint hdtSSEPhysics_AutoRename_Armor_0000000B SkirtA2 <-> SkirtA1 : bone for bodyB doesn't exist, will try to create it meshes\R18pn\lingerie\D\outfit.xml(228,2):Node named SkirtA1 doesn't exist, skipped, no bone created meshes\R18pn\lingerie\D\outfit.xml(312,2):constraint hdtSSEPhysics_AutoRename_Armor_0000000B SkirtB1 <-> SkirtA1 : bone for bodyB doesn't exist, will try to create it meshes\R18pn\lingerie\D\outfit.xml(312,2):Node named SkirtA1 doesn't exist, skipped, no bone created meshes\R18pn\lingerie\D\outfit.xml(321,2):constraint SkirtA1 <-> hdtSSEPhysics_AutoRename_Armor_0000000B SkirtJ1 : bone for bodyA doesn't exist, will try to create it meshes\R18pn\lingerie\D\outfit.xml(321,2):Node named SkirtA1 doesn't exist, skipped, no bone created meshes\R18pn\lingerie\D\outfit.xml(410,2):Created bone hdtSSEPhysics_AutoRename_Armor_0000000B skirta1 added to body skirt2, created without default values
We have no guarantee that the string cache will provide a lowercase or uppercase string.
So I guess the solution might be to systematically lowercase our inputs when looking.
Maybe the renameMap has been introduced to manage this.
From what I understand, this is a skyrim bug we can't solve in FSMP. These 2 bones' names will always collide in Skyrim.
The only solution is to not have collidable names.
From what I understand, this is a skyrim bug we can't solve in FSMP. These 2 bones' names will always collide in Skyrim.
The only solution is to not have collidable names.
NiNode hdt::findNode(NiNode obj, const BSFixedString& name) bone name as BSFixedString, should be correct cased. There's some error lies somewhere.
It's based on: virtual NiAVObject * GetObjectByName(const char ** name); That one is implemented in Skyrim and the error lies in it. Or do I miss something?
FSMP bone name use the string cache, which is case insensitive, but bone name in xml is case sensitive. eg: armor1 has a bone name "skirta1", armor2 has a bone name "SkirtA1". After load armor1, "skirta1" being cached. If load armor2 later, bone "SkirtA1" become "skirta1", which don't match the name in HDT xml, produce bad physics behavior.