docs: add plugin setup guide
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
class __declspec(novtable) AcquireInterface
|
||||
{
|
||||
public:
|
||||
static constexpr auto RTTI{ RE::RTTI::Scaleform__AcquireInterface };
|
||||
static constexpr auto VTABLE{ RE::VTABLE::Scaleform__AcquireInterface };
|
||||
|
||||
virtual ~AcquireInterface() = default; // 00
|
||||
|
||||
// add
|
||||
virtual bool CanAcquire(); // 01
|
||||
virtual bool TryAcquire(); // 02
|
||||
virtual bool TryAcquireCommit(); // 03
|
||||
virtual bool TryAcquireCancel(); // 04
|
||||
};
|
||||
static_assert(sizeof(AcquireInterface) == 0x8);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
class AllocInfo
|
||||
{
|
||||
public:
|
||||
~AllocInfo() noexcept {}
|
||||
|
||||
// members
|
||||
std::uint32_t statID;
|
||||
};
|
||||
static_assert(sizeof(AllocInfo) == 0x4);
|
||||
}
|
||||
@@ -0,0 +1,153 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scaleform/S/StatBasicValues.h"
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
template <std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorBaseDH
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorBaseDH<kStat_Default_Mem>>);
|
||||
|
||||
template <std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorBaseGH
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorBaseGH<kStat_Default_Mem>>);
|
||||
|
||||
template <std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorBaseLH
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorBaseLH<kStat_Default_Mem>>);
|
||||
|
||||
template <class T>
|
||||
class ConstructorPOD
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorPOD<void*>>);
|
||||
|
||||
template <class T>
|
||||
class ConstructorMov
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorMov<void*>>);
|
||||
|
||||
template <class T>
|
||||
class ConstructorCPP
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorCPP<void*>>);
|
||||
|
||||
template <class T>
|
||||
class ConstructorPagedPOD :
|
||||
public ConstructorPOD<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorPagedPOD<void*>>);
|
||||
|
||||
template <class T>
|
||||
class ConstructorPagedMov :
|
||||
public ConstructorMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorPagedMov<void*>>);
|
||||
|
||||
template <typename T>
|
||||
class ConstructorPagedMovCC :
|
||||
public ConstructorMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<ConstructorPagedMovCC<void*>>);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorGH :
|
||||
public AllocatorBaseGH<SID>,
|
||||
public ConstructorMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorGH<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorLH :
|
||||
public AllocatorBaseLH<SID>,
|
||||
public ConstructorMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorLH<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorDH :
|
||||
public AllocatorBaseDH<SID>,
|
||||
public ConstructorMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorDH<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem>
|
||||
class AllocatorGH_POD :
|
||||
public AllocatorBaseGH<SID>,
|
||||
public ConstructorPOD<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorGH_POD<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, int SID>
|
||||
class AllocatorPagedGH :
|
||||
AllocatorBaseGH<SID>,
|
||||
ConstructorPagedMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorPagedGH<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, int SID>
|
||||
class AllocatorPagedLH :
|
||||
AllocatorBaseLH<SID>,
|
||||
ConstructorPagedMov<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorPagedLH<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <typename T, int SID>
|
||||
class AllocatorPagedCC :
|
||||
AllocatorBaseLH<SID>,
|
||||
ConstructorPagedMovCC<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorPagedCC<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, int SID>
|
||||
class AllocatorPagedGH_POD :
|
||||
AllocatorBaseGH<SID>,
|
||||
ConstructorPagedPOD<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorPagedGH_POD<void*, kStat_Default_Mem>>);
|
||||
|
||||
template <class T, int SID>
|
||||
class AllocatorPagedLH_POD :
|
||||
AllocatorBaseLH<SID>,
|
||||
ConstructorPagedPOD<T>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(std::is_empty_v<AllocatorPagedLH_POD<void*, kStat_Default_Mem>>);
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scaleform/A/Allocator.h"
|
||||
#include "Scaleform/S/StatBasicValues.h"
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
class MemoryHeap;
|
||||
|
||||
class ArrayDefaultPolicy
|
||||
{
|
||||
public:
|
||||
~ArrayDefaultPolicy() noexcept {}
|
||||
|
||||
// members
|
||||
std::size_t capacity; // 0
|
||||
};
|
||||
static_assert(sizeof(ArrayDefaultPolicy) == 0x8);
|
||||
|
||||
template <std::int32_t MinCapacity = 0, std::int32_t Granularity = 4, bool NeverShrink = false>
|
||||
class ArrayConstPolicy
|
||||
{
|
||||
public:
|
||||
~ArrayConstPolicy() noexcept {}
|
||||
|
||||
// members
|
||||
std::size_t capacity; // 0
|
||||
};
|
||||
static_assert(sizeof(ArrayConstPolicy<>) == 0x8);
|
||||
|
||||
template <class T, class Allocator, class SizePolicy>
|
||||
class ArrayDataBase
|
||||
{
|
||||
public:
|
||||
// members
|
||||
T* data; // 00
|
||||
std::size_t size; // 08
|
||||
SizePolicy policy; // 10
|
||||
};
|
||||
static_assert(sizeof(ArrayDataBase<void*, void*, ArrayDefaultPolicy>) == 0x18);
|
||||
|
||||
template <class T, class Allocator, class SizePolicy>
|
||||
class ArrayData :
|
||||
public ArrayDataBase<T, Allocator, SizePolicy>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayData<void*, void*, ArrayDefaultPolicy>) == 0x18);
|
||||
|
||||
template <class T, class Allocator, class SizePolicy>
|
||||
class ArrayDataDH :
|
||||
ArrayDataBase<T, Allocator, SizePolicy>
|
||||
{
|
||||
public:
|
||||
// members
|
||||
const MemoryHeap* pHeap;
|
||||
};
|
||||
static_assert(sizeof(ArrayDataDH<void*, void*, ArrayDefaultPolicy>) == 0x20);
|
||||
|
||||
template <class T, class Allocator, class SizePolicy>
|
||||
class ArrayDataCC :
|
||||
public ArrayDataBase<T, Allocator, SizePolicy>
|
||||
{
|
||||
public:
|
||||
T defaultValue;
|
||||
};
|
||||
static_assert(sizeof(ArrayDataCC<void*, void*, ArrayDefaultPolicy>) == 0x20);
|
||||
|
||||
template <class T>
|
||||
class ArrayBase
|
||||
{
|
||||
public:
|
||||
// members
|
||||
T data; // 00
|
||||
};
|
||||
static_assert(sizeof(ArrayBase<void*>) == 0x08);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem, class SizePolicy = ArrayDefaultPolicy>
|
||||
class Array :
|
||||
public ArrayBase<ArrayData<T, AllocatorGH<T, SID>, SizePolicy>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(Array<void*, kStat_Default_Mem, ArrayDefaultPolicy>) == 0x18);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem, class SizePolicy = ArrayDefaultPolicy>
|
||||
class ArrayLH :
|
||||
public ArrayBase<ArrayData<T, AllocatorLH<T, SID>, SizePolicy>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayLH<void*, kStat_Default_Mem, ArrayDefaultPolicy>) == 0x18);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem, class SizePolicy = ArrayDefaultPolicy>
|
||||
class ArrayDH :
|
||||
public ArrayBase<ArrayDataDH<T, AllocatorDH<T, SID>, SizePolicy>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayDH<void*, kStat_Default_Mem, ArrayDefaultPolicy>) == 0x20);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem, class SizePolicy = ArrayDefaultPolicy>
|
||||
class ArrayCC :
|
||||
public ArrayBase<ArrayDataCC<T, AllocatorLH<T, SID>, SizePolicy>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayCC<void*, kStat_Default_Mem, ArrayDefaultPolicy>) == 0x20);
|
||||
|
||||
template <class T, std::int32_t SID = kStat_Default_Mem, class SizePolicy = ArrayDefaultPolicy>
|
||||
class ArrayPOD :
|
||||
public ArrayBase<ArrayData<T, AllocatorGH_POD<T, SID>, SizePolicy>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayPOD<void*, kStat_Default_Mem, ArrayDefaultPolicy>) == 0x18);
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
#pragma once
|
||||
|
||||
#include "Scaleform/A/Allocator.h"
|
||||
#include "Scaleform/S/StatBasicValues.h"
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
template <class T, std::int32_t PageSh = 0, std::int32_t PtrPoolInc = 0, class Allocator = AllocatorPagedCC<T, 0>>
|
||||
class ArrayPagedBase :
|
||||
public Allocator
|
||||
{
|
||||
public:
|
||||
// members
|
||||
std::uint64_t size; // 08
|
||||
std::uint64_t numPages; // 10
|
||||
std::uint64_t maxPages; // 18
|
||||
T** pages; // 20
|
||||
};
|
||||
static_assert(sizeof(ArrayPagedBase<void*>) == 0x28);
|
||||
|
||||
template <class T, std::int32_t PageSh = 6, std::int32_t PtrPoolInc = 64, std::int32_t SID = kStat_Default_Mem>
|
||||
class ArrayPagedPOD :
|
||||
public ArrayPagedBase<T, PageSh, PtrPoolInc, AllocatorPagedGH_POD<T, SID>>
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(ArrayPagedPOD<void*>) == 0x28);
|
||||
|
||||
template <class T, std::int32_t PageSh = 0, std::int32_t PtrPoolInc = 0, std::int32_t SID = 0>
|
||||
class ArrayPagedCC :
|
||||
public ArrayPagedBase<T, PageSh, PtrPoolInc, AllocatorPagedCC<T, SID>>
|
||||
{
|
||||
public:
|
||||
T defaultValue; // 28
|
||||
};
|
||||
static_assert(sizeof(ArrayPagedCC<void*>) == 0x30);
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
template <class T>
|
||||
class AtomicValueBase
|
||||
{
|
||||
public:
|
||||
// members
|
||||
volatile T value; // 0
|
||||
};
|
||||
static_assert(sizeof(AtomicValueBase<std::int32_t>) == 0x04);
|
||||
|
||||
template <class T>
|
||||
class AtomicInt :
|
||||
public AtomicValueBase<T> // 0
|
||||
{
|
||||
public:
|
||||
};
|
||||
static_assert(sizeof(AtomicInt<std::int32_t>) == 0x04);
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
namespace Scaleform
|
||||
{
|
||||
template <class T>
|
||||
class AutoPtr
|
||||
{
|
||||
public:
|
||||
// members
|
||||
T* object; // 00
|
||||
bool owner; // 08
|
||||
};
|
||||
static_assert(sizeof(AutoPtr<void>) == 0x10);
|
||||
}
|
||||
Reference in New Issue
Block a user