4
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

50 lines
1.2 KiB

#pragma once
#include "skse64_common/Utilities.h"
class NiAVObject;
class BSModelDB
{
public:
struct ModelData
{
UInt64 unk00; // 00
enum
{
kFlag_Unk1 = (1 << 0),
kFlag_Dynamic = (1 << 1),
kFlag_PostProcess = (1 << 3),
kFlag_Unk2 = (1 << 4),
kFlag_Unk3 = (1 << 5)
};
UInt8 modelFlags; // 08
// ...
};
class BSModelProcessor
{
public:
virtual ~BSModelProcessor() { };
virtual void Process(ModelData * modelData, const char * modelName, NiAVObject ** root, UInt32 * typeOut) { };
};
class TESProcessor : public BSModelProcessor
{
public:
TESProcessor() { }
virtual ~TESProcessor() { CALL_MEMBER_FN(this, dtor)(); };
virtual void Process(ModelData * modelData, const char * modelName, NiAVObject ** root, UInt32 * typeOut) override { CALL_MEMBER_FN(this, Impl_Process)(modelData, modelName, root, typeOut); }
MEMBER_FN_PREFIX(TESProcessor);
// find from ??_7BSModelProcessor@BSModelDB@@6B@
DEFINE_MEMBER_FN(dtor, void, 0x00D66540);
DEFINE_MEMBER_FN(Impl_Process, void, 0x0018B0C0, ModelData * modelData, const char * modelName, NiAVObject ** root, UInt32 * typeOut);
};
};
extern RelocPtr <BSModelDB::BSModelProcessor*> g_TESProcessor;