update scripts

This commit is contained in:
EricPlayZ
2025-03-04 00:50:33 +02:00
parent 84366681a9
commit 8b226df725
7 changed files with 1253 additions and 12 deletions

View File

@ -107,7 +107,7 @@ class ClassName:
@dataclass(frozen=True)
class ParsedFunction:
"""Parse a demangled function signature and return a ParsedFunction instance."""
"""Parse a demangled function signature and return an instance."""
type: str = ""
access: str = ""
returnType: Optional[ClassName] = None
@ -184,10 +184,24 @@ class ParsedFunction:
if lastSpaceIndex != -1:
# Split at the last space outside angle brackets
returnType = remainingInputBeforeParamsParen[:lastSpaceIndex].strip()
classAndFuncName = remainingInputBeforeParamsParen[lastSpaceIndex+1:].strip()
className = "::".join(classAndFuncName.split("::")[:-1])
funcName = classAndFuncName.split("::")[-1]
templateDepth = 0
# Find the last class separator outside of angle brackets
for i in range(len(classAndFuncName)):
if classAndFuncName[i] == '<':
templateDepth += 1
elif classAndFuncName[i] == '>':
templateDepth -= 1
elif templateDepth == 0 and classAndFuncName[i:i+2] == '::':
lastClassSeparatorIndex = i
if lastClassSeparatorIndex != -1:
className = classAndFuncName[:lastClassSeparatorIndex]
funcName = classAndFuncName[lastClassSeparatorIndex+2:]
else:
className = "::".join(classAndFuncName.split("::")[:-1])
funcName = classAndFuncName.split("::")[-1]
else:
templateDepth = 0
# Find the last class separator outside of angle brackets
@ -202,12 +216,13 @@ class ParsedFunction:
if lastClassSeparatorIndex != -1:
classAndFuncName: str = remainingInputBeforeParamsParen.strip()
className: str = classAndFuncName[:lastClassSeparatorIndex]
funcName: str = classAndFuncName[lastClassSeparatorIndex + 2:]
funcName: str = classAndFuncName[lastClassSeparatorIndex+2:]
else:
returnType = remainingInputBeforeParamsParen.strip()
if funcName.startswith("~"):
returnType = returnType.removeprefix("virtual").strip()
return
#returnType = returnType.removeprefix("virtual").strip()
if isDuplicateFunc:
if signature not in virtualFuncDuplicateCounter:
virtualFuncDuplicateCounter[signature] = 0
@ -232,6 +247,140 @@ class ParsedFunction:
object.__setattr__(self, "returnType", ClassName("virtual void"))
object.__setattr__(self, "funcName", f"_StrippedVFunc{virtualFuncPlaceholderCounter}")
@dataclass(frozen=True)
class ParsedClassVar:
"""Parse a demangled global class var signature and return an instance."""
access: str = ""
varType: Optional[ClassName] = None
className: Optional[ClassName] = None
varName: str = ""
def __init__(self, signature: str, onlyVirtualFuncs: bool):
global virtualFuncPlaceholderCounter
global virtualFuncDuplicateCounter
object.__setattr__(self, "access", "")
object.__setattr__(self, "varType", None)
object.__setattr__(self, "className", None)
object.__setattr__(self, "varName", "")
signature = signature.strip()
isDuplicateFunc: bool = False
isIDAGeneratedType: bool = False
isIDAGeneratedTypeParsed: bool = False
if (signature.startswith("DUPLICATE_FUNC")):
isDuplicateFunc = True
signature = signature.removeprefix("DUPLICATE_FUNC").strip()
if (signature.startswith("IDA_GEN_TYPE")):
isIDAGeneratedType = True
signature = signature.removeprefix("IDA_GEN_TYPE").strip()
elif (signature.startswith("IDA_GEN_PARSED")):
isIDAGeneratedTypeParsed = True
signature = signature.removeprefix("IDA_GEN_PARSED").strip()
access: str = ""
if signature.startswith("public:"):
access = "public"
elif signature.startswith("protected:"):
access = "protected"
elif signature.startswith("private:"):
access = "private"
signature = signature.removeprefix(f"{access}:").strip()
# Find parameters and const qualifier
paramsOpenParenIndex: int = signature.find('(')
paramsCloseParenIndex: int = signature.rfind(')')
if paramsOpenParenIndex != -1 and paramsCloseParenIndex != -1:
params: str = signature[paramsOpenParenIndex + 1:paramsCloseParenIndex]
remainingInputBeforeParamsParen: str = signature[:paramsOpenParenIndex].strip()
remainingInputAfterParamsParen: str = signature[paramsCloseParenIndex + 1:].strip()
const: str = "const" if "const" in remainingInputAfterParamsParen else ""
varType: str = ""
classAndVarName: str = ""
className: str = ""
varName: str = ""
if not isIDAGeneratedType:
# Find the last space outside of angle brackets
lastSpaceIndex: int = -1
lastClassSeparatorIndex: int = -1
templateDepth: int = 0
for i in range(len(remainingInputBeforeParamsParen)):
if remainingInputBeforeParamsParen[i] == '<':
templateDepth += 1
elif remainingInputBeforeParamsParen[i] == '>':
templateDepth -= 1
elif templateDepth == 0 and remainingInputBeforeParamsParen[i] == ' ':
lastSpaceIndex = i
if lastSpaceIndex != -1:
# Split at the last space outside angle brackets
varType = remainingInputBeforeParamsParen[:lastSpaceIndex].strip()
classAndVarName = remainingInputBeforeParamsParen[lastSpaceIndex+1:].strip()
templateDepth = 0
# Find the last class separator outside of angle brackets
for i in range(len(classAndVarName)):
if classAndVarName[i] == '<':
templateDepth += 1
elif classAndVarName[i] == '>':
templateDepth -= 1
elif templateDepth == 0 and classAndVarName[i:i+2] == '::':
lastClassSeparatorIndex = i
if lastClassSeparatorIndex != -1:
className = classAndVarName[:lastClassSeparatorIndex]
varName = classAndVarName[lastClassSeparatorIndex+2:]
else:
className = "::".join(classAndVarName.split("::")[:-1])
varName = classAndVarName.split("::")[-1]
else:
templateDepth = 0
# Find the last class separator outside of angle brackets
for i in range(len(remainingInputBeforeParamsParen)):
if remainingInputBeforeParamsParen[i] == '<':
templateDepth += 1
elif remainingInputBeforeParamsParen[i] == '>':
templateDepth -= 1
elif templateDepth == 0 and remainingInputBeforeParamsParen[i:i+2] == '::':
lastClassSeparatorIndex = i
if lastClassSeparatorIndex != -1:
classAndVarName: str = remainingInputBeforeParamsParen.strip()
className: str = classAndVarName[:lastClassSeparatorIndex]
varName: str = classAndVarName[lastClassSeparatorIndex+2:]
else:
varType = remainingInputBeforeParamsParen.strip()
if varName.startswith("~"):
return
#varType = varType.removeprefix("virtual").strip()
if isDuplicateFunc:
if signature not in virtualFuncDuplicateCounter:
virtualFuncDuplicateCounter[signature] = 0
virtualFuncDuplicateCounter[signature] += 1
varName = f"_{varName}{virtualFuncDuplicateCounter[signature]}"
type = "func" if not (onlyVirtualFuncs or "virtual" in varType) else ("basic_vfunc" if isIDAGeneratedType or isIDAGeneratedTypeParsed or isDuplicateFunc else "vfunc")
object.__setattr__(self, "type", type)
object.__setattr__(self, "access", access if access else "public")
object.__setattr__(self, "varType", ClassName(varType) if varType else None)
object.__setattr__(self, "className", ClassName(className) if className else None)
object.__setattr__(self, "varName", varName)
return
# Generate a simple virtual void function
if onlyVirtualFuncs and signature == "_purecall":
virtualFuncPlaceholderCounter += 1
object.__setattr__(self, "type", "stripped_vfunc")
object.__setattr__(self, "access", access if access else "public")
object.__setattr__(self, "varType", ClassName("virtual void"))
object.__setattr__(self, "varName", f"_StrippedVFunc{virtualFuncPlaceholderCounter}")
# Global caches
parsedFuncsByClass: dict[ClassName, list[ParsedFunction]] = {} # Cache of parsed functions by class name
parsedVTableFuncsByClass: dict[ClassName, list[ParsedFunction]] = {} # Cache of parsed functions by class name
@ -631,16 +780,25 @@ def GenerateClassDefinition(targetClass: ClassName, allParsedClassFuncs: tuple[l
if targetClassType:
break
classLines: list[str] = [f"{targetClass.type if targetClass.type else 'class'} {targetClass.name} {{", "public:"]
classLines: list[str] = [f"{targetClass.type if targetClass.type else 'class'} {targetClass.name} {{", " #pragma region GENERATED by ExportClassToCPPH.py"]
firstFuncAccess: str = ""
for index, vTableFunc in enumerate(allParsedClassFuncs[0]):
if not firstFuncAccess:
firstFuncAccess = vTableFunc.access
classLines.append(GenerateClassFuncCode(vTableFunc, cleanedTypes, index))
if allParsedClassFuncs[0] and allParsedClassFuncs[1]:
classLines.append("")
for func in allParsedClassFuncs[1]:
if not firstFuncAccess:
firstFuncAccess = func.access
classLines.append(GenerateClassFuncCode(func, cleanedTypes))
classLines.append(" #pragma endregion")
classLines.append("};")
# Insert first function access if there is any, otherwise just make it public by default
classLines.insert(2, f"{firstFuncAccess if firstFuncAccess else 'public'}:")
return "\n".join(classLines)
def GenerateHeaderCode(targetClass: ClassName, allParsedClassFuncs: tuple[list[ParsedFunction], list[ParsedFunction]], cleanedTypes: bool = True) -> str:
@ -724,7 +882,7 @@ def ExportClassHeader(targetClass: ClassName):
if not headerCode:
PrintMsg(f"No functions were found for class {targetClass.fullName}, therefore will not generate.")
return
WriteHeaderToFile(targetClass, headerCode)
WriteHeaderToFile(targetClass, headerCode)
nonCleanedHeaderCode: str = GenerateHeaderCode(targetClass, allParsedClassFuncs, False)
WriteHeaderToFile(targetClass, nonCleanedHeaderCode, f"{targetClass.name}-unclean.h")
@ -733,11 +891,10 @@ def Main():
"""Main entry point for the script."""
# Ask user for target class
#targetClass = ida_kernwin.ask_str("IModelObject", 0, "Enter target class name (supports namespaces and templates):")
targetClassName: str = "SCommandParam"
targetClassName: str = "CRTTI"
if not targetClassName:
PrintMsg("No target class specified. Aborting.\n")
return
breakpoint()
targetClass: ClassName = ClassName(targetClassName)
ExportClassHeader(targetClass)

View File

@ -0,0 +1,423 @@
#pragma once
#include <EGSDK\Imports.h>
class CModelObject {
public:
VIRTUAL_CALL(0, __int64 __fastcall, sub_7E9B40, (__int64 a1, unsigned __int8 a2), a1, a2);
VIRTUAL_CALL(1, CModelObject *__fastcall, sub_663A40, (char a1), a1);
GAME_IMPORT virtual class CRTTI const * GetRTTI() const;
GAME_IMPORT virtual class CRTTI const * GetEngineRTTI() const;
GAME_IMPORT struct MED::SModelOutfitGroup const * unassigned() const;
VIRTUAL_CALL(5, struct MED::SModelOutfitGroup const *, _unassigned1, ());
protected:
GAME_IMPORT class gui::CPackage * ToCPackage() const;
public:
VIRTUAL_CALL(7, class gui::CPackage *, _ToCPackage1, ());
VIRTUAL_CALL(8, __int64, RunUnitTests, ());
VIRTUAL_CALL(9, __int64, _RunUnitTests1, ());
GAME_IMPORT virtual void GetPrivateObjects(class ttl::list<class IGSObject *, class ttl::allocator> *, bool, bool);
GAME_IMPORT virtual void DestroyPrivateObjects();
VIRTUAL_CALL(12, struct MED::SModelOutfitGroup const *, _unassigned2, ());
GAME_IMPORT virtual void GetAllObjects(class ttl::vector<class IGSObject *, class ttl::vector_allocators::heap_allocator<class IGSObject *>, 1> &, bool);
GAME_IMPORT virtual void GetAllObjects(class ttl::set<class CRTTIObject *, struct ttl::less<class CRTTIObject *>, class ttl::allocator> &, class ttl::set<class CRTTIObject *, struct ttl::less<class CRTTIObject *>, class ttl::allocator> &, bool, class std::optional<class ttl::function_ref<bool (class CRTTIObject *)>>);
GAME_IMPORT bool updateRttiParams();
VIRTUAL_CALL(16, void __fastcall, SetPlatform, ());
GAME_IMPORT virtual char const * GetString(char const *) const;
VIRTUAL_CALL(18, __int64 __fastcall, sub_17D7D0, ());
VIRTUAL_CALL(19, char __fastcall, sub_15DDB0, ());
VIRTUAL_CALL(20, __int64 __fastcall, sub_80A6F0, ());
VIRTUAL_CALL(21, struct MED::SModelOutfitGroup const *, _unassigned3, ());
VIRTUAL_CALL(22, void __fastcall, _SetPlatform1, ());
GAME_IMPORT virtual class Uid const & GetUid() const;
VIRTUAL_CALL(24, bool, _updateRttiParams1, ());
VIRTUAL_CALL(25, bool, _updateRttiParams2, ());
VIRTUAL_CALL(26, bool, _updateRttiParams3, ());
VIRTUAL_CALL(27, bool, _updateRttiParams4, ());
VIRTUAL_CALL(28, bool, _updateRttiParams5, ());
VIRTUAL_CALL(29, bool, _updateRttiParams6, ());
VIRTUAL_CALL(30, bool, _updateRttiParams7, ());
VIRTUAL_CALL(31, bool, _updateRttiParams8, ());
VIRTUAL_CALL(32, bool, _updateRttiParams9, ());
GAME_IMPORT virtual void CallVoidMethod(char const *, ...);
GAME_IMPORT virtual class cbs::msg::IMessagePipeSet const & GetMessagePipeSet() const;
VIRTUAL_CALL(35, __int64, _RunUnitTests2, ());
VIRTUAL_CALL(36, struct MED::SModelOutfitGroup const *, _unassigned4, ());
VIRTUAL_CALL(37, struct MED::SModelOutfitGroup const *, _unassigned5, ());
VIRTUAL_CALL(38, struct MED::SModelOutfitGroup const *, _unassigned6, ());
VIRTUAL_CALL(39, struct MED::SModelOutfitGroup const *, _unassigned7, ());
GAME_IMPORT virtual class cbs::prop::IPropertySet const & GetPropertySet() const;
VIRTUAL_CALL(41, void __fastcall, _SetPlatform2, ());
VIRTUAL_CALL(42, __int64, _RunUnitTests3, ());
GAME_IMPORT virtual bool LoadField(class CRTTIField const *, unsigned char, class fs::ifile &, class IPtrResolver &, bool);
GAME_IMPORT virtual void LoadFields(class dom::IReader::Object const &, class IPtrResolver &, bool, bool (*)(char const *, class CRTTIObject *));
GAME_IMPORT virtual void LoadFields(class ITextDeserializer &, class IPtrResolver &, bool);
GAME_IMPORT virtual void LoadFields(class fs::ifile &, class IPtrResolver &, bool);
GAME_IMPORT virtual void SaveFields(class dom::IWriter &, enum ERTTIFlags, bool) const;
GAME_IMPORT virtual int ToBufferReplicated(char *, int);
GAME_IMPORT virtual int FromBufferReplicated(char *, int);
GAME_IMPORT virtual int GetBufferReplicatedDataSize();
VIRTUAL_CALL(51, void __fastcall, _SetPlatform3, ());
VIRTUAL_CALL(52, char __fastcall, sub_1816B0, (const struct CRTTIField* a1), a1);
GAME_IMPORT virtual bool CopyFields(class CRTTIObject const *, bool);
GAME_IMPORT virtual bool CopyPointerFields(class CRTTIObject const *);
GAME_IMPORT virtual bool ExchangePointerFields(class CRTTIObject *);
VIRTUAL_CALL(56, __int64 __fastcall, sub_7F8D70, (int a1), a1);
VIRTUAL_CALL(57, __int64 __fastcall, sub_7F8F70, (__int64 a1), a1);
VIRTUAL_CALL(58, __int64, _RunUnitTests4, ());
GAME_IMPORT virtual struct SRttiNetPointer GetNetPointer() const;
VIRTUAL_CALL(60, __int64, _RunUnitTests5, ());
GAME_IMPORT virtual class ttl::string_base<char> GetDebugDescription() const;
GAME_IMPORT virtual void CalcMemoryUsage(struct SObjectMemoryUsage &) const;
VIRTUAL_CALL(63, __int64 __fastcall, sub_7E92C0, ());
VIRTUAL_CALL(64, __int64 __fastcall, sub_8092F0, ());
VIRTUAL_CALL(65, bool, _updateRttiParams10, ());
GAME_IMPORT static bool ValidateVec4(class IGSObject const *, class vec4 const &);
VIRTUAL_CALL(67, __int64 __fastcall, sub_806BC0, ());
GAME_IMPORT virtual class ttl::string_base<char> ValueToString(class CRTTIObject * const &) const;
VIRTUAL_CALL(69, char __fastcall, sub_15DD80, ());
VIRTUAL_CALL(70, void __fastcall, sub_17D770, (struct CRTTIField* a1, bool a2), a1, a2);
VIRTUAL_CALL(71, bool, _updateRttiParams11, ());
GAME_IMPORT virtual bool OnFieldChanged2(class CRTTIField const *, bool);
VIRTUAL_CALL(73, __int64 __fastcall, sub_173040, ());
GAME_IMPORT char const * GetMethodName() const;
VIRTUAL_CALL(75, _QWORD *__fastcall, sub_8343A0, (__int64 a1), a1);
VIRTUAL_CALL(76, bool, _updateRttiParams12, ());
VIRTUAL_CALL(77, char __fastcall, sub_81DA90, (__int64 a1), a1);
VIRTUAL_CALL(78, bool, _updateRttiParams13, ());
VIRTUAL_CALL(79, bool __fastcall, sub_81DA10, ());
VIRTUAL_CALL(80, __int64, _RunUnitTests6, ());
VIRTUAL_CALL(81, __int64, _RunUnitTests7, ());
VIRTUAL_CALL(82, void __fastcall, _SetPlatform4, ());
GAME_IMPORT virtual void Query(class IBaseValidator &, class ttl::vector<class CRTTIObject *, class ttl::vector_allocators::heap_allocator<class CRTTIObject *>, 1> &) const;
VIRTUAL_CALL(84, bool __fastcall, sub_15DE90, ());
GAME_IMPORT virtual bool SelectObjectEditor(bool);
GAME_IMPORT virtual bool HideObjectEditor(bool);
VIRTUAL_CALL(87, char __fastcall, sub_15E050, ());
GAME_IMPORT virtual void OnDeleteObjectEditor();
GAME_IMPORT virtual void CopyObjectEditor(class CGameObject *);
GAME_IMPORT virtual void EnableVisualizationEditor(bool);
GAME_IMPORT virtual void Load(class fs::ifile &, int);
GAME_IMPORT virtual bool LoadChunk(class fs::ifile &, unsigned short, int);
VIRTUAL_CALL(93, _QWORD *__fastcall, sub_131260, (__int64* a1, int a2, int a3, __int64 a4, struct CRTTI* a5), a1, a2, a3, a4, a5);
protected:
GAME_IMPORT virtual void SetGameScriptObject(class IGSObject *);
public:
VIRTUAL_CALL(95, __int64 __fastcall, sub_7F0310, ());
GAME_IMPORT virtual void ConstructObject(class CGSObject *);
VIRTUAL_CALL(97, __int64 __fastcall, sub_822BC0, ());
GAME_IMPORT virtual void InitializeObject(class CGSObject *);
VIRTUAL_CALL(99, __int64 __fastcall, sub_80C420, (__int64 a1), a1);
GAME_IMPORT virtual void DestroyObject();
VIRTUAL_CALL(101, __int64 __fastcall, sub_7E9230, (__int64 a1), a1);
VIRTUAL_CALL(102, __int64 __fastcall, sub_7E8D70, (__int64 a1), a1);
VIRTUAL_CALL(103, __int64 __fastcall, sub_7E91C0, ());
VIRTUAL_CALL(104, __int64 __fastcall, sub_7E8F20, ());
VIRTUAL_CALL(105, __int64 __fastcall, sub_7F89A0, ());
VIRTUAL_CALL(106, char __fastcall, sub_7F97C0, (__int64 a1, _QWORD* a2, _DWORD* a3), a1, a2, a3);
VIRTUAL_CALL(107, char __fastcall, sub_8130B0, (__int64 a1), a1);
VIRTUAL_CALL(108, char __fastcall, sub_813020, (_QWORD* * a1), a1);
VIRTUAL_CALL(109, _QWORD *__fastcall, sub_806400, (_QWORD* a1), a1);
VIRTUAL_CALL(110, __int64 __fastcall, sub_831710, (__int64 a1), a1);
VIRTUAL_CALL(111, __int64 __fastcall, sub_8316D0, (__int64 a1), a1);
VIRTUAL_CALL(112, void __fastcall, sub_8261B0, (__int64 a1), a1);
VIRTUAL_CALL(113, void __fastcall, sub_8260E0, (_BYTE* a1), a1);
VIRTUAL_CALL(114, unsigned __int64 __fastcall, sub_834570, (char a1), a1);
VIRTUAL_CALL(115, __int64 __fastcall, sub_8341B0, (__int64 a1), a1);
GAME_IMPORT virtual void SetLevel(class CLevel *, bool);
VIRTUAL_CALL(117, _QWORD *__fastcall, sub_800900, (_QWORD* a1), a1);
VIRTUAL_CALL(118, _QWORD *__fastcall, sub_802EE0, (_QWORD* a1), a1);
VIRTUAL_CALL(119, __int64 __fastcall, sub_834400, ());
VIRTUAL_CALL(120, void __fastcall, sub_8262B0, (_BYTE* a1), a1);
VIRTUAL_CALL(121, __int64 __fastcall, sub_831870, (__int64 a1), a1);
VIRTUAL_CALL(122, __int64 __fastcall, sub_7E92E0, ());
VIRTUAL_CALL(123, __int64 __fastcall, sub_7E93C0, ());
VIRTUAL_CALL(124, __int64 __fastcall, sub_7E9390, ());
VIRTUAL_CALL(125, __int64 __fastcall, sub_7E93F0, ());
VIRTUAL_CALL(126, __int64 __fastcall, sub_7E9340, ());
VIRTUAL_CALL(127, __int64 __fastcall, sub_7E93E0, ());
VIRTUAL_CALL(128, __int64 __fastcall, sub_7E9330, ());
VIRTUAL_CALL(129, __int64 __fastcall, sub_7E93D0, ());
VIRTUAL_CALL(130, __int64 __fastcall, sub_7E9320, ());
VIRTUAL_CALL(131, __int64 __fastcall, sub_7E92F0, ());
VIRTUAL_CALL(132, __int64 __fastcall, sub_7E92D0, ());
VIRTUAL_CALL(133, __int64 __fastcall, sub_7E93A0, ());
VIRTUAL_CALL(134, __int64 __fastcall, sub_7E9400, ());
VIRTUAL_CALL(135, __int64 __fastcall, sub_7E9410, ());
VIRTUAL_CALL(136, __int64 __fastcall, sub_7E9420, ());
VIRTUAL_CALL(137, __int64 __fastcall, sub_7E9350, ());
VIRTUAL_CALL(138, __int64 __fastcall, sub_7E9360, ());
VIRTUAL_CALL(139, __int64 __fastcall, sub_7E9380, ());
VIRTUAL_CALL(140, __int64 __fastcall, sub_7E9370, ());
VIRTUAL_CALL(141, __int64 __fastcall, sub_7E9300, ());
VIRTUAL_CALL(142, __int64 __fastcall, sub_7E9310, ());
VIRTUAL_CALL(143, __int64 __fastcall, sub_7E93B0, ());
VIRTUAL_CALL(144, bool __fastcall, sub_811980, ());
VIRTUAL_CALL(145, _QWORD *__fastcall, sub_7FE950, (_QWORD* a1), a1);
GAME_IMPORT virtual void SetActiveOnLevel(bool);
GAME_IMPORT virtual void EnableRendering(bool);
GAME_IMPORT virtual void EnableRenderingScene(bool);
GAME_IMPORT virtual void EnableRenderingShadows(bool);
GAME_IMPORT virtual void EnableRenderingRayTracing(bool);
GAME_IMPORT virtual void EnableExtentsRendering(bool);
GAME_IMPORT virtual void EnableExtentOnlyRendering(bool);
GAME_IMPORT static enum COFlags::TYPE GetDefaultCOFlags();
GAME_IMPORT virtual void SetLodCoarseObjectHierarchy(bool);
GAME_IMPORT virtual void OnObjectMoved(unsigned char, enum FOnObjectMovedPropagate::FLAGS);
GAME_IMPORT virtual void OnChildMoved(unsigned char);
GAME_IMPORT virtual void GetChildren(class ttl::vector<class CControlObject *, class ttl::vector_allocators::heap_allocator<class CControlObject *>, 1> &);
GAME_IMPORT virtual void AttachChild(class CControlObject *, bool);
GAME_IMPORT virtual void DetachChild(class CControlObject *, bool);
GAME_IMPORT virtual void DetachFromParent(bool);
protected:
GAME_IMPORT virtual void OnNewParent(class CControlObject *);
public:
VIRTUAL_CALL(162, void __fastcall, _SetPlatform5, ());
VIRTUAL_CALL(163, void __fastcall, _SetPlatform6, ());
GAME_IMPORT virtual void PreRenderObject(struct SPreRender *);
GAME_IMPORT virtual void PreRenderShadowMap(struct SPreRender *);
GAME_IMPORT virtual void OnObjectPut();
GAME_IMPORT virtual bool Raytrace(class vec3 const &, class vec3 &, struct SExtCollInfo *);
GAME_IMPORT virtual bool Raytest(class vec3 const &, class vec3 const &, struct SExtCollInfo const *);
GAME_IMPORT virtual void ExtractFaces(struct extract_faces_params const &, class ttl::vector<class coll_tri, class ttl::vector_allocators::heap_allocator<class coll_tri>, 0> *, class ttl::vector<struct coll_primitive, class ttl::vector_allocators::heap_allocator<struct coll_primitive>, 0> *, struct extract_faces_info *);
GAME_IMPORT virtual class cbs::CEntity * GetEntity();
GAME_IMPORT virtual void SetWorldXformEditor(class mtx34 const &);
GAME_IMPORT virtual void SetLocalXformEditor(class mtx34 const &);
GAME_IMPORT virtual void SetWorldPosEditor(class vec3 const &);
GAME_IMPORT virtual void SetLocalPosEditor(class vec3 const &);
GAME_IMPORT virtual void SetWorldDirEditor(class vec3 const &);
GAME_IMPORT virtual class mtx34 const & GetLocalXformEditor();
GAME_IMPORT virtual class mtx34 const & GetWorldXformEditor();
GAME_IMPORT virtual void GetInvWorldXformEditor(class mtx34 &);
GAME_IMPORT virtual class vec3 const GetWorldPosEditor();
GAME_IMPORT virtual class vec3 const GetLocalPosEditor();
GAME_IMPORT virtual class vec3 const GetWorldDirEditor();
GAME_IMPORT virtual class vec3 const GetLocalScaleEditor();
GAME_IMPORT virtual void Physics_Clutch(class vec3 const &);
GAME_IMPORT virtual void Physics_Unclutch();
GAME_IMPORT virtual void Physics_SynchroClutch(class vec3 const &);
GAME_IMPORT virtual class ttl::string_base<char> Physics_GetClutchInfo();
GAME_IMPORT virtual void SetCollType(int);
GAME_IMPORT virtual class extents const & GetExtents();
GAME_IMPORT virtual void SetExtents(class extents const &);
GAME_IMPORT virtual void RecalcExtents();
GAME_IMPORT virtual class extents const & GetExtentsInWorldEditor();
VIRTUAL_CALL(192, void __fastcall, _SetPlatform7, ());
GAME_IMPORT virtual void SetMeshName(class ttl::string_const<char>);
GAME_IMPORT virtual void LoadMesh(class ttl::string_const<char>);
GAME_IMPORT virtual void LoadMesh(bool);
GAME_IMPORT virtual void ResetBonesToReferenceFrame(unsigned int, unsigned int const *);
GAME_IMPORT virtual void ResetBonesToReferenceFrame(bool);
GAME_IMPORT virtual void ResetBonesExtentsToReferenceFrame(unsigned int, unsigned int const *);
GAME_IMPORT virtual void ResetBonesExtentsToReferenceFrame();
GAME_IMPORT virtual void ResetBoneAndDescendantsToReferenceFrame(int);
GAME_IMPORT virtual void ResetElementsDescendantsToReferenceFrame(int);
GAME_IMPORT virtual bool IsBipedEditor() const;
GAME_IMPORT virtual void AdjustExtentsToAllElements(bool, bool);
GAME_IMPORT virtual void AnimUpdate(unsigned int);
GAME_IMPORT virtual void AnimUpdate(class CMeshElement *);
GAME_IMPORT virtual bool AnimInit(char const *, char const *);
GAME_IMPORT virtual void AnimShutdown();
GAME_IMPORT virtual bool AnimReInit(class ttl::string_base<char> const &);
GAME_IMPORT virtual class AnimSeq * AnimSeqDataWrite(struct TAnimId);
GAME_IMPORT virtual class AnimSeq * AnimSeqDataWrite(char const *);
VIRTUAL_CALL(211, class AnimSeq *, _AnimSeqDataWrite1, (struct TAnimId a1), a1);
VIRTUAL_CALL(212, class AnimSeq *, _AnimSeqDataWrite1, (char const* a1), a1);
GAME_IMPORT virtual void AnimGetAnimNames(class ttl::map<class ttl::string_base<char>, struct TAnimId, struct ttl::less<class ttl::string_base<char>>, class ttl::allocator> &) const;
GAME_IMPORT virtual void AnimGetAnimNames(class ttl::vector<class ttl::string_base<char>, class ttl::vector_allocators::heap_allocator<class ttl::string_base<char>>, 1> &) const;
GAME_IMPORT virtual void AnimUnregisterUpdate();
GAME_IMPORT virtual int FindBoneElement(char const *);
GAME_IMPORT virtual int GetMeshElemFromBoneID(enum EBones::TYPE);
GAME_IMPORT virtual void StoreElementsLayout(struct multielement_model_layout *);
GAME_IMPORT virtual bool RestoreElementsLayout(struct multielement_model_layout const *);
GAME_IMPORT virtual void StoreElementsLayoutModelSpace(struct multielement_model_layout *);
GAME_IMPORT virtual bool RestoreElementsLayoutModelSpace(struct multielement_model_layout const *);
GAME_IMPORT virtual void EnableHierarchySerialization(bool);
GAME_IMPORT virtual bool IsHierarchySerializationEnabled();
GAME_IMPORT virtual void AttachChildToMeshElement(class CControlObject *, class CHierarchyElement *, bool);
GAME_IMPORT virtual class extents const & GetExtentsInWorld();
GAME_IMPORT virtual void EnableCollisionHullRendering(bool);
GAME_IMPORT bool RendersCollisionHull() const;
GAME_IMPORT virtual void DebugRenderElementBoxes();
GAME_IMPORT virtual class aabb const & GetAABBExtents();
protected:
GAME_IMPORT CModelObject(class IModelObject *);
public:
GAME_IMPORT void AdjustVBlendElementsToExtents();
GAME_IMPORT unsigned char AnimCalculateLod(class CBaseCamera *);
GAME_IMPORT void AnimCalculateLod();
GAME_IMPORT class ttl::string_base<char> AnimGetFileName(class ttl::string_base<char> const &);
GAME_IMPORT unsigned char AnimGetLod() const;
GAME_IMPORT class Anim::IPoseElement const * AnimGetModelObjectMorphPoseElement() const;
GAME_IMPORT class Anim::IPoseElement const * AnimGetModelObjectPoseElement() const;
GAME_IMPORT float AnimGetTimeDelta() const;
GAME_IMPORT bool AnimLoadState(class CSGChunk *);
GAME_IMPORT void AnimRegisterUpdate();
GAME_IMPORT bool AnimSaveState(class CSGChunk *);
GAME_IMPORT void AnimSetLod(unsigned char);
GAME_IMPORT void AnimSetTimeDelta(float);
GAME_IMPORT virtual void AnimUpdate_PostUpdateAnimPhase2_msync();
GAME_IMPORT virtual void AnimUpdate_PreUpdateAnim();
GAME_IMPORT virtual void AnimUpdate_UpdateHierarchyLegacy();
GAME_IMPORT unsigned int AttachAudioEvent(int, class ttl::string_base<char> const &, struct Audio::SAudioEventExtraData const *, class vec3 const &);
GAME_IMPORT static void BlockAnimLoad(bool);
GAME_IMPORT bool CharacterPresetExists(class ttl::string_base<char> const &) const;
GAME_IMPORT bool CheckSurfaceFlagsEditor(unsigned int) const;
GAME_IMPORT static void CleanMessageBufferContent();
GAME_IMPORT void ClearMeshFlagsEditor(unsigned int);
GAME_IMPORT void CopyElementsPosition(class CModelObject *);
GAME_IMPORT virtual class ttl::string_const<char> Debug_GetName() const;
GAME_IMPORT void DisableAnimUpdate(unsigned int);
GAME_IMPORT class CMeshElement * GetElementEditor(unsigned int) const;
GAME_IMPORT void EnableAnimUpdate(unsigned int);
GAME_IMPORT void ExecuteAnimActions(int, int, struct TAnimId, void const *, unsigned int);
GAME_IMPORT void ExtractAllFacesEditor(class ttl::vectorm<98, class vec3, class ttl::vector_allocators::heap_allocator<class vec3>, 0> &, class ttl::vectorm<98, int, class ttl::vector_allocators::heap_allocator<int>, 2> &, class ttl::vectorm<98, int, class ttl::vector_allocators::heap_allocator<int>, 2> &, class ttl::vectorm<98, int, class ttl::vector_allocators::heap_allocator<int>, 2> &, enum ECollTree::TYPE) const;
GAME_IMPORT void ExtractAllPrimitivesEditor(class ttl::vectorm<98, struct ICollTreePrimitiveGeom const *, class ttl::vector_allocators::heap_allocator<struct ICollTreePrimitiveGeom const *>, 1> &, class ttl::vectorm<98, int, class ttl::vector_allocators::heap_allocator<int>, 2> &, enum ECollTree::TYPE) const;
GAME_IMPORT int FindElement(unsigned int);
GAME_IMPORT int FindElement(char const *);
GAME_IMPORT virtual int FindElementAnim(char const *);
GAME_IMPORT int FindElementByLowercaseName(char const *);
GAME_IMPORT int FindElementEditor(char const *);
GAME_IMPORT int FindElementOrBoneElement(char const *);
GAME_IMPORT class IMaterial * FindMaterial(class ttl::string_base<char> const &) const;
GAME_IMPORT class CMeshElement * FindMeshElement(char const *);
GAME_IMPORT class CMeshElement * FindMeshElementEditor(char const *);
GAME_IMPORT void ForceUpdateAnimations();
GAME_IMPORT virtual class mtx34 * GetAnimLocalMatricesConteiner();
GAME_IMPORT virtual int GetAnimLod(unsigned int) const;
GAME_IMPORT virtual int GetAnimLod() const;
GAME_IMPORT class vec3 GetBoneDirVector(enum EBones::TYPE);
GAME_IMPORT enum EBones::TYPE GetBoneIDFromMeshElem(int);
GAME_IMPORT class vec3 GetBoneJointPos(enum EBones::TYPE);
GAME_IMPORT class vec3 GetBonePerpVector(enum EBones::TYPE);
GAME_IMPORT char const * GetCharacterPreset(unsigned int) const;
GAME_IMPORT int GetChildrenNumElementsEditor(unsigned int) const;
GAME_IMPORT static enum ECollTree::TYPE GetDebugRenderGeometryHullType();
GAME_IMPORT union LodDissolves::SState GetDissolveState() const;
GAME_IMPORT char const * GetElementName(unsigned int) const;
GAME_IMPORT class extents GetElementReferenceExtents(int);
GAME_IMPORT enum EntityID GetElementTypeEditor(unsigned int) const;
GAME_IMPORT class CMeshElement * GetElementsEditor();
GAME_IMPORT class CMesh const * GetEmbeddedMesh() const;
GAME_IMPORT char GetForcedAnimLod() const;
GAME_IMPORT class CHierarchyElement & HElement(unsigned int);
GAME_IMPORT class CHierarchyElement * GetHElementsEditor();
GAME_IMPORT void GetInvWorldMatrixEditor(unsigned int, class mtx34 &);
GAME_IMPORT class mtx34 const & GetLocalMatrixEditor(unsigned int);
GAME_IMPORT float GetLodDissolveStep() const;
GAME_IMPORT bool GetMOFlag(unsigned char) const;
GAME_IMPORT class IMaterial * GetMaterial(unsigned int) const;
GAME_IMPORT class IMaterial * GetMaterialEditor(unsigned int) const;
GAME_IMPORT void GetMaterialSlotNamesEditor(unsigned int, char const * &, char const * &) const;
GAME_IMPORT void GetMaterialsEditor(class ttl::vector<class IMaterial *, class ttl::vector_allocators::heap_allocator<class IMaterial *>, 1> *, enum CModelObject::EMaterialsList) const;
GAME_IMPORT void GetMaterialsEditor(class CMeshElement const *, class ttl::set<class IMaterial *, struct ttl::less<class IMaterial *>, class ttl::allocator> &) const;
GAME_IMPORT class vec4 const & GetMeshAttribute(unsigned int) const;
GAME_IMPORT class mtx34 const & GetMeshAttributeMtx(unsigned int) const;
GAME_IMPORT unsigned int GetMeshAttributesCount() const;
GAME_IMPORT class vec4 const & GetMeshColor(unsigned int) const;
GAME_IMPORT void GetMeshElementsMatrices(class ttl::vector<class mtx34, class ttl::vector_allocators::heap_allocator<class mtx34>, 0> &) const;
GAME_IMPORT unsigned int GetMeshElementsMatricesCount() const;
GAME_IMPORT void GetMeshElementsState(unsigned char *, unsigned int const *, unsigned int);
GAME_IMPORT unsigned int GetMeshElementsStateSize(unsigned int);
GAME_IMPORT class IMeshFile const * GetMeshFileEditor() const;
GAME_IMPORT unsigned int GetMeshFlagsEditor(unsigned int) const;
GAME_IMPORT unsigned int GetMeshFlagsAll() const;
GAME_IMPORT char const * GetMeshName() const;
GAME_IMPORT class ttl::string_const<char> GetMeshNameConst() const;
GAME_IMPORT class CTexture * GetMeshTexture(unsigned int) const;
GAME_IMPORT __int64 GetMustHaveTags() const;
GAME_IMPORT __int64 GetMustNotHaveTags() const;
GAME_IMPORT static class CRTTI * GetSTTI();
GAME_IMPORT int GetNumElementsEditor() const;
GAME_IMPORT unsigned int GetNumFaces(enum ECollTree::TYPE) const;
GAME_IMPORT unsigned int GetNumFacesEditor(enum ECollTree::TYPE) const;
GAME_IMPORT unsigned int GetNumMaterialSlotsEditor() const;
GAME_IMPORT unsigned int GetNumPrimitives(enum ECollTree::TYPE) const;
GAME_IMPORT unsigned int GetNumPrimitivesEditor(enum ECollTree::TYPE) const;
GAME_IMPORT unsigned int GetNumSurfaceParams() const;
GAME_IMPORT unsigned int GetNumSurfaceParamsEditor() const;
GAME_IMPORT unsigned int GetNumVertices(enum ECollTree::TYPE) const;
GAME_IMPORT unsigned int GetNumVerticesEditor(enum ECollTree::TYPE) const;
GAME_IMPORT struct CModelObject::ObservedData GetObservedData();
GAME_IMPORT char const * GetPathNameEditor() const;
GAME_IMPORT int GetSeed() const;
GAME_IMPORT char const * GetSkin() const;
GAME_IMPORT char const * GetSkinName() const;
GAME_IMPORT class ttl::string_const<char> GetSkinNameConst() const;
GAME_IMPORT struct SSurfParams * GetSurfaceParams() const;
GAME_IMPORT struct SSurfParams * GetSurfaceParamsEditor() const;
GAME_IMPORT unsigned char GetTraceCollisionType() const;
GAME_IMPORT bool GetValidSkinsEditor(class ttl::vector<class ttl::string_base<char>, class ttl::vector_allocators::heap_allocator<class ttl::string_base<char>>, 1> &, class ttl::vector<class ttl::string_base<char>, class ttl::vector_allocators::heap_allocator<class ttl::string_base<char>>, 1> &) const;
GAME_IMPORT class mtx34 const & GetWorldMatrixEditor(unsigned int);
GAME_IMPORT bool HasMeshElement(class CMeshElement const *) const;
GAME_IMPORT bool HideElement(unsigned int);
GAME_IMPORT void HideInHierarchy(class CHierarchyElement *, bool, bool);
GAME_IMPORT bool InitMesh(char const *, int);
GAME_IMPORT void InitializeMesh();
GAME_IMPORT virtual bool IsAnimUpdateEnabled(unsigned int) const;
GAME_IMPORT virtual bool IsAnimatorValid(class Anim::IPoseAnimator const *) const;
GAME_IMPORT bool IsBiped() const;
GAME_IMPORT void MT_GetAllWeights(class ttl::vector<float, class ttl::vector_allocators::heap_allocator<float>, 2> &);
GAME_IMPORT unsigned int MT_GetCount() const;
GAME_IMPORT void MT_ResetWeights();
GAME_IMPORT void MT_SetAllWeights(class ttl::vector<float, class ttl::vector_allocators::heap_allocator<float>, 2> const &);
GAME_IMPORT float MT_WeightGet(unsigned int);
GAME_IMPORT float MT_WeightGetEditor(unsigned int);
GAME_IMPORT void MT_WeightSet(unsigned int, float);
GAME_IMPORT void MT_WeightSetEditor(unsigned int, float);
GAME_IMPORT void MoveElementBoxSide(int, int, float);
GAME_IMPORT void MoveElementBoxSides(int, float, float, float, float, float, float);
GAME_IMPORT virtual void OnAnimationPlayed();
GAME_IMPORT unsigned int PlayAudioEvent(class ttl::string_base<char> const &, struct Audio::SAudioEventExtraData const *, class vec3 const &, class vec3 const &);
GAME_IMPORT unsigned int PlayAudioEvent(unsigned int, struct Audio::SAudioEventExtraDataID const *, class vec3 const &, class vec3 const &);
GAME_IMPORT void PostUpdateAnim();
GAME_IMPORT void PreUpdateAnim();
GAME_IMPORT bool RaytraceEditor(class mtx34 const &, class mtx34 const &, class vec3 const &, class vec3 &, struct SExtCollInfo *);
GAME_IMPORT bool RaytraceElementExtents(class vec3 const &, class vec3 &, struct SExtCollInfo *, bool);
GAME_IMPORT void RecalculateBoundVolume();
GAME_IMPORT static void RegisterSTTI(class CRTTI *);
GAME_IMPORT void RenderElementBoxes();
GAME_IMPORT void ReplaceMaterial(class IMeshFile const *, char const *, char const *, bool);
GAME_IMPORT void RestoreAnimationUpdateAbility(bool const &, class ttl::vector<bool, class ttl::vector_allocators::heap_allocator<bool>, 8> const &);
GAME_IMPORT virtual void SendAnimEvents(class ttl::span<struct AnimEventInfo const, 4294967295>);
GAME_IMPORT void SetAudioEventSwitch(unsigned int, class ttl::string_base<char> const &, class ttl::string_base<char> const &);
GAME_IMPORT bool SetCharacter(char const *, char const *);
GAME_IMPORT bool SetCharacterEditor(char const *, char const *);
GAME_IMPORT void SetDissolveState(union LodDissolves::SState, bool);
GAME_IMPORT void SetDontApplyAnim(bool);
GAME_IMPORT void SetElementExtents(int, class vec3 const &, class vec3 const &);
GAME_IMPORT void SetForcedAnimLod(char);
GAME_IMPORT void SetForcedLOD(int);
GAME_IMPORT void SetInitializeMesh(bool);
GAME_IMPORT void SetLodDissolveStep(float);
GAME_IMPORT void SetMOFlag(unsigned char, bool);
GAME_IMPORT void SetMeshAttribute(unsigned int, class vec4 const &);
GAME_IMPORT void SetMeshAttributeMtx(unsigned int, class mtx34 const &);
GAME_IMPORT void SetMeshColor(unsigned int, class vec4 const &);
GAME_IMPORT bool SetMeshElementsMatrices(class ttl::vector<class mtx34, class ttl::vector_allocators::heap_allocator<class mtx34>, 0> const &);
GAME_IMPORT void SetMeshElementsState(unsigned char const *, unsigned int const *, unsigned int, bool, bool);
GAME_IMPORT void SetMeshFlagsEditor(unsigned int);
GAME_IMPORT void SetMeshFlagsAll(unsigned int);
GAME_IMPORT void SetMeshTexture(unsigned int, class CTexture *);
GAME_IMPORT void SetMustHaveTags(__int64);
GAME_IMPORT void SetMustNotHaveTags(__int64);
GAME_IMPORT void SetRenderElementBoxes(bool, int, int);
GAME_IMPORT void SetSeed(int);
GAME_IMPORT bool SetSkin(char const *, __int64, __int64, unsigned int, bool, bool);
GAME_IMPORT bool SetSkinEditor(char const *, __int64, __int64, unsigned int);
GAME_IMPORT void SetSkinName(class ttl::string_const<char>);
GAME_IMPORT void SetTraceCollisionType(unsigned char);
GAME_IMPORT bool ShouldApplyAnim() const;
GAME_IMPORT bool ShouldInitializeMesh() const;
GAME_IMPORT bool SkinExists(class ttl::string_base<char> const &) const;
GAME_IMPORT void StopAnimAction(int, struct TAnimId, void const *, float);
GAME_IMPORT class IModelObject const * ToIModelObject() const;
GAME_IMPORT bool UnhideElement(unsigned int);
GAME_IMPORT void UnlockAnimationUpdateAbility(bool &, class ttl::vector<bool, class ttl::vector_allocators::heap_allocator<bool>, 8> &);
private:
GAME_IMPORT static class CRTTI * __INTERNAL_crtti_factory();
GAME_IMPORT static bool __INTERNAL_crtti_fields_initialized_function();
GAME_IMPORT static class rtti::Type & __INTERNAL_type_factory();
public:
GAME_IMPORT static class rtti::Type & typeinfo();
};

View File

@ -0,0 +1,423 @@
#pragma once
#include <EGSDK\Imports.h>
class CModelObject {
public:
VIRTUAL_CALL(0, int64_t, sub_7E9B40, (int64_t a1, unsigned __int8 a2), a1, a2);
VIRTUAL_CALL(1, CModelObject*, sub_663A40, (char a1), a1);
GAME_IMPORT virtual CRTTI const* GetRTTI() const;
GAME_IMPORT virtual CRTTI const* GetEngineRTTI() const;
GAME_IMPORT MED::SModelOutfitGroup const* unassigned() const;
VIRTUAL_CALL(5, MED::SModelOutfitGroup const*, _unassigned1, ());
protected:
GAME_IMPORT gui::CPackage* ToCPackage() const;
public:
VIRTUAL_CALL(7, gui::CPackage*, _ToCPackage1, ());
VIRTUAL_CALL(8, int64_t, RunUnitTests, ());
VIRTUAL_CALL(9, int64_t, _RunUnitTests1, ());
GAME_IMPORT virtual void GetPrivateObjects(ttl::list<IGSObject*, ttl::allocator>*, bool, bool);
GAME_IMPORT virtual void DestroyPrivateObjects();
VIRTUAL_CALL(12, MED::SModelOutfitGroup const*, _unassigned2, ());
GAME_IMPORT virtual void GetAllObjects(ttl::vector<IGSObject*, ttl::vector_allocators::heap_allocator<IGSObject*>, 1>&, bool);
GAME_IMPORT virtual void GetAllObjects(ttl::set<CRTTIObject*, ttl::less<CRTTIObject*>, ttl::allocator>&, ttl::set<CRTTIObject*, ttl::less<CRTTIObject*>, ttl::allocator>&, bool, std::optional<ttl::function_ref<bool ( CRTTIObject* )>>);
GAME_IMPORT bool updateRttiParams();
VIRTUAL_CALL(16, void, SetPlatform, ());
GAME_IMPORT virtual char const* GetString(char const*) const;
VIRTUAL_CALL(18, int64_t, sub_17D7D0, ());
VIRTUAL_CALL(19, char, sub_15DDB0, ());
VIRTUAL_CALL(20, int64_t, sub_80A6F0, ());
VIRTUAL_CALL(21, MED::SModelOutfitGroup const*, _unassigned3, ());
VIRTUAL_CALL(22, void, _SetPlatform1, ());
GAME_IMPORT virtual Uid const& GetUid() const;
VIRTUAL_CALL(24, bool, _updateRttiParams1, ());
VIRTUAL_CALL(25, bool, _updateRttiParams2, ());
VIRTUAL_CALL(26, bool, _updateRttiParams3, ());
VIRTUAL_CALL(27, bool, _updateRttiParams4, ());
VIRTUAL_CALL(28, bool, _updateRttiParams5, ());
VIRTUAL_CALL(29, bool, _updateRttiParams6, ());
VIRTUAL_CALL(30, bool, _updateRttiParams7, ());
VIRTUAL_CALL(31, bool, _updateRttiParams8, ());
VIRTUAL_CALL(32, bool, _updateRttiParams9, ());
GAME_IMPORT virtual void CallVoidMethod(char const*, ...);
GAME_IMPORT virtual cbs::msg::IMessagePipeSet const& GetMessagePipeSet() const;
VIRTUAL_CALL(35, int64_t, _RunUnitTests2, ());
VIRTUAL_CALL(36, MED::SModelOutfitGroup const*, _unassigned4, ());
VIRTUAL_CALL(37, MED::SModelOutfitGroup const*, _unassigned5, ());
VIRTUAL_CALL(38, MED::SModelOutfitGroup const*, _unassigned6, ());
VIRTUAL_CALL(39, MED::SModelOutfitGroup const*, _unassigned7, ());
GAME_IMPORT virtual cbs::prop::IPropertySet const& GetPropertySet() const;
VIRTUAL_CALL(41, void, _SetPlatform2, ());
VIRTUAL_CALL(42, int64_t, _RunUnitTests3, ());
GAME_IMPORT virtual bool LoadField(CRTTIField const*, unsigned char, fs::ifile&, IPtrResolver&, bool);
GAME_IMPORT virtual void LoadFields(dom::IReader::Object const&, IPtrResolver&, bool, bool (* )(char const*, CRTTIObject* ));
GAME_IMPORT virtual void LoadFields(ITextDeserializer&, IPtrResolver&, bool);
GAME_IMPORT virtual void LoadFields(fs::ifile&, IPtrResolver&, bool);
GAME_IMPORT virtual void SaveFields(dom::IWriter&, ERTTIFlags, bool) const;
GAME_IMPORT virtual int ToBufferReplicated(char*, int);
GAME_IMPORT virtual int FromBufferReplicated(char*, int);
GAME_IMPORT virtual int GetBufferReplicatedDataSize();
VIRTUAL_CALL(51, void, _SetPlatform3, ());
VIRTUAL_CALL(52, char, sub_1816B0, (const CRTTIField* a1), a1);
GAME_IMPORT virtual bool CopyFields(CRTTIObject const*, bool);
GAME_IMPORT virtual bool CopyPointerFields(CRTTIObject const*);
GAME_IMPORT virtual bool ExchangePointerFields(CRTTIObject*);
VIRTUAL_CALL(56, int64_t, sub_7F8D70, (int a1), a1);
VIRTUAL_CALL(57, int64_t, sub_7F8F70, (int64_t a1), a1);
VIRTUAL_CALL(58, int64_t, _RunUnitTests4, ());
GAME_IMPORT virtual SRttiNetPointer GetNetPointer() const;
VIRTUAL_CALL(60, int64_t, _RunUnitTests5, ());
GAME_IMPORT virtual ttl::string_base<char> GetDebugDescription() const;
GAME_IMPORT virtual void CalcMemoryUsage(SObjectMemoryUsage&) const;
VIRTUAL_CALL(63, int64_t, sub_7E92C0, ());
VIRTUAL_CALL(64, int64_t, sub_8092F0, ());
VIRTUAL_CALL(65, bool, _updateRttiParams10, ());
GAME_IMPORT static bool ValidateVec4(IGSObject const*, vec4 const&);
VIRTUAL_CALL(67, int64_t, sub_806BC0, ());
GAME_IMPORT virtual ttl::string_base<char> ValueToString(CRTTIObject* const&) const;
VIRTUAL_CALL(69, char, sub_15DD80, ());
VIRTUAL_CALL(70, void, sub_17D770, (CRTTIField* a1, bool a2), a1, a2);
VIRTUAL_CALL(71, bool, _updateRttiParams11, ());
GAME_IMPORT virtual bool OnFieldChanged2(CRTTIField const*, bool);
VIRTUAL_CALL(73, int64_t, sub_173040, ());
GAME_IMPORT char const* GetMethodName() const;
VIRTUAL_CALL(75, uint64_t*, sub_8343A0, (int64_t a1), a1);
VIRTUAL_CALL(76, bool, _updateRttiParams12, ());
VIRTUAL_CALL(77, char, sub_81DA90, (int64_t a1), a1);
VIRTUAL_CALL(78, bool, _updateRttiParams13, ());
VIRTUAL_CALL(79, bool, sub_81DA10, ());
VIRTUAL_CALL(80, int64_t, _RunUnitTests6, ());
VIRTUAL_CALL(81, int64_t, _RunUnitTests7, ());
VIRTUAL_CALL(82, void, _SetPlatform4, ());
GAME_IMPORT virtual void Query(IBaseValidator&, ttl::vector<CRTTIObject*, ttl::vector_allocators::heap_allocator<CRTTIObject*>, 1>&) const;
VIRTUAL_CALL(84, bool, sub_15DE90, ());
GAME_IMPORT virtual bool SelectObjectEditor(bool);
GAME_IMPORT virtual bool HideObjectEditor(bool);
VIRTUAL_CALL(87, char, sub_15E050, ());
GAME_IMPORT virtual void OnDeleteObjectEditor();
GAME_IMPORT virtual void CopyObjectEditor(CGameObject*);
GAME_IMPORT virtual void EnableVisualizationEditor(bool);
GAME_IMPORT virtual void Load(fs::ifile&, int);
GAME_IMPORT virtual bool LoadChunk(fs::ifile&, unsigned short, int);
VIRTUAL_CALL(93, uint64_t*, sub_131260, (int64_t* a1, int a2, int a3, int64_t a4, CRTTI* a5), a1, a2, a3, a4, a5);
protected:
GAME_IMPORT virtual void SetGameScriptObject(IGSObject*);
public:
VIRTUAL_CALL(95, int64_t, sub_7F0310, ());
GAME_IMPORT virtual void ConstructObject(CGSObject*);
VIRTUAL_CALL(97, int64_t, sub_822BC0, ());
GAME_IMPORT virtual void InitializeObject(CGSObject*);
VIRTUAL_CALL(99, int64_t, sub_80C420, (int64_t a1), a1);
GAME_IMPORT virtual void DestroyObject();
VIRTUAL_CALL(101, int64_t, sub_7E9230, (int64_t a1), a1);
VIRTUAL_CALL(102, int64_t, sub_7E8D70, (int64_t a1), a1);
VIRTUAL_CALL(103, int64_t, sub_7E91C0, ());
VIRTUAL_CALL(104, int64_t, sub_7E8F20, ());
VIRTUAL_CALL(105, int64_t, sub_7F89A0, ());
VIRTUAL_CALL(106, char, sub_7F97C0, (int64_t a1, uint64_t* a2, _DWORD* a3), a1, a2, a3);
VIRTUAL_CALL(107, char, sub_8130B0, (int64_t a1), a1);
VIRTUAL_CALL(108, char, sub_813020, (uint64_t* * a1), a1);
VIRTUAL_CALL(109, uint64_t*, sub_806400, (uint64_t* a1), a1);
VIRTUAL_CALL(110, int64_t, sub_831710, (int64_t a1), a1);
VIRTUAL_CALL(111, int64_t, sub_8316D0, (int64_t a1), a1);
VIRTUAL_CALL(112, void, sub_8261B0, (int64_t a1), a1);
VIRTUAL_CALL(113, void, sub_8260E0, (_BYTE* a1), a1);
VIRTUAL_CALL(114, uint32_t64_t, sub_834570, (char a1), a1);
VIRTUAL_CALL(115, int64_t, sub_8341B0, (int64_t a1), a1);
GAME_IMPORT virtual void SetLevel(CLevel*, bool);
VIRTUAL_CALL(117, uint64_t*, sub_800900, (uint64_t* a1), a1);
VIRTUAL_CALL(118, uint64_t*, sub_802EE0, (uint64_t* a1), a1);
VIRTUAL_CALL(119, int64_t, sub_834400, ());
VIRTUAL_CALL(120, void, sub_8262B0, (_BYTE* a1), a1);
VIRTUAL_CALL(121, int64_t, sub_831870, (int64_t a1), a1);
VIRTUAL_CALL(122, int64_t, sub_7E92E0, ());
VIRTUAL_CALL(123, int64_t, sub_7E93C0, ());
VIRTUAL_CALL(124, int64_t, sub_7E9390, ());
VIRTUAL_CALL(125, int64_t, sub_7E93F0, ());
VIRTUAL_CALL(126, int64_t, sub_7E9340, ());
VIRTUAL_CALL(127, int64_t, sub_7E93E0, ());
VIRTUAL_CALL(128, int64_t, sub_7E9330, ());
VIRTUAL_CALL(129, int64_t, sub_7E93D0, ());
VIRTUAL_CALL(130, int64_t, sub_7E9320, ());
VIRTUAL_CALL(131, int64_t, sub_7E92F0, ());
VIRTUAL_CALL(132, int64_t, sub_7E92D0, ());
VIRTUAL_CALL(133, int64_t, sub_7E93A0, ());
VIRTUAL_CALL(134, int64_t, sub_7E9400, ());
VIRTUAL_CALL(135, int64_t, sub_7E9410, ());
VIRTUAL_CALL(136, int64_t, sub_7E9420, ());
VIRTUAL_CALL(137, int64_t, sub_7E9350, ());
VIRTUAL_CALL(138, int64_t, sub_7E9360, ());
VIRTUAL_CALL(139, int64_t, sub_7E9380, ());
VIRTUAL_CALL(140, int64_t, sub_7E9370, ());
VIRTUAL_CALL(141, int64_t, sub_7E9300, ());
VIRTUAL_CALL(142, int64_t, sub_7E9310, ());
VIRTUAL_CALL(143, int64_t, sub_7E93B0, ());
VIRTUAL_CALL(144, bool, sub_811980, ());
VIRTUAL_CALL(145, uint64_t*, sub_7FE950, (uint64_t* a1), a1);
GAME_IMPORT virtual void SetActiveOnLevel(bool);
GAME_IMPORT virtual void EnableRendering(bool);
GAME_IMPORT virtual void EnableRenderingScene(bool);
GAME_IMPORT virtual void EnableRenderingShadows(bool);
GAME_IMPORT virtual void EnableRenderingRayTracing(bool);
GAME_IMPORT virtual void EnableExtentsRendering(bool);
GAME_IMPORT virtual void EnableExtentOnlyRendering(bool);
GAME_IMPORT static COFlags::TYPE GetDefaultCOFlags();
GAME_IMPORT virtual void SetLodCoarseObjectHierarchy(bool);
GAME_IMPORT virtual void OnObjectMoved(unsigned char, FOnObjectMovedPropagate::FLAGS);
GAME_IMPORT virtual void OnChildMoved(unsigned char);
GAME_IMPORT virtual void GetChildren(ttl::vector<CControlObject*, ttl::vector_allocators::heap_allocator<CControlObject*>, 1>&);
GAME_IMPORT virtual void AttachChild(CControlObject*, bool);
GAME_IMPORT virtual void DetachChild(CControlObject*, bool);
GAME_IMPORT virtual void DetachFromParent(bool);
protected:
GAME_IMPORT virtual void OnNewParent(CControlObject*);
public:
VIRTUAL_CALL(162, void, _SetPlatform5, ());
VIRTUAL_CALL(163, void, _SetPlatform6, ());
GAME_IMPORT virtual void PreRenderObject(SPreRender*);
GAME_IMPORT virtual void PreRenderShadowMap(SPreRender*);
GAME_IMPORT virtual void OnObjectPut();
GAME_IMPORT virtual bool Raytrace(vec3 const&, vec3&, SExtCollInfo*);
GAME_IMPORT virtual bool Raytest(vec3 const&, vec3 const&, SExtCollInfo const*);
GAME_IMPORT virtual void ExtractFaces(extract_faces_params const&, ttl::vector<coll_tri, ttl::vector_allocators::heap_allocator<coll_tri>, 0>*, ttl::vector<coll_primitive, ttl::vector_allocators::heap_allocator<coll_primitive>, 0>*, extract_faces_info*);
GAME_IMPORT virtual cbs::CEntity* GetEntity();
GAME_IMPORT virtual void SetWorldXformEditor(mtx34 const&);
GAME_IMPORT virtual void SetLocalXformEditor(mtx34 const&);
GAME_IMPORT virtual void SetWorldPosEditor(vec3 const&);
GAME_IMPORT virtual void SetLocalPosEditor(vec3 const&);
GAME_IMPORT virtual void SetWorldDirEditor(vec3 const&);
GAME_IMPORT virtual mtx34 const& GetLocalXformEditor();
GAME_IMPORT virtual mtx34 const& GetWorldXformEditor();
GAME_IMPORT virtual void GetInvWorldXformEditor(mtx34&);
GAME_IMPORT virtual vec3 const GetWorldPosEditor();
GAME_IMPORT virtual vec3 const GetLocalPosEditor();
GAME_IMPORT virtual vec3 const GetWorldDirEditor();
GAME_IMPORT virtual vec3 const GetLocalScaleEditor();
GAME_IMPORT virtual void Physics_Clutch(vec3 const&);
GAME_IMPORT virtual void Physics_Unclutch();
GAME_IMPORT virtual void Physics_SynchroClutch(vec3 const&);
GAME_IMPORT virtual ttl::string_base<char> Physics_GetClutchInfo();
GAME_IMPORT virtual void SetCollType(int);
GAME_IMPORT virtual extents const& GetExtents();
GAME_IMPORT virtual void SetExtents(extents const&);
GAME_IMPORT virtual void RecalcExtents();
GAME_IMPORT virtual extents const& GetExtentsInWorldEditor();
VIRTUAL_CALL(192, void, _SetPlatform7, ());
GAME_IMPORT virtual void SetMeshName(ttl::string_const<char>);
GAME_IMPORT virtual void LoadMesh(ttl::string_const<char>);
GAME_IMPORT virtual void LoadMesh(bool);
GAME_IMPORT virtual void ResetBonesToReferenceFrame(uint32_t, uint32_t const*);
GAME_IMPORT virtual void ResetBonesToReferenceFrame(bool);
GAME_IMPORT virtual void ResetBonesExtentsToReferenceFrame(uint32_t, uint32_t const*);
GAME_IMPORT virtual void ResetBonesExtentsToReferenceFrame();
GAME_IMPORT virtual void ResetBoneAndDescendantsToReferenceFrame(int);
GAME_IMPORT virtual void ResetElementsDescendantsToReferenceFrame(int);
GAME_IMPORT virtual bool IsBipedEditor() const;
GAME_IMPORT virtual void AdjustExtentsToAllElements(bool, bool);
GAME_IMPORT virtual void AnimUpdate(uint32_t);
GAME_IMPORT virtual void AnimUpdate(CMeshElement*);
GAME_IMPORT virtual bool AnimInit(char const*, char const*);
GAME_IMPORT virtual void AnimShutdown();
GAME_IMPORT virtual bool AnimReInit(ttl::string_base<char> const&);
GAME_IMPORT virtual AnimSeq* AnimSeqDataWrite(TAnimId);
GAME_IMPORT virtual AnimSeq* AnimSeqDataWrite(char const*);
VIRTUAL_CALL(211, AnimSeq*, _AnimSeqDataWrite1, (TAnimId a1), a1);
VIRTUAL_CALL(212, AnimSeq*, _AnimSeqDataWrite1, (char const* a1), a1);
GAME_IMPORT virtual void AnimGetAnimNames(ttl::map<ttl::string_base<char>, TAnimId, ttl::less<ttl::string_base<char>>, ttl::allocator>&) const;
GAME_IMPORT virtual void AnimGetAnimNames(ttl::vector<ttl::string_base<char>, ttl::vector_allocators::heap_allocator<ttl::string_base<char>>, 1>&) const;
GAME_IMPORT virtual void AnimUnregisterUpdate();
GAME_IMPORT virtual int FindBoneElement(char const*);
GAME_IMPORT virtual int GetMeshElemFromBoneID(EBones::TYPE);
GAME_IMPORT virtual void StoreElementsLayout(multielement_model_layout*);
GAME_IMPORT virtual bool RestoreElementsLayout(multielement_model_layout const*);
GAME_IMPORT virtual void StoreElementsLayoutModelSpace(multielement_model_layout*);
GAME_IMPORT virtual bool RestoreElementsLayoutModelSpace(multielement_model_layout const*);
GAME_IMPORT virtual void EnableHierarchySerialization(bool);
GAME_IMPORT virtual bool IsHierarchySerializationEnabled();
GAME_IMPORT virtual void AttachChildToMeshElement(CControlObject*, CHierarchyElement*, bool);
GAME_IMPORT virtual extents const& GetExtentsInWorld();
GAME_IMPORT virtual void EnableCollisionHullRendering(bool);
GAME_IMPORT bool RendersCollisionHull() const;
GAME_IMPORT virtual void DebugRenderElementBoxes();
GAME_IMPORT virtual aabb const& GetAABBExtents();
protected:
GAME_IMPORT CModelObject(IModelObject*);
public:
GAME_IMPORT void AdjustVBlendElementsToExtents();
GAME_IMPORT unsigned char AnimCalculateLod(CBaseCamera*);
GAME_IMPORT void AnimCalculateLod();
GAME_IMPORT ttl::string_base<char> AnimGetFileName(ttl::string_base<char> const&);
GAME_IMPORT unsigned char AnimGetLod() const;
GAME_IMPORT Anim::IPoseElement const* AnimGetModelObjectMorphPoseElement() const;
GAME_IMPORT Anim::IPoseElement const* AnimGetModelObjectPoseElement() const;
GAME_IMPORT float AnimGetTimeDelta() const;
GAME_IMPORT bool AnimLoadState(CSGChunk*);
GAME_IMPORT void AnimRegisterUpdate();
GAME_IMPORT bool AnimSaveState(CSGChunk*);
GAME_IMPORT void AnimSetLod(unsigned char);
GAME_IMPORT void AnimSetTimeDelta(float);
GAME_IMPORT virtual void AnimUpdate_PostUpdateAnimPhase2_msync();
GAME_IMPORT virtual void AnimUpdate_PreUpdateAnim();
GAME_IMPORT virtual void AnimUpdate_UpdateHierarchyLegacy();
GAME_IMPORT uint32_t AttachAudioEvent(int, ttl::string_base<char> const&, Audio::SAudioEventExtraData const*, vec3 const&);
GAME_IMPORT static void BlockAnimLoad(bool);
GAME_IMPORT bool CharacterPresetExists(ttl::string_base<char> const&) const;
GAME_IMPORT bool CheckSurfaceFlagsEditor(uint32_t) const;
GAME_IMPORT static void CleanMessageBufferContent();
GAME_IMPORT void ClearMeshFlagsEditor(uint32_t);
GAME_IMPORT void CopyElementsPosition(CModelObject*);
GAME_IMPORT virtual ttl::string_const<char> Debug_GetName() const;
GAME_IMPORT void DisableAnimUpdate(uint32_t);
GAME_IMPORT CMeshElement* GetElementEditor(uint32_t) const;
GAME_IMPORT void EnableAnimUpdate(uint32_t);
GAME_IMPORT void ExecuteAnimActions(int, int, TAnimId, void const*, uint32_t);
GAME_IMPORT void ExtractAllFacesEditor(ttl::vectorm<98, vec3, ttl::vector_allocators::heap_allocator<vec3>, 0>&, ttl::vectorm<98, int, ttl::vector_allocators::heap_allocator<int>, 2>&, ttl::vectorm<98, int, ttl::vector_allocators::heap_allocator<int>, 2>&, ttl::vectorm<98, int, ttl::vector_allocators::heap_allocator<int>, 2>&, ECollTree::TYPE) const;
GAME_IMPORT void ExtractAllPrimitivesEditor(ttl::vectorm<98, ICollTreePrimitiveGeom const*, ttl::vector_allocators::heap_allocator<ICollTreePrimitiveGeom const*>, 1>&, ttl::vectorm<98, int, ttl::vector_allocators::heap_allocator<int>, 2>&, ECollTree::TYPE) const;
GAME_IMPORT int FindElement(uint32_t);
GAME_IMPORT int FindElement(char const*);
GAME_IMPORT virtual int FindElementAnim(char const*);
GAME_IMPORT int FindElementByLowercaseName(char const*);
GAME_IMPORT int FindElementEditor(char const*);
GAME_IMPORT int FindElementOrBoneElement(char const*);
GAME_IMPORT IMaterial* FindMaterial(ttl::string_base<char> const&) const;
GAME_IMPORT CMeshElement* FindMeshElement(char const*);
GAME_IMPORT CMeshElement* FindMeshElementEditor(char const*);
GAME_IMPORT void ForceUpdateAnimations();
GAME_IMPORT virtual mtx34* GetAnimLocalMatricesConteiner();
GAME_IMPORT virtual int GetAnimLod(uint32_t) const;
GAME_IMPORT virtual int GetAnimLod() const;
GAME_IMPORT vec3 GetBoneDirVector(EBones::TYPE);
GAME_IMPORT EBones::TYPE GetBoneIDFromMeshElem(int);
GAME_IMPORT vec3 GetBoneJointPos(EBones::TYPE);
GAME_IMPORT vec3 GetBonePerpVector(EBones::TYPE);
GAME_IMPORT char const* GetCharacterPreset(uint32_t) const;
GAME_IMPORT int GetChildrenNumElementsEditor(uint32_t) const;
GAME_IMPORT static ECollTree::TYPE GetDebugRenderGeometryHullType();
GAME_IMPORT LodDissolves::SState GetDissolveState() const;
GAME_IMPORT char const* GetElementName(uint32_t) const;
GAME_IMPORT extents GetElementReferenceExtents(int);
GAME_IMPORT EntityID GetElementTypeEditor(uint32_t) const;
GAME_IMPORT CMeshElement* GetElementsEditor();
GAME_IMPORT CMesh const* GetEmbeddedMesh() const;
GAME_IMPORT char GetForcedAnimLod() const;
GAME_IMPORT CHierarchyElement& HElement(uint32_t);
GAME_IMPORT CHierarchyElement* GetHElementsEditor();
GAME_IMPORT void GetInvWorldMatrixEditor(uint32_t, mtx34&);
GAME_IMPORT mtx34 const& GetLocalMatrixEditor(uint32_t);
GAME_IMPORT float GetLodDissolveStep() const;
GAME_IMPORT bool GetMOFlag(unsigned char) const;
GAME_IMPORT IMaterial* GetMaterial(uint32_t) const;
GAME_IMPORT IMaterial* GetMaterialEditor(uint32_t) const;
GAME_IMPORT void GetMaterialSlotNamesEditor(uint32_t, char const* &, char const* &) const;
GAME_IMPORT void GetMaterialsEditor(ttl::vector<IMaterial*, ttl::vector_allocators::heap_allocator<IMaterial*>, 1>*, CModelObject::EMaterialsList) const;
GAME_IMPORT void GetMaterialsEditor(CMeshElement const*, ttl::set<IMaterial*, ttl::less<IMaterial*>, ttl::allocator>&) const;
GAME_IMPORT vec4 const& GetMeshAttribute(uint32_t) const;
GAME_IMPORT mtx34 const& GetMeshAttributeMtx(uint32_t) const;
GAME_IMPORT uint32_t GetMeshAttributesCount() const;
GAME_IMPORT vec4 const& GetMeshColor(uint32_t) const;
GAME_IMPORT void GetMeshElementsMatrices(ttl::vector<mtx34, ttl::vector_allocators::heap_allocator<mtx34>, 0>&) const;
GAME_IMPORT uint32_t GetMeshElementsMatricesCount() const;
GAME_IMPORT void GetMeshElementsState(unsigned char*, uint32_t const*, uint32_t);
GAME_IMPORT uint32_t GetMeshElementsStateSize(uint32_t);
GAME_IMPORT IMeshFile const* GetMeshFileEditor() const;
GAME_IMPORT uint32_t GetMeshFlagsEditor(uint32_t) const;
GAME_IMPORT uint32_t GetMeshFlagsAll() const;
GAME_IMPORT char const* GetMeshName() const;
GAME_IMPORT ttl::string_const<char> GetMeshNameConst() const;
GAME_IMPORT CTexture* GetMeshTexture(uint32_t) const;
GAME_IMPORT int64_t GetMustHaveTags() const;
GAME_IMPORT int64_t GetMustNotHaveTags() const;
GAME_IMPORT static CRTTI* GetSTTI();
GAME_IMPORT int GetNumElementsEditor() const;
GAME_IMPORT uint32_t GetNumFaces(ECollTree::TYPE) const;
GAME_IMPORT uint32_t GetNumFacesEditor(ECollTree::TYPE) const;
GAME_IMPORT uint32_t GetNumMaterialSlotsEditor() const;
GAME_IMPORT uint32_t GetNumPrimitives(ECollTree::TYPE) const;
GAME_IMPORT uint32_t GetNumPrimitivesEditor(ECollTree::TYPE) const;
GAME_IMPORT uint32_t GetNumSurfaceParams() const;
GAME_IMPORT uint32_t GetNumSurfaceParamsEditor() const;
GAME_IMPORT uint32_t GetNumVertices(ECollTree::TYPE) const;
GAME_IMPORT uint32_t GetNumVerticesEditor(ECollTree::TYPE) const;
GAME_IMPORT CModelObject::ObservedData GetObservedData();
GAME_IMPORT char const* GetPathNameEditor() const;
GAME_IMPORT int GetSeed() const;
GAME_IMPORT char const* GetSkin() const;
GAME_IMPORT char const* GetSkinName() const;
GAME_IMPORT ttl::string_const<char> GetSkinNameConst() const;
GAME_IMPORT SSurfParams* GetSurfaceParams() const;
GAME_IMPORT SSurfParams* GetSurfaceParamsEditor() const;
GAME_IMPORT unsigned char GetTraceCollisionType() const;
GAME_IMPORT bool GetValidSkinsEditor(ttl::vector<ttl::string_base<char>, ttl::vector_allocators::heap_allocator<ttl::string_base<char>>, 1>&, ttl::vector<ttl::string_base<char>, ttl::vector_allocators::heap_allocator<ttl::string_base<char>>, 1>&) const;
GAME_IMPORT mtx34 const& GetWorldMatrixEditor(uint32_t);
GAME_IMPORT bool HasMeshElement(CMeshElement const*) const;
GAME_IMPORT bool HideElement(uint32_t);
GAME_IMPORT void HideInHierarchy(CHierarchyElement*, bool, bool);
GAME_IMPORT bool InitMesh(char const*, int);
GAME_IMPORT void InitializeMesh();
GAME_IMPORT virtual bool IsAnimUpdateEnabled(uint32_t) const;
GAME_IMPORT virtual bool IsAnimatorValid(Anim::IPoseAnimator const*) const;
GAME_IMPORT bool IsBiped() const;
GAME_IMPORT void MT_GetAllWeights(ttl::vector<float, ttl::vector_allocators::heap_allocator<float>, 2>&);
GAME_IMPORT uint32_t MT_GetCount() const;
GAME_IMPORT void MT_ResetWeights();
GAME_IMPORT void MT_SetAllWeights(ttl::vector<float, ttl::vector_allocators::heap_allocator<float>, 2> const&);
GAME_IMPORT float MT_WeightGet(uint32_t);
GAME_IMPORT float MT_WeightGetEditor(uint32_t);
GAME_IMPORT void MT_WeightSet(uint32_t, float);
GAME_IMPORT void MT_WeightSetEditor(uint32_t, float);
GAME_IMPORT void MoveElementBoxSide(int, int, float);
GAME_IMPORT void MoveElementBoxSides(int, float, float, float, float, float, float);
GAME_IMPORT virtual void OnAnimationPlayed();
GAME_IMPORT uint32_t PlayAudioEvent(ttl::string_base<char> const&, Audio::SAudioEventExtraData const*, vec3 const&, vec3 const&);
GAME_IMPORT uint32_t PlayAudioEvent(uint32_t, Audio::SAudioEventExtraDataID const*, vec3 const&, vec3 const&);
GAME_IMPORT void PostUpdateAnim();
GAME_IMPORT void PreUpdateAnim();
GAME_IMPORT bool RaytraceEditor(mtx34 const&, mtx34 const&, vec3 const&, vec3&, SExtCollInfo*);
GAME_IMPORT bool RaytraceElementExtents(vec3 const&, vec3&, SExtCollInfo*, bool);
GAME_IMPORT void RecalculateBoundVolume();
GAME_IMPORT static void RegisterSTTI(CRTTI*);
GAME_IMPORT void RenderElementBoxes();
GAME_IMPORT void ReplaceMaterial(IMeshFile const*, char const*, char const*, bool);
GAME_IMPORT void RestoreAnimationUpdateAbility(bool const&, ttl::vector<bool, ttl::vector_allocators::heap_allocator<bool>, 8> const&);
GAME_IMPORT virtual void SendAnimEvents(ttl::span<AnimEventInfo const, 4294967295>);
GAME_IMPORT void SetAudioEventSwitch(uint32_t, ttl::string_base<char> const&, ttl::string_base<char> const&);
GAME_IMPORT bool SetCharacter(char const*, char const*);
GAME_IMPORT bool SetCharacterEditor(char const*, char const*);
GAME_IMPORT void SetDissolveState(LodDissolves::SState, bool);
GAME_IMPORT void SetDontApplyAnim(bool);
GAME_IMPORT void SetElementExtents(int, vec3 const&, vec3 const&);
GAME_IMPORT void SetForcedAnimLod(char);
GAME_IMPORT void SetForcedLOD(int);
GAME_IMPORT void SetInitializeMesh(bool);
GAME_IMPORT void SetLodDissolveStep(float);
GAME_IMPORT void SetMOFlag(unsigned char, bool);
GAME_IMPORT void SetMeshAttribute(uint32_t, vec4 const&);
GAME_IMPORT void SetMeshAttributeMtx(uint32_t, mtx34 const&);
GAME_IMPORT void SetMeshColor(uint32_t, vec4 const&);
GAME_IMPORT bool SetMeshElementsMatrices(ttl::vector<mtx34, ttl::vector_allocators::heap_allocator<mtx34>, 0> const&);
GAME_IMPORT void SetMeshElementsState(unsigned char const*, uint32_t const*, uint32_t, bool, bool);
GAME_IMPORT void SetMeshFlagsEditor(uint32_t);
GAME_IMPORT void SetMeshFlagsAll(uint32_t);
GAME_IMPORT void SetMeshTexture(uint32_t, CTexture*);
GAME_IMPORT void SetMustHaveTags(int64_t);
GAME_IMPORT void SetMustNotHaveTags(int64_t);
GAME_IMPORT void SetRenderElementBoxes(bool, int, int);
GAME_IMPORT void SetSeed(int);
GAME_IMPORT bool SetSkin(char const*, int64_t, int64_t, uint32_t, bool, bool);
GAME_IMPORT bool SetSkinEditor(char const*, int64_t, int64_t, uint32_t);
GAME_IMPORT void SetSkinName(ttl::string_const<char>);
GAME_IMPORT void SetTraceCollisionType(unsigned char);
GAME_IMPORT bool ShouldApplyAnim() const;
GAME_IMPORT bool ShouldInitializeMesh() const;
GAME_IMPORT bool SkinExists(ttl::string_base<char> const&) const;
GAME_IMPORT void StopAnimAction(int, TAnimId, void const*, float);
GAME_IMPORT IModelObject const* ToIModelObject() const;
GAME_IMPORT bool UnhideElement(uint32_t);
GAME_IMPORT void UnlockAnimationUpdateAbility(bool&, ttl::vector<bool, ttl::vector_allocators::heap_allocator<bool>, 8>&);
private:
GAME_IMPORT static CRTTI* __INTERNAL_crtti_factory();
GAME_IMPORT static bool __INTERNAL_crtti_fields_initialized_function();
GAME_IMPORT static rtti::Type& __INTERNAL_type_factory();
public:
GAME_IMPORT static rtti::Type& typeinfo();
};

View File

@ -0,0 +1,120 @@
#pragma once
#include <EGSDK\Imports.h>
class CRTTI {
#pragma region GENERATED by ExportClassToCPPH.py
public:
VIRTUAL_CALL(0, CRTTI *__fastcall, sub_11D3F0, (char a1), a1);
GAME_IMPORT virtual void ReleaseUnusedMemory();
GAME_IMPORT virtual void InitializeRttiReplication();
VIRTUAL_CALL(3, void __fastcall, SetPlatform, ());
VIRTUAL_CALL(4, __int64, RunUnitTests, ());
VIRTUAL_CALL(5, __int64, _RunUnitTests1, ());
VIRTUAL_CALL(6, __int64, _RunUnitTests2, ());
protected:
GAME_IMPORT virtual struct CRTTI::SEditorData * CreateEditorData();
public:
GAME_IMPORT virtual class ttl::string_base<char> ClassWriterCompare(class CRTTI const *, class CRTTI const *, class CRTTI const &) const;
GAME_IMPORT bool updateRttiParams();
GAME_IMPORT CRTTI(class CRTTI const &);
GAME_IMPORT CRTTI(class ClassReaderResolve const &);
GAME_IMPORT CRTTI(char const *, int, void (*)(class CRTTI *), class CRTTI *, class CRTTI const *, class IScriptManager *, bool, bool, bool, int, enum EMem::TYPE, bool);
GAME_IMPORT CRTTI(class ttl::string_const<char>, class CRTTI *, enum EMem::TYPE);
GAME_IMPORT class CRTTI & operator=(class CRTTI const &);
GAME_IMPORT void AddExternalField(class CRTTIField const *);
GAME_IMPORT void AddField(class CRTTIField *);
GAME_IMPORT void AddImplementation(class CRTTI const *);
GAME_IMPORT void AddInterface(class CRTTI const *);
GAME_IMPORT void AddMethod(class CRTTIMethod const *);
GAME_IMPORT bool IsClassFlag(enum ERTTIClassFlags) const;
GAME_IMPORT bool ArePresetsLoaded() const;
GAME_IMPORT static void CheckDuplicated(bool);
GAME_IMPORT void ClearClassFlags(enum ERTTIClassFlags);
GAME_IMPORT void ClearFieldsList();
GAME_IMPORT bool CopyFields(class CRTTIObject *, class CRTTIObject const *, bool) const;
GAME_IMPORT void CopyGuiGameDataEventDispatcher(class CRTTI const *);
GAME_IMPORT bool CopyPointerFields(class CRTTIObject *, class CRTTIObject const *) const;
GAME_IMPORT void CreateGuiGameDataEventDispatcher();
GAME_IMPORT void CreateRttiSerialization();
GAME_IMPORT struct CRTTI::SEditorData & EditorData();
GAME_IMPORT bool ExchangePointerFields(class CRTTIObject *, class CRTTIObject *) const;
GAME_IMPORT class CRTTIField const * FindField(char const *) const;
GAME_IMPORT class CRTTIField const * FindField(class ttl::string_view_base<char, struct ttl::char_traits<char>>) const;
GAME_IMPORT class CRTTIField const * FindField(class ttl::pstring) const;
GAME_IMPORT class CRTTIField const * FindField(class ttl::pstring, unsigned short &) const;
GAME_IMPORT class CRTTIField const * FindFieldAtOffset(unsigned int) const;
GAME_IMPORT class CRTTIField const * FindFieldIncludingAliases(char const *) const;
GAME_IMPORT class CRTTIField const * FindFieldIncludingAliases(class ttl::string_view_base<char, struct ttl::char_traits<char>>) const;
GAME_IMPORT class CRTTIField const * FindFieldIncludingAliases(class ttl::pstring) const;
GAME_IMPORT class cbs::msg::RttiMessageDispatcher const * FindMessageDispatcherForPipe(unsigned __int64) const;
GAME_IMPORT class CRTTIMethod const * FindMethod(char const *) const;
GAME_IMPORT class CRTTIField const * FindRenamedField(char const *) const;
GAME_IMPORT class CRTTIField const * FindRenamedField(class ttl::string_view_base<char, struct ttl::char_traits<char>>) const;
GAME_IMPORT class CRTTIField const * FindRenamedField(class ttl::pstring) const;
GAME_IMPORT bool FromAbstractClass() const;
GAME_IMPORT bool FromClass(class rtti::Type const &) const;
GAME_IMPORT bool FromClass(int) const;
GAME_IMPORT bool FromClass(class CRTTI const *) const;
GAME_IMPORT bool FromClass(class rtti::Type const *) const;
GAME_IMPORT bool FromClassByName(char const *) const;
GAME_IMPORT bool FromClassOrInterface(int) const;
GAME_IMPORT bool FromClassOrInterface(class CRTTI const *) const;
GAME_IMPORT bool FromClassOrInterface(class rtti::Type const *) const;
GAME_IMPORT bool FromClassOrInterfaceByName(char const *) const;
GAME_IMPORT bool FromEngineClass(class rtti::Type const &) const;
GAME_IMPORT bool FromEngineClass(int) const;
GAME_IMPORT bool FromEngineClass(class CRTTI const *) const;
GAME_IMPORT void GetAllFields(class ttl::vector<class CRTTIField const *, class ttl::vector_allocators::heap_allocator<class CRTTIField const *>, 64> &) const;
GAME_IMPORT class Net::Repl::CRttiInfo const * ToIRtti() const;
GAME_IMPORT class CRTTI const * GetBaseClass(class CRTTI const *) const;
GAME_IMPORT char const * GetClassNameA() const;
GAME_IMPORT class ttl::string_const<char> GetClassNameWithoutNamespace() const;
GAME_IMPORT class gui::CGameDataEventDispatcher * GetGuiGameDataEventDispatcher() const;
GAME_IMPORT struct CRTTI::SEditorData const & GetEditorData() const;
GAME_IMPORT class CRTTI const * GetProxyComponentClass() const;
GAME_IMPORT class cbs::CSystemBase * GetSystem() const;
GAME_IMPORT void GetFieldsToEdit(class ttl::list<class CRTTIField const *, class ttl::allocator> &) const;
GAME_IMPORT void GetFieldsToEditUnsorted(class ttl::list<class CRTTIField const *, class ttl::allocator> &) const;
GAME_IMPORT class CRTTI const * GetNativeClass() const;
GAME_IMPORT class Net::Repl::Rtti::Serializer const * RttiSerializer() const;
GAME_IMPORT enum EMem::TYPE GetMemCategory() const;
GAME_IMPORT class cbs::msg::RttiMessageDispatcher * GetMessageDispatcherForPipe(unsigned __int64);
GAME_IMPORT class CRTTIDebugVis const & GetVis() const;
GAME_IMPORT bool HasVis() const;
GAME_IMPORT void HideField(char const *);
GAME_IMPORT bool Initialize();
GAME_IMPORT void InitializeRttiSerialization();
GAME_IMPORT bool IsAbstract() const;
GAME_IMPORT bool IsExactClass(class rtti::Type const *) const;
GAME_IMPORT bool IsExactClass(int) const;
GAME_IMPORT bool IsExactClass(class CRTTI const *) const;
GAME_IMPORT bool IsFieldHidden(class CRTTIField const *) const;
GAME_IMPORT bool IsImplementingInterface(int) const;
GAME_IMPORT bool IsImplementingInterface(class CRTTI const *) const;
GAME_IMPORT bool IsObsolete() const;
GAME_IMPORT bool IsReplicated() const;
GAME_IMPORT bool IsReplicationPossible() const;
GAME_IMPORT bool IsSetFieldForcedToSave(class CRTTIField const &) const;
GAME_IMPORT void OverrideField(char const *);
GAME_IMPORT bool ParseInfoString(char const *);
GAME_IMPORT void PreInitializeRttiSerialization();
private:
GAME_IMPORT void PrepareReplicatedFields();
public:
GAME_IMPORT void ReResolveMyAndBaseFields();
GAME_IMPORT void RemoveField(class CRTTIField const *);
GAME_IMPORT bool RequiresMatrixChangedNotifications() const;
GAME_IMPORT void ResolveGuiGameDataEventDispatchers();
GAME_IMPORT void ResolveHiddenFields() const;
GAME_IMPORT void ResolveMyAndBaseFields();
GAME_IMPORT void ResolvePStorageAndSaveGameFields();
GAME_IMPORT void SetClassFlags(enum ERTTIClassFlags);
GAME_IMPORT void SetPrefabName(class ttl::string_base<char> const &);
GAME_IMPORT void SetForcedToSaveField(class CRTTIField const &, bool);
GAME_IMPORT void SetPresetsLoaded(bool) const;
GAME_IMPORT void SetSystem(class cbs::CSystemBase *);
GAME_IMPORT void Shutdown();
GAME_IMPORT void UnhideField(char const *);
#pragma endregion
};

View File

@ -0,0 +1,120 @@
#pragma once
#include <EGSDK\Imports.h>
class CRTTI {
#pragma region GENERATED by ExportClassToCPPH.py
public:
VIRTUAL_CALL(0, CRTTI*, sub_11D3F0, (char a1), a1);
GAME_IMPORT virtual void ReleaseUnusedMemory();
GAME_IMPORT virtual void InitializeRttiReplication();
VIRTUAL_CALL(3, void, SetPlatform, ());
VIRTUAL_CALL(4, int64_t, RunUnitTests, ());
VIRTUAL_CALL(5, int64_t, _RunUnitTests1, ());
VIRTUAL_CALL(6, int64_t, _RunUnitTests2, ());
protected:
GAME_IMPORT virtual CRTTI::SEditorData* CreateEditorData();
public:
GAME_IMPORT virtual ttl::string_base<char> ClassWriterCompare(CRTTI const*, CRTTI const*, CRTTI const&) const;
GAME_IMPORT bool updateRttiParams();
GAME_IMPORT CRTTI(CRTTI const&);
GAME_IMPORT CRTTI(ClassReaderResolve const&);
GAME_IMPORT CRTTI(char const*, int, void (* )( CRTTI* ), CRTTI*, CRTTI const*, IScriptManager*, bool, bool, bool, int, EMem::TYPE, bool);
GAME_IMPORT CRTTI(ttl::string_const<char>, CRTTI*, EMem::TYPE);
GAME_IMPORT CRTTI& operator=(CRTTI const&);
GAME_IMPORT void AddExternalField(CRTTIField const*);
GAME_IMPORT void AddField(CRTTIField*);
GAME_IMPORT void AddImplementation(CRTTI const*);
GAME_IMPORT void AddInterface(CRTTI const*);
GAME_IMPORT void AddMethod(CRTTIMethod const*);
GAME_IMPORT bool IsClassFlag(ERTTIClassFlags) const;
GAME_IMPORT bool ArePresetsLoaded() const;
GAME_IMPORT static void CheckDuplicated(bool);
GAME_IMPORT void ClearClassFlags(ERTTIClassFlags);
GAME_IMPORT void ClearFieldsList();
GAME_IMPORT bool CopyFields(CRTTIObject*, CRTTIObject const*, bool) const;
GAME_IMPORT void CopyGuiGameDataEventDispatcher(CRTTI const*);
GAME_IMPORT bool CopyPointerFields(CRTTIObject*, CRTTIObject const*) const;
GAME_IMPORT void CreateGuiGameDataEventDispatcher();
GAME_IMPORT void CreateRttiSerialization();
GAME_IMPORT CRTTI::SEditorData& EditorData();
GAME_IMPORT bool ExchangePointerFields(CRTTIObject*, CRTTIObject*) const;
GAME_IMPORT CRTTIField const* FindField(char const*) const;
GAME_IMPORT CRTTIField const* FindField(ttl::string_view_base<char, ttl::char_traits<char>>) const;
GAME_IMPORT CRTTIField const* FindField(ttl::pstring) const;
GAME_IMPORT CRTTIField const* FindField(ttl::pstring, unsigned short&) const;
GAME_IMPORT CRTTIField const* FindFieldAtOffset(uint32_t) const;
GAME_IMPORT CRTTIField const* FindFieldIncludingAliases(char const*) const;
GAME_IMPORT CRTTIField const* FindFieldIncludingAliases(ttl::string_view_base<char, ttl::char_traits<char>>) const;
GAME_IMPORT CRTTIField const* FindFieldIncludingAliases(ttl::pstring) const;
GAME_IMPORT cbs::msg::RttiMessageDispatcher const* FindMessageDispatcherForPipe(uint32_t64_t) const;
GAME_IMPORT CRTTIMethod const* FindMethod(char const*) const;
GAME_IMPORT CRTTIField const* FindRenamedField(char const*) const;
GAME_IMPORT CRTTIField const* FindRenamedField(ttl::string_view_base<char, ttl::char_traits<char>>) const;
GAME_IMPORT CRTTIField const* FindRenamedField(ttl::pstring) const;
GAME_IMPORT bool FromAbstractClass() const;
GAME_IMPORT bool FromClass(rtti::Type const&) const;
GAME_IMPORT bool FromClass(int) const;
GAME_IMPORT bool FromClass(CRTTI const*) const;
GAME_IMPORT bool FromClass(rtti::Type const*) const;
GAME_IMPORT bool FromClassByName(char const*) const;
GAME_IMPORT bool FromClassOrInterface(int) const;
GAME_IMPORT bool FromClassOrInterface(CRTTI const*) const;
GAME_IMPORT bool FromClassOrInterface(rtti::Type const*) const;
GAME_IMPORT bool FromClassOrInterfaceByName(char const*) const;
GAME_IMPORT bool FromEngineClass(rtti::Type const&) const;
GAME_IMPORT bool FromEngineClass(int) const;
GAME_IMPORT bool FromEngineClass(CRTTI const*) const;
GAME_IMPORT void GetAllFields(ttl::vector<CRTTIField const*, ttl::vector_allocators::heap_allocator<CRTTIField const*>, 64>&) const;
GAME_IMPORT Net::Repl::CRttiInfo const* ToIRtti() const;
GAME_IMPORT CRTTI const* GetBaseClass(CRTTI const*) const;
GAME_IMPORT char const* GetClassNameA() const;
GAME_IMPORT ttl::string_const<char> GetClassNameWithoutNamespace() const;
GAME_IMPORT gui::CGameDataEventDispatcher* GetGuiGameDataEventDispatcher() const;
GAME_IMPORT CRTTI::SEditorData const& GetEditorData() const;
GAME_IMPORT CRTTI const* GetProxyComponentClass() const;
GAME_IMPORT cbs::CSystemBase* GetSystem() const;
GAME_IMPORT void GetFieldsToEdit(ttl::list<CRTTIField const*, ttl::allocator>&) const;
GAME_IMPORT void GetFieldsToEditUnsorted(ttl::list<CRTTIField const*, ttl::allocator>&) const;
GAME_IMPORT CRTTI const* GetNativeClass() const;
GAME_IMPORT Net::Repl::Rtti::Serializer const* RttiSerializer() const;
GAME_IMPORT EMem::TYPE GetMemCategory() const;
GAME_IMPORT cbs::msg::RttiMessageDispatcher* GetMessageDispatcherForPipe(uint32_t64_t);
GAME_IMPORT CRTTIDebugVis const& GetVis() const;
GAME_IMPORT bool HasVis() const;
GAME_IMPORT void HideField(char const*);
GAME_IMPORT bool Initialize();
GAME_IMPORT void InitializeRttiSerialization();
GAME_IMPORT bool IsAbstract() const;
GAME_IMPORT bool IsExactClass(rtti::Type const*) const;
GAME_IMPORT bool IsExactClass(int) const;
GAME_IMPORT bool IsExactClass(CRTTI const*) const;
GAME_IMPORT bool IsFieldHidden(CRTTIField const*) const;
GAME_IMPORT bool IsImplementingInterface(int) const;
GAME_IMPORT bool IsImplementingInterface(CRTTI const*) const;
GAME_IMPORT bool IsObsolete() const;
GAME_IMPORT bool IsReplicated() const;
GAME_IMPORT bool IsReplicationPossible() const;
GAME_IMPORT bool IsSetFieldForcedToSave(CRTTIField const&) const;
GAME_IMPORT void OverrideField(char const*);
GAME_IMPORT bool ParseInfoString(char const*);
GAME_IMPORT void PreInitializeRttiSerialization();
private:
GAME_IMPORT void PrepareReplicatedFields();
public:
GAME_IMPORT void ReResolveMyAndBaseFields();
GAME_IMPORT void RemoveField(CRTTIField const*);
GAME_IMPORT bool RequiresMatrixChangedNotifications() const;
GAME_IMPORT void ResolveGuiGameDataEventDispatchers();
GAME_IMPORT void ResolveHiddenFields() const;
GAME_IMPORT void ResolveMyAndBaseFields();
GAME_IMPORT void ResolvePStorageAndSaveGameFields();
GAME_IMPORT void SetClassFlags(ERTTIClassFlags);
GAME_IMPORT void SetPrefabName(ttl::string_base<char> const&);
GAME_IMPORT void SetForcedToSaveField(CRTTIField const&, bool);
GAME_IMPORT void SetPresetsLoaded(bool) const;
GAME_IMPORT void SetSystem(cbs::CSystemBase*);
GAME_IMPORT void Shutdown();
GAME_IMPORT void UnhideField(char const*);
#pragma endregion
};

View File

@ -7,7 +7,6 @@ public:
GAME_IMPORT SCommandParam(struct SCommandParam const &);
GAME_IMPORT SCommandParam(enum EVariable, char const *);
GAME_IMPORT SCommandParam();
GAME_IMPORT ~SCommandParam();
GAME_IMPORT struct SCommandParam & operator=(struct SCommandParam &&);
GAME_IMPORT struct SCommandParam & operator=(struct SCommandParam const &);
};

View File

@ -7,7 +7,6 @@ public:
GAME_IMPORT SCommandParam(SCommandParam const&);
GAME_IMPORT SCommandParam(EVariable, char const*);
GAME_IMPORT SCommandParam();
GAME_IMPORT ~SCommandParam();
GAME_IMPORT SCommandParam& operator=(SCommandParam& &);
GAME_IMPORT SCommandParam& operator=(SCommandParam const&);
};