fix character skins

- fixed a bug where the player couldn't choose a skin for steampunk outfit;
- fixed a bug when the effects of the costume were not displayed (for example, the glow of the reaper outfit).
This commit is contained in:
GenZmeY 2021-03-21 01:22:49 +03:00
parent 0bcd296ce7
commit 1a5d415ecb
2 changed files with 4 additions and 32 deletions

View File

@ -2,32 +2,6 @@
class ExtCharacterInfo extends Object class ExtCharacterInfo extends Object
abstract; abstract;
// Hack fix for not being able to compile materials in run-time.
static final function CloneMIC(MaterialInstanceConstant B)
{
local int i;
local MaterialInstanceConstant M;
local LinearColor C;
M = MaterialInstanceConstant(B.Parent);
if (M==None)
return;
B.SetParent(M.Parent);
for (i=0; i<M.TextureParameterValues.Length; ++i)
if (M.TextureParameterValues[i].ParameterValue!=None)
B.SetTextureParameterValue(M.TextureParameterValues[i].ParameterName,M.TextureParameterValues[i].ParameterValue);
for (i=0; i<M.ScalarParameterValues.Length; ++i)
B.SetScalarParameterValue(M.ScalarParameterValues[i].ParameterName,M.ScalarParameterValues[i].ParameterValue);
for (i=0; i<M.VectorParameterValues.Length; ++i)
{
C = M.VectorParameterValues[i].ParameterValue;
B.SetVectorParameterValue(M.VectorParameterValues[i].ParameterName,C);
}
}
static final function Object SafeLoadObject(string S, Class ObjClass) static final function Object SafeLoadObject(string S, Class ObjClass)
{ {
local Object O; local Object O;
@ -51,7 +25,6 @@ static function InitCharacterMICs(KFCharacterInfo_Human C, KFPawn P, optional bo
if (P.Mesh != None) if (P.Mesh != None)
{ {
P.CharacterMICs[0] = P.Mesh.CreateAndSetMaterialInstanceConstant(C.BodyMaterialID); P.CharacterMICs[0] = P.Mesh.CreateAndSetMaterialInstanceConstant(C.BodyMaterialID);
CloneMIC(P.CharacterMICs[0]);
} }
// head MIC // head MIC
@ -143,8 +116,8 @@ static final function SetCharacterMeshFromArch(KFCharacterInfo_Human C, KFPawn K
} }
static final function SetBodyMeshAndSkin(KFCharacterInfo_Human C, static final function SetBodyMeshAndSkin(KFCharacterInfo_Human C,
byte CurrentBodyMeshIndex, int CurrentBodyMeshIndex,
byte CurrentBodySkinIndex, int CurrentBodySkinIndex,
KFPawn KFP, KFPawn KFP,
KFPlayerReplicationInfo KFPRI) KFPlayerReplicationInfo KFPRI)
{ {
@ -193,7 +166,7 @@ static final function SetBodyMeshAndSkin(KFCharacterInfo_Human C,
} }
} }
static final function SetBodySkinMaterial(KFCharacterInfo_Human C, OutfitVariants CurrentVariant, byte NewSkinIndex, KFPawn KFP) static final function SetBodySkinMaterial(KFCharacterInfo_Human C, OutfitVariants CurrentVariant, int NewSkinIndex, KFPawn KFP)
{ {
local int i; local int i;
@ -639,7 +612,6 @@ static final function SetFirstPersonArmsFromArch(KFCharacterInfo_Human C, KFPawn
if (bCustom && KFP.ArmsMesh.SkeletalMesh!=None && KFP.ArmsMesh.GetMaterial(0)!=None) if (bCustom && KFP.ArmsMesh.SkeletalMesh!=None && KFP.ArmsMesh.GetMaterial(0)!=None)
{ {
M = KFP.ArmsMesh.CreateAndSetMaterialInstanceConstant(0); M = KFP.ArmsMesh.CreateAndSetMaterialInstanceConstant(0);
CloneMIC(M);
} }
} }

View File

@ -388,7 +388,7 @@ function SetCurrentCharacterButtons()
{ {
local bool bCustom; local bool bCustom;
local GFxObject DataObject; local GFxObject DataObject;
local byte CharacterIndex, HeadMeshIndex, HeadSkinIndex, BodyMeshIndex, BodySkinIndex; local int CharacterIndex, HeadMeshIndex, HeadSkinIndex, BodyMeshIndex, BodySkinIndex;
bCustom = ExtPRI.UsesCustomChar(); bCustom = ExtPRI.UsesCustomChar();
DataObject = CreateObject("Object"); DataObject = CreateObject("Object");