diff --git a/src/common/scripting/vm/vm.h b/src/common/scripting/vm/vm.h index ca13763f9..9529cf5c0 100644 --- a/src/common/scripting/vm/vm.h +++ b/src/common/scripting/vm/vm.h @@ -618,7 +618,8 @@ namespace template struct native_is_valid { static const bool value = true; static const bool retval = true; }; template<> struct native_is_valid { static const bool value = true; static const bool retval = true; }; template<> struct native_is_valid { static const bool value = true; static const bool retval = true; }; - template<> struct native_is_valid { static const bool value = true; static const bool retval = true; static_assert(sizeof(FName) == sizeof(int)); static_assert(std::is_pod_v);}; + // [RL0] this is disabled for now due to graf's concerns + // template<> struct native_is_valid { static const bool value = true; static const bool retval = true; static_assert(sizeof(FName) == sizeof(int)); static_assert(std::is_pod_v);}; template<> struct native_is_valid { static const bool value = true; static const bool retval = true; }; template<> struct native_is_valid { static const bool value = true; static const bool retval = true; }; template<> struct native_is_valid { static const bool value = true; static const bool retval = false;}; // Bool as return does not work! diff --git a/src/playsim/p_actionfunctions.cpp b/src/playsim/p_actionfunctions.cpp index 6eec02193..97cb4fe27 100644 --- a/src/playsim/p_actionfunctions.cpp +++ b/src/playsim/p_actionfunctions.cpp @@ -5111,21 +5111,26 @@ void ChangeModelNative( AActor * self, AActor * invoker, FStateParamInfo * stateinfo, - FName modeldef, + int i_modeldef, int i_modelindex, const FString &p_modelpath, - FName model, + int i_model, int i_skinindex, const FString &p_skinpath, - FName skin, + int i_skin, int flags, int generatorindex, int i_animationindex, const FString &p_animationpath, - FName animation + int i_animation ) { if(!self) ThrowAbortException(X_READ_NIL, "In function parameter self"); + FName modeldef { ENamedName(i_modeldef) }; + FName model { ENamedName(i_model) }; + FName skin { ENamedName(i_skin) }; + FName animation { ENamedName(i_animation) }; + if (modeldef != NAME_None && PClass::FindClass(modeldef.GetChars()) == nullptr) { Printf("Attempt to pass invalid modeldef name %s in %s.", modeldef.GetChars(), self->GetCharacterName()); @@ -5322,7 +5327,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(AActor, A_ChangeModel, ChangeModelNative) PARAM_STRING_VAL(animationpath); PARAM_NAME(animation); - ChangeModelNative(self,stateowner,stateinfo,modeldef,modelindex,modelpath,model,skinindex,skinpath,skin,flags,generatorindex,animationindex,animationpath,animation); + ChangeModelNative(self,stateowner,stateinfo,modeldef.GetIndex(),modelindex,modelpath,model.GetIndex(),skinindex,skinpath,skin.GetIndex(),flags,generatorindex,animationindex,animationpath,animation.GetIndex()); return 0; }