mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-04 03:40:14 +00:00
Add or replace individual parts
This commit is contained in:
parent
1f566fc93a
commit
e869433b07
@ -382,7 +382,7 @@ void NpcAnimation::removeIndividualPart(int type){
|
|||||||
lKnee = 0;
|
lKnee = 0;
|
||||||
}
|
}
|
||||||
else if(type == ESM::PRT_RLeg && rUpperLeg){ //21
|
else if(type == ESM::PRT_RLeg && rUpperLeg){ //21
|
||||||
base->detachObjectFromBone(rAnkle);
|
base->detachObjectFromBone(rUpperLeg);
|
||||||
rUpperLeg = 0;
|
rUpperLeg = 0;
|
||||||
}
|
}
|
||||||
else if(type == ESM::PRT_LLeg && lUpperLeg){ //22
|
else if(type == ESM::PRT_LLeg && lUpperLeg){ //22
|
||||||
@ -417,6 +417,104 @@ void NpcAnimation::removeIndividualPart(int type){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bool NpcAnimation::addOrReplaceIndividualPart(int type, int group, int priority, const std::string &mesh){
|
||||||
|
if(priority >= partpriorities[type]){
|
||||||
|
removeIndividualPart(type);
|
||||||
|
partslots[type] = group;
|
||||||
|
switch(type){
|
||||||
|
case ESM::PRT_Head: //0
|
||||||
|
head = insertBoundedPart(mesh, "Head");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Hair: //1
|
||||||
|
hair = insertBoundedPart(mesh, "Head");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Neck: //2
|
||||||
|
neck = insertBoundedPart(mesh, "Neck");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Cuirass: //3
|
||||||
|
chest = insertFreePart(mesh, ":\"");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Groin: //4
|
||||||
|
neck = insertBoundedPart(mesh, "Groin");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Skirt: //5
|
||||||
|
skirt = insertFreePart(mesh, ":|");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RHand: //6
|
||||||
|
rhand = insertFreePart(mesh, ":?");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LHand: //7
|
||||||
|
lhand = insertFreePart(mesh, ":>");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RWrist: //8
|
||||||
|
rWrist = insertBoundedPart(mesh, "Right Wrist");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LWrist: //9
|
||||||
|
lWrist = insertBoundedPart(mesh + "*|", "Left Wrist");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Shield: //10
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RForearm: //11
|
||||||
|
rForearm = insertBoundedPart(mesh, "Right Forearm");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LForearm: //12
|
||||||
|
lForearm = insertBoundedPart(mesh + "*|", "Left Forearm");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RUpperarm: //13
|
||||||
|
rupperArm = insertBoundedPart(mesh, "Right Upper Arm");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LUpperarm: //14
|
||||||
|
lupperArm = insertBoundedPart(mesh + "*|", "Left Upper Arm");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RFoot: //15
|
||||||
|
if(isBeast)
|
||||||
|
rBeastFoot = insertFreePart(mesh, ":<");
|
||||||
|
else
|
||||||
|
rfoot = insertBoundedPart(mesh, "Right Foot");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LFoot: //16
|
||||||
|
if(isBeast)
|
||||||
|
lBeastFoot = insertFreePart(mesh, "::");
|
||||||
|
else
|
||||||
|
lfoot = insertBoundedPart(mesh + "*|", "Left Foot");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ESM::PRT_RAnkle: //17
|
||||||
|
rAnkle = insertBoundedPart(mesh , "Right Ankle");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LAnkle: //18
|
||||||
|
lAnkle = insertBoundedPart(mesh + "*|", "Left Ankle");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RKnee: //19
|
||||||
|
rKnee = insertBoundedPart(mesh , "Right Knee");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LKnee: //20
|
||||||
|
lKnee = insertBoundedPart(mesh + "*|", "Left Knee");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RLeg: //21
|
||||||
|
rUpperLeg = insertBoundedPart(mesh, "Right Upper Leg");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LLeg: //22
|
||||||
|
lUpperLeg = insertBoundedPart(mesh + "*|", "Left Upper Leg");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_RPauldron: //23
|
||||||
|
rclavicle = insertBoundedPart(mesh , "Right Clavicle");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_LPauldron: //24
|
||||||
|
lclavicle = insertBoundedPart(mesh + "*|", "Left Clavicle");
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Weapon: //25
|
||||||
|
break;
|
||||||
|
case ESM::PRT_Tail: //26
|
||||||
|
tail = insertFreePart(mesh, ":*");
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,6 +78,7 @@ private:
|
|||||||
void updateParts();
|
void updateParts();
|
||||||
void removeIndividualPart(int type);
|
void removeIndividualPart(int type);
|
||||||
void removePartGroup(int group);
|
void removePartGroup(int group);
|
||||||
|
bool addOrReplaceIndividualPart(int type, int group, int priority, const std::string &mesh);
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user