Enderal SE
https://mod.pub/enderal-se/38-enderal-se
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
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;
|
|
|