Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/N/NiControllerManager.h
T
2026-05-30 18:33:24 +12:00

62 lines
2.1 KiB
C++

#pragma once
#include "RE/B/BSFixedString.h"
#include "RE/B/BSTHashMap.h"
#include "RE/N/NiControllerSequence.h"
#include "RE/N/NiPointer.h"
#include "RE/N/NiTArray.h"
#include "RE/N/NiTimeController.h"
namespace RE
{
class BSAnimNoteListener;
class NiAVObjectPalette;
class NiControllerManager :
public NiTimeController // 00
{
public:
static constexpr auto RTTI{ RTTI::NiControllerManager };
static constexpr auto VTABLE{ VTABLE::NiControllerManager };
static constexpr auto Ni_RTTI{ Ni_RTTI::NiControllerManager };
[[nodiscard]] static NiControllerManager* GetNiControllerManager(const NiObjectNET* a_object)
{
using func_t = decltype(&NiControllerManager::GetNiControllerManager);
static REL::Relocation<func_t> func{ ID::NiControllerManager::GetNiControllerManager };
return func(a_object);
}
[[nodiscard]] NiControllerSequence* GetSequenceByName(const BSFixedString& a_name)
{
using func_t = decltype(&NiControllerManager::GetSequenceByName);
static REL::Relocation<func_t> func{ ID::NiControllerManager::GetSequenceByName };
return func(this, a_name);
}
[[nodiscard]] NiControllerSequence* GetSequenceAt(std::uint16_t a_index)
{
if (a_index >= 0 && a_index < sequenceArray.size()) {
return sequenceArray[a_index].get();
}
return nullptr;
}
[[nodiscard]] std::uint16_t GetSequenceCount() const noexcept
{
return sequenceArray.size();
}
// members
NiTObjectArray<NiPointer<NiControllerSequence>> sequenceArray; // 48
std::byte activeSequences[0x70 - 0x60]; // 60 - TODO
BSTHashMap<BSFixedString, NiControllerSequence*> stringMap; // 70
BSAnimNoteListener* listener; // A0
bool cumulative; // A8
std::byte tempBlendSeqs[0xC0 - 0xB0]; // B0 - TODO
NiPointer<NiAVObjectPalette> objectPalette; // C0
};
static_assert(sizeof(NiControllerManager) == 0xC8);
}