mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-05-30 00:31:54 +00:00
make sure bone overrides are cleared on model switches, add ClearBoneOffsets to clear them manually
This commit is contained in:
parent
1966d23510
commit
c7e415303d
2 changed files with 36 additions and 1 deletions
|
@ -5414,6 +5414,26 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, SetNamedBoneScaling, SetNamedBoneScalingNa
|
|||
}
|
||||
|
||||
|
||||
//================================================
|
||||
//
|
||||
// ClearBoneOffsets
|
||||
//
|
||||
//================================================
|
||||
|
||||
static void ClearBoneOffsetsNative(AActor * self)
|
||||
{
|
||||
if(self->modelData) self->modelData->modelBoneOverrides[0].Clear();
|
||||
}
|
||||
|
||||
DEFINE_ACTION_FUNCTION_NATIVE(AActor, ClearBoneOffsets, ClearBoneOffsetsNative)
|
||||
{
|
||||
PARAM_SELF_PROLOGUE(AActor);
|
||||
|
||||
ClearBoneOffsetsNative(self);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//================================================
|
||||
//
|
||||
// GetBoneOffset
|
||||
|
@ -5832,6 +5852,7 @@ void ChangeModelNative(
|
|||
}
|
||||
surfaceSkins.Push(skindata);
|
||||
mobj->modelData->models.Push({queryModel, std::move(surfaceSkins)});
|
||||
|
||||
mobj->modelData->modelFrameGenerators.Push(generatorindex);
|
||||
}
|
||||
else
|
||||
|
@ -5839,6 +5860,11 @@ void ChangeModelNative(
|
|||
mobj->modelData->models.Push({queryModel, {}});
|
||||
mobj->modelData->modelFrameGenerators.Push(generatorindex);
|
||||
}
|
||||
|
||||
if(queryModel != -1 && mobj->modelData->modelBoneOverrides.Size() > modelindex)
|
||||
{
|
||||
mobj->modelData->modelBoneOverrides[modelindex].Clear();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -5858,7 +5884,15 @@ void ChangeModelNative(
|
|||
mobj->modelData->models[modelindex].surfaceSkinIDs[skinindex] = skindata;
|
||||
}
|
||||
}
|
||||
if(queryModel != -1) mobj->modelData->models[modelindex].modelID = queryModel;
|
||||
if(queryModel != -1)
|
||||
{
|
||||
mobj->modelData->models[modelindex].modelID = queryModel;
|
||||
|
||||
if(mobj->modelData->modelBoneOverrides.Size() > modelindex)
|
||||
{
|
||||
mobj->modelData->modelBoneOverrides[modelindex].Clear();
|
||||
}
|
||||
}
|
||||
if(generatorindex != -1) mobj->modelData->modelFrameGenerators[modelindex] = generatorindex;
|
||||
}
|
||||
|
||||
|
|
|
@ -1372,6 +1372,7 @@ class Actor : Thinker native
|
|||
native version("4.15.1") Quat, Vector3, Vector3 GetBoneOffset(int boneIndex);
|
||||
native version("4.15.1") Quat, Vector3, Vector3 GetNamedBoneOffset(Name boneName);
|
||||
|
||||
native version("4.15.1") void ClearBoneOffsets();
|
||||
|
||||
native version("4.12") void SetAnimation(Name animName, double framerate = -1, int startFrame = -1, int loopFrame = -1, int endFrame = -1, int interpolateTics = -1, int flags = 0);
|
||||
native version("4.12") ui void SetAnimationUI(Name animName, double framerate = -1, int startFrame = -1, int loopFrame = -1, int endFrame = -1, int interpolateTics = -1, int flags = 0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue