It shows how to work with different Unity and Mono structures.
#include <BNM/UserSettings/GlobalSettings.hpp>
#include <BNM/Class.hpp>
#include <BNM/Field.hpp>
#include <BNM/Method.hpp>
#include <BNM/Property.hpp>
#include <BNM/Operators.hpp>
#include <BNM/BasicMonoStructures.hpp>
#include <BNM/ComplexMonoStructures.hpp>
#include <BNM/ClassesManagement.hpp>
using namespace BNM::Structures;
void MonoArray() {
auto firstData = array->
At(0);
}
void MonoList() {
list = intClass.NewList<int>();
auto firstData = list->
At(0);
}
void MonoDictionary() {
auto dictionaryClass =
BNM::Class(BNM_OBFUSCATE(
"System.Collections.Generic"), BNM_OBFUSCATE(
"Dictionary`2"),
BNM::Image(BNM_OBFUSCATE(
"mscorlib.dll")));
auto map = dictionary->
ToMap();
int value = 0;
if (dictionary->
TryGet(1, &value))
;
}
namespace DelegatesAndActions {
struct Delegates : BNM::UnityEngine::MonoBehaviour {
BNM::MulticastDelegate<int> *justDelegateDef;
BNM::UnityEngine::UnityAction<int, int> *JustUnityAction;
BNM::Structures::Mono::Action<int, int> *JustAction;
BNM::UnityEngine::UnityEvent<int, int> *JustEvent;
void *logClass;
BNM_CustomClass(Delegates, BNM::CompileTimeClassBuilder(
nullptr, BNM_OBFUSCATE_TMP(
"Delegates")).Build(), {}, {});
void Start() {
BNM_LOG_DEBUG("justDelegateDef: %p", justDelegateDef);
BNM_LOG_DEBUG("JustUnityAction: %p", JustUnityAction);
BNM_LOG_DEBUG("JustAction: %p", JustAction);
BNM_LOG_DEBUG("JustEvent: %p", JustEvent);
if (justDelegateDef) justDelegateDef->
Invoke(10, 60);
if (JustUnityAction) JustUnityAction->Invoke(70, 9);
if (JustAction) JustAction->
Invoke(30, 42);
if (JustEvent) JustEvent->
Invoke(7, 234);
}
};
}
void OnLoaded_Example_02() {
MonoArray();
MonoList();
MonoDictionary();
using namespace DelegatesAndActions;
}
#define BNM_CustomMethod(_method_, _isStatic_, _type_, _name_,...)
Define info about C++ method for il2cpp.
Definition ClassesManagement.hpp:309
#define BNM_CustomClass(_class_, _targetType_, _baseType_, _owner_,...)
Define info of C++ class for il2cpp.
Definition ClassesManagement.hpp:250
#define BNM_CustomMethodMarkAsInvokeHook(_method_)
Mark method to prefer InvokeHook.
Definition ClassesManagement.hpp:330
#define BNM_CallCustomMethodOrigin(_method_,...)
Call method origin, if it exists.
Definition ClassesManagement.hpp:358
#define BNM_CustomMethodSkipTypeMatch(_method_)
Skip method parameters type matching.
Definition ClassesManagement.hpp:348
constexpr DefaultTypeRef Get()
Method that helps to get il2cpp class type from C++ and BNM types.
Definition Defaults.hpp:132
Namespace that holds Unity math and helper structs.
Definition Defaults.hpp:14
Main BNM namespace.
Definition BasicMonoStructures.hpp:16
Class for working with il2cpp classes.
Definition Class.hpp:29
Class for working with il2cpp images.
Definition Image.hpp:19
Ret Invoke(Parameters ...parameters)
Invoke delegate.
Definition Delegates.hpp:140
Array type implementation.
Definition BasicMonoStructures.hpp:157
T * GetData() const
Get array data pointer.
Definition BasicMonoStructures.hpp:181
Utils::DataIterator< T > At(IL2CPP::il2cpp_array_size_t index) const
Get element at index.
Definition BasicMonoStructures.hpp:225
static Array< T > * Create(size_t capacity, bool _forceUseAlloc=false)
Creates new empty array of set capacity.
Definition BasicMonoStructures.hpp:242
std::vector< T > ToVector() const
Convert array to std::vector.
Definition BasicMonoStructures.hpp:187
System.Generic.Dictionary type implementation.
Definition ComplexMonoStructures.hpp:20
bool TryGet(TKey key, TValue *value) const
Try to get value by key.
Definition ComplexMonoStructures.hpp:142
std::vector< TKey > GetKeys() const
Convert to std::vector.
Definition ComplexMonoStructures.hpp:107
std::map< TKey, TValue > ToMap() const
Convert to std::map.
Definition ComplexMonoStructures.hpp:97
std::vector< TValue > GetValues() const
Convert to std::vector.
Definition ComplexMonoStructures.hpp:117
System.Generic.List type implementation.
Definition BasicMonoStructures.hpp:325
Utils::DataIterator< T > At(int index) const
Get element at index.
Definition BasicMonoStructures.hpp:452
T * GetData() const
Get list data pointer.
Definition BasicMonoStructures.hpp:355
std::vector< T > ToVector() const
Convert list to std::vector.
Definition BasicMonoStructures.hpp:379
String type implementation.
Definition BasicMonoStructures.hpp:95
Definition Matrix3x3.hpp:12
Definition Matrix4x4.hpp:26
Definition Quaternion.hpp:6
Definition RaycastHit.hpp:9
Definition Vector3.hpp:10
Definition Vector4.hpp:10
void Invoke(Parameters ...parameters) const
Invoke event.
Definition UnityStructures.hpp:215