diff --git a/README.md b/README.md index 77c4e641..44005d46 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,3 @@ -# ARK-Server-API -ArkApi is a plugin which allows you to create your own server-side plugins for ARK using C++ language.
+# PLEASE READ: -## Download -http://arkserverapi.com/resources/ark-server-api.4/

- -[Plugins](http://arkserverapi.com/resources/categories/ark-server-plugins.3/)
- -## Compilation -Requirements: -* Visual Studio 2017 +The GITHUB REPO HAS BEEN MOVED TO https://github.com/ServersHub diff --git a/build.bat b/build.bat new file mode 100644 index 00000000..eca0bef0 --- /dev/null +++ b/build.bat @@ -0,0 +1,10 @@ +@echo off +chcp 65001 +echo Compiling ARK-Server-API... +echo. + +"D:\Program Files\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" version.sln /p:Configuration=Ark /p:Platform=x64 /p:PlatformToolset=v142 + +echo. +echo Compilation completed! +echo Output file: out_lib\ArkApi.lib \ No newline at end of file diff --git a/config.json b/config.json index ded527bc..90c32236 100644 --- a/config.json +++ b/config.json @@ -1,102 +1,7 @@ -{ - "settings":{ - "AutomaticPluginReloading":false, +{ + "settings":{ + "AutomaticPluginReloading":true, "AutomaticPluginReloadSeconds":5, "SaveWorldBeforePluginReload":true - }, - "structures":[ - "UWorld", - "AController", - "AShooterPlayerController", - "APlayerController", - "UCheatManager", - "UShooterCheatManager", - "AShooterGameMode", - "AGameMode", - "UPlayer", - "APrimalTargetableActor", - "APrimalStructure", - "APrimalStructureDoor", - "FTribeData", - "FTribeWar", - "FTribeRankGroup", - "ACharacter", - "AShooterCharacter", - "APrimalCharacter", - "AActor", - "APlayerState", - "AShooterPlayerState", - "UPrimalPlayerData", - "FPrimalPlayerDataStruct", - "FPrimalPersistentCharacterStatsStruct", - "UPrimalInventoryComponent", - "UPrimalItem", - "FItemNetInfo", - "APrimalDinoCharacter", - "USceneComponent", - "UPrimalCharacterStatusComponent", - "FWeakObjectPtr", - "FDamageEvent", - "FHitResult", - "AGameState", - "AShooterGameState", - "AShooterWeapon", - "UClass", - "UStruct", - "UProperty", - "UObjectBaseUtility", - "UNumericProperty", - "URCONServer", - "RCONClientConnection", - "RCONPacket", - "FUniqueNetIdSteam", - "UGameplayStatics", - "UObject", - "UObjectBase", - "FString", - "AShooterGameSession", - "UBlueprintCore", - "FChatMessage", - "FSocketBSD", - "UField", - "FText", - "FName", - "FAssetRegistry", - "FModuleManager", - "FAssetRegistryModule", - "FAssetData", - "UBlueprint", - "UTexture2D", - "FMemory", - "ADroppedItem", - "UBoolProperty", - "APrimalDinoAIController", - "APrimalStructureItemContainer", - "UShooterGameInstance", - "AMatineeActor", - "UEngine", - "UPrimalGlobals", - "FSocket", - "UPrimalGameData", - "UPrimalEngramEntry", - "UKismetSystemLibrary", - "USphereComponent", - "UPrimitiveComponent", - "UActorComponent", - "FHttpModule", - "FHttpRequestWinInet", - "FHttpResponseWinInet", - "FOnlineSubsystemSteam", - "APrimalStructureTurret", - "FOverlapResult", - "UVictoryCore" - ], - "functions":[ - "StaticLoadObject", - "RaycastSingle", - "StaticConstructObject" - ], - "globals":[ - "GEngine" - ] + } } \ No newline at end of file diff --git a/include/Poco/Poco/AbstractDelegate.h b/include/Poco/Poco/AbstractDelegate.h new file mode 100644 index 00000000..9dea69a3 --- /dev/null +++ b/include/Poco/Poco/AbstractDelegate.h @@ -0,0 +1,110 @@ +// +// AbstractDelegate.h +// +// Library: Foundation +// Package: Events +// Module: AbstractDelegate +// +// Implementation of the AbstractDelegate template. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_AbstractDelegate_INCLUDED +#define Foundation_AbstractDelegate_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +template +class AbstractDelegate + /// Base class for Delegate and Expire. +{ +public: + AbstractDelegate() + { + } + + AbstractDelegate(const AbstractDelegate& /*del*/) + { + } + + virtual ~AbstractDelegate() + { + } + + virtual bool notify(const void* sender, TArgs& arguments) = 0; + /// Invokes the delegate's callback function. + /// Returns true if successful, or false if the delegate + /// has been disabled or has expired. + + virtual bool equals(const AbstractDelegate& other) const = 0; + /// Compares the AbstractDelegate with the other one for equality. + + virtual AbstractDelegate* clone() const = 0; + /// Returns a deep copy of the AbstractDelegate. + + virtual void disable() = 0; + /// Disables the delegate, which is done prior to removal. + + virtual const AbstractDelegate* unwrap() const + /// Returns the unwrapped delegate. Must be overridden by decorators + /// like Expire. + { + return this; + } +}; + + +template <> +class AbstractDelegate + /// Base class for Delegate and Expire. +{ +public: + AbstractDelegate() + { + } + + AbstractDelegate(const AbstractDelegate&) + { + } + + virtual ~AbstractDelegate() + { + } + + virtual bool notify(const void* sender) = 0; + /// Invokes the delegate's callback function. + /// Returns true if successful, or false if the delegate + /// has been disabled or has expired. + + virtual bool equals(const AbstractDelegate& other) const = 0; + /// Compares the AbstractDelegate with the other one for equality. + + virtual AbstractDelegate* clone() const = 0; + /// Returns a deep copy of the AbstractDelegate. + + virtual void disable() = 0; + /// Disables the delegate, which is done prior to removal. + + virtual const AbstractDelegate* unwrap() const + /// Returns the unwrapped delegate. Must be overridden by decorators + /// like Expire. + { + return this; + } +}; + + +} // namespace Poco + + +#endif // Foundation_AbstractDelegate_INCLUDED diff --git a/include/Poco/Poco/AbstractEvent.h b/include/Poco/Poco/AbstractEvent.h new file mode 100644 index 00000000..d3724c90 --- /dev/null +++ b/include/Poco/Poco/AbstractEvent.h @@ -0,0 +1,561 @@ +// +// AbstractEvent.h +// +// Library: Foundation +// Package: Events +// Module: AbstractEvent +// +// Definition of the AbstractEvent class. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_AbstractFoundation_INCLUDED +#define Foundation_AbstractFoundation_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/SingletonHolder.h" +#include "Poco/SharedPtr.h" +#include "Poco/ActiveResult.h" +#include "Poco/ActiveMethod.h" +#include "Poco/Mutex.h" + + +namespace Poco { + + +template +class AbstractEvent + /// An AbstractEvent is the base class of all events. + /// It works similar to the way C# handles notifications (aka events in C#). + /// + /// Events can be used to send information to a set of delegates + /// which are registered with the event. The type of the data is specified with + /// the template parameter TArgs. The TStrategy parameter must be a subclass + /// of NotificationStrategy. The parameter TDelegate can either be a subclass of AbstractDelegate + /// or of AbstractPriorityDelegate. + /// + /// Note that AbstractEvent should never be used directly. One ought to use + /// one of its subclasses which set the TStrategy and TDelegate template parameters + /// to fixed values. For most use-cases the BasicEvent template will be sufficient: + /// + /// #include "Poco/BasicEvent.h" + /// #include "Poco/Delegate.h" + /// + /// Note that as of release 1.4.2, the behavior of BasicEvent equals that of FIFOEvent, + /// so the FIFOEvent class is no longer necessary and provided for backwards compatibility + /// only. + /// + /// BasicEvent works with a standard delegate. They allow one object to register + /// one or more delegates with an event. In contrast, a PriorityDelegate comes with an attached priority value + /// and allows one object to register for one priority value one or more delegates. Note that PriorityDelegates + /// only work with PriorityEvents: + /// + /// #include "Poco/PriorityEvent.h" + /// #include "Poco/PriorityDelegate.h" + /// + /// Use events by adding them as public members to the object which is throwing notifications: + /// + /// class MyData + /// { + /// public: + /// Poco::BasicEvent dataChanged; + /// + /// MyData(); + /// ... + /// void setData(int i); + /// ... + /// private: + /// int _data; + /// }; + /// + /// Firing the event is done either by calling the event's notify() or notifyAsync() method: + /// + /// void MyData::setData(int i) + /// { + /// this->_data = i; + /// dataChanged.notify(this, this->_data); + /// } + /// + /// Alternatively, instead of notify(), operator () can be used. + /// + /// void MyData::setData(int i) + /// { + /// this->_data = i; + /// dataChanged(this, this->_data); + /// } + /// + /// Note that operator (), notify() and notifyAsync() do not catch exceptions, i.e. in case a + /// delegate throws an exception, notifying is immediately aborted and the exception is propagated + /// back to the caller. + /// + /// Delegates can register methods at the event. In the case of a BasicEvent + /// the Delegate template is used, in case of an PriorityEvent a PriorityDelegate is used. + /// Mixing of delegates, e.g. using a PriorityDelegate with a BasicEvent is not allowed and + /// can lead to compile-time and/or run-time errors. The standalone delegate() functions + /// can be used to construct Delegate objects. + /// + /// Events require the observers to have one of the following method signatures: + /// + /// void onEvent(const void* pSender, TArgs& args); + /// void onEvent(TArgs& args); + /// static void onEvent(const void* pSender, TArgs& args); + /// static void onEvent(void* pSender, TArgs& args); + /// static void onEvent(TArgs& args); + /// + /// For performance reasons arguments are always sent by reference. This also allows observers + /// to modify the event argument. To prevent that, use <[const TArg]> as template + /// parameter. A non-conformant method signature leads to compile errors. + /// + /// Assuming that the observer meets the method signature requirement, it can register + /// this method with the += operator: + /// + /// class MyController + /// { + /// protected: + /// MyData _data; + /// + /// void onDataChanged(void* pSender, int& data); + /// ... + /// }; + /// + /// MyController::MyController() + /// { + /// _data.dataChanged += delegate(this, &MyController::onDataChanged); + /// } + /// + /// In some cases it might be desirable to work with automatically expiring registrations. Simply add + /// to delegate as 3rd parameter a expireValue (in milliseconds): + /// + /// _data.dataChanged += delegate(this, &MyController::onDataChanged, 1000); + /// + /// This will add a delegate to the event which will automatically be removed in 1000 millisecs. + /// + /// Unregistering happens via the -= operator. Forgetting to unregister a method will lead to + /// segmentation faults later, when one tries to send a notify to a no longer existing object. + /// + /// MyController::~MyController() + /// { + /// _data.dataChanged -= delegate(this, &MyController::onDataChanged); + /// } + /// + /// Working with PriorityDelegate's as similar to working with BasicEvent. + /// Instead of delegate(), the priorityDelegate() function must be used + /// to create the PriorityDelegate. +{ +public: + typedef TDelegate* DelegateHandle; + typedef TArgs Args; + + AbstractEvent(): + _executeAsync(this, &AbstractEvent::executeAsyncImpl), + _enabled(true) + { + } + + AbstractEvent(const TStrategy& strat): + _executeAsync(this, &AbstractEvent::executeAsyncImpl), + _strategy(strat), + _enabled(true) + { + } + + virtual ~AbstractEvent() + { + } + + void operator += (const TDelegate& aDelegate) + /// Adds a delegate to the event. + /// + /// Exact behavior is determined by the TStrategy. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.add(aDelegate); + } + + void operator -= (const TDelegate& aDelegate) + /// Removes a delegate from the event. + /// + /// If the delegate is not found, this function does nothing. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.remove(aDelegate); + } + + DelegateHandle add(const TDelegate& aDelegate) + /// Adds a delegate to the event. + /// + /// Exact behavior is determined by the TStrategy. + /// + /// Returns a DelegateHandle which can be used in call to + /// remove() to remove the delegate. + { + typename TMutex::ScopedLock lock(_mutex); + return _strategy.add(aDelegate); + } + + void remove(DelegateHandle delegateHandle) + /// Removes a delegate from the event using a DelegateHandle + /// returned by add(). + /// + /// If the delegate is not found, this function does nothing. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.remove(delegateHandle); + } + + void operator () (const void* pSender, TArgs& args) + /// Shortcut for notify(pSender, args); + { + notify(pSender, args); + } + + void operator () (TArgs& args) + /// Shortcut for notify(args). + { + notify(0, args); + } + + void notify(const void* pSender, TArgs& args) + /// Sends a notification to all registered delegates. The order is + /// determined by the TStrategy. This method is blocking. While executing, + /// the list of delegates may be modified. These changes don't + /// influence the current active notifications but are activated with + /// the next notify. If a delegate is removed during a notify(), the + /// delegate will no longer be invoked (unless it has already been + /// invoked prior to removal). If one of the delegates throws an exception, + /// the notify method is immediately aborted and the exception is propagated + /// to the caller. + { + Poco::ScopedLockWithUnlock lock(_mutex); + + if (!_enabled) return; + + // thread-safeness: + // copy should be faster and safer than blocking until + // execution ends + TStrategy strategy(_strategy); + lock.unlock(); + strategy.notify(pSender, args); + } + + bool hasDelegates() const + /// Returns true if there are registered delegates. + { + return !empty(); + } + + ActiveResult notifyAsync(const void* pSender, const TArgs& args) + /// Sends a notification to all registered delegates. The order is + /// determined by the TStrategy. This method is not blocking and will + /// immediately return. The delegates are invoked in a separate thread. + /// Call activeResult.wait() to wait until the notification has ended. + /// While executing, other objects can change the delegate list. These changes don't + /// influence the current active notifications but are activated with + /// the next notify. If a delegate is removed during a notify(), the + /// delegate will no longer be invoked (unless it has already been + /// invoked prior to removal). If one of the delegates throws an exception, + /// the execution is aborted and the exception is propagated to the caller. + { + NotifyAsyncParams params(pSender, args); + { + typename TMutex::ScopedLock lock(_mutex); + + // thread-safeness: + // copy should be faster and safer than blocking until + // execution ends + // make a copy of the strategy here to guarantee that + // between notifyAsync and the execution of the method no changes can occur + + params.ptrStrat = SharedPtr(new TStrategy(_strategy)); + params.enabled = _enabled; + } + ActiveResult result = _executeAsync(params); + return result; + } + + void enable() + /// Enables the event. + { + typename TMutex::ScopedLock lock(_mutex); + _enabled = true; + } + + void disable() + /// Disables the event. notify and notifyAsnyc will be ignored, + /// but adding/removing delegates is still allowed. + { + typename TMutex::ScopedLock lock(_mutex); + _enabled = false; + } + + bool isEnabled() const + /// Returns true if event is enabled. + { + typename TMutex::ScopedLock lock(_mutex); + return _enabled; + } + + void clear() + /// Removes all delegates. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.clear(); + } + + bool empty() const + /// Checks if any delegates are registered at the delegate. + { + typename TMutex::ScopedLock lock(_mutex); + return _strategy.empty(); + } + +protected: + struct NotifyAsyncParams + { + SharedPtr ptrStrat; + const void* pSender; + TArgs args; + bool enabled; + + NotifyAsyncParams(const void* pSend, const TArgs& a):ptrStrat(), pSender(pSend), args(a), enabled(true) + /// Default constructor reduces the need for TArgs to have an empty constructor, only copy constructor is needed. + { + } + }; + + ActiveMethod _executeAsync; + + TArgs executeAsyncImpl(const NotifyAsyncParams& par) + { + if (!par.enabled) + { + return par.args; + } + + NotifyAsyncParams params = par; + TArgs retArgs(params.args); + params.ptrStrat->notify(params.pSender, retArgs); + return retArgs; + } + + TStrategy _strategy; /// The strategy used to notify observers. + bool _enabled; /// Stores if an event is enabled. Notifies on disabled events have no effect + /// but it is possible to change the observers. + mutable TMutex _mutex; + +private: + AbstractEvent(const AbstractEvent& other); + AbstractEvent& operator = (const AbstractEvent& other); +}; + + +template +class AbstractEvent +{ +public: + typedef TDelegate* DelegateHandle; + + AbstractEvent(): + _executeAsync(this, &AbstractEvent::executeAsyncImpl), + _enabled(true) + { + } + + AbstractEvent(const TStrategy& strat): + _executeAsync(this, &AbstractEvent::executeAsyncImpl), + _strategy(strat), + _enabled(true) + { + } + + virtual ~AbstractEvent() + { + } + + void operator += (const TDelegate& aDelegate) + /// Adds a delegate to the event. + /// + /// Exact behavior is determined by the TStrategy. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.add(aDelegate); + } + + void operator -= (const TDelegate& aDelegate) + /// Removes a delegate from the event. + /// + /// If the delegate is not found, this function does nothing. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.remove(aDelegate); + } + + DelegateHandle add(const TDelegate& aDelegate) + /// Adds a delegate to the event. + /// + /// Exact behavior is determined by the TStrategy. + /// + /// Returns a DelegateHandle which can be used in call to + /// remove() to remove the delegate. + { + typename TMutex::ScopedLock lock(_mutex); + return _strategy.add(aDelegate); + } + + void remove(DelegateHandle delegateHandle) + /// Removes a delegate from the event using a DelegateHandle + /// returned by add(). + /// + /// If the delegate is not found, this function does nothing. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.remove(delegateHandle); + } + + void operator () (const void* pSender) + /// Shortcut for notify(pSender, args); + { + notify(pSender); + } + + void operator () () + /// Shortcut for notify(args). + { + notify(0); + } + + void notify(const void* pSender) + /// Sends a notification to all registered delegates. The order is + /// determined by the TStrategy. This method is blocking. While executing, + /// the list of delegates may be modified. These changes don't + /// influence the current active notifications but are activated with + /// the next notify. If a delegate is removed during a notify(), the + /// delegate will no longer be invoked (unless it has already been + /// invoked prior to removal). If one of the delegates throws an exception, + /// the notify method is immediately aborted and the exception is propagated + /// to the caller. + { + Poco::ScopedLockWithUnlock lock(_mutex); + + if (!_enabled) return; + + // thread-safeness: + // copy should be faster and safer than blocking until + // execution ends + TStrategy strategy(_strategy); + lock.unlock(); + strategy.notify(pSender); + } + + ActiveResult notifyAsync(const void* pSender) + /// Sends a notification to all registered delegates. The order is + /// determined by the TStrategy. This method is not blocking and will + /// immediately return. The delegates are invoked in a separate thread. + /// Call activeResult.wait() to wait until the notification has ended. + /// While executing, other objects can change the delegate list. These changes don't + /// influence the current active notifications but are activated with + /// the next notify. If a delegate is removed during a notify(), the + /// delegate will no longer be invoked (unless it has already been + /// invoked prior to removal). If one of the delegates throws an exception, + /// the execution is aborted and the exception is propagated to the caller. + { + NotifyAsyncParams params(pSender); + { + typename TMutex::ScopedLock lock(_mutex); + + // thread-safeness: + // copy should be faster and safer than blocking until + // execution ends + // make a copy of the strategy here to guarantee that + // between notifyAsync and the execution of the method no changes can occur + + params.ptrStrat = SharedPtr(new TStrategy(_strategy)); + params.enabled = _enabled; + } + ActiveResult result = _executeAsync(params); + return result; + } + + void enable() + /// Enables the event. + { + typename TMutex::ScopedLock lock(_mutex); + _enabled = true; + } + + void disable() + /// Disables the event. notify and notifyAsnyc will be ignored, + /// but adding/removing delegates is still allowed. + { + typename TMutex::ScopedLock lock(_mutex); + _enabled = false; + } + + bool isEnabled() const + { + typename TMutex::ScopedLock lock(_mutex); + return _enabled; + } + + void clear() + /// Removes all delegates. + { + typename TMutex::ScopedLock lock(_mutex); + _strategy.clear(); + } + + bool empty() const + /// Checks if any delegates are registered at the delegate. + { + typename TMutex::ScopedLock lock(_mutex); + return _strategy.empty(); + } + +protected: + struct NotifyAsyncParams + { + SharedPtr ptrStrat; + const void* pSender; + bool enabled; + + NotifyAsyncParams(const void* pSend):ptrStrat(), pSender(pSend), enabled(true) + /// Default constructor reduces the need for TArgs to have an empty constructor, only copy constructor is needed. + { + } + }; + + ActiveMethod _executeAsync; + + void executeAsyncImpl(const NotifyAsyncParams& par) + { + if (!par.enabled) + { + return; + } + + NotifyAsyncParams params = par; + params.ptrStrat->notify(params.pSender); + return; + } + + TStrategy _strategy; /// The strategy used to notify observers. + bool _enabled; /// Stores if an event is enabled. Notifies on disabled events have no effect + /// but it is possible to change the observers. + mutable TMutex _mutex; + +private: + AbstractEvent(const AbstractEvent& other); + AbstractEvent& operator = (const AbstractEvent& other); +}; + + +} // namespace Poco + + +#endif // Foundation_AbstractFoundation_INCLUDED diff --git a/include/Poco/Poco/ActiveMethod.h b/include/Poco/Poco/ActiveMethod.h new file mode 100644 index 00000000..8ab48357 --- /dev/null +++ b/include/Poco/Poco/ActiveMethod.h @@ -0,0 +1,218 @@ +// +// ActiveMethod.h +// +// Library: Foundation +// Package: Threading +// Module: ActiveObjects +// +// Definition of the ActiveMethod class. +// +// Copyright (c) 2004-2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ActiveMethod_INCLUDED +#define Foundation_ActiveMethod_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/ActiveResult.h" +#include "Poco/ActiveRunnable.h" +#include "Poco/ActiveStarter.h" +#include "Poco/AutoPtr.h" + + +namespace Poco { + + +template > +class ActiveMethod + /// An active method is a method that, when called, executes + /// in its own thread. ActiveMethod's take exactly one + /// argument and can return a value. To pass more than one + /// argument to the method, use a struct. + /// The following example shows how to add an ActiveMethod + /// to a class: + /// + /// class ActiveObject + /// { + /// public: + /// ActiveObject(): + /// exampleActiveMethod(this, &ActiveObject::exampleActiveMethodImpl) + /// { + /// } + /// + /// ActiveMethod exampleActiveMethod; + /// + /// protected: + /// std::string exampleActiveMethodImpl(const std::string& arg) + /// { + /// ... + /// } + /// }; + /// + /// And following is an example that shows how to invoke an ActiveMethod. + /// + /// ActiveObject myActiveObject; + /// ActiveResult result = myActiveObject.exampleActiveMethod("foo"); + /// ... + /// result.wait(); + /// std::cout << result.data() << std::endl; + /// + /// The way an ActiveMethod is started can be changed by passing a StarterType + /// template argument with a corresponding class. The default ActiveStarter + /// starts the method in its own thread, obtained from a thread pool. + /// + /// For an alternative implementation of StarterType, see ActiveDispatcher. + /// + /// For methods that do not require an argument or a return value, the Void + /// class can be used. +{ +public: + typedef ResultType (OwnerType::*Callback)(const ArgType&); + typedef ActiveResult ActiveResultType; + typedef ActiveRunnable ActiveRunnableType; + + ActiveMethod(OwnerType* pOwner, Callback method): + _pOwner(pOwner), + _method(method) + /// Creates an ActiveMethod object. + { + poco_check_ptr (pOwner); + } + + ActiveResultType operator () (const ArgType& arg) + /// Invokes the ActiveMethod. + { + ActiveResultType result(new ActiveResultHolder()); + ActiveRunnableBase::Ptr pRunnable(new ActiveRunnableType(_pOwner, _method, arg, result)); + StarterType::start(_pOwner, pRunnable); + return result; + } + + ActiveMethod(const ActiveMethod& other): + _pOwner(other._pOwner), + _method(other._method) + { + } + + ActiveMethod& operator = (const ActiveMethod& other) + { + ActiveMethod tmp(other); + swap(tmp); + return *this; + } + + void swap(ActiveMethod& other) + { + std::swap(_pOwner, other._pOwner); + std::swap(_method, other._method); + } + +private: + ActiveMethod(); + + OwnerType* _pOwner; + Callback _method; +}; + + + +template +class ActiveMethod + /// An active method is a method that, when called, executes + /// in its own thread. ActiveMethod's take exactly one + /// argument and can return a value. To pass more than one + /// argument to the method, use a struct. + /// The following example shows how to add an ActiveMethod + /// to a class: + /// + /// class ActiveObject + /// { + /// public: + /// ActiveObject(): + /// exampleActiveMethod(this, &ActiveObject::exampleActiveMethodImpl) + /// { + /// } + /// + /// ActiveMethod exampleActiveMethod; + /// + /// protected: + /// std::string exampleActiveMethodImpl(const std::string& arg) + /// { + /// ... + /// } + /// }; + /// + /// And following is an example that shows how to invoke an ActiveMethod. + /// + /// ActiveObject myActiveObject; + /// ActiveResult result = myActiveObject.exampleActiveMethod("foo"); + /// ... + /// result.wait(); + /// std::cout << result.data() << std::endl; + /// + /// The way an ActiveMethod is started can be changed by passing a StarterType + /// template argument with a corresponding class. The default ActiveStarter + /// starts the method in its own thread, obtained from a thread pool. + /// + /// For an alternative implementation of StarterType, see ActiveDispatcher. + /// + /// For methods that do not require an argument or a return value, simply use void. +{ +public: + typedef ResultType (OwnerType::*Callback)(void); + typedef ActiveResult ActiveResultType; + typedef ActiveRunnable ActiveRunnableType; + + ActiveMethod(OwnerType* pOwner, Callback method): + _pOwner(pOwner), + _method(method) + /// Creates an ActiveMethod object. + { + poco_check_ptr (pOwner); + } + + ActiveResultType operator () (void) + /// Invokes the ActiveMethod. + { + ActiveResultType result(new ActiveResultHolder()); + ActiveRunnableBase::Ptr pRunnable(new ActiveRunnableType(_pOwner, _method, result)); + StarterType::start(_pOwner, pRunnable); + return result; + } + + ActiveMethod(const ActiveMethod& other): + _pOwner(other._pOwner), + _method(other._method) + { + } + + ActiveMethod& operator = (const ActiveMethod& other) + { + ActiveMethod tmp(other); + swap(tmp); + return *this; + } + + void swap(ActiveMethod& other) + { + std::swap(_pOwner, other._pOwner); + std::swap(_method, other._method); + } + +private: + ActiveMethod(); + + OwnerType* _pOwner; + Callback _method; +}; + + +} // namespace Poco + + +#endif // Foundation_ActiveMethod_INCLUDED diff --git a/include/Poco/Poco/ActiveResult.h b/include/Poco/Poco/ActiveResult.h new file mode 100644 index 00000000..04bd1530 --- /dev/null +++ b/include/Poco/Poco/ActiveResult.h @@ -0,0 +1,495 @@ +// +// ActiveResult.h +// +// Library: Foundation +// Package: Threading +// Module: ActiveObjects +// +// Definition of the ActiveResult class. +// +// Copyright (c) 2004-2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ActiveResult_INCLUDED +#define Foundation_ActiveResult_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Mutex.h" +#include "Poco/Event.h" +#include "Poco/RefCountedObject.h" +#include "Poco/Exception.h" +#include + + +namespace Poco { + + +template +class ActiveResultHolder: public RefCountedObject + /// This class holds the result of an asynchronous method + /// invocation. It is used to pass the result from the + /// execution thread back to the invocation thread. + /// The class uses reference counting for memory management. + /// Do not use this class directly, use ActiveResult instead. +{ +public: + ActiveResultHolder(): + _pData(0), + _pExc(0), + _event(Event::EVENT_MANUALRESET) + /// Creates an ActiveResultHolder. + { + } + + ResultType& data() + /// Returns a reference to the actual result. + { + poco_check_ptr(_pData); + return *_pData; + } + + void data(ResultType* pData) + { + delete _pData; + _pData = pData; + } + + void wait() + /// Pauses the caller until the result becomes available. + { + _event.wait(); + } + + bool tryWait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Returns true if the result became + /// available, false otherwise. + { + return _event.tryWait(milliseconds); + } + + void wait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Throws a TimeoutException if the + /// result did not became available. + { + _event.wait(milliseconds); + } + + void notify() + /// Notifies the invoking thread that the result became available. + { + _event.set(); + } + + bool failed() const + /// Returns true if the active method failed (and threw an exception). + /// Information about the exception can be obtained by calling error(). + { + return _pExc != 0; + } + + std::string error() const + /// If the active method threw an exception, a textual representation + /// of the exception is returned. An empty string is returned if the + /// active method completed successfully. + { + if (_pExc) + return _pExc->message(); + else + return std::string(); + } + + Exception* exception() const + /// If the active method threw an exception, a clone of the exception + /// object is returned, otherwise null. + { + return _pExc; + } + + void error(const Exception& exc) + /// Sets the exception. + { + delete _pExc; + _pExc = exc.clone(); + } + + void error(const std::string& msg) + /// Sets the exception. + { + delete _pExc; + _pExc = new UnhandledException(msg); + } + +protected: + ~ActiveResultHolder() + { + delete _pData; + delete _pExc; + } + +private: + ResultType* _pData; + Exception* _pExc; + Event _event; +}; + + + +template <> +class ActiveResultHolder: public RefCountedObject +{ +public: + ActiveResultHolder(): + _pExc(0), + _event(Event::EVENT_MANUALRESET) + /// Creates an ActiveResultHolder. + { + } + + void wait() + /// Pauses the caller until the result becomes available. + { + _event.wait(); + } + + bool tryWait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Returns true if the result became + /// available, false otherwise. + { + return _event.tryWait(milliseconds); + } + + void wait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Throws a TimeoutException if the + /// result did not became available. + { + _event.wait(milliseconds); + } + + void notify() + /// Notifies the invoking thread that the result became available. + { + _event.set(); + } + + bool failed() const + /// Returns true if the active method failed (and threw an exception). + /// Information about the exception can be obtained by calling error(). + { + return _pExc != 0; + } + + std::string error() const + /// If the active method threw an exception, a textual representation + /// of the exception is returned. An empty string is returned if the + /// active method completed successfully. + { + if (_pExc) + return _pExc->message(); + else + return std::string(); + } + + Exception* exception() const + /// If the active method threw an exception, a clone of the exception + /// object is returned, otherwise null. + { + return _pExc; + } + + void error(const Exception& exc) + /// Sets the exception. + { + delete _pExc; + _pExc = exc.clone(); + } + + void error(const std::string& msg) + /// Sets the exception. + { + delete _pExc; + _pExc = new UnhandledException(msg); + } + +protected: + ~ActiveResultHolder() + { + delete _pExc; + } + +private: + Exception* _pExc; + Event _event; +}; + + +template +class ActiveResult + /// This class holds the result of an asynchronous method + /// invocation (see class ActiveMethod). It is used to pass the + /// result from the execution thread back to the invocation thread. +{ +public: + typedef RT ResultType; + typedef ActiveResultHolder ActiveResultHolderType; + + ActiveResult(ActiveResultHolderType* pHolder): + _pHolder(pHolder) + /// Creates the active result. For internal use only. + { + poco_check_ptr (pHolder); + } + + ActiveResult(const ActiveResult& result) + /// Copy constructor. + { + _pHolder = result._pHolder; + _pHolder->duplicate(); + } + + ~ActiveResult() + /// Destroys the result. + { + _pHolder->release(); + } + + ActiveResult& operator = (const ActiveResult& result) + /// Assignment operator. + { + ActiveResult tmp(result); + swap(tmp); + return *this; + } + + void swap(ActiveResult& result) + { + using std::swap; + swap(_pHolder, result._pHolder); + } + + ResultType& data() const + /// Returns a reference to the result data. + { + return _pHolder->data(); + } + + void data(ResultType* pValue) + { + _pHolder->data(pValue); + } + + void wait() + /// Pauses the caller until the result becomes available. + { + _pHolder->wait(); + } + + bool tryWait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Returns true if the result became + /// available, false otherwise. + { + return _pHolder->tryWait(milliseconds); + } + + void wait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Throws a TimeoutException if the + /// result did not became available. + { + _pHolder->wait(milliseconds); + } + + bool available() const + /// Returns true if a result is available. + { + return _pHolder->tryWait(0); + } + + bool failed() const + /// Returns true if the active method failed (and threw an exception). + /// Information about the exception can be obtained by calling error(). + { + return _pHolder->failed(); + } + + std::string error() const + /// If the active method threw an exception, a textual representation + /// of the exception is returned. An empty string is returned if the + /// active method completed successfully. + { + return _pHolder->error(); + } + + Exception* exception() const + /// If the active method threw an exception, a clone of the exception + /// object is returned, otherwise null. + { + return _pHolder->exception(); + } + + void notify() + /// Notifies the invoking thread that the result became available. + /// For internal use only. + { + _pHolder->notify(); + } + + ResultType& data() + /// Returns a non-const reference to the result data. For internal + /// use only. + { + return _pHolder->data(); + } + + void error(const std::string& msg) + /// Sets the failed flag and the exception message. + { + _pHolder->error(msg); + } + + void error(const Exception& exc) + /// Sets the failed flag and the exception message. + { + _pHolder->error(exc); + } + +private: + ActiveResult(); + + ActiveResultHolderType* _pHolder; +}; + + + +template <> +class ActiveResult + /// This class holds the result of an asynchronous method + /// invocation (see class ActiveMethod). It is used to pass the + /// result from the execution thread back to the invocation thread. +{ +public: + typedef ActiveResultHolder ActiveResultHolderType; + + ActiveResult(ActiveResultHolderType* pHolder): + _pHolder(pHolder) + /// Creates the active result. For internal use only. + { + poco_check_ptr (pHolder); + } + + ActiveResult(const ActiveResult& result) + /// Copy constructor. + { + _pHolder = result._pHolder; + _pHolder->duplicate(); + } + + ~ActiveResult() + /// Destroys the result. + { + _pHolder->release(); + } + + ActiveResult& operator = (const ActiveResult& result) + /// Assignment operator. + { + ActiveResult tmp(result); + swap(tmp); + return *this; + } + + void swap(ActiveResult& result) + { + using std::swap; + swap(_pHolder, result._pHolder); + } + + void wait() + /// Pauses the caller until the result becomes available. + { + _pHolder->wait(); + } + + bool tryWait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Returns true if the result became + /// available, false otherwise. + { + return _pHolder->tryWait(milliseconds); + } + + void wait(long milliseconds) + /// Waits up to the specified interval for the result to + /// become available. Throws a TimeoutException if the + /// result did not became available. + { + _pHolder->wait(milliseconds); + } + + bool available() const + /// Returns true if a result is available. + { + return _pHolder->tryWait(0); + } + + bool failed() const + /// Returns true if the active method failed (and threw an exception). + /// Information about the exception can be obtained by calling error(). + { + return _pHolder->failed(); + } + + std::string error() const + /// If the active method threw an exception, a textual representation + /// of the exception is returned. An empty string is returned if the + /// active method completed successfully. + { + return _pHolder->error(); + } + + Exception* exception() const + /// If the active method threw an exception, a clone of the exception + /// object is returned, otherwise null. + { + return _pHolder->exception(); + } + + void notify() + /// Notifies the invoking thread that the result became available. + /// For internal use only. + { + _pHolder->notify(); + } + + void error(const std::string& msg) + /// Sets the failed flag and the exception message. + { + _pHolder->error(msg); + } + + void error(const Exception& exc) + /// Sets the failed flag and the exception message. + { + _pHolder->error(exc); + } + +private: + ActiveResult(); + + ActiveResultHolderType* _pHolder; +}; + + +} // namespace Poco + + +#endif // Foundation_ActiveResult_INCLUDED diff --git a/include/Poco/Poco/ActiveRunnable.h b/include/Poco/Poco/ActiveRunnable.h new file mode 100644 index 00000000..051f3478 --- /dev/null +++ b/include/Poco/Poco/ActiveRunnable.h @@ -0,0 +1,231 @@ +// +// ActiveRunnable.h +// +// Library: Foundation +// Package: Threading +// Module: ActiveObjects +// +// Definition of the ActiveRunnable class. +// +// Copyright (c) 2004-2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ActiveRunnable_INCLUDED +#define Foundation_ActiveRunnable_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/ActiveResult.h" +#include "Poco/Runnable.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include "Poco/Exception.h" + + +namespace Poco { + + +class ActiveRunnableBase: public Runnable, public RefCountedObject + /// The base class for all ActiveRunnable instantiations. +{ +public: + using Ptr = AutoPtr; +}; + + +template +class ActiveRunnable: public ActiveRunnableBase + /// This class is used by ActiveMethod. + /// See the ActiveMethod class for more information. +{ +public: + typedef ResultType (OwnerType::*Callback)(const ArgType&); + typedef ActiveResult ActiveResultType; + + ActiveRunnable(OwnerType* pOwner, Callback method, const ArgType& arg, const ActiveResultType& result): + _pOwner(pOwner), + _method(method), + _arg(arg), + _result(result) + { + poco_check_ptr (pOwner); + } + + void run() + { + ActiveRunnableBase::Ptr guard(this, false); // ensure automatic release when done + try + { + _result.data(new ResultType((_pOwner->*_method)(_arg))); + } + catch (Exception& e) + { + _result.error(e); + } + catch (std::exception& e) + { + _result.error(e.what()); + } + catch (...) + { + _result.error("unknown exception"); + } + _result.notify(); + } + +private: + OwnerType* _pOwner; + Callback _method; + ArgType _arg; + ActiveResultType _result; +}; + + +template +class ActiveRunnable: public ActiveRunnableBase + /// This class is used by ActiveMethod. + /// See the ActiveMethod class for more information. +{ +public: + typedef void (OwnerType::*Callback)(const ArgType&); + typedef ActiveResult ActiveResultType; + + ActiveRunnable(OwnerType* pOwner, Callback method, const ArgType& arg, const ActiveResultType& result): + _pOwner(pOwner), + _method(method), + _arg(arg), + _result(result) + { + poco_check_ptr (pOwner); + } + + void run() + { + ActiveRunnableBase::Ptr guard(this, false); // ensure automatic release when done + try + { + (_pOwner->*_method)(_arg); + } + catch (Exception& e) + { + _result.error(e); + } + catch (std::exception& e) + { + _result.error(e.what()); + } + catch (...) + { + _result.error("unknown exception"); + } + _result.notify(); + } + +private: + OwnerType* _pOwner; + Callback _method; + ArgType _arg; + ActiveResultType _result; +}; + + +template +class ActiveRunnable: public ActiveRunnableBase + /// This class is used by ActiveMethod. + /// See the ActiveMethod class for more information. +{ +public: + typedef ResultType (OwnerType::*Callback)(); + typedef ActiveResult ActiveResultType; + + ActiveRunnable(OwnerType* pOwner, Callback method, const ActiveResultType& result): + _pOwner(pOwner), + _method(method), + _result(result) + { + poco_check_ptr (pOwner); + } + + void run() + { + ActiveRunnableBase::Ptr guard(this, false); // ensure automatic release when done + try + { + _result.data(new ResultType((_pOwner->*_method)())); + } + catch (Exception& e) + { + _result.error(e); + } + catch (std::exception& e) + { + _result.error(e.what()); + } + catch (...) + { + _result.error("unknown exception"); + } + _result.notify(); + } + +private: + OwnerType* _pOwner; + Callback _method; + ActiveResultType _result; +}; + + +template +class ActiveRunnable: public ActiveRunnableBase + /// This class is used by ActiveMethod. + /// See the ActiveMethod class for more information. +{ +public: + typedef void (OwnerType::*Callback)(); + typedef ActiveResult ActiveResultType; + + ActiveRunnable(OwnerType* pOwner, Callback method, const ActiveResultType& result): + _pOwner(pOwner), + _method(method), + _result(result) + { + poco_check_ptr (pOwner); + } + + void run() + { + ActiveRunnableBase::Ptr guard(this, false); // ensure automatic release when done + try + { + (_pOwner->*_method)(); + } + catch (Exception& e) + { + _result.error(e); + } + catch (std::exception& e) + { + _result.error(e.what()); + } + catch (...) + { + _result.error("unknown exception"); + } + _result.notify(); + } + +private: + OwnerType* _pOwner; + Callback _method; + ActiveResultType _result; +}; + + +} // namespace Poco + + +#endif // Foundation_ActiveRunnable_INCLUDED diff --git a/include/Poco/Poco/ActiveStarter.h b/include/Poco/Poco/ActiveStarter.h new file mode 100644 index 00000000..b79a31e8 --- /dev/null +++ b/include/Poco/Poco/ActiveStarter.h @@ -0,0 +1,48 @@ +// +// ActiveStarter.h +// +// Library: Foundation +// Package: Threading +// Module: ActiveObjects +// +// Definition of the ActiveStarter class. +// +// Copyright (c) 2006-2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ActiveStarter_INCLUDED +#define Foundation_ActiveStarter_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/ThreadPool.h" +#include "Poco/ActiveRunnable.h" + + +namespace Poco { + + +template +class ActiveStarter + /// The default implementation of the StarterType + /// policy for ActiveMethod. It starts the method + /// in its own thread, obtained from the default + /// thread pool. +{ +public: + static void start(OwnerType* /*pOwner*/, ActiveRunnableBase::Ptr pRunnable) + { + ThreadPool::defaultPool().start(*pRunnable); + pRunnable->duplicate(); // The runnable will release itself. + } +}; + + +} // namespace Poco + + +#endif // Foundation_ActiveStarter_INCLUDED diff --git a/include/Poco/Poco/Alignment.h b/include/Poco/Poco/Alignment.h new file mode 100644 index 00000000..bf88db04 --- /dev/null +++ b/include/Poco/Poco/Alignment.h @@ -0,0 +1,25 @@ +// +// Alignment.h +// +// Library: Foundation +// Package: Dynamic +// Module: Alignment +// +// Definition of the Alignment class. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Alignment_INCLUDED +#define Foundation_Alignment_INCLUDED + + +#include +#define POCO_HAVE_ALIGNMENT + + +#endif // Foundation_Alignment_INCLUDED diff --git a/include/Poco/Poco/Any.h b/include/Poco/Poco/Any.h new file mode 100644 index 00000000..ba6b7143 --- /dev/null +++ b/include/Poco/Poco/Any.h @@ -0,0 +1,633 @@ +// +// Any.h +// +// Library: Foundation +// Package: Core +// Module: Any +// +// Copyright Kevlin Henney, 2000, 2001, 2002. All rights reserved. +// Extracted from Boost 1.33.1 lib and adapted for poco: Peter Schojer/AppliedInformatics 2006-02-02 +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Any_INCLUDED +#define Foundation_Any_INCLUDED + + +#include "Poco/Exception.h" +#include "Poco/MetaProgramming.h" +#include +#include +#include + + +namespace Poco { + + +class Any; + + +namespace Dynamic { + +class Var; +class VarHolder; +template class VarHolderImpl; + +} + + +#ifndef POCO_NO_SOO + + +template +union Placeholder + /// ValueHolder union (used by Poco::Any and Poco::Dynamic::Var for small + /// object optimization, when enabled). + /// + /// If Holder fits into POCO_SMALL_OBJECT_SIZE bytes of storage, + /// it will be placement-new-allocated into the local buffer + /// (i.e. there will be no heap-allocation). The local buffer size is one byte + /// larger - [POCO_SMALL_OBJECT_SIZE + 1], additional byte value indicating + /// where the object was allocated (0 => heap, 1 => local). +{ +public: + struct Size + { + static const unsigned int value = SizeV; + }; + + Placeholder() + { + erase(); + } + + void erase() + { + std::memset(holder, 0, sizeof(Placeholder)); + } + + bool isLocal() const + { + return holder[SizeV] != 0; + } + + void setLocal(bool local) const + { + holder[SizeV] = local ? 1 : 0; + } + + PlaceholderT* content() const + { + if (isLocal()) + return reinterpret_cast(holder); + else + return pHolder; + } + +// MSVC71,80 won't extend friendship to nested class (Any::Holder) +#if !defined(POCO_MSVC_VERSION) || (defined(POCO_MSVC_VERSION) && (POCO_MSVC_VERSION > 80)) +private: +#endif + typedef typename std::aligned_storage::type AlignerType; + + PlaceholderT* pHolder; + mutable char holder[SizeV + 1]; + AlignerType aligner; + + friend class Any; + friend class Dynamic::Var; + friend class Dynamic::VarHolder; + template friend class Dynamic::VarHolderImpl; +}; + + +#else // !POCO_NO_SOO + + +template +union Placeholder + /// ValueHolder union (used by Poco::Any and Poco::Dynamic::Var for small + /// object optimization, when enabled). + /// + /// If Holder fits into POCO_SMALL_OBJECT_SIZE bytes of storage, + /// it will be placement-new-allocated into the local buffer + /// (i.e. there will be no heap-allocation). The local buffer size is one byte + /// larger - [POCO_SMALL_OBJECT_SIZE + 1], additional byte value indicating + /// where the object was allocated (0 => heap, 1 => local). +{ +public: + Placeholder () + { + } + + PlaceholderT* content() const + { + return pHolder; + } + +// MSVC71,80 won't extend friendship to nested class (Any::Holder) +#if !defined(POCO_MSVC_VERSION) || (defined(POCO_MSVC_VERSION) && (POCO_MSVC_VERSION > 80)) +private: +#endif + + PlaceholderT* pHolder; + + friend class Any; + friend class Dynamic::Var; + friend class Dynamic::VarHolder; + template friend class Dynamic::VarHolderImpl; +}; + + +#endif // POCO_NO_SOO + + +class Any + /// An Any class represents a general type and is capable of storing any type, supporting type-safe extraction + /// of the internally stored data. + /// + /// Code taken from the Boost 1.33.1 library. Original copyright by Kevlin Henney. Modified for Poco + /// by Applied Informatics. + /// + /// Modified for small object optimization support (optionally supported through conditional compilation) + /// by Alex Fabijanic. +{ +public: + +#ifndef POCO_NO_SOO + + Any() + /// Creates an empty any type. + { + } + + template + Any(const ValueType & value) + /// Creates an any which stores the init parameter inside. + /// + /// Example: + /// Any a(13); + /// Any a(string("12345")); + { + construct(value); + } + + Any(const Any& other) + /// Copy constructor, works with both empty and initialized Any values. + { + if ((this != &other) && !other.empty()) + construct(other); + } + + ~Any() + /// Destructor. If Any is locally held, calls ValueHolder destructor; + /// otherwise, deletes the placeholder from the heap. + { + if (!empty()) + { + if (_valueHolder.isLocal()) + destruct(); + else + delete content(); + } + } + + Any& swap(Any& other) + /// Swaps the content of the two Anys. + /// + /// When small object optimization is enabled, swap only + /// has no-throw guarantee when both (*this and other) + /// objects are allocated on the heap. + { + if (this == &other) return *this; + + if (!_valueHolder.isLocal() && !other._valueHolder.isLocal()) + { + std::swap(_valueHolder.pHolder, other._valueHolder.pHolder); + } + else + { + Any tmp(*this); + try + { + if (_valueHolder.isLocal()) destruct(); + construct(other); + other = tmp; + } + catch (...) + { + construct(tmp); + throw; + } + } + + return *this; + } + + template + Any& operator = (const ValueType& rhs) + /// Assignment operator for all types != Any. + /// + /// Example: + /// Any a = 13; + /// Any a = string("12345"); + { + construct(rhs); + return *this; + } + + Any& operator = (const Any& rhs) + /// Assignment operator for Any. + { + if ((this != &rhs) && !rhs.empty()) + construct(rhs); + else if ((this != &rhs) && rhs.empty()) + _valueHolder.erase(); + + return *this; + } + + bool empty() const + /// Returns true if the Any is empty. + { + char buf[POCO_SMALL_OBJECT_SIZE] = { 0 }; + return 0 == std::memcmp(_valueHolder.holder, buf, POCO_SMALL_OBJECT_SIZE); + } + + const std::type_info & type() const + /// Returns the type information of the stored content. + /// If the Any is empty typeid(void) is returned. + /// It is recommended to always query an Any for its type info before + /// trying to extract data via an AnyCast/RefAnyCast. + { + return empty() ? typeid(void) : content()->type(); + } + +private: + class ValueHolder + { + public: + virtual ~ValueHolder() = default; + + virtual const std::type_info & type() const = 0; + virtual void clone(Placeholder*) const = 0; + }; + + template + class Holder : public ValueHolder + { + public: + Holder(const ValueType & value) : _held(value) + { + } + + virtual const std::type_info & type() const + { + return typeid(ValueType); + } + + virtual void clone(Placeholder* pPlaceholder) const + { + if ((sizeof(Holder) <= POCO_SMALL_OBJECT_SIZE)) + { + new ((ValueHolder*) pPlaceholder->holder) Holder(_held); + pPlaceholder->setLocal(true); + } + else + { + pPlaceholder->pHolder = new Holder(_held); + pPlaceholder->setLocal(false); + } + } + + ValueType _held; + + private: + Holder & operator = (const Holder &); + }; + + ValueHolder* content() const + { + return _valueHolder.content(); + } + + template + void construct(const ValueType& value) + { + if (sizeof(Holder) <= Placeholder::Size::value) + { + new (reinterpret_cast(_valueHolder.holder)) Holder(value); + _valueHolder.setLocal(true); + } + else + { + _valueHolder.pHolder = new Holder(value); + _valueHolder.setLocal(false); + } + } + + void construct(const Any& other) + { + if (!other.empty()) + other.content()->clone(&_valueHolder); + else + _valueHolder.erase(); + } + + void destruct() + { + content()->~ValueHolder(); + } + + Placeholder _valueHolder; + + +#else // if POCO_NO_SOO + + + Any(): _pHolder(0) + /// Creates an empty any type. + { + } + + template + Any(const ValueType& value): + _pHolder(new Holder(value)) + /// Creates an any which stores the init parameter inside. + /// + /// Example: + /// Any a(13); + /// Any a(string("12345")); + { + } + + Any(const Any& other): + _pHolder(other._pHolder ? other._pHolder->clone() : 0) + /// Copy constructor, works with both empty and initialized Any values. + { + } + + ~Any() + { + delete _pHolder; + } + + Any& swap(Any& rhs) + /// Swaps the content of the two Anys. + { + std::swap(_pHolder, rhs._pHolder); + return *this; + } + + template + Any& operator = (const ValueType& rhs) + /// Assignment operator for all types != Any. + /// + /// Example: + /// Any a = 13; + /// Any a = string("12345"); + { + Any(rhs).swap(*this); + return *this; + } + + Any& operator = (const Any& rhs) + /// Assignment operator for Any. + { + Any(rhs).swap(*this); + return *this; + } + + bool empty() const + /// Returns true if the Any is empty. + { + return !_pHolder; + } + + const std::type_info& type() const + /// Returns the type information of the stored content. + /// If the Any is empty typeid(void) is returned. + /// It is recommended to always query an Any for its type info before + /// trying to extract data via an AnyCast/RefAnyCast. + { + return _pHolder ? _pHolder->type() : typeid(void); + } + +private: + class ValueHolder + { + public: + virtual ~ValueHolder() = default; + + virtual const std::type_info& type() const = 0; + virtual ValueHolder* clone() const = 0; + }; + + template + class Holder: public ValueHolder + { + public: + Holder(const ValueType& value): + _held(value) + { + } + + virtual const std::type_info& type() const + { + return typeid(ValueType); + } + + virtual ValueHolder* clone() const + { + return new Holder(_held); + } + + ValueType _held; + + private: + Holder & operator = (const Holder &); + }; + + ValueHolder* content() const + { + return _pHolder; + } + +private: + ValueHolder* _pHolder; + +#endif // POCO_NO_SOO + + template + friend ValueType* AnyCast(Any*); + + template + friend ValueType* UnsafeAnyCast(Any*); + + template + friend const ValueType& RefAnyCast(const Any&); + + template + friend ValueType& RefAnyCast(Any&); + + template + friend ValueType AnyCast(Any&); +}; + + +template +ValueType* AnyCast(Any* operand) + /// AnyCast operator used to extract the ValueType from an Any*. Will return a pointer + /// to the stored value. + /// + /// Example Usage: + /// MyType* pTmp = AnyCast(pAny). + /// Will return NULL if the cast fails, i.e. types don't match. +{ + return operand && operand->type() == typeid(ValueType) + ? &static_cast*>(operand->content())->_held + : 0; +} + + +template +const ValueType* AnyCast(const Any* operand) + /// AnyCast operator used to extract a const ValueType pointer from an const Any*. Will return a const pointer + /// to the stored value. + /// + /// Example Usage: + /// const MyType* pTmp = AnyCast(pAny). + /// Will return NULL if the cast fails, i.e. types don't match. +{ + return AnyCast(const_cast(operand)); +} + + +template +ValueType AnyCast(Any& operand) + /// AnyCast operator used to extract a copy of the ValueType from an Any&. + /// + /// Example Usage: + /// MyType tmp = AnyCast(anAny). + /// Will throw a BadCastException if the cast fails. + /// Do not use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& tmp = ... + /// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in + /// these cases. +{ + typedef typename TypeWrapper::TYPE NonRef; + + NonRef* result = AnyCast(&operand); + if (!result) + { + std::string s = "RefAnyCast: Failed to convert between Any types "; + if (operand._pHolder) + { + s.append(1, '('); + s.append(operand._pHolder->type().name()); + s.append(" => "); + s.append(typeid(ValueType).name()); + s.append(1, ')'); + } + throw BadCastException(s); + } + return *result; +} + + +template +ValueType AnyCast(const Any& operand) + /// AnyCast operator used to extract a copy of the ValueType from an const Any&. + /// + /// Example Usage: + /// MyType tmp = AnyCast(anAny). + /// Will throw a BadCastException if the cast fails. + /// Do not use an AnyCast in combination with references, i.e. MyType& tmp = ... or const MyType& = ... + /// Some compilers will accept this code although a copy is returned. Use the RefAnyCast in + /// these cases. +{ + typedef typename TypeWrapper::TYPE NonRef; + + return AnyCast(const_cast(operand)); +} + + +template +const ValueType& RefAnyCast(const Any & operand) + /// AnyCast operator used to return a const reference to the internal data. + /// + /// Example Usage: + /// const MyType& tmp = RefAnyCast(anAny); +{ + ValueType* result = AnyCast(const_cast(&operand)); + if (!result) + { + std::string s = "RefAnyCast: Failed to convert between Any types "; + if (operand._pHolder) + { + s.append(1, '('); + s.append(operand._pHolder->type().name()); + s.append(" => "); + s.append(typeid(ValueType).name()); + s.append(1, ')'); + } + throw BadCastException(s); + } + return *result; +} + + +template +ValueType& RefAnyCast(Any& operand) + /// AnyCast operator used to return a reference to the internal data. + /// + /// Example Usage: + /// MyType& tmp = RefAnyCast(anAny); +{ + ValueType* result = AnyCast(&operand); + if (!result) + { + std::string s = "RefAnyCast: Failed to convert between Any types "; + if (operand._pHolder) + { + s.append(1, '('); + s.append(operand._pHolder->type().name()); + s.append(" => "); + s.append(typeid(ValueType).name()); + s.append(1, ')'); + } + throw BadCastException(s); + } + return *result; +} + + +template +ValueType* UnsafeAnyCast(Any* operand) + /// The "unsafe" versions of AnyCast are not part of the + /// public interface and may be removed at any time. They are + /// required where we know what type is stored in the any and can't + /// use typeid() comparison, e.g., when our types may travel across + /// different shared libraries. +{ + return &static_cast*>(operand->content())->_held; +} + + +template +const ValueType* UnsafeAnyCast(const Any* operand) + /// The "unsafe" versions of AnyCast are not part of the + /// public interface and may be removed at any time. They are + /// required where we know what type is stored in the any and can't + /// use typeid() comparison, e.g., when our types may travel across + /// different shared libraries. +{ + return AnyCast(const_cast(operand)); +} + + +} // namespace Poco + + +#endif diff --git a/include/Poco/Poco/Ascii.h b/include/Poco/Poco/Ascii.h new file mode 100644 index 00000000..e7a8b855 --- /dev/null +++ b/include/Poco/Poco/Ascii.h @@ -0,0 +1,229 @@ +// +// Ascii.h +// +// Library: Foundation +// Package: Core +// Module: Ascii +// +// Definition of the Ascii class. +// +// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Ascii_INCLUDED +#define Foundation_Ascii_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +class Foundation_API Ascii + /// This class contains enumerations and static + /// utility functions for dealing with ASCII characters + /// and their properties. + /// + /// The classification functions will also work if + /// non-ASCII character codes are passed to them, + /// but classification will only check for + /// ASCII characters. + /// + /// This allows the classification methods to be used + /// on the single bytes of a UTF-8 string, without + /// causing assertions or inconsistent results (depending + /// upon the current locale) on bytes outside the ASCII range, + /// as may be produced by Ascii::isSpace(), etc. +{ +public: + enum CharacterProperties + /// ASCII character properties. + { + ACP_CONTROL = 0x0001, + ACP_SPACE = 0x0002, + ACP_PUNCT = 0x0004, + ACP_DIGIT = 0x0008, + ACP_HEXDIGIT = 0x0010, + ACP_ALPHA = 0x0020, + ACP_LOWER = 0x0040, + ACP_UPPER = 0x0080, + ACP_GRAPH = 0x0100, + ACP_PRINT = 0x0200 + }; + + static int properties(int ch); + /// Return the ASCII character properties for the + /// character with the given ASCII value. + /// + /// If the character is outside the ASCII range + /// (0 .. 127), 0 is returned. + + static bool hasSomeProperties(int ch, int properties); + /// Returns true if the given character is + /// within the ASCII range and has at least one of + /// the given properties. + + static bool hasProperties(int ch, int properties); + /// Returns true if the given character is + /// within the ASCII range and has all of + /// the given properties. + + static bool isAscii(int ch); + /// Returns true iff the given character code is within + /// the ASCII range (0 .. 127). + + static bool isSpace(int ch); + /// Returns true iff the given character is a whitespace. + + static bool isDigit(int ch); + /// Returns true iff the given character is a digit. + + static bool isHexDigit(int ch); + /// Returns true iff the given character is a hexadecimal digit. + + static bool isPunct(int ch); + /// Returns true iff the given character is a punctuation character. + + static bool isAlpha(int ch); + /// Returns true iff the given character is an alphabetic character. + + static bool isAlphaNumeric(int ch); + /// Returns true iff the given character is an alphabetic character. + + static bool isLower(int ch); + /// Returns true iff the given character is a lowercase alphabetic + /// character. + + static bool isUpper(int ch); + /// Returns true iff the given character is an uppercase alphabetic + /// character. + + static bool isPrintable(int ch); + /// Returns true iff the given character is printable. + + static int toLower(int ch); + /// If the given character is an uppercase character, + /// return its lowercase counterpart, otherwise return + /// the character. + + static int toUpper(int ch); + /// If the given character is a lowercase character, + /// return its uppercase counterpart, otherwise return + /// the character. + +private: + static const int CHARACTER_PROPERTIES[128]; +}; + + +// +// inlines +// +inline int Ascii::properties(int ch) +{ + if (isAscii(ch)) + return CHARACTER_PROPERTIES[ch]; + else + return 0; +} + + +inline bool Ascii::isAscii(int ch) +{ + return (static_cast(ch) & 0xFFFFFF80) == 0; +} + + +inline bool Ascii::hasProperties(int ch, int props) +{ + return (properties(ch) & props) == props; +} + + +inline bool Ascii::hasSomeProperties(int ch, int props) +{ + return (properties(ch) & props) != 0; +} + + +inline bool Ascii::isSpace(int ch) +{ + return hasProperties(ch, ACP_SPACE); +} + + +inline bool Ascii::isDigit(int ch) +{ + return hasProperties(ch, ACP_DIGIT); +} + + +inline bool Ascii::isHexDigit(int ch) +{ + return hasProperties(ch, ACP_HEXDIGIT); +} + + +inline bool Ascii::isPunct(int ch) +{ + return hasProperties(ch, ACP_PUNCT); +} + + +inline bool Ascii::isAlpha(int ch) +{ + return hasProperties(ch, ACP_ALPHA); +} + + +inline bool Ascii::isAlphaNumeric(int ch) +{ + return hasSomeProperties(ch, ACP_ALPHA | ACP_DIGIT); +} + + +inline bool Ascii::isLower(int ch) +{ + return hasProperties(ch, ACP_LOWER); +} + + +inline bool Ascii::isUpper(int ch) +{ + return hasProperties(ch, ACP_UPPER); +} + + +inline bool Ascii::isPrintable(int ch) +{ + return hasProperties(ch, ACP_PRINT); +} + + +inline int Ascii::toLower(int ch) +{ + if (isUpper(ch)) + return ch + 32; + else + return ch; +} + + +inline int Ascii::toUpper(int ch) +{ + if (isLower(ch)) + return ch - 32; + else + return ch; +} + + +} // namespace Poco + + +#endif // Foundation_Ascii_INCLUDED diff --git a/include/Poco/Poco/AtomicCounter.h b/include/Poco/Poco/AtomicCounter.h new file mode 100644 index 00000000..1377fd4c --- /dev/null +++ b/include/Poco/Poco/AtomicCounter.h @@ -0,0 +1,133 @@ +// +// AtomicCounter.h +// +// Library: Foundation +// Package: Core +// Module: AtomicCounter +// +// Definition of the AtomicCounter class. +// +// Copyright (c) 2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_AtomicCounter_INCLUDED +#define Foundation_AtomicCounter_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +class Foundation_API AtomicCounter + /// This class implements a simple counter, which + /// provides atomic operations that are safe to + /// use in a multithreaded environment. + /// + /// Typical usage of AtomicCounter is for implementing + /// reference counting and similar functionality. +{ +public: + typedef int ValueType; /// The underlying integer type. + + AtomicCounter(); + /// Creates a new AtomicCounter and initializes it to zero. + + explicit AtomicCounter(ValueType initialValue); + /// Creates a new AtomicCounter and initializes it with + /// the given value. + + AtomicCounter(const AtomicCounter& counter); + /// Creates the counter by copying another one. + + ~AtomicCounter(); + /// Destroys the AtomicCounter. + + AtomicCounter& operator = (const AtomicCounter& counter); + /// Assigns the value of another AtomicCounter. + + AtomicCounter& operator = (ValueType value); + /// Assigns a value to the counter. + + operator ValueType () const; + /// Converts the AtomicCounter to ValueType. + + ValueType value() const; + /// Returns the value of the counter. + + ValueType operator ++ (); // prefix + /// Increments the counter and returns the result. + + ValueType operator ++ (int); // postfix + /// Increments the counter and returns the previous value. + + ValueType operator -- (); // prefix + /// Decrements the counter and returns the result. + + ValueType operator -- (int); // postfix + /// Decrements the counter and returns the previous value. + + bool operator ! () const; + /// Returns true if the counter is zero, false otherwise. + +private: + std::atomic _counter; +}; + + +// +// inlines +// + +inline AtomicCounter::operator AtomicCounter::ValueType () const +{ + return _counter.load(); +} + + +inline AtomicCounter::ValueType AtomicCounter::value() const +{ + return _counter.load(); +} + + +inline AtomicCounter::ValueType AtomicCounter::operator ++ () // prefix +{ + return ++_counter; +} + + +inline AtomicCounter::ValueType AtomicCounter::operator ++ (int) // postfix +{ + return _counter++; +} + + +inline AtomicCounter::ValueType AtomicCounter::operator -- () // prefix +{ + return --_counter; +} + + +inline AtomicCounter::ValueType AtomicCounter::operator -- (int) // postfix +{ + return _counter--; +} + + +inline bool AtomicCounter::operator ! () const +{ + return _counter.load() == 0; +} + + +} // namespace Poco + + +#endif // Foundation_AtomicCounter_INCLUDED diff --git a/include/Poco/Poco/AutoPtr.h b/include/Poco/Poco/AutoPtr.h new file mode 100644 index 00000000..8d6bbacd --- /dev/null +++ b/include/Poco/Poco/AutoPtr.h @@ -0,0 +1,417 @@ +// +// AutoPtr.h +// +// Library: Foundation +// Package: Core +// Module: AutoPtr +// +// Definition of the AutoPtr template class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_AutoPtr_INCLUDED +#define Foundation_AutoPtr_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include +#include + + +namespace Poco { + + +template +class AutoPtr + /// AutoPtr is a "smart" pointer for classes implementing + /// reference counting based garbage collection. + /// To be usable with the AutoPtr template, a class must + /// implement the following behaviour: + /// A class must maintain a reference count. + /// The constructors of the object initialize the reference + /// count to one. + /// The class must implement a public duplicate() method: + /// void duplicate(); + /// that increments the reference count by one. + /// The class must implement a public release() method: + /// void release() + /// that decrements the reference count by one, and, + /// if the reference count reaches zero, deletes the + /// object. + /// + /// AutoPtr works in the following way: + /// If an AutoPtr is assigned an ordinary pointer to + /// an object (via the constructor or the assignment operator), + /// it takes ownership of the object and the object's reference + /// count remains unchanged. + /// If the AutoPtr is assigned another AutoPtr, the + /// object's reference count is incremented by one by + /// calling duplicate() on its object. + /// The destructor of AutoPtr calls release() on its + /// object. + /// AutoPtr supports dereferencing with both the -> + /// and the * operator. An attempt to dereference a null + /// AutoPtr results in a NullPointerException being thrown. + /// AutoPtr also implements all relational operators. + /// Note that AutoPtr allows casting of its encapsulated data types. +{ +public: + AutoPtr(): _ptr(nullptr) + { + } + + AutoPtr(C* ptr): _ptr(ptr) + { + } + + AutoPtr(C* ptr, bool shared): _ptr(ptr) + { + if (shared && _ptr) _ptr->duplicate(); + } + + AutoPtr(const AutoPtr& ptr): _ptr(ptr._ptr) + { + if (_ptr) _ptr->duplicate(); + } + + AutoPtr(AutoPtr&& ptr) noexcept: _ptr(std::move(ptr._ptr)) + { + ptr._ptr = nullptr; + } + + template + AutoPtr(const AutoPtr& ptr): _ptr(const_cast(ptr.get())) + { + if (_ptr) _ptr->duplicate(); + } + + ~AutoPtr() + { + if (_ptr) _ptr->release(); + } + + AutoPtr& assign(C* ptr) + { + if (_ptr != ptr) + { + if (_ptr) _ptr->release(); + _ptr = ptr; + } + return *this; + } + + AutoPtr& assign(C* ptr, bool shared) + { + if (_ptr != ptr) + { + if (_ptr) _ptr->release(); + _ptr = ptr; + if (shared && _ptr) _ptr->duplicate(); + } + return *this; + } + + AutoPtr& assign(const AutoPtr& ptr) + { + if (&ptr != this) + { + if (_ptr) _ptr->release(); + _ptr = ptr._ptr; + if (_ptr) _ptr->duplicate(); + } + return *this; + } + + template + AutoPtr& assign(const AutoPtr& ptr) + { + if (ptr.get() != _ptr) + { + if (_ptr) _ptr->release(); + _ptr = const_cast(ptr.get()); + if (_ptr) _ptr->duplicate(); + } + return *this; + } + + void reset() + { + if (_ptr) + { + _ptr->release(); + _ptr = nullptr; + } + } + + void reset(C* ptr) + { + assign(ptr); + } + + void reset(C* ptr, bool shared) + { + assign(ptr, shared); + } + + void reset(const AutoPtr& ptr) + { + assign(ptr); + } + + template + void reset(const AutoPtr& ptr) + { + assign(ptr); + } + + AutoPtr& operator = (C* ptr) + { + return assign(ptr); + } + + AutoPtr& operator = (const AutoPtr& ptr) + { + return assign(ptr); + } + + AutoPtr& operator = (AutoPtr&& ptr) noexcept + { + if (_ptr) _ptr->release(); + _ptr = ptr._ptr; + ptr._ptr = nullptr; + return *this; + } + + template + AutoPtr& operator = (const AutoPtr& ptr) + { + return assign(ptr); + } + + void swap(AutoPtr& ptr) + { + std::swap(_ptr, ptr._ptr); + } + + template + AutoPtr cast() const + /// Casts the AutoPtr via a dynamic cast to the given type. + /// Returns an AutoPtr containing NULL if the cast fails. + /// Example: (assume class Sub: public Super) + /// AutoPtr super(new Sub()); + /// AutoPtr sub = super.cast(); + /// poco_assert (sub.get()); + { + Other* pOther = dynamic_cast(_ptr); + return AutoPtr(pOther, true); + } + + template + AutoPtr unsafeCast() const + /// Casts the AutoPtr via a static cast to the given type. + /// Example: (assume class Sub: public Super) + /// AutoPtr super(new Sub()); + /// AutoPtr sub = super.unsafeCast(); + /// poco_assert (sub.get()); + { + Other* pOther = static_cast(_ptr); + return AutoPtr(pOther, true); + } + + C* operator -> () + { + if (_ptr) + return _ptr; + else + throw NullPointerException(); + } + + const C* operator -> () const + { + if (_ptr) + return _ptr; + else + throw NullPointerException(); + } + + C& operator * () + { + if (_ptr) + return *_ptr; + else + throw NullPointerException(); + } + + const C& operator * () const + { + if (_ptr) + return *_ptr; + else + throw NullPointerException(); + } + + C* get() + { + return _ptr; + } + + const C* get() const + { + return _ptr; + } + + operator C* () + { + return _ptr; + } + + operator const C* () const + { + return _ptr; + } + + bool operator ! () const + { + return _ptr == nullptr; + } + + bool isNull() const + { + return _ptr == nullptr; + } + + C* duplicate() + { + if (_ptr) _ptr->duplicate(); + return _ptr; + } + + bool operator == (const AutoPtr& ptr) const + { + return _ptr == ptr._ptr; + } + + bool operator == (const C* ptr) const + { + return _ptr == ptr; + } + + bool operator == (C* ptr) const + { + return _ptr == ptr; + } + + bool operator == (std::nullptr_t ptr) const + { + return _ptr == ptr; + } + + bool operator != (const AutoPtr& ptr) const + { + return _ptr != ptr._ptr; + } + + bool operator != (const C* ptr) const + { + return _ptr != ptr; + } + + bool operator != (C* ptr) const + { + return _ptr != ptr; + } + + bool operator != (std::nullptr_t ptr) const + { + return _ptr != ptr; + } + + bool operator < (const AutoPtr& ptr) const + { + return _ptr < ptr._ptr; + } + + bool operator < (const C* ptr) const + { + return _ptr < ptr; + } + + bool operator < (C* ptr) const + { + return _ptr < ptr; + } + + bool operator <= (const AutoPtr& ptr) const + { + return _ptr <= ptr._ptr; + } + + bool operator <= (const C* ptr) const + { + return _ptr <= ptr; + } + + bool operator <= (C* ptr) const + { + return _ptr <= ptr; + } + + bool operator > (const AutoPtr& ptr) const + { + return _ptr > ptr._ptr; + } + + bool operator > (const C* ptr) const + { + return _ptr > ptr; + } + + bool operator > (C* ptr) const + { + return _ptr > ptr; + } + + bool operator >= (const AutoPtr& ptr) const + { + return _ptr >= ptr._ptr; + } + + bool operator >= (const C* ptr) const + { + return _ptr >= ptr; + } + + bool operator >= (C* ptr) const + { + return _ptr >= ptr; + } + +private: + C* _ptr; +}; + + +template +inline void swap(AutoPtr& p1, AutoPtr& p2) +{ + p1.swap(p2); +} + + +template +AutoPtr makeAuto(Args&&... args) +{ + return AutoPtr(new T(std::forward(args)...)); +} + + +} // namespace Poco + + +#endif // Foundation_AutoPtr_INCLUDED diff --git a/include/Poco/Poco/BasicEvent.h b/include/Poco/Poco/BasicEvent.h new file mode 100644 index 00000000..47e37dbd --- /dev/null +++ b/include/Poco/Poco/BasicEvent.h @@ -0,0 +1,60 @@ +// +// BasicEvent.h +// +// Library: Foundation +// Package: Events +// Module: BasicEvent +// +// Implementation of the BasicEvent template. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_BasicEvent_INCLUDED +#define Foundation_BasicEvent_INCLUDED + + +#include "Poco/AbstractEvent.h" +#include "Poco/DefaultStrategy.h" +#include "Poco/AbstractDelegate.h" +#include "Poco/Mutex.h" + + +namespace Poco { + + +template +class BasicEvent: public AbstractEvent < + TArgs, DefaultStrategy>, + AbstractDelegate, + TMutex +> + /// A BasicEvent uses the DefaultStrategy which + /// invokes delegates in the order they have been registered. + /// + /// Please see the AbstractEvent class template documentation + /// for more information. +{ +public: + BasicEvent() + { + } + + ~BasicEvent() + { + } + +private: + BasicEvent(const BasicEvent& e); + BasicEvent& operator = (const BasicEvent& e); +}; + + +} // namespace Poco + + +#endif // Foundation_BasicEvent_INCLUDED diff --git a/include/Poco/Poco/BinaryReader.h b/include/Poco/Poco/BinaryReader.h new file mode 100644 index 00000000..5b5e7bee --- /dev/null +++ b/include/Poco/Poco/BinaryReader.h @@ -0,0 +1,265 @@ +// +// BinaryReader.h +// +// Library: Foundation +// Package: Streams +// Module: BinaryReaderWriter +// +// Definition of the BinaryReader class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_BinaryReader_INCLUDED +#define Foundation_BinaryReader_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Buffer.h" +#include "Poco/MemoryStream.h" +#include +#include + + +namespace Poco { + + +class TextEncoding; +class TextConverter; + + +class Foundation_API BinaryReader + /// This class reads basic types (and std::vectors thereof) + /// in binary form into an input stream. + /// It provides an extractor-based interface similar to istream. + /// The reader also supports automatic conversion from big-endian + /// (network byte order) to little-endian and vice-versa. + /// Use a BinaryWriter to create a stream suitable for a BinaryReader. +{ +public: + enum StreamByteOrder + { + NATIVE_BYTE_ORDER = 1, /// the host's native byte-order + BIG_ENDIAN_BYTE_ORDER = 2, /// big-endian (network) byte-order + NETWORK_BYTE_ORDER = 2, /// big-endian (network) byte-order + LITTLE_ENDIAN_BYTE_ORDER = 3, /// little-endian byte-order + UNSPECIFIED_BYTE_ORDER = 4 /// unknown, byte-order will be determined by reading the byte-order mark + }; + + BinaryReader(std::istream& istr, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER); + /// Creates the BinaryReader. + + BinaryReader(std::istream& istr, TextEncoding& encoding, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER); + /// Creates the BinaryReader using the given TextEncoding. + /// + /// Strings will be converted from the specified encoding + /// to the currently set global encoding (see Poco::TextEncoding::global()). + + ~BinaryReader(); + /// Destroys the BinaryReader. + + BinaryReader& operator >> (bool& value); + BinaryReader& operator >> (char& value); + BinaryReader& operator >> (unsigned char& value); + BinaryReader& operator >> (signed char& value); + BinaryReader& operator >> (short& value); + BinaryReader& operator >> (unsigned short& value); + BinaryReader& operator >> (int& value); + BinaryReader& operator >> (unsigned int& value); + BinaryReader& operator >> (long& value); + BinaryReader& operator >> (unsigned long& value); + BinaryReader& operator >> (float& value); + BinaryReader& operator >> (double& value); + +#if defined(POCO_HAVE_INT64) + BinaryReader& operator >> (long long& value); + BinaryReader& operator >> (unsigned long long& value); +#endif + + BinaryReader& operator >> (std::string& value); + + template + BinaryReader& operator >> (std::vector& value) + { + Poco::UInt32 size(0); + T elem; + + *this >> size; + if (!good()) return *this; + value.reserve(size); + while (this->good() && size-- > 0) + { + *this >> elem; + value.push_back(elem); + } + return *this; + } + + void read7BitEncoded(UInt32& value); + /// Reads a 32-bit unsigned integer in compressed format. + /// See BinaryWriter::write7BitEncoded() for a description + /// of the compression algorithm. + +#if defined(POCO_HAVE_INT64) + void read7BitEncoded(UInt64& value); + /// Reads a 64-bit unsigned integer in compressed format. + /// See BinaryWriter::write7BitEncoded() for a description + /// of the compression algorithm. +#endif + + void readRaw(std::streamsize length, std::string& value); + /// Reads length bytes of raw data into value. + + void readRaw(char* buffer, std::streamsize length); + /// Reads length bytes of raw data into buffer. + + void readBOM(); + /// Reads a byte-order mark from the stream and configures + /// the reader for the encountered byte order. + /// A byte-order mark is a 16-bit integer with a value of 0xFEFF, + /// written in host byte order. + + bool good(); + /// Returns _istr.good(); + + bool fail(); + /// Returns _istr.fail(); + + bool bad(); + /// Returns _istr.bad(); + + bool eof(); + /// Returns _istr.eof(); + + std::istream& stream() const; + /// Returns the underlying stream. + + StreamByteOrder byteOrder() const; + /// Returns the byte-order used by the reader, which is + /// either BIG_ENDIAN_BYTE_ORDER or LITTLE_ENDIAN_BYTE_ORDER. + + void setExceptions(std::ios_base::iostate st = (std::istream::failbit | std::istream::badbit)); + /// Sets the stream to throw exception on specified state (default failbit and badbit); + + std::streamsize available() const; + /// Returns the number of available bytes in the stream. + +private: + std::istream& _istr; + bool _flipBytes; + TextConverter* _pTextConverter; +}; + + +template +class BasicMemoryBinaryReader : public BinaryReader + /// A convenient wrapper for using Buffer and MemoryStream with BinaryReader. +{ +public: + BasicMemoryBinaryReader(const Buffer& data, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER): + BinaryReader(_istr, byteOrder), + _data(data), + _istr(data.begin(), data.capacity()) + { + } + + BasicMemoryBinaryReader(const Buffer& data, TextEncoding& encoding, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER): + BinaryReader(_istr, encoding, byteOrder), + _data(data), + _istr(data.begin(), data.capacity()) + { + } + + ~BasicMemoryBinaryReader() + { + } + + const Buffer& data() const + { + return _data; + } + + const MemoryInputStream& stream() const + { + return _istr; + } + + MemoryInputStream& stream() + { + return _istr; + } + +private: + const Buffer& _data; + MemoryInputStream _istr; +}; + + +typedef BasicMemoryBinaryReader MemoryBinaryReader; + + +// +// inlines +// + + +inline bool BinaryReader::good() +{ + return _istr.good(); +} + + +inline bool BinaryReader::fail() +{ + return _istr.fail(); +} + + +inline bool BinaryReader::bad() +{ + return _istr.bad(); +} + + +inline bool BinaryReader::eof() +{ + return _istr.eof(); +} + + +inline std::istream& BinaryReader::stream() const +{ + return _istr; +} + + +inline BinaryReader::StreamByteOrder BinaryReader::byteOrder() const +{ +#if defined(POCO_ARCH_BIG_ENDIAN) + return _flipBytes ? LITTLE_ENDIAN_BYTE_ORDER : BIG_ENDIAN_BYTE_ORDER; +#else + return _flipBytes ? BIG_ENDIAN_BYTE_ORDER : LITTLE_ENDIAN_BYTE_ORDER; +#endif +} + + +inline void BinaryReader::setExceptions(std::ios_base::iostate st) +{ + _istr.exceptions(st); +} + + +inline std::streamsize BinaryReader::available() const +{ + return _istr.rdbuf()->in_avail(); +} + + +} // namespace Poco + + +#endif // Foundation_BinaryReader_INCLUDED diff --git a/include/Poco/Poco/BinaryWriter.h b/include/Poco/Poco/BinaryWriter.h new file mode 100644 index 00000000..98538429 --- /dev/null +++ b/include/Poco/Poco/BinaryWriter.h @@ -0,0 +1,269 @@ +// +// BinaryWriter.h +// +// Library: Foundation +// Package: Streams +// Module: BinaryReaderWriter +// +// Definition of the BinaryWriter class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_BinaryWriter_INCLUDED +#define Foundation_BinaryWriter_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Buffer.h" +#include "Poco/MemoryStream.h" +#include +#include + + +namespace Poco { + + +class TextEncoding; +class TextConverter; + + +class Foundation_API BinaryWriter + /// This class writes basic types (and std::vectors of these) + /// in binary form into an output stream. + /// It provides an inserter-based interface similar to ostream. + /// The writer also supports automatic conversion from big-endian + /// (network byte order) to little-endian and vice-versa. + /// Use a BinaryReader to read from a stream created by a BinaryWriter. + /// Be careful when exchanging data between systems with different + /// data type sizes (e.g., 32-bit and 64-bit architectures), as the sizes + /// of some of the basic types may be different. For example, writing a + /// long integer on a 64-bit system and reading it on a 32-bit system + /// may yield an incorrent result. Use fixed-size types (Int32, Int64, etc.) + /// in such a case. +{ +public: + enum StreamByteOrder + { + NATIVE_BYTE_ORDER = 1, /// the host's native byte-order + BIG_ENDIAN_BYTE_ORDER = 2, /// big-endian (network) byte-order + NETWORK_BYTE_ORDER = 2, /// big-endian (network) byte-order + LITTLE_ENDIAN_BYTE_ORDER = 3 /// little-endian byte-order + }; + + BinaryWriter(std::ostream& ostr, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER); + /// Creates the BinaryWriter. + + BinaryWriter(std::ostream& ostr, TextEncoding& encoding, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER); + /// Creates the BinaryWriter using the given TextEncoding. + /// + /// Strings will be converted from the currently set global encoding + /// (see Poco::TextEncoding::global()) to the specified encoding. + + ~BinaryWriter(); + /// Destroys the BinaryWriter. + + BinaryWriter& operator << (bool value); + BinaryWriter& operator << (char value); + BinaryWriter& operator << (unsigned char value); + BinaryWriter& operator << (signed char value); + BinaryWriter& operator << (short value); + BinaryWriter& operator << (unsigned short value); + BinaryWriter& operator << (int value); + BinaryWriter& operator << (unsigned int value); + BinaryWriter& operator << (long value); + BinaryWriter& operator << (unsigned long value); + BinaryWriter& operator << (float value); + BinaryWriter& operator << (double value); + +#if defined(POCO_HAVE_INT64) + BinaryWriter& operator << (long long value); + BinaryWriter& operator << (unsigned long long value); +#endif + + BinaryWriter& operator << (const std::string& value); + BinaryWriter& operator << (const char* value); + + template + BinaryWriter& operator << (const std::vector& value) + { + Poco::UInt32 size(static_cast(value.size())); + + *this << size; + for (const auto& v: value) + { + *this << v; + } + + return *this; + } + + void write7BitEncoded(UInt32 value); + /// Writes a 32-bit unsigned integer in a compressed format. + /// The value is written out seven bits at a time, starting + /// with the seven least-significant bits. + /// The high bit of a byte indicates whether there are more bytes to be + /// written after this one. + /// If value will fit in seven bits, it takes only one byte of space. + /// If value will not fit in seven bits, the high bit is set on the first byte and + /// written out. value is then shifted by seven bits and the next byte is written. + /// This process is repeated until the entire integer has been written. + +#if defined(POCO_HAVE_INT64) + void write7BitEncoded(UInt64 value); + /// Writes a 64-bit unsigned integer in a compressed format. + /// The value written out seven bits at a time, starting + /// with the seven least-significant bits. + /// The high bit of a byte indicates whether there are more bytes to be + /// written after this one. + /// If value will fit in seven bits, it takes only one byte of space. + /// If value will not fit in seven bits, the high bit is set on the first byte and + /// written out. value is then shifted by seven bits and the next byte is written. + /// This process is repeated until the entire integer has been written. +#endif + + void writeRaw(const std::string& rawData); + /// Writes the string as-is to the stream. + + void writeRaw(const char* buffer, std::streamsize length); + /// Writes length raw bytes from the given buffer to the stream. + + void writeBOM(); + /// Writes a byte-order mark to the stream. A byte order mark is + /// a 16-bit integer with a value of 0xFEFF, written in host byte-order. + /// A BinaryReader uses the byte-order mark to determine the byte-order + /// of the stream. + + void flush(); + /// Flushes the underlying stream. + + bool good(); + /// Returns _ostr.good(); + + bool fail(); + /// Returns _ostr.fail(); + + bool bad(); + /// Returns _ostr.bad(); + + std::ostream& stream() const; + /// Returns the underlying stream. + + StreamByteOrder byteOrder() const; + /// Returns the byte ordering used by the writer, which is + /// either BIG_ENDIAN_BYTE_ORDER or LITTLE_ENDIAN_BYTE_ORDER. + +private: + std::ostream& _ostr; + bool _flipBytes; + TextConverter* _pTextConverter; +}; + + +template +class BasicMemoryBinaryWriter: public BinaryWriter + /// A convenient wrapper for using Buffer and MemoryStream with BinarWriter. +{ +public: + BasicMemoryBinaryWriter(Buffer& data, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER): + BinaryWriter(_ostr, byteOrder), + _data(data), + _ostr(data.begin(), data.capacity()) + { + } + + BasicMemoryBinaryWriter(Buffer& data, TextEncoding& encoding, StreamByteOrder byteOrder = NATIVE_BYTE_ORDER): + BinaryWriter(_ostr, encoding, byteOrder), + _data(data), + _ostr(data.begin(), data.capacity()) + { + } + + ~BasicMemoryBinaryWriter() + { + try + { + flush(); + } + catch (...) + { + poco_unexpected(); + } + } + + Buffer& data() + { + return _data; + } + + const Buffer& data() const + { + return _data; + } + + const MemoryOutputStream& stream() const + { + return _ostr; + } + + MemoryOutputStream& stream() + { + return _ostr; + } + +private: + Buffer& _data; + MemoryOutputStream _ostr; +}; + + +typedef BasicMemoryBinaryWriter MemoryBinaryWriter; + + +// +// inlines +// + + +inline std::ostream& BinaryWriter::stream() const +{ + return _ostr; +} + + +inline bool BinaryWriter::good() +{ + return _ostr.good(); +} + + +inline bool BinaryWriter::fail() +{ + return _ostr.fail(); +} + + +inline bool BinaryWriter::bad() +{ + return _ostr.bad(); +} + + +inline BinaryWriter::StreamByteOrder BinaryWriter::byteOrder() const +{ +#if defined(POCO_ARCH_BIG_ENDIAN) + return _flipBytes ? LITTLE_ENDIAN_BYTE_ORDER : BIG_ENDIAN_BYTE_ORDER; +#else + return _flipBytes ? BIG_ENDIAN_BYTE_ORDER : LITTLE_ENDIAN_BYTE_ORDER; +#endif +} + + +} // namespace Poco + + +#endif // Foundation_BinaryWriter_INCLUDED diff --git a/include/Poco/Poco/Buffer.h b/include/Poco/Poco/Buffer.h new file mode 100644 index 00000000..87c59f16 --- /dev/null +++ b/include/Poco/Poco/Buffer.h @@ -0,0 +1,362 @@ +// +// Buffer.h +// +// Library: Foundation +// Package: Core +// Module: Buffer +// +// Definition of the Buffer class. +// +// Copyright (c) 2012, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Buffer_INCLUDED +#define Foundation_Buffer_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include +#include + + +namespace Poco { + + +template +class Buffer + /// A buffer class that allocates a buffer of a given type and size + /// in the constructor and deallocates the buffer in the destructor. + /// + /// This class is useful everywhere where a temporary buffer + /// is needed. +{ +public: + Buffer(std::size_t length): + _capacity(length), + _used(length), + _ptr(0), + _ownMem(true) + /// Creates and allocates the Buffer. + { + if (length > 0) + { + _ptr = new T[length]; + } + } + + Buffer(T* pMem, std::size_t length): + _capacity(length), + _used(length), + _ptr(pMem), + _ownMem(false) + /// Creates the Buffer. Length argument specifies the length + /// of the supplied memory pointed to by pMem in the number + /// of elements of type T. Supplied pointer is considered + /// blank and not owned by Buffer, so in this case Buffer + /// only acts as a wrapper around externally supplied + /// (and lifetime-managed) memory. + { + } + + Buffer(const T* pMem, std::size_t length): + _capacity(length), + _used(length), + _ptr(0), + _ownMem(true) + /// Creates and allocates the Buffer; copies the contents of + /// the supplied memory into the buffer. Length argument specifies + /// the length of the supplied memory pointed to by pMem in the + /// number of elements of type T. + { + if (_capacity > 0) + { + _ptr = new T[_capacity]; + std::memcpy(_ptr, pMem, _used * sizeof(T)); + } + } + + Buffer(const Buffer& other): + /// Copy constructor. + _capacity(other._used), + _used(other._used), + _ptr(0), + _ownMem(true) + { + if (_used) + { + _ptr = new T[_used]; + std::memcpy(_ptr, other._ptr, _used * sizeof(T)); + } + } + + Buffer(Buffer&& other) noexcept: + /// Move constructor. + _capacity(other._capacity), + _used(other._used), + _ptr(other._ptr), + _ownMem(other._ownMem) + { + other._capacity = 0; + other._used = 0; + other._ownMem = false; + other._ptr = nullptr; + } + + Buffer& operator = (const Buffer& other) + /// Assignment operator. + { + if (this != &other) + { + Buffer tmp(other); + swap(tmp); + } + + return *this; + } + + Buffer& operator = (Buffer&& other) noexcept + /// Move assignment operator. + { + if (_ownMem) delete [] _ptr; + + _capacity = other._capacity; + _used = other._used; + _ptr = other._ptr; + _ownMem = other._ownMem; + + other._capacity = 0; + other._used = 0; + other._ownMem = false; + other._ptr = nullptr; + + return *this; + } + + ~Buffer() + /// Destroys the Buffer. + { + if (_ownMem) delete [] _ptr; + } + + void resize(std::size_t newCapacity, bool preserveContent = true) + /// Resizes the buffer capacity and size. If preserveContent is true, + /// the content of the old buffer is copied over to the + /// new buffer. The new capacity can be larger or smaller than + /// the current one; if it is smaller, capacity will remain intact. + /// Size will always be set to the new capacity. + /// + /// Buffers only wrapping externally owned storage can not be + /// resized. If resize is attempted on those, IllegalAccessException + /// is thrown. + { + if (!_ownMem) throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); + + if (newCapacity > _capacity) + { + T* ptr = new T[newCapacity]; + if (preserveContent && _ptr) + { + std::memcpy(ptr, _ptr, _used * sizeof(T)); + } + delete [] _ptr; + _ptr = ptr; + _capacity = newCapacity; + } + + _used = newCapacity; + } + + void setCapacity(std::size_t newCapacity, bool preserveContent = true) + /// Sets the buffer capacity. If preserveContent is true, + /// the content of the old buffer is copied over to the + /// new buffer. The new capacity can be larger or smaller than + /// the current one; size will be set to the new capacity only if + /// new capacity is smaller than the current size, otherwise it will + /// remain intact. + /// + /// Buffers only wrapping externally owned storage can not be + /// resized. If resize is attempted on those, IllegalAccessException + /// is thrown. + { + if (!_ownMem) throw Poco::InvalidAccessException("Cannot resize buffer which does not own its storage."); + + if (newCapacity != _capacity) + { + T* ptr = 0; + if (newCapacity > 0) + { + ptr = new T[newCapacity]; + if (preserveContent && _ptr) + { + std::size_t newSz = _used < newCapacity ? _used : newCapacity; + std::memcpy(ptr, _ptr, newSz * sizeof(T)); + } + } + delete [] _ptr; + _ptr = ptr; + _capacity = newCapacity; + + if (newCapacity < _used) _used = newCapacity; + } + } + + void assign(const T* buf, std::size_t sz) + /// Assigns the argument buffer to this buffer. + /// If necessary, resizes the buffer. + { + if (0 == sz) return; + if (sz > _capacity) resize(sz, false); + std::memcpy(_ptr, buf, sz * sizeof(T)); + _used = sz; + } + + void append(const T* buf, std::size_t sz) + /// Resizes this buffer and appends the argument buffer. + { + if (0 == sz) return; + resize(_used + sz, true); + std::memcpy(_ptr + _used - sz, buf, sz * sizeof(T)); + } + + void append(T val) + /// Resizes this buffer by one element and appends the argument value. + { + resize(_used + 1, true); + _ptr[_used - 1] = val; + } + + void append(const Buffer& buf) + /// Resizes this buffer and appends the argument buffer. + { + append(buf.begin(), buf.size()); + } + + std::size_t capacity() const + /// Returns the allocated memory size in elements. + { + return _capacity; + } + + std::size_t capacityBytes() const + /// Returns the allocated memory size in bytes. + { + return _capacity * sizeof(T); + } + + void swap(Buffer& other) + /// Swaps the buffer with another one. + { + using std::swap; + + swap(_ptr, other._ptr); + swap(_capacity, other._capacity); + swap(_used, other._used); + swap(_ownMem, other._ownMem); + } + + bool operator == (const Buffer& other) const + /// Compare operator. + { + if (this != &other) + { + if (_used == other._used) + { + if (_ptr && other._ptr && std::memcmp(_ptr, other._ptr, _used * sizeof(T)) == 0) + { + return true; + } + else return _used == 0; + } + return false; + } + + return true; + } + + bool operator != (const Buffer& other) const + /// Compare operator. + { + return !(*this == other); + } + + void clear() + /// Sets the contents of the buffer to zero. + { + std::memset(_ptr, 0, _used * sizeof(T)); + } + + std::size_t size() const + /// Returns the used size of the buffer in elements. + { + return _used; + } + + std::size_t sizeBytes() const + /// Returns the used size of the buffer in bytes. + { + return _used * sizeof(T); + } + + T* begin() + /// Returns a pointer to the beginning of the buffer. + { + return _ptr; + } + + const T* begin() const + /// Returns a pointer to the beginning of the buffer. + { + return _ptr; + } + + T* end() + /// Returns a pointer to end of the buffer. + { + return _ptr + _used; + } + + const T* end() const + /// Returns a pointer to the end of the buffer. + { + return _ptr + _used; + } + + bool empty() const + /// Return true if buffer is empty. + { + return 0 == _used; + } + + T& operator [] (std::size_t index) + { + poco_assert (index < _used); + + return _ptr[index]; + } + + const T& operator [] (std::size_t index) const + { + poco_assert (index < _used); + + return _ptr[index]; + } + +private: + Buffer(); + + std::size_t _capacity; + std::size_t _used; + T* _ptr; + bool _ownMem; +}; + + +} // namespace Poco + + +#endif // Foundation_Buffer_INCLUDED diff --git a/include/Poco/Poco/Bugcheck.h b/include/Poco/Poco/Bugcheck.h new file mode 100644 index 00000000..ca475b88 --- /dev/null +++ b/include/Poco/Poco/Bugcheck.h @@ -0,0 +1,206 @@ +// +// Bugcheck.h +// +// Library: Foundation +// Package: Core +// Module: Bugcheck +// +// Definition of the Bugcheck class and the self-testing macros. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Bugcheck_INCLUDED +#define Foundation_Bugcheck_INCLUDED + + +#include "Poco/Foundation.h" +#include +#include +#if defined(_DEBUG) +# include +#endif + + +namespace Poco { + + +class Foundation_API Bugcheck + /// This class provides some static methods that are + /// used by the + /// poco_assert_dbg(), poco_assert(), poco_check_ptr(), + /// poco_bugcheck() and poco_unexpected() macros. + /// You should not invoke these methods + /// directly. Use the macros instead, as they + /// automatically provide useful context information. +{ +public: + static void assertion(const char* cond, const char* file, int line, const char* text = 0); + /// An assertion failed. Break into the debugger, if + /// possible, then throw an AssertionViolationException. + + static void nullPointer(const char* ptr, const char* file, int line); + /// An null pointer was encountered. Break into the debugger, if + /// possible, then throw an NullPointerException. + + static void bugcheck(const char* file, int line); + /// An internal error was encountered. Break into the debugger, if + /// possible, then throw an BugcheckException. + + static void bugcheck(const char* msg, const char* file, int line); + /// An internal error was encountered. Break into the debugger, if + /// possible, then throw an BugcheckException. + + static void unexpected(const char* file, int line); + /// An exception was caught in a destructor. Break into debugger, + /// if possible and report exception. Must only be called from + /// within a catch () block as it rethrows the exception to + /// determine its class. + + static void debugger(const char* file, int line); + /// An internal error was encountered. Break into the debugger, if + /// possible. + + static void debugger(const char* msg, const char* file, int line); + /// An internal error was encountered. Break into the debugger, if + /// possible. + +protected: + static std::string what(const char* msg, const char* file, int line, const char* text = 0); +}; + + +} // namespace Poco + + +// +// useful macros (these automatically supply line number and file name) +// +#if defined(__KLOCWORK__) || defined(__clang_analyzer__) + + +// Short-circuit these macros when under static analysis. +// Ideally, static analysis tools should understand and reason correctly about +// noreturn methods such as Bugcheck::bugcheck(). In practice, they don't. +// Help them by turning these macros into std::abort() as described here: +// https://developer.klocwork.com/documentation/en/insight/10-1/tuning-cc-analysis#Usingthe__KLOCWORK__macro + +#include // for abort +#define poco_assert_dbg(cond) do { if (!(cond)) std::abort(); } while (0) +#define poco_assert_msg_dbg(cond, text) do { if (!(cond)) std::abort(); } while (0) +#define poco_assert(cond) do { if (!(cond)) std::abort(); } while (0) +#define poco_assert_msg(cond, text) do { if (!(cond)) std::abort(); } while (0) +#define poco_check_ptr(ptr) do { if (!(ptr)) std::abort(); } while (0) +#define poco_bugcheck() do { std::abort(); } while (0) +#define poco_bugcheck_msg(msg) do { std::abort(); } while (0) + + +#else // defined(__KLOCWORK__) || defined(__clang_analyzer__) + + +#if defined(_DEBUG) + #define poco_assert_dbg(cond) \ + if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__); else (void) 0 + + #define poco_assert_msg_dbg(cond, text) \ + if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__, text); else (void) 0 +#else + #define poco_assert_msg_dbg(cond, text) + #define poco_assert_dbg(cond) +#endif + + +#define poco_assert(cond) \ + if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__); else (void) 0 + + +#define poco_assert_msg(cond, text) \ + if (!(cond)) Poco::Bugcheck::assertion(#cond, __FILE__, __LINE__, text); else (void) 0 + + +#define poco_check_ptr(ptr) \ + if (!(ptr)) Poco::Bugcheck::nullPointer(#ptr, __FILE__, __LINE__); else (void) 0 + + +#define poco_bugcheck() \ + Poco::Bugcheck::bugcheck(__FILE__, __LINE__) + + +#define poco_bugcheck_msg(msg) \ + Poco::Bugcheck::bugcheck(msg, __FILE__, __LINE__) + + +#endif // defined(__KLOCWORK__) || defined(__clang_analyzer__) + + +#define poco_unexpected() \ + Poco::Bugcheck::unexpected(__FILE__, __LINE__); + + +#define poco_debugger() \ + Poco::Bugcheck::debugger(__FILE__, __LINE__) + + +#define poco_debugger_msg(msg) \ + Poco::Bugcheck::debugger(msg, __FILE__, __LINE__) + + +#if defined(_DEBUG) +# define poco_stdout_dbg(outstr) \ + std::cout << __FILE__ << '(' << std::dec << __LINE__ << "):" << outstr << std::endl; +#else +# define poco_stdout_dbg(outstr) +#endif + + +#if defined(_DEBUG) +# define poco_stderr_dbg(outstr) \ + std::cerr << __FILE__ << '(' << std::dec << __LINE__ << "):" << outstr << std::endl; +#else +# define poco_stderr_dbg(outstr) +#endif + + +// +// poco_static_assert +// +// The following was ported from +// + + +template +struct POCO_STATIC_ASSERTION_FAILURE; + + +template <> +struct POCO_STATIC_ASSERTION_FAILURE +{ + enum + { + value = 1 + }; +}; + + +template +struct poco_static_assert_test +{ +}; + + +#if defined(__GNUC__) && (__GNUC__ == 3) && ((__GNUC_MINOR__ == 3) || (__GNUC_MINOR__ == 4)) +#define poco_static_assert(B) \ + typedef char POCO_JOIN(poco_static_assert_typedef_, __LINE__) \ + [POCO_STATIC_ASSERTION_FAILURE<(bool) (B)>::value] +#else +#define poco_static_assert(B) \ + typedef poco_static_assert_test)> \ + POCO_JOIN(poco_static_assert_typedef_, __LINE__) POCO_UNUSED +#endif + + +#endif // Foundation_Bugcheck_INCLUDED diff --git a/include/Poco/Poco/Config.h b/include/Poco/Poco/Config.h new file mode 100644 index 00000000..fb3cca8f --- /dev/null +++ b/include/Poco/Poco/Config.h @@ -0,0 +1,202 @@ +// +// Config.h +// +// Library: Foundation +// Package: Core +// Module: Foundation +// +// Feature configuration for the POCO libraries. +// +// Copyright (c) 2006-2016, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Config_INCLUDED +#define Foundation_Config_INCLUDED + + +// Define to disable implicit linking +// #define POCO_NO_AUTOMATIC_LIBS + + +// Define to disable automatic initialization +// Defining this will disable ALL automatic +// initialization framework-wide (e.g. Net +// on Windows, all Data back-ends, etc). +// +// #define POCO_NO_AUTOMATIC_LIB_INIT + + +// Define to disable FPEnvironment support +// #define POCO_NO_FPENVIRONMENT + + +// Define if std::wstring is not available +// #define POCO_NO_WSTRING + + +// Define to disable shared memory +// #define POCO_NO_SHAREDMEMORY + + +// Define if no header is available (such as on WinCE) +// #define POCO_NO_LOCALE + + +// Define to desired default thread stack size +// Zero means OS default +#ifndef POCO_THREAD_STACK_SIZE + #define POCO_THREAD_STACK_SIZE 0 +#endif + + +// Define to override system-provided +// minimum thread priority value on POSIX +// platforms (returned by Poco::Thread::getMinOSPriority()). +// #define POCO_THREAD_PRIORITY_MIN 0 + + +// Define to override system-provided +// maximum thread priority value on POSIX +// platforms (returned by Poco::Thread::getMaxOSPriority()). +// #define POCO_THREAD_PRIORITY_MAX 31 + + +// Define to disable small object optimization. If not +// defined, Any and Dynamic::Var (and similar optimization +// candidates) will be auto-allocated on the stack in +// cases when value holder fits into POCO_SMALL_OBJECT_SIZE +// (see below). +// +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// !!! NOTE: Any/Dynamic::Var SOO will NOT work reliably !!! +// !!! without C++11 (std::aligned_storage in particular). !!! +// !!! Only comment this out if your compiler has support !!! +// !!! for std::aligned_storage. !!! +// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +// +#ifndef POCO_ENABLE_SOO +#define POCO_NO_SOO +#endif + + +// Small object size in bytes. When assigned to Any or Var, +// objects larger than this value will be alocated on the heap, +// while those smaller will be placement new-ed into an +// internal buffer. +#if !defined(POCO_SMALL_OBJECT_SIZE) && !defined(POCO_NO_SOO) + #define POCO_SMALL_OBJECT_SIZE 32 +#endif + + +// Define to disable compilation of DirectoryWatcher +// on platforms with no inotify. +// #define POCO_NO_INOTIFY + +// Define to force the use of PollingDirectoryWatcher +// #define POCO_DW_FORCE_POLLING + + +// Following are options to remove certain features +// to reduce library/executable size for smaller +// embedded platforms. By enabling these options, +// the size of a statically executable can be +// reduced by a few 100 Kbytes. + + +// No automatic registration of FileChannel in +// LoggingFactory - avoids FileChannel and friends +// being linked to executable. +// #define POCO_NO_FILECHANNEL + + +// No automatic registration of SplitterChannel in +// LoggingFactory - avoids SplitterChannel being +// linked to executable. +// #define POCO_NO_SPLITTERCHANNEL + + +// No automatic registration of SyslogChannel in +// LoggingFactory - avoids SyslogChannel being +// linked to executable on Unix/Linux systems. +// #define POCO_NO_SYSLOGCHANNEL + + +// Define to enable MSVC secure warnings +// #define POCO_MSVC_SECURE_WARNINGS + + +// No support for INI file configurations in +// Poco::Util::Application. +// #define POCO_UTIL_NO_INIFILECONFIGURATION + + +// No support for JSON configuration in +// Poco::Util::Application. Avoids linking of JSON +// library and saves a few 100 Kbytes. +// #define POCO_UTIL_NO_JSONCONFIGURATION + + +// No support for XML configuration in +// Poco::Util::Application. Avoids linking of XML +// library and saves a few 100 Kbytes. +// #define POCO_UTIL_NO_XMLCONFIGURATION + + +// No IPv6 support +// Define to disable IPv6 +// #define POCO_NET_NO_IPv6 + + +// Windows CE has no locale support +#if defined(_WIN32_WCE) + #define POCO_NO_LOCALE +#endif + + +// Enable the poco_debug_* and poco_trace_* macros +// even if the _DEBUG variable is not set. +// This allows the use of these macros in a release version. +// #define POCO_LOG_DEBUG + + +// OpenSSL on Windows +// +// Poco has its own OpenSSL build system. +// See +// for details. +// +// These options are Windows only. +// +// To disable the use of Poco-provided OpenSSL binaries, +// define POCO_EXTERNAL_OPENSSL. +// +// Possible values: +// POCO_EXTERNAL_OPENSSL_SLPRO: +// Automatically link OpenSSL libraries from OpenSSL Windows installer provided +// by Shining Light Productions +// The (global) library search path must be set accordingly. +// POCO_EXTERNAL_OPENSSL_DEFAULT: +// Automatically link OpenSSL libraries from standard OpenSSL Windows build. +// The (global) library search path must be set accordingly. +// empty or other value: +// Do not link any OpenSSL libraries automatically. You will have to edit the +// Visual C++ project files for Crypto and NetSSL_OpenSSL. +#ifndef POCO_EXTERNAL_OPENSSL + #define POCO_EXTERNAL_OPENSSL POCO_EXTERNAL_OPENSSL_SLPRO +#endif + + +// Define to prevent changing the suffix for shared libraries +// to "d.so", "d.dll", etc. for _DEBUG builds in Poco::SharedLibrary. +// #define POCO_NO_SHARED_LIBRARY_DEBUG_SUFFIX + + +// Disarm POCO_DEPRECATED macro. +// #define POCO_NO_DEPRECATED + + +#endif // Foundation_Config_INCLUDED diff --git a/include/Poco/Poco/Crypto/Crypto.h b/include/Poco/Poco/Crypto/Crypto.h new file mode 100644 index 00000000..de2babf6 --- /dev/null +++ b/include/Poco/Poco/Crypto/Crypto.h @@ -0,0 +1,191 @@ +// +// Crypto.h +// +// Library: Crypto +// Package: CryptoCore +// Module: Crypto +// +// Basic definitions for the Poco Crypto library. +// This file must be the first file included by every other Crypto +// header file. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_Crypto_INCLUDED +#define Crypto_Crypto_INCLUDED + + +#define POCO_EXTERNAL_OPENSSL_DEFAULT 1 +#define POCO_EXTERNAL_OPENSSL_SLPRO 2 + + +#include "Poco/Foundation.h" +#include + + +#ifndef OPENSSL_VERSION_PREREQ + #if defined(OPENSSL_VERSION_MAJOR) && defined(OPENSSL_VERSION_MINOR) + #define OPENSSL_VERSION_PREREQ(maj, min) \ + ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) + #else + #define OPENSSL_VERSION_PREREQ(maj, min) \ + (OPENSSL_VERSION_NUMBER >= (((maj) << 28) | ((min) << 20))) + #endif +#endif + + +enum RSAPaddingMode + /// The padding mode used for RSA public key encryption. +{ + RSA_PADDING_PKCS1, + /// PKCS #1 v1.5 padding. This currently is the most widely used mode. + + RSA_PADDING_PKCS1_OAEP, + /// EME-OAEP as defined in PKCS #1 v2.0 with SHA-1, MGF1 and an empty + /// encoding parameter. This mode is recommended for all new applications. + + RSA_PADDING_NONE + /// Raw RSA encryption. This mode should only be used to implement cryptographically + /// sound padding modes in the application code. Encrypting user data directly with RSA + /// is insecure. +}; + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the Crypto_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// Crypto_API functions as being imported from a DLL, whereas this DLL sees symbols +// defined with this macro as being exported. +// +#if defined(_WIN32) + #if defined(POCO_DLL) + #if defined(Crypto_EXPORTS) + #define Crypto_API __declspec(dllexport) + #else + #define Crypto_API __declspec(dllimport) + #endif + #endif +#endif + + +#if !defined(Crypto_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define Crypto_API __attribute__ ((visibility ("default"))) + #else + #define Crypto_API + #endif +#endif + + +// +// Automatically link Crypto and OpenSSL libraries. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) + #if defined(POCO_INTERNAL_OPENSSL_MSVC_VER) + #if defined(POCO_EXTERNAL_OPENSSL) + #pragma message("External OpenSSL defined but internal headers used - possible mismatch!") + #endif // POCO_EXTERNAL_OPENSSL + #if !defined(_DEBUG) + #define POCO_DEBUG_SUFFIX "" + #if !defined (_DLL) + #define POCO_STATIC_SUFFIX "mt" + #else // _DLL + #define POCO_STATIC_SUFFIX "" + #endif + #else // _DEBUG + #define POCO_DEBUG_SUFFIX "d" + #if !defined (_DLL) + #define POCO_STATIC_SUFFIX "mt" + #else // _DLL + #define POCO_STATIC_SUFFIX "" + #endif + #endif + #pragma comment(lib, "libcrypto" POCO_STATIC_SUFFIX POCO_DEBUG_SUFFIX ".lib") + #pragma comment(lib, "libssl" POCO_STATIC_SUFFIX POCO_DEBUG_SUFFIX ".lib") + #if !defined(_WIN64) && !defined (_DLL) && \ + (POCO_INTERNAL_OPENSSL_MSVC_VER == 120) && \ + (POCO_MSVC_VERSION < POCO_INTERNAL_OPENSSL_MSVC_VER) + #pragma comment(lib, "libPreVS2013CRT" POCO_STATIC_SUFFIX POCO_DEBUG_SUFFIX ".lib") + #endif + #if !defined (_DLL) && (POCO_MSVS_VERSION >= 2015) + #pragma comment(lib, "legacy_stdio_definitions.lib") + #pragma comment(lib, "legacy_stdio_wide_specifiers.lib") + #endif + #elif defined(POCO_EXTERNAL_OPENSSL) + #if POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_SLPRO + #if defined(POCO_DLL) + #if OPENSSL_VERSION_PREREQ(1,1) + #pragma comment(lib, "libcrypto.lib") + #pragma comment(lib, "libssl.lib") + #else + #pragma comment(lib, "libeay32.lib") + #pragma comment(lib, "ssleay32.lib") + #endif + #else + #if OPENSSL_VERSION_PREREQ(1,1) + #if defined(_WIN64) + #pragma comment(lib, "libcrypto") + #pragma comment(lib, "libssl") + #else + #pragma comment(lib, "libcrypto32" POCO_LIB_SUFFIX) + #pragma comment(lib, "libssl32" POCO_LIB_SUFFIX) + #endif + #else + #pragma comment(lib, "libeay32" POCO_LIB_SUFFIX) + #pragma comment(lib, "ssleay32" POCO_LIB_SUFFIX) + #endif + #endif + #elif POCO_EXTERNAL_OPENSSL == POCO_EXTERNAL_OPENSSL_DEFAULT + #if OPENSSL_VERSION_PREREQ(1,1) + #pragma comment(lib, "libcrypto.lib") + #pragma comment(lib, "libssl.lib") + #else + #pragma comment(lib, "libeay32.lib") + #pragma comment(lib, "ssleay32.lib") + #endif + #endif + #endif // POCO_INTERNAL_OPENSSL_MSVC_VER + #if !defined(Crypto_EXPORTS) + #pragma comment(lib, "PocoCrypto" POCO_LIB_SUFFIX) + #endif + #endif // POCO_NO_AUTOMATIC_LIBS +#endif + + +namespace Poco { +namespace Crypto { + + +void Crypto_API initializeCrypto(); + /// Initialize the Crypto library, as well as the underlying OpenSSL + /// libraries, by calling OpenSSLInitializer::initialize(). + /// + /// Should be called before using any class from the Crypto library. + /// The Crypto library will be initialized automatically, through + /// OpenSSLInitializer instances held by various Crypto classes + /// (Cipher, CipherKey, RSAKey, X509Certificate). + /// However, it is recommended to call initializeCrypto() + /// in any case at application startup. + /// + /// Can be called multiple times; however, for every call to + /// initializeCrypto(), a matching call to uninitializeCrypto() + /// must be performed. + + +void Crypto_API uninitializeCrypto(); + /// Uninitializes the Crypto library by calling + /// OpenSSLInitializer::uninitialize(). + + +} } // namespace Poco::Crypto + + +#endif // Crypto_Crypto_INCLUDED diff --git a/include/Poco/Poco/Crypto/CryptoException.h b/include/Poco/Poco/Crypto/CryptoException.h new file mode 100644 index 00000000..8bd5b011 --- /dev/null +++ b/include/Poco/Poco/Crypto/CryptoException.h @@ -0,0 +1,56 @@ +// +// CryptoException.h +// +// +// Library: Crypto +// Package: Crypto +// Module: CryptoException +// +// Definition of the CryptoException class. +// +// Copyright (c) 2012, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_CryptoException_INCLUDED +#define Crypto_CryptoException_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Exception.h" + + +namespace Poco { +namespace Crypto { + + +POCO_DECLARE_EXCEPTION(Crypto_API, CryptoException, Poco::Exception) + + +class Crypto_API OpenSSLException : public CryptoException +{ +public: + OpenSSLException(int code = 0); + OpenSSLException(const std::string& msg, int code = 0); + OpenSSLException(const std::string& msg, const std::string& arg, int code = 0); + OpenSSLException(const std::string& msg, const Poco::Exception& exc, int code = 0); + OpenSSLException(const OpenSSLException& exc); + ~OpenSSLException() noexcept; + OpenSSLException& operator = (const OpenSSLException& exc); + const char* name() const noexcept; + const char* className() const noexcept; + Poco::Exception* clone() const; + void rethrow() const; + +private: + void setExtMessage(); +}; + + +} } // namespace Poco::Crypto + + +#endif // Crypto_CryptoException_INCLUDED diff --git a/include/Poco/Poco/Crypto/EVPPKey.h b/include/Poco/Poco/Crypto/EVPPKey.h new file mode 100644 index 00000000..7cf44d86 --- /dev/null +++ b/include/Poco/Poco/Crypto/EVPPKey.h @@ -0,0 +1,359 @@ +// +// EVPPKey.h +// +// +// Library: Crypto +// Package: CryptoCore +// Module: EVPPKey +// +// Definition of the EVPPKey class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_EVPPKeyImpl_INCLUDED +#define Crypto_EVPPKeyImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/CryptoException.h" +#include "Poco/StreamCopier.h" +#include +#include +#include +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +class ECKey; +class RSAKey; + + +class Crypto_API EVPPKey + /// Utility class for conversion of native keys to EVP. + /// Currently, only RSA and EC keys are supported. +{ +public: + explicit EVPPKey(const std::string& ecCurveName); + /// Constructs EVPPKey from ECC curve name. + /// + /// Only EC keys can be wrapped by an EVPPKey + /// created using this constructor. + + explicit EVPPKey(const char* ecCurveName); + /// Constructs EVPPKey from ECC curve name. + /// + /// Only EC keys can be wrapped by an EVPPKey + /// created using this constructor. + + explicit EVPPKey(EVP_PKEY* pEVPPKey); + /// Constructs EVPPKey from EVP_PKEY pointer. + /// The content behind the supplied pointer is internally duplicated. + + template + explicit EVPPKey(K* pKey): _pEVPPKey(EVP_PKEY_new()) + /// Constructs EVPPKey from a "native" OpenSSL (RSA or EC_KEY), + /// or a Poco wrapper (RSAKey, ECKey) key pointer. + { + if (!_pEVPPKey) throw OpenSSLException(); + setKey(pKey); + } + + EVPPKey(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase = ""); + /// Creates the EVPPKey, by reading public and private key from the given files and + /// using the given passphrase for the private key. Can only by used for signing if + /// a private key is available. + + EVPPKey(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase = ""); + /// Creates the EVPPKey. Can only by used for signing if pPrivKey + /// is not null. If a private key file is specified, you don't need to + /// specify a public key file. OpenSSL will auto-create it from the private key. + + EVPPKey(const EVPPKey& other); + /// Copy constructor. + + EVPPKey(EVPPKey&& other) noexcept; + /// Move constructor. + + EVPPKey& operator = (const EVPPKey& other); + /// Assignment operator. + + EVPPKey& operator = (EVPPKey&& other) noexcept; + /// Assignment move operator. + + ~EVPPKey(); + /// Destroys the EVPPKey. + + bool operator == (const EVPPKey& other) const; + /// Comparison operator. + /// Returns true if public key components and parameters + /// of the other key are equal to this key. + /// + /// Works as expected when one key contains only public key, + /// while the other one contains private (thus also public) key. + + bool operator != (const EVPPKey& other) const; + /// Comparison operator. + /// Returns true if public key components and parameters + /// of the other key are different from this key. + /// + /// Works as expected when one key contains only public key, + /// while the other one contains private (thus also public) key. + + void save(const std::string& publicKeyFile, const std::string& privateKeyFile = "", const std::string& privateKeyPassphrase = "") const; + /// Exports the public and/or private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + void save(std::ostream* pPublicKeyStream, std::ostream* pPrivateKeyStream = 0, const std::string& privateKeyPassphrase = "") const; + /// Exports the public and/or private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + + int type() const; + /// Retuns the EVPPKey type NID. + + bool isSupported(int type) const; + /// Returns true if OpenSSL type is supported + + operator const EVP_PKEY*() const; + /// Returns const pointer to the OpenSSL EVP_PKEY structure. + + operator EVP_PKEY*(); + /// Returns pointer to the OpenSSL EVP_PKEY structure. + + static EVP_PKEY* duplicate(const EVP_PKEY* pFromKey, EVP_PKEY** pToKey); + /// Duplicates pFromKey into *pToKey and returns + // the pointer to duplicated EVP_PKEY. + +private: + EVPPKey(); + + static int type(const EVP_PKEY* pEVPPKey); + void newECKey(const char* group); + void duplicate(EVP_PKEY* pEVPPKey); + + void setKey(ECKey* pKey); + void setKey(RSAKey* pKey); + void setKey(EC_KEY* pKey); + void setKey(RSA* pKey); + static int passCB(char* buf, int size, int, void* pass); + + typedef EVP_PKEY* (*PEM_read_FILE_Key_fn)(FILE*, EVP_PKEY**, pem_password_cb*, void*); + typedef EVP_PKEY* (*PEM_read_BIO_Key_fn)(BIO*, EVP_PKEY**, pem_password_cb*, void*); + typedef void* (*EVP_PKEY_get_Key_fn)(EVP_PKEY*); + + // The following load*() functions are used by both native and EVP_PKEY type key + // loading from BIO/FILE. + // When used for EVP key loading, getFunc is null (ie. native key is not extracted + // from the loaded EVP_PKEY). + template + static bool loadKey(K** ppKey, + PEM_read_FILE_Key_fn readFunc, + F getFunc, + const std::string& keyFile, + const std::string& pass = "") + { + poco_assert_dbg (((typeid(K*) == typeid(RSA*) || typeid(K*) == typeid(EC_KEY*)) && getFunc) || + ((typeid(K*) == typeid(EVP_PKEY*)) && !getFunc)); + poco_check_ptr (ppKey); + poco_assert_dbg (!*ppKey); + + FILE* pFile = 0; + if (!keyFile.empty()) + { + if (!getFunc) *ppKey = (K*)EVP_PKEY_new(); + EVP_PKEY* pKey = getFunc ? EVP_PKEY_new() : (EVP_PKEY*)*ppKey; + if (pKey) + { +#if defined(_MSC_VER) +#pragma warning(push) +#pragma warning(disable:4996) // deprecation warnings +#endif + pFile = fopen(keyFile.c_str(), "r"); +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + + if (pFile) + { + pem_password_cb* pCB = pass.empty() ? (pem_password_cb*)0 : &passCB; + void* pPassword = pass.empty() ? (void*)0 : (void*)pass.c_str(); + if (readFunc(pFile, &pKey, pCB, pPassword)) + { + fclose(pFile); pFile = 0; + if(getFunc) + { + *ppKey = (K*)getFunc(pKey); + EVP_PKEY_free(pKey); + } + else + { + poco_assert_dbg (typeid(K*) == typeid(EVP_PKEY*)); + *ppKey = (K*)pKey; + } + if (!*ppKey) goto error; + return true; + } + if (getFunc) EVP_PKEY_free(pKey); + goto error; + } + else + { + if (getFunc) EVP_PKEY_free(pKey); + throw IOException("ECKeyImpl, cannot open file", keyFile); + } + } + else goto error; + } + return false; + + error: + if (pFile) fclose(pFile); + throw OpenSSLException("EVPKey::loadKey(string)"); + } + + template + static bool loadKey(K** ppKey, + PEM_read_BIO_Key_fn readFunc, + F getFunc, + std::istream* pIstr, + const std::string& pass = "") + { + poco_assert_dbg (((typeid(K*) == typeid(RSA*) || typeid(K*) == typeid(EC_KEY*)) && getFunc) || + ((typeid(K*) == typeid(EVP_PKEY*)) && !getFunc)); + poco_check_ptr(ppKey); + poco_assert_dbg(!*ppKey); + + BIO* pBIO = 0; + if (pIstr) + { + std::ostringstream ostr; + Poco::StreamCopier::copyStream(*pIstr, ostr); + std::string key = ostr.str(); + pBIO = BIO_new_mem_buf(const_cast(key.data()), static_cast(key.size())); + if (pBIO) + { + if (!getFunc) *ppKey = (K*)EVP_PKEY_new(); + EVP_PKEY* pKey = getFunc ? EVP_PKEY_new() : (EVP_PKEY*)*ppKey; + if (pKey) + { + pem_password_cb* pCB = pass.empty() ? (pem_password_cb*)0 : &passCB; + void* pPassword = pass.empty() ? (void*)0 : (void*)pass.c_str(); + if (readFunc(pBIO, &pKey, pCB, pPassword)) + { + BIO_free(pBIO); pBIO = 0; + if (getFunc) + { + *ppKey = (K*)getFunc(pKey); + EVP_PKEY_free(pKey); + } + else + { + poco_assert_dbg (typeid(K*) == typeid(EVP_PKEY*)); + *ppKey = (K*)pKey; + } + if (!*ppKey) goto error; + return true; + } + if (getFunc) EVP_PKEY_free(pKey); + goto error; + } + else goto error; + } + else goto error; + } + return false; + + error: + if (pBIO) BIO_free(pBIO); + throw OpenSSLException("EVPKey::loadKey(stream)"); + } + + EVP_PKEY* _pEVPPKey; + + friend class ECKeyImpl; + friend class RSAKeyImpl; +}; + + +// +// inlines +// + + +inline bool EVPPKey::operator == (const EVPPKey& other) const +{ + poco_check_ptr (other._pEVPPKey); + poco_check_ptr (_pEVPPKey); + return (1 == EVP_PKEY_cmp(_pEVPPKey, other._pEVPPKey)); +} + + +inline bool EVPPKey::operator != (const EVPPKey& other) const +{ + return !(other == *this); +} + + +inline int EVPPKey::type(const EVP_PKEY* pEVPPKey) +{ + if (!pEVPPKey) return NID_undef; + + return EVP_PKEY_type(EVP_PKEY_id(pEVPPKey)); +} + + +inline int EVPPKey::type() const +{ + return type(_pEVPPKey); +} + + +inline bool EVPPKey::isSupported(int type) const +{ + return type == EVP_PKEY_EC || type == EVP_PKEY_RSA; +} + + +inline EVPPKey::operator const EVP_PKEY*() const +{ + return _pEVPPKey; +} + + +inline EVPPKey::operator EVP_PKEY*() +{ + return _pEVPPKey; +} + + +inline void EVPPKey::setKey(EC_KEY* pKey) +{ + if (!EVP_PKEY_set1_EC_KEY(_pEVPPKey, pKey)) + throw OpenSSLException(); +} + + +inline void EVPPKey::setKey(RSA* pKey) +{ + if (!EVP_PKEY_set1_RSA(_pEVPPKey, pKey)) + throw OpenSSLException(); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_EVPPKeyImpl_INCLUDED diff --git a/include/Poco/Poco/Crypto/KeyPair.h b/include/Poco/Poco/Crypto/KeyPair.h new file mode 100644 index 00000000..6f14a5f8 --- /dev/null +++ b/include/Poco/Poco/Crypto/KeyPair.h @@ -0,0 +1,144 @@ +// +// KeyPair.h +// +// Library: Crypto +// Package: CryptoCore +// Module: KeyPair +// +// Definition of the KeyPair class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_KeyPair_INCLUDED +#define Crypto_KeyPair_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/KeyPairImpl.h" + + +namespace Poco { +namespace Crypto { + + +class X509Certificate; + + +class Crypto_API KeyPair + /// This is a parent class for classes storing a key pair, consisting + /// of private and public key. Storage of the private key is optional. + /// + /// If a private key is available, the KeyPair can be + /// used for decrypting data (encrypted with the public key) + /// or computing secure digital signatures. +{ +public: + enum Type + { + KT_RSA = KeyPairImpl::KT_RSA_IMPL, + KT_EC = KeyPairImpl::KT_EC_IMPL + }; + + explicit KeyPair(KeyPairImpl::Ptr pKeyPairImpl = 0); + /// Extracts the RSA public key from the given certificate. + + KeyPair(const KeyPair& other); + /// Copy constructor. + + KeyPair(KeyPair&& other) noexcept; + /// Move constructor. + + KeyPair& operator = (const KeyPair& other); + /// Assignment. + + KeyPair& operator = (KeyPair&& other) noexcept; + /// Move assignment. + + virtual ~KeyPair(); + /// Destroys the KeyPair. + + virtual int size() const; + /// Returns the RSA modulus size. + + virtual void save(const std::string& publicKeyPairFile, + const std::string& privateKeyPairFile = "", + const std::string& privateKeyPairPassphrase = "") const; + /// Exports the public and private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + virtual void save(std::ostream* pPublicKeyPairStream, + std::ostream* pPrivateKeyPairStream = 0, + const std::string& privateKeyPairPassphrase = "") const; + /// Exports the public and private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + + KeyPairImpl::Ptr impl() const; + /// Returns the impl object. + + const std::string& name() const; + /// Returns key pair name + + Type type() const; + /// Returns key pair type + +private: + KeyPairImpl::Ptr _pImpl; +}; + + +// +// inlines +// +inline int KeyPair::size() const +{ + return _pImpl->size(); +} + + +inline void KeyPair::save(const std::string& publicKeyFile, + const std::string& privateKeyFile, + const std::string& privateKeyPassphrase) const +{ + _pImpl->save(publicKeyFile, privateKeyFile, privateKeyPassphrase); +} + + +inline void KeyPair::save(std::ostream* pPublicKeyStream, + std::ostream* pPrivateKeyStream, + const std::string& privateKeyPassphrase) const +{ + _pImpl->save(pPublicKeyStream, pPrivateKeyStream, privateKeyPassphrase); +} + + +inline const std::string& KeyPair::name() const +{ + return _pImpl->name(); +} + + +inline KeyPairImpl::Ptr KeyPair::impl() const +{ + return _pImpl; +} + + +inline KeyPair::Type KeyPair::type() const +{ + return (KeyPair::Type)impl()->type(); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_KeyPair_INCLUDED diff --git a/include/Poco/Poco/Crypto/KeyPairImpl.h b/include/Poco/Poco/Crypto/KeyPairImpl.h new file mode 100644 index 00000000..6999a46d --- /dev/null +++ b/include/Poco/Poco/Crypto/KeyPairImpl.h @@ -0,0 +1,107 @@ +// +// KeyPairImpl.h +// +// +// Library: Crypto +// Package: CryptoCore +// Module: KeyPairImpl +// +// Definition of the KeyPairImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_KeyPairImplImpl_INCLUDED +#define Crypto_KeyPairImplImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include +#include + + +namespace Poco { +namespace Crypto { + + +class KeyPairImpl: public Poco::RefCountedObject + /// Class KeyPairImpl +{ +public: + enum Type + { + KT_RSA_IMPL = 0, + KT_EC_IMPL + }; + + using Ptr = Poco::AutoPtr; + using ByteVec = std::vector; + + KeyPairImpl(const std::string& name, Type type); + /// Create KeyPairImpl with specified type and name. + + virtual ~KeyPairImpl(); + /// Destroys the KeyPairImpl. + + virtual int size() const = 0; + /// Returns the key size. + + virtual void save(const std::string& publicKeyFile, + const std::string& privateKeyFile = "", + const std::string& privateKeyPassphrase = "") const = 0; + /// Exports the public and private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + virtual void save(std::ostream* pPublicKeyStream, + std::ostream* pPrivateKeyStream = 0, + const std::string& privateKeyPassphrase = "") const = 0; + /// Exports the public and private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + + const std::string& name() const; + /// Returns key pair name + + Type type() const; + /// Returns key pair type + +private: + KeyPairImpl(); + + std::string _name; + Type _type; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// inlines +// + + +inline const std::string& KeyPairImpl::name() const +{ + return _name; +} + + +inline KeyPairImpl::Type KeyPairImpl::type() const +{ + return _type; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_KeyPairImplImpl_INCLUDED diff --git a/include/Poco/Poco/Crypto/OpenSSLInitializer.h b/include/Poco/Poco/Crypto/OpenSSLInitializer.h new file mode 100644 index 00000000..42c97ae4 --- /dev/null +++ b/include/Poco/Poco/Crypto/OpenSSLInitializer.h @@ -0,0 +1,115 @@ +// +// OpenSSLInitializer.h +// +// Library: Crypto +// Package: CryptoCore +// Module: OpenSSLInitializer +// +// Definition of the OpenSSLInitializer class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_OpenSSLInitializer_INCLUDED +#define Crypto_OpenSSLInitializer_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Mutex.h" +#include "Poco/AtomicCounter.h" +#include + +#if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L +#include +#endif + + +extern "C" +{ + struct CRYPTO_dynlock_value + { + Poco::FastMutex _mutex; + }; +} + + +namespace Poco { +namespace Crypto { + + +class Crypto_API OpenSSLInitializer + /// Initalizes the OpenSSL library. + /// + /// The class ensures the earliest initialization and the + /// latest shutdown of the OpenSSL library. +{ +public: + OpenSSLInitializer(); + /// Automatically initialize OpenSSL on startup. + + ~OpenSSLInitializer(); + /// Automatically shut down OpenSSL on exit. + + static void initialize(); + /// Initializes the OpenSSL machinery. + + static void uninitialize(); + /// Shuts down the OpenSSL machinery. + + static bool isFIPSEnabled(); + // Returns true if FIPS mode is enabled, false otherwise. + + static void enableFIPSMode(bool enabled); + // Enable or disable FIPS mode. If FIPS is not available, this method doesn't do anything. + +protected: + enum + { + SEEDSIZE = 256 + }; + + // OpenSSL multithreading support + static void lock(int mode, int n, const char* file, int line); + static unsigned long id(); + static struct CRYPTO_dynlock_value* dynlockCreate(const char* file, int line); + static void dynlock(int mode, struct CRYPTO_dynlock_value* lock, const char* file, int line); + static void dynlockDestroy(struct CRYPTO_dynlock_value* lock, const char* file, int line); + +private: + static Poco::FastMutex* _mutexes; + static Poco::AtomicCounter _rc; +}; + + +// +// inlines +// +inline bool OpenSSLInitializer::isFIPSEnabled() +{ +#ifdef OPENSSL_FIPS + return FIPS_mode() ? true : false; +#else + return false; +#endif +} + +#ifdef OPENSSL_FIPS +inline void OpenSSLInitializer::enableFIPSMode(bool enabled) +{ + FIPS_mode_set(enabled); +} +#else +inline void OpenSSLInitializer::enableFIPSMode(bool /*enabled*/) +{ +} +#endif + + +} } // namespace Poco::Crypto + + +#endif // Crypto_OpenSSLInitializer_INCLUDED diff --git a/include/Poco/Poco/Crypto/RSAKey.h b/include/Poco/Poco/Crypto/RSAKey.h new file mode 100644 index 00000000..51c97432 --- /dev/null +++ b/include/Poco/Poco/Crypto/RSAKey.h @@ -0,0 +1,134 @@ +// +// RSAKey.h +// +// Library: Crypto +// Package: RSA +// Module: RSAKey +// +// Definition of the RSAKey class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_RSAKey_INCLUDED +#define Crypto_RSAKey_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/KeyPair.h" +#include "Poco/Crypto/RSAKeyImpl.h" + + +namespace Poco { +namespace Crypto { + + +class X509Certificate; +class PKCS12Container; + + +class Crypto_API RSAKey: public KeyPair + /// This class stores an RSA key pair, consisting + /// of private and public key. Storage of the private + /// key is optional. + /// + /// If a private key is available, the RSAKey can be + /// used for decrypting data (encrypted with the public key) + /// or computing secure digital signatures. +{ +public: + enum KeyLength + { + KL_512 = 512, + KL_1024 = 1024, + KL_2048 = 2048, + KL_4096 = 4096 + }; + + enum Exponent + { + EXP_SMALL = 0, + EXP_LARGE + }; + + RSAKey(const EVPPKey& key); + /// Constructs ECKeyImpl by extracting the EC key. + + RSAKey(const X509Certificate& cert); + /// Extracts the RSA public key from the given certificate. + + RSAKey(const PKCS12Container& cert); + /// Extracts the RSA private key from the given certificate. + + RSAKey(KeyLength keyLength, Exponent exp); + /// Creates the RSAKey. Creates a new public/private keypair using the given parameters. + /// Can be used to sign data and verify signatures. + + RSAKey(const std::string& publicKeyFile, + const std::string& privateKeyFile = "", + const std::string& privateKeyPassphrase = ""); + /// Creates the RSAKey, by reading public and private key from the given files and + /// using the given passphrase for the private key. + /// + /// Cannot be used for signing or decryption unless a private key is available. + /// + /// If a private key is specified, you don't need to specify a public key file. + /// OpenSSL will auto-create the public key from the private key. + + RSAKey(std::istream* pPublicKeyStream, + std::istream* pPrivateKeyStream = 0, + const std::string& privateKeyPassphrase = ""); + /// Creates the RSAKey, by reading public and private key from the given streams and + /// using the given passphrase for the private key. + /// + /// Cannot be used for signing or decryption unless a private key is available. + /// + /// If a private key is specified, you don't need to specify a public key file. + /// OpenSSL will auto-create the public key from the private key. + + RSAKey(const RSAKey& other); + /// Copy constructor. + + RSAKey(RSAKey&& other) noexcept; + /// Move constructor. + + ~RSAKey(); + /// Destroys the RSAKey. + + RSAKey& operator = (const RSAKey& other); + /// Assignment. + + RSAKey& operator = (RSAKey&& other) noexcept; + /// Move assignment. + + RSAKeyImpl::ByteVec modulus() const; + /// Returns the RSA modulus. + + RSAKeyImpl::ByteVec encryptionExponent() const; + /// Returns the RSA encryption exponent. + + RSAKeyImpl::ByteVec decryptionExponent() const; + /// Returns the RSA decryption exponent. + + RSAKeyImpl::Ptr impl() const; + /// Returns the impl object. +}; + + +// +// inlines +// +inline RSAKeyImpl::Ptr RSAKey::impl() const +{ + return KeyPair::impl().cast(); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSAKey_INCLUDED \ No newline at end of file diff --git a/include/Poco/Poco/Crypto/RSAKeyImpl.h b/include/Poco/Poco/Crypto/RSAKeyImpl.h new file mode 100644 index 00000000..f89c3bf2 --- /dev/null +++ b/include/Poco/Poco/Crypto/RSAKeyImpl.h @@ -0,0 +1,141 @@ +// +// RSAKeyImpl.h +// +// Library: Crypto +// Package: RSA +// Module: RSAKeyImpl +// +// Definition of the RSAKeyImpl class. +// +// Copyright (c) 2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_RSAKeyImplImpl_INCLUDED +#define Crypto_RSAKeyImplImpl_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/EVPPKey.h" +#include "Poco/Crypto/KeyPairImpl.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include +#include +#include + + +struct bignum_st; +struct rsa_st; +typedef struct bignum_st BIGNUM; +typedef struct rsa_st RSA; + + +namespace Poco { +namespace Crypto { + + +class X509Certificate; +class PKCS12Container; + + +class RSAKeyImpl: public KeyPairImpl + /// class RSAKeyImpl +{ +public: + using Ptr = Poco::AutoPtr; + using ByteVec = std::vector; + + RSAKeyImpl(const EVPPKey& key); + /// Constructs ECKeyImpl by extracting the EC key. + + RSAKeyImpl(const X509Certificate& cert); + /// Extracts the RSA public key from the given certificate. + + RSAKeyImpl(const PKCS12Container& cert); + /// Extracts the EC private key from the given certificate. + + RSAKeyImpl(int keyLength, unsigned long exponent); + /// Creates the RSAKey. Creates a new public/private keypair using the given parameters. + /// Can be used to sign data and verify signatures. + + RSAKeyImpl(const std::string& publicKeyFile, const std::string& privateKeyFile, const std::string& privateKeyPassphrase); + /// Creates the RSAKey, by reading public and private key from the given files and + /// using the given passphrase for the private key. Can only by used for signing if + /// a private key is available. + + RSAKeyImpl(std::istream* pPublicKeyStream, std::istream* pPrivateKeyStream, const std::string& privateKeyPassphrase); + /// Creates the RSAKey. Can only by used for signing if pPrivKey + /// is not null. If a private key file is specified, you don't need to + /// specify a public key file. OpenSSL will auto-create it from the private key. + + ~RSAKeyImpl(); + /// Destroys the RSAKeyImpl. + + RSA* getRSA(); + /// Returns the OpenSSL RSA object. + + const RSA* getRSA() const; + /// Returns the OpenSSL RSA object. + + int size() const; + /// Returns the RSA modulus size. + + ByteVec modulus() const; + /// Returns the RSA modulus. + + ByteVec encryptionExponent() const; + /// Returns the RSA encryption exponent. + + ByteVec decryptionExponent() const; + /// Returns the RSA decryption exponent. + + void save(const std::string& publicKeyFile, + const std::string& privateKeyFile = "", + const std::string& privateKeyPassphrase = "") const; + /// Exports the public and private keys to the given files. + /// + /// If an empty filename is specified, the corresponding key + /// is not exported. + + void save(std::ostream* pPublicKeyStream, + std::ostream* pPrivateKeyStream = 0, + const std::string& privateKeyPassphrase = "") const; + /// Exports the public and private key to the given streams. + /// + /// If a null pointer is passed for a stream, the corresponding + /// key is not exported. + +private: + RSAKeyImpl(); + + void freeRSA(); + static ByteVec convertToByteVec(const BIGNUM* bn); + + RSA* _pRSA; +}; + + +// +// inlines +// +inline RSA* RSAKeyImpl::getRSA() +{ + return _pRSA; +} + + +inline const RSA* RSAKeyImpl::getRSA() const +{ + return _pRSA; +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_RSAKeyImplImpl_INCLUDED \ No newline at end of file diff --git a/include/Poco/Poco/Crypto/X509Certificate.h b/include/Poco/Poco/Crypto/X509Certificate.h new file mode 100644 index 00000000..a3ea8e16 --- /dev/null +++ b/include/Poco/Poco/Crypto/X509Certificate.h @@ -0,0 +1,257 @@ +// +// X509Certificate.h +// +// Library: Crypto +// Package: Certificate +// Module: X509Certificate +// +// Definition of the X509Certificate class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Crypto_X509Certificate_INCLUDED +#define Crypto_X509Certificate_INCLUDED + + +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/DigestEngine.h" +#include "Poco/DateTime.h" +#include "Poco/SharedPtr.h" +#include +#include +#include +#include + + +namespace Poco { +namespace Crypto { + + +class Crypto_API X509Certificate + /// This class represents a X509 Certificate. +{ +public: + using List = std::vector; + + enum NID + /// Name identifier for extracting information from + /// a certificate subject's or issuer's distinguished name. + { + NID_COMMON_NAME = 13, + NID_COUNTRY = 14, + NID_LOCALITY_NAME = 15, + NID_STATE_OR_PROVINCE = 16, + NID_ORGANIZATION_NAME = 17, + NID_ORGANIZATION_UNIT_NAME = 18, + NID_PKCS9_EMAIL_ADDRESS = 48, + NID_SERIAL_NUMBER = 105 + }; + + explicit X509Certificate(std::istream& istr); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a stream. + + explicit X509Certificate(const std::string& path); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a file. + + explicit X509Certificate(X509* pCert); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. + + X509Certificate(X509* pCert, bool shared); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. If shared is true, the + /// certificate's reference count is incremented. + + X509Certificate(const X509Certificate& cert); + /// Creates the certificate by copying another one. + + X509Certificate(X509Certificate&& cert) noexcept; + /// Creates the certificate by moving another one. + + X509Certificate& operator = (const X509Certificate& cert); + /// Assigns a certificate. + + X509Certificate& operator = (X509Certificate&& cert) noexcept; + /// Move assignment. + + void swap(X509Certificate& cert); + /// Exchanges the certificate with another one. + + ~X509Certificate(); + /// Destroys the X509Certificate. + + long version() const; + /// Returns the version of the certificate. + + const std::string& serialNumber() const; + /// Returns the certificate serial number as a + /// string in decimal encoding. + + const std::string& issuerName() const; + /// Returns the certificate issuer's distinguished name. + + std::string issuerName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate issuer's + /// distinguished name. + + const std::string& subjectName() const; + /// Returns the certificate subject's distinguished name. + + std::string subjectName(NID nid) const; + /// Extracts the information specified by the given + /// NID (name identifier) from the certificate subject's + /// distinguished name. + + std::string commonName() const; + /// Returns the common name stored in the certificate + /// subject's distinguished name. + + void extractNames(std::string& commonName, std::set& domainNames) const; + /// Extracts the common name and the alias domain names from the + /// certificate. + + Poco::DateTime validFrom() const; + /// Returns the date and time the certificate is valid from. + + Poco::DateTime expiresOn() const; + /// Returns the date and time the certificate expires. + + Poco::DigestEngine::Digest fingerprint(const std::string& algorithm = "SHA1") const; + /// Computes and returns the fingerprint of the certificate, + /// using the given algorithm. The algorithm must be supported + /// by OpenSSL, e.g., "SHA1" or "SHA256". + + void save(std::ostream& stream) const; + /// Writes the certificate to the given stream. + /// The certificate is written in PEM format. + + void save(const std::string& path) const; + /// Writes the certificate to the file given by path. + /// The certificate is written in PEM format. + + bool issuedBy(const X509Certificate& issuerCertificate) const; + /// Checks whether the certificate has been issued by + /// the issuer given by issuerCertificate. This can be + /// used to validate a certificate chain. + /// + /// Verifies if the certificate has been signed with the + /// issuer's private key, using the public key from the issuer + /// certificate. + /// + /// Returns true if verification against the issuer certificate + /// was successful, false otherwise. + + bool equals(const X509Certificate& otherCertificate) const; + /// Checks whether the certificate is equal to + /// the other certificate, by comparing the hashes + /// of both certificates. + /// + /// Returns true if both certificates are identical, + /// otherwise false. + + const X509* certificate() const; + /// Returns the underlying OpenSSL certificate. + + X509* dup() const; + /// Duplicates and returns the underlying OpenSSL certificate. Note that + /// the caller assumes responsibility for the lifecycle of the created + /// certificate. + + std::string signatureAlgorithm() const; + /// Returns the certificate signature algorithm long name. + + void print(std::ostream& out) const; + /// Prints the certificate information to ostream. + + static List readPEM(const std::string& pemFileName); + /// Reads and returns a list of certificates from + /// the specified PEM file. + + static void writePEM(const std::string& pemFileName, const List& list); + /// Writes the list of certificates to the specified PEM file. + +protected: + void load(std::istream& stream); + /// Loads the certificate from the given stream. The + /// certificate must be in PEM format. + + void load(const std::string& path); + /// Loads the certificate from the given file. The + /// certificate must be in PEM format. + + void init(); + /// Extracts issuer and subject name from the certificate. + +private: + enum + { + NAME_BUFFER_SIZE = 256 + }; + + std::string _issuerName; + std::string _subjectName; + std::string _serialNumber; + X509* _pCert; + OpenSSLInitializer _openSSLInitializer; +}; + + +// +// inlines +// + + +inline long X509Certificate::version() const +{ + // This is defined by standards (X.509 et al) to be + // one less than the certificate version. + // So, eg. a version 3 certificate will return 2. + return X509_get_version(_pCert) + 1; +} + + +inline const std::string& X509Certificate::serialNumber() const +{ + return _serialNumber; +} + + +inline const std::string& X509Certificate::issuerName() const +{ + return _issuerName; +} + + +inline const std::string& X509Certificate::subjectName() const +{ + return _subjectName; +} + + +inline const X509* X509Certificate::certificate() const +{ + return _pCert; +} + + +inline X509* X509Certificate::dup() const +{ + return X509_dup(_pCert); +} + + +} } // namespace Poco::Crypto + + +#endif // Crypto_X509Certificate_INCLUDED diff --git a/include/Poco/Poco/DateTime.h b/include/Poco/Poco/DateTime.h new file mode 100644 index 00000000..f0ee41b9 --- /dev/null +++ b/include/Poco/Poco/DateTime.h @@ -0,0 +1,443 @@ +// +// DateTime.h +// +// Library: Foundation +// Package: DateTime +// Module: DateTime +// +// Definition of the DateTime class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_DateTime_INCLUDED +#define Foundation_DateTime_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Timestamp.h" +#include "Poco/Timespan.h" + + +struct tm; + + +namespace Poco { + + +class Foundation_API DateTime + /// This class represents an instant in time, expressed + /// in years, months, days, hours, minutes, seconds + /// and milliseconds based on the Gregorian calendar. + /// The class is mainly useful for conversions between + /// UTC, Julian day and Gregorian calendar dates. + /// + /// The date and time stored in a DateTime is always in UTC + /// (Coordinated Universal Time) and thus independent of the + /// timezone in effect on the system. + /// + /// Conversion calculations are based on algorithms + /// collected and described by Peter Baum at + /// http://vsg.cape.com/~pbaum/date/date0.htm + /// + /// Internally, this class stores a date/time in two + /// forms (UTC and broken down) for performance reasons. Only use + /// this class for conversions between date/time representations. + /// Use the Timestamp class for everything else. + /// + /// Notes: + /// * Zero is a valid year (in accordance with ISO 8601 and astronomical year numbering) + /// * Year zero (0) is a leap year + /// * Negative years (years preceding 1 BC) are not supported + /// + /// For more information, please see: + /// * http://en.wikipedia.org/wiki/Gregorian_Calendar + /// * http://en.wikipedia.org/wiki/Julian_day + /// * http://en.wikipedia.org/wiki/UTC + /// * http://en.wikipedia.org/wiki/ISO_8601 +{ +public: + enum Months + /// Symbolic names for month numbers (1 to 12). + { + JANUARY = 1, + FEBRUARY, + MARCH, + APRIL, + MAY, + JUNE, + JULY, + AUGUST, + SEPTEMBER, + OCTOBER, + NOVEMBER, + DECEMBER + }; + + enum DaysOfWeek + /// Symbolic names for week day numbers (0 to 6). + { + SUNDAY = 0, + MONDAY, + TUESDAY, + WEDNESDAY, + THURSDAY, + FRIDAY, + SATURDAY + }; + + DateTime(); + /// Creates a DateTime for the current date and time. + + DateTime(const tm& tmStruct); + /// Creates a DateTime from tm struct. + + DateTime(const Timestamp& timestamp); + /// Creates a DateTime for the date and time given in + /// a Timestamp. + + DateTime(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0); + /// Creates a DateTime for the given Gregorian date and time. + /// * year is from 0 to 9999. + /// * month is from 1 to 12. + /// * day is from 1 to 31. + /// * hour is from 0 to 23. + /// * minute is from 0 to 59. + /// * second is from 0 to 60. + /// * millisecond is from 0 to 999. + /// * microsecond is from 0 to 999. + /// + /// Throws an InvalidArgumentException if an argument date is out of range. + + DateTime(double julianDay); + /// Creates a DateTime for the given Julian day. + + DateTime(Timestamp::UtcTimeVal utcTime, Timestamp::TimeDiff diff); + /// Creates a DateTime from an UtcTimeVal and a TimeDiff. + /// + /// Mainly used internally by DateTime and friends. + + DateTime(const DateTime& dateTime); + /// Copy constructor. Creates the DateTime from another one. + + ~DateTime(); + /// Destroys the DateTime. + + DateTime& operator = (const DateTime& dateTime); + /// Assigns another DateTime. + + DateTime& operator = (const Timestamp& timestamp); + /// Assigns a Timestamp. + + DateTime& operator = (double julianDay); + /// Assigns a Julian day. + + DateTime& assign(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microseconds = 0); + /// Assigns a Gregorian date and time. + /// * year is from 0 to 9999. + /// * month is from 1 to 12. + /// * day is from 1 to 31. + /// * hour is from 0 to 23. + /// * minute is from 0 to 59. + /// * second is from 0 to 60. + /// * millisecond is from 0 to 999. + /// * microsecond is from 0 to 999. + /// + /// Throws an InvalidArgumentException if an argument date is out of range. + + void swap(DateTime& dateTime); + /// Swaps the DateTime with another one. + + int year() const; + /// Returns the year. + + int month() const; + /// Returns the month (1 to 12). + + int week(int firstDayOfWeek = MONDAY) const; + /// Returns the week number within the year. + /// FirstDayOfWeek should be either SUNDAY (0) or MONDAY (1). + /// The returned week number will be from 0 to 53. Week number 1 is the week + /// containing January 4. This is in accordance to ISO 8601. + /// + /// The following example assumes that firstDayOfWeek is MONDAY. For 2005, which started + /// on a Saturday, week 1 will be the week starting on Monday, January 3. + /// January 1 and 2 will fall within week 0 (or the last week of the previous year). + /// + /// For 2007, which starts on a Monday, week 1 will be the week starting on Monday, January 1. + /// There will be no week 0 in 2007. + + int day() const; + /// Returns the day within the month (1 to 31). + + int dayOfWeek() const; + /// Returns the weekday (0 to 6, where + /// 0 = Sunday, 1 = Monday, ..., 6 = Saturday). + + int dayOfYear() const; + /// Returns the number of the day in the year. + /// January 1 is 1, February 1 is 32, etc. + + int hour() const; + /// Returns the hour (0 to 23). + + int hourAMPM() const; + /// Returns the hour (0 to 12). + + bool isAM() const; + /// Returns true if hour < 12; + + bool isPM() const; + /// Returns true if hour >= 12. + + int minute() const; + /// Returns the minute (0 to 59). + + int second() const; + /// Returns the second (0 to 59). + + int millisecond() const; + /// Returns the millisecond (0 to 999) + + int microsecond() const; + /// Returns the microsecond (0 to 999) + + double julianDay() const; + /// Returns the julian day for the date and time. + + Timestamp timestamp() const; + /// Returns the date and time expressed as a Timestamp. + + Timestamp::UtcTimeVal utcTime() const; + /// Returns the date and time expressed in UTC-based + /// time. UTC base time is midnight, October 15, 1582. + /// Resolution is 100 nanoseconds. + + bool operator == (const DateTime& dateTime) const; + bool operator != (const DateTime& dateTime) const; + bool operator < (const DateTime& dateTime) const; + bool operator <= (const DateTime& dateTime) const; + bool operator > (const DateTime& dateTime) const; + bool operator >= (const DateTime& dateTime) const; + + DateTime operator + (const Timespan& span) const; + DateTime operator - (const Timespan& span) const; + Timespan operator - (const DateTime& dateTime) const; + DateTime& operator += (const Timespan& span); + DateTime& operator -= (const Timespan& span); + + tm makeTM() const; + /// Converts DateTime to tm struct. + + void makeUTC(int tzd); + /// Converts a local time into UTC, by applying the given time zone differential. + + void makeLocal(int tzd); + /// Converts a UTC time into a local time, by applying the given time zone differential. + + static bool isLeapYear(int year); + /// Returns true if the given year is a leap year; + /// false otherwise. + + static int daysOfMonth(int year, int month); + /// Returns the number of days in the given month + /// and year. Month is from 1 to 12. + + static bool isValid(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0); + /// Checks if the given date and time is valid + /// (all arguments are within a proper range). + /// + /// Returns true if all arguments are valid, false otherwise. + +protected: + static double toJulianDay(Timestamp::UtcTimeVal utcTime); + /// Computes the Julian day for an UTC time. + + static double toJulianDay(int year, int month, int day, int hour = 0, int minute = 0, int second = 0, int millisecond = 0, int microsecond = 0); + /// Computes the Julian day for a Gregorian calendar date and time. + /// See , section 2.3.1 for the algorithm. + + static Timestamp::UtcTimeVal toUtcTime(double julianDay); + /// Computes the UTC time for a Julian day. + + void computeGregorian(double julianDay); + /// Computes the Gregorian date for the given Julian day. + /// See , section 3.3.1 for the algorithm. + + void computeDaytime(); + /// Extracts the daytime (hours, minutes, seconds, etc.) from the stored utcTime. + +private: + void checkLimit(short& lower, short& higher, short limit); + void normalize(); + ///utility functions used to correct the overflow in computeGregorian + + Timestamp::UtcTimeVal _utcTime; + short _year; + short _month; + short _day; + short _hour; + short _minute; + short _second; + short _millisecond; + short _microsecond; +}; + + +// +// inlines +// + + +inline double DateTime::toJulianDay(Timestamp::UtcTimeVal utcTime) +{ + double utcDays = double(utcTime)/864000000000.0; + return utcDays + 2299160.5; // first day of Gregorian reform (Oct 15 1582) +} + + +inline Timestamp::UtcTimeVal DateTime::toUtcTime(double julianDay) +{ + return Timestamp::UtcTimeVal((julianDay - 2299160.5)*864000000000.0); +} + + +inline Timestamp DateTime::timestamp() const +{ + return Timestamp::fromUtcTime(_utcTime); +} + + +inline Timestamp::UtcTimeVal DateTime::utcTime() const +{ + return _utcTime; +} + + +inline int DateTime::year() const +{ + return _year; +} + + +inline int DateTime::month() const +{ + return _month; +} + + +inline int DateTime::day() const +{ + return _day; +} + + +inline int DateTime::hour() const +{ + return _hour; +} + + +inline int DateTime::hourAMPM() const +{ + if (_hour < 1) + return 12; + else if (_hour > 12) + return _hour - 12; + else + return _hour; +} + + +inline bool DateTime::isAM() const +{ + return _hour < 12; +} + + +inline bool DateTime::isPM() const +{ + return _hour >= 12; +} + + +inline int DateTime::minute() const +{ + return _minute; +} + + +inline int DateTime::second() const +{ + return _second; +} + + +inline int DateTime::millisecond() const +{ + return _millisecond; +} + + +inline int DateTime::microsecond() const +{ + return _microsecond; +} + + +inline bool DateTime::operator == (const DateTime& dateTime) const +{ + return _utcTime == dateTime._utcTime; +} + + +inline bool DateTime::operator != (const DateTime& dateTime) const +{ + return _utcTime != dateTime._utcTime; +} + + +inline bool DateTime::operator < (const DateTime& dateTime) const +{ + return _utcTime < dateTime._utcTime; +} + + +inline bool DateTime::operator <= (const DateTime& dateTime) const +{ + return _utcTime <= dateTime._utcTime; +} + + +inline bool DateTime::operator > (const DateTime& dateTime) const +{ + return _utcTime > dateTime._utcTime; +} + + +inline bool DateTime::operator >= (const DateTime& dateTime) const +{ + return _utcTime >= dateTime._utcTime; +} + + +inline bool DateTime::isLeapYear(int year) +{ + return (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0); +} + + +inline void swap(DateTime& d1, DateTime& d2) +{ + d1.swap(d2); +} + + +} // namespace Poco + + +#endif // Foundation_DateTime_INCLUDED diff --git a/include/Poco/Poco/DefaultStrategy.h b/include/Poco/Poco/DefaultStrategy.h new file mode 100644 index 00000000..0291f355 --- /dev/null +++ b/include/Poco/Poco/DefaultStrategy.h @@ -0,0 +1,226 @@ +// +// DefaultStrategy.h +// +// Library: Foundation +// Package: Events +// Module: DefaultStrategy +// +// Implementation of the DefaultStrategy template. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_DefaultStrategy_INCLUDED +#define Foundation_DefaultStrategy_INCLUDED + + +#include "Poco/NotificationStrategy.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { + + +template +class DefaultStrategy: public NotificationStrategy + /// Default notification strategy. + /// + /// Internally, a std::vector<> is used to store + /// delegate objects. Delegates are invoked in the + /// order in which they have been registered. +{ +public: + using DelegateHandle = TDelegate*; + using DelegatePtr = SharedPtr; + using Delegates = std::vector; + using Iterator = typename Delegates::iterator; + +public: + DefaultStrategy() + { + } + + DefaultStrategy(const DefaultStrategy& s): + _delegates(s._delegates) + { + } + + ~DefaultStrategy() + { + } + + void notify(const void* sender, TArgs& arguments) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->notify(sender, arguments); + } + } + + DelegateHandle add(const TDelegate& delegate) + { + DelegatePtr pDelegate(static_cast(delegate.clone())); + _delegates.push_back(pDelegate); + return pDelegate.get(); + } + + void remove(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (delegate.equals(**it)) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + void remove(DelegateHandle delegateHandle) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (*it == delegateHandle) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + DefaultStrategy& operator = (const DefaultStrategy& s) + { + if (this != &s) + { + _delegates = s._delegates; + } + return *this; + } + + void clear() + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->disable(); + } + _delegates.clear(); + } + + bool empty() const + { + return _delegates.empty(); + } + +protected: + Delegates _delegates; +}; + + +template +class DefaultStrategy: public NotificationStrategy + /// Default notification strategy. + /// + /// Internally, a std::vector<> is used to store + /// delegate objects. Delegates are invoked in the + /// order in which they have been registered. +{ +public: + using DelegateHandle = TDelegate*; + using DelegatePtr = SharedPtr; + using Delegates = std::vector; + using Iterator = typename Delegates::iterator; + +public: + DefaultStrategy() + { + } + + DefaultStrategy(const DefaultStrategy& s): + _delegates(s._delegates) + { + } + + ~DefaultStrategy() + { + } + + void notify(const void* sender) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->notify(sender); + } + } + + DelegateHandle add(const TDelegate& delegate) + { + DelegatePtr pDelegate(static_cast(delegate.clone())); + _delegates.push_back(pDelegate); + return pDelegate.get(); + } + + void remove(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (delegate.equals(**it)) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + void remove(DelegateHandle delegateHandle) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (*it == delegateHandle) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + DefaultStrategy& operator = (const DefaultStrategy& s) + { + if (this != &s) + { + _delegates = s._delegates; + } + return *this; + } + + void clear() + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->disable(); + } + _delegates.clear(); + } + + bool empty() const + { + return _delegates.empty(); + } + +protected: + Delegates _delegates; +}; + + +} // namespace Poco + + +#endif // Foundation_DefaultStrategy_INCLUDED diff --git a/include/Poco/Poco/DigestEngine.h b/include/Poco/Poco/DigestEngine.h new file mode 100644 index 00000000..7ea34d56 --- /dev/null +++ b/include/Poco/Poco/DigestEngine.h @@ -0,0 +1,111 @@ +// +// DigestEngine.h +// +// Library: Foundation +// Package: Crypt +// Module: DigestEngine +// +// Definition of class DigestEngine. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_DigestEngine_INCLUDED +#define Foundation_DigestEngine_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +class Foundation_API DigestEngine + /// This class is an abstract base class + /// for all classes implementing a message + /// digest algorithm, like MD5Engine + /// and SHA1Engine. + /// Call update() repeatedly with data to + /// compute the digest from. When done, + /// call digest() to obtain the message + /// digest. +{ +public: + using Digest = std::vector; + + DigestEngine(); + virtual ~DigestEngine(); + + void update(const void* data, std::size_t length); + void update(char data); + void update(const std::string& data); + /// Updates the digest with the given data. + + virtual std::size_t digestLength() const = 0; + /// Returns the length of the digest in bytes. + + virtual void reset() = 0; + /// Resets the engine so that a new + /// digest can be computed. + + virtual const Digest& digest() = 0; + /// Finishes the computation of the digest and + /// returns the message digest. Resets the engine + /// and can thus only be called once for every digest. + /// The returned reference is valid until the next + /// time digest() is called, or the engine object is destroyed. + + static std::string digestToHex(const Digest& bytes); + /// Converts a message digest into a string of hexadecimal numbers. + + static Digest digestFromHex(const std::string& digest); + /// Converts a string created by digestToHex back to its Digest presentation + + static bool constantTimeEquals(const Digest& d1, const Digest& d2); + /// Compares two Digest values using a constant-time comparison + /// algorithm. This can be used to prevent timing attacks + /// (as discussed in ). + +protected: + virtual void updateImpl(const void* data, std::size_t length) = 0; + /// Updates the digest with the given data. Must be implemented + /// by subclasses. + +private: + DigestEngine(const DigestEngine&); + DigestEngine& operator = (const DigestEngine&); +}; + + +// +// inlines +// + + +inline void DigestEngine::update(const void* data, std::size_t length) +{ + updateImpl(data, length); +} + + +inline void DigestEngine::update(char data) +{ + updateImpl(&data, 1); +} + + +inline void DigestEngine::update(const std::string& data) +{ + updateImpl(data.data(), data.size()); +} + + +} // namespace Poco + + +#endif // Foundation_DigestEngine_INCLUDED diff --git a/include/Poco/Poco/Event.h b/include/Poco/Poco/Event.h new file mode 100644 index 00000000..92496178 --- /dev/null +++ b/include/Poco/Poco/Event.h @@ -0,0 +1,133 @@ +// +// Event.h +// +// Library: Foundation +// Package: Threading +// Module: Event +// +// Definition of the Event class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Event_INCLUDED +#define Foundation_Event_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" + + +#if defined(POCO_OS_FAMILY_WINDOWS) +#include "Poco/Event_WIN32.h" +#elif defined(POCO_VXWORKS) +#include "Poco/Event_VX.h" +#else +#include "Poco/Event_POSIX.h" +#endif + + +namespace Poco { + + +class Foundation_API Event: private EventImpl + /// An Event is a synchronization object that + /// allows one thread to signal one or more + /// other threads that a certain event + /// has happened. + /// Usually, one thread signals an event, + /// while one or more other threads wait + /// for an event to become signalled. +{ +public: + enum EventType + { + EVENT_MANUALRESET, /// Manual reset event + EVENT_AUTORESET /// Auto-reset event + }; + + explicit Event(EventType type = EVENT_AUTORESET); + /// Creates the event. If type is EVENT_AUTORESET, + /// the event is automatically reset after + /// a wait() successfully returns. + + //@ deprecated + explicit Event(bool autoReset); + /// Please use Event::Event(EventType) instead. + + ~Event(); + /// Destroys the event. + + void set(); + /// Signals the event. If autoReset is true, + /// only one thread waiting for the event + /// can resume execution. + /// If autoReset is false, all waiting threads + /// can resume execution. + + void wait(); + /// Waits for the event to become signalled. + + void wait(long milliseconds); + /// Waits for the event to become signalled. + /// Throws a TimeoutException if the event + /// does not become signalled within the specified + /// time interval. + + bool tryWait(long milliseconds); + /// Waits for the event to become signalled. + /// Returns true if the event + /// became signalled within the specified + /// time interval, false otherwise. + + void reset(); + /// Resets the event to unsignalled state. + +private: + Event(const Event&); + Event& operator = (const Event&); +}; + + +// +// inlines +// +inline void Event::set() +{ + setImpl(); +} + + +inline void Event::wait() +{ + waitImpl(); +} + + +inline void Event::wait(long milliseconds) +{ + if (!waitImpl(milliseconds)) + throw TimeoutException(); +} + + +inline bool Event::tryWait(long milliseconds) +{ + return waitImpl(milliseconds); +} + + +inline void Event::reset() +{ + resetImpl(); +} + + +} // namespace Poco + + +#endif // Foundation_Event_INCLUDED diff --git a/include/Poco/Poco/Event_WIN32.h b/include/Poco/Poco/Event_WIN32.h new file mode 100644 index 00000000..07fdb098 --- /dev/null +++ b/include/Poco/Poco/Event_WIN32.h @@ -0,0 +1,68 @@ +// +// Event_WIN32.h +// +// Library: Foundation +// Package: Threading +// Module: Event +// +// Definition of the EventImpl class for WIN32. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Event_WIN32_INCLUDED +#define Foundation_Event_WIN32_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include "Poco/UnWindows.h" + + +namespace Poco { + + +class Foundation_API EventImpl +{ +protected: + EventImpl(bool autoReset); + ~EventImpl(); + void setImpl(); + void waitImpl(); + bool waitImpl(long milliseconds); + void resetImpl(); + +private: + HANDLE _event; +}; + + +// +// inlines +// +inline void EventImpl::setImpl() +{ + if (!SetEvent(_event)) + { + throw SystemException("cannot signal event"); + } +} + + +inline void EventImpl::resetImpl() +{ + if (!ResetEvent(_event)) + { + throw SystemException("cannot reset event"); + } +} + + +} // namespace Poco + + +#endif // Foundation_Event_WIN32_INCLUDED diff --git a/include/Poco/Poco/Exception.h b/include/Poco/Poco/Exception.h new file mode 100644 index 00000000..c2d9c8db --- /dev/null +++ b/include/Poco/Poco/Exception.h @@ -0,0 +1,261 @@ +// +// Exception.h +// +// Library: Foundation +// Package: Core +// Module: Exception +// +// Definition of various Poco exception classes. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Exception_INCLUDED +#define Foundation_Exception_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +class Foundation_API Exception: public std::exception + /// This is the base class for all exceptions defined + /// in the Poco class library. +{ +public: + Exception(const std::string& msg, int code = 0); + /// Creates an exception. + + Exception(const std::string& msg, const std::string& arg, int code = 0); + /// Creates an exception. + + Exception(const std::string& msg, const Exception& nested, int code = 0); + /// Creates an exception and stores a clone + /// of the nested exception. + + Exception(const Exception& exc); + /// Copy constructor. + + ~Exception() noexcept; + /// Destroys the exception and deletes the nested exception. + + Exception& operator = (const Exception& exc); + /// Assignment operator. + + virtual const char* name() const noexcept; + /// Returns a static string describing the exception. + + virtual const char* className() const noexcept; + /// Returns the name of the exception class. + + virtual const char* what() const noexcept; + /// Returns a static string describing the exception. + /// + /// Same as name(), but for compatibility with std::exception. + + const Exception* nested() const; + /// Returns a pointer to the nested exception, or + /// null if no nested exception exists. + + const std::string& message() const; + /// Returns the message text. + + int code() const; + /// Returns the exception code if defined. + + std::string displayText() const; + /// Returns a string consisting of the + /// message name and the message text. + + virtual Exception* clone() const; + /// Creates an exact copy of the exception. + /// + /// The copy can later be thrown again by + /// invoking rethrow() on it. + + virtual void rethrow() const; + /// (Re)Throws the exception. + /// + /// This is useful for temporarily storing a + /// copy of an exception (see clone()), then + /// throwing it again. + +protected: + Exception(int code = 0); + /// Standard constructor. + + void message(const std::string& msg); + /// Sets the message for the exception. + + void extendedMessage(const std::string& arg); + /// Sets the extended message for the exception. + +private: + std::string _msg; + Exception* _pNested; + int _code; +}; + + +// +// inlines +// +inline const Exception* Exception::nested() const +{ + return _pNested; +} + + +inline const std::string& Exception::message() const +{ + return _msg; +} + + +inline void Exception::message(const std::string& msg) +{ + _msg = msg; +} + + +inline int Exception::code() const +{ + return _code; +} + + +// +// Macros for quickly declaring and implementing exception classes. +// Unfortunately, we cannot use a template here because character +// pointers (which we need for specifying the exception name) +// are not allowed as template arguments. +// +#define POCO_DECLARE_EXCEPTION_CODE(API, CLS, BASE, CODE) \ + class API CLS: public BASE \ + { \ + public: \ + CLS(int code = CODE); \ + CLS(const std::string& msg, int code = CODE); \ + CLS(const std::string& msg, const std::string& arg, int code = CODE); \ + CLS(const std::string& msg, const Poco::Exception& exc, int code = CODE); \ + CLS(const CLS& exc); \ + ~CLS() noexcept; \ + CLS& operator = (const CLS& exc); \ + const char* name() const noexcept; \ + const char* className() const noexcept; \ + Poco::Exception* clone() const; \ + void rethrow() const; \ + }; + +#define POCO_DECLARE_EXCEPTION(API, CLS, BASE) \ + POCO_DECLARE_EXCEPTION_CODE(API, CLS, BASE, 0) + +#define POCO_IMPLEMENT_EXCEPTION(CLS, BASE, NAME) \ + CLS::CLS(int code): BASE(code) \ + { \ + } \ + CLS::CLS(const std::string& msg, int code): BASE(msg, code) \ + { \ + } \ + CLS::CLS(const std::string& msg, const std::string& arg, int code): BASE(msg, arg, code) \ + { \ + } \ + CLS::CLS(const std::string& msg, const Poco::Exception& exc, int code): BASE(msg, exc, code) \ + { \ + } \ + CLS::CLS(const CLS& exc): BASE(exc) \ + { \ + } \ + CLS::~CLS() noexcept \ + { \ + } \ + CLS& CLS::operator = (const CLS& exc) \ + { \ + BASE::operator = (exc); \ + return *this; \ + } \ + const char* CLS::name() const noexcept \ + { \ + return NAME; \ + } \ + const char* CLS::className() const noexcept \ + { \ + return typeid(*this).name(); \ + } \ + Poco::Exception* CLS::clone() const \ + { \ + return new CLS(*this); \ + } \ + void CLS::rethrow() const \ + { \ + throw *this; \ + } + + +// +// Standard exception classes +// +POCO_DECLARE_EXCEPTION(Foundation_API, LogicException, Exception) +POCO_DECLARE_EXCEPTION(Foundation_API, AssertionViolationException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, NullPointerException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, NullValueException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, BugcheckException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, InvalidArgumentException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, NotImplementedException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, RangeException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, IllegalStateException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, InvalidAccessException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, SignalException, LogicException) +POCO_DECLARE_EXCEPTION(Foundation_API, UnhandledException, LogicException) + +POCO_DECLARE_EXCEPTION(Foundation_API, RuntimeException, Exception) +POCO_DECLARE_EXCEPTION(Foundation_API, NotFoundException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, ExistsException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, TimeoutException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, SystemException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, RegularExpressionException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, LibraryLoadException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, LibraryAlreadyLoadedException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, NoThreadAvailableException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, PropertyNotSupportedException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, PoolOverflowException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, NoPermissionException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, OutOfMemoryException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, DataException, RuntimeException) + +POCO_DECLARE_EXCEPTION(Foundation_API, DataFormatException, DataException) +POCO_DECLARE_EXCEPTION(Foundation_API, SyntaxException, DataException) +POCO_DECLARE_EXCEPTION(Foundation_API, CircularReferenceException, DataException) +POCO_DECLARE_EXCEPTION(Foundation_API, PathSyntaxException, SyntaxException) +POCO_DECLARE_EXCEPTION(Foundation_API, IOException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, ProtocolException, IOException) +POCO_DECLARE_EXCEPTION(Foundation_API, FileException, IOException) +POCO_DECLARE_EXCEPTION(Foundation_API, FileExistsException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, FileNotFoundException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, PathNotFoundException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, FileReadOnlyException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, FileAccessDeniedException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, CreateFileException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, OpenFileException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, WriteFileException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, ReadFileException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, DirectoryNotEmptyException, FileException) +POCO_DECLARE_EXCEPTION(Foundation_API, UnknownURISchemeException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, TooManyURIRedirectsException, RuntimeException) +POCO_DECLARE_EXCEPTION(Foundation_API, URISyntaxException, SyntaxException) + +POCO_DECLARE_EXCEPTION(Foundation_API, ApplicationException, Exception) +POCO_DECLARE_EXCEPTION(Foundation_API, BadCastException, RuntimeException) + + +} // namespace Poco + + +#endif // Foundation_Exception_INCLUDED diff --git a/include/Poco/Poco/FIFOBuffer.h b/include/Poco/Poco/FIFOBuffer.h new file mode 100644 index 00000000..7fc85ca7 --- /dev/null +++ b/include/Poco/Poco/FIFOBuffer.h @@ -0,0 +1,556 @@ +// +// FIFOBuffer.h +// +// Library: Foundation +// Package: Core +// Module: FIFOBuffer +// +// Definition of the FIFOBuffer class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_FIFOBuffer_INCLUDED +#define Foundation_FIFOBuffer_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include "Poco/Buffer.h" +#include "Poco/BasicEvent.h" +#include "Poco/Mutex.h" +#include "Poco/Format.h" + + +namespace Poco { + + +template +class BasicFIFOBuffer + /// A simple buffer class with support for re-entrant, + /// FIFO-style read/write operations, as well as (optional) + /// empty/non-empty/full (i.e. writable/readable) transition + /// notifications. Buffer can be flagged with end-of-file and + /// error flags, which renders it un-readable/writable. + /// + /// Critical portions of code are protected by a recursive mutex. + /// However, to achieve thread-safety in cases where multiple + /// member function calls are involved and have to be atomic, + /// the mutex must be locked externally. + /// + /// Buffer size, as well as amount of unread data and + /// available space introspections are supported as well. + /// + /// This class is useful anywhere where a FIFO functionality + /// is needed. +{ +public: + typedef T Type; + + mutable Poco::BasicEvent writable; + /// Event indicating "writability" of the buffer, + /// triggered as follows: + /// + /// * when buffer transitions from non-full to full, + /// Writable event observers are notified, with + /// false value as the argument + /// + /// * when buffer transitions from full to non-full, + /// Writable event observers are notified, with + /// true value as the argument + + mutable Poco::BasicEvent readable; + /// Event indicating "readability" of the buffer, + /// triggered as follows: + /// + /// * when buffer transitions from non-empty to empty, + /// Readable event observers are notified, with false + /// value as the argument + /// + /// * when FIFOBuffer transitions from empty to non-empty, + /// Readable event observers are notified, with true value + /// as the argument + + BasicFIFOBuffer(std::size_t size, bool notify = false): + _buffer(size), + _begin(0), + _used(0), + _notify(notify), + _eof(false), + _error(false) + /// Creates the FIFOBuffer. + { + } + + BasicFIFOBuffer(T* pBuffer, std::size_t size, bool notify = false): + _buffer(pBuffer, size), + _begin(0), + _used(0), + _notify(notify), + _eof(false), + _error(false) + /// Creates the FIFOBuffer. + { + } + + BasicFIFOBuffer(const T* pBuffer, std::size_t size, bool notify = false): + _buffer(pBuffer, size), + _begin(0), + _used(size), + _notify(notify), + _eof(false), + _error(false) + /// Creates the FIFOBuffer. + { + } + + ~BasicFIFOBuffer() + /// Destroys the FIFOBuffer. + { + } + + void resize(std::size_t newSize, bool preserveContent = true) + /// Resizes the buffer. If preserveContent is true, + /// the content of the old buffer is preserved. + /// New size can be larger or smaller than + /// the current size, but it must not be 0. + /// Additionally, if the new length is smaller + /// than currently used length and preserveContent + /// is true, InvalidAccessException is thrown. + { + Mutex::ScopedLock lock(_mutex); + + if (preserveContent && (newSize < _used)) + throw InvalidAccessException("Can not resize FIFO without data loss."); + + std::size_t usedBefore = _used; + _buffer.resize(newSize, preserveContent); + if (!preserveContent) _used = 0; + if (_notify) notify(usedBefore); + } + + std::size_t peek(T* pBuffer, std::size_t length) const + /// Peeks into the data currently in the FIFO + /// without actually extracting it. + /// If length is zero, the return is immediate. + /// If length is greater than used length, + /// it is substituted with the the current FIFO + /// used length. + /// + /// Returns the number of elements copied in the + /// supplied buffer. + { + if (0 == length) return 0; + Mutex::ScopedLock lock(_mutex); + if (!isReadable()) return 0; + if (length > _used) length = _used; + std::memcpy(pBuffer, _buffer.begin() + _begin, length * sizeof(T)); + return length; + } + + std::size_t peek(Poco::Buffer& buffer, std::size_t length = 0) const + /// Peeks into the data currently in the FIFO + /// without actually extracting it. + /// Resizes the supplied buffer to the size of + /// data written to it. If length is not + /// supplied by the caller or is greater than length + /// of currently used data, the current FIFO used + /// data length is substituted for it. + /// + /// Returns the number of elements copied in the + /// supplied buffer. + { + Mutex::ScopedLock lock(_mutex); + if (!isReadable()) return 0; + if (0 == length || length > _used) length = _used; + buffer.resize(length); + return peek(buffer.begin(), length); + } + + std::size_t read(T* pBuffer, std::size_t length) + /// Copies the data currently in the FIFO + /// into the supplied buffer, which must be + /// preallocated to at least the length size + /// before calling this function. + /// + /// Returns the size of the copied data. + { + if (0 == length) return 0; + Mutex::ScopedLock lock(_mutex); + if (!isReadable()) return 0; + std::size_t usedBefore = _used; + std::size_t readLen = peek(pBuffer, length); + poco_assert (_used >= readLen); + _used -= readLen; + if (0 == _used) _begin = 0; + else _begin += length; + + if (_notify) notify(usedBefore); + + return readLen; + } + + std::size_t read(Poco::Buffer& buffer, std::size_t length = 0) + /// Copies the data currently in the FIFO + /// into the supplied buffer. + /// Resizes the supplied buffer to the size of + /// data written to it. + /// + /// Returns the size of the copied data. + { + Mutex::ScopedLock lock(_mutex); + if (!isReadable()) return 0; + std::size_t usedBefore = _used; + std::size_t readLen = peek(buffer, length); + poco_assert (_used >= readLen); + _used -= readLen; + if (0 == _used) _begin = 0; + else _begin += length; + + if (_notify) notify(usedBefore); + + return readLen; + } + + std::size_t write(const T* pBuffer, std::size_t length) + /// Writes data from supplied buffer to the FIFO buffer. + /// If there is no sufficient space for the whole + /// buffer to be written, data up to available + /// length is written. + /// The length of data to be written is determined from the + /// length argument. Function does nothing and returns zero + /// if length argument is equal to zero. + /// + /// Returns the length of data written. + { + if (0 == length) return 0; + + Mutex::ScopedLock lock(_mutex); + + if (!isWritable()) return 0; + + if (_buffer.size() - (_begin + _used) < length) + { + std::memmove(_buffer.begin(), begin(), _used * sizeof(T)); + _begin = 0; + } + + std::size_t usedBefore = _used; + std::size_t available = _buffer.size() - _used - _begin; + std::size_t len = length > available ? available : length; + std::memcpy(begin() + _used, pBuffer, len * sizeof(T)); + _used += len; + poco_assert (_used <= _buffer.size()); + if (_notify) notify(usedBefore); + + return len; + } + + std::size_t write(const Buffer& buffer, std::size_t length = 0) + /// Writes data from supplied buffer to the FIFO buffer. + /// If there is no sufficient space for the whole + /// buffer to be written, data up to available + /// length is written. + /// The length of data to be written is determined from the + /// length argument or buffer size (when length argument is + /// default zero or greater than buffer size). + /// + /// Returns the length of data written. + { + if (length == 0 || length > buffer.size()) + length = buffer.size(); + + return write(buffer.begin(), length); + } + + std::size_t size() const + /// Returns the size of the buffer. + { + return _buffer.size(); + } + + std::size_t used() const + /// Returns the size of the used portion of the buffer. + { + return _used; + } + + std::size_t available() const + /// Returns the size of the available portion of the buffer. + { + return size() - _used; + } + + void drain(std::size_t length = 0) + /// Drains length number of elements from the buffer. + /// If length is zero or greater than buffer current + /// content length, buffer is emptied. + { + Mutex::ScopedLock lock(_mutex); + + std::size_t usedBefore = _used; + + if (0 == length || length >= _used) + { + _begin = 0; + _used = 0; + } + else + { + _begin += length; + _used -= length; + } + + if (_notify) notify(usedBefore); + } + + void copy(const T* ptr, std::size_t length) + /// Copies the supplied data to the buffer and adjusts + /// the used buffer size. + { + poco_check_ptr(ptr); + if (0 == length) return; + + Mutex::ScopedLock lock(_mutex); + + if (length > available()) + throw Poco::InvalidAccessException("Cannot extend buffer."); + + if (!isWritable()) + throw Poco::InvalidAccessException("Buffer not writable."); + + std::memcpy(begin() + _used, ptr, length * sizeof(T)); + std::size_t usedBefore = _used; + _used += length; + if (_notify) notify(usedBefore); + } + + void advance(std::size_t length) + /// Advances buffer by length elements. + /// Should be called AFTER the data + /// was copied into the buffer. + { + Mutex::ScopedLock lock(_mutex); + + if (length > available()) + throw Poco::InvalidAccessException("Cannot extend buffer."); + + if (!isWritable()) + throw Poco::InvalidAccessException("Buffer not writable."); + + if (_buffer.size() - (_begin + _used) < length) + { + std::memmove(_buffer.begin(), begin(), _used * sizeof(T)); + _begin = 0; + } + + std::size_t usedBefore = _used; + _used += length; + if (_notify) notify(usedBefore); + } + + T* begin() + /// Returns the pointer to the beginning of the buffer. + { + Mutex::ScopedLock lock(_mutex); + if (_begin != 0) + { + // Move the data to the start of the buffer so begin() and next() + // always return consistent pointers with each other and allow writing + // to the end of the buffer. + std::memmove(_buffer.begin(), _buffer.begin() + _begin, _used * sizeof(T)); + _begin = 0; + } + return _buffer.begin(); + } + + T* next() + /// Returns the pointer to the next available position in the buffer. + { + Mutex::ScopedLock lock(_mutex); + return begin() + _used; + } + + T& operator [] (std::size_t index) + /// Returns value at index position. + /// Throws InvalidAccessException if index is larger than + /// the last valid (used) buffer position. + { + Mutex::ScopedLock lock(_mutex); + if (index >= _used) + throw InvalidAccessException(format("Index out of bounds: %z (max index allowed: %z)", index, _used - 1)); + + return _buffer[_begin + index]; + } + + const T& operator [] (std::size_t index) const + /// Returns value at index position. + /// Throws InvalidAccessException if index is larger than + /// the last valid (used) buffer position. + { + Mutex::ScopedLock lock(_mutex); + if (index >= _used) + throw InvalidAccessException(format("Index out of bounds: %z (max index allowed: %z)", index, _used - 1)); + + return _buffer[_begin + index]; + } + + const Buffer& buffer() const + /// Returns const reference to the underlying buffer. + { + return _buffer; + } + + void setError(bool error = true) + /// Sets the error flag on the buffer and empties it. + /// If notifications are enabled, they will be triggered + /// if appropriate. + /// + /// Setting error flag to true prevents reading and writing + /// to the buffer; to re-enable FIFOBuffer for reading/writing, + /// the error flag must be set to false. + { + if (error) + { + bool f = false; + Mutex::ScopedLock lock(_mutex); + if (error && isReadable() && _notify) readable.notify(this, f); + if (error && isWritable() && _notify) writable.notify(this, f); + _error = error; + _used = 0; + } + else + { + bool t = true; + Mutex::ScopedLock lock(_mutex); + _error = false; + if (_notify && !_eof) writable.notify(this, t); + } + } + + bool isValid() const + /// Returns true if error flag is not set on the buffer, + /// otherwise returns false. + { + return !_error; + } + + void setEOF(bool eof = true) + /// Sets end-of-file flag on the buffer. + /// + /// Setting EOF flag to true prevents writing to the + /// buffer; reading from the buffer will still be + /// allowed until all data present in the buffer at the + /// EOF set time is drained. After that, to re-enable + /// FIFOBuffer for reading/writing, EOF must be + /// set to false. + /// + /// Setting EOF flag to false clears EOF state if it + /// was previously set. If EOF was not set, it has no + /// effect. + { + Mutex::ScopedLock lock(_mutex); + bool flag = !eof; + if (_notify) writable.notify(this, flag); + _eof = eof; + } + + bool hasEOF() const + /// Returns true if EOF flag has been set. + { + return _eof; + } + + bool isEOF() const + /// Returns true if EOF flag has been set and buffer is empty. + { + return isEmpty() && _eof; + } + + bool isEmpty() const + /// Returns true is buffer is empty, false otherwise. + { + return 0 == _used; + } + + bool isFull() const + /// Returns true is buffer is full, false otherwise. + { + return size() == _used; + } + + bool isReadable() const + /// Returns true if buffer contains data and is not + /// in error state. + { + return !isEmpty() && isValid(); + } + + bool isWritable() const + /// Returns true if buffer is not full and is not + /// in error state. + { + return !isFull() && isValid() && !_eof; + } + + void setNotify(bool notify = true) + /// Enables/disables notifications. + { + _notify = notify; + } + + bool getNotify() const + /// Returns true if notifications are enabled, false otherwise. + { + return _notify; + } + + Mutex& mutex() + /// Returns reference to mutex. + { + return _mutex; + } + +private: + void notify(std::size_t usedBefore) + { + bool t = true, f = false; + if (usedBefore == 0 && _used > 0) + readable.notify(this, t); + else if (usedBefore > 0 && 0 == _used) + readable.notify(this, f); + + if (usedBefore == _buffer.size() && _used < _buffer.size()) + writable.notify(this, t); + else if (usedBefore < _buffer.size() && _used == _buffer.size()) + writable.notify(this, f); + } + + BasicFIFOBuffer(); + BasicFIFOBuffer(const BasicFIFOBuffer&); + BasicFIFOBuffer& operator = (const BasicFIFOBuffer&); + + Buffer _buffer; + std::size_t _begin; + std::size_t _used; + bool _notify; + mutable Mutex _mutex; + bool _eof; + bool _error; +}; + + +// +// We provide an instantiation for char +// +typedef BasicFIFOBuffer FIFOBuffer; + + +} // namespace Poco + + +#endif // Foundation_FIFOBuffer_INCLUDED diff --git a/include/Poco/Poco/Format.h b/include/Poco/Poco/Format.h new file mode 100644 index 00000000..780f4e4c --- /dev/null +++ b/include/Poco/Poco/Format.h @@ -0,0 +1,180 @@ +// +// Format.h +// +// Library: Foundation +// Package: Core +// Module: Format +// +// Definition of the format freestanding function. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Format_INCLUDED +#define Foundation_Format_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Any.h" +#include +#include + + +namespace Poco { + + +std::string Foundation_API format(const std::string& fmt, const Any& value); + /// This function implements sprintf-style formatting in a typesafe way. + /// Various variants of the function are available, supporting a + /// different number of arguments (up to six). + /// + /// The formatting is controlled by the format string in fmt. + /// Format strings are quite similar to those of the std::printf() function, but + /// there are some minor differences. + /// + /// The format string can consist of any sequence of characters; certain + /// characters have a special meaning. Characters without a special meaning + /// are copied verbatim to the result. A percent sign (%) marks the beginning + /// of a format specification. Format specifications have the following syntax: + /// + /// %[][][][.][] + /// + /// Index, flags, width, precision and prefix are optional. The only required part of + /// the format specification, apart from the percent sign, is the type. + /// + /// The optional index argument has the format "[]" and allows to + /// address an argument by its zero-based position (see the example below). + /// + /// Following are valid type specifications and their meaning: + /// + /// * b boolean (true = 1, false = 0) + /// * c character + /// * d signed decimal integer + /// * i signed decimal integer + /// * o unsigned octal integer + /// * u unsigned decimal integer + /// * x unsigned hexadecimal integer (lower case) + /// * X unsigned hexadecimal integer (upper case) + /// * e signed floating-point value in the form [-]d.dddde[]dd[d] + /// * E signed floating-point value in the form [-]d.ddddE[]dd[d] + /// * f signed floating-point value in the form [-]dddd.dddd + /// * s std::string + /// * z std::size_t + /// + /// The following flags are supported: + /// + /// * - left align the result within the given field width + /// * + prefix the output value with a sign (+ or -) if the output value is of a signed type + /// * 0 if width is prefixed with 0, zeros are added until the minimum width is reached + /// * # For o, x, X, the # flag prefixes any nonzero output value with 0, 0x, or 0X, respectively; + /// for e, E, f, the # flag forces the output value to contain a decimal point in all cases. + /// + /// The following modifiers are supported: + /// + /// * (none) argument is char (c), int (d, i), unsigned (o, u, x, X) double (e, E, f, g, G) or string (s) + /// * l argument is long (d, i), unsigned long (o, u, x, X) or long double (e, E, f, g, G) + /// * L argument is long long (d, i), unsigned long long (o, u, x, X) + /// * h argument is short (d, i), unsigned short (o, u, x, X) or float (e, E, f, g, G) + /// * ? argument is any signed or unsigned int, short, long, or 64-bit integer (d, i, o, x, X) + /// + /// The width argument is a nonnegative decimal integer or '*' with an additional nonnegative integer value + /// preceding the value to be formated, controlling the minimum number of characters printed. + /// If the number of characters in the output value is less than the specified width, blanks or + /// leading zeros are added, according to the specified flags (-, +, 0). + /// + /// Precision is a nonnegative decimal integer or '*' with an additional nonnegative integer value preceding + /// the value to be formated, preceded by a period (.), which specifies the number of characters + /// to be printed, the number of decimal places, or the number of significant digits. + /// + /// Throws an InvalidArgumentException if an argument index is out of range. + /// + /// Starting with release 1.4.3, an argument that does not match the format + /// specifier no longer results in a BadCastException. The string [ERRFMT] is + /// written to the result string instead. + /// + /// If there are more format specifiers than values, the format specifiers without a corresponding value + /// are copied verbatim to output. + /// + /// If there are more values than format specifiers, the superfluous values are ignored. + /// + /// Usage Examples: + /// std::string s1 = format("The answer to life, the universe, and everything is %d", 42); + /// std::string s2 = format("second: %[1]d, first: %[0]d", 1, 2); + +void Foundation_API format(std::string& result, const char *fmt, const std::vector& values); + /// Supports a variable number of arguments and is used by + /// all other variants of format(). + +void Foundation_API format(std::string& result, const std::string& fmt, const std::vector& values); + /// Supports a variable number of arguments and is used by + /// all other variants of format(). + + +template < + typename T, + typename... Args> +void format(std::string& result, const std::string& fmt, T arg1, Args... args) + /// Appends the formatted string to result. +{ + std::vector values; + values.reserve(sizeof...(Args) + 1); + values.emplace_back(arg1); + values.insert(values.end(), { args... }); + format(result, fmt, values); +} + + +template < + typename T, + typename... Args> +void format(std::string& result, const char* fmt, T arg1, Args... args) + /// Appends the formatted string to result. +{ + std::vector values; + values.reserve(sizeof...(Args) + 1); + values.emplace_back(arg1); + values.insert(values.end(), { args... }); + format(result, fmt, values); +} + + +template < + typename T, + typename... Args> +std::string format(const std::string& fmt, T arg1, Args... args) + /// Returns the formatted string. +{ + std::vector values; + values.reserve(sizeof...(Args) + 1); + values.emplace_back(arg1); + values.insert(values.end(), { args... }); + std::string result; + format(result, fmt, values); + return result; +} + + +template < + typename T, + typename... Args> +std::string format(const char* fmt, T arg1, Args... args) + /// Returns the formatted string. +{ + std::vector values; + values.reserve(sizeof...(Args) + 1); + values.emplace_back(arg1); + values.insert(values.end(), { args... }); + std::string result; + format(result, fmt, values); + return result; +} + + +} // namespace Poco + + +#endif // Foundation_Format_INCLUDED diff --git a/include/Poco/Poco/Foundation.h b/include/Poco/Poco/Foundation.h new file mode 100644 index 00000000..74a3bf97 --- /dev/null +++ b/include/Poco/Poco/Foundation.h @@ -0,0 +1,164 @@ +// +// Foundation.h +// +// Library: Foundation +// Package: Core +// Module: Foundation +// +// Basic definitions for the POCO Foundation library. +// This file must be the first file included by every other Foundation +// header file. +// +// Copyright (c) 2004-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Foundation_INCLUDED +#define Foundation_Foundation_INCLUDED + + +// +// Include library configuration +// +#include "Poco/Config.h" + + +// +// Ensure that POCO_DLL is default unless POCO_STATIC is defined +// +#if defined(_WIN32) && defined(_DLL) + #if !defined(POCO_DLL) && !defined(POCO_STATIC) + #define POCO_DLL + #endif +#endif + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the Foundation_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// Foundation_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if (defined(_WIN32) || defined(_WIN32_WCE)) && defined(POCO_DLL) + #if defined(Foundation_EXPORTS) + #define Foundation_API __declspec(dllexport) + #else + #define Foundation_API __declspec(dllimport) + #endif +#endif + + +#if !defined(Foundation_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define Foundation_API __attribute__ ((visibility ("default"))) + #else + #define Foundation_API + #endif +#endif + + +// +// Automatically link Foundation library. +// +#if defined(_MSC_VER) + #if defined(POCO_DLL) + #if defined(_DEBUG) + #define POCO_LIB_SUFFIX "d.lib" + #else + #define POCO_LIB_SUFFIX ".lib" + #endif + #elif defined(_DLL) + #if defined(_DEBUG) + #define POCO_LIB_SUFFIX "mdd.lib" + #else + #define POCO_LIB_SUFFIX "md.lib" + #endif + #else + #if defined(_DEBUG) + #define POCO_LIB_SUFFIX "mtd.lib" + #else + #define POCO_LIB_SUFFIX "mt.lib" + #endif + #endif + + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Foundation_EXPORTS) + #pragma comment(lib, "PocoFoundation" POCO_LIB_SUFFIX) + #endif +#endif + + +// +// Include platform-specific definitions +// +#include "Poco/Platform.h" +#if defined(_WIN32) + #include "Poco/Platform_WIN32.h" +#elif defined(POCO_VXWORKS) + #include "Poco/Platform_VX.h" +#elif defined(POCO_OS_FAMILY_UNIX) + #include "Poco/Platform_POSIX.h" +#endif + + +// +// Include alignment settings early +// +#include "Poco/Alignment.h" + +// +// Cleanup inconsistencies +// +#ifdef POCO_OS_FAMILY_WINDOWS + #if defined(POCO_NO_WSTRING) + #error POCO_NO_WSTRING is not supported on Windows. + #endif +#endif + + +// +// POCO_JOIN +// +// The following piece of macro magic joins the two +// arguments together, even when one of the arguments is +// itself a macro (see 16.3.1 in C++ standard). The key +// is that macro expansion of macro arguments does not +// occur in POCO_DO_JOIN2 but does in POCO_DO_JOIN. +// +#define POCO_JOIN(X, Y) POCO_DO_JOIN(X, Y) +#define POCO_DO_JOIN(X, Y) POCO_DO_JOIN2(X, Y) +#define POCO_DO_JOIN2(X, Y) X##Y + + +// +// POCO_DEPRECATED +// +// A macro expanding to a compiler-specific clause to +// mark a class or function as deprecated. +// +#if defined(POCO_NO_DEPRECATED) +#define POCO_DEPRECATED +#elif defined(_GNUC_) +#define POCO_DEPRECATED __attribute__((deprecated)) +#elif defined(__clang__) +#define POCO_DEPRECATED __attribute__((deprecated)) +#elif defined(_MSC_VER) +#define POCO_DEPRECATED __declspec(deprecated) +#else +#define POCO_DEPRECATED +#endif + + +// +// Pull in basic definitions +// +#include "Poco/Bugcheck.h" +#include "Poco/Types.h" +#include + + +#endif // Foundation_Foundation_INCLUDED diff --git a/include/Poco/Poco/ListMap.h b/include/Poco/Poco/ListMap.h new file mode 100644 index 00000000..51844d7f --- /dev/null +++ b/include/Poco/Poco/ListMap.h @@ -0,0 +1,265 @@ +// +// ListMap.h +// +// Library: Foundation +// Package: Core +// Module: ListMap +// +// Definition of the ListMap class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ListMap_INCLUDED +#define Foundation_ListMap_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/String.h" +#include "Poco/Exception.h" +#include +#include + + +namespace Poco { + + +template >, bool CaseSensitive = false> +class ListMap + /// This class implements a multimap in terms of a sequential container. + /// The use for this type of associative container is wherever automatic + /// ordering of elements is not desirable. Naturally, this container will + /// have inferior data retrieval performance and it is not recommended for + /// use with large datasets. The main purpose within POCO is for Internet + /// messages (email message, http headers etc), to prevent automatic + /// header entry reordering. +{ +public: + using KeyType = Key; + using MappedType = Mapped; + using Reference = Mapped&; + using ConstReference = const Mapped&; + using Pointer = Mapped*; + using ConstPointer = const Mapped*; + + using ValueType = typename Container::value_type; + using SizeType = typename Container::size_type; + using Iterator = typename Container::iterator; + using ConstIterator = typename Container::const_iterator; + + ListMap() + /// Creates an empty ListMap. + { + } + + explicit ListMap(std::size_t initialReserve): + _container(initialReserve) + /// Creates the ListMap with room for initialReserve entries. + { + } + + ListMap(const ListMap& other): + _container(other._container) + { + } + + ListMap(ListMap&& other) noexcept: + _container(std::move(other._container)) + { + } + + ListMap& operator = (const ListMap& map) + /// Assigns another ListMap. + { + ListMap tmp(map); + swap(tmp); + return *this; + } + + ListMap& operator = (ListMap&& map) noexcept + /// Assigns another ListMap. + { + _container = std::move(map._container); + return *this; + } + + void swap(ListMap& map) + /// Swaps the ListMap with another one. + { + _container.swap(map._container); + } + + ConstIterator begin() const + /// Returns the beginning of the map. + { + return _container.begin(); + } + + ConstIterator end() const + /// Returns the end of the map. + { + return _container.end(); + } + + Iterator begin() + /// Returns the beginning of the map. + { + return _container.begin(); + } + + Iterator end() + /// Returns the end of the map. + { + return _container.end(); + } + + ConstIterator find(const KeyType& key) const + /// Finds the first occurrence of the key and + /// returns iterator pointing to the found entry + /// or iterator pointing to the end if entry is + /// not found. + { + typename Container::const_iterator it = _container.begin(); + typename Container::const_iterator itEnd = _container.end(); + for(; it != itEnd; ++it) + { + if (isEqual(it->first, key)) return it; + } + return itEnd; + } + + Iterator find(const KeyType& key) + /// Finds the first occurrence of the key and + /// returns iterator pointing to the found entry + /// or iterator pointing to the end if entry is + /// not found. + { + typename Container::iterator it = _container.begin(); + typename Container::iterator itEnd = _container.end(); + for(; it != itEnd; ++it) + { + if (isEqual(it->first, key)) return it; + } + return itEnd; + } + + Iterator insert(const ValueType& val) + /// Inserts the value into the map. If one or more values + /// already exist, new value is inserted at the end of the + /// block. Thus, all the equal value entries are located + /// sequentially at all times. + /// Returns iterator pointing to the newly inserted value + { + Iterator it = find(val.first); + while (it != _container.end() && isEqual(it->first, val.first)) ++it; + return _container.insert(it, val); + } + + void erase(Iterator it) + { + _container.erase(it); + } + + SizeType erase(const KeyType& key) + { + SizeType count = 0; + Iterator it = find(key); + bool removed = false; + while (it != _container.end()) + { + if (isEqual(it->first, key)) + { + ++count; + it = _container.erase(it); + removed = true; + } + else + { + if (removed) return count; + ++it; + } + } + return count; + } + + void clear() + { + _container.clear(); + } + + std::size_t size() const + { + return _container.size(); + } + + bool empty() const + { + return _container.empty(); + } + + ConstReference operator [] (const KeyType& key) const + { + ConstIterator it = find(key); + if (it != _container.end()) + return it->second; + else + throw NotFoundException(); + } + + Reference operator [] (const KeyType& key) + { + Iterator it = find(key); + if (it != _container.end()) + { + return it->second; + } + else + { + ValueType value(key, Mapped()); + Iterator itInsert = insert(value); + return itInsert->second; + } + } + +private: + template + bool isEqual(T1 val1, T2 val2) const + { + return val1 == val2; + } + + bool isEqual(const std::string& s1, const std::string& s2) const + { + if (!CaseSensitive) + return Poco::icompare(s1, s2) == 0; + else + return s1 == s2; + } + + bool isEqual(const std::string& s1, const char* s2) const + { + return isEqual(s1, std::string(s2)); + } + + bool isEqual(const char* s1, const std::string& s2) const + { + return isEqual(std::string(s1), s2); + } + + bool isEqual(const char* s1, const char* s2) const + { + return isEqual(std::string(s1), std::string(s2)); + } + + Container _container; +}; + + +} // namespace Poco + + +#endif // Foundation_ListMap_INCLUDED diff --git a/include/Poco/Poco/MemoryStream.h b/include/Poco/Poco/MemoryStream.h new file mode 100644 index 00000000..e168c8a0 --- /dev/null +++ b/include/Poco/Poco/MemoryStream.h @@ -0,0 +1,246 @@ +// +// MemoryStream.h +// +// Library: Foundation +// Package: Streams +// Module: MemoryStream +// +// Definition of MemoryStreamBuf, MemoryInputStream, MemoryOutputStream +// +// Copyright (c) 2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_MemoryStream_INCLUDED +#define Foundation_MemoryStream_INCLUDED + + +#include "Poco/Bugcheck.h" +#include "Poco/Foundation.h" +#include "Poco/StreamUtil.h" +#include +#include +#include +#include +#include + + +namespace Poco { + + +template +class BasicMemoryStreamBuf: public std::basic_streambuf + /// BasicMemoryStreamBuf is a simple implementation of a + /// stream buffer for reading and writing from a memory area. + /// + /// This streambuf only supports unidirectional streams. + /// In other words, the BasicMemoryStreamBuf can be + /// used for the implementation of an istream or an + /// ostream, but not for an iostream. +{ +protected: + typedef std::basic_streambuf Base; + typedef std::basic_ios IOS; + typedef ch char_type; + typedef tr char_traits; + typedef typename Base::int_type int_type; + typedef typename Base::pos_type pos_type; + typedef typename Base::off_type off_type; + +public: + BasicMemoryStreamBuf(char_type* pBuffer, std::streamsize bufferSize): + _pBuffer(pBuffer), + _bufferSize(bufferSize) + { + this->setg(_pBuffer, _pBuffer, _pBuffer + _bufferSize); + this->setp(_pBuffer, _pBuffer + _bufferSize); + } + + ~BasicMemoryStreamBuf() + { + } + + virtual int_type overflow(int_type /*c*/) + { + return char_traits::eof(); + } + + virtual int_type underflow() + { + return char_traits::eof(); + } + + virtual pos_type seekoff(off_type off, std::ios_base::seekdir way, std::ios_base::openmode which = std::ios_base::in | std::ios_base::out) + { + const pos_type fail = off_type(-1); + off_type newoff = off_type(-1); + + if ((which & std::ios_base::in) != 0) + { + if (this->gptr() == 0) + return fail; + + if (way == std::ios_base::beg) + { + newoff = 0; + } + else if (way == std::ios_base::cur) + { + // cur is not valid if both in and out are specified (Condition 3) + if ((which & std::ios_base::out) != 0) + return fail; + newoff = this->gptr() - this->eback(); + } + else if (way == std::ios_base::end) + { + newoff = this->egptr() - this->eback(); + } + else + { + poco_bugcheck(); + } + + if ((newoff + off) < 0 || (this->egptr() - this->eback()) < (newoff + off)) + return fail; + this->setg(this->eback(), this->eback() + newoff + off, this->egptr()); + } + + if ((which & std::ios_base::out) != 0) + { + if (this->pptr() == 0) + return fail; + + if (way == std::ios_base::beg) + { + newoff = 0; + } + else if (way == std::ios_base::cur) + { + // cur is not valid if both in and out are specified (Condition 3) + if ((which & std::ios_base::in) != 0) + return fail; + newoff = this->pptr() - this->pbase(); + } + else if (way == std::ios_base::end) + { + newoff = this->epptr() - this->pbase(); + } + else + { + poco_bugcheck(); + } + + if (newoff + off < 0 || (this->epptr() - this->pbase()) < newoff + off) + return fail; + this->pbump((int)(newoff + off - (this->pptr() - this->pbase()))); + } + + return newoff; + } + + virtual int sync() + { + return 0; + } + + std::streamsize charsWritten() const + { + return static_cast(this->pptr() - this->pbase()); + } + + void reset() + /// Resets the buffer so that current read and write positions + /// will be set to the beginning of the buffer. + { + this->setg(_pBuffer, _pBuffer, _pBuffer + _bufferSize); + this->setp(_pBuffer, _pBuffer + _bufferSize); + } + +private: + char_type* _pBuffer; + std::streamsize _bufferSize; + + BasicMemoryStreamBuf(); + BasicMemoryStreamBuf(const BasicMemoryStreamBuf&); + BasicMemoryStreamBuf& operator = (const BasicMemoryStreamBuf&); +}; + + +// +// We provide an instantiation for char +// +typedef BasicMemoryStreamBuf> MemoryStreamBuf; + + +class Foundation_API MemoryIOS: public virtual std::ios + /// The base class for MemoryInputStream and MemoryOutputStream. + /// + /// This class is needed to ensure the correct initialization + /// order of the stream buffer and base classes. +{ +public: + MemoryIOS(char* pBuffer, std::streamsize bufferSize); + /// Creates the basic stream. + + ~MemoryIOS(); + /// Destroys the stream. + + MemoryStreamBuf* rdbuf(); + /// Returns a pointer to the underlying streambuf. + +protected: + MemoryStreamBuf _buf; +}; + + +class Foundation_API MemoryInputStream: public MemoryIOS, public std::istream + /// An input stream for reading from a memory area. +{ +public: + MemoryInputStream(const char* pBuffer, std::streamsize bufferSize); + /// Creates a MemoryInputStream for the given memory area, + /// ready for reading. + + ~MemoryInputStream(); + /// Destroys the MemoryInputStream. +}; + + +class Foundation_API MemoryOutputStream: public MemoryIOS, public std::ostream + /// An input stream for reading from a memory area. +{ +public: + MemoryOutputStream(char* pBuffer, std::streamsize bufferSize); + /// Creates a MemoryOutputStream for the given memory area, + /// ready for writing. + + ~MemoryOutputStream(); + /// Destroys the MemoryInputStream. + + std::streamsize charsWritten() const; + /// Returns the number of chars written to the buffer. +}; + + +// +// inlines +// +inline MemoryStreamBuf* MemoryIOS::rdbuf() +{ + return &_buf; +} + + +inline std::streamsize MemoryOutputStream::charsWritten() const +{ + return _buf.charsWritten(); +} + + +} // namespace Poco + + +#endif // Foundation_MemoryStream_INCLUDED diff --git a/include/Poco/Poco/MetaProgramming.h b/include/Poco/Poco/MetaProgramming.h new file mode 100644 index 00000000..ba68fe05 --- /dev/null +++ b/include/Poco/Poco/MetaProgramming.h @@ -0,0 +1,144 @@ +// +// MetaProgramming.h +// +// Library: Foundation +// Package: Core +// Module: MetaProgramming +// +// Common definitions useful for Meta Template Programming +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_MetaProgramming_INCLUDED +#define Foundation_MetaProgramming_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +template +struct IsReference + /// Use this struct to determine if a template type is a reference. +{ + enum + { + VALUE = 0 + }; +}; + + +template +struct IsReference +{ + enum + { + VALUE = 1 + }; +}; + + +template +struct IsReference +{ + enum + { + VALUE = 1 + }; +}; + + +template +struct IsConst + /// Use this struct to determine if a template type is a const type. +{ + enum + { + VALUE = 0 + }; +}; + + +template +struct IsConst +{ + enum + { + VALUE = 1 + }; +}; + + +template +struct IsConst +{ + enum + { + VALUE = 1 + }; +}; + + +template +struct IsConst + /// Specialization for const char arrays +{ + enum + { + VALUE = 1 + }; +}; + + +template +struct TypeWrapper + /// Use the type wrapper if you want to decouple constness and references from template types. +{ + typedef T TYPE; + typedef const T CONSTTYPE; + typedef T& REFTYPE; + typedef const T& CONSTREFTYPE; +}; + + +template +struct TypeWrapper +{ + typedef T TYPE; + typedef const T CONSTTYPE; + typedef T& REFTYPE; + typedef const T& CONSTREFTYPE; +}; + + +template +struct TypeWrapper +{ + typedef T TYPE; + typedef const T CONSTTYPE; + typedef T& REFTYPE; + typedef const T& CONSTREFTYPE; +}; + + +template +struct TypeWrapper +{ + typedef T TYPE; + typedef const T CONSTTYPE; + typedef T& REFTYPE; + typedef const T& CONSTREFTYPE; +}; + + +} // namespace Poco + + +#endif // Foundation_MetaProgramming_INCLUDED diff --git a/include/Poco/Poco/Mutex.h b/include/Poco/Poco/Mutex.h new file mode 100644 index 00000000..c1094684 --- /dev/null +++ b/include/Poco/Poco/Mutex.h @@ -0,0 +1,391 @@ +// +// Mutex.h +// +// Library: Foundation +// Package: Threading +// Module: Mutex +// +// Definition of the Mutex and FastMutex classes. +// +// Copyright (c) 2004-2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Mutex_INCLUDED +#define Foundation_Mutex_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include "Poco/ScopedLock.h" +#include "Poco/Timestamp.h" + +#if __cplusplus >= 201103L + #ifndef POCO_HAVE_STD_ATOMICS + #define POCO_HAVE_STD_ATOMICS + #endif +#endif + +#ifdef POCO_HAVE_STD_ATOMICS + #include +#endif + + +#if defined(POCO_OS_FAMILY_WINDOWS) +#if defined(_WIN32_WCE) +#include "Poco/Mutex_WINCE.h" +#else +#include "Poco/Mutex_WIN32.h" +#endif +#elif defined(POCO_VXWORKS) +#include "Poco/Mutex_VX.h" +#else +#include "Poco/Mutex_POSIX.h" +#endif + + +namespace Poco { + + +class Foundation_API Mutex: private MutexImpl + /// A Mutex (mutual exclusion) is a synchronization + /// mechanism used to control access to a shared resource + /// in a concurrent (multithreaded) scenario. + /// Mutexes are recursive, that is, the same mutex can be + /// locked multiple times by the same thread (but, of course, + /// not by other threads). + /// Using the ScopedLock class is the preferred way to automatically + /// lock and unlock a mutex. +{ +public: + using ScopedLock = Poco::ScopedLock; + + Mutex(); + /// creates the Mutex. + + ~Mutex(); + /// destroys the Mutex. + + void lock(); + /// Locks the mutex. Blocks if the mutex + /// is held by another thread. + + void lock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. Throws a TimeoutException + /// if the mutex can not be locked within the given timeout. + /// + /// Performance Note: On most platforms (including Windows), this member function is + /// implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). + /// On POSIX platforms that support pthread_mutex_timedlock(), this is used. + + bool tryLock(); + /// Tries to lock the mutex. Returns false immediately + /// if the mutex is already held by another thread. + /// Returns true if the mutex was successfully locked. + + bool tryLock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. + /// Returns true if the mutex was successfully locked. + /// + /// Performance Note: On most platforms (including Windows), this member function is + /// implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). + /// On POSIX platforms that support pthread_mutex_timedlock(), this is used. + + void unlock(); + /// Unlocks the mutex so that it can be acquired by + /// other threads. + +private: + Mutex(const Mutex&); + Mutex& operator = (const Mutex&); +}; + + +class Foundation_API FastMutex: private FastMutexImpl + /// A FastMutex (mutual exclusion) is similar to a Mutex. + /// Unlike a Mutex, however, a FastMutex is not recursive, + /// which means that a deadlock will occur if the same + /// thread tries to lock a mutex it has already locked again. + /// Locking a FastMutex is faster than locking a recursive Mutex. + /// Using the ScopedLock class is the preferred way to automatically + /// lock and unlock a mutex. +{ +public: + using ScopedLock = Poco::ScopedLock; + + FastMutex(); + /// creates the Mutex. + + ~FastMutex(); + /// destroys the Mutex. + + void lock(); + /// Locks the mutex. Blocks if the mutex + /// is held by another thread. + + void lock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. Throws a TimeoutException + /// if the mutex can not be locked within the given timeout. + /// + /// Performance Note: On most platforms (including Windows), this member function is + /// implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). + /// On POSIX platforms that support pthread_mutex_timedlock(), this is used. + + bool tryLock(); + /// Tries to lock the mutex. Returns false immediately + /// if the mutex is already held by another thread. + /// Returns true if the mutex was successfully locked. + + bool tryLock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. + /// Returns true if the mutex was successfully locked. + /// + /// Performance Note: On most platforms (including Windows), this member function is + /// implemented using a loop calling (the equivalent of) tryLock() and Thread::sleep(). + /// On POSIX platforms that support pthread_mutex_timedlock(), this is used. + + void unlock(); + /// Unlocks the mutex so that it can be acquired by + /// other threads. + +private: + FastMutex(const FastMutex&); + FastMutex& operator = (const FastMutex&); +}; + + +#ifdef POCO_HAVE_STD_ATOMICS + +class Foundation_API SpinlockMutex + /// A SpinlockMutex, implemented in terms of std::atomic_flag, as + /// busy-wait mutual exclusion. + /// + /// While in some cases (eg. locking small blocks of code) + /// busy-waiting may be an optimal solution, in many scenarios + /// spinlock may not be the right choice - it is up to the user to + /// choose the proper mutex type for their particular case. + /// + /// Works with the ScopedLock class. +{ +public: + using ScopedLock = Poco::ScopedLock; + + SpinlockMutex(); + /// Creates the SpinlockMutex. + + ~SpinlockMutex(); + /// Destroys the SpinlockMutex. + + void lock(); + /// Locks the mutex. Blocks if the mutex + /// is held by another thread. + + void lock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. Throws a TimeoutException + /// if the mutex can not be locked within the given timeout. + + bool tryLock(); + /// Tries to lock the mutex. Returns immediately, false + /// if the mutex is already held by another thread, true + /// if the mutex was successfully locked. + + bool tryLock(long milliseconds); + /// Locks the mutex. Blocks up to the given number of milliseconds + /// if the mutex is held by another thread. + /// Returns true if the mutex was successfully locked. + + void unlock(); + /// Unlocks the mutex so that it can be acquired by + /// other threads. + +private: + std::atomic_flag _flag = ATOMIC_FLAG_INIT; +}; + +#endif // POCO_HAVE_STD_ATOMICS + + +class Foundation_API NullMutex + /// A NullMutex is an empty mutex implementation + /// which performs no locking at all. Useful in policy driven design + /// where the type of mutex used can be now a template parameter allowing the user to switch + /// between thread-safe and not thread-safe depending on his need + /// Works with the ScopedLock class +{ +public: + using ScopedLock = Poco::ScopedLock; + + NullMutex() + /// Creates the NullMutex. + { + } + + ~NullMutex() + /// Destroys the NullMutex. + { + } + + void lock() + /// Does nothing. + { + } + + void lock(long) + /// Does nothing. + { + } + + bool tryLock() + /// Does nothing and always returns true. + { + return true; + } + + bool tryLock(long) + /// Does nothing and always returns true. + { + return true; + } + + void unlock() + /// Does nothing. + { + } +}; + + +// +// inlines +// + +// +// Mutex +// + +inline void Mutex::lock() +{ + lockImpl(); +} + + +inline void Mutex::lock(long milliseconds) +{ + if (!tryLockImpl(milliseconds)) + throw TimeoutException(); +} + + +inline bool Mutex::tryLock() +{ + return tryLockImpl(); +} + + +inline bool Mutex::tryLock(long milliseconds) +{ + return tryLockImpl(milliseconds); +} + + +inline void Mutex::unlock() +{ + unlockImpl(); +} + + +// +// FastMutex +// + +inline void FastMutex::lock() +{ + lockImpl(); +} + + +inline void FastMutex::lock(long milliseconds) +{ + if (!tryLockImpl(milliseconds)) + throw TimeoutException(); +} + + +inline bool FastMutex::tryLock() +{ + return tryLockImpl(); +} + + +inline bool FastMutex::tryLock(long milliseconds) +{ + return tryLockImpl(milliseconds); +} + + +inline void FastMutex::unlock() +{ + unlockImpl(); +} + + +#ifdef POCO_HAVE_STD_ATOMICS + +// +// SpinlockMutex +// + +inline void SpinlockMutex::lock() +{ + while (_flag.test_and_set(std::memory_order_acquire)); +} + + +inline void SpinlockMutex::lock(long milliseconds) +{ + Timestamp now; + Timestamp::TimeDiff diff(Timestamp::TimeDiff(milliseconds)*1000); + while (_flag.test_and_set(std::memory_order_acquire)) + { + if (now.isElapsed(diff)) throw TimeoutException(); + } +} + + +inline bool SpinlockMutex::tryLock() +{ + return !_flag.test_and_set(std::memory_order_acquire); +} + + +inline bool SpinlockMutex::tryLock(long milliseconds) +{ + Timestamp now; + Timestamp::TimeDiff diff(Timestamp::TimeDiff(milliseconds)*1000); + while (_flag.test_and_set(std::memory_order_acquire)) + { + if (now.isElapsed(diff)) return false; + } + return true; +} + + +inline void SpinlockMutex::unlock() +{ + _flag.clear(std::memory_order_release); +} + +#endif // POCO_HAVE_STD_ATOMICS + + +} // namespace Poco + + +#endif // Foundation_Mutex_INCLUDED diff --git a/include/Poco/Poco/Mutex_WIN32.h b/include/Poco/Poco/Mutex_WIN32.h new file mode 100644 index 00000000..8e18c527 --- /dev/null +++ b/include/Poco/Poco/Mutex_WIN32.h @@ -0,0 +1,85 @@ +// +// Mutex_WIN32.h +// +// Library: Foundation +// Package: Threading +// Module: Mutex +// +// Definition of the MutexImpl and FastMutexImpl classes for WIN32. +// +// Copyright (c) 2004-2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Mutex_WIN32_INCLUDED +#define Foundation_Mutex_WIN32_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include "Poco/UnWindows.h" + + +namespace Poco { + + +class Foundation_API MutexImpl +{ +protected: + MutexImpl(); + ~MutexImpl(); + void lockImpl(); + bool tryLockImpl(); + bool tryLockImpl(long milliseconds); + void unlockImpl(); + +private: + CRITICAL_SECTION _cs; +}; + + +typedef MutexImpl FastMutexImpl; + + +// +// inlines +// +inline void MutexImpl::lockImpl() +{ + try + { + EnterCriticalSection(&_cs); + } + catch (...) + { + throw SystemException("cannot lock mutex"); + } +} + + +inline bool MutexImpl::tryLockImpl() +{ + try + { + return TryEnterCriticalSection(&_cs) != 0; + } + catch (...) + { + } + throw SystemException("cannot lock mutex"); +} + + +inline void MutexImpl::unlockImpl() +{ + LeaveCriticalSection(&_cs); +} + + +} // namespace Poco + + +#endif // Foundation_Mutex_WIN32_INCLUDED diff --git a/include/Poco/Poco/Net/CertificateHandlerFactory.h b/include/Poco/Poco/Net/CertificateHandlerFactory.h new file mode 100644 index 00000000..5e3699c3 --- /dev/null +++ b/include/Poco/Poco/Net/CertificateHandlerFactory.h @@ -0,0 +1,93 @@ +// +// CertificateHandlerFactory.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: CertificateHandlerFactory +// +// Definition of the CertificateHandlerFactory class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_CertificateHandlerFactory_INCLUDED +#define NetSSL_CertificateHandlerFactory_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class InvalidCertificateHandler; + + +class NetSSL_API CertificateHandlerFactory + /// A CertificateHandlerFactory is responsible for creating InvalidCertificateHandlers. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_CHFACTORY(namespace, InvalidCertificateHandlerName) + /// instead (see the documentation of InvalidCertificateHandler for an example). +{ +public: + CertificateHandlerFactory(); + /// Creates the CertificateHandlerFactory. + + virtual ~CertificateHandlerFactory(); + /// Destroys the CertificateHandlerFactory. + + virtual InvalidCertificateHandler* create(bool server) const = 0; + /// Creates a new InvalidCertificateHandler. Set server to true if the certificate handler is used on the server side. +}; + + +class NetSSL_API CertificateHandlerFactoryRegistrar + /// Registrar class which automatically registers CertificateHandlerFactory at the CertificateHandlerFactoryMgr. + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_CHFACTORY(namespace, InvalidCertificateHandlerName) + /// instead (see the documentation of InvalidCertificateHandler for an example). +{ +public: + CertificateHandlerFactoryRegistrar(const std::string& name, CertificateHandlerFactory* pFactory); + /// Registers the CertificateHandlerFactory with the given name at the factory manager. + + virtual ~CertificateHandlerFactoryRegistrar(); + /// Destroys the CertificateHandlerFactoryRegistrar. +}; + + +template +class CertificateHandlerFactoryImpl: public Poco::Net::CertificateHandlerFactory +{ +public: + CertificateHandlerFactoryImpl() + { + } + + ~CertificateHandlerFactoryImpl() + { + } + + InvalidCertificateHandler* create(bool server) const + { + return new T(server); + } +}; + + +} } // namespace Poco::Net + + +// DEPRECATED: register the factory directly at the FactoryMgr: +// Poco::Net::SSLManager::instance().certificateHandlerFactoryMgr().setFactory(name, new Poco::Net::CertificateHandlerFactoryImpl()); +#define POCO_REGISTER_CHFACTORY(API, PKCLS) \ + static Poco::Net::CertificateHandlerFactoryRegistrar aRegistrar(std::string(#PKCLS), new Poco::Net::CertificateHandlerFactoryImpl()); + + +#endif // NetSSL_CertificateHandlerFactory_INCLUDED diff --git a/include/Poco/Poco/Net/CertificateHandlerFactoryMgr.h b/include/Poco/Poco/Net/CertificateHandlerFactoryMgr.h new file mode 100644 index 00000000..cf608517 --- /dev/null +++ b/include/Poco/Poco/Net/CertificateHandlerFactoryMgr.h @@ -0,0 +1,64 @@ +// +// CertificateHandlerFactoryMgr.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: CertificateHandlerFactoryMgr +// +// Definition of the CertificateHandlerFactoryMgr class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_CertificateHandlerFactoryMgr_INCLUDED +#define NetSSL_CertificateHandlerFactoryMgr_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/CertificateHandlerFactory.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_API CertificateHandlerFactoryMgr + /// A CertificateHandlerFactoryMgr manages all existing CertificateHandlerFactories. +{ +public: + using FactoriesMap = std::map>; + + CertificateHandlerFactoryMgr(); + /// Creates the CertificateHandlerFactoryMgr. + + ~CertificateHandlerFactoryMgr(); + /// Destroys the CertificateHandlerFactoryMgr. + + void setFactory(const std::string& name, CertificateHandlerFactory* pFactory); + /// Registers the factory. Class takes ownership of the pointer. + /// If a factory with the same name already exists, an exception is thrown. + + bool hasFactory(const std::string& name) const; + /// Returns true if for the given name a factory is already registered + + const CertificateHandlerFactory* getFactory(const std::string& name) const; + /// Returns NULL if for the given name a factory does not exist, otherwise the factory is returned + + void removeFactory(const std::string& name); + /// Removes the factory from the manager. + +private: + FactoriesMap _factories; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_CertificateHandlerFactoryMgr_INCLUDED diff --git a/include/Poco/Poco/Net/Context.h b/include/Poco/Poco/Net/Context.h new file mode 100644 index 00000000..3e3131d2 --- /dev/null +++ b/include/Poco/Poco/Net/Context.h @@ -0,0 +1,499 @@ +// +// Context.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: Context +// +// Definition of the Context class. +// +// Copyright (c) 2006-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Context_INCLUDED +#define NetSSL_Context_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/InvalidCertificateHandler.h" +#include "Poco/Crypto/X509Certificate.h" +#include "Poco/Crypto/EVPPKey.h" +#include "Poco/Crypto/RSAKey.h" +#include "Poco/RefCountedObject.h" +#include "Poco/SharedPtr.h" +#include "Poco/AutoPtr.h" +#include +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_API Context: public Poco::RefCountedObject + /// This class encapsulates context information for + /// an SSL server or client, such as the certificate + /// verification mode and the location of certificates + /// and private key files, as well as the list of + /// supported ciphers. + /// + /// The Context class is also used to control + /// SSL session caching on the server and client side. + /// + /// A Note Regarding TLSv1.3 Support: + /// + /// TLSv1.3 support requires at least OpenSSL version 1.1.1. + /// Make sure that the TLSv1.3 cipher suites are enabled: + /// + /// - TLS_AES_256_GCM_SHA384 + /// - TLS_CHACHA20_POLY1305_SHA256 + /// - TLS_AES_128_GCM_SHA256 + /// - TLS_AES_128_CCM_8_SHA256 + /// - TLS_AES_128_CCM_SHA256 + /// + /// The first three of the above cipher suites should be enabled + /// by default in OpenSSL if you do not provide an explicit + /// cipher configuration (cipherList). +{ +public: + using Ptr = Poco::AutoPtr; + + enum Usage + { + TLS_CLIENT_USE, /// Context is used by a client for TLSv1 or higher. Use requireMinimumProtocol() or disableProtocols() to disable undesired older versions. + TLS_SERVER_USE, /// Context is used by a client for TLSv1 or higher. Use requireMinimumProtocol() or disableProtocols() to disable undesired older versions. + CLIENT_USE, /// DEPRECATED. Context is used by a client. + SERVER_USE, /// DEPRECATED. Context is used by a server. + TLSV1_CLIENT_USE, /// DEPRECATED. Context is used by a client requiring TLSv1. + TLSV1_SERVER_USE, /// DEPRECATED. Context is used by a server requiring TLSv1. + TLSV1_1_CLIENT_USE, /// DEPRECATED. Context is used by a client requiring TLSv1.1 (OpenSSL 1.0.0 or newer). + TLSV1_1_SERVER_USE, /// DEPRECATED. Context is used by a server requiring TLSv1.1 (OpenSSL 1.0.0 or newer). + TLSV1_2_CLIENT_USE, /// DEPRECATED. Context is used by a client requiring TLSv1.2 (OpenSSL 1.0.1 or newer). + TLSV1_2_SERVER_USE, /// DEPRECATED. Context is used by a server requiring TLSv1.2 (OpenSSL 1.0.1 or newer). + TLSV1_3_CLIENT_USE, /// DEPRECATED. Context is used by a client requiring TLSv1.3 (OpenSSL 1.1.1 or newer). + TLSV1_3_SERVER_USE /// DEPRECATED. Context is used by a server requiring TLSv1.3 (OpenSSL 1.1.1 or newer). + }; + + enum VerificationMode + { + VERIFY_NONE = SSL_VERIFY_NONE, + /// Server: The server will not send a client certificate + /// request to the client, so the client will not send a certificate. + /// + /// Client: If not using an anonymous cipher (by default disabled), + /// the server will send a certificate which will be checked, but + /// the result of the check will be ignored. + + VERIFY_RELAXED = SSL_VERIFY_PEER, + /// Server: The server sends a client certificate request to the + /// client. The certificate returned (if any) is checked. + /// If the verification process fails, the TLS/SSL handshake is + /// immediately terminated with an alert message containing the + /// reason for the verification failure. + /// + /// Client: The server certificate is verified, if one is provided. + /// If the verification process fails, the TLS/SSL handshake is + /// immediately terminated with an alert message containing the + /// reason for the verification failure. + + VERIFY_STRICT = SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, + /// Server: If the client did not return a certificate, the TLS/SSL + /// handshake is immediately terminated with a handshake failure + /// alert. + /// + /// Client: Same as VERIFY_RELAXED. + + VERIFY_ONCE = SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE + /// Server: Only request a client certificate on the initial + /// TLS/SSL handshake. Do not ask for a client certificate + /// again in case of a renegotiation. + /// + /// Client: Same as VERIFY_RELAXED. + }; + + enum Protocols + { + PROTO_SSLV2 = 0x01, + PROTO_SSLV3 = 0x02, + PROTO_TLSV1 = 0x04, + PROTO_TLSV1_1 = 0x08, + PROTO_TLSV1_2 = 0x10, + PROTO_TLSV1_3 = 0x20 + }; + + struct NetSSL_API Params + { + Params(); + /// Initializes the struct with default values. + + std::string privateKeyFile; + /// Path to the private key file used for encryption. + /// Can be empty if no private key file is used. + + std::string certificateFile; + /// Path to the certificate file (in PEM format). + /// + /// If the private key and the certificate are stored in the same file, this + /// can be empty if privateKeyFile is given. + + std::string caLocation; + /// Path to the file or directory containing the CA/root certificates. + /// Can be empty if the OpenSSL builtin CA certificates + /// are used (see loadDefaultCAs). + + VerificationMode verificationMode; + /// Specifies whether and how peer certificates are validated. + /// Defaults to VERIFY_RELAXED. + + int verificationDepth; + /// Sets the upper limit for verification chain sizes. Verification + /// will fail if a certificate chain larger than this is encountered. + /// Defaults to 9. + + bool loadDefaultCAs; + /// Specifies whether the builtin CA certificates from OpenSSL are used. + /// Defaults to false. + + bool ocspStaplingVerification; + /// Specifies whether Client should verify OCSP Response + /// Defaults to false. + + std::string cipherList; + /// Specifies the supported ciphers in OpenSSL notation. + /// Defaults to "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH". + + std::string dhParamsFile; + /// Specifies a file containing Diffie-Hellman parameters. + /// If empty, the default parameters are used. + + bool dhUse2048Bits; + /// If set to true, will use 2048-bit MODP Group with 256-bit + /// prime order subgroup (RFC5114) instead of 1024-bit for DH. + + std::string ecdhCurve; + /// OpenSSL 1.0.1 and earlier: + /// Specifies the name of the curve to use for ECDH, based + /// on the curve names specified in RFC 4492. + /// Defaults to "prime256v1". + /// OpenSSL 1.0.2 to 1.1.0: + /// Specifies the colon-separated list of curves + /// to be used for ECDH, based on the curve names + /// defined by OpenSSL, such as + /// "X448:X25519:P-521:P-384:P-256" + /// Defaults to the subset supported by the OpenSSL version + /// among the above. + /// OpenSSL 1.1.1 and above: + /// Specifies the colon-separated list of groups + /// (some of which can be curves) to be used for ECDH + /// and other TLSv1.3 ephemeral key negotiation, based + /// on the group names defined by OpenSSL. Defaults to + /// "X448:X25519:ffdhe4096:ffdhe3072:ffdhe2048:ffdhe6144:ffdhe8192:P-521:P-384:P-256" + }; + + using InvalidCertificateHandlerPtr = Poco::SharedPtr; + + Context(Usage usage, const Params& params); + /// Creates a Context using the given parameters. + /// + /// * usage specifies whether the context is used by a client or server. + /// * params specifies the context parameters. + + Context( + Usage usage, + const std::string& privateKeyFile, + const std::string& certificateFile, + const std::string& caLocation, + VerificationMode verificationMode = VERIFY_RELAXED, + int verificationDepth = 9, + bool loadDefaultCAs = false, + const std::string& cipherList = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); + /// Creates a Context. + /// + /// * usage specifies whether the context is used by a client or server. + /// * privateKeyFile contains the path to the private key file used for encryption. + /// Can be empty if no private key file is used. + /// * certificateFile contains the path to the certificate file (in PEM format). + /// If the private key and the certificate are stored in the same file, this + /// can be empty if privateKeyFile is given. + /// * caLocation contains the path to the file or directory containing the + /// CA/root certificates. Can be empty if the OpenSSL builtin CA certificates + /// are used (see loadDefaultCAs). + /// * verificationMode specifies whether and how peer certificates are validated. + /// * verificationDepth sets the upper limit for verification chain sizes. Verification + /// will fail if a certificate chain larger than this is encountered. + /// * loadDefaultCAs specifies whether the builtin CA certificates from OpenSSL are used. + /// * cipherList specifies the supported ciphers in OpenSSL notation. + /// + /// Note: If the private key is protected by a passphrase, a PrivateKeyPassphraseHandler + /// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired + /// event must be handled. + + Context( + Usage usage, + const std::string& caLocation, + VerificationMode verificationMode = VERIFY_RELAXED, + int verificationDepth = 9, + bool loadDefaultCAs = false, + const std::string& cipherList = "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); + /// Creates a Context. + /// + /// * usage specifies whether the context is used by a client or server. + /// * caLocation contains the path to the file or directory containing the + /// CA/root certificates. Can be empty if the OpenSSL builtin CA certificates + /// are used (see loadDefaultCAs). + /// * verificationMode specifies whether and how peer certificates are validated. + /// * verificationDepth sets the upper limit for verification chain sizes. Verification + /// will fail if a certificate chain larger than this is encountered. + /// * loadDefaultCAs specifies whether the builtin CA certificates from OpenSSL are used. + /// * cipherList specifies the supported ciphers in OpenSSL notation. + /// + /// Note that a private key and/or certificate must be specified with + /// usePrivateKey()/useCertificate() before the Context can be used. + + ~Context(); + /// Destroys the Context. + + void useCertificate(const Poco::Crypto::X509Certificate& certificate); + /// Sets the certificate to be used by the Context. + /// + /// To set-up a complete certificate chain, it might be + /// necessary to call addChainCertificate() to specify + /// additional certificates. + /// + /// Note that useCertificate() must always be called before + /// usePrivateKey(). + + void addChainCertificate(const Poco::Crypto::X509Certificate& certificate); + /// Adds a certificate for certificate chain validation. + + void addCertificateAuthority(const Poco::Crypto::X509Certificate& certificate); + /// Add one trusted certification authority to be used by the Context. + + void usePrivateKey(const Poco::Crypto::RSAKey& key); + /// Sets the private key to be used by the Context. + /// + /// Note that useCertificate() must always be called before + /// usePrivateKey(). + /// + /// Note: If the private key is protected by a passphrase, a PrivateKeyPassphraseHandler + /// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired + /// event must be handled. + + void usePrivateKey(const Poco::Crypto::EVPPKey &pkey); + /// Sets the private key to be used by the Context. + /// + /// Note that useCertificate() must always be called before + /// usePrivateKey(). + /// + /// Note: If the private key is protected by a passphrase, a PrivateKeyPassphraseHandler + /// must have been setup with the SSLManager, or the SSLManager's PrivateKeyPassphraseRequired + /// event must be handled. + + SSL_CTX* sslContext() const; + /// Returns the underlying OpenSSL SSL Context object. + + Usage usage() const; + /// Returns whether the context is for use by a client or by a server + /// and whether TLSv1 is required. + + bool isForServerUse() const; + /// Returns true iff the context is for use by a server. + + Context::VerificationMode verificationMode() const; + /// Returns the verification mode. + + void enableSessionCache(bool flag = true); + /// Enable or disable SSL/TLS session caching. + /// For session caching to work, it must be enabled + /// on the server, as well as on the client side. + /// + /// The default is disabled session caching. + /// + /// To enable session caching on the server side, use the + /// two-argument version of this method to specify + /// a session ID context. + + void enableSessionCache(bool flag, const std::string& sessionIdContext); + /// Enables or disables SSL/TLS session caching on the server. + /// For session caching to work, it must be enabled + /// on the server, as well as on the client side. + /// + /// SessionIdContext contains the application's unique + /// session ID context, which becomes part of each + /// session identifier generated by the server within this + /// context. SessionIdContext can be an arbitrary sequence + /// of bytes with a maximum length of SSL_MAX_SSL_SESSION_ID_LENGTH. + /// + /// A non-empty sessionIdContext should be specified even if + /// session caching is disabled to avoid problems with clients + /// requesting to reuse a session (e.g. Firefox 3.6). + /// + /// This method may only be called on SERVER_USE Context objects. + + bool sessionCacheEnabled() const; + /// Returns true iff the session cache is enabled. + + void setSessionCacheSize(std::size_t size); + /// Sets the maximum size of the server session cache, in number of + /// sessions. The default size (according to OpenSSL documentation) + /// is 1024*20, which may be too large for many applications, + /// especially on embedded platforms with limited memory. + /// + /// Specifying a size of 0 will set an unlimited cache size. + /// + /// This method may only be called on SERVER_USE Context objects. + + std::size_t getSessionCacheSize() const; + /// Returns the current maximum size of the server session cache. + /// + /// This method may only be called on SERVER_USE Context objects. + + void setSessionTimeout(long seconds); + /// Sets the timeout (in seconds) of cached sessions on the server. + /// A cached session will be removed from the cache if it has + /// not been used for the given number of seconds. + /// + /// This method may only be called on SERVER_USE Context objects. + + long getSessionTimeout() const; + /// Returns the timeout (in seconds) of cached sessions on the server. + /// + /// This method may only be called on SERVER_USE Context objects. + + void flushSessionCache(); + /// Flushes the SSL session cache on the server. + /// + /// This method may only be called on SERVER_USE Context objects. + + void enableExtendedCertificateVerification(bool flag = true); + /// Enable or disable the automatic post-connection + /// extended certificate verification. + /// + /// See X509Certificate::verify() for more information. + + bool extendedCertificateVerificationEnabled() const; + /// Returns true iff automatic extended certificate + /// verification is enabled. + + void disableStatelessSessionResumption(); + /// Newer versions of OpenSSL support RFC 4507 tickets for stateless + /// session resumption. + /// + /// The feature can be disabled by calling this method. + + void disableProtocols(int protocols); + /// Disables the given protocols. + /// + /// The protocols to be disabled are specified by OR-ing + /// values from the Protocols enumeration, e.g.: + /// + /// context.disableProtocols(PROTO_SSLV2 | PROTO_SSLV3); + + void requireMinimumProtocol(Protocols protocol); + /// Disables all protocol version lower than the given one. + /// To require at least TLS 1.2 or later: + /// + /// context.requireMinimumProtocol(PROTO_TLSV1_2); + + void preferServerCiphers(); + /// When choosing a cipher, use the server's preferences instead of the client + /// preferences. When not called, the SSL server will always follow the clients + /// preferences. When called, the SSL/TLS server will choose following its own + /// preferences. + + bool ocspStaplingResponseVerificationEnabled() const; + /// Returns true if automatic OCSP response + /// reception and verification is enabled for client connections + + void setInvalidCertificateHandler(InvalidCertificateHandlerPtr pInvalidCertificageHandler); + /// Sets a Context-specific InvalidCertificateHandler. + /// + /// If specified, this InvalidCertificateHandler will be used instead of the + /// one globally set in the SSLManager. + + InvalidCertificateHandlerPtr getInvalidCertificateHandler() const; + /// Returns the InvalidCertificateHandler set for this Context, + /// or a null pointer if none has been set. + +private: + void init(const Params& params); + /// Initializes the Context with the given parameters. + + void initDH(bool use2048Bits, const std::string& dhFile); + /// Initializes the Context with Diffie-Hellman parameters. + + void initECDH(const std::string& curve); + /// Initializes the Context with Elliptic-Curve Diffie-Hellman key + /// exchange curve parameters. + + void createSSLContext(); + /// Create a SSL_CTX object according to Context configuration. + + Usage _usage; + VerificationMode _mode; + SSL_CTX* _pSSLContext; + bool _extendedCertificateVerification; + bool _ocspStaplingResponseVerification; + InvalidCertificateHandlerPtr _pInvalidCertificateHandler; +}; + + +// +// inlines +// +inline Context::Usage Context::usage() const +{ + return _usage; +} + + +inline bool Context::isForServerUse() const +{ + return _usage == SERVER_USE + || _usage == TLS_SERVER_USE + || _usage == TLSV1_SERVER_USE + || _usage == TLSV1_1_SERVER_USE + || _usage == TLSV1_2_SERVER_USE + || _usage == TLSV1_3_SERVER_USE; +} + + +inline Context::VerificationMode Context::verificationMode() const +{ + return _mode; +} + + +inline SSL_CTX* Context::sslContext() const +{ + return _pSSLContext; +} + + +inline bool Context::extendedCertificateVerificationEnabled() const +{ + return _extendedCertificateVerification; +} + + +inline bool Context::ocspStaplingResponseVerificationEnabled() const +{ + return _ocspStaplingResponseVerification; +} + + +inline Context::InvalidCertificateHandlerPtr Context::getInvalidCertificateHandler() const +{ + return _pInvalidCertificateHandler; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_Context_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPAuthenticationParams.h b/include/Poco/Poco/Net/HTTPAuthenticationParams.h new file mode 100644 index 00000000..ebfd7812 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPAuthenticationParams.h @@ -0,0 +1,107 @@ +// +// HTTPAuthenticationParams.h +// +// Library: Net +// Package: HTTP +// Module: HTTPAuthenticationParams +// +// Definition of the HTTPAuthenticationParams class. +// +// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru). +// Copyright (c) 2012, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPAuthenticationParams_INCLUDED +#define Net_HTTPAuthenticationParams_INCLUDED + + +#include "Poco/Net/NameValueCollection.h" + + +namespace Poco { +namespace Net { + + +class HTTPRequest; +class HTTPResponse; + + +class Net_API HTTPAuthenticationParams: public NameValueCollection + /// Collection of name-value pairs of HTTP authentication header (i.e. + /// "realm", "qop", "nonce" in case of digest authentication header). + /// + /// For NTLM, the base64-encoded NTLM message is available from + /// the "NTLM" property. +{ +public: + HTTPAuthenticationParams(); + /// Creates an empty authentication parameters collection. + + explicit HTTPAuthenticationParams(const std::string& authInfo); + /// See fromAuthInfo() documentation. + + explicit HTTPAuthenticationParams(const HTTPRequest& request); + /// See fromRequest() documentation. + + HTTPAuthenticationParams(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE); + /// See fromResponse() documentation. + + virtual ~HTTPAuthenticationParams(); + /// Destroys the HTTPAuthenticationParams. + + HTTPAuthenticationParams& operator = (const HTTPAuthenticationParams& authParams); + /// Assigns the content of another HTTPAuthenticationParams. + + void fromAuthInfo(const std::string& authInfo); + /// Creates an HTTPAuthenticationParams by parsing authentication + /// information. + + void fromRequest(const HTTPRequest& request); + /// Extracts authentication information from the request and creates + /// HTTPAuthenticationParams by parsing it. + /// + /// Throws a NotAuthenticatedException if no authentication + /// information is contained in request. + /// Throws a InvalidArgumentException if authentication scheme is + /// unknown or invalid. + + void fromResponse(const HTTPResponse& response, const std::string& header = WWW_AUTHENTICATE); + /// Extracts authentication information from the response and creates + /// HTTPAuthenticationParams by parsing it. + /// + /// Throws a NotAuthenticatedException if no authentication + /// information is contained in response. + /// Throws a InvalidArgumentException if authentication scheme is + /// unknown or invalid. + + void setRealm(const std::string& realm); + /// Sets the "realm" parameter to the provided string. + + const std::string& getRealm() const; + /// Returns value of the "realm" parameter. + /// + /// Throws NotFoundException is there is no "realm" set in the + /// HTTPAuthenticationParams. + + std::string toString() const; + /// Formats the HTTPAuthenticationParams for inclusion in HTTP + /// request or response authentication header. + + static const std::string REALM; + static const std::string NTLM; + static const std::string WWW_AUTHENTICATE; + static const std::string PROXY_AUTHENTICATE; + +private: + void parse(std::string::const_iterator first, std::string::const_iterator last); +}; + + +} } // namespace Poco::Net + + +#endif // Net_HTTPAuthenticationParams_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPBasicCredentials.h b/include/Poco/Poco/Net/HTTPBasicCredentials.h new file mode 100644 index 00000000..56894db8 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPBasicCredentials.h @@ -0,0 +1,123 @@ +// +// HTTPBasicCredentials.h +// +// Library: Net +// Package: HTTP +// Module: HTTPBasicCredentials +// +// Definition of the HTTPBasicCredentials class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPBasicCredentials_INCLUDED +#define Net_HTTPBasicCredentials_INCLUDED + + +#include "Poco/Net/Net.h" + + +namespace Poco { +namespace Net { + + +class HTTPRequest; + + +class Net_API HTTPBasicCredentials + /// This is a utility class for working with + /// HTTP Basic Authentication in HTTPRequest + /// objects. +{ +public: + HTTPBasicCredentials(); + /// Creates an empty HTTPBasicCredentials object. + + HTTPBasicCredentials(const std::string& username, const std::string& password); + /// Creates a HTTPBasicCredentials object with the given username and password. + + explicit HTTPBasicCredentials(const HTTPRequest& request); + /// Creates a HTTPBasicCredentials object with the authentication information + /// from the given request. + /// + /// Throws a NotAuthenticatedException if the request does + /// not contain basic authentication information. + + explicit HTTPBasicCredentials(const std::string& authInfo); + /// Creates a HTTPBasicCredentials object with the authentication information + /// in the given string. The authentication information can be extracted + /// from a HTTPRequest object by calling HTTPRequest::getCredentials(). + + ~HTTPBasicCredentials(); + /// Destroys the HTTPBasicCredentials. + + void clear(); + /// Clears both username and password. + + void setUsername(const std::string& username); + /// Sets the username. + + const std::string& getUsername() const; + /// Returns the username. + + void setPassword(const std::string& password); + /// Sets the password. + + const std::string& getPassword() const; + /// Returns the password. + + bool empty() const; + /// Returns true if both username and password are empty, otherwise false. + + void authenticate(HTTPRequest& request) const; + /// Adds authentication information to the given HTTPRequest. + + void proxyAuthenticate(HTTPRequest& request) const; + /// Adds proxy authentication information to the given HTTPRequest. + + static const std::string SCHEME; + +protected: + void parseAuthInfo(const std::string& authInfo); + /// Extracts username and password from Basic authentication info + /// by base64-decoding authInfo and splitting the resulting + /// string at the ':' delimiter. + +private: + HTTPBasicCredentials(const HTTPBasicCredentials&); + HTTPBasicCredentials& operator = (const HTTPBasicCredentials&); + + std::string _username; + std::string _password; +}; + + +// +// inlines +// +inline const std::string& HTTPBasicCredentials::getUsername() const +{ + return _username; +} + + +inline const std::string& HTTPBasicCredentials::getPassword() const +{ + return _password; +} + + +inline bool HTTPBasicCredentials::empty() const +{ + return _username.empty() && _password.empty(); +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPBasicCredentials_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPClientSession.h b/include/Poco/Poco/Net/HTTPClientSession.h new file mode 100644 index 00000000..31c5aa5c --- /dev/null +++ b/include/Poco/Poco/Net/HTTPClientSession.h @@ -0,0 +1,423 @@ +// +// HTTPClientSession.h +// +// Library: Net +// Package: HTTPClient +// Module: HTTPClientSession +// +// Definition of the HTTPClientSession class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPClientSession_INCLUDED +#define Net_HTTPClientSession_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/HTTPSession.h" +#include "Poco/Net/HTTPBasicCredentials.h" +#include "Poco/Net/HTTPDigestCredentials.h" +#include "Poco/Net/HTTPNTLMCredentials.h" +#include "Poco/Net/SocketAddress.h" +#include "Poco/SharedPtr.h" +#include +#include + + +namespace Poco { +namespace Net { + + +class HTTPRequest; +class HTTPResponse; + + +class Net_API HTTPClientSession: public HTTPSession + /// This class implements the client-side of + /// a HTTP session. + /// + /// To send a HTTP request to a HTTP server, first + /// instantiate a HTTPClientSession object and + /// specify the server's host name and port number. + /// + /// Then create a HTTPRequest object, fill it accordingly, + /// and pass it as argument to the sendRequest() method. + /// + /// sendRequest() will return an output stream that can + /// be used to send the request body, if there is any. + /// + /// After you are done sending the request body, create + /// a HTTPResponse object and pass it to receiveResponse(). + /// + /// This will return an input stream that can be used to + /// read the response body. + /// + /// See RFC 2616 for more + /// information about the HTTP protocol. + /// + /// Proxies and proxy authorization (only HTTP Basic Authorization) + /// is supported. Use setProxy() and setProxyCredentials() to + /// set up a session through a proxy. +{ +public: + enum ProxyAuthentication + { + PROXY_AUTH_NONE, /// No proxy authentication + PROXY_AUTH_HTTP_BASIC, /// HTTP Basic proxy authentication (default, if username and password are supplied) + PROXY_AUTH_HTTP_DIGEST, /// HTTP Digest proxy authentication + PROXY_AUTH_NTLM /// NTLMv2 proxy authentication + }; + + struct ProxyConfig + /// HTTP proxy server configuration. + { + ProxyConfig(): + port(HTTP_PORT), + authMethod(PROXY_AUTH_HTTP_BASIC) + { + } + + std::string host; + /// Proxy server host name or IP address. + Poco::UInt16 port; + /// Proxy server TCP port. + std::string username; + /// Proxy server username. + std::string password; + /// Proxy server password. + std::string nonProxyHosts; + /// A regular expression defining hosts for which the proxy should be bypassed, + /// e.g. "localhost|127\.0\.0\.1|192\.168\.0\.\d+". Can also be an empty + /// string to disable proxy bypassing. + + ProxyAuthentication authMethod; + /// The authentication method to use - HTTP Basic or NTLM. + }; + + HTTPClientSession(); + /// Creates an unconnected HTTPClientSession. + + explicit HTTPClientSession(const StreamSocket& socket); + /// Creates a HTTPClientSession using the given socket. + /// The socket must not be connected. The session + /// takes ownership of the socket. + + explicit HTTPClientSession(const SocketAddress& address); + /// Creates a HTTPClientSession using the given address. + + HTTPClientSession(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT); + /// Creates a HTTPClientSession using the given host and port. + + HTTPClientSession(const std::string& host, Poco::UInt16 port, const ProxyConfig& proxyConfig); + /// Creates a HTTPClientSession using the given host, port and proxy configuration. + + virtual ~HTTPClientSession(); + /// Destroys the HTTPClientSession and closes + /// the underlying socket. + + void setHost(const std::string& host); + /// Sets the host name of the target HTTP server. + /// + /// The host must not be changed once there is an + /// open connection to the server. + + const std::string& getHost() const; + /// Returns the host name of the target HTTP server. + + void setPort(Poco::UInt16 port); + /// Sets the port number of the target HTTP server. + /// + /// The port number must not be changed once there is an + /// open connection to the server. + + Poco::UInt16 getPort() const; + /// Returns the port number of the target HTTP server. + + void setProxy(const std::string& host, Poco::UInt16 port = HTTPSession::HTTP_PORT); + /// Sets the proxy host name and port number. + + void setProxyHost(const std::string& host); + /// Sets the host name of the proxy server. + + void setProxyPort(Poco::UInt16 port); + /// Sets the port number of the proxy server. + + const std::string& getProxyHost() const; + /// Returns the proxy host name. + + Poco::UInt16 getProxyPort() const; + /// Returns the proxy port number. + + void setProxyCredentials(const std::string& username, const std::string& password); + /// Sets the username and password for proxy authentication. + /// Only Basic authentication is supported. + + void setProxyUsername(const std::string& username); + /// Sets the username for proxy authentication. + /// Only Basic authentication is supported. + + const std::string& getProxyUsername() const; + /// Returns the username for proxy authentication. + + void setProxyPassword(const std::string& password); + /// Sets the password for proxy authentication. + /// Only Basic authentication is supported. + + const std::string& getProxyPassword() const; + /// Returns the password for proxy authentication. + + void setProxyConfig(const ProxyConfig& config); + /// Sets the proxy configuration. + + const ProxyConfig& getProxyConfig() const; + /// Returns the proxy configuration. + + static void setGlobalProxyConfig(const ProxyConfig& config); + /// Sets the global proxy configuration. + /// + /// The global proxy configuration is used by all HTTPClientSession + /// instances, unless a different proxy configuration is explicitly set. + /// + /// Warning: Setting the global proxy configuration is not thread safe. + /// The global proxy configuration should be set at start up, before + /// the first HTTPClientSession instance is created. + + static const ProxyConfig& getGlobalProxyConfig(); + /// Returns the global proxy configuration. + + void setKeepAliveTimeout(const Poco::Timespan& timeout); + /// Sets the connection timeout for HTTP connections. + + const Poco::Timespan& getKeepAliveTimeout() const; + /// Returns the connection timeout for HTTP connections. + + virtual std::ostream& sendRequest(HTTPRequest& request); + /// Sends the header for the given HTTP request to + /// the server. + /// + /// The HTTPClientSession will set the request's + /// Host and Keep-Alive headers accordingly. + /// + /// The returned output stream can be used to write + /// the request body. The stream is valid until + /// receiveResponse() is called or the session + /// is destroyed. + /// + /// In case a network or server failure happens + /// while writing the request body to the returned stream, + /// the stream state will change to bad or fail. In this + /// case, reset() should be called if the session will + /// be reused and persistent connections are enabled + /// to ensure a new connection will be set up + /// for the next request. + + virtual std::istream& receiveResponse(HTTPResponse& response); + /// Receives the header for the response to the previous + /// HTTP request. + /// + /// The returned input stream can be used to read + /// the response body. The stream is valid until + /// sendRequest() is called or the session is + /// destroyed. + /// + /// It must be ensured that the response stream + /// is fully consumed before sending a new request + /// and persistent connections are enabled. Otherwise, + /// the unread part of the response body may be treated as + /// part of the next request's response header, resulting + /// in a Poco::Net::MessageException being thrown. + /// + /// In case a network or server failure happens + /// while reading the response body from the returned stream, + /// the stream state will change to bad or fail. In this + /// case, reset() should be called if the session will + /// be reused and persistent connections are enabled + /// to ensure a new connection will be set up + /// for the next request. + + virtual bool peekResponse(HTTPResponse& response); + /// If the request contains a "Expect: 100-continue" header, + /// (see HTTPRequest::setExpectContinue()) this method can be + /// used to check whether the server has sent a 100 Continue response + /// before continuing with the request, i.e. sending the request body, + /// after calling sendRequest(). + /// + /// Returns true if the server has responded with 100 Continue, + /// otherwise false. The HTTPResponse object contains the + /// response sent by the server. + /// + /// In any case, receiveResponse() must be called afterwards as well in + /// order to complete the request. The same HTTPResponse object + /// passed to peekResponse() must also be passed to receiveResponse(). + /// + /// This method should only be called if the request contains + /// a "Expect: 100-continue" header. + + void flushRequest(); + /// Flushes the request stream. + /// + /// Normally this method does not need to be called. + /// It can be used to ensure the request has been + /// fully sent if receiveResponse() is not called, e.g., + /// because the underlying socket will be detached. + + void reset(); + /// Resets the session and closes the socket. + /// + /// The next request will initiate a new connection, + /// even if persistent connections are enabled. + /// + /// This should be called whenever something went + /// wrong when sending a request (e.g., sendRequest() + /// or receiveResponse() throws an exception, or + /// the request or response stream changes into + /// fail or bad state, but not eof state). + + virtual bool secure() const; + /// Return true iff the session uses SSL or TLS, + /// or false otherwise. + + bool bypassProxy() const; + /// Returns true if the proxy should be bypassed + /// for the current host. + +protected: + enum + { + DEFAULT_KEEP_ALIVE_TIMEOUT = 8 + }; + + void reconnect(); + /// Connects the underlying socket to the HTTP server. + + int write(const char* buffer, std::streamsize length); + /// Tries to re-connect if keep-alive is on. + + std::ostream& sendRequestImpl(const HTTPRequest& request); + /// Sends the given HTTPRequest over an existing connection. + + virtual std::string proxyRequestPrefix() const; + /// Returns the prefix prepended to the URI for proxy requests + /// (e.g., "http://myhost.com"). + + virtual bool mustReconnect() const; + /// Checks if we can reuse a persistent connection. + + virtual void proxyAuthenticate(HTTPRequest& request); + /// Sets the proxy credentials (Proxy-Authorization header), if + /// proxy username and password have been set. + + void proxyAuthenticateImpl(HTTPRequest& request, const ProxyConfig& proxyConfig); + /// Sets the proxy credentials (Proxy-Authorization header), if + /// proxy username and password have been set. + + void proxyAuthenticateDigest(HTTPRequest& request); + /// Initiates a HTTP Digest authentication handshake with the proxy. + + void proxyAuthenticateNTLM(HTTPRequest& request); + /// Initiates a HTTP NTLM authentication handshake with the proxy. + + void sendChallengeRequest(const HTTPRequest& request, HTTPResponse& response); + /// Sends a probe request for Digest and NTLM authentication + /// to obtain the server challenge. + + StreamSocket proxyConnect(); + /// Sends a CONNECT request to the proxy server and returns + /// a StreamSocket for the resulting connection. + + void proxyTunnel(); + /// Calls proxyConnect() and attaches the resulting StreamSocket + /// to the HTTPClientSession. + +private: + std::string _host; + Poco::UInt16 _port; + ProxyConfig _proxyConfig; + Poco::Timespan _keepAliveTimeout; + Poco::Timestamp _lastRequest; + bool _reconnect; + bool _mustReconnect; + bool _expectResponseBody; + bool _responseReceived; + Poco::SharedPtr _pRequestStream; + Poco::SharedPtr _pResponseStream; + HTTPBasicCredentials _proxyBasicCreds; + HTTPDigestCredentials _proxyDigestCreds; + HTTPNTLMCredentials _proxyNTLMCreds; + bool _ntlmProxyAuthenticated; + + static ProxyConfig _globalProxyConfig; + + HTTPClientSession(const HTTPClientSession&); + HTTPClientSession& operator = (const HTTPClientSession&); + + friend class WebSocket; +}; + + +// +// inlines +// +inline const std::string& HTTPClientSession::getHost() const +{ + return _host; +} + + +inline Poco::UInt16 HTTPClientSession::getPort() const +{ + return _port; +} + + +inline const std::string& HTTPClientSession::getProxyHost() const +{ + return _proxyConfig.host; +} + + +inline Poco::UInt16 HTTPClientSession::getProxyPort() const +{ + return _proxyConfig.port; +} + + +inline const std::string& HTTPClientSession::getProxyUsername() const +{ + return _proxyConfig.username; +} + + +inline const std::string& HTTPClientSession::getProxyPassword() const +{ + return _proxyConfig.password; +} + + +inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getProxyConfig() const +{ + return _proxyConfig; +} + + +inline const HTTPClientSession::ProxyConfig& HTTPClientSession::getGlobalProxyConfig() +{ + return _globalProxyConfig; +} + + +inline const Poco::Timespan& HTTPClientSession::getKeepAliveTimeout() const +{ + return _keepAliveTimeout; +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPClientSession_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPCookie.h b/include/Poco/Poco/Net/HTTPCookie.h new file mode 100644 index 00000000..94411a6c --- /dev/null +++ b/include/Poco/Poco/Net/HTTPCookie.h @@ -0,0 +1,293 @@ +// +// HTTPCookie.h +// +// Library: Net +// Package: HTTP +// Module: HTTPCookie +// +// Definition of the HTTPCookie class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPCookie_INCLUDED +#define Net_HTTPCookie_INCLUDED + + +#include "Poco/Net/Net.h" + + +namespace Poco { +namespace Net { + + +class NameValueCollection; + + +class Net_API HTTPCookie + /// This class represents a HTTP Cookie. + /// + /// A cookie is a small amount of information sent by a Web + /// server to a Web browser, saved by the browser, and later sent back + /// to the server. A cookie's value can uniquely identify a client, so + /// cookies are commonly used for session management. + /// + /// A cookie has a name, a single value, and optional attributes such + /// as a comment, path and domain qualifiers, a maximum age, and a + /// version number. + /// + /// This class supports both the Version 0 (by Netscape) and Version 1 + /// (by RFC 2109) cookie specifications. By default, cookies are created + /// using Version 0 to ensure the best interoperability. +{ +public: + enum SameSite + { + SAME_SITE_NOT_SPECIFIED, + SAME_SITE_NONE, + SAME_SITE_LAX, + SAME_SITE_STRICT + }; + + HTTPCookie(); + /// Creates an empty HTTPCookie. + + explicit HTTPCookie(const std::string& name); + /// Creates a cookie with the given name. + /// The cookie never expires. + + explicit HTTPCookie(const NameValueCollection& nvc); + /// Creates a cookie from the given NameValueCollection. + + HTTPCookie(const std::string& name, const std::string& value); + /// Creates a cookie with the given name and value. + /// The cookie never expires. + /// + /// Note: If value contains whitespace or non-alphanumeric + /// characters, the value should be escaped by calling escape() + /// before passing it to the constructor. + + HTTPCookie(const HTTPCookie& cookie); + /// Creates the HTTPCookie by copying another one. + + ~HTTPCookie(); + /// Destroys the HTTPCookie. + + HTTPCookie& operator = (const HTTPCookie& cookie); + /// Assigns a cookie. + + void setVersion(int version); + /// Sets the version of the cookie. + /// + /// Version must be either 0 (denoting a Netscape cookie) + /// or 1 (denoting a RFC 2109 cookie). + + int getVersion() const; + /// Returns the version of the cookie, which is + /// either 0 or 1. + + void setName(const std::string& name); + /// Sets the name of the cookie. + + const std::string& getName() const; + /// Returns the name of the cookie. + + void setValue(const std::string& value); + /// Sets the value of the cookie. + /// + /// According to the cookie specification, the + /// size of the value should not exceed 4 Kbytes. + /// + /// Note: If value contains whitespace or non-alphanumeric + /// characters, the value should be escaped by calling escape() + /// prior to passing it to setName(). + + const std::string& getValue() const; + /// Returns the value of the cookie. + + void setComment(const std::string& comment); + /// Sets the comment for the cookie. + /// + /// Comments are only supported for version 1 cookies. + + const std::string& getComment() const; + /// Returns the comment for the cookie. + + void setDomain(const std::string& domain); + /// Sets the domain for the cookie. + + const std::string& getDomain() const; + /// Returns the domain for the cookie. + + void setPath(const std::string& path); + /// Sets the path for the cookie. + + void setPriority(const std::string& priority); + /// Sets the priority for the cookie. + + const std::string& getPath() const; + /// Returns the path for the cookie. + + const std::string& getPriority() const; + /// Returns the priority for the cookie. + + void setSecure(bool secure); + /// Sets the value of the secure flag for + /// the cookie. + + bool getSecure() const; + /// Returns the value of the secure flag + /// for the cookie. + + void setMaxAge(int maxAge); + /// Sets the maximum age in seconds for + /// the cookie. + /// + /// A value of -1 (default) causes the cookie + /// to become a session cookie, which will + /// be deleted when the browser window + /// is closed. + /// + /// A value of 0 deletes the cookie on + /// the client. + + int getMaxAge() const; + /// Returns the maximum age in seconds for + /// the cookie. + + void setHttpOnly(bool flag = true); + /// Sets the HttpOnly flag for the cookie. + + bool getHttpOnly() const; + /// Returns true iff the cookie's HttpOnly flag is set. + + void setSameSite(SameSite value); + /// Sets the cookie's SameSite attribute. + + SameSite getSameSite() const; + /// Returns the cookie's SameSite attribute. + + std::string toString() const; + /// Returns a string representation of the cookie, + /// suitable for use in a Set-Cookie header. + + static std::string escape(const std::string& str); + /// Escapes the given string by replacing all + /// non-alphanumeric characters with escape + /// sequences in the form %xx, where xx is the + /// hexadecimal character code. + /// + /// The following characters will be replaced + /// with escape sequences: + /// - percent sign % + /// - less-than and greater-than < and > + /// - curly brackets { and } + /// - square brackets [ and ] + /// - parenthesis ( and ) + /// - solidus / + /// - vertical line | + /// - reverse solidus (backslash /) + /// - quotation mark " + /// - apostrophe ' + /// - circumflex accent ^ + /// - grave accent ` + /// - comma and semicolon , and ; + /// - whitespace and control characters + + static std::string unescape(const std::string& str); + /// Unescapes the given string by replacing all + /// escape sequences in the form %xx with the + /// respective characters. + +private: + int _version; + std::string _name; + std::string _value; + std::string _comment; + std::string _domain; + std::string _path; + std::string _priority; + bool _secure; + int _maxAge; + bool _httpOnly; + SameSite _sameSite; +}; + + +// +// inlines +// +inline int HTTPCookie::getVersion() const +{ + return _version; +} + + +inline const std::string& HTTPCookie::getName() const +{ + return _name; +} + + +inline const std::string& HTTPCookie::getValue() const +{ + return _value; +} + + +inline const std::string& HTTPCookie::getComment() const +{ + return _comment; +} + + +inline const std::string& HTTPCookie::getDomain() const +{ + return _domain; +} + + +inline const std::string& HTTPCookie::getPath() const +{ + return _path; +} + + +inline const std::string& HTTPCookie::getPriority() const +{ + return _priority; +} + + +inline bool HTTPCookie::getSecure() const +{ + return _secure; +} + + +inline int HTTPCookie::getMaxAge() const +{ + return _maxAge; +} + + +inline bool HTTPCookie::getHttpOnly() const +{ + return _httpOnly; +} + + +inline HTTPCookie::SameSite HTTPCookie::getSameSite() const +{ + return _sameSite; +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPCookie_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPDigestCredentials.h b/include/Poco/Poco/Net/HTTPDigestCredentials.h new file mode 100644 index 00000000..c321c9fc --- /dev/null +++ b/include/Poco/Poco/Net/HTTPDigestCredentials.h @@ -0,0 +1,186 @@ +// +// HTTPDigestCredentials.h +// +// Library: Net +// Package: HTTP +// Module: HTTPDigestCredentials +// +// Definition of the HTTPDigestCredentials class. +// +// Copyright (c) 2011, Anton V. Yabchinskiy (arn at bestmx dot ru). +// Copyright (c) 2012, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPDigestCredentials_INCLUDED +#define Net_HTTPDigestCredentials_INCLUDED + + +#include "Poco/Net/HTTPAuthenticationParams.h" +#include "Poco/Mutex.h" +#include + + +namespace Poco { +namespace Net { + + +class HTTPRequest; +class HTTPResponse; + + +class Net_API HTTPDigestCredentials + /// This is a utility class for working with + /// HTTP Digest Authentication in HTTPRequest + /// objects. + /// + /// Note: currently, no qop or qop=auth is + /// supported only. +{ +public: + HTTPDigestCredentials(); + /// Creates an empty HTTPDigestCredentials object. + + HTTPDigestCredentials(const std::string& username, const std::string& password); + /// Creates a HTTPDigestCredentials object with the given username and password. + + ~HTTPDigestCredentials(); + /// Destroys the HTTPDigestCredentials. + + void reset(); + /// Resets the HTTPDigestCredentials object to a clean state. + /// Does not clear username and password. + + void clear(); + /// Clears both username and password. + + void setUsername(const std::string& username); + /// Sets the username. + + const std::string& getUsername() const; + /// Returns the username. + + void setPassword(const std::string& password); + /// Sets the password. + + const std::string& getPassword() const; + /// Returns the password. + + bool empty() const; + /// Returns true if both username and password are empty, otherwise false. + + void authenticate(HTTPRequest& request, const HTTPResponse& response); + /// Parses WWW-Authenticate header of the HTTPResponse, initializes + /// internal state, and adds authentication information to the given HTTPRequest. + + void authenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams); + /// Initializes internal state according to information from the + /// HTTPAuthenticationParams of the response, and adds authentication + /// information to the given HTTPRequest. + /// + /// Throws InvalidArgumentException if HTTPAuthenticationParams is + /// invalid or some required parameter is missing. + /// Throws NotImplementedException in case of unsupported digest + /// algorithm or quality of protection method. + + void updateAuthInfo(HTTPRequest& request); + /// Updates internal state and adds authentication information to + /// the given HTTPRequest. + + void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response); + /// Parses Proxy-Authenticate header of the HTTPResponse, initializes + /// internal state, and adds proxy authentication information to the given HTTPRequest. + + void proxyAuthenticate(HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams); + /// Initializes internal state according to information from the + /// HTTPAuthenticationParams of the response, and adds proxy authentication + /// information to the given HTTPRequest. + /// + /// Throws InvalidArgumentException if HTTPAuthenticationParams is + /// invalid or some required parameter is missing. + /// Throws NotImplementedException in case of unsupported digest + /// algorithm or quality of protection method. + + void updateProxyAuthInfo(HTTPRequest& request); + /// Updates internal state and adds proxy authentication information to + /// the given HTTPRequest. + + bool verifyAuthInfo(const HTTPRequest& request) const; + /// Verifies the digest authentication information in the given HTTPRequest + /// by recomputing the response and comparing it with what's in the request. + /// + /// Note: This method creates a HTTPAuthenticationParams object from the request + /// and calls verifyAuthParams() with request and params. + + bool verifyAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& params) const; + /// Verifies the digest authentication information in the given HTTPRequest + /// and HTTPAuthenticationParams by recomputing the response and comparing + /// it with what's in the request. + + static std::string createNonce(); + /// Creates a random nonce string. + + static const std::string SCHEME; + +private: + HTTPDigestCredentials(const HTTPDigestCredentials&); + HTTPDigestCredentials& operator = (const HTTPDigestCredentials&); + + void createAuthParams(const HTTPRequest& request, const HTTPAuthenticationParams& responseAuthParams); + void updateAuthParams(const HTTPRequest& request); + int updateNonceCounter(const std::string& nonce); + + static const std::string DEFAULT_ALGORITHM; + static const std::string DEFAULT_QOP; + static const std::string NONCE_PARAM; + static const std::string REALM_PARAM; + static const std::string QOP_PARAM; + static const std::string ALGORITHM_PARAM; + static const std::string USERNAME_PARAM; + static const std::string OPAQUE_PARAM; + static const std::string URI_PARAM; + static const std::string RESPONSE_PARAM; + static const std::string AUTH_PARAM; + static const std::string CNONCE_PARAM; + static const std::string NC_PARAM; + + typedef std::map NonceCounterMap; + + std::string _username; + std::string _password; + HTTPAuthenticationParams _requestAuthParams; + NonceCounterMap _nc; + + static int _nonceCounter; + static Poco::FastMutex _nonceMutex; +}; + + +// +// inlines +// +inline const std::string& HTTPDigestCredentials::getUsername() const +{ + return _username; +} + + +inline const std::string& HTTPDigestCredentials::getPassword() const +{ + return _password; +} + + +inline bool HTTPDigestCredentials::empty() const +{ + return _username.empty() && _password.empty(); +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPDigestCredentials_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPMessage.h b/include/Poco/Poco/Net/HTTPMessage.h new file mode 100644 index 00000000..67eb6264 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPMessage.h @@ -0,0 +1,189 @@ +// +// HTTPMessage.h +// +// Library: Net +// Package: HTTP +// Module: HTTPMessage +// +// Definition of the HTTPMessage class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPMessage_INCLUDED +#define Net_HTTPMessage_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/MessageHeader.h" + + +namespace Poco { +namespace Net { + + +class MediaType; + + +class Net_API HTTPMessage: public MessageHeader + /// The base class for HTTPRequest and HTTPResponse. + /// + /// Defines the common properties of all HTTP messages. + /// These are version, content length, content type + /// and transfer encoding. +{ +public: + void setVersion(const std::string& version); + /// Sets the HTTP version for this message. + + const std::string& getVersion() const; + /// Returns the HTTP version for this message. + + void setContentLength(std::streamsize length); + /// Sets the Content-Length header. + /// + /// If length is UNKNOWN_CONTENT_LENGTH, removes + /// the Content-Length header. + + std::streamsize getContentLength() const; + /// Returns the content length for this message, + /// which may be UNKNOWN_CONTENT_LENGTH if + /// no Content-Length header is present. + +#if defined(POCO_HAVE_INT64) + void setContentLength64(Poco::Int64 length); + /// Sets the Content-Length header. + /// + /// If length is UNKNOWN_CONTENT_LENGTH, removes + /// the Content-Length header. + /// + /// In contrast to setContentLength(), this method takes + /// a 64-bit integer as content length. + + Poco::Int64 getContentLength64() const; + /// Returns the content length for this message, + /// which may be UNKNOWN_CONTENT_LENGTH if + /// no Content-Length header is present. + /// + /// In contrast to getContentLength(), this method + /// always returns a 64-bit integer for content length. +#endif // defined(POCO_HAVE_INT64) + + bool hasContentLength() const; + /// Returns true iff a Content-Length header is present. + + void setTransferEncoding(const std::string& transferEncoding); + /// Sets the transfer encoding for this message. + /// + /// The value should be either IDENTITY_TRANSFER_CODING + /// or CHUNKED_TRANSFER_CODING. + + const std::string& getTransferEncoding() const; + /// Returns the transfer encoding used for this + /// message. + /// + /// Normally, this is the value of the Transfer-Encoding + /// header field. If no such field is present, + /// returns IDENTITY_TRANSFER_CODING. + + void setChunkedTransferEncoding(bool flag); + /// If flag is true, sets the Transfer-Encoding header to + /// chunked. Otherwise, removes the Transfer-Encoding + /// header. + + bool getChunkedTransferEncoding() const; + /// Returns true if the Transfer-Encoding header is set + /// and its value is chunked. + + void setContentType(const std::string& mediaType); + /// Sets the content type for this message. + /// + /// Specify UNKNOWN_CONTENT_TYPE to remove the + /// Content-Type header. + + void setContentType(const MediaType& mediaType); + /// Sets the content type for this message. + + const std::string& getContentType() const; + /// Returns the content type for this message. + /// + /// If no Content-Type header is present, + /// returns UNKNOWN_CONTENT_TYPE. + + void setKeepAlive(bool keepAlive); + /// Sets the value of the Connection header field. + /// + /// The value is set to "Keep-Alive" if keepAlive is + /// true, or to "Close" otherwise. + + bool getKeepAlive() const; + /// Returns true if + /// * the message has a Connection header field and its value is "Keep-Alive" + /// * the message is a HTTP/1.1 message and not Connection header is set + /// Returns false otherwise. + + static const std::string HTTP_1_0; + static const std::string HTTP_1_1; + + static const std::string IDENTITY_TRANSFER_ENCODING; + static const std::string CHUNKED_TRANSFER_ENCODING; + + static const int UNKNOWN_CONTENT_LENGTH; + static const std::string UNKNOWN_CONTENT_TYPE; + + static const std::string CONTENT_LENGTH; + static const std::string CONTENT_TYPE; + static const std::string TRANSFER_ENCODING; + static const std::string CONNECTION; + static const std::string PROXY_CONNECTION; + + static const std::string CONNECTION_KEEP_ALIVE; + static const std::string CONNECTION_CLOSE; + + static const std::string EMPTY; + +protected: + HTTPMessage(); + /// Creates the HTTPMessage with version HTTP/1.0. + + HTTPMessage(const std::string& version); + /// Creates the HTTPMessage and sets + /// the version. + + HTTPMessage(const HTTPMessage& other); + /// Copy constructor. + + HTTPMessage& operator = (const HTTPMessage& other); + /// Assignment operator. + + virtual ~HTTPMessage(); + /// Destroys the HTTPMessage. + +private: + std::string _version; +}; + + +// +// inlines +// +inline const std::string& HTTPMessage::getVersion() const +{ + return _version; +} + + +inline bool HTTPMessage::hasContentLength() const +{ + return has(CONTENT_LENGTH); +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPMessage_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPNTLMCredentials.h b/include/Poco/Poco/Net/HTTPNTLMCredentials.h new file mode 100644 index 00000000..e972ccc7 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPNTLMCredentials.h @@ -0,0 +1,168 @@ +// +// HTTPNTLMCredentials.h +// +// Library: Net +// Package: HTTP +// Module: HTTPNTLMCredentials +// +// Definition of the HTTPNTLMCredentials class. +// +// Copyright (c) 2019, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPNTLMCredentials_INCLUDED +#define Net_HTTPNTLMCredentials_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SSPINTLMCredentials.h" +#include + + +namespace Poco { +namespace Net { + + +class HTTPRequest; +class HTTPResponse; + + +class Net_API HTTPNTLMCredentials + /// This is a utility class for working with + /// HTTP NTLMv2 Authentication in HTTPRequest + /// objects. +{ +public: + HTTPNTLMCredentials(); + /// Creates an empty HTTPNTLMCredentials object. + + HTTPNTLMCredentials(const std::string& username, const std::string& password); + /// Creates a HTTPNTLMCredentials object with the given username and password. + + HTTPNTLMCredentials(const std::string& username, const std::string& password, const std::string& host); + /// Creates a HTTPNTLMCredentials object with the given username, password and target host. + + ~HTTPNTLMCredentials(); + /// Destroys the HTTPNTLMCredentials. + + void reset(); + /// Resets the HTTPNTLMCredentials object to a clean state. + /// Does not clear username and password. + + void clear(); + /// Clears username, password and host. + + void setUsername(const std::string& username); + /// Sets the username. + + const std::string& getUsername() const; + /// Returns the username. + + void setPassword(const std::string& password); + /// Sets the password. + + const std::string& getPassword() const; + /// Returns the password. + + bool empty() const; + /// Returns true if both username and password are empty, otherwise false. + + void setHost(const std::string& host); + /// Sets the target host. + /// + /// Used for SSPI-based NTLM authentication only. + + const std::string& getHost() const; + /// Returns the target host. + + void authenticate(HTTPRequest& request, const HTTPResponse& response); + /// Parses WWW-Authenticate header of the HTTPResponse, initializes + /// internal state, and adds authentication information to the given HTTPRequest. + + void authenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64); + /// Initializes internal state according to information from the + /// ntlmChallengeBase64, and adds authentication + /// information to the given HTTPRequest. + /// + /// Throws InvalidArgumentException if responseAuthParams is + /// invalid. + + void updateAuthInfo(HTTPRequest& request); + /// Updates internal state and adds authentication information to + /// the given HTTPRequest. + + void proxyAuthenticate(HTTPRequest& request, const HTTPResponse& response); + /// Parses Proxy-Authenticate header of the HTTPResponse, initializes + /// internal state, and adds proxy authentication information to the given HTTPRequest. + + void proxyAuthenticate(HTTPRequest& request, const std::string& ntlmChallengeBase64); + /// Initializes internal state according to information from the + /// HTTPAuthenticationParams of the response, and adds proxy authentication + /// information to the given HTTPRequest. + /// + /// Throws InvalidArgumentException if HTTPAuthenticationParams is + /// invalid or some required parameter is missing. + /// Throws NotImplementedException in case of unsupported digest + /// algorithm or quality of protection method. + + void updateProxyAuthInfo(HTTPRequest& request); + /// Updates internal state and adds proxy authentication information to + /// the given HTTPRequest. + + static const std::string SCHEME; + +private: + HTTPNTLMCredentials(const HTTPNTLMCredentials&); + HTTPNTLMCredentials& operator = (const HTTPNTLMCredentials&); + + std::string createNTLMMessage(const std::string& ntlmChallengeBase64); + bool useSSPINTLM() const; + + std::string _username; + std::string _password; + std::string _host; + Poco::SharedPtr _pNTLMContext; +}; + + +// +// inlines +// +inline const std::string& HTTPNTLMCredentials::getUsername() const +{ + return _username; +} + + +inline const std::string& HTTPNTLMCredentials::getPassword() const +{ + return _password; +} + + +inline const std::string& HTTPNTLMCredentials::getHost() const +{ + return _host; +} + + +inline bool HTTPNTLMCredentials::useSSPINTLM() const +{ + return _username.empty() && _password.empty() && SSPINTLMCredentials::available(); +} + + +inline bool HTTPNTLMCredentials::empty() const +{ + return _username.empty() && _password.empty(); +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPNTLMCredentials_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPRequest.h b/include/Poco/Poco/Net/HTTPRequest.h new file mode 100644 index 00000000..bbf2a8b9 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPRequest.h @@ -0,0 +1,209 @@ +// +// HTTPRequest.h +// +// Library: Net +// Package: HTTP +// Module: HTTPRequest +// +// Definition of the HTTPRequest class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPRequest_INCLUDED +#define Net_HTTPRequest_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/HTTPMessage.h" + + +namespace Poco { +namespace Net { + + +class Net_API HTTPRequest: public HTTPMessage + /// This class encapsulates an HTTP request + /// message. + /// + /// In addition to the properties common to + /// all HTTP messages, a HTTP request has + /// a method (e.g. GET, HEAD, POST, etc.) and + /// a request URI. +{ +public: + HTTPRequest(); + /// Creates a GET / HTTP/1.0 HTTP request. + + explicit HTTPRequest(const std::string& version); + /// Creates a GET / HTTP/1.x request with + /// the given version (HTTP/1.0 or HTTP/1.1). + + HTTPRequest(const std::string& method, const std::string& uri); + /// Creates a HTTP/1.0 request with the given method and URI. + + HTTPRequest(const std::string& method, const std::string& uri, const std::string& version); + /// Creates a HTTP request with the given method, URI and version. + + HTTPRequest(const HTTPRequest& other); + /// Creates a HTTP request by copying another one. + + virtual ~HTTPRequest(); + /// Destroys the HTTPRequest. + + HTTPRequest& operator = (const HTTPRequest&); + /// Assignment operator. + + void setMethod(const std::string& method); + /// Sets the method. + + const std::string& getMethod() const; + /// Returns the method. + + void setURI(const std::string& uri); + /// Sets the request URI. + + const std::string& getURI() const; + /// Returns the request URI. + + void setHost(const std::string& host); + /// Sets the value of the Host header field. + + void setHost(const std::string& host, Poco::UInt16 port); + /// Sets the value of the Host header field. + /// + /// If the given port number is a non-standard + /// port number (other than 80 or 443), it is + /// included in the Host header field. + + const std::string& getHost() const; + /// Returns the value of the Host header field. + /// + /// Throws a NotFoundException if the request + /// does not have a Host header field. + + void setCookies(const NameValueCollection& cookies); + /// Adds a Cookie header with the names and + /// values from cookies. + + void getCookies(NameValueCollection& cookies) const; + /// Fills cookies with the cookies extracted + /// from the Cookie headers in the request. + + bool hasCredentials() const; + /// Returns true iff the request contains authentication + /// information in the form of an Authorization header. + + void getCredentials(std::string& scheme, std::string& authInfo) const; + /// Returns the authentication scheme and additional authentication + /// information contained in this request. + /// + /// Throws a NotAuthenticatedException if no authentication information + /// is contained in the request. + + void setCredentials(const std::string& scheme, const std::string& authInfo); + /// Sets the authentication scheme and information for + /// this request. + + void removeCredentials(); + /// Removes any credentials from the request. + + bool getExpectContinue() const; + /// Returns true if the request contains an + /// "Expect: 100-continue" header. + + void setExpectContinue(bool expectContinue); + /// Adds a "Expect: 100-continue" header to the request if + /// expectContinue is true, otherwise removes the Expect header. + + bool hasProxyCredentials() const; + /// Returns true iff the request contains proxy authentication + /// information in the form of an Proxy-Authorization header. + + void getProxyCredentials(std::string& scheme, std::string& authInfo) const; + /// Returns the proxy authentication scheme and additional proxy authentication + /// information contained in this request. + /// + /// Throws a NotAuthenticatedException if no proxy authentication information + /// is contained in the request. + + void setProxyCredentials(const std::string& scheme, const std::string& authInfo); + /// Sets the proxy authentication scheme and information for + /// this request. + + void removeProxyCredentials(); + /// Removes any proxy credentials from the request. + + void write(std::ostream& ostr) const; + /// Writes the HTTP request to the given + /// output stream. + + void read(std::istream& istr); + /// Reads the HTTP request from the + /// given input stream. + + static const std::string HTTP_GET; + static const std::string HTTP_HEAD; + static const std::string HTTP_PUT; + static const std::string HTTP_POST; + static const std::string HTTP_OPTIONS; + static const std::string HTTP_DELETE; + static const std::string HTTP_TRACE; + static const std::string HTTP_CONNECT; + static const std::string HTTP_PATCH; + + static const std::string HOST; + static const std::string COOKIE; + static const std::string AUTHORIZATION; + static const std::string PROXY_AUTHORIZATION; + static const std::string UPGRADE; + static const std::string EXPECT; + +protected: + void getCredentials(const std::string& header, std::string& scheme, std::string& authInfo) const; + /// Returns the authentication scheme and additional authentication + /// information contained in the given header of request. + /// + /// Throws a NotAuthenticatedException if no authentication information + /// is contained in the request. + + void setCredentials(const std::string& header, const std::string& scheme, const std::string& authInfo); + /// Writes the authentication scheme and information for + /// this request to the given header. + +private: + enum Limits + { + MAX_METHOD_LENGTH = 32, + MAX_URI_LENGTH = 16384, + MAX_VERSION_LENGTH = 8 + }; + + std::string _method; + std::string _uri; +}; + + +// +// inlines +// +inline const std::string& HTTPRequest::getMethod() const +{ + return _method; +} + + +inline const std::string& HTTPRequest::getURI() const +{ + return _uri; +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPRequest_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPResponse.h b/include/Poco/Poco/Net/HTTPResponse.h new file mode 100644 index 00000000..029095b2 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPResponse.h @@ -0,0 +1,298 @@ +// +// HTTPResponse.h +// +// Library: Net +// Package: HTTP +// Module: HTTPResponse +// +// Definition of the HTTPResponse class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPResponse_INCLUDED +#define Net_HTTPResponse_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/HTTPMessage.h" +#include "Poco/Net/HTTPCookie.h" +#include "Poco/Timestamp.h" +#include + + +namespace Poco { +namespace Net { + + +class HTTPCookie; + + +class Net_API HTTPResponse: public HTTPMessage + /// This class encapsulates an HTTP response + /// message. + /// + /// In addition to the properties common to + /// all HTTP messages, a HTTP response has + /// status code and a reason phrase. +{ +public: + enum HTTPStatus + { + HTTP_CONTINUE = 100, + HTTP_SWITCHING_PROTOCOLS = 101, + HTTP_PROCESSING = 102, + HTTP_OK = 200, + HTTP_CREATED = 201, + HTTP_ACCEPTED = 202, + HTTP_NONAUTHORITATIVE = 203, + HTTP_NO_CONTENT = 204, + HTTP_RESET_CONTENT = 205, + HTTP_PARTIAL_CONTENT = 206, + HTTP_MULTI_STATUS = 207, + HTTP_ALREADY_REPORTED = 208, + HTTP_IM_USED = 226, + HTTP_MULTIPLE_CHOICES = 300, + HTTP_MOVED_PERMANENTLY = 301, + HTTP_FOUND = 302, + HTTP_SEE_OTHER = 303, + HTTP_NOT_MODIFIED = 304, + HTTP_USE_PROXY = 305, + HTTP_USEPROXY = 305, /// @deprecated + // UNUSED: 306 + HTTP_TEMPORARY_REDIRECT = 307, + HTTP_PERMANENT_REDIRECT = 308, + HTTP_BAD_REQUEST = 400, + HTTP_UNAUTHORIZED = 401, + HTTP_PAYMENT_REQUIRED = 402, + HTTP_FORBIDDEN = 403, + HTTP_NOT_FOUND = 404, + HTTP_METHOD_NOT_ALLOWED = 405, + HTTP_NOT_ACCEPTABLE = 406, + HTTP_PROXY_AUTHENTICATION_REQUIRED = 407, + HTTP_REQUEST_TIMEOUT = 408, + HTTP_CONFLICT = 409, + HTTP_GONE = 410, + HTTP_LENGTH_REQUIRED = 411, + HTTP_PRECONDITION_FAILED = 412, + HTTP_REQUEST_ENTITY_TOO_LARGE = 413, + HTTP_REQUESTENTITYTOOLARGE = 413, /// @deprecated + HTTP_REQUEST_URI_TOO_LONG = 414, + HTTP_REQUESTURITOOLONG = 414, /// @deprecated + HTTP_UNSUPPORTED_MEDIA_TYPE = 415, + HTTP_UNSUPPORTEDMEDIATYPE = 415, /// @deprecated + HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416, + HTTP_EXPECTATION_FAILED = 417, + HTTP_IM_A_TEAPOT = 418, + HTTP_ENCHANCE_YOUR_CALM = 420, + HTTP_MISDIRECTED_REQUEST = 421, + HTTP_UNPROCESSABLE_ENTITY = 422, + HTTP_LOCKED = 423, + HTTP_FAILED_DEPENDENCY = 424, + HTTP_UPGRADE_REQUIRED = 426, + HTTP_PRECONDITION_REQUIRED = 428, + HTTP_TOO_MANY_REQUESTS = 429, + HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431, + HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451, + HTTP_INTERNAL_SERVER_ERROR = 500, + HTTP_NOT_IMPLEMENTED = 501, + HTTP_BAD_GATEWAY = 502, + HTTP_SERVICE_UNAVAILABLE = 503, + HTTP_GATEWAY_TIMEOUT = 504, + HTTP_VERSION_NOT_SUPPORTED = 505, + HTTP_VARIANT_ALSO_NEGOTIATES = 506, + HTTP_INSUFFICIENT_STORAGE = 507, + HTTP_LOOP_DETECTED = 508, + HTTP_NOT_EXTENDED = 510, + HTTP_NETWORK_AUTHENTICATION_REQUIRED = 511 + }; + + HTTPResponse(); + /// Creates the HTTPResponse with OK status. + + HTTPResponse(HTTPStatus status, const std::string& reason); + /// Creates the HTTPResponse with the given status + /// and reason phrase. + + HTTPResponse(const std::string& version, HTTPStatus status, const std::string& reason); + /// Creates the HTTPResponse with the given version, status + /// and reason phrase. + + explicit HTTPResponse(HTTPStatus status); + /// Creates the HTTPResponse with the given status + /// and an appropriate reason phrase. + + HTTPResponse(const std::string& version, HTTPStatus status); + /// Creates the HTTPResponse with the given version, status + /// and an appropriate reason phrase. + + HTTPResponse(const HTTPResponse& other); + /// Creates the HTTPResponse by copying another one. + + virtual ~HTTPResponse(); + /// Destroys the HTTPResponse. + + HTTPResponse& operator = (const HTTPResponse& other); + /// Assignment operator. + + void setStatus(HTTPStatus status); + /// Sets the HTTP status code. + /// + /// Does not change the reason phrase. + + HTTPStatus getStatus() const; + /// Returns the HTTP status code. + + void setStatus(const std::string& status); + /// Sets the HTTP status code. + /// + /// The string must contain a valid + /// HTTP numerical status code. + + void setReason(const std::string& reason); + /// Sets the HTTP reason phrase. + + const std::string& getReason() const; + /// Returns the HTTP reason phrase. + + void setStatusAndReason(HTTPStatus status, const std::string& reason); + /// Sets the HTTP status code and reason phrase. + + void setStatusAndReason(HTTPStatus status); + /// Sets the HTTP status code and reason phrase. + /// + /// The reason phrase is set according to the status code. + + void setDate(const Poco::Timestamp& dateTime); + /// Sets the Date header to the given date/time value. + + Poco::Timestamp getDate() const; + /// Returns the value of the Date header. + + void addCookie(const HTTPCookie& cookie); + /// Adds the cookie to the response by + /// adding a Set-Cookie header. + + void getCookies(std::vector& cookies) const; + /// Returns a vector with all the cookies + /// set in the response header. + /// + /// May throw an exception in case of a malformed + /// Set-Cookie header. + + void write(std::ostream& ostr) const; + /// Writes the HTTP response to the given + /// output stream. + + void read(std::istream& istr); + /// Reads the HTTP response from the + /// given input stream. + /// + /// 100 Continue responses are ignored. + + static const std::string& getReasonForStatus(HTTPStatus status); + /// Returns an appropriate reason phrase + /// for the given status code. + + static const std::string HTTP_REASON_CONTINUE; + static const std::string HTTP_REASON_SWITCHING_PROTOCOLS; + static const std::string HTTP_REASON_PROCESSING; + static const std::string HTTP_REASON_OK; + static const std::string HTTP_REASON_CREATED; + static const std::string HTTP_REASON_ACCEPTED; + static const std::string HTTP_REASON_NONAUTHORITATIVE; + static const std::string HTTP_REASON_NO_CONTENT; + static const std::string HTTP_REASON_RESET_CONTENT; + static const std::string HTTP_REASON_PARTIAL_CONTENT; + static const std::string HTTP_REASON_MULTI_STATUS; + static const std::string HTTP_REASON_ALREADY_REPORTED; + static const std::string HTTP_REASON_IM_USED; + static const std::string HTTP_REASON_MULTIPLE_CHOICES; + static const std::string HTTP_REASON_MOVED_PERMANENTLY; + static const std::string HTTP_REASON_FOUND; + static const std::string HTTP_REASON_SEE_OTHER; + static const std::string HTTP_REASON_NOT_MODIFIED; + static const std::string HTTP_REASON_USE_PROXY; + static const std::string HTTP_REASON_TEMPORARY_REDIRECT; + static const std::string HTTP_REASON_PERMANENT_REDIRECT; + static const std::string HTTP_REASON_BAD_REQUEST; + static const std::string HTTP_REASON_UNAUTHORIZED; + static const std::string HTTP_REASON_PAYMENT_REQUIRED; + static const std::string HTTP_REASON_FORBIDDEN; + static const std::string HTTP_REASON_NOT_FOUND; + static const std::string HTTP_REASON_METHOD_NOT_ALLOWED; + static const std::string HTTP_REASON_NOT_ACCEPTABLE; + static const std::string HTTP_REASON_PROXY_AUTHENTICATION_REQUIRED; + static const std::string HTTP_REASON_REQUEST_TIMEOUT; + static const std::string HTTP_REASON_CONFLICT; + static const std::string HTTP_REASON_GONE; + static const std::string HTTP_REASON_LENGTH_REQUIRED; + static const std::string HTTP_REASON_PRECONDITION_FAILED; + static const std::string HTTP_REASON_REQUEST_ENTITY_TOO_LARGE; + static const std::string HTTP_REASON_REQUEST_URI_TOO_LONG; + static const std::string HTTP_REASON_UNSUPPORTED_MEDIA_TYPE; + static const std::string HTTP_REASON_REQUESTED_RANGE_NOT_SATISFIABLE; + static const std::string HTTP_REASON_EXPECTATION_FAILED; + static const std::string HTTP_REASON_IM_A_TEAPOT; + static const std::string HTTP_REASON_ENCHANCE_YOUR_CALM; + static const std::string HTTP_REASON_MISDIRECTED_REQUEST; + static const std::string HTTP_REASON_UNPROCESSABLE_ENTITY; + static const std::string HTTP_REASON_LOCKED; + static const std::string HTTP_REASON_FAILED_DEPENDENCY; + static const std::string HTTP_REASON_UPGRADE_REQUIRED; + static const std::string HTTP_REASON_PRECONDITION_REQUIRED; + static const std::string HTTP_REASON_TOO_MANY_REQUESTS; + static const std::string HTTP_REASON_REQUEST_HEADER_FIELDS_TOO_LARGE; + static const std::string HTTP_REASON_UNAVAILABLE_FOR_LEGAL_REASONS; + static const std::string HTTP_REASON_INTERNAL_SERVER_ERROR; + static const std::string HTTP_REASON_NOT_IMPLEMENTED; + static const std::string HTTP_REASON_BAD_GATEWAY; + static const std::string HTTP_REASON_SERVICE_UNAVAILABLE; + static const std::string HTTP_REASON_GATEWAY_TIMEOUT; + static const std::string HTTP_REASON_VERSION_NOT_SUPPORTED; + static const std::string HTTP_REASON_VARIANT_ALSO_NEGOTIATES; + static const std::string HTTP_REASON_INSUFFICIENT_STORAGE; + static const std::string HTTP_REASON_LOOP_DETECTED; + static const std::string HTTP_REASON_NOT_EXTENDED; + static const std::string HTTP_REASON_NETWORK_AUTHENTICATION_REQUIRED; + static const std::string HTTP_REASON_UNKNOWN; + + static const std::string DATE; + static const std::string SET_COOKIE; + +private: + enum Limits + { + MAX_VERSION_LENGTH = 8, + MAX_STATUS_LENGTH = 3, + MAX_REASON_LENGTH = 512 + }; + + HTTPStatus _status; + std::string _reason; +}; + + +// +// inlines +// +inline HTTPResponse::HTTPStatus HTTPResponse::getStatus() const +{ + return _status; +} + + +inline const std::string& HTTPResponse::getReason() const +{ + return _reason; +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPResponse_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPSClientSession.h b/include/Poco/Poco/Net/HTTPSClientSession.h new file mode 100644 index 00000000..ff0d8999 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPSClientSession.h @@ -0,0 +1,165 @@ +// +// HTTPSClientSession.h +// +// Library: NetSSL_OpenSSL +// Package: HTTPSClient +// Module: HTTPSClientSession +// +// Definition of the HTTPSClientSession class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_HTTPSClientSession_INCLUDED +#define NetSSL_HTTPSClientSession_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Utility.h" +#include "Poco/Net/HTTPClientSession.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/Session.h" +#include "Poco/Net/X509Certificate.h" + + +namespace Poco { +namespace Net { + + +class SecureStreamSocket; +class HTTPRequest; +class HTTPResponse; + + +class NetSSL_API HTTPSClientSession: public HTTPClientSession + /// This class implements the client-side of + /// a HTTPS session. + /// + /// To send a HTTPS request to a HTTPS server, first + /// instantiate a HTTPSClientSession object and + /// specify the server's host name and port number. + /// + /// Then create a HTTPRequest object, fill it accordingly, + /// and pass it as argument to the sendRequest() method. + /// + /// sendRequest() will return an output stream that can + /// be used to send the request body, if there is any. + /// + /// After you are done sending the request body, create + /// a HTTPResponse object and pass it to receiveResponse(). + /// + /// This will return an input stream that can be used to + /// read the response body. + /// + /// See RFC 2616 for more + /// information about the HTTP protocol. + /// + /// Note that sending requests that neither contain a content length + /// field in the header nor are using chunked transfer encoding will + /// result in a SSL protocol violation, as the framework shuts down + /// the socket after sending the message body. No orderly SSL shutdown + /// will be performed in this case. + /// + /// If session caching has been enabled for the Context object passed + /// to the HTTPSClientSession, the HTTPSClientSession class will + /// attempt to reuse a previously obtained Session object in + /// case of a reconnect. +{ +public: + enum + { + HTTPS_PORT = 443 + }; + + HTTPSClientSession(); + /// Creates an unconnected HTTPSClientSession. + + explicit HTTPSClientSession(const SecureStreamSocket& socket); + /// Creates a HTTPSClientSession using the given socket. + /// The socket must not be connected. The session + /// takes ownership of the socket. + + HTTPSClientSession(const SecureStreamSocket& socket, Session::Ptr pSession); + /// Creates a HTTPSClientSession using the given socket. + /// The socket must not be connected. The session + /// takes ownership of the socket. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + HTTPSClientSession(const std::string& host, Poco::UInt16 port = HTTPS_PORT); + /// Creates a HTTPSClientSession using the given host and port. + + explicit HTTPSClientSession(Context::Ptr pContext); + /// Creates an unconnected HTTPSClientSession, using the + /// give SSL context. + + HTTPSClientSession(Context::Ptr pContext, Session::Ptr pSession); + /// Creates an unconnected HTTPSClientSession, using the + /// give SSL context. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext); + /// Creates a HTTPSClientSession using the given host and port, + /// using the given SSL context. + + HTTPSClientSession(const std::string& host, Poco::UInt16 port, Context::Ptr pContext, Session::Ptr pSession); + /// Creates a HTTPSClientSession using the given host and port, + /// using the given SSL context. + /// + /// The given Session is reused, if possible (client session + /// caching is enabled for the given Context, and the server + /// agrees to reuse the session). + + ~HTTPSClientSession(); + /// Destroys the HTTPSClientSession and closes + /// the underlying socket. + + bool secure() const; + /// Return true iff the session uses SSL or TLS, + /// or false otherwise. + + X509Certificate serverCertificate(); + /// Returns the server's certificate. + /// + /// The certificate is available after the first request has been sent. + + Session::Ptr sslSession(); + /// Returns the SSL Session object for the current + /// connection, if session caching has been enabled for + /// the HTTPSClientSession's Context. A null pointer is + /// returned otherwise. + /// + /// The Session object can be obtained after the first request has + /// been sent. + + // HTTPSession + void abort(); + +protected: + void connect(const SocketAddress& address); + std::string proxyRequestPrefix() const; + void proxyAuthenticate(HTTPRequest& request); + int read(char* buffer, std::streamsize length); + +private: + HTTPSClientSession(const HTTPSClientSession&); + HTTPSClientSession& operator = (const HTTPSClientSession&); + + Context::Ptr _pContext; + Session::Ptr _pSession; +}; + + +} } // namespace Poco::Net + + +#endif // Net_HTTPSClientSession_INCLUDED diff --git a/include/Poco/Poco/Net/HTTPSession.h b/include/Poco/Poco/Net/HTTPSession.h new file mode 100644 index 00000000..666f6f62 --- /dev/null +++ b/include/Poco/Poco/Net/HTTPSession.h @@ -0,0 +1,251 @@ +// +// HTTPSession.h +// +// Library: Net +// Package: HTTP +// Module: HTTPSession +// +// Definition of the HTTPSession class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_HTTPSession_INCLUDED +#define Net_HTTPSession_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/StreamSocket.h" +#include "Poco/Timespan.h" +#include "Poco/Exception.h" +#include "Poco/Any.h" +#include "Poco/Buffer.h" +#include + + +namespace Poco { +namespace Net { + + +class Net_API HTTPSession + /// HTTPSession implements basic HTTP session management + /// for both HTTP clients and HTTP servers. + /// + /// HTTPSession implements buffering for HTTP connections, as well + /// as specific support for the various HTTP stream classes. + /// + /// This class can not be instantiated. HTTPClientSession or + /// HTTPServerSession must be used instead. +{ +public: + void setKeepAlive(bool keepAlive); + /// Sets the keep-alive flag for this session. + /// + /// If the keep-alive flag is enabled, persistent + /// HTTP/1.1 connections are supported. + + bool getKeepAlive() const; + /// Returns the value of the keep-alive flag for + /// this session. + + void setTimeout(const Poco::Timespan& timeout); + /// Sets the timeout for the HTTP session. + + void setTimeout(const Poco::Timespan& connectionTimeout, const Poco::Timespan& sendTimeout, const Poco::Timespan& receiveTimeout); + /// Sets different timeouts for the HTTP session. + + Poco::Timespan getTimeout() const; + /// Returns the timeout for the HTTP session. + + bool connected() const; + /// Returns true if the underlying socket is connected. + + virtual void abort(); + /// Aborts a session in progress by shutting down + /// and closing the underlying socket. + + const Poco::Exception* networkException() const; + /// If sending or receiving data over the underlying + /// socket connection resulted in an exception, a + /// pointer to this exception is returned. + /// + /// Otherwise, NULL is returned. + + void attachSessionData(const Poco::Any& data); + /// Allows to attach an application-specific data + /// item to the session. + /// + /// On the server side, this can be used to manage + /// data that must be maintained over the entire + /// lifetime of a persistent connection (that is, + /// multiple requests sent over the same connection). + + const Poco::Any& sessionData() const; + /// Returns the data attached with attachSessionData(), + /// or an empty Poco::Any if no user data has been + /// attached. + + enum + { + HTTP_PORT = 80 + }; + + StreamSocket detachSocket(); + /// Detaches the socket from the session. + /// + /// The socket is returned, and a new, uninitialized socket is + /// attached to the session. + + StreamSocket& socket(); + /// Returns a reference to the underlying socket. + + void drainBuffer(Poco::Buffer& buffer); + /// Copies all bytes remaining in the internal buffer to the + /// given Poco::Buffer, resizing it as necessary. + /// + /// This is usually used together with detachSocket() to + /// obtain any data already read from the socket, but not + /// yet processed. + +protected: + HTTPSession(); + /// Creates a HTTP session using an + /// unconnected stream socket. + + HTTPSession(const StreamSocket& socket); + /// Creates a HTTP session using the + /// given socket. The session takes ownership + /// of the socket and closes it when it's no + /// longer used. + + HTTPSession(const StreamSocket& socket, bool keepAlive); + /// Creates a HTTP session using the + /// given socket. The session takes ownership + /// of the socket and closes it when it's no + /// longer used. + + virtual ~HTTPSession(); + /// Destroys the HTTPSession and closes the + /// underlying socket. + + int get(); + /// Returns the next byte in the buffer. + /// Reads more data from the socket if there are + /// no bytes left in the buffer. + + int peek(); + /// Peeks at the next character in the buffer. + /// Reads more data from the socket if there are + /// no bytes left in the buffer. + + virtual int read(char* buffer, std::streamsize length); + /// Reads up to length bytes. + /// + /// If there is data in the buffer, this data + /// is returned. Otherwise, data is read from + /// the socket to avoid unnecessary buffering. + + virtual int write(const char* buffer, std::streamsize length); + /// Writes data to the socket. + + int receive(char* buffer, int length); + /// Reads up to length bytes. + + int buffered() const; + /// Returns the number of bytes in the buffer. + + void refill(); + /// Refills the internal buffer. + + virtual void connect(const SocketAddress& address); + /// Connects the underlying socket to the given address + /// and sets the socket's receive timeout. + + void attachSocket(const StreamSocket& socket); + /// Attaches a socket to the session, replacing the + /// previously attached socket. + + void close(); + /// Closes the underlying socket. + + void setException(const Poco::Exception& exc); + /// Stores a clone of the exception. + + void clearException(); + /// Clears the stored exception. + +private: + enum + { + HTTP_DEFAULT_TIMEOUT = 60000000, + HTTP_DEFAULT_CONNECTION_TIMEOUT = 30000000 + }; + + HTTPSession(const HTTPSession&); + HTTPSession& operator = (const HTTPSession&); + + StreamSocket _socket; + char* _pBuffer; + char* _pCurrent; + char* _pEnd; + bool _keepAlive; + Poco::Timespan _connectionTimeout; + Poco::Timespan _receiveTimeout; + Poco::Timespan _sendTimeout; + Poco::Exception* _pException; + Poco::Any _data; + + friend class HTTPStreamBuf; + friend class HTTPHeaderStreamBuf; + friend class HTTPFixedLengthStreamBuf; + friend class HTTPChunkedStreamBuf; +}; + + +// +// inlines +// +inline bool HTTPSession::getKeepAlive() const +{ + return _keepAlive; +} + + +inline Poco::Timespan HTTPSession::getTimeout() const +{ + return _receiveTimeout; +} + + +inline StreamSocket& HTTPSession::socket() +{ + return _socket; +} + + +inline const Poco::Exception* HTTPSession::networkException() const +{ + return _pException; +} + + +inline int HTTPSession::buffered() const +{ + return static_cast(_pEnd - _pCurrent); +} + + +inline const Poco::Any& HTTPSession::sessionData() const +{ + return _data; +} + + +} } // namespace Poco::Net + + +#endif // Net_HTTPSession_INCLUDED diff --git a/include/Poco/Poco/Net/IPAddress.h b/include/Poco/Poco/Net/IPAddress.h new file mode 100644 index 00000000..4ed44616 --- /dev/null +++ b/include/Poco/Poco/Net/IPAddress.h @@ -0,0 +1,450 @@ +// +// IPAddress.h +// +// Library: Net +// Package: NetCore +// Module: IPAddress +// +// Definition of the IPAddress class. +// +// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_IPAddress_INCLUDED +#define Net_IPAddress_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/IPAddressImpl.h" +#include "Poco/AutoPtr.h" +#include "Poco/Exception.h" +#include +#include + + +namespace Poco { + +class BinaryReader; +class BinaryWriter; + +namespace Net { + + +class Net_API IPAddress + /// This class represents an internet (IP) host + /// address. The address can belong either to the + /// IPv4 or the IPv6 address family. + /// + /// Relational operators (==, !=, <, <=, >, >=) are + /// supported. However, you must not interpret any + /// special meaning into the result of these + /// operations, other than that the results are + /// consistent. + /// + /// Especially, an IPv4 address is never equal to + /// an IPv6 address, even if the IPv6 address is + /// IPv4 compatible and the addresses are the same. + /// + /// IPv6 addresses are supported only if the target platform + /// supports IPv6. +{ +public: + using List = std::vector; + + // The following declarations keep the Family type + // backwards compatible with the previously used + // enum declaration. + using Family = AddressFamily::Family; + static const Family IPv4 = AddressFamily::IPv4; +#if defined(POCO_HAVE_IPv6) + static const Family IPv6 = AddressFamily::IPv6; +#endif + + IPAddress(); + /// Creates a wildcard (zero) IPv4 IPAddress. + + IPAddress(const IPAddress& addr); + /// Creates an IPAddress by copying another one. + + explicit IPAddress(Family family); + /// Creates a wildcard (zero) IPAddress for the + /// given address family. + + explicit IPAddress(const std::string& addr); + /// Creates an IPAddress from the string containing + /// an IP address in presentation format (dotted decimal + /// for IPv4, hex string for IPv6). + /// + /// Depending on the format of addr, either an IPv4 or + /// an IPv6 address is created. + /// + /// See toString() for details on the supported formats. + /// + /// Throws an InvalidAddressException if the address cannot be parsed. + + IPAddress(const std::string& addr, Family family); + /// Creates an IPAddress from the string containing + /// an IP address in presentation format (dotted decimal + /// for IPv4, hex string for IPv6). + + IPAddress(const void* addr, poco_socklen_t length); + /// Creates an IPAddress from a native internet address. + /// A pointer to a in_addr or a in6_addr structure may be + /// passed. + + IPAddress(const void* addr, poco_socklen_t length, Poco::UInt32 scope); + /// Creates an IPAddress from a native internet address. + /// A pointer to a in_addr or a in6_addr structure may be + /// passed. Additionally, for an IPv6 address, a scope ID + /// may be specified. The scope ID will be ignored if an IPv4 + /// address is specified. + + IPAddress(unsigned prefix, Family family); + /// Creates an IPAddress mask with the given length of prefix. + +#if defined(_WIN32) + IPAddress(const SOCKET_ADDRESS& socket_address); + /// Creates an IPAddress from Windows SOCKET_ADDRESS structure. +#endif + + IPAddress(const struct sockaddr& sockaddr); + /// Same for struct sock_addr on POSIX. + + + ~IPAddress(); + /// Destroys the IPAddress. + + IPAddress& operator = (const IPAddress& addr); + /// Assigns an IPAddress. + + Family family() const; + /// Returns the address family (IPv4 or IPv6) of the address. + + Poco::UInt32 scope() const; + /// Returns the IPv6 scope identifier of the address. Returns 0 if + /// the address is an IPv4 address, or the address is an + /// IPv6 address but does not have a scope identifier. + + std::string toString() const; + /// Returns a string containing a representation of the address + /// in presentation format. + /// + /// For IPv4 addresses the result will be in dotted-decimal + /// (d.d.d.d) notation. + /// + /// Textual representation of IPv6 address is one of the following forms: + /// + /// The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the hexadecimal + /// values of the eight 16-bit pieces of the address. This is the full form. + /// Example: 1080:0:0:0:8:600:200A:425C + /// + /// It is not necessary to write the leading zeros in an individual field. + /// However, there must be at least one numeral in every field, except as described below. + /// + /// It is common for IPv6 addresses to contain long strings of zero bits. + /// In order to make writing addresses containing zero bits easier, a special syntax is + /// available to compress the zeros. The use of "::" indicates multiple groups of 16-bits of zeros. + /// The "::" can only appear once in an address. The "::" can also be used to compress the leading + /// and/or trailing zeros in an address. Example: 1080::8:600:200A:425C + /// + /// For dealing with IPv4 compatible addresses in a mixed environment, + /// a special syntax is available: x:x:x:x:x:x:d.d.d.d, where the 'x's are the + /// hexadecimal values of the six high-order 16-bit pieces of the address, + /// and the 'd's are the decimal values of the four low-order 8-bit pieces of the + /// standard IPv4 representation address. Example: ::FFFF:192.168.1.120 + /// + /// If an IPv6 address contains a non-zero scope identifier, it is added + /// to the string, delimited by a percent character. On Windows platforms, + /// the numeric value (which specifies an interface index) is directly + /// appended. On Unix platforms, the name of the interface corresponding + /// to the index (interpretation of the scope identifier) is added. + + bool isWildcard() const; + /// Returns true iff the address is a wildcard (all zero) + /// address. + + bool isBroadcast() const; + /// Returns true iff the address is a broadcast address. + /// + /// Only IPv4 addresses can be broadcast addresses. In a broadcast + /// address, all bits are one. + /// + /// For an IPv6 address, returns always false. + + bool isLoopback() const; + /// Returns true iff the address is a loopback address. + /// + /// For IPv4, the loopback address is 127.0.0.1. + /// + /// For IPv6, the loopback address is ::1. + + bool isMulticast() const; + /// Returns true iff the address is a multicast address. + /// + /// IPv4 multicast addresses are in the + /// 224.0.0.0 to 239.255.255.255 range + /// (the first four bits have the value 1110). + /// + /// IPv6 multicast addresses are in the + /// FFxx:x:x:x:x:x:x:x range. + + bool isUnicast() const; + /// Returns true iff the address is a unicast address. + /// + /// An address is unicast if it is neither a wildcard, + /// broadcast or multicast address. + + bool isLinkLocal() const; + /// Returns true iff the address is a link local unicast address. + /// + /// IPv4 link local addresses are in the 169.254.0.0/16 range, + /// according to RFC 3927. + /// + /// IPv6 link local addresses have 1111 1110 10 as the first + /// 10 bits, followed by 54 zeros. + + bool isSiteLocal() const; + /// Returns true iff the address is a site local unicast address. + /// + /// IPv4 site local addresses are in on of the 10.0.0.0/24, + /// 192.168.0.0/16 or 172.16.0.0 to 172.31.255.255 ranges. + /// + /// Originally, IPv6 site-local addresses had FEC0/10 (1111 1110 11) + /// prefix (RFC 4291), followed by 38 zeros. Interfaces using + /// this mask are supported, but obsolete; RFC 4193 prescribes + /// fc00::/7 (1111 110) as local unicast prefix. + + bool isIPv4Compatible() const; + /// Returns true iff the address is IPv4 compatible. + /// + /// For IPv4 addresses, this is always true. + /// + /// For IPv6, the address must be in the ::x:x range (the + /// first 96 bits are zero). + + bool isIPv4Mapped() const; + /// Returns true iff the address is an IPv4 mapped IPv6 address. + /// + /// For IPv4 addresses, this is always true. + /// + /// For IPv6, the address must be in the ::FFFF:x:x range. + + bool isWellKnownMC() const; + /// Returns true iff the address is a well-known multicast address. + /// + /// For IPv4, well-known multicast addresses are in the + /// 224.0.0.0/8 range. + /// + /// For IPv6, well-known multicast addresses are in the + /// FF0x:x:x:x:x:x:x:x range. + + bool isNodeLocalMC() const; + /// Returns true iff the address is a node-local multicast address. + /// + /// IPv4 does not support node-local addresses, thus the result is + /// always false for an IPv4 address. + /// + /// For IPv6, node-local multicast addresses are in the + /// FFx1:x:x:x:x:x:x:x range. + + bool isLinkLocalMC() const; + /// Returns true iff the address is a link-local multicast address. + /// + /// For IPv4, link-local multicast addresses are in the + /// 224.0.0.0/24 range. Note that this overlaps with the range for well-known + /// multicast addresses. + /// + /// For IPv6, link-local multicast addresses are in the + /// FFx2:x:x:x:x:x:x:x range. + + bool isSiteLocalMC() const; + /// Returns true iff the address is a site-local multicast address. + /// + /// For IPv4, site local multicast addresses are in the + /// 239.255.0.0/16 range. + /// + /// For IPv6, site-local multicast addresses are in the + /// FFx5:x:x:x:x:x:x:x range. + + bool isOrgLocalMC() const; + /// Returns true iff the address is a organization-local multicast address. + /// + /// For IPv4, organization-local multicast addresses are in the + /// 239.192.0.0/16 range. + /// + /// For IPv6, organization-local multicast addresses are in the + /// FFx8:x:x:x:x:x:x:x range. + + bool isGlobalMC() const; + /// Returns true iff the address is a global multicast address. + /// + /// For IPv4, global multicast addresses are in the + /// 224.0.1.0 to 238.255.255.255 range. + /// + /// For IPv6, global multicast addresses are in the + /// FFxF:x:x:x:x:x:x:x range. + + bool operator == (const IPAddress& addr) const; + bool operator != (const IPAddress& addr) const; + bool operator < (const IPAddress& addr) const; + bool operator <= (const IPAddress& addr) const; + bool operator > (const IPAddress& addr) const; + bool operator >= (const IPAddress& addr) const; + IPAddress operator & (const IPAddress& addr) const; + IPAddress operator | (const IPAddress& addr) const; + IPAddress operator ^ (const IPAddress& addr) const; + IPAddress operator ~ () const; + + poco_socklen_t length() const; + /// Returns the length in bytes of the internal socket address structure. + + const void* addr() const; + /// Returns the internal address structure. + + int af() const; + /// Returns the address family (AF_INET or AF_INET6) of the address. + + unsigned prefixLength() const; + /// Returns the prefix length. + + void mask(const IPAddress& mask); + /// Masks the IP address using the given netmask, which is usually + /// a IPv4 subnet mask. Only supported for IPv4 addresses. + /// + /// The new address is (address & mask). + + void mask(const IPAddress& mask, const IPAddress& set); + /// Masks the IP address using the given netmask, which is usually + /// a IPv4 subnet mask. Only supported for IPv4 addresses. + /// + /// The new address is (address & mask) | (set & ~mask). + + static IPAddress parse(const std::string& addr); + /// Creates an IPAddress from the string containing + /// an IP address in presentation format (dotted decimal + /// for IPv4, hex string for IPv6). + /// + /// Depending on the format of addr, either an IPv4 or + /// an IPv6 address is created. + /// + /// See toString() for details on the supported formats. + /// + /// Throws an InvalidAddressException if the address cannot be parsed. + + static bool tryParse(const std::string& addr, IPAddress& result); + /// Tries to interpret the given address string as an + /// IP address in presentation format (dotted decimal + /// for IPv4, hex string for IPv6). + /// + /// Returns true and stores the IPAddress in result if the + /// string contains a valid address. + /// + /// Returns false and leaves result unchanged otherwise. + + static IPAddress wildcard(Family family = IPv4); + /// Returns a wildcard IPv4 or IPv6 address (0.0.0.0). + + static IPAddress broadcast(); + /// Returns a broadcast IPv4 address (255.255.255.255). + + enum + { + MAX_ADDRESS_LENGTH = +#if defined(POCO_HAVE_IPv6) + sizeof(struct in6_addr) +#else + sizeof(struct in_addr) +#endif + /// Maximum length in bytes of a socket address. + }; + +private: + typedef Poco::Net::Impl::IPAddressImpl Impl; + typedef Poco::AutoPtr Ptr; + + Ptr pImpl() const; + void newIPv4(); + void newIPv4(const void* hostAddr); + void newIPv4(unsigned prefix); +#if defined(POCO_HAVE_IPv6) + void newIPv6(); + void newIPv6(const void* hostAddr); + void newIPv6(const void* hostAddr, Poco::UInt32 scope); + void newIPv6(unsigned prefix); +#endif + Ptr _pImpl; +}; + + +// +// inlines +// +inline IPAddress::Ptr IPAddress::pImpl() const +{ + if (_pImpl) return _pImpl; + throw NullPointerException("IPaddress implementation pointer is NULL."); +} + + +inline void IPAddress::newIPv4() +{ + _pImpl = new Poco::Net::Impl::IPv4AddressImpl; +} + + +inline void IPAddress::newIPv4(const void* hostAddr) +{ + _pImpl = new Poco::Net::Impl::IPv4AddressImpl(hostAddr); +} + + +inline void IPAddress::newIPv4(unsigned prefix) +{ + _pImpl = new Poco::Net::Impl::IPv4AddressImpl(prefix); +} + + +#if defined(POCO_HAVE_IPv6) + + +inline void IPAddress::newIPv6() +{ + _pImpl = new Poco::Net::Impl::IPv6AddressImpl; +} + + +inline void IPAddress::newIPv6(const void* hostAddr) +{ + _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr); +} + + +inline void IPAddress::newIPv6(const void* hostAddr, Poco::UInt32 scope) +{ + _pImpl = new Poco::Net::Impl::IPv6AddressImpl(hostAddr, scope); +} + + +inline void IPAddress::newIPv6(unsigned prefix) +{ + _pImpl = new Poco::Net::Impl::IPv6AddressImpl(prefix); +} + + +#endif // POCO_HAVE_IPv6 + + +} } // namespace Poco::Net + + +Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::IPAddress& value); +Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::IPAddress& value); +Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::IPAddress& addr); + + +#endif // Net_IPAddress_INCLUDED diff --git a/include/Poco/Poco/Net/IPAddressImpl.h b/include/Poco/Poco/Net/IPAddressImpl.h new file mode 100644 index 00000000..17843556 --- /dev/null +++ b/include/Poco/Poco/Net/IPAddressImpl.h @@ -0,0 +1,179 @@ +// +// IPAddressImpl.h +// +// Library: Net +// Package: NetCore +// Module: IPAddressImpl +// +// Definition of the IPAddressImpl class. +// +// Copyright (c) 2005-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_IPAddressImpl_INCLUDED +#define Net_IPAddressImpl_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/RefCountedObject.h" +#include + + +namespace Poco { +namespace Net { +namespace Impl { + + +class IPAddressImpl : public Poco::RefCountedObject +{ +public: + using Family = AddressFamily::Family; + + virtual ~IPAddressImpl(); + + virtual IPAddressImpl* clone() const = 0; + virtual std::string toString() const = 0; + virtual poco_socklen_t length() const = 0; + virtual const void* addr() const = 0; + virtual Family family() const = 0; + virtual int af() const = 0; + virtual Poco::UInt32 scope() const = 0; + virtual bool isWildcard() const = 0; + virtual bool isBroadcast() const = 0; + virtual bool isLoopback() const = 0; + virtual bool isMulticast() const = 0; + virtual bool isLinkLocal() const = 0; + virtual bool isSiteLocal() const = 0; + virtual bool isIPv4Mapped() const = 0; + virtual bool isIPv4Compatible() const = 0; + virtual bool isWellKnownMC() const = 0; + virtual bool isNodeLocalMC() const = 0; + virtual bool isLinkLocalMC() const = 0; + virtual bool isSiteLocalMC() const = 0; + virtual bool isOrgLocalMC() const = 0; + virtual bool isGlobalMC() const = 0; + virtual void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet) = 0; + virtual unsigned prefixLength() const = 0; + +protected: + IPAddressImpl(); + +private: + IPAddressImpl(const IPAddressImpl&); + IPAddressImpl& operator = (const IPAddressImpl&); +}; + + +// +// IPv4AddressImpl +// + +class IPv4AddressImpl: public IPAddressImpl +{ +public: + IPv4AddressImpl(); + IPv4AddressImpl(const void* addr); + IPv4AddressImpl(unsigned prefix); + IPv4AddressImpl(const IPv4AddressImpl& addr); + IPv4AddressImpl& operator = (const IPv4AddressImpl&); + std::string toString() const; + poco_socklen_t length() const; + const void* addr() const; + Family family() const; + int af() const; + unsigned prefixLength() const; + Poco::UInt32 scope() const; + bool isWildcard() const; + bool isBroadcast() const; + bool isLoopback() const; + bool isMulticast() const; + bool isLinkLocal() const; + bool isSiteLocal() const; + bool isIPv4Compatible() const; + bool isIPv4Mapped() const; + bool isWellKnownMC() const; + bool isNodeLocalMC() const; + bool isLinkLocalMC() const; + bool isSiteLocalMC() const; + bool isOrgLocalMC() const; + bool isGlobalMC() const; + static IPv4AddressImpl parse(const std::string& addr); + void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet); + IPAddressImpl* clone() const; + IPv4AddressImpl operator & (const IPv4AddressImpl& addr) const; + IPv4AddressImpl operator | (const IPv4AddressImpl& addr) const; + IPv4AddressImpl operator ^ (const IPv4AddressImpl& addr) const; + IPv4AddressImpl operator ~ () const; + bool operator == (const IPv4AddressImpl& addr) const; + bool operator != (const IPv4AddressImpl& addr) const; + +private: + struct in_addr _addr; +}; + + +#if defined(POCO_HAVE_IPv6) + + +// +// IPv6AddressImpl +// + +class IPv6AddressImpl: public IPAddressImpl +{ +public: + IPv6AddressImpl(); + IPv6AddressImpl(const void* addr); + IPv6AddressImpl(const void* addr, Poco::UInt32 scope); + IPv6AddressImpl(unsigned prefix); + std::string toString() const; + poco_socklen_t length() const; + const void* addr() const; + Family family() const; + int af() const; + unsigned prefixLength() const; + Poco::UInt32 scope() const; + bool isWildcard() const; + bool isBroadcast() const; + bool isLoopback() const; + bool isMulticast() const; + bool isLinkLocal() const; + bool isSiteLocal() const; + bool isIPv4Compatible() const; + bool isIPv4Mapped() const; + bool isWellKnownMC() const; + bool isNodeLocalMC() const; + bool isLinkLocalMC() const; + bool isSiteLocalMC() const; + bool isOrgLocalMC() const; + bool isGlobalMC() const; + static IPv6AddressImpl parse(const std::string& addr); + void mask(const IPAddressImpl* pMask, const IPAddressImpl* pSet); + IPAddressImpl* clone() const; + IPv6AddressImpl operator & (const IPv6AddressImpl& addr) const; + IPv6AddressImpl operator | (const IPv6AddressImpl& addr) const; + IPv6AddressImpl operator ^ (const IPv6AddressImpl& addr) const; + IPv6AddressImpl operator ~ () const; + bool operator == (const IPv6AddressImpl& addr) const; + bool operator != (const IPv6AddressImpl& addr) const; + IPv6AddressImpl(const IPv6AddressImpl& addr); + IPv6AddressImpl& operator = (const IPv6AddressImpl&); + +private: + struct in6_addr _addr; + unsigned int _scope; +}; + + +#endif // POCO_HAVE_IPv6 + + +} } } // namespace Poco::Net::Impl + + +#endif // Net_IPAddressImpl_INCLUDED diff --git a/include/Poco/Poco/Net/InvalidCertificateHandler.h b/include/Poco/Poco/Net/InvalidCertificateHandler.h new file mode 100644 index 00000000..8cf538e5 --- /dev/null +++ b/include/Poco/Poco/Net/InvalidCertificateHandler.h @@ -0,0 +1,82 @@ +// +// InvalidCertificateHandler.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: InvalidCertificateHandler +// +// Definition of the InvalidCertificateHandler class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_InvalidCertificateHandler_INCLUDED +#define NetSSL_InvalidCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class VerificationErrorArgs; + + +class NetSSL_API InvalidCertificateHandler + /// A InvalidCertificateHandler is invoked whenever an error occurs verifying the certificate. It allows the user + /// to inspect and accept/reject the certificate. + /// One can install one's own InvalidCertificateHandler by implementing this interface. Note that + /// in the implementation file of the subclass the following code must be present (assuming you use the namespace My_API + /// and the name of your handler class is MyGuiHandler): + /// + /// #include "Poco/Net/CertificateHandlerFactory.h" + /// ... + /// POCO_REGISTER_CHFACTORY(My_API, MyGuiHandler) + /// + /// One can either set the handler directly in the startup code of the main method of ones application by calling + /// + /// SSLManager::instance().initialize(mypassphraseHandler, myguiHandler, mySSLContext) + /// + /// or in case one uses Poco::Util::Application one can rely on an XML configuration and put the following entry + /// under the path openSSL.invalidCertificateHandler: + /// + /// + /// MyGuiHandler + /// + /// [...] // Put optional config params for the handler here + /// + /// + /// + /// Note that the name of the InvalidCertificateHandler must be same as the one provided to the POCO_REGISTER_CHFACTORY macro. +{ +public: + InvalidCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the InvalidCertificateHandler. + /// + /// Set handleErrorsOnServerSide to true if the certificate handler is used on the server side. + /// Automatically registers at one of the SSLManager::VerificationError events. + + virtual ~InvalidCertificateHandler(); + /// Destroys the InvalidCertificateHandler. + + virtual void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert) = 0; + /// Receives the questionable certificate in parameter errorCert. If one wants to accept the + /// certificate, call errorCert.setIgnoreError(true). + +protected: + bool _handleErrorsOnServerSide; + /// Stores if the certificate handler gets invoked by the server (i.e. a client certificate is wrong) + /// or the client (a server certificate is wrong) +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_InvalidCertificateHandler_INCLUDED diff --git a/include/Poco/Poco/Net/MessageHeader.h b/include/Poco/Poco/Net/MessageHeader.h new file mode 100644 index 00000000..f36ad51e --- /dev/null +++ b/include/Poco/Poco/Net/MessageHeader.h @@ -0,0 +1,169 @@ +// +// MessageHeader.h +// +// Library: Net +// Package: Messages +// Module: MessageHeader +// +// Definition of the MessageHeader class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_MessageHeader_INCLUDED +#define Net_MessageHeader_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/NameValueCollection.h" +#include +#include +#include + + +namespace Poco { +namespace Net { + + +class Net_API MessageHeader: public NameValueCollection + /// A collection of name-value pairs that are used in + /// various internet protocols like HTTP and SMTP. + /// + /// The name is case-insensitive. + /// + /// There can be more than one name-value pair with the + /// same name. + /// + /// MessageHeader supports writing and reading the + /// header data in RFC 2822 format. + /// + /// The maximum number of fields can be restricted + /// by calling setFieldLimit(). This is useful to + /// defend against certain kinds of denial-of-service + /// attacks. The limit is only enforced when parsing + /// header fields from a stream, not when programmatically + /// adding them. The default limit is 100. +{ +public: + MessageHeader(); + /// Creates the MessageHeader. + + MessageHeader(const MessageHeader& messageHeader); + /// Creates the MessageHeader by copying + /// another one. + + virtual ~MessageHeader(); + /// Destroys the MessageHeader. + + MessageHeader& operator = (const MessageHeader& messageHeader); + /// Assigns the content of another MessageHeader. + + virtual void write(std::ostream& ostr) const; + /// Writes the message header to the given output stream. + /// + /// The format is one name-value pair per line, with + /// name and value separated by a colon and lines + /// delimited by a carriage return and a linefeed + /// character. See RFC 2822 for details. + + virtual void read(std::istream& istr); + /// Reads the message header from the given input stream. + /// + /// See write() for the expected format. + /// Also supported is folding of field content, according + /// to section 2.2.3 of RFC 2822. + /// + /// Reading stops at the first empty line (a line only + /// containing \r\n or \n), as well as at the end of + /// the stream. + /// + /// Some basic sanity checking of the input stream is + /// performed. + /// + /// Throws a MessageException if the input stream is + /// malformed. + + int getFieldLimit() const; + /// Returns the maximum number of header fields + /// allowed. + /// + /// See setFieldLimit() for more information. + + void setFieldLimit(int limit); + /// Sets the maximum number of header fields + /// allowed. This limit is used to defend certain + /// kinds of denial-of-service attacks. + /// Specify 0 for unlimited (not recommended). + /// + /// The default limit is 100. + + bool hasToken(const std::string& fieldName, const std::string& token) const; + /// Returns true iff the field with the given fieldName contains + /// the given token. Tokens in a header field are expected to be + /// comma-separated and are case insensitive. + + static void splitElements(const std::string& s, std::vector& elements, bool ignoreEmpty = true); + /// Splits the given string into separate elements. Elements are expected + /// to be separated by commas. + /// + /// For example, the string + /// text/plain; q=0.5, text/html, text/x-dvi; q=0.8 + /// is split into the elements + /// text/plain; q=0.5 + /// text/html + /// text/x-dvi; q=0.8 + /// + /// Commas enclosed in double quotes do not split elements. + /// + /// If ignoreEmpty is true, empty elements are not returned. + + static void splitParameters(const std::string& s, std::string& value, NameValueCollection& parameters); + /// Splits the given string into a value and a collection of parameters. + /// Parameters are expected to be separated by semicolons. + /// + /// Enclosing quotes of parameter values are removed. + /// + /// For example, the string + /// multipart/mixed; boundary="MIME_boundary_01234567" + /// is split into the value + /// multipart/mixed + /// and the parameter + /// boundary -> MIME_boundary_01234567 + + static void splitParameters(const std::string::const_iterator& begin, const std::string::const_iterator& end, NameValueCollection& parameters); + /// Splits the given string into a collection of parameters. + /// Parameters are expected to be separated by semicolons. + /// + /// Enclosing quotes of parameter values are removed. + + static void quote(const std::string& value, std::string& result, bool allowSpace = false); + /// Checks if the value must be quoted. If so, the value is + /// appended to result, enclosed in double-quotes. + /// Otherwise, the value is appended to result as-is. + + static void decodeRFC2047(const std::string& ins, std::string& outs, const std::string& charset = "UTF-8"); + static std::string decodeWord(const std::string& text, const std::string& charset = "UTF-8"); + /// Decode RFC2047 string. + + +private: + enum Limits + /// Limits for basic sanity checks when reading a header + { + MAX_NAME_LENGTH = 256, + MAX_VALUE_LENGTH = 8192, + DFL_FIELD_LIMIT = 100 + }; + + int _fieldLimit; +}; + + +} } // namespace Poco::Net + + +#endif // Net_MessageHeader_INCLUDED diff --git a/include/Poco/Poco/Net/NTLMCredentials.h b/include/Poco/Poco/Net/NTLMCredentials.h new file mode 100644 index 00000000..63081e1c --- /dev/null +++ b/include/Poco/Poco/Net/NTLMCredentials.h @@ -0,0 +1,181 @@ +// +// NTLMCredentials.h +// +// Library: Net +// Package: NTLM +// Module: NTLMCredentials +// +// Definition of the NTLMCredentials class. +// +// Copyright (c) 2019, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_NTLMCredentials_INCLUDED +#define Net_NTLMCredentials_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/BinaryReader.h" +#include "Poco/BinaryWriter.h" +#include + + +namespace Poco { +namespace Net { + + +class Net_API NTLMCredentials + /// This is a utility class for working with + /// NTLMv2 Authentication. + /// + /// Note: This implementation is based on the + /// "The NTLM Authentication Protocol and Security Support Provider" + /// document written by Eric Glass and avilable from + /// http://davenport.sourceforge.net/ntlm.html + /// and the NT LAN Manager (NTLM) Authentication Protocol + /// [MS-NLMP] document by Microsoft. +{ +public: + enum + { + NTLM_MESSAGE_TYPE_NEGOTIATE = 0x01, + NTLM_MESSAGE_TYPE_CHALLENGE = 0x02, + NTLM_MESSAGE_TYPE_AUTHENTICATE = 0x03 + }; + + enum + { + NTLM_FLAG_NEGOTIATE_UNICODE = 0x00000001, + NTLM_FLAG_NEGOTIATE_OEM = 0x00000002, + NTLM_FLAG_REQUEST_TARGET = 0x00000004, + NTLM_FLAG_NEGOTIATE_NTLM = 0x00000200, + NTLM_FLAG_DOMAIN_SUPPLIED = 0x00001000, + NTLM_FLAG_WORKST_SUPPLIED = 0x00002000, + NTLM_FLAG_NEGOTIATE_LOCAL = 0x00004000, + NTLM_FLAG_NEGOTIATE_ALWAYS_SIGN = 0x00008000, + NTLM_FLAG_NEGOTIATE_NTLM2_KEY = 0x00080000, + NTLM_FLAG_TARGET_DOMAIN = 0x00010000, + NTLM_FLAG_TARGET_SERVER = 0x00020000, + NTLM_FLAG_TARGET_SHARE = 0x00040000, + NTLM_FLAG_NEGOTIATE_TARGET = 0x00800000, + NTLM_FLAG_NEGOTIATE_128 = 0x20000000, + NTLM_FLAG_NEGOTIATE_56 = 0x80000000 + }; + + struct NegotiateMessage + /// This message is sent from the client to initiate NTLM authentication. + { + NegotiateMessage(): flags(0) {} + + Poco::UInt32 flags; + std::string domain; + std::string workstation; + }; + + struct ChallengeMessage + /// This message is sent back by the server and contains the NTLM challenge. + { + ChallengeMessage(): flags(0) {} + + Poco::UInt32 flags; + std::vector challenge; + std::string target; + std::vector targetInfo; + }; + + struct AuthenticateMessage + /// This message is sent from the client to authenticate itself by providing + /// a response to the server challenge. + { + AuthenticateMessage(): flags(0) {} + + Poco::UInt32 flags; + std::vector lmResponse; + std::vector ntlmResponse; + std::string target; + std::string username; + std::string workstation; + }; + + struct BufferDesc + { + BufferDesc(): + length(0), + reserved(0), + offset(0) + { + } + + BufferDesc(Poco::UInt16 len, Poco::UInt32 off): + length(len), + reserved(len), + offset(off) + { + } + + Poco::UInt16 length; + Poco::UInt16 reserved; + Poco::UInt32 offset; + }; + + static std::vector createNonce(); + /// Creates an 8-byte client nonce for NTLM authentication. + + static Poco::UInt64 createTimestamp(); + /// Creates the NTLM timestamp in tenths of a microsecond since January 1, 1601, + /// using the current system time. + + static std::vector createPasswordHash(const std::string& password); + /// Creates the NTLM password hash (MD4 of UTF-16-converted password). + + static std::vector createNTLMv2Hash(const std::string& username, const std::string& target, const std::string& password); + /// Creates the NTLMv2 hash, which is the HMAC-MD5 of the concatenated UTF-16 uppercase username and target, + /// using the password hash as HMAC passphrase. + + static std::vector createLMv2Response(const std::vector& ntlm2Hash, const std::vector& challenge, const std::vector& nonce); + /// Creates the LMv2 response by computing the HMAC-MD5 of the challenge and nonce, using the + /// ntlm2Hash (see createNTLMv2Hash()) as HMAC passphrase. + + static std::vector createNTLMv2Response(const std::vector& ntlm2Hash, const std::vector& challenge, const std::vector& nonce, const std::vector& targetInfo, Poco::UInt64 timestamp); + /// Creates the NTLMv2 response by creating the "blob" and prepending its HMAC-MD5, using the ntlm2Hash as HMAC passphrase. + + static std::vector formatNegotiateMessage(const NegotiateMessage& message); + /// Creates the NTLM Type 1 Negotiate message used for initiating NTLM authentication from the client. + + static bool parseChallengeMessage(const unsigned char* buffer, std::size_t size, ChallengeMessage& message); + /// Parses a NTLM Type 2 Challenge message. + /// + /// Returns true if the message was parsed successfully, otherwise false. + + static std::vector formatAuthenticateMessage(const AuthenticateMessage& message); + /// Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge. + + static void readBufferDesc(Poco::BinaryReader& reader, BufferDesc& desc); + /// Reads a buffer descriptor. + + static void writeBufferDesc(Poco::BinaryWriter& writer, const BufferDesc& desc); + /// Writes a buffer descriptor. + + static void splitUsername(const std::string& usernameAndDomain, std::string& username, std::string& domain); + /// Splits a username containing a domain into plain username and domain. + /// Supported formats are \ and @. + + static std::string toBase64(const std::vector& buffer); + /// Converts the buffer to a base64-encoded string. + + static std::vector fromBase64(const std::string& base64); + /// Decodes the given base64-encoded string. + + static const std::string NTLMSSP; + /// Message signature string. +}; + + +} } // namespace Poco::Net + + +#endif // Net_NTLMCredentials_INCLUDED diff --git a/include/Poco/Poco/Net/NameValueCollection.h b/include/Poco/Poco/Net/NameValueCollection.h new file mode 100644 index 00000000..a2219afa --- /dev/null +++ b/include/Poco/Poco/Net/NameValueCollection.h @@ -0,0 +1,132 @@ +// +// NameValueCollection.h +// +// Library: Net +// Package: Messages +// Module: NameValueCollection +// +// Definition of the NameValueCollection class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_NameValueCollection_INCLUDED +#define Net_NameValueCollection_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/String.h" +#include "Poco/ListMap.h" +#include + + +namespace Poco { +namespace Net { + + +class Net_API NameValueCollection + /// A collection of name-value pairs that are used in + /// various internet protocols like HTTP and SMTP. + /// + /// The name is case-insensitive. + /// + /// There can be more than one name-value pair with the + /// same name. +{ +public: + using HeaderMap = Poco::ListMap; + using Iterator = HeaderMap::Iterator; + using ConstIterator = HeaderMap::ConstIterator; + + NameValueCollection(); + /// Creates an empty NameValueCollection. + + NameValueCollection(const NameValueCollection& nvc); + /// Creates a NameValueCollection by copying another one. + + NameValueCollection(NameValueCollection&& nvc) noexcept; + /// Creates a NameValueCollection by moving another one. + + virtual ~NameValueCollection(); + /// Destroys the NameValueCollection. + + NameValueCollection& operator = (const NameValueCollection& nvc); + /// Assigns the name-value pairs of another NameValueCollection to this one. + + NameValueCollection& operator = (NameValueCollection&& nvc) noexcept; + /// Moves the name-value pairs of another NameValueCollection to this one. + + void swap(NameValueCollection& nvc); + /// Swaps the NameValueCollection with another one. + + const std::string& operator [] (const std::string& name) const; + /// Returns the value of the (first) name-value pair with the given name. + /// + /// Throws a NotFoundException if the name-value pair does not exist. + + void set(const std::string& name, const std::string& value); + /// Sets the value of the (first) name-value pair with the given name. + + void add(const std::string& name, const std::string& value); + /// Adds a new name-value pair with the given name and value. + + const std::string& get(const std::string& name) const; + /// Returns the value of the first name-value pair with the given name. + /// + /// Throws a NotFoundException if the name-value pair does not exist. + + const std::string& get(const std::string& name, const std::string& defaultValue) const; + /// Returns the value of the first name-value pair with the given name. + /// If no value with the given name has been found, the defaultValue is returned. + + bool has(const std::string& name) const; + /// Returns true if there is at least one name-value pair + /// with the given name. + + ConstIterator find(const std::string& name) const; + /// Returns an iterator pointing to the first name-value pair + /// with the given name. + + ConstIterator begin() const; + /// Returns an iterator pointing to the begin of + /// the name-value pair collection. + + ConstIterator end() const; + /// Returns an iterator pointing to the end of + /// the name-value pair collection. + + bool empty() const; + /// Returns true iff the header does not have any content. + + std::size_t size() const; + /// Returns the number of name-value pairs in the + /// collection. + + void erase(const std::string& name); + /// Removes all name-value pairs with the given name. + + void clear(); + /// Removes all name-value pairs and their values. + +private: + HeaderMap _map; +}; + + +// +// inlines +// +inline void swap(NameValueCollection& nvc1, NameValueCollection& nvc2) +{ + nvc1.swap(nvc2); +} + + +} } // namespace Poco::Net + + +#endif // Net_NameValueCollection_INCLUDED diff --git a/include/Poco/Poco/Net/Net.h b/include/Poco/Poco/Net/Net.h new file mode 100644 index 00000000..2e9735ab --- /dev/null +++ b/include/Poco/Poco/Net/Net.h @@ -0,0 +1,127 @@ +// +// Net.h +// +// Library: Net +// Package: NetCore +// Module: Net +// +// Basic definitions for the Poco Net library. +// This file must be the first file included by every other Net +// header file. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_Net_INCLUDED +#define Net_Net_INCLUDED + + +#include "Poco/Foundation.h" + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the Net_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// Net_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if defined(_WIN32) && defined(POCO_DLL) + #if defined(Net_EXPORTS) + #define Net_API __declspec(dllexport) + #else + #define Net_API __declspec(dllimport) + #endif +#endif + + +#if !defined(Net_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define Net_API __attribute__ ((visibility ("default"))) + #else + #define Net_API + #endif +#endif + + +// +// Automatically link Net library. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Net_EXPORTS) + #pragma comment(lib, "PocoNet" POCO_LIB_SUFFIX) + #endif +#endif + + +// Default to enabled IPv6 support if not explicitly disabled +#if !defined(POCO_NET_NO_IPv6) && !defined (POCO_HAVE_IPv6) + #define POCO_HAVE_IPv6 +#elif defined(POCO_NET_NO_IPv6) && defined (POCO_HAVE_IPv6) + #undef POCO_HAVE_IPv6 +#endif // POCO_NET_NO_IPv6, POCO_HAVE_IPv6 + + +namespace Poco { +namespace Net { + + +void Net_API initializeNetwork(); + /// Initialize the network subsystem. + /// (Windows only, no-op elsewhere) + + +void Net_API uninitializeNetwork(); + /// Uninitialize the network subsystem. + /// (Windows only, no-op elsewhere) + + +std::string htmlize(const std::string& str); + /// Returns a copy of html with reserved HTML + /// characters (<, >, ", &) propery escaped. + + +} } // namespace Poco::Net + + +// +// Automate network initialization (only relevant on Windows). +// + +#if defined(POCO_OS_FAMILY_WINDOWS) && !defined(POCO_NO_AUTOMATIC_LIB_INIT) && !defined(__GNUC__) + +extern "C" const struct Net_API NetworkInitializer pocoNetworkInitializer; + +#if defined(Net_EXPORTS) + #if defined(_WIN64) || (defined(_WIN32_WCE) && !defined(x86)) + #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:"#s)) + #elif defined(_WIN32) + #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/export:_"#s)) + #endif +#else // !Net_EXPORTS + #if defined(_WIN64) || (defined(_WIN32_WCE) && !defined(x86)) + #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:"#s)) + #elif defined(_WIN32) + #define POCO_NET_FORCE_SYMBOL(s) __pragma(comment (linker, "/include:_"#s)) + #endif +#endif // Net_EXPORTS + +POCO_NET_FORCE_SYMBOL(pocoNetworkInitializer) + +#endif // POCO_OS_FAMILY_WINDOWS + + +// +// Define POCO_NET_HAS_INTERFACE for platforms that have network interface detection implemented. +// +#if defined(POCO_OS_FAMILY_WINDOWS) || (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) || defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_QNX) + #define POCO_NET_HAS_INTERFACE +#endif + + +#endif // Net_Net_INCLUDED diff --git a/include/Poco/Poco/Net/NetSSL.h b/include/Poco/Poco/Net/NetSSL.h new file mode 100644 index 00000000..ae793fde --- /dev/null +++ b/include/Poco/Poco/Net/NetSSL.h @@ -0,0 +1,94 @@ +// +// NetSSL.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: OpenSSL +// +// Basic definitions for the Poco OpenSSL library. +// This file must be the first file included by every other OpenSSL +// header file. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_NetSSL_INCLUDED +#define NetSSL_NetSSL_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Crypto/Crypto.h" + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the NetSSL_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// NetSSL_API functions as being imported from a DLL, wheras this DLL sees symbols +// defined with this macro as being exported. +// +#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(POCO_DLL) + #if defined(NetSSL_EXPORTS) + #define NetSSL_API __declspec(dllexport) + #else + #define NetSSL_API __declspec(dllimport) + #endif +#endif + + +#if !defined(NetSSL_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define NetSSL_API __attribute__ ((visibility ("default"))) + #else + #define NetSSL_API + #endif +#endif + + +// +// Automatically link NetSSL and OpenSSL libraries. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) + #if !defined(NetSSL_EXPORTS) + #pragma comment(lib, "PocoNetSSL" POCO_LIB_SUFFIX) + #endif + #endif // POCO_NO_AUTOMATIC_LIBS +#endif + + +namespace Poco { +namespace Net { + + +void NetSSL_API initializeSSL(); + /// Initialize the NetSSL library, as well as the underlying OpenSSL + /// libraries, by calling Poco::Crypto::OpenSSLInitializer::initialize(). + /// + /// Should be called before using any class from the NetSSL library. + /// The NetSSL will be initialized automatically, through + /// Poco::Crypto::OpenSSLInitializer instances or similar mechanisms + /// when creating Context or SSLManager instances. + /// However, it is recommended to call initializeSSL() + /// in any case at application startup. + /// + /// Can be called multiple times; however, for every call to + /// initializeSSL(), a matching call to uninitializeSSL() + /// must be performed. + + +void NetSSL_API uninitializeSSL(); + /// Uninitializes the NetSSL library by calling + /// Poco::Crypto::OpenSSLInitializer::uninitialize() and + /// shutting down the SSLManager. + + +} } // namespace Poco::Net + + +#endif // NetSSL_NetSSL_INCLUDED diff --git a/include/Poco/Poco/Net/PrivateKeyFactory.h b/include/Poco/Poco/Net/PrivateKeyFactory.h new file mode 100644 index 00000000..9c0fa37f --- /dev/null +++ b/include/Poco/Poco/Net/PrivateKeyFactory.h @@ -0,0 +1,95 @@ +// +// PrivateKeyFactory.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: PrivateKeyFactory +// +// Definition of the PrivateKeyFactory class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_PrivateKeyFactory_INCLUDED +#define NetSSL_PrivateKeyFactory_INCLUDED + + +#include "Poco/Net/NetSSL.h" + + +namespace Poco { +namespace Net { + + +class PrivateKeyPassphraseHandler; + + +class NetSSL_API PrivateKeyFactory + /// A PrivateKeyFactory is responsible for creating PrivateKeyPassphraseHandlers. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_KEYFACTORY(namespace, PrivateKeyPassphraseHandlerName) + /// instead (see the documentation of PrivateKeyPassphraseHandler for an example). +{ +public: + PrivateKeyFactory(); + /// Creates the PrivateKeyFactory. + + virtual ~PrivateKeyFactory(); + /// Destroys the PrivateKeyFactory. + + virtual PrivateKeyPassphraseHandler* create(bool onServer) const = 0; + /// Creates a new PrivateKeyPassphraseHandler +}; + + +class NetSSL_API PrivateKeyFactoryRegistrar + /// Registrar class which automatically registers PrivateKeyFactories at the PrivateKeyFactoryMgr. + /// + /// You don't need to access this class directly. Use the macro + /// POCO_REGISTER_KEYFACTORY(namespace, PrivateKeyPassphraseHandlerName) + /// instead (see the documentation of PrivateKeyPassphraseHandler for an example). + +{ +public: + PrivateKeyFactoryRegistrar(const std::string& name, PrivateKeyFactory* pFactory); + /// Registers the PrivateKeyFactory with the given name at the factory manager. + + virtual ~PrivateKeyFactoryRegistrar(); + /// Destroys the PrivateKeyFactoryRegistrar. +}; + + +template +class PrivateKeyFactoryImpl: public Poco::Net::PrivateKeyFactory +{ +public: + PrivateKeyFactoryImpl() + { + } + + ~PrivateKeyFactoryImpl() + { + } + + PrivateKeyPassphraseHandler* create(bool server) const + { + return new T(server); + } +}; + + +} } // namespace Poco::Net + + +// DEPRECATED: register the factory directly at the FactoryMgr: +// Poco::Net::SSLManager::instance().privateKeyFactoryMgr().setFactory(name, new Poco::Net::PrivateKeyFactoryImpl()); +#define POCO_REGISTER_KEYFACTORY(API, PKCLS) \ + static Poco::Net::PrivateKeyFactoryRegistrar aRegistrar(std::string(#PKCLS), new Poco::Net::PrivateKeyFactoryImpl()); + + +#endif // NetSSL_PrivateKeyFactory_INCLUDED diff --git a/include/Poco/Poco/Net/PrivateKeyFactoryMgr.h b/include/Poco/Poco/Net/PrivateKeyFactoryMgr.h new file mode 100644 index 00000000..3186ea0a --- /dev/null +++ b/include/Poco/Poco/Net/PrivateKeyFactoryMgr.h @@ -0,0 +1,64 @@ +// +// PrivateKeyFactoryMgr.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: PrivateKeyFactoryMgr +// +// Definition of the PrivateKeyFactoryMgr class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_PrivateKeyFactoryMgr_INCLUDED +#define NetSSL_PrivateKeyFactoryMgr_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/PrivateKeyFactory.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_API PrivateKeyFactoryMgr + /// A PrivateKeyFactoryMgr manages all existing PrivateKeyFactories. +{ +public: + using FactoriesMap = std::map>; + + PrivateKeyFactoryMgr(); + /// Creates the PrivateKeyFactoryMgr. + + ~PrivateKeyFactoryMgr(); + /// Destroys the PrivateKeyFactoryMgr. + + void setFactory(const std::string& name, PrivateKeyFactory* pFactory); + /// Registers the factory. Class takes ownership of the pointer. + /// If a factory with the same name already exists, an exception is thrown. + + bool hasFactory(const std::string& name) const; + /// Returns true if for the given name a factory is already registered + + const PrivateKeyFactory* getFactory(const std::string& name) const; + /// Returns NULL if for the given name a factory does not exist, otherwise the factory is returned + + void removeFactory(const std::string& name); + /// Removes the factory from the manager. + +private: + FactoriesMap _factories; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_PrivateKeyFactoryMgr_INCLUDED diff --git a/include/Poco/Poco/Net/RejectCertificateHandler.h b/include/Poco/Poco/Net/RejectCertificateHandler.h new file mode 100644 index 00000000..b170ad50 --- /dev/null +++ b/include/Poco/Poco/Net/RejectCertificateHandler.h @@ -0,0 +1,48 @@ +// +// RejectCertificateHandler.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: RejectCertificateHandler +// +// Definition of the RejectCertificateHandler class. +// +// Copyright (c) 2006-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_RejectCertificateHandler_INCLUDED +#define NetSSL_RejectCertificateHandler_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/InvalidCertificateHandler.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_API RejectCertificateHandler: public InvalidCertificateHandler + /// A RejectCertificateHandler is invoked whenever an error + /// occurs verifying the certificate. It always rejects + /// the certificate. +{ +public: + RejectCertificateHandler(bool handleErrorsOnServerSide); + /// Creates the RejectCertificateHandler + + virtual ~RejectCertificateHandler(); + /// Destroys the RejectCertificateHandler. + + void onInvalidCertificate(const void* pSender, VerificationErrorArgs& errorCert); +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_RejectCertificateHandler_INCLUDED diff --git a/include/Poco/Poco/Net/SSLManager.h b/include/Poco/Poco/Net/SSLManager.h new file mode 100644 index 00000000..e834a582 --- /dev/null +++ b/include/Poco/Poco/Net/SSLManager.h @@ -0,0 +1,411 @@ +// +// SSLManager.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: SSLManager +// +// Definition of the SSLManager class. +// +// Copyright (c) 2006-2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_SSLManager_INCLUDED +#define NetSSL_SSLManager_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/VerificationErrorArgs.h" +#include "Poco/Net/Context.h" +#include "Poco/Net/PrivateKeyFactoryMgr.h" +#include "Poco/Net/CertificateHandlerFactoryMgr.h" +#include "Poco/Net/InvalidCertificateHandler.h" +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/BasicEvent.h" +#include "Poco/SharedPtr.h" +#include "Poco/Mutex.h" +#include +#if defined(OPENSSL_FIPS) && OPENSSL_VERSION_NUMBER < 0x010001000L +#include +#endif + + +namespace Poco { +namespace Net { + + +class Context; + + +class NetSSL_API SSLManager + /// SSLManager is a singleton for holding the default server/client + /// Context and handling callbacks for certificate verification errors + /// and private key passphrases. + /// + /// Proper initialization of SSLManager is critical. + /// + /// SSLManager can be initialized manually, by calling initializeServer() + /// and/or initializeClient(), or initialization can be automatic. In the latter + /// case, a Poco::Util::Application instance must be available and the required + /// configuration properties must be set (see below). + /// + /// Note that manual initialization must happen very early in the application, + /// before defaultClientContext() or defaultServerContext() are called. + /// + /// If defaultClientContext() and defaultServerContext() are never called + /// in an application, initialization of SSLManager can be omitted. + /// However, in this case, delegates for the ServerVerificationError, + /// ClientVerificationError and PrivateKeyPassphraseRequired events + /// must be registered. + /// + /// An exemplary documentation which sets either the server or client default context and creates + /// a PrivateKeyPassphraseHandler that reads the password from the XML file looks like this: + /// + /// + /// + /// + /// mycert.key + /// mycert.crt + /// rootcert.pem + /// none|relaxed|strict|once + /// 1..9 + /// true|false + /// ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH + /// true|false + /// + /// KeyFileHandler + /// + /// test + /// + /// + /// + /// ConsoleCertificateHandler + /// + /// true|false + /// someString + /// 0..n + /// 0..n + /// true|false + /// true|false + /// true|false + /// true|false + /// true|false + /// sslv2,sslv3,tlsv1,tlsv1_1,tlsv1_2,tlsv1_3 + /// dh.pem + /// prime256v1 + /// + /// false + /// + /// + /// + /// Following is a list of supported configuration properties. Property names must always + /// be prefixed with openSSL.server or openSSL.client. Some properties are only supported + /// for servers. + /// + /// - privateKeyFile (string): The path to the file containing the private key for the certificate + /// in PEM format (or containing both the private key and the certificate). + /// - certificateFile (string): The Path to the file containing the server's or client's certificate + /// in PEM format. Can be omitted if the the file given in privateKeyFile contains the certificate as well. + /// - caConfig (string): The path to the file or directory containing the trusted root certificates. + /// - verificationMode (string): Specifies whether and how peer certificates are validated (see + /// the Context class for details). Valid values are none, relaxed, strict, once. + /// - verificationDepth (integer, 1-9): Sets the upper limit for verification chain sizes. Verification + /// will fail if a certificate chain larger than this is encountered. + /// - loadDefaultCAFile (boolean): Specifies whether the builtin CA certificates from OpenSSL are used. + /// - cipherList (string): Specifies the supported ciphers in OpenSSL notation + /// (e.g. "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"). + /// - preferServerCiphers (bool): When choosing a cipher, use the server's preferences instead of the + /// client preferences. When not called, the SSL server will always follow the clients + /// preferences. When called, the SSL/TLS server will choose following its own + /// preferences. + /// - privateKeyPassphraseHandler.name (string): The name of the class (subclass of PrivateKeyPassphraseHandler) + /// used for obtaining the passphrase for accessing the private key. + /// - privateKeyPassphraseHandler.options.password (string): The password to be used by KeyFileHandler. + /// - invalidCertificateHandler.name: The name of the class (subclass of CertificateHandler) + /// used for confirming invalid certificates. + /// - cacheSessions (boolean): Enables or disables session caching. + /// - sessionIdContext (string): contains the application's unique session ID context, which becomes + /// part of each session identifier generated by the server. Can be an arbitrary sequence + /// of bytes with a maximum length of SSL_MAX_SSL_SESSION_ID_LENGTH. Should be specified + /// for a server to enable session caching. Should be specified even if session caching + /// is disabled to avoid problems with clients that request session caching (e.g. Firefox 3.6). + /// If not specified, defaults to ${application.name}. + /// - sessionCacheSize (integer): Sets the maximum size of the server session cache, in number of + /// sessions. The default size (according to OpenSSL documentation) is 1024*20, which may be too + /// large for many applications, especially on embedded platforms with limited memory. + /// Specifying a size of 0 will set an unlimited cache size. + /// - sessionTimeout (integer): Sets the timeout (in seconds) of cached sessions on the server. + /// - extendedVerification (boolean): Enable or disable the automatic post-connection + /// extended certificate verification. + /// - requireTLSv1 (boolean): Require a TLSv1 connection. + /// - requireTLSv1_1 (boolean): Require a TLSv1.1 connection. + /// - requireTLSv1_2 (boolean): Require a TLSv1.2 connection. + /// - requireTLSv1_3 (boolean): Require a TLSv1.3 connection + /// - disableProtocols (string): A comma-separated list of protocols that should be + /// disabled. Valid protocol names are sslv2, sslv3, tlsv1, tlsv1_1, tlsv1_2, tlsv1_3. + /// - dhParamsFile (string): Specifies a file containing Diffie-Hellman parameters. + /// If not specified or empty, the default parameters are used. + /// - ecdhCurve (string): Specifies the name of the curve to use for ECDH, based + /// on the curve names specified in RFC 4492. Defaults to "prime256v1". + /// - fips: Enable or disable OpenSSL FIPS mode. Only supported if the OpenSSL version + /// that this library is built against supports FIPS mode. + /// + /// Please see the Context class documentation regarding TLSv1.3 support. +{ +public: + using PrivateKeyPassphraseHandlerPtr = Poco::SharedPtr; + using InvalidCertificateHandlerPtr = Poco::SharedPtr; + + Poco::BasicEvent ServerVerificationError; + /// Fired whenever a certificate verification error is detected by the server during a handshake. + + Poco::BasicEvent ClientVerificationError; + /// Fired whenever a certificate verification error is detected by the client during a handshake. + + Poco::BasicEvent PrivateKeyPassphraseRequired; + /// Fired when a encrypted certificate is loaded. Not setting the password + /// in the event parameter will result in a failure to load the certificate. + + static SSLManager& instance(); + /// Returns the instance of the SSLManager singleton. + + void initializeServer(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr ptrCertificateHandler, Context::Ptr ptrContext); + /// Initializes the server side of the SSLManager with a default passphrase handler, a default invalid certificate handler and a default context. If this method + /// is never called the SSLmanager will try to initialize its members from an application configuration. + /// + /// PtrPassphraseHandler and ptrCertificateHandler can be 0. However, in this case, event delegates + /// must be registered with the ServerVerificationError and PrivateKeyPassphraseRequired events. + /// + /// Note: Always create the handlers (or register the corresponding event delegates) before creating + /// the Context, as during creation of the Context the passphrase for the private key might be needed. + /// + /// Valid initialization code would be: + /// SharedPtr pConsoleHandler = new KeyConsoleHandler; + /// SharedPtr pInvalidCertHandler = new ConsoleCertificateHandler; + /// Context::Ptr pContext = new Context(Context::SERVER_USE, "any.pem", "any.pem", "rootcert.pem", Context::VERIFY_RELAXED, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); + /// SSLManager::instance().initializeServer(pConsoleHandler, pInvalidCertHandler, pContext); + + void initializeClient(PrivateKeyPassphraseHandlerPtr ptrPassphraseHandler, InvalidCertificateHandlerPtr ptrHandler, Context::Ptr ptrContext); + /// Initializes the client side of the SSLManager with a default passphrase handler, a default invalid certificate handler and a default context. If this method + /// is never called the SSLmanager will try to initialize its members from an application configuration. + /// + /// PtrPassphraseHandler and ptrCertificateHandler can be 0. However, in this case, event delegates + /// must be registered with the ClientVerificationError and PrivateKeyPassphraseRequired events. + /// + /// Note: Always create the handlers (or register the corresponding event delegates) before creating + /// the Context, as during creation of the Context the passphrase for the private key might be needed. + /// + /// Valid initialization code would be: + /// SharedPtr pConsoleHandler = new KeyConsoleHandler; + /// SharedPtr pInvalidCertHandler = new ConsoleCertificateHandler; + /// Context::Ptr pContext = new Context(Context::CLIENT_USE, "", "", "rootcert.pem", Context::VERIFY_RELAXED, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); + /// SSLManager::instance().initializeClient(pConsoleHandler, pInvalidCertHandler, pContext); + + Context::Ptr defaultServerContext(); + /// Returns the default Context used by the server. + /// + /// Unless initializeServer() has been called, the first call to this method initializes the default Context + /// from the application configuration. + + Context::Ptr defaultClientContext(); + /// Returns the default Context used by the client. + /// + /// Unless initializeClient() has been called, the first call to this method initializes the default Context + /// from the application configuration. + + PrivateKeyPassphraseHandlerPtr serverPassphraseHandler(); + /// Returns the configured passphrase handler of the server. If none is set, the method will create a default one + /// from an application configuration. + + InvalidCertificateHandlerPtr serverCertificateHandler(); + /// Returns an initialized certificate handler (used by the server to verify client cert) which determines how invalid certificates are treated. + /// If none is set, it will try to auto-initialize one from an application configuration. + + PrivateKeyPassphraseHandlerPtr clientPassphraseHandler(); + /// Returns the configured passphrase handler of the client. If none is set, the method will create a default one + /// from an application configuration. + + InvalidCertificateHandlerPtr clientCertificateHandler(); + /// Returns an initialized certificate handler (used by the client to verify server cert) which determines how invalid certificates are treated. + /// If none is set, it will try to auto-initialize one from an application configuration. + + PrivateKeyFactoryMgr& privateKeyFactoryMgr(); + /// Returns the private key factory manager which stores the + /// factories for the different registered passphrase handlers for private keys. + + CertificateHandlerFactoryMgr& certificateHandlerFactoryMgr(); + /// Returns the CertificateHandlerFactoryMgr which stores the + /// factories for the different registered certificate handlers. + + static bool isFIPSEnabled(); + // Returns true if FIPS mode is enabled, false otherwise. + + void shutdown(); + /// Shuts down the SSLManager and releases the default Context + /// objects. After a call to shutdown(), the SSLManager can no + /// longer be used. + /// + /// Normally, it's not necessary to call this method directly, as this + /// will be called either by uninitializeSSL(), or when + /// the SSLManager instance is destroyed. + + static const std::string CFG_SERVER_PREFIX; + static const std::string CFG_CLIENT_PREFIX; + +protected: + static int verifyClientCallback(int ok, X509_STORE_CTX* pStore); + /// The return value of this method defines how errors in + /// verification are handled. Return 0 to terminate the handshake, + /// or 1 to continue despite the error. + + static int verifyServerCallback(int ok, X509_STORE_CTX* pStore); + /// The return value of this method defines how errors in + /// verification are handled. Return 0 to terminate the handshake, + /// or 1 to continue despite the error. + + static int privateKeyPassphraseCallback(char* pBuf, int size, int flag, void* userData); + /// Method is invoked by OpenSSL to retrieve a passwd for an encrypted certificate. + /// The request is delegated to the PrivatekeyPassword event. This method returns the + /// length of the password. + + static int verifyOCSPResponseCallback(SSL* pSSL, void* arg); + /// The return value of this method defines how errors in + /// verification are handled. Return 0 to terminate the handshake, + /// or 1 to continue despite the error. + + static Poco::Util::AbstractConfiguration& appConfig(); + /// Returns the application configuration. + /// + /// Throws a InvalidStateException if not application instance + /// is available. + + int contextIndex() const; + /// Returns the index for SSL_CTX_set_ex_data() and SSL_CTX_get_ex_data() to + /// store the Context* in the underlying SSL_CTX. + +private: + SSLManager(); + /// Creates the SSLManager. + + ~SSLManager(); + /// Destroys the SSLManager. + + void initDefaultContext(bool server); + /// Inits the default context, the first time it is accessed. + + void initEvents(bool server); + /// Registers delegates at the events according to the configuration. + + void initPassphraseHandler(bool server); + /// Inits the passphrase handler. + + void initCertificateHandler(bool server); + /// Inits the certificate handler. + + static int verifyCallback(bool server, int ok, X509_STORE_CTX* pStore); + /// The return value of this method defines how errors in + /// verification are handled. Return 0 to terminate the handshake, + /// or 1 to continue despite the error. + + PrivateKeyFactoryMgr _factoryMgr; + CertificateHandlerFactoryMgr _certHandlerFactoryMgr; + Context::Ptr _ptrDefaultServerContext; + PrivateKeyPassphraseHandlerPtr _ptrServerPassphraseHandler; + InvalidCertificateHandlerPtr _ptrServerCertificateHandler; + Context::Ptr _ptrDefaultClientContext; + PrivateKeyPassphraseHandlerPtr _ptrClientPassphraseHandler; + InvalidCertificateHandlerPtr _ptrClientCertificateHandler; + int _contextIndex; + Poco::FastMutex _mutex; + + static const std::string CFG_PRIV_KEY_FILE; + static const std::string CFG_CERTIFICATE_FILE; + static const std::string CFG_CA_LOCATION; + static const std::string CFG_VER_MODE; + static const Context::VerificationMode VAL_VER_MODE; + static const std::string CFG_VER_DEPTH; + static const int VAL_VER_DEPTH; + static const std::string CFG_ENABLE_DEFAULT_CA; + static const bool VAL_ENABLE_DEFAULT_CA; + static const std::string CFG_CIPHER_LIST; + static const std::string CFG_CYPHER_LIST; // for backwards compatibility + static const std::string VAL_CIPHER_LIST; + static const std::string CFG_PREFER_SERVER_CIPHERS; + static const std::string CFG_DELEGATE_HANDLER; + static const std::string VAL_DELEGATE_HANDLER; + static const std::string CFG_CERTIFICATE_HANDLER; + static const std::string VAL_CERTIFICATE_HANDLER; + static const std::string CFG_CACHE_SESSIONS; + static const std::string CFG_SESSION_ID_CONTEXT; + static const std::string CFG_SESSION_CACHE_SIZE; + static const std::string CFG_SESSION_TIMEOUT; + static const std::string CFG_EXTENDED_VERIFICATION; + static const std::string CFG_REQUIRE_TLSV1; + static const std::string CFG_REQUIRE_TLSV1_1; + static const std::string CFG_REQUIRE_TLSV1_2; + static const std::string CFG_REQUIRE_TLSV1_3; + static const std::string CFG_DISABLE_PROTOCOLS; + static const std::string CFG_DH_PARAMS_FILE; + static const std::string CFG_ECDH_CURVE; + +#ifdef OPENSSL_FIPS + static const std::string CFG_FIPS_MODE; + static const bool VAL_FIPS_MODE; +#endif + + friend class Poco::SingletonHolder; + friend class Context; +}; + + +// +// inlines +// +inline PrivateKeyFactoryMgr& SSLManager::privateKeyFactoryMgr() +{ + return _factoryMgr; +} + + +inline CertificateHandlerFactoryMgr& SSLManager::certificateHandlerFactoryMgr() +{ + return _certHandlerFactoryMgr; +} + + +inline bool SSLManager::isFIPSEnabled() +{ +#ifdef OPENSSL_FIPS + return FIPS_mode() ? true : false; +#else + return false; +#endif +} + + +inline int SSLManager::verifyServerCallback(int ok, X509_STORE_CTX* pStore) +{ + return SSLManager::verifyCallback(true, ok, pStore); +} + + +inline int SSLManager::verifyClientCallback(int ok, X509_STORE_CTX* pStore) +{ + return SSLManager::verifyCallback(false, ok, pStore); +} + + +inline int SSLManager::contextIndex() const +{ + return _contextIndex; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_SSLManager_INCLUDED diff --git a/include/Poco/Poco/Net/SSPINTLMCredentials.h b/include/Poco/Poco/Net/SSPINTLMCredentials.h new file mode 100644 index 00000000..7658263b --- /dev/null +++ b/include/Poco/Poco/Net/SSPINTLMCredentials.h @@ -0,0 +1,83 @@ +// +// SSPINTLMCredentials.h +// +// Library: Net +// Package: NTLM +// Module: SSPINTLMCredentials +// +// Definition of the SSPINTLMCredentials class. +// +// Copyright (c) 2019, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/Net/Net.h" +#include + + +#ifndef Net_SSPINTLMCredentials_INCLUDED +#define Net_SSPINTLMCredentials_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/NTLMCredentials.h" +#include "Poco/SharedPtr.h" + + +namespace Poco { +namespace Net { + + +struct NTLMContextImpl; + + +class Net_API NTLMContext + /// An opaque context class for working with SSPI NTLM authentication. +{ +public: + ~NTLMContext(); + +protected: + NTLMContext(NTLMContextImpl* pImpl); + +private: + NTLMContextImpl* _pImpl; + + NTLMContext(); + NTLMContext(const NTLMContext&); + NTLMContext& operator = (const NTLMContext&); + + friend class SSPINTLMProvider; +}; + + +class Net_API SSPINTLMCredentials + /// Support for NTLM authentication using credentials of the currently + /// logged in user via SSPI. +{ +public: + static bool available(); + /// Returns true if SSPI NTLM support is available. + + static Poco::SharedPtr createNTLMContext(const std::string& host, const std::string& service); + /// Creates an NTLMContext structure for use with negotiate() + /// and authenticate(). + + static std::vector negotiate(NTLMContext& context); + /// Creates the NTLM Type 1 Negotiate message used for initiating NTLM authentication from the client. + + static std::vector authenticate(NTLMContext& context, const std::vector& challenge); + /// Creates the NTLM Type 3 Authenticate message used for sending the response to the challenge. + + static const std::string SERVICE_HTTP; + static const std::string SERVICE_SMTP; +}; + + +} } // namespace Poco::Net + + +#endif // Net_SSPINTLMCredentials_INCLUDED diff --git a/include/Poco/Poco/Net/Session.h b/include/Poco/Poco/Net/Session.h new file mode 100644 index 00000000..465e12fd --- /dev/null +++ b/include/Poco/Poco/Net/Session.h @@ -0,0 +1,79 @@ +// +// Session.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: Session +// +// Definition of the Session class. +// +// Copyright (c) 2010, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Session_INCLUDED +#define NetSSL_Session_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class NetSSL_API Session: public Poco::RefCountedObject + /// This class encapsulates a SSL session object + /// used with session caching on the client side. + /// + /// For session caching to work, a client must + /// save the session object from an existing connection, + /// if it wants to reuse it with a future connection. +{ +public: + using Ptr = Poco::AutoPtr; + + SSL_SESSION* sslSession() const; + /// Returns the stored OpenSSL SSL_SESSION object. + +protected: + Session(SSL_SESSION* pSession); + /// Creates a new Session object, using the given + /// SSL_SESSION object. + /// + /// The SSL_SESSION's reference count is not changed. + + ~Session(); + /// Destroys the Session. + /// + /// Calls SSL_SESSION_free() on the stored + /// SSL_SESSION object. + +private: + Session(); + + SSL_SESSION* _pSession; + + friend class SecureSocketImpl; +}; + + +// +// inlines +// +inline SSL_SESSION* Session::sslSession() const +{ + return _pSession; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_Session_INCLUDED diff --git a/include/Poco/Poco/Net/Socket.h b/include/Poco/Poco/Net/Socket.h new file mode 100644 index 00000000..b6cf7a7c --- /dev/null +++ b/include/Poco/Poco/Net/Socket.h @@ -0,0 +1,671 @@ +// +// Socket.h +// +// Library: Net +// Package: Sockets +// Module: Socket +// +// Definition of the Socket class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_Socket_INCLUDED +#define Net_Socket_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketImpl.h" +#include + + +namespace Poco { +namespace Net { + + +class Net_API Socket + /// Socket is the common base class for + /// StreamSocket, ServerSocket, DatagramSocket and other + /// socket classes. + /// + /// It provides operations common to all socket types. +{ +public: + using BufVec = SocketBufVec; + + enum SelectMode + /// The mode argument to poll() and select(). + { + SELECT_READ = 1, + SELECT_WRITE = 2, + SELECT_ERROR = 4 + }; + + using SocketList = std::vector; + + Socket(); + /// Creates an uninitialized socket. + + Socket(const Socket& socket); + /// Copy constructor. + /// + /// Attaches the SocketImpl from the other socket and + /// increments the reference count of the SocketImpl. + + Socket& operator = (const Socket& socket); + /// Assignment operator. + /// + /// Releases the socket's SocketImpl and + /// attaches the SocketImpl from the other socket and + /// increments the reference count of the SocketImpl. + + virtual ~Socket(); + /// Destroys the Socket and releases the + /// SocketImpl. + + bool operator == (const Socket& socket) const; + /// Returns true if both sockets share the same + /// SocketImpl, false otherwise. + + bool operator != (const Socket& socket) const; + /// Returns false if both sockets share the same + /// SocketImpl, true otherwise. + + bool operator < (const Socket& socket) const; + /// Compares the SocketImpl pointers. + + bool operator <= (const Socket& socket) const; + /// Compares the SocketImpl pointers. + + bool operator > (const Socket& socket) const; + /// Compares the SocketImpl pointers. + + bool operator >= (const Socket& socket) const; + /// Compares the SocketImpl pointers. + + void close(); + /// Closes the socket. + + static int select(SocketList& readList, SocketList& writeList, SocketList& exceptList, const Poco::Timespan& timeout); + /// Determines the status of one or more sockets, + /// using a call to select(). + /// + /// ReadList contains the list of sockets which should be + /// checked for readability. + /// + /// WriteList contains the list of sockets which should be + /// checked for writeability. + /// + /// ExceptList contains a list of sockets which should be + /// checked for a pending error. + /// + /// Returns the number of sockets ready. + /// + /// After return, + /// * readList contains those sockets ready for reading, + /// * writeList contains those sockets ready for writing, + /// * exceptList contains those sockets with a pending error. + /// + /// If the total number of sockets passed in readList, writeList and + /// exceptList is zero, select() will return immediately and the + /// return value will be 0. + /// + /// If one of the sockets passed to select() is closed while + /// select() runs, select will return immediately. However, + /// the closed socket will not be included in any list. + /// In this case, the return value may be greater than the sum + /// of all sockets in all list. + + bool poll(const Poco::Timespan& timeout, int mode) const; + /// Determines the status of the socket, using a + /// call to poll() or select(). + /// + /// The mode argument is constructed by combining the values + /// of the SelectMode enumeration. + /// + /// Returns true if the next operation corresponding to + /// mode will not block, false otherwise. + + int available() const; + /// Returns the number of bytes available that can be read + /// without causing the socket to block. + + void setSendBufferSize(int size); + /// Sets the size of the send buffer. + + int getSendBufferSize() const; + /// Returns the size of the send buffer. + /// + /// The returned value may be different than the + /// value previously set with setSendBufferSize(), + /// as the system is free to adjust the value. + + void setReceiveBufferSize(int size); + /// Sets the size of the receive buffer. + + int getReceiveBufferSize() const; + /// Returns the size of the receive buffer. + /// + /// The returned value may be different than the + /// value previously set with setReceiveBufferSize(), + /// as the system is free to adjust the value. + + void setSendTimeout(const Poco::Timespan& timeout); + /// Sets the send timeout for the socket. + + Poco::Timespan getSendTimeout() const; + /// Returns the send timeout for the socket. + /// + /// The returned timeout may be different than the + /// timeout previously set with setSendTimeout(), + /// as the system is free to adjust the value. + + void setReceiveTimeout(const Poco::Timespan& timeout); + /// Sets the send timeout for the socket. + /// + /// On systems that do not support SO_RCVTIMEO, a + /// workaround using poll() is provided. + + Poco::Timespan getReceiveTimeout() const; + /// Returns the receive timeout for the socket. + /// + /// The returned timeout may be different than the + /// timeout previously set with getReceiveTimeout(), + /// as the system is free to adjust the value. + + void setOption(int level, int option, int value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, unsigned value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, unsigned char value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, const Poco::Timespan& value); + /// Sets the socket option specified by level and option + /// to the given time value. + + void setOption(int level, int option, const IPAddress& value); + /// Sets the socket option specified by level and option + /// to the given time value. + + void getOption(int level, int option, int& value) const; + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, unsigned& value) const; + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, unsigned char& value) const; + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, Poco::Timespan& value) const; + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, IPAddress& value) const; + /// Returns the value of the socket option + /// specified by level and option. + + void setLinger(bool on, int seconds); + /// Sets the value of the SO_LINGER socket option. + + void getLinger(bool& on, int& seconds) const; + /// Returns the value of the SO_LINGER socket option. + + void setNoDelay(bool flag); + /// Sets the value of the TCP_NODELAY socket option. + + bool getNoDelay() const; + /// Returns the value of the TCP_NODELAY socket option. + + void setKeepAlive(bool flag); + /// Sets the value of the SO_KEEPALIVE socket option. + + bool getKeepAlive() const; + /// Returns the value of the SO_KEEPALIVE socket option. + + void setReuseAddress(bool flag); + /// Sets the value of the SO_REUSEADDR socket option. + + bool getReuseAddress() const; + /// Returns the value of the SO_REUSEADDR socket option. + + void setReusePort(bool flag); + /// Sets the value of the SO_REUSEPORT socket option. + /// Does nothing if the socket implementation does not + /// support SO_REUSEPORT. + + bool getReusePort() const; + /// Returns the value of the SO_REUSEPORT socket option. + /// + /// Returns false if the socket implementation does not + /// support SO_REUSEPORT. + + void setOOBInline(bool flag); + /// Sets the value of the SO_OOBINLINE socket option. + + bool getOOBInline() const; + /// Returns the value of the SO_OOBINLINE socket option. + + void setBlocking(bool flag); + /// Sets the socket in blocking mode if flag is true, + /// disables blocking mode if flag is false. + + bool getBlocking() const; + /// Returns the blocking mode of the socket. + /// This method will only work if the blocking modes of + /// the socket are changed via the setBlocking method! + + SocketAddress address() const; + /// Returns the IP address and port number of the socket. + + SocketAddress peerAddress() const; + /// Returns the IP address and port number of the peer socket. + + SocketImpl* impl() const; + /// Returns the SocketImpl for this socket. + + bool secure() const; + /// Returns true iff the socket's connection is secure + /// (using SSL or TLS). + + static bool supportsIPv4(); + /// Returns true if the system supports IPv4. + + static bool supportsIPv6(); + /// Returns true if the system supports IPv6. + + void init(int af); + /// Creates the underlying system socket for the given + /// address family. + /// + /// Normally, this method should not be called directly, as + /// socket creation will be handled automatically. There are + /// a few situations where calling this method after creation + /// of the Socket object makes sense. One example is setting + /// a socket option before calling bind() on a ServerSocket. + + static SocketBuf makeBuffer(void* buffer, std::size_t length); + /// Creates and returns buffer. Suitable for creating + /// the appropriate buffer for the platform. + + static SocketBufVec makeBufVec(std::size_t size, std::size_t bufLen); + /// Creates and returns a vector of requested size, with + /// allocated buffers and lengths set accordingly. + /// This utility function works well when all buffers are + /// of same size. + + static void destroyBufVec(SocketBufVec& buf); + /// Releases the memory pointed to by vector members + /// and shrinks the vector to size 0. + /// The vector must be created by makeBufVec(size_t, size_t). + + static SocketBufVec makeBufVec(const std::vector& vec); + /// Creates and returns a vector of requested size, with + /// buffers pointing to the supplied data (so, `vec` must + /// remain available at the time of use) and lengths set + /// accordingly. + /// Notes: + /// - data length is determined using `strlen`, so this + /// function is not meant to be used with binary data. + /// + /// - if the returned buffer is used for read operations + /// (ie. operations that write to the bufer), pointing + /// to string literals will result in undefined behavior, + /// in best case an I/O error and subsequent exception + + static SocketBufVec makeBufVec(const std::vector& vec); + /// Creates and returns a vector of requested size, with + /// buffers pointing to the supplied data (so, `vec` must + /// remain available at the time of use) and lengths set + /// accordingly. + /// Note:: this function is not suitable for creation + /// of buffers used for writing (ie. reading from socket + /// into buffers). + +protected: + Socket(SocketImpl* pImpl); + /// Creates the Socket and attaches the given SocketImpl. + /// The socket takes ownership of the SocketImpl. + + poco_socket_t sockfd() const; + /// Returns the socket descriptor for this socket. + +private: + +#if defined(POCO_HAVE_FD_POLL) +class FDCompare + /// Utility functor used to compare socket file descriptors. + /// Used in poll() member function. +{ +public: + FDCompare(int fd): _fd(fd) { } + inline bool operator()(const Socket& socket) const + { return socket.sockfd() == _fd; } + +private: + FDCompare(); + int _fd; +}; +#endif + + SocketImpl* _pImpl; +}; + + +// +// inlines +// +inline bool Socket::operator == (const Socket& socket) const +{ + return _pImpl == socket._pImpl; +} + + +inline bool Socket::operator != (const Socket& socket) const +{ + return _pImpl != socket._pImpl; +} + + +inline bool Socket::operator < (const Socket& socket) const +{ + return _pImpl < socket._pImpl; +} + + +inline bool Socket::operator <= (const Socket& socket) const +{ + return _pImpl <= socket._pImpl; +} + + +inline bool Socket::operator > (const Socket& socket) const +{ + return _pImpl > socket._pImpl; +} + + +inline bool Socket::operator >= (const Socket& socket) const +{ + return _pImpl >= socket._pImpl; +} + + +inline void Socket::close() +{ + _pImpl->close(); +} + + +inline bool Socket::poll(const Poco::Timespan& timeout, int mode) const +{ + return _pImpl->poll(timeout, mode); +} + + +inline int Socket::available() const +{ + return _pImpl->available(); +} + + +inline void Socket::setSendBufferSize(int size) +{ + _pImpl->setSendBufferSize(size); +} + + +inline int Socket::getSendBufferSize() const +{ + return _pImpl->getSendBufferSize(); +} + + +inline void Socket::setReceiveBufferSize(int size) +{ + _pImpl->setReceiveBufferSize(size); +} + + +inline int Socket::getReceiveBufferSize() const +{ + return _pImpl->getReceiveBufferSize(); +} + + +inline void Socket::setSendTimeout(const Poco::Timespan& timeout) +{ + _pImpl->setSendTimeout(timeout); +} + + +inline Poco::Timespan Socket::getSendTimeout() const +{ + return _pImpl->getSendTimeout(); +} + + +inline void Socket::setReceiveTimeout(const Poco::Timespan& timeout) +{ + _pImpl->setReceiveTimeout(timeout); +} + + +inline Poco::Timespan Socket::getReceiveTimeout() const +{ + return _pImpl->getReceiveTimeout(); +} + + +inline void Socket::setOption(int level, int option, int value) +{ + _pImpl->setOption(level, option, value); +} + + +inline void Socket::setOption(int level, int option, unsigned value) +{ + _pImpl->setOption(level, option, value); +} + + +inline void Socket::setOption(int level, int option, unsigned char value) +{ + _pImpl->setOption(level, option, value); +} + + +inline void Socket::setOption(int level, int option, const Poco::Timespan& value) +{ + _pImpl->setOption(level, option, value); +} + + +inline void Socket::setOption(int level, int option, const IPAddress& value) +{ + _pImpl->setOption(level, option, value); +} + + +inline void Socket::getOption(int level, int option, int& value) const +{ + _pImpl->getOption(level, option, value); +} + + +inline void Socket::getOption(int level, int option, unsigned& value) const +{ + _pImpl->getOption(level, option, value); +} + + +inline void Socket::getOption(int level, int option, unsigned char& value) const +{ + _pImpl->getOption(level, option, value); +} + + +inline void Socket::getOption(int level, int option, Poco::Timespan& value) const +{ + _pImpl->getOption(level, option, value); +} + + +inline void Socket::getOption(int level, int option, IPAddress& value) const +{ + _pImpl->getOption(level, option, value); +} + + +inline void Socket::setLinger(bool on, int seconds) +{ + _pImpl->setLinger(on, seconds); +} + + +inline void Socket::getLinger(bool& on, int& seconds) const +{ + _pImpl->getLinger(on, seconds); +} + + +inline void Socket::setNoDelay(bool flag) +{ + _pImpl->setNoDelay(flag); +} + + +inline bool Socket::getNoDelay() const +{ + return _pImpl->getNoDelay(); +} + + +inline void Socket::setKeepAlive(bool flag) +{ + _pImpl->setKeepAlive(flag); +} + + +inline bool Socket::getKeepAlive() const +{ + return _pImpl->getKeepAlive(); +} + + +inline void Socket::setReuseAddress(bool flag) +{ + _pImpl->setReuseAddress(flag); +} + + +inline bool Socket::getReuseAddress() const +{ + return _pImpl->getReuseAddress(); +} + + +inline void Socket::setReusePort(bool flag) +{ + _pImpl->setReusePort(flag); +} + + +inline bool Socket::getReusePort() const +{ + return _pImpl->getReusePort(); +} + + +inline void Socket::setOOBInline(bool flag) +{ + _pImpl->setOOBInline(flag); +} + + +inline bool Socket::getOOBInline() const +{ + return _pImpl->getOOBInline(); +} + + +inline void Socket::setBlocking(bool flag) +{ + _pImpl->setBlocking(flag); +} + + +inline bool Socket::getBlocking() const +{ + return _pImpl->getBlocking(); +} + + +inline SocketImpl* Socket::impl() const +{ + return _pImpl; +} + + +inline poco_socket_t Socket::sockfd() const +{ + return _pImpl->sockfd(); +} + + +inline SocketAddress Socket::address() const +{ + return _pImpl->address(); +} + + +inline SocketAddress Socket::peerAddress() const +{ + return _pImpl->peerAddress(); +} + + +inline bool Socket::secure() const +{ + return _pImpl->secure(); +} + + +inline bool Socket::supportsIPv4() +{ + return true; +} + + +inline bool Socket::supportsIPv6() +{ +#if defined(POCO_HAVE_IPv6) + return true; +#else + return false; +#endif +} + + +inline void Socket::init(int af) +{ + _pImpl->init(af); +} + + +} } // namespace Poco::Net + + +#endif // Net_Socket_INCLUDED diff --git a/include/Poco/Poco/Net/SocketAddress.h b/include/Poco/Poco/Net/SocketAddress.h new file mode 100644 index 00000000..524d45c7 --- /dev/null +++ b/include/Poco/Poco/Net/SocketAddress.h @@ -0,0 +1,301 @@ +// +// SocketAddress.h +// +// Library: Net +// Package: NetCore +// Module: SocketAddress +// +// Definition of the SocketAddress class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_SocketAddress_INCLUDED +#define Net_SocketAddress_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketAddressImpl.h" +#include + + +namespace Poco { + +class BinaryReader; +class BinaryWriter; + +namespace Net { + + +class IPAddress; + + +class Net_API SocketAddress + /// This class represents an internet (IP) endpoint/socket + /// address. The address can belong either to the + /// IPv4 or the IPv6 address family and consists of a + /// host address and a port number. +{ +public: + // The following declarations keep the Family type + // backwards compatible with the previously used + // enum declaration. + using Family = AddressFamily::Family; + static const Family IPv4 = AddressFamily::IPv4; +#if defined(POCO_HAVE_IPv6) + static const Family IPv6 = AddressFamily::IPv6; +#endif +#if defined(POCO_OS_FAMILY_UNIX) + static const Family UNIX_LOCAL = AddressFamily::UNIX_LOCAL; +#endif + + SocketAddress(); + /// Creates a wildcard (all zero) IPv4 SocketAddress. + + explicit SocketAddress(Family family); + /// Creates a SocketAddress with unspecified (wildcard) IP address + /// of the given family. + + SocketAddress(const IPAddress& hostAddress, Poco::UInt16 portNumber); + /// Creates a SocketAddress from an IP address and given port number. + + explicit SocketAddress(Poco::UInt16 port); + /// Creates a SocketAddress with unspecified (wildcard) IP address + /// and given port number. + + SocketAddress(Family family, Poco::UInt16 port); + /// Creates a SocketAddress with unspecified (wildcard) IP address + /// of the given family, and given port number. + + SocketAddress(const std::string& hostAddress, Poco::UInt16 portNumber); + /// Creates a SocketAddress from an IP address and given port number. + /// + /// The IP address must either be a domain name, or it must + /// be in dotted decimal (IPv4) or hex string (IPv6) format. + + SocketAddress(Family family, const std::string& hostAddress, Poco::UInt16 portNumber); + /// Creates a SocketAddress from an IP address and given port number. + /// + /// The IP address must either be a domain name, or it must + /// be in dotted decimal (IPv4) or hex string (IPv6) format. + /// + /// If a domain name is given in hostAddress, it is resolved and the address + /// matching the given family is used. If no address matching the given family + /// is found, or the IP address given in hostAddress does not match the given + /// family, an AddressFamilyMismatchException is thrown. + + SocketAddress(const std::string& hostAddress, const std::string& portNumber); + /// Creates a SocketAddress from an IP address and the + /// service name or port number. + /// + /// The IP address must either be a domain name, or it must + /// be in dotted decimal (IPv4) or hex string (IPv6) format. + /// + /// The given port must either be a decimal port number, or + /// a service name. + + SocketAddress(Family family, const std::string& hostAddress, const std::string& portNumber); + /// Creates a SocketAddress from an IP address and the + /// service name or port number. + /// + /// The IP address must either be a domain name, or it must + /// be in dotted decimal (IPv4) or hex string (IPv6) format. + /// + /// The given port must either be a decimal port number, or + /// a service name. + /// + /// If a domain name is given in hostAddress, it is resolved and the address + /// matching the given family is used. If no address matching the given family + /// is found, or the IP address given in hostAddress does not match the given + /// family, an AddressFamilyMismatchException is thrown. + + explicit SocketAddress(const std::string& hostAndPort); + /// Creates a SocketAddress from an IP address or host name and the + /// port number/service name. Host name/address and port number must + /// be separated by a colon. In case of an IPv6 address, + /// the address part must be enclosed in brackets. + /// + /// Examples: + /// 192.168.1.10:80 + /// [::ffff:192.168.1.120]:2040 + /// www.appinf.com:8080 + /// + /// On POSIX platforms supporting UNIX_LOCAL sockets, hostAndPort + /// can also be the absolute path of a local socket, starting with a + /// slash, e.g. "/tmp/local.socket". + + SocketAddress(Family family, const std::string& addr); + /// Creates a SocketAddress of the given family from a + /// string representation of the address, which is + /// either an IP address and port number, separated by + /// a colon for IPv4 or IPv6 addresses, or a path for + /// UNIX_LOCAL sockets. + + SocketAddress(const SocketAddress& addr); + /// Creates a SocketAddress by copying another one. + + SocketAddress(const struct sockaddr* addr, poco_socklen_t length); + /// Creates a SocketAddress from a native socket address. + + ~SocketAddress(); + /// Destroys the SocketAddress. + + SocketAddress& operator = (const SocketAddress& socketAddress); + /// Assigns another SocketAddress. + + IPAddress host() const; + /// Returns the host IP address. + + Poco::UInt16 port() const; + /// Returns the port number. + + poco_socklen_t length() const; + /// Returns the length of the internal native socket address. + + const struct sockaddr* addr() const; + /// Returns a pointer to the internal native socket address. + + int af() const; + /// Returns the address family (AF_INET or AF_INET6) of the address. + + std::string toString() const; + /// Returns a string representation of the address. + + Family family() const; + /// Returns the address family of the host's address. + + bool operator < (const SocketAddress& socketAddress) const; + bool operator == (const SocketAddress& socketAddress) const; + bool operator != (const SocketAddress& socketAddress) const; + + enum + { + MAX_ADDRESS_LENGTH = +#if defined(POCO_OS_FAMILY_UNIX) + sizeof(struct sockaddr_un) +#elif defined(POCO_HAVE_IPv6) + sizeof(struct sockaddr_in6) +#else + sizeof(struct sockaddr_in) +#endif + /// Maximum length in bytes of a socket address. + }; + +protected: + void init(const IPAddress& hostAddress, Poco::UInt16 portNumber); + void init(const std::string& hostAddress, Poco::UInt16 portNumber); + void init(Family family, const std::string& hostAddress, Poco::UInt16 portNumber); + void init(Family family, const std::string& address); + void init(const std::string& hostAndPort); + Poco::UInt16 resolveService(const std::string& service); + +private: + typedef Poco::Net::Impl::SocketAddressImpl Impl; + typedef Poco::AutoPtr Ptr; + + Ptr pImpl() const; + + void newIPv4(); + void newIPv4(const sockaddr_in*); + void newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber); + +#if defined(POCO_HAVE_IPv6) + void newIPv6(const sockaddr_in6*); + void newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber); +#endif + +#if defined(POCO_OS_FAMILY_UNIX) + void newLocal(const sockaddr_un* sockAddr); + void newLocal(const std::string& path); +#endif + + Ptr _pImpl; +}; + + +// +// inlines +// +inline SocketAddress::Ptr SocketAddress::pImpl() const +{ + if (_pImpl) return _pImpl; + throw Poco::NullPointerException("Pointer to SocketAddress implementation is NULL."); +} + + +inline void SocketAddress::newIPv4() +{ + _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl; +} + + +inline void SocketAddress::newIPv4(const sockaddr_in* sockAddr) +{ + _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(sockAddr); +} + + +inline void SocketAddress::newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber) +{ + _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(hostAddress.addr(), htons(portNumber)); +} + + +#if defined(POCO_HAVE_IPv6) +inline void SocketAddress::newIPv6(const sockaddr_in6* sockAddr) +{ + _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(sockAddr); +} + + +inline void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber) +{ + _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(hostAddress.addr(), htons(portNumber), hostAddress.scope()); +} +#endif // POCO_HAVE_IPv6 + + +#if defined(POCO_OS_FAMILY_UNIX) +inline void SocketAddress::newLocal(const sockaddr_un* sockAddr) +{ + _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(sockAddr); +} + + +inline void SocketAddress::newLocal(const std::string& path) +{ + _pImpl = new Poco::Net::Impl::LocalSocketAddressImpl(path.c_str(), path.size()); +} +#endif // POCO_OS_FAMILY_UNIX + + +inline bool SocketAddress::operator == (const SocketAddress& socketAddress) const +{ +#if defined(POCO_OS_FAMILY_UNIX) + if (family() == UNIX_LOCAL) + return toString() == socketAddress.toString(); + else +#endif + return host() == socketAddress.host() && port() == socketAddress.port(); +} + + +inline bool SocketAddress::operator != (const SocketAddress& socketAddress) const +{ + return !(operator == (socketAddress)); +} + + +} } // namespace Poco::Net + + +Net_API Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::SocketAddress& value); +Net_API Poco::BinaryReader& operator >> (Poco::BinaryReader& reader, Poco::Net::SocketAddress& value); +Net_API std::ostream& operator << (std::ostream& ostr, const Poco::Net::SocketAddress& address); + + +#endif // Net_SocketAddress_INCLUDED diff --git a/include/Poco/Poco/Net/SocketAddressImpl.h b/include/Poco/Poco/Net/SocketAddressImpl.h new file mode 100644 index 00000000..b065ca2a --- /dev/null +++ b/include/Poco/Poco/Net/SocketAddressImpl.h @@ -0,0 +1,258 @@ +// +// SocketAddressImpl.h +// +// Library: Net +// Package: NetCore +// Module: SocketAddressImpl +// +// Definition of the SocketAddressImpl class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_SocketAddressImpl_INCLUDED +#define Net_SocketAddressImpl_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/IPAddress.h" +#include "Poco/RefCountedObject.h" + + +namespace Poco { +namespace Net { +namespace Impl { + + +class Net_API SocketAddressImpl : public Poco::RefCountedObject +{ +public: + using Family = AddressFamily::Family; + + virtual ~SocketAddressImpl(); + + virtual IPAddress host() const = 0; + virtual UInt16 port() const = 0; + virtual poco_socklen_t length() const = 0; + virtual const struct sockaddr* addr() const = 0; + virtual int af() const = 0; + virtual Family family() const = 0; + virtual std::string toString() const = 0; + +protected: + SocketAddressImpl(); + +private: + SocketAddressImpl(const SocketAddressImpl&); + SocketAddressImpl& operator = (const SocketAddressImpl&); +}; + + +class Net_API IPv4SocketAddressImpl: public SocketAddressImpl +{ +public: + IPv4SocketAddressImpl(); + IPv4SocketAddressImpl(const struct sockaddr_in* addr); + IPv4SocketAddressImpl(const void* addr, UInt16 port); + IPAddress host() const; + UInt16 port() const; + poco_socklen_t length() const; + const struct sockaddr* addr() const; + int af() const; + Family family() const; + std::string toString() const; + +private: + struct sockaddr_in _addr; +}; + + +// +// inlines +// + +inline IPAddress IPv4SocketAddressImpl::host() const +{ + return IPAddress(&_addr.sin_addr, sizeof(_addr.sin_addr)); +} + + +inline UInt16 IPv4SocketAddressImpl::port() const +{ + return _addr.sin_port; +} + + +inline poco_socklen_t IPv4SocketAddressImpl::length() const +{ + return sizeof(_addr); +} + + +inline const struct sockaddr* IPv4SocketAddressImpl::addr() const +{ + return reinterpret_cast(&_addr); +} + + +inline int IPv4SocketAddressImpl::af() const +{ + return _addr.sin_family; +} + + +inline SocketAddressImpl::Family IPv4SocketAddressImpl::family() const +{ + return AddressFamily::IPv4; +} + + +#if defined(POCO_HAVE_IPv6) + + +class Net_API IPv6SocketAddressImpl: public SocketAddressImpl +{ +public: + IPv6SocketAddressImpl(const struct sockaddr_in6* addr); + IPv6SocketAddressImpl(const void* addr, UInt16 port); + IPv6SocketAddressImpl(const void* addr, UInt16 port, UInt32 scope); + IPAddress host() const; + UInt16 port() const; + poco_socklen_t length() const; + const struct sockaddr* addr() const; + int af() const; + Family family() const; + std::string toString() const; + +private: + struct sockaddr_in6 _addr; +}; + + +// +// inlines +// + +inline IPAddress IPv6SocketAddressImpl::host() const +{ + return IPAddress(&_addr.sin6_addr, sizeof(_addr.sin6_addr), _addr.sin6_scope_id); +} + + +inline UInt16 IPv6SocketAddressImpl::port() const +{ + return _addr.sin6_port; +} + + +inline poco_socklen_t IPv6SocketAddressImpl::length() const +{ + return sizeof(_addr); +} + + +inline const struct sockaddr* IPv6SocketAddressImpl::addr() const +{ + return reinterpret_cast(&_addr); +} + + +inline int IPv6SocketAddressImpl::af() const +{ + return _addr.sin6_family; +} + + +inline SocketAddressImpl::Family IPv6SocketAddressImpl::family() const +{ + return AddressFamily::IPv6; +} + + +#endif // POCO_HAVE_IPv6 + + +#if defined(POCO_OS_FAMILY_UNIX) + + +class Net_API LocalSocketAddressImpl: public SocketAddressImpl +{ +public: + LocalSocketAddressImpl(const struct sockaddr_un* addr); + LocalSocketAddressImpl(const char* path); + LocalSocketAddressImpl(const char* path, std::size_t length); + ~LocalSocketAddressImpl(); + IPAddress host() const; + UInt16 port() const; + poco_socklen_t length() const; + const struct sockaddr* addr() const; + int af() const; + Family family() const; + const char* path() const; + std::string toString() const; + +private: + struct sockaddr_un* _pAddr; + // Note: We allocate struct sockaddr_un on the heap, otherwise we would + // waste a lot of memory due to small object optimization in SocketAddress. +}; + + +// +// inlines +// + +inline IPAddress LocalSocketAddressImpl::host() const +{ + throw Poco::InvalidAccessException("local socket address does not have host IP address"); +} + + +inline UInt16 LocalSocketAddressImpl::port() const +{ + throw Poco::InvalidAccessException("local socket address does not have port number"); +} + + +inline poco_socklen_t LocalSocketAddressImpl::length() const +{ + return sizeof(struct sockaddr_un); +} + + +inline const struct sockaddr* LocalSocketAddressImpl::addr() const +{ + return reinterpret_cast(_pAddr); +} + + +inline int LocalSocketAddressImpl::af() const +{ + return _pAddr->sun_family; +} + + +inline SocketAddressImpl::Family LocalSocketAddressImpl::family() const +{ + return AddressFamily::UNIX_LOCAL; +} + + +inline const char* LocalSocketAddressImpl::path() const +{ + return _pAddr->sun_path; +} + + +#endif // POCO_OS_FAMILY_UNIX + + +} } } // namespace Poco::Net::Impl + + +#endif // Net_SocketAddressImpl_INCLUDED diff --git a/include/Poco/Poco/Net/SocketDefs.h b/include/Poco/Poco/Net/SocketDefs.h new file mode 100644 index 00000000..bdc9b0be --- /dev/null +++ b/include/Poco/Poco/Net/SocketDefs.h @@ -0,0 +1,391 @@ +// +// SocketDefs.h +// +// Library: Net +// Package: NetCore +// Module: SocketDefs +// +// Include platform-specific header files for sockets. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_SocketDefs_INCLUDED +#define Net_SocketDefs_INCLUDED + + +#include + + +#define POCO_ENOERR 0 + + +#if defined(POCO_OS_FAMILY_WINDOWS) + #include "Poco/UnWindows.h" + #include + #include + #include + #define POCO_INVALID_SOCKET INVALID_SOCKET + #define poco_socket_t SOCKET + #define poco_socklen_t int + #define poco_ioctl_request_t int + #define poco_closesocket(s) closesocket(s) + #define POCO_EINTR WSAEINTR + #define POCO_EACCES WSAEACCES + #define POCO_EFAULT WSAEFAULT + #define POCO_EINVAL WSAEINVAL + #define POCO_EMFILE WSAEMFILE + #define POCO_EAGAIN WSAEWOULDBLOCK + #define POCO_EWOULDBLOCK WSAEWOULDBLOCK + #define POCO_EINPROGRESS WSAEINPROGRESS + #define POCO_EALREADY WSAEALREADY + #define POCO_ENOTSOCK WSAENOTSOCK + #define POCO_EDESTADDRREQ WSAEDESTADDRREQ + #define POCO_EMSGSIZE WSAEMSGSIZE + #define POCO_EPROTOTYPE WSAEPROTOTYPE + #define POCO_ENOPROTOOPT WSAENOPROTOOPT + #define POCO_EPROTONOSUPPORT WSAEPROTONOSUPPORT + #define POCO_ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT + #define POCO_ENOTSUP WSAEOPNOTSUPP + #define POCO_EPFNOSUPPORT WSAEPFNOSUPPORT + #define POCO_EAFNOSUPPORT WSAEAFNOSUPPORT + #define POCO_EADDRINUSE WSAEADDRINUSE + #define POCO_EADDRNOTAVAIL WSAEADDRNOTAVAIL + #define POCO_ENETDOWN WSAENETDOWN + #define POCO_ENETUNREACH WSAENETUNREACH + #define POCO_ENETRESET WSAENETRESET + #define POCO_ECONNABORTED WSAECONNABORTED + #define POCO_ECONNRESET WSAECONNRESET + #define POCO_ENOBUFS WSAENOBUFS + #define POCO_EISCONN WSAEISCONN + #define POCO_ENOTCONN WSAENOTCONN + #define POCO_ESHUTDOWN WSAESHUTDOWN + #define POCO_ETIMEDOUT WSAETIMEDOUT + #define POCO_ECONNREFUSED WSAECONNREFUSED + #define POCO_EHOSTDOWN WSAEHOSTDOWN + #define POCO_EHOSTUNREACH WSAEHOSTUNREACH + #define POCO_ESYSNOTREADY WSASYSNOTREADY + #define POCO_ENOTINIT WSANOTINITIALISED + #define POCO_HOST_NOT_FOUND WSAHOST_NOT_FOUND + #define POCO_TRY_AGAIN WSATRY_AGAIN + #define POCO_NO_RECOVERY WSANO_RECOVERY + #define POCO_NO_DATA WSANO_DATA + #ifndef ADDRESS_FAMILY + #define ADDRESS_FAMILY USHORT + #endif +#elif defined(POCO_VXWORKS) + #include + #include + #include + #include + #include + #include + #include + #include + #define POCO_INVALID_SOCKET -1 + #define poco_socket_t int + #define poco_socklen_t int + #define poco_ioctl_request_t int + #define poco_closesocket(s) ::close(s) + #define POCO_EINTR EINTR + #define POCO_EACCES EACCES + #define POCO_EFAULT EFAULT + #define POCO_EINVAL EINVAL + #define POCO_EMFILE EMFILE + #define POCO_EAGAIN EAGAIN + #define POCO_EWOULDBLOCK EWOULDBLOCK + #define POCO_EINPROGRESS EINPROGRESS + #define POCO_EALREADY EALREADY + #define POCO_ENOTSOCK ENOTSOCK + #define POCO_EDESTADDRREQ EDESTADDRREQ + #define POCO_EMSGSIZE EMSGSIZE + #define POCO_EPROTOTYPE EPROTOTYPE + #define POCO_ENOPROTOOPT ENOPROTOOPT + #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT + #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT + #define POCO_ENOTSUP ENOTSUP + #define POCO_EPFNOSUPPORT EPFNOSUPPORT + #define POCO_EAFNOSUPPORT EAFNOSUPPORT + #define POCO_EADDRINUSE EADDRINUSE + #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL + #define POCO_ENETDOWN ENETDOWN + #define POCO_ENETUNREACH ENETUNREACH + #define POCO_ENETRESET ENETRESET + #define POCO_ECONNABORTED ECONNABORTED + #define POCO_ECONNRESET ECONNRESET + #define POCO_ENOBUFS ENOBUFS + #define POCO_EISCONN EISCONN + #define POCO_ENOTCONN ENOTCONN + #define POCO_ESHUTDOWN ESHUTDOWN + #define POCO_ETIMEDOUT ETIMEDOUT + #define POCO_ECONNREFUSED ECONNREFUSED + #define POCO_EHOSTDOWN EHOSTDOWN + #define POCO_EHOSTUNREACH EHOSTUNREACH + #define POCO_ESYSNOTREADY -4 + #define POCO_ENOTINIT -5 + #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND + #define POCO_TRY_AGAIN TRY_AGAIN + #define POCO_NO_RECOVERY NO_RECOVERY + #define POCO_NO_DATA NO_DATA +#elif defined(POCO_OS_FAMILY_UNIX) + #include + #include + #include + #include + #include + #include + #include + #if POCO_OS != POCO_OS_HPUX + #include + #endif + #include + #include + #include + #include + #include + #if defined(POCO_OS_FAMILY_UNIX) + #if (POCO_OS == POCO_OS_LINUX) || (POCO_OS == POCO_OS_ANDROID) + // Net/src/NetworkInterface.cpp changed #include to #include + // no more conflict, can use #include here + #include + #elif (POCO_OS == POCO_OS_HPUX) + extern "C" + { + #include + } + #else + #include + #endif + #endif + #if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_MAC_OS_X) + #include + #include + #endif + #define POCO_INVALID_SOCKET -1 + #define poco_socket_t int + #define poco_socklen_t socklen_t + #define poco_fcntl_request_t int + #if defined(POCO_OS_FAMILY_BSD) + #define poco_ioctl_request_t unsigned long + #else + #define poco_ioctl_request_t int + #endif + #define poco_closesocket(s) ::close(s) + #define POCO_EINTR EINTR + #define POCO_EACCES EACCES + #define POCO_EFAULT EFAULT + #define POCO_EINVAL EINVAL + #define POCO_EMFILE EMFILE + #define POCO_EAGAIN EAGAIN + #define POCO_EWOULDBLOCK EWOULDBLOCK + #define POCO_EINPROGRESS EINPROGRESS + #define POCO_EALREADY EALREADY + #define POCO_ENOTSOCK ENOTSOCK + #define POCO_EDESTADDRREQ EDESTADDRREQ + #define POCO_EMSGSIZE EMSGSIZE + #define POCO_EPROTOTYPE EPROTOTYPE + #define POCO_ENOPROTOOPT ENOPROTOOPT + #define POCO_EPROTONOSUPPORT EPROTONOSUPPORT + #if defined(ESOCKTNOSUPPORT) + #define POCO_ESOCKTNOSUPPORT ESOCKTNOSUPPORT + #else + #define POCO_ESOCKTNOSUPPORT -1 + #endif + #define POCO_ENOTSUP ENOTSUP + #define POCO_EPFNOSUPPORT EPFNOSUPPORT + #define POCO_EAFNOSUPPORT EAFNOSUPPORT + #define POCO_EADDRINUSE EADDRINUSE + #define POCO_EADDRNOTAVAIL EADDRNOTAVAIL + #define POCO_ENETDOWN ENETDOWN + #define POCO_ENETUNREACH ENETUNREACH + #define POCO_ENETRESET ENETRESET + #define POCO_ECONNABORTED ECONNABORTED + #define POCO_ECONNRESET ECONNRESET + #define POCO_ENOBUFS ENOBUFS + #define POCO_EISCONN EISCONN + #define POCO_ENOTCONN ENOTCONN + #if defined(ESHUTDOWN) + #define POCO_ESHUTDOWN ESHUTDOWN + #else + #define POCO_ESHUTDOWN -2 + #endif + #define POCO_ETIMEDOUT ETIMEDOUT + #define POCO_ECONNREFUSED ECONNREFUSED + #if defined(EHOSTDOWN) + #define POCO_EHOSTDOWN EHOSTDOWN + #else + #define POCO_EHOSTDOWN -3 + #endif + #define POCO_EHOSTUNREACH EHOSTUNREACH + #define POCO_ESYSNOTREADY -4 + #define POCO_ENOTINIT -5 + #define POCO_HOST_NOT_FOUND HOST_NOT_FOUND + #define POCO_TRY_AGAIN TRY_AGAIN + #define POCO_NO_RECOVERY NO_RECOVERY + #define POCO_NO_DATA NO_DATA +#endif + + +#if defined(POCO_OS_FAMILY_BSD) || (POCO_OS == POCO_OS_TRU64) || (POCO_OS == POCO_OS_AIX) || (POCO_OS == POCO_OS_IRIX) || (POCO_OS == POCO_OS_QNX) || (POCO_OS == POCO_OS_VXWORKS) + #define POCO_HAVE_SALEN 1 +#endif + + +#if POCO_OS != POCO_OS_VXWORKS && !defined(POCO_NET_NO_ADDRINFO) + #define POCO_HAVE_ADDRINFO 1 +#endif + + +#if (POCO_OS == POCO_OS_HPUX) || (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_WINDOWS_CE) || (POCO_OS == POCO_OS_CYGWIN) + #define POCO_BROKEN_TIMEOUTS 1 +#endif + + +#if defined(POCO_HAVE_ADDRINFO) + #ifndef AI_PASSIVE + #define AI_PASSIVE 0 + #endif + #ifndef AI_CANONNAME + #define AI_CANONNAME 0 + #endif + #ifndef AI_NUMERICHOST + #define AI_NUMERICHOST 0 + #endif + #ifndef AI_NUMERICSERV + #define AI_NUMERICSERV 0 + #endif + #ifndef AI_ALL + #define AI_ALL 0 + #endif + #ifndef AI_ADDRCONFIG + #define AI_ADDRCONFIG 0 + #endif + #ifndef AI_V4MAPPED + #define AI_V4MAPPED 0 + #endif +#endif + + +#if defined(POCO_HAVE_SALEN) + #define poco_set_sa_len(pSA, len) (pSA)->sa_len = (len) + #define poco_set_sin_len(pSA) (pSA)->sin_len = sizeof(struct sockaddr_in) + #if defined(POCO_HAVE_IPv6) + #define poco_set_sin6_len(pSA) (pSA)->sin6_len = sizeof(struct sockaddr_in6) + #endif + #if defined(POCO_OS_FAMILY_UNIX) + #define poco_set_sun_len(pSA, len) (pSA)->sun_len = (len) + #endif +#else + #define poco_set_sa_len(pSA, len) (void) 0 + #define poco_set_sin_len(pSA) (void) 0 + #define poco_set_sin6_len(pSA) (void) 0 + #define poco_set_sun_len(pSA, len) (void) 0 +#endif + + +#ifndef INADDR_NONE + #define INADDR_NONE 0xffffffff +#endif + +#ifndef INADDR_ANY + #define INADDR_ANY 0x00000000 +#endif + +#ifndef INADDR_BROADCAST + #define INADDR_BROADCAST 0xffffffff +#endif + +#ifndef INADDR_LOOPBACK + #define INADDR_LOOPBACK 0x7f000001 +#endif + +#ifndef INADDR_UNSPEC_GROUP + #define INADDR_UNSPEC_GROUP 0xe0000000 +#endif + +#ifndef INADDR_ALLHOSTS_GROUP + #define INADDR_ALLHOSTS_GROUP 0xe0000001 +#endif + +#ifndef INADDR_ALLRTRS_GROUP + #define INADDR_ALLRTRS_GROUP 0xe0000002 +#endif + +#ifndef INADDR_MAX_LOCAL_GROUP + #define INADDR_MAX_LOCAL_GROUP 0xe00000ff +#endif + +#if defined(POCO_ARCH_BIG_ENDIAN) + #define poco_ntoh_16(x) (x) + #define poco_ntoh_32(x) (x) +#else + #define poco_ntoh_16(x) \ + ((((x) >> 8) & 0x00ff) | (((x) << 8) & 0xff00)) + #define poco_ntoh_32(x) \ + ((((x) >> 24) & 0x000000ff) | (((x) >> 8) & 0x0000ff00) | (((x) << 8) & 0x00ff0000) | (((x) << 24) & 0xff000000)) +#endif +#define poco_hton_16(x) poco_ntoh_16(x) +#define poco_hton_32(x) poco_ntoh_32(x) + + +#if !defined(s6_addr16) + #if defined(POCO_OS_FAMILY_WINDOWS) + #define s6_addr16 u.Word + #else + #define s6_addr16 __u6_addr.__u6_addr16 + #endif +#endif + + +#if !defined(s6_addr32) + #if defined(POCO_OS_FAMILY_UNIX) + #if (POCO_OS == POCO_OS_SOLARIS) + #define s6_addr32 _S6_un._S6_u32 + #else + #define s6_addr32 __u6_addr.__u6_addr32 + #endif + #endif +#endif + + +namespace Poco { +namespace Net { + + +#if defined(POCO_OS_FAMILY_WINDOWS) + typedef WSABUF SocketBuf; +#elif defined(POCO_OS_FAMILY_UNIX) // TODO: may need more refinement + typedef iovec SocketBuf; +#endif + +typedef std::vector SocketBufVec; + +struct AddressFamily + /// AddressFamily::Family replaces the previously used IPAddress::Family + /// enumeration and is now used for IPAddress::Family and SocketAddress::Family. +{ + enum Family + /// Possible address families for socket addresses. + { + IPv4, + /// IPv4 address family. + #if defined(POCO_HAVE_IPv6) + IPv6, + /// IPv6 address family. + #endif + #if defined(POCO_OS_FAMILY_UNIX) + UNIX_LOCAL + /// UNIX domain socket address family. Available on UNIX/POSIX platforms only. + #endif + }; +}; + + +} } // namespace Poco::Net + + +#endif // Net_SocketDefs_INCLUDED diff --git a/include/Poco/Poco/Net/SocketImpl.h b/include/Poco/Poco/Net/SocketImpl.h new file mode 100644 index 00000000..1c7e5e44 --- /dev/null +++ b/include/Poco/Poco/Net/SocketImpl.h @@ -0,0 +1,560 @@ +// +// SocketImpl.h +// +// Library: Net +// Package: Sockets +// Module: SocketImpl +// +// Definition of the SocketImpl class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_SocketImpl_INCLUDED +#define Net_SocketImpl_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/SocketAddress.h" +#include "Poco/RefCountedObject.h" +#include "Poco/Timespan.h" +#include "Poco/Buffer.h" + + +namespace Poco { +namespace Net { + + +class Net_API SocketImpl: public Poco::RefCountedObject + /// This class encapsulates the Berkeley sockets API. + /// + /// Subclasses implement specific socket types like + /// stream or datagram sockets. + /// + /// You should not create any instances of this class. +{ +public: + enum SelectMode + { + SELECT_READ = 1, + SELECT_WRITE = 2, + SELECT_ERROR = 4 + }; + + virtual SocketImpl* acceptConnection(SocketAddress& clientAddr); + /// Get the next completed connection from the + /// socket's completed connection queue. + /// + /// If the queue is empty, waits until a connection + /// request completes. + /// + /// Returns a new TCP socket for the connection + /// with the client. + /// + /// The client socket's address is returned in clientAddr. + + virtual void connect(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. + /// + /// Can also be used for UDP sockets. In this case, no + /// connection is established. Instead, incoming and outgoing + /// packets are restricted to the specified address. + + virtual void connect(const SocketAddress& address, const Poco::Timespan& timeout); + /// Initializes the socket, sets the socket timeout and + /// establishes a connection to the TCP server at the given address. + + virtual void connectNB(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. Prior to opening the + /// connection the socket is set to nonblocking mode. + + virtual void bind(const SocketAddress& address, bool reuseAddress = false); + /// Bind a local address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + + virtual void bind(const SocketAddress& address, bool reuseAddress, bool reusePort); + /// Bind a local address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + /// + /// If reusePort is true, sets the SO_REUSEPORT + /// socket option. + + virtual void bind6(const SocketAddress& address, bool reuseAddress = false, bool ipV6Only = false); + /// Bind a local IPv6 address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + /// + /// The given address must be an IPv6 address. The + /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket + /// according to the ipV6Only parameter. + /// + /// If the library has not been built with IPv6 support, + /// a Poco::NotImplementedException will be thrown. + + virtual void bind6(const SocketAddress& address, bool reuseAddress, bool reusePort, bool ipV6Only); + /// Bind a local IPv6 address to the socket. + /// + /// This is usually only done when establishing a server + /// socket. TCP clients should not bind a socket to a + /// specific address. + /// + /// If reuseAddress is true, sets the SO_REUSEADDR + /// socket option. + /// + /// If reusePort is true, sets the SO_REUSEPORT + /// socket option. + /// + /// The given address must be an IPv6 address. The + /// IPPROTO_IPV6/IPV6_V6ONLY option is set on the socket + /// according to the ipV6Only parameter. + /// + /// If the library has not been built with IPv6 support, + /// a Poco::NotImplementedException will be thrown. + + virtual void listen(int backlog = 64); + /// Puts the socket into listening state. + /// + /// The socket becomes a passive socket that + /// can accept incoming connection requests. + /// + /// The backlog argument specifies the maximum + /// number of connections that can be queued + /// for this socket. + + virtual void close(); + /// Close the socket. + + virtual void shutdownReceive(); + /// Shuts down the receiving part of the socket connection. + + virtual void shutdownSend(); + /// Shuts down the sending part of the socket connection. + + virtual void shutdown(); + /// Shuts down both the receiving and the sending part + /// of the socket connection. + + virtual int sendBytes(const void* buffer, int length, int flags = 0); + /// Sends the contents of the given buffer through + /// the socket. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + /// + /// Certain socket implementations may also return a negative + /// value denoting a certain condition. + + virtual int sendBytes(const SocketBufVec& buffers, int flags = 0); + /// Receives data from the socket and stores it in buffers. + /// + /// Returns the number of bytes received. + /// + /// Always returns zero for platforms where not implemented. + + virtual int receiveBytes(void* buffer, int length, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// + /// Returns the number of bytes received. + /// + /// Certain socket implementations may also return a negative + /// value denoting a certain condition. + + virtual int receiveBytes(SocketBufVec& buffers, int flags = 0); + /// Receives data from the socket and stores it in buffers. + /// + /// Returns the number of bytes received. + /// + /// Always returns zero for platforms where not implemented. + + virtual int receiveBytes(Poco::Buffer& buffer, int flags = 0, const Poco::Timespan& timeout = 100000); + /// Receives data from the socket and stores it in the buffer. + /// If needed, the buffer will be resized to accomodate the + /// data. Note that this function may impose additional + /// performance penalties due to the check for the available + /// amount of data. + /// + /// Returns the number of bytes received. + + virtual int sendTo(const void* buffer, int length, const SocketAddress& address, int flags = 0); + /// Sends the contents of the given buffer through + /// the socket to the given address. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + + virtual int sendTo(const SocketBufVec& buffers, const SocketAddress& address, int flags = 0); + /// Sends the contents of the buffers through + /// the socket to the given address. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + /// + /// Always returns zero for platforms where not implemented. + + int receiveFrom(void* buffer, int length, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// Stores the native address of the sender in + /// ppSA, and the length of native address in ppSALen. + /// + /// Returns the number of bytes received. + + virtual int receiveFrom(void* buffer, int length, SocketAddress& address, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// Stores the address of the sender in address. + /// + /// Returns the number of bytes received. + + virtual int receiveFrom(SocketBufVec& buffers, SocketAddress& address, int flags = 0); + /// Receives data from the socket and stores it + /// in buffers. + /// Stores the address of the sender in address. + /// + /// Returns the number of bytes received. + /// + /// Always returns zero for platforms where not implemented. + + int receiveFrom(SocketBufVec& buffers, struct sockaddr** ppSA, poco_socklen_t** ppSALen, int flags); + /// Receives data from the socket and stores it + /// in buffers. + /// Stores the native address of the sender in + /// ppSA, and the length of native address in ppSALen. + /// + /// Returns the number of bytes received. + + virtual void sendUrgent(unsigned char data); + /// Sends one byte of urgent data through + /// the socket. + /// + /// The data is sent with the MSG_OOB flag. + /// + /// The preferred way for a socket to receive urgent data + /// is by enabling the SO_OOBINLINE option. + + virtual int available(); + /// Returns the number of bytes available that can be read + /// without causing the socket to block. + + virtual bool poll(const Poco::Timespan& timeout, int mode); + /// Determines the status of the socket, using a + /// call to select(). + /// + /// The mode argument is constructed by combining the values + /// of the SelectMode enumeration. + /// + /// Returns true if the next operation corresponding to + /// mode will not block, false otherwise. + + virtual void setSendBufferSize(int size); + /// Sets the size of the send buffer. + + virtual int getSendBufferSize(); + /// Returns the size of the send buffer. + /// + /// The returned value may be different than the + /// value previously set with setSendBufferSize(), + /// as the system is free to adjust the value. + + virtual void setReceiveBufferSize(int size); + /// Sets the size of the receive buffer. + + virtual int getReceiveBufferSize(); + /// Returns the size of the receive buffer. + /// + /// The returned value may be different than the + /// value previously set with setReceiveBufferSize(), + /// as the system is free to adjust the value. + + virtual void setSendTimeout(const Poco::Timespan& timeout); + /// Sets the send timeout for the socket. + + virtual Poco::Timespan getSendTimeout(); + /// Returns the send timeout for the socket. + /// + /// The returned timeout may be different than the + /// timeout previously set with setSendTimeout(), + /// as the system is free to adjust the value. + + virtual void setReceiveTimeout(const Poco::Timespan& timeout); + /// Sets the receive timeout for the socket. + /// + /// On systems that do not support SO_RCVTIMEO, a + /// workaround using poll() is provided. + + virtual Poco::Timespan getReceiveTimeout(); + /// Returns the receive timeout for the socket. + /// + /// The returned timeout may be different than the + /// timeout previously set with setReceiveTimeout(), + /// as the system is free to adjust the value. + + virtual SocketAddress address(); + /// Returns the IP address and port number of the socket. + + virtual SocketAddress peerAddress(); + /// Returns the IP address and port number of the peer socket. + + void setOption(int level, int option, int value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, unsigned value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, unsigned char value); + /// Sets the socket option specified by level and option + /// to the given integer value. + + void setOption(int level, int option, const Poco::Timespan& value); + /// Sets the socket option specified by level and option + /// to the given time value. + + void setOption(int level, int option, const IPAddress& value); + /// Sets the socket option specified by level and option + /// to the given time value. + + virtual void setRawOption(int level, int option, const void* value, poco_socklen_t length); + /// Sets the socket option specified by level and option + /// to the given time value. + + void getOption(int level, int option, int& value); + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, unsigned& value); + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, unsigned char& value); + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, Poco::Timespan& value); + /// Returns the value of the socket option + /// specified by level and option. + + void getOption(int level, int option, IPAddress& value); + /// Returns the value of the socket option + /// specified by level and option. + + virtual void getRawOption(int level, int option, void* value, poco_socklen_t& length); + /// Returns the value of the socket option + /// specified by level and option. + + void setLinger(bool on, int seconds); + /// Sets the value of the SO_LINGER socket option. + + void getLinger(bool& on, int& seconds); + /// Returns the value of the SO_LINGER socket option. + + void setNoDelay(bool flag); + /// Sets the value of the TCP_NODELAY socket option. + + bool getNoDelay(); + /// Returns the value of the TCP_NODELAY socket option. + + void setKeepAlive(bool flag); + /// Sets the value of the SO_KEEPALIVE socket option. + + bool getKeepAlive(); + /// Returns the value of the SO_KEEPALIVE socket option. + + void setReuseAddress(bool flag); + /// Sets the value of the SO_REUSEADDR socket option. + + bool getReuseAddress(); + /// Returns the value of the SO_REUSEADDR socket option. + + void setReusePort(bool flag); + /// Sets the value of the SO_REUSEPORT socket option. + /// Does nothing if the socket implementation does not + /// support SO_REUSEPORT. + + bool getReusePort(); + /// Returns the value of the SO_REUSEPORT socket option. + /// + /// Returns false if the socket implementation does not + /// support SO_REUSEPORT. + + void setOOBInline(bool flag); + /// Sets the value of the SO_OOBINLINE socket option. + + bool getOOBInline(); + /// Returns the value of the SO_OOBINLINE socket option. + + void setBroadcast(bool flag); + /// Sets the value of the SO_BROADCAST socket option. + + bool getBroadcast(); + /// Returns the value of the SO_BROADCAST socket option. + + virtual void setBlocking(bool flag); + /// Sets the socket in blocking mode if flag is true, + /// disables blocking mode if flag is false. + + virtual bool getBlocking() const; + /// Returns the blocking mode of the socket. + /// This method will only work if the blocking modes of + /// the socket are changed via the setBlocking method! + + virtual bool secure() const; + /// Returns true iff the socket's connection is secure + /// (using SSL or TLS). + + int socketError(); + /// Returns the value of the SO_ERROR socket option. + + poco_socket_t sockfd() const; + /// Returns the socket descriptor for the + /// underlying native socket. + + void ioctl(poco_ioctl_request_t request, int& arg); + /// A wrapper for the ioctl system call. + + void ioctl(poco_ioctl_request_t request, void* arg); + /// A wrapper for the ioctl system call. + +#if defined(POCO_OS_FAMILY_UNIX) + int fcntl(poco_fcntl_request_t request); + /// A wrapper for the fcntl system call. + + int fcntl(poco_fcntl_request_t request, long arg); + /// A wrapper for the fcntl system call. +#endif + + bool initialized() const; + /// Returns true iff the underlying socket is initialized. + +protected: + SocketImpl(); + /// Creates a SocketImpl. + + SocketImpl(poco_socket_t sockfd); + /// Creates a SocketImpl using the given native socket. + + virtual ~SocketImpl(); + /// Destroys the SocketImpl. + /// Closes the socket if it is still open. + + virtual void init(int af); + /// Creates the underlying native socket. + /// + /// Subclasses must implement this method so + /// that it calls initSocket() with the + /// appropriate arguments. + /// + /// The default implementation creates a + /// stream socket. + + void initSocket(int af, int type, int proto = 0); + /// Creates the underlying native socket. + /// + /// The first argument, af, specifies the address family + /// used by the socket, which should be either AF_INET or + /// AF_INET6. + /// + /// The second argument, type, specifies the type of the + /// socket, which can be one of SOCK_STREAM, SOCK_DGRAM + /// or SOCK_RAW. + /// + /// The third argument, proto, is normally set to 0, + /// except for raw sockets. + + void reset(poco_socket_t fd = POCO_INVALID_SOCKET); + /// Allows subclasses to set the socket manually, iff no valid socket is set yet. + + void checkBrokenTimeout(SelectMode mode); + + static int lastError(); + /// Returns the last error code. + + static void error(); + /// Throws an appropriate exception for the last error. + + static void error(const std::string& arg); + /// Throws an appropriate exception for the last error. + + static void error(int code); + /// Throws an appropriate exception for the given error code. + + static void error(int code, const std::string& arg); + /// Throws an appropriate exception for the given error code. + +private: + SocketImpl(const SocketImpl&); + SocketImpl& operator = (const SocketImpl&); + + poco_socket_t _sockfd; + Poco::Timespan _recvTimeout; + Poco::Timespan _sndTimeout; + bool _blocking; + bool _isBrokenTimeout; + + friend class Socket; + friend class SecureSocketImpl; + friend class PollSetImpl; +}; + + +// +// inlines +// +inline poco_socket_t SocketImpl::sockfd() const +{ + return _sockfd; +} + + +inline bool SocketImpl::initialized() const +{ + return _sockfd != POCO_INVALID_SOCKET; +} + + +inline int SocketImpl::lastError() +{ +#if defined(_WIN32) + return WSAGetLastError(); +#else + return errno; +#endif +} + + +inline bool SocketImpl::getBlocking() const +{ + return _blocking; +} + + +} } // namespace Poco::Net + + +#endif // Net_SocketImpl_INCLUDED diff --git a/include/Poco/Poco/Net/StreamSocket.h b/include/Poco/Poco/Net/StreamSocket.h new file mode 100644 index 00000000..1960362b --- /dev/null +++ b/include/Poco/Poco/Net/StreamSocket.h @@ -0,0 +1,215 @@ +// +// StreamSocket.h +// +// Library: Net +// Package: Sockets +// Module: StreamSocket +// +// Definition of the StreamSocket class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Net_StreamSocket_INCLUDED +#define Net_StreamSocket_INCLUDED + + +#include "Poco/Net/Net.h" +#include "Poco/Net/Socket.h" +#include "Poco/FIFOBuffer.h" + + +namespace Poco { +namespace Net { + + +class StreamSocketImpl; + + +class Net_API StreamSocket: public Socket + /// This class provides an interface to a + /// TCP stream socket. +{ +public: + StreamSocket(); + /// Creates an unconnected stream socket. + /// + /// Before sending or receiving data, the socket + /// must be connected with a call to connect(). + + explicit StreamSocket(const SocketAddress& address); + /// Creates a stream socket and connects it to + /// the socket specified by address. + + explicit StreamSocket(SocketAddress::Family family); + /// Creates an unconnected stream socket + /// for the given address family. + /// + /// This is useful if certain socket options + /// (like send and receive buffer) sizes, that must + /// be set before connecting the socket, will be + /// set later on. + + StreamSocket(const Socket& socket); + /// Creates the StreamSocket with the SocketImpl + /// from another socket. The SocketImpl must be + /// a StreamSocketImpl, otherwise an InvalidArgumentException + /// will be thrown. + + virtual ~StreamSocket(); + /// Destroys the StreamSocket. + + StreamSocket& operator = (const Socket& socket); + /// Assignment operator. + /// + /// Releases the socket's SocketImpl and + /// attaches the SocketImpl from the other socket and + /// increments the reference count of the SocketImpl. + + void connect(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. + /// + /// Can also be used for UDP sockets. In this case, no + /// connection is established. Instead, incoming and outgoing + /// packets are restricted to the specified address. + + void connect(const SocketAddress& address, const Poco::Timespan& timeout); + /// Initializes the socket, sets the socket timeout and + /// establishes a connection to the TCP server at the given address. + + void connectNB(const SocketAddress& address); + /// Initializes the socket and establishes a connection to + /// the TCP server at the given address. Prior to opening the + /// connection the socket is set to nonblocking mode. + + void shutdownReceive(); + /// Shuts down the receiving part of the socket connection. + + void shutdownSend(); + /// Shuts down the sending part of the socket connection. + + void shutdown(); + /// Shuts down both the receiving and the sending part + /// of the socket connection. + + int sendBytes(const void* buffer, int length, int flags = 0); + /// Sends the contents of the given buffer through + /// the socket. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + /// + /// Certain socket implementations may also return a negative + /// value denoting a certain condition. + /// + /// The flags parameter can be used to pass system-defined flags + /// for send() like MSG_OOB. + + int sendBytes(const SocketBufVec& buffer, int flags = 0); + /// Sends the contents of the given buffers through + /// the socket. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + /// + /// The flags parameter can be used to pass system-defined flags + /// for send() like MSG_OOB. + + int sendBytes(Poco::FIFOBuffer& buffer); + /// Sends the contents of the given buffer through + /// the socket. FIFOBuffer has writable/readable transition + /// notifications which may be enabled to notify the caller when + /// the buffer transitions between empty, partially full and + /// full states. + /// + /// Returns the number of bytes sent, which may be + /// less than the number of bytes specified. + /// + /// Certain socket implementations may also return a negative + /// value denoting a certain condition. + /// + /// The flags parameter can be used to pass system-defined flags + /// for send() like MSG_OOB. + + int receiveBytes(void* buffer, int length, int flags = 0); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. + /// + /// Returns the number of bytes received. + /// A return value of 0 means a graceful shutdown + /// of the connection from the peer. + /// + /// Throws a TimeoutException if a receive timeout has + /// been set and nothing is received within that interval. + /// Throws a NetException (or a subclass) in case of other errors. + /// + /// The flags parameter can be used to pass system-defined flags + /// for recv() like MSG_OOB, MSG_PEEK or MSG_WAITALL. + + int receiveBytes(SocketBufVec& buffer, int flags = 0); + /// Receives data from the socket and stores it in buffers. + /// + /// Returns the number of bytes received. + /// + /// The flags parameter can be used to pass system-defined flags + /// for recv() like MSG_OOB, MSG_PEEK or MSG_WAITALL. + + int receiveBytes(Poco::Buffer& buffer, int flags = 0, const Poco::Timespan& timeout = 100000); + /// Receives data from the socket and stores it in buffers. + /// + /// Returns the number of bytes received. + /// + /// The flags parameter can be used to pass system-defined flags + /// for recv() like MSG_OOB, MSG_PEEK or MSG_WAITALL. + + int receiveBytes(Poco::FIFOBuffer& buffer); + /// Receives data from the socket and stores it + /// in buffer. Up to length bytes are received. FIFOBuffer has + /// writable/readable transition notifications which may be enabled + /// to notify the caller when the buffer transitions between empty, + /// partially full and full states. + /// + /// Returns the number of bytes received. + /// A return value of 0 means a graceful shutdown + /// of the connection from the peer. + /// + /// Throws a TimeoutException if a receive timeout has + /// been set and nothing is received within that interval. + /// Throws a NetException (or a subclass) in case of other errors. + + void sendUrgent(unsigned char data); + /// Sends one byte of urgent data through + /// the socket. + /// + /// The data is sent with the MSG_OOB flag. + /// + /// The preferred way for a socket to receive urgent data + /// is by enabling the SO_OOBINLINE option. + + StreamSocket(SocketImpl* pImpl); + /// Creates the Socket and attaches the given SocketImpl. + /// The socket takes ownership of the SocketImpl. + /// + /// The SocketImpl must be a StreamSocketImpl, otherwise + /// an InvalidArgumentException will be thrown. + +private: + enum + { + BUFFER_SIZE = 1024 + }; + + friend class ServerSocket; + friend class SocketIOS; +}; + + +} } // namespace Poco::Net + + +#endif // Net_StreamSocket_INCLUDED diff --git a/include/Poco/Poco/Net/Utility.h b/include/Poco/Poco/Net/Utility.h new file mode 100644 index 00000000..b1d0073c --- /dev/null +++ b/include/Poco/Poco/Net/Utility.h @@ -0,0 +1,52 @@ +// +// Utility.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: Utility +// +// Definition of the Utility class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_Utility_INCLUDED +#define NetSSL_Utility_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/Context.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_API Utility + /// This class provides various helper functions for working + /// with the OpenSSL library. +{ +public: + static Context::VerificationMode convertVerificationMode(const std::string& verMode); + /// Non-case sensitive conversion of a string to a VerificationMode enum. + /// If verMode is illegal an InvalidArgumentException is thrown. + + static std::string convertCertificateError(long errCode); + /// Converts an SSL certificate handling error code into an error message. + + static std::string getLastError(); + /// Returns the last error from the error stack + + static void clearErrorStack(); + /// Clears the error stack +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_Utility_INCLUDED diff --git a/include/Poco/Poco/Net/VerificationErrorArgs.h b/include/Poco/Poco/Net/VerificationErrorArgs.h new file mode 100644 index 00000000..2503ae28 --- /dev/null +++ b/include/Poco/Poco/Net/VerificationErrorArgs.h @@ -0,0 +1,119 @@ +// +// VerificationErrorArgs.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: VerificationErrorArgs +// +// Definition of the VerificationErrorArgs class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_VerificationErrorArgs_INCLUDED +#define NetSSL_VerificationErrorArgs_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/X509Certificate.h" +#include "Poco/Net/Context.h" + + +namespace Poco { +namespace Net { + + +class NetSSL_API VerificationErrorArgs + /// A utility class for certificate error handling. +{ +public: + VerificationErrorArgs(Poco::Net::Context::Ptr pContext, const X509Certificate& cert, int errDepth, int errNum, const std::string& errMsg); + /// Creates the VerificationErrorArgs. _ignoreError is per default set to false. + + ~VerificationErrorArgs(); + /// Destroys the VerificationErrorArgs. + + Poco::Net::Context::Ptr context() const; + /// Returns the Context of the underlying connection causing the error. + + const X509Certificate& certificate() const; + /// Returns the certificate that caused the error. + + int errorDepth() const; + /// Returns the position of the certificate in the certificate chain. + + int errorNumber() const; + /// Returns the id of the error + + const std::string& errorMessage() const; + /// Returns the textual presentation of the errorNumber. + + void setIgnoreError(bool ignoreError); + /// setIgnoreError to true, if a verification error is judged non-fatal by the user. + + bool getIgnoreError() const; + /// returns the value of _ignoreError + +private: + Poco::Net::Context::Ptr _pContext; + X509Certificate _cert; + int _errorDepth; + int _errorNumber; + std::string _errorMessage; /// Textual representation of the _errorNumber + bool _ignoreError; +}; + + +// +// inlines +// +inline Poco::Net::Context::Ptr VerificationErrorArgs::context() const +{ + return _pContext; +} + + +inline const X509Certificate& VerificationErrorArgs::certificate() const +{ + return _cert; +} + + +inline int VerificationErrorArgs::errorDepth() const +{ + return _errorDepth; +} + + +inline int VerificationErrorArgs::errorNumber() const +{ + return _errorNumber; +} + + +inline const std::string& VerificationErrorArgs::errorMessage() const +{ + return _errorMessage; +} + + +inline void VerificationErrorArgs::setIgnoreError(bool ignoreError) +{ + _ignoreError = ignoreError; +} + + +inline bool VerificationErrorArgs::getIgnoreError() const +{ + return _ignoreError; +} + + +} } // namespace Poco::Net + + +#endif // NetSSL_VerificationErrorArgs_INCLUDED diff --git a/include/Poco/Poco/Net/X509Certificate.h b/include/Poco/Poco/Net/X509Certificate.h new file mode 100644 index 00000000..741ba0ef --- /dev/null +++ b/include/Poco/Poco/Net/X509Certificate.h @@ -0,0 +1,114 @@ +// +// X509Certificate.h +// +// Library: NetSSL_OpenSSL +// Package: SSLCore +// Module: X509Certificate +// +// Definition of the X509Certificate class. +// +// Copyright (c) 2006-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef NetSSL_X509Certificate_INCLUDED +#define NetSSL_X509Certificate_INCLUDED + + +#include "Poco/Net/NetSSL.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Crypto/X509Certificate.h" +#include "Poco/DateTime.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { +namespace Net { + + +class HostEntry; + + +class NetSSL_API X509Certificate: public Poco::Crypto::X509Certificate + /// This class extends Poco::Crypto::X509Certificate with the + /// feature to validate a certificate. +{ +public: + explicit X509Certificate(std::istream& istr); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a stream. + + explicit X509Certificate(const std::string& path); + /// Creates the X509Certificate object by reading + /// a certificate in PEM format from a file. + + explicit X509Certificate(X509* pCert); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. + + X509Certificate(X509* pCert, bool shared); + /// Creates the X509Certificate from an existing + /// OpenSSL certificate. Ownership is taken of + /// the certificate. If shared is true, the + /// certificate's reference count is incremented. + + X509Certificate(const Poco::Crypto::X509Certificate& cert); + /// Creates the certificate by copying another one. + + X509Certificate(const X509Certificate& cert); + /// Creates the certificate by copying another one. + + X509Certificate(X509Certificate&& cert) noexcept; + /// Creates the certificate by moving another one. + + X509Certificate& operator = (const Poco::Crypto::X509Certificate& cert); + /// Assigns a certificate. + + X509Certificate& operator = (const X509Certificate& cert); + /// Assigns a certificate. + + X509Certificate& operator = (X509Certificate&& cert) noexcept; + /// Moves a certificate. + + ~X509Certificate(); + /// Destroys the X509Certificate. + + bool verify(const std::string& hostName) const; + /// Verifies the validity of the certificate against the host name. + /// + /// For this check to be successful, the certificate must contain + /// a domain name that matches the domain name + /// of the host. + /// + /// Returns true if verification succeeded, or false otherwise. + + static bool verify(const Poco::Crypto::X509Certificate& cert, const std::string& hostName); + /// Verifies the validity of the certificate against the host name. + /// + /// For this check to be successful, the certificate must contain + /// a domain name that matches the domain name + /// of the host. + /// + /// Returns true if verification succeeded, or false otherwise. + +protected: + static bool containsWildcards(const std::string& commonName); + static bool matchWildcard(const std::string& alias, const std::string& hostName); + +private: + enum + { + NAME_BUFFER_SIZE = 256 + }; +}; + + +} } // namespace Poco::Net + + +#endif // NetSSL_X509Certificate_INCLUDED diff --git a/include/Poco/Poco/Net/desktop.ini b/include/Poco/Poco/Net/desktop.ini new file mode 100644 index 00000000..2f68eac0 --- /dev/null +++ b/include/Poco/Poco/Net/desktop.ini @@ -0,0 +1,30 @@ +[LocalizedFileNames] +HTTPSClientSession.h=@HTTPSClientSession.h,0 +NetSSL.h=@NetSSL.h,0 +Net.h=@Net.h,0 +Utility.h=@Utility.h,0 +Context.h=@Context.h,0 +X509Certificate.h=@X509Certificate.h,0 +HTTPClientSession.h=@HTTPClientSession.h,0 +HTTPSession.h=@HTTPSession.h,0 +StreamSocket.h=@StreamSocket.h,0 +Socket.h=@Socket.h,0 +SocketImpl.h=@SocketImpl.h,0 +SocketDefs.h=@SocketDefs.h,0 +SocketAddress.h=@SocketAddress.h,0 +SocketAddressImpl.h=@SocketAddressImpl.h,0 +IPAddress.h=@IPAddress.h,0 +IPAddressImpl.h=@IPAddressImpl.h,0 +HTTPBasicCredentials.h=@HTTPBasicCredentials.h,0 +HTTPDigestCredentials.h=@HTTPDigestCredentials.h,0 +HTTPAuthenticationParams.h=@HTTPAuthenticationParams.h,0 +NameValueCollection.h=@NameValueCollection.h,0 +HTTPNTLMCredentials.h=@HTTPNTLMCredentials.h,0 +SSPINTLMCredentials.h=@SSPINTLMCredentials.h,0 +NTLMCredentials.h=@NTLMCredentials.h,0 +Session.h=@Session.h,0 +HTTPRequest.h=@HTTPRequest.h,0 +HTTPMessage.h=@HTTPMessage.h,0 +MessageHeader.h=@MessageHeader.h,0 +HTTPResponse.h=@HTTPResponse.h,0 +HTTPCookie.h=@HTTPCookie.h,0 diff --git a/include/Poco/Poco/NotificationStrategy.h b/include/Poco/Poco/NotificationStrategy.h new file mode 100644 index 00000000..85650767 --- /dev/null +++ b/include/Poco/Poco/NotificationStrategy.h @@ -0,0 +1,112 @@ +// +// NotificationStrategy.h +// +// Library: Foundation +// Package: Events +// Module: NotificationStrategy +// +// Definition of the NotificationStrategy interface. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_NotificationStrategy_INCLUDED +#define Foundation_NotificationStrategy_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +template +class NotificationStrategy + /// The interface that all notification strategies must implement. + /// + /// Note: Event is based on policy-driven design, so every strategy implementation + /// must provide all the methods from this interface (otherwise: compile errors) + /// but does not need to inherit from NotificationStrategy. +{ +public: + using DelegateHandle = TDelegate*; + + NotificationStrategy() + { + } + + virtual ~NotificationStrategy() + { + } + + virtual void notify(const void* sender, TArgs& arguments) = 0; + /// Sends a notification to all registered delegates. + + virtual DelegateHandle add(const TDelegate& delegate) = 0; + /// Adds a delegate to the strategy. + + virtual void remove(const TDelegate& delegate) = 0; + /// Removes a delegate from the strategy, if found. + /// Does nothing if the delegate has not been added. + + virtual void remove(DelegateHandle delegateHandle) = 0; + /// Removes a delegate from the strategy, if found. + /// Does nothing if the delegate has not been added. + + virtual void clear() = 0; + /// Removes all delegates from the strategy. + + virtual bool empty() const = 0; + /// Returns false if the strategy contains at least one delegate. +}; + + +template +class NotificationStrategy + /// The interface that all notification strategies must implement. + /// + /// Note: Event is based on policy-driven design, so every strategy implementation + /// must provide all the methods from this interface (otherwise: compile errors) + /// but does not need to inherit from NotificationStrategy. +{ +public: + using DelegateHandle = TDelegate*; + + NotificationStrategy() + { + } + + virtual ~NotificationStrategy() + { + } + + virtual void notify(const void* sender) = 0; + /// Sends a notification to all registered delegates. + + virtual DelegateHandle add(const TDelegate& delegate) = 0; + /// Adds a delegate to the strategy. + + virtual void remove(const TDelegate& delegate) = 0; + /// Removes a delegate from the strategy, if found. + /// Does nothing if the delegate has not been added. + + virtual void remove(DelegateHandle delegateHandle) = 0; + /// Removes a delegate from the strategy, if found. + /// Does nothing if the delegate has not been added. + + virtual void clear() = 0; + /// Removes all delegates from the strategy. + + virtual bool empty() const = 0; + /// Returns false if the strategy contains at least one delegate. +}; + + +} // namespace Poco + + +#endif // Foundation_NotificationStrategy_INCLUDED diff --git a/include/Poco/Poco/NullStream.h b/include/Poco/Poco/NullStream.h new file mode 100644 index 00000000..52c292df --- /dev/null +++ b/include/Poco/Poco/NullStream.h @@ -0,0 +1,90 @@ +// +// NullStream.h +// +// Library: Foundation +// Package: Streams +// Module: NullStream +// +// Definition of the NullStreamBuf, NullInputStream and NullOutputStream classes. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_NullStream_INCLUDED +#define Foundation_NullStream_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/UnbufferedStreamBuf.h" +#include +#include + + +namespace Poco { + + +class Foundation_API NullStreamBuf: public UnbufferedStreamBuf + /// This stream buffer discards all characters written to it. + /// Any read operation immediately yields EOF. +{ +public: + NullStreamBuf(); + /// Creates a NullStreamBuf. + + ~NullStreamBuf(); + /// Destroys the NullStreamBuf. + +protected: + int readFromDevice(); + int writeToDevice(char c); +}; + + +class Foundation_API NullIOS: public virtual std::ios + /// The base class for NullInputStream and NullOutputStream. + /// + /// This class is needed to ensure the correct initialization + /// order of the stream buffer and base classes. +{ +public: + NullIOS(); + ~NullIOS(); + +protected: + NullStreamBuf _buf; +}; + + +class Foundation_API NullInputStream: public NullIOS, public std::istream + /// Any read operation from this stream immediately + /// yields EOF. +{ +public: + NullInputStream(); + /// Creates the NullInputStream. + + ~NullInputStream(); + /// Destroys the NullInputStream. +}; + + +class Foundation_API NullOutputStream: public NullIOS, public std::ostream + /// This stream discards all characters written to it. +{ +public: + NullOutputStream(); + /// Creates the NullOutputStream. + + ~NullOutputStream(); + /// Destroys the NullOutputStream. +}; + + +} // namespace Poco + + +#endif // Foundation_NullStream_INCLUDED diff --git a/include/Poco/Poco/Path.h b/include/Poco/Poco/Path.h new file mode 100644 index 00000000..30e465a5 --- /dev/null +++ b/include/Poco/Poco/Path.h @@ -0,0 +1,507 @@ +// +// Path.h +// +// Library: Foundation +// Package: Filesystem +// Module: Path +// +// Definition of the Path class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Path_INCLUDED +#define Foundation_Path_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +class Foundation_API Path + /// This class represents filesystem paths in a + /// platform-independent manner. + /// Unix, Windows and OpenVMS all use a different + /// syntax for filesystem paths. + /// This class can work with all three formats. + /// A path is made up of an optional node name + /// (only Windows and OpenVMS), an optional + /// device name (also only Windows and OpenVMS), + /// a list of directory names and an optional + /// filename. +{ +public: + enum Style + { + PATH_UNIX, /// Unix-style path + PATH_URI = PATH_UNIX, /// URI-style path, same as Unix-style + PATH_WINDOWS, /// Windows-style path + PATH_VMS, /// VMS-style path + PATH_NATIVE, /// The current platform's native style + PATH_GUESS /// Guess the style by examining the path + }; + + typedef std::vector StringVec; + + Path(); + /// Creates an empty relative path. + + Path(bool absolute); + /// Creates an empty absolute or relative path. + + Path(const char* path); + /// Creates a path from a string. + + Path(const char* path, Style style); + /// Creates a path from a string. + + Path(const std::string& path); + /// Creates a path from a string. + + Path(const std::string& path, Style style); + /// Creates a path from a string. + + Path(const Path& path); + /// Copy constructor + + Path(Path&& path) noexcept; + /// Move constructor. + + Path(const Path& parent, const std::string& fileName); + /// Creates a path from a parent path and a filename. + /// The parent path is expected to reference a directory. + + Path(const Path& parent, const char* fileName); + /// Creates a path from a parent path and a filename. + /// The parent path is expected to reference a directory. + + Path(const Path& parent, const Path& relative); + /// Creates a path from a parent path and a relative path. + /// The parent path is expected to reference a directory. + /// The relative path is appended to the parent path. + + ~Path(); + /// Destroys the Path. + + Path& operator = (const Path& path); + /// Assignment operator. + + Path& operator = (Path&& path) noexcept; + /// Move assignment. + + Path& operator = (const std::string& path); + /// Assigns a string containing a path in native format. + + Path& operator = (const char* path); + /// Assigns a string containing a path in native format. + + void swap(Path& path); + /// Swaps the path with another one. + + Path& assign(const std::string& path); + /// Assigns a string containing a path in native format. + + Path& assign(const std::string& path, Style style); + /// Assigns a string containing a path. + + Path& assign(const Path& path); + /// Assigns the given path. + + Path& assign(const char* path); + /// Assigns a string containing a path. + + std::string toString() const; + /// Returns a string containing the path in native format. + + std::string toString(Style style) const; + /// Returns a string containing the path in the given format. + + Path& parse(const std::string& path); + /// Same as assign(). + + Path& parse(const std::string& path, Style style); + /// Assigns a string containing a path. + + bool tryParse(const std::string& path); + /// Tries to interpret the given string as a path + /// in native format. + /// If the path is syntactically valid, assigns the + /// path and returns true. Otherwise leaves the + /// object unchanged and returns false. + + bool tryParse(const std::string& path, Style style); + /// Tries to interpret the given string as a path, + /// according to the given style. + /// If the path is syntactically valid, assigns the + /// path and returns true. Otherwise leaves the + /// object unchanged and returns false. + + Path& parseDirectory(const std::string& path); + /// The resulting path always refers to a directory and + /// the filename part is empty. + + Path& parseDirectory(const std::string& path, Style style); + /// The resulting path always refers to a directory and + /// the filename part is empty. + + Path& makeDirectory(); + /// If the path contains a filename, the filename is appended + /// to the directory list and cleared. Thus the resulting path + /// always refers to a directory. + + Path& makeFile(); + /// If the path contains no filename, the last directory + /// becomes the filename. + + Path& makeParent(); + /// Makes the path refer to its parent. + + Path& makeAbsolute(); + /// Makes the path absolute if it is relative. + /// The current working directory is taken as base directory. + + Path& makeAbsolute(const Path& base); + /// Makes the path absolute if it is relative. + /// The given path is taken as base. + + Path& append(const Path& path); + /// Appends the given path. + + Path& resolve(const Path& path); + /// Resolves the given path against the current one. + /// + /// If the given path is absolute, it replaces the current one. + /// Otherwise, the relative path is appended to the current path. + + bool isAbsolute() const; + /// Returns true iff the path is absolute. + + bool isRelative() const; + /// Returns true iff the path is relative. + + bool isDirectory() const; + /// Returns true iff the path references a directory + /// (the filename part is empty). + + bool isFile() const; + /// Returns true iff the path references a file + /// (the filename part is not empty). + + Path& setNode(const std::string& node); + /// Sets the node name. + /// Setting a non-empty node automatically makes + /// the path an absolute one. + + const std::string& getNode() const; + /// Returns the node name. + + Path& setDevice(const std::string& device); + /// Sets the device name. + /// Setting a non-empty device automatically makes + /// the path an absolute one. + + const std::string& getDevice() const; + /// Returns the device name. + + int depth() const; + /// Returns the number of directories in the directory list. + + const std::string& directory(int n) const; + /// Returns the n'th directory in the directory list. + /// If n == depth(), returns the filename. + + const std::string& operator [] (int n) const; + /// Returns the n'th directory in the directory list. + /// If n == depth(), returns the filename. + + Path& pushDirectory(const std::string& dir); + /// Adds a directory to the directory list. + + Path& popDirectory(); + /// Removes the last directory from the directory list. + + Path& popFrontDirectory(); + /// Removes the first directory from the directory list. + + Path& setFileName(const std::string& name); + /// Sets the filename. + + const std::string& getFileName() const; + /// Returns the filename. + + Path& setBaseName(const std::string& name); + /// Sets the basename part of the filename and + /// does not change the extension. + + std::string getBaseName() const; + /// Returns the basename (the filename sans + /// extension) of the path. + + Path& setExtension(const std::string& extension); + /// Sets the filename extension. + + std::string getExtension() const; + /// Returns the filename extension. + + const std::string& version() const; + /// Returns the file version. VMS only. + + Path& clear(); + /// Clears all components. + + Path parent() const; + /// Returns a path referring to the path's + /// directory. + + Path absolute() const; + /// Returns an absolute variant of the path, + /// taking the current working directory as base. + + Path absolute(const Path& base) const; + /// Returns an absolute variant of the path, + /// taking the given path as base. + + static Path forDirectory(const std::string& path); + /// Creates a path referring to a directory. + + static Path forDirectory(const std::string& path, Style style); + /// Creates a path referring to a directory. + + static char separator(); + /// Returns the platform's path name separator, which separates + /// the components (names) in a path. + /// + /// On Unix systems, this is the slash '/'. On Windows systems, + /// this is the backslash '\'. On OpenVMS systems, this is the + /// period '.'. + + static char pathSeparator(); + /// Returns the platform's path separator, which separates + /// single paths in a list of paths. + /// + /// On Unix systems, this is the colon ':'. On Windows systems, + /// this is the semicolon ';'. On OpenVMS systems, this is the + /// comma ','. + + static std::string current(); + /// Returns the current working directory. + + static std::string home(); + /// Returns the user's home directory. + + static std::string configHome(); + /// Returns the user's config directory. + /// + /// On Unix systems, this is the '~/.config/'. On Windows systems, + /// this is '%APPDATA%'. + + static std::string dataHome(); + /// Returns the user's data directory. + /// + /// On Unix systems, this is the '~/.local/share/'. On Windows systems, + /// this is '%APPDATA%'. + + static std::string tempHome(); + /// Returns the user's temp directory. + /// + /// On Unix systems, this is the '~/.local/temp/'. + + static std::string cacheHome(); + /// Returns the user's cache directory. + /// + /// On Unix systems, this is the '~/.cache/'. On Windows systems, + /// this is '%APPDATA%'. + + static std::string temp(); + /// Returns the temporary directory. + + static std::string config(); + /// Returns the systemwide config directory. + /// + /// On Unix systems, this is the '/etc/'. + + static std::string null(); + /// Returns the name of the null device. + + static std::string expand(const std::string& path); + /// Expands all environment variables contained in the path. + /// + /// On Unix, a tilde as first character in the path is + /// replaced with the path to user's home directory. + + static void listRoots(std::vector& roots); + /// Fills the vector with all filesystem roots available on the + /// system. On Unix, there is exactly one root, "/". + /// On Windows, the roots are the drive letters. + /// On OpenVMS, the roots are the mounted disks. + + static bool find(StringVec::const_iterator it, StringVec::const_iterator end, const std::string& name, Path& path); + /// Searches the file with the given name in the locations (paths) specified + /// by it and end. A relative path may be given in name. + /// + /// If the file is found in one of the locations, the complete + /// path of the file is stored in the path given as argument and true is returned. + /// Otherwise false is returned and the path argument remains unchanged. + + static bool find(const std::string& pathList, const std::string& name, Path& path); + /// Searches the file with the given name in the locations (paths) specified + /// in pathList. The paths in pathList must be delimited by the platform's + /// path separator (see pathSeparator()). A relative path may be given in name. + /// + /// If the file is found in one of the locations, the complete + /// path of the file is stored in the path given as argument and true is returned. + /// Otherwise false is returned and the path argument remains unchanged. + + static std::string transcode(const std::string& path); + /// On Windows, this function converts a string (usually containing a path) + /// encoded in UTF-8 into a string encoded in the current Windows code page. + /// + /// This function should be used for every string passed as a file name to + /// a string stream or fopen(). + /// + /// On all other platforms, or if POCO has not been compiled with Windows UTF-8 + /// support, this function returns the string unchanged. + +protected: + void parseUnix(const std::string& path); + void parseWindows(const std::string& path); + void parseVMS(const std::string& path); + void parseGuess(const std::string& path); + std::string buildUnix() const; + std::string buildWindows() const; + std::string buildVMS() const; + +private: + std::string _node; + std::string _device; + std::string _name; + std::string _version; + StringVec _dirs; + bool _absolute; +}; + + +// +// inlines +// +inline bool Path::isAbsolute() const +{ + return _absolute; +} + + +inline bool Path::isRelative() const +{ + return !_absolute; +} + + +inline bool Path::isDirectory() const +{ + return _name.empty(); +} + + +inline bool Path::isFile() const +{ + return !_name.empty(); +} + + +inline Path& Path::parse(const std::string& path) +{ + return assign(path); +} + + +inline Path& Path::parse(const std::string& path, Style style) +{ + return assign(path, style); +} + + +inline const std::string& Path::getNode() const +{ + return _node; +} + + +inline const std::string& Path::getDevice() const +{ + return _device; +} + + +inline const std::string& Path::getFileName() const +{ + return _name; +} + + +inline int Path::depth() const +{ + return int(_dirs.size()); +} + + +inline const std::string& Path::version() const +{ + return _version; +} + + +inline Path Path::forDirectory(const std::string& path) +{ + Path p; + return p.parseDirectory(path); +} + + +inline Path Path::forDirectory(const std::string& path, Style style) +{ + Path p; + return p.parseDirectory(path, style); +} + + +inline char Path::separator() +{ +#if defined(POCO_OS_FAMILY_VMS) + return '.'; +#elif defined(POCO_OS_FAMILY_WINDOWS) + return '\\'; +#else + return '/'; +#endif +} + + +inline char Path::pathSeparator() +{ +#if defined(POCO_OS_FAMILY_VMS) + return ','; +#elif defined(POCO_OS_FAMILY_WINDOWS) + return ';'; +#else + return ':'; +#endif +} + + +inline void swap(Path& p1, Path& p2) +{ + p1.swap(p2); +} + + +} // namespace Poco + + +#endif // Foundation_Path_INCLUDED diff --git a/include/Poco/Poco/Platform.h b/include/Poco/Poco/Platform.h new file mode 100644 index 00000000..9a945f31 --- /dev/null +++ b/include/Poco/Poco/Platform.h @@ -0,0 +1,290 @@ +// +// Platform.h +// +// Library: Foundation +// Package: Core +// Module: Platform +// +// Platform and architecture identification macros. +// +// NOTE: This file may be included from both C++ and C code, so it +// must not contain any C++ specific things. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Platform_INCLUDED +#define Foundation_Platform_INCLUDED + + +// +// Platform Identification +// +#define POCO_OS_FREE_BSD 0x0001 +#define POCO_OS_AIX 0x0002 +#define POCO_OS_HPUX 0x0003 +#define POCO_OS_TRU64 0x0004 +#define POCO_OS_LINUX 0x0005 +#define POCO_OS_MAC_OS_X 0x0006 +#define POCO_OS_NET_BSD 0x0007 +#define POCO_OS_OPEN_BSD 0x0008 +#define POCO_OS_IRIX 0x0009 +#define POCO_OS_SOLARIS 0x000a +#define POCO_OS_QNX 0x000b +#define POCO_OS_VXWORKS 0x000c +#define POCO_OS_CYGWIN 0x000d +#define POCO_OS_NACL 0x000e +#define POCO_OS_ANDROID 0x000f +#define POCO_OS_UNKNOWN_UNIX 0x00ff +#define POCO_OS_WINDOWS_NT 0x1001 +#define POCO_OS_WINDOWS_CE 0x1011 +#define POCO_OS_VMS 0x2001 + + +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS_FAMILY_BSD 1 + #define POCO_OS POCO_OS_FREE_BSD +#elif defined(_AIX) || defined(__TOS_AIX__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_AIX +#elif defined(hpux) || defined(_hpux) || defined(__hpux) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_HPUX +#elif defined(__digital__) || defined(__osf__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_TRU64 +#elif defined(__NACL__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_NACL +#elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__TOS_LINUX__) || defined(EMSCRIPTEN) + #define POCO_OS_FAMILY_UNIX 1 + #if defined(__ANDROID__) + #define POCO_OS POCO_OS_ANDROID + #else + #define POCO_OS POCO_OS_LINUX + #endif +#elif defined(__APPLE__) || defined(__TOS_MACOS__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS_FAMILY_BSD 1 + #define POCO_OS POCO_OS_MAC_OS_X +#elif defined(__NetBSD__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS_FAMILY_BSD 1 + #define POCO_OS POCO_OS_NET_BSD +#elif defined(__OpenBSD__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS_FAMILY_BSD 1 + #define POCO_OS POCO_OS_OPEN_BSD +#elif defined(sgi) || defined(__sgi) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_IRIX +#elif defined(sun) || defined(__sun) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_SOLARIS +#elif defined(__QNX__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_QNX +#elif defined(__CYGWIN__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_CYGWIN +#elif defined(POCO_VXWORKS) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_VXWORKS +#elif defined(unix) || defined(__unix) || defined(__unix__) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_UNKNOWN_UNIX +#elif defined(_WIN32_WCE) + #define POCO_OS_FAMILY_WINDOWS 1 + #define POCO_OS POCO_OS_WINDOWS_CE +#elif defined(_WIN32) || defined(_WIN64) + #define POCO_OS_FAMILY_WINDOWS 1 + #define POCO_OS POCO_OS_WINDOWS_NT +#elif defined(__VMS) + #define POCO_OS_FAMILY_VMS 1 + #define POCO_OS POCO_OS_VMS +#endif + + +#if !defined(POCO_OS) + #error "Unknown Platform." +#endif + + +// +// Hardware Architecture and Byte Order +// +#define POCO_ARCH_ALPHA 0x01 +#define POCO_ARCH_IA32 0x02 +#define POCO_ARCH_IA64 0x03 +#define POCO_ARCH_MIPS 0x04 +#define POCO_ARCH_HPPA 0x05 +#define POCO_ARCH_PPC 0x06 +#define POCO_ARCH_POWER 0x07 +#define POCO_ARCH_SPARC 0x08 +#define POCO_ARCH_AMD64 0x09 +#define POCO_ARCH_ARM 0x0a +#define POCO_ARCH_M68K 0x0b +#define POCO_ARCH_S390 0x0c +#define POCO_ARCH_SH 0x0d +#define POCO_ARCH_NIOS2 0x0e +#define POCO_ARCH_AARCH64 0x0f +#define POCO_ARCH_ARM64 0x0f // same as POCO_ARCH_AARCH64 +#define POCO_ARCH_RISCV64 0x10 +#define POCO_ARCH_RISCV32 0x11 + + +#if defined(__ALPHA) || defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) + #define POCO_ARCH POCO_ARCH_ALPHA + #define POCO_ARCH_LITTLE_ENDIAN 1 +#elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(EMSCRIPTEN) + #define POCO_ARCH POCO_ARCH_IA32 + #define POCO_ARCH_LITTLE_ENDIAN 1 +#elif defined(_IA64) || defined(__IA64__) || defined(__ia64__) || defined(__ia64) || defined(_M_IA64) + #define POCO_ARCH POCO_ARCH_IA64 + #if defined(hpux) || defined(_hpux) + #define POCO_ARCH_BIG_ENDIAN 1 + #else + #define POCO_ARCH_LITTLE_ENDIAN 1 + #endif +#elif defined(__x86_64__) || defined(_M_X64) + #define POCO_ARCH POCO_ARCH_AMD64 + #define POCO_ARCH_LITTLE_ENDIAN 1 +#elif defined(__mips__) || defined(__mips) || defined(__MIPS__) || defined(_M_MRX000) + #define POCO_ARCH POCO_ARCH_MIPS + #if defined(POCO_OS_FAMILY_WINDOWS) + // Is this OK? Supports windows only little endian?? + #define POCO_ARCH_LITTLE_ENDIAN 1 + #elif defined(__MIPSEB__) || defined(_MIPSEB) || defined(__MIPSEB) + #define POCO_ARCH_BIG_ENDIAN 1 + #elif defined(__MIPSEL__) || defined(_MIPSEL) || defined(__MIPSEL) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #error "MIPS but neither MIPSEL nor MIPSEB?" + #endif +#elif defined(__hppa) || defined(__hppa__) + #define POCO_ARCH POCO_ARCH_HPPA + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__PPC) || defined(__POWERPC__) || defined(__powerpc) || defined(__PPC__) || \ + defined(__powerpc__) || defined(__ppc__) || defined(__ppc) || defined(_ARCH_PPC) || defined(_M_PPC) + #define POCO_ARCH POCO_ARCH_PPC + #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #define POCO_ARCH_BIG_ENDIAN 1 + #endif +#elif defined(_POWER) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) || defined(_ARCH_PWR3) || \ + defined(_ARCH_PWR4) || defined(__THW_RS6000) + #define POCO_ARCH POCO_ARCH_POWER + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__sparc__) || defined(__sparc) || defined(sparc) + #define POCO_ARCH POCO_ARCH_SPARC + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__arm__) || defined(__arm) || defined(ARM) || defined(_ARM_) || defined(__ARM__) || defined(_M_ARM) + #define POCO_ARCH POCO_ARCH_ARM + #if defined(__ARMEB__) + #define POCO_ARCH_BIG_ENDIAN 1 + #else + #define POCO_ARCH_LITTLE_ENDIAN 1 + #endif +#elif defined(__arm64__) || defined(__arm64) + #define POCO_ARCH POCO_ARCH_ARM64 + #if defined(__ARMEB__) + #define POCO_ARCH_BIG_ENDIAN 1 + #elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + #define POCO_ARCH_BIG_ENDIAN 1 + #else + #define POCO_ARCH_LITTLE_ENDIAN 1 + #endif +#elif defined(__m68k__) + #define POCO_ARCH POCO_ARCH_M68K + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__s390__) + #define POCO_ARCH POCO_ARCH_S390 + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__sh__) || defined(__sh) || defined(SHx) || defined(_SHX_) + #define POCO_ARCH POCO_ARCH_SH + #if defined(__LITTLE_ENDIAN__) || (POCO_OS == POCO_OS_WINDOWS_CE) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #define POCO_ARCH_BIG_ENDIAN 1 + #endif +#elif defined (nios2) || defined(__nios2) || defined(__nios2__) + #define POCO_ARCH POCO_ARCH_NIOS2 + #if defined(__nios2_little_endian) || defined(nios2_little_endian) || defined(__nios2_little_endian__) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #define POCO_ARCH_BIG_ENDIAN 1 + #endif +#elif defined(__AARCH64EL__) + #define POCO_ARCH POCO_ARCH_AARCH64 + #define POCO_ARCH_LITTLE_ENDIAN 1 +#elif defined(__AARCH64EB__) + #define POCO_ARCH POCO_ARCH_AARCH64 + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__riscv) + #if (__riscv_xlen == 64) + #define POCO_ARCH POCO_ARCH_RISCV64 + #define POCO_ARCH_LITTLE_ENDIAN 1 + #elif(__riscv_xlen == 32) + #define POCO_ARCH POCO_ARCH_RISCV32 + #define POCO_ARCH_LITTLE_ENDIAN 1 + #endif +#endif + + +#if defined(__clang__) + #define POCO_COMPILER_CLANG +#elif defined(_MSC_VER) + #define POCO_COMPILER_MSVC +#elif defined (__GNUC__) + #define POCO_COMPILER_GCC +#elif defined (__MINGW32__) || defined (__MINGW64__) + #define POCO_COMPILER_MINGW +#elif defined (__INTEL_COMPILER) || defined(__ICC) || defined(__ECC) || defined(__ICL) + #define POCO_COMPILER_INTEL +#elif defined (__SUNPRO_CC) + #define POCO_COMPILER_SUN +#elif defined (__MWERKS__) || defined(__CWCC__) + #define POCO_COMPILER_CODEWARRIOR +#elif defined (__sgi) || defined(sgi) + #define POCO_COMPILER_SGI +#elif defined (__HP_aCC) + #define POCO_COMPILER_HP_ACC +#elif defined (__BORLANDC__) || defined(__CODEGEARC__) + #define POCO_COMPILER_CBUILDER +#elif defined (__DMC__) + #define POCO_COMPILER_DMARS +#elif defined (__DECCXX) + #define POCO_COMPILER_COMPAC +#elif (defined (__xlc__) || defined (__xlC__)) && defined(__IBMCPP__) + #define POCO_COMPILER_IBM_XLC // IBM XL C++ +#elif defined (__IBMCPP__) && defined(__COMPILER_VER__) + #define POCO_COMPILER_IBM_XLC_ZOS // IBM z/OS C++ +#endif + + +#ifdef __GNUC__ +#define POCO_UNUSED __attribute__((unused)) +#else +#define POCO_UNUSED +#endif // __GNUC__ + + +#if !defined(POCO_ARCH) + #error "Unknown Hardware Architecture." +#endif + + +#if defined(POCO_OS_FAMILY_WINDOWS) + #define POCO_DEFAULT_NEWLINE_CHARS "\r\n" +#else + #define POCO_DEFAULT_NEWLINE_CHARS "\n" +#endif + + +#endif // Foundation_Platform_INCLUDED diff --git a/include/Poco/Poco/Platform_WIN32.h b/include/Poco/Poco/Platform_WIN32.h new file mode 100644 index 00000000..65cdf46f --- /dev/null +++ b/include/Poco/Poco/Platform_WIN32.h @@ -0,0 +1,87 @@ +// +// Platform_WIN32.h +// +// Library: Foundation +// Package: Core +// Module: Platform +// +// Platform and architecture identification macros +// and platform-specific definitions for Windows. +// +// Copyright (c) 2004-2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Platform_WIN32_INCLUDED +#define Foundation_Platform_WIN32_INCLUDED + + +#include "Poco/UnWindows.h" + + + +// Verify that we're built with the multithreaded +// versions of the runtime libraries +#if defined(_MSC_VER) && !defined(_MT) + #error Must compile with /MD, /MDd, /MT or /MTd +#endif + + +// Check debug/release settings consistency +#if defined(NDEBUG) && defined(_DEBUG) + #error Inconsistent build settings (check for /MD[d]) +#endif + + +#if (_MSC_VER >= 1300) && (_MSC_VER < 1400) // Visual Studio 2003, MSVC++ 7.1 + #define POCO_MSVS_VERSION 2003 + #define POCO_MSVC_VERSION 71 +#elif (_MSC_VER >= 1400) && (_MSC_VER < 1500) // Visual Studio 2005, MSVC++ 8.0 + #define POCO_MSVS_VERSION 2005 + #define POCO_MSVC_VERSION 80 +#elif (_MSC_VER >= 1500) && (_MSC_VER < 1600) // Visual Studio 2008, MSVC++ 9.0 + #define POCO_MSVS_VERSION 2008 + #define POCO_MSVC_VERSION 90 +#elif (_MSC_VER >= 1600) && (_MSC_VER < 1700) // Visual Studio 2010, MSVC++ 10.0 + #define POCO_MSVS_VERSION 2010 + #define POCO_MSVC_VERSION 100 +#elif (_MSC_VER >= 1700) && (_MSC_VER < 1800) // Visual Studio 2012, MSVC++ 11.0 + #define POCO_MSVS_VERSION 2012 + #define POCO_MSVC_VERSION 110 +#elif (_MSC_VER >= 1800) && (_MSC_VER < 1900) // Visual Studio 2013, MSVC++ 12.0 + #define POCO_MSVS_VERSION 2013 + #define POCO_MSVC_VERSION 120 +#elif (_MSC_VER >= 1900) && (_MSC_VER < 1910) // Visual Studio 2015, MSVC++ 14.0 + #define POCO_MSVS_VERSION 2015 + #define POCO_MSVC_VERSION 140 +#elif (_MSC_VER >= 1910) && (_MSC_VER < 2000) // Visual Studio 2017, MSVC++ 14.1 + #define POCO_MSVS_VERSION 2017 + #define POCO_MSVC_VERSION 141 +#endif + + +// Turn off some annoying warnings +#if defined(_MSC_VER) + #pragma warning(disable:4018) // signed/unsigned comparison + #pragma warning(disable:4250) // VC++ 11.0: inheriting from std stream classes produces C4250 warning; + // see + #pragma warning(disable:4251) // ... needs to have dll-interface warning + #pragma warning(disable:4275) // non dll-interface class 'std::exception' used as base for dll-interface class 'Poco::Exception' + #pragma warning(disable:4344) // behavior change: use of explicit template arguments results in call to '...' but '...' is a better match + #pragma warning(disable:4351) // new behavior: elements of array '...' will be default initialized + #pragma warning(disable:4355) // 'this' : used in base member initializer list + #pragma warning(disable:4675) // resolved overload was found by argument-dependent lookup +#endif + + +#if defined(__INTEL_COMPILER) + #pragma warning(disable:1738) // base class dllexport/dllimport specification differs from that of the derived class + #pragma warning(disable:1478) // function ... was declared "deprecated" + #pragma warning(disable:1744) // field of class type without a DLL interface used in a class with a DLL interface +#endif + + +#endif // Foundation_Platform_WIN32_INCLUDED diff --git a/include/Poco/Poco/RefCountedObject.h b/include/Poco/Poco/RefCountedObject.h new file mode 100644 index 00000000..55ea76a1 --- /dev/null +++ b/include/Poco/Poco/RefCountedObject.h @@ -0,0 +1,94 @@ +// +// RefCountedObject.h +// +// Library: Foundation +// Package: Core +// Module: RefCountedObject +// +// Definition of the RefCountedObject class. +// +// Copyright (c) 2004-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_RefCountedObject_INCLUDED +#define Foundation_RefCountedObject_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/AtomicCounter.h" + + +namespace Poco { + + +class Foundation_API RefCountedObject + /// A base class for objects that employ + /// reference counting based garbage collection. + /// + /// Reference-counted objects inhibit construction + /// by copying and assignment. +{ +public: + RefCountedObject(); + /// Creates the RefCountedObject. + /// The initial reference count is one. + + void duplicate() const; + /// Increments the object's reference count. + + void release() const noexcept; + /// Decrements the object's reference count + /// and deletes the object if the count + /// reaches zero. + + int referenceCount() const; + /// Returns the reference count. + +protected: + virtual ~RefCountedObject(); + /// Destroys the RefCountedObject. + +private: + RefCountedObject(const RefCountedObject&); + RefCountedObject& operator = (const RefCountedObject&); + + mutable AtomicCounter _counter; +}; + + +// +// inlines +// +inline int RefCountedObject::referenceCount() const +{ + return _counter.value(); +} + + +inline void RefCountedObject::duplicate() const +{ + ++_counter; +} + + +inline void RefCountedObject::release() const noexcept +{ + try + { + if (--_counter == 0) delete this; + } + catch (...) + { + poco_unexpected(); + } +} + + +} // namespace Poco + + +#endif // Foundation_RefCountedObject_INCLUDED diff --git a/include/Poco/Poco/Runnable.h b/include/Poco/Poco/Runnable.h new file mode 100644 index 00000000..c87a6281 --- /dev/null +++ b/include/Poco/Poco/Runnable.h @@ -0,0 +1,45 @@ +// +// Runnable.h +// +// Library: Foundation +// Package: Threading +// Module: Thread +// +// Definition of the Runnable class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Runnable_INCLUDED +#define Foundation_Runnable_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +class Foundation_API Runnable + /// The Runnable interface with the run() method + /// must be implemented by classes that provide + /// an entry point for a thread. +{ +public: + Runnable(); + virtual ~Runnable(); + + virtual void run() = 0; + /// Do whatever the thread needs to do. Must + /// be overridden by subclasses. +}; + + +} // namespace Poco + + +#endif // Foundation_Runnable_INCLUDED diff --git a/include/Poco/Poco/ScopedLock.h b/include/Poco/Poco/ScopedLock.h new file mode 100644 index 00000000..8415c380 --- /dev/null +++ b/include/Poco/Poco/ScopedLock.h @@ -0,0 +1,121 @@ +// +// ScopedLock.h +// +// Library: Foundation +// Package: Threading +// Module: Mutex +// +// Definition of the ScopedLock template class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ScopedLock_INCLUDED +#define Foundation_ScopedLock_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +template +class ScopedLock + /// A class that simplifies thread synchronization + /// with a mutex. + /// The constructor accepts a Mutex (and optionally + /// a timeout value in milliseconds) and locks it. + /// The destructor unlocks the mutex. +{ +public: + explicit ScopedLock(M& mutex): _mutex(mutex) + { + _mutex.lock(); + } + + ScopedLock(M& mutex, long milliseconds): _mutex(mutex) + { + _mutex.lock(milliseconds); + } + + ~ScopedLock() + { + try + { + _mutex.unlock(); + } + catch (...) + { + poco_unexpected(); + } + } + +private: + M& _mutex; + + ScopedLock(); + ScopedLock(const ScopedLock&); + ScopedLock& operator = (const ScopedLock&); +}; + + +template +class ScopedLockWithUnlock + /// A class that simplifies thread synchronization + /// with a mutex. + /// The constructor accepts a Mutex (and optionally + /// a timeout value in milliseconds) and locks it. + /// The destructor unlocks the mutex. + /// The unlock() member function allows for manual + /// unlocking of the mutex. +{ +public: + explicit ScopedLockWithUnlock(M& mutex): _pMutex(&mutex) + { + _pMutex->lock(); + } + + ScopedLockWithUnlock(M& mutex, long milliseconds): _pMutex(&mutex) + { + _pMutex->lock(milliseconds); + } + + ~ScopedLockWithUnlock() + { + try + { + unlock(); + } + catch (...) + { + poco_unexpected(); + } + } + + void unlock() + { + if (_pMutex) + { + _pMutex->unlock(); + _pMutex = 0; + } + } + +private: + M* _pMutex; + + ScopedLockWithUnlock(); + ScopedLockWithUnlock(const ScopedLockWithUnlock&); + ScopedLockWithUnlock& operator = (const ScopedLockWithUnlock&); +}; + + +} // namespace Poco + + +#endif // Foundation_ScopedLock_INCLUDED diff --git a/include/Poco/Poco/SharedPtr.h b/include/Poco/Poco/SharedPtr.h new file mode 100644 index 00000000..30553f7b --- /dev/null +++ b/include/Poco/Poco/SharedPtr.h @@ -0,0 +1,490 @@ +// +// SharedPtr.h +// +// Library: Foundation +// Package: Core +// Module: SharedPtr +// +// Definition of the SharedPtr template class. +// +// Copyright (c) 2005-2008, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_SharedPtr_INCLUDED +#define Foundation_SharedPtr_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Exception.h" +#include "Poco/AtomicCounter.h" +#include +#include + + +namespace Poco { + + +class ReferenceCounter + /// Simple ReferenceCounter object, does not delete itself when count reaches 0. +{ +public: + ReferenceCounter(): _cnt(1) + { + } + + void duplicate() + { + ++_cnt; + } + + int release() + { + return --_cnt; + } + + int referenceCount() const + { + return _cnt.value(); + } + +private: + AtomicCounter _cnt; +}; + + +template +class ReleasePolicy + /// The default release policy for SharedPtr, which + /// simply uses the delete operator to delete an object. +{ +public: + static void release(C* pObj) noexcept + /// Delete the object. + /// Note that pObj can be nullptr. + { + delete pObj; + } +}; + + +template +class ReleaseArrayPolicy + /// The release policy for SharedPtr holding arrays. +{ +public: + static void release(C* pObj) noexcept + /// Delete the object. + /// Note that pObj can be nullptr. + { + delete [] pObj; + } +}; + + +template > +class SharedPtr + /// SharedPtr is a "smart" pointer for classes implementing + /// reference counting based garbage collection. + /// SharedPtr is thus similar to AutoPtr. Unlike the + /// AutoPtr template, which can only be used with + /// classes that support reference counting, SharedPtr + /// can be used with any class. For this to work, a + /// SharedPtr manages a reference count for the object + /// it manages. + /// + /// SharedPtr works in the following way: + /// If an SharedPtr is assigned an ordinary pointer to + /// an object (via the constructor or the assignment operator), + /// it takes ownership of the object and the object's reference + /// count is initialized to one. + /// If the SharedPtr is assigned another SharedPtr, the + /// object's reference count is incremented by one. + /// The destructor of SharedPtr decrements the object's + /// reference count by one and deletes the object if the + /// reference count reaches zero. + /// SharedPtr supports dereferencing with both the -> + /// and the * operator. An attempt to dereference a null + /// SharedPtr results in a NullPointerException being thrown. + /// SharedPtr also implements all relational operators and + /// a cast operator in case dynamic casting of the encapsulated data types + /// is required. +{ +public: + typedef C Type; + + SharedPtr(): + _pCounter(nullptr), + _ptr(nullptr) + { + } + + SharedPtr(C* ptr) + try: + _pCounter(ptr ? new RC : nullptr), + _ptr(ptr) + { + } + catch (...) + { + RP::release(ptr); + } + + template + SharedPtr(const SharedPtr& ptr): + _pCounter(ptr._pCounter), + _ptr(const_cast(ptr.get())) + { + if (_pCounter) _pCounter->duplicate(); + } + + SharedPtr(const SharedPtr& ptr): + _pCounter(ptr._pCounter), + _ptr(ptr._ptr) + { + if (_pCounter) _pCounter->duplicate(); + } + + SharedPtr(SharedPtr&& ptr) noexcept: + _pCounter(ptr._pCounter), + _ptr(ptr._ptr) + { + ptr._pCounter = nullptr; + ptr._ptr = nullptr; + } + + ~SharedPtr() + { + release(); + } + + SharedPtr& assign(C* ptr) + { + if (get() != ptr) + { + SharedPtr tmp(ptr); + swap(tmp); + } + return *this; + } + + SharedPtr& assign(const SharedPtr& ptr) + { + if (&ptr != this) + { + SharedPtr tmp(ptr); + swap(tmp); + } + return *this; + } + + template + SharedPtr& assign(const SharedPtr& ptr) + { + if (ptr.get() != _ptr) + { + SharedPtr tmp(ptr); + swap(tmp); + } + return *this; + } + + void reset() + { + assign(nullptr); + } + + void reset(C* ptr) + { + assign(ptr); + } + + void reset(const SharedPtr& ptr) + { + assign(ptr); + } + + template + void reset(const SharedPtr& ptr) + { + assign(ptr); + } + + SharedPtr& operator = (C* ptr) + { + return assign(ptr); + } + + SharedPtr& operator = (const SharedPtr& ptr) + { + return assign(ptr); + } + + SharedPtr& operator = (SharedPtr&& ptr) noexcept + { + release(); + _ptr = ptr._ptr; + ptr._ptr = nullptr; + _pCounter = ptr._pCounter; + ptr._pCounter = nullptr; + return *this; + } + + template + SharedPtr& operator = (const SharedPtr& ptr) + { + return assign(ptr); + } + + void swap(SharedPtr& ptr) + { + std::swap(_ptr, ptr._ptr); + std::swap(_pCounter, ptr._pCounter); + } + + template + SharedPtr cast() const + /// Casts the SharedPtr via a dynamic cast to the given type. + /// Returns an SharedPtr containing NULL if the cast fails. + /// Example: (assume class Sub: public Super) + /// SharedPtr super(new Sub()); + /// SharedPtr sub = super.cast(); + /// poco_assert (sub.get()); + { + Other* pOther = dynamic_cast(_ptr); + if (pOther) + return SharedPtr(_pCounter, pOther); + return SharedPtr(); + } + + template + SharedPtr unsafeCast() const + /// Casts the SharedPtr via a static cast to the given type. + /// Example: (assume class Sub: public Super) + /// SharedPtr super(new Sub()); + /// SharedPtr sub = super.unsafeCast(); + /// poco_assert (sub.get()); + { + Other* pOther = static_cast(_ptr); + return SharedPtr(_pCounter, pOther); + } + + C* operator -> () + { + return deref(); + } + + const C* operator -> () const + { + return deref(); + } + + C& operator * () + { + return *deref(); + } + + const C& operator * () const + { + return *deref(); + } + + C* get() + { + return _ptr; + } + + const C* get() const + { + return _ptr; + } + + operator C* () + { + return _ptr; + } + + operator const C* () const + { + return _ptr; + } + + bool operator ! () const + { + return _ptr == nullptr; + } + + bool isNull() const + { + return _ptr == nullptr; + } + + bool operator == (const SharedPtr& ptr) const + { + return get() == ptr.get(); + } + + bool operator == (const C* ptr) const + { + return get() == ptr; + } + + bool operator == (C* ptr) const + { + return get() == ptr; + } + + bool operator == (std::nullptr_t ptr) const + { + return get() == ptr; + } + + bool operator != (const SharedPtr& ptr) const + { + return get() != ptr.get(); + } + + bool operator != (const C* ptr) const + { + return get() != ptr; + } + + bool operator != (C* ptr) const + { + return get() != ptr; + } + + bool operator != (std::nullptr_t ptr) const + { + return get() != ptr; + } + + bool operator < (const SharedPtr& ptr) const + { + return get() < ptr.get(); + } + + bool operator < (const C* ptr) const + { + return get() < ptr; + } + + bool operator < (C* ptr) const + { + return get() < ptr; + } + + bool operator <= (const SharedPtr& ptr) const + { + return get() <= ptr.get(); + } + + bool operator <= (const C* ptr) const + { + return get() <= ptr; + } + + bool operator <= (C* ptr) const + { + return get() <= ptr; + } + + bool operator > (const SharedPtr& ptr) const + { + return get() > ptr.get(); + } + + bool operator > (const C* ptr) const + { + return get() > ptr; + } + + bool operator > (C* ptr) const + { + return get() > ptr; + } + + bool operator >= (const SharedPtr& ptr) const + { + return get() >= ptr.get(); + } + + bool operator >= (const C* ptr) const + { + return get() >= ptr; + } + + bool operator >= (C* ptr) const + { + return get() >= ptr; + } + + int referenceCount() const + { + return _pCounter ? _pCounter->referenceCount() : 0; + } + +private: + C* deref() const + { + if (!_ptr) + throw NullPointerException(); + + return _ptr; + } + + void release() noexcept + { + if (_pCounter && _pCounter->release() == 0) + { + RP::release(_ptr); + _ptr = nullptr; + + delete _pCounter; + _pCounter = nullptr; + } + } + + SharedPtr(RC* pCounter, C* ptr): _pCounter(pCounter), _ptr(ptr) + /// for cast operation + { + poco_assert_dbg (_pCounter); + _pCounter->duplicate(); + } + +private: + RC* _pCounter; + C* _ptr; + + template friend class SharedPtr; +}; + + +template +inline void swap(SharedPtr& p1, SharedPtr& p2) +{ + p1.swap(p2); +} + + +template +SharedPtr makeShared(Args&&... args) +{ + return SharedPtr(new T(std::forward(args)...)); +} + + +template +SharedPtr> makeSharedArray(std::size_t size) +{ + return SharedPtr>(new T[size]); +} + + +} // namespace Poco + + +#endif // Foundation_SharedPtr_INCLUDED diff --git a/include/Poco/Poco/SingletonHolder.h b/include/Poco/Poco/SingletonHolder.h new file mode 100644 index 00000000..8735f114 --- /dev/null +++ b/include/Poco/Poco/SingletonHolder.h @@ -0,0 +1,77 @@ +// +// SingletonHolder.h +// +// Library: Foundation +// Package: Core +// Module: SingletonHolder +// +// Definition of the SingletonHolder template. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_SingletonHolder_INCLUDED +#define Foundation_SingletonHolder_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Mutex.h" + + +namespace Poco { + + +template +class SingletonHolder + /// This is a helper template class for managing + /// singleton objects allocated on the heap. + /// The class ensures proper deletion (including + /// calling of the destructor) of singleton objects + /// when the application that created them terminates. +{ +public: + SingletonHolder(): + _pS(0) + /// Creates the SingletonHolder. + { + } + + ~SingletonHolder() + /// Destroys the SingletonHolder and the singleton + /// object that it holds. + { + delete _pS; + } + + S* get() + /// Returns a pointer to the singleton object + /// hold by the SingletonHolder. The first call + /// to get will create the singleton. + { + FastMutex::ScopedLock lock(_m); + if (!_pS) _pS = new S; + return _pS; + } + + void reset() + /// Deletes the singleton object. + { + FastMutex::ScopedLock lock(_m); + delete _pS; + _pS = 0; + } + +private: + S* _pS; + FastMutex _m; +}; + + +} // namespace Poco + + +#endif // Foundation_SingletonHolder_INCLUDED diff --git a/include/Poco/Poco/StreamCopier.h b/include/Poco/Poco/StreamCopier.h new file mode 100644 index 00000000..fda660c4 --- /dev/null +++ b/include/Poco/Poco/StreamCopier.h @@ -0,0 +1,85 @@ +// +// StreamCopier.h +// +// Library: Foundation +// Package: Streams +// Module: StreamCopier +// +// Definition of class StreamCopier. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_StreamCopier_INCLUDED +#define Foundation_StreamCopier_INCLUDED + + +#include "Poco/Foundation.h" +#include +#include +#include + + +namespace Poco { + + +class Foundation_API StreamCopier + /// This class provides static methods to copy the contents from one stream + /// into another. +{ +public: + static std::streamsize copyStream(std::istream& istr, std::ostream& ostr, std::size_t bufferSize = 8192); + /// Writes all bytes readable from istr to ostr, using an internal buffer. + /// + /// Returns the number of bytes copied. + +#if defined(POCO_HAVE_INT64) + static Poco::UInt64 copyStream64(std::istream& istr, std::ostream& ostr, std::size_t bufferSize = 8192); + /// Writes all bytes readable from istr to ostr, using an internal buffer. + /// + /// Returns the number of bytes copied as a 64-bit unsigned integer. + /// + /// Note: the only difference to copyStream() is that a 64-bit unsigned + /// integer is used to count the number of bytes copied. +#endif + + static std::streamsize copyStreamUnbuffered(std::istream& istr, std::ostream& ostr); + /// Writes all bytes readable from istr to ostr. + /// + /// Returns the number of bytes copied. + +#if defined(POCO_HAVE_INT64) + static Poco::UInt64 copyStreamUnbuffered64(std::istream& istr, std::ostream& ostr); + /// Writes all bytes readable from istr to ostr. + /// + /// Returns the number of bytes copied as a 64-bit unsigned integer. + /// + /// Note: the only difference to copyStreamUnbuffered() is that a 64-bit unsigned + /// integer is used to count the number of bytes copied. +#endif + + static std::streamsize copyToString(std::istream& istr, std::string& str, std::size_t bufferSize = 8192); + /// Appends all bytes readable from istr to the given string, using an internal buffer. + /// + /// Returns the number of bytes copied. + +#if defined(POCO_HAVE_INT64) + static Poco::UInt64 copyToString64(std::istream& istr, std::string& str, std::size_t bufferSize = 8192); + /// Appends all bytes readable from istr to the given string, using an internal buffer. + /// + /// Returns the number of bytes copied as a 64-bit unsigned integer. + /// + /// Note: the only difference to copyToString() is that a 64-bit unsigned + /// integer is used to count the number of bytes copied. +#endif +}; + + +} // namespace Poco + + +#endif // Foundation_StreamCopier_INCLUDED diff --git a/include/Poco/Poco/StreamUtil.h b/include/Poco/Poco/StreamUtil.h new file mode 100644 index 00000000..a77b0e63 --- /dev/null +++ b/include/Poco/Poco/StreamUtil.h @@ -0,0 +1,95 @@ +// +// StreamUtil.h +// +// Library: Foundation +// Package: Streams +// Module: StreamUtil +// +// Stream implementation support. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_StreamUtil_INCLUDED +#define Foundation_StreamUtil_INCLUDED + + +#include "Poco/Foundation.h" + + +// poco_ios_init +// +// This is a workaround for a bug in the Dinkumware +// implementation of iostreams. +// +// Calling basic_ios::init() multiple times for the +// same basic_ios instance results in a memory leak +// caused by the ios' locale being allocated more than +// once, each time overwriting the old pointer. +// This usually occurs in the following scenario: +// +// class MyStreamBuf: public std::streambuf +// { +// ... +// }; +// +// class MyIOS: public virtual std::ios +// { +// public: +// MyIOS() +// { +// init(&_buf); +// } +// protected: +// MyStreamBuf _buf; +// }; +// +// class MyIStream: public MyIOS, public std::istream +// { +// ... +// }; +// +// In this scenario, std::ios::init() is called twice +// (the first time by the MyIOS constructor, the second +// time by the std::istream constructor), resulting in +// two locale objects being allocated, the pointer second +// one overwriting the pointer to the first one and thus +// causing a memory leak. +// +// The workaround is to call init() only once for each +// stream object - by the istream, ostream or iostream +// constructor, and not calling init() in ios-derived +// base classes. +// +// Some stream implementations, however, require that +// init() is called in the MyIOS constructor. +// Therefore we replace each call to init() with +// the poco_ios_init macro defined below. + + +#if !defined(POCO_IOS_INIT_HACK) + // Microsoft Visual Studio with Dinkumware STL (but not STLport) +# if defined(_MSC_VER) && (!defined(_STLP_MSVC) || defined(_STLP_NO_OWN_IOSTREAMS)) +# define POCO_IOS_INIT_HACK 1 + // QNX with Dinkumware but not GNU C++ Library +# elif defined(__QNX__) && !defined(__GLIBCPP__) +# define POCO_IOS_INIT_HACK 1 + // Linux with Clang libc++ +# elif defined(__linux) && defined(_LIBCPP_VERSION) +# define POCO_IOS_INIT_HACK 1 +# endif +#endif + + +#if defined(POCO_IOS_INIT_HACK) +# define poco_ios_init(buf) +#else +# define poco_ios_init(buf) init(buf) +#endif + + +#endif // Foundation_StreamUtil_INCLUDED diff --git a/include/Poco/Poco/String.h b/include/Poco/Poco/String.h new file mode 100644 index 00000000..d6a5e6e9 --- /dev/null +++ b/include/Poco/Poco/String.h @@ -0,0 +1,724 @@ +// +// String.h +// +// Library: Foundation +// Package: Core +// Module: String +// +// String utility functions. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_String_INCLUDED +#define Foundation_String_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Ascii.h" +#include +#include + + +namespace Poco { + + +template +S trimLeft(const S& str) + /// Returns a copy of str with all leading + /// whitespace removed. +{ + typename S::const_iterator it = str.begin(); + typename S::const_iterator end = str.end(); + + while (it != end && Ascii::isSpace(*it)) ++it; + return S(it, end); +} + + +template +S& trimLeftInPlace(S& str) + /// Removes all leading whitespace in str. +{ + typename S::iterator it = str.begin(); + typename S::iterator end = str.end(); + + while (it != end && Ascii::isSpace(*it)) ++it; + str.erase(str.begin(), it); + return str; +} + + +template +S trimRight(const S& str) + /// Returns a copy of str with all trailing + /// whitespace removed. +{ + std::ptrdiff_t pos = static_cast(str.size()) - 1; + + while (pos >= 0 && Ascii::isSpace(str[pos])) --pos; + return S(str, 0, pos + 1); +} + + +template +S& trimRightInPlace(S& str) + /// Removes all trailing whitespace in str. +{ + std::ptrdiff_t pos = static_cast(str.size()) - 1; + + while (pos >= 0 && Ascii::isSpace(str[pos])) --pos; + str.resize(pos + 1); + + return str; +} + + +template +S trim(const S& str) + /// Returns a copy of str with all leading and + /// trailing whitespace removed. +{ + std::ptrdiff_t first = 0; + std::ptrdiff_t last = static_cast(str.size()) - 1; + + while (first <= last && Ascii::isSpace(str[first])) ++first; + while (last >= first && Ascii::isSpace(str[last])) --last; + + return S(str, first, last - first + 1); +} + + +template +S& trimInPlace(S& str) + /// Removes all leading and trailing whitespace in str. +{ + std::ptrdiff_t first = 0; + std::ptrdiff_t last = static_cast(str.size()) - 1; + + while (first <= last && Ascii::isSpace(str[first])) ++first; + while (last >= first && Ascii::isSpace(str[last])) --last; + + if (last >= 0) + { + str.resize(last + 1); + str.erase(0, first); + } + return str; +} + + +template +S toUpper(const S& str) + /// Returns a copy of str containing all upper-case characters. +{ + typename S::const_iterator it = str.begin(); + typename S::const_iterator end = str.end(); + + S result; + result.reserve(str.size()); + while (it != end) result += static_cast(Ascii::toUpper(*it++)); + return result; +} + + +template +S& toUpperInPlace(S& str) + /// Replaces all characters in str with their upper-case counterparts. +{ + typename S::iterator it = str.begin(); + typename S::iterator end = str.end(); + + while (it != end) { *it = static_cast(Ascii::toUpper(*it)); ++it; } + return str; +} + + +template +S toLower(const S& str) + /// Returns a copy of str containing all lower-case characters. +{ + typename S::const_iterator it = str.begin(); + typename S::const_iterator end = str.end(); + + S result; + result.reserve(str.size()); + while (it != end) result += static_cast(Ascii::toLower(*it++)); + return result; +} + + +template +S& toLowerInPlace(S& str) + /// Replaces all characters in str with their lower-case counterparts. +{ + typename S::iterator it = str.begin(); + typename S::iterator end = str.end(); + + while (it != end) { *it = static_cast(Ascii::toLower(*it)); ++it; } + return str; +} + + +#if !defined(POCO_NO_TEMPLATE_ICOMPARE) + + +template +int icompare( + const S& str, + typename S::size_type pos, + typename S::size_type n, + It it2, + It end2) + /// Case-insensitive string comparison +{ + typename S::size_type sz = str.size(); + if (pos > sz) pos = sz; + if (pos + n > sz) n = sz - pos; + It it1 = str.begin() + pos; + It end1 = str.begin() + pos + n; + while (it1 != end1 && it2 != end2) + { + typename S::value_type c1(static_cast(Ascii::toLower(*it1))); + typename S::value_type c2(static_cast(Ascii::toLower(*it2))); + if (c1 < c2) + return -1; + else if (c1 > c2) + return 1; + ++it1; ++it2; + } + + if (it1 == end1) + return it2 == end2 ? 0 : -1; + else + return 1; +} + + +template +int icompare(const S& str1, const S& str2) + // A special optimization for an often used case. +{ + typename S::const_iterator it1(str1.begin()); + typename S::const_iterator end1(str1.end()); + typename S::const_iterator it2(str2.begin()); + typename S::const_iterator end2(str2.end()); + while (it1 != end1 && it2 != end2) + { + typename S::value_type c1(static_cast(Ascii::toLower(*it1))); + typename S::value_type c2(static_cast(Ascii::toLower(*it2))); + if (c1 < c2) + return -1; + else if (c1 > c2) + return 1; + ++it1; ++it2; + } + + if (it1 == end1) + return it2 == end2 ? 0 : -1; + else + return 1; +} + + +template +int icompare(const S& str1, typename S::size_type n1, const S& str2, typename S::size_type n2) +{ + if (n2 > str2.size()) n2 = str2.size(); + return icompare(str1, 0, n1, str2.begin(), str2.begin() + n2); +} + + +template +int icompare(const S& str1, typename S::size_type n, const S& str2) +{ + if (n > str2.size()) n = str2.size(); + return icompare(str1, 0, n, str2.begin(), str2.begin() + n); +} + + +template +int icompare(const S& str1, typename S::size_type pos, typename S::size_type n, const S& str2) +{ + return icompare(str1, pos, n, str2.begin(), str2.end()); +} + + +template +int icompare( + const S& str1, + typename S::size_type pos1, + typename S::size_type n1, + const S& str2, + typename S::size_type pos2, + typename S::size_type n2) +{ + typename S::size_type sz2 = str2.size(); + if (pos2 > sz2) pos2 = sz2; + if (pos2 + n2 > sz2) n2 = sz2 - pos2; + return icompare(str1, pos1, n1, str2.begin() + pos2, str2.begin() + pos2 + n2); +} + + +template +int icompare( + const S& str1, + typename S::size_type pos1, + typename S::size_type n, + const S& str2, + typename S::size_type pos2) +{ + typename S::size_type sz2 = str2.size(); + if (pos2 > sz2) pos2 = sz2; + if (pos2 + n > sz2) n = sz2 - pos2; + return icompare(str1, pos1, n, str2.begin() + pos2, str2.begin() + pos2 + n); +} + + +template +int icompare( + const S& str, + typename S::size_type pos, + typename S::size_type n, + const typename S::value_type* ptr) +{ + poco_check_ptr (ptr); + typename S::size_type sz = str.size(); + if (pos > sz) pos = sz; + if (pos + n > sz) n = sz - pos; + typename S::const_iterator it = str.begin() + pos; + typename S::const_iterator end = str.begin() + pos + n; + while (it != end && *ptr) + { + typename S::value_type c1(static_cast(Ascii::toLower(*it))); + typename S::value_type c2(static_cast(Ascii::toLower(*ptr))); + if (c1 < c2) + return -1; + else if (c1 > c2) + return 1; + ++it; ++ptr; + } + + if (it == end) + return *ptr == 0 ? 0 : -1; + else + return 1; +} + + +template +int icompare( + const S& str, + typename S::size_type pos, + const typename S::value_type* ptr) +{ + return icompare(str, pos, str.size() - pos, ptr); +} + + +template +int icompare( + const S& str, + const typename S::value_type* ptr) +{ + return icompare(str, 0, str.size(), ptr); +} + + +#else + + +int Foundation_API icompare(const std::string& str, std::string::size_type pos, std::string::size_type n, std::string::const_iterator it2, std::string::const_iterator end2); +int Foundation_API icompare(const std::string& str1, const std::string& str2); +int Foundation_API icompare(const std::string& str1, std::string::size_type n1, const std::string& str2, std::string::size_type n2); +int Foundation_API icompare(const std::string& str1, std::string::size_type n, const std::string& str2); +int Foundation_API icompare(const std::string& str1, std::string::size_type pos, std::string::size_type n, const std::string& str2); +int Foundation_API icompare(const std::string& str1, std::string::size_type pos1, std::string::size_type n1, const std::string& str2, std::string::size_type pos2, std::string::size_type n2); +int Foundation_API icompare(const std::string& str1, std::string::size_type pos1, std::string::size_type n, const std::string& str2, std::string::size_type pos2); +int Foundation_API icompare(const std::string& str, std::string::size_type pos, std::string::size_type n, const std::string::value_type* ptr); +int Foundation_API icompare(const std::string& str, std::string::size_type pos, const std::string::value_type* ptr); +int Foundation_API icompare(const std::string& str, const std::string::value_type* ptr); + + +#endif + + +template +S translate(const S& str, const S& from, const S& to) + /// Returns a copy of str with all characters in + /// from replaced by the corresponding (by position) + /// characters in to. If there is no corresponding + /// character in to, the character is removed from + /// the copy. +{ + S result; + result.reserve(str.size()); + typename S::const_iterator it = str.begin(); + typename S::const_iterator end = str.end(); + typename S::size_type toSize = to.size(); + while (it != end) + { + typename S::size_type pos = from.find(*it); + if (pos == S::npos) + { + result += *it; + } + else + { + if (pos < toSize) result += to[pos]; + } + ++it; + } + return result; +} + + +template +S translate(const S& str, const typename S::value_type* from, const typename S::value_type* to) +{ + poco_check_ptr (from); + poco_check_ptr (to); + return translate(str, S(from), S(to)); +} + + +template +S& translateInPlace(S& str, const S& from, const S& to) + /// Replaces in str all occurrences of characters in from + /// with the corresponding (by position) characters in to. + /// If there is no corresponding character, the character + /// is removed. +{ + str = translate(str, from, to); + return str; +} + + +template +S translateInPlace(S& str, const typename S::value_type* from, const typename S::value_type* to) +{ + poco_check_ptr (from); + poco_check_ptr (to); + str = translate(str, S(from), S(to)); +#if defined(__SUNPRO_CC) +// Fix around the RVO bug in SunStudio 12.4 + S ret(str); + return ret; +#else + return str; +#endif +} + + +#if !defined(POCO_NO_TEMPLATE_ICOMPARE) + + +template +S& replaceInPlace(S& str, const S& from, const S& to, typename S::size_type start = 0) +{ + poco_assert (from.size() > 0); + + S result; + typename S::size_type pos = 0; + result.append(str, 0, start); + do + { + pos = str.find(from, start); + if (pos != S::npos) + { + result.append(str, start, pos - start); + result.append(to); + start = pos + from.length(); + } + else result.append(str, start, str.size() - start); + } + while (pos != S::npos); + str.swap(result); + return str; +} + + +template +S& replaceInPlace(S& str, const typename S::value_type* from, const typename S::value_type* to, typename S::size_type start = 0) +{ + poco_assert (*from); + + S result; + typename S::size_type pos = 0; + typename S::size_type fromLen = std::strlen(from); + result.append(str, 0, start); + do + { + pos = str.find(from, start); + if (pos != S::npos) + { + result.append(str, start, pos - start); + result.append(to); + start = pos + fromLen; + } + else result.append(str, start, str.size() - start); + } + while (pos != S::npos); + str.swap(result); + return str; +} + + +template +S& replaceInPlace(S& str, const typename S::value_type from, const typename S::value_type to = 0, typename S::size_type start = 0) +{ + if (from == to) return str; + + typename S::size_type pos = 0; + do + { + pos = str.find(from, start); + if (pos != S::npos) + { + if (to) str[pos] = to; + else str.erase(pos, 1); + } + } while (pos != S::npos); + + return str; +} + + +template +S& removeInPlace(S& str, const typename S::value_type ch, typename S::size_type start = 0) +{ + return replaceInPlace(str, ch, 0, start); +} + + +template +S replace(const S& str, const S& from, const S& to, typename S::size_type start = 0) + /// Replace all occurrences of from (which must not be the empty string) + /// in str with to, starting at position start. +{ + S result(str); + replaceInPlace(result, from, to, start); + return result; +} + + +template +S replace(const S& str, const typename S::value_type* from, const typename S::value_type* to, typename S::size_type start = 0) +{ + S result(str); + replaceInPlace(result, from, to, start); + return result; +} + + +template +S replace(const S& str, const typename S::value_type from, const typename S::value_type to = 0, typename S::size_type start = 0) +{ + S result(str); + replaceInPlace(result, from, to, start); + return result; +} + + +template +S remove(const S& str, const typename S::value_type ch, typename S::size_type start = 0) +{ + S result(str); + replaceInPlace(result, ch, 0, start); + return result; +} + + +#else + + +Foundation_API std::string replace(const std::string& str, const std::string& from, const std::string& to, std::string::size_type start = 0); +Foundation_API std::string replace(const std::string& str, const std::string::value_type* from, const std::string::value_type* to, std::string::size_type start = 0); +Foundation_API std::string replace(const std::string& str, const std::string::value_type from, const std::string::value_type to = 0, std::string::size_type start = 0); +Foundation_API std::string remove(const std::string& str, const std::string::value_type ch, std::string::size_type start = 0); +Foundation_API std::string& replaceInPlace(std::string& str, const std::string& from, const std::string& to, std::string::size_type start = 0); +Foundation_API std::string& replaceInPlace(std::string& str, const std::string::value_type* from, const std::string::value_type* to, std::string::size_type start = 0); +Foundation_API std::string& replaceInPlace(std::string& str, const std::string::value_type from, const std::string::value_type to = 0, std::string::size_type start = 0); +Foundation_API std::string& removeInPlace(std::string& str, const std::string::value_type ch, std::string::size_type start = 0); + + +#endif + + +template +S cat(const S& s1, const S& s2) + /// Concatenates two strings. +{ + S result = s1; + result.reserve(s1.size() + s2.size()); + result.append(s2); + return result; +} + + +template +S cat(const S& s1, const S& s2, const S& s3) + /// Concatenates three strings. +{ + S result = s1; + result.reserve(s1.size() + s2.size() + s3.size()); + result.append(s2); + result.append(s3); + return result; +} + + +template +S cat(const S& s1, const S& s2, const S& s3, const S& s4) + /// Concatenates four strings. +{ + S result = s1; + result.reserve(s1.size() + s2.size() + s3.size() + s4.size()); + result.append(s2); + result.append(s3); + result.append(s4); + return result; +} + + +template +S cat(const S& s1, const S& s2, const S& s3, const S& s4, const S& s5) + /// Concatenates five strings. +{ + S result = s1; + result.reserve(s1.size() + s2.size() + s3.size() + s4.size() + s5.size()); + result.append(s2); + result.append(s3); + result.append(s4); + result.append(s5); + return result; +} + + +template +S cat(const S& s1, const S& s2, const S& s3, const S& s4, const S& s5, const S& s6) + /// Concatenates six strings. +{ + S result = s1; + result.reserve(s1.size() + s2.size() + s3.size() + s4.size() + s5.size() + s6.size()); + result.append(s2); + result.append(s3); + result.append(s4); + result.append(s5); + result.append(s6); + return result; +} + + +template +S cat(const S& delim, const It& begin, const It& end) + /// Concatenates a sequence of strings, delimited + /// by the string given in delim. +{ + S result; + for (It it = begin; it != end; ++it) + { + if (!result.empty()) result.append(delim); + result += *it; + } + return result; +} + + +template +bool startsWith(const S& str, const S& prefix) + /// Tests whether the string starts with the given prefix. +{ + return str.size() >= prefix.size() && equal(prefix.begin(), prefix.end(), str.begin()); +} + + +template +bool endsWith(const S& str, const S& suffix) + /// Tests whether the string ends with the given suffix. +{ + return str.size() >= suffix.size() && equal(suffix.rbegin(), suffix.rend(), str.rbegin()); +} + + +// +// case-insensitive string equality +// + + +template +struct i_char_traits : public std::char_traits +{ + inline static bool eq(charT c1, charT c2) + { + return Ascii::toLower(c1) == Ascii::toLower(c2); + } + + inline static bool ne(charT c1, charT c2) + { + return !eq(c1, c2); + } + + inline static bool lt(charT c1, charT c2) + { + return Ascii::toLower(c1) < Ascii::toLower(c2); + } + + static int compare(const charT* s1, const charT* s2, std::size_t n) + { + for (int i = 0; i < n && s1 && s2; ++i, ++s1, ++s2) + { + if (Ascii::toLower(*s1) == Ascii::toLower(*s2)) continue; + else if (Ascii::toLower(*s1) < Ascii::toLower(*s2)) return -1; + else return 1; + } + + return 0; + } + + static const charT* find(const charT* s, int n, charT a) + { + while(n-- > 0 && Ascii::toLower(*s) != Ascii::toLower(a)) { ++s; } + return s; + } +}; + + +typedef std::basic_string> istring; + /// Case-insensitive std::string counterpart. + + +template +std::size_t isubstr(const T& str, const T& sought) + /// Case-insensitive substring; searches for a substring + /// without regards to case. +{ + typename T::const_iterator it = std::search(str.begin(), str.end(), + sought.begin(), sought.end(), + i_char_traits::eq); + + if (it != str.end()) return it - str.begin(); + else return static_cast(T::npos); +} + + +struct CILess + /// Case-insensitive less-than functor; useful for standard maps + /// and sets with std::strings keys and case-insensitive ordering + /// requirement. +{ + inline bool operator() (const std::string& s1, const std::string& s2) const + { + return icompare(s1, s2) < 0; + } +}; + + +} // namespace Poco + + +#endif // Foundation_String_INCLUDED diff --git a/include/Poco/Poco/Thread.h b/include/Poco/Poco/Thread.h new file mode 100644 index 00000000..77725531 --- /dev/null +++ b/include/Poco/Poco/Thread.h @@ -0,0 +1,385 @@ +// +// Thread.h +// +// Library: Foundation +// Package: Threading +// Module: Thread +// +// Definition of the Thread class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Thread_INCLUDED +#define Foundation_Thread_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Event.h" +#include "Poco/Mutex.h" + + +#if defined(POCO_OS_FAMILY_WINDOWS) +#if defined(_WIN32_WCE) +#include "Poco/Thread_WINCE.h" +#else +#include "Poco/Thread_WIN32.h" +#endif +#elif defined(POCO_VXWORKS) +#include "Poco/Thread_VX.h" +#else +#include "Poco/Thread_POSIX.h" +#endif + + +namespace Poco { + + +class Runnable; +class ThreadLocalStorage; + + +class Foundation_API Thread: private ThreadImpl + /// This class implements a platform-independent + /// wrapper to an operating system thread. + /// + /// Every Thread object gets a unique (within + /// its process) numeric thread ID. + /// Furthermore, a thread can be assigned a name. + /// The name of a thread can be changed at any time. +{ +public: + typedef ThreadImpl::TIDImpl TID; + + using ThreadImpl::Callable; + + enum Priority + /// Thread priorities. + { + PRIO_LOWEST = PRIO_LOWEST_IMPL, /// The lowest thread priority. + PRIO_LOW = PRIO_LOW_IMPL, /// A lower than normal thread priority. + PRIO_NORMAL = PRIO_NORMAL_IMPL, /// The normal thread priority. + PRIO_HIGH = PRIO_HIGH_IMPL, /// A higher than normal thread priority. + PRIO_HIGHEST = PRIO_HIGHEST_IMPL /// The highest thread priority. + }; + + enum Policy + { + POLICY_DEFAULT = POLICY_DEFAULT_IMPL + }; + + Thread(); + /// Creates a thread. Call start() to start it. + + Thread(const std::string& name); + /// Creates a named thread. Call start() to start it. + + ~Thread(); + /// Destroys the thread. + + int id() const; + /// Returns the unique thread ID of the thread. + + TID tid() const; + /// Returns the native thread ID of the thread. + + std::string name() const; + /// Returns the name of the thread. + + std::string getName() const; + /// Returns the name of the thread. + + void setName(const std::string& name); + /// Sets the name of the thread. + + void setPriority(Priority prio); + /// Sets the thread's priority. + /// + /// Some platform only allow changing a thread's priority + /// if the process has certain privileges. + + Priority getPriority() const; + /// Returns the thread's priority. + + void setOSPriority(int prio, int policy = POLICY_DEFAULT); + /// Sets the thread's priority, using an operating system specific + /// priority value. Use getMinOSPriority() and getMaxOSPriority() to + /// obtain mininum and maximum priority values. Additionally, + /// a scheduling policy can be specified. The policy is currently + /// only used on POSIX platforms where the values SCHED_OTHER (default), + /// SCHED_FIFO and SCHED_RR are supported. + + int getOSPriority() const; + /// Returns the thread's priority, expressed as an operating system + /// specific priority value. + /// + /// May return 0 if the priority has not been explicitly set. + + static int getMinOSPriority(int policy = POLICY_DEFAULT); + /// Returns the minimum operating system-specific priority value, + /// which can be passed to setOSPriority() for the given policy. + + static int getMaxOSPriority(int policy = POLICY_DEFAULT); + /// Returns the maximum operating system-specific priority value, + /// which can be passed to setOSPriority() for the given policy. + + void setStackSize(int size); + /// Sets the thread's stack size in bytes. + /// Setting the stack size to 0 will use the default stack size. + /// Typically, the real stack size is rounded up to the nearest + /// page size multiple. + + int getStackSize() const; + /// Returns the thread's stack size in bytes. + /// If the default stack size is used, 0 is returned. + + void start(Runnable& target); + /// Starts the thread with the given target. + /// + /// Note that the given Runnable object must remain + /// valid during the entire lifetime of the thread, as + /// only a reference to it is stored internally. + + void start(Poco::SharedPtr pTarget); + /// Starts the thread with the given target. + /// + /// The Thread ensures that the given target stays + /// alive while the thread is running. + + void start(Callable target, void* pData = 0); + /// Starts the thread with the given target and parameter. + + template + void startFunc(const Functor& fn) + /// Starts the thread with the given functor object or lambda. + { + startImpl(new FunctorRunnable(fn)); + } + + template + void startFunc(Functor&& fn) + /// Starts the thread with the given functor object or lambda. + { + startImpl(new FunctorRunnable(std::move(fn))); + } + + void join(); + /// Waits until the thread completes execution. + /// If multiple threads try to join the same + /// thread, the result is undefined. + + void join(long milliseconds); + /// Waits for at most the given interval for the thread + /// to complete. Throws a TimeoutException if the thread + /// does not complete within the specified time interval. + + bool tryJoin(long milliseconds); + /// Waits for at most the given interval for the thread + /// to complete. Returns true if the thread has finished, + /// false otherwise. + + bool isRunning() const; + /// Returns true if the thread is running. + + static bool trySleep(long milliseconds); + /// Starts an interruptible sleep. When trySleep() is called, + /// the thread will remain suspended until: + /// - the timeout expires or + /// - wakeUp() is called + /// + /// Function returns true if sleep attempt was completed, false + /// if sleep was interrupted by a wakeUp() call. + /// A frequent scenario where trySleep()/wakeUp() pair of functions + /// is useful is with threads spending most of the time idle, + /// with periodic activity between the idle times; trying to sleep + /// (as opposed to sleeping) allows immediate ending of idle thread + /// from the outside. + /// + /// The trySleep() and wakeUp() calls should be used with + /// understanding that the suspended state is not a true sleep, + /// but rather a state of waiting for an event, with timeout + /// expiration. This makes order of calls significant; calling + /// wakeUp() before calling trySleep() will prevent the next + /// trySleep() call to actually suspend the thread (which, in + /// some scenarios, may be desirable behavior). + + void wakeUp(); + /// Wakes up the thread which is in the state of interruptible + /// sleep. For threads that are not suspended, calling this + /// function has the effect of preventing the subsequent + /// trySleep() call to put thread in a suspended state. + + static void sleep(long milliseconds); + /// Suspends the current thread for the specified + /// amount of time. + + static void yield(); + /// Yields cpu to other threads. + + static Thread* current(); + /// Returns the Thread object for the currently active thread. + /// If the current thread is the main thread, 0 is returned. + + static TID currentTid(); + /// Returns the native thread ID for the current thread. + +protected: + ThreadLocalStorage& tls(); + /// Returns a reference to the thread's local storage. + + void clearTLS(); + /// Clears the thread's local storage. + + std::string makeName(); + /// Creates a unique name for a thread. + + static int uniqueId(); + /// Creates and returns a unique id for a thread. + + template + class FunctorRunnable: public Runnable + { + public: + FunctorRunnable(const Functor& functor): + _functor(functor) + { + } + + FunctorRunnable(Functor&& functor): + _functor(std::move(functor)) + { + } + + ~FunctorRunnable() + { + } + + void run() + { + _functor(); + } + + private: + Functor _functor; + }; + +private: + Thread(const Thread&); + Thread& operator = (const Thread&); + + int _id; + std::string _name; + ThreadLocalStorage* _pTLS; + Event _event; + mutable FastMutex _mutex; + + friend class ThreadLocalStorage; + friend class PooledThread; +}; + + +// +// inlines +// +inline Thread::TID Thread::tid() const +{ + return tidImpl(); +} + + +inline int Thread::id() const +{ + return _id; +} + + +inline std::string Thread::name() const +{ + FastMutex::ScopedLock lock(_mutex); + + return _name; +} + + +inline std::string Thread::getName() const +{ + FastMutex::ScopedLock lock(_mutex); + + return _name; +} + + +inline bool Thread::isRunning() const +{ + return isRunningImpl(); +} + + +inline void Thread::sleep(long milliseconds) +{ + sleepImpl(milliseconds); +} + + +inline void Thread::yield() +{ + yieldImpl(); +} + + +inline Thread* Thread::current() +{ + return static_cast(currentImpl()); +} + + +inline void Thread::setOSPriority(int prio, int policy) +{ + setOSPriorityImpl(prio, policy); +} + + +inline int Thread::getOSPriority() const +{ + return getOSPriorityImpl(); +} + + +inline int Thread::getMinOSPriority(int policy) +{ + return ThreadImpl::getMinOSPriorityImpl(policy); +} + + +inline int Thread::getMaxOSPriority(int policy) +{ + return ThreadImpl::getMaxOSPriorityImpl(policy); +} + + +inline void Thread::setStackSize(int size) +{ + setStackSizeImpl(size); +} + + +inline int Thread::getStackSize() const +{ + return getStackSizeImpl(); +} + + +inline Thread::TID Thread::currentTid() +{ + return currentTidImpl(); +} + + +} // namespace Poco + + +#endif // Foundation_Thread_INCLUDED diff --git a/include/Poco/Poco/ThreadPool.h b/include/Poco/Poco/ThreadPool.h new file mode 100644 index 00000000..04fcc214 --- /dev/null +++ b/include/Poco/Poco/ThreadPool.h @@ -0,0 +1,208 @@ +// +// ThreadPool.h +// +// Library: Foundation +// Package: Threading +// Module: ThreadPool +// +// Definition of the ThreadPool class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_ThreadPool_INCLUDED +#define Foundation_ThreadPool_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Thread.h" +#include "Poco/Mutex.h" +#include + + +namespace Poco { + + +class Runnable; +class PooledThread; + + +class Foundation_API ThreadPool + /// A thread pool always keeps a number of threads running, ready + /// to accept work. + /// Creating and starting a threads can impose a significant runtime + /// overhead to an application. A thread pool helps to improve + /// the performance of an application by reducing the number + /// of threads that have to be created (and destroyed again). + /// Threads in a thread pool are re-used once they become + /// available again. + /// The thread pool always keeps a minimum number of threads + /// running. If the demand for threads increases, additional + /// threads are created. Once the demand for threads sinks + /// again, no-longer used threads are stopped and removed + /// from the pool. +{ +public: + ThreadPool(int minCapacity = 2, + int maxCapacity = 16, + int idleTime = 60, + int stackSize = POCO_THREAD_STACK_SIZE); + /// Creates a thread pool with minCapacity threads. + /// If required, up to maxCapacity threads are created + /// a NoThreadAvailableException exception is thrown. + /// If a thread is running idle for more than idleTime seconds, + /// and more than minCapacity threads are running, the thread + /// is killed. Threads are created with given stack size. + + ThreadPool(const std::string& name, + int minCapacity = 2, + int maxCapacity = 16, + int idleTime = 60, + int stackSize = POCO_THREAD_STACK_SIZE); + /// Creates a thread pool with the given name and minCapacity threads. + /// If required, up to maxCapacity threads are created + /// a NoThreadAvailableException exception is thrown. + /// If a thread is running idle for more than idleTime seconds, + /// and more than minCapacity threads are running, the thread + /// is killed. Threads are created with given stack size. + + ~ThreadPool(); + /// Currently running threads will remain active + /// until they complete. + + void addCapacity(int n); + /// Increases (or decreases, if n is negative) + /// the maximum number of threads. + + int capacity() const; + /// Returns the maximum capacity of threads. + + void setStackSize(int stackSize); + /// Sets the stack size for threads. + /// New stack size applies only for newly created threads. + + int getStackSize() const; + /// Returns the stack size used to create new threads. + + int used() const; + /// Returns the number of currently used threads. + + int allocated() const; + /// Returns the number of currently allocated threads. + + int available() const; + /// Returns the number available threads. + + void start(Runnable& target); + /// Obtains a thread and starts the target. + /// Throws a NoThreadAvailableException if no more + /// threads are available. + + void start(Runnable& target, const std::string& name); + /// Obtains a thread and starts the target. + /// Assigns the given name to the thread. + /// Throws a NoThreadAvailableException if no more + /// threads are available. + + void startWithPriority(Thread::Priority priority, Runnable& target); + /// Obtains a thread, adjusts the thread's priority, and starts the target. + /// Throws a NoThreadAvailableException if no more + /// threads are available. + + void startWithPriority(Thread::Priority priority, Runnable& target, const std::string& name); + /// Obtains a thread, adjusts the thread's priority, and starts the target. + /// Assigns the given name to the thread. + /// Throws a NoThreadAvailableException if no more + /// threads are available. + + void stopAll(); + /// Stops all running threads and waits for their completion. + /// + /// Will also delete all thread objects. + /// If used, this method should be the last action before + /// the thread pool is deleted. + /// + /// Note: If a thread fails to stop within 10 seconds + /// (due to a programming error, for example), the + /// underlying thread object will not be deleted and + /// this method will return anyway. This allows for a + /// more or less graceful shutdown in case of a misbehaving + /// thread. + + void joinAll(); + /// Waits for all threads to complete. + /// + /// Note that this will not actually join() the underlying + /// thread, but rather wait for the thread's runnables + /// to finish. + + void collect(); + /// Stops and removes no longer used threads from the + /// thread pool. Can be called at various times in an + /// application's life time to help the thread pool + /// manage its threads. Calling this method is optional, + /// as the thread pool is also implicitly managed in + /// calls to start(), addCapacity() and joinAll(). + + const std::string& name() const; + /// Returns the name of the thread pool, + /// or an empty string if no name has been + /// specified in the constructor. + + static ThreadPool& defaultPool(); + /// Returns a reference to the default + /// thread pool. + +protected: + PooledThread* getThread(); + PooledThread* createThread(); + + void housekeep(); + +private: + ThreadPool(const ThreadPool& pool); + ThreadPool& operator = (const ThreadPool& pool); + + typedef std::vector ThreadVec; + + std::string _name; + int _minCapacity; + int _maxCapacity; + int _idleTime; + int _serial; + int _age; + int _stackSize; + ThreadVec _threads; + mutable FastMutex _mutex; +}; + + +// +// inlines +// +inline void ThreadPool::setStackSize(int stackSize) +{ + _stackSize = stackSize; +} + + +inline int ThreadPool::getStackSize() const +{ + return _stackSize; +} + + +inline const std::string& ThreadPool::name() const +{ + return _name; +} + + +} // namespace Poco + + +#endif // Foundation_ThreadPool_INCLUDED diff --git a/include/Poco/Poco/Thread_WIN32.h b/include/Poco/Poco/Thread_WIN32.h new file mode 100644 index 00000000..194b0a3b --- /dev/null +++ b/include/Poco/Poco/Thread_WIN32.h @@ -0,0 +1,183 @@ +// +// Thread_WIN32.h +// +// Library: Foundation +// Package: Threading +// Module: Thread +// +// Definition of the ThreadImpl class for WIN32. +// +// Copyright (c) 2004-2009, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Thread_WIN32_INCLUDED +#define Foundation_Thread_WIN32_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Runnable.h" +#include "Poco/SharedPtr.h" +#include "Poco/UnWindows.h" + + +namespace Poco { + + +class Foundation_API ThreadImpl +{ +public: + typedef DWORD TIDImpl; + typedef void (*Callable)(void*); + +#if defined(_DLL) + typedef DWORD (WINAPI *Entry)(LPVOID); +#else + typedef unsigned (__stdcall *Entry)(void*); +#endif + + enum Priority + { + PRIO_LOWEST_IMPL = THREAD_PRIORITY_LOWEST, + PRIO_LOW_IMPL = THREAD_PRIORITY_BELOW_NORMAL, + PRIO_NORMAL_IMPL = THREAD_PRIORITY_NORMAL, + PRIO_HIGH_IMPL = THREAD_PRIORITY_ABOVE_NORMAL, + PRIO_HIGHEST_IMPL = THREAD_PRIORITY_HIGHEST + }; + + enum Policy + { + POLICY_DEFAULT_IMPL = 0 + }; + + ThreadImpl(); + ~ThreadImpl(); + + TIDImpl tidImpl() const; + void setPriorityImpl(int prio); + int getPriorityImpl() const; + void setOSPriorityImpl(int prio, int policy = 0); + int getOSPriorityImpl() const; + static int getMinOSPriorityImpl(int policy); + static int getMaxOSPriorityImpl(int policy); + void setStackSizeImpl(int size); + int getStackSizeImpl() const; + void startImpl(SharedPtr pTarget); + void joinImpl(); + bool joinImpl(long milliseconds); + bool isRunningImpl() const; + static void sleepImpl(long milliseconds); + static void yieldImpl(); + static ThreadImpl* currentImpl(); + static TIDImpl currentTidImpl(); + +protected: +#if defined(_DLL) + static DWORD WINAPI runnableEntry(LPVOID pThread); +#else + static unsigned __stdcall runnableEntry(void* pThread); +#endif + + void createImpl(Entry ent, void* pData); + void threadCleanup(); + +private: + class CurrentThreadHolder + { + public: + CurrentThreadHolder(): _slot(TlsAlloc()) + { + if (_slot == TLS_OUT_OF_INDEXES) + throw SystemException("cannot allocate thread context key"); + } + ~CurrentThreadHolder() + { + TlsFree(_slot); + } + ThreadImpl* get() const + { + return reinterpret_cast(TlsGetValue(_slot)); + } + void set(ThreadImpl* pThread) + { + TlsSetValue(_slot, pThread); + } + + private: + DWORD _slot; + }; + + SharedPtr _pRunnableTarget; + HANDLE _thread; + DWORD _threadId; + int _prio; + int _stackSize; + + static CurrentThreadHolder _currentThreadHolder; +}; + + +// +// inlines +// +inline int ThreadImpl::getPriorityImpl() const +{ + return _prio; +} + + +inline int ThreadImpl::getOSPriorityImpl() const +{ + return _prio; +} + + +inline int ThreadImpl::getMinOSPriorityImpl(int /* policy */) +{ + return PRIO_LOWEST_IMPL; +} + + +inline int ThreadImpl::getMaxOSPriorityImpl(int /* policy */) +{ + return PRIO_HIGHEST_IMPL; +} + + +inline void ThreadImpl::sleepImpl(long milliseconds) +{ + Sleep(DWORD(milliseconds)); +} + + +inline void ThreadImpl::yieldImpl() +{ + Sleep(0); +} + + +inline void ThreadImpl::setStackSizeImpl(int size) +{ + _stackSize = size; +} + + +inline int ThreadImpl::getStackSizeImpl() const +{ + return _stackSize; +} + + +inline ThreadImpl::TIDImpl ThreadImpl::tidImpl() const +{ + return _threadId; +} + + +} // namespace Poco + + +#endif // Foundation_Thread_WIN32_INCLUDED diff --git a/include/Poco/Poco/Timespan.h b/include/Poco/Poco/Timespan.h new file mode 100644 index 00000000..09f17428 --- /dev/null +++ b/include/Poco/Poco/Timespan.h @@ -0,0 +1,303 @@ +// +// Timespan.h +// +// Library: Foundation +// Package: DateTime +// Module: Timespan +// +// Definition of the Timespan class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Timespan_INCLUDED +#define Foundation_Timespan_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/Timestamp.h" + + +namespace Poco { + + +class Foundation_API Timespan + /// A class that represents time spans up to microsecond resolution. +{ +public: + using TimeDiff = Timestamp::TimeDiff; + + Timespan(); + /// Creates a zero Timespan. + + Timespan(TimeDiff microseconds); + /// Creates a Timespan. + + Timespan(long seconds, long microseconds); + /// Creates a Timespan. Useful for creating + /// a Timespan from a struct timeval. + + Timespan(int days, int hours, int minutes, int seconds, int microSeconds); + /// Creates a Timespan. + + Timespan(const Timespan& timespan); + /// Creates a Timespan from another one. + + ~Timespan(); + /// Destroys the Timespan. + + Timespan& operator = (const Timespan& timespan); + /// Assignment operator. + + Timespan& operator = (TimeDiff microseconds); + /// Assignment operator. + + Timespan& assign(int days, int hours, int minutes, int seconds, int microSeconds); + /// Assigns a new span. + + Timespan& assign(long seconds, long microseconds); + /// Assigns a new span. Useful for assigning + /// from a struct timeval. + + void swap(Timespan& timespan); + /// Swaps the Timespan with another one. + + bool operator == (const Timespan& ts) const; + bool operator != (const Timespan& ts) const; + bool operator > (const Timespan& ts) const; + bool operator >= (const Timespan& ts) const; + bool operator < (const Timespan& ts) const; + bool operator <= (const Timespan& ts) const; + + bool operator == (TimeDiff microSeconds) const; + bool operator != (TimeDiff microSeconds) const; + bool operator > (TimeDiff microSeconds) const; + bool operator >= (TimeDiff microSeconds) const; + bool operator < (TimeDiff microSeconds) const; + bool operator <= (TimeDiff microSeconds) const; + + Timespan operator + (const Timespan& d) const; + Timespan operator - (const Timespan& d) const; + Timespan& operator += (const Timespan& d); + Timespan& operator -= (const Timespan& d); + + Timespan operator + (TimeDiff microSeconds) const; + Timespan operator - (TimeDiff microSeconds) const; + Timespan& operator += (TimeDiff microSeconds); + Timespan& operator -= (TimeDiff microSeconds); + + int days() const; + /// Returns the number of days. + + int hours() const; + /// Returns the number of hours (0 to 23). + + int totalHours() const; + /// Returns the total number of hours. + + int minutes() const; + /// Returns the number of minutes (0 to 59). + + int totalMinutes() const; + /// Returns the total number of minutes. + + int seconds() const; + /// Returns the number of seconds (0 to 59). + + int totalSeconds() const; + /// Returns the total number of seconds. + + int milliseconds() const; + /// Returns the number of milliseconds (0 to 999). + + TimeDiff totalMilliseconds() const; + /// Returns the total number of milliseconds. + + int microseconds() const; + /// Returns the fractions of a millisecond + /// in microseconds (0 to 999). + + int useconds() const; + /// Returns the fractions of a second + /// in microseconds (0 to 999999). + + TimeDiff totalMicroseconds() const; + /// Returns the total number of microseconds. + + static const TimeDiff MILLISECONDS; /// The number of microseconds in a millisecond. + static const TimeDiff SECONDS; /// The number of microseconds in a second. + static const TimeDiff MINUTES; /// The number of microseconds in a minute. + static const TimeDiff HOURS; /// The number of microseconds in a hour. + static const TimeDiff DAYS; /// The number of microseconds in a day. + +private: + TimeDiff _span; +}; + + +// +// inlines +// +inline int Timespan::days() const +{ + return int(_span/DAYS); +} + + +inline int Timespan::hours() const +{ + return int((_span/HOURS) % 24); +} + + +inline int Timespan::totalHours() const +{ + return int(_span/HOURS); +} + + +inline int Timespan::minutes() const +{ + return int((_span/MINUTES) % 60); +} + + +inline int Timespan::totalMinutes() const +{ + return int(_span/MINUTES); +} + + +inline int Timespan::seconds() const +{ + return int((_span/SECONDS) % 60); +} + + +inline int Timespan::totalSeconds() const +{ + return int(_span/SECONDS); +} + + +inline int Timespan::milliseconds() const +{ + return int((_span/MILLISECONDS) % 1000); +} + + +inline Timespan::TimeDiff Timespan::totalMilliseconds() const +{ + return _span/MILLISECONDS; +} + + +inline int Timespan::microseconds() const +{ + return int(_span % 1000); +} + + +inline int Timespan::useconds() const +{ + return int(_span % 1000000); +} + + +inline Timespan::TimeDiff Timespan::totalMicroseconds() const +{ + return _span; +} + + +inline bool Timespan::operator == (const Timespan& ts) const +{ + return _span == ts._span; +} + + +inline bool Timespan::operator != (const Timespan& ts) const +{ + return _span != ts._span; +} + + +inline bool Timespan::operator > (const Timespan& ts) const +{ + return _span > ts._span; +} + + +inline bool Timespan::operator >= (const Timespan& ts) const +{ + return _span >= ts._span; +} + + +inline bool Timespan::operator < (const Timespan& ts) const +{ + return _span < ts._span; +} + + +inline bool Timespan::operator <= (const Timespan& ts) const +{ + return _span <= ts._span; +} + + +inline bool Timespan::operator == (TimeDiff microSeconds) const +{ + return _span == microSeconds; +} + + +inline bool Timespan::operator != (TimeDiff microSeconds) const +{ + return _span != microSeconds; +} + + +inline bool Timespan::operator > (TimeDiff microSeconds) const +{ + return _span > microSeconds; +} + + +inline bool Timespan::operator >= (TimeDiff microSeconds) const +{ + return _span >= microSeconds; +} + + +inline bool Timespan::operator < (TimeDiff microSeconds) const +{ + return _span < microSeconds; +} + + +inline bool Timespan::operator <= (TimeDiff microSeconds) const +{ + return _span <= microSeconds; +} + + +inline void swap(Timespan& s1, Timespan& s2) +{ + s1.swap(s2); +} + + +inline Timespan::~Timespan() +{ +} + + +} // namespace Poco + + +#endif // Foundation_Timespan_INCLUDED diff --git a/include/Poco/Poco/Timestamp.h b/include/Poco/Poco/Timestamp.h new file mode 100644 index 00000000..0f869e1b --- /dev/null +++ b/include/Poco/Poco/Timestamp.h @@ -0,0 +1,278 @@ +// +// Timestamp.h +// +// Library: Foundation +// Package: DateTime +// Module: Timestamp +// +// Definition of the Timestamp class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Timestamp_INCLUDED +#define Foundation_Timestamp_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +class Timespan; + + +class Foundation_API Timestamp + /// A Timestamp stores a monotonic* time value + /// with (theoretical) microseconds resolution. + /// Timestamps can be compared with each other + /// and simple arithmetic is supported. + /// + /// [*] Note that Timestamp values are only monotonic as + /// long as the systems's clock is monotonic as well + /// (and not, e.g. set back due to time synchronization + /// or other reasons). + /// + /// Timestamps are UTC (Coordinated Universal Time) + /// based and thus independent of the timezone + /// in effect on the system. + /// + /// The internal reference time is the Unix epoch, + /// midnight, January 1, 1970. +{ +public: + using TimeVal = Int64; + /// Monotonic UTC time value in microsecond resolution, + /// with base time midnight, January 1, 1970. + + using UtcTimeVal = Int64; + /// Monotonic UTC time value in 100 nanosecond resolution, + /// with base time midnight, October 15, 1582. + + using TimeDiff = Int64; + /// Difference between two TimeVal values in microseconds. + + static const TimeVal TIMEVAL_MIN; /// Minimum timestamp value. + static const TimeVal TIMEVAL_MAX; /// Maximum timestamp value. + + Timestamp(); + /// Creates a timestamp with the current time. + + Timestamp(TimeVal tv); + /// Creates a timestamp from the given time value + /// (microseconds since midnight, January 1, 1970). + + Timestamp(const Timestamp& other); + /// Copy constructor. + + ~Timestamp(); + /// Destroys the timestamp + + Timestamp& operator = (const Timestamp& other); + Timestamp& operator = (TimeVal tv); + + void swap(Timestamp& timestamp); + /// Swaps the Timestamp with another one. + + void update(); + /// Updates the Timestamp with the current time. + + bool operator == (const Timestamp& ts) const; + bool operator != (const Timestamp& ts) const; + bool operator > (const Timestamp& ts) const; + bool operator >= (const Timestamp& ts) const; + bool operator < (const Timestamp& ts) const; + bool operator <= (const Timestamp& ts) const; + + Timestamp operator + (TimeDiff d) const; + Timestamp operator + (const Timespan& span) const; + Timestamp operator - (TimeDiff d) const; + Timestamp operator - (const Timespan& span) const; + TimeDiff operator - (const Timestamp& ts) const; + Timestamp& operator += (TimeDiff d); + Timestamp& operator += (const Timespan& span); + Timestamp& operator -= (TimeDiff d); + Timestamp& operator -= (const Timespan& span); + + std::time_t epochTime() const; + /// Returns the timestamp expressed in time_t. + /// time_t base time is midnight, January 1, 1970. + /// Resolution is one second. + + UtcTimeVal utcTime() const; + /// Returns the timestamp expressed in UTC-based + /// time. UTC base time is midnight, October 15, 1582. + /// Resolution is 100 nanoseconds. + + TimeVal epochMicroseconds() const; + /// Returns the timestamp expressed in microseconds + /// since the Unix epoch, midnight, January 1, 1970. + + TimeDiff elapsed() const; + /// Returns the time elapsed since the time denoted by + /// the timestamp. Equivalent to Timestamp() - *this. + + bool isElapsed(TimeDiff interval) const; + /// Returns true iff the given interval has passed + /// since the time denoted by the timestamp. + + TimeVal raw() const; + /// Returns the raw time value. + /// + /// Same as epochMicroseconds(). + + static Timestamp fromEpochTime(std::time_t t); + /// Creates a timestamp from a std::time_t. + + static Timestamp fromUtcTime(UtcTimeVal val); + /// Creates a timestamp from a UTC time value + /// (100 nanosecond intervals since midnight, + /// October 15, 1582). + + static TimeDiff resolution(); + /// Returns the resolution in units per second. + /// Since the timestamp has microsecond resolution, + /// the returned value is always 1000000. + +#if defined(_WIN32) + static Timestamp fromFileTimeNP(UInt32 fileTimeLow, UInt32 fileTimeHigh); + void toFileTimeNP(UInt32& fileTimeLow, UInt32& fileTimeHigh) const; +#endif + +private: + TimeVal _ts; +}; + + +// +// inlines +// +inline bool Timestamp::operator == (const Timestamp& ts) const +{ + return _ts == ts._ts; +} + + +inline bool Timestamp::operator != (const Timestamp& ts) const +{ + return _ts != ts._ts; +} + + +inline bool Timestamp::operator > (const Timestamp& ts) const +{ + return _ts > ts._ts; +} + + +inline bool Timestamp::operator >= (const Timestamp& ts) const +{ + return _ts >= ts._ts; +} + + +inline bool Timestamp::operator < (const Timestamp& ts) const +{ + return _ts < ts._ts; +} + + +inline bool Timestamp::operator <= (const Timestamp& ts) const +{ + return _ts <= ts._ts; +} + + +inline Timestamp Timestamp::operator + (Timestamp::TimeDiff d) const +{ + return Timestamp(_ts + d); +} + + +inline Timestamp Timestamp::operator - (Timestamp::TimeDiff d) const +{ + return Timestamp(_ts - d); +} + + +inline Timestamp::TimeDiff Timestamp::operator - (const Timestamp& ts) const +{ + return _ts - ts._ts; +} + + +inline Timestamp& Timestamp::operator += (Timestamp::TimeDiff d) +{ + _ts += d; + return *this; +} + + +inline Timestamp& Timestamp::operator -= (Timestamp::TimeDiff d) +{ + _ts -= d; + return *this; +} + + +inline std::time_t Timestamp::epochTime() const +{ + return std::time_t(_ts/resolution()); +} + + +inline Timestamp::UtcTimeVal Timestamp::utcTime() const +{ + return _ts*10 + (TimeDiff(0x01b21dd2) << 32) + 0x13814000; +} + + +inline Timestamp::TimeVal Timestamp::epochMicroseconds() const +{ + return _ts; +} + + +inline Timestamp::TimeDiff Timestamp::elapsed() const +{ + Timestamp now; + return now - *this; +} + + +inline bool Timestamp::isElapsed(Timestamp::TimeDiff interval) const +{ + Timestamp now; + Timestamp::TimeDiff diff = now - *this; + return diff >= interval; +} + + +inline Timestamp::TimeDiff Timestamp::resolution() +{ + return 1000000; +} + + +inline void swap(Timestamp& s1, Timestamp& s2) +{ + s1.swap(s2); +} + + +inline Timestamp::TimeVal Timestamp::raw() const +{ + return _ts; +} + + +} // namespace Poco + + +#endif // Foundation_Timestamp_INCLUDED diff --git a/include/Poco/Poco/Types.h b/include/Poco/Poco/Types.h new file mode 100644 index 00000000..6489a6f9 --- /dev/null +++ b/include/Poco/Poco/Types.h @@ -0,0 +1,78 @@ +// +// Types.h +// +// Library: Foundation +// Package: Core +// Module: Types +// +// Definitions of fixed-size integer types for various platforms +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_Types_INCLUDED +#define Foundation_Types_INCLUDED + + +#include "Poco/Foundation.h" +#include + + +namespace Poco { + + +using Int8 = std::int8_t; +using UInt8 = std::uint8_t; +using Int16 = std::int16_t; +using UInt16 = std::uint16_t; +using Int32 = std::int32_t; +using UInt32 = std::uint32_t; +using Int64 = std::int64_t; +using UInt64 = std::uint64_t; +using IntPtr = std::intptr_t; +using UIntPtr = std::uintptr_t; + + +#if defined(_MSC_VER) + #if defined(_WIN64) + #define POCO_PTR_IS_64_BIT 1 + #endif + #define POCO_HAVE_INT64 1 +#elif defined(__GNUC__) || defined(__clang__) + #if defined(_WIN64) + #define POCO_PTR_IS_64_BIT 1 + #else + #if defined(__LP64__) + #define POCO_PTR_IS_64_BIT 1 + #define POCO_LONG_IS_64_BIT 1 + #if POCO_OS == POCO_OS_LINUX || POCO_OS == POCO_OS_FREE_BSD || POCO_OS == POCO_OS_ANDROID + #define POCO_INT64_IS_LONG 1 + #endif + #endif + #endif + #define POCO_HAVE_INT64 1 +#elif defined(__SUNPRO_CC) + #if defined(__sparcv9) + #define POCO_PTR_IS_64_BIT 1 + #define POCO_LONG_IS_64_BIT 1 + #endif + #define POCO_HAVE_INT64 1 +#elif defined(__IBMCPP__) + #if defined(__64BIT__) + #define POCO_PTR_IS_64_BIT 1 + #define POCO_LONG_IS_64_BIT 1 + #endif + #define POCO_HAVE_INT64 1 +#elif defined(_DIAB_TOOL) + #define POCO_HAVE_INT64 1 +#endif + + +} // namespace Poco + + +#endif // Foundation_Types_INCLUDED diff --git a/include/Poco/Poco/URI.h b/include/Poco/Poco/URI.h new file mode 100644 index 00000000..258b0af9 --- /dev/null +++ b/include/Poco/Poco/URI.h @@ -0,0 +1,424 @@ +// +// URI.h +// +// Library: Foundation +// Package: URI +// Module: URI +// +// Definition of the URI class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_URI_INCLUDED +#define Foundation_URI_INCLUDED + + +#include "Poco/Foundation.h" +#include +#include + + +namespace Poco { + + +class Path; + + +class Foundation_API URI + /// A Uniform Resource Identifier, as specified in RFC 3986. + /// + /// The URI class provides methods for building URIs from their + /// parts, as well as for splitting URIs into their parts. + /// Furthermore, the class provides methods for resolving + /// relative URIs against base URIs. + /// + /// The class automatically performs a few normalizations on + /// all URIs and URI parts passed to it: + /// * scheme identifiers are converted to lower case + /// * percent-encoded characters are decoded (except for the query string) + /// * optionally, dot segments are removed from paths (see normalize()) + /// + /// Note that dealing with query strings requires some precautions, as, internally, + /// query strings are stored in percent-encoded form, while all other parts of the URI + /// are stored in decoded form. While parsing query strings from properly encoded URLs + /// generally works, explicitly setting query strings with setQuery() or extracting + /// query strings with getQuery() may lead to ambiguities. See the descriptions of + /// setQuery(), setRawQuery(), getQuery() and getRawQuery() for more information. +{ +public: + using QueryParameters = std::vector>; + + URI(); + /// Creates an empty URI. + + explicit URI(const std::string& uri); + /// Parses an URI from the given string. Throws a + /// SyntaxException if the uri is not valid. + + explicit URI(const char* uri); + /// Parses an URI from the given string. Throws a + /// SyntaxException if the uri is not valid. + + URI(const std::string& scheme, const std::string& pathEtc); + /// Creates an URI from its parts. + + URI(const std::string& scheme, const std::string& authority, const std::string& pathEtc); + /// Creates an URI from its parts. + + URI(const std::string& scheme, const std::string& authority, const std::string& path, const std::string& query); + /// Creates an URI from its parts. + + URI(const std::string& scheme, const std::string& authority, const std::string& path, const std::string& query, const std::string& fragment); + /// Creates an URI from its parts. + + URI(const URI& uri); + /// Copy constructor. Creates an URI from another one. + + URI(URI&& uri) noexcept; + /// Move constructor. + + URI(const URI& baseURI, const std::string& relativeURI); + /// Creates an URI from a base URI and a relative URI, according to + /// the algorithm in section 5.2 of RFC 3986. + + explicit URI(const Path& path); + /// Creates a URI from a path. + /// + /// The path will be made absolute, and a file:// URI + /// will be built from it. + + ~URI(); + /// Destroys the URI. + + URI& operator = (const URI& uri); + /// Assignment operator. + + URI& operator = (URI&& uri) noexcept; + /// Move assignment. + + URI& operator = (const std::string& uri); + /// Parses and assigns an URI from the given string. Throws a + /// SyntaxException if the uri is not valid. + + URI& operator = (const char* uri); + /// Parses and assigns an URI from the given string. Throws a + /// SyntaxException if the uri is not valid. + + void swap(URI& uri); + /// Swaps the URI with another one. + + void clear(); + /// Clears all parts of the URI. + + std::string toString() const; + /// Returns a string representation of the URI. + /// + /// Characters in the path, query and fragment parts will be + /// percent-encoded as necessary. + + const std::string& getScheme() const; + /// Returns the scheme part of the URI. + + void setScheme(const std::string& scheme); + /// Sets the scheme part of the URI. The given scheme + /// is converted to lower-case. + /// + /// A list of registered URI schemes can be found + /// at . + + const std::string& getUserInfo() const; + /// Returns the user-info part of the URI. + + void setUserInfo(const std::string& userInfo); + /// Sets the user-info part of the URI. + + const std::string& getHost() const; + /// Returns the host part of the URI. + + void setHost(const std::string& host); + /// Sets the host part of the URI. + + unsigned short getPort() const; + /// Returns the port number part of the URI. + /// + /// If no port number (0) has been specified, the + /// well-known port number (e.g., 80 for http) for + /// the given scheme is returned if it is known. + /// Otherwise, 0 is returned. + + void setPort(unsigned short port); + /// Sets the port number part of the URI. + + unsigned short getSpecifiedPort() const; + /// Returns the port number part of the URI. + /// + /// If no explicit port number has been specified, + /// returns 0. + + std::string getAuthority() const; + /// Returns the authority part (userInfo, host and port) + /// of the URI. + /// + /// If the port number is a well-known port + /// number for the given scheme (e.g., 80 for http), it + /// is not included in the authority. + + void setAuthority(const std::string& authority); + /// Parses the given authority part for the URI and sets + /// the user-info, host, port components accordingly. + + const std::string& getPath() const; + /// Returns the decoded path part of the URI. + + void setPath(const std::string& path); + /// Sets the path part of the URI. + + std::string getQuery() const; + /// Returns the decoded query part of the URI. + /// + /// Note that encoded ampersand characters ('&', "%26") + /// will be decoded, which could cause ambiguities if the query + /// string contains multiple parameters and a parameter name + /// or value contains an ampersand as well. + /// In such a case it's better to use getRawQuery() or + /// getQueryParameters(). + + void setQuery(const std::string& query); + /// Sets the query part of the URI. + /// + /// The query string will be percent-encoded. If the query + /// already contains percent-encoded characters, these + /// will be double-encoded, which is probably not what's + /// intended by the caller. Furthermore, ampersand ('&') + /// characters in the query will not be encoded. This could + /// lead to ambiguity issues if the query string contains multiple + /// name-value parameters separated by ampersand, and if any + /// name or value also contains an ampersand. In such a + /// case, it's better to use setRawQuery() with a properly + /// percent-encoded query string, or use addQueryParameter() + /// or setQueryParameters(), which take care of appropriate + /// percent encoding of parameter names and values. + + void addQueryParameter(const std::string& param, const std::string& val = ""); + /// Adds "param=val" to the query; "param" may not be empty. + /// If val is empty, only '=' is appended to the parameter. + /// + /// In addition to regular encoding, function also encodes '&' and '=', + /// if found in param or val. + + const std::string& getRawQuery() const; + /// Returns the query string in raw form, which usually + /// means percent encoded. + + void setRawQuery(const std::string& query); + /// Sets the query part of the URI. + /// + /// The given query string must be properly percent-encoded. + + QueryParameters getQueryParameters() const; + /// Returns the decoded query string parameters as a vector + /// of name-value pairs. + + void setQueryParameters(const QueryParameters& params); + /// Sets the query part of the URI from a vector + /// of query parameters. + /// + /// Calls addQueryParameter() for each parameter name and value. + + const std::string& getFragment() const; + /// Returns the fragment part of the URI. + + void setFragment(const std::string& fragment); + /// Sets the fragment part of the URI. + + void setPathEtc(const std::string& pathEtc); + /// Sets the path, query and fragment parts of the URI. + + std::string getPathEtc() const; + /// Returns the encoded path, query and fragment parts of the URI. + + std::string getPathAndQuery() const; + /// Returns the encoded path and query parts of the URI. + + void resolve(const std::string& relativeURI); + /// Resolves the given relative URI against the base URI. + /// See section 5.2 of RFC 3986 for the algorithm used. + + void resolve(const URI& relativeURI); + /// Resolves the given relative URI against the base URI. + /// See section 5.2 of RFC 3986 for the algorithm used. + + bool isRelative() const; + /// Returns true if the URI is a relative reference, false otherwise. + /// + /// A relative reference does not contain a scheme identifier. + /// Relative references are usually resolved against an absolute + /// base reference. + + bool empty() const; + /// Returns true if the URI is empty, false otherwise. + + bool operator == (const URI& uri) const; + /// Returns true if both URIs are identical, false otherwise. + /// + /// Two URIs are identical if their scheme, authority, + /// path, query and fragment part are identical. + + bool operator == (const std::string& uri) const; + /// Parses the given URI and returns true if both URIs are identical, + /// false otherwise. + + bool operator != (const URI& uri) const; + /// Returns true if both URIs are identical, false otherwise. + + bool operator != (const std::string& uri) const; + /// Parses the given URI and returns true if both URIs are identical, + /// false otherwise. + + void normalize(); + /// Normalizes the URI by removing all but leading . and .. segments from the path. + /// + /// If the first path segment in a relative path contains a colon (:), + /// such as in a Windows path containing a drive letter, a dot segment (./) + /// is prepended in accordance with section 3.3 of RFC 3986. + + void getPathSegments(std::vector& segments) const; + /// Places the single path segments (delimited by slashes) into the + /// given vector. + + static void encode(const std::string& str, const std::string& reserved, std::string& encodedStr); + /// URI-encodes the given string by escaping reserved and non-ASCII + /// characters. The encoded string is appended to encodedStr. + + static void decode(const std::string& str, std::string& decodedStr, bool plusAsSpace = false); + /// URI-decodes the given string by replacing percent-encoded + /// characters with the actual character. The decoded string + /// is appended to decodedStr. + /// + /// When plusAsSpace is true, non-encoded plus signs in the query are decoded as spaces. + /// (http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1) + +protected: + bool equals(const URI& uri) const; + /// Returns true if both uri's are equivalent. + + bool isWellKnownPort() const; + /// Returns true if the URI's port number is a well-known one + /// (for example, 80, if the scheme is http). + + unsigned short getWellKnownPort() const; + /// Returns the well-known port number for the URI's scheme, + /// or 0 if the port number is not known. + + void parse(const std::string& uri); + /// Parses and assigns an URI from the given string. Throws a + /// SyntaxException if the uri is not valid. + + void parseAuthority(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the user-info, host and port from the given data. + + void parseHostAndPort(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the host and port from the given data. + + void parsePath(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the path from the given data. + + void parsePathEtc(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the path, query and fragment from the given data. + + void parseQuery(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the query from the given data. + + void parseFragment(std::string::const_iterator& it, const std::string::const_iterator& end); + /// Parses and sets the fragment from the given data. + + void mergePath(const std::string& path); + /// Appends a path to the URI's path. + + void removeDotSegments(bool removeLeading = true); + /// Removes all dot segments from the path. + + static void getPathSegments(const std::string& path, std::vector& segments); + /// Places the single path segments (delimited by slashes) into the + /// given vector. + + void buildPath(const std::vector& segments, bool leadingSlash, bool trailingSlash); + /// Builds the path from the given segments. + + static const std::string RESERVED_PATH; + static const std::string RESERVED_QUERY; + static const std::string RESERVED_QUERY_PARAM; + static const std::string RESERVED_FRAGMENT; + static const std::string ILLEGAL; + +private: + std::string _scheme; + std::string _userInfo; + std::string _host; + unsigned short _port; + std::string _path; + std::string _query; + std::string _fragment; +}; + + +// +// inlines +// +inline const std::string& URI::getScheme() const +{ + return _scheme; +} + + +inline const std::string& URI::getUserInfo() const +{ + return _userInfo; +} + + +inline const std::string& URI::getHost() const +{ + return _host; +} + + +inline const std::string& URI::getPath() const +{ + return _path; +} + + +inline const std::string& URI::getRawQuery() const +{ + return _query; +} + + +inline const std::string& URI::getFragment() const +{ + return _fragment; +} + + +inline unsigned short URI::getSpecifiedPort() const +{ + return _port; +} + + +inline void swap(URI& u1, URI& u2) +{ + u1.swap(u2); +} + + +} // namespace Poco + + +#endif // Foundation_URI_INCLUDED diff --git a/include/Poco/Poco/UTF8String.h b/include/Poco/Poco/UTF8String.h new file mode 100644 index 00000000..73898c65 --- /dev/null +++ b/include/Poco/Poco/UTF8String.h @@ -0,0 +1,83 @@ +// +// UTF8String.h +// +// Library: Foundation +// Package: Text +// Module: UTF8String +// +// Definition of the UTF8 string functions. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_UTF8String_INCLUDED +#define Foundation_UTF8String_INCLUDED + + +#include "Poco/Foundation.h" + + +namespace Poco { + + +struct Foundation_API UTF8 + /// This class provides static methods that are UTF-8 capable variants + /// of the same functions in Poco/String.h. + /// + /// The various variants of icompare() provide case insensitive comparison + /// for UTF-8 encoded strings. + /// + /// toUpper(), toUpperInPlace(), toLower() and toLowerInPlace() provide + /// Unicode-based character case transformation for UTF-8 encoded strings. + /// + /// removeBOM() removes the UTF-8 Byte Order Mark sequence (0xEF, 0xBB, 0xBF) + /// from the beginning of the given string, if it's there. +{ + static int icompare(const std::string& str, std::string::size_type pos, std::string::size_type n, std::string::const_iterator it2, std::string::const_iterator end2); + static int icompare(const std::string& str1, const std::string& str2); + static int icompare(const std::string& str1, std::string::size_type n1, const std::string& str2, std::string::size_type n2); + static int icompare(const std::string& str1, std::string::size_type n, const std::string& str2); + static int icompare(const std::string& str1, std::string::size_type pos, std::string::size_type n, const std::string& str2); + static int icompare(const std::string& str1, std::string::size_type pos1, std::string::size_type n1, const std::string& str2, std::string::size_type pos2, std::string::size_type n2); + static int icompare(const std::string& str1, std::string::size_type pos1, std::string::size_type n, const std::string& str2, std::string::size_type pos2); + static int icompare(const std::string& str, std::string::size_type pos, std::string::size_type n, const std::string::value_type* ptr); + static int icompare(const std::string& str, std::string::size_type pos, const std::string::value_type* ptr); + static int icompare(const std::string& str, const std::string::value_type* ptr); + + static std::string toUpper(const std::string& str); + static std::string& toUpperInPlace(std::string& str); + static std::string toLower(const std::string& str); + static std::string& toLowerInPlace(std::string& str); + + static void removeBOM(std::string& str); + /// Remove the UTF-8 Byte Order Mark sequence (0xEF, 0xBB, 0xBF) + /// from the beginning of the string, if it's there. + + static std::string escape(const std::string& s, bool strictJSON = false); + /// Escapes a string. Special characters like tab, backslash, ... are + /// escaped. Unicode characters are escaped to \uxxxx. + /// If strictJSON is true, \a and \v will be escaped to \\u0007 and \\u000B + /// instead of \\a and \\v for strict JSON conformance. + + static std::string escape(const std::string::const_iterator& begin, const std::string::const_iterator& end, bool strictJSON = false); + /// Escapes a string. Special characters like tab, backslash, ... are + /// escaped. Unicode characters are escaped to \uxxxx. + /// If strictJSON is true, \a and \v will be escaped to \\u0007 and \\u000B + /// instead of \\a and \\v for strict JSON conformance. + + static std::string unescape(const std::string& s); + /// Creates an UTF8 string from a string that contains escaped characters. + + static std::string unescape(const std::string::const_iterator& begin, const std::string::const_iterator& end); + /// Creates an UTF8 string from a string that contains escaped characters. +}; + + +} // namespace Poco + + +#endif // Foundation_UTF8String_INCLUDED diff --git a/include/Poco/Poco/UnWindows.h b/include/Poco/Poco/UnWindows.h new file mode 100644 index 00000000..b4778bf3 --- /dev/null +++ b/include/Poco/Poco/UnWindows.h @@ -0,0 +1,39 @@ +// +// UnWindows.h +// +// Library: Foundation +// Package: Core +// Module: UnWindows +// +// Simple wrapper around the header file. +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_UnWindows_INCLUDED +#define Foundation_UnWindows_INCLUDED + + +// Reduce bloat +#if defined(_WIN32) + #if !defined(WIN32_LEAN_AND_MEAN) && !defined(POCO_BLOATED_WIN32) + #define WIN32_LEAN_AND_MEAN + #endif +#endif + + +#if !defined(POCO_NO_WINDOWS_H) + #include + #ifdef __MINGW32__ + #include + #include + #include + #endif // __MINGW32__ +#endif + + +#endif // Foundation_UnWindows_INCLUDED diff --git a/include/Poco/Poco/UnbufferedStreamBuf.h b/include/Poco/Poco/UnbufferedStreamBuf.h new file mode 100644 index 00000000..32bb38ab --- /dev/null +++ b/include/Poco/Poco/UnbufferedStreamBuf.h @@ -0,0 +1,179 @@ +// +// UnufferedStreamBuf.h +// +// Library: Foundation +// Package: Streams +// Module: StreamBuf +// +// Definition of template BasicUnbufferedStreamBuf and class UnbufferedStreamBuf. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_UnbufferedStreamBuf_INCLUDED +#define Foundation_UnbufferedStreamBuf_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/StreamUtil.h" +#include +#include +#include + + +namespace Poco { + + +template +class BasicUnbufferedStreamBuf: public std::basic_streambuf + /// This is an implementation of an unbuffered streambuf + /// that greatly simplifies the implementation of + /// custom streambufs of various kinds. + /// Derived classes only have to override the methods + /// readFromDevice() or writeToDevice(). +{ +protected: + typedef std::basic_streambuf Base; + typedef std::basic_ios IOS; + typedef ch char_type; + typedef tr char_traits; + typedef typename Base::int_type int_type; + typedef typename Base::pos_type pos_type; + typedef typename Base::off_type off_type; + typedef typename IOS::openmode openmode; + +public: + BasicUnbufferedStreamBuf(): + _pb(char_traits::eof()), + _ispb(false) + { + this->setg(0, 0, 0); + this->setp(0, 0); + } + + ~BasicUnbufferedStreamBuf() + { + } + + virtual int_type overflow(int_type c) + { + if (c != char_traits::eof()) + return writeToDevice(char_traits::to_char_type(c)); + else + return c; + } + + virtual int_type underflow() + { + if (_ispb) + { + return _pb; + } + else + { + int_type c = readFromDevice(); + if (c != char_traits::eof()) + { + _ispb = true; + _pb = c; + } + return c; + } + } + + virtual int_type uflow() + { + if (_ispb) + { + _ispb = false; + return _pb; + } + else + { + int_type c = readFromDevice(); + if (c != char_traits::eof()) + { + _pb = c; + } + return c; + } + } + + virtual int_type pbackfail(int_type c) + { + if (_ispb) + { + return char_traits::eof(); + } + else + { + _ispb = true; + _pb = c; + return c; + } + } + + virtual std::streamsize xsgetn(char_type* p, std::streamsize count) + /// Some platforms (for example, Compaq C++) have buggy implementations of + /// xsgetn that handle null buffers incorrectly. + /// Anyway, it does not hurt to provide an optimized implementation + /// of xsgetn for this streambuf implementation. + { + std::streamsize copied = 0; + while (count > 0) + { + int_type c = uflow(); + if (c == char_traits::eof()) break; + *p++ = char_traits::to_char_type(c); + ++copied; + --count; + } + return copied; + } + +protected: + static int_type charToInt(char_type c) + { + return char_traits::to_int_type(c); + } + +private: + virtual int_type readFromDevice() + { + return char_traits::eof(); + } + + virtual int_type writeToDevice(char_type) + { + return char_traits::eof(); + } + + int_type _pb; + bool _ispb; + + BasicUnbufferedStreamBuf(const BasicUnbufferedStreamBuf&); + BasicUnbufferedStreamBuf& operator = (const BasicUnbufferedStreamBuf&); +}; + + +// +// We provide an instantiation for char. +// +// Visual C++ needs a workaround - explicitly importing the template +// instantiation - to avoid duplicate symbols due to multiple +// instantiations in different libraries. +// +#if defined(_MSC_VER) && defined(POCO_DLL) && !defined(Foundation_EXPORTS) +template class Foundation_API BasicUnbufferedStreamBuf>; +#endif +typedef BasicUnbufferedStreamBuf> UnbufferedStreamBuf; + + +} // namespace Poco + + +#endif // Foundation_UnbufferedStreamBuf_INCLUDED diff --git a/include/Poco/Poco/Util/AbstractConfiguration.h b/include/Poco/Poco/Util/AbstractConfiguration.h new file mode 100644 index 00000000..30fabc12 --- /dev/null +++ b/include/Poco/Poco/Util/AbstractConfiguration.h @@ -0,0 +1,393 @@ +// +// AbstractConfiguration.h +// +// Library: Util +// Package: Configuration +// Module: AbstractConfiguration +// +// Definition of the AbstractConfiguration class. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Util_AbstractConfiguration_INCLUDED +#define Util_AbstractConfiguration_INCLUDED + + +#include "Poco/Util/Util.h" +#include "Poco/Mutex.h" +#include "Poco/RefCountedObject.h" +#include "Poco/AutoPtr.h" +#include "Poco/BasicEvent.h" +#include +#include + + +namespace Poco { +namespace Util { + + +class Util_API AbstractConfiguration: public Poco::RefCountedObject + /// AbstractConfiguration is an abstract base class for different + /// kinds of configuration data, such as INI files, property files, + /// XML configuration files or the Windows Registry. + /// + /// Configuration property keys have a hierarchical format, consisting + /// of names separated by periods. The exact interpretation of key names + /// is up to the actual subclass implementation of AbstractConfiguration. + /// Keys are case sensitive. + /// + /// All public methods are synchronized, so the class is safe for multithreaded use. + /// AbstractConfiguration implements reference counting based garbage collection. + /// + /// Subclasses must override the getRaw(), setRaw() and enumerate() methods. +{ +public: + using Keys = std::vector; + using Ptr = AutoPtr; + + class KeyValue + /// A key-value pair, used as event argument. + { + public: + KeyValue(const std::string& key, std::string& value): + _key(key), + _value(value) + { + } + + const std::string& key() const + { + return _key; + } + + const std::string& value() const + { + return _value; + } + + std::string& value() + { + return _value; + } + + private: + const std::string& _key; + std::string& _value; + }; + + Poco::BasicEvent propertyChanging; + /// Fired before a property value is changed or + /// a new property is created. + /// + /// Can be used to check or fix a property value, + /// or to cancel the change by throwing an exception. + /// + /// The event delegate can use one of the get...() functions + /// to obtain the current property value. + + Poco::BasicEvent propertyChanged; + /// Fired after a property value has been changed + /// or a property has been created. + + Poco::BasicEvent propertyRemoving; + /// Fired before a property is removed by a + /// call to remove(). + /// + /// Note: This will even be fired if the key + /// does not exist and the remove operation will + /// fail with an exception. + + Poco::BasicEvent propertyRemoved; + /// Fired after a property has been removed by + /// a call to remove(). + + AbstractConfiguration(); + /// Creates the AbstractConfiguration. + + bool hasProperty(const std::string& key) const; + /// Returns true iff the property with the given key exists. + + bool hasOption(const std::string& key) const; + /// Returns true iff the property with the given key exists. + /// + /// Same as hasProperty(). + + bool has(const std::string& key) const; + /// Returns true iff the property with the given key exists. + /// + /// Same as hasProperty(). + + std::string getString(const std::string& key) const; + /// Returns the string value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// If the value contains references to other properties (${}), these + /// are expanded. + + std::string getString(const std::string& key, const std::string& defaultValue) const; + /// If a property with the given key exists, returns the property's string value, + /// otherwise returns the given default value. + /// If the value contains references to other properties (${}), these + /// are expanded. + + std::string getRawString(const std::string& key) const; + /// Returns the raw string value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// References to other properties are not expanded. + + std::string getRawString(const std::string& key, const std::string& defaultValue) const; + /// If a property with the given key exists, returns the property's raw string value, + /// otherwise returns the given default value. + /// References to other properties are not expanded. + + int getInt(const std::string& key) const; + /// Returns the int value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to an int. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + unsigned int getUInt(const std::string& key) const; + /// Returns the unsigned int value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to an unsigned int. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + int getInt(const std::string& key, int defaultValue) const; + /// If a property with the given key exists, returns the property's int value, + /// otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to an int. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + unsigned int getUInt(const std::string& key, unsigned int defaultValue) const; + /// If a property with the given key exists, returns the property's unsigned int + /// value, otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to an unsigned int. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + +#if defined(POCO_HAVE_INT64) + + Int64 getInt64(const std::string& key) const; + /// Returns the Int64 value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to an Int64. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + UInt64 getUInt64(const std::string& key) const; + /// Returns the UInt64 value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to an UInt64. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + Int64 getInt64(const std::string& key, Int64 defaultValue) const; + /// If a property with the given key exists, returns the property's Int64 value, + /// otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to an Int64. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + + UInt64 getUInt64(const std::string& key, UInt64 defaultValue) const; + /// If a property with the given key exists, returns the property's UInt64 + /// value, otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to an UInt64. + /// Numbers starting with 0x are treated as hexadecimal. + /// If the value contains references to other properties (${}), these + /// are expanded. + +#endif // defined(POCO_HAVE_INT64) + + double getDouble(const std::string& key) const; + /// Returns the double value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to a double. + /// If the value contains references to other properties (${}), these + /// are expanded. + + double getDouble(const std::string& key, double defaultValue) const; + /// If a property with the given key exists, returns the property's double value, + /// otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to an double. + /// If the value contains references to other properties (${}), these + /// are expanded. + + bool getBool(const std::string& key) const; + /// Returns the boolean value of the property with the given name. + /// Throws a NotFoundException if the key does not exist. + /// Throws a SyntaxException if the property can not be converted + /// to a boolean. + /// If the value contains references to other properties (${}), these + /// are expanded. + + bool getBool(const std::string& key, bool defaultValue) const; + /// If a property with the given key exists, returns the property's boolean value, + /// otherwise returns the given default value. + /// Throws a SyntaxException if the property can not be converted + /// to a boolean. + /// The following string values can be converted into a boolean: + /// - numerical values: non zero becomes true, zero becomes false + /// - strings: true, yes, on become true, false, no, off become false + /// Case does not matter. + /// If the value contains references to other properties (${}), these + /// are expanded. + + virtual void setString(const std::string& key, const std::string& value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + + virtual void setInt(const std::string& key, int value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + + virtual void setUInt(const std::string& key, unsigned int value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + +#if defined(POCO_HAVE_INT64) + + virtual void setInt64(const std::string& key, Int64 value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + + virtual void setUInt64(const std::string& key, UInt64 value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + +#endif // defined(POCO_HAVE_INT64) + + virtual void setDouble(const std::string& key, double value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + + virtual void setBool(const std::string& key, bool value); + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + + void keys(Keys& range) const; + /// Returns in range the names of all keys at root level. + + void keys(const std::string& key, Keys& range) const; + /// Returns in range the names of all subkeys under the given key. + /// If an empty key is passed, all root level keys are returned. + + const Ptr createView(const std::string& prefix) const; + /// Creates a non-mutable view (see ConfigurationView) into the configuration. + + Ptr createView(const std::string& prefix); + /// Creates a view (see ConfigurationView) into the configuration. + + std::string expand(const std::string& value) const; + /// Replaces all occurrences of ${} in value with the + /// value of the . If does not exist, + /// nothing is changed. + /// + /// If a circular property reference is detected, a + /// CircularReferenceException will be thrown. + + void remove(const std::string& key); + /// Removes the property with the given key. + /// + /// Does nothing if the key does not exist. + + void enableEvents(bool enable = true); + /// Enables (or disables) events. + + bool eventsEnabled() const; + /// Returns true iff events are enabled. + +protected: + virtual bool getRaw(const std::string& key, std::string& value) const = 0; + /// If the property with the given key exists, stores the property's value + /// in value and returns true. Otherwise, returns false. + /// + /// Must be overridden by subclasses. + + virtual void setRaw(const std::string& key, const std::string& value) = 0; + /// Sets the property with the given key to the given value. + /// An already existing value for the key is overwritten. + /// + /// Must be overridden by subclasses. + + virtual void enumerate(const std::string& key, Keys& range) const = 0; + /// Returns in range the names of all subkeys under the given key. + /// If an empty key is passed, all root level keys are returned. + + virtual void removeRaw(const std::string& key); + /// Removes the property with the given key. + /// + /// Does nothing if the key does not exist. + /// + /// Should be overridden by subclasses; the default + /// implementation throws a Poco::NotImplementedException. + + static int parseInt(const std::string& value); + /// Returns string as signed integer. + /// Decimal and hexadecimal notation is supported. + + static unsigned parseUInt(const std::string& value); + /// Returns string as unsigned integer. + /// Decimal and hexadecimal notation is supported. + +#if defined(POCO_HAVE_INT64) + + static Int64 parseInt64(const std::string& value); + /// Returns string as 64-bit signed integer. + /// Decimal and hexadecimal notation is supported. + + static UInt64 parseUInt64(const std::string& value); + /// Returns string as 64-bit unsigned integer. + /// Decimal and hexadecimal notation is supported. + +#endif // defined(POCO_HAVE_INT64) + + static bool parseBool(const std::string& value); + void setRawWithEvent(const std::string& key, std::string value); + + virtual ~AbstractConfiguration(); + +private: + std::string internalExpand(const std::string& value) const; + std::string uncheckedExpand(const std::string& value) const; + + AbstractConfiguration(const AbstractConfiguration&); + AbstractConfiguration& operator = (const AbstractConfiguration&); + + mutable int _depth; + bool _eventsEnabled; + mutable Poco::Mutex _mutex; + + friend class LayeredConfiguration; + friend class ConfigurationView; + friend class ConfigurationMapper; +}; + + +} } // namespace Poco::Util + + +#endif // Util_AbstractConfiguration_INCLUDED diff --git a/include/Poco/Poco/Util/Util.h b/include/Poco/Poco/Util/Util.h new file mode 100644 index 00000000..f567243f --- /dev/null +++ b/include/Poco/Poco/Util/Util.h @@ -0,0 +1,62 @@ +// +// Util.h +// +// Library: Util +// Package: Util +// Module: Util +// +// Basic definitions for the Poco Util library. +// This file must be the first file included by every other Util +// header file. +// +// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Util_Util_INCLUDED +#define Util_Util_INCLUDED + + +#include "Poco/Foundation.h" + + +// +// The following block is the standard way of creating macros which make exporting +// from a DLL simpler. All files within this DLL are compiled with the Util_EXPORTS +// symbol defined on the command line. this symbol should not be defined on any project +// that uses this DLL. This way any other project whose source files include this file see +// Util_API functions as being imported from a DLL, whereas this DLL sees symbols +// defined with this macro as being exported. +// +#if defined(_WIN32) && defined(POCO_DLL) + #if defined(Util_EXPORTS) + #define Util_API __declspec(dllexport) + #else + #define Util_API __declspec(dllimport) + #endif +#endif + + +#if !defined(Util_API) + #if !defined(POCO_NO_GCC_API_ATTRIBUTE) && defined (__GNUC__) && (__GNUC__ >= 4) + #define Util_API __attribute__ ((visibility ("default"))) + #else + #define Util_API + #endif +#endif + + +// +// Automatically link Util library. +// +#if defined(_MSC_VER) + #if !defined(POCO_NO_AUTOMATIC_LIBS) && !defined(Util_EXPORTS) + #pragma comment(lib, "PocoUtil" POCO_LIB_SUFFIX) + #endif +#endif + + +#endif // Util_Util_INCLUDED diff --git a/include/Poco/Poco/desktop.ini b/include/Poco/Poco/desktop.ini new file mode 100644 index 00000000..8f9b631f --- /dev/null +++ b/include/Poco/Poco/desktop.ini @@ -0,0 +1,49 @@ +[LocalizedFileNames] +Foundation.h=@Foundation.h,0 +Config.h=@Config.h,0 +Platform.h=@Platform.h,0 +Platform_WIN32.h=@Platform_WIN32.h,0 +UnWindows.h=@UnWindows.h,0 +Types.h=@Types.h,0 +DateTime.h=@DateTime.h,0 +Timestamp.h=@Timestamp.h,0 +Timespan.h=@Timespan.h,0 +RefCountedObject.h=@RefCountedObject.h,0 +AtomicCounter.h=@AtomicCounter.h,0 +AutoPtr.h=@AutoPtr.h,0 +Exception.h=@Exception.h,0 +Mutex.h=@Mutex.h,0 +ScopedLock.h=@ScopedLock.h,0 +Mutex_WIN32.h=@Mutex_WIN32.h,0 +Buffer.h=@Buffer.h,0 +FIFOBuffer.h=@FIFOBuffer.h,0 +BasicEvent.h=@BasicEvent.h,0 +AbstractEvent.h=@AbstractEvent.h,0 +SingletonHolder.h=@SingletonHolder.h,0 +SharedPtr.h=@SharedPtr.h,0 +ActiveResult.h=@ActiveResult.h,0 +Event.h=@Event.h,0 +Event_WIN32.h=@Event_WIN32.h,0 +ActiveMethod.h=@ActiveMethod.h,0 +ActiveRunnable.h=@ActiveRunnable.h,0 +Runnable.h=@Runnable.h,0 +ActiveStarter.h=@ActiveStarter.h,0 +ThreadPool.h=@ThreadPool.h,0 +Thread.h=@Thread.h,0 +Thread_WIN32.h=@Thread_WIN32.h,0 +DefaultStrategy.h=@DefaultStrategy.h,0 +NotificationStrategy.h=@NotificationStrategy.h,0 +AbstractDelegate.h=@AbstractDelegate.h,0 +Format.h=@Format.h,0 +Any.h=@Any.h,0 +MetaProgramming.h=@MetaProgramming.h,0 +String.h=@String.h,0 +Ascii.h=@Ascii.h,0 +ListMap.h=@ListMap.h,0 +BinaryReader.h=@BinaryReader.h,0 +MemoryStream.h=@MemoryStream.h,0 +StreamUtil.h=@StreamUtil.h,0 +BinaryWriter.h=@BinaryWriter.h,0 +StreamCopier.h=@StreamCopier.h,0 +Path.h=@Path.h,0 +URI.h=@URI.h,0 diff --git a/include/openssl/openssl/asn1.h b/include/openssl/openssl/asn1.h new file mode 100644 index 00000000..9522eec1 --- /dev/null +++ b/include/openssl/openssl/asn1.h @@ -0,0 +1,886 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1_H +# define HEADER_ASN1_H + +# include +# include +# include +# include +# include +# include +# include + +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +# ifdef OPENSSL_BUILD_SHLIBCRYPTO +# undef OPENSSL_EXTERN +# define OPENSSL_EXTERN OPENSSL_EXPORT +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define V_ASN1_UNIVERSAL 0x00 +# define V_ASN1_APPLICATION 0x40 +# define V_ASN1_CONTEXT_SPECIFIC 0x80 +# define V_ASN1_PRIVATE 0xc0 + +# define V_ASN1_CONSTRUCTED 0x20 +# define V_ASN1_PRIMITIVE_TAG 0x1f +# define V_ASN1_PRIMATIVE_TAG /*compat*/ V_ASN1_PRIMITIVE_TAG + +# define V_ASN1_APP_CHOOSE -2/* let the recipient choose */ +# define V_ASN1_OTHER -3/* used in ASN1_TYPE */ +# define V_ASN1_ANY -4/* used in ASN1 template code */ + +# define V_ASN1_UNDEF -1 +/* ASN.1 tag values */ +# define V_ASN1_EOC 0 +# define V_ASN1_BOOLEAN 1 /**/ +# define V_ASN1_INTEGER 2 +# define V_ASN1_BIT_STRING 3 +# define V_ASN1_OCTET_STRING 4 +# define V_ASN1_NULL 5 +# define V_ASN1_OBJECT 6 +# define V_ASN1_OBJECT_DESCRIPTOR 7 +# define V_ASN1_EXTERNAL 8 +# define V_ASN1_REAL 9 +# define V_ASN1_ENUMERATED 10 +# define V_ASN1_UTF8STRING 12 +# define V_ASN1_SEQUENCE 16 +# define V_ASN1_SET 17 +# define V_ASN1_NUMERICSTRING 18 /**/ +# define V_ASN1_PRINTABLESTRING 19 +# define V_ASN1_T61STRING 20 +# define V_ASN1_TELETEXSTRING 20/* alias */ +# define V_ASN1_VIDEOTEXSTRING 21 /**/ +# define V_ASN1_IA5STRING 22 +# define V_ASN1_UTCTIME 23 +# define V_ASN1_GENERALIZEDTIME 24 /**/ +# define V_ASN1_GRAPHICSTRING 25 /**/ +# define V_ASN1_ISO64STRING 26 /**/ +# define V_ASN1_VISIBLESTRING 26/* alias */ +# define V_ASN1_GENERALSTRING 27 /**/ +# define V_ASN1_UNIVERSALSTRING 28 /**/ +# define V_ASN1_BMPSTRING 30 + +/* + * NB the constants below are used internally by ASN1_INTEGER + * and ASN1_ENUMERATED to indicate the sign. They are *not* on + * the wire tag values. + */ + +# define V_ASN1_NEG 0x100 +# define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) +# define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) + +/* For use with d2i_ASN1_type_bytes() */ +# define B_ASN1_NUMERICSTRING 0x0001 +# define B_ASN1_PRINTABLESTRING 0x0002 +# define B_ASN1_T61STRING 0x0004 +# define B_ASN1_TELETEXSTRING 0x0004 +# define B_ASN1_VIDEOTEXSTRING 0x0008 +# define B_ASN1_IA5STRING 0x0010 +# define B_ASN1_GRAPHICSTRING 0x0020 +# define B_ASN1_ISO64STRING 0x0040 +# define B_ASN1_VISIBLESTRING 0x0040 +# define B_ASN1_GENERALSTRING 0x0080 +# define B_ASN1_UNIVERSALSTRING 0x0100 +# define B_ASN1_OCTET_STRING 0x0200 +# define B_ASN1_BIT_STRING 0x0400 +# define B_ASN1_BMPSTRING 0x0800 +# define B_ASN1_UNKNOWN 0x1000 +# define B_ASN1_UTF8STRING 0x2000 +# define B_ASN1_UTCTIME 0x4000 +# define B_ASN1_GENERALIZEDTIME 0x8000 +# define B_ASN1_SEQUENCE 0x10000 +/* For use with ASN1_mbstring_copy() */ +# define MBSTRING_FLAG 0x1000 +# define MBSTRING_UTF8 (MBSTRING_FLAG) +# define MBSTRING_ASC (MBSTRING_FLAG|1) +# define MBSTRING_BMP (MBSTRING_FLAG|2) +# define MBSTRING_UNIV (MBSTRING_FLAG|4) +# define SMIME_OLDMIME 0x400 +# define SMIME_CRLFEOL 0x800 +# define SMIME_STREAM 0x1000 + struct X509_algor_st; +DEFINE_STACK_OF(X509_ALGOR) + +# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */ +/* + * This indicates that the ASN1_STRING is not a real value but just a place + * holder for the location where indefinite length constructed data should be + * inserted in the memory buffer + */ +# define ASN1_STRING_FLAG_NDEF 0x010 + +/* + * This flag is used by the CMS code to indicate that a string is not + * complete and is a place holder for content when it had all been accessed. + * The flag will be reset when content has been written to it. + */ + +# define ASN1_STRING_FLAG_CONT 0x020 +/* + * This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING + * type. + */ +# define ASN1_STRING_FLAG_MSTRING 0x040 +/* String is embedded and only content should be freed */ +# define ASN1_STRING_FLAG_EMBED 0x080 +/* String should be parsed in RFC 5280's time format */ +# define ASN1_STRING_FLAG_X509_TIME 0x100 +/* This is the base type that holds just about everything :-) */ +struct asn1_string_st { + int length; + int type; + unsigned char *data; + /* + * The value of the following field depends on the type being held. It + * is mostly being used for BIT_STRING so if the input data has a + * non-zero 'unused bits' value, it will be handled correctly + */ + long flags; +}; + +/* + * ASN1_ENCODING structure: this is used to save the received encoding of an + * ASN1 type. This is useful to get round problems with invalid encodings + * which can break signatures. + */ + +typedef struct ASN1_ENCODING_st { + unsigned char *enc; /* DER encoding */ + long len; /* Length of encoding */ + int modified; /* set to 1 if 'enc' is invalid */ +} ASN1_ENCODING; + +/* Used with ASN1 LONG type: if a long is set to this it is omitted */ +# define ASN1_LONG_UNDEF 0x7fffffffL + +# define STABLE_FLAGS_MALLOC 0x01 +/* + * A zero passed to ASN1_STRING_TABLE_new_add for the flags is interpreted + * as "don't change" and STABLE_FLAGS_MALLOC is always set. By setting + * STABLE_FLAGS_MALLOC only we can clear the existing value. Use the alias + * STABLE_FLAGS_CLEAR to reflect this. + */ +# define STABLE_FLAGS_CLEAR STABLE_FLAGS_MALLOC +# define STABLE_NO_MASK 0x02 +# define DIRSTRING_TYPE \ + (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_BMPSTRING|B_ASN1_UTF8STRING) +# define PKCS9STRING_TYPE (DIRSTRING_TYPE|B_ASN1_IA5STRING) + +typedef struct asn1_string_table_st { + int nid; + long minsize; + long maxsize; + unsigned long mask; + unsigned long flags; +} ASN1_STRING_TABLE; + +DEFINE_STACK_OF(ASN1_STRING_TABLE) + +/* size limits: this stuff is taken straight from RFC2459 */ + +# define ub_name 32768 +# define ub_common_name 64 +# define ub_locality_name 128 +# define ub_state_name 128 +# define ub_organization_name 64 +# define ub_organization_unit_name 64 +# define ub_title 64 +# define ub_email_address 128 + +/* + * Declarations for template structures: for full definitions see asn1t.h + */ +typedef struct ASN1_TEMPLATE_st ASN1_TEMPLATE; +typedef struct ASN1_TLC_st ASN1_TLC; +/* This is just an opaque pointer */ +typedef struct ASN1_VALUE_st ASN1_VALUE; + +/* Declare ASN1 functions: the implement macro in in asn1t.h */ + +# define DECLARE_ASN1_FUNCTIONS(type) DECLARE_ASN1_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, type) + +# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) + +# define DECLARE_ASN1_FUNCTIONS_fname(type, itname, name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(itname) + +# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ + type *d2i_##name(type **a, const unsigned char **in, long len); \ + int i2d_##name(const type *a, unsigned char **out); \ + DECLARE_ASN1_ITEM(name) + +# define DECLARE_ASN1_NDEF_FUNCTION(name) \ + int i2d_##name##_NDEF(name *a, unsigned char **out); + +# define DECLARE_ASN1_FUNCTIONS_const(name) \ + DECLARE_ASN1_ALLOC_FUNCTIONS(name) \ + DECLARE_ASN1_ENCODE_FUNCTIONS_const(name, name) + +# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ + type *name##_new(void); \ + void name##_free(type *a); + +# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ + DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname) + +# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ + int fname##_print_ctx(BIO *out, stname *x, int indent, \ + const ASN1_PCTX *pctx); + +# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) +# define I2D_OF(type) int (*)(type *,unsigned char **) +# define I2D_OF_const(type) int (*)(const type *,unsigned char **) + +# define CHECKED_D2I_OF(type, d2i) \ + ((d2i_of_void*) (1 ? d2i : ((D2I_OF(type))0))) +# define CHECKED_I2D_OF(type, i2d) \ + ((i2d_of_void*) (1 ? i2d : ((I2D_OF(type))0))) +# define CHECKED_NEW_OF(type, xnew) \ + ((void *(*)(void)) (1 ? xnew : ((type *(*)(void))0))) +# define CHECKED_PTR_OF(type, p) \ + ((void*) (1 ? p : (type*)0)) +# define CHECKED_PPTR_OF(type, p) \ + ((void**) (1 ? p : (type**)0)) + +# define TYPEDEF_D2I_OF(type) typedef type *d2i_of_##type(type **,const unsigned char **,long) +# define TYPEDEF_I2D_OF(type) typedef int i2d_of_##type(type *,unsigned char **) +# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) + +TYPEDEF_D2I2D_OF(void); + +/*- + * The following macros and typedefs allow an ASN1_ITEM + * to be embedded in a structure and referenced. Since + * the ASN1_ITEM pointers need to be globally accessible + * (possibly from shared libraries) they may exist in + * different forms. On platforms that support it the + * ASN1_ITEM structure itself will be globally exported. + * Other platforms will export a function that returns + * an ASN1_ITEM pointer. + * + * To handle both cases transparently the macros below + * should be used instead of hard coding an ASN1_ITEM + * pointer in a structure. + * + * The structure will look like this: + * + * typedef struct SOMETHING_st { + * ... + * ASN1_ITEM_EXP *iptr; + * ... + * } SOMETHING; + * + * It would be initialised as e.g.: + * + * SOMETHING somevar = {...,ASN1_ITEM_ref(X509),...}; + * + * and the actual pointer extracted with: + * + * const ASN1_ITEM *it = ASN1_ITEM_ptr(somevar.iptr); + * + * Finally an ASN1_ITEM pointer can be extracted from an + * appropriate reference with: ASN1_ITEM_rptr(X509). This + * would be used when a function takes an ASN1_ITEM * argument. + * + */ + +# ifndef OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM ASN1_ITEM_EXP; + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (&(iptr##_it)) + +# define ASN1_ITEM_rptr(ref) (&(ref##_it)) + +# define DECLARE_ASN1_ITEM(name) \ + OPENSSL_EXTERN const ASN1_ITEM name##_it; + +# else + +/* + * Platforms that can't easily handle shared global variables are declared as + * functions returning ASN1_ITEM pointers. + */ + +/* ASN1_ITEM pointer exported type */ +typedef const ASN1_ITEM *ASN1_ITEM_EXP (void); + +/* Macro to obtain ASN1_ITEM pointer from exported type */ +# define ASN1_ITEM_ptr(iptr) (iptr()) + +/* Macro to include ASN1_ITEM pointer from base type */ +# define ASN1_ITEM_ref(iptr) (iptr##_it) + +# define ASN1_ITEM_rptr(ref) (ref##_it()) + +# define DECLARE_ASN1_ITEM(name) \ + const ASN1_ITEM * name##_it(void); + +# endif + +/* Parameters used by ASN1_STRING_print_ex() */ + +/* + * These determine which characters to escape: RFC2253 special characters, + * control characters and MSB set characters + */ + +# define ASN1_STRFLGS_ESC_2253 1 +# define ASN1_STRFLGS_ESC_CTRL 2 +# define ASN1_STRFLGS_ESC_MSB 4 + +/* + * This flag determines how we do escaping: normally RC2253 backslash only, + * set this to use backslash and quote. + */ + +# define ASN1_STRFLGS_ESC_QUOTE 8 + +/* These three flags are internal use only. */ + +/* Character is a valid PrintableString character */ +# define CHARTYPE_PRINTABLESTRING 0x10 +/* Character needs escaping if it is the first character */ +# define CHARTYPE_FIRST_ESC_2253 0x20 +/* Character needs escaping if it is the last character */ +# define CHARTYPE_LAST_ESC_2253 0x40 + +/* + * NB the internal flags are safely reused below by flags handled at the top + * level. + */ + +/* + * If this is set we convert all character strings to UTF8 first + */ + +# define ASN1_STRFLGS_UTF8_CONVERT 0x10 + +/* + * If this is set we don't attempt to interpret content: just assume all + * strings are 1 byte per character. This will produce some pretty odd + * looking output! + */ + +# define ASN1_STRFLGS_IGNORE_TYPE 0x20 + +/* If this is set we include the string type in the output */ +# define ASN1_STRFLGS_SHOW_TYPE 0x40 + +/* + * This determines which strings to display and which to 'dump' (hex dump of + * content octets or DER encoding). We can only dump non character strings or + * everything. If we don't dump 'unknown' they are interpreted as character + * strings with 1 octet per character and are subject to the usual escaping + * options. + */ + +# define ASN1_STRFLGS_DUMP_ALL 0x80 +# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 + +/* + * These determine what 'dumping' does, we can dump the content octets or the + * DER encoding: both use the RFC2253 #XXXXX notation. + */ + +# define ASN1_STRFLGS_DUMP_DER 0x200 + +/* + * This flag specifies that RC2254 escaping shall be performed. + */ +#define ASN1_STRFLGS_ESC_2254 0x400 + +/* + * All the string flags consistent with RFC2253, escaping control characters + * isn't essential in RFC2253 but it is advisable anyway. + */ + +# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ + ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + ASN1_STRFLGS_UTF8_CONVERT | \ + ASN1_STRFLGS_DUMP_UNKNOWN | \ + ASN1_STRFLGS_DUMP_DER) + +DEFINE_STACK_OF(ASN1_INTEGER) + +DEFINE_STACK_OF(ASN1_GENERALSTRING) + +DEFINE_STACK_OF(ASN1_UTF8STRING) + +typedef struct asn1_type_st { + int type; + union { + char *ptr; + ASN1_BOOLEAN boolean; + ASN1_STRING *asn1_string; + ASN1_OBJECT *object; + ASN1_INTEGER *integer; + ASN1_ENUMERATED *enumerated; + ASN1_BIT_STRING *bit_string; + ASN1_OCTET_STRING *octet_string; + ASN1_PRINTABLESTRING *printablestring; + ASN1_T61STRING *t61string; + ASN1_IA5STRING *ia5string; + ASN1_GENERALSTRING *generalstring; + ASN1_BMPSTRING *bmpstring; + ASN1_UNIVERSALSTRING *universalstring; + ASN1_UTCTIME *utctime; + ASN1_GENERALIZEDTIME *generalizedtime; + ASN1_VISIBLESTRING *visiblestring; + ASN1_UTF8STRING *utf8string; + /* + * set and sequence are left complete and still contain the set or + * sequence bytes + */ + ASN1_STRING *set; + ASN1_STRING *sequence; + ASN1_VALUE *asn1_value; + } value; +} ASN1_TYPE; + +DEFINE_STACK_OF(ASN1_TYPE) + +typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY) + +/* This is used to contain a list of bit names */ +typedef struct BIT_STRING_BITNAME_st { + int bitnum; + const char *lname; + const char *sname; +} BIT_STRING_BITNAME; + +# define B_ASN1_TIME \ + B_ASN1_UTCTIME | \ + B_ASN1_GENERALIZEDTIME + +# define B_ASN1_PRINTABLE \ + B_ASN1_NUMERICSTRING| \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_T61STRING| \ + B_ASN1_IA5STRING| \ + B_ASN1_BIT_STRING| \ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING|\ + B_ASN1_SEQUENCE|\ + B_ASN1_UNKNOWN + +# define B_ASN1_DIRECTORYSTRING \ + B_ASN1_PRINTABLESTRING| \ + B_ASN1_TELETEXSTRING|\ + B_ASN1_BMPSTRING|\ + B_ASN1_UNIVERSALSTRING|\ + B_ASN1_UTF8STRING + +# define B_ASN1_DISPLAYTEXT \ + B_ASN1_IA5STRING| \ + B_ASN1_VISIBLESTRING| \ + B_ASN1_BMPSTRING|\ + B_ASN1_UTF8STRING + +DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE) + +int ASN1_TYPE_get(const ASN1_TYPE *a); +void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); +int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); +int ASN1_TYPE_cmp(const ASN1_TYPE *a, const ASN1_TYPE *b); + +ASN1_TYPE *ASN1_TYPE_pack_sequence(const ASN1_ITEM *it, void *s, ASN1_TYPE **t); +void *ASN1_TYPE_unpack_sequence(const ASN1_ITEM *it, const ASN1_TYPE *t); + +ASN1_OBJECT *ASN1_OBJECT_new(void); +void ASN1_OBJECT_free(ASN1_OBJECT *a); +int i2d_ASN1_OBJECT(const ASN1_OBJECT *a, unsigned char **pp); +ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, + long length); + +DECLARE_ASN1_ITEM(ASN1_OBJECT) + +DEFINE_STACK_OF(ASN1_OBJECT) + +ASN1_STRING *ASN1_STRING_new(void); +void ASN1_STRING_free(ASN1_STRING *a); +void ASN1_STRING_clear_free(ASN1_STRING *a); +int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str); +ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *a); +ASN1_STRING *ASN1_STRING_type_new(int type); +int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b); + /* + * Since this is used to store all sorts of things, via macros, for now, + * make its data void * + */ +int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); +void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); +int ASN1_STRING_length(const ASN1_STRING *x); +void ASN1_STRING_length_set(ASN1_STRING *x, int n); +int ASN1_STRING_type(const ASN1_STRING *x); +DEPRECATEDIN_1_1_0(unsigned char *ASN1_STRING_data(ASN1_STRING *x)) +const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x); + +DECLARE_ASN1_FUNCTIONS(ASN1_BIT_STRING) +int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d, int length); +int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); +int ASN1_BIT_STRING_get_bit(const ASN1_BIT_STRING *a, int n); +int ASN1_BIT_STRING_check(const ASN1_BIT_STRING *a, + const unsigned char *flags, int flags_len); + +int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, + BIT_STRING_BITNAME *tbl, int indent); +int ASN1_BIT_STRING_num_asc(const char *name, BIT_STRING_BITNAME *tbl); +int ASN1_BIT_STRING_set_asc(ASN1_BIT_STRING *bs, const char *name, int value, + BIT_STRING_BITNAME *tbl); + +DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) +ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, + long length); +ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x); +int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y); + +DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) + +int ASN1_UTCTIME_check(const ASN1_UTCTIME *a); +ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t); +ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); +int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); + +int ASN1_GENERALIZEDTIME_check(const ASN1_GENERALIZEDTIME *a); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, + time_t t); +ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s, + time_t t, int offset_day, + long offset_sec); +int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); + +int ASN1_TIME_diff(int *pday, int *psec, + const ASN1_TIME *from, const ASN1_TIME *to); + +DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) +ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a); +int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, + const ASN1_OCTET_STRING *b); +int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, + int len); + +DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UNIVERSALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTF8STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_NULL) +DECLARE_ASN1_FUNCTIONS(ASN1_BMPSTRING) + +int UTF8_getc(const unsigned char *str, int len, unsigned long *val); +int UTF8_putc(unsigned char *str, int len, unsigned long value); + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, ASN1_PRINTABLE) + +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DIRECTORYSTRING) +DECLARE_ASN1_FUNCTIONS_name(ASN1_STRING, DISPLAYTEXT) +DECLARE_ASN1_FUNCTIONS(ASN1_PRINTABLESTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_T61STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_IA5STRING) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALSTRING) +DECLARE_ASN1_FUNCTIONS(ASN1_UTCTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_GENERALIZEDTIME) +DECLARE_ASN1_FUNCTIONS(ASN1_TIME) + +DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) + +ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t); +ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t, + int offset_day, long offset_sec); +int ASN1_TIME_check(const ASN1_TIME *t); +ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(const ASN1_TIME *t, + ASN1_GENERALIZEDTIME **out); +int ASN1_TIME_set_string(ASN1_TIME *s, const char *str); +int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str); +int ASN1_TIME_to_tm(const ASN1_TIME *s, struct tm *tm); +int ASN1_TIME_normalize(ASN1_TIME *s); +int ASN1_TIME_cmp_time_t(const ASN1_TIME *s, time_t t); +int ASN1_TIME_compare(const ASN1_TIME *a, const ASN1_TIME *b); + +int i2a_ASN1_INTEGER(BIO *bp, const ASN1_INTEGER *a); +int a2i_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *bs, char *buf, int size); +int i2a_ASN1_ENUMERATED(BIO *bp, const ASN1_ENUMERATED *a); +int a2i_ASN1_ENUMERATED(BIO *bp, ASN1_ENUMERATED *bs, char *buf, int size); +int i2a_ASN1_OBJECT(BIO *bp, const ASN1_OBJECT *a); +int a2i_ASN1_STRING(BIO *bp, ASN1_STRING *bs, char *buf, int size); +int i2a_ASN1_STRING(BIO *bp, const ASN1_STRING *a, int type); +int i2t_ASN1_OBJECT(char *buf, int buf_len, const ASN1_OBJECT *a); + +int a2d_ASN1_OBJECT(unsigned char *out, int olen, const char *buf, int num); +ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len, + const char *sn, const char *ln); + +int ASN1_INTEGER_get_int64(int64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_int64(ASN1_INTEGER *a, int64_t r); +int ASN1_INTEGER_get_uint64(uint64_t *pr, const ASN1_INTEGER *a); +int ASN1_INTEGER_set_uint64(ASN1_INTEGER *a, uint64_t r); + +int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); +long ASN1_INTEGER_get(const ASN1_INTEGER *a); +ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai); +BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn); + +int ASN1_ENUMERATED_get_int64(int64_t *pr, const ASN1_ENUMERATED *a); +int ASN1_ENUMERATED_set_int64(ASN1_ENUMERATED *a, int64_t r); + + +int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); +long ASN1_ENUMERATED_get(const ASN1_ENUMERATED *a); +ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(const BIGNUM *bn, ASN1_ENUMERATED *ai); +BIGNUM *ASN1_ENUMERATED_to_BN(const ASN1_ENUMERATED *ai, BIGNUM *bn); + +/* General */ +/* given a string, return the correct type, max is the maximum length */ +int ASN1_PRINTABLE_type(const unsigned char *s, int max); + +unsigned long ASN1_tag2bit(int tag); + +/* SPECIALS */ +int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag, + int *pclass, long omax); +int ASN1_check_infinite_end(unsigned char **p, long len); +int ASN1_const_check_infinite_end(const unsigned char **p, long len); +void ASN1_put_object(unsigned char **pp, int constructed, int length, + int tag, int xclass); +int ASN1_put_eoc(unsigned char **pp); +int ASN1_object_size(int constructed, int length, int tag); + +/* Used to implement other functions */ +void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x); + +# define ASN1_dup_of(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_dup_of_const(type,i2d,d2i,x) \ + ((type*)ASN1_dup(CHECKED_I2D_OF(const type, i2d), \ + CHECKED_D2I_OF(type, d2i), \ + CHECKED_PTR_OF(const type, x))) + +void *ASN1_item_dup(const ASN1_ITEM *it, void *x); + +/* ASN1 alloc/free macros for when a type is only used internally */ + +# define M_ASN1_new_of(type) (type *)ASN1_item_new(ASN1_ITEM_rptr(type)) +# define M_ASN1_free_of(x, type) \ + ASN1_item_free(CHECKED_PTR_OF(type, x), ASN1_ITEM_rptr(type)) + +# ifndef OPENSSL_NO_STDIO +void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x); + +# define ASN1_d2i_fp_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_fp(CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); +int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, void *x); + +# define ASN1_i2d_fp_of(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_fp_of_const(type,i2d,out,x) \ + (ASN1_i2d_fp(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, void *x); +int ASN1_STRING_print_ex_fp(FILE *fp, const ASN1_STRING *str, unsigned long flags); +# endif + +int ASN1_STRING_to_UTF8(unsigned char **out, const ASN1_STRING *in); + +void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x); + +# define ASN1_d2i_bio_of(type,xnew,d2i,in,x) \ + ((type*)ASN1_d2i_bio( CHECKED_NEW_OF(type, xnew), \ + CHECKED_D2I_OF(type, d2i), \ + in, \ + CHECKED_PPTR_OF(type, x))) + +void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x); +int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, unsigned char *x); + +# define ASN1_i2d_bio_of(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ + out, \ + CHECKED_PTR_OF(type, x))) + +# define ASN1_i2d_bio_of_const(type,i2d,out,x) \ + (ASN1_i2d_bio(CHECKED_I2D_OF(const type, i2d), \ + out, \ + CHECKED_PTR_OF(const type, x))) + +int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); +int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a); +int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a); +int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a); +int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v); +int ASN1_STRING_print_ex(BIO *out, const ASN1_STRING *str, unsigned long flags); +int ASN1_buf_print(BIO *bp, const unsigned char *buf, size_t buflen, int off); +int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num, + unsigned char *buf, int off); +int ASN1_parse(BIO *bp, const unsigned char *pp, long len, int indent); +int ASN1_parse_dump(BIO *bp, const unsigned char *pp, long len, int indent, + int dump); +const char *ASN1_tag2str(int tag); + +/* Used to load and write Netscape format cert */ + +int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); + +int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len); +int ASN1_TYPE_get_octetstring(const ASN1_TYPE *a, unsigned char *data, int max_len); +int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num, + unsigned char *data, int len); +int ASN1_TYPE_get_int_octetstring(const ASN1_TYPE *a, long *num, + unsigned char *data, int max_len); + +void *ASN1_item_unpack(const ASN1_STRING *oct, const ASN1_ITEM *it); + +ASN1_STRING *ASN1_item_pack(void *obj, const ASN1_ITEM *it, + ASN1_OCTET_STRING **oct); + +void ASN1_STRING_set_default_mask(unsigned long mask); +int ASN1_STRING_set_default_mask_asc(const char *p); +unsigned long ASN1_STRING_get_default_mask(void); +int ASN1_mbstring_copy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask); +int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len, + int inform, unsigned long mask, + long minsize, long maxsize); + +ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, + const unsigned char *in, int inlen, + int inform, int nid); +ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid); +int ASN1_STRING_TABLE_add(int, long, long, unsigned long, unsigned long); +void ASN1_STRING_TABLE_cleanup(void); + +/* ASN1 template functions */ + +/* Old API compatible functions */ +ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it); +void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); +ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, + long len, const ASN1_ITEM *it); +int ASN1_item_i2d(ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); +int ASN1_item_ndef_i2d(ASN1_VALUE *val, unsigned char **out, + const ASN1_ITEM *it); + +void ASN1_add_oid_module(void); +void ASN1_add_stable_module(void); + +ASN1_TYPE *ASN1_generate_nconf(const char *str, CONF *nconf); +ASN1_TYPE *ASN1_generate_v3(const char *str, X509V3_CTX *cnf); +int ASN1_str2mask(const char *str, unsigned long *pmask); + +/* ASN1 Print flags */ + +/* Indicate missing OPTIONAL fields */ +# define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001 +/* Mark start and end of SEQUENCE */ +# define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002 +/* Mark start and end of SEQUENCE/SET OF */ +# define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004 +/* Show the ASN1 type of primitives */ +# define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008 +/* Don't show ASN1 type of ANY */ +# define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010 +/* Don't show ASN1 type of MSTRINGs */ +# define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020 +/* Don't show field names in SEQUENCE */ +# define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040 +/* Show structure names of each SEQUENCE field */ +# define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080 +/* Don't show structure name even at top level */ +# define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100 + +int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent, + const ASN1_ITEM *it, const ASN1_PCTX *pctx); +ASN1_PCTX *ASN1_PCTX_new(void); +void ASN1_PCTX_free(ASN1_PCTX *p); +unsigned long ASN1_PCTX_get_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_nm_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_cert_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_oid_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags); +unsigned long ASN1_PCTX_get_str_flags(const ASN1_PCTX *p); +void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags); + +ASN1_SCTX *ASN1_SCTX_new(int (*scan_cb) (ASN1_SCTX *ctx)); +void ASN1_SCTX_free(ASN1_SCTX *p); +const ASN1_ITEM *ASN1_SCTX_get_item(ASN1_SCTX *p); +const ASN1_TEMPLATE *ASN1_SCTX_get_template(ASN1_SCTX *p); +unsigned long ASN1_SCTX_get_flags(ASN1_SCTX *p); +void ASN1_SCTX_set_app_data(ASN1_SCTX *p, void *data); +void *ASN1_SCTX_get_app_data(ASN1_SCTX *p); + +const BIO_METHOD *BIO_f_asn1(void); + +BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it); + +int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const ASN1_ITEM *it); +int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags, + const char *hdr, const ASN1_ITEM *it); +int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, + int ctype_nid, int econt_nid, + STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it); +ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); +int SMIME_crlf_copy(BIO *in, BIO *out, int flags); +int SMIME_text(BIO *in, BIO *out); + +const ASN1_ITEM *ASN1_ITEM_lookup(const char *name); +const ASN1_ITEM *ASN1_ITEM_get(size_t i); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/asn1err.h b/include/openssl/openssl/asn1err.h new file mode 100644 index 00000000..e1ad1fef --- /dev/null +++ b/include/openssl/openssl/asn1err.h @@ -0,0 +1,256 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASN1ERR_H +# define HEADER_ASN1ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASN1_strings(void); + +/* + * ASN1 function codes. + */ +# define ASN1_F_A2D_ASN1_OBJECT 100 +# define ASN1_F_A2I_ASN1_INTEGER 102 +# define ASN1_F_A2I_ASN1_STRING 103 +# define ASN1_F_APPEND_EXP 176 +# define ASN1_F_ASN1_BIO_INIT 113 +# define ASN1_F_ASN1_BIT_STRING_SET_BIT 183 +# define ASN1_F_ASN1_CB 177 +# define ASN1_F_ASN1_CHECK_TLEN 104 +# define ASN1_F_ASN1_COLLECT 106 +# define ASN1_F_ASN1_D2I_EX_PRIMITIVE 108 +# define ASN1_F_ASN1_D2I_FP 109 +# define ASN1_F_ASN1_D2I_READ_BIO 107 +# define ASN1_F_ASN1_DIGEST 184 +# define ASN1_F_ASN1_DO_ADB 110 +# define ASN1_F_ASN1_DO_LOCK 233 +# define ASN1_F_ASN1_DUP 111 +# define ASN1_F_ASN1_ENC_SAVE 115 +# define ASN1_F_ASN1_EX_C2I 204 +# define ASN1_F_ASN1_FIND_END 190 +# define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216 +# define ASN1_F_ASN1_GENERATE_V3 178 +# define ASN1_F_ASN1_GET_INT64 224 +# define ASN1_F_ASN1_GET_OBJECT 114 +# define ASN1_F_ASN1_GET_UINT64 225 +# define ASN1_F_ASN1_I2D_BIO 116 +# define ASN1_F_ASN1_I2D_FP 117 +# define ASN1_F_ASN1_ITEM_D2I_FP 206 +# define ASN1_F_ASN1_ITEM_DUP 191 +# define ASN1_F_ASN1_ITEM_EMBED_D2I 120 +# define ASN1_F_ASN1_ITEM_EMBED_NEW 121 +# define ASN1_F_ASN1_ITEM_EX_I2D 144 +# define ASN1_F_ASN1_ITEM_FLAGS_I2D 118 +# define ASN1_F_ASN1_ITEM_I2D_BIO 192 +# define ASN1_F_ASN1_ITEM_I2D_FP 193 +# define ASN1_F_ASN1_ITEM_PACK 198 +# define ASN1_F_ASN1_ITEM_SIGN 195 +# define ASN1_F_ASN1_ITEM_SIGN_CTX 220 +# define ASN1_F_ASN1_ITEM_UNPACK 199 +# define ASN1_F_ASN1_ITEM_VERIFY 197 +# define ASN1_F_ASN1_MBSTRING_NCOPY 122 +# define ASN1_F_ASN1_OBJECT_NEW 123 +# define ASN1_F_ASN1_OUTPUT_DATA 214 +# define ASN1_F_ASN1_PCTX_NEW 205 +# define ASN1_F_ASN1_PRIMITIVE_NEW 119 +# define ASN1_F_ASN1_SCTX_NEW 221 +# define ASN1_F_ASN1_SIGN 128 +# define ASN1_F_ASN1_STR2TYPE 179 +# define ASN1_F_ASN1_STRING_GET_INT64 227 +# define ASN1_F_ASN1_STRING_GET_UINT64 230 +# define ASN1_F_ASN1_STRING_SET 186 +# define ASN1_F_ASN1_STRING_TABLE_ADD 129 +# define ASN1_F_ASN1_STRING_TO_BN 228 +# define ASN1_F_ASN1_STRING_TYPE_NEW 130 +# define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 +# define ASN1_F_ASN1_TEMPLATE_NEW 133 +# define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 +# define ASN1_F_ASN1_TIME_ADJ 217 +# define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 +# define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 +# define ASN1_F_ASN1_UTCTIME_ADJ 218 +# define ASN1_F_ASN1_VERIFY 137 +# define ASN1_F_B64_READ_ASN1 209 +# define ASN1_F_B64_WRITE_ASN1 210 +# define ASN1_F_BIO_NEW_NDEF 208 +# define ASN1_F_BITSTR_CB 180 +# define ASN1_F_BN_TO_ASN1_STRING 229 +# define ASN1_F_C2I_ASN1_BIT_STRING 189 +# define ASN1_F_C2I_ASN1_INTEGER 194 +# define ASN1_F_C2I_ASN1_OBJECT 196 +# define ASN1_F_C2I_IBUF 226 +# define ASN1_F_C2I_UINT64_INT 101 +# define ASN1_F_COLLECT_DATA 140 +# define ASN1_F_D2I_ASN1_OBJECT 147 +# define ASN1_F_D2I_ASN1_UINTEGER 150 +# define ASN1_F_D2I_AUTOPRIVATEKEY 207 +# define ASN1_F_D2I_PRIVATEKEY 154 +# define ASN1_F_D2I_PUBLICKEY 155 +# define ASN1_F_DO_BUF 142 +# define ASN1_F_DO_CREATE 124 +# define ASN1_F_DO_DUMP 125 +# define ASN1_F_DO_TCREATE 222 +# define ASN1_F_I2A_ASN1_OBJECT 126 +# define ASN1_F_I2D_ASN1_BIO_STREAM 211 +# define ASN1_F_I2D_ASN1_OBJECT 143 +# define ASN1_F_I2D_DSA_PUBKEY 161 +# define ASN1_F_I2D_EC_PUBKEY 181 +# define ASN1_F_I2D_PRIVATEKEY 163 +# define ASN1_F_I2D_PUBLICKEY 164 +# define ASN1_F_I2D_RSA_PUBKEY 165 +# define ASN1_F_LONG_C2I 166 +# define ASN1_F_NDEF_PREFIX 127 +# define ASN1_F_NDEF_SUFFIX 136 +# define ASN1_F_OID_MODULE_INIT 174 +# define ASN1_F_PARSE_TAGGING 182 +# define ASN1_F_PKCS5_PBE2_SET_IV 167 +# define ASN1_F_PKCS5_PBE2_SET_SCRYPT 231 +# define ASN1_F_PKCS5_PBE_SET 202 +# define ASN1_F_PKCS5_PBE_SET0_ALGOR 215 +# define ASN1_F_PKCS5_PBKDF2_SET 219 +# define ASN1_F_PKCS5_SCRYPT_SET 232 +# define ASN1_F_SMIME_READ_ASN1 212 +# define ASN1_F_SMIME_TEXT 213 +# define ASN1_F_STABLE_GET 138 +# define ASN1_F_STBL_MODULE_INIT 223 +# define ASN1_F_UINT32_C2I 105 +# define ASN1_F_UINT32_NEW 139 +# define ASN1_F_UINT64_C2I 112 +# define ASN1_F_UINT64_NEW 141 +# define ASN1_F_X509_CRL_ADD0_REVOKED 169 +# define ASN1_F_X509_INFO_NEW 170 +# define ASN1_F_X509_NAME_ENCODE 203 +# define ASN1_F_X509_NAME_EX_D2I 158 +# define ASN1_F_X509_NAME_EX_NEW 171 +# define ASN1_F_X509_PKEY_NEW 173 + +/* + * ASN1 reason codes. + */ +# define ASN1_R_ADDING_OBJECT 171 +# define ASN1_R_ASN1_PARSE_ERROR 203 +# define ASN1_R_ASN1_SIG_PARSE_ERROR 204 +# define ASN1_R_AUX_ERROR 100 +# define ASN1_R_BAD_OBJECT_HEADER 102 +# define ASN1_R_BAD_TEMPLATE 230 +# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214 +# define ASN1_R_BN_LIB 105 +# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 +# define ASN1_R_BUFFER_TOO_SMALL 107 +# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108 +# define ASN1_R_CONTEXT_NOT_INITIALISED 217 +# define ASN1_R_DATA_IS_WRONG 109 +# define ASN1_R_DECODE_ERROR 110 +# define ASN1_R_DEPTH_EXCEEDED 174 +# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198 +# define ASN1_R_ENCODE_ERROR 112 +# define ASN1_R_ERROR_GETTING_TIME 173 +# define ASN1_R_ERROR_LOADING_SECTION 172 +# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114 +# define ASN1_R_EXPECTING_AN_INTEGER 115 +# define ASN1_R_EXPECTING_AN_OBJECT 116 +# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119 +# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120 +# define ASN1_R_FIELD_MISSING 121 +# define ASN1_R_FIRST_NUM_TOO_LARGE 122 +# define ASN1_R_HEADER_TOO_LONG 123 +# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175 +# define ASN1_R_ILLEGAL_BOOLEAN 176 +# define ASN1_R_ILLEGAL_CHARACTERS 124 +# define ASN1_R_ILLEGAL_FORMAT 177 +# define ASN1_R_ILLEGAL_HEX 178 +# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179 +# define ASN1_R_ILLEGAL_INTEGER 180 +# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226 +# define ASN1_R_ILLEGAL_NESTED_TAGGING 181 +# define ASN1_R_ILLEGAL_NULL 125 +# define ASN1_R_ILLEGAL_NULL_VALUE 182 +# define ASN1_R_ILLEGAL_OBJECT 183 +# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126 +# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170 +# define ASN1_R_ILLEGAL_PADDING 221 +# define ASN1_R_ILLEGAL_TAGGED_ANY 127 +# define ASN1_R_ILLEGAL_TIME_VALUE 184 +# define ASN1_R_ILLEGAL_ZERO_CONTENT 222 +# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185 +# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 +# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220 +# define ASN1_R_INVALID_BMPSTRING_LENGTH 129 +# define ASN1_R_INVALID_DIGIT 130 +# define ASN1_R_INVALID_MIME_TYPE 205 +# define ASN1_R_INVALID_MODIFIER 186 +# define ASN1_R_INVALID_NUMBER 187 +# define ASN1_R_INVALID_OBJECT_ENCODING 216 +# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227 +# define ASN1_R_INVALID_SEPARATOR 131 +# define ASN1_R_INVALID_STRING_TABLE_VALUE 218 +# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 +# define ASN1_R_INVALID_UTF8STRING 134 +# define ASN1_R_INVALID_VALUE 219 +# define ASN1_R_LIST_ERROR 188 +# define ASN1_R_MIME_NO_CONTENT_TYPE 206 +# define ASN1_R_MIME_PARSE_ERROR 207 +# define ASN1_R_MIME_SIG_PARSE_ERROR 208 +# define ASN1_R_MISSING_EOC 137 +# define ASN1_R_MISSING_SECOND_NUMBER 138 +# define ASN1_R_MISSING_VALUE 189 +# define ASN1_R_MSTRING_NOT_UNIVERSAL 139 +# define ASN1_R_MSTRING_WRONG_TAG 140 +# define ASN1_R_NESTED_ASN1_STRING 197 +# define ASN1_R_NESTED_TOO_DEEP 201 +# define ASN1_R_NON_HEX_CHARACTERS 141 +# define ASN1_R_NOT_ASCII_FORMAT 190 +# define ASN1_R_NOT_ENOUGH_DATA 142 +# define ASN1_R_NO_CONTENT_TYPE 209 +# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 +# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210 +# define ASN1_R_NO_MULTIPART_BOUNDARY 211 +# define ASN1_R_NO_SIG_CONTENT_TYPE 212 +# define ASN1_R_NULL_IS_WRONG_LENGTH 144 +# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 +# define ASN1_R_ODD_NUMBER_OF_CHARS 145 +# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147 +# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148 +# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 +# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 +# define ASN1_R_SHORT_LINE 150 +# define ASN1_R_SIG_INVALID_MIME_TYPE 213 +# define ASN1_R_STREAMING_NOT_SUPPORTED 202 +# define ASN1_R_STRING_TOO_LONG 151 +# define ASN1_R_STRING_TOO_SHORT 152 +# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154 +# define ASN1_R_TIME_NOT_ASCII_FORMAT 193 +# define ASN1_R_TOO_LARGE 223 +# define ASN1_R_TOO_LONG 155 +# define ASN1_R_TOO_SMALL 224 +# define ASN1_R_TYPE_NOT_CONSTRUCTED 156 +# define ASN1_R_TYPE_NOT_PRIMITIVE 195 +# define ASN1_R_UNEXPECTED_EOC 159 +# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215 +# define ASN1_R_UNKNOWN_FORMAT 160 +# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 +# define ASN1_R_UNKNOWN_OBJECT_TYPE 162 +# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 +# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199 +# define ASN1_R_UNKNOWN_TAG 194 +# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 +# define ASN1_R_UNSUPPORTED_CIPHER 228 +# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 +# define ASN1_R_UNSUPPORTED_TYPE 196 +# define ASN1_R_WRONG_INTEGER_TYPE 225 +# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200 +# define ASN1_R_WRONG_TAG 168 + +#endif diff --git a/include/openssl/openssl/async.h b/include/openssl/openssl/async.h new file mode 100644 index 00000000..7052b890 --- /dev/null +++ b/include/openssl/openssl/async.h @@ -0,0 +1,76 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifndef HEADER_ASYNC_H +# define HEADER_ASYNC_H + +#if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include to use this */ +#define OSSL_ASYNC_FD HANDLE +#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE +# endif +#else +#define OSSL_ASYNC_FD int +#define OSSL_BAD_ASYNC_FD -1 +#endif +# include + + +# ifdef __cplusplus +extern "C" { +# endif + +typedef struct async_job_st ASYNC_JOB; +typedef struct async_wait_ctx_st ASYNC_WAIT_CTX; + +#define ASYNC_ERR 0 +#define ASYNC_NO_JOBS 1 +#define ASYNC_PAUSE 2 +#define ASYNC_FINISH 3 + +int ASYNC_init_thread(size_t max_size, size_t init_size); +void ASYNC_cleanup_thread(void); + +#ifdef OSSL_ASYNC_FD +ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void); +void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx); +int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD fd, + void *custom_data, + void (*cleanup)(ASYNC_WAIT_CTX *, const void *, + OSSL_ASYNC_FD, void *)); +int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key, + OSSL_ASYNC_FD *fd, void **custom_data); +int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd, + size_t *numfds); +int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key); +#endif + +int ASYNC_is_capable(void); + +int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret, + int (*func)(void *), void *args, size_t size); +int ASYNC_pause_job(void); + +ASYNC_JOB *ASYNC_get_current_job(void); +ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job); +void ASYNC_block_pause(void); +void ASYNC_unblock_pause(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/asyncerr.h b/include/openssl/openssl/asyncerr.h new file mode 100644 index 00000000..91afbbb2 --- /dev/null +++ b/include/openssl/openssl/asyncerr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ASYNCERR_H +# define HEADER_ASYNCERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_ASYNC_strings(void); + +/* + * ASYNC function codes. + */ +# define ASYNC_F_ASYNC_CTX_NEW 100 +# define ASYNC_F_ASYNC_INIT_THREAD 101 +# define ASYNC_F_ASYNC_JOB_NEW 102 +# define ASYNC_F_ASYNC_PAUSE_JOB 103 +# define ASYNC_F_ASYNC_START_FUNC 104 +# define ASYNC_F_ASYNC_START_JOB 105 +# define ASYNC_F_ASYNC_WAIT_CTX_SET_WAIT_FD 106 + +/* + * ASYNC reason codes. + */ +# define ASYNC_R_FAILED_TO_SET_POOL 101 +# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102 +# define ASYNC_R_INIT_FAILED 105 +# define ASYNC_R_INVALID_POOL_SIZE 103 + +#endif diff --git a/include/openssl/openssl/bio.h b/include/openssl/openssl/bio.h new file mode 100644 index 00000000..ae559a51 --- /dev/null +++ b/include/openssl/openssl/bio.h @@ -0,0 +1,801 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIO_H +# define HEADER_BIO_H + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* There are the classes of BIOs */ +# define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ +# define BIO_TYPE_FILTER 0x0200 +# define BIO_TYPE_SOURCE_SINK 0x0400 + +/* These are the 'types' of BIOs */ +# define BIO_TYPE_NONE 0 +# define BIO_TYPE_MEM ( 1|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_FILE ( 2|BIO_TYPE_SOURCE_SINK) + +# define BIO_TYPE_FD ( 4|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_SOCKET ( 5|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_NULL ( 6|BIO_TYPE_SOURCE_SINK) +# define BIO_TYPE_SSL ( 7|BIO_TYPE_FILTER) +# define BIO_TYPE_MD ( 8|BIO_TYPE_FILTER) +# define BIO_TYPE_BUFFER ( 9|BIO_TYPE_FILTER) +# define BIO_TYPE_CIPHER (10|BIO_TYPE_FILTER) +# define BIO_TYPE_BASE64 (11|BIO_TYPE_FILTER) +# define BIO_TYPE_CONNECT (12|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ACCEPT (13|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) + +# define BIO_TYPE_NBIO_TEST (16|BIO_TYPE_FILTER)/* server proxy BIO */ +# define BIO_TYPE_NULL_FILTER (17|BIO_TYPE_FILTER) +# define BIO_TYPE_BIO (19|BIO_TYPE_SOURCE_SINK)/* half a BIO pair */ +# define BIO_TYPE_LINEBUFFER (20|BIO_TYPE_FILTER) +# define BIO_TYPE_DGRAM (21|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# define BIO_TYPE_ASN1 (22|BIO_TYPE_FILTER) +# define BIO_TYPE_COMP (23|BIO_TYPE_FILTER) +# ifndef OPENSSL_NO_SCTP +# define BIO_TYPE_DGRAM_SCTP (24|BIO_TYPE_SOURCE_SINK|BIO_TYPE_DESCRIPTOR) +# endif + +#define BIO_TYPE_START 128 + +/* + * BIO_FILENAME_READ|BIO_CLOSE to open or close on free. + * BIO_set_fp(in,stdin,BIO_NOCLOSE); + */ +# define BIO_NOCLOSE 0x00 +# define BIO_CLOSE 0x01 + +/* + * These are used in the following macros and are passed to BIO_ctrl() + */ +# define BIO_CTRL_RESET 1/* opt - rewind/zero etc */ +# define BIO_CTRL_EOF 2/* opt - are we at the eof */ +# define BIO_CTRL_INFO 3/* opt - extra tit-bits */ +# define BIO_CTRL_SET 4/* man - set the 'IO' type */ +# define BIO_CTRL_GET 5/* man - get the 'IO' type */ +# define BIO_CTRL_PUSH 6/* opt - internal, used to signify change */ +# define BIO_CTRL_POP 7/* opt - internal, used to signify change */ +# define BIO_CTRL_GET_CLOSE 8/* man - set the 'close' on free */ +# define BIO_CTRL_SET_CLOSE 9/* man - set the 'close' on free */ +# define BIO_CTRL_PENDING 10/* opt - is their more data buffered */ +# define BIO_CTRL_FLUSH 11/* opt - 'flush' buffered output */ +# define BIO_CTRL_DUP 12/* man - extra stuff for 'duped' BIO */ +# define BIO_CTRL_WPENDING 13/* opt - number of bytes still to write */ +# define BIO_CTRL_SET_CALLBACK 14/* opt - set callback function */ +# define BIO_CTRL_GET_CALLBACK 15/* opt - set callback function */ + +# define BIO_CTRL_PEEK 29/* BIO_f_buffer special */ +# define BIO_CTRL_SET_FILENAME 30/* BIO_s_file special */ + +/* dgram BIO stuff */ +# define BIO_CTRL_DGRAM_CONNECT 31/* BIO dgram special */ +# define BIO_CTRL_DGRAM_SET_CONNECTED 32/* allow for an externally connected + * socket to be passed in */ +# define BIO_CTRL_DGRAM_SET_RECV_TIMEOUT 33/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_RECV_TIMEOUT 34/* getsockopt, essentially */ +# define BIO_CTRL_DGRAM_SET_SEND_TIMEOUT 35/* setsockopt, essentially */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMEOUT 36/* getsockopt, essentially */ + +# define BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP 37/* flag whether the last */ +# define BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP 38/* I/O operation tiemd out */ + +/* #ifdef IP_MTU_DISCOVER */ +# define BIO_CTRL_DGRAM_MTU_DISCOVER 39/* set DF bit on egress packets */ +/* #endif */ + +# define BIO_CTRL_DGRAM_QUERY_MTU 40/* as kernel for current MTU */ +# define BIO_CTRL_DGRAM_GET_FALLBACK_MTU 47 +# define BIO_CTRL_DGRAM_GET_MTU 41/* get cached value for MTU */ +# define BIO_CTRL_DGRAM_SET_MTU 42/* set cached value for MTU. + * want to use this if asking + * the kernel fails */ + +# define BIO_CTRL_DGRAM_MTU_EXCEEDED 43/* check whether the MTU was + * exceed in the previous write + * operation */ + +# define BIO_CTRL_DGRAM_GET_PEER 46 +# define BIO_CTRL_DGRAM_SET_PEER 44/* Destination for the data */ + +# define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45/* Next DTLS handshake timeout + * to adjust socket timeouts */ +# define BIO_CTRL_DGRAM_SET_DONT_FRAG 48 + +# define BIO_CTRL_DGRAM_GET_MTU_OVERHEAD 49 + +/* Deliberately outside of OPENSSL_NO_SCTP - used in bss_dgram.c */ +# define BIO_CTRL_DGRAM_SCTP_SET_IN_HANDSHAKE 50 +# ifndef OPENSSL_NO_SCTP +/* SCTP stuff */ +# define BIO_CTRL_DGRAM_SCTP_ADD_AUTH_KEY 51 +# define BIO_CTRL_DGRAM_SCTP_NEXT_AUTH_KEY 52 +# define BIO_CTRL_DGRAM_SCTP_AUTH_CCS_RCVD 53 +# define BIO_CTRL_DGRAM_SCTP_GET_SNDINFO 60 +# define BIO_CTRL_DGRAM_SCTP_SET_SNDINFO 61 +# define BIO_CTRL_DGRAM_SCTP_GET_RCVINFO 62 +# define BIO_CTRL_DGRAM_SCTP_SET_RCVINFO 63 +# define BIO_CTRL_DGRAM_SCTP_GET_PRINFO 64 +# define BIO_CTRL_DGRAM_SCTP_SET_PRINFO 65 +# define BIO_CTRL_DGRAM_SCTP_SAVE_SHUTDOWN 70 +# endif + +# define BIO_CTRL_DGRAM_SET_PEEK_MODE 71 + +/* modifiers */ +# define BIO_FP_READ 0x02 +# define BIO_FP_WRITE 0x04 +# define BIO_FP_APPEND 0x08 +# define BIO_FP_TEXT 0x10 + +# define BIO_FLAGS_READ 0x01 +# define BIO_FLAGS_WRITE 0x02 +# define BIO_FLAGS_IO_SPECIAL 0x04 +# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) +# define BIO_FLAGS_SHOULD_RETRY 0x08 +# ifndef BIO_FLAGS_UPLINK +/* + * "UPLINK" flag denotes file descriptors provided by application. It + * defaults to 0, as most platforms don't require UPLINK interface. + */ +# define BIO_FLAGS_UPLINK 0 +# endif + +# define BIO_FLAGS_BASE64_NO_NL 0x100 + +/* + * This is used with memory BIOs: + * BIO_FLAGS_MEM_RDONLY means we shouldn't free up or change the data in any way; + * BIO_FLAGS_NONCLEAR_RST means we shouldn't clear data on reset. + */ +# define BIO_FLAGS_MEM_RDONLY 0x200 +# define BIO_FLAGS_NONCLEAR_RST 0x400 +# define BIO_FLAGS_IN_EOF 0x800 + +typedef union bio_addr_st BIO_ADDR; +typedef struct bio_addrinfo_st BIO_ADDRINFO; + +int BIO_get_new_index(void); +void BIO_set_flags(BIO *b, int flags); +int BIO_test_flags(const BIO *b, int flags); +void BIO_clear_flags(BIO *b, int flags); + +# define BIO_get_flags(b) BIO_test_flags(b, ~(0x0)) +# define BIO_set_retry_special(b) \ + BIO_set_flags(b, (BIO_FLAGS_IO_SPECIAL|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_read(b) \ + BIO_set_flags(b, (BIO_FLAGS_READ|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_set_retry_write(b) \ + BIO_set_flags(b, (BIO_FLAGS_WRITE|BIO_FLAGS_SHOULD_RETRY)) + +/* These are normally used internally in BIOs */ +# define BIO_clear_retry_flags(b) \ + BIO_clear_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) +# define BIO_get_retry_flags(b) \ + BIO_test_flags(b, (BIO_FLAGS_RWS|BIO_FLAGS_SHOULD_RETRY)) + +/* These should be used by the application to tell why we should retry */ +# define BIO_should_read(a) BIO_test_flags(a, BIO_FLAGS_READ) +# define BIO_should_write(a) BIO_test_flags(a, BIO_FLAGS_WRITE) +# define BIO_should_io_special(a) BIO_test_flags(a, BIO_FLAGS_IO_SPECIAL) +# define BIO_retry_type(a) BIO_test_flags(a, BIO_FLAGS_RWS) +# define BIO_should_retry(a) BIO_test_flags(a, BIO_FLAGS_SHOULD_RETRY) + +/* + * The next three are used in conjunction with the BIO_should_io_special() + * condition. After this returns true, BIO *BIO_get_retry_BIO(BIO *bio, int + * *reason); will walk the BIO stack and return the 'reason' for the special + * and the offending BIO. Given a BIO, BIO_get_retry_reason(bio) will return + * the code. + */ +/* + * Returned from the SSL bio when the certificate retrieval code had an error + */ +# define BIO_RR_SSL_X509_LOOKUP 0x01 +/* Returned from the connect BIO when a connect would have blocked */ +# define BIO_RR_CONNECT 0x02 +/* Returned from the accept BIO when an accept would have blocked */ +# define BIO_RR_ACCEPT 0x03 + +/* These are passed by the BIO callback */ +# define BIO_CB_FREE 0x01 +# define BIO_CB_READ 0x02 +# define BIO_CB_WRITE 0x03 +# define BIO_CB_PUTS 0x04 +# define BIO_CB_GETS 0x05 +# define BIO_CB_CTRL 0x06 + +/* + * The callback is called before and after the underling operation, The + * BIO_CB_RETURN flag indicates if it is after the call + */ +# define BIO_CB_RETURN 0x80 +# define BIO_CB_return(a) ((a)|BIO_CB_RETURN) +# define BIO_cb_pre(a) (!((a)&BIO_CB_RETURN)) +# define BIO_cb_post(a) ((a)&BIO_CB_RETURN) + +typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, + long argl, long ret); +typedef long (*BIO_callback_fn_ex)(BIO *b, int oper, const char *argp, + size_t len, int argi, + long argl, int ret, size_t *processed); +BIO_callback_fn BIO_get_callback(const BIO *b); +void BIO_set_callback(BIO *b, BIO_callback_fn callback); + +BIO_callback_fn_ex BIO_get_callback_ex(const BIO *b); +void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); + +char *BIO_get_callback_arg(const BIO *b); +void BIO_set_callback_arg(BIO *b, char *arg); + +typedef struct bio_method_st BIO_METHOD; + +const char *BIO_method_name(const BIO *b); +int BIO_method_type(const BIO *b); + +typedef int BIO_info_cb(BIO *, int, int); +typedef BIO_info_cb bio_info_cb; /* backward compatibility */ + +DEFINE_STACK_OF(BIO) + +/* Prefix and suffix callback in ASN1 BIO */ +typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, + void *parg); + +# ifndef OPENSSL_NO_SCTP +/* SCTP parameter structs */ +struct bio_dgram_sctp_sndinfo { + uint16_t snd_sid; + uint16_t snd_flags; + uint32_t snd_ppid; + uint32_t snd_context; +}; + +struct bio_dgram_sctp_rcvinfo { + uint16_t rcv_sid; + uint16_t rcv_ssn; + uint16_t rcv_flags; + uint32_t rcv_ppid; + uint32_t rcv_tsn; + uint32_t rcv_cumtsn; + uint32_t rcv_context; +}; + +struct bio_dgram_sctp_prinfo { + uint16_t pr_policy; + uint32_t pr_value; +}; +# endif + +/* + * #define BIO_CONN_get_param_hostname BIO_ctrl + */ + +# define BIO_C_SET_CONNECT 100 +# define BIO_C_DO_STATE_MACHINE 101 +# define BIO_C_SET_NBIO 102 +/* # define BIO_C_SET_PROXY_PARAM 103 */ +# define BIO_C_SET_FD 104 +# define BIO_C_GET_FD 105 +# define BIO_C_SET_FILE_PTR 106 +# define BIO_C_GET_FILE_PTR 107 +# define BIO_C_SET_FILENAME 108 +# define BIO_C_SET_SSL 109 +# define BIO_C_GET_SSL 110 +# define BIO_C_SET_MD 111 +# define BIO_C_GET_MD 112 +# define BIO_C_GET_CIPHER_STATUS 113 +# define BIO_C_SET_BUF_MEM 114 +# define BIO_C_GET_BUF_MEM_PTR 115 +# define BIO_C_GET_BUFF_NUM_LINES 116 +# define BIO_C_SET_BUFF_SIZE 117 +# define BIO_C_SET_ACCEPT 118 +# define BIO_C_SSL_MODE 119 +# define BIO_C_GET_MD_CTX 120 +/* # define BIO_C_GET_PROXY_PARAM 121 */ +# define BIO_C_SET_BUFF_READ_DATA 122/* data to read first */ +# define BIO_C_GET_CONNECT 123 +# define BIO_C_GET_ACCEPT 124 +# define BIO_C_SET_SSL_RENEGOTIATE_BYTES 125 +# define BIO_C_GET_SSL_NUM_RENEGOTIATES 126 +# define BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT 127 +# define BIO_C_FILE_SEEK 128 +# define BIO_C_GET_CIPHER_CTX 129 +# define BIO_C_SET_BUF_MEM_EOF_RETURN 130/* return end of input + * value */ +# define BIO_C_SET_BIND_MODE 131 +# define BIO_C_GET_BIND_MODE 132 +# define BIO_C_FILE_TELL 133 +# define BIO_C_GET_SOCKS 134 +# define BIO_C_SET_SOCKS 135 + +# define BIO_C_SET_WRITE_BUF_SIZE 136/* for BIO_s_bio */ +# define BIO_C_GET_WRITE_BUF_SIZE 137 +# define BIO_C_MAKE_BIO_PAIR 138 +# define BIO_C_DESTROY_BIO_PAIR 139 +# define BIO_C_GET_WRITE_GUARANTEE 140 +# define BIO_C_GET_READ_REQUEST 141 +# define BIO_C_SHUTDOWN_WR 142 +# define BIO_C_NREAD0 143 +# define BIO_C_NREAD 144 +# define BIO_C_NWRITE0 145 +# define BIO_C_NWRITE 146 +# define BIO_C_RESET_READ_REQUEST 147 +# define BIO_C_SET_MD_CTX 148 + +# define BIO_C_SET_PREFIX 149 +# define BIO_C_GET_PREFIX 150 +# define BIO_C_SET_SUFFIX 151 +# define BIO_C_GET_SUFFIX 152 + +# define BIO_C_SET_EX_ARG 153 +# define BIO_C_GET_EX_ARG 154 + +# define BIO_C_SET_CONNECT_MODE 155 + +# define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) +# define BIO_get_app_data(s) BIO_get_ex_data(s,0) + +# define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) + +# ifndef OPENSSL_NO_SOCK +/* IP families we support, for BIO_s_connect() and BIO_s_accept() */ +/* Note: the underlying operating system may not support some of them */ +# define BIO_FAMILY_IPV4 4 +# define BIO_FAMILY_IPV6 6 +# define BIO_FAMILY_IPANY 256 + +/* BIO_s_connect() */ +# define BIO_set_conn_hostname(b,name) BIO_ctrl(b,BIO_C_SET_CONNECT,0, \ + (char *)(name)) +# define BIO_set_conn_port(b,port) BIO_ctrl(b,BIO_C_SET_CONNECT,1, \ + (char *)(port)) +# define BIO_set_conn_address(b,addr) BIO_ctrl(b,BIO_C_SET_CONNECT,2, \ + (char *)(addr)) +# define BIO_set_conn_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_CONNECT,3,f) +# define BIO_get_conn_hostname(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)) +# define BIO_get_conn_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)) +# define BIO_get_conn_address(b) ((const BIO_ADDR *)BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)) +# define BIO_get_conn_ip_family(b) BIO_ctrl(b,BIO_C_GET_CONNECT,3,NULL) +# define BIO_set_conn_mode(b,n) BIO_ctrl(b,BIO_C_SET_CONNECT_MODE,(n),NULL) + +/* BIO_s_accept() */ +# define BIO_set_accept_name(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0, \ + (char *)(name)) +# define BIO_set_accept_port(b,port) BIO_ctrl(b,BIO_C_SET_ACCEPT,1, \ + (char *)(port)) +# define BIO_get_accept_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)) +# define BIO_get_accept_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,1)) +# define BIO_get_peer_name(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,2)) +# define BIO_get_peer_port(b) ((const char *)BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,3)) +/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ +# define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(n)?(void *)"a":NULL) +# define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,3, \ + (char *)(bio)) +# define BIO_set_accept_ip_family(b,f) BIO_int_ctrl(b,BIO_C_SET_ACCEPT,4,f) +# define BIO_get_accept_ip_family(b) BIO_ctrl(b,BIO_C_GET_ACCEPT,4,NULL) + +/* Aliases kept for backward compatibility */ +# define BIO_BIND_NORMAL 0 +# define BIO_BIND_REUSEADDR BIO_SOCK_REUSEADDR +# define BIO_BIND_REUSEADDR_IF_UNUSED BIO_SOCK_REUSEADDR +# define BIO_set_bind_mode(b,mode) BIO_ctrl(b,BIO_C_SET_BIND_MODE,mode,NULL) +# define BIO_get_bind_mode(b) BIO_ctrl(b,BIO_C_GET_BIND_MODE,0,NULL) + +/* BIO_s_accept() and BIO_s_connect() */ +# define BIO_do_connect(b) BIO_do_handshake(b) +# define BIO_do_accept(b) BIO_do_handshake(b) +# endif /* OPENSSL_NO_SOCK */ + +# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) + +/* BIO_s_datagram(), BIO_s_fd(), BIO_s_socket(), BIO_s_accept() and BIO_s_connect() */ +# define BIO_set_fd(b,fd,c) BIO_int_ctrl(b,BIO_C_SET_FD,c,fd) +# define BIO_get_fd(b,c) BIO_ctrl(b,BIO_C_GET_FD,0,(char *)(c)) + +/* BIO_s_file() */ +# define BIO_set_fp(b,fp,c) BIO_ctrl(b,BIO_C_SET_FILE_PTR,c,(char *)(fp)) +# define BIO_get_fp(b,fpp) BIO_ctrl(b,BIO_C_GET_FILE_PTR,0,(char *)(fpp)) + +/* BIO_s_fd() and BIO_s_file() */ +# define BIO_seek(b,ofs) (int)BIO_ctrl(b,BIO_C_FILE_SEEK,ofs,NULL) +# define BIO_tell(b) (int)BIO_ctrl(b,BIO_C_FILE_TELL,0,NULL) + +/* + * name is cast to lose const, but might be better to route through a + * function so we can do it safely + */ +# ifdef CONST_STRICT +/* + * If you are wondering why this isn't defined, its because CONST_STRICT is + * purely a compile-time kludge to allow const to be checked. + */ +int BIO_read_filename(BIO *b, const char *name); +# else +# define BIO_read_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ,(char *)(name)) +# endif +# define BIO_write_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_WRITE,name) +# define BIO_append_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_APPEND,name) +# define BIO_rw_filename(b,name) (int)BIO_ctrl(b,BIO_C_SET_FILENAME, \ + BIO_CLOSE|BIO_FP_READ|BIO_FP_WRITE,name) + +/* + * WARNING WARNING, this ups the reference count on the read bio of the SSL + * structure. This is because the ssl read BIO is now pointed to by the + * next_bio field in the bio. So when you free the BIO, make sure you are + * doing a BIO_free_all() to catch the underlying BIO. + */ +# define BIO_set_ssl(b,ssl,c) BIO_ctrl(b,BIO_C_SET_SSL,c,(char *)(ssl)) +# define BIO_get_ssl(b,sslp) BIO_ctrl(b,BIO_C_GET_SSL,0,(char *)(sslp)) +# define BIO_set_ssl_mode(b,client) BIO_ctrl(b,BIO_C_SSL_MODE,client,NULL) +# define BIO_set_ssl_renegotiate_bytes(b,num) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_BYTES,num,NULL) +# define BIO_get_num_renegotiates(b) \ + BIO_ctrl(b,BIO_C_GET_SSL_NUM_RENEGOTIATES,0,NULL) +# define BIO_set_ssl_renegotiate_timeout(b,seconds) \ + BIO_ctrl(b,BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT,seconds,NULL) + +/* defined in evp.h */ +/* #define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,1,(char *)(md)) */ + +# define BIO_get_mem_data(b,pp) BIO_ctrl(b,BIO_CTRL_INFO,0,(char *)(pp)) +# define BIO_set_mem_buf(b,bm,c) BIO_ctrl(b,BIO_C_SET_BUF_MEM,c,(char *)(bm)) +# define BIO_get_mem_ptr(b,pp) BIO_ctrl(b,BIO_C_GET_BUF_MEM_PTR,0, \ + (char *)(pp)) +# define BIO_set_mem_eof_return(b,v) \ + BIO_ctrl(b,BIO_C_SET_BUF_MEM_EOF_RETURN,v,NULL) + +/* For the BIO_f_buffer() type */ +# define BIO_get_buffer_num_lines(b) BIO_ctrl(b,BIO_C_GET_BUFF_NUM_LINES,0,NULL) +# define BIO_set_buffer_size(b,size) BIO_ctrl(b,BIO_C_SET_BUFF_SIZE,size,NULL) +# define BIO_set_read_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,0) +# define BIO_set_write_buffer_size(b,size) BIO_int_ctrl(b,BIO_C_SET_BUFF_SIZE,size,1) +# define BIO_set_buffer_read_data(b,buf,num) BIO_ctrl(b,BIO_C_SET_BUFF_READ_DATA,num,buf) + +/* Don't use the next one unless you know what you are doing :-) */ +# define BIO_dup_state(b,ret) BIO_ctrl(b,BIO_CTRL_DUP,0,(char *)(ret)) + +# define BIO_reset(b) (int)BIO_ctrl(b,BIO_CTRL_RESET,0,NULL) +# define BIO_eof(b) (int)BIO_ctrl(b,BIO_CTRL_EOF,0,NULL) +# define BIO_set_close(b,c) (int)BIO_ctrl(b,BIO_CTRL_SET_CLOSE,(c),NULL) +# define BIO_get_close(b) (int)BIO_ctrl(b,BIO_CTRL_GET_CLOSE,0,NULL) +# define BIO_pending(b) (int)BIO_ctrl(b,BIO_CTRL_PENDING,0,NULL) +# define BIO_wpending(b) (int)BIO_ctrl(b,BIO_CTRL_WPENDING,0,NULL) +/* ...pending macros have inappropriate return type */ +size_t BIO_ctrl_pending(BIO *b); +size_t BIO_ctrl_wpending(BIO *b); +# define BIO_flush(b) (int)BIO_ctrl(b,BIO_CTRL_FLUSH,0,NULL) +# define BIO_get_info_callback(b,cbp) (int)BIO_ctrl(b,BIO_CTRL_GET_CALLBACK,0, \ + cbp) +# define BIO_set_info_callback(b,cb) (int)BIO_callback_ctrl(b,BIO_CTRL_SET_CALLBACK,cb) + +/* For the BIO_f_buffer() type */ +# define BIO_buffer_get_num_lines(b) BIO_ctrl(b,BIO_CTRL_GET,0,NULL) +# define BIO_buffer_peek(b,s,l) BIO_ctrl(b,BIO_CTRL_PEEK,(l),(s)) + +/* For BIO_s_bio() */ +# define BIO_set_write_buf_size(b,size) (int)BIO_ctrl(b,BIO_C_SET_WRITE_BUF_SIZE,size,NULL) +# define BIO_get_write_buf_size(b,size) (size_t)BIO_ctrl(b,BIO_C_GET_WRITE_BUF_SIZE,size,NULL) +# define BIO_make_bio_pair(b1,b2) (int)BIO_ctrl(b1,BIO_C_MAKE_BIO_PAIR,0,b2) +# define BIO_destroy_bio_pair(b) (int)BIO_ctrl(b,BIO_C_DESTROY_BIO_PAIR,0,NULL) +# define BIO_shutdown_wr(b) (int)BIO_ctrl(b, BIO_C_SHUTDOWN_WR, 0, NULL) +/* macros with inappropriate type -- but ...pending macros use int too: */ +# define BIO_get_write_guarantee(b) (int)BIO_ctrl(b,BIO_C_GET_WRITE_GUARANTEE,0,NULL) +# define BIO_get_read_request(b) (int)BIO_ctrl(b,BIO_C_GET_READ_REQUEST,0,NULL) +size_t BIO_ctrl_get_write_guarantee(BIO *b); +size_t BIO_ctrl_get_read_request(BIO *b); +int BIO_ctrl_reset_read_request(BIO *b); + +/* ctrl macros for dgram */ +# define BIO_ctrl_dgram_connect(b,peer) \ + (int)BIO_ctrl(b,BIO_CTRL_DGRAM_CONNECT,0, (char *)(peer)) +# define BIO_ctrl_set_connected(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_CONNECTED, 0, (char *)(peer)) +# define BIO_dgram_recv_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) +# define BIO_dgram_send_timedout(b) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) +# define BIO_dgram_get_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)(peer)) +# define BIO_dgram_set_peer(b,peer) \ + (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)(peer)) +# define BIO_dgram_get_mtu_overhead(b) \ + (unsigned int)BIO_ctrl((b), BIO_CTRL_DGRAM_GET_MTU_OVERHEAD, 0, NULL) + +#define BIO_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_BIO, l, p, newf, dupf, freef) +int BIO_set_ex_data(BIO *bio, int idx, void *data); +void *BIO_get_ex_data(BIO *bio, int idx); +uint64_t BIO_number_read(BIO *bio); +uint64_t BIO_number_written(BIO *bio); + +/* For BIO_f_asn1() */ +int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix, + asn1_ps_func *prefix_free); +int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix, + asn1_ps_func **pprefix_free); +int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix, + asn1_ps_func *suffix_free); +int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix, + asn1_ps_func **psuffix_free); + +const BIO_METHOD *BIO_s_file(void); +BIO *BIO_new_file(const char *filename, const char *mode); +# ifndef OPENSSL_NO_STDIO +BIO *BIO_new_fp(FILE *stream, int close_flag); +# endif +BIO *BIO_new(const BIO_METHOD *type); +int BIO_free(BIO *a); +void BIO_set_data(BIO *a, void *ptr); +void *BIO_get_data(BIO *a); +void BIO_set_init(BIO *a, int init); +int BIO_get_init(BIO *a); +void BIO_set_shutdown(BIO *a, int shut); +int BIO_get_shutdown(BIO *a); +void BIO_vfree(BIO *a); +int BIO_up_ref(BIO *a); +int BIO_read(BIO *b, void *data, int dlen); +int BIO_read_ex(BIO *b, void *data, size_t dlen, size_t *readbytes); +int BIO_gets(BIO *bp, char *buf, int size); +int BIO_write(BIO *b, const void *data, int dlen); +int BIO_write_ex(BIO *b, const void *data, size_t dlen, size_t *written); +int BIO_puts(BIO *bp, const char *buf); +int BIO_indent(BIO *b, int indent, int max); +long BIO_ctrl(BIO *bp, int cmd, long larg, void *parg); +long BIO_callback_ctrl(BIO *b, int cmd, BIO_info_cb *fp); +void *BIO_ptr_ctrl(BIO *bp, int cmd, long larg); +long BIO_int_ctrl(BIO *bp, int cmd, long larg, int iarg); +BIO *BIO_push(BIO *b, BIO *append); +BIO *BIO_pop(BIO *b); +void BIO_free_all(BIO *a); +BIO *BIO_find_type(BIO *b, int bio_type); +BIO *BIO_next(BIO *b); +void BIO_set_next(BIO *b, BIO *next); +BIO *BIO_get_retry_BIO(BIO *bio, int *reason); +int BIO_get_retry_reason(BIO *bio); +void BIO_set_retry_reason(BIO *bio, int reason); +BIO *BIO_dup_chain(BIO *in); + +int BIO_nread0(BIO *bio, char **buf); +int BIO_nread(BIO *bio, char **buf, int num); +int BIO_nwrite0(BIO *bio, char **buf); +int BIO_nwrite(BIO *bio, char **buf, int num); + +long BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, + long argl, long ret); + +const BIO_METHOD *BIO_s_mem(void); +const BIO_METHOD *BIO_s_secmem(void); +BIO *BIO_new_mem_buf(const void *buf, int len); +# ifndef OPENSSL_NO_SOCK +const BIO_METHOD *BIO_s_socket(void); +const BIO_METHOD *BIO_s_connect(void); +const BIO_METHOD *BIO_s_accept(void); +# endif +const BIO_METHOD *BIO_s_fd(void); +const BIO_METHOD *BIO_s_log(void); +const BIO_METHOD *BIO_s_bio(void); +const BIO_METHOD *BIO_s_null(void); +const BIO_METHOD *BIO_f_null(void); +const BIO_METHOD *BIO_f_buffer(void); +const BIO_METHOD *BIO_f_linebuffer(void); +const BIO_METHOD *BIO_f_nbio_test(void); +# ifndef OPENSSL_NO_DGRAM +const BIO_METHOD *BIO_s_datagram(void); +int BIO_dgram_non_fatal_error(int error); +BIO *BIO_new_dgram(int fd, int close_flag); +# ifndef OPENSSL_NO_SCTP +const BIO_METHOD *BIO_s_datagram_sctp(void); +BIO *BIO_new_dgram_sctp(int fd, int close_flag); +int BIO_dgram_is_sctp(BIO *bio); +int BIO_dgram_sctp_notification_cb(BIO *b, + void (*handle_notifications) (BIO *bio, + void *context, + void *buf), + void *context); +int BIO_dgram_sctp_wait_for_dry(BIO *b); +int BIO_dgram_sctp_msg_waiting(BIO *b); +# endif +# endif + +# ifndef OPENSSL_NO_SOCK +int BIO_sock_should_retry(int i); +int BIO_sock_non_fatal_error(int error); +# endif + +int BIO_fd_should_retry(int i); +int BIO_fd_non_fatal_error(int error); +int BIO_dump_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len); +int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), + void *u, const char *s, int len, int indent); +int BIO_dump(BIO *b, const char *bytes, int len); +int BIO_dump_indent(BIO *b, const char *bytes, int len, int indent); +# ifndef OPENSSL_NO_STDIO +int BIO_dump_fp(FILE *fp, const char *s, int len); +int BIO_dump_indent_fp(FILE *fp, const char *s, int len, int indent); +# endif +int BIO_hex_string(BIO *out, int indent, int width, unsigned char *data, + int datalen); + +# ifndef OPENSSL_NO_SOCK +BIO_ADDR *BIO_ADDR_new(void); +int BIO_ADDR_rawmake(BIO_ADDR *ap, int family, + const void *where, size_t wherelen, unsigned short port); +void BIO_ADDR_free(BIO_ADDR *); +void BIO_ADDR_clear(BIO_ADDR *ap); +int BIO_ADDR_family(const BIO_ADDR *ap); +int BIO_ADDR_rawaddress(const BIO_ADDR *ap, void *p, size_t *l); +unsigned short BIO_ADDR_rawport(const BIO_ADDR *ap); +char *BIO_ADDR_hostname_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_service_string(const BIO_ADDR *ap, int numeric); +char *BIO_ADDR_path_string(const BIO_ADDR *ap); + +const BIO_ADDRINFO *BIO_ADDRINFO_next(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_family(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_socktype(const BIO_ADDRINFO *bai); +int BIO_ADDRINFO_protocol(const BIO_ADDRINFO *bai); +const BIO_ADDR *BIO_ADDRINFO_address(const BIO_ADDRINFO *bai); +void BIO_ADDRINFO_free(BIO_ADDRINFO *bai); + +enum BIO_hostserv_priorities { + BIO_PARSE_PRIO_HOST, BIO_PARSE_PRIO_SERV +}; +int BIO_parse_hostserv(const char *hostserv, char **host, char **service, + enum BIO_hostserv_priorities hostserv_prio); +enum BIO_lookup_type { + BIO_LOOKUP_CLIENT, BIO_LOOKUP_SERVER +}; +int BIO_lookup(const char *host, const char *service, + enum BIO_lookup_type lookup_type, + int family, int socktype, BIO_ADDRINFO **res); +int BIO_lookup_ex(const char *host, const char *service, + int lookup_type, int family, int socktype, int protocol, + BIO_ADDRINFO **res); +int BIO_sock_error(int sock); +int BIO_socket_ioctl(int fd, long type, void *arg); +int BIO_socket_nbio(int fd, int mode); +int BIO_sock_init(void); +# if OPENSSL_API_COMPAT < 0x10100000L +# define BIO_sock_cleanup() while(0) continue +# endif +int BIO_set_tcp_ndelay(int sock, int turn_on); + +DEPRECATEDIN_1_1_0(struct hostent *BIO_gethostbyname(const char *name)) +DEPRECATEDIN_1_1_0(int BIO_get_port(const char *str, unsigned short *port_ptr)) +DEPRECATEDIN_1_1_0(int BIO_get_host_ip(const char *str, unsigned char *ip)) +DEPRECATEDIN_1_1_0(int BIO_get_accept_socket(char *host_port, int mode)) +DEPRECATEDIN_1_1_0(int BIO_accept(int sock, char **ip_port)) + +union BIO_sock_info_u { + BIO_ADDR *addr; +}; +enum BIO_sock_info_type { + BIO_SOCK_INFO_ADDRESS +}; +int BIO_sock_info(int sock, + enum BIO_sock_info_type type, union BIO_sock_info_u *info); + +# define BIO_SOCK_REUSEADDR 0x01 +# define BIO_SOCK_V6_ONLY 0x02 +# define BIO_SOCK_KEEPALIVE 0x04 +# define BIO_SOCK_NONBLOCK 0x08 +# define BIO_SOCK_NODELAY 0x10 + +int BIO_socket(int domain, int socktype, int protocol, int options); +int BIO_connect(int sock, const BIO_ADDR *addr, int options); +int BIO_bind(int sock, const BIO_ADDR *addr, int options); +int BIO_listen(int sock, const BIO_ADDR *addr, int options); +int BIO_accept_ex(int accept_sock, BIO_ADDR *addr, int options); +int BIO_closesocket(int sock); + +BIO *BIO_new_socket(int sock, int close_flag); +BIO *BIO_new_connect(const char *host_port); +BIO *BIO_new_accept(const char *host_port); +# endif /* OPENSSL_NO_SOCK*/ + +BIO *BIO_new_fd(int fd, int close_flag); + +int BIO_new_bio_pair(BIO **bio1, size_t writebuf1, + BIO **bio2, size_t writebuf2); +/* + * If successful, returns 1 and in *bio1, *bio2 two BIO pair endpoints. + * Otherwise returns 0 and sets *bio1 and *bio2 to NULL. Size 0 uses default + * value. + */ + +void BIO_copy_next_retry(BIO *b); + +/* + * long BIO_ghbn_ctrl(int cmd,int iarg,char *parg); + */ + +# define ossl_bio__attr__(x) +# if defined(__GNUC__) && defined(__STDC_VERSION__) \ + && !defined(__APPLE__) + /* + * Because we support the 'z' modifier, which made its appearance in C99, + * we can't use __attribute__ with pre C99 dialects. + */ +# if __STDC_VERSION__ >= 199901L +# undef ossl_bio__attr__ +# define ossl_bio__attr__ __attribute__ +# if __GNUC__*10 + __GNUC_MINOR__ >= 44 +# define ossl_bio__printf__ __gnu_printf__ +# else +# define ossl_bio__printf__ __printf__ +# endif +# endif +# endif +int BIO_printf(BIO *bio, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 3))); +int BIO_vprintf(BIO *bio, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 2, 0))); +int BIO_snprintf(char *buf, size_t n, const char *format, ...) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 4))); +int BIO_vsnprintf(char *buf, size_t n, const char *format, va_list args) +ossl_bio__attr__((__format__(ossl_bio__printf__, 3, 0))); +# undef ossl_bio__attr__ +# undef ossl_bio__printf__ + + +BIO_METHOD *BIO_meth_new(int type, const char *name); +void BIO_meth_free(BIO_METHOD *biom); +int (*BIO_meth_get_write(const BIO_METHOD *biom)) (BIO *, const char *, int); +int (*BIO_meth_get_write_ex(const BIO_METHOD *biom)) (BIO *, const char *, size_t, + size_t *); +int BIO_meth_set_write(BIO_METHOD *biom, + int (*write) (BIO *, const char *, int)); +int BIO_meth_set_write_ex(BIO_METHOD *biom, + int (*bwrite) (BIO *, const char *, size_t, size_t *)); +int (*BIO_meth_get_read(const BIO_METHOD *biom)) (BIO *, char *, int); +int (*BIO_meth_get_read_ex(const BIO_METHOD *biom)) (BIO *, char *, size_t, size_t *); +int BIO_meth_set_read(BIO_METHOD *biom, + int (*read) (BIO *, char *, int)); +int BIO_meth_set_read_ex(BIO_METHOD *biom, + int (*bread) (BIO *, char *, size_t, size_t *)); +int (*BIO_meth_get_puts(const BIO_METHOD *biom)) (BIO *, const char *); +int BIO_meth_set_puts(BIO_METHOD *biom, + int (*puts) (BIO *, const char *)); +int (*BIO_meth_get_gets(const BIO_METHOD *biom)) (BIO *, char *, int); +int BIO_meth_set_gets(BIO_METHOD *biom, + int (*gets) (BIO *, char *, int)); +long (*BIO_meth_get_ctrl(const BIO_METHOD *biom)) (BIO *, int, long, void *); +int BIO_meth_set_ctrl(BIO_METHOD *biom, + long (*ctrl) (BIO *, int, long, void *)); +int (*BIO_meth_get_create(const BIO_METHOD *bion)) (BIO *); +int BIO_meth_set_create(BIO_METHOD *biom, int (*create) (BIO *)); +int (*BIO_meth_get_destroy(const BIO_METHOD *biom)) (BIO *); +int BIO_meth_set_destroy(BIO_METHOD *biom, int (*destroy) (BIO *)); +long (*BIO_meth_get_callback_ctrl(const BIO_METHOD *biom)) + (BIO *, int, BIO_info_cb *); +int BIO_meth_set_callback_ctrl(BIO_METHOD *biom, + long (*callback_ctrl) (BIO *, int, + BIO_info_cb *)); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/bioerr.h b/include/openssl/openssl/bioerr.h new file mode 100644 index 00000000..46e2c96e --- /dev/null +++ b/include/openssl/openssl/bioerr.h @@ -0,0 +1,124 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BIOERR_H +# define HEADER_BIOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BIO_strings(void); + +/* + * BIO function codes. + */ +# define BIO_F_ACPT_STATE 100 +# define BIO_F_ADDRINFO_WRAP 148 +# define BIO_F_ADDR_STRINGS 134 +# define BIO_F_BIO_ACCEPT 101 +# define BIO_F_BIO_ACCEPT_EX 137 +# define BIO_F_BIO_ACCEPT_NEW 152 +# define BIO_F_BIO_ADDR_NEW 144 +# define BIO_F_BIO_BIND 147 +# define BIO_F_BIO_CALLBACK_CTRL 131 +# define BIO_F_BIO_CONNECT 138 +# define BIO_F_BIO_CONNECT_NEW 153 +# define BIO_F_BIO_CTRL 103 +# define BIO_F_BIO_GETS 104 +# define BIO_F_BIO_GET_HOST_IP 106 +# define BIO_F_BIO_GET_NEW_INDEX 102 +# define BIO_F_BIO_GET_PORT 107 +# define BIO_F_BIO_LISTEN 139 +# define BIO_F_BIO_LOOKUP 135 +# define BIO_F_BIO_LOOKUP_EX 143 +# define BIO_F_BIO_MAKE_PAIR 121 +# define BIO_F_BIO_METH_NEW 146 +# define BIO_F_BIO_NEW 108 +# define BIO_F_BIO_NEW_DGRAM_SCTP 145 +# define BIO_F_BIO_NEW_FILE 109 +# define BIO_F_BIO_NEW_MEM_BUF 126 +# define BIO_F_BIO_NREAD 123 +# define BIO_F_BIO_NREAD0 124 +# define BIO_F_BIO_NWRITE 125 +# define BIO_F_BIO_NWRITE0 122 +# define BIO_F_BIO_PARSE_HOSTSERV 136 +# define BIO_F_BIO_PUTS 110 +# define BIO_F_BIO_READ 111 +# define BIO_F_BIO_READ_EX 105 +# define BIO_F_BIO_READ_INTERN 120 +# define BIO_F_BIO_SOCKET 140 +# define BIO_F_BIO_SOCKET_NBIO 142 +# define BIO_F_BIO_SOCK_INFO 141 +# define BIO_F_BIO_SOCK_INIT 112 +# define BIO_F_BIO_WRITE 113 +# define BIO_F_BIO_WRITE_EX 119 +# define BIO_F_BIO_WRITE_INTERN 128 +# define BIO_F_BUFFER_CTRL 114 +# define BIO_F_CONN_CTRL 127 +# define BIO_F_CONN_STATE 115 +# define BIO_F_DGRAM_SCTP_NEW 149 +# define BIO_F_DGRAM_SCTP_READ 132 +# define BIO_F_DGRAM_SCTP_WRITE 133 +# define BIO_F_DOAPR_OUTCH 150 +# define BIO_F_FILE_CTRL 116 +# define BIO_F_FILE_READ 130 +# define BIO_F_LINEBUFFER_CTRL 129 +# define BIO_F_LINEBUFFER_NEW 151 +# define BIO_F_MEM_WRITE 117 +# define BIO_F_NBIOF_NEW 154 +# define BIO_F_SLG_WRITE 155 +# define BIO_F_SSL_NEW 118 + +/* + * BIO reason codes. + */ +# define BIO_R_ACCEPT_ERROR 100 +# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141 +# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129 +# define BIO_R_BAD_FOPEN_MODE 101 +# define BIO_R_BROKEN_PIPE 124 +# define BIO_R_CONNECT_ERROR 103 +# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107 +# define BIO_R_GETSOCKNAME_ERROR 132 +# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133 +# define BIO_R_GETTING_SOCKTYPE 134 +# define BIO_R_INVALID_ARGUMENT 125 +# define BIO_R_INVALID_SOCKET 135 +# define BIO_R_IN_USE 123 +# define BIO_R_LENGTH_TOO_LONG 102 +# define BIO_R_LISTEN_V6_ONLY 136 +# define BIO_R_LOOKUP_RETURNED_NOTHING 142 +# define BIO_R_MALFORMED_HOST_OR_SERVICE 130 +# define BIO_R_NBIO_CONNECT_ERROR 110 +# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143 +# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144 +# define BIO_R_NO_PORT_DEFINED 113 +# define BIO_R_NO_SUCH_FILE 128 +# define BIO_R_NULL_PARAMETER 115 +# define BIO_R_UNABLE_TO_BIND_SOCKET 117 +# define BIO_R_UNABLE_TO_CREATE_SOCKET 118 +# define BIO_R_UNABLE_TO_KEEPALIVE 137 +# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119 +# define BIO_R_UNABLE_TO_NODELAY 138 +# define BIO_R_UNABLE_TO_REUSEADDR 139 +# define BIO_R_UNAVAILABLE_IP_FAMILY 145 +# define BIO_R_UNINITIALIZED 120 +# define BIO_R_UNKNOWN_INFO_TYPE 140 +# define BIO_R_UNSUPPORTED_IP_FAMILY 146 +# define BIO_R_UNSUPPORTED_METHOD 121 +# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131 +# define BIO_R_WRITE_TO_READ_ONLY_BIO 126 +# define BIO_R_WSASTARTUP 122 + +#endif diff --git a/include/openssl/openssl/bn.h b/include/openssl/openssl/bn.h new file mode 100644 index 00000000..d8776604 --- /dev/null +++ b/include/openssl/openssl/bn.h @@ -0,0 +1,539 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BN_H +# define HEADER_BN_H + +# include +# ifndef OPENSSL_NO_STDIO +# include +# endif +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * 64-bit processor with LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT_LONG +# define BN_ULONG unsigned long +# define BN_BYTES 8 +# endif + +/* + * 64-bit processor other than LP64 ABI + */ +# ifdef SIXTY_FOUR_BIT +# define BN_ULONG unsigned long long +# define BN_BYTES 8 +# endif + +# ifdef THIRTY_TWO_BIT +# define BN_ULONG unsigned int +# define BN_BYTES 4 +# endif + +# define BN_BITS2 (BN_BYTES * 8) +# define BN_BITS (BN_BITS2 * 2) +# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1)) + +# define BN_FLG_MALLOCED 0x01 +# define BN_FLG_STATIC_DATA 0x02 + +/* + * avoid leaking exponent information through timing, + * BN_mod_exp_mont() will call BN_mod_exp_mont_consttime, + * BN_div() will call BN_div_no_branch, + * BN_mod_inverse() will call bn_mod_inverse_no_branch. + */ +# define BN_FLG_CONSTTIME 0x04 +# define BN_FLG_SECURE 0x08 + +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag */ +# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME +# define BN_FLG_FREE 0x8000 /* used for debugging */ +# endif + +void BN_set_flags(BIGNUM *b, int n); +int BN_get_flags(const BIGNUM *b, int n); + +/* Values for |top| in BN_rand() */ +#define BN_RAND_TOP_ANY -1 +#define BN_RAND_TOP_ONE 0 +#define BN_RAND_TOP_TWO 1 + +/* Values for |bottom| in BN_rand() */ +#define BN_RAND_BOTTOM_ANY 0 +#define BN_RAND_BOTTOM_ODD 1 + +/* + * get a clone of a BIGNUM with changed flags, for *temporary* use only (the + * two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The + * value |dest| should be a newly allocated BIGNUM obtained via BN_new() that + * has not been otherwise initialised or used. + */ +void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags); + +/* Wrapper function to make using BN_GENCB easier */ +int BN_GENCB_call(BN_GENCB *cb, int a, int b); + +BN_GENCB *BN_GENCB_new(void); +void BN_GENCB_free(BN_GENCB *cb); + +/* Populate a BN_GENCB structure with an "old"-style callback */ +void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *), + void *cb_arg); + +/* Populate a BN_GENCB structure with a "new"-style callback */ +void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *), + void *cb_arg); + +void *BN_GENCB_get_arg(BN_GENCB *cb); + +# define BN_prime_checks 0 /* default: select number of iterations based + * on the size of the number */ + +/* + * BN_prime_checks_for_size() returns the number of Miller-Rabin iterations + * that will be done for checking that a random number is probably prime. The + * error rate for accepting a composite number as prime depends on the size of + * the prime |b|. The error rates used are for calculating an RSA key with 2 primes, + * and so the level is what you would expect for a key of double the size of the + * prime. + * + * This table is generated using the algorithm of FIPS PUB 186-4 + * Digital Signature Standard (DSS), section F.1, page 117. + * (https://dx.doi.org/10.6028/NIST.FIPS.186-4) + * + * The following magma script was used to generate the output: + * securitybits:=125; + * k:=1024; + * for t:=1 to 65 do + * for M:=3 to Floor(2*Sqrt(k-1)-1) do + * S:=0; + * // Sum over m + * for m:=3 to M do + * s:=0; + * // Sum over j + * for j:=2 to m do + * s+:=(RealField(32)!2)^-(j+(k-1)/j); + * end for; + * S+:=2^(m-(m-1)*t)*s; + * end for; + * A:=2^(k-2-M*t); + * B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S; + * pkt:=2.00743*Log(2)*k*2^-k*(A+B); + * seclevel:=Floor(-Log(2,pkt)); + * if seclevel ge securitybits then + * printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M; + * break; + * end if; + * end for; + * if seclevel ge securitybits then break; end if; + * end for; + * + * It can be run online at: + * http://magma.maths.usyd.edu.au/calc + * + * And will output: + * k: 1024, security: 129 bits (t: 6, M: 23) + * + * k is the number of bits of the prime, securitybits is the level we want to + * reach. + * + * prime length | RSA key size | # MR tests | security level + * -------------+--------------|------------+--------------- + * (b) >= 6394 | >= 12788 | 3 | 256 bit + * (b) >= 3747 | >= 7494 | 3 | 192 bit + * (b) >= 1345 | >= 2690 | 4 | 128 bit + * (b) >= 1080 | >= 2160 | 5 | 128 bit + * (b) >= 852 | >= 1704 | 5 | 112 bit + * (b) >= 476 | >= 952 | 5 | 80 bit + * (b) >= 400 | >= 800 | 6 | 80 bit + * (b) >= 347 | >= 694 | 7 | 80 bit + * (b) >= 308 | >= 616 | 8 | 80 bit + * (b) >= 55 | >= 110 | 27 | 64 bit + * (b) >= 6 | >= 12 | 34 | 64 bit + */ + +# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \ + (b) >= 1345 ? 4 : \ + (b) >= 476 ? 5 : \ + (b) >= 400 ? 6 : \ + (b) >= 347 ? 7 : \ + (b) >= 308 ? 8 : \ + (b) >= 55 ? 27 : \ + /* b >= 6 */ 34) + +# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8) + +int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_zero(const BIGNUM *a); +int BN_is_one(const BIGNUM *a); +int BN_is_word(const BIGNUM *a, const BN_ULONG w); +int BN_is_odd(const BIGNUM *a); + +# define BN_one(a) (BN_set_word((a),1)) + +void BN_zero_ex(BIGNUM *a); + +# if OPENSSL_API_COMPAT >= 0x00908000L +# define BN_zero(a) BN_zero_ex(a) +# else +# define BN_zero(a) (BN_set_word((a),0)) +# endif + +const BIGNUM *BN_value_one(void); +char *BN_options(void); +BN_CTX *BN_CTX_new(void); +BN_CTX *BN_CTX_secure_new(void); +void BN_CTX_free(BN_CTX *c); +void BN_CTX_start(BN_CTX *ctx); +BIGNUM *BN_CTX_get(BN_CTX *ctx); +void BN_CTX_end(BN_CTX *ctx); +int BN_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom); +int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range); +int BN_num_bits(const BIGNUM *a); +int BN_num_bits_word(BN_ULONG l); +int BN_security_bits(int L, int N); +BIGNUM *BN_new(void); +BIGNUM *BN_secure_new(void); +void BN_clear_free(BIGNUM *a); +BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b); +void BN_swap(BIGNUM *a, BIGNUM *b); +BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2bin(const BIGNUM *a, unsigned char *to); +int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen); +BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret); +int BN_bn2mpi(const BIGNUM *a, unsigned char *to); +int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx); +/** BN_set_negative sets sign of a BIGNUM + * \param b pointer to the BIGNUM object + * \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise + */ +void BN_set_negative(BIGNUM *b, int n); +/** BN_is_negative returns 1 if the BIGNUM is negative + * \param b pointer to the BIGNUM object + * \return 1 if a < 0 and 0 otherwise + */ +int BN_is_negative(const BIGNUM *b); + +int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d, + BN_CTX *ctx); +# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx)) +int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx); +int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *m); +int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx); +int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m); +int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m, + BN_CTX *ctx); +int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m); + +BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w); +BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w); +int BN_mul_word(BIGNUM *a, BN_ULONG w); +int BN_add_word(BIGNUM *a, BN_ULONG w); +int BN_sub_word(BIGNUM *a, BN_ULONG w); +int BN_set_word(BIGNUM *a, BN_ULONG w); +BN_ULONG BN_get_word(const BIGNUM *a); + +int BN_cmp(const BIGNUM *a, const BIGNUM *b); +void BN_free(BIGNUM *a); +int BN_is_bit_set(const BIGNUM *a, int n); +int BN_lshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_lshift1(BIGNUM *r, const BIGNUM *a); +int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, + BN_MONT_CTX *in_mont); +int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1, + const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m, + BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); + +int BN_mask_bits(BIGNUM *a, int n); +# ifndef OPENSSL_NO_STDIO +int BN_print_fp(FILE *fp, const BIGNUM *a); +# endif +int BN_print(BIO *bio, const BIGNUM *a); +int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx); +int BN_rshift(BIGNUM *r, const BIGNUM *a, int n); +int BN_rshift1(BIGNUM *r, const BIGNUM *a); +void BN_clear(BIGNUM *a); +BIGNUM *BN_dup(const BIGNUM *a); +int BN_ucmp(const BIGNUM *a, const BIGNUM *b); +int BN_set_bit(BIGNUM *a, int n); +int BN_clear_bit(BIGNUM *a, int n); +char *BN_bn2hex(const BIGNUM *a); +char *BN_bn2dec(const BIGNUM *a); +int BN_hex2bn(BIGNUM **a, const char *str); +int BN_dec2bn(BIGNUM **a, const char *str); +int BN_asc2bn(BIGNUM **a, const char *str); +int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); +int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns + * -2 for + * error */ +BIGNUM *BN_mod_inverse(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); +BIGNUM *BN_mod_sqrt(BIGNUM *ret, + const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx); + +void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords); + +/* Deprecated versions */ +DEPRECATEDIN_0_9_8(BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe, + const BIGNUM *add, + const BIGNUM *rem, + void (*callback) (int, int, + void *), + void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg)) +DEPRECATEDIN_0_9_8(int + BN_is_prime_fasttest(const BIGNUM *p, int nchecks, + void (*callback) (int, int, void *), + BN_CTX *ctx, void *cb_arg, + int do_trial_division)) + +/* Newer versions */ +int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add, + const BIGNUM *rem, BN_GENCB *cb); +int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb); +int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, + int do_trial_division, BN_GENCB *cb); + +int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx); + +int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, + const BIGNUM *Xp, const BIGNUM *Xp1, + const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx, + BN_GENCB *cb); +int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1, + BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e, + BN_CTX *ctx, BN_GENCB *cb); + +BN_MONT_CTX *BN_MONT_CTX_new(void); +int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + BN_MONT_CTX *mont, BN_CTX *ctx); +int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont, + BN_CTX *ctx); +void BN_MONT_CTX_free(BN_MONT_CTX *mont); +int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx); +BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from); +BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock, + const BIGNUM *mod, BN_CTX *ctx); + +/* BN_BLINDING flags */ +# define BN_BLINDING_NO_UPDATE 0x00000001 +# define BN_BLINDING_NO_RECREATE 0x00000002 + +BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod); +void BN_BLINDING_free(BN_BLINDING *b); +int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); +int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); +int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, + BN_CTX *); + +int BN_BLINDING_is_current_thread(BN_BLINDING *b); +void BN_BLINDING_set_current_thread(BN_BLINDING *b); +int BN_BLINDING_lock(BN_BLINDING *b); +int BN_BLINDING_unlock(BN_BLINDING *b); + +unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); +void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); +BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, + const BIGNUM *e, BIGNUM *m, BN_CTX *ctx, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx), + BN_MONT_CTX *m_ctx); + +DEPRECATEDIN_0_9_8(void BN_set_params(int mul, int high, int low, int mont)) +DEPRECATEDIN_0_9_8(int BN_get_params(int which)) /* 0, mul, 1 high, 2 low, 3 + * mont */ + +BN_RECP_CTX *BN_RECP_CTX_new(void); +void BN_RECP_CTX_free(BN_RECP_CTX *recp); +int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx); +int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y, + BN_RECP_CTX *recp, BN_CTX *ctx); +int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx); +int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, + BN_RECP_CTX *recp, BN_CTX *ctx); + +# ifndef OPENSSL_NO_EC2M + +/* + * Functions for arithmetic over binary polynomials represented by BIGNUMs. + * The BIGNUM::neg property of BIGNUMs representing binary polynomials is + * ignored. Note that input arguments are not const so that their bit arrays + * can be expanded to the appropriate size if needed. + */ + +/* + * r = a + b + */ +int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b); +# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b) +/* + * r=a mod p + */ +int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const BIGNUM *p, BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + BN_CTX *ctx); +# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b)) +/*- + * Some functions allow for representation of the irreducible polynomials + * as an unsigned int[], say p. The irreducible f(t) is then of the form: + * t^p[0] + t^p[1] + ... + t^p[k] + * where m = p[0] > p[1] > ... > p[k] = 0. + */ +/* r = a mod p */ +int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]); +/* r = (a * b) mod p */ +int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a * a) mod p */ +int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[], + BN_CTX *ctx); +/* r = (1 / b) mod p */ +int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[], + BN_CTX *ctx); +/* r = (a / b) mod p */ +int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = (a ^ b) mod p */ +int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, + const int p[], BN_CTX *ctx); +/* r = sqrt(a) mod p */ +int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +/* r^2 + r = a mod p */ +int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, + const int p[], BN_CTX *ctx); +int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max); +int BN_GF2m_arr2poly(const int p[], BIGNUM *a); + +# endif + +/* + * faster mod functions for the 'NIST primes' 0 <= a < p^2 + */ +int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); +int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx); + +const BIGNUM *BN_get0_nist_prime_192(void); +const BIGNUM *BN_get0_nist_prime_224(void); +const BIGNUM *BN_get0_nist_prime_256(void); +const BIGNUM *BN_get0_nist_prime_384(void); +const BIGNUM *BN_get0_nist_prime_521(void); + +int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a, + const BIGNUM *field, BN_CTX *ctx); + +int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range, + const BIGNUM *priv, const unsigned char *message, + size_t message_len, BN_CTX *ctx); + +/* Primes from RFC 2409 */ +BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn); +BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn); + +/* Primes from RFC 3526 */ +BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn); +BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768 +# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024 +# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536 +# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048 +# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072 +# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096 +# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144 +# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192 +# endif + +int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/bnerr.h b/include/openssl/openssl/bnerr.h new file mode 100644 index 00000000..9f3c7cfa --- /dev/null +++ b/include/openssl/openssl/bnerr.h @@ -0,0 +1,100 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BNERR_H +# define HEADER_BNERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BN_strings(void); + +/* + * BN function codes. + */ +# define BN_F_BNRAND 127 +# define BN_F_BNRAND_RANGE 138 +# define BN_F_BN_BLINDING_CONVERT_EX 100 +# define BN_F_BN_BLINDING_CREATE_PARAM 128 +# define BN_F_BN_BLINDING_INVERT_EX 101 +# define BN_F_BN_BLINDING_NEW 102 +# define BN_F_BN_BLINDING_UPDATE 103 +# define BN_F_BN_BN2DEC 104 +# define BN_F_BN_BN2HEX 105 +# define BN_F_BN_COMPUTE_WNAF 142 +# define BN_F_BN_CTX_GET 116 +# define BN_F_BN_CTX_NEW 106 +# define BN_F_BN_CTX_START 129 +# define BN_F_BN_DIV 107 +# define BN_F_BN_DIV_RECP 130 +# define BN_F_BN_EXP 123 +# define BN_F_BN_EXPAND_INTERNAL 120 +# define BN_F_BN_GENCB_NEW 143 +# define BN_F_BN_GENERATE_DSA_NONCE 140 +# define BN_F_BN_GENERATE_PRIME_EX 141 +# define BN_F_BN_GF2M_MOD 131 +# define BN_F_BN_GF2M_MOD_EXP 132 +# define BN_F_BN_GF2M_MOD_MUL 133 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD 134 +# define BN_F_BN_GF2M_MOD_SOLVE_QUAD_ARR 135 +# define BN_F_BN_GF2M_MOD_SQR 136 +# define BN_F_BN_GF2M_MOD_SQRT 137 +# define BN_F_BN_LSHIFT 145 +# define BN_F_BN_MOD_EXP2_MONT 118 +# define BN_F_BN_MOD_EXP_MONT 109 +# define BN_F_BN_MOD_EXP_MONT_CONSTTIME 124 +# define BN_F_BN_MOD_EXP_MONT_WORD 117 +# define BN_F_BN_MOD_EXP_RECP 125 +# define BN_F_BN_MOD_EXP_SIMPLE 126 +# define BN_F_BN_MOD_INVERSE 110 +# define BN_F_BN_MOD_INVERSE_NO_BRANCH 139 +# define BN_F_BN_MOD_LSHIFT_QUICK 119 +# define BN_F_BN_MOD_SQRT 121 +# define BN_F_BN_MONT_CTX_NEW 149 +# define BN_F_BN_MPI2BN 112 +# define BN_F_BN_NEW 113 +# define BN_F_BN_POOL_GET 147 +# define BN_F_BN_RAND 114 +# define BN_F_BN_RAND_RANGE 122 +# define BN_F_BN_RECP_CTX_NEW 150 +# define BN_F_BN_RSHIFT 146 +# define BN_F_BN_SET_WORDS 144 +# define BN_F_BN_STACK_PUSH 148 +# define BN_F_BN_USUB 115 + +/* + * BN reason codes. + */ +# define BN_R_ARG2_LT_ARG3 100 +# define BN_R_BAD_RECIPROCAL 101 +# define BN_R_BIGNUM_TOO_LONG 114 +# define BN_R_BITS_TOO_SMALL 118 +# define BN_R_CALLED_WITH_EVEN_MODULUS 102 +# define BN_R_DIV_BY_ZERO 103 +# define BN_R_ENCODING_ERROR 104 +# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105 +# define BN_R_INPUT_NOT_REDUCED 110 +# define BN_R_INVALID_LENGTH 106 +# define BN_R_INVALID_RANGE 115 +# define BN_R_INVALID_SHIFT 119 +# define BN_R_NOT_A_SQUARE 111 +# define BN_R_NOT_INITIALIZED 107 +# define BN_R_NO_INVERSE 108 +# define BN_R_NO_SOLUTION 116 +# define BN_R_PRIVATE_KEY_TOO_LARGE 117 +# define BN_R_P_IS_NOT_PRIME 112 +# define BN_R_TOO_MANY_ITERATIONS 113 +# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109 + +#endif diff --git a/include/openssl/openssl/buffer.h b/include/openssl/openssl/buffer.h new file mode 100644 index 00000000..d2765766 --- /dev/null +++ b/include/openssl/openssl/buffer.h @@ -0,0 +1,58 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFFER_H +# define HEADER_BUFFER_H + +# include +# ifndef HEADER_CRYPTO_H +# include +# endif +# include + + +#ifdef __cplusplus +extern "C" { +#endif + +# include +# include + +/* + * These names are outdated as of OpenSSL 1.1; a future release + * will move them to be deprecated. + */ +# define BUF_strdup(s) OPENSSL_strdup(s) +# define BUF_strndup(s, size) OPENSSL_strndup(s, size) +# define BUF_memdup(data, size) OPENSSL_memdup(data, size) +# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size) +# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size) +# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen) + +struct buf_mem_st { + size_t length; /* current number of bytes */ + char *data; + size_t max; /* size of buffer */ + unsigned long flags; +}; + +# define BUF_MEM_FLAG_SECURE 0x01 + +BUF_MEM *BUF_MEM_new(void); +BUF_MEM *BUF_MEM_new_ex(unsigned long flags); +void BUF_MEM_free(BUF_MEM *a); +size_t BUF_MEM_grow(BUF_MEM *str, size_t len); +size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len); +void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/buffererr.h b/include/openssl/openssl/buffererr.h new file mode 100644 index 00000000..04f6ff7a --- /dev/null +++ b/include/openssl/openssl/buffererr.h @@ -0,0 +1,34 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_BUFERR_H +# define HEADER_BUFERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_BUF_strings(void); + +/* + * BUF function codes. + */ +# define BUF_F_BUF_MEM_GROW 100 +# define BUF_F_BUF_MEM_GROW_CLEAN 105 +# define BUF_F_BUF_MEM_NEW 101 + +/* + * BUF reason codes. + */ + +#endif diff --git a/include/openssl/openssl/comp.h b/include/openssl/openssl/comp.h new file mode 100644 index 00000000..d814d3cf --- /dev/null +++ b/include/openssl/openssl/comp.h @@ -0,0 +1,53 @@ +/* + * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMP_H +# define HEADER_COMP_H + +# include + +# ifndef OPENSSL_NO_COMP +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + + +COMP_CTX *COMP_CTX_new(COMP_METHOD *meth); +const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx); +int COMP_CTX_get_type(const COMP_CTX* comp); +int COMP_get_type(const COMP_METHOD *meth); +const char *COMP_get_name(const COMP_METHOD *meth); +void COMP_CTX_free(COMP_CTX *ctx); + +int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); +int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen, + unsigned char *in, int ilen); + +COMP_METHOD *COMP_zlib(void); + +#if OPENSSL_API_COMPAT < 0x10100000L +#define COMP_zlib_cleanup() while(0) continue +#endif + +# ifdef HEADER_BIO_H +# ifdef ZLIB +const BIO_METHOD *BIO_f_zlib(void); +# endif +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/comperr.h b/include/openssl/openssl/comperr.h new file mode 100644 index 00000000..90231e9a --- /dev/null +++ b/include/openssl/openssl/comperr.h @@ -0,0 +1,44 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_COMPERR_H +# define HEADER_COMPERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_COMP + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_COMP_strings(void); + +/* + * COMP function codes. + */ +# define COMP_F_BIO_ZLIB_FLUSH 99 +# define COMP_F_BIO_ZLIB_NEW 100 +# define COMP_F_BIO_ZLIB_READ 101 +# define COMP_F_BIO_ZLIB_WRITE 102 +# define COMP_F_COMP_CTX_NEW 103 + +/* + * COMP reason codes. + */ +# define COMP_R_ZLIB_DEFLATE_ERROR 99 +# define COMP_R_ZLIB_INFLATE_ERROR 100 +# define COMP_R_ZLIB_NOT_SUPPORTED 101 + +# endif +#endif diff --git a/include/openssl/openssl/crypto.h b/include/openssl/openssl/crypto.h new file mode 100644 index 00000000..7d0b5262 --- /dev/null +++ b/include/openssl/openssl/crypto.h @@ -0,0 +1,445 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTO_H +# define HEADER_CRYPTO_H + +# include +# include + +# include + +# ifndef OPENSSL_NO_STDIO +# include +# endif + +# include +# include +# include +# include +# include + +# ifdef CHARSET_EBCDIC +# include +# endif + +/* + * Resolve problems on some operating systems with symbol names that clash + * one way or another + */ +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSLeay OpenSSL_version_num +# define SSLeay_version OpenSSL_version +# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER +# define SSLEAY_VERSION OPENSSL_VERSION +# define SSLEAY_CFLAGS OPENSSL_CFLAGS +# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON +# define SSLEAY_PLATFORM OPENSSL_PLATFORM +# define SSLEAY_DIR OPENSSL_DIR + +/* + * Old type for allocating dynamic locks. No longer used. Use the new thread + * API instead. + */ +typedef struct { + int dummy; +} CRYPTO_dynlock; + +# endif /* OPENSSL_API_COMPAT */ + +typedef void CRYPTO_RWLOCK; + +CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); +int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock); +int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock); +void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock); + +int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock); + +/* + * The following can be used to detect memory leaks in the library. If + * used, it turns on malloc checking + */ +# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */ +# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */ +# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */ + +struct crypto_ex_data_st { + STACK_OF(void) *sk; +}; +DEFINE_STACK_OF(void) + +/* + * Per class, we have a STACK of function pointers. + */ +# define CRYPTO_EX_INDEX_SSL 0 +# define CRYPTO_EX_INDEX_SSL_CTX 1 +# define CRYPTO_EX_INDEX_SSL_SESSION 2 +# define CRYPTO_EX_INDEX_X509 3 +# define CRYPTO_EX_INDEX_X509_STORE 4 +# define CRYPTO_EX_INDEX_X509_STORE_CTX 5 +# define CRYPTO_EX_INDEX_DH 6 +# define CRYPTO_EX_INDEX_DSA 7 +# define CRYPTO_EX_INDEX_EC_KEY 8 +# define CRYPTO_EX_INDEX_RSA 9 +# define CRYPTO_EX_INDEX_ENGINE 10 +# define CRYPTO_EX_INDEX_UI 11 +# define CRYPTO_EX_INDEX_BIO 12 +# define CRYPTO_EX_INDEX_APP 13 +# define CRYPTO_EX_INDEX_UI_METHOD 14 +# define CRYPTO_EX_INDEX_DRBG 15 +# define CRYPTO_EX_INDEX__COUNT 16 + +/* No longer needed, so this is a no-op */ +#define OPENSSL_malloc_init() while(0) continue + +int CRYPTO_mem_ctrl(int mode); + +# define OPENSSL_malloc(num) \ + CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_zalloc(num) \ + CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_realloc(addr, num) \ + CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_realloc(addr, old_num, num) \ + CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_clear_free(addr, num) \ + CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_free(addr) \ + CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_memdup(str, s) \ + CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strdup(str) \ + CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_strndup(str, n) \ + CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_malloc(num) \ + CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_zalloc(num) \ + CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_free(addr) \ + CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_clear_free(addr, num) \ + CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_secure_actual_size(ptr) \ + CRYPTO_secure_actual_size(ptr) + +size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz); +size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz); +size_t OPENSSL_strnlen(const char *str, size_t maxlen); +char *OPENSSL_buf2hexstr(const unsigned char *buffer, long len); +unsigned char *OPENSSL_hexstr2buf(const char *str, long *len); +int OPENSSL_hexchar2int(unsigned char c); + +# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) + +unsigned long OpenSSL_version_num(void); +const char *OpenSSL_version(int type); +# define OPENSSL_VERSION 0 +# define OPENSSL_CFLAGS 1 +# define OPENSSL_BUILT_ON 2 +# define OPENSSL_PLATFORM 3 +# define OPENSSL_DIR 4 +# define OPENSSL_ENGINES_DIR 5 + +int OPENSSL_issetugid(void); + +typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad, + int idx, long argl, void *argp); +typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from, + void *from_d, int idx, long argl, void *argp); +__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp, + CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, + CRYPTO_EX_free *free_func); +/* No longer use an index. */ +int CRYPTO_free_ex_index(int class_index, int idx); + +/* + * Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a + * given class (invokes whatever per-class callbacks are applicable) + */ +int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); +int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to, + const CRYPTO_EX_DATA *from); + +void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad); + +/* + * Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular + * index (relative to the class type involved) + */ +int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val); +void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx); + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * This function cleans up all "ex_data" state. It mustn't be called under + * potential race-conditions. + */ +# define CRYPTO_cleanup_all_ex_data() while(0) continue + +/* + * The old locking functions have been removed completely without compatibility + * macros. This is because the old functions either could not properly report + * errors, or the returned error values were not clearly documented. + * Replacing the locking functions with no-ops would cause race condition + * issues in the affected applications. It is far better for them to fail at + * compile time. + * On the other hand, the locking callbacks are no longer used. Consequently, + * the callback management functions can be safely replaced with no-op macros. + */ +# define CRYPTO_num_locks() (1) +# define CRYPTO_set_locking_callback(func) +# define CRYPTO_get_locking_callback() (NULL) +# define CRYPTO_set_add_lock_callback(func) +# define CRYPTO_get_add_lock_callback() (NULL) + +/* + * These defines where used in combination with the old locking callbacks, + * they are not called anymore, but old code that's not called might still + * use them. + */ +# define CRYPTO_LOCK 1 +# define CRYPTO_UNLOCK 2 +# define CRYPTO_READ 4 +# define CRYPTO_WRITE 8 + +/* This structure is no longer used */ +typedef struct crypto_threadid_st { + int dummy; +} CRYPTO_THREADID; +/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */ +# define CRYPTO_THREADID_set_numeric(id, val) +# define CRYPTO_THREADID_set_pointer(id, ptr) +# define CRYPTO_THREADID_set_callback(threadid_func) (0) +# define CRYPTO_THREADID_get_callback() (NULL) +# define CRYPTO_THREADID_current(id) +# define CRYPTO_THREADID_cmp(a, b) (-1) +# define CRYPTO_THREADID_cpy(dest, src) +# define CRYPTO_THREADID_hash(id) (0UL) + +# if OPENSSL_API_COMPAT < 0x10000000L +# define CRYPTO_set_id_callback(func) +# define CRYPTO_get_id_callback() (NULL) +# define CRYPTO_thread_id() (0UL) +# endif /* OPENSSL_API_COMPAT < 0x10000000L */ + +# define CRYPTO_set_dynlock_create_callback(dyn_create_function) +# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function) +# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function) +# define CRYPTO_get_dynlock_create_callback() (NULL) +# define CRYPTO_get_dynlock_lock_callback() (NULL) +# define CRYPTO_get_dynlock_destroy_callback() (NULL) +# endif /* OPENSSL_API_COMPAT < 0x10100000L */ + +int CRYPTO_set_mem_functions( + void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), + void (*f) (void *, const char *, int)); +int CRYPTO_set_mem_debug(int flag); +void CRYPTO_get_mem_functions( + void *(**m) (size_t, const char *, int), + void *(**r) (void *, size_t, const char *, int), + void (**f) (void *, const char *, int)); + +void *CRYPTO_malloc(size_t num, const char *file, int line); +void *CRYPTO_zalloc(size_t num, const char *file, int line); +void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line); +char *CRYPTO_strdup(const char *str, const char *file, int line); +char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line); +void CRYPTO_free(void *ptr, const char *file, int line); +void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line); +void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line); +void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num, + const char *file, int line); + +int CRYPTO_secure_malloc_init(size_t sz, int minsize); +int CRYPTO_secure_malloc_done(void); +void *CRYPTO_secure_malloc(size_t num, const char *file, int line); +void *CRYPTO_secure_zalloc(size_t num, const char *file, int line); +void CRYPTO_secure_free(void *ptr, const char *file, int line); +void CRYPTO_secure_clear_free(void *ptr, size_t num, + const char *file, int line); +int CRYPTO_secure_allocated(const void *ptr); +int CRYPTO_secure_malloc_initialized(void); +size_t CRYPTO_secure_actual_size(void *ptr); +size_t CRYPTO_secure_used(void); + +void OPENSSL_cleanse(void *ptr, size_t len); + +# ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_mem_debug_push(info) \ + CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) +# define OPENSSL_mem_debug_pop() \ + CRYPTO_mem_debug_pop() +int CRYPTO_mem_debug_push(const char *info, const char *file, int line); +int CRYPTO_mem_debug_pop(void); +void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); + +/*- + * Debugging functions (enabled by CRYPTO_set_mem_debug(1)) + * The flag argument has the following significance: + * 0: called before the actual memory allocation has taken place + * 1: called after the actual memory allocation has taken place + */ +void CRYPTO_mem_debug_malloc(void *addr, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num, int flag, + const char *file, int line); +void CRYPTO_mem_debug_free(void *addr, int flag, + const char *file, int line); + +int CRYPTO_mem_leaks_cb(int (*cb) (const char *str, size_t len, void *u), + void *u); +# ifndef OPENSSL_NO_STDIO +int CRYPTO_mem_leaks_fp(FILE *); +# endif +int CRYPTO_mem_leaks(BIO *bio); +# endif + +/* die if we have to */ +ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l)) +# endif +# define OPENSSL_assert(e) \ + (void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1)) + +int OPENSSL_isservice(void); + +int FIPS_mode(void); +int FIPS_mode_set(int r); + +void OPENSSL_init(void); +# ifdef OPENSSL_SYS_UNIX +void OPENSSL_fork_prepare(void); +void OPENSSL_fork_parent(void); +void OPENSSL_fork_child(void); +# endif + +struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); +int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec); +int OPENSSL_gmtime_diff(int *pday, int *psec, + const struct tm *from, const struct tm *to); + +/* + * CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal. + * It takes an amount of time dependent on |len|, but independent of the + * contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements + * into a defined order as the return value when a != b is undefined, other + * than to be non-zero. + */ +int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len); + +/* Standard initialisation options */ +# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L +# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L +# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L +# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L +# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L +# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L +# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L +# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L +# define OPENSSL_INIT_ASYNC 0x00000100L +# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L +# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L +# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L +# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L +# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L +# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L +# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L +/* OPENSSL_INIT_ZLIB 0x00010000L */ +# define OPENSSL_INIT_ATFORK 0x00020000L +/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ +# define OPENSSL_INIT_NO_ATEXIT 0x00080000L +/* OPENSSL_INIT flag range 0xfff00000 reserved for OPENSSL_init_ssl() */ +/* Max OPENSSL_INIT flag value is 0x80000000 */ + +/* openssl and dasync not counted as builtin */ +# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \ + (OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \ + | OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \ + OPENSSL_INIT_ENGINE_PADLOCK) + + +/* Library initialisation functions */ +void OPENSSL_cleanup(void); +int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); +int OPENSSL_atexit(void (*handler)(void)); +void OPENSSL_thread_stop(void); + +/* Low-level control of initialization */ +OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void); +# ifndef OPENSSL_NO_STDIO +int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings, + const char *config_filename); +void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings, + unsigned long flags); +int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings, + const char *config_appname); +# endif +void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings); + +# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG) +# if defined(_WIN32) +# if defined(BASETYPES) || defined(_WINDEF_H) +/* application has to include in order to use this */ +typedef DWORD CRYPTO_THREAD_LOCAL; +typedef DWORD CRYPTO_THREAD_ID; + +typedef LONG CRYPTO_ONCE; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif +# else +# include +typedef pthread_once_t CRYPTO_ONCE; +typedef pthread_key_t CRYPTO_THREAD_LOCAL; +typedef pthread_t CRYPTO_THREAD_ID; + +# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT +# endif +# endif + +# if !defined(CRYPTO_ONCE_STATIC_INIT) +typedef unsigned int CRYPTO_ONCE; +typedef unsigned int CRYPTO_THREAD_LOCAL; +typedef unsigned int CRYPTO_THREAD_ID; +# define CRYPTO_ONCE_STATIC_INIT 0 +# endif + +int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void)); + +int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *)); +void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key); +int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val); +int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key); + +CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void); +int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/cryptoerr.h b/include/openssl/openssl/cryptoerr.h new file mode 100644 index 00000000..3db5a4ee --- /dev/null +++ b/include/openssl/openssl/cryptoerr.h @@ -0,0 +1,57 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CRYPTOERR_H +# define HEADER_CRYPTOERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CRYPTO_strings(void); + +/* + * CRYPTO function codes. + */ +# define CRYPTO_F_CMAC_CTX_NEW 120 +# define CRYPTO_F_CRYPTO_DUP_EX_DATA 110 +# define CRYPTO_F_CRYPTO_FREE_EX_DATA 111 +# define CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX 100 +# define CRYPTO_F_CRYPTO_MEMDUP 115 +# define CRYPTO_F_CRYPTO_NEW_EX_DATA 112 +# define CRYPTO_F_CRYPTO_OCB128_COPY_CTX 121 +# define CRYPTO_F_CRYPTO_OCB128_INIT 122 +# define CRYPTO_F_CRYPTO_SET_EX_DATA 102 +# define CRYPTO_F_FIPS_MODE_SET 109 +# define CRYPTO_F_GET_AND_LOCK 113 +# define CRYPTO_F_OPENSSL_ATEXIT 114 +# define CRYPTO_F_OPENSSL_BUF2HEXSTR 117 +# define CRYPTO_F_OPENSSL_FOPEN 119 +# define CRYPTO_F_OPENSSL_HEXSTR2BUF 118 +# define CRYPTO_F_OPENSSL_INIT_CRYPTO 116 +# define CRYPTO_F_OPENSSL_LH_NEW 126 +# define CRYPTO_F_OPENSSL_SK_DEEP_COPY 127 +# define CRYPTO_F_OPENSSL_SK_DUP 128 +# define CRYPTO_F_PKEY_HMAC_INIT 123 +# define CRYPTO_F_PKEY_POLY1305_INIT 124 +# define CRYPTO_F_PKEY_SIPHASH_INIT 125 +# define CRYPTO_F_SK_RESERVE 129 + +/* + * CRYPTO reason codes. + */ +# define CRYPTO_R_FIPS_MODE_NOT_SUPPORTED 101 +# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102 +# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103 + +#endif diff --git a/include/openssl/openssl/ct.h b/include/openssl/openssl/ct.h new file mode 100644 index 00000000..ebdba34d --- /dev/null +++ b/include/openssl/openssl/ct.h @@ -0,0 +1,474 @@ +/* + * Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CT_H +# define HEADER_CT_H + +# include + +# ifndef OPENSSL_NO_CT +# include +# include +# include +# include +# ifdef __cplusplus +extern "C" { +# endif + + +/* Minimum RSA key size, from RFC6962 */ +# define SCT_MIN_RSA_BITS 2048 + +/* All hashes are SHA256 in v1 of Certificate Transparency */ +# define CT_V1_HASHLEN SHA256_DIGEST_LENGTH + +typedef enum { + CT_LOG_ENTRY_TYPE_NOT_SET = -1, + CT_LOG_ENTRY_TYPE_X509 = 0, + CT_LOG_ENTRY_TYPE_PRECERT = 1 +} ct_log_entry_type_t; + +typedef enum { + SCT_VERSION_NOT_SET = -1, + SCT_VERSION_V1 = 0 +} sct_version_t; + +typedef enum { + SCT_SOURCE_UNKNOWN, + SCT_SOURCE_TLS_EXTENSION, + SCT_SOURCE_X509V3_EXTENSION, + SCT_SOURCE_OCSP_STAPLED_RESPONSE +} sct_source_t; + +typedef enum { + SCT_VALIDATION_STATUS_NOT_SET, + SCT_VALIDATION_STATUS_UNKNOWN_LOG, + SCT_VALIDATION_STATUS_VALID, + SCT_VALIDATION_STATUS_INVALID, + SCT_VALIDATION_STATUS_UNVERIFIED, + SCT_VALIDATION_STATUS_UNKNOWN_VERSION +} sct_validation_status_t; + +DEFINE_STACK_OF(SCT) +DEFINE_STACK_OF(CTLOG) + +/****************************************** + * CT policy evaluation context functions * + ******************************************/ + +/* + * Creates a new, empty policy evaluation context. + * The caller is responsible for calling CT_POLICY_EVAL_CTX_free when finished + * with the CT_POLICY_EVAL_CTX. + */ +CT_POLICY_EVAL_CTX *CT_POLICY_EVAL_CTX_new(void); + +/* Deletes a policy evaluation context and anything it owns. */ +void CT_POLICY_EVAL_CTX_free(CT_POLICY_EVAL_CTX *ctx); + +/* Gets the peer certificate that the SCTs are for */ +X509* CT_POLICY_EVAL_CTX_get0_cert(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the certificate associated with the received SCTs. + * Increments the reference count of cert. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_cert(CT_POLICY_EVAL_CTX *ctx, X509 *cert); + +/* Gets the issuer of the aforementioned certificate */ +X509* CT_POLICY_EVAL_CTX_get0_issuer(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the issuer of the certificate associated with the received SCTs. + * Increments the reference count of issuer. + * Returns 1 on success, 0 otherwise. + */ +int CT_POLICY_EVAL_CTX_set1_issuer(CT_POLICY_EVAL_CTX *ctx, X509 *issuer); + +/* Gets the CT logs that are trusted sources of SCTs */ +const CTLOG_STORE *CT_POLICY_EVAL_CTX_get0_log_store(const CT_POLICY_EVAL_CTX *ctx); + +/* Sets the log store that is in use. It must outlive the CT_POLICY_EVAL_CTX. */ +void CT_POLICY_EVAL_CTX_set_shared_CTLOG_STORE(CT_POLICY_EVAL_CTX *ctx, + CTLOG_STORE *log_store); + +/* + * Gets the time, in milliseconds since the Unix epoch, that will be used as the + * current time when checking whether an SCT was issued in the future. + * Such SCTs will fail validation, as required by RFC6962. + */ +uint64_t CT_POLICY_EVAL_CTX_get_time(const CT_POLICY_EVAL_CTX *ctx); + +/* + * Sets the time to evaluate SCTs against, in milliseconds since the Unix epoch. + * If an SCT's timestamp is after this time, it will be interpreted as having + * been issued in the future. RFC6962 states that "TLS clients MUST reject SCTs + * whose timestamp is in the future", so an SCT will not validate in this case. + */ +void CT_POLICY_EVAL_CTX_set_time(CT_POLICY_EVAL_CTX *ctx, uint64_t time_in_ms); + +/***************** + * SCT functions * + *****************/ + +/* + * Creates a new, blank SCT. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new(void); + +/* + * Creates a new SCT from some base64-encoded strings. + * The caller is responsible for calling SCT_free when finished with the SCT. + */ +SCT *SCT_new_from_base64(unsigned char version, + const char *logid_base64, + ct_log_entry_type_t entry_type, + uint64_t timestamp, + const char *extensions_base64, + const char *signature_base64); + +/* + * Frees the SCT and the underlying data structures. + */ +void SCT_free(SCT *sct); + +/* + * Free a stack of SCTs, and the underlying SCTs themselves. + * Intended to be compatible with X509V3_EXT_FREE. + */ +void SCT_LIST_free(STACK_OF(SCT) *a); + +/* + * Returns the version of the SCT. + */ +sct_version_t SCT_get_version(const SCT *sct); + +/* + * Set the version of an SCT. + * Returns 1 on success, 0 if the version is unrecognized. + */ +__owur int SCT_set_version(SCT *sct, sct_version_t version); + +/* + * Returns the log entry type of the SCT. + */ +ct_log_entry_type_t SCT_get_log_entry_type(const SCT *sct); + +/* + * Set the log entry type of an SCT. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_log_entry_type(SCT *sct, ct_log_entry_type_t entry_type); + +/* + * Gets the ID of the log that an SCT came from. + * Ownership of the log ID remains with the SCT. + * Returns the length of the log ID. + */ +size_t SCT_get0_log_id(const SCT *sct, unsigned char **log_id); + +/* + * Set the log ID of an SCT to point directly to the *log_id specified. + * The SCT takes ownership of the specified pointer. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set0_log_id(SCT *sct, unsigned char *log_id, size_t log_id_len); + +/* + * Set the log ID of an SCT. + * This makes a copy of the log_id. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_log_id(SCT *sct, const unsigned char *log_id, + size_t log_id_len); + +/* + * Returns the timestamp for the SCT (epoch time in milliseconds). + */ +uint64_t SCT_get_timestamp(const SCT *sct); + +/* + * Set the timestamp of an SCT (epoch time in milliseconds). + */ +void SCT_set_timestamp(SCT *sct, uint64_t timestamp); + +/* + * Return the NID for the signature used by the SCT. + * For CT v1, this will be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256 (or NID_undef if incorrect/unset). + */ +int SCT_get_signature_nid(const SCT *sct); + +/* + * Set the signature type of an SCT + * For CT v1, this should be either NID_sha256WithRSAEncryption or + * NID_ecdsa_with_SHA256. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_signature_nid(SCT *sct, int nid); + +/* + * Set *ext to point to the extension data for the SCT. ext must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_extensions(const SCT *sct, unsigned char **ext); + +/* + * Set the extensions of an SCT to point directly to the *ext specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_extensions(SCT *sct, unsigned char *ext, size_t ext_len); + +/* + * Set the extensions of an SCT. + * This takes a copy of the ext. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_extensions(SCT *sct, const unsigned char *ext, + size_t ext_len); + +/* + * Set *sig to point to the signature for the SCT. sig must not be NULL. + * The SCT retains ownership of this pointer. + * Returns length of the data pointed to. + */ +size_t SCT_get0_signature(const SCT *sct, unsigned char **sig); + +/* + * Set the signature of an SCT to point directly to the *sig specified. + * The SCT takes ownership of the specified pointer. + */ +void SCT_set0_signature(SCT *sct, unsigned char *sig, size_t sig_len); + +/* + * Set the signature of an SCT to be a copy of the *sig specified. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set1_signature(SCT *sct, const unsigned char *sig, + size_t sig_len); + +/* + * The origin of this SCT, e.g. TLS extension, OCSP response, etc. + */ +sct_source_t SCT_get_source(const SCT *sct); + +/* + * Set the origin of this SCT, e.g. TLS extension, OCSP response, etc. + * Returns 1 on success, 0 otherwise. + */ +__owur int SCT_set_source(SCT *sct, sct_source_t source); + +/* + * Returns a text string describing the validation status of |sct|. + */ +const char *SCT_validation_status_string(const SCT *sct); + +/* + * Pretty-prints an |sct| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * If |logs| is not NULL, it will be used to lookup the CT log that the SCT came + * from, so that the log name can be printed. + */ +void SCT_print(const SCT *sct, BIO *out, int indent, const CTLOG_STORE *logs); + +/* + * Pretty-prints an |sct_list| to |out|. + * It will be indented by the number of spaces specified by |indent|. + * SCTs will be delimited by |separator|. + * If |logs| is not NULL, it will be used to lookup the CT log that each SCT + * came from, so that the log names can be printed. + */ +void SCT_LIST_print(const STACK_OF(SCT) *sct_list, BIO *out, int indent, + const char *separator, const CTLOG_STORE *logs); + +/* + * Gets the last result of validating this SCT. + * If it has not been validated yet, returns SCT_VALIDATION_STATUS_NOT_SET. + */ +sct_validation_status_t SCT_get_validation_status(const SCT *sct); + +/* + * Validates the given SCT with the provided context. + * Sets the "validation_status" field of the SCT. + * Returns 1 if the SCT is valid and the signature verifies. + * Returns 0 if the SCT is invalid or could not be verified. + * Returns -1 if an error occurs. + */ +__owur int SCT_validate(SCT *sct, const CT_POLICY_EVAL_CTX *ctx); + +/* + * Validates the given list of SCTs with the provided context. + * Sets the "validation_status" field of each SCT. + * Returns 1 if there are no invalid SCTs and all signatures verify. + * Returns 0 if at least one SCT is invalid or could not be verified. + * Returns a negative integer if an error occurs. + */ +__owur int SCT_LIST_validate(const STACK_OF(SCT) *scts, + CT_POLICY_EVAL_CTX *ctx); + + +/********************************* + * SCT parsing and serialisation * + *********************************/ + +/* + * Serialize (to TLS format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just return the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2o_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Convert TLS format SCT list to a stack of SCTs. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *o2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + size_t len); + +/* + * Serialize (to DER format) a stack of SCTs and return the length. + * "a" must not be NULL. + * If "pp" is NULL, just returns the length of what would have been serialized. + * If "pp" is not NULL and "*pp" is null, function will allocate a new pointer + * for data that caller is responsible for freeing (only if function returns + * successfully). + * If "pp" is NULL and "*pp" is not NULL, caller is responsible for ensuring + * that "*pp" is large enough to accept all of the serialized data. + * Returns < 0 on error, >= 0 indicating bytes written (or would have been) + * on success. + */ +__owur int i2d_SCT_LIST(const STACK_OF(SCT) *a, unsigned char **pp); + +/* + * Parses an SCT list in DER format and returns it. + * If "a" or "*a" is NULL, a new stack will be created that the caller is + * responsible for freeing (by calling SCT_LIST_free). + * "**pp" and "*pp" must not be NULL. + * Upon success, "*pp" will point to after the last bytes read, and a stack + * will be returned. + * Upon failure, a NULL pointer will be returned, and the position of "*pp" is + * not defined. + */ +STACK_OF(SCT) *d2i_SCT_LIST(STACK_OF(SCT) **a, const unsigned char **pp, + long len); + +/* + * Serialize (to TLS format) an |sct| and write it to |out|. + * If |out| is null, no SCT will be output but the length will still be returned. + * If |out| points to a null pointer, a string will be allocated to hold the + * TLS-format SCT. It is the responsibility of the caller to free it. + * If |out| points to an allocated string, the TLS-format SCT will be written + * to it. + * The length of the SCT in TLS format will be returned. + */ +__owur int i2o_SCT(const SCT *sct, unsigned char **out); + +/* + * Parses an SCT in TLS format and returns it. + * If |psct| is not null, it will end up pointing to the parsed SCT. If it + * already points to a non-null pointer, the pointer will be free'd. + * |in| should be a pointer to a string containing the TLS-format SCT. + * |in| will be advanced to the end of the SCT if parsing succeeds. + * |len| should be the length of the SCT in |in|. + * Returns NULL if an error occurs. + * If the SCT is an unsupported version, only the SCT's 'sct' and 'sct_len' + * fields will be populated (with |in| and |len| respectively). + */ +SCT *o2i_SCT(SCT **psct, const unsigned char **in, size_t len); + +/******************** + * CT log functions * + ********************/ + +/* + * Creates a new CT log instance with the given |public_key| and |name|. + * Takes ownership of |public_key| but copies |name|. + * Returns NULL if malloc fails or if |public_key| cannot be converted to DER. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); + +/* + * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER + * in |pkey_base64|. The |name| is a string to help users identify this log. + * Returns 1 on success, 0 on failure. + * Should be deleted by the caller using CTLOG_free when no longer needed. + */ +int CTLOG_new_from_base64(CTLOG ** ct_log, + const char *pkey_base64, const char *name); + +/* + * Deletes a CT log instance and its fields. + */ +void CTLOG_free(CTLOG *log); + +/* Gets the name of the CT log */ +const char *CTLOG_get0_name(const CTLOG *log); +/* Gets the ID of the CT log */ +void CTLOG_get0_log_id(const CTLOG *log, const uint8_t **log_id, + size_t *log_id_len); +/* Gets the public key of the CT log */ +EVP_PKEY *CTLOG_get0_public_key(const CTLOG *log); + +/************************** + * CT log store functions * + **************************/ + +/* + * Creates a new CT log store. + * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. + */ +CTLOG_STORE *CTLOG_STORE_new(void); + +/* + * Deletes a CT log store and all of the CT log instances held within. + */ +void CTLOG_STORE_free(CTLOG_STORE *store); + +/* + * Finds a CT log in the store based on its log ID. + * Returns the CT log, or NULL if no match is found. + */ +const CTLOG *CTLOG_STORE_get0_log_by_id(const CTLOG_STORE *store, + const uint8_t *log_id, + size_t log_id_len); + +/* + * Loads a CT log list into a |store| from a |file|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_file(CTLOG_STORE *store, const char *file); + +/* + * Loads the default CT log list into a |store|. + * Returns 1 if loading is successful, or 0 otherwise. + */ +__owur int CTLOG_STORE_load_default_file(CTLOG_STORE *store); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/cterr.h b/include/openssl/openssl/cterr.h new file mode 100644 index 00000000..feb7bc56 --- /dev/null +++ b/include/openssl/openssl/cterr.h @@ -0,0 +1,80 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_CTERR_H +# define HEADER_CTERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_CT + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_CT_strings(void); + +/* + * CT function codes. + */ +# define CT_F_CTLOG_NEW 117 +# define CT_F_CTLOG_NEW_FROM_BASE64 118 +# define CT_F_CTLOG_NEW_FROM_CONF 119 +# define CT_F_CTLOG_STORE_LOAD_CTX_NEW 122 +# define CT_F_CTLOG_STORE_LOAD_FILE 123 +# define CT_F_CTLOG_STORE_LOAD_LOG 130 +# define CT_F_CTLOG_STORE_NEW 131 +# define CT_F_CT_BASE64_DECODE 124 +# define CT_F_CT_POLICY_EVAL_CTX_NEW 133 +# define CT_F_CT_V1_LOG_ID_FROM_PKEY 125 +# define CT_F_I2O_SCT 107 +# define CT_F_I2O_SCT_LIST 108 +# define CT_F_I2O_SCT_SIGNATURE 109 +# define CT_F_O2I_SCT 110 +# define CT_F_O2I_SCT_LIST 111 +# define CT_F_O2I_SCT_SIGNATURE 112 +# define CT_F_SCT_CTX_NEW 126 +# define CT_F_SCT_CTX_VERIFY 128 +# define CT_F_SCT_NEW 100 +# define CT_F_SCT_NEW_FROM_BASE64 127 +# define CT_F_SCT_SET0_LOG_ID 101 +# define CT_F_SCT_SET1_EXTENSIONS 114 +# define CT_F_SCT_SET1_LOG_ID 115 +# define CT_F_SCT_SET1_SIGNATURE 116 +# define CT_F_SCT_SET_LOG_ENTRY_TYPE 102 +# define CT_F_SCT_SET_SIGNATURE_NID 103 +# define CT_F_SCT_SET_VERSION 104 + +/* + * CT reason codes. + */ +# define CT_R_BASE64_DECODE_ERROR 108 +# define CT_R_INVALID_LOG_ID_LENGTH 100 +# define CT_R_LOG_CONF_INVALID 109 +# define CT_R_LOG_CONF_INVALID_KEY 110 +# define CT_R_LOG_CONF_MISSING_DESCRIPTION 111 +# define CT_R_LOG_CONF_MISSING_KEY 112 +# define CT_R_LOG_KEY_INVALID 113 +# define CT_R_SCT_FUTURE_TIMESTAMP 116 +# define CT_R_SCT_INVALID 104 +# define CT_R_SCT_INVALID_SIGNATURE 107 +# define CT_R_SCT_LIST_INVALID 105 +# define CT_R_SCT_LOG_ID_MISMATCH 114 +# define CT_R_SCT_NOT_SET 106 +# define CT_R_SCT_UNSUPPORTED_VERSION 115 +# define CT_R_UNRECOGNIZED_SIGNATURE_NID 101 +# define CT_R_UNSUPPORTED_ENTRY_TYPE 102 +# define CT_R_UNSUPPORTED_VERSION 103 + +# endif +#endif diff --git a/include/openssl/openssl/dh.h b/include/openssl/openssl/dh.h new file mode 100644 index 00000000..3527540c --- /dev/null +++ b/include/openssl/openssl/dh.h @@ -0,0 +1,340 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DH_H +# define HEADER_DH_H + +# include + +# ifndef OPENSSL_NO_DH +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_DH_MAX_MODULUS_BITS +# define OPENSSL_DH_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024 + +# define DH_FLAG_CACHE_MONT_P 0x01 + +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DH_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DH method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DH_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DH_FLAG_NON_FIPS_ALLOW 0x0400 + +/* Already defined in ossl_typ.h */ +/* typedef struct dh_st DH; */ +/* typedef struct dh_method DH_METHOD; */ + +DECLARE_ASN1_ITEM(DHparams) + +# define DH_GENERATOR_2 2 +/* #define DH_GENERATOR_3 3 */ +# define DH_GENERATOR_5 5 + +/* DH_check error codes */ +# define DH_CHECK_P_NOT_PRIME 0x01 +# define DH_CHECK_P_NOT_SAFE_PRIME 0x02 +# define DH_UNABLE_TO_CHECK_GENERATOR 0x04 +# define DH_NOT_SUITABLE_GENERATOR 0x08 +# define DH_CHECK_Q_NOT_PRIME 0x10 +# define DH_CHECK_INVALID_Q_VALUE 0x20 +# define DH_CHECK_INVALID_J_VALUE 0x40 + +/* DH_check_pub_key error codes */ +# define DH_CHECK_PUBKEY_TOO_SMALL 0x01 +# define DH_CHECK_PUBKEY_TOO_LARGE 0x02 +# define DH_CHECK_PUBKEY_INVALID 0x04 + +/* + * primes p where (p-1)/2 is prime too are called "safe"; we define this for + * backward compatibility: + */ +# define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME + +# define d2i_DHparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHparams,(fp), (unsigned char *)(x)) +# define d2i_DHparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHparams, bp, x) +# define i2d_DHparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) + +# define d2i_DHxparams_fp(fp,x) \ + (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ + (char *(*)())d2i_DHxparams, \ + (fp), \ + (unsigned char **)(x)) +# define i2d_DHxparams_fp(fp,x) \ + ASN1_i2d_fp(i2d_DHxparams,(fp), (unsigned char *)(x)) +# define d2i_DHxparams_bio(bp,x) \ + ASN1_d2i_bio_of(DH, DH_new, d2i_DHxparams, bp, x) +# define i2d_DHxparams_bio(bp,x) \ + ASN1_i2d_bio_of_const(DH, i2d_DHxparams, bp, x) + +DH *DHparams_dup(DH *); + +const DH_METHOD *DH_OpenSSL(void); + +void DH_set_default_method(const DH_METHOD *meth); +const DH_METHOD *DH_get_default_method(void); +int DH_set_method(DH *dh, const DH_METHOD *meth); +DH *DH_new_method(ENGINE *engine); + +DH *DH_new(void); +void DH_free(DH *dh); +int DH_up_ref(DH *dh); +int DH_bits(const DH *dh); +int DH_size(const DH *dh); +int DH_security_bits(const DH *dh); +#define DH_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DH, l, p, newf, dupf, freef) +int DH_set_ex_data(DH *d, int idx, void *arg); +void *DH_get_ex_data(DH *d, int idx); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DH_generate_parameters_ex(DH *dh, int prime_len, int generator, + BN_GENCB *cb); + +int DH_check_params_ex(const DH *dh); +int DH_check_ex(const DH *dh); +int DH_check_pub_key_ex(const DH *dh, const BIGNUM *pub_key); +int DH_check_params(const DH *dh, int *ret); +int DH_check(const DH *dh, int *codes); +int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *codes); +int DH_generate_key(DH *dh); +int DH_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_compute_key_padded(unsigned char *key, const BIGNUM *pub_key, DH *dh); +DH *d2i_DHparams(DH **a, const unsigned char **pp, long length); +int i2d_DHparams(const DH *a, unsigned char **pp); +DH *d2i_DHxparams(DH **a, const unsigned char **pp, long length); +int i2d_DHxparams(const DH *a, unsigned char **pp); +# ifndef OPENSSL_NO_STDIO +int DHparams_print_fp(FILE *fp, const DH *x); +# endif +int DHparams_print(BIO *bp, const DH *x); + +/* RFC 5114 parameters */ +DH *DH_get_1024_160(void); +DH *DH_get_2048_224(void); +DH *DH_get_2048_256(void); + +/* Named parameters, currently RFC7919 */ +DH *DH_new_by_nid(int nid); +int DH_get_nid(const DH *dh); + +# ifndef OPENSSL_NO_CMS +/* RFC2631 KDF */ +int DH_KDF_X9_42(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + ASN1_OBJECT *key_oid, + const unsigned char *ukm, size_t ukmlen, const EVP_MD *md); +# endif + +void DH_get0_pqg(const DH *dh, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DH_get0_key(const DH *dh, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DH_set0_key(DH *dh, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DH_get0_p(const DH *dh); +const BIGNUM *DH_get0_q(const DH *dh); +const BIGNUM *DH_get0_g(const DH *dh); +const BIGNUM *DH_get0_priv_key(const DH *dh); +const BIGNUM *DH_get0_pub_key(const DH *dh); +void DH_clear_flags(DH *dh, int flags); +int DH_test_flags(const DH *dh, int flags); +void DH_set_flags(DH *dh, int flags); +ENGINE *DH_get0_engine(DH *d); +long DH_get_length(const DH *dh); +int DH_set_length(DH *dh, long length); + +DH_METHOD *DH_meth_new(const char *name, int flags); +void DH_meth_free(DH_METHOD *dhm); +DH_METHOD *DH_meth_dup(const DH_METHOD *dhm); +const char *DH_meth_get0_name(const DH_METHOD *dhm); +int DH_meth_set1_name(DH_METHOD *dhm, const char *name); +int DH_meth_get_flags(const DH_METHOD *dhm); +int DH_meth_set_flags(DH_METHOD *dhm, int flags); +void *DH_meth_get0_app_data(const DH_METHOD *dhm); +int DH_meth_set0_app_data(DH_METHOD *dhm, void *app_data); +int (*DH_meth_get_generate_key(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_generate_key(DH_METHOD *dhm, int (*generate_key) (DH *)); +int (*DH_meth_get_compute_key(const DH_METHOD *dhm)) + (unsigned char *key, const BIGNUM *pub_key, DH *dh); +int DH_meth_set_compute_key(DH_METHOD *dhm, + int (*compute_key) (unsigned char *key, const BIGNUM *pub_key, DH *dh)); +int (*DH_meth_get_bn_mod_exp(const DH_METHOD *dhm)) + (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DH_meth_set_bn_mod_exp(DH_METHOD *dhm, + int (*bn_mod_exp) (const DH *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DH_meth_get_init(const DH_METHOD *dhm))(DH *); +int DH_meth_set_init(DH_METHOD *dhm, int (*init)(DH *)); +int (*DH_meth_get_finish(const DH_METHOD *dhm)) (DH *); +int DH_meth_set_finish(DH_METHOD *dhm, int (*finish) (DH *)); +int (*DH_meth_get_generate_params(const DH_METHOD *dhm)) + (DH *, int, int, BN_GENCB *); +int DH_meth_set_generate_params(DH_METHOD *dhm, + int (*generate_params) (DH *, int, int, BN_GENCB *)); + + +# define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_subprime_len(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN, len, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_type(ctx, typ) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_TYPE, typ, NULL) + +# define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dhx_rfc5114(ctx, gen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DH_RFC5114, gen, NULL) + +# define EVP_PKEY_CTX_set_dh_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, \ + EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_DH_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_dh_pad(ctx, pad) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_PAD, pad, NULL) + +# define EVP_PKEY_CTX_set_dh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set0_dh_kdf_oid(ctx, oid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OID, 0, (void *)(oid)) + +# define EVP_PKEY_CTX_get0_dh_kdf_oid(ctx, poid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OID, 0, (void *)(poid)) + +# define EVP_PKEY_CTX_set_dh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_dh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_dh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_dh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN, 0, (void *)(plen)) + +# define EVP_PKEY_CTX_set0_dh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_DH_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_dh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DHX, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_DH_KDF_UKM, 0, (void *)(p)) + +# define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DH_RFC5114 (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_DH_PARAMGEN_SUBPRIME_LEN (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_DH_PARAMGEN_TYPE (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_DH_KDF_TYPE (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_DH_KDF_MD (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_DH_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_DH_KDF_UKM (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 13) +# define EVP_PKEY_CTRL_GET_DH_KDF_OID (EVP_PKEY_ALG_CTRL + 14) +# define EVP_PKEY_CTRL_DH_NID (EVP_PKEY_ALG_CTRL + 15) +# define EVP_PKEY_CTRL_DH_PAD (EVP_PKEY_ALG_CTRL + 16) + +/* KDF types */ +# define EVP_PKEY_DH_KDF_NONE 1 +# ifndef OPENSSL_NO_CMS +# define EVP_PKEY_DH_KDF_X9_42 2 +# endif + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/dherr.h b/include/openssl/openssl/dherr.h new file mode 100644 index 00000000..916b3bed --- /dev/null +++ b/include/openssl/openssl/dherr.h @@ -0,0 +1,88 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DHERR_H +# define HEADER_DHERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DH + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DH_strings(void); + +/* + * DH function codes. + */ +# define DH_F_COMPUTE_KEY 102 +# define DH_F_DHPARAMS_PRINT_FP 101 +# define DH_F_DH_BUILTIN_GENPARAMS 106 +# define DH_F_DH_CHECK_EX 121 +# define DH_F_DH_CHECK_PARAMS_EX 122 +# define DH_F_DH_CHECK_PUB_KEY_EX 123 +# define DH_F_DH_CMS_DECRYPT 114 +# define DH_F_DH_CMS_SET_PEERKEY 115 +# define DH_F_DH_CMS_SET_SHARED_INFO 116 +# define DH_F_DH_METH_DUP 117 +# define DH_F_DH_METH_NEW 118 +# define DH_F_DH_METH_SET1_NAME 119 +# define DH_F_DH_NEW_BY_NID 104 +# define DH_F_DH_NEW_METHOD 105 +# define DH_F_DH_PARAM_DECODE 107 +# define DH_F_DH_PKEY_PUBLIC_CHECK 124 +# define DH_F_DH_PRIV_DECODE 110 +# define DH_F_DH_PRIV_ENCODE 111 +# define DH_F_DH_PUB_DECODE 108 +# define DH_F_DH_PUB_ENCODE 109 +# define DH_F_DO_DH_PRINT 100 +# define DH_F_GENERATE_KEY 103 +# define DH_F_PKEY_DH_CTRL_STR 120 +# define DH_F_PKEY_DH_DERIVE 112 +# define DH_F_PKEY_DH_INIT 125 +# define DH_F_PKEY_DH_KEYGEN 113 + +/* + * DH reason codes. + */ +# define DH_R_BAD_GENERATOR 101 +# define DH_R_BN_DECODE_ERROR 109 +# define DH_R_BN_ERROR 106 +# define DH_R_CHECK_INVALID_J_VALUE 115 +# define DH_R_CHECK_INVALID_Q_VALUE 116 +# define DH_R_CHECK_PUBKEY_INVALID 122 +# define DH_R_CHECK_PUBKEY_TOO_LARGE 123 +# define DH_R_CHECK_PUBKEY_TOO_SMALL 124 +# define DH_R_CHECK_P_NOT_PRIME 117 +# define DH_R_CHECK_P_NOT_SAFE_PRIME 118 +# define DH_R_CHECK_Q_NOT_PRIME 119 +# define DH_R_DECODE_ERROR 104 +# define DH_R_INVALID_PARAMETER_NAME 110 +# define DH_R_INVALID_PARAMETER_NID 114 +# define DH_R_INVALID_PUBKEY 102 +# define DH_R_KDF_PARAMETER_ERROR 112 +# define DH_R_KEYS_NOT_SET 108 +# define DH_R_MISSING_PUBKEY 125 +# define DH_R_MODULUS_TOO_LARGE 103 +# define DH_R_NOT_SUITABLE_GENERATOR 120 +# define DH_R_NO_PARAMETERS_SET 107 +# define DH_R_NO_PRIVATE_VALUE 100 +# define DH_R_PARAMETER_ENCODING_ERROR 105 +# define DH_R_PEER_KEY_ERROR 111 +# define DH_R_SHARED_INFO_ERROR 113 +# define DH_R_UNABLE_TO_CHECK_GENERATOR 121 + +# endif +#endif diff --git a/include/openssl/openssl/dsa.h b/include/openssl/openssl/dsa.h new file mode 100644 index 00000000..6d8a18a4 --- /dev/null +++ b/include/openssl/openssl/dsa.h @@ -0,0 +1,244 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSA_H +# define HEADER_DSA_H + +# include + +# ifndef OPENSSL_NO_DSA +# ifdef __cplusplus +extern "C" { +# endif +# include +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include + +# ifndef OPENSSL_DSA_MAX_MODULUS_BITS +# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 +# endif + +# define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024 + +# define DSA_FLAG_CACHE_MONT_P 0x01 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define DSA_FLAG_NO_EXP_CONSTTIME 0x00 +# endif + +/* + * If this flag is set the DSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define DSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define DSA_FLAG_NON_FIPS_ALLOW 0x0400 +# define DSA_FLAG_FIPS_CHECKED 0x0800 + +/* Already defined in ossl_typ.h */ +/* typedef struct dsa_st DSA; */ +/* typedef struct dsa_method DSA_METHOD; */ + +typedef struct DSA_SIG_st DSA_SIG; + +# define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ + (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) +# define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ + (unsigned char *)(x)) +# define d2i_DSAparams_bio(bp,x) ASN1_d2i_bio_of(DSA,DSA_new,d2i_DSAparams,bp,x) +# define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) + +DSA *DSAparams_dup(DSA *x); +DSA_SIG *DSA_SIG_new(void); +void DSA_SIG_free(DSA_SIG *a); +int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); +DSA_SIG *d2i_DSA_SIG(DSA_SIG **v, const unsigned char **pp, long length); +void DSA_SIG_get0(const DSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); +int DSA_SIG_set0(DSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +DSA_SIG *DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); +int DSA_do_verify(const unsigned char *dgst, int dgst_len, + DSA_SIG *sig, DSA *dsa); + +const DSA_METHOD *DSA_OpenSSL(void); + +void DSA_set_default_method(const DSA_METHOD *); +const DSA_METHOD *DSA_get_default_method(void); +int DSA_set_method(DSA *dsa, const DSA_METHOD *); +const DSA_METHOD *DSA_get_method(DSA *d); + +DSA *DSA_new(void); +DSA *DSA_new_method(ENGINE *engine); +void DSA_free(DSA *r); +/* "up" the DSA object's reference count */ +int DSA_up_ref(DSA *r); +int DSA_size(const DSA *); +int DSA_bits(const DSA *d); +int DSA_security_bits(const DSA *d); + /* next 4 return -1 on error */ +DEPRECATEDIN_1_2_0(int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)) +int DSA_sign(int type, const unsigned char *dgst, int dlen, + unsigned char *sig, unsigned int *siglen, DSA *dsa); +int DSA_verify(int type, const unsigned char *dgst, int dgst_len, + const unsigned char *sigbuf, int siglen, DSA *dsa); +#define DSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_DSA, l, p, newf, dupf, freef) +int DSA_set_ex_data(DSA *d, int idx, void *arg); +void *DSA_get_ex_data(DSA *d, int idx); + +DSA *d2i_DSAPublicKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAPrivateKey(DSA **a, const unsigned char **pp, long length); +DSA *d2i_DSAparams(DSA **a, const unsigned char **pp, long length); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits, + unsigned char *seed, + int seed_len, + int *counter_ret, + unsigned long *h_ret, void + (*callback) (int, int, + void *), + void *cb_arg)) + +/* New version */ +int DSA_generate_parameters_ex(DSA *dsa, int bits, + const unsigned char *seed, int seed_len, + int *counter_ret, unsigned long *h_ret, + BN_GENCB *cb); + +int DSA_generate_key(DSA *a); +int i2d_DSAPublicKey(const DSA *a, unsigned char **pp); +int i2d_DSAPrivateKey(const DSA *a, unsigned char **pp); +int i2d_DSAparams(const DSA *a, unsigned char **pp); + +int DSAparams_print(BIO *bp, const DSA *x); +int DSA_print(BIO *bp, const DSA *x, int off); +# ifndef OPENSSL_NO_STDIO +int DSAparams_print_fp(FILE *fp, const DSA *x); +int DSA_print_fp(FILE *bp, const DSA *x, int off); +# endif + +# define DSS_prime_checks 64 +/* + * Primality test according to FIPS PUB 186-4, Appendix C.3. Since we only + * have one value here we set the number of checks to 64 which is the 128 bit + * security level that is the highest level and valid for creating a 3072 bit + * DSA key. + */ +# define DSA_is_prime(n, callback, cb_arg) \ + BN_is_prime(n, DSS_prime_checks, callback, NULL, cb_arg) + +# ifndef OPENSSL_NO_DH +/* + * Convert DSA structure (key or just parameters) into DH structure (be + * careful to avoid small subgroup attacks when using this!) + */ +DH *DSA_dup_DH(const DSA *r); +# endif + +# define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_q_bits(ctx, qbits) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS, qbits, NULL) +# define EVP_PKEY_CTX_set_dsa_paramgen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \ + EVP_PKEY_CTRL_DSA_PARAMGEN_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3) + +void DSA_get0_pqg(const DSA *d, + const BIGNUM **p, const BIGNUM **q, const BIGNUM **g); +int DSA_set0_pqg(DSA *d, BIGNUM *p, BIGNUM *q, BIGNUM *g); +void DSA_get0_key(const DSA *d, + const BIGNUM **pub_key, const BIGNUM **priv_key); +int DSA_set0_key(DSA *d, BIGNUM *pub_key, BIGNUM *priv_key); +const BIGNUM *DSA_get0_p(const DSA *d); +const BIGNUM *DSA_get0_q(const DSA *d); +const BIGNUM *DSA_get0_g(const DSA *d); +const BIGNUM *DSA_get0_pub_key(const DSA *d); +const BIGNUM *DSA_get0_priv_key(const DSA *d); +void DSA_clear_flags(DSA *d, int flags); +int DSA_test_flags(const DSA *d, int flags); +void DSA_set_flags(DSA *d, int flags); +ENGINE *DSA_get0_engine(DSA *d); + +DSA_METHOD *DSA_meth_new(const char *name, int flags); +void DSA_meth_free(DSA_METHOD *dsam); +DSA_METHOD *DSA_meth_dup(const DSA_METHOD *dsam); +const char *DSA_meth_get0_name(const DSA_METHOD *dsam); +int DSA_meth_set1_name(DSA_METHOD *dsam, const char *name); +int DSA_meth_get_flags(const DSA_METHOD *dsam); +int DSA_meth_set_flags(DSA_METHOD *dsam, int flags); +void *DSA_meth_get0_app_data(const DSA_METHOD *dsam); +int DSA_meth_set0_app_data(DSA_METHOD *dsam, void *app_data); +DSA_SIG *(*DSA_meth_get_sign(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA *); +int DSA_meth_set_sign(DSA_METHOD *dsam, + DSA_SIG *(*sign) (const unsigned char *, int, DSA *)); +int (*DSA_meth_get_sign_setup(const DSA_METHOD *dsam)) + (DSA *, BN_CTX *, BIGNUM **, BIGNUM **); +int DSA_meth_set_sign_setup(DSA_METHOD *dsam, + int (*sign_setup) (DSA *, BN_CTX *, BIGNUM **, BIGNUM **)); +int (*DSA_meth_get_verify(const DSA_METHOD *dsam)) + (const unsigned char *, int, DSA_SIG *, DSA *); +int DSA_meth_set_verify(DSA_METHOD *dsam, + int (*verify) (const unsigned char *, int, DSA_SIG *, DSA *)); +int (*DSA_meth_get_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_mod_exp(DSA_METHOD *dsam, + int (*mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, const BIGNUM *, const BIGNUM *, BN_CTX *, + BN_MONT_CTX *)); +int (*DSA_meth_get_bn_mod_exp(const DSA_METHOD *dsam)) + (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, const BIGNUM *, + BN_CTX *, BN_MONT_CTX *); +int DSA_meth_set_bn_mod_exp(DSA_METHOD *dsam, + int (*bn_mod_exp) (DSA *, BIGNUM *, const BIGNUM *, const BIGNUM *, + const BIGNUM *, BN_CTX *, BN_MONT_CTX *)); +int (*DSA_meth_get_init(const DSA_METHOD *dsam))(DSA *); +int DSA_meth_set_init(DSA_METHOD *dsam, int (*init)(DSA *)); +int (*DSA_meth_get_finish(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_finish(DSA_METHOD *dsam, int (*finish) (DSA *)); +int (*DSA_meth_get_paramgen(const DSA_METHOD *dsam)) + (DSA *, int, const unsigned char *, int, int *, unsigned long *, + BN_GENCB *); +int DSA_meth_set_paramgen(DSA_METHOD *dsam, + int (*paramgen) (DSA *, int, const unsigned char *, int, int *, + unsigned long *, BN_GENCB *)); +int (*DSA_meth_get_keygen(const DSA_METHOD *dsam)) (DSA *); +int DSA_meth_set_keygen(DSA_METHOD *dsam, int (*keygen) (DSA *)); + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/dsaerr.h b/include/openssl/openssl/dsaerr.h new file mode 100644 index 00000000..495a1ac8 --- /dev/null +++ b/include/openssl/openssl/dsaerr.h @@ -0,0 +1,72 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DSAERR_H +# define HEADER_DSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_DSA + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_DSA_strings(void); + +/* + * DSA function codes. + */ +# define DSA_F_DSAPARAMS_PRINT 100 +# define DSA_F_DSAPARAMS_PRINT_FP 101 +# define DSA_F_DSA_BUILTIN_PARAMGEN 125 +# define DSA_F_DSA_BUILTIN_PARAMGEN2 126 +# define DSA_F_DSA_DO_SIGN 112 +# define DSA_F_DSA_DO_VERIFY 113 +# define DSA_F_DSA_METH_DUP 127 +# define DSA_F_DSA_METH_NEW 128 +# define DSA_F_DSA_METH_SET1_NAME 129 +# define DSA_F_DSA_NEW_METHOD 103 +# define DSA_F_DSA_PARAM_DECODE 119 +# define DSA_F_DSA_PRINT_FP 105 +# define DSA_F_DSA_PRIV_DECODE 115 +# define DSA_F_DSA_PRIV_ENCODE 116 +# define DSA_F_DSA_PUB_DECODE 117 +# define DSA_F_DSA_PUB_ENCODE 118 +# define DSA_F_DSA_SIGN 106 +# define DSA_F_DSA_SIGN_SETUP 107 +# define DSA_F_DSA_SIG_NEW 102 +# define DSA_F_OLD_DSA_PRIV_DECODE 122 +# define DSA_F_PKEY_DSA_CTRL 120 +# define DSA_F_PKEY_DSA_CTRL_STR 104 +# define DSA_F_PKEY_DSA_KEYGEN 121 + +/* + * DSA reason codes. + */ +# define DSA_R_BAD_Q_VALUE 102 +# define DSA_R_BN_DECODE_ERROR 108 +# define DSA_R_BN_ERROR 109 +# define DSA_R_DECODE_ERROR 104 +# define DSA_R_INVALID_DIGEST_TYPE 106 +# define DSA_R_INVALID_PARAMETERS 112 +# define DSA_R_MISSING_PARAMETERS 101 +# define DSA_R_MISSING_PRIVATE_KEY 111 +# define DSA_R_MODULUS_TOO_LARGE 103 +# define DSA_R_NO_PARAMETERS_SET 107 +# define DSA_R_PARAMETER_ENCODING_ERROR 105 +# define DSA_R_Q_NOT_PRIME 113 +# define DSA_R_SEED_LEN_SMALL 110 + +# endif +#endif diff --git a/include/openssl/openssl/dtls1.h b/include/openssl/openssl/dtls1.h new file mode 100644 index 00000000..d55ca9c3 --- /dev/null +++ b/include/openssl/openssl/dtls1.h @@ -0,0 +1,55 @@ +/* + * Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_DTLS1_H +# define HEADER_DTLS1_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define DTLS1_VERSION 0xFEFF +# define DTLS1_2_VERSION 0xFEFD +# define DTLS_MIN_VERSION DTLS1_VERSION +# define DTLS_MAX_VERSION DTLS1_2_VERSION +# define DTLS1_VERSION_MAJOR 0xFE + +# define DTLS1_BAD_VER 0x0100 + +/* Special value for method supporting multiple versions */ +# define DTLS_ANY_VERSION 0x1FFFF + +/* lengths of messages */ +/* + * Actually the max cookie length in DTLS is 255. But we can't change this now + * due to compatibility concerns. + */ +# define DTLS1_COOKIE_LENGTH 256 + +# define DTLS1_RT_HEADER_LENGTH 13 + +# define DTLS1_HM_HEADER_LENGTH 12 + +# define DTLS1_HM_BAD_FRAGMENT -2 +# define DTLS1_HM_FRAGMENT_RETRY -3 + +# define DTLS1_CCS_HEADER_LENGTH 1 + +# define DTLS1_AL_HEADER_LENGTH 2 + +/* Timeout multipliers */ +# define DTLS1_TMO_READ_COUNT 2 +# define DTLS1_TMO_WRITE_COUNT 2 + +# define DTLS1_TMO_ALERT_COUNT 12 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/e_os2.h b/include/openssl/openssl/e_os2.h new file mode 100644 index 00000000..cf308eee --- /dev/null +++ b/include/openssl/openssl/e_os2.h @@ -0,0 +1,300 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_E_OS2_H +# define HEADER_E_OS2_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/****************************************************************************** + * Detect operating systems. This probably needs completing. + * The result is that at least one OPENSSL_SYS_os macro should be defined. + * However, if none is defined, Unix is assumed. + **/ + +# define OPENSSL_SYS_UNIX + +/* --------------------- Microsoft operating systems ---------------------- */ + +/* + * Note that MSDOS actually denotes 32-bit environments running on top of + * MS-DOS, such as DJGPP one. + */ +# if defined(OPENSSL_SYS_MSDOS) +# undef OPENSSL_SYS_UNIX +# endif + +/* + * For 32 bit environment, there seems to be the CygWin environment and then + * all the others that try to do the same thing Microsoft does... + */ +/* + * UEFI lives here because it might be built with a Microsoft toolchain and + * we need to avoid the false positive match on Windows. + */ +# if defined(OPENSSL_SYS_UEFI) +# undef OPENSSL_SYS_UNIX +# elif defined(OPENSSL_SYS_UWIN) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WIN32_UWIN +# else +# if defined(__CYGWIN__) || defined(OPENSSL_SYS_CYGWIN) +# define OPENSSL_SYS_WIN32_CYGWIN +# else +# if defined(_WIN32) || defined(OPENSSL_SYS_WIN32) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN32) +# define OPENSSL_SYS_WIN32 +# endif +# endif +# if defined(_WIN64) || defined(OPENSSL_SYS_WIN64) +# undef OPENSSL_SYS_UNIX +# if !defined(OPENSSL_SYS_WIN64) +# define OPENSSL_SYS_WIN64 +# endif +# endif +# if defined(OPENSSL_SYS_WINNT) +# undef OPENSSL_SYS_UNIX +# endif +# if defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# endif +# endif +# endif + +/* Anything that tries to look like Microsoft is "Windows" */ +# if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) +# undef OPENSSL_SYS_UNIX +# define OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_SYS_MSDOS +# define OPENSSL_SYS_MSDOS +# endif +# endif + +/* + * DLL settings. This part is a bit tough, because it's up to the + * application implementor how he or she will link the application, so it + * requires some macro to be used. + */ +# ifdef OPENSSL_SYS_WINDOWS +# ifndef OPENSSL_OPT_WINDLL +# if defined(_WINDLL) /* This is used when building OpenSSL to + * indicate that DLL linkage should be used */ +# define OPENSSL_OPT_WINDLL +# endif +# endif +# endif + +/* ------------------------------- OpenVMS -------------------------------- */ +# if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYS_VMS) +# if !defined(OPENSSL_SYS_VMS) +# undef OPENSSL_SYS_UNIX +# endif +# define OPENSSL_SYS_VMS +# if defined(__DECC) +# define OPENSSL_SYS_VMS_DECC +# elif defined(__DECCXX) +# define OPENSSL_SYS_VMS_DECC +# define OPENSSL_SYS_VMS_DECCXX +# else +# define OPENSSL_SYS_VMS_NODECC +# endif +# endif + +/* -------------------------------- Unix ---------------------------------- */ +# ifdef OPENSSL_SYS_UNIX +# if defined(linux) || defined(__linux__) && !defined(OPENSSL_SYS_LINUX) +# define OPENSSL_SYS_LINUX +# endif +# if defined(_AIX) && !defined(OPENSSL_SYS_AIX) +# define OPENSSL_SYS_AIX +# endif +# endif + +/* -------------------------------- VOS ----------------------------------- */ +# if defined(__VOS__) && !defined(OPENSSL_SYS_VOS) +# define OPENSSL_SYS_VOS +# ifdef __HPPA__ +# define OPENSSL_SYS_VOS_HPPA +# endif +# ifdef __IA32__ +# define OPENSSL_SYS_VOS_IA32 +# endif +# endif + +/** + * That's it for OS-specific stuff + *****************************************************************************/ + +/* Specials for I/O an exit */ +# ifdef OPENSSL_SYS_MSDOS +# define OPENSSL_UNISTD_IO +# define OPENSSL_DECLARE_EXIT extern void exit(int); +# else +# define OPENSSL_UNISTD_IO OPENSSL_UNISTD +# define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ +# endif + +/*- + * OPENSSL_EXTERN is normally used to declare a symbol with possible extra + * attributes to handle its presence in a shared library. + * OPENSSL_EXPORT is used to define a symbol with extra possible attributes + * to make it visible in a shared library. + * Care needs to be taken when a header file is used both to declare and + * define symbols. Basically, for any library that exports some global + * variables, the following code must be present in the header file that + * declares them, before OPENSSL_EXTERN is used: + * + * #ifdef SOME_BUILD_FLAG_MACRO + * # undef OPENSSL_EXTERN + * # define OPENSSL_EXTERN OPENSSL_EXPORT + * #endif + * + * The default is to have OPENSSL_EXPORT and OPENSSL_EXTERN + * have some generally sensible values. + */ + +# if defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) +# define OPENSSL_EXPORT extern __declspec(dllexport) +# define OPENSSL_EXTERN extern __declspec(dllimport) +# else +# define OPENSSL_EXPORT extern +# define OPENSSL_EXTERN extern +# endif + +/*- + * Macros to allow global variables to be reached through function calls when + * required (if a shared library version requires it, for example. + * The way it's done allows definitions like this: + * + * // in foobar.c + * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) + * // in foobar.h + * OPENSSL_DECLARE_GLOBAL(int,foobar); + * #define foobar OPENSSL_GLOBAL_REF(foobar) + */ +# ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ + type *_shadow_##name(void) \ + { static type _hide_##name=value; return &_hide_##name; } +# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) +# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) +# else +# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) type _shadow_##name=value; +# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name +# define OPENSSL_GLOBAL_REF(name) _shadow_##name +# endif + +# ifdef _WIN32 +# ifdef _WIN64 +# define ossl_ssize_t __int64 +# define OSSL_SSIZE_MAX _I64_MAX +# else +# define ossl_ssize_t int +# define OSSL_SSIZE_MAX INT_MAX +# endif +# endif + +# if defined(OPENSSL_SYS_UEFI) && !defined(ossl_ssize_t) +# define ossl_ssize_t INTN +# define OSSL_SSIZE_MAX MAX_INTN +# endif + +# ifndef ossl_ssize_t +# define ossl_ssize_t ssize_t +# if defined(SSIZE_MAX) +# define OSSL_SSIZE_MAX SSIZE_MAX +# elif defined(_POSIX_SSIZE_MAX) +# define OSSL_SSIZE_MAX _POSIX_SSIZE_MAX +# else +# define OSSL_SSIZE_MAX ((ssize_t)(SIZE_MAX>>1)) +# endif +# endif + +# ifdef DEBUG_UNUSED +# define __owur __attribute__((__warn_unused_result__)) +# else +# define __owur +# endif + +/* Standard integer types */ +# if defined(OPENSSL_SYS_UEFI) +typedef INT8 int8_t; +typedef UINT8 uint8_t; +typedef INT16 int16_t; +typedef UINT16 uint16_t; +typedef INT32 int32_t; +typedef UINT32 uint32_t; +typedef INT64 int64_t; +typedef UINT64 uint64_t; +# elif (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \ + defined(__osf__) || defined(__sgi) || defined(__hpux) || \ + defined(OPENSSL_SYS_VMS) || defined (__OpenBSD__) +# include +# elif defined(_MSC_VER) && _MSC_VER<1600 +/* + * minimally required typdefs for systems not supporting inttypes.h or + * stdint.h: currently just older VC++ + */ +typedef signed char int8_t; +typedef unsigned char uint8_t; +typedef short int16_t; +typedef unsigned short uint16_t; +typedef int int32_t; +typedef unsigned int uint32_t; +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +# else +# include +# endif + +/* ossl_inline: portable inline definition usable in public headers */ +# if !defined(inline) && !defined(__cplusplus) +# if defined(__STDC_VERSION__) && __STDC_VERSION__>=199901L + /* just use inline */ +# define ossl_inline inline +# elif defined(__GNUC__) && __GNUC__>=2 +# define ossl_inline __inline__ +# elif defined(_MSC_VER) + /* + * Visual Studio: inline is available in C++ only, however + * __inline is available for C, see + * http://msdn.microsoft.com/en-us/library/z8y1yy88.aspx + */ +# define ossl_inline __inline +# else +# define ossl_inline +# endif +# else +# define ossl_inline inline +# endif + +# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +# define ossl_noreturn _Noreturn +# elif defined(__GNUC__) && __GNUC__ >= 2 +# define ossl_noreturn __attribute__((noreturn)) +# else +# define ossl_noreturn +# endif + +/* ossl_unused: portable unused attribute for use in public headers */ +# if defined(__GNUC__) +# define ossl_unused __attribute__((unused)) +# else +# define ossl_unused +# endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/ec.h b/include/openssl/openssl/ec.h new file mode 100644 index 00000000..44cc1399 --- /dev/null +++ b/include/openssl/openssl/ec.h @@ -0,0 +1,1481 @@ +/* + * Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EC_H +# define HEADER_EC_H + +# include + +# ifndef OPENSSL_NO_EC +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +# ifndef OPENSSL_ECC_MAX_FIELD_BITS +# define OPENSSL_ECC_MAX_FIELD_BITS 661 +# endif + +/** Enum for the point conversion form as defined in X9.62 (ECDSA) + * for the encoding of a elliptic curve point (x,y) */ +typedef enum { + /** the point is encoded as z||x, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_COMPRESSED = 2, + /** the point is encoded as z||x||y, where z is the octet 0x04 */ + POINT_CONVERSION_UNCOMPRESSED = 4, + /** the point is encoded as z||x||y, where the octet z specifies + * which solution of the quadratic equation y is */ + POINT_CONVERSION_HYBRID = 6 +} point_conversion_form_t; + +typedef struct ec_method_st EC_METHOD; +typedef struct ec_group_st EC_GROUP; +typedef struct ec_point_st EC_POINT; +typedef struct ecpk_parameters_st ECPKPARAMETERS; +typedef struct ec_parameters_st ECPARAMETERS; + +/********************************************************************/ +/* EC_METHODs for curves over GF(p) */ +/********************************************************************/ + +/** Returns the basic GFp ec methods which provides the basis for the + * optimized methods. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_simple_method(void); + +/** Returns GFp methods using montgomery multiplication. + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_mont_method(void); + +/** Returns GFp methods using optimized methods for NIST recommended curves + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nist_method(void); + +# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +/** Returns 64-bit optimized methods for nistp224 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp224_method(void); + +/** Returns 64-bit optimized methods for nistp256 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp256_method(void); + +/** Returns 64-bit optimized methods for nistp521 + * \return EC_METHOD object + */ +const EC_METHOD *EC_GFp_nistp521_method(void); +# endif + +# ifndef OPENSSL_NO_EC2M +/********************************************************************/ +/* EC_METHOD for curves over GF(2^m) */ +/********************************************************************/ + +/** Returns the basic GF2m ec method + * \return EC_METHOD object + */ +const EC_METHOD *EC_GF2m_simple_method(void); + +# endif + +/********************************************************************/ +/* EC_GROUP functions */ +/********************************************************************/ + +/** Creates a new EC_GROUP object + * \param meth EC_METHOD to use + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_new(const EC_METHOD *meth); + +/** Frees a EC_GROUP object + * \param group EC_GROUP object to be freed. + */ +void EC_GROUP_free(EC_GROUP *group); + +/** Clears and frees a EC_GROUP object + * \param group EC_GROUP object to be cleared and freed. + */ +void EC_GROUP_clear_free(EC_GROUP *group); + +/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD. + * \param dst destination EC_GROUP object + * \param src source EC_GROUP object + * \return 1 on success and 0 if an error occurred. + */ +int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src); + +/** Creates a new EC_GROUP object and copies the copies the content + * form src to the newly created EC_KEY object + * \param src source EC_GROUP object + * \return newly created EC_GROUP object or NULL in case of an error. + */ +EC_GROUP *EC_GROUP_dup(const EC_GROUP *src); + +/** Returns the EC_METHOD of the EC_GROUP object. + * \param group EC_GROUP object + * \return EC_METHOD used in this EC_GROUP object. + */ +const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group); + +/** Returns the field type of the EC_METHOD. + * \param meth EC_METHOD object + * \return NID of the underlying field type OID. + */ +int EC_METHOD_get_field_type(const EC_METHOD *meth); + +/** Sets the generator and its order/cofactor of a EC_GROUP object. + * \param group EC_GROUP object + * \param generator EC_POINT object with the generator. + * \param order the order of the group generated by the generator. + * \param cofactor the index of the sub-group generated by the generator + * in the group of all points on the elliptic curve. + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, + const BIGNUM *order, const BIGNUM *cofactor); + +/** Returns the generator of a EC_GROUP object. + * \param group EC_GROUP object + * \return the currently used generator (possibly NULL). + */ +const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group); + +/** Returns the montgomery data for order(Generator) + * \param group EC_GROUP object + * \return the currently used montgomery data (possibly NULL). +*/ +BN_MONT_CTX *EC_GROUP_get_mont_data(const EC_GROUP *group); + +/** Gets the order of a EC_GROUP + * \param group EC_GROUP object + * \param order BIGNUM to which the order is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx); + +/** Gets the order of an EC_GROUP + * \param group EC_GROUP object + * \return the group order + */ +const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group); + +/** Gets the number of bits of the order of an EC_GROUP + * \param group EC_GROUP object + * \return number of bits of group order. + */ +int EC_GROUP_order_bits(const EC_GROUP *group); + +/** Gets the cofactor of a EC_GROUP + * \param group EC_GROUP object + * \param cofactor BIGNUM to which the cofactor is copied + * \param ctx unused + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, + BN_CTX *ctx); + +/** Gets the cofactor of an EC_GROUP + * \param group EC_GROUP object + * \return the group cofactor + */ +const BIGNUM *EC_GROUP_get0_cofactor(const EC_GROUP *group); + +/** Sets the name of a EC_GROUP object + * \param group EC_GROUP object + * \param nid NID of the curve name OID + */ +void EC_GROUP_set_curve_name(EC_GROUP *group, int nid); + +/** Returns the curve name of a EC_GROUP object + * \param group EC_GROUP object + * \return NID of the curve name OID or 0 if not set. + */ +int EC_GROUP_get_curve_name(const EC_GROUP *group); + +void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag); +int EC_GROUP_get_asn1_flag(const EC_GROUP *group); + +void EC_GROUP_set_point_conversion_form(EC_GROUP *group, + point_conversion_form_t form); +point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); + +unsigned char *EC_GROUP_get0_seed(const EC_GROUP *x); +size_t EC_GROUP_get_seed_len(const EC_GROUP *); +size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); + +/** Sets the parameters of a ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_set_curve(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); + +/** Gets the parameters of the ec curve defined by y^2 = x^3 + a*x + b (for GFp) + * or y^2 + x*y = x^3 + a*x^2 + b (for GF2m) + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_get_curve(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, + BN_CTX *ctx); + +/** Sets the parameters of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) + +# ifndef OPENSSL_NO_EC2M +/** Sets the parameter of an ec curve. Synonym for EC_GROUP_set_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM with parameter a of the equation + * \param b BIGNUM with parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, + const BIGNUM *a, const BIGNUM *b, + BN_CTX *ctx)) + +/** Gets the parameters of an ec curve. Synonym for EC_GROUP_get_curve + * \param group EC_GROUP object + * \param p BIGNUM with the prime number (GFp) or the polynomial + * defining the underlying field (GF2m) + * \param a BIGNUM for parameter a of the equation + * \param b BIGNUM for parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, + BIGNUM *a, BIGNUM *b, + BN_CTX *ctx)) +# endif +/** Returns the number of bits needed to represent a field element + * \param group EC_GROUP object + * \return number of bits needed to represent a field element + */ +int EC_GROUP_get_degree(const EC_GROUP *group); + +/** Checks whether the parameter in the EC_GROUP define a valid ec group + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if group is a valid ec group and 0 otherwise + */ +int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); + +/** Checks whether the discriminant of the elliptic curve is zero or not + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 if the discriminant is not zero and 0 otherwise + */ +int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx); + +/** Compares two EC_GROUP objects + * \param a first EC_GROUP object + * \param b second EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 0 if the groups are equal, 1 if not, or -1 on error + */ +int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx); + +/* + * EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() after + * choosing an appropriate EC_METHOD + */ + +/** Creates a new EC_GROUP object with the specified parameters defined + * over GFp (defined by the equation y^2 = x^3 + a*x + b) + * \param p BIGNUM with the prime number + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# ifndef OPENSSL_NO_EC2M +/** Creates a new EC_GROUP object with the specified parameters defined + * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b) + * \param p BIGNUM with the polynomial defining the underlying field + * \param a BIGNUM with the parameter a of the equation + * \param b BIGNUM with the parameter b of the equation + * \param ctx BN_CTX object (optional) + * \return newly created EC_GROUP object with the specified parameters + */ +EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, + const BIGNUM *b, BN_CTX *ctx); +# endif + +/** Creates a EC_GROUP object with a curve specified by a NID + * \param nid NID of the OID of the curve name + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_by_curve_name(int nid); + +/** Creates a new EC_GROUP object from an ECPARAMETERS object + * \param params pointer to the ECPARAMETERS object + * \return newly created EC_GROUP object with specified curve or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params); + +/** Creates an ECPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPARAMETERS object or NULL + * \return pointer to the new ECPARAMETERS object or NULL + * if an error occurred. + */ +ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, + ECPARAMETERS *params); + +/** Creates a new EC_GROUP object from an ECPKPARAMETERS object + * \param params pointer to an existing ECPKPARAMETERS object, or NULL + * \return newly created EC_GROUP object with specified curve, or NULL + * if an error occurred + */ +EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params); + +/** Creates an ECPKPARAMETERS object for the given EC_GROUP object. + * \param group pointer to the EC_GROUP object + * \param params pointer to an existing ECPKPARAMETERS object or NULL + * \return pointer to the new ECPKPARAMETERS object or NULL + * if an error occurred. + */ +ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, + ECPKPARAMETERS *params); + +/********************************************************************/ +/* handling of internal curves */ +/********************************************************************/ + +typedef struct { + int nid; + const char *comment; +} EC_builtin_curve; + +/* + * EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number of all + * available curves or zero if a error occurred. In case r is not zero, + * nitems EC_builtin_curve structures are filled with the data of the first + * nitems internal groups + */ +size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); + +const char *EC_curve_nid2nist(int nid); +int EC_curve_nist2nid(const char *name); + +/********************************************************************/ +/* EC_POINT functions */ +/********************************************************************/ + +/** Creates a new EC_POINT object for the specified EC_GROUP + * \param group EC_GROUP the underlying EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_new(const EC_GROUP *group); + +/** Frees a EC_POINT object + * \param point EC_POINT object to be freed + */ +void EC_POINT_free(EC_POINT *point); + +/** Clears and frees a EC_POINT object + * \param point EC_POINT object to be cleared and freed + */ +void EC_POINT_clear_free(EC_POINT *point); + +/** Copies EC_POINT object + * \param dst destination EC_POINT object + * \param src source EC_POINT object + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src); + +/** Creates a new EC_POINT object and copies the content of the supplied + * EC_POINT + * \param src source EC_POINT object + * \param group underlying the EC_GROUP object + * \return newly created EC_POINT object or NULL if an error occurred + */ +EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group); + +/** Returns the EC_METHOD used in EC_POINT object + * \param point EC_POINT object + * \return the EC_METHOD used + */ +const EC_METHOD *EC_POINT_method_of(const EC_POINT *point); + +/** Sets a point to infinity (neutral element) + * \param group underlying EC_GROUP object + * \param point EC_POINT to set to infinity + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point); + +/** Sets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param z BIGNUM with the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, const BIGNUM *x, + const BIGNUM *y, const BIGNUM *z, + BN_CTX *ctx); + +/** Gets the jacobian projective coordinates of a EC_POINT over GFp + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param z BIGNUM for the z-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, BIGNUM *x, + BIGNUM *y, BIGNUM *z, + BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_affine_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, const BIGNUM *y, + BN_CTX *ctx); + +/** Gets the affine coordinates of an EC_POINT. + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_get_affine_coordinates(const EC_GROUP *group, const EC_POINT *p, + BIGNUM *x, BIGNUM *y, BN_CTX *ctx); + +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_set_compressed_coordinates(const EC_GROUP *group, EC_POINT *p, + const BIGNUM *x, int y_bit, + BN_CTX *ctx); + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# ifndef OPENSSL_NO_EC2M +/** Sets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_set_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with the x-coordinate + * \param y BIGNUM with the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + const BIGNUM *y, + BN_CTX *ctx)) + +/** Gets the affine coordinates of an EC_POINT. A synonym of + * EC_POINT_get_affine_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM for the x-coordinate + * \param y BIGNUM for the y-coordinate + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, + const EC_POINT *p, + BIGNUM *x, + BIGNUM *y, + BN_CTX *ctx)) + +/** Sets the x9.62 compressed coordinates of a EC_POINT. A synonym of + * EC_POINT_set_compressed_coordinates + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param x BIGNUM with x-coordinate + * \param y_bit integer with the y-Bit (either 0 or 1) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +DEPRECATEDIN_1_2_0(int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, + EC_POINT *p, + const BIGNUM *x, + int y_bit, + BN_CTX *ctx)) +# endif +/** Encodes a EC_POINT object to a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param form point conversion form + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p, + point_conversion_form_t form, + unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Decodes a EC_POINT from a octet string + * \param group underlying EC_GROUP object + * \param p EC_POINT object + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p, + const unsigned char *buf, size_t len, BN_CTX *ctx); + +/** Encodes an EC_POINT object to an allocated octet string + * \param group underlying EC_GROUP object + * \param point EC_POINT object + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_POINT_point2buf(const EC_GROUP *group, const EC_POINT *point, + point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/* other interfaces to point2oct/oct2point: */ +BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BIGNUM *, BN_CTX *); +EC_POINT *EC_POINT_bn2point(const EC_GROUP *, const BIGNUM *, + EC_POINT *, BN_CTX *); +char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *, + point_conversion_form_t form, BN_CTX *); +EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, + EC_POINT *, BN_CTX *); + +/********************************************************************/ +/* functions for doing EC_POINT arithmetic */ +/********************************************************************/ + +/** Computes the sum of two EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = a + b) + * \param a EC_POINT object with the first summand + * \param b EC_POINT object with the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + const EC_POINT *b, BN_CTX *ctx); + +/** Computes the double of a EC_POINT + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result (r = 2 * a) + * \param a EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, + BN_CTX *ctx); + +/** Computes the inverse of a EC_POINT + * \param group underlying EC_GROUP object + * \param a EC_POINT object to be inverted (it's used for the result as well) + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx); + +/** Checks whether the point is the neutral element of the group + * \param group the underlying EC_GROUP object + * \param p EC_POINT object + * \return 1 if the point is the neutral element and 0 otherwise + */ +int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p); + +/** Checks whether the point is on the curve + * \param group underlying EC_GROUP object + * \param point EC_POINT object to check + * \param ctx BN_CTX object (optional) + * \return 1 if the point is on the curve, 0 if not, or -1 on error + */ +int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, + BN_CTX *ctx); + +/** Compares two EC_POINTs + * \param group underlying EC_GROUP object + * \param a first EC_POINT object + * \param b second EC_POINT object + * \param ctx BN_CTX object (optional) + * \return 1 if the points are not equal, 0 if they are, or -1 on error + */ +int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, + BN_CTX *ctx); + +int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point, BN_CTX *ctx); +int EC_POINTs_make_affine(const EC_GROUP *group, size_t num, + EC_POINT *points[], BN_CTX *ctx); + +/** Computes r = generator * n + sum_{i=0}^{num-1} p[i] * m[i] + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param num number further summands + * \param p array of size num of EC_POINT objects + * \param m array of size num of BIGNUM objects + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + size_t num, const EC_POINT *p[], const BIGNUM *m[], + BN_CTX *ctx); + +/** Computes r = generator * n + q * m + * \param group underlying EC_GROUP object + * \param r EC_POINT object for the result + * \param n BIGNUM with the multiplier for the group generator (optional) + * \param q EC_POINT object with the first factor of the second summand + * \param m BIGNUM with the second factor of the second summand + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, + const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx); + +/** Stores multiples of generator for faster point multiplication + * \param group EC_GROUP object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ +int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx); + +/** Reports whether a precomputation has been done + * \param group EC_GROUP object + * \return 1 if a pre-computation has been done and 0 otherwise + */ +int EC_GROUP_have_precompute_mult(const EC_GROUP *group); + +/********************************************************************/ +/* ASN1 stuff */ +/********************************************************************/ + +DECLARE_ASN1_ITEM(ECPKPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPKPARAMETERS) +DECLARE_ASN1_ITEM(ECPARAMETERS) +DECLARE_ASN1_ALLOC_FUNCTIONS(ECPARAMETERS) + +/* + * EC_GROUP_get_basis_type() returns the NID of the basis type used to + * represent the field elements + */ +int EC_GROUP_get_basis_type(const EC_GROUP *); +# ifndef OPENSSL_NO_EC2M +int EC_GROUP_get_trinomial_basis(const EC_GROUP *, unsigned int *k); +int EC_GROUP_get_pentanomial_basis(const EC_GROUP *, unsigned int *k1, + unsigned int *k2, unsigned int *k3); +# endif + +# define OPENSSL_EC_EXPLICIT_CURVE 0x000 +# define OPENSSL_EC_NAMED_CURVE 0x001 + +EC_GROUP *d2i_ECPKParameters(EC_GROUP **, const unsigned char **in, long len); +int i2d_ECPKParameters(const EC_GROUP *, unsigned char **out); + +# define d2i_ECPKParameters_bio(bp,x) ASN1_d2i_bio_of(EC_GROUP,NULL,d2i_ECPKParameters,bp,x) +# define i2d_ECPKParameters_bio(bp,x) ASN1_i2d_bio_of_const(EC_GROUP,i2d_ECPKParameters,bp,x) +# define d2i_ECPKParameters_fp(fp,x) (EC_GROUP *)ASN1_d2i_fp(NULL, \ + (char *(*)())d2i_ECPKParameters,(fp),(unsigned char **)(x)) +# define i2d_ECPKParameters_fp(fp,x) ASN1_i2d_fp(i2d_ECPKParameters,(fp), \ + (unsigned char *)(x)) + +int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off); +# ifndef OPENSSL_NO_STDIO +int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); +# endif + +/********************************************************************/ +/* EC_KEY functions */ +/********************************************************************/ + +/* some values for the encoding_flag */ +# define EC_PKEY_NO_PARAMETERS 0x001 +# define EC_PKEY_NO_PUBKEY 0x002 + +/* some values for the flags field */ +# define EC_FLAG_NON_FIPS_ALLOW 0x1 +# define EC_FLAG_FIPS_CHECKED 0x2 +# define EC_FLAG_COFACTOR_ECDH 0x1000 + +/** Creates a new EC_KEY object. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new(void); + +int EC_KEY_get_flags(const EC_KEY *key); + +void EC_KEY_set_flags(EC_KEY *key, int flags); + +void EC_KEY_clear_flags(EC_KEY *key, int flags); + +int EC_KEY_decoded_from_explicit_params(const EC_KEY *key); + +/** Creates a new EC_KEY object using a named curve as underlying + * EC_GROUP object. + * \param nid NID of the named curve. + * \return EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_new_by_curve_name(int nid); + +/** Frees a EC_KEY object. + * \param key EC_KEY object to be freed. + */ +void EC_KEY_free(EC_KEY *key); + +/** Copies a EC_KEY object. + * \param dst destination EC_KEY object + * \param src src EC_KEY object + * \return dst or NULL if an error occurred. + */ +EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src); + +/** Creates a new EC_KEY object and copies the content from src to it. + * \param src the source EC_KEY object + * \return newly created EC_KEY object or NULL if an error occurred. + */ +EC_KEY *EC_KEY_dup(const EC_KEY *src); + +/** Increases the internal reference count of a EC_KEY object. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_up_ref(EC_KEY *key); + +/** Returns the ENGINE object of a EC_KEY object + * \param eckey EC_KEY object + * \return the ENGINE object (possibly NULL). + */ +ENGINE *EC_KEY_get0_engine(const EC_KEY *eckey); + +/** Returns the EC_GROUP object of a EC_KEY object + * \param key EC_KEY object + * \return the EC_GROUP object (possibly NULL). + */ +const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key); + +/** Sets the EC_GROUP of a EC_KEY object. + * \param key EC_KEY object + * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY + * object will use an own copy of the EC_GROUP). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group); + +/** Returns the private key of a EC_KEY object. + * \param key EC_KEY object + * \return a BIGNUM with the private key (possibly NULL). + */ +const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key); + +/** Sets the private key of a EC_KEY object. + * \param key EC_KEY object + * \param prv BIGNUM with the private key (note: the EC_KEY object + * will use an own copy of the BIGNUM). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv); + +/** Returns the public key of a EC_KEY object. + * \param key the EC_KEY object + * \return a EC_POINT object with the public key (possibly NULL) + */ +const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key); + +/** Sets the public key of a EC_KEY object. + * \param key EC_KEY object + * \param pub EC_POINT object with the public key (note: the EC_KEY object + * will use an own copy of the EC_POINT object). + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub); + +unsigned EC_KEY_get_enc_flags(const EC_KEY *key); +void EC_KEY_set_enc_flags(EC_KEY *eckey, unsigned int flags); +point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key); +void EC_KEY_set_conv_form(EC_KEY *eckey, point_conversion_form_t cform); + +#define EC_KEY_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_EC_KEY, l, p, newf, dupf, freef) +int EC_KEY_set_ex_data(EC_KEY *key, int idx, void *arg); +void *EC_KEY_get_ex_data(const EC_KEY *key, int idx); + +/* wrapper functions for the underlying EC_GROUP object */ +void EC_KEY_set_asn1_flag(EC_KEY *eckey, int asn1_flag); + +/** Creates a table of pre-computed multiples of the generator to + * accelerate further EC_KEY operations. + * \param key EC_KEY object + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx); + +/** Creates a new ec private (and optional a new public) key. + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred. + */ +int EC_KEY_generate_key(EC_KEY *key); + +/** Verifies that a private and/or public key is valid. + * \param key the EC_KEY object + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_check_key(const EC_KEY *key); + +/** Indicates if an EC_KEY can be used for signing. + * \param eckey the EC_KEY object + * \return 1 if can can sign and 0 otherwise. + */ +int EC_KEY_can_sign(const EC_KEY *eckey); + +/** Sets a public key from affine coordinates performing + * necessary NIST PKV tests. + * \param key the EC_KEY object + * \param x public key x coordinate + * \param y public key y coordinate + * \return 1 on success and 0 otherwise. + */ +int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, + BIGNUM *y); + +/** Encodes an EC_KEY public key to an allocated octet string + * \param key key to encode + * \param form point conversion form + * \param pbuf returns pointer to allocated buffer + * \param ctx BN_CTX object (optional) + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_key2buf(const EC_KEY *key, point_conversion_form_t form, + unsigned char **pbuf, BN_CTX *ctx); + +/** Decodes a EC_KEY public key from a octet string + * \param key key to decode + * \param buf memory buffer with the encoded ec point + * \param len length of the encoded ec point + * \param ctx BN_CTX object (optional) + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2key(EC_KEY *key, const unsigned char *buf, size_t len, + BN_CTX *ctx); + +/** Decodes an EC_KEY private key from an octet string + * \param key key to decode + * \param buf memory buffer with the encoded private key + * \param len length of the encoded key + * \return 1 on success and 0 if an error occurred + */ + +int EC_KEY_oct2priv(EC_KEY *key, const unsigned char *buf, size_t len); + +/** Encodes a EC_KEY private key to an octet string + * \param key key to encode + * \param buf memory buffer for the result. If NULL the function returns + * required buffer size. + * \param len length of the memory buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ + +size_t EC_KEY_priv2oct(const EC_KEY *key, unsigned char *buf, size_t len); + +/** Encodes an EC_KEY private key to an allocated octet string + * \param eckey key to encode + * \param pbuf returns pointer to allocated buffer + * \return the length of the encoded octet string or 0 if an error occurred + */ +size_t EC_KEY_priv2buf(const EC_KEY *eckey, unsigned char **pbuf); + +/********************************************************************/ +/* de- and encoding functions for SEC1 ECPrivateKey */ +/********************************************************************/ + +/** Decodes a private key from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded private key + * \param len length of the DER encoded private key + * \return the decoded private key or NULL if an error occurred. + */ +EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a private key object and stores the result in a buffer. + * \param key the EC_KEY object to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC parameters */ +/********************************************************************/ + +/** Decodes ec parameter from a memory buffer. + * \param key a pointer to a EC_KEY object which should be used (or NULL) + * \param in pointer to memory with the DER encoded ec parameters + * \param len length of the DER encoded ec parameters + * \return a EC_KEY object with the decoded parameters or NULL if an error + * occurred. + */ +EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes ec parameter and stores the result in a buffer. + * \param key the EC_KEY object with ec parameters to encode + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred. + */ +int i2d_ECParameters(EC_KEY *key, unsigned char **out); + +/********************************************************************/ +/* de- and encoding functions for EC public key */ +/* (octet string, not DER -- hence 'o2i' and 'i2o') */ +/********************************************************************/ + +/** Decodes a ec public key from a octet string. + * \param key a pointer to a EC_KEY object which should be used + * \param in memory buffer with the encoded public key + * \param len length of the encoded public key + * \return EC_KEY object with decoded public key or NULL if an error + * occurred. + */ +EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len); + +/** Encodes a ec public key in an octet string. + * \param key the EC_KEY object with the public key + * \param out the buffer for the result (if NULL the function returns number + * of bytes needed). + * \return 1 on success and 0 if an error occurred + */ +int i2o_ECPublicKey(const EC_KEY *key, unsigned char **out); + +/** Prints out the ec parameters on human readable form. + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print(BIO *bp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param bp BIO object to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print(BIO *bp, const EC_KEY *key, int off); + +# ifndef OPENSSL_NO_STDIO +/** Prints out the ec parameters on human readable form. + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \return 1 on success and 0 if an error occurred + */ +int ECParameters_print_fp(FILE *fp, const EC_KEY *key); + +/** Prints out the contents of a EC_KEY object + * \param fp file descriptor to which the information is printed + * \param key EC_KEY object + * \param off line offset + * \return 1 on success and 0 if an error occurred + */ +int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off); + +# endif + +const EC_KEY_METHOD *EC_KEY_OpenSSL(void); +const EC_KEY_METHOD *EC_KEY_get_default_method(void); +void EC_KEY_set_default_method(const EC_KEY_METHOD *meth); +const EC_KEY_METHOD *EC_KEY_get_method(const EC_KEY *key); +int EC_KEY_set_method(EC_KEY *key, const EC_KEY_METHOD *meth); +EC_KEY *EC_KEY_new_method(ENGINE *engine); + +/** The old name for ecdh_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +int ECDH_KDF_X9_62(unsigned char *out, size_t outlen, + const unsigned char *Z, size_t Zlen, + const unsigned char *sinfo, size_t sinfolen, + const EVP_MD *md); + +int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, + const EC_KEY *ecdh, + void *(*KDF) (const void *in, size_t inlen, + void *out, size_t *outlen)); + +typedef struct ECDSA_SIG_st ECDSA_SIG; + +/** Allocates and initialize a ECDSA_SIG structure + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_SIG_new(void); + +/** frees a ECDSA_SIG structure + * \param sig pointer to the ECDSA_SIG structure + */ +void ECDSA_SIG_free(ECDSA_SIG *sig); + +/** DER encode content of ECDSA_SIG object (note: this function modifies *pp + * (*pp += length of the DER encoded signature)). + * \param sig pointer to the ECDSA_SIG object + * \param pp pointer to a unsigned char pointer for the output or NULL + * \return the length of the DER encoded ECDSA_SIG object or a negative value + * on error + */ +int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); + +/** Decodes a DER encoded ECDSA signature (note: this function changes *pp + * (*pp += len)). + * \param sig pointer to ECDSA_SIG pointer (may be NULL) + * \param pp memory buffer with the DER encoded signature + * \param len length of the buffer + * \return pointer to the decoded ECDSA_SIG structure (or NULL) + */ +ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); + +/** Accessor for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param pr pointer to BIGNUM pointer for r (may be NULL) + * \param ps pointer to BIGNUM pointer for s (may be NULL) + */ +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps); + +/** Accessor for r field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_r(const ECDSA_SIG *sig); + +/** Accessor for s field of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + */ +const BIGNUM *ECDSA_SIG_get0_s(const ECDSA_SIG *sig); + +/** Setter for r and s fields of ECDSA_SIG + * \param sig pointer to ECDSA_SIG structure + * \param r pointer to BIGNUM for r (may be NULL) + * \param s pointer to BIGNUM for s (may be NULL) + */ +int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s); + +/** Computes the ECDSA signature of the given hash value using + * the supplied private key and returns the created signature. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, + EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return pointer to a ECDSA_SIG structure or NULL if an error occurred + */ +ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, + const BIGNUM *kinv, const BIGNUM *rp, + EC_KEY *eckey); + +/** Verifies that the supplied signature is a valid ECDSA + * signature of the supplied hash value using the supplied public key. + * \param dgst pointer to the hash value + * \param dgst_len length of the hash value + * \param sig ECDSA_SIG structure + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, + const ECDSA_SIG *sig, EC_KEY *eckey); + +/** Precompute parts of the signing operation + * \param eckey EC_KEY object containing a private EC key + * \param ctx BN_CTX object (optional) + * \param kinv BIGNUM pointer for the inverse of k + * \param rp BIGNUM pointer for x coordinate of k * generator + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig memory for the DER encoded created signature + * \param siglen pointer to the length of the returned signature + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); + +/** Computes ECDSA signature of a given hash value using the supplied + * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). + * \param type this parameter is ignored + * \param dgst pointer to the hash value to sign + * \param dgstlen length of the hash value + * \param sig buffer to hold the DER encoded signature + * \param siglen pointer to the length of the returned signature + * \param kinv BIGNUM with a pre-computed inverse k (optional) + * \param rp BIGNUM with a pre-computed rp value (optional), + * see ECDSA_sign_setup + * \param eckey EC_KEY object containing a private EC key + * \return 1 on success and 0 otherwise + */ +int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, + unsigned char *sig, unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); + +/** Verifies that the given signature is valid ECDSA signature + * of the supplied hash value using the specified public key. + * \param type this parameter is ignored + * \param dgst pointer to the hash value + * \param dgstlen length of the hash value + * \param sig pointer to the DER encoded signature + * \param siglen length of the DER encoded signature + * \param eckey EC_KEY object containing a public EC key + * \return 1 if the signature is valid, 0 if the signature is invalid + * and -1 on error + */ +int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, + const unsigned char *sig, int siglen, EC_KEY *eckey); + +/** Returns the maximum length of the DER encoded signature + * \param eckey EC_KEY object + * \return numbers of bytes required for the DER encoded signature + */ +int ECDSA_size(const EC_KEY *eckey); + +/********************************************************************/ +/* EC_KEY_METHOD constructors, destructors, writers and accessors */ +/********************************************************************/ + +EC_KEY_METHOD *EC_KEY_METHOD_new(const EC_KEY_METHOD *meth); +void EC_KEY_METHOD_free(EC_KEY_METHOD *meth); +void EC_KEY_METHOD_set_init(EC_KEY_METHOD *meth, + int (*init)(EC_KEY *key), + void (*finish)(EC_KEY *key), + int (*copy)(EC_KEY *dest, const EC_KEY *src), + int (*set_group)(EC_KEY *key, const EC_GROUP *grp), + int (*set_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (*set_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_set_keygen(EC_KEY_METHOD *meth, + int (*keygen)(EC_KEY *key)); + +void EC_KEY_METHOD_set_compute_key(EC_KEY_METHOD *meth, + int (*ckey)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_set_sign(EC_KEY_METHOD *meth, + int (*sign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (*sign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(*sign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_set_verify(EC_KEY_METHOD *meth, + int (*verify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (*verify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_init(const EC_KEY_METHOD *meth, + int (**pinit)(EC_KEY *key), + void (**pfinish)(EC_KEY *key), + int (**pcopy)(EC_KEY *dest, const EC_KEY *src), + int (**pset_group)(EC_KEY *key, + const EC_GROUP *grp), + int (**pset_private)(EC_KEY *key, + const BIGNUM *priv_key), + int (**pset_public)(EC_KEY *key, + const EC_POINT *pub_key)); + +void EC_KEY_METHOD_get_keygen(const EC_KEY_METHOD *meth, + int (**pkeygen)(EC_KEY *key)); + +void EC_KEY_METHOD_get_compute_key(const EC_KEY_METHOD *meth, + int (**pck)(unsigned char **psec, + size_t *pseclen, + const EC_POINT *pub_key, + const EC_KEY *ecdh)); + +void EC_KEY_METHOD_get_sign(const EC_KEY_METHOD *meth, + int (**psign)(int type, const unsigned char *dgst, + int dlen, unsigned char *sig, + unsigned int *siglen, + const BIGNUM *kinv, const BIGNUM *r, + EC_KEY *eckey), + int (**psign_setup)(EC_KEY *eckey, BN_CTX *ctx_in, + BIGNUM **kinvp, BIGNUM **rp), + ECDSA_SIG *(**psign_sig)(const unsigned char *dgst, + int dgst_len, + const BIGNUM *in_kinv, + const BIGNUM *in_r, + EC_KEY *eckey)); + +void EC_KEY_METHOD_get_verify(const EC_KEY_METHOD *meth, + int (**pverify)(int type, const unsigned + char *dgst, int dgst_len, + const unsigned char *sigbuf, + int sig_len, EC_KEY *eckey), + int (**pverify_sig)(const unsigned char *dgst, + int dgst_len, + const ECDSA_SIG *sig, + EC_KEY *eckey)); + +# define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) + +# ifndef __cplusplus +# if defined(__SUNPRO_C) +# if __SUNPRO_C >= 0x520 +# pragma error_messages (default,E_ARRAY_OF_INCOMPLETE_NONAME,E_ARRAY_OF_INCOMPLETE) +# endif +# endif +# endif + +# define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL) + +# define EVP_PKEY_CTX_set_ec_param_enc(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_PARAMGEN|EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_EC_PARAM_ENC, flag, NULL) + +# define EVP_PKEY_CTX_set_ecdh_cofactor_mode(ctx, flag) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, flag, NULL) + +# define EVP_PKEY_CTX_get_ecdh_cofactor_mode(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_ECDH_COFACTOR, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_type(ctx, kdf) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, kdf, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_type(ctx) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_TYPE, -2, NULL) + +# define EVP_PKEY_CTX_set_ecdh_kdf_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_ecdh_kdf_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_ecdh_kdf_outlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_OUTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_ecdh_kdf_outlen(ctx, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN, 0, \ + (void *)(plen)) + +# define EVP_PKEY_CTX_set0_ecdh_kdf_ukm(ctx, p, plen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_EC_KDF_UKM, plen, (void *)(p)) + +# define EVP_PKEY_CTX_get0_ecdh_kdf_ukm(ctx, p) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, \ + EVP_PKEY_OP_DERIVE, \ + EVP_PKEY_CTRL_GET_EC_KDF_UKM, 0, (void *)(p)) + +/* SM2 will skip the operation check so no need to pass operation here */ +# define EVP_PKEY_CTX_set1_id(ctx, id, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_SET1_ID, (int)id_len, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id(ctx, id) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID, 0, (void*)(id)) + +# define EVP_PKEY_CTX_get1_id_len(ctx, id_len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, -1, \ + EVP_PKEY_CTRL_GET1_ID_LEN, 0, (void*)(id_len)) + +# define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_EC_PARAM_ENC (EVP_PKEY_ALG_CTRL + 2) +# define EVP_PKEY_CTRL_EC_ECDH_COFACTOR (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_EC_KDF_TYPE (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 5) +# define EVP_PKEY_CTRL_GET_EC_KDF_MD (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_EC_KDF_OUTLEN (EVP_PKEY_ALG_CTRL + 8) +# define EVP_PKEY_CTRL_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_GET_EC_KDF_UKM (EVP_PKEY_ALG_CTRL + 10) +# define EVP_PKEY_CTRL_SET1_ID (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET1_ID (EVP_PKEY_ALG_CTRL + 12) +# define EVP_PKEY_CTRL_GET1_ID_LEN (EVP_PKEY_ALG_CTRL + 13) +/* KDF types */ +# define EVP_PKEY_ECDH_KDF_NONE 1 +# define EVP_PKEY_ECDH_KDF_X9_63 2 +/** The old name for EVP_PKEY_ECDH_KDF_X9_63 + * The ECDH KDF specification has been mistakingly attributed to ANSI X9.62, + * it is actually specified in ANSI X9.63. + * This identifier is retained for backwards compatibility + */ +# define EVP_PKEY_ECDH_KDF_X9_62 EVP_PKEY_ECDH_KDF_X9_63 + + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/ecdh.h b/include/openssl/openssl/ecdh.h new file mode 100644 index 00000000..681f3d5e --- /dev/null +++ b/include/openssl/openssl/ecdh.h @@ -0,0 +1,10 @@ +/* + * Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include diff --git a/include/openssl/openssl/ecerr.h b/include/openssl/openssl/ecerr.h new file mode 100644 index 00000000..51738113 --- /dev/null +++ b/include/openssl/openssl/ecerr.h @@ -0,0 +1,276 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ECERR_H +# define HEADER_ECERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# include + +# ifndef OPENSSL_NO_EC + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EC_strings(void); + +/* + * EC function codes. + */ +# define EC_F_BN_TO_FELEM 224 +# define EC_F_D2I_ECPARAMETERS 144 +# define EC_F_D2I_ECPKPARAMETERS 145 +# define EC_F_D2I_ECPRIVATEKEY 146 +# define EC_F_DO_EC_KEY_PRINT 221 +# define EC_F_ECDH_CMS_DECRYPT 238 +# define EC_F_ECDH_CMS_SET_SHARED_INFO 239 +# define EC_F_ECDH_COMPUTE_KEY 246 +# define EC_F_ECDH_SIMPLE_COMPUTE_KEY 257 +# define EC_F_ECDSA_DO_SIGN_EX 251 +# define EC_F_ECDSA_DO_VERIFY 252 +# define EC_F_ECDSA_SIGN_EX 254 +# define EC_F_ECDSA_SIGN_SETUP 248 +# define EC_F_ECDSA_SIG_NEW 265 +# define EC_F_ECDSA_VERIFY 253 +# define EC_F_ECD_ITEM_VERIFY 270 +# define EC_F_ECKEY_PARAM2TYPE 223 +# define EC_F_ECKEY_PARAM_DECODE 212 +# define EC_F_ECKEY_PRIV_DECODE 213 +# define EC_F_ECKEY_PRIV_ENCODE 214 +# define EC_F_ECKEY_PUB_DECODE 215 +# define EC_F_ECKEY_PUB_ENCODE 216 +# define EC_F_ECKEY_TYPE2PARAM 220 +# define EC_F_ECPARAMETERS_PRINT 147 +# define EC_F_ECPARAMETERS_PRINT_FP 148 +# define EC_F_ECPKPARAMETERS_PRINT 149 +# define EC_F_ECPKPARAMETERS_PRINT_FP 150 +# define EC_F_ECP_NISTZ256_GET_AFFINE 240 +# define EC_F_ECP_NISTZ256_INV_MOD_ORD 275 +# define EC_F_ECP_NISTZ256_MULT_PRECOMPUTE 243 +# define EC_F_ECP_NISTZ256_POINTS_MUL 241 +# define EC_F_ECP_NISTZ256_PRE_COMP_NEW 244 +# define EC_F_ECP_NISTZ256_WINDOWED_MUL 242 +# define EC_F_ECX_KEY_OP 266 +# define EC_F_ECX_PRIV_ENCODE 267 +# define EC_F_ECX_PUB_ENCODE 268 +# define EC_F_EC_ASN1_GROUP2CURVE 153 +# define EC_F_EC_ASN1_GROUP2FIELDID 154 +# define EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY 208 +# define EC_F_EC_GF2M_SIMPLE_FIELD_INV 296 +# define EC_F_EC_GF2M_SIMPLE_GROUP_CHECK_DISCRIMINANT 159 +# define EC_F_EC_GF2M_SIMPLE_GROUP_SET_CURVE 195 +# define EC_F_EC_GF2M_SIMPLE_LADDER_POST 285 +# define EC_F_EC_GF2M_SIMPLE_LADDER_PRE 288 +# define EC_F_EC_GF2M_SIMPLE_OCT2POINT 160 +# define EC_F_EC_GF2M_SIMPLE_POINT2OCT 161 +# define EC_F_EC_GF2M_SIMPLE_POINTS_MUL 289 +# define EC_F_EC_GF2M_SIMPLE_POINT_GET_AFFINE_COORDINATES 162 +# define EC_F_EC_GF2M_SIMPLE_POINT_SET_AFFINE_COORDINATES 163 +# define EC_F_EC_GF2M_SIMPLE_SET_COMPRESSED_COORDINATES 164 +# define EC_F_EC_GFP_MONT_FIELD_DECODE 133 +# define EC_F_EC_GFP_MONT_FIELD_ENCODE 134 +# define EC_F_EC_GFP_MONT_FIELD_INV 297 +# define EC_F_EC_GFP_MONT_FIELD_MUL 131 +# define EC_F_EC_GFP_MONT_FIELD_SET_TO_ONE 209 +# define EC_F_EC_GFP_MONT_FIELD_SQR 132 +# define EC_F_EC_GFP_MONT_GROUP_SET_CURVE 189 +# define EC_F_EC_GFP_NISTP224_GROUP_SET_CURVE 225 +# define EC_F_EC_GFP_NISTP224_POINTS_MUL 228 +# define EC_F_EC_GFP_NISTP224_POINT_GET_AFFINE_COORDINATES 226 +# define EC_F_EC_GFP_NISTP256_GROUP_SET_CURVE 230 +# define EC_F_EC_GFP_NISTP256_POINTS_MUL 231 +# define EC_F_EC_GFP_NISTP256_POINT_GET_AFFINE_COORDINATES 232 +# define EC_F_EC_GFP_NISTP521_GROUP_SET_CURVE 233 +# define EC_F_EC_GFP_NISTP521_POINTS_MUL 234 +# define EC_F_EC_GFP_NISTP521_POINT_GET_AFFINE_COORDINATES 235 +# define EC_F_EC_GFP_NIST_FIELD_MUL 200 +# define EC_F_EC_GFP_NIST_FIELD_SQR 201 +# define EC_F_EC_GFP_NIST_GROUP_SET_CURVE 202 +# define EC_F_EC_GFP_SIMPLE_BLIND_COORDINATES 287 +# define EC_F_EC_GFP_SIMPLE_FIELD_INV 298 +# define EC_F_EC_GFP_SIMPLE_GROUP_CHECK_DISCRIMINANT 165 +# define EC_F_EC_GFP_SIMPLE_GROUP_SET_CURVE 166 +# define EC_F_EC_GFP_SIMPLE_MAKE_AFFINE 102 +# define EC_F_EC_GFP_SIMPLE_OCT2POINT 103 +# define EC_F_EC_GFP_SIMPLE_POINT2OCT 104 +# define EC_F_EC_GFP_SIMPLE_POINTS_MAKE_AFFINE 137 +# define EC_F_EC_GFP_SIMPLE_POINT_GET_AFFINE_COORDINATES 167 +# define EC_F_EC_GFP_SIMPLE_POINT_SET_AFFINE_COORDINATES 168 +# define EC_F_EC_GFP_SIMPLE_SET_COMPRESSED_COORDINATES 169 +# define EC_F_EC_GROUP_CHECK 170 +# define EC_F_EC_GROUP_CHECK_DISCRIMINANT 171 +# define EC_F_EC_GROUP_COPY 106 +# define EC_F_EC_GROUP_GET_CURVE 291 +# define EC_F_EC_GROUP_GET_CURVE_GF2M 172 +# define EC_F_EC_GROUP_GET_CURVE_GFP 130 +# define EC_F_EC_GROUP_GET_DEGREE 173 +# define EC_F_EC_GROUP_GET_ECPARAMETERS 261 +# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262 +# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193 +# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194 +# define EC_F_EC_GROUP_NEW 108 +# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174 +# define EC_F_EC_GROUP_NEW_FROM_DATA 175 +# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263 +# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264 +# define EC_F_EC_GROUP_SET_CURVE 292 +# define EC_F_EC_GROUP_SET_CURVE_GF2M 176 +# define EC_F_EC_GROUP_SET_CURVE_GFP 109 +# define EC_F_EC_GROUP_SET_GENERATOR 111 +# define EC_F_EC_GROUP_SET_SEED 286 +# define EC_F_EC_KEY_CHECK_KEY 177 +# define EC_F_EC_KEY_COPY 178 +# define EC_F_EC_KEY_GENERATE_KEY 179 +# define EC_F_EC_KEY_NEW 182 +# define EC_F_EC_KEY_NEW_METHOD 245 +# define EC_F_EC_KEY_OCT2PRIV 255 +# define EC_F_EC_KEY_PRINT 180 +# define EC_F_EC_KEY_PRINT_FP 181 +# define EC_F_EC_KEY_PRIV2BUF 279 +# define EC_F_EC_KEY_PRIV2OCT 256 +# define EC_F_EC_KEY_SET_PUBLIC_KEY_AFFINE_COORDINATES 229 +# define EC_F_EC_KEY_SIMPLE_CHECK_KEY 258 +# define EC_F_EC_KEY_SIMPLE_OCT2PRIV 259 +# define EC_F_EC_KEY_SIMPLE_PRIV2OCT 260 +# define EC_F_EC_PKEY_CHECK 273 +# define EC_F_EC_PKEY_PARAM_CHECK 274 +# define EC_F_EC_POINTS_MAKE_AFFINE 136 +# define EC_F_EC_POINTS_MUL 290 +# define EC_F_EC_POINT_ADD 112 +# define EC_F_EC_POINT_BN2POINT 280 +# define EC_F_EC_POINT_CMP 113 +# define EC_F_EC_POINT_COPY 114 +# define EC_F_EC_POINT_DBL 115 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES 293 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GF2M 183 +# define EC_F_EC_POINT_GET_AFFINE_COORDINATES_GFP 116 +# define EC_F_EC_POINT_GET_JPROJECTIVE_COORDINATES_GFP 117 +# define EC_F_EC_POINT_INVERT 210 +# define EC_F_EC_POINT_IS_AT_INFINITY 118 +# define EC_F_EC_POINT_IS_ON_CURVE 119 +# define EC_F_EC_POINT_MAKE_AFFINE 120 +# define EC_F_EC_POINT_NEW 121 +# define EC_F_EC_POINT_OCT2POINT 122 +# define EC_F_EC_POINT_POINT2BUF 281 +# define EC_F_EC_POINT_POINT2OCT 123 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES 294 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GF2M 185 +# define EC_F_EC_POINT_SET_AFFINE_COORDINATES_GFP 124 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES 295 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GF2M 186 +# define EC_F_EC_POINT_SET_COMPRESSED_COORDINATES_GFP 125 +# define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126 +# define EC_F_EC_POINT_SET_TO_INFINITY 127 +# define EC_F_EC_PRE_COMP_NEW 196 +# define EC_F_EC_SCALAR_MUL_LADDER 284 +# define EC_F_EC_WNAF_MUL 187 +# define EC_F_EC_WNAF_PRECOMPUTE_MULT 188 +# define EC_F_I2D_ECPARAMETERS 190 +# define EC_F_I2D_ECPKPARAMETERS 191 +# define EC_F_I2D_ECPRIVATEKEY 192 +# define EC_F_I2O_ECPUBLICKEY 151 +# define EC_F_NISTP224_PRE_COMP_NEW 227 +# define EC_F_NISTP256_PRE_COMP_NEW 236 +# define EC_F_NISTP521_PRE_COMP_NEW 237 +# define EC_F_O2I_ECPUBLICKEY 152 +# define EC_F_OLD_EC_PRIV_DECODE 222 +# define EC_F_OSSL_ECDH_COMPUTE_KEY 247 +# define EC_F_OSSL_ECDSA_SIGN_SIG 249 +# define EC_F_OSSL_ECDSA_VERIFY_SIG 250 +# define EC_F_PKEY_ECD_CTRL 271 +# define EC_F_PKEY_ECD_DIGESTSIGN 272 +# define EC_F_PKEY_ECD_DIGESTSIGN25519 276 +# define EC_F_PKEY_ECD_DIGESTSIGN448 277 +# define EC_F_PKEY_ECX_DERIVE 269 +# define EC_F_PKEY_EC_CTRL 197 +# define EC_F_PKEY_EC_CTRL_STR 198 +# define EC_F_PKEY_EC_DERIVE 217 +# define EC_F_PKEY_EC_INIT 282 +# define EC_F_PKEY_EC_KDF_DERIVE 283 +# define EC_F_PKEY_EC_KEYGEN 199 +# define EC_F_PKEY_EC_PARAMGEN 219 +# define EC_F_PKEY_EC_SIGN 218 +# define EC_F_VALIDATE_ECX_DERIVE 278 + +/* + * EC reason codes. + */ +# define EC_R_ASN1_ERROR 115 +# define EC_R_BAD_SIGNATURE 156 +# define EC_R_BIGNUM_OUT_OF_RANGE 144 +# define EC_R_BUFFER_TOO_SMALL 100 +# define EC_R_CANNOT_INVERT 165 +# define EC_R_COORDINATES_OUT_OF_RANGE 146 +# define EC_R_CURVE_DOES_NOT_SUPPORT_ECDH 160 +# define EC_R_CURVE_DOES_NOT_SUPPORT_SIGNING 159 +# define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 +# define EC_R_DECODE_ERROR 142 +# define EC_R_DISCRIMINANT_IS_ZERO 118 +# define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 +# define EC_R_FIELD_TOO_LARGE 143 +# define EC_R_GF2M_NOT_SUPPORTED 147 +# define EC_R_GROUP2PKPARAMETERS_FAILURE 120 +# define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 +# define EC_R_INCOMPATIBLE_OBJECTS 101 +# define EC_R_INVALID_ARGUMENT 112 +# define EC_R_INVALID_COMPRESSED_POINT 110 +# define EC_R_INVALID_COMPRESSION_BIT 109 +# define EC_R_INVALID_CURVE 141 +# define EC_R_INVALID_DIGEST 151 +# define EC_R_INVALID_DIGEST_TYPE 138 +# define EC_R_INVALID_ENCODING 102 +# define EC_R_INVALID_FIELD 103 +# define EC_R_INVALID_FORM 104 +# define EC_R_INVALID_GROUP_ORDER 122 +# define EC_R_INVALID_KEY 116 +# define EC_R_INVALID_OUTPUT_LENGTH 161 +# define EC_R_INVALID_PEER_KEY 133 +# define EC_R_INVALID_PENTANOMIAL_BASIS 132 +# define EC_R_INVALID_PRIVATE_KEY 123 +# define EC_R_INVALID_TRINOMIAL_BASIS 137 +# define EC_R_KDF_PARAMETER_ERROR 148 +# define EC_R_KEYS_NOT_SET 140 +# define EC_R_LADDER_POST_FAILURE 136 +# define EC_R_LADDER_PRE_FAILURE 153 +# define EC_R_LADDER_STEP_FAILURE 162 +# define EC_R_MISSING_OID 167 +# define EC_R_MISSING_PARAMETERS 124 +# define EC_R_MISSING_PRIVATE_KEY 125 +# define EC_R_NEED_NEW_SETUP_VALUES 157 +# define EC_R_NOT_A_NIST_PRIME 135 +# define EC_R_NOT_IMPLEMENTED 126 +# define EC_R_NOT_INITIALIZED 111 +# define EC_R_NO_PARAMETERS_SET 139 +# define EC_R_NO_PRIVATE_VALUE 154 +# define EC_R_OPERATION_NOT_SUPPORTED 152 +# define EC_R_PASSED_NULL_PARAMETER 134 +# define EC_R_PEER_KEY_ERROR 149 +# define EC_R_PKPARAMETERS2GROUP_FAILURE 127 +# define EC_R_POINT_ARITHMETIC_FAILURE 155 +# define EC_R_POINT_AT_INFINITY 106 +# define EC_R_POINT_COORDINATES_BLIND_FAILURE 163 +# define EC_R_POINT_IS_NOT_ON_CURVE 107 +# define EC_R_RANDOM_NUMBER_GENERATION_FAILED 158 +# define EC_R_SHARED_INFO_ERROR 150 +# define EC_R_SLOT_FULL 108 +# define EC_R_UNDEFINED_GENERATOR 113 +# define EC_R_UNDEFINED_ORDER 128 +# define EC_R_UNKNOWN_COFACTOR 164 +# define EC_R_UNKNOWN_GROUP 129 +# define EC_R_UNKNOWN_ORDER 114 +# define EC_R_UNSUPPORTED_FIELD 131 +# define EC_R_WRONG_CURVE_PARAMETERS 145 +# define EC_R_WRONG_ORDER 130 + +# endif +#endif diff --git a/include/openssl/openssl/evp.h b/include/openssl/openssl/evp.h new file mode 100644 index 00000000..a411f3f2 --- /dev/null +++ b/include/openssl/openssl/evp.h @@ -0,0 +1,1666 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_ENVELOPE_H +# define HEADER_ENVELOPE_H + +# include +# include +# include +# include +# include + +# define EVP_MAX_MD_SIZE 64/* longest known is SHA512 */ +# define EVP_MAX_KEY_LENGTH 64 +# define EVP_MAX_IV_LENGTH 16 +# define EVP_MAX_BLOCK_LENGTH 32 + +# define PKCS5_SALT_LEN 8 +/* Default PKCS#5 iteration count */ +# define PKCS5_DEFAULT_ITER 2048 + +# include + +# define EVP_PK_RSA 0x0001 +# define EVP_PK_DSA 0x0002 +# define EVP_PK_DH 0x0004 +# define EVP_PK_EC 0x0008 +# define EVP_PKT_SIGN 0x0010 +# define EVP_PKT_ENC 0x0020 +# define EVP_PKT_EXCH 0x0040 +# define EVP_PKS_RSA 0x0100 +# define EVP_PKS_DSA 0x0200 +# define EVP_PKS_EC 0x0400 + +# define EVP_PKEY_NONE NID_undef +# define EVP_PKEY_RSA NID_rsaEncryption +# define EVP_PKEY_RSA2 NID_rsa +# define EVP_PKEY_RSA_PSS NID_rsassaPss +# define EVP_PKEY_DSA NID_dsa +# define EVP_PKEY_DSA1 NID_dsa_2 +# define EVP_PKEY_DSA2 NID_dsaWithSHA +# define EVP_PKEY_DSA3 NID_dsaWithSHA1 +# define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 +# define EVP_PKEY_DH NID_dhKeyAgreement +# define EVP_PKEY_DHX NID_dhpublicnumber +# define EVP_PKEY_EC NID_X9_62_id_ecPublicKey +# define EVP_PKEY_SM2 NID_sm2 +# define EVP_PKEY_HMAC NID_hmac +# define EVP_PKEY_CMAC NID_cmac +# define EVP_PKEY_SCRYPT NID_id_scrypt +# define EVP_PKEY_TLS1_PRF NID_tls1_prf +# define EVP_PKEY_HKDF NID_hkdf +# define EVP_PKEY_POLY1305 NID_poly1305 +# define EVP_PKEY_SIPHASH NID_siphash +# define EVP_PKEY_X25519 NID_X25519 +# define EVP_PKEY_ED25519 NID_ED25519 +# define EVP_PKEY_X448 NID_X448 +# define EVP_PKEY_ED448 NID_ED448 + +#ifdef __cplusplus +extern "C" { +#endif + +# define EVP_PKEY_MO_SIGN 0x0001 +# define EVP_PKEY_MO_VERIFY 0x0002 +# define EVP_PKEY_MO_ENCRYPT 0x0004 +# define EVP_PKEY_MO_DECRYPT 0x0008 + +# ifndef EVP_MD +EVP_MD *EVP_MD_meth_new(int md_type, int pkey_type); +EVP_MD *EVP_MD_meth_dup(const EVP_MD *md); +void EVP_MD_meth_free(EVP_MD *md); + +int EVP_MD_meth_set_input_blocksize(EVP_MD *md, int blocksize); +int EVP_MD_meth_set_result_size(EVP_MD *md, int resultsize); +int EVP_MD_meth_set_app_datasize(EVP_MD *md, int datasize); +int EVP_MD_meth_set_flags(EVP_MD *md, unsigned long flags); +int EVP_MD_meth_set_init(EVP_MD *md, int (*init)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_update(EVP_MD *md, int (*update)(EVP_MD_CTX *ctx, + const void *data, + size_t count)); +int EVP_MD_meth_set_final(EVP_MD *md, int (*final)(EVP_MD_CTX *ctx, + unsigned char *md)); +int EVP_MD_meth_set_copy(EVP_MD *md, int (*copy)(EVP_MD_CTX *to, + const EVP_MD_CTX *from)); +int EVP_MD_meth_set_cleanup(EVP_MD *md, int (*cleanup)(EVP_MD_CTX *ctx)); +int EVP_MD_meth_set_ctrl(EVP_MD *md, int (*ctrl)(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2)); + +int EVP_MD_meth_get_input_blocksize(const EVP_MD *md); +int EVP_MD_meth_get_result_size(const EVP_MD *md); +int EVP_MD_meth_get_app_datasize(const EVP_MD *md); +unsigned long EVP_MD_meth_get_flags(const EVP_MD *md); +int (*EVP_MD_meth_get_init(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_update(const EVP_MD *md))(EVP_MD_CTX *ctx, + const void *data, + size_t count); +int (*EVP_MD_meth_get_final(const EVP_MD *md))(EVP_MD_CTX *ctx, + unsigned char *md); +int (*EVP_MD_meth_get_copy(const EVP_MD *md))(EVP_MD_CTX *to, + const EVP_MD_CTX *from); +int (*EVP_MD_meth_get_cleanup(const EVP_MD *md))(EVP_MD_CTX *ctx); +int (*EVP_MD_meth_get_ctrl(const EVP_MD *md))(EVP_MD_CTX *ctx, int cmd, + int p1, void *p2); + +/* digest can only handle a single block */ +# define EVP_MD_FLAG_ONESHOT 0x0001 + +/* digest is extensible-output function, XOF */ +# define EVP_MD_FLAG_XOF 0x0002 + +/* DigestAlgorithmIdentifier flags... */ + +# define EVP_MD_FLAG_DIGALGID_MASK 0x0018 + +/* NULL or absent parameter accepted. Use NULL */ + +# define EVP_MD_FLAG_DIGALGID_NULL 0x0000 + +/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */ + +# define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008 + +/* Custom handling via ctrl */ + +# define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018 + +/* Note if suitable for use in FIPS mode */ +# define EVP_MD_FLAG_FIPS 0x0400 + +/* Digest ctrls */ + +# define EVP_MD_CTRL_DIGALGID 0x1 +# define EVP_MD_CTRL_MICALG 0x2 +# define EVP_MD_CTRL_XOF_LEN 0x3 + +/* Minimum Algorithm specific ctrl value */ + +# define EVP_MD_CTRL_ALG_CTRL 0x1000 + +# endif /* !EVP_MD */ + +/* values for EVP_MD_CTX flags */ + +# define EVP_MD_CTX_FLAG_ONESHOT 0x0001/* digest update will be + * called once only */ +# define EVP_MD_CTX_FLAG_CLEANED 0x0002/* context has already been + * cleaned */ +# define EVP_MD_CTX_FLAG_REUSE 0x0004/* Don't free up ctx->md_data + * in EVP_MD_CTX_reset */ +/* + * FIPS and pad options are ignored in 1.0.0, definitions are here so we + * don't accidentally reuse the values for other purposes. + */ + +# define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008/* Allow use of non FIPS + * digest in FIPS mode */ + +/* + * The following PAD options are also currently ignored in 1.0.0, digest + * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*() + * instead. + */ +# define EVP_MD_CTX_FLAG_PAD_MASK 0xF0/* RSA mode to use */ +# define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00/* PKCS#1 v1.5 mode */ +# define EVP_MD_CTX_FLAG_PAD_X931 0x10/* X9.31 mode */ +# define EVP_MD_CTX_FLAG_PAD_PSS 0x20/* PSS mode */ + +# define EVP_MD_CTX_FLAG_NO_INIT 0x0100/* Don't initialize md_data */ +/* + * Some functions such as EVP_DigestSign only finalise copies of internal + * contexts so additional data can be included after the finalisation call. + * This is inefficient if this functionality is not required: it is disabled + * if the following flag is set. + */ +# define EVP_MD_CTX_FLAG_FINALISE 0x0200 +/* NOTE: 0x0400 is reserved for internal usage */ + +EVP_CIPHER *EVP_CIPHER_meth_new(int cipher_type, int block_size, int key_len); +EVP_CIPHER *EVP_CIPHER_meth_dup(const EVP_CIPHER *cipher); +void EVP_CIPHER_meth_free(EVP_CIPHER *cipher); + +int EVP_CIPHER_meth_set_iv_length(EVP_CIPHER *cipher, int iv_len); +int EVP_CIPHER_meth_set_flags(EVP_CIPHER *cipher, unsigned long flags); +int EVP_CIPHER_meth_set_impl_ctx_size(EVP_CIPHER *cipher, int ctx_size); +int EVP_CIPHER_meth_set_init(EVP_CIPHER *cipher, + int (*init) (EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc)); +int EVP_CIPHER_meth_set_do_cipher(EVP_CIPHER *cipher, + int (*do_cipher) (EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl)); +int EVP_CIPHER_meth_set_cleanup(EVP_CIPHER *cipher, + int (*cleanup) (EVP_CIPHER_CTX *)); +int EVP_CIPHER_meth_set_set_asn1_params(EVP_CIPHER *cipher, + int (*set_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_get_asn1_params(EVP_CIPHER *cipher, + int (*get_asn1_parameters) (EVP_CIPHER_CTX *, + ASN1_TYPE *)); +int EVP_CIPHER_meth_set_ctrl(EVP_CIPHER *cipher, + int (*ctrl) (EVP_CIPHER_CTX *, int type, + int arg, void *ptr)); + +int (*EVP_CIPHER_meth_get_init(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + const unsigned char *key, + const unsigned char *iv, + int enc); +int (*EVP_CIPHER_meth_get_do_cipher(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *ctx, + unsigned char *out, + const unsigned char *in, + size_t inl); +int (*EVP_CIPHER_meth_get_cleanup(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *); +int (*EVP_CIPHER_meth_get_set_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_get_asn1_params(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + ASN1_TYPE *); +int (*EVP_CIPHER_meth_get_ctrl(const EVP_CIPHER *cipher))(EVP_CIPHER_CTX *, + int type, int arg, + void *ptr); + +/* Values for cipher flags */ + +/* Modes for ciphers */ + +# define EVP_CIPH_STREAM_CIPHER 0x0 +# define EVP_CIPH_ECB_MODE 0x1 +# define EVP_CIPH_CBC_MODE 0x2 +# define EVP_CIPH_CFB_MODE 0x3 +# define EVP_CIPH_OFB_MODE 0x4 +# define EVP_CIPH_CTR_MODE 0x5 +# define EVP_CIPH_GCM_MODE 0x6 +# define EVP_CIPH_CCM_MODE 0x7 +# define EVP_CIPH_XTS_MODE 0x10001 +# define EVP_CIPH_WRAP_MODE 0x10002 +# define EVP_CIPH_OCB_MODE 0x10003 +# define EVP_CIPH_MODE 0xF0007 +/* Set if variable length cipher */ +# define EVP_CIPH_VARIABLE_LENGTH 0x8 +/* Set if the iv handling should be done by the cipher itself */ +# define EVP_CIPH_CUSTOM_IV 0x10 +/* Set if the cipher's init() function should be called if key is NULL */ +# define EVP_CIPH_ALWAYS_CALL_INIT 0x20 +/* Call ctrl() to init cipher parameters */ +# define EVP_CIPH_CTRL_INIT 0x40 +/* Don't use standard key length function */ +# define EVP_CIPH_CUSTOM_KEY_LENGTH 0x80 +/* Don't use standard block padding */ +# define EVP_CIPH_NO_PADDING 0x100 +/* cipher handles random key generation */ +# define EVP_CIPH_RAND_KEY 0x200 +/* cipher has its own additional copying logic */ +# define EVP_CIPH_CUSTOM_COPY 0x400 +/* Don't use standard iv length function */ +# define EVP_CIPH_CUSTOM_IV_LENGTH 0x800 +/* Allow use default ASN1 get/set iv */ +# define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 +/* Buffer length in bits not bytes: CFB1 mode only */ +# define EVP_CIPH_FLAG_LENGTH_BITS 0x2000 +/* Note if suitable for use in FIPS mode */ +# define EVP_CIPH_FLAG_FIPS 0x4000 +/* Allow non FIPS cipher in FIPS mode */ +# define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x8000 +/* + * Cipher handles any and all padding logic as well as finalisation. + */ +# define EVP_CIPH_FLAG_CUSTOM_CIPHER 0x100000 +# define EVP_CIPH_FLAG_AEAD_CIPHER 0x200000 +# define EVP_CIPH_FLAG_TLS1_1_MULTIBLOCK 0x400000 +/* Cipher can handle pipeline operations */ +# define EVP_CIPH_FLAG_PIPELINE 0X800000 + +/* + * Cipher context flag to indicate we can handle wrap mode: if allowed in + * older applications it could overflow buffers. + */ + +# define EVP_CIPHER_CTX_FLAG_WRAP_ALLOW 0x1 + +/* ctrl() values */ + +# define EVP_CTRL_INIT 0x0 +# define EVP_CTRL_SET_KEY_LENGTH 0x1 +# define EVP_CTRL_GET_RC2_KEY_BITS 0x2 +# define EVP_CTRL_SET_RC2_KEY_BITS 0x3 +# define EVP_CTRL_GET_RC5_ROUNDS 0x4 +# define EVP_CTRL_SET_RC5_ROUNDS 0x5 +# define EVP_CTRL_RAND_KEY 0x6 +# define EVP_CTRL_PBE_PRF_NID 0x7 +# define EVP_CTRL_COPY 0x8 +# define EVP_CTRL_AEAD_SET_IVLEN 0x9 +# define EVP_CTRL_AEAD_GET_TAG 0x10 +# define EVP_CTRL_AEAD_SET_TAG 0x11 +# define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 +# define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_GCM_IV_GEN 0x13 +# define EVP_CTRL_CCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN +# define EVP_CTRL_CCM_GET_TAG EVP_CTRL_AEAD_GET_TAG +# define EVP_CTRL_CCM_SET_TAG EVP_CTRL_AEAD_SET_TAG +# define EVP_CTRL_CCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED +# define EVP_CTRL_CCM_SET_L 0x14 +# define EVP_CTRL_CCM_SET_MSGLEN 0x15 +/* + * AEAD cipher deduces payload length and returns number of bytes required to + * store MAC and eventual padding. Subsequent call to EVP_Cipher even + * appends/verifies MAC. + */ +# define EVP_CTRL_AEAD_TLS1_AAD 0x16 +/* Used by composite AEAD ciphers, no-op in GCM, CCM... */ +# define EVP_CTRL_AEAD_SET_MAC_KEY 0x17 +/* Set the GCM invocation field, decrypt only */ +# define EVP_CTRL_GCM_SET_IV_INV 0x18 + +# define EVP_CTRL_TLS1_1_MULTIBLOCK_AAD 0x19 +# define EVP_CTRL_TLS1_1_MULTIBLOCK_ENCRYPT 0x1a +# define EVP_CTRL_TLS1_1_MULTIBLOCK_DECRYPT 0x1b +# define EVP_CTRL_TLS1_1_MULTIBLOCK_MAX_BUFSIZE 0x1c + +# define EVP_CTRL_SSL3_MASTER_SECRET 0x1d + +/* EVP_CTRL_SET_SBOX takes the char * specifying S-boxes */ +# define EVP_CTRL_SET_SBOX 0x1e +/* + * EVP_CTRL_SBOX_USED takes a 'size_t' and 'char *', pointing at a + * pre-allocated buffer with specified size + */ +# define EVP_CTRL_SBOX_USED 0x1f +/* EVP_CTRL_KEY_MESH takes 'size_t' number of bytes to mesh the key after, + * 0 switches meshing off + */ +# define EVP_CTRL_KEY_MESH 0x20 +/* EVP_CTRL_BLOCK_PADDING_MODE takes the padding mode */ +# define EVP_CTRL_BLOCK_PADDING_MODE 0x21 + +/* Set the output buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_OUTPUT_BUFS 0x22 +/* Set the input buffers to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_BUFS 0x23 +/* Set the input buffer lengths to use for a pipelined operation */ +# define EVP_CTRL_SET_PIPELINE_INPUT_LENS 0x24 + +# define EVP_CTRL_GET_IVLEN 0x25 + +/* Padding modes */ +#define EVP_PADDING_PKCS7 1 +#define EVP_PADDING_ISO7816_4 2 +#define EVP_PADDING_ANSI923 3 +#define EVP_PADDING_ISO10126 4 +#define EVP_PADDING_ZERO 5 + +/* RFC 5246 defines additional data to be 13 bytes in length */ +# define EVP_AEAD_TLS1_AAD_LEN 13 + +typedef struct { + unsigned char *out; + const unsigned char *inp; + size_t len; + unsigned int interleave; +} EVP_CTRL_TLS1_1_MULTIBLOCK_PARAM; + +/* GCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_GCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_GCM_TLS_EXPLICIT_IV_LEN 8 +/* Length of tag for TLS */ +# define EVP_GCM_TLS_TAG_LEN 16 + +/* CCM TLS constants */ +/* Length of fixed part of IV derived from PRF */ +# define EVP_CCM_TLS_FIXED_IV_LEN 4 +/* Length of explicit part of IV part of TLS records */ +# define EVP_CCM_TLS_EXPLICIT_IV_LEN 8 +/* Total length of CCM IV length for TLS */ +# define EVP_CCM_TLS_IV_LEN 12 +/* Length of tag for TLS */ +# define EVP_CCM_TLS_TAG_LEN 16 +/* Length of CCM8 tag for TLS */ +# define EVP_CCM8_TLS_TAG_LEN 8 + +/* Length of tag for TLS */ +# define EVP_CHACHAPOLY_TLS_TAG_LEN 16 + +typedef struct evp_cipher_info_st { + const EVP_CIPHER *cipher; + unsigned char iv[EVP_MAX_IV_LENGTH]; +} EVP_CIPHER_INFO; + + +/* Password based encryption function */ +typedef int (EVP_PBE_KEYGEN) (EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *cipher, const EVP_MD *md, + int en_de); + +# ifndef OPENSSL_NO_RSA +# define EVP_PKEY_assign_RSA(pkey,rsa) EVP_PKEY_assign((pkey),EVP_PKEY_RSA,\ + (char *)(rsa)) +# endif + +# ifndef OPENSSL_NO_DSA +# define EVP_PKEY_assign_DSA(pkey,dsa) EVP_PKEY_assign((pkey),EVP_PKEY_DSA,\ + (char *)(dsa)) +# endif + +# ifndef OPENSSL_NO_DH +# define EVP_PKEY_assign_DH(pkey,dh) EVP_PKEY_assign((pkey),EVP_PKEY_DH,\ + (char *)(dh)) +# endif + +# ifndef OPENSSL_NO_EC +# define EVP_PKEY_assign_EC_KEY(pkey,eckey) EVP_PKEY_assign((pkey),EVP_PKEY_EC,\ + (char *)(eckey)) +# endif +# ifndef OPENSSL_NO_SIPHASH +# define EVP_PKEY_assign_SIPHASH(pkey,shkey) EVP_PKEY_assign((pkey),EVP_PKEY_SIPHASH,\ + (char *)(shkey)) +# endif + +# ifndef OPENSSL_NO_POLY1305 +# define EVP_PKEY_assign_POLY1305(pkey,polykey) EVP_PKEY_assign((pkey),EVP_PKEY_POLY1305,\ + (char *)(polykey)) +# endif + +/* Add some extra combinations */ +# define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a)) +# define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a)) +# define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) +# define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) + +int EVP_MD_type(const EVP_MD *md); +# define EVP_MD_nid(e) EVP_MD_type(e) +# define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) +int EVP_MD_pkey_type(const EVP_MD *md); +int EVP_MD_size(const EVP_MD *md); +int EVP_MD_block_size(const EVP_MD *md); +unsigned long EVP_MD_flags(const EVP_MD *md); + +const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx); +int (*EVP_MD_CTX_update_fn(EVP_MD_CTX *ctx))(EVP_MD_CTX *ctx, + const void *data, size_t count); +void EVP_MD_CTX_set_update_fn(EVP_MD_CTX *ctx, + int (*update) (EVP_MD_CTX *ctx, + const void *data, size_t count)); +# define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) +# define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) +EVP_PKEY_CTX *EVP_MD_CTX_pkey_ctx(const EVP_MD_CTX *ctx); +void EVP_MD_CTX_set_pkey_ctx(EVP_MD_CTX *ctx, EVP_PKEY_CTX *pctx); +void *EVP_MD_CTX_md_data(const EVP_MD_CTX *ctx); + +int EVP_CIPHER_nid(const EVP_CIPHER *cipher); +# define EVP_CIPHER_name(e) OBJ_nid2sn(EVP_CIPHER_nid(e)) +int EVP_CIPHER_block_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_impl_ctx_size(const EVP_CIPHER *cipher); +int EVP_CIPHER_key_length(const EVP_CIPHER *cipher); +int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher); +unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher); +# define EVP_CIPHER_mode(e) (EVP_CIPHER_flags(e) & EVP_CIPH_MODE) + +const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_encrypting(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_iv(const EVP_CIPHER_CTX *ctx); +const unsigned char *EVP_CIPHER_CTX_original_iv(const EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_iv_noconst(EVP_CIPHER_CTX *ctx); +unsigned char *EVP_CIPHER_CTX_buf_noconst(EVP_CIPHER_CTX *ctx); +int EVP_CIPHER_CTX_num(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_num(EVP_CIPHER_CTX *ctx, int num); +int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in); +void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); +void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); +void *EVP_CIPHER_CTX_get_cipher_data(const EVP_CIPHER_CTX *ctx); +void *EVP_CIPHER_CTX_set_cipher_data(EVP_CIPHER_CTX *ctx, void *cipher_data); +# define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_flags(c) EVP_CIPHER_flags(EVP_CIPHER_CTX_cipher(c)) +# endif +# define EVP_CIPHER_CTX_mode(c) EVP_CIPHER_mode(EVP_CIPHER_CTX_cipher(c)) + +# define EVP_ENCODE_LENGTH(l) ((((l)+2)/3*4)+((l)/48+1)*2+80) +# define EVP_DECODE_LENGTH(l) (((l)+3)/4*3+80) + +# define EVP_SignInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_SignInit(a,b) EVP_DigestInit(a,b) +# define EVP_SignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_VerifyInit_ex(a,b,c) EVP_DigestInit_ex(a,b,c) +# define EVP_VerifyInit(a,b) EVP_DigestInit(a,b) +# define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) +# define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) +# define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c) +# define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) + +# ifdef CONST_STRICT +void BIO_set_md(BIO *, const EVP_MD *md); +# else +# define BIO_set_md(b,md) BIO_ctrl(b,BIO_C_SET_MD,0,(char *)(md)) +# endif +# define BIO_get_md(b,mdp) BIO_ctrl(b,BIO_C_GET_MD,0,(char *)(mdp)) +# define BIO_get_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_GET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_set_md_ctx(b,mdcp) BIO_ctrl(b,BIO_C_SET_MD_CTX,0, \ + (char *)(mdcp)) +# define BIO_get_cipher_status(b) BIO_ctrl(b,BIO_C_GET_CIPHER_STATUS,0,NULL) +# define BIO_get_cipher_ctx(b,c_pp) BIO_ctrl(b,BIO_C_GET_CIPHER_CTX,0, \ + (char *)(c_pp)) + +/*__owur*/ int EVP_Cipher(EVP_CIPHER_CTX *c, + unsigned char *out, + const unsigned char *in, unsigned int inl); + +# define EVP_add_cipher_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_add_digest_alias(n,alias) \ + OBJ_NAME_add((alias),OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,(n)) +# define EVP_delete_cipher_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_CIPHER_METH|OBJ_NAME_ALIAS); +# define EVP_delete_digest_alias(alias) \ + OBJ_NAME_remove(alias,OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS); + +int EVP_MD_CTX_ctrl(EVP_MD_CTX *ctx, int cmd, int p1, void *p2); +EVP_MD_CTX *EVP_MD_CTX_new(void); +int EVP_MD_CTX_reset(EVP_MD_CTX *ctx); +void EVP_MD_CTX_free(EVP_MD_CTX *ctx); +# define EVP_MD_CTX_create() EVP_MD_CTX_new() +# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx)) +# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx)) +__owur int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in); +void EVP_MD_CTX_set_flags(EVP_MD_CTX *ctx, int flags); +void EVP_MD_CTX_clear_flags(EVP_MD_CTX *ctx, int flags); +int EVP_MD_CTX_test_flags(const EVP_MD_CTX *ctx, int flags); +__owur int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, + ENGINE *impl); +__owur int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, + size_t cnt); +__owur int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_Digest(const void *data, size_t count, + unsigned char *md, unsigned int *size, + const EVP_MD *type, ENGINE *impl); + +__owur int EVP_MD_CTX_copy(EVP_MD_CTX *out, const EVP_MD_CTX *in); +__owur int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type); +__owur int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, + unsigned int *s); +__owur int EVP_DigestFinalXOF(EVP_MD_CTX *ctx, unsigned char *md, + size_t len); + +int EVP_read_pw_string(char *buf, int length, const char *prompt, int verify); +int EVP_read_pw_string_min(char *buf, int minlen, int maxlen, + const char *prompt, int verify); +void EVP_set_pw_prompt(const char *prompt); +char *EVP_get_pw_prompt(void); + +__owur int EVP_BytesToKey(const EVP_CIPHER *type, const EVP_MD *md, + const unsigned char *salt, + const unsigned char *data, int datal, int count, + unsigned char *key, unsigned char *iv); + +void EVP_CIPHER_CTX_set_flags(EVP_CIPHER_CTX *ctx, int flags); +void EVP_CIPHER_CTX_clear_flags(EVP_CIPHER_CTX *ctx, int flags); +int EVP_CIPHER_CTX_test_flags(const EVP_CIPHER_CTX *ctx, int flags); + +__owur int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_EncryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +/*__owur*/ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); +/*__owur*/ int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl); + +__owur int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv); +/*__owur*/ int EVP_DecryptInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv); +/*__owur*/ int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +/*__owur*/ int EVP_DecryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, + const unsigned char *key, const unsigned char *iv, + int enc); +/*__owur*/ int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, + const EVP_CIPHER *cipher, ENGINE *impl, + const unsigned char *key, + const unsigned char *iv, int enc); +__owur int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, + int *outl, const unsigned char *in, int inl); +__owur int EVP_CipherFinal(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); +__owur int EVP_CipherFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *outm, + int *outl); + +__owur int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *s, + EVP_PKEY *pkey); + +__owur int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen, const unsigned char *tbs, + size_t tbslen); + +__owur int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf, + unsigned int siglen, EVP_PKEY *pkey); + +__owur int EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, + size_t siglen, const unsigned char *tbs, + size_t tbslen); + +/*__owur*/ int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + size_t *siglen); + +__owur int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, + const EVP_MD *type, ENGINE *e, + EVP_PKEY *pkey); +__owur int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, + size_t siglen); + +# ifndef OPENSSL_NO_RSA +__owur int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + const unsigned char *ek, int ekl, + const unsigned char *iv, EVP_PKEY *priv); +__owur int EVP_OpenFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); + +__owur int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, + unsigned char **ek, int *ekl, unsigned char *iv, + EVP_PKEY **pubk, int npubk); +__owur int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl); +# endif + +EVP_ENCODE_CTX *EVP_ENCODE_CTX_new(void); +void EVP_ENCODE_CTX_free(EVP_ENCODE_CTX *ctx); +int EVP_ENCODE_CTX_copy(EVP_ENCODE_CTX *dctx, EVP_ENCODE_CTX *sctx); +int EVP_ENCODE_CTX_num(EVP_ENCODE_CTX *ctx); +void EVP_EncodeInit(EVP_ENCODE_CTX *ctx); +int EVP_EncodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +void EVP_EncodeFinal(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl); +int EVP_EncodeBlock(unsigned char *t, const unsigned char *f, int n); + +void EVP_DecodeInit(EVP_ENCODE_CTX *ctx); +int EVP_DecodeUpdate(EVP_ENCODE_CTX *ctx, unsigned char *out, int *outl, + const unsigned char *in, int inl); +int EVP_DecodeFinal(EVP_ENCODE_CTX *ctx, unsigned + char *out, int *outl); +int EVP_DecodeBlock(unsigned char *t, const unsigned char *f, int n); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define EVP_CIPHER_CTX_init(c) EVP_CIPHER_CTX_reset(c) +# define EVP_CIPHER_CTX_cleanup(c) EVP_CIPHER_CTX_reset(c) +# endif +EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void); +int EVP_CIPHER_CTX_reset(EVP_CIPHER_CTX *c); +void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *c); +int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *x, int keylen); +int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *c, int pad); +int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr); +int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key); + +const BIO_METHOD *BIO_f_md(void); +const BIO_METHOD *BIO_f_base64(void); +const BIO_METHOD *BIO_f_cipher(void); +const BIO_METHOD *BIO_f_reliable(void); +__owur int BIO_set_cipher(BIO *b, const EVP_CIPHER *c, const unsigned char *k, + const unsigned char *i, int enc); + +const EVP_MD *EVP_md_null(void); +# ifndef OPENSSL_NO_MD2 +const EVP_MD *EVP_md2(void); +# endif +# ifndef OPENSSL_NO_MD4 +const EVP_MD *EVP_md4(void); +# endif +# ifndef OPENSSL_NO_MD5 +const EVP_MD *EVP_md5(void); +const EVP_MD *EVP_md5_sha1(void); +# endif +# ifndef OPENSSL_NO_BLAKE2 +const EVP_MD *EVP_blake2b512(void); +const EVP_MD *EVP_blake2s256(void); +# endif +const EVP_MD *EVP_sha1(void); +const EVP_MD *EVP_sha224(void); +const EVP_MD *EVP_sha256(void); +const EVP_MD *EVP_sha384(void); +const EVP_MD *EVP_sha512(void); +const EVP_MD *EVP_sha512_224(void); +const EVP_MD *EVP_sha512_256(void); +const EVP_MD *EVP_sha3_224(void); +const EVP_MD *EVP_sha3_256(void); +const EVP_MD *EVP_sha3_384(void); +const EVP_MD *EVP_sha3_512(void); +const EVP_MD *EVP_shake128(void); +const EVP_MD *EVP_shake256(void); +# ifndef OPENSSL_NO_MDC2 +const EVP_MD *EVP_mdc2(void); +# endif +# ifndef OPENSSL_NO_RMD160 +const EVP_MD *EVP_ripemd160(void); +# endif +# ifndef OPENSSL_NO_WHIRLPOOL +const EVP_MD *EVP_whirlpool(void); +# endif +# ifndef OPENSSL_NO_SM3 +const EVP_MD *EVP_sm3(void); +# endif +const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ +# ifndef OPENSSL_NO_DES +const EVP_CIPHER *EVP_des_ecb(void); +const EVP_CIPHER *EVP_des_ede(void); +const EVP_CIPHER *EVP_des_ede3(void); +const EVP_CIPHER *EVP_des_ede_ecb(void); +const EVP_CIPHER *EVP_des_ede3_ecb(void); +const EVP_CIPHER *EVP_des_cfb64(void); +# define EVP_des_cfb EVP_des_cfb64 +const EVP_CIPHER *EVP_des_cfb1(void); +const EVP_CIPHER *EVP_des_cfb8(void); +const EVP_CIPHER *EVP_des_ede_cfb64(void); +# define EVP_des_ede_cfb EVP_des_ede_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb64(void); +# define EVP_des_ede3_cfb EVP_des_ede3_cfb64 +const EVP_CIPHER *EVP_des_ede3_cfb1(void); +const EVP_CIPHER *EVP_des_ede3_cfb8(void); +const EVP_CIPHER *EVP_des_ofb(void); +const EVP_CIPHER *EVP_des_ede_ofb(void); +const EVP_CIPHER *EVP_des_ede3_ofb(void); +const EVP_CIPHER *EVP_des_cbc(void); +const EVP_CIPHER *EVP_des_ede_cbc(void); +const EVP_CIPHER *EVP_des_ede3_cbc(void); +const EVP_CIPHER *EVP_desx_cbc(void); +const EVP_CIPHER *EVP_des_ede3_wrap(void); +/* + * This should now be supported through the dev_crypto ENGINE. But also, why + * are rc4 and md5 declarations made here inside a "NO_DES" precompiler + * branch? + */ +# endif +# ifndef OPENSSL_NO_RC4 +const EVP_CIPHER *EVP_rc4(void); +const EVP_CIPHER *EVP_rc4_40(void); +# ifndef OPENSSL_NO_MD5 +const EVP_CIPHER *EVP_rc4_hmac_md5(void); +# endif +# endif +# ifndef OPENSSL_NO_IDEA +const EVP_CIPHER *EVP_idea_ecb(void); +const EVP_CIPHER *EVP_idea_cfb64(void); +# define EVP_idea_cfb EVP_idea_cfb64 +const EVP_CIPHER *EVP_idea_ofb(void); +const EVP_CIPHER *EVP_idea_cbc(void); +# endif +# ifndef OPENSSL_NO_RC2 +const EVP_CIPHER *EVP_rc2_ecb(void); +const EVP_CIPHER *EVP_rc2_cbc(void); +const EVP_CIPHER *EVP_rc2_40_cbc(void); +const EVP_CIPHER *EVP_rc2_64_cbc(void); +const EVP_CIPHER *EVP_rc2_cfb64(void); +# define EVP_rc2_cfb EVP_rc2_cfb64 +const EVP_CIPHER *EVP_rc2_ofb(void); +# endif +# ifndef OPENSSL_NO_BF +const EVP_CIPHER *EVP_bf_ecb(void); +const EVP_CIPHER *EVP_bf_cbc(void); +const EVP_CIPHER *EVP_bf_cfb64(void); +# define EVP_bf_cfb EVP_bf_cfb64 +const EVP_CIPHER *EVP_bf_ofb(void); +# endif +# ifndef OPENSSL_NO_CAST +const EVP_CIPHER *EVP_cast5_ecb(void); +const EVP_CIPHER *EVP_cast5_cbc(void); +const EVP_CIPHER *EVP_cast5_cfb64(void); +# define EVP_cast5_cfb EVP_cast5_cfb64 +const EVP_CIPHER *EVP_cast5_ofb(void); +# endif +# ifndef OPENSSL_NO_RC5 +const EVP_CIPHER *EVP_rc5_32_12_16_cbc(void); +const EVP_CIPHER *EVP_rc5_32_12_16_ecb(void); +const EVP_CIPHER *EVP_rc5_32_12_16_cfb64(void); +# define EVP_rc5_32_12_16_cfb EVP_rc5_32_12_16_cfb64 +const EVP_CIPHER *EVP_rc5_32_12_16_ofb(void); +# endif +const EVP_CIPHER *EVP_aes_128_ecb(void); +const EVP_CIPHER *EVP_aes_128_cbc(void); +const EVP_CIPHER *EVP_aes_128_cfb1(void); +const EVP_CIPHER *EVP_aes_128_cfb8(void); +const EVP_CIPHER *EVP_aes_128_cfb128(void); +# define EVP_aes_128_cfb EVP_aes_128_cfb128 +const EVP_CIPHER *EVP_aes_128_ofb(void); +const EVP_CIPHER *EVP_aes_128_ctr(void); +const EVP_CIPHER *EVP_aes_128_ccm(void); +const EVP_CIPHER *EVP_aes_128_gcm(void); +const EVP_CIPHER *EVP_aes_128_xts(void); +const EVP_CIPHER *EVP_aes_128_wrap(void); +const EVP_CIPHER *EVP_aes_128_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_128_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_192_ecb(void); +const EVP_CIPHER *EVP_aes_192_cbc(void); +const EVP_CIPHER *EVP_aes_192_cfb1(void); +const EVP_CIPHER *EVP_aes_192_cfb8(void); +const EVP_CIPHER *EVP_aes_192_cfb128(void); +# define EVP_aes_192_cfb EVP_aes_192_cfb128 +const EVP_CIPHER *EVP_aes_192_ofb(void); +const EVP_CIPHER *EVP_aes_192_ctr(void); +const EVP_CIPHER *EVP_aes_192_ccm(void); +const EVP_CIPHER *EVP_aes_192_gcm(void); +const EVP_CIPHER *EVP_aes_192_wrap(void); +const EVP_CIPHER *EVP_aes_192_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_192_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_256_ecb(void); +const EVP_CIPHER *EVP_aes_256_cbc(void); +const EVP_CIPHER *EVP_aes_256_cfb1(void); +const EVP_CIPHER *EVP_aes_256_cfb8(void); +const EVP_CIPHER *EVP_aes_256_cfb128(void); +# define EVP_aes_256_cfb EVP_aes_256_cfb128 +const EVP_CIPHER *EVP_aes_256_ofb(void); +const EVP_CIPHER *EVP_aes_256_ctr(void); +const EVP_CIPHER *EVP_aes_256_ccm(void); +const EVP_CIPHER *EVP_aes_256_gcm(void); +const EVP_CIPHER *EVP_aes_256_xts(void); +const EVP_CIPHER *EVP_aes_256_wrap(void); +const EVP_CIPHER *EVP_aes_256_wrap_pad(void); +# ifndef OPENSSL_NO_OCB +const EVP_CIPHER *EVP_aes_256_ocb(void); +# endif +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha1(void); +const EVP_CIPHER *EVP_aes_128_cbc_hmac_sha256(void); +const EVP_CIPHER *EVP_aes_256_cbc_hmac_sha256(void); +# ifndef OPENSSL_NO_ARIA +const EVP_CIPHER *EVP_aria_128_ecb(void); +const EVP_CIPHER *EVP_aria_128_cbc(void); +const EVP_CIPHER *EVP_aria_128_cfb1(void); +const EVP_CIPHER *EVP_aria_128_cfb8(void); +const EVP_CIPHER *EVP_aria_128_cfb128(void); +# define EVP_aria_128_cfb EVP_aria_128_cfb128 +const EVP_CIPHER *EVP_aria_128_ctr(void); +const EVP_CIPHER *EVP_aria_128_ofb(void); +const EVP_CIPHER *EVP_aria_128_gcm(void); +const EVP_CIPHER *EVP_aria_128_ccm(void); +const EVP_CIPHER *EVP_aria_192_ecb(void); +const EVP_CIPHER *EVP_aria_192_cbc(void); +const EVP_CIPHER *EVP_aria_192_cfb1(void); +const EVP_CIPHER *EVP_aria_192_cfb8(void); +const EVP_CIPHER *EVP_aria_192_cfb128(void); +# define EVP_aria_192_cfb EVP_aria_192_cfb128 +const EVP_CIPHER *EVP_aria_192_ctr(void); +const EVP_CIPHER *EVP_aria_192_ofb(void); +const EVP_CIPHER *EVP_aria_192_gcm(void); +const EVP_CIPHER *EVP_aria_192_ccm(void); +const EVP_CIPHER *EVP_aria_256_ecb(void); +const EVP_CIPHER *EVP_aria_256_cbc(void); +const EVP_CIPHER *EVP_aria_256_cfb1(void); +const EVP_CIPHER *EVP_aria_256_cfb8(void); +const EVP_CIPHER *EVP_aria_256_cfb128(void); +# define EVP_aria_256_cfb EVP_aria_256_cfb128 +const EVP_CIPHER *EVP_aria_256_ctr(void); +const EVP_CIPHER *EVP_aria_256_ofb(void); +const EVP_CIPHER *EVP_aria_256_gcm(void); +const EVP_CIPHER *EVP_aria_256_ccm(void); +# endif +# ifndef OPENSSL_NO_CAMELLIA +const EVP_CIPHER *EVP_camellia_128_ecb(void); +const EVP_CIPHER *EVP_camellia_128_cbc(void); +const EVP_CIPHER *EVP_camellia_128_cfb1(void); +const EVP_CIPHER *EVP_camellia_128_cfb8(void); +const EVP_CIPHER *EVP_camellia_128_cfb128(void); +# define EVP_camellia_128_cfb EVP_camellia_128_cfb128 +const EVP_CIPHER *EVP_camellia_128_ofb(void); +const EVP_CIPHER *EVP_camellia_128_ctr(void); +const EVP_CIPHER *EVP_camellia_192_ecb(void); +const EVP_CIPHER *EVP_camellia_192_cbc(void); +const EVP_CIPHER *EVP_camellia_192_cfb1(void); +const EVP_CIPHER *EVP_camellia_192_cfb8(void); +const EVP_CIPHER *EVP_camellia_192_cfb128(void); +# define EVP_camellia_192_cfb EVP_camellia_192_cfb128 +const EVP_CIPHER *EVP_camellia_192_ofb(void); +const EVP_CIPHER *EVP_camellia_192_ctr(void); +const EVP_CIPHER *EVP_camellia_256_ecb(void); +const EVP_CIPHER *EVP_camellia_256_cbc(void); +const EVP_CIPHER *EVP_camellia_256_cfb1(void); +const EVP_CIPHER *EVP_camellia_256_cfb8(void); +const EVP_CIPHER *EVP_camellia_256_cfb128(void); +# define EVP_camellia_256_cfb EVP_camellia_256_cfb128 +const EVP_CIPHER *EVP_camellia_256_ofb(void); +const EVP_CIPHER *EVP_camellia_256_ctr(void); +# endif +# ifndef OPENSSL_NO_CHACHA +const EVP_CIPHER *EVP_chacha20(void); +# ifndef OPENSSL_NO_POLY1305 +const EVP_CIPHER *EVP_chacha20_poly1305(void); +# endif +# endif + +# ifndef OPENSSL_NO_SEED +const EVP_CIPHER *EVP_seed_ecb(void); +const EVP_CIPHER *EVP_seed_cbc(void); +const EVP_CIPHER *EVP_seed_cfb128(void); +# define EVP_seed_cfb EVP_seed_cfb128 +const EVP_CIPHER *EVP_seed_ofb(void); +# endif + +# ifndef OPENSSL_NO_SM4 +const EVP_CIPHER *EVP_sm4_ecb(void); +const EVP_CIPHER *EVP_sm4_cbc(void); +const EVP_CIPHER *EVP_sm4_cfb128(void); +# define EVP_sm4_cfb EVP_sm4_cfb128 +const EVP_CIPHER *EVP_sm4_ofb(void); +const EVP_CIPHER *EVP_sm4_ctr(void); +# endif + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OPENSSL_add_all_algorithms_conf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS \ + | OPENSSL_INIT_LOAD_CONFIG, NULL) +# define OPENSSL_add_all_algorithms_noconf() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS \ + | OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# ifdef OPENSSL_LOAD_CONF +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_conf() +# else +# define OpenSSL_add_all_algorithms() OPENSSL_add_all_algorithms_noconf() +# endif + +# define OpenSSL_add_all_ciphers() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_CIPHERS, NULL) +# define OpenSSL_add_all_digests() \ + OPENSSL_init_crypto(OPENSSL_INIT_ADD_ALL_DIGESTS, NULL) + +# define EVP_cleanup() while(0) continue +# endif + +int EVP_add_cipher(const EVP_CIPHER *cipher); +int EVP_add_digest(const EVP_MD *digest); + +const EVP_CIPHER *EVP_get_cipherbyname(const char *name); +const EVP_MD *EVP_get_digestbyname(const char *name); + +void EVP_CIPHER_do_all(void (*fn) (const EVP_CIPHER *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_CIPHER_do_all_sorted(void (*fn) + (const EVP_CIPHER *ciph, const char *from, + const char *to, void *x), void *arg); + +void EVP_MD_do_all(void (*fn) (const EVP_MD *ciph, + const char *from, const char *to, void *x), + void *arg); +void EVP_MD_do_all_sorted(void (*fn) + (const EVP_MD *ciph, const char *from, + const char *to, void *x), void *arg); + +int EVP_PKEY_decrypt_old(unsigned char *dec_key, + const unsigned char *enc_key, int enc_key_len, + EVP_PKEY *private_key); +int EVP_PKEY_encrypt_old(unsigned char *enc_key, + const unsigned char *key, int key_len, + EVP_PKEY *pub_key); +int EVP_PKEY_type(int type); +int EVP_PKEY_id(const EVP_PKEY *pkey); +int EVP_PKEY_base_id(const EVP_PKEY *pkey); +int EVP_PKEY_bits(const EVP_PKEY *pkey); +int EVP_PKEY_security_bits(const EVP_PKEY *pkey); +int EVP_PKEY_size(const EVP_PKEY *pkey); +int EVP_PKEY_set_type(EVP_PKEY *pkey, int type); +int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len); +int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type); +# ifndef OPENSSL_NO_ENGINE +int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e); +ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey); +# endif +int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key); +void *EVP_PKEY_get0(const EVP_PKEY *pkey); +const unsigned char *EVP_PKEY_get0_hmac(const EVP_PKEY *pkey, size_t *len); +# ifndef OPENSSL_NO_POLY1305 +const unsigned char *EVP_PKEY_get0_poly1305(const EVP_PKEY *pkey, size_t *len); +# endif +# ifndef OPENSSL_NO_SIPHASH +const unsigned char *EVP_PKEY_get0_siphash(const EVP_PKEY *pkey, size_t *len); +# endif + +# ifndef OPENSSL_NO_RSA +struct rsa_st; +int EVP_PKEY_set1_RSA(EVP_PKEY *pkey, struct rsa_st *key); +struct rsa_st *EVP_PKEY_get0_RSA(EVP_PKEY *pkey); +struct rsa_st *EVP_PKEY_get1_RSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DSA +struct dsa_st; +int EVP_PKEY_set1_DSA(EVP_PKEY *pkey, struct dsa_st *key); +struct dsa_st *EVP_PKEY_get0_DSA(EVP_PKEY *pkey); +struct dsa_st *EVP_PKEY_get1_DSA(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_DH +struct dh_st; +int EVP_PKEY_set1_DH(EVP_PKEY *pkey, struct dh_st *key); +struct dh_st *EVP_PKEY_get0_DH(EVP_PKEY *pkey); +struct dh_st *EVP_PKEY_get1_DH(EVP_PKEY *pkey); +# endif +# ifndef OPENSSL_NO_EC +struct ec_key_st; +int EVP_PKEY_set1_EC_KEY(EVP_PKEY *pkey, struct ec_key_st *key); +struct ec_key_st *EVP_PKEY_get0_EC_KEY(EVP_PKEY *pkey); +struct ec_key_st *EVP_PKEY_get1_EC_KEY(EVP_PKEY *pkey); +# endif + +EVP_PKEY *EVP_PKEY_new(void); +int EVP_PKEY_up_ref(EVP_PKEY *pkey); +void EVP_PKEY_free(EVP_PKEY *pkey); + +EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PublicKey(EVP_PKEY *a, unsigned char **pp); + +EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, + long length); +EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, + long length); +int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp); + +int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from); +int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey); +int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode); +int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); + +int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); +int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx); + +int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid); + +int EVP_PKEY_set1_tls_encodedpoint(EVP_PKEY *pkey, + const unsigned char *pt, size_t ptlen); +size_t EVP_PKEY_get1_tls_encodedpoint(EVP_PKEY *pkey, unsigned char **ppt); + +int EVP_CIPHER_type(const EVP_CIPHER *ctx); + +/* calls methods */ +int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* These are used by EVP_CIPHER methods */ +int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); +int EVP_CIPHER_get_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type); + +/* PKCS5 password based encryption */ +int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); +int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + int keylen, unsigned char *out); +int PKCS5_PBKDF2_HMAC(const char *pass, int passlen, + const unsigned char *salt, int saltlen, int iter, + const EVP_MD *digest, int keylen, unsigned char *out); +int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, + ASN1_TYPE *param, const EVP_CIPHER *cipher, + const EVP_MD *md, int en_de); + +#ifndef OPENSSL_NO_SCRYPT +int EVP_PBE_scrypt(const char *pass, size_t passlen, + const unsigned char *salt, size_t saltlen, + uint64_t N, uint64_t r, uint64_t p, uint64_t maxmem, + unsigned char *key, size_t keylen); + +int PKCS5_v2_scrypt_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, + int passlen, ASN1_TYPE *param, + const EVP_CIPHER *c, const EVP_MD *md, int en_de); +#endif + +void PKCS5_PBE_add(void); + +int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, + ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); + +/* PBE type */ + +/* Can appear as the outermost AlgorithmIdentifier */ +# define EVP_PBE_TYPE_OUTER 0x0 +/* Is an PRF type OID */ +# define EVP_PBE_TYPE_PRF 0x1 +/* Is a PKCS#5 v2.0 KDF */ +# define EVP_PBE_TYPE_KDF 0x2 + +int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, + int md_nid, EVP_PBE_KEYGEN *keygen); +int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, + EVP_PBE_KEYGEN *keygen); +int EVP_PBE_find(int type, int pbe_nid, int *pcnid, int *pmnid, + EVP_PBE_KEYGEN **pkeygen); +void EVP_PBE_cleanup(void); +int EVP_PBE_get(int *ptype, int *ppbe_nid, size_t num); + +# define ASN1_PKEY_ALIAS 0x1 +# define ASN1_PKEY_DYNAMIC 0x2 +# define ASN1_PKEY_SIGPARAM_NULL 0x4 + +# define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1 +# define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2 +# define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3 +# define ASN1_PKEY_CTRL_CMS_SIGN 0x5 +# define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7 +# define ASN1_PKEY_CTRL_CMS_RI_TYPE 0x8 + +# define ASN1_PKEY_CTRL_SET1_TLS_ENCPT 0x9 +# define ASN1_PKEY_CTRL_GET1_TLS_ENCPT 0xa + +int EVP_PKEY_asn1_get_count(void); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type); +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe, + const char *str, int len); +int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth); +int EVP_PKEY_asn1_add_alias(int to, int from); +int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, + int *ppkey_flags, const char **pinfo, + const char **ppem_str, + const EVP_PKEY_ASN1_METHOD *ameth); + +const EVP_PKEY_ASN1_METHOD *EVP_PKEY_get0_asn1(const EVP_PKEY *pkey); +EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_new(int id, int flags, + const char *pem_str, + const char *info); +void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst, + const EVP_PKEY_ASN1_METHOD *src); +void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth); +void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth, + int (*pub_decode) (EVP_PKEY *pk, + X509_PUBKEY *pub), + int (*pub_encode) (X509_PUBKEY *pub, + const EVP_PKEY *pk), + int (*pub_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*pub_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, ASN1_PCTX *pctx), + int (*pkey_size) (const EVP_PKEY *pk), + int (*pkey_bits) (const EVP_PKEY *pk)); +void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth, + int (*priv_decode) (EVP_PKEY *pk, + const PKCS8_PRIV_KEY_INFO + *p8inf), + int (*priv_encode) (PKCS8_PRIV_KEY_INFO *p8, + const EVP_PKEY *pk), + int (*priv_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); +void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth, + int (*param_decode) (EVP_PKEY *pkey, + const unsigned char **pder, + int derlen), + int (*param_encode) (const EVP_PKEY *pkey, + unsigned char **pder), + int (*param_missing) (const EVP_PKEY *pk), + int (*param_copy) (EVP_PKEY *to, + const EVP_PKEY *from), + int (*param_cmp) (const EVP_PKEY *a, + const EVP_PKEY *b), + int (*param_print) (BIO *out, + const EVP_PKEY *pkey, + int indent, + ASN1_PCTX *pctx)); + +void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth, + void (*pkey_free) (EVP_PKEY *pkey)); +void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_ctrl) (EVP_PKEY *pkey, int op, + long arg1, void *arg2)); +void EVP_PKEY_asn1_set_item(EVP_PKEY_ASN1_METHOD *ameth, + int (*item_verify) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *a, + ASN1_BIT_STRING *sig, + EVP_PKEY *pkey), + int (*item_sign) (EVP_MD_CTX *ctx, + const ASN1_ITEM *it, + void *asn, + X509_ALGOR *alg1, + X509_ALGOR *alg2, + ASN1_BIT_STRING *sig)); + +void EVP_PKEY_asn1_set_siginf(EVP_PKEY_ASN1_METHOD *ameth, + int (*siginf_set) (X509_SIG_INFO *siginf, + const X509_ALGOR *alg, + const ASN1_STRING *sig)); + +void EVP_PKEY_asn1_set_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_public_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_pub_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_param_check(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_param_check) (const EVP_PKEY *pk)); + +void EVP_PKEY_asn1_set_set_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_priv_key) (EVP_PKEY *pk, + const unsigned char + *priv, + size_t len)); +void EVP_PKEY_asn1_set_set_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*set_pub_key) (EVP_PKEY *pk, + const unsigned char *pub, + size_t len)); +void EVP_PKEY_asn1_set_get_priv_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_priv_key) (const EVP_PKEY *pk, + unsigned char *priv, + size_t *len)); +void EVP_PKEY_asn1_set_get_pub_key(EVP_PKEY_ASN1_METHOD *ameth, + int (*get_pub_key) (const EVP_PKEY *pk, + unsigned char *pub, + size_t *len)); + +void EVP_PKEY_asn1_set_security_bits(EVP_PKEY_ASN1_METHOD *ameth, + int (*pkey_security_bits) (const EVP_PKEY + *pk)); + +# define EVP_PKEY_OP_UNDEFINED 0 +# define EVP_PKEY_OP_PARAMGEN (1<<1) +# define EVP_PKEY_OP_KEYGEN (1<<2) +# define EVP_PKEY_OP_SIGN (1<<3) +# define EVP_PKEY_OP_VERIFY (1<<4) +# define EVP_PKEY_OP_VERIFYRECOVER (1<<5) +# define EVP_PKEY_OP_SIGNCTX (1<<6) +# define EVP_PKEY_OP_VERIFYCTX (1<<7) +# define EVP_PKEY_OP_ENCRYPT (1<<8) +# define EVP_PKEY_OP_DECRYPT (1<<9) +# define EVP_PKEY_OP_DERIVE (1<<10) + +# define EVP_PKEY_OP_TYPE_SIG \ + (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \ + | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX) + +# define EVP_PKEY_OP_TYPE_CRYPT \ + (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT) + +# define EVP_PKEY_OP_TYPE_NOGEN \ + (EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT | EVP_PKEY_OP_DERIVE) + +# define EVP_PKEY_OP_TYPE_GEN \ + (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN) + +# define EVP_PKEY_CTX_set_signature_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_signature_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \ + EVP_PKEY_CTRL_GET_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set_mac_key(ctx, key, len) \ + EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_SET_MAC_KEY, len, (void *)(key)) + +# define EVP_PKEY_CTRL_MD 1 +# define EVP_PKEY_CTRL_PEER_KEY 2 + +# define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3 +# define EVP_PKEY_CTRL_PKCS7_DECRYPT 4 + +# define EVP_PKEY_CTRL_PKCS7_SIGN 5 + +# define EVP_PKEY_CTRL_SET_MAC_KEY 6 + +# define EVP_PKEY_CTRL_DIGESTINIT 7 + +/* Used by GOST key encryption in TLS */ +# define EVP_PKEY_CTRL_SET_IV 8 + +# define EVP_PKEY_CTRL_CMS_ENCRYPT 9 +# define EVP_PKEY_CTRL_CMS_DECRYPT 10 +# define EVP_PKEY_CTRL_CMS_SIGN 11 + +# define EVP_PKEY_CTRL_CIPHER 12 + +# define EVP_PKEY_CTRL_GET_MD 13 + +# define EVP_PKEY_CTRL_SET_DIGEST_SIZE 14 + +# define EVP_PKEY_ALG_CTRL 0x1000 + +# define EVP_PKEY_FLAG_AUTOARGLEN 2 +/* + * Method handles all operations: don't assume any digest related defaults. + */ +# define EVP_PKEY_FLAG_SIGCTX_CUSTOM 4 + +const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type); +EVP_PKEY_METHOD *EVP_PKEY_meth_new(int id, int flags); +void EVP_PKEY_meth_get0_info(int *ppkey_id, int *pflags, + const EVP_PKEY_METHOD *meth); +void EVP_PKEY_meth_copy(EVP_PKEY_METHOD *dst, const EVP_PKEY_METHOD *src); +void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth); +int EVP_PKEY_meth_remove(const EVP_PKEY_METHOD *pmeth); +size_t EVP_PKEY_meth_get_count(void); +const EVP_PKEY_METHOD *EVP_PKEY_meth_get0(size_t idx); + +EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e); +EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, int p1, void *p2); +int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, + const char *value); +int EVP_PKEY_CTX_ctrl_uint64(EVP_PKEY_CTX *ctx, int keytype, int optype, + int cmd, uint64_t value); + +int EVP_PKEY_CTX_str2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *str); +int EVP_PKEY_CTX_hex2ctrl(EVP_PKEY_CTX *ctx, int cmd, const char *hex); + +int EVP_PKEY_CTX_md(EVP_PKEY_CTX *ctx, int optype, int cmd, const char *md); + +int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx); +void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen); + +EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e, + const unsigned char *key, int keylen); +EVP_PKEY *EVP_PKEY_new_raw_private_key(int type, ENGINE *e, + const unsigned char *priv, + size_t len); +EVP_PKEY *EVP_PKEY_new_raw_public_key(int type, ENGINE *e, + const unsigned char *pub, + size_t len); +int EVP_PKEY_get_raw_private_key(const EVP_PKEY *pkey, unsigned char *priv, + size_t *len); +int EVP_PKEY_get_raw_public_key(const EVP_PKEY *pkey, unsigned char *pub, + size_t *len); + +EVP_PKEY *EVP_PKEY_new_CMAC_key(ENGINE *e, const unsigned char *priv, + size_t len, const EVP_CIPHER *cipher); + +void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx); +EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx); + +EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data); +void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_sign(EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify(EVP_PKEY_CTX *ctx, + const unsigned char *sig, size_t siglen, + const unsigned char *tbs, size_t tbslen); +int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx, + unsigned char *rout, size_t *routlen, + const unsigned char *sig, size_t siglen); +int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); +int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, + unsigned char *out, size_t *outlen, + const unsigned char *in, size_t inlen); + +int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer); +int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); + +typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx); +int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey); +int EVP_PKEY_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_public_check(EVP_PKEY_CTX *ctx); +int EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); + +void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb); +EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx); + +int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx); + +void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth, + int (*init) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth, + int (*copy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth, + void (*cleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth, + int (*paramgen_init) (EVP_PKEY_CTX *ctx), + int (*paramgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth, + int (*keygen_init) (EVP_PKEY_CTX *ctx), + int (*keygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth, + int (*sign_init) (EVP_PKEY_CTX *ctx), + int (*sign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth, + int (*verify_init) (EVP_PKEY_CTX *ctx), + int (*verify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth, + int (*verify_recover_init) (EVP_PKEY_CTX + *ctx), + int (*verify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth, + int (*signctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*signctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth, + int (*verifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (*verifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth, + int (*encrypt_init) (EVP_PKEY_CTX *ctx), + int (*encryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth, + int (*decrypt_init) (EVP_PKEY_CTX *ctx), + int (*decrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth, + int (*derive_init) (EVP_PKEY_CTX *ctx), + int (*derive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth, + int (*ctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (*ctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_set_digestsign(EVP_PKEY_METHOD *pmeth, + int (*digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_digestverify(EVP_PKEY_METHOD *pmeth, + int (*digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_set_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_public_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_param_check(EVP_PKEY_METHOD *pmeth, + int (*check) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_set_digest_custom(EVP_PKEY_METHOD *pmeth, + int (*digest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_init(const EVP_PKEY_METHOD *pmeth, + int (**pinit) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_copy(const EVP_PKEY_METHOD *pmeth, + int (**pcopy) (EVP_PKEY_CTX *dst, + EVP_PKEY_CTX *src)); + +void EVP_PKEY_meth_get_cleanup(const EVP_PKEY_METHOD *pmeth, + void (**pcleanup) (EVP_PKEY_CTX *ctx)); + +void EVP_PKEY_meth_get_paramgen(const EVP_PKEY_METHOD *pmeth, + int (**pparamgen_init) (EVP_PKEY_CTX *ctx), + int (**pparamgen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_keygen(const EVP_PKEY_METHOD *pmeth, + int (**pkeygen_init) (EVP_PKEY_CTX *ctx), + int (**pkeygen) (EVP_PKEY_CTX *ctx, + EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_sign(const EVP_PKEY_METHOD *pmeth, + int (**psign_init) (EVP_PKEY_CTX *ctx), + int (**psign) (EVP_PKEY_CTX *ctx, + unsigned char *sig, size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify(const EVP_PKEY_METHOD *pmeth, + int (**pverify_init) (EVP_PKEY_CTX *ctx), + int (**pverify) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_verify_recover(const EVP_PKEY_METHOD *pmeth, + int (**pverify_recover_init) (EVP_PKEY_CTX + *ctx), + int (**pverify_recover) (EVP_PKEY_CTX + *ctx, + unsigned char + *sig, + size_t *siglen, + const unsigned + char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_signctx(const EVP_PKEY_METHOD *pmeth, + int (**psignctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**psignctx) (EVP_PKEY_CTX *ctx, + unsigned char *sig, + size_t *siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_verifyctx(const EVP_PKEY_METHOD *pmeth, + int (**pverifyctx_init) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx), + int (**pverifyctx) (EVP_PKEY_CTX *ctx, + const unsigned char *sig, + int siglen, + EVP_MD_CTX *mctx)); + +void EVP_PKEY_meth_get_encrypt(const EVP_PKEY_METHOD *pmeth, + int (**pencrypt_init) (EVP_PKEY_CTX *ctx), + int (**pencryptfn) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_decrypt(const EVP_PKEY_METHOD *pmeth, + int (**pdecrypt_init) (EVP_PKEY_CTX *ctx), + int (**pdecrypt) (EVP_PKEY_CTX *ctx, + unsigned char *out, + size_t *outlen, + const unsigned char *in, + size_t inlen)); + +void EVP_PKEY_meth_get_derive(const EVP_PKEY_METHOD *pmeth, + int (**pderive_init) (EVP_PKEY_CTX *ctx), + int (**pderive) (EVP_PKEY_CTX *ctx, + unsigned char *key, + size_t *keylen)); + +void EVP_PKEY_meth_get_ctrl(const EVP_PKEY_METHOD *pmeth, + int (**pctrl) (EVP_PKEY_CTX *ctx, int type, int p1, + void *p2), + int (**pctrl_str) (EVP_PKEY_CTX *ctx, + const char *type, + const char *value)); + +void EVP_PKEY_meth_get_digestsign(EVP_PKEY_METHOD *pmeth, + int (**digestsign) (EVP_MD_CTX *ctx, + unsigned char *sig, + size_t *siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_digestverify(EVP_PKEY_METHOD *pmeth, + int (**digestverify) (EVP_MD_CTX *ctx, + const unsigned char *sig, + size_t siglen, + const unsigned char *tbs, + size_t tbslen)); + +void EVP_PKEY_meth_get_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_public_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_param_check(const EVP_PKEY_METHOD *pmeth, + int (**pcheck) (EVP_PKEY *pkey)); + +void EVP_PKEY_meth_get_digest_custom(EVP_PKEY_METHOD *pmeth, + int (**pdigest_custom) (EVP_PKEY_CTX *ctx, + EVP_MD_CTX *mctx)); +void EVP_add_alg_module(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/evperr.h b/include/openssl/openssl/evperr.h new file mode 100644 index 00000000..b4ea90ae --- /dev/null +++ b/include/openssl/openssl/evperr.h @@ -0,0 +1,204 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_EVPERR_H +# define HEADER_EVPERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_EVP_strings(void); + +/* + * EVP function codes. + */ +# define EVP_F_AESNI_INIT_KEY 165 +# define EVP_F_AESNI_XTS_INIT_KEY 207 +# define EVP_F_AES_GCM_CTRL 196 +# define EVP_F_AES_INIT_KEY 133 +# define EVP_F_AES_OCB_CIPHER 169 +# define EVP_F_AES_T4_INIT_KEY 178 +# define EVP_F_AES_T4_XTS_INIT_KEY 208 +# define EVP_F_AES_WRAP_CIPHER 170 +# define EVP_F_AES_XTS_INIT_KEY 209 +# define EVP_F_ALG_MODULE_INIT 177 +# define EVP_F_ARIA_CCM_INIT_KEY 175 +# define EVP_F_ARIA_GCM_CTRL 197 +# define EVP_F_ARIA_GCM_INIT_KEY 176 +# define EVP_F_ARIA_INIT_KEY 185 +# define EVP_F_B64_NEW 198 +# define EVP_F_CAMELLIA_INIT_KEY 159 +# define EVP_F_CHACHA20_POLY1305_CTRL 182 +# define EVP_F_CMLL_T4_INIT_KEY 179 +# define EVP_F_DES_EDE3_WRAP_CIPHER 171 +# define EVP_F_DO_SIGVER_INIT 161 +# define EVP_F_ENC_NEW 199 +# define EVP_F_EVP_CIPHERINIT_EX 123 +# define EVP_F_EVP_CIPHER_ASN1_TO_PARAM 204 +# define EVP_F_EVP_CIPHER_CTX_COPY 163 +# define EVP_F_EVP_CIPHER_CTX_CTRL 124 +# define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 +# define EVP_F_EVP_CIPHER_PARAM_TO_ASN1 205 +# define EVP_F_EVP_DECRYPTFINAL_EX 101 +# define EVP_F_EVP_DECRYPTUPDATE 166 +# define EVP_F_EVP_DIGESTFINALXOF 174 +# define EVP_F_EVP_DIGESTINIT_EX 128 +# define EVP_F_EVP_ENCRYPTDECRYPTUPDATE 219 +# define EVP_F_EVP_ENCRYPTFINAL_EX 127 +# define EVP_F_EVP_ENCRYPTUPDATE 167 +# define EVP_F_EVP_MD_CTX_COPY_EX 110 +# define EVP_F_EVP_MD_SIZE 162 +# define EVP_F_EVP_OPENINIT 102 +# define EVP_F_EVP_PBE_ALG_ADD 115 +# define EVP_F_EVP_PBE_ALG_ADD_TYPE 160 +# define EVP_F_EVP_PBE_CIPHERINIT 116 +# define EVP_F_EVP_PBE_SCRYPT 181 +# define EVP_F_EVP_PKCS82PKEY 111 +# define EVP_F_EVP_PKEY2PKCS8 113 +# define EVP_F_EVP_PKEY_ASN1_ADD0 188 +# define EVP_F_EVP_PKEY_CHECK 186 +# define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 +# define EVP_F_EVP_PKEY_CTX_CTRL 137 +# define EVP_F_EVP_PKEY_CTX_CTRL_STR 150 +# define EVP_F_EVP_PKEY_CTX_DUP 156 +# define EVP_F_EVP_PKEY_CTX_MD 168 +# define EVP_F_EVP_PKEY_DECRYPT 104 +# define EVP_F_EVP_PKEY_DECRYPT_INIT 138 +# define EVP_F_EVP_PKEY_DECRYPT_OLD 151 +# define EVP_F_EVP_PKEY_DERIVE 153 +# define EVP_F_EVP_PKEY_DERIVE_INIT 154 +# define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155 +# define EVP_F_EVP_PKEY_ENCRYPT 105 +# define EVP_F_EVP_PKEY_ENCRYPT_INIT 139 +# define EVP_F_EVP_PKEY_ENCRYPT_OLD 152 +# define EVP_F_EVP_PKEY_GET0_DH 119 +# define EVP_F_EVP_PKEY_GET0_DSA 120 +# define EVP_F_EVP_PKEY_GET0_EC_KEY 131 +# define EVP_F_EVP_PKEY_GET0_HMAC 183 +# define EVP_F_EVP_PKEY_GET0_POLY1305 184 +# define EVP_F_EVP_PKEY_GET0_RSA 121 +# define EVP_F_EVP_PKEY_GET0_SIPHASH 172 +# define EVP_F_EVP_PKEY_GET_RAW_PRIVATE_KEY 202 +# define EVP_F_EVP_PKEY_GET_RAW_PUBLIC_KEY 203 +# define EVP_F_EVP_PKEY_KEYGEN 146 +# define EVP_F_EVP_PKEY_KEYGEN_INIT 147 +# define EVP_F_EVP_PKEY_METH_ADD0 194 +# define EVP_F_EVP_PKEY_METH_NEW 195 +# define EVP_F_EVP_PKEY_NEW 106 +# define EVP_F_EVP_PKEY_NEW_CMAC_KEY 193 +# define EVP_F_EVP_PKEY_NEW_RAW_PRIVATE_KEY 191 +# define EVP_F_EVP_PKEY_NEW_RAW_PUBLIC_KEY 192 +# define EVP_F_EVP_PKEY_PARAMGEN 148 +# define EVP_F_EVP_PKEY_PARAMGEN_INIT 149 +# define EVP_F_EVP_PKEY_PARAM_CHECK 189 +# define EVP_F_EVP_PKEY_PUBLIC_CHECK 190 +# define EVP_F_EVP_PKEY_SET1_ENGINE 187 +# define EVP_F_EVP_PKEY_SET_ALIAS_TYPE 206 +# define EVP_F_EVP_PKEY_SIGN 140 +# define EVP_F_EVP_PKEY_SIGN_INIT 141 +# define EVP_F_EVP_PKEY_VERIFY 142 +# define EVP_F_EVP_PKEY_VERIFY_INIT 143 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER 144 +# define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145 +# define EVP_F_EVP_SIGNFINAL 107 +# define EVP_F_EVP_VERIFYFINAL 108 +# define EVP_F_INT_CTX_NEW 157 +# define EVP_F_OK_NEW 200 +# define EVP_F_PKCS5_PBE_KEYIVGEN 117 +# define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 +# define EVP_F_PKCS5_V2_PBKDF2_KEYIVGEN 164 +# define EVP_F_PKCS5_V2_SCRYPT_KEYIVGEN 180 +# define EVP_F_PKEY_SET_TYPE 158 +# define EVP_F_RC2_MAGIC_TO_METH 109 +# define EVP_F_RC5_CTRL 125 +# define EVP_F_R_32_12_16_INIT_KEY 242 +# define EVP_F_S390X_AES_GCM_CTRL 201 +# define EVP_F_UPDATE 173 + +/* + * EVP reason codes. + */ +# define EVP_R_AES_KEY_SETUP_FAILED 143 +# define EVP_R_ARIA_KEY_SETUP_FAILED 176 +# define EVP_R_BAD_DECRYPT 100 +# define EVP_R_BAD_KEY_LENGTH 195 +# define EVP_R_BUFFER_TOO_SMALL 155 +# define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 +# define EVP_R_CIPHER_PARAMETER_ERROR 122 +# define EVP_R_COMMAND_NOT_SUPPORTED 147 +# define EVP_R_COPY_ERROR 173 +# define EVP_R_CTRL_NOT_IMPLEMENTED 132 +# define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 +# define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 +# define EVP_R_DECODE_ERROR 114 +# define EVP_R_DIFFERENT_KEY_TYPES 101 +# define EVP_R_DIFFERENT_PARAMETERS 153 +# define EVP_R_ERROR_LOADING_SECTION 165 +# define EVP_R_ERROR_SETTING_FIPS_MODE 166 +# define EVP_R_EXPECTING_AN_HMAC_KEY 174 +# define EVP_R_EXPECTING_AN_RSA_KEY 127 +# define EVP_R_EXPECTING_A_DH_KEY 128 +# define EVP_R_EXPECTING_A_DSA_KEY 129 +# define EVP_R_EXPECTING_A_EC_KEY 142 +# define EVP_R_EXPECTING_A_POLY1305_KEY 164 +# define EVP_R_EXPECTING_A_SIPHASH_KEY 175 +# define EVP_R_FIPS_MODE_NOT_SUPPORTED 167 +# define EVP_R_GET_RAW_KEY_FAILED 182 +# define EVP_R_ILLEGAL_SCRYPT_PARAMETERS 171 +# define EVP_R_INITIALIZATION_ERROR 134 +# define EVP_R_INPUT_NOT_INITIALIZED 111 +# define EVP_R_INVALID_DIGEST 152 +# define EVP_R_INVALID_FIPS_MODE 168 +# define EVP_R_INVALID_IV_LENGTH 194 +# define EVP_R_INVALID_KEY 163 +# define EVP_R_INVALID_KEY_LENGTH 130 +# define EVP_R_INVALID_OPERATION 148 +# define EVP_R_KEYGEN_FAILURE 120 +# define EVP_R_KEY_SETUP_FAILED 180 +# define EVP_R_MEMORY_LIMIT_EXCEEDED 172 +# define EVP_R_MESSAGE_DIGEST_IS_NULL 159 +# define EVP_R_METHOD_NOT_SUPPORTED 144 +# define EVP_R_MISSING_PARAMETERS 103 +# define EVP_R_NOT_XOF_OR_INVALID_LENGTH 178 +# define EVP_R_NO_CIPHER_SET 131 +# define EVP_R_NO_DEFAULT_DIGEST 158 +# define EVP_R_NO_DIGEST_SET 139 +# define EVP_R_NO_KEY_SET 154 +# define EVP_R_NO_OPERATION_SET 149 +# define EVP_R_ONLY_ONESHOT_SUPPORTED 177 +# define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150 +# define EVP_R_OPERATON_NOT_INITIALIZED 151 +# define EVP_R_OUTPUT_WOULD_OVERFLOW 184 +# define EVP_R_PARTIALLY_OVERLAPPING 162 +# define EVP_R_PBKDF2_ERROR 181 +# define EVP_R_PKEY_APPLICATION_ASN1_METHOD_ALREADY_REGISTERED 179 +# define EVP_R_PRIVATE_KEY_DECODE_ERROR 145 +# define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146 +# define EVP_R_PUBLIC_KEY_NOT_RSA 106 +# define EVP_R_UNKNOWN_CIPHER 160 +# define EVP_R_UNKNOWN_DIGEST 161 +# define EVP_R_UNKNOWN_OPTION 169 +# define EVP_R_UNKNOWN_PBE_ALGORITHM 121 +# define EVP_R_UNSUPPORTED_ALGORITHM 156 +# define EVP_R_UNSUPPORTED_CIPHER 107 +# define EVP_R_UNSUPPORTED_KEYLENGTH 123 +# define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 +# define EVP_R_UNSUPPORTED_KEY_SIZE 108 +# define EVP_R_UNSUPPORTED_NUMBER_OF_ROUNDS 135 +# define EVP_R_UNSUPPORTED_PRF 125 +# define EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM 118 +# define EVP_R_UNSUPPORTED_SALT_TYPE 126 +# define EVP_R_WRAP_MODE_NOT_ALLOWED 170 +# define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 +# define EVP_R_XTS_DUPLICATED_KEYS 183 + +#endif diff --git a/include/openssl/openssl/hmac.h b/include/openssl/openssl/hmac.h new file mode 100644 index 00000000..458efc1d --- /dev/null +++ b/include/openssl/openssl/hmac.h @@ -0,0 +1,51 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_HMAC_H +# define HEADER_HMAC_H + +# include + +# include + +# if OPENSSL_API_COMPAT < 0x10200000L +# define HMAC_MAX_MD_CBLOCK 128 /* Deprecated */ +# endif + +#ifdef __cplusplus +extern "C" { +#endif + +size_t HMAC_size(const HMAC_CTX *e); +HMAC_CTX *HMAC_CTX_new(void); +int HMAC_CTX_reset(HMAC_CTX *ctx); +void HMAC_CTX_free(HMAC_CTX *ctx); + +DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md)) + +/*__owur*/ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, + const EVP_MD *md, ENGINE *impl); +/*__owur*/ int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, + size_t len); +/*__owur*/ int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, + unsigned int *len); +unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, + const unsigned char *d, size_t n, unsigned char *md, + unsigned int *md_len); +__owur int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); + +void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); +const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/openssl/lhash.h b/include/openssl/openssl/lhash.h new file mode 100644 index 00000000..2e42d727 --- /dev/null +++ b/include/openssl/openssl/lhash.h @@ -0,0 +1,241 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * Header for dynamic hash table routines Author - Eric Young + */ + +#ifndef HEADER_LHASH_H +# define HEADER_LHASH_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct lhash_node_st OPENSSL_LH_NODE; +typedef int (*OPENSSL_LH_COMPFUNC) (const void *, const void *); +typedef unsigned long (*OPENSSL_LH_HASHFUNC) (const void *); +typedef void (*OPENSSL_LH_DOALL_FUNC) (void *); +typedef void (*OPENSSL_LH_DOALL_FUNCARG) (void *, void *); +typedef struct lhash_st OPENSSL_LHASH; + +/* + * Macros for declaring and implementing type-safe wrappers for LHASH + * callbacks. This way, callbacks can be provided to LHASH structures without + * function pointer casting and the macro-defined callbacks provide + * per-variable casting before deferring to the underlying type-specific + * callbacks. NB: It is possible to place a "static" in front of both the + * DECLARE and IMPLEMENT macros if the functions are strictly internal. + */ + +/* First: "hash" functions */ +# define DECLARE_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *); +# define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ + unsigned long name##_LHASH_HASH(const void *arg) { \ + const o_type *a = arg; \ + return name##_hash(a); } +# define LHASH_HASH_FN(name) name##_LHASH_HASH + +/* Second: "compare" functions */ +# define DECLARE_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *, const void *); +# define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ + int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ + const o_type *a = arg1; \ + const o_type *b = arg2; \ + return name##_cmp(a,b); } +# define LHASH_COMP_FN(name) name##_LHASH_COMP + +/* Fourth: "doall_arg" functions */ +# define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *, void *); +# define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ + void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ + o_type *a = arg1; \ + a_type *b = arg2; \ + name##_doall_arg(a, b); } +# define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG + + +# define LH_LOAD_MULT 256 + +int OPENSSL_LH_error(OPENSSL_LHASH *lh); +OPENSSL_LHASH *OPENSSL_LH_new(OPENSSL_LH_HASHFUNC h, OPENSSL_LH_COMPFUNC c); +void OPENSSL_LH_free(OPENSSL_LHASH *lh); +void *OPENSSL_LH_insert(OPENSSL_LHASH *lh, void *data); +void *OPENSSL_LH_delete(OPENSSL_LHASH *lh, const void *data); +void *OPENSSL_LH_retrieve(OPENSSL_LHASH *lh, const void *data); +void OPENSSL_LH_doall(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNC func); +void OPENSSL_LH_doall_arg(OPENSSL_LHASH *lh, OPENSSL_LH_DOALL_FUNCARG func, void *arg); +unsigned long OPENSSL_LH_strhash(const char *c); +unsigned long OPENSSL_LH_num_items(const OPENSSL_LHASH *lh); +unsigned long OPENSSL_LH_get_down_load(const OPENSSL_LHASH *lh); +void OPENSSL_LH_set_down_load(OPENSSL_LHASH *lh, unsigned long down_load); + +# ifndef OPENSSL_NO_STDIO +void OPENSSL_LH_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_stats(const OPENSSL_LHASH *lh, FILE *fp); +void OPENSSL_LH_node_usage_stats(const OPENSSL_LHASH *lh, FILE *fp); +# endif +void OPENSSL_LH_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_stats_bio(const OPENSSL_LHASH *lh, BIO *out); +void OPENSSL_LH_node_usage_stats_bio(const OPENSSL_LHASH *lh, BIO *out); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _LHASH OPENSSL_LHASH +# define LHASH_NODE OPENSSL_LH_NODE +# define lh_error OPENSSL_LH_error +# define lh_new OPENSSL_LH_new +# define lh_free OPENSSL_LH_free +# define lh_insert OPENSSL_LH_insert +# define lh_delete OPENSSL_LH_delete +# define lh_retrieve OPENSSL_LH_retrieve +# define lh_doall OPENSSL_LH_doall +# define lh_doall_arg OPENSSL_LH_doall_arg +# define lh_strhash OPENSSL_LH_strhash +# define lh_num_items OPENSSL_LH_num_items +# ifndef OPENSSL_NO_STDIO +# define lh_stats OPENSSL_LH_stats +# define lh_node_stats OPENSSL_LH_node_stats +# define lh_node_usage_stats OPENSSL_LH_node_usage_stats +# endif +# define lh_stats_bio OPENSSL_LH_stats_bio +# define lh_node_stats_bio OPENSSL_LH_node_stats_bio +# define lh_node_usage_stats_bio OPENSSL_LH_node_usage_stats_bio +# endif + +/* Type checking... */ + +# define LHASH_OF(type) struct lhash_st_##type + +# define DEFINE_LHASH_OF(type) \ + LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ + static ossl_unused ossl_inline LHASH_OF(type) *lh_##type##_new(unsigned long (*hfn)(const type *), \ + int (*cfn)(const type *, const type *)) \ + { \ + return (LHASH_OF(type) *) \ + OPENSSL_LH_new((OPENSSL_LH_HASHFUNC)hfn, (OPENSSL_LH_COMPFUNC)cfn); \ + } \ + static ossl_unused ossl_inline void lh_##type##_free(LHASH_OF(type) *lh) \ + { \ + OPENSSL_LH_free((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_insert(LHASH_OF(type) *lh, type *d) \ + { \ + return (type *)OPENSSL_LH_insert((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_delete(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_delete((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline type *lh_##type##_retrieve(LHASH_OF(type) *lh, const type *d) \ + { \ + return (type *)OPENSSL_LH_retrieve((OPENSSL_LHASH *)lh, d); \ + } \ + static ossl_unused ossl_inline int lh_##type##_error(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_error((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_num_items(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_num_items((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_node_usage_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_node_usage_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline void lh_##type##_stats_bio(const LHASH_OF(type) *lh, BIO *out) \ + { \ + OPENSSL_LH_stats_bio((const OPENSSL_LHASH *)lh, out); \ + } \ + static ossl_unused ossl_inline unsigned long lh_##type##_get_down_load(LHASH_OF(type) *lh) \ + { \ + return OPENSSL_LH_get_down_load((OPENSSL_LHASH *)lh); \ + } \ + static ossl_unused ossl_inline void lh_##type##_set_down_load(LHASH_OF(type) *lh, unsigned long dl) \ + { \ + OPENSSL_LH_set_down_load((OPENSSL_LHASH *)lh, dl); \ + } \ + static ossl_unused ossl_inline void lh_##type##_doall(LHASH_OF(type) *lh, \ + void (*doall)(type *)) \ + { \ + OPENSSL_LH_doall((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNC)doall); \ + } \ + LHASH_OF(type) + +#define IMPLEMENT_LHASH_DOALL_ARG_CONST(type, argtype) \ + int_implement_lhash_doall(type, argtype, const type) + +#define IMPLEMENT_LHASH_DOALL_ARG(type, argtype) \ + int_implement_lhash_doall(type, argtype, type) + +#define int_implement_lhash_doall(type, argtype, cbargtype) \ + static ossl_unused ossl_inline void \ + lh_##type##_doall_##argtype(LHASH_OF(type) *lh, \ + void (*fn)(cbargtype *, argtype *), \ + argtype *arg) \ + { \ + OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, (OPENSSL_LH_DOALL_FUNCARG)fn, (void *)arg); \ + } \ + LHASH_OF(type) + +DEFINE_LHASH_OF(OPENSSL_STRING); +# ifdef _MSC_VER +/* + * push and pop this warning: + * warning C4090: 'function': different 'const' qualifiers + */ +# pragma warning (push) +# pragma warning (disable: 4090) +# endif + +DEFINE_LHASH_OF(OPENSSL_CSTRING); + +# ifdef _MSC_VER +# pragma warning (pop) +# endif + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_LH_new +# pragma weak OPENSSL_LH_free +# pragma weak OPENSSL_LH_insert +# pragma weak OPENSSL_LH_delete +# pragma weak OPENSSL_LH_retrieve +# pragma weak OPENSSL_LH_error +# pragma weak OPENSSL_LH_num_items +# pragma weak OPENSSL_LH_node_stats_bio +# pragma weak OPENSSL_LH_node_usage_stats_bio +# pragma weak OPENSSL_LH_stats_bio +# pragma weak OPENSSL_LH_get_down_load +# pragma weak OPENSSL_LH_set_down_load +# pragma weak OPENSSL_LH_doall +# pragma weak OPENSSL_LH_doall_arg +# endif /* __SUNPRO_C */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/openssl/obj_mac.h b/include/openssl/openssl/obj_mac.h new file mode 100644 index 00000000..eb812ed1 --- /dev/null +++ b/include/openssl/openssl/obj_mac.h @@ -0,0 +1,5198 @@ +/* + * WARNING: do not edit! + * Generated by crypto/objects/objects.pl + * + * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#define SN_undef "UNDEF" +#define LN_undef "undefined" +#define NID_undef 0 +#define OBJ_undef 0L + +#define SN_itu_t "ITU-T" +#define LN_itu_t "itu-t" +#define NID_itu_t 645 +#define OBJ_itu_t 0L + +#define NID_ccitt 404 +#define OBJ_ccitt OBJ_itu_t + +#define SN_iso "ISO" +#define LN_iso "iso" +#define NID_iso 181 +#define OBJ_iso 1L + +#define SN_joint_iso_itu_t "JOINT-ISO-ITU-T" +#define LN_joint_iso_itu_t "joint-iso-itu-t" +#define NID_joint_iso_itu_t 646 +#define OBJ_joint_iso_itu_t 2L + +#define NID_joint_iso_ccitt 393 +#define OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t + +#define SN_member_body "member-body" +#define LN_member_body "ISO Member Body" +#define NID_member_body 182 +#define OBJ_member_body OBJ_iso,2L + +#define SN_identified_organization "identified-organization" +#define NID_identified_organization 676 +#define OBJ_identified_organization OBJ_iso,3L + +#define SN_hmac_md5 "HMAC-MD5" +#define LN_hmac_md5 "hmac-md5" +#define NID_hmac_md5 780 +#define OBJ_hmac_md5 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,1L + +#define SN_hmac_sha1 "HMAC-SHA1" +#define LN_hmac_sha1 "hmac-sha1" +#define NID_hmac_sha1 781 +#define OBJ_hmac_sha1 OBJ_identified_organization,6L,1L,5L,5L,8L,1L,2L + +#define SN_x509ExtAdmission "x509ExtAdmission" +#define LN_x509ExtAdmission "Professional Information or basis for Admission" +#define NID_x509ExtAdmission 1093 +#define OBJ_x509ExtAdmission OBJ_identified_organization,36L,8L,3L,3L + +#define SN_certicom_arc "certicom-arc" +#define NID_certicom_arc 677 +#define OBJ_certicom_arc OBJ_identified_organization,132L + +#define SN_ieee "ieee" +#define NID_ieee 1170 +#define OBJ_ieee OBJ_identified_organization,111L + +#define SN_ieee_siswg "ieee-siswg" +#define LN_ieee_siswg "IEEE Security in Storage Working Group" +#define NID_ieee_siswg 1171 +#define OBJ_ieee_siswg OBJ_ieee,2L,1619L + +#define SN_international_organizations "international-organizations" +#define LN_international_organizations "International Organizations" +#define NID_international_organizations 647 +#define OBJ_international_organizations OBJ_joint_iso_itu_t,23L + +#define SN_wap "wap" +#define NID_wap 678 +#define OBJ_wap OBJ_international_organizations,43L + +#define SN_wap_wsg "wap-wsg" +#define NID_wap_wsg 679 +#define OBJ_wap_wsg OBJ_wap,1L + +#define SN_selected_attribute_types "selected-attribute-types" +#define LN_selected_attribute_types "Selected Attribute Types" +#define NID_selected_attribute_types 394 +#define OBJ_selected_attribute_types OBJ_joint_iso_itu_t,5L,1L,5L + +#define SN_clearance "clearance" +#define NID_clearance 395 +#define OBJ_clearance OBJ_selected_attribute_types,55L + +#define SN_ISO_US "ISO-US" +#define LN_ISO_US "ISO US Member Body" +#define NID_ISO_US 183 +#define OBJ_ISO_US OBJ_member_body,840L + +#define SN_X9_57 "X9-57" +#define LN_X9_57 "X9.57" +#define NID_X9_57 184 +#define OBJ_X9_57 OBJ_ISO_US,10040L + +#define SN_X9cm "X9cm" +#define LN_X9cm "X9.57 CM ?" +#define NID_X9cm 185 +#define OBJ_X9cm OBJ_X9_57,4L + +#define SN_ISO_CN "ISO-CN" +#define LN_ISO_CN "ISO CN Member Body" +#define NID_ISO_CN 1140 +#define OBJ_ISO_CN OBJ_member_body,156L + +#define SN_oscca "oscca" +#define NID_oscca 1141 +#define OBJ_oscca OBJ_ISO_CN,10197L + +#define SN_sm_scheme "sm-scheme" +#define NID_sm_scheme 1142 +#define OBJ_sm_scheme OBJ_oscca,1L + +#define SN_dsa "DSA" +#define LN_dsa "dsaEncryption" +#define NID_dsa 116 +#define OBJ_dsa OBJ_X9cm,1L + +#define SN_dsaWithSHA1 "DSA-SHA1" +#define LN_dsaWithSHA1 "dsaWithSHA1" +#define NID_dsaWithSHA1 113 +#define OBJ_dsaWithSHA1 OBJ_X9cm,3L + +#define SN_ansi_X9_62 "ansi-X9-62" +#define LN_ansi_X9_62 "ANSI X9.62" +#define NID_ansi_X9_62 405 +#define OBJ_ansi_X9_62 OBJ_ISO_US,10045L + +#define OBJ_X9_62_id_fieldType OBJ_ansi_X9_62,1L + +#define SN_X9_62_prime_field "prime-field" +#define NID_X9_62_prime_field 406 +#define OBJ_X9_62_prime_field OBJ_X9_62_id_fieldType,1L + +#define SN_X9_62_characteristic_two_field "characteristic-two-field" +#define NID_X9_62_characteristic_two_field 407 +#define OBJ_X9_62_characteristic_two_field OBJ_X9_62_id_fieldType,2L + +#define SN_X9_62_id_characteristic_two_basis "id-characteristic-two-basis" +#define NID_X9_62_id_characteristic_two_basis 680 +#define OBJ_X9_62_id_characteristic_two_basis OBJ_X9_62_characteristic_two_field,3L + +#define SN_X9_62_onBasis "onBasis" +#define NID_X9_62_onBasis 681 +#define OBJ_X9_62_onBasis OBJ_X9_62_id_characteristic_two_basis,1L + +#define SN_X9_62_tpBasis "tpBasis" +#define NID_X9_62_tpBasis 682 +#define OBJ_X9_62_tpBasis OBJ_X9_62_id_characteristic_two_basis,2L + +#define SN_X9_62_ppBasis "ppBasis" +#define NID_X9_62_ppBasis 683 +#define OBJ_X9_62_ppBasis OBJ_X9_62_id_characteristic_two_basis,3L + +#define OBJ_X9_62_id_publicKeyType OBJ_ansi_X9_62,2L + +#define SN_X9_62_id_ecPublicKey "id-ecPublicKey" +#define NID_X9_62_id_ecPublicKey 408 +#define OBJ_X9_62_id_ecPublicKey OBJ_X9_62_id_publicKeyType,1L + +#define OBJ_X9_62_ellipticCurve OBJ_ansi_X9_62,3L + +#define OBJ_X9_62_c_TwoCurve OBJ_X9_62_ellipticCurve,0L + +#define SN_X9_62_c2pnb163v1 "c2pnb163v1" +#define NID_X9_62_c2pnb163v1 684 +#define OBJ_X9_62_c2pnb163v1 OBJ_X9_62_c_TwoCurve,1L + +#define SN_X9_62_c2pnb163v2 "c2pnb163v2" +#define NID_X9_62_c2pnb163v2 685 +#define OBJ_X9_62_c2pnb163v2 OBJ_X9_62_c_TwoCurve,2L + +#define SN_X9_62_c2pnb163v3 "c2pnb163v3" +#define NID_X9_62_c2pnb163v3 686 +#define OBJ_X9_62_c2pnb163v3 OBJ_X9_62_c_TwoCurve,3L + +#define SN_X9_62_c2pnb176v1 "c2pnb176v1" +#define NID_X9_62_c2pnb176v1 687 +#define OBJ_X9_62_c2pnb176v1 OBJ_X9_62_c_TwoCurve,4L + +#define SN_X9_62_c2tnb191v1 "c2tnb191v1" +#define NID_X9_62_c2tnb191v1 688 +#define OBJ_X9_62_c2tnb191v1 OBJ_X9_62_c_TwoCurve,5L + +#define SN_X9_62_c2tnb191v2 "c2tnb191v2" +#define NID_X9_62_c2tnb191v2 689 +#define OBJ_X9_62_c2tnb191v2 OBJ_X9_62_c_TwoCurve,6L + +#define SN_X9_62_c2tnb191v3 "c2tnb191v3" +#define NID_X9_62_c2tnb191v3 690 +#define OBJ_X9_62_c2tnb191v3 OBJ_X9_62_c_TwoCurve,7L + +#define SN_X9_62_c2onb191v4 "c2onb191v4" +#define NID_X9_62_c2onb191v4 691 +#define OBJ_X9_62_c2onb191v4 OBJ_X9_62_c_TwoCurve,8L + +#define SN_X9_62_c2onb191v5 "c2onb191v5" +#define NID_X9_62_c2onb191v5 692 +#define OBJ_X9_62_c2onb191v5 OBJ_X9_62_c_TwoCurve,9L + +#define SN_X9_62_c2pnb208w1 "c2pnb208w1" +#define NID_X9_62_c2pnb208w1 693 +#define OBJ_X9_62_c2pnb208w1 OBJ_X9_62_c_TwoCurve,10L + +#define SN_X9_62_c2tnb239v1 "c2tnb239v1" +#define NID_X9_62_c2tnb239v1 694 +#define OBJ_X9_62_c2tnb239v1 OBJ_X9_62_c_TwoCurve,11L + +#define SN_X9_62_c2tnb239v2 "c2tnb239v2" +#define NID_X9_62_c2tnb239v2 695 +#define OBJ_X9_62_c2tnb239v2 OBJ_X9_62_c_TwoCurve,12L + +#define SN_X9_62_c2tnb239v3 "c2tnb239v3" +#define NID_X9_62_c2tnb239v3 696 +#define OBJ_X9_62_c2tnb239v3 OBJ_X9_62_c_TwoCurve,13L + +#define SN_X9_62_c2onb239v4 "c2onb239v4" +#define NID_X9_62_c2onb239v4 697 +#define OBJ_X9_62_c2onb239v4 OBJ_X9_62_c_TwoCurve,14L + +#define SN_X9_62_c2onb239v5 "c2onb239v5" +#define NID_X9_62_c2onb239v5 698 +#define OBJ_X9_62_c2onb239v5 OBJ_X9_62_c_TwoCurve,15L + +#define SN_X9_62_c2pnb272w1 "c2pnb272w1" +#define NID_X9_62_c2pnb272w1 699 +#define OBJ_X9_62_c2pnb272w1 OBJ_X9_62_c_TwoCurve,16L + +#define SN_X9_62_c2pnb304w1 "c2pnb304w1" +#define NID_X9_62_c2pnb304w1 700 +#define OBJ_X9_62_c2pnb304w1 OBJ_X9_62_c_TwoCurve,17L + +#define SN_X9_62_c2tnb359v1 "c2tnb359v1" +#define NID_X9_62_c2tnb359v1 701 +#define OBJ_X9_62_c2tnb359v1 OBJ_X9_62_c_TwoCurve,18L + +#define SN_X9_62_c2pnb368w1 "c2pnb368w1" +#define NID_X9_62_c2pnb368w1 702 +#define OBJ_X9_62_c2pnb368w1 OBJ_X9_62_c_TwoCurve,19L + +#define SN_X9_62_c2tnb431r1 "c2tnb431r1" +#define NID_X9_62_c2tnb431r1 703 +#define OBJ_X9_62_c2tnb431r1 OBJ_X9_62_c_TwoCurve,20L + +#define OBJ_X9_62_primeCurve OBJ_X9_62_ellipticCurve,1L + +#define SN_X9_62_prime192v1 "prime192v1" +#define NID_X9_62_prime192v1 409 +#define OBJ_X9_62_prime192v1 OBJ_X9_62_primeCurve,1L + +#define SN_X9_62_prime192v2 "prime192v2" +#define NID_X9_62_prime192v2 410 +#define OBJ_X9_62_prime192v2 OBJ_X9_62_primeCurve,2L + +#define SN_X9_62_prime192v3 "prime192v3" +#define NID_X9_62_prime192v3 411 +#define OBJ_X9_62_prime192v3 OBJ_X9_62_primeCurve,3L + +#define SN_X9_62_prime239v1 "prime239v1" +#define NID_X9_62_prime239v1 412 +#define OBJ_X9_62_prime239v1 OBJ_X9_62_primeCurve,4L + +#define SN_X9_62_prime239v2 "prime239v2" +#define NID_X9_62_prime239v2 413 +#define OBJ_X9_62_prime239v2 OBJ_X9_62_primeCurve,5L + +#define SN_X9_62_prime239v3 "prime239v3" +#define NID_X9_62_prime239v3 414 +#define OBJ_X9_62_prime239v3 OBJ_X9_62_primeCurve,6L + +#define SN_X9_62_prime256v1 "prime256v1" +#define NID_X9_62_prime256v1 415 +#define OBJ_X9_62_prime256v1 OBJ_X9_62_primeCurve,7L + +#define OBJ_X9_62_id_ecSigType OBJ_ansi_X9_62,4L + +#define SN_ecdsa_with_SHA1 "ecdsa-with-SHA1" +#define NID_ecdsa_with_SHA1 416 +#define OBJ_ecdsa_with_SHA1 OBJ_X9_62_id_ecSigType,1L + +#define SN_ecdsa_with_Recommended "ecdsa-with-Recommended" +#define NID_ecdsa_with_Recommended 791 +#define OBJ_ecdsa_with_Recommended OBJ_X9_62_id_ecSigType,2L + +#define SN_ecdsa_with_Specified "ecdsa-with-Specified" +#define NID_ecdsa_with_Specified 792 +#define OBJ_ecdsa_with_Specified OBJ_X9_62_id_ecSigType,3L + +#define SN_ecdsa_with_SHA224 "ecdsa-with-SHA224" +#define NID_ecdsa_with_SHA224 793 +#define OBJ_ecdsa_with_SHA224 OBJ_ecdsa_with_Specified,1L + +#define SN_ecdsa_with_SHA256 "ecdsa-with-SHA256" +#define NID_ecdsa_with_SHA256 794 +#define OBJ_ecdsa_with_SHA256 OBJ_ecdsa_with_Specified,2L + +#define SN_ecdsa_with_SHA384 "ecdsa-with-SHA384" +#define NID_ecdsa_with_SHA384 795 +#define OBJ_ecdsa_with_SHA384 OBJ_ecdsa_with_Specified,3L + +#define SN_ecdsa_with_SHA512 "ecdsa-with-SHA512" +#define NID_ecdsa_with_SHA512 796 +#define OBJ_ecdsa_with_SHA512 OBJ_ecdsa_with_Specified,4L + +#define OBJ_secg_ellipticCurve OBJ_certicom_arc,0L + +#define SN_secp112r1 "secp112r1" +#define NID_secp112r1 704 +#define OBJ_secp112r1 OBJ_secg_ellipticCurve,6L + +#define SN_secp112r2 "secp112r2" +#define NID_secp112r2 705 +#define OBJ_secp112r2 OBJ_secg_ellipticCurve,7L + +#define SN_secp128r1 "secp128r1" +#define NID_secp128r1 706 +#define OBJ_secp128r1 OBJ_secg_ellipticCurve,28L + +#define SN_secp128r2 "secp128r2" +#define NID_secp128r2 707 +#define OBJ_secp128r2 OBJ_secg_ellipticCurve,29L + +#define SN_secp160k1 "secp160k1" +#define NID_secp160k1 708 +#define OBJ_secp160k1 OBJ_secg_ellipticCurve,9L + +#define SN_secp160r1 "secp160r1" +#define NID_secp160r1 709 +#define OBJ_secp160r1 OBJ_secg_ellipticCurve,8L + +#define SN_secp160r2 "secp160r2" +#define NID_secp160r2 710 +#define OBJ_secp160r2 OBJ_secg_ellipticCurve,30L + +#define SN_secp192k1 "secp192k1" +#define NID_secp192k1 711 +#define OBJ_secp192k1 OBJ_secg_ellipticCurve,31L + +#define SN_secp224k1 "secp224k1" +#define NID_secp224k1 712 +#define OBJ_secp224k1 OBJ_secg_ellipticCurve,32L + +#define SN_secp224r1 "secp224r1" +#define NID_secp224r1 713 +#define OBJ_secp224r1 OBJ_secg_ellipticCurve,33L + +#define SN_secp256k1 "secp256k1" +#define NID_secp256k1 714 +#define OBJ_secp256k1 OBJ_secg_ellipticCurve,10L + +#define SN_secp384r1 "secp384r1" +#define NID_secp384r1 715 +#define OBJ_secp384r1 OBJ_secg_ellipticCurve,34L + +#define SN_secp521r1 "secp521r1" +#define NID_secp521r1 716 +#define OBJ_secp521r1 OBJ_secg_ellipticCurve,35L + +#define SN_sect113r1 "sect113r1" +#define NID_sect113r1 717 +#define OBJ_sect113r1 OBJ_secg_ellipticCurve,4L + +#define SN_sect113r2 "sect113r2" +#define NID_sect113r2 718 +#define OBJ_sect113r2 OBJ_secg_ellipticCurve,5L + +#define SN_sect131r1 "sect131r1" +#define NID_sect131r1 719 +#define OBJ_sect131r1 OBJ_secg_ellipticCurve,22L + +#define SN_sect131r2 "sect131r2" +#define NID_sect131r2 720 +#define OBJ_sect131r2 OBJ_secg_ellipticCurve,23L + +#define SN_sect163k1 "sect163k1" +#define NID_sect163k1 721 +#define OBJ_sect163k1 OBJ_secg_ellipticCurve,1L + +#define SN_sect163r1 "sect163r1" +#define NID_sect163r1 722 +#define OBJ_sect163r1 OBJ_secg_ellipticCurve,2L + +#define SN_sect163r2 "sect163r2" +#define NID_sect163r2 723 +#define OBJ_sect163r2 OBJ_secg_ellipticCurve,15L + +#define SN_sect193r1 "sect193r1" +#define NID_sect193r1 724 +#define OBJ_sect193r1 OBJ_secg_ellipticCurve,24L + +#define SN_sect193r2 "sect193r2" +#define NID_sect193r2 725 +#define OBJ_sect193r2 OBJ_secg_ellipticCurve,25L + +#define SN_sect233k1 "sect233k1" +#define NID_sect233k1 726 +#define OBJ_sect233k1 OBJ_secg_ellipticCurve,26L + +#define SN_sect233r1 "sect233r1" +#define NID_sect233r1 727 +#define OBJ_sect233r1 OBJ_secg_ellipticCurve,27L + +#define SN_sect239k1 "sect239k1" +#define NID_sect239k1 728 +#define OBJ_sect239k1 OBJ_secg_ellipticCurve,3L + +#define SN_sect283k1 "sect283k1" +#define NID_sect283k1 729 +#define OBJ_sect283k1 OBJ_secg_ellipticCurve,16L + +#define SN_sect283r1 "sect283r1" +#define NID_sect283r1 730 +#define OBJ_sect283r1 OBJ_secg_ellipticCurve,17L + +#define SN_sect409k1 "sect409k1" +#define NID_sect409k1 731 +#define OBJ_sect409k1 OBJ_secg_ellipticCurve,36L + +#define SN_sect409r1 "sect409r1" +#define NID_sect409r1 732 +#define OBJ_sect409r1 OBJ_secg_ellipticCurve,37L + +#define SN_sect571k1 "sect571k1" +#define NID_sect571k1 733 +#define OBJ_sect571k1 OBJ_secg_ellipticCurve,38L + +#define SN_sect571r1 "sect571r1" +#define NID_sect571r1 734 +#define OBJ_sect571r1 OBJ_secg_ellipticCurve,39L + +#define OBJ_wap_wsg_idm_ecid OBJ_wap_wsg,4L + +#define SN_wap_wsg_idm_ecid_wtls1 "wap-wsg-idm-ecid-wtls1" +#define NID_wap_wsg_idm_ecid_wtls1 735 +#define OBJ_wap_wsg_idm_ecid_wtls1 OBJ_wap_wsg_idm_ecid,1L + +#define SN_wap_wsg_idm_ecid_wtls3 "wap-wsg-idm-ecid-wtls3" +#define NID_wap_wsg_idm_ecid_wtls3 736 +#define OBJ_wap_wsg_idm_ecid_wtls3 OBJ_wap_wsg_idm_ecid,3L + +#define SN_wap_wsg_idm_ecid_wtls4 "wap-wsg-idm-ecid-wtls4" +#define NID_wap_wsg_idm_ecid_wtls4 737 +#define OBJ_wap_wsg_idm_ecid_wtls4 OBJ_wap_wsg_idm_ecid,4L + +#define SN_wap_wsg_idm_ecid_wtls5 "wap-wsg-idm-ecid-wtls5" +#define NID_wap_wsg_idm_ecid_wtls5 738 +#define OBJ_wap_wsg_idm_ecid_wtls5 OBJ_wap_wsg_idm_ecid,5L + +#define SN_wap_wsg_idm_ecid_wtls6 "wap-wsg-idm-ecid-wtls6" +#define NID_wap_wsg_idm_ecid_wtls6 739 +#define OBJ_wap_wsg_idm_ecid_wtls6 OBJ_wap_wsg_idm_ecid,6L + +#define SN_wap_wsg_idm_ecid_wtls7 "wap-wsg-idm-ecid-wtls7" +#define NID_wap_wsg_idm_ecid_wtls7 740 +#define OBJ_wap_wsg_idm_ecid_wtls7 OBJ_wap_wsg_idm_ecid,7L + +#define SN_wap_wsg_idm_ecid_wtls8 "wap-wsg-idm-ecid-wtls8" +#define NID_wap_wsg_idm_ecid_wtls8 741 +#define OBJ_wap_wsg_idm_ecid_wtls8 OBJ_wap_wsg_idm_ecid,8L + +#define SN_wap_wsg_idm_ecid_wtls9 "wap-wsg-idm-ecid-wtls9" +#define NID_wap_wsg_idm_ecid_wtls9 742 +#define OBJ_wap_wsg_idm_ecid_wtls9 OBJ_wap_wsg_idm_ecid,9L + +#define SN_wap_wsg_idm_ecid_wtls10 "wap-wsg-idm-ecid-wtls10" +#define NID_wap_wsg_idm_ecid_wtls10 743 +#define OBJ_wap_wsg_idm_ecid_wtls10 OBJ_wap_wsg_idm_ecid,10L + +#define SN_wap_wsg_idm_ecid_wtls11 "wap-wsg-idm-ecid-wtls11" +#define NID_wap_wsg_idm_ecid_wtls11 744 +#define OBJ_wap_wsg_idm_ecid_wtls11 OBJ_wap_wsg_idm_ecid,11L + +#define SN_wap_wsg_idm_ecid_wtls12 "wap-wsg-idm-ecid-wtls12" +#define NID_wap_wsg_idm_ecid_wtls12 745 +#define OBJ_wap_wsg_idm_ecid_wtls12 OBJ_wap_wsg_idm_ecid,12L + +#define SN_cast5_cbc "CAST5-CBC" +#define LN_cast5_cbc "cast5-cbc" +#define NID_cast5_cbc 108 +#define OBJ_cast5_cbc OBJ_ISO_US,113533L,7L,66L,10L + +#define SN_cast5_ecb "CAST5-ECB" +#define LN_cast5_ecb "cast5-ecb" +#define NID_cast5_ecb 109 + +#define SN_cast5_cfb64 "CAST5-CFB" +#define LN_cast5_cfb64 "cast5-cfb" +#define NID_cast5_cfb64 110 + +#define SN_cast5_ofb64 "CAST5-OFB" +#define LN_cast5_ofb64 "cast5-ofb" +#define NID_cast5_ofb64 111 + +#define LN_pbeWithMD5AndCast5_CBC "pbeWithMD5AndCast5CBC" +#define NID_pbeWithMD5AndCast5_CBC 112 +#define OBJ_pbeWithMD5AndCast5_CBC OBJ_ISO_US,113533L,7L,66L,12L + +#define SN_id_PasswordBasedMAC "id-PasswordBasedMAC" +#define LN_id_PasswordBasedMAC "password based MAC" +#define NID_id_PasswordBasedMAC 782 +#define OBJ_id_PasswordBasedMAC OBJ_ISO_US,113533L,7L,66L,13L + +#define SN_id_DHBasedMac "id-DHBasedMac" +#define LN_id_DHBasedMac "Diffie-Hellman based MAC" +#define NID_id_DHBasedMac 783 +#define OBJ_id_DHBasedMac OBJ_ISO_US,113533L,7L,66L,30L + +#define SN_rsadsi "rsadsi" +#define LN_rsadsi "RSA Data Security, Inc." +#define NID_rsadsi 1 +#define OBJ_rsadsi OBJ_ISO_US,113549L + +#define SN_pkcs "pkcs" +#define LN_pkcs "RSA Data Security, Inc. PKCS" +#define NID_pkcs 2 +#define OBJ_pkcs OBJ_rsadsi,1L + +#define SN_pkcs1 "pkcs1" +#define NID_pkcs1 186 +#define OBJ_pkcs1 OBJ_pkcs,1L + +#define LN_rsaEncryption "rsaEncryption" +#define NID_rsaEncryption 6 +#define OBJ_rsaEncryption OBJ_pkcs1,1L + +#define SN_md2WithRSAEncryption "RSA-MD2" +#define LN_md2WithRSAEncryption "md2WithRSAEncryption" +#define NID_md2WithRSAEncryption 7 +#define OBJ_md2WithRSAEncryption OBJ_pkcs1,2L + +#define SN_md4WithRSAEncryption "RSA-MD4" +#define LN_md4WithRSAEncryption "md4WithRSAEncryption" +#define NID_md4WithRSAEncryption 396 +#define OBJ_md4WithRSAEncryption OBJ_pkcs1,3L + +#define SN_md5WithRSAEncryption "RSA-MD5" +#define LN_md5WithRSAEncryption "md5WithRSAEncryption" +#define NID_md5WithRSAEncryption 8 +#define OBJ_md5WithRSAEncryption OBJ_pkcs1,4L + +#define SN_sha1WithRSAEncryption "RSA-SHA1" +#define LN_sha1WithRSAEncryption "sha1WithRSAEncryption" +#define NID_sha1WithRSAEncryption 65 +#define OBJ_sha1WithRSAEncryption OBJ_pkcs1,5L + +#define SN_rsaesOaep "RSAES-OAEP" +#define LN_rsaesOaep "rsaesOaep" +#define NID_rsaesOaep 919 +#define OBJ_rsaesOaep OBJ_pkcs1,7L + +#define SN_mgf1 "MGF1" +#define LN_mgf1 "mgf1" +#define NID_mgf1 911 +#define OBJ_mgf1 OBJ_pkcs1,8L + +#define SN_pSpecified "PSPECIFIED" +#define LN_pSpecified "pSpecified" +#define NID_pSpecified 935 +#define OBJ_pSpecified OBJ_pkcs1,9L + +#define SN_rsassaPss "RSASSA-PSS" +#define LN_rsassaPss "rsassaPss" +#define NID_rsassaPss 912 +#define OBJ_rsassaPss OBJ_pkcs1,10L + +#define SN_sha256WithRSAEncryption "RSA-SHA256" +#define LN_sha256WithRSAEncryption "sha256WithRSAEncryption" +#define NID_sha256WithRSAEncryption 668 +#define OBJ_sha256WithRSAEncryption OBJ_pkcs1,11L + +#define SN_sha384WithRSAEncryption "RSA-SHA384" +#define LN_sha384WithRSAEncryption "sha384WithRSAEncryption" +#define NID_sha384WithRSAEncryption 669 +#define OBJ_sha384WithRSAEncryption OBJ_pkcs1,12L + +#define SN_sha512WithRSAEncryption "RSA-SHA512" +#define LN_sha512WithRSAEncryption "sha512WithRSAEncryption" +#define NID_sha512WithRSAEncryption 670 +#define OBJ_sha512WithRSAEncryption OBJ_pkcs1,13L + +#define SN_sha224WithRSAEncryption "RSA-SHA224" +#define LN_sha224WithRSAEncryption "sha224WithRSAEncryption" +#define NID_sha224WithRSAEncryption 671 +#define OBJ_sha224WithRSAEncryption OBJ_pkcs1,14L + +#define SN_sha512_224WithRSAEncryption "RSA-SHA512/224" +#define LN_sha512_224WithRSAEncryption "sha512-224WithRSAEncryption" +#define NID_sha512_224WithRSAEncryption 1145 +#define OBJ_sha512_224WithRSAEncryption OBJ_pkcs1,15L + +#define SN_sha512_256WithRSAEncryption "RSA-SHA512/256" +#define LN_sha512_256WithRSAEncryption "sha512-256WithRSAEncryption" +#define NID_sha512_256WithRSAEncryption 1146 +#define OBJ_sha512_256WithRSAEncryption OBJ_pkcs1,16L + +#define SN_pkcs3 "pkcs3" +#define NID_pkcs3 27 +#define OBJ_pkcs3 OBJ_pkcs,3L + +#define LN_dhKeyAgreement "dhKeyAgreement" +#define NID_dhKeyAgreement 28 +#define OBJ_dhKeyAgreement OBJ_pkcs3,1L + +#define SN_pkcs5 "pkcs5" +#define NID_pkcs5 187 +#define OBJ_pkcs5 OBJ_pkcs,5L + +#define SN_pbeWithMD2AndDES_CBC "PBE-MD2-DES" +#define LN_pbeWithMD2AndDES_CBC "pbeWithMD2AndDES-CBC" +#define NID_pbeWithMD2AndDES_CBC 9 +#define OBJ_pbeWithMD2AndDES_CBC OBJ_pkcs5,1L + +#define SN_pbeWithMD5AndDES_CBC "PBE-MD5-DES" +#define LN_pbeWithMD5AndDES_CBC "pbeWithMD5AndDES-CBC" +#define NID_pbeWithMD5AndDES_CBC 10 +#define OBJ_pbeWithMD5AndDES_CBC OBJ_pkcs5,3L + +#define SN_pbeWithMD2AndRC2_CBC "PBE-MD2-RC2-64" +#define LN_pbeWithMD2AndRC2_CBC "pbeWithMD2AndRC2-CBC" +#define NID_pbeWithMD2AndRC2_CBC 168 +#define OBJ_pbeWithMD2AndRC2_CBC OBJ_pkcs5,4L + +#define SN_pbeWithMD5AndRC2_CBC "PBE-MD5-RC2-64" +#define LN_pbeWithMD5AndRC2_CBC "pbeWithMD5AndRC2-CBC" +#define NID_pbeWithMD5AndRC2_CBC 169 +#define OBJ_pbeWithMD5AndRC2_CBC OBJ_pkcs5,6L + +#define SN_pbeWithSHA1AndDES_CBC "PBE-SHA1-DES" +#define LN_pbeWithSHA1AndDES_CBC "pbeWithSHA1AndDES-CBC" +#define NID_pbeWithSHA1AndDES_CBC 170 +#define OBJ_pbeWithSHA1AndDES_CBC OBJ_pkcs5,10L + +#define SN_pbeWithSHA1AndRC2_CBC "PBE-SHA1-RC2-64" +#define LN_pbeWithSHA1AndRC2_CBC "pbeWithSHA1AndRC2-CBC" +#define NID_pbeWithSHA1AndRC2_CBC 68 +#define OBJ_pbeWithSHA1AndRC2_CBC OBJ_pkcs5,11L + +#define LN_id_pbkdf2 "PBKDF2" +#define NID_id_pbkdf2 69 +#define OBJ_id_pbkdf2 OBJ_pkcs5,12L + +#define LN_pbes2 "PBES2" +#define NID_pbes2 161 +#define OBJ_pbes2 OBJ_pkcs5,13L + +#define LN_pbmac1 "PBMAC1" +#define NID_pbmac1 162 +#define OBJ_pbmac1 OBJ_pkcs5,14L + +#define SN_pkcs7 "pkcs7" +#define NID_pkcs7 20 +#define OBJ_pkcs7 OBJ_pkcs,7L + +#define LN_pkcs7_data "pkcs7-data" +#define NID_pkcs7_data 21 +#define OBJ_pkcs7_data OBJ_pkcs7,1L + +#define LN_pkcs7_signed "pkcs7-signedData" +#define NID_pkcs7_signed 22 +#define OBJ_pkcs7_signed OBJ_pkcs7,2L + +#define LN_pkcs7_enveloped "pkcs7-envelopedData" +#define NID_pkcs7_enveloped 23 +#define OBJ_pkcs7_enveloped OBJ_pkcs7,3L + +#define LN_pkcs7_signedAndEnveloped "pkcs7-signedAndEnvelopedData" +#define NID_pkcs7_signedAndEnveloped 24 +#define OBJ_pkcs7_signedAndEnveloped OBJ_pkcs7,4L + +#define LN_pkcs7_digest "pkcs7-digestData" +#define NID_pkcs7_digest 25 +#define OBJ_pkcs7_digest OBJ_pkcs7,5L + +#define LN_pkcs7_encrypted "pkcs7-encryptedData" +#define NID_pkcs7_encrypted 26 +#define OBJ_pkcs7_encrypted OBJ_pkcs7,6L + +#define SN_pkcs9 "pkcs9" +#define NID_pkcs9 47 +#define OBJ_pkcs9 OBJ_pkcs,9L + +#define LN_pkcs9_emailAddress "emailAddress" +#define NID_pkcs9_emailAddress 48 +#define OBJ_pkcs9_emailAddress OBJ_pkcs9,1L + +#define LN_pkcs9_unstructuredName "unstructuredName" +#define NID_pkcs9_unstructuredName 49 +#define OBJ_pkcs9_unstructuredName OBJ_pkcs9,2L + +#define LN_pkcs9_contentType "contentType" +#define NID_pkcs9_contentType 50 +#define OBJ_pkcs9_contentType OBJ_pkcs9,3L + +#define LN_pkcs9_messageDigest "messageDigest" +#define NID_pkcs9_messageDigest 51 +#define OBJ_pkcs9_messageDigest OBJ_pkcs9,4L + +#define LN_pkcs9_signingTime "signingTime" +#define NID_pkcs9_signingTime 52 +#define OBJ_pkcs9_signingTime OBJ_pkcs9,5L + +#define LN_pkcs9_countersignature "countersignature" +#define NID_pkcs9_countersignature 53 +#define OBJ_pkcs9_countersignature OBJ_pkcs9,6L + +#define LN_pkcs9_challengePassword "challengePassword" +#define NID_pkcs9_challengePassword 54 +#define OBJ_pkcs9_challengePassword OBJ_pkcs9,7L + +#define LN_pkcs9_unstructuredAddress "unstructuredAddress" +#define NID_pkcs9_unstructuredAddress 55 +#define OBJ_pkcs9_unstructuredAddress OBJ_pkcs9,8L + +#define LN_pkcs9_extCertAttributes "extendedCertificateAttributes" +#define NID_pkcs9_extCertAttributes 56 +#define OBJ_pkcs9_extCertAttributes OBJ_pkcs9,9L + +#define SN_ext_req "extReq" +#define LN_ext_req "Extension Request" +#define NID_ext_req 172 +#define OBJ_ext_req OBJ_pkcs9,14L + +#define SN_SMIMECapabilities "SMIME-CAPS" +#define LN_SMIMECapabilities "S/MIME Capabilities" +#define NID_SMIMECapabilities 167 +#define OBJ_SMIMECapabilities OBJ_pkcs9,15L + +#define SN_SMIME "SMIME" +#define LN_SMIME "S/MIME" +#define NID_SMIME 188 +#define OBJ_SMIME OBJ_pkcs9,16L + +#define SN_id_smime_mod "id-smime-mod" +#define NID_id_smime_mod 189 +#define OBJ_id_smime_mod OBJ_SMIME,0L + +#define SN_id_smime_ct "id-smime-ct" +#define NID_id_smime_ct 190 +#define OBJ_id_smime_ct OBJ_SMIME,1L + +#define SN_id_smime_aa "id-smime-aa" +#define NID_id_smime_aa 191 +#define OBJ_id_smime_aa OBJ_SMIME,2L + +#define SN_id_smime_alg "id-smime-alg" +#define NID_id_smime_alg 192 +#define OBJ_id_smime_alg OBJ_SMIME,3L + +#define SN_id_smime_cd "id-smime-cd" +#define NID_id_smime_cd 193 +#define OBJ_id_smime_cd OBJ_SMIME,4L + +#define SN_id_smime_spq "id-smime-spq" +#define NID_id_smime_spq 194 +#define OBJ_id_smime_spq OBJ_SMIME,5L + +#define SN_id_smime_cti "id-smime-cti" +#define NID_id_smime_cti 195 +#define OBJ_id_smime_cti OBJ_SMIME,6L + +#define SN_id_smime_mod_cms "id-smime-mod-cms" +#define NID_id_smime_mod_cms 196 +#define OBJ_id_smime_mod_cms OBJ_id_smime_mod,1L + +#define SN_id_smime_mod_ess "id-smime-mod-ess" +#define NID_id_smime_mod_ess 197 +#define OBJ_id_smime_mod_ess OBJ_id_smime_mod,2L + +#define SN_id_smime_mod_oid "id-smime-mod-oid" +#define NID_id_smime_mod_oid 198 +#define OBJ_id_smime_mod_oid OBJ_id_smime_mod,3L + +#define SN_id_smime_mod_msg_v3 "id-smime-mod-msg-v3" +#define NID_id_smime_mod_msg_v3 199 +#define OBJ_id_smime_mod_msg_v3 OBJ_id_smime_mod,4L + +#define SN_id_smime_mod_ets_eSignature_88 "id-smime-mod-ets-eSignature-88" +#define NID_id_smime_mod_ets_eSignature_88 200 +#define OBJ_id_smime_mod_ets_eSignature_88 OBJ_id_smime_mod,5L + +#define SN_id_smime_mod_ets_eSignature_97 "id-smime-mod-ets-eSignature-97" +#define NID_id_smime_mod_ets_eSignature_97 201 +#define OBJ_id_smime_mod_ets_eSignature_97 OBJ_id_smime_mod,6L + +#define SN_id_smime_mod_ets_eSigPolicy_88 "id-smime-mod-ets-eSigPolicy-88" +#define NID_id_smime_mod_ets_eSigPolicy_88 202 +#define OBJ_id_smime_mod_ets_eSigPolicy_88 OBJ_id_smime_mod,7L + +#define SN_id_smime_mod_ets_eSigPolicy_97 "id-smime-mod-ets-eSigPolicy-97" +#define NID_id_smime_mod_ets_eSigPolicy_97 203 +#define OBJ_id_smime_mod_ets_eSigPolicy_97 OBJ_id_smime_mod,8L + +#define SN_id_smime_ct_receipt "id-smime-ct-receipt" +#define NID_id_smime_ct_receipt 204 +#define OBJ_id_smime_ct_receipt OBJ_id_smime_ct,1L + +#define SN_id_smime_ct_authData "id-smime-ct-authData" +#define NID_id_smime_ct_authData 205 +#define OBJ_id_smime_ct_authData OBJ_id_smime_ct,2L + +#define SN_id_smime_ct_publishCert "id-smime-ct-publishCert" +#define NID_id_smime_ct_publishCert 206 +#define OBJ_id_smime_ct_publishCert OBJ_id_smime_ct,3L + +#define SN_id_smime_ct_TSTInfo "id-smime-ct-TSTInfo" +#define NID_id_smime_ct_TSTInfo 207 +#define OBJ_id_smime_ct_TSTInfo OBJ_id_smime_ct,4L + +#define SN_id_smime_ct_TDTInfo "id-smime-ct-TDTInfo" +#define NID_id_smime_ct_TDTInfo 208 +#define OBJ_id_smime_ct_TDTInfo OBJ_id_smime_ct,5L + +#define SN_id_smime_ct_contentInfo "id-smime-ct-contentInfo" +#define NID_id_smime_ct_contentInfo 209 +#define OBJ_id_smime_ct_contentInfo OBJ_id_smime_ct,6L + +#define SN_id_smime_ct_DVCSRequestData "id-smime-ct-DVCSRequestData" +#define NID_id_smime_ct_DVCSRequestData 210 +#define OBJ_id_smime_ct_DVCSRequestData OBJ_id_smime_ct,7L + +#define SN_id_smime_ct_DVCSResponseData "id-smime-ct-DVCSResponseData" +#define NID_id_smime_ct_DVCSResponseData 211 +#define OBJ_id_smime_ct_DVCSResponseData OBJ_id_smime_ct,8L + +#define SN_id_smime_ct_compressedData "id-smime-ct-compressedData" +#define NID_id_smime_ct_compressedData 786 +#define OBJ_id_smime_ct_compressedData OBJ_id_smime_ct,9L + +#define SN_id_smime_ct_contentCollection "id-smime-ct-contentCollection" +#define NID_id_smime_ct_contentCollection 1058 +#define OBJ_id_smime_ct_contentCollection OBJ_id_smime_ct,19L + +#define SN_id_smime_ct_authEnvelopedData "id-smime-ct-authEnvelopedData" +#define NID_id_smime_ct_authEnvelopedData 1059 +#define OBJ_id_smime_ct_authEnvelopedData OBJ_id_smime_ct,23L + +#define SN_id_ct_asciiTextWithCRLF "id-ct-asciiTextWithCRLF" +#define NID_id_ct_asciiTextWithCRLF 787 +#define OBJ_id_ct_asciiTextWithCRLF OBJ_id_smime_ct,27L + +#define SN_id_ct_xml "id-ct-xml" +#define NID_id_ct_xml 1060 +#define OBJ_id_ct_xml OBJ_id_smime_ct,28L + +#define SN_id_smime_aa_receiptRequest "id-smime-aa-receiptRequest" +#define NID_id_smime_aa_receiptRequest 212 +#define OBJ_id_smime_aa_receiptRequest OBJ_id_smime_aa,1L + +#define SN_id_smime_aa_securityLabel "id-smime-aa-securityLabel" +#define NID_id_smime_aa_securityLabel 213 +#define OBJ_id_smime_aa_securityLabel OBJ_id_smime_aa,2L + +#define SN_id_smime_aa_mlExpandHistory "id-smime-aa-mlExpandHistory" +#define NID_id_smime_aa_mlExpandHistory 214 +#define OBJ_id_smime_aa_mlExpandHistory OBJ_id_smime_aa,3L + +#define SN_id_smime_aa_contentHint "id-smime-aa-contentHint" +#define NID_id_smime_aa_contentHint 215 +#define OBJ_id_smime_aa_contentHint OBJ_id_smime_aa,4L + +#define SN_id_smime_aa_msgSigDigest "id-smime-aa-msgSigDigest" +#define NID_id_smime_aa_msgSigDigest 216 +#define OBJ_id_smime_aa_msgSigDigest OBJ_id_smime_aa,5L + +#define SN_id_smime_aa_encapContentType "id-smime-aa-encapContentType" +#define NID_id_smime_aa_encapContentType 217 +#define OBJ_id_smime_aa_encapContentType OBJ_id_smime_aa,6L + +#define SN_id_smime_aa_contentIdentifier "id-smime-aa-contentIdentifier" +#define NID_id_smime_aa_contentIdentifier 218 +#define OBJ_id_smime_aa_contentIdentifier OBJ_id_smime_aa,7L + +#define SN_id_smime_aa_macValue "id-smime-aa-macValue" +#define NID_id_smime_aa_macValue 219 +#define OBJ_id_smime_aa_macValue OBJ_id_smime_aa,8L + +#define SN_id_smime_aa_equivalentLabels "id-smime-aa-equivalentLabels" +#define NID_id_smime_aa_equivalentLabels 220 +#define OBJ_id_smime_aa_equivalentLabels OBJ_id_smime_aa,9L + +#define SN_id_smime_aa_contentReference "id-smime-aa-contentReference" +#define NID_id_smime_aa_contentReference 221 +#define OBJ_id_smime_aa_contentReference OBJ_id_smime_aa,10L + +#define SN_id_smime_aa_encrypKeyPref "id-smime-aa-encrypKeyPref" +#define NID_id_smime_aa_encrypKeyPref 222 +#define OBJ_id_smime_aa_encrypKeyPref OBJ_id_smime_aa,11L + +#define SN_id_smime_aa_signingCertificate "id-smime-aa-signingCertificate" +#define NID_id_smime_aa_signingCertificate 223 +#define OBJ_id_smime_aa_signingCertificate OBJ_id_smime_aa,12L + +#define SN_id_smime_aa_smimeEncryptCerts "id-smime-aa-smimeEncryptCerts" +#define NID_id_smime_aa_smimeEncryptCerts 224 +#define OBJ_id_smime_aa_smimeEncryptCerts OBJ_id_smime_aa,13L + +#define SN_id_smime_aa_timeStampToken "id-smime-aa-timeStampToken" +#define NID_id_smime_aa_timeStampToken 225 +#define OBJ_id_smime_aa_timeStampToken OBJ_id_smime_aa,14L + +#define SN_id_smime_aa_ets_sigPolicyId "id-smime-aa-ets-sigPolicyId" +#define NID_id_smime_aa_ets_sigPolicyId 226 +#define OBJ_id_smime_aa_ets_sigPolicyId OBJ_id_smime_aa,15L + +#define SN_id_smime_aa_ets_commitmentType "id-smime-aa-ets-commitmentType" +#define NID_id_smime_aa_ets_commitmentType 227 +#define OBJ_id_smime_aa_ets_commitmentType OBJ_id_smime_aa,16L + +#define SN_id_smime_aa_ets_signerLocation "id-smime-aa-ets-signerLocation" +#define NID_id_smime_aa_ets_signerLocation 228 +#define OBJ_id_smime_aa_ets_signerLocation OBJ_id_smime_aa,17L + +#define SN_id_smime_aa_ets_signerAttr "id-smime-aa-ets-signerAttr" +#define NID_id_smime_aa_ets_signerAttr 229 +#define OBJ_id_smime_aa_ets_signerAttr OBJ_id_smime_aa,18L + +#define SN_id_smime_aa_ets_otherSigCert "id-smime-aa-ets-otherSigCert" +#define NID_id_smime_aa_ets_otherSigCert 230 +#define OBJ_id_smime_aa_ets_otherSigCert OBJ_id_smime_aa,19L + +#define SN_id_smime_aa_ets_contentTimestamp "id-smime-aa-ets-contentTimestamp" +#define NID_id_smime_aa_ets_contentTimestamp 231 +#define OBJ_id_smime_aa_ets_contentTimestamp OBJ_id_smime_aa,20L + +#define SN_id_smime_aa_ets_CertificateRefs "id-smime-aa-ets-CertificateRefs" +#define NID_id_smime_aa_ets_CertificateRefs 232 +#define OBJ_id_smime_aa_ets_CertificateRefs OBJ_id_smime_aa,21L + +#define SN_id_smime_aa_ets_RevocationRefs "id-smime-aa-ets-RevocationRefs" +#define NID_id_smime_aa_ets_RevocationRefs 233 +#define OBJ_id_smime_aa_ets_RevocationRefs OBJ_id_smime_aa,22L + +#define SN_id_smime_aa_ets_certValues "id-smime-aa-ets-certValues" +#define NID_id_smime_aa_ets_certValues 234 +#define OBJ_id_smime_aa_ets_certValues OBJ_id_smime_aa,23L + +#define SN_id_smime_aa_ets_revocationValues "id-smime-aa-ets-revocationValues" +#define NID_id_smime_aa_ets_revocationValues 235 +#define OBJ_id_smime_aa_ets_revocationValues OBJ_id_smime_aa,24L + +#define SN_id_smime_aa_ets_escTimeStamp "id-smime-aa-ets-escTimeStamp" +#define NID_id_smime_aa_ets_escTimeStamp 236 +#define OBJ_id_smime_aa_ets_escTimeStamp OBJ_id_smime_aa,25L + +#define SN_id_smime_aa_ets_certCRLTimestamp "id-smime-aa-ets-certCRLTimestamp" +#define NID_id_smime_aa_ets_certCRLTimestamp 237 +#define OBJ_id_smime_aa_ets_certCRLTimestamp OBJ_id_smime_aa,26L + +#define SN_id_smime_aa_ets_archiveTimeStamp "id-smime-aa-ets-archiveTimeStamp" +#define NID_id_smime_aa_ets_archiveTimeStamp 238 +#define OBJ_id_smime_aa_ets_archiveTimeStamp OBJ_id_smime_aa,27L + +#define SN_id_smime_aa_signatureType "id-smime-aa-signatureType" +#define NID_id_smime_aa_signatureType 239 +#define OBJ_id_smime_aa_signatureType OBJ_id_smime_aa,28L + +#define SN_id_smime_aa_dvcs_dvc "id-smime-aa-dvcs-dvc" +#define NID_id_smime_aa_dvcs_dvc 240 +#define OBJ_id_smime_aa_dvcs_dvc OBJ_id_smime_aa,29L + +#define SN_id_smime_aa_signingCertificateV2 "id-smime-aa-signingCertificateV2" +#define NID_id_smime_aa_signingCertificateV2 1086 +#define OBJ_id_smime_aa_signingCertificateV2 OBJ_id_smime_aa,47L + +#define SN_id_smime_alg_ESDHwith3DES "id-smime-alg-ESDHwith3DES" +#define NID_id_smime_alg_ESDHwith3DES 241 +#define OBJ_id_smime_alg_ESDHwith3DES OBJ_id_smime_alg,1L + +#define SN_id_smime_alg_ESDHwithRC2 "id-smime-alg-ESDHwithRC2" +#define NID_id_smime_alg_ESDHwithRC2 242 +#define OBJ_id_smime_alg_ESDHwithRC2 OBJ_id_smime_alg,2L + +#define SN_id_smime_alg_3DESwrap "id-smime-alg-3DESwrap" +#define NID_id_smime_alg_3DESwrap 243 +#define OBJ_id_smime_alg_3DESwrap OBJ_id_smime_alg,3L + +#define SN_id_smime_alg_RC2wrap "id-smime-alg-RC2wrap" +#define NID_id_smime_alg_RC2wrap 244 +#define OBJ_id_smime_alg_RC2wrap OBJ_id_smime_alg,4L + +#define SN_id_smime_alg_ESDH "id-smime-alg-ESDH" +#define NID_id_smime_alg_ESDH 245 +#define OBJ_id_smime_alg_ESDH OBJ_id_smime_alg,5L + +#define SN_id_smime_alg_CMS3DESwrap "id-smime-alg-CMS3DESwrap" +#define NID_id_smime_alg_CMS3DESwrap 246 +#define OBJ_id_smime_alg_CMS3DESwrap OBJ_id_smime_alg,6L + +#define SN_id_smime_alg_CMSRC2wrap "id-smime-alg-CMSRC2wrap" +#define NID_id_smime_alg_CMSRC2wrap 247 +#define OBJ_id_smime_alg_CMSRC2wrap OBJ_id_smime_alg,7L + +#define SN_id_alg_PWRI_KEK "id-alg-PWRI-KEK" +#define NID_id_alg_PWRI_KEK 893 +#define OBJ_id_alg_PWRI_KEK OBJ_id_smime_alg,9L + +#define SN_id_smime_cd_ldap "id-smime-cd-ldap" +#define NID_id_smime_cd_ldap 248 +#define OBJ_id_smime_cd_ldap OBJ_id_smime_cd,1L + +#define SN_id_smime_spq_ets_sqt_uri "id-smime-spq-ets-sqt-uri" +#define NID_id_smime_spq_ets_sqt_uri 249 +#define OBJ_id_smime_spq_ets_sqt_uri OBJ_id_smime_spq,1L + +#define SN_id_smime_spq_ets_sqt_unotice "id-smime-spq-ets-sqt-unotice" +#define NID_id_smime_spq_ets_sqt_unotice 250 +#define OBJ_id_smime_spq_ets_sqt_unotice OBJ_id_smime_spq,2L + +#define SN_id_smime_cti_ets_proofOfOrigin "id-smime-cti-ets-proofOfOrigin" +#define NID_id_smime_cti_ets_proofOfOrigin 251 +#define OBJ_id_smime_cti_ets_proofOfOrigin OBJ_id_smime_cti,1L + +#define SN_id_smime_cti_ets_proofOfReceipt "id-smime-cti-ets-proofOfReceipt" +#define NID_id_smime_cti_ets_proofOfReceipt 252 +#define OBJ_id_smime_cti_ets_proofOfReceipt OBJ_id_smime_cti,2L + +#define SN_id_smime_cti_ets_proofOfDelivery "id-smime-cti-ets-proofOfDelivery" +#define NID_id_smime_cti_ets_proofOfDelivery 253 +#define OBJ_id_smime_cti_ets_proofOfDelivery OBJ_id_smime_cti,3L + +#define SN_id_smime_cti_ets_proofOfSender "id-smime-cti-ets-proofOfSender" +#define NID_id_smime_cti_ets_proofOfSender 254 +#define OBJ_id_smime_cti_ets_proofOfSender OBJ_id_smime_cti,4L + +#define SN_id_smime_cti_ets_proofOfApproval "id-smime-cti-ets-proofOfApproval" +#define NID_id_smime_cti_ets_proofOfApproval 255 +#define OBJ_id_smime_cti_ets_proofOfApproval OBJ_id_smime_cti,5L + +#define SN_id_smime_cti_ets_proofOfCreation "id-smime-cti-ets-proofOfCreation" +#define NID_id_smime_cti_ets_proofOfCreation 256 +#define OBJ_id_smime_cti_ets_proofOfCreation OBJ_id_smime_cti,6L + +#define LN_friendlyName "friendlyName" +#define NID_friendlyName 156 +#define OBJ_friendlyName OBJ_pkcs9,20L + +#define LN_localKeyID "localKeyID" +#define NID_localKeyID 157 +#define OBJ_localKeyID OBJ_pkcs9,21L + +#define SN_ms_csp_name "CSPName" +#define LN_ms_csp_name "Microsoft CSP Name" +#define NID_ms_csp_name 417 +#define OBJ_ms_csp_name 1L,3L,6L,1L,4L,1L,311L,17L,1L + +#define SN_LocalKeySet "LocalKeySet" +#define LN_LocalKeySet "Microsoft Local Key set" +#define NID_LocalKeySet 856 +#define OBJ_LocalKeySet 1L,3L,6L,1L,4L,1L,311L,17L,2L + +#define OBJ_certTypes OBJ_pkcs9,22L + +#define LN_x509Certificate "x509Certificate" +#define NID_x509Certificate 158 +#define OBJ_x509Certificate OBJ_certTypes,1L + +#define LN_sdsiCertificate "sdsiCertificate" +#define NID_sdsiCertificate 159 +#define OBJ_sdsiCertificate OBJ_certTypes,2L + +#define OBJ_crlTypes OBJ_pkcs9,23L + +#define LN_x509Crl "x509Crl" +#define NID_x509Crl 160 +#define OBJ_x509Crl OBJ_crlTypes,1L + +#define OBJ_pkcs12 OBJ_pkcs,12L + +#define OBJ_pkcs12_pbeids OBJ_pkcs12,1L + +#define SN_pbe_WithSHA1And128BitRC4 "PBE-SHA1-RC4-128" +#define LN_pbe_WithSHA1And128BitRC4 "pbeWithSHA1And128BitRC4" +#define NID_pbe_WithSHA1And128BitRC4 144 +#define OBJ_pbe_WithSHA1And128BitRC4 OBJ_pkcs12_pbeids,1L + +#define SN_pbe_WithSHA1And40BitRC4 "PBE-SHA1-RC4-40" +#define LN_pbe_WithSHA1And40BitRC4 "pbeWithSHA1And40BitRC4" +#define NID_pbe_WithSHA1And40BitRC4 145 +#define OBJ_pbe_WithSHA1And40BitRC4 OBJ_pkcs12_pbeids,2L + +#define SN_pbe_WithSHA1And3_Key_TripleDES_CBC "PBE-SHA1-3DES" +#define LN_pbe_WithSHA1And3_Key_TripleDES_CBC "pbeWithSHA1And3-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 146 +#define OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC OBJ_pkcs12_pbeids,3L + +#define SN_pbe_WithSHA1And2_Key_TripleDES_CBC "PBE-SHA1-2DES" +#define LN_pbe_WithSHA1And2_Key_TripleDES_CBC "pbeWithSHA1And2-KeyTripleDES-CBC" +#define NID_pbe_WithSHA1And2_Key_TripleDES_CBC 147 +#define OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC OBJ_pkcs12_pbeids,4L + +#define SN_pbe_WithSHA1And128BitRC2_CBC "PBE-SHA1-RC2-128" +#define LN_pbe_WithSHA1And128BitRC2_CBC "pbeWithSHA1And128BitRC2-CBC" +#define NID_pbe_WithSHA1And128BitRC2_CBC 148 +#define OBJ_pbe_WithSHA1And128BitRC2_CBC OBJ_pkcs12_pbeids,5L + +#define SN_pbe_WithSHA1And40BitRC2_CBC "PBE-SHA1-RC2-40" +#define LN_pbe_WithSHA1And40BitRC2_CBC "pbeWithSHA1And40BitRC2-CBC" +#define NID_pbe_WithSHA1And40BitRC2_CBC 149 +#define OBJ_pbe_WithSHA1And40BitRC2_CBC OBJ_pkcs12_pbeids,6L + +#define OBJ_pkcs12_Version1 OBJ_pkcs12,10L + +#define OBJ_pkcs12_BagIds OBJ_pkcs12_Version1,1L + +#define LN_keyBag "keyBag" +#define NID_keyBag 150 +#define OBJ_keyBag OBJ_pkcs12_BagIds,1L + +#define LN_pkcs8ShroudedKeyBag "pkcs8ShroudedKeyBag" +#define NID_pkcs8ShroudedKeyBag 151 +#define OBJ_pkcs8ShroudedKeyBag OBJ_pkcs12_BagIds,2L + +#define LN_certBag "certBag" +#define NID_certBag 152 +#define OBJ_certBag OBJ_pkcs12_BagIds,3L + +#define LN_crlBag "crlBag" +#define NID_crlBag 153 +#define OBJ_crlBag OBJ_pkcs12_BagIds,4L + +#define LN_secretBag "secretBag" +#define NID_secretBag 154 +#define OBJ_secretBag OBJ_pkcs12_BagIds,5L + +#define LN_safeContentsBag "safeContentsBag" +#define NID_safeContentsBag 155 +#define OBJ_safeContentsBag OBJ_pkcs12_BagIds,6L + +#define SN_md2 "MD2" +#define LN_md2 "md2" +#define NID_md2 3 +#define OBJ_md2 OBJ_rsadsi,2L,2L + +#define SN_md4 "MD4" +#define LN_md4 "md4" +#define NID_md4 257 +#define OBJ_md4 OBJ_rsadsi,2L,4L + +#define SN_md5 "MD5" +#define LN_md5 "md5" +#define NID_md5 4 +#define OBJ_md5 OBJ_rsadsi,2L,5L + +#define SN_md5_sha1 "MD5-SHA1" +#define LN_md5_sha1 "md5-sha1" +#define NID_md5_sha1 114 + +#define LN_hmacWithMD5 "hmacWithMD5" +#define NID_hmacWithMD5 797 +#define OBJ_hmacWithMD5 OBJ_rsadsi,2L,6L + +#define LN_hmacWithSHA1 "hmacWithSHA1" +#define NID_hmacWithSHA1 163 +#define OBJ_hmacWithSHA1 OBJ_rsadsi,2L,7L + +#define SN_sm2 "SM2" +#define LN_sm2 "sm2" +#define NID_sm2 1172 +#define OBJ_sm2 OBJ_sm_scheme,301L + +#define SN_sm3 "SM3" +#define LN_sm3 "sm3" +#define NID_sm3 1143 +#define OBJ_sm3 OBJ_sm_scheme,401L + +#define SN_sm3WithRSAEncryption "RSA-SM3" +#define LN_sm3WithRSAEncryption "sm3WithRSAEncryption" +#define NID_sm3WithRSAEncryption 1144 +#define OBJ_sm3WithRSAEncryption OBJ_sm_scheme,504L + +#define LN_hmacWithSHA224 "hmacWithSHA224" +#define NID_hmacWithSHA224 798 +#define OBJ_hmacWithSHA224 OBJ_rsadsi,2L,8L + +#define LN_hmacWithSHA256 "hmacWithSHA256" +#define NID_hmacWithSHA256 799 +#define OBJ_hmacWithSHA256 OBJ_rsadsi,2L,9L + +#define LN_hmacWithSHA384 "hmacWithSHA384" +#define NID_hmacWithSHA384 800 +#define OBJ_hmacWithSHA384 OBJ_rsadsi,2L,10L + +#define LN_hmacWithSHA512 "hmacWithSHA512" +#define NID_hmacWithSHA512 801 +#define OBJ_hmacWithSHA512 OBJ_rsadsi,2L,11L + +#define LN_hmacWithSHA512_224 "hmacWithSHA512-224" +#define NID_hmacWithSHA512_224 1193 +#define OBJ_hmacWithSHA512_224 OBJ_rsadsi,2L,12L + +#define LN_hmacWithSHA512_256 "hmacWithSHA512-256" +#define NID_hmacWithSHA512_256 1194 +#define OBJ_hmacWithSHA512_256 OBJ_rsadsi,2L,13L + +#define SN_rc2_cbc "RC2-CBC" +#define LN_rc2_cbc "rc2-cbc" +#define NID_rc2_cbc 37 +#define OBJ_rc2_cbc OBJ_rsadsi,3L,2L + +#define SN_rc2_ecb "RC2-ECB" +#define LN_rc2_ecb "rc2-ecb" +#define NID_rc2_ecb 38 + +#define SN_rc2_cfb64 "RC2-CFB" +#define LN_rc2_cfb64 "rc2-cfb" +#define NID_rc2_cfb64 39 + +#define SN_rc2_ofb64 "RC2-OFB" +#define LN_rc2_ofb64 "rc2-ofb" +#define NID_rc2_ofb64 40 + +#define SN_rc2_40_cbc "RC2-40-CBC" +#define LN_rc2_40_cbc "rc2-40-cbc" +#define NID_rc2_40_cbc 98 + +#define SN_rc2_64_cbc "RC2-64-CBC" +#define LN_rc2_64_cbc "rc2-64-cbc" +#define NID_rc2_64_cbc 166 + +#define SN_rc4 "RC4" +#define LN_rc4 "rc4" +#define NID_rc4 5 +#define OBJ_rc4 OBJ_rsadsi,3L,4L + +#define SN_rc4_40 "RC4-40" +#define LN_rc4_40 "rc4-40" +#define NID_rc4_40 97 + +#define SN_des_ede3_cbc "DES-EDE3-CBC" +#define LN_des_ede3_cbc "des-ede3-cbc" +#define NID_des_ede3_cbc 44 +#define OBJ_des_ede3_cbc OBJ_rsadsi,3L,7L + +#define SN_rc5_cbc "RC5-CBC" +#define LN_rc5_cbc "rc5-cbc" +#define NID_rc5_cbc 120 +#define OBJ_rc5_cbc OBJ_rsadsi,3L,8L + +#define SN_rc5_ecb "RC5-ECB" +#define LN_rc5_ecb "rc5-ecb" +#define NID_rc5_ecb 121 + +#define SN_rc5_cfb64 "RC5-CFB" +#define LN_rc5_cfb64 "rc5-cfb" +#define NID_rc5_cfb64 122 + +#define SN_rc5_ofb64 "RC5-OFB" +#define LN_rc5_ofb64 "rc5-ofb" +#define NID_rc5_ofb64 123 + +#define SN_ms_ext_req "msExtReq" +#define LN_ms_ext_req "Microsoft Extension Request" +#define NID_ms_ext_req 171 +#define OBJ_ms_ext_req 1L,3L,6L,1L,4L,1L,311L,2L,1L,14L + +#define SN_ms_code_ind "msCodeInd" +#define LN_ms_code_ind "Microsoft Individual Code Signing" +#define NID_ms_code_ind 134 +#define OBJ_ms_code_ind 1L,3L,6L,1L,4L,1L,311L,2L,1L,21L + +#define SN_ms_code_com "msCodeCom" +#define LN_ms_code_com "Microsoft Commercial Code Signing" +#define NID_ms_code_com 135 +#define OBJ_ms_code_com 1L,3L,6L,1L,4L,1L,311L,2L,1L,22L + +#define SN_ms_ctl_sign "msCTLSign" +#define LN_ms_ctl_sign "Microsoft Trust List Signing" +#define NID_ms_ctl_sign 136 +#define OBJ_ms_ctl_sign 1L,3L,6L,1L,4L,1L,311L,10L,3L,1L + +#define SN_ms_sgc "msSGC" +#define LN_ms_sgc "Microsoft Server Gated Crypto" +#define NID_ms_sgc 137 +#define OBJ_ms_sgc 1L,3L,6L,1L,4L,1L,311L,10L,3L,3L + +#define SN_ms_efs "msEFS" +#define LN_ms_efs "Microsoft Encrypted File System" +#define NID_ms_efs 138 +#define OBJ_ms_efs 1L,3L,6L,1L,4L,1L,311L,10L,3L,4L + +#define SN_ms_smartcard_login "msSmartcardLogin" +#define LN_ms_smartcard_login "Microsoft Smartcard Login" +#define NID_ms_smartcard_login 648 +#define OBJ_ms_smartcard_login 1L,3L,6L,1L,4L,1L,311L,20L,2L,2L + +#define SN_ms_upn "msUPN" +#define LN_ms_upn "Microsoft User Principal Name" +#define NID_ms_upn 649 +#define OBJ_ms_upn 1L,3L,6L,1L,4L,1L,311L,20L,2L,3L + +#define SN_idea_cbc "IDEA-CBC" +#define LN_idea_cbc "idea-cbc" +#define NID_idea_cbc 34 +#define OBJ_idea_cbc 1L,3L,6L,1L,4L,1L,188L,7L,1L,1L,2L + +#define SN_idea_ecb "IDEA-ECB" +#define LN_idea_ecb "idea-ecb" +#define NID_idea_ecb 36 + +#define SN_idea_cfb64 "IDEA-CFB" +#define LN_idea_cfb64 "idea-cfb" +#define NID_idea_cfb64 35 + +#define SN_idea_ofb64 "IDEA-OFB" +#define LN_idea_ofb64 "idea-ofb" +#define NID_idea_ofb64 46 + +#define SN_bf_cbc "BF-CBC" +#define LN_bf_cbc "bf-cbc" +#define NID_bf_cbc 91 +#define OBJ_bf_cbc 1L,3L,6L,1L,4L,1L,3029L,1L,2L + +#define SN_bf_ecb "BF-ECB" +#define LN_bf_ecb "bf-ecb" +#define NID_bf_ecb 92 + +#define SN_bf_cfb64 "BF-CFB" +#define LN_bf_cfb64 "bf-cfb" +#define NID_bf_cfb64 93 + +#define SN_bf_ofb64 "BF-OFB" +#define LN_bf_ofb64 "bf-ofb" +#define NID_bf_ofb64 94 + +#define SN_id_pkix "PKIX" +#define NID_id_pkix 127 +#define OBJ_id_pkix 1L,3L,6L,1L,5L,5L,7L + +#define SN_id_pkix_mod "id-pkix-mod" +#define NID_id_pkix_mod 258 +#define OBJ_id_pkix_mod OBJ_id_pkix,0L + +#define SN_id_pe "id-pe" +#define NID_id_pe 175 +#define OBJ_id_pe OBJ_id_pkix,1L + +#define SN_id_qt "id-qt" +#define NID_id_qt 259 +#define OBJ_id_qt OBJ_id_pkix,2L + +#define SN_id_kp "id-kp" +#define NID_id_kp 128 +#define OBJ_id_kp OBJ_id_pkix,3L + +#define SN_id_it "id-it" +#define NID_id_it 260 +#define OBJ_id_it OBJ_id_pkix,4L + +#define SN_id_pkip "id-pkip" +#define NID_id_pkip 261 +#define OBJ_id_pkip OBJ_id_pkix,5L + +#define SN_id_alg "id-alg" +#define NID_id_alg 262 +#define OBJ_id_alg OBJ_id_pkix,6L + +#define SN_id_cmc "id-cmc" +#define NID_id_cmc 263 +#define OBJ_id_cmc OBJ_id_pkix,7L + +#define SN_id_on "id-on" +#define NID_id_on 264 +#define OBJ_id_on OBJ_id_pkix,8L + +#define SN_id_pda "id-pda" +#define NID_id_pda 265 +#define OBJ_id_pda OBJ_id_pkix,9L + +#define SN_id_aca "id-aca" +#define NID_id_aca 266 +#define OBJ_id_aca OBJ_id_pkix,10L + +#define SN_id_qcs "id-qcs" +#define NID_id_qcs 267 +#define OBJ_id_qcs OBJ_id_pkix,11L + +#define SN_id_cct "id-cct" +#define NID_id_cct 268 +#define OBJ_id_cct OBJ_id_pkix,12L + +#define SN_id_ppl "id-ppl" +#define NID_id_ppl 662 +#define OBJ_id_ppl OBJ_id_pkix,21L + +#define SN_id_ad "id-ad" +#define NID_id_ad 176 +#define OBJ_id_ad OBJ_id_pkix,48L + +#define SN_id_pkix1_explicit_88 "id-pkix1-explicit-88" +#define NID_id_pkix1_explicit_88 269 +#define OBJ_id_pkix1_explicit_88 OBJ_id_pkix_mod,1L + +#define SN_id_pkix1_implicit_88 "id-pkix1-implicit-88" +#define NID_id_pkix1_implicit_88 270 +#define OBJ_id_pkix1_implicit_88 OBJ_id_pkix_mod,2L + +#define SN_id_pkix1_explicit_93 "id-pkix1-explicit-93" +#define NID_id_pkix1_explicit_93 271 +#define OBJ_id_pkix1_explicit_93 OBJ_id_pkix_mod,3L + +#define SN_id_pkix1_implicit_93 "id-pkix1-implicit-93" +#define NID_id_pkix1_implicit_93 272 +#define OBJ_id_pkix1_implicit_93 OBJ_id_pkix_mod,4L + +#define SN_id_mod_crmf "id-mod-crmf" +#define NID_id_mod_crmf 273 +#define OBJ_id_mod_crmf OBJ_id_pkix_mod,5L + +#define SN_id_mod_cmc "id-mod-cmc" +#define NID_id_mod_cmc 274 +#define OBJ_id_mod_cmc OBJ_id_pkix_mod,6L + +#define SN_id_mod_kea_profile_88 "id-mod-kea-profile-88" +#define NID_id_mod_kea_profile_88 275 +#define OBJ_id_mod_kea_profile_88 OBJ_id_pkix_mod,7L + +#define SN_id_mod_kea_profile_93 "id-mod-kea-profile-93" +#define NID_id_mod_kea_profile_93 276 +#define OBJ_id_mod_kea_profile_93 OBJ_id_pkix_mod,8L + +#define SN_id_mod_cmp "id-mod-cmp" +#define NID_id_mod_cmp 277 +#define OBJ_id_mod_cmp OBJ_id_pkix_mod,9L + +#define SN_id_mod_qualified_cert_88 "id-mod-qualified-cert-88" +#define NID_id_mod_qualified_cert_88 278 +#define OBJ_id_mod_qualified_cert_88 OBJ_id_pkix_mod,10L + +#define SN_id_mod_qualified_cert_93 "id-mod-qualified-cert-93" +#define NID_id_mod_qualified_cert_93 279 +#define OBJ_id_mod_qualified_cert_93 OBJ_id_pkix_mod,11L + +#define SN_id_mod_attribute_cert "id-mod-attribute-cert" +#define NID_id_mod_attribute_cert 280 +#define OBJ_id_mod_attribute_cert OBJ_id_pkix_mod,12L + +#define SN_id_mod_timestamp_protocol "id-mod-timestamp-protocol" +#define NID_id_mod_timestamp_protocol 281 +#define OBJ_id_mod_timestamp_protocol OBJ_id_pkix_mod,13L + +#define SN_id_mod_ocsp "id-mod-ocsp" +#define NID_id_mod_ocsp 282 +#define OBJ_id_mod_ocsp OBJ_id_pkix_mod,14L + +#define SN_id_mod_dvcs "id-mod-dvcs" +#define NID_id_mod_dvcs 283 +#define OBJ_id_mod_dvcs OBJ_id_pkix_mod,15L + +#define SN_id_mod_cmp2000 "id-mod-cmp2000" +#define NID_id_mod_cmp2000 284 +#define OBJ_id_mod_cmp2000 OBJ_id_pkix_mod,16L + +#define SN_info_access "authorityInfoAccess" +#define LN_info_access "Authority Information Access" +#define NID_info_access 177 +#define OBJ_info_access OBJ_id_pe,1L + +#define SN_biometricInfo "biometricInfo" +#define LN_biometricInfo "Biometric Info" +#define NID_biometricInfo 285 +#define OBJ_biometricInfo OBJ_id_pe,2L + +#define SN_qcStatements "qcStatements" +#define NID_qcStatements 286 +#define OBJ_qcStatements OBJ_id_pe,3L + +#define SN_ac_auditEntity "ac-auditEntity" +#define NID_ac_auditEntity 287 +#define OBJ_ac_auditEntity OBJ_id_pe,4L + +#define SN_ac_targeting "ac-targeting" +#define NID_ac_targeting 288 +#define OBJ_ac_targeting OBJ_id_pe,5L + +#define SN_aaControls "aaControls" +#define NID_aaControls 289 +#define OBJ_aaControls OBJ_id_pe,6L + +#define SN_sbgp_ipAddrBlock "sbgp-ipAddrBlock" +#define NID_sbgp_ipAddrBlock 290 +#define OBJ_sbgp_ipAddrBlock OBJ_id_pe,7L + +#define SN_sbgp_autonomousSysNum "sbgp-autonomousSysNum" +#define NID_sbgp_autonomousSysNum 291 +#define OBJ_sbgp_autonomousSysNum OBJ_id_pe,8L + +#define SN_sbgp_routerIdentifier "sbgp-routerIdentifier" +#define NID_sbgp_routerIdentifier 292 +#define OBJ_sbgp_routerIdentifier OBJ_id_pe,9L + +#define SN_ac_proxying "ac-proxying" +#define NID_ac_proxying 397 +#define OBJ_ac_proxying OBJ_id_pe,10L + +#define SN_sinfo_access "subjectInfoAccess" +#define LN_sinfo_access "Subject Information Access" +#define NID_sinfo_access 398 +#define OBJ_sinfo_access OBJ_id_pe,11L + +#define SN_proxyCertInfo "proxyCertInfo" +#define LN_proxyCertInfo "Proxy Certificate Information" +#define NID_proxyCertInfo 663 +#define OBJ_proxyCertInfo OBJ_id_pe,14L + +#define SN_tlsfeature "tlsfeature" +#define LN_tlsfeature "TLS Feature" +#define NID_tlsfeature 1020 +#define OBJ_tlsfeature OBJ_id_pe,24L + +#define SN_id_qt_cps "id-qt-cps" +#define LN_id_qt_cps "Policy Qualifier CPS" +#define NID_id_qt_cps 164 +#define OBJ_id_qt_cps OBJ_id_qt,1L + +#define SN_id_qt_unotice "id-qt-unotice" +#define LN_id_qt_unotice "Policy Qualifier User Notice" +#define NID_id_qt_unotice 165 +#define OBJ_id_qt_unotice OBJ_id_qt,2L + +#define SN_textNotice "textNotice" +#define NID_textNotice 293 +#define OBJ_textNotice OBJ_id_qt,3L + +#define SN_server_auth "serverAuth" +#define LN_server_auth "TLS Web Server Authentication" +#define NID_server_auth 129 +#define OBJ_server_auth OBJ_id_kp,1L + +#define SN_client_auth "clientAuth" +#define LN_client_auth "TLS Web Client Authentication" +#define NID_client_auth 130 +#define OBJ_client_auth OBJ_id_kp,2L + +#define SN_code_sign "codeSigning" +#define LN_code_sign "Code Signing" +#define NID_code_sign 131 +#define OBJ_code_sign OBJ_id_kp,3L + +#define SN_email_protect "emailProtection" +#define LN_email_protect "E-mail Protection" +#define NID_email_protect 132 +#define OBJ_email_protect OBJ_id_kp,4L + +#define SN_ipsecEndSystem "ipsecEndSystem" +#define LN_ipsecEndSystem "IPSec End System" +#define NID_ipsecEndSystem 294 +#define OBJ_ipsecEndSystem OBJ_id_kp,5L + +#define SN_ipsecTunnel "ipsecTunnel" +#define LN_ipsecTunnel "IPSec Tunnel" +#define NID_ipsecTunnel 295 +#define OBJ_ipsecTunnel OBJ_id_kp,6L + +#define SN_ipsecUser "ipsecUser" +#define LN_ipsecUser "IPSec User" +#define NID_ipsecUser 296 +#define OBJ_ipsecUser OBJ_id_kp,7L + +#define SN_time_stamp "timeStamping" +#define LN_time_stamp "Time Stamping" +#define NID_time_stamp 133 +#define OBJ_time_stamp OBJ_id_kp,8L + +#define SN_OCSP_sign "OCSPSigning" +#define LN_OCSP_sign "OCSP Signing" +#define NID_OCSP_sign 180 +#define OBJ_OCSP_sign OBJ_id_kp,9L + +#define SN_dvcs "DVCS" +#define LN_dvcs "dvcs" +#define NID_dvcs 297 +#define OBJ_dvcs OBJ_id_kp,10L + +#define SN_ipsec_IKE "ipsecIKE" +#define LN_ipsec_IKE "ipsec Internet Key Exchange" +#define NID_ipsec_IKE 1022 +#define OBJ_ipsec_IKE OBJ_id_kp,17L + +#define SN_capwapAC "capwapAC" +#define LN_capwapAC "Ctrl/provision WAP Access" +#define NID_capwapAC 1023 +#define OBJ_capwapAC OBJ_id_kp,18L + +#define SN_capwapWTP "capwapWTP" +#define LN_capwapWTP "Ctrl/Provision WAP Termination" +#define NID_capwapWTP 1024 +#define OBJ_capwapWTP OBJ_id_kp,19L + +#define SN_sshClient "secureShellClient" +#define LN_sshClient "SSH Client" +#define NID_sshClient 1025 +#define OBJ_sshClient OBJ_id_kp,21L + +#define SN_sshServer "secureShellServer" +#define LN_sshServer "SSH Server" +#define NID_sshServer 1026 +#define OBJ_sshServer OBJ_id_kp,22L + +#define SN_sendRouter "sendRouter" +#define LN_sendRouter "Send Router" +#define NID_sendRouter 1027 +#define OBJ_sendRouter OBJ_id_kp,23L + +#define SN_sendProxiedRouter "sendProxiedRouter" +#define LN_sendProxiedRouter "Send Proxied Router" +#define NID_sendProxiedRouter 1028 +#define OBJ_sendProxiedRouter OBJ_id_kp,24L + +#define SN_sendOwner "sendOwner" +#define LN_sendOwner "Send Owner" +#define NID_sendOwner 1029 +#define OBJ_sendOwner OBJ_id_kp,25L + +#define SN_sendProxiedOwner "sendProxiedOwner" +#define LN_sendProxiedOwner "Send Proxied Owner" +#define NID_sendProxiedOwner 1030 +#define OBJ_sendProxiedOwner OBJ_id_kp,26L + +#define SN_cmcCA "cmcCA" +#define LN_cmcCA "CMC Certificate Authority" +#define NID_cmcCA 1131 +#define OBJ_cmcCA OBJ_id_kp,27L + +#define SN_cmcRA "cmcRA" +#define LN_cmcRA "CMC Registration Authority" +#define NID_cmcRA 1132 +#define OBJ_cmcRA OBJ_id_kp,28L + +#define SN_id_it_caProtEncCert "id-it-caProtEncCert" +#define NID_id_it_caProtEncCert 298 +#define OBJ_id_it_caProtEncCert OBJ_id_it,1L + +#define SN_id_it_signKeyPairTypes "id-it-signKeyPairTypes" +#define NID_id_it_signKeyPairTypes 299 +#define OBJ_id_it_signKeyPairTypes OBJ_id_it,2L + +#define SN_id_it_encKeyPairTypes "id-it-encKeyPairTypes" +#define NID_id_it_encKeyPairTypes 300 +#define OBJ_id_it_encKeyPairTypes OBJ_id_it,3L + +#define SN_id_it_preferredSymmAlg "id-it-preferredSymmAlg" +#define NID_id_it_preferredSymmAlg 301 +#define OBJ_id_it_preferredSymmAlg OBJ_id_it,4L + +#define SN_id_it_caKeyUpdateInfo "id-it-caKeyUpdateInfo" +#define NID_id_it_caKeyUpdateInfo 302 +#define OBJ_id_it_caKeyUpdateInfo OBJ_id_it,5L + +#define SN_id_it_currentCRL "id-it-currentCRL" +#define NID_id_it_currentCRL 303 +#define OBJ_id_it_currentCRL OBJ_id_it,6L + +#define SN_id_it_unsupportedOIDs "id-it-unsupportedOIDs" +#define NID_id_it_unsupportedOIDs 304 +#define OBJ_id_it_unsupportedOIDs OBJ_id_it,7L + +#define SN_id_it_subscriptionRequest "id-it-subscriptionRequest" +#define NID_id_it_subscriptionRequest 305 +#define OBJ_id_it_subscriptionRequest OBJ_id_it,8L + +#define SN_id_it_subscriptionResponse "id-it-subscriptionResponse" +#define NID_id_it_subscriptionResponse 306 +#define OBJ_id_it_subscriptionResponse OBJ_id_it,9L + +#define SN_id_it_keyPairParamReq "id-it-keyPairParamReq" +#define NID_id_it_keyPairParamReq 307 +#define OBJ_id_it_keyPairParamReq OBJ_id_it,10L + +#define SN_id_it_keyPairParamRep "id-it-keyPairParamRep" +#define NID_id_it_keyPairParamRep 308 +#define OBJ_id_it_keyPairParamRep OBJ_id_it,11L + +#define SN_id_it_revPassphrase "id-it-revPassphrase" +#define NID_id_it_revPassphrase 309 +#define OBJ_id_it_revPassphrase OBJ_id_it,12L + +#define SN_id_it_implicitConfirm "id-it-implicitConfirm" +#define NID_id_it_implicitConfirm 310 +#define OBJ_id_it_implicitConfirm OBJ_id_it,13L + +#define SN_id_it_confirmWaitTime "id-it-confirmWaitTime" +#define NID_id_it_confirmWaitTime 311 +#define OBJ_id_it_confirmWaitTime OBJ_id_it,14L + +#define SN_id_it_origPKIMessage "id-it-origPKIMessage" +#define NID_id_it_origPKIMessage 312 +#define OBJ_id_it_origPKIMessage OBJ_id_it,15L + +#define SN_id_it_suppLangTags "id-it-suppLangTags" +#define NID_id_it_suppLangTags 784 +#define OBJ_id_it_suppLangTags OBJ_id_it,16L + +#define SN_id_regCtrl "id-regCtrl" +#define NID_id_regCtrl 313 +#define OBJ_id_regCtrl OBJ_id_pkip,1L + +#define SN_id_regInfo "id-regInfo" +#define NID_id_regInfo 314 +#define OBJ_id_regInfo OBJ_id_pkip,2L + +#define SN_id_regCtrl_regToken "id-regCtrl-regToken" +#define NID_id_regCtrl_regToken 315 +#define OBJ_id_regCtrl_regToken OBJ_id_regCtrl,1L + +#define SN_id_regCtrl_authenticator "id-regCtrl-authenticator" +#define NID_id_regCtrl_authenticator 316 +#define OBJ_id_regCtrl_authenticator OBJ_id_regCtrl,2L + +#define SN_id_regCtrl_pkiPublicationInfo "id-regCtrl-pkiPublicationInfo" +#define NID_id_regCtrl_pkiPublicationInfo 317 +#define OBJ_id_regCtrl_pkiPublicationInfo OBJ_id_regCtrl,3L + +#define SN_id_regCtrl_pkiArchiveOptions "id-regCtrl-pkiArchiveOptions" +#define NID_id_regCtrl_pkiArchiveOptions 318 +#define OBJ_id_regCtrl_pkiArchiveOptions OBJ_id_regCtrl,4L + +#define SN_id_regCtrl_oldCertID "id-regCtrl-oldCertID" +#define NID_id_regCtrl_oldCertID 319 +#define OBJ_id_regCtrl_oldCertID OBJ_id_regCtrl,5L + +#define SN_id_regCtrl_protocolEncrKey "id-regCtrl-protocolEncrKey" +#define NID_id_regCtrl_protocolEncrKey 320 +#define OBJ_id_regCtrl_protocolEncrKey OBJ_id_regCtrl,6L + +#define SN_id_regInfo_utf8Pairs "id-regInfo-utf8Pairs" +#define NID_id_regInfo_utf8Pairs 321 +#define OBJ_id_regInfo_utf8Pairs OBJ_id_regInfo,1L + +#define SN_id_regInfo_certReq "id-regInfo-certReq" +#define NID_id_regInfo_certReq 322 +#define OBJ_id_regInfo_certReq OBJ_id_regInfo,2L + +#define SN_id_alg_des40 "id-alg-des40" +#define NID_id_alg_des40 323 +#define OBJ_id_alg_des40 OBJ_id_alg,1L + +#define SN_id_alg_noSignature "id-alg-noSignature" +#define NID_id_alg_noSignature 324 +#define OBJ_id_alg_noSignature OBJ_id_alg,2L + +#define SN_id_alg_dh_sig_hmac_sha1 "id-alg-dh-sig-hmac-sha1" +#define NID_id_alg_dh_sig_hmac_sha1 325 +#define OBJ_id_alg_dh_sig_hmac_sha1 OBJ_id_alg,3L + +#define SN_id_alg_dh_pop "id-alg-dh-pop" +#define NID_id_alg_dh_pop 326 +#define OBJ_id_alg_dh_pop OBJ_id_alg,4L + +#define SN_id_cmc_statusInfo "id-cmc-statusInfo" +#define NID_id_cmc_statusInfo 327 +#define OBJ_id_cmc_statusInfo OBJ_id_cmc,1L + +#define SN_id_cmc_identification "id-cmc-identification" +#define NID_id_cmc_identification 328 +#define OBJ_id_cmc_identification OBJ_id_cmc,2L + +#define SN_id_cmc_identityProof "id-cmc-identityProof" +#define NID_id_cmc_identityProof 329 +#define OBJ_id_cmc_identityProof OBJ_id_cmc,3L + +#define SN_id_cmc_dataReturn "id-cmc-dataReturn" +#define NID_id_cmc_dataReturn 330 +#define OBJ_id_cmc_dataReturn OBJ_id_cmc,4L + +#define SN_id_cmc_transactionId "id-cmc-transactionId" +#define NID_id_cmc_transactionId 331 +#define OBJ_id_cmc_transactionId OBJ_id_cmc,5L + +#define SN_id_cmc_senderNonce "id-cmc-senderNonce" +#define NID_id_cmc_senderNonce 332 +#define OBJ_id_cmc_senderNonce OBJ_id_cmc,6L + +#define SN_id_cmc_recipientNonce "id-cmc-recipientNonce" +#define NID_id_cmc_recipientNonce 333 +#define OBJ_id_cmc_recipientNonce OBJ_id_cmc,7L + +#define SN_id_cmc_addExtensions "id-cmc-addExtensions" +#define NID_id_cmc_addExtensions 334 +#define OBJ_id_cmc_addExtensions OBJ_id_cmc,8L + +#define SN_id_cmc_encryptedPOP "id-cmc-encryptedPOP" +#define NID_id_cmc_encryptedPOP 335 +#define OBJ_id_cmc_encryptedPOP OBJ_id_cmc,9L + +#define SN_id_cmc_decryptedPOP "id-cmc-decryptedPOP" +#define NID_id_cmc_decryptedPOP 336 +#define OBJ_id_cmc_decryptedPOP OBJ_id_cmc,10L + +#define SN_id_cmc_lraPOPWitness "id-cmc-lraPOPWitness" +#define NID_id_cmc_lraPOPWitness 337 +#define OBJ_id_cmc_lraPOPWitness OBJ_id_cmc,11L + +#define SN_id_cmc_getCert "id-cmc-getCert" +#define NID_id_cmc_getCert 338 +#define OBJ_id_cmc_getCert OBJ_id_cmc,15L + +#define SN_id_cmc_getCRL "id-cmc-getCRL" +#define NID_id_cmc_getCRL 339 +#define OBJ_id_cmc_getCRL OBJ_id_cmc,16L + +#define SN_id_cmc_revokeRequest "id-cmc-revokeRequest" +#define NID_id_cmc_revokeRequest 340 +#define OBJ_id_cmc_revokeRequest OBJ_id_cmc,17L + +#define SN_id_cmc_regInfo "id-cmc-regInfo" +#define NID_id_cmc_regInfo 341 +#define OBJ_id_cmc_regInfo OBJ_id_cmc,18L + +#define SN_id_cmc_responseInfo "id-cmc-responseInfo" +#define NID_id_cmc_responseInfo 342 +#define OBJ_id_cmc_responseInfo OBJ_id_cmc,19L + +#define SN_id_cmc_queryPending "id-cmc-queryPending" +#define NID_id_cmc_queryPending 343 +#define OBJ_id_cmc_queryPending OBJ_id_cmc,21L + +#define SN_id_cmc_popLinkRandom "id-cmc-popLinkRandom" +#define NID_id_cmc_popLinkRandom 344 +#define OBJ_id_cmc_popLinkRandom OBJ_id_cmc,22L + +#define SN_id_cmc_popLinkWitness "id-cmc-popLinkWitness" +#define NID_id_cmc_popLinkWitness 345 +#define OBJ_id_cmc_popLinkWitness OBJ_id_cmc,23L + +#define SN_id_cmc_confirmCertAcceptance "id-cmc-confirmCertAcceptance" +#define NID_id_cmc_confirmCertAcceptance 346 +#define OBJ_id_cmc_confirmCertAcceptance OBJ_id_cmc,24L + +#define SN_id_on_personalData "id-on-personalData" +#define NID_id_on_personalData 347 +#define OBJ_id_on_personalData OBJ_id_on,1L + +#define SN_id_on_permanentIdentifier "id-on-permanentIdentifier" +#define LN_id_on_permanentIdentifier "Permanent Identifier" +#define NID_id_on_permanentIdentifier 858 +#define OBJ_id_on_permanentIdentifier OBJ_id_on,3L + +#define SN_id_pda_dateOfBirth "id-pda-dateOfBirth" +#define NID_id_pda_dateOfBirth 348 +#define OBJ_id_pda_dateOfBirth OBJ_id_pda,1L + +#define SN_id_pda_placeOfBirth "id-pda-placeOfBirth" +#define NID_id_pda_placeOfBirth 349 +#define OBJ_id_pda_placeOfBirth OBJ_id_pda,2L + +#define SN_id_pda_gender "id-pda-gender" +#define NID_id_pda_gender 351 +#define OBJ_id_pda_gender OBJ_id_pda,3L + +#define SN_id_pda_countryOfCitizenship "id-pda-countryOfCitizenship" +#define NID_id_pda_countryOfCitizenship 352 +#define OBJ_id_pda_countryOfCitizenship OBJ_id_pda,4L + +#define SN_id_pda_countryOfResidence "id-pda-countryOfResidence" +#define NID_id_pda_countryOfResidence 353 +#define OBJ_id_pda_countryOfResidence OBJ_id_pda,5L + +#define SN_id_aca_authenticationInfo "id-aca-authenticationInfo" +#define NID_id_aca_authenticationInfo 354 +#define OBJ_id_aca_authenticationInfo OBJ_id_aca,1L + +#define SN_id_aca_accessIdentity "id-aca-accessIdentity" +#define NID_id_aca_accessIdentity 355 +#define OBJ_id_aca_accessIdentity OBJ_id_aca,2L + +#define SN_id_aca_chargingIdentity "id-aca-chargingIdentity" +#define NID_id_aca_chargingIdentity 356 +#define OBJ_id_aca_chargingIdentity OBJ_id_aca,3L + +#define SN_id_aca_group "id-aca-group" +#define NID_id_aca_group 357 +#define OBJ_id_aca_group OBJ_id_aca,4L + +#define SN_id_aca_role "id-aca-role" +#define NID_id_aca_role 358 +#define OBJ_id_aca_role OBJ_id_aca,5L + +#define SN_id_aca_encAttrs "id-aca-encAttrs" +#define NID_id_aca_encAttrs 399 +#define OBJ_id_aca_encAttrs OBJ_id_aca,6L + +#define SN_id_qcs_pkixQCSyntax_v1 "id-qcs-pkixQCSyntax-v1" +#define NID_id_qcs_pkixQCSyntax_v1 359 +#define OBJ_id_qcs_pkixQCSyntax_v1 OBJ_id_qcs,1L + +#define SN_id_cct_crs "id-cct-crs" +#define NID_id_cct_crs 360 +#define OBJ_id_cct_crs OBJ_id_cct,1L + +#define SN_id_cct_PKIData "id-cct-PKIData" +#define NID_id_cct_PKIData 361 +#define OBJ_id_cct_PKIData OBJ_id_cct,2L + +#define SN_id_cct_PKIResponse "id-cct-PKIResponse" +#define NID_id_cct_PKIResponse 362 +#define OBJ_id_cct_PKIResponse OBJ_id_cct,3L + +#define SN_id_ppl_anyLanguage "id-ppl-anyLanguage" +#define LN_id_ppl_anyLanguage "Any language" +#define NID_id_ppl_anyLanguage 664 +#define OBJ_id_ppl_anyLanguage OBJ_id_ppl,0L + +#define SN_id_ppl_inheritAll "id-ppl-inheritAll" +#define LN_id_ppl_inheritAll "Inherit all" +#define NID_id_ppl_inheritAll 665 +#define OBJ_id_ppl_inheritAll OBJ_id_ppl,1L + +#define SN_Independent "id-ppl-independent" +#define LN_Independent "Independent" +#define NID_Independent 667 +#define OBJ_Independent OBJ_id_ppl,2L + +#define SN_ad_OCSP "OCSP" +#define LN_ad_OCSP "OCSP" +#define NID_ad_OCSP 178 +#define OBJ_ad_OCSP OBJ_id_ad,1L + +#define SN_ad_ca_issuers "caIssuers" +#define LN_ad_ca_issuers "CA Issuers" +#define NID_ad_ca_issuers 179 +#define OBJ_ad_ca_issuers OBJ_id_ad,2L + +#define SN_ad_timeStamping "ad_timestamping" +#define LN_ad_timeStamping "AD Time Stamping" +#define NID_ad_timeStamping 363 +#define OBJ_ad_timeStamping OBJ_id_ad,3L + +#define SN_ad_dvcs "AD_DVCS" +#define LN_ad_dvcs "ad dvcs" +#define NID_ad_dvcs 364 +#define OBJ_ad_dvcs OBJ_id_ad,4L + +#define SN_caRepository "caRepository" +#define LN_caRepository "CA Repository" +#define NID_caRepository 785 +#define OBJ_caRepository OBJ_id_ad,5L + +#define OBJ_id_pkix_OCSP OBJ_ad_OCSP + +#define SN_id_pkix_OCSP_basic "basicOCSPResponse" +#define LN_id_pkix_OCSP_basic "Basic OCSP Response" +#define NID_id_pkix_OCSP_basic 365 +#define OBJ_id_pkix_OCSP_basic OBJ_id_pkix_OCSP,1L + +#define SN_id_pkix_OCSP_Nonce "Nonce" +#define LN_id_pkix_OCSP_Nonce "OCSP Nonce" +#define NID_id_pkix_OCSP_Nonce 366 +#define OBJ_id_pkix_OCSP_Nonce OBJ_id_pkix_OCSP,2L + +#define SN_id_pkix_OCSP_CrlID "CrlID" +#define LN_id_pkix_OCSP_CrlID "OCSP CRL ID" +#define NID_id_pkix_OCSP_CrlID 367 +#define OBJ_id_pkix_OCSP_CrlID OBJ_id_pkix_OCSP,3L + +#define SN_id_pkix_OCSP_acceptableResponses "acceptableResponses" +#define LN_id_pkix_OCSP_acceptableResponses "Acceptable OCSP Responses" +#define NID_id_pkix_OCSP_acceptableResponses 368 +#define OBJ_id_pkix_OCSP_acceptableResponses OBJ_id_pkix_OCSP,4L + +#define SN_id_pkix_OCSP_noCheck "noCheck" +#define LN_id_pkix_OCSP_noCheck "OCSP No Check" +#define NID_id_pkix_OCSP_noCheck 369 +#define OBJ_id_pkix_OCSP_noCheck OBJ_id_pkix_OCSP,5L + +#define SN_id_pkix_OCSP_archiveCutoff "archiveCutoff" +#define LN_id_pkix_OCSP_archiveCutoff "OCSP Archive Cutoff" +#define NID_id_pkix_OCSP_archiveCutoff 370 +#define OBJ_id_pkix_OCSP_archiveCutoff OBJ_id_pkix_OCSP,6L + +#define SN_id_pkix_OCSP_serviceLocator "serviceLocator" +#define LN_id_pkix_OCSP_serviceLocator "OCSP Service Locator" +#define NID_id_pkix_OCSP_serviceLocator 371 +#define OBJ_id_pkix_OCSP_serviceLocator OBJ_id_pkix_OCSP,7L + +#define SN_id_pkix_OCSP_extendedStatus "extendedStatus" +#define LN_id_pkix_OCSP_extendedStatus "Extended OCSP Status" +#define NID_id_pkix_OCSP_extendedStatus 372 +#define OBJ_id_pkix_OCSP_extendedStatus OBJ_id_pkix_OCSP,8L + +#define SN_id_pkix_OCSP_valid "valid" +#define NID_id_pkix_OCSP_valid 373 +#define OBJ_id_pkix_OCSP_valid OBJ_id_pkix_OCSP,9L + +#define SN_id_pkix_OCSP_path "path" +#define NID_id_pkix_OCSP_path 374 +#define OBJ_id_pkix_OCSP_path OBJ_id_pkix_OCSP,10L + +#define SN_id_pkix_OCSP_trustRoot "trustRoot" +#define LN_id_pkix_OCSP_trustRoot "Trust Root" +#define NID_id_pkix_OCSP_trustRoot 375 +#define OBJ_id_pkix_OCSP_trustRoot OBJ_id_pkix_OCSP,11L + +#define SN_algorithm "algorithm" +#define LN_algorithm "algorithm" +#define NID_algorithm 376 +#define OBJ_algorithm 1L,3L,14L,3L,2L + +#define SN_md5WithRSA "RSA-NP-MD5" +#define LN_md5WithRSA "md5WithRSA" +#define NID_md5WithRSA 104 +#define OBJ_md5WithRSA OBJ_algorithm,3L + +#define SN_des_ecb "DES-ECB" +#define LN_des_ecb "des-ecb" +#define NID_des_ecb 29 +#define OBJ_des_ecb OBJ_algorithm,6L + +#define SN_des_cbc "DES-CBC" +#define LN_des_cbc "des-cbc" +#define NID_des_cbc 31 +#define OBJ_des_cbc OBJ_algorithm,7L + +#define SN_des_ofb64 "DES-OFB" +#define LN_des_ofb64 "des-ofb" +#define NID_des_ofb64 45 +#define OBJ_des_ofb64 OBJ_algorithm,8L + +#define SN_des_cfb64 "DES-CFB" +#define LN_des_cfb64 "des-cfb" +#define NID_des_cfb64 30 +#define OBJ_des_cfb64 OBJ_algorithm,9L + +#define SN_rsaSignature "rsaSignature" +#define NID_rsaSignature 377 +#define OBJ_rsaSignature OBJ_algorithm,11L + +#define SN_dsa_2 "DSA-old" +#define LN_dsa_2 "dsaEncryption-old" +#define NID_dsa_2 67 +#define OBJ_dsa_2 OBJ_algorithm,12L + +#define SN_dsaWithSHA "DSA-SHA" +#define LN_dsaWithSHA "dsaWithSHA" +#define NID_dsaWithSHA 66 +#define OBJ_dsaWithSHA OBJ_algorithm,13L + +#define SN_shaWithRSAEncryption "RSA-SHA" +#define LN_shaWithRSAEncryption "shaWithRSAEncryption" +#define NID_shaWithRSAEncryption 42 +#define OBJ_shaWithRSAEncryption OBJ_algorithm,15L + +#define SN_des_ede_ecb "DES-EDE" +#define LN_des_ede_ecb "des-ede" +#define NID_des_ede_ecb 32 +#define OBJ_des_ede_ecb OBJ_algorithm,17L + +#define SN_des_ede3_ecb "DES-EDE3" +#define LN_des_ede3_ecb "des-ede3" +#define NID_des_ede3_ecb 33 + +#define SN_des_ede_cbc "DES-EDE-CBC" +#define LN_des_ede_cbc "des-ede-cbc" +#define NID_des_ede_cbc 43 + +#define SN_des_ede_cfb64 "DES-EDE-CFB" +#define LN_des_ede_cfb64 "des-ede-cfb" +#define NID_des_ede_cfb64 60 + +#define SN_des_ede3_cfb64 "DES-EDE3-CFB" +#define LN_des_ede3_cfb64 "des-ede3-cfb" +#define NID_des_ede3_cfb64 61 + +#define SN_des_ede_ofb64 "DES-EDE-OFB" +#define LN_des_ede_ofb64 "des-ede-ofb" +#define NID_des_ede_ofb64 62 + +#define SN_des_ede3_ofb64 "DES-EDE3-OFB" +#define LN_des_ede3_ofb64 "des-ede3-ofb" +#define NID_des_ede3_ofb64 63 + +#define SN_desx_cbc "DESX-CBC" +#define LN_desx_cbc "desx-cbc" +#define NID_desx_cbc 80 + +#define SN_sha "SHA" +#define LN_sha "sha" +#define NID_sha 41 +#define OBJ_sha OBJ_algorithm,18L + +#define SN_sha1 "SHA1" +#define LN_sha1 "sha1" +#define NID_sha1 64 +#define OBJ_sha1 OBJ_algorithm,26L + +#define SN_dsaWithSHA1_2 "DSA-SHA1-old" +#define LN_dsaWithSHA1_2 "dsaWithSHA1-old" +#define NID_dsaWithSHA1_2 70 +#define OBJ_dsaWithSHA1_2 OBJ_algorithm,27L + +#define SN_sha1WithRSA "RSA-SHA1-2" +#define LN_sha1WithRSA "sha1WithRSA" +#define NID_sha1WithRSA 115 +#define OBJ_sha1WithRSA OBJ_algorithm,29L + +#define SN_ripemd160 "RIPEMD160" +#define LN_ripemd160 "ripemd160" +#define NID_ripemd160 117 +#define OBJ_ripemd160 1L,3L,36L,3L,2L,1L + +#define SN_ripemd160WithRSA "RSA-RIPEMD160" +#define LN_ripemd160WithRSA "ripemd160WithRSA" +#define NID_ripemd160WithRSA 119 +#define OBJ_ripemd160WithRSA 1L,3L,36L,3L,3L,1L,2L + +#define SN_blake2b512 "BLAKE2b512" +#define LN_blake2b512 "blake2b512" +#define NID_blake2b512 1056 +#define OBJ_blake2b512 1L,3L,6L,1L,4L,1L,1722L,12L,2L,1L,16L + +#define SN_blake2s256 "BLAKE2s256" +#define LN_blake2s256 "blake2s256" +#define NID_blake2s256 1057 +#define OBJ_blake2s256 1L,3L,6L,1L,4L,1L,1722L,12L,2L,2L,8L + +#define SN_sxnet "SXNetID" +#define LN_sxnet "Strong Extranet ID" +#define NID_sxnet 143 +#define OBJ_sxnet 1L,3L,101L,1L,4L,1L + +#define SN_X500 "X500" +#define LN_X500 "directory services (X.500)" +#define NID_X500 11 +#define OBJ_X500 2L,5L + +#define SN_X509 "X509" +#define NID_X509 12 +#define OBJ_X509 OBJ_X500,4L + +#define SN_commonName "CN" +#define LN_commonName "commonName" +#define NID_commonName 13 +#define OBJ_commonName OBJ_X509,3L + +#define SN_surname "SN" +#define LN_surname "surname" +#define NID_surname 100 +#define OBJ_surname OBJ_X509,4L + +#define LN_serialNumber "serialNumber" +#define NID_serialNumber 105 +#define OBJ_serialNumber OBJ_X509,5L + +#define SN_countryName "C" +#define LN_countryName "countryName" +#define NID_countryName 14 +#define OBJ_countryName OBJ_X509,6L + +#define SN_localityName "L" +#define LN_localityName "localityName" +#define NID_localityName 15 +#define OBJ_localityName OBJ_X509,7L + +#define SN_stateOrProvinceName "ST" +#define LN_stateOrProvinceName "stateOrProvinceName" +#define NID_stateOrProvinceName 16 +#define OBJ_stateOrProvinceName OBJ_X509,8L + +#define SN_streetAddress "street" +#define LN_streetAddress "streetAddress" +#define NID_streetAddress 660 +#define OBJ_streetAddress OBJ_X509,9L + +#define SN_organizationName "O" +#define LN_organizationName "organizationName" +#define NID_organizationName 17 +#define OBJ_organizationName OBJ_X509,10L + +#define SN_organizationalUnitName "OU" +#define LN_organizationalUnitName "organizationalUnitName" +#define NID_organizationalUnitName 18 +#define OBJ_organizationalUnitName OBJ_X509,11L + +#define SN_title "title" +#define LN_title "title" +#define NID_title 106 +#define OBJ_title OBJ_X509,12L + +#define LN_description "description" +#define NID_description 107 +#define OBJ_description OBJ_X509,13L + +#define LN_searchGuide "searchGuide" +#define NID_searchGuide 859 +#define OBJ_searchGuide OBJ_X509,14L + +#define LN_businessCategory "businessCategory" +#define NID_businessCategory 860 +#define OBJ_businessCategory OBJ_X509,15L + +#define LN_postalAddress "postalAddress" +#define NID_postalAddress 861 +#define OBJ_postalAddress OBJ_X509,16L + +#define LN_postalCode "postalCode" +#define NID_postalCode 661 +#define OBJ_postalCode OBJ_X509,17L + +#define LN_postOfficeBox "postOfficeBox" +#define NID_postOfficeBox 862 +#define OBJ_postOfficeBox OBJ_X509,18L + +#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName" +#define NID_physicalDeliveryOfficeName 863 +#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L + +#define LN_telephoneNumber "telephoneNumber" +#define NID_telephoneNumber 864 +#define OBJ_telephoneNumber OBJ_X509,20L + +#define LN_telexNumber "telexNumber" +#define NID_telexNumber 865 +#define OBJ_telexNumber OBJ_X509,21L + +#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier" +#define NID_teletexTerminalIdentifier 866 +#define OBJ_teletexTerminalIdentifier OBJ_X509,22L + +#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber" +#define NID_facsimileTelephoneNumber 867 +#define OBJ_facsimileTelephoneNumber OBJ_X509,23L + +#define LN_x121Address "x121Address" +#define NID_x121Address 868 +#define OBJ_x121Address OBJ_X509,24L + +#define LN_internationaliSDNNumber "internationaliSDNNumber" +#define NID_internationaliSDNNumber 869 +#define OBJ_internationaliSDNNumber OBJ_X509,25L + +#define LN_registeredAddress "registeredAddress" +#define NID_registeredAddress 870 +#define OBJ_registeredAddress OBJ_X509,26L + +#define LN_destinationIndicator "destinationIndicator" +#define NID_destinationIndicator 871 +#define OBJ_destinationIndicator OBJ_X509,27L + +#define LN_preferredDeliveryMethod "preferredDeliveryMethod" +#define NID_preferredDeliveryMethod 872 +#define OBJ_preferredDeliveryMethod OBJ_X509,28L + +#define LN_presentationAddress "presentationAddress" +#define NID_presentationAddress 873 +#define OBJ_presentationAddress OBJ_X509,29L + +#define LN_supportedApplicationContext "supportedApplicationContext" +#define NID_supportedApplicationContext 874 +#define OBJ_supportedApplicationContext OBJ_X509,30L + +#define SN_member "member" +#define NID_member 875 +#define OBJ_member OBJ_X509,31L + +#define SN_owner "owner" +#define NID_owner 876 +#define OBJ_owner OBJ_X509,32L + +#define LN_roleOccupant "roleOccupant" +#define NID_roleOccupant 877 +#define OBJ_roleOccupant OBJ_X509,33L + +#define SN_seeAlso "seeAlso" +#define NID_seeAlso 878 +#define OBJ_seeAlso OBJ_X509,34L + +#define LN_userPassword "userPassword" +#define NID_userPassword 879 +#define OBJ_userPassword OBJ_X509,35L + +#define LN_userCertificate "userCertificate" +#define NID_userCertificate 880 +#define OBJ_userCertificate OBJ_X509,36L + +#define LN_cACertificate "cACertificate" +#define NID_cACertificate 881 +#define OBJ_cACertificate OBJ_X509,37L + +#define LN_authorityRevocationList "authorityRevocationList" +#define NID_authorityRevocationList 882 +#define OBJ_authorityRevocationList OBJ_X509,38L + +#define LN_certificateRevocationList "certificateRevocationList" +#define NID_certificateRevocationList 883 +#define OBJ_certificateRevocationList OBJ_X509,39L + +#define LN_crossCertificatePair "crossCertificatePair" +#define NID_crossCertificatePair 884 +#define OBJ_crossCertificatePair OBJ_X509,40L + +#define SN_name "name" +#define LN_name "name" +#define NID_name 173 +#define OBJ_name OBJ_X509,41L + +#define SN_givenName "GN" +#define LN_givenName "givenName" +#define NID_givenName 99 +#define OBJ_givenName OBJ_X509,42L + +#define SN_initials "initials" +#define LN_initials "initials" +#define NID_initials 101 +#define OBJ_initials OBJ_X509,43L + +#define LN_generationQualifier "generationQualifier" +#define NID_generationQualifier 509 +#define OBJ_generationQualifier OBJ_X509,44L + +#define LN_x500UniqueIdentifier "x500UniqueIdentifier" +#define NID_x500UniqueIdentifier 503 +#define OBJ_x500UniqueIdentifier OBJ_X509,45L + +#define SN_dnQualifier "dnQualifier" +#define LN_dnQualifier "dnQualifier" +#define NID_dnQualifier 174 +#define OBJ_dnQualifier OBJ_X509,46L + +#define LN_enhancedSearchGuide "enhancedSearchGuide" +#define NID_enhancedSearchGuide 885 +#define OBJ_enhancedSearchGuide OBJ_X509,47L + +#define LN_protocolInformation "protocolInformation" +#define NID_protocolInformation 886 +#define OBJ_protocolInformation OBJ_X509,48L + +#define LN_distinguishedName "distinguishedName" +#define NID_distinguishedName 887 +#define OBJ_distinguishedName OBJ_X509,49L + +#define LN_uniqueMember "uniqueMember" +#define NID_uniqueMember 888 +#define OBJ_uniqueMember OBJ_X509,50L + +#define LN_houseIdentifier "houseIdentifier" +#define NID_houseIdentifier 889 +#define OBJ_houseIdentifier OBJ_X509,51L + +#define LN_supportedAlgorithms "supportedAlgorithms" +#define NID_supportedAlgorithms 890 +#define OBJ_supportedAlgorithms OBJ_X509,52L + +#define LN_deltaRevocationList "deltaRevocationList" +#define NID_deltaRevocationList 891 +#define OBJ_deltaRevocationList OBJ_X509,53L + +#define SN_dmdName "dmdName" +#define NID_dmdName 892 +#define OBJ_dmdName OBJ_X509,54L + +#define LN_pseudonym "pseudonym" +#define NID_pseudonym 510 +#define OBJ_pseudonym OBJ_X509,65L + +#define SN_role "role" +#define LN_role "role" +#define NID_role 400 +#define OBJ_role OBJ_X509,72L + +#define LN_organizationIdentifier "organizationIdentifier" +#define NID_organizationIdentifier 1089 +#define OBJ_organizationIdentifier OBJ_X509,97L + +#define SN_countryCode3c "c3" +#define LN_countryCode3c "countryCode3c" +#define NID_countryCode3c 1090 +#define OBJ_countryCode3c OBJ_X509,98L + +#define SN_countryCode3n "n3" +#define LN_countryCode3n "countryCode3n" +#define NID_countryCode3n 1091 +#define OBJ_countryCode3n OBJ_X509,99L + +#define LN_dnsName "dnsName" +#define NID_dnsName 1092 +#define OBJ_dnsName OBJ_X509,100L + +#define SN_X500algorithms "X500algorithms" +#define LN_X500algorithms "directory services - algorithms" +#define NID_X500algorithms 378 +#define OBJ_X500algorithms OBJ_X500,8L + +#define SN_rsa "RSA" +#define LN_rsa "rsa" +#define NID_rsa 19 +#define OBJ_rsa OBJ_X500algorithms,1L,1L + +#define SN_mdc2WithRSA "RSA-MDC2" +#define LN_mdc2WithRSA "mdc2WithRSA" +#define NID_mdc2WithRSA 96 +#define OBJ_mdc2WithRSA OBJ_X500algorithms,3L,100L + +#define SN_mdc2 "MDC2" +#define LN_mdc2 "mdc2" +#define NID_mdc2 95 +#define OBJ_mdc2 OBJ_X500algorithms,3L,101L + +#define SN_id_ce "id-ce" +#define NID_id_ce 81 +#define OBJ_id_ce OBJ_X500,29L + +#define SN_subject_directory_attributes "subjectDirectoryAttributes" +#define LN_subject_directory_attributes "X509v3 Subject Directory Attributes" +#define NID_subject_directory_attributes 769 +#define OBJ_subject_directory_attributes OBJ_id_ce,9L + +#define SN_subject_key_identifier "subjectKeyIdentifier" +#define LN_subject_key_identifier "X509v3 Subject Key Identifier" +#define NID_subject_key_identifier 82 +#define OBJ_subject_key_identifier OBJ_id_ce,14L + +#define SN_key_usage "keyUsage" +#define LN_key_usage "X509v3 Key Usage" +#define NID_key_usage 83 +#define OBJ_key_usage OBJ_id_ce,15L + +#define SN_private_key_usage_period "privateKeyUsagePeriod" +#define LN_private_key_usage_period "X509v3 Private Key Usage Period" +#define NID_private_key_usage_period 84 +#define OBJ_private_key_usage_period OBJ_id_ce,16L + +#define SN_subject_alt_name "subjectAltName" +#define LN_subject_alt_name "X509v3 Subject Alternative Name" +#define NID_subject_alt_name 85 +#define OBJ_subject_alt_name OBJ_id_ce,17L + +#define SN_issuer_alt_name "issuerAltName" +#define LN_issuer_alt_name "X509v3 Issuer Alternative Name" +#define NID_issuer_alt_name 86 +#define OBJ_issuer_alt_name OBJ_id_ce,18L + +#define SN_basic_constraints "basicConstraints" +#define LN_basic_constraints "X509v3 Basic Constraints" +#define NID_basic_constraints 87 +#define OBJ_basic_constraints OBJ_id_ce,19L + +#define SN_crl_number "crlNumber" +#define LN_crl_number "X509v3 CRL Number" +#define NID_crl_number 88 +#define OBJ_crl_number OBJ_id_ce,20L + +#define SN_crl_reason "CRLReason" +#define LN_crl_reason "X509v3 CRL Reason Code" +#define NID_crl_reason 141 +#define OBJ_crl_reason OBJ_id_ce,21L + +#define SN_invalidity_date "invalidityDate" +#define LN_invalidity_date "Invalidity Date" +#define NID_invalidity_date 142 +#define OBJ_invalidity_date OBJ_id_ce,24L + +#define SN_delta_crl "deltaCRL" +#define LN_delta_crl "X509v3 Delta CRL Indicator" +#define NID_delta_crl 140 +#define OBJ_delta_crl OBJ_id_ce,27L + +#define SN_issuing_distribution_point "issuingDistributionPoint" +#define LN_issuing_distribution_point "X509v3 Issuing Distribution Point" +#define NID_issuing_distribution_point 770 +#define OBJ_issuing_distribution_point OBJ_id_ce,28L + +#define SN_certificate_issuer "certificateIssuer" +#define LN_certificate_issuer "X509v3 Certificate Issuer" +#define NID_certificate_issuer 771 +#define OBJ_certificate_issuer OBJ_id_ce,29L + +#define SN_name_constraints "nameConstraints" +#define LN_name_constraints "X509v3 Name Constraints" +#define NID_name_constraints 666 +#define OBJ_name_constraints OBJ_id_ce,30L + +#define SN_crl_distribution_points "crlDistributionPoints" +#define LN_crl_distribution_points "X509v3 CRL Distribution Points" +#define NID_crl_distribution_points 103 +#define OBJ_crl_distribution_points OBJ_id_ce,31L + +#define SN_certificate_policies "certificatePolicies" +#define LN_certificate_policies "X509v3 Certificate Policies" +#define NID_certificate_policies 89 +#define OBJ_certificate_policies OBJ_id_ce,32L + +#define SN_any_policy "anyPolicy" +#define LN_any_policy "X509v3 Any Policy" +#define NID_any_policy 746 +#define OBJ_any_policy OBJ_certificate_policies,0L + +#define SN_policy_mappings "policyMappings" +#define LN_policy_mappings "X509v3 Policy Mappings" +#define NID_policy_mappings 747 +#define OBJ_policy_mappings OBJ_id_ce,33L + +#define SN_authority_key_identifier "authorityKeyIdentifier" +#define LN_authority_key_identifier "X509v3 Authority Key Identifier" +#define NID_authority_key_identifier 90 +#define OBJ_authority_key_identifier OBJ_id_ce,35L + +#define SN_policy_constraints "policyConstraints" +#define LN_policy_constraints "X509v3 Policy Constraints" +#define NID_policy_constraints 401 +#define OBJ_policy_constraints OBJ_id_ce,36L + +#define SN_ext_key_usage "extendedKeyUsage" +#define LN_ext_key_usage "X509v3 Extended Key Usage" +#define NID_ext_key_usage 126 +#define OBJ_ext_key_usage OBJ_id_ce,37L + +#define SN_freshest_crl "freshestCRL" +#define LN_freshest_crl "X509v3 Freshest CRL" +#define NID_freshest_crl 857 +#define OBJ_freshest_crl OBJ_id_ce,46L + +#define SN_inhibit_any_policy "inhibitAnyPolicy" +#define LN_inhibit_any_policy "X509v3 Inhibit Any Policy" +#define NID_inhibit_any_policy 748 +#define OBJ_inhibit_any_policy OBJ_id_ce,54L + +#define SN_target_information "targetInformation" +#define LN_target_information "X509v3 AC Targeting" +#define NID_target_information 402 +#define OBJ_target_information OBJ_id_ce,55L + +#define SN_no_rev_avail "noRevAvail" +#define LN_no_rev_avail "X509v3 No Revocation Available" +#define NID_no_rev_avail 403 +#define OBJ_no_rev_avail OBJ_id_ce,56L + +#define SN_anyExtendedKeyUsage "anyExtendedKeyUsage" +#define LN_anyExtendedKeyUsage "Any Extended Key Usage" +#define NID_anyExtendedKeyUsage 910 +#define OBJ_anyExtendedKeyUsage OBJ_ext_key_usage,0L + +#define SN_netscape "Netscape" +#define LN_netscape "Netscape Communications Corp." +#define NID_netscape 57 +#define OBJ_netscape 2L,16L,840L,1L,113730L + +#define SN_netscape_cert_extension "nsCertExt" +#define LN_netscape_cert_extension "Netscape Certificate Extension" +#define NID_netscape_cert_extension 58 +#define OBJ_netscape_cert_extension OBJ_netscape,1L + +#define SN_netscape_data_type "nsDataType" +#define LN_netscape_data_type "Netscape Data Type" +#define NID_netscape_data_type 59 +#define OBJ_netscape_data_type OBJ_netscape,2L + +#define SN_netscape_cert_type "nsCertType" +#define LN_netscape_cert_type "Netscape Cert Type" +#define NID_netscape_cert_type 71 +#define OBJ_netscape_cert_type OBJ_netscape_cert_extension,1L + +#define SN_netscape_base_url "nsBaseUrl" +#define LN_netscape_base_url "Netscape Base Url" +#define NID_netscape_base_url 72 +#define OBJ_netscape_base_url OBJ_netscape_cert_extension,2L + +#define SN_netscape_revocation_url "nsRevocationUrl" +#define LN_netscape_revocation_url "Netscape Revocation Url" +#define NID_netscape_revocation_url 73 +#define OBJ_netscape_revocation_url OBJ_netscape_cert_extension,3L + +#define SN_netscape_ca_revocation_url "nsCaRevocationUrl" +#define LN_netscape_ca_revocation_url "Netscape CA Revocation Url" +#define NID_netscape_ca_revocation_url 74 +#define OBJ_netscape_ca_revocation_url OBJ_netscape_cert_extension,4L + +#define SN_netscape_renewal_url "nsRenewalUrl" +#define LN_netscape_renewal_url "Netscape Renewal Url" +#define NID_netscape_renewal_url 75 +#define OBJ_netscape_renewal_url OBJ_netscape_cert_extension,7L + +#define SN_netscape_ca_policy_url "nsCaPolicyUrl" +#define LN_netscape_ca_policy_url "Netscape CA Policy Url" +#define NID_netscape_ca_policy_url 76 +#define OBJ_netscape_ca_policy_url OBJ_netscape_cert_extension,8L + +#define SN_netscape_ssl_server_name "nsSslServerName" +#define LN_netscape_ssl_server_name "Netscape SSL Server Name" +#define NID_netscape_ssl_server_name 77 +#define OBJ_netscape_ssl_server_name OBJ_netscape_cert_extension,12L + +#define SN_netscape_comment "nsComment" +#define LN_netscape_comment "Netscape Comment" +#define NID_netscape_comment 78 +#define OBJ_netscape_comment OBJ_netscape_cert_extension,13L + +#define SN_netscape_cert_sequence "nsCertSequence" +#define LN_netscape_cert_sequence "Netscape Certificate Sequence" +#define NID_netscape_cert_sequence 79 +#define OBJ_netscape_cert_sequence OBJ_netscape_data_type,5L + +#define SN_ns_sgc "nsSGC" +#define LN_ns_sgc "Netscape Server Gated Crypto" +#define NID_ns_sgc 139 +#define OBJ_ns_sgc OBJ_netscape,4L,1L + +#define SN_org "ORG" +#define LN_org "org" +#define NID_org 379 +#define OBJ_org OBJ_iso,3L + +#define SN_dod "DOD" +#define LN_dod "dod" +#define NID_dod 380 +#define OBJ_dod OBJ_org,6L + +#define SN_iana "IANA" +#define LN_iana "iana" +#define NID_iana 381 +#define OBJ_iana OBJ_dod,1L + +#define OBJ_internet OBJ_iana + +#define SN_Directory "directory" +#define LN_Directory "Directory" +#define NID_Directory 382 +#define OBJ_Directory OBJ_internet,1L + +#define SN_Management "mgmt" +#define LN_Management "Management" +#define NID_Management 383 +#define OBJ_Management OBJ_internet,2L + +#define SN_Experimental "experimental" +#define LN_Experimental "Experimental" +#define NID_Experimental 384 +#define OBJ_Experimental OBJ_internet,3L + +#define SN_Private "private" +#define LN_Private "Private" +#define NID_Private 385 +#define OBJ_Private OBJ_internet,4L + +#define SN_Security "security" +#define LN_Security "Security" +#define NID_Security 386 +#define OBJ_Security OBJ_internet,5L + +#define SN_SNMPv2 "snmpv2" +#define LN_SNMPv2 "SNMPv2" +#define NID_SNMPv2 387 +#define OBJ_SNMPv2 OBJ_internet,6L + +#define LN_Mail "Mail" +#define NID_Mail 388 +#define OBJ_Mail OBJ_internet,7L + +#define SN_Enterprises "enterprises" +#define LN_Enterprises "Enterprises" +#define NID_Enterprises 389 +#define OBJ_Enterprises OBJ_Private,1L + +#define SN_dcObject "dcobject" +#define LN_dcObject "dcObject" +#define NID_dcObject 390 +#define OBJ_dcObject OBJ_Enterprises,1466L,344L + +#define SN_mime_mhs "mime-mhs" +#define LN_mime_mhs "MIME MHS" +#define NID_mime_mhs 504 +#define OBJ_mime_mhs OBJ_Mail,1L + +#define SN_mime_mhs_headings "mime-mhs-headings" +#define LN_mime_mhs_headings "mime-mhs-headings" +#define NID_mime_mhs_headings 505 +#define OBJ_mime_mhs_headings OBJ_mime_mhs,1L + +#define SN_mime_mhs_bodies "mime-mhs-bodies" +#define LN_mime_mhs_bodies "mime-mhs-bodies" +#define NID_mime_mhs_bodies 506 +#define OBJ_mime_mhs_bodies OBJ_mime_mhs,2L + +#define SN_id_hex_partial_message "id-hex-partial-message" +#define LN_id_hex_partial_message "id-hex-partial-message" +#define NID_id_hex_partial_message 507 +#define OBJ_id_hex_partial_message OBJ_mime_mhs_headings,1L + +#define SN_id_hex_multipart_message "id-hex-multipart-message" +#define LN_id_hex_multipart_message "id-hex-multipart-message" +#define NID_id_hex_multipart_message 508 +#define OBJ_id_hex_multipart_message OBJ_mime_mhs_headings,2L + +#define SN_zlib_compression "ZLIB" +#define LN_zlib_compression "zlib compression" +#define NID_zlib_compression 125 +#define OBJ_zlib_compression OBJ_id_smime_alg,8L + +#define OBJ_csor 2L,16L,840L,1L,101L,3L + +#define OBJ_nistAlgorithms OBJ_csor,4L + +#define OBJ_aes OBJ_nistAlgorithms,1L + +#define SN_aes_128_ecb "AES-128-ECB" +#define LN_aes_128_ecb "aes-128-ecb" +#define NID_aes_128_ecb 418 +#define OBJ_aes_128_ecb OBJ_aes,1L + +#define SN_aes_128_cbc "AES-128-CBC" +#define LN_aes_128_cbc "aes-128-cbc" +#define NID_aes_128_cbc 419 +#define OBJ_aes_128_cbc OBJ_aes,2L + +#define SN_aes_128_ofb128 "AES-128-OFB" +#define LN_aes_128_ofb128 "aes-128-ofb" +#define NID_aes_128_ofb128 420 +#define OBJ_aes_128_ofb128 OBJ_aes,3L + +#define SN_aes_128_cfb128 "AES-128-CFB" +#define LN_aes_128_cfb128 "aes-128-cfb" +#define NID_aes_128_cfb128 421 +#define OBJ_aes_128_cfb128 OBJ_aes,4L + +#define SN_id_aes128_wrap "id-aes128-wrap" +#define NID_id_aes128_wrap 788 +#define OBJ_id_aes128_wrap OBJ_aes,5L + +#define SN_aes_128_gcm "id-aes128-GCM" +#define LN_aes_128_gcm "aes-128-gcm" +#define NID_aes_128_gcm 895 +#define OBJ_aes_128_gcm OBJ_aes,6L + +#define SN_aes_128_ccm "id-aes128-CCM" +#define LN_aes_128_ccm "aes-128-ccm" +#define NID_aes_128_ccm 896 +#define OBJ_aes_128_ccm OBJ_aes,7L + +#define SN_id_aes128_wrap_pad "id-aes128-wrap-pad" +#define NID_id_aes128_wrap_pad 897 +#define OBJ_id_aes128_wrap_pad OBJ_aes,8L + +#define SN_aes_192_ecb "AES-192-ECB" +#define LN_aes_192_ecb "aes-192-ecb" +#define NID_aes_192_ecb 422 +#define OBJ_aes_192_ecb OBJ_aes,21L + +#define SN_aes_192_cbc "AES-192-CBC" +#define LN_aes_192_cbc "aes-192-cbc" +#define NID_aes_192_cbc 423 +#define OBJ_aes_192_cbc OBJ_aes,22L + +#define SN_aes_192_ofb128 "AES-192-OFB" +#define LN_aes_192_ofb128 "aes-192-ofb" +#define NID_aes_192_ofb128 424 +#define OBJ_aes_192_ofb128 OBJ_aes,23L + +#define SN_aes_192_cfb128 "AES-192-CFB" +#define LN_aes_192_cfb128 "aes-192-cfb" +#define NID_aes_192_cfb128 425 +#define OBJ_aes_192_cfb128 OBJ_aes,24L + +#define SN_id_aes192_wrap "id-aes192-wrap" +#define NID_id_aes192_wrap 789 +#define OBJ_id_aes192_wrap OBJ_aes,25L + +#define SN_aes_192_gcm "id-aes192-GCM" +#define LN_aes_192_gcm "aes-192-gcm" +#define NID_aes_192_gcm 898 +#define OBJ_aes_192_gcm OBJ_aes,26L + +#define SN_aes_192_ccm "id-aes192-CCM" +#define LN_aes_192_ccm "aes-192-ccm" +#define NID_aes_192_ccm 899 +#define OBJ_aes_192_ccm OBJ_aes,27L + +#define SN_id_aes192_wrap_pad "id-aes192-wrap-pad" +#define NID_id_aes192_wrap_pad 900 +#define OBJ_id_aes192_wrap_pad OBJ_aes,28L + +#define SN_aes_256_ecb "AES-256-ECB" +#define LN_aes_256_ecb "aes-256-ecb" +#define NID_aes_256_ecb 426 +#define OBJ_aes_256_ecb OBJ_aes,41L + +#define SN_aes_256_cbc "AES-256-CBC" +#define LN_aes_256_cbc "aes-256-cbc" +#define NID_aes_256_cbc 427 +#define OBJ_aes_256_cbc OBJ_aes,42L + +#define SN_aes_256_ofb128 "AES-256-OFB" +#define LN_aes_256_ofb128 "aes-256-ofb" +#define NID_aes_256_ofb128 428 +#define OBJ_aes_256_ofb128 OBJ_aes,43L + +#define SN_aes_256_cfb128 "AES-256-CFB" +#define LN_aes_256_cfb128 "aes-256-cfb" +#define NID_aes_256_cfb128 429 +#define OBJ_aes_256_cfb128 OBJ_aes,44L + +#define SN_id_aes256_wrap "id-aes256-wrap" +#define NID_id_aes256_wrap 790 +#define OBJ_id_aes256_wrap OBJ_aes,45L + +#define SN_aes_256_gcm "id-aes256-GCM" +#define LN_aes_256_gcm "aes-256-gcm" +#define NID_aes_256_gcm 901 +#define OBJ_aes_256_gcm OBJ_aes,46L + +#define SN_aes_256_ccm "id-aes256-CCM" +#define LN_aes_256_ccm "aes-256-ccm" +#define NID_aes_256_ccm 902 +#define OBJ_aes_256_ccm OBJ_aes,47L + +#define SN_id_aes256_wrap_pad "id-aes256-wrap-pad" +#define NID_id_aes256_wrap_pad 903 +#define OBJ_id_aes256_wrap_pad OBJ_aes,48L + +#define SN_aes_128_xts "AES-128-XTS" +#define LN_aes_128_xts "aes-128-xts" +#define NID_aes_128_xts 913 +#define OBJ_aes_128_xts OBJ_ieee_siswg,0L,1L,1L + +#define SN_aes_256_xts "AES-256-XTS" +#define LN_aes_256_xts "aes-256-xts" +#define NID_aes_256_xts 914 +#define OBJ_aes_256_xts OBJ_ieee_siswg,0L,1L,2L + +#define SN_aes_128_cfb1 "AES-128-CFB1" +#define LN_aes_128_cfb1 "aes-128-cfb1" +#define NID_aes_128_cfb1 650 + +#define SN_aes_192_cfb1 "AES-192-CFB1" +#define LN_aes_192_cfb1 "aes-192-cfb1" +#define NID_aes_192_cfb1 651 + +#define SN_aes_256_cfb1 "AES-256-CFB1" +#define LN_aes_256_cfb1 "aes-256-cfb1" +#define NID_aes_256_cfb1 652 + +#define SN_aes_128_cfb8 "AES-128-CFB8" +#define LN_aes_128_cfb8 "aes-128-cfb8" +#define NID_aes_128_cfb8 653 + +#define SN_aes_192_cfb8 "AES-192-CFB8" +#define LN_aes_192_cfb8 "aes-192-cfb8" +#define NID_aes_192_cfb8 654 + +#define SN_aes_256_cfb8 "AES-256-CFB8" +#define LN_aes_256_cfb8 "aes-256-cfb8" +#define NID_aes_256_cfb8 655 + +#define SN_aes_128_ctr "AES-128-CTR" +#define LN_aes_128_ctr "aes-128-ctr" +#define NID_aes_128_ctr 904 + +#define SN_aes_192_ctr "AES-192-CTR" +#define LN_aes_192_ctr "aes-192-ctr" +#define NID_aes_192_ctr 905 + +#define SN_aes_256_ctr "AES-256-CTR" +#define LN_aes_256_ctr "aes-256-ctr" +#define NID_aes_256_ctr 906 + +#define SN_aes_128_ocb "AES-128-OCB" +#define LN_aes_128_ocb "aes-128-ocb" +#define NID_aes_128_ocb 958 + +#define SN_aes_192_ocb "AES-192-OCB" +#define LN_aes_192_ocb "aes-192-ocb" +#define NID_aes_192_ocb 959 + +#define SN_aes_256_ocb "AES-256-OCB" +#define LN_aes_256_ocb "aes-256-ocb" +#define NID_aes_256_ocb 960 + +#define SN_des_cfb1 "DES-CFB1" +#define LN_des_cfb1 "des-cfb1" +#define NID_des_cfb1 656 + +#define SN_des_cfb8 "DES-CFB8" +#define LN_des_cfb8 "des-cfb8" +#define NID_des_cfb8 657 + +#define SN_des_ede3_cfb1 "DES-EDE3-CFB1" +#define LN_des_ede3_cfb1 "des-ede3-cfb1" +#define NID_des_ede3_cfb1 658 + +#define SN_des_ede3_cfb8 "DES-EDE3-CFB8" +#define LN_des_ede3_cfb8 "des-ede3-cfb8" +#define NID_des_ede3_cfb8 659 + +#define OBJ_nist_hashalgs OBJ_nistAlgorithms,2L + +#define SN_sha256 "SHA256" +#define LN_sha256 "sha256" +#define NID_sha256 672 +#define OBJ_sha256 OBJ_nist_hashalgs,1L + +#define SN_sha384 "SHA384" +#define LN_sha384 "sha384" +#define NID_sha384 673 +#define OBJ_sha384 OBJ_nist_hashalgs,2L + +#define SN_sha512 "SHA512" +#define LN_sha512 "sha512" +#define NID_sha512 674 +#define OBJ_sha512 OBJ_nist_hashalgs,3L + +#define SN_sha224 "SHA224" +#define LN_sha224 "sha224" +#define NID_sha224 675 +#define OBJ_sha224 OBJ_nist_hashalgs,4L + +#define SN_sha512_224 "SHA512-224" +#define LN_sha512_224 "sha512-224" +#define NID_sha512_224 1094 +#define OBJ_sha512_224 OBJ_nist_hashalgs,5L + +#define SN_sha512_256 "SHA512-256" +#define LN_sha512_256 "sha512-256" +#define NID_sha512_256 1095 +#define OBJ_sha512_256 OBJ_nist_hashalgs,6L + +#define SN_sha3_224 "SHA3-224" +#define LN_sha3_224 "sha3-224" +#define NID_sha3_224 1096 +#define OBJ_sha3_224 OBJ_nist_hashalgs,7L + +#define SN_sha3_256 "SHA3-256" +#define LN_sha3_256 "sha3-256" +#define NID_sha3_256 1097 +#define OBJ_sha3_256 OBJ_nist_hashalgs,8L + +#define SN_sha3_384 "SHA3-384" +#define LN_sha3_384 "sha3-384" +#define NID_sha3_384 1098 +#define OBJ_sha3_384 OBJ_nist_hashalgs,9L + +#define SN_sha3_512 "SHA3-512" +#define LN_sha3_512 "sha3-512" +#define NID_sha3_512 1099 +#define OBJ_sha3_512 OBJ_nist_hashalgs,10L + +#define SN_shake128 "SHAKE128" +#define LN_shake128 "shake128" +#define NID_shake128 1100 +#define OBJ_shake128 OBJ_nist_hashalgs,11L + +#define SN_shake256 "SHAKE256" +#define LN_shake256 "shake256" +#define NID_shake256 1101 +#define OBJ_shake256 OBJ_nist_hashalgs,12L + +#define SN_hmac_sha3_224 "id-hmacWithSHA3-224" +#define LN_hmac_sha3_224 "hmac-sha3-224" +#define NID_hmac_sha3_224 1102 +#define OBJ_hmac_sha3_224 OBJ_nist_hashalgs,13L + +#define SN_hmac_sha3_256 "id-hmacWithSHA3-256" +#define LN_hmac_sha3_256 "hmac-sha3-256" +#define NID_hmac_sha3_256 1103 +#define OBJ_hmac_sha3_256 OBJ_nist_hashalgs,14L + +#define SN_hmac_sha3_384 "id-hmacWithSHA3-384" +#define LN_hmac_sha3_384 "hmac-sha3-384" +#define NID_hmac_sha3_384 1104 +#define OBJ_hmac_sha3_384 OBJ_nist_hashalgs,15L + +#define SN_hmac_sha3_512 "id-hmacWithSHA3-512" +#define LN_hmac_sha3_512 "hmac-sha3-512" +#define NID_hmac_sha3_512 1105 +#define OBJ_hmac_sha3_512 OBJ_nist_hashalgs,16L + +#define OBJ_dsa_with_sha2 OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA224 "dsa_with_SHA224" +#define NID_dsa_with_SHA224 802 +#define OBJ_dsa_with_SHA224 OBJ_dsa_with_sha2,1L + +#define SN_dsa_with_SHA256 "dsa_with_SHA256" +#define NID_dsa_with_SHA256 803 +#define OBJ_dsa_with_SHA256 OBJ_dsa_with_sha2,2L + +#define OBJ_sigAlgs OBJ_nistAlgorithms,3L + +#define SN_dsa_with_SHA384 "id-dsa-with-sha384" +#define LN_dsa_with_SHA384 "dsa_with_SHA384" +#define NID_dsa_with_SHA384 1106 +#define OBJ_dsa_with_SHA384 OBJ_sigAlgs,3L + +#define SN_dsa_with_SHA512 "id-dsa-with-sha512" +#define LN_dsa_with_SHA512 "dsa_with_SHA512" +#define NID_dsa_with_SHA512 1107 +#define OBJ_dsa_with_SHA512 OBJ_sigAlgs,4L + +#define SN_dsa_with_SHA3_224 "id-dsa-with-sha3-224" +#define LN_dsa_with_SHA3_224 "dsa_with_SHA3-224" +#define NID_dsa_with_SHA3_224 1108 +#define OBJ_dsa_with_SHA3_224 OBJ_sigAlgs,5L + +#define SN_dsa_with_SHA3_256 "id-dsa-with-sha3-256" +#define LN_dsa_with_SHA3_256 "dsa_with_SHA3-256" +#define NID_dsa_with_SHA3_256 1109 +#define OBJ_dsa_with_SHA3_256 OBJ_sigAlgs,6L + +#define SN_dsa_with_SHA3_384 "id-dsa-with-sha3-384" +#define LN_dsa_with_SHA3_384 "dsa_with_SHA3-384" +#define NID_dsa_with_SHA3_384 1110 +#define OBJ_dsa_with_SHA3_384 OBJ_sigAlgs,7L + +#define SN_dsa_with_SHA3_512 "id-dsa-with-sha3-512" +#define LN_dsa_with_SHA3_512 "dsa_with_SHA3-512" +#define NID_dsa_with_SHA3_512 1111 +#define OBJ_dsa_with_SHA3_512 OBJ_sigAlgs,8L + +#define SN_ecdsa_with_SHA3_224 "id-ecdsa-with-sha3-224" +#define LN_ecdsa_with_SHA3_224 "ecdsa_with_SHA3-224" +#define NID_ecdsa_with_SHA3_224 1112 +#define OBJ_ecdsa_with_SHA3_224 OBJ_sigAlgs,9L + +#define SN_ecdsa_with_SHA3_256 "id-ecdsa-with-sha3-256" +#define LN_ecdsa_with_SHA3_256 "ecdsa_with_SHA3-256" +#define NID_ecdsa_with_SHA3_256 1113 +#define OBJ_ecdsa_with_SHA3_256 OBJ_sigAlgs,10L + +#define SN_ecdsa_with_SHA3_384 "id-ecdsa-with-sha3-384" +#define LN_ecdsa_with_SHA3_384 "ecdsa_with_SHA3-384" +#define NID_ecdsa_with_SHA3_384 1114 +#define OBJ_ecdsa_with_SHA3_384 OBJ_sigAlgs,11L + +#define SN_ecdsa_with_SHA3_512 "id-ecdsa-with-sha3-512" +#define LN_ecdsa_with_SHA3_512 "ecdsa_with_SHA3-512" +#define NID_ecdsa_with_SHA3_512 1115 +#define OBJ_ecdsa_with_SHA3_512 OBJ_sigAlgs,12L + +#define SN_RSA_SHA3_224 "id-rsassa-pkcs1-v1_5-with-sha3-224" +#define LN_RSA_SHA3_224 "RSA-SHA3-224" +#define NID_RSA_SHA3_224 1116 +#define OBJ_RSA_SHA3_224 OBJ_sigAlgs,13L + +#define SN_RSA_SHA3_256 "id-rsassa-pkcs1-v1_5-with-sha3-256" +#define LN_RSA_SHA3_256 "RSA-SHA3-256" +#define NID_RSA_SHA3_256 1117 +#define OBJ_RSA_SHA3_256 OBJ_sigAlgs,14L + +#define SN_RSA_SHA3_384 "id-rsassa-pkcs1-v1_5-with-sha3-384" +#define LN_RSA_SHA3_384 "RSA-SHA3-384" +#define NID_RSA_SHA3_384 1118 +#define OBJ_RSA_SHA3_384 OBJ_sigAlgs,15L + +#define SN_RSA_SHA3_512 "id-rsassa-pkcs1-v1_5-with-sha3-512" +#define LN_RSA_SHA3_512 "RSA-SHA3-512" +#define NID_RSA_SHA3_512 1119 +#define OBJ_RSA_SHA3_512 OBJ_sigAlgs,16L + +#define SN_hold_instruction_code "holdInstructionCode" +#define LN_hold_instruction_code "Hold Instruction Code" +#define NID_hold_instruction_code 430 +#define OBJ_hold_instruction_code OBJ_id_ce,23L + +#define OBJ_holdInstruction OBJ_X9_57,2L + +#define SN_hold_instruction_none "holdInstructionNone" +#define LN_hold_instruction_none "Hold Instruction None" +#define NID_hold_instruction_none 431 +#define OBJ_hold_instruction_none OBJ_holdInstruction,1L + +#define SN_hold_instruction_call_issuer "holdInstructionCallIssuer" +#define LN_hold_instruction_call_issuer "Hold Instruction Call Issuer" +#define NID_hold_instruction_call_issuer 432 +#define OBJ_hold_instruction_call_issuer OBJ_holdInstruction,2L + +#define SN_hold_instruction_reject "holdInstructionReject" +#define LN_hold_instruction_reject "Hold Instruction Reject" +#define NID_hold_instruction_reject 433 +#define OBJ_hold_instruction_reject OBJ_holdInstruction,3L + +#define SN_data "data" +#define NID_data 434 +#define OBJ_data OBJ_itu_t,9L + +#define SN_pss "pss" +#define NID_pss 435 +#define OBJ_pss OBJ_data,2342L + +#define SN_ucl "ucl" +#define NID_ucl 436 +#define OBJ_ucl OBJ_pss,19200300L + +#define SN_pilot "pilot" +#define NID_pilot 437 +#define OBJ_pilot OBJ_ucl,100L + +#define LN_pilotAttributeType "pilotAttributeType" +#define NID_pilotAttributeType 438 +#define OBJ_pilotAttributeType OBJ_pilot,1L + +#define LN_pilotAttributeSyntax "pilotAttributeSyntax" +#define NID_pilotAttributeSyntax 439 +#define OBJ_pilotAttributeSyntax OBJ_pilot,3L + +#define LN_pilotObjectClass "pilotObjectClass" +#define NID_pilotObjectClass 440 +#define OBJ_pilotObjectClass OBJ_pilot,4L + +#define LN_pilotGroups "pilotGroups" +#define NID_pilotGroups 441 +#define OBJ_pilotGroups OBJ_pilot,10L + +#define LN_iA5StringSyntax "iA5StringSyntax" +#define NID_iA5StringSyntax 442 +#define OBJ_iA5StringSyntax OBJ_pilotAttributeSyntax,4L + +#define LN_caseIgnoreIA5StringSyntax "caseIgnoreIA5StringSyntax" +#define NID_caseIgnoreIA5StringSyntax 443 +#define OBJ_caseIgnoreIA5StringSyntax OBJ_pilotAttributeSyntax,5L + +#define LN_pilotObject "pilotObject" +#define NID_pilotObject 444 +#define OBJ_pilotObject OBJ_pilotObjectClass,3L + +#define LN_pilotPerson "pilotPerson" +#define NID_pilotPerson 445 +#define OBJ_pilotPerson OBJ_pilotObjectClass,4L + +#define SN_account "account" +#define NID_account 446 +#define OBJ_account OBJ_pilotObjectClass,5L + +#define SN_document "document" +#define NID_document 447 +#define OBJ_document OBJ_pilotObjectClass,6L + +#define SN_room "room" +#define NID_room 448 +#define OBJ_room OBJ_pilotObjectClass,7L + +#define LN_documentSeries "documentSeries" +#define NID_documentSeries 449 +#define OBJ_documentSeries OBJ_pilotObjectClass,9L + +#define SN_Domain "domain" +#define LN_Domain "Domain" +#define NID_Domain 392 +#define OBJ_Domain OBJ_pilotObjectClass,13L + +#define LN_rFC822localPart "rFC822localPart" +#define NID_rFC822localPart 450 +#define OBJ_rFC822localPart OBJ_pilotObjectClass,14L + +#define LN_dNSDomain "dNSDomain" +#define NID_dNSDomain 451 +#define OBJ_dNSDomain OBJ_pilotObjectClass,15L + +#define LN_domainRelatedObject "domainRelatedObject" +#define NID_domainRelatedObject 452 +#define OBJ_domainRelatedObject OBJ_pilotObjectClass,17L + +#define LN_friendlyCountry "friendlyCountry" +#define NID_friendlyCountry 453 +#define OBJ_friendlyCountry OBJ_pilotObjectClass,18L + +#define LN_simpleSecurityObject "simpleSecurityObject" +#define NID_simpleSecurityObject 454 +#define OBJ_simpleSecurityObject OBJ_pilotObjectClass,19L + +#define LN_pilotOrganization "pilotOrganization" +#define NID_pilotOrganization 455 +#define OBJ_pilotOrganization OBJ_pilotObjectClass,20L + +#define LN_pilotDSA "pilotDSA" +#define NID_pilotDSA 456 +#define OBJ_pilotDSA OBJ_pilotObjectClass,21L + +#define LN_qualityLabelledData "qualityLabelledData" +#define NID_qualityLabelledData 457 +#define OBJ_qualityLabelledData OBJ_pilotObjectClass,22L + +#define SN_userId "UID" +#define LN_userId "userId" +#define NID_userId 458 +#define OBJ_userId OBJ_pilotAttributeType,1L + +#define LN_textEncodedORAddress "textEncodedORAddress" +#define NID_textEncodedORAddress 459 +#define OBJ_textEncodedORAddress OBJ_pilotAttributeType,2L + +#define SN_rfc822Mailbox "mail" +#define LN_rfc822Mailbox "rfc822Mailbox" +#define NID_rfc822Mailbox 460 +#define OBJ_rfc822Mailbox OBJ_pilotAttributeType,3L + +#define SN_info "info" +#define NID_info 461 +#define OBJ_info OBJ_pilotAttributeType,4L + +#define LN_favouriteDrink "favouriteDrink" +#define NID_favouriteDrink 462 +#define OBJ_favouriteDrink OBJ_pilotAttributeType,5L + +#define LN_roomNumber "roomNumber" +#define NID_roomNumber 463 +#define OBJ_roomNumber OBJ_pilotAttributeType,6L + +#define SN_photo "photo" +#define NID_photo 464 +#define OBJ_photo OBJ_pilotAttributeType,7L + +#define LN_userClass "userClass" +#define NID_userClass 465 +#define OBJ_userClass OBJ_pilotAttributeType,8L + +#define SN_host "host" +#define NID_host 466 +#define OBJ_host OBJ_pilotAttributeType,9L + +#define SN_manager "manager" +#define NID_manager 467 +#define OBJ_manager OBJ_pilotAttributeType,10L + +#define LN_documentIdentifier "documentIdentifier" +#define NID_documentIdentifier 468 +#define OBJ_documentIdentifier OBJ_pilotAttributeType,11L + +#define LN_documentTitle "documentTitle" +#define NID_documentTitle 469 +#define OBJ_documentTitle OBJ_pilotAttributeType,12L + +#define LN_documentVersion "documentVersion" +#define NID_documentVersion 470 +#define OBJ_documentVersion OBJ_pilotAttributeType,13L + +#define LN_documentAuthor "documentAuthor" +#define NID_documentAuthor 471 +#define OBJ_documentAuthor OBJ_pilotAttributeType,14L + +#define LN_documentLocation "documentLocation" +#define NID_documentLocation 472 +#define OBJ_documentLocation OBJ_pilotAttributeType,15L + +#define LN_homeTelephoneNumber "homeTelephoneNumber" +#define NID_homeTelephoneNumber 473 +#define OBJ_homeTelephoneNumber OBJ_pilotAttributeType,20L + +#define SN_secretary "secretary" +#define NID_secretary 474 +#define OBJ_secretary OBJ_pilotAttributeType,21L + +#define LN_otherMailbox "otherMailbox" +#define NID_otherMailbox 475 +#define OBJ_otherMailbox OBJ_pilotAttributeType,22L + +#define LN_lastModifiedTime "lastModifiedTime" +#define NID_lastModifiedTime 476 +#define OBJ_lastModifiedTime OBJ_pilotAttributeType,23L + +#define LN_lastModifiedBy "lastModifiedBy" +#define NID_lastModifiedBy 477 +#define OBJ_lastModifiedBy OBJ_pilotAttributeType,24L + +#define SN_domainComponent "DC" +#define LN_domainComponent "domainComponent" +#define NID_domainComponent 391 +#define OBJ_domainComponent OBJ_pilotAttributeType,25L + +#define LN_aRecord "aRecord" +#define NID_aRecord 478 +#define OBJ_aRecord OBJ_pilotAttributeType,26L + +#define LN_pilotAttributeType27 "pilotAttributeType27" +#define NID_pilotAttributeType27 479 +#define OBJ_pilotAttributeType27 OBJ_pilotAttributeType,27L + +#define LN_mXRecord "mXRecord" +#define NID_mXRecord 480 +#define OBJ_mXRecord OBJ_pilotAttributeType,28L + +#define LN_nSRecord "nSRecord" +#define NID_nSRecord 481 +#define OBJ_nSRecord OBJ_pilotAttributeType,29L + +#define LN_sOARecord "sOARecord" +#define NID_sOARecord 482 +#define OBJ_sOARecord OBJ_pilotAttributeType,30L + +#define LN_cNAMERecord "cNAMERecord" +#define NID_cNAMERecord 483 +#define OBJ_cNAMERecord OBJ_pilotAttributeType,31L + +#define LN_associatedDomain "associatedDomain" +#define NID_associatedDomain 484 +#define OBJ_associatedDomain OBJ_pilotAttributeType,37L + +#define LN_associatedName "associatedName" +#define NID_associatedName 485 +#define OBJ_associatedName OBJ_pilotAttributeType,38L + +#define LN_homePostalAddress "homePostalAddress" +#define NID_homePostalAddress 486 +#define OBJ_homePostalAddress OBJ_pilotAttributeType,39L + +#define LN_personalTitle "personalTitle" +#define NID_personalTitle 487 +#define OBJ_personalTitle OBJ_pilotAttributeType,40L + +#define LN_mobileTelephoneNumber "mobileTelephoneNumber" +#define NID_mobileTelephoneNumber 488 +#define OBJ_mobileTelephoneNumber OBJ_pilotAttributeType,41L + +#define LN_pagerTelephoneNumber "pagerTelephoneNumber" +#define NID_pagerTelephoneNumber 489 +#define OBJ_pagerTelephoneNumber OBJ_pilotAttributeType,42L + +#define LN_friendlyCountryName "friendlyCountryName" +#define NID_friendlyCountryName 490 +#define OBJ_friendlyCountryName OBJ_pilotAttributeType,43L + +#define SN_uniqueIdentifier "uid" +#define LN_uniqueIdentifier "uniqueIdentifier" +#define NID_uniqueIdentifier 102 +#define OBJ_uniqueIdentifier OBJ_pilotAttributeType,44L + +#define LN_organizationalStatus "organizationalStatus" +#define NID_organizationalStatus 491 +#define OBJ_organizationalStatus OBJ_pilotAttributeType,45L + +#define LN_janetMailbox "janetMailbox" +#define NID_janetMailbox 492 +#define OBJ_janetMailbox OBJ_pilotAttributeType,46L + +#define LN_mailPreferenceOption "mailPreferenceOption" +#define NID_mailPreferenceOption 493 +#define OBJ_mailPreferenceOption OBJ_pilotAttributeType,47L + +#define LN_buildingName "buildingName" +#define NID_buildingName 494 +#define OBJ_buildingName OBJ_pilotAttributeType,48L + +#define LN_dSAQuality "dSAQuality" +#define NID_dSAQuality 495 +#define OBJ_dSAQuality OBJ_pilotAttributeType,49L + +#define LN_singleLevelQuality "singleLevelQuality" +#define NID_singleLevelQuality 496 +#define OBJ_singleLevelQuality OBJ_pilotAttributeType,50L + +#define LN_subtreeMinimumQuality "subtreeMinimumQuality" +#define NID_subtreeMinimumQuality 497 +#define OBJ_subtreeMinimumQuality OBJ_pilotAttributeType,51L + +#define LN_subtreeMaximumQuality "subtreeMaximumQuality" +#define NID_subtreeMaximumQuality 498 +#define OBJ_subtreeMaximumQuality OBJ_pilotAttributeType,52L + +#define LN_personalSignature "personalSignature" +#define NID_personalSignature 499 +#define OBJ_personalSignature OBJ_pilotAttributeType,53L + +#define LN_dITRedirect "dITRedirect" +#define NID_dITRedirect 500 +#define OBJ_dITRedirect OBJ_pilotAttributeType,54L + +#define SN_audio "audio" +#define NID_audio 501 +#define OBJ_audio OBJ_pilotAttributeType,55L + +#define LN_documentPublisher "documentPublisher" +#define NID_documentPublisher 502 +#define OBJ_documentPublisher OBJ_pilotAttributeType,56L + +#define SN_id_set "id-set" +#define LN_id_set "Secure Electronic Transactions" +#define NID_id_set 512 +#define OBJ_id_set OBJ_international_organizations,42L + +#define SN_set_ctype "set-ctype" +#define LN_set_ctype "content types" +#define NID_set_ctype 513 +#define OBJ_set_ctype OBJ_id_set,0L + +#define SN_set_msgExt "set-msgExt" +#define LN_set_msgExt "message extensions" +#define NID_set_msgExt 514 +#define OBJ_set_msgExt OBJ_id_set,1L + +#define SN_set_attr "set-attr" +#define NID_set_attr 515 +#define OBJ_set_attr OBJ_id_set,3L + +#define SN_set_policy "set-policy" +#define NID_set_policy 516 +#define OBJ_set_policy OBJ_id_set,5L + +#define SN_set_certExt "set-certExt" +#define LN_set_certExt "certificate extensions" +#define NID_set_certExt 517 +#define OBJ_set_certExt OBJ_id_set,7L + +#define SN_set_brand "set-brand" +#define NID_set_brand 518 +#define OBJ_set_brand OBJ_id_set,8L + +#define SN_setct_PANData "setct-PANData" +#define NID_setct_PANData 519 +#define OBJ_setct_PANData OBJ_set_ctype,0L + +#define SN_setct_PANToken "setct-PANToken" +#define NID_setct_PANToken 520 +#define OBJ_setct_PANToken OBJ_set_ctype,1L + +#define SN_setct_PANOnly "setct-PANOnly" +#define NID_setct_PANOnly 521 +#define OBJ_setct_PANOnly OBJ_set_ctype,2L + +#define SN_setct_OIData "setct-OIData" +#define NID_setct_OIData 522 +#define OBJ_setct_OIData OBJ_set_ctype,3L + +#define SN_setct_PI "setct-PI" +#define NID_setct_PI 523 +#define OBJ_setct_PI OBJ_set_ctype,4L + +#define SN_setct_PIData "setct-PIData" +#define NID_setct_PIData 524 +#define OBJ_setct_PIData OBJ_set_ctype,5L + +#define SN_setct_PIDataUnsigned "setct-PIDataUnsigned" +#define NID_setct_PIDataUnsigned 525 +#define OBJ_setct_PIDataUnsigned OBJ_set_ctype,6L + +#define SN_setct_HODInput "setct-HODInput" +#define NID_setct_HODInput 526 +#define OBJ_setct_HODInput OBJ_set_ctype,7L + +#define SN_setct_AuthResBaggage "setct-AuthResBaggage" +#define NID_setct_AuthResBaggage 527 +#define OBJ_setct_AuthResBaggage OBJ_set_ctype,8L + +#define SN_setct_AuthRevReqBaggage "setct-AuthRevReqBaggage" +#define NID_setct_AuthRevReqBaggage 528 +#define OBJ_setct_AuthRevReqBaggage OBJ_set_ctype,9L + +#define SN_setct_AuthRevResBaggage "setct-AuthRevResBaggage" +#define NID_setct_AuthRevResBaggage 529 +#define OBJ_setct_AuthRevResBaggage OBJ_set_ctype,10L + +#define SN_setct_CapTokenSeq "setct-CapTokenSeq" +#define NID_setct_CapTokenSeq 530 +#define OBJ_setct_CapTokenSeq OBJ_set_ctype,11L + +#define SN_setct_PInitResData "setct-PInitResData" +#define NID_setct_PInitResData 531 +#define OBJ_setct_PInitResData OBJ_set_ctype,12L + +#define SN_setct_PI_TBS "setct-PI-TBS" +#define NID_setct_PI_TBS 532 +#define OBJ_setct_PI_TBS OBJ_set_ctype,13L + +#define SN_setct_PResData "setct-PResData" +#define NID_setct_PResData 533 +#define OBJ_setct_PResData OBJ_set_ctype,14L + +#define SN_setct_AuthReqTBS "setct-AuthReqTBS" +#define NID_setct_AuthReqTBS 534 +#define OBJ_setct_AuthReqTBS OBJ_set_ctype,16L + +#define SN_setct_AuthResTBS "setct-AuthResTBS" +#define NID_setct_AuthResTBS 535 +#define OBJ_setct_AuthResTBS OBJ_set_ctype,17L + +#define SN_setct_AuthResTBSX "setct-AuthResTBSX" +#define NID_setct_AuthResTBSX 536 +#define OBJ_setct_AuthResTBSX OBJ_set_ctype,18L + +#define SN_setct_AuthTokenTBS "setct-AuthTokenTBS" +#define NID_setct_AuthTokenTBS 537 +#define OBJ_setct_AuthTokenTBS OBJ_set_ctype,19L + +#define SN_setct_CapTokenData "setct-CapTokenData" +#define NID_setct_CapTokenData 538 +#define OBJ_setct_CapTokenData OBJ_set_ctype,20L + +#define SN_setct_CapTokenTBS "setct-CapTokenTBS" +#define NID_setct_CapTokenTBS 539 +#define OBJ_setct_CapTokenTBS OBJ_set_ctype,21L + +#define SN_setct_AcqCardCodeMsg "setct-AcqCardCodeMsg" +#define NID_setct_AcqCardCodeMsg 540 +#define OBJ_setct_AcqCardCodeMsg OBJ_set_ctype,22L + +#define SN_setct_AuthRevReqTBS "setct-AuthRevReqTBS" +#define NID_setct_AuthRevReqTBS 541 +#define OBJ_setct_AuthRevReqTBS OBJ_set_ctype,23L + +#define SN_setct_AuthRevResData "setct-AuthRevResData" +#define NID_setct_AuthRevResData 542 +#define OBJ_setct_AuthRevResData OBJ_set_ctype,24L + +#define SN_setct_AuthRevResTBS "setct-AuthRevResTBS" +#define NID_setct_AuthRevResTBS 543 +#define OBJ_setct_AuthRevResTBS OBJ_set_ctype,25L + +#define SN_setct_CapReqTBS "setct-CapReqTBS" +#define NID_setct_CapReqTBS 544 +#define OBJ_setct_CapReqTBS OBJ_set_ctype,26L + +#define SN_setct_CapReqTBSX "setct-CapReqTBSX" +#define NID_setct_CapReqTBSX 545 +#define OBJ_setct_CapReqTBSX OBJ_set_ctype,27L + +#define SN_setct_CapResData "setct-CapResData" +#define NID_setct_CapResData 546 +#define OBJ_setct_CapResData OBJ_set_ctype,28L + +#define SN_setct_CapRevReqTBS "setct-CapRevReqTBS" +#define NID_setct_CapRevReqTBS 547 +#define OBJ_setct_CapRevReqTBS OBJ_set_ctype,29L + +#define SN_setct_CapRevReqTBSX "setct-CapRevReqTBSX" +#define NID_setct_CapRevReqTBSX 548 +#define OBJ_setct_CapRevReqTBSX OBJ_set_ctype,30L + +#define SN_setct_CapRevResData "setct-CapRevResData" +#define NID_setct_CapRevResData 549 +#define OBJ_setct_CapRevResData OBJ_set_ctype,31L + +#define SN_setct_CredReqTBS "setct-CredReqTBS" +#define NID_setct_CredReqTBS 550 +#define OBJ_setct_CredReqTBS OBJ_set_ctype,32L + +#define SN_setct_CredReqTBSX "setct-CredReqTBSX" +#define NID_setct_CredReqTBSX 551 +#define OBJ_setct_CredReqTBSX OBJ_set_ctype,33L + +#define SN_setct_CredResData "setct-CredResData" +#define NID_setct_CredResData 552 +#define OBJ_setct_CredResData OBJ_set_ctype,34L + +#define SN_setct_CredRevReqTBS "setct-CredRevReqTBS" +#define NID_setct_CredRevReqTBS 553 +#define OBJ_setct_CredRevReqTBS OBJ_set_ctype,35L + +#define SN_setct_CredRevReqTBSX "setct-CredRevReqTBSX" +#define NID_setct_CredRevReqTBSX 554 +#define OBJ_setct_CredRevReqTBSX OBJ_set_ctype,36L + +#define SN_setct_CredRevResData "setct-CredRevResData" +#define NID_setct_CredRevResData 555 +#define OBJ_setct_CredRevResData OBJ_set_ctype,37L + +#define SN_setct_PCertReqData "setct-PCertReqData" +#define NID_setct_PCertReqData 556 +#define OBJ_setct_PCertReqData OBJ_set_ctype,38L + +#define SN_setct_PCertResTBS "setct-PCertResTBS" +#define NID_setct_PCertResTBS 557 +#define OBJ_setct_PCertResTBS OBJ_set_ctype,39L + +#define SN_setct_BatchAdminReqData "setct-BatchAdminReqData" +#define NID_setct_BatchAdminReqData 558 +#define OBJ_setct_BatchAdminReqData OBJ_set_ctype,40L + +#define SN_setct_BatchAdminResData "setct-BatchAdminResData" +#define NID_setct_BatchAdminResData 559 +#define OBJ_setct_BatchAdminResData OBJ_set_ctype,41L + +#define SN_setct_CardCInitResTBS "setct-CardCInitResTBS" +#define NID_setct_CardCInitResTBS 560 +#define OBJ_setct_CardCInitResTBS OBJ_set_ctype,42L + +#define SN_setct_MeAqCInitResTBS "setct-MeAqCInitResTBS" +#define NID_setct_MeAqCInitResTBS 561 +#define OBJ_setct_MeAqCInitResTBS OBJ_set_ctype,43L + +#define SN_setct_RegFormResTBS "setct-RegFormResTBS" +#define NID_setct_RegFormResTBS 562 +#define OBJ_setct_RegFormResTBS OBJ_set_ctype,44L + +#define SN_setct_CertReqData "setct-CertReqData" +#define NID_setct_CertReqData 563 +#define OBJ_setct_CertReqData OBJ_set_ctype,45L + +#define SN_setct_CertReqTBS "setct-CertReqTBS" +#define NID_setct_CertReqTBS 564 +#define OBJ_setct_CertReqTBS OBJ_set_ctype,46L + +#define SN_setct_CertResData "setct-CertResData" +#define NID_setct_CertResData 565 +#define OBJ_setct_CertResData OBJ_set_ctype,47L + +#define SN_setct_CertInqReqTBS "setct-CertInqReqTBS" +#define NID_setct_CertInqReqTBS 566 +#define OBJ_setct_CertInqReqTBS OBJ_set_ctype,48L + +#define SN_setct_ErrorTBS "setct-ErrorTBS" +#define NID_setct_ErrorTBS 567 +#define OBJ_setct_ErrorTBS OBJ_set_ctype,49L + +#define SN_setct_PIDualSignedTBE "setct-PIDualSignedTBE" +#define NID_setct_PIDualSignedTBE 568 +#define OBJ_setct_PIDualSignedTBE OBJ_set_ctype,50L + +#define SN_setct_PIUnsignedTBE "setct-PIUnsignedTBE" +#define NID_setct_PIUnsignedTBE 569 +#define OBJ_setct_PIUnsignedTBE OBJ_set_ctype,51L + +#define SN_setct_AuthReqTBE "setct-AuthReqTBE" +#define NID_setct_AuthReqTBE 570 +#define OBJ_setct_AuthReqTBE OBJ_set_ctype,52L + +#define SN_setct_AuthResTBE "setct-AuthResTBE" +#define NID_setct_AuthResTBE 571 +#define OBJ_setct_AuthResTBE OBJ_set_ctype,53L + +#define SN_setct_AuthResTBEX "setct-AuthResTBEX" +#define NID_setct_AuthResTBEX 572 +#define OBJ_setct_AuthResTBEX OBJ_set_ctype,54L + +#define SN_setct_AuthTokenTBE "setct-AuthTokenTBE" +#define NID_setct_AuthTokenTBE 573 +#define OBJ_setct_AuthTokenTBE OBJ_set_ctype,55L + +#define SN_setct_CapTokenTBE "setct-CapTokenTBE" +#define NID_setct_CapTokenTBE 574 +#define OBJ_setct_CapTokenTBE OBJ_set_ctype,56L + +#define SN_setct_CapTokenTBEX "setct-CapTokenTBEX" +#define NID_setct_CapTokenTBEX 575 +#define OBJ_setct_CapTokenTBEX OBJ_set_ctype,57L + +#define SN_setct_AcqCardCodeMsgTBE "setct-AcqCardCodeMsgTBE" +#define NID_setct_AcqCardCodeMsgTBE 576 +#define OBJ_setct_AcqCardCodeMsgTBE OBJ_set_ctype,58L + +#define SN_setct_AuthRevReqTBE "setct-AuthRevReqTBE" +#define NID_setct_AuthRevReqTBE 577 +#define OBJ_setct_AuthRevReqTBE OBJ_set_ctype,59L + +#define SN_setct_AuthRevResTBE "setct-AuthRevResTBE" +#define NID_setct_AuthRevResTBE 578 +#define OBJ_setct_AuthRevResTBE OBJ_set_ctype,60L + +#define SN_setct_AuthRevResTBEB "setct-AuthRevResTBEB" +#define NID_setct_AuthRevResTBEB 579 +#define OBJ_setct_AuthRevResTBEB OBJ_set_ctype,61L + +#define SN_setct_CapReqTBE "setct-CapReqTBE" +#define NID_setct_CapReqTBE 580 +#define OBJ_setct_CapReqTBE OBJ_set_ctype,62L + +#define SN_setct_CapReqTBEX "setct-CapReqTBEX" +#define NID_setct_CapReqTBEX 581 +#define OBJ_setct_CapReqTBEX OBJ_set_ctype,63L + +#define SN_setct_CapResTBE "setct-CapResTBE" +#define NID_setct_CapResTBE 582 +#define OBJ_setct_CapResTBE OBJ_set_ctype,64L + +#define SN_setct_CapRevReqTBE "setct-CapRevReqTBE" +#define NID_setct_CapRevReqTBE 583 +#define OBJ_setct_CapRevReqTBE OBJ_set_ctype,65L + +#define SN_setct_CapRevReqTBEX "setct-CapRevReqTBEX" +#define NID_setct_CapRevReqTBEX 584 +#define OBJ_setct_CapRevReqTBEX OBJ_set_ctype,66L + +#define SN_setct_CapRevResTBE "setct-CapRevResTBE" +#define NID_setct_CapRevResTBE 585 +#define OBJ_setct_CapRevResTBE OBJ_set_ctype,67L + +#define SN_setct_CredReqTBE "setct-CredReqTBE" +#define NID_setct_CredReqTBE 586 +#define OBJ_setct_CredReqTBE OBJ_set_ctype,68L + +#define SN_setct_CredReqTBEX "setct-CredReqTBEX" +#define NID_setct_CredReqTBEX 587 +#define OBJ_setct_CredReqTBEX OBJ_set_ctype,69L + +#define SN_setct_CredResTBE "setct-CredResTBE" +#define NID_setct_CredResTBE 588 +#define OBJ_setct_CredResTBE OBJ_set_ctype,70L + +#define SN_setct_CredRevReqTBE "setct-CredRevReqTBE" +#define NID_setct_CredRevReqTBE 589 +#define OBJ_setct_CredRevReqTBE OBJ_set_ctype,71L + +#define SN_setct_CredRevReqTBEX "setct-CredRevReqTBEX" +#define NID_setct_CredRevReqTBEX 590 +#define OBJ_setct_CredRevReqTBEX OBJ_set_ctype,72L + +#define SN_setct_CredRevResTBE "setct-CredRevResTBE" +#define NID_setct_CredRevResTBE 591 +#define OBJ_setct_CredRevResTBE OBJ_set_ctype,73L + +#define SN_setct_BatchAdminReqTBE "setct-BatchAdminReqTBE" +#define NID_setct_BatchAdminReqTBE 592 +#define OBJ_setct_BatchAdminReqTBE OBJ_set_ctype,74L + +#define SN_setct_BatchAdminResTBE "setct-BatchAdminResTBE" +#define NID_setct_BatchAdminResTBE 593 +#define OBJ_setct_BatchAdminResTBE OBJ_set_ctype,75L + +#define SN_setct_RegFormReqTBE "setct-RegFormReqTBE" +#define NID_setct_RegFormReqTBE 594 +#define OBJ_setct_RegFormReqTBE OBJ_set_ctype,76L + +#define SN_setct_CertReqTBE "setct-CertReqTBE" +#define NID_setct_CertReqTBE 595 +#define OBJ_setct_CertReqTBE OBJ_set_ctype,77L + +#define SN_setct_CertReqTBEX "setct-CertReqTBEX" +#define NID_setct_CertReqTBEX 596 +#define OBJ_setct_CertReqTBEX OBJ_set_ctype,78L + +#define SN_setct_CertResTBE "setct-CertResTBE" +#define NID_setct_CertResTBE 597 +#define OBJ_setct_CertResTBE OBJ_set_ctype,79L + +#define SN_setct_CRLNotificationTBS "setct-CRLNotificationTBS" +#define NID_setct_CRLNotificationTBS 598 +#define OBJ_setct_CRLNotificationTBS OBJ_set_ctype,80L + +#define SN_setct_CRLNotificationResTBS "setct-CRLNotificationResTBS" +#define NID_setct_CRLNotificationResTBS 599 +#define OBJ_setct_CRLNotificationResTBS OBJ_set_ctype,81L + +#define SN_setct_BCIDistributionTBS "setct-BCIDistributionTBS" +#define NID_setct_BCIDistributionTBS 600 +#define OBJ_setct_BCIDistributionTBS OBJ_set_ctype,82L + +#define SN_setext_genCrypt "setext-genCrypt" +#define LN_setext_genCrypt "generic cryptogram" +#define NID_setext_genCrypt 601 +#define OBJ_setext_genCrypt OBJ_set_msgExt,1L + +#define SN_setext_miAuth "setext-miAuth" +#define LN_setext_miAuth "merchant initiated auth" +#define NID_setext_miAuth 602 +#define OBJ_setext_miAuth OBJ_set_msgExt,3L + +#define SN_setext_pinSecure "setext-pinSecure" +#define NID_setext_pinSecure 603 +#define OBJ_setext_pinSecure OBJ_set_msgExt,4L + +#define SN_setext_pinAny "setext-pinAny" +#define NID_setext_pinAny 604 +#define OBJ_setext_pinAny OBJ_set_msgExt,5L + +#define SN_setext_track2 "setext-track2" +#define NID_setext_track2 605 +#define OBJ_setext_track2 OBJ_set_msgExt,7L + +#define SN_setext_cv "setext-cv" +#define LN_setext_cv "additional verification" +#define NID_setext_cv 606 +#define OBJ_setext_cv OBJ_set_msgExt,8L + +#define SN_set_policy_root "set-policy-root" +#define NID_set_policy_root 607 +#define OBJ_set_policy_root OBJ_set_policy,0L + +#define SN_setCext_hashedRoot "setCext-hashedRoot" +#define NID_setCext_hashedRoot 608 +#define OBJ_setCext_hashedRoot OBJ_set_certExt,0L + +#define SN_setCext_certType "setCext-certType" +#define NID_setCext_certType 609 +#define OBJ_setCext_certType OBJ_set_certExt,1L + +#define SN_setCext_merchData "setCext-merchData" +#define NID_setCext_merchData 610 +#define OBJ_setCext_merchData OBJ_set_certExt,2L + +#define SN_setCext_cCertRequired "setCext-cCertRequired" +#define NID_setCext_cCertRequired 611 +#define OBJ_setCext_cCertRequired OBJ_set_certExt,3L + +#define SN_setCext_tunneling "setCext-tunneling" +#define NID_setCext_tunneling 612 +#define OBJ_setCext_tunneling OBJ_set_certExt,4L + +#define SN_setCext_setExt "setCext-setExt" +#define NID_setCext_setExt 613 +#define OBJ_setCext_setExt OBJ_set_certExt,5L + +#define SN_setCext_setQualf "setCext-setQualf" +#define NID_setCext_setQualf 614 +#define OBJ_setCext_setQualf OBJ_set_certExt,6L + +#define SN_setCext_PGWYcapabilities "setCext-PGWYcapabilities" +#define NID_setCext_PGWYcapabilities 615 +#define OBJ_setCext_PGWYcapabilities OBJ_set_certExt,7L + +#define SN_setCext_TokenIdentifier "setCext-TokenIdentifier" +#define NID_setCext_TokenIdentifier 616 +#define OBJ_setCext_TokenIdentifier OBJ_set_certExt,8L + +#define SN_setCext_Track2Data "setCext-Track2Data" +#define NID_setCext_Track2Data 617 +#define OBJ_setCext_Track2Data OBJ_set_certExt,9L + +#define SN_setCext_TokenType "setCext-TokenType" +#define NID_setCext_TokenType 618 +#define OBJ_setCext_TokenType OBJ_set_certExt,10L + +#define SN_setCext_IssuerCapabilities "setCext-IssuerCapabilities" +#define NID_setCext_IssuerCapabilities 619 +#define OBJ_setCext_IssuerCapabilities OBJ_set_certExt,11L + +#define SN_setAttr_Cert "setAttr-Cert" +#define NID_setAttr_Cert 620 +#define OBJ_setAttr_Cert OBJ_set_attr,0L + +#define SN_setAttr_PGWYcap "setAttr-PGWYcap" +#define LN_setAttr_PGWYcap "payment gateway capabilities" +#define NID_setAttr_PGWYcap 621 +#define OBJ_setAttr_PGWYcap OBJ_set_attr,1L + +#define SN_setAttr_TokenType "setAttr-TokenType" +#define NID_setAttr_TokenType 622 +#define OBJ_setAttr_TokenType OBJ_set_attr,2L + +#define SN_setAttr_IssCap "setAttr-IssCap" +#define LN_setAttr_IssCap "issuer capabilities" +#define NID_setAttr_IssCap 623 +#define OBJ_setAttr_IssCap OBJ_set_attr,3L + +#define SN_set_rootKeyThumb "set-rootKeyThumb" +#define NID_set_rootKeyThumb 624 +#define OBJ_set_rootKeyThumb OBJ_setAttr_Cert,0L + +#define SN_set_addPolicy "set-addPolicy" +#define NID_set_addPolicy 625 +#define OBJ_set_addPolicy OBJ_setAttr_Cert,1L + +#define SN_setAttr_Token_EMV "setAttr-Token-EMV" +#define NID_setAttr_Token_EMV 626 +#define OBJ_setAttr_Token_EMV OBJ_setAttr_TokenType,1L + +#define SN_setAttr_Token_B0Prime "setAttr-Token-B0Prime" +#define NID_setAttr_Token_B0Prime 627 +#define OBJ_setAttr_Token_B0Prime OBJ_setAttr_TokenType,2L + +#define SN_setAttr_IssCap_CVM "setAttr-IssCap-CVM" +#define NID_setAttr_IssCap_CVM 628 +#define OBJ_setAttr_IssCap_CVM OBJ_setAttr_IssCap,3L + +#define SN_setAttr_IssCap_T2 "setAttr-IssCap-T2" +#define NID_setAttr_IssCap_T2 629 +#define OBJ_setAttr_IssCap_T2 OBJ_setAttr_IssCap,4L + +#define SN_setAttr_IssCap_Sig "setAttr-IssCap-Sig" +#define NID_setAttr_IssCap_Sig 630 +#define OBJ_setAttr_IssCap_Sig OBJ_setAttr_IssCap,5L + +#define SN_setAttr_GenCryptgrm "setAttr-GenCryptgrm" +#define LN_setAttr_GenCryptgrm "generate cryptogram" +#define NID_setAttr_GenCryptgrm 631 +#define OBJ_setAttr_GenCryptgrm OBJ_setAttr_IssCap_CVM,1L + +#define SN_setAttr_T2Enc "setAttr-T2Enc" +#define LN_setAttr_T2Enc "encrypted track 2" +#define NID_setAttr_T2Enc 632 +#define OBJ_setAttr_T2Enc OBJ_setAttr_IssCap_T2,1L + +#define SN_setAttr_T2cleartxt "setAttr-T2cleartxt" +#define LN_setAttr_T2cleartxt "cleartext track 2" +#define NID_setAttr_T2cleartxt 633 +#define OBJ_setAttr_T2cleartxt OBJ_setAttr_IssCap_T2,2L + +#define SN_setAttr_TokICCsig "setAttr-TokICCsig" +#define LN_setAttr_TokICCsig "ICC or token signature" +#define NID_setAttr_TokICCsig 634 +#define OBJ_setAttr_TokICCsig OBJ_setAttr_IssCap_Sig,1L + +#define SN_setAttr_SecDevSig "setAttr-SecDevSig" +#define LN_setAttr_SecDevSig "secure device signature" +#define NID_setAttr_SecDevSig 635 +#define OBJ_setAttr_SecDevSig OBJ_setAttr_IssCap_Sig,2L + +#define SN_set_brand_IATA_ATA "set-brand-IATA-ATA" +#define NID_set_brand_IATA_ATA 636 +#define OBJ_set_brand_IATA_ATA OBJ_set_brand,1L + +#define SN_set_brand_Diners "set-brand-Diners" +#define NID_set_brand_Diners 637 +#define OBJ_set_brand_Diners OBJ_set_brand,30L + +#define SN_set_brand_AmericanExpress "set-brand-AmericanExpress" +#define NID_set_brand_AmericanExpress 638 +#define OBJ_set_brand_AmericanExpress OBJ_set_brand,34L + +#define SN_set_brand_JCB "set-brand-JCB" +#define NID_set_brand_JCB 639 +#define OBJ_set_brand_JCB OBJ_set_brand,35L + +#define SN_set_brand_Visa "set-brand-Visa" +#define NID_set_brand_Visa 640 +#define OBJ_set_brand_Visa OBJ_set_brand,4L + +#define SN_set_brand_MasterCard "set-brand-MasterCard" +#define NID_set_brand_MasterCard 641 +#define OBJ_set_brand_MasterCard OBJ_set_brand,5L + +#define SN_set_brand_Novus "set-brand-Novus" +#define NID_set_brand_Novus 642 +#define OBJ_set_brand_Novus OBJ_set_brand,6011L + +#define SN_des_cdmf "DES-CDMF" +#define LN_des_cdmf "des-cdmf" +#define NID_des_cdmf 643 +#define OBJ_des_cdmf OBJ_rsadsi,3L,10L + +#define SN_rsaOAEPEncryptionSET "rsaOAEPEncryptionSET" +#define NID_rsaOAEPEncryptionSET 644 +#define OBJ_rsaOAEPEncryptionSET OBJ_rsadsi,1L,1L,6L + +#define SN_ipsec3 "Oakley-EC2N-3" +#define LN_ipsec3 "ipsec3" +#define NID_ipsec3 749 + +#define SN_ipsec4 "Oakley-EC2N-4" +#define LN_ipsec4 "ipsec4" +#define NID_ipsec4 750 + +#define SN_whirlpool "whirlpool" +#define NID_whirlpool 804 +#define OBJ_whirlpool OBJ_iso,0L,10118L,3L,0L,55L + +#define SN_cryptopro "cryptopro" +#define NID_cryptopro 805 +#define OBJ_cryptopro OBJ_member_body,643L,2L,2L + +#define SN_cryptocom "cryptocom" +#define NID_cryptocom 806 +#define OBJ_cryptocom OBJ_member_body,643L,2L,9L + +#define SN_id_tc26 "id-tc26" +#define NID_id_tc26 974 +#define OBJ_id_tc26 OBJ_member_body,643L,7L,1L + +#define SN_id_GostR3411_94_with_GostR3410_2001 "id-GostR3411-94-with-GostR3410-2001" +#define LN_id_GostR3411_94_with_GostR3410_2001 "GOST R 34.11-94 with GOST R 34.10-2001" +#define NID_id_GostR3411_94_with_GostR3410_2001 807 +#define OBJ_id_GostR3411_94_with_GostR3410_2001 OBJ_cryptopro,3L + +#define SN_id_GostR3411_94_with_GostR3410_94 "id-GostR3411-94-with-GostR3410-94" +#define LN_id_GostR3411_94_with_GostR3410_94 "GOST R 34.11-94 with GOST R 34.10-94" +#define NID_id_GostR3411_94_with_GostR3410_94 808 +#define OBJ_id_GostR3411_94_with_GostR3410_94 OBJ_cryptopro,4L + +#define SN_id_GostR3411_94 "md_gost94" +#define LN_id_GostR3411_94 "GOST R 34.11-94" +#define NID_id_GostR3411_94 809 +#define OBJ_id_GostR3411_94 OBJ_cryptopro,9L + +#define SN_id_HMACGostR3411_94 "id-HMACGostR3411-94" +#define LN_id_HMACGostR3411_94 "HMAC GOST 34.11-94" +#define NID_id_HMACGostR3411_94 810 +#define OBJ_id_HMACGostR3411_94 OBJ_cryptopro,10L + +#define SN_id_GostR3410_2001 "gost2001" +#define LN_id_GostR3410_2001 "GOST R 34.10-2001" +#define NID_id_GostR3410_2001 811 +#define OBJ_id_GostR3410_2001 OBJ_cryptopro,19L + +#define SN_id_GostR3410_94 "gost94" +#define LN_id_GostR3410_94 "GOST R 34.10-94" +#define NID_id_GostR3410_94 812 +#define OBJ_id_GostR3410_94 OBJ_cryptopro,20L + +#define SN_id_Gost28147_89 "gost89" +#define LN_id_Gost28147_89 "GOST 28147-89" +#define NID_id_Gost28147_89 813 +#define OBJ_id_Gost28147_89 OBJ_cryptopro,21L + +#define SN_gost89_cnt "gost89-cnt" +#define NID_gost89_cnt 814 + +#define SN_gost89_cnt_12 "gost89-cnt-12" +#define NID_gost89_cnt_12 975 + +#define SN_gost89_cbc "gost89-cbc" +#define NID_gost89_cbc 1009 + +#define SN_gost89_ecb "gost89-ecb" +#define NID_gost89_ecb 1010 + +#define SN_gost89_ctr "gost89-ctr" +#define NID_gost89_ctr 1011 + +#define SN_id_Gost28147_89_MAC "gost-mac" +#define LN_id_Gost28147_89_MAC "GOST 28147-89 MAC" +#define NID_id_Gost28147_89_MAC 815 +#define OBJ_id_Gost28147_89_MAC OBJ_cryptopro,22L + +#define SN_gost_mac_12 "gost-mac-12" +#define NID_gost_mac_12 976 + +#define SN_id_GostR3411_94_prf "prf-gostr3411-94" +#define LN_id_GostR3411_94_prf "GOST R 34.11-94 PRF" +#define NID_id_GostR3411_94_prf 816 +#define OBJ_id_GostR3411_94_prf OBJ_cryptopro,23L + +#define SN_id_GostR3410_2001DH "id-GostR3410-2001DH" +#define LN_id_GostR3410_2001DH "GOST R 34.10-2001 DH" +#define NID_id_GostR3410_2001DH 817 +#define OBJ_id_GostR3410_2001DH OBJ_cryptopro,98L + +#define SN_id_GostR3410_94DH "id-GostR3410-94DH" +#define LN_id_GostR3410_94DH "GOST R 34.10-94 DH" +#define NID_id_GostR3410_94DH 818 +#define OBJ_id_GostR3410_94DH OBJ_cryptopro,99L + +#define SN_id_Gost28147_89_CryptoPro_KeyMeshing "id-Gost28147-89-CryptoPro-KeyMeshing" +#define NID_id_Gost28147_89_CryptoPro_KeyMeshing 819 +#define OBJ_id_Gost28147_89_CryptoPro_KeyMeshing OBJ_cryptopro,14L,1L + +#define SN_id_Gost28147_89_None_KeyMeshing "id-Gost28147-89-None-KeyMeshing" +#define NID_id_Gost28147_89_None_KeyMeshing 820 +#define OBJ_id_Gost28147_89_None_KeyMeshing OBJ_cryptopro,14L,0L + +#define SN_id_GostR3411_94_TestParamSet "id-GostR3411-94-TestParamSet" +#define NID_id_GostR3411_94_TestParamSet 821 +#define OBJ_id_GostR3411_94_TestParamSet OBJ_cryptopro,30L,0L + +#define SN_id_GostR3411_94_CryptoProParamSet "id-GostR3411-94-CryptoProParamSet" +#define NID_id_GostR3411_94_CryptoProParamSet 822 +#define OBJ_id_GostR3411_94_CryptoProParamSet OBJ_cryptopro,30L,1L + +#define SN_id_Gost28147_89_TestParamSet "id-Gost28147-89-TestParamSet" +#define NID_id_Gost28147_89_TestParamSet 823 +#define OBJ_id_Gost28147_89_TestParamSet OBJ_cryptopro,31L,0L + +#define SN_id_Gost28147_89_CryptoPro_A_ParamSet "id-Gost28147-89-CryptoPro-A-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_A_ParamSet 824 +#define OBJ_id_Gost28147_89_CryptoPro_A_ParamSet OBJ_cryptopro,31L,1L + +#define SN_id_Gost28147_89_CryptoPro_B_ParamSet "id-Gost28147-89-CryptoPro-B-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_B_ParamSet 825 +#define OBJ_id_Gost28147_89_CryptoPro_B_ParamSet OBJ_cryptopro,31L,2L + +#define SN_id_Gost28147_89_CryptoPro_C_ParamSet "id-Gost28147-89-CryptoPro-C-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_C_ParamSet 826 +#define OBJ_id_Gost28147_89_CryptoPro_C_ParamSet OBJ_cryptopro,31L,3L + +#define SN_id_Gost28147_89_CryptoPro_D_ParamSet "id-Gost28147-89-CryptoPro-D-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_D_ParamSet 827 +#define OBJ_id_Gost28147_89_CryptoPro_D_ParamSet OBJ_cryptopro,31L,4L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 828 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet OBJ_cryptopro,31L,5L + +#define SN_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 829 +#define OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet OBJ_cryptopro,31L,6L + +#define SN_id_Gost28147_89_CryptoPro_RIC_1_ParamSet "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" +#define NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 830 +#define OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet OBJ_cryptopro,31L,7L + +#define SN_id_GostR3410_94_TestParamSet "id-GostR3410-94-TestParamSet" +#define NID_id_GostR3410_94_TestParamSet 831 +#define OBJ_id_GostR3410_94_TestParamSet OBJ_cryptopro,32L,0L + +#define SN_id_GostR3410_94_CryptoPro_A_ParamSet "id-GostR3410-94-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_A_ParamSet 832 +#define OBJ_id_GostR3410_94_CryptoPro_A_ParamSet OBJ_cryptopro,32L,2L + +#define SN_id_GostR3410_94_CryptoPro_B_ParamSet "id-GostR3410-94-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_B_ParamSet 833 +#define OBJ_id_GostR3410_94_CryptoPro_B_ParamSet OBJ_cryptopro,32L,3L + +#define SN_id_GostR3410_94_CryptoPro_C_ParamSet "id-GostR3410-94-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_C_ParamSet 834 +#define OBJ_id_GostR3410_94_CryptoPro_C_ParamSet OBJ_cryptopro,32L,4L + +#define SN_id_GostR3410_94_CryptoPro_D_ParamSet "id-GostR3410-94-CryptoPro-D-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_D_ParamSet 835 +#define OBJ_id_GostR3410_94_CryptoPro_D_ParamSet OBJ_cryptopro,32L,5L + +#define SN_id_GostR3410_94_CryptoPro_XchA_ParamSet "id-GostR3410-94-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchA_ParamSet 836 +#define OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet OBJ_cryptopro,33L,1L + +#define SN_id_GostR3410_94_CryptoPro_XchB_ParamSet "id-GostR3410-94-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchB_ParamSet 837 +#define OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet OBJ_cryptopro,33L,2L + +#define SN_id_GostR3410_94_CryptoPro_XchC_ParamSet "id-GostR3410-94-CryptoPro-XchC-ParamSet" +#define NID_id_GostR3410_94_CryptoPro_XchC_ParamSet 838 +#define OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet OBJ_cryptopro,33L,3L + +#define SN_id_GostR3410_2001_TestParamSet "id-GostR3410-2001-TestParamSet" +#define NID_id_GostR3410_2001_TestParamSet 839 +#define OBJ_id_GostR3410_2001_TestParamSet OBJ_cryptopro,35L,0L + +#define SN_id_GostR3410_2001_CryptoPro_A_ParamSet "id-GostR3410-2001-CryptoPro-A-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_A_ParamSet 840 +#define OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet OBJ_cryptopro,35L,1L + +#define SN_id_GostR3410_2001_CryptoPro_B_ParamSet "id-GostR3410-2001-CryptoPro-B-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_B_ParamSet 841 +#define OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet OBJ_cryptopro,35L,2L + +#define SN_id_GostR3410_2001_CryptoPro_C_ParamSet "id-GostR3410-2001-CryptoPro-C-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_C_ParamSet 842 +#define OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet OBJ_cryptopro,35L,3L + +#define SN_id_GostR3410_2001_CryptoPro_XchA_ParamSet "id-GostR3410-2001-CryptoPro-XchA-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet 843 +#define OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet OBJ_cryptopro,36L,0L + +#define SN_id_GostR3410_2001_CryptoPro_XchB_ParamSet "id-GostR3410-2001-CryptoPro-XchB-ParamSet" +#define NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet 844 +#define OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet OBJ_cryptopro,36L,1L + +#define SN_id_GostR3410_94_a "id-GostR3410-94-a" +#define NID_id_GostR3410_94_a 845 +#define OBJ_id_GostR3410_94_a OBJ_id_GostR3410_94,1L + +#define SN_id_GostR3410_94_aBis "id-GostR3410-94-aBis" +#define NID_id_GostR3410_94_aBis 846 +#define OBJ_id_GostR3410_94_aBis OBJ_id_GostR3410_94,2L + +#define SN_id_GostR3410_94_b "id-GostR3410-94-b" +#define NID_id_GostR3410_94_b 847 +#define OBJ_id_GostR3410_94_b OBJ_id_GostR3410_94,3L + +#define SN_id_GostR3410_94_bBis "id-GostR3410-94-bBis" +#define NID_id_GostR3410_94_bBis 848 +#define OBJ_id_GostR3410_94_bBis OBJ_id_GostR3410_94,4L + +#define SN_id_Gost28147_89_cc "id-Gost28147-89-cc" +#define LN_id_Gost28147_89_cc "GOST 28147-89 Cryptocom ParamSet" +#define NID_id_Gost28147_89_cc 849 +#define OBJ_id_Gost28147_89_cc OBJ_cryptocom,1L,6L,1L + +#define SN_id_GostR3410_94_cc "gost94cc" +#define LN_id_GostR3410_94_cc "GOST 34.10-94 Cryptocom" +#define NID_id_GostR3410_94_cc 850 +#define OBJ_id_GostR3410_94_cc OBJ_cryptocom,1L,5L,3L + +#define SN_id_GostR3410_2001_cc "gost2001cc" +#define LN_id_GostR3410_2001_cc "GOST 34.10-2001 Cryptocom" +#define NID_id_GostR3410_2001_cc 851 +#define OBJ_id_GostR3410_2001_cc OBJ_cryptocom,1L,5L,4L + +#define SN_id_GostR3411_94_with_GostR3410_94_cc "id-GostR3411-94-with-GostR3410-94-cc" +#define LN_id_GostR3411_94_with_GostR3410_94_cc "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_94_cc 852 +#define OBJ_id_GostR3411_94_with_GostR3410_94_cc OBJ_cryptocom,1L,3L,3L + +#define SN_id_GostR3411_94_with_GostR3410_2001_cc "id-GostR3411-94-with-GostR3410-2001-cc" +#define LN_id_GostR3411_94_with_GostR3410_2001_cc "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" +#define NID_id_GostR3411_94_with_GostR3410_2001_cc 853 +#define OBJ_id_GostR3411_94_with_GostR3410_2001_cc OBJ_cryptocom,1L,3L,4L + +#define SN_id_GostR3410_2001_ParamSet_cc "id-GostR3410-2001-ParamSet-cc" +#define LN_id_GostR3410_2001_ParamSet_cc "GOST R 3410-2001 Parameter Set Cryptocom" +#define NID_id_GostR3410_2001_ParamSet_cc 854 +#define OBJ_id_GostR3410_2001_ParamSet_cc OBJ_cryptocom,1L,8L,1L + +#define SN_id_tc26_algorithms "id-tc26-algorithms" +#define NID_id_tc26_algorithms 977 +#define OBJ_id_tc26_algorithms OBJ_id_tc26,1L + +#define SN_id_tc26_sign "id-tc26-sign" +#define NID_id_tc26_sign 978 +#define OBJ_id_tc26_sign OBJ_id_tc26_algorithms,1L + +#define SN_id_GostR3410_2012_256 "gost2012_256" +#define LN_id_GostR3410_2012_256 "GOST R 34.10-2012 with 256 bit modulus" +#define NID_id_GostR3410_2012_256 979 +#define OBJ_id_GostR3410_2012_256 OBJ_id_tc26_sign,1L + +#define SN_id_GostR3410_2012_512 "gost2012_512" +#define LN_id_GostR3410_2012_512 "GOST R 34.10-2012 with 512 bit modulus" +#define NID_id_GostR3410_2012_512 980 +#define OBJ_id_GostR3410_2012_512 OBJ_id_tc26_sign,2L + +#define SN_id_tc26_digest "id-tc26-digest" +#define NID_id_tc26_digest 981 +#define OBJ_id_tc26_digest OBJ_id_tc26_algorithms,2L + +#define SN_id_GostR3411_2012_256 "md_gost12_256" +#define LN_id_GostR3411_2012_256 "GOST R 34.11-2012 with 256 bit hash" +#define NID_id_GostR3411_2012_256 982 +#define OBJ_id_GostR3411_2012_256 OBJ_id_tc26_digest,2L + +#define SN_id_GostR3411_2012_512 "md_gost12_512" +#define LN_id_GostR3411_2012_512 "GOST R 34.11-2012 with 512 bit hash" +#define NID_id_GostR3411_2012_512 983 +#define OBJ_id_GostR3411_2012_512 OBJ_id_tc26_digest,3L + +#define SN_id_tc26_signwithdigest "id-tc26-signwithdigest" +#define NID_id_tc26_signwithdigest 984 +#define OBJ_id_tc26_signwithdigest OBJ_id_tc26_algorithms,3L + +#define SN_id_tc26_signwithdigest_gost3410_2012_256 "id-tc26-signwithdigest-gost3410-2012-256" +#define LN_id_tc26_signwithdigest_gost3410_2012_256 "GOST R 34.10-2012 with GOST R 34.11-2012 (256 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_256 985 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_256 OBJ_id_tc26_signwithdigest,2L + +#define SN_id_tc26_signwithdigest_gost3410_2012_512 "id-tc26-signwithdigest-gost3410-2012-512" +#define LN_id_tc26_signwithdigest_gost3410_2012_512 "GOST R 34.10-2012 with GOST R 34.11-2012 (512 bit)" +#define NID_id_tc26_signwithdigest_gost3410_2012_512 986 +#define OBJ_id_tc26_signwithdigest_gost3410_2012_512 OBJ_id_tc26_signwithdigest,3L + +#define SN_id_tc26_mac "id-tc26-mac" +#define NID_id_tc26_mac 987 +#define OBJ_id_tc26_mac OBJ_id_tc26_algorithms,4L + +#define SN_id_tc26_hmac_gost_3411_2012_256 "id-tc26-hmac-gost-3411-2012-256" +#define LN_id_tc26_hmac_gost_3411_2012_256 "HMAC GOST 34.11-2012 256 bit" +#define NID_id_tc26_hmac_gost_3411_2012_256 988 +#define OBJ_id_tc26_hmac_gost_3411_2012_256 OBJ_id_tc26_mac,1L + +#define SN_id_tc26_hmac_gost_3411_2012_512 "id-tc26-hmac-gost-3411-2012-512" +#define LN_id_tc26_hmac_gost_3411_2012_512 "HMAC GOST 34.11-2012 512 bit" +#define NID_id_tc26_hmac_gost_3411_2012_512 989 +#define OBJ_id_tc26_hmac_gost_3411_2012_512 OBJ_id_tc26_mac,2L + +#define SN_id_tc26_cipher "id-tc26-cipher" +#define NID_id_tc26_cipher 990 +#define OBJ_id_tc26_cipher OBJ_id_tc26_algorithms,5L + +#define SN_id_tc26_cipher_gostr3412_2015_magma "id-tc26-cipher-gostr3412-2015-magma" +#define NID_id_tc26_cipher_gostr3412_2015_magma 1173 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma OBJ_id_tc26_cipher,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm "id-tc26-cipher-gostr3412-2015-magma-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm 1174 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_magma,1L + +#define SN_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-magma-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac 1175 +#define OBJ_id_tc26_cipher_gostr3412_2015_magma_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_magma,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik "id-tc26-cipher-gostr3412-2015-kuznyechik" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik 1176 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik OBJ_id_tc26_cipher,2L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm 1177 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac "id-tc26-cipher-gostr3412-2015-kuznyechik-ctracpkm-omac" +#define NID_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac 1178 +#define OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik_ctracpkm_omac OBJ_id_tc26_cipher_gostr3412_2015_kuznyechik,2L + +#define SN_id_tc26_agreement "id-tc26-agreement" +#define NID_id_tc26_agreement 991 +#define OBJ_id_tc26_agreement OBJ_id_tc26_algorithms,6L + +#define SN_id_tc26_agreement_gost_3410_2012_256 "id-tc26-agreement-gost-3410-2012-256" +#define NID_id_tc26_agreement_gost_3410_2012_256 992 +#define OBJ_id_tc26_agreement_gost_3410_2012_256 OBJ_id_tc26_agreement,1L + +#define SN_id_tc26_agreement_gost_3410_2012_512 "id-tc26-agreement-gost-3410-2012-512" +#define NID_id_tc26_agreement_gost_3410_2012_512 993 +#define OBJ_id_tc26_agreement_gost_3410_2012_512 OBJ_id_tc26_agreement,2L + +#define SN_id_tc26_wrap "id-tc26-wrap" +#define NID_id_tc26_wrap 1179 +#define OBJ_id_tc26_wrap OBJ_id_tc26_algorithms,7L + +#define SN_id_tc26_wrap_gostr3412_2015_magma "id-tc26-wrap-gostr3412-2015-magma" +#define NID_id_tc26_wrap_gostr3412_2015_magma 1180 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma OBJ_id_tc26_wrap,1L + +#define SN_id_tc26_wrap_gostr3412_2015_magma_kexp15 "id-tc26-wrap-gostr3412-2015-magma-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_magma_kexp15 1181 +#define OBJ_id_tc26_wrap_gostr3412_2015_magma_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_magma,1L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik "id-tc26-wrap-gostr3412-2015-kuznyechik" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik 1182 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik OBJ_id_tc26_wrap,2L + +#define SN_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 "id-tc26-wrap-gostr3412-2015-kuznyechik-kexp15" +#define NID_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 1183 +#define OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik_kexp15 OBJ_id_tc26_wrap_gostr3412_2015_kuznyechik,1L + +#define SN_id_tc26_constants "id-tc26-constants" +#define NID_id_tc26_constants 994 +#define OBJ_id_tc26_constants OBJ_id_tc26,2L + +#define SN_id_tc26_sign_constants "id-tc26-sign-constants" +#define NID_id_tc26_sign_constants 995 +#define OBJ_id_tc26_sign_constants OBJ_id_tc26_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_constants "id-tc26-gost-3410-2012-256-constants" +#define NID_id_tc26_gost_3410_2012_256_constants 1147 +#define OBJ_id_tc26_gost_3410_2012_256_constants OBJ_id_tc26_sign_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetA "id-tc26-gost-3410-2012-256-paramSetA" +#define LN_id_tc26_gost_3410_2012_256_paramSetA "GOST R 34.10-2012 (256 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_256_paramSetA 1148 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetA OBJ_id_tc26_gost_3410_2012_256_constants,1L + +#define SN_id_tc26_gost_3410_2012_256_paramSetB "id-tc26-gost-3410-2012-256-paramSetB" +#define LN_id_tc26_gost_3410_2012_256_paramSetB "GOST R 34.10-2012 (256 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_256_paramSetB 1184 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetB OBJ_id_tc26_gost_3410_2012_256_constants,2L + +#define SN_id_tc26_gost_3410_2012_256_paramSetC "id-tc26-gost-3410-2012-256-paramSetC" +#define LN_id_tc26_gost_3410_2012_256_paramSetC "GOST R 34.10-2012 (256 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_256_paramSetC 1185 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetC OBJ_id_tc26_gost_3410_2012_256_constants,3L + +#define SN_id_tc26_gost_3410_2012_256_paramSetD "id-tc26-gost-3410-2012-256-paramSetD" +#define LN_id_tc26_gost_3410_2012_256_paramSetD "GOST R 34.10-2012 (256 bit) ParamSet D" +#define NID_id_tc26_gost_3410_2012_256_paramSetD 1186 +#define OBJ_id_tc26_gost_3410_2012_256_paramSetD OBJ_id_tc26_gost_3410_2012_256_constants,4L + +#define SN_id_tc26_gost_3410_2012_512_constants "id-tc26-gost-3410-2012-512-constants" +#define NID_id_tc26_gost_3410_2012_512_constants 996 +#define OBJ_id_tc26_gost_3410_2012_512_constants OBJ_id_tc26_sign_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetTest "id-tc26-gost-3410-2012-512-paramSetTest" +#define LN_id_tc26_gost_3410_2012_512_paramSetTest "GOST R 34.10-2012 (512 bit) testing parameter set" +#define NID_id_tc26_gost_3410_2012_512_paramSetTest 997 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetTest OBJ_id_tc26_gost_3410_2012_512_constants,0L + +#define SN_id_tc26_gost_3410_2012_512_paramSetA "id-tc26-gost-3410-2012-512-paramSetA" +#define LN_id_tc26_gost_3410_2012_512_paramSetA "GOST R 34.10-2012 (512 bit) ParamSet A" +#define NID_id_tc26_gost_3410_2012_512_paramSetA 998 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetA OBJ_id_tc26_gost_3410_2012_512_constants,1L + +#define SN_id_tc26_gost_3410_2012_512_paramSetB "id-tc26-gost-3410-2012-512-paramSetB" +#define LN_id_tc26_gost_3410_2012_512_paramSetB "GOST R 34.10-2012 (512 bit) ParamSet B" +#define NID_id_tc26_gost_3410_2012_512_paramSetB 999 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetB OBJ_id_tc26_gost_3410_2012_512_constants,2L + +#define SN_id_tc26_gost_3410_2012_512_paramSetC "id-tc26-gost-3410-2012-512-paramSetC" +#define LN_id_tc26_gost_3410_2012_512_paramSetC "GOST R 34.10-2012 (512 bit) ParamSet C" +#define NID_id_tc26_gost_3410_2012_512_paramSetC 1149 +#define OBJ_id_tc26_gost_3410_2012_512_paramSetC OBJ_id_tc26_gost_3410_2012_512_constants,3L + +#define SN_id_tc26_digest_constants "id-tc26-digest-constants" +#define NID_id_tc26_digest_constants 1000 +#define OBJ_id_tc26_digest_constants OBJ_id_tc26_constants,2L + +#define SN_id_tc26_cipher_constants "id-tc26-cipher-constants" +#define NID_id_tc26_cipher_constants 1001 +#define OBJ_id_tc26_cipher_constants OBJ_id_tc26_constants,5L + +#define SN_id_tc26_gost_28147_constants "id-tc26-gost-28147-constants" +#define NID_id_tc26_gost_28147_constants 1002 +#define OBJ_id_tc26_gost_28147_constants OBJ_id_tc26_cipher_constants,1L + +#define SN_id_tc26_gost_28147_param_Z "id-tc26-gost-28147-param-Z" +#define LN_id_tc26_gost_28147_param_Z "GOST 28147-89 TC26 parameter set" +#define NID_id_tc26_gost_28147_param_Z 1003 +#define OBJ_id_tc26_gost_28147_param_Z OBJ_id_tc26_gost_28147_constants,1L + +#define SN_INN "INN" +#define LN_INN "INN" +#define NID_INN 1004 +#define OBJ_INN OBJ_member_body,643L,3L,131L,1L,1L + +#define SN_OGRN "OGRN" +#define LN_OGRN "OGRN" +#define NID_OGRN 1005 +#define OBJ_OGRN OBJ_member_body,643L,100L,1L + +#define SN_SNILS "SNILS" +#define LN_SNILS "SNILS" +#define NID_SNILS 1006 +#define OBJ_SNILS OBJ_member_body,643L,100L,3L + +#define SN_subjectSignTool "subjectSignTool" +#define LN_subjectSignTool "Signing Tool of Subject" +#define NID_subjectSignTool 1007 +#define OBJ_subjectSignTool OBJ_member_body,643L,100L,111L + +#define SN_issuerSignTool "issuerSignTool" +#define LN_issuerSignTool "Signing Tool of Issuer" +#define NID_issuerSignTool 1008 +#define OBJ_issuerSignTool OBJ_member_body,643L,100L,112L + +#define SN_grasshopper_ecb "grasshopper-ecb" +#define NID_grasshopper_ecb 1012 + +#define SN_grasshopper_ctr "grasshopper-ctr" +#define NID_grasshopper_ctr 1013 + +#define SN_grasshopper_ofb "grasshopper-ofb" +#define NID_grasshopper_ofb 1014 + +#define SN_grasshopper_cbc "grasshopper-cbc" +#define NID_grasshopper_cbc 1015 + +#define SN_grasshopper_cfb "grasshopper-cfb" +#define NID_grasshopper_cfb 1016 + +#define SN_grasshopper_mac "grasshopper-mac" +#define NID_grasshopper_mac 1017 + +#define SN_magma_ecb "magma-ecb" +#define NID_magma_ecb 1187 + +#define SN_magma_ctr "magma-ctr" +#define NID_magma_ctr 1188 + +#define SN_magma_ofb "magma-ofb" +#define NID_magma_ofb 1189 + +#define SN_magma_cbc "magma-cbc" +#define NID_magma_cbc 1190 + +#define SN_magma_cfb "magma-cfb" +#define NID_magma_cfb 1191 + +#define SN_magma_mac "magma-mac" +#define NID_magma_mac 1192 + +#define SN_camellia_128_cbc "CAMELLIA-128-CBC" +#define LN_camellia_128_cbc "camellia-128-cbc" +#define NID_camellia_128_cbc 751 +#define OBJ_camellia_128_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,2L + +#define SN_camellia_192_cbc "CAMELLIA-192-CBC" +#define LN_camellia_192_cbc "camellia-192-cbc" +#define NID_camellia_192_cbc 752 +#define OBJ_camellia_192_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,3L + +#define SN_camellia_256_cbc "CAMELLIA-256-CBC" +#define LN_camellia_256_cbc "camellia-256-cbc" +#define NID_camellia_256_cbc 753 +#define OBJ_camellia_256_cbc 1L,2L,392L,200011L,61L,1L,1L,1L,4L + +#define SN_id_camellia128_wrap "id-camellia128-wrap" +#define NID_id_camellia128_wrap 907 +#define OBJ_id_camellia128_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,2L + +#define SN_id_camellia192_wrap "id-camellia192-wrap" +#define NID_id_camellia192_wrap 908 +#define OBJ_id_camellia192_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,3L + +#define SN_id_camellia256_wrap "id-camellia256-wrap" +#define NID_id_camellia256_wrap 909 +#define OBJ_id_camellia256_wrap 1L,2L,392L,200011L,61L,1L,1L,3L,4L + +#define OBJ_ntt_ds 0L,3L,4401L,5L + +#define OBJ_camellia OBJ_ntt_ds,3L,1L,9L + +#define SN_camellia_128_ecb "CAMELLIA-128-ECB" +#define LN_camellia_128_ecb "camellia-128-ecb" +#define NID_camellia_128_ecb 754 +#define OBJ_camellia_128_ecb OBJ_camellia,1L + +#define SN_camellia_128_ofb128 "CAMELLIA-128-OFB" +#define LN_camellia_128_ofb128 "camellia-128-ofb" +#define NID_camellia_128_ofb128 766 +#define OBJ_camellia_128_ofb128 OBJ_camellia,3L + +#define SN_camellia_128_cfb128 "CAMELLIA-128-CFB" +#define LN_camellia_128_cfb128 "camellia-128-cfb" +#define NID_camellia_128_cfb128 757 +#define OBJ_camellia_128_cfb128 OBJ_camellia,4L + +#define SN_camellia_128_gcm "CAMELLIA-128-GCM" +#define LN_camellia_128_gcm "camellia-128-gcm" +#define NID_camellia_128_gcm 961 +#define OBJ_camellia_128_gcm OBJ_camellia,6L + +#define SN_camellia_128_ccm "CAMELLIA-128-CCM" +#define LN_camellia_128_ccm "camellia-128-ccm" +#define NID_camellia_128_ccm 962 +#define OBJ_camellia_128_ccm OBJ_camellia,7L + +#define SN_camellia_128_ctr "CAMELLIA-128-CTR" +#define LN_camellia_128_ctr "camellia-128-ctr" +#define NID_camellia_128_ctr 963 +#define OBJ_camellia_128_ctr OBJ_camellia,9L + +#define SN_camellia_128_cmac "CAMELLIA-128-CMAC" +#define LN_camellia_128_cmac "camellia-128-cmac" +#define NID_camellia_128_cmac 964 +#define OBJ_camellia_128_cmac OBJ_camellia,10L + +#define SN_camellia_192_ecb "CAMELLIA-192-ECB" +#define LN_camellia_192_ecb "camellia-192-ecb" +#define NID_camellia_192_ecb 755 +#define OBJ_camellia_192_ecb OBJ_camellia,21L + +#define SN_camellia_192_ofb128 "CAMELLIA-192-OFB" +#define LN_camellia_192_ofb128 "camellia-192-ofb" +#define NID_camellia_192_ofb128 767 +#define OBJ_camellia_192_ofb128 OBJ_camellia,23L + +#define SN_camellia_192_cfb128 "CAMELLIA-192-CFB" +#define LN_camellia_192_cfb128 "camellia-192-cfb" +#define NID_camellia_192_cfb128 758 +#define OBJ_camellia_192_cfb128 OBJ_camellia,24L + +#define SN_camellia_192_gcm "CAMELLIA-192-GCM" +#define LN_camellia_192_gcm "camellia-192-gcm" +#define NID_camellia_192_gcm 965 +#define OBJ_camellia_192_gcm OBJ_camellia,26L + +#define SN_camellia_192_ccm "CAMELLIA-192-CCM" +#define LN_camellia_192_ccm "camellia-192-ccm" +#define NID_camellia_192_ccm 966 +#define OBJ_camellia_192_ccm OBJ_camellia,27L + +#define SN_camellia_192_ctr "CAMELLIA-192-CTR" +#define LN_camellia_192_ctr "camellia-192-ctr" +#define NID_camellia_192_ctr 967 +#define OBJ_camellia_192_ctr OBJ_camellia,29L + +#define SN_camellia_192_cmac "CAMELLIA-192-CMAC" +#define LN_camellia_192_cmac "camellia-192-cmac" +#define NID_camellia_192_cmac 968 +#define OBJ_camellia_192_cmac OBJ_camellia,30L + +#define SN_camellia_256_ecb "CAMELLIA-256-ECB" +#define LN_camellia_256_ecb "camellia-256-ecb" +#define NID_camellia_256_ecb 756 +#define OBJ_camellia_256_ecb OBJ_camellia,41L + +#define SN_camellia_256_ofb128 "CAMELLIA-256-OFB" +#define LN_camellia_256_ofb128 "camellia-256-ofb" +#define NID_camellia_256_ofb128 768 +#define OBJ_camellia_256_ofb128 OBJ_camellia,43L + +#define SN_camellia_256_cfb128 "CAMELLIA-256-CFB" +#define LN_camellia_256_cfb128 "camellia-256-cfb" +#define NID_camellia_256_cfb128 759 +#define OBJ_camellia_256_cfb128 OBJ_camellia,44L + +#define SN_camellia_256_gcm "CAMELLIA-256-GCM" +#define LN_camellia_256_gcm "camellia-256-gcm" +#define NID_camellia_256_gcm 969 +#define OBJ_camellia_256_gcm OBJ_camellia,46L + +#define SN_camellia_256_ccm "CAMELLIA-256-CCM" +#define LN_camellia_256_ccm "camellia-256-ccm" +#define NID_camellia_256_ccm 970 +#define OBJ_camellia_256_ccm OBJ_camellia,47L + +#define SN_camellia_256_ctr "CAMELLIA-256-CTR" +#define LN_camellia_256_ctr "camellia-256-ctr" +#define NID_camellia_256_ctr 971 +#define OBJ_camellia_256_ctr OBJ_camellia,49L + +#define SN_camellia_256_cmac "CAMELLIA-256-CMAC" +#define LN_camellia_256_cmac "camellia-256-cmac" +#define NID_camellia_256_cmac 972 +#define OBJ_camellia_256_cmac OBJ_camellia,50L + +#define SN_camellia_128_cfb1 "CAMELLIA-128-CFB1" +#define LN_camellia_128_cfb1 "camellia-128-cfb1" +#define NID_camellia_128_cfb1 760 + +#define SN_camellia_192_cfb1 "CAMELLIA-192-CFB1" +#define LN_camellia_192_cfb1 "camellia-192-cfb1" +#define NID_camellia_192_cfb1 761 + +#define SN_camellia_256_cfb1 "CAMELLIA-256-CFB1" +#define LN_camellia_256_cfb1 "camellia-256-cfb1" +#define NID_camellia_256_cfb1 762 + +#define SN_camellia_128_cfb8 "CAMELLIA-128-CFB8" +#define LN_camellia_128_cfb8 "camellia-128-cfb8" +#define NID_camellia_128_cfb8 763 + +#define SN_camellia_192_cfb8 "CAMELLIA-192-CFB8" +#define LN_camellia_192_cfb8 "camellia-192-cfb8" +#define NID_camellia_192_cfb8 764 + +#define SN_camellia_256_cfb8 "CAMELLIA-256-CFB8" +#define LN_camellia_256_cfb8 "camellia-256-cfb8" +#define NID_camellia_256_cfb8 765 + +#define OBJ_aria 1L,2L,410L,200046L,1L,1L + +#define SN_aria_128_ecb "ARIA-128-ECB" +#define LN_aria_128_ecb "aria-128-ecb" +#define NID_aria_128_ecb 1065 +#define OBJ_aria_128_ecb OBJ_aria,1L + +#define SN_aria_128_cbc "ARIA-128-CBC" +#define LN_aria_128_cbc "aria-128-cbc" +#define NID_aria_128_cbc 1066 +#define OBJ_aria_128_cbc OBJ_aria,2L + +#define SN_aria_128_cfb128 "ARIA-128-CFB" +#define LN_aria_128_cfb128 "aria-128-cfb" +#define NID_aria_128_cfb128 1067 +#define OBJ_aria_128_cfb128 OBJ_aria,3L + +#define SN_aria_128_ofb128 "ARIA-128-OFB" +#define LN_aria_128_ofb128 "aria-128-ofb" +#define NID_aria_128_ofb128 1068 +#define OBJ_aria_128_ofb128 OBJ_aria,4L + +#define SN_aria_128_ctr "ARIA-128-CTR" +#define LN_aria_128_ctr "aria-128-ctr" +#define NID_aria_128_ctr 1069 +#define OBJ_aria_128_ctr OBJ_aria,5L + +#define SN_aria_192_ecb "ARIA-192-ECB" +#define LN_aria_192_ecb "aria-192-ecb" +#define NID_aria_192_ecb 1070 +#define OBJ_aria_192_ecb OBJ_aria,6L + +#define SN_aria_192_cbc "ARIA-192-CBC" +#define LN_aria_192_cbc "aria-192-cbc" +#define NID_aria_192_cbc 1071 +#define OBJ_aria_192_cbc OBJ_aria,7L + +#define SN_aria_192_cfb128 "ARIA-192-CFB" +#define LN_aria_192_cfb128 "aria-192-cfb" +#define NID_aria_192_cfb128 1072 +#define OBJ_aria_192_cfb128 OBJ_aria,8L + +#define SN_aria_192_ofb128 "ARIA-192-OFB" +#define LN_aria_192_ofb128 "aria-192-ofb" +#define NID_aria_192_ofb128 1073 +#define OBJ_aria_192_ofb128 OBJ_aria,9L + +#define SN_aria_192_ctr "ARIA-192-CTR" +#define LN_aria_192_ctr "aria-192-ctr" +#define NID_aria_192_ctr 1074 +#define OBJ_aria_192_ctr OBJ_aria,10L + +#define SN_aria_256_ecb "ARIA-256-ECB" +#define LN_aria_256_ecb "aria-256-ecb" +#define NID_aria_256_ecb 1075 +#define OBJ_aria_256_ecb OBJ_aria,11L + +#define SN_aria_256_cbc "ARIA-256-CBC" +#define LN_aria_256_cbc "aria-256-cbc" +#define NID_aria_256_cbc 1076 +#define OBJ_aria_256_cbc OBJ_aria,12L + +#define SN_aria_256_cfb128 "ARIA-256-CFB" +#define LN_aria_256_cfb128 "aria-256-cfb" +#define NID_aria_256_cfb128 1077 +#define OBJ_aria_256_cfb128 OBJ_aria,13L + +#define SN_aria_256_ofb128 "ARIA-256-OFB" +#define LN_aria_256_ofb128 "aria-256-ofb" +#define NID_aria_256_ofb128 1078 +#define OBJ_aria_256_ofb128 OBJ_aria,14L + +#define SN_aria_256_ctr "ARIA-256-CTR" +#define LN_aria_256_ctr "aria-256-ctr" +#define NID_aria_256_ctr 1079 +#define OBJ_aria_256_ctr OBJ_aria,15L + +#define SN_aria_128_cfb1 "ARIA-128-CFB1" +#define LN_aria_128_cfb1 "aria-128-cfb1" +#define NID_aria_128_cfb1 1080 + +#define SN_aria_192_cfb1 "ARIA-192-CFB1" +#define LN_aria_192_cfb1 "aria-192-cfb1" +#define NID_aria_192_cfb1 1081 + +#define SN_aria_256_cfb1 "ARIA-256-CFB1" +#define LN_aria_256_cfb1 "aria-256-cfb1" +#define NID_aria_256_cfb1 1082 + +#define SN_aria_128_cfb8 "ARIA-128-CFB8" +#define LN_aria_128_cfb8 "aria-128-cfb8" +#define NID_aria_128_cfb8 1083 + +#define SN_aria_192_cfb8 "ARIA-192-CFB8" +#define LN_aria_192_cfb8 "aria-192-cfb8" +#define NID_aria_192_cfb8 1084 + +#define SN_aria_256_cfb8 "ARIA-256-CFB8" +#define LN_aria_256_cfb8 "aria-256-cfb8" +#define NID_aria_256_cfb8 1085 + +#define SN_aria_128_ccm "ARIA-128-CCM" +#define LN_aria_128_ccm "aria-128-ccm" +#define NID_aria_128_ccm 1120 +#define OBJ_aria_128_ccm OBJ_aria,37L + +#define SN_aria_192_ccm "ARIA-192-CCM" +#define LN_aria_192_ccm "aria-192-ccm" +#define NID_aria_192_ccm 1121 +#define OBJ_aria_192_ccm OBJ_aria,38L + +#define SN_aria_256_ccm "ARIA-256-CCM" +#define LN_aria_256_ccm "aria-256-ccm" +#define NID_aria_256_ccm 1122 +#define OBJ_aria_256_ccm OBJ_aria,39L + +#define SN_aria_128_gcm "ARIA-128-GCM" +#define LN_aria_128_gcm "aria-128-gcm" +#define NID_aria_128_gcm 1123 +#define OBJ_aria_128_gcm OBJ_aria,34L + +#define SN_aria_192_gcm "ARIA-192-GCM" +#define LN_aria_192_gcm "aria-192-gcm" +#define NID_aria_192_gcm 1124 +#define OBJ_aria_192_gcm OBJ_aria,35L + +#define SN_aria_256_gcm "ARIA-256-GCM" +#define LN_aria_256_gcm "aria-256-gcm" +#define NID_aria_256_gcm 1125 +#define OBJ_aria_256_gcm OBJ_aria,36L + +#define SN_kisa "KISA" +#define LN_kisa "kisa" +#define NID_kisa 773 +#define OBJ_kisa OBJ_member_body,410L,200004L + +#define SN_seed_ecb "SEED-ECB" +#define LN_seed_ecb "seed-ecb" +#define NID_seed_ecb 776 +#define OBJ_seed_ecb OBJ_kisa,1L,3L + +#define SN_seed_cbc "SEED-CBC" +#define LN_seed_cbc "seed-cbc" +#define NID_seed_cbc 777 +#define OBJ_seed_cbc OBJ_kisa,1L,4L + +#define SN_seed_cfb128 "SEED-CFB" +#define LN_seed_cfb128 "seed-cfb" +#define NID_seed_cfb128 779 +#define OBJ_seed_cfb128 OBJ_kisa,1L,5L + +#define SN_seed_ofb128 "SEED-OFB" +#define LN_seed_ofb128 "seed-ofb" +#define NID_seed_ofb128 778 +#define OBJ_seed_ofb128 OBJ_kisa,1L,6L + +#define SN_sm4_ecb "SM4-ECB" +#define LN_sm4_ecb "sm4-ecb" +#define NID_sm4_ecb 1133 +#define OBJ_sm4_ecb OBJ_sm_scheme,104L,1L + +#define SN_sm4_cbc "SM4-CBC" +#define LN_sm4_cbc "sm4-cbc" +#define NID_sm4_cbc 1134 +#define OBJ_sm4_cbc OBJ_sm_scheme,104L,2L + +#define SN_sm4_ofb128 "SM4-OFB" +#define LN_sm4_ofb128 "sm4-ofb" +#define NID_sm4_ofb128 1135 +#define OBJ_sm4_ofb128 OBJ_sm_scheme,104L,3L + +#define SN_sm4_cfb128 "SM4-CFB" +#define LN_sm4_cfb128 "sm4-cfb" +#define NID_sm4_cfb128 1137 +#define OBJ_sm4_cfb128 OBJ_sm_scheme,104L,4L + +#define SN_sm4_cfb1 "SM4-CFB1" +#define LN_sm4_cfb1 "sm4-cfb1" +#define NID_sm4_cfb1 1136 +#define OBJ_sm4_cfb1 OBJ_sm_scheme,104L,5L + +#define SN_sm4_cfb8 "SM4-CFB8" +#define LN_sm4_cfb8 "sm4-cfb8" +#define NID_sm4_cfb8 1138 +#define OBJ_sm4_cfb8 OBJ_sm_scheme,104L,6L + +#define SN_sm4_ctr "SM4-CTR" +#define LN_sm4_ctr "sm4-ctr" +#define NID_sm4_ctr 1139 +#define OBJ_sm4_ctr OBJ_sm_scheme,104L,7L + +#define SN_hmac "HMAC" +#define LN_hmac "hmac" +#define NID_hmac 855 + +#define SN_cmac "CMAC" +#define LN_cmac "cmac" +#define NID_cmac 894 + +#define SN_rc4_hmac_md5 "RC4-HMAC-MD5" +#define LN_rc4_hmac_md5 "rc4-hmac-md5" +#define NID_rc4_hmac_md5 915 + +#define SN_aes_128_cbc_hmac_sha1 "AES-128-CBC-HMAC-SHA1" +#define LN_aes_128_cbc_hmac_sha1 "aes-128-cbc-hmac-sha1" +#define NID_aes_128_cbc_hmac_sha1 916 + +#define SN_aes_192_cbc_hmac_sha1 "AES-192-CBC-HMAC-SHA1" +#define LN_aes_192_cbc_hmac_sha1 "aes-192-cbc-hmac-sha1" +#define NID_aes_192_cbc_hmac_sha1 917 + +#define SN_aes_256_cbc_hmac_sha1 "AES-256-CBC-HMAC-SHA1" +#define LN_aes_256_cbc_hmac_sha1 "aes-256-cbc-hmac-sha1" +#define NID_aes_256_cbc_hmac_sha1 918 + +#define SN_aes_128_cbc_hmac_sha256 "AES-128-CBC-HMAC-SHA256" +#define LN_aes_128_cbc_hmac_sha256 "aes-128-cbc-hmac-sha256" +#define NID_aes_128_cbc_hmac_sha256 948 + +#define SN_aes_192_cbc_hmac_sha256 "AES-192-CBC-HMAC-SHA256" +#define LN_aes_192_cbc_hmac_sha256 "aes-192-cbc-hmac-sha256" +#define NID_aes_192_cbc_hmac_sha256 949 + +#define SN_aes_256_cbc_hmac_sha256 "AES-256-CBC-HMAC-SHA256" +#define LN_aes_256_cbc_hmac_sha256 "aes-256-cbc-hmac-sha256" +#define NID_aes_256_cbc_hmac_sha256 950 + +#define SN_chacha20_poly1305 "ChaCha20-Poly1305" +#define LN_chacha20_poly1305 "chacha20-poly1305" +#define NID_chacha20_poly1305 1018 + +#define SN_chacha20 "ChaCha20" +#define LN_chacha20 "chacha20" +#define NID_chacha20 1019 + +#define SN_dhpublicnumber "dhpublicnumber" +#define LN_dhpublicnumber "X9.42 DH" +#define NID_dhpublicnumber 920 +#define OBJ_dhpublicnumber OBJ_ISO_US,10046L,2L,1L + +#define SN_brainpoolP160r1 "brainpoolP160r1" +#define NID_brainpoolP160r1 921 +#define OBJ_brainpoolP160r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,1L + +#define SN_brainpoolP160t1 "brainpoolP160t1" +#define NID_brainpoolP160t1 922 +#define OBJ_brainpoolP160t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,2L + +#define SN_brainpoolP192r1 "brainpoolP192r1" +#define NID_brainpoolP192r1 923 +#define OBJ_brainpoolP192r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,3L + +#define SN_brainpoolP192t1 "brainpoolP192t1" +#define NID_brainpoolP192t1 924 +#define OBJ_brainpoolP192t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,4L + +#define SN_brainpoolP224r1 "brainpoolP224r1" +#define NID_brainpoolP224r1 925 +#define OBJ_brainpoolP224r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,5L + +#define SN_brainpoolP224t1 "brainpoolP224t1" +#define NID_brainpoolP224t1 926 +#define OBJ_brainpoolP224t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,6L + +#define SN_brainpoolP256r1 "brainpoolP256r1" +#define NID_brainpoolP256r1 927 +#define OBJ_brainpoolP256r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,7L + +#define SN_brainpoolP256t1 "brainpoolP256t1" +#define NID_brainpoolP256t1 928 +#define OBJ_brainpoolP256t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,8L + +#define SN_brainpoolP320r1 "brainpoolP320r1" +#define NID_brainpoolP320r1 929 +#define OBJ_brainpoolP320r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,9L + +#define SN_brainpoolP320t1 "brainpoolP320t1" +#define NID_brainpoolP320t1 930 +#define OBJ_brainpoolP320t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,10L + +#define SN_brainpoolP384r1 "brainpoolP384r1" +#define NID_brainpoolP384r1 931 +#define OBJ_brainpoolP384r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,11L + +#define SN_brainpoolP384t1 "brainpoolP384t1" +#define NID_brainpoolP384t1 932 +#define OBJ_brainpoolP384t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,12L + +#define SN_brainpoolP512r1 "brainpoolP512r1" +#define NID_brainpoolP512r1 933 +#define OBJ_brainpoolP512r1 1L,3L,36L,3L,3L,2L,8L,1L,1L,13L + +#define SN_brainpoolP512t1 "brainpoolP512t1" +#define NID_brainpoolP512t1 934 +#define OBJ_brainpoolP512t1 1L,3L,36L,3L,3L,2L,8L,1L,1L,14L + +#define OBJ_x9_63_scheme 1L,3L,133L,16L,840L,63L,0L + +#define OBJ_secg_scheme OBJ_certicom_arc,1L + +#define SN_dhSinglePass_stdDH_sha1kdf_scheme "dhSinglePass-stdDH-sha1kdf-scheme" +#define NID_dhSinglePass_stdDH_sha1kdf_scheme 936 +#define OBJ_dhSinglePass_stdDH_sha1kdf_scheme OBJ_x9_63_scheme,2L + +#define SN_dhSinglePass_stdDH_sha224kdf_scheme "dhSinglePass-stdDH-sha224kdf-scheme" +#define NID_dhSinglePass_stdDH_sha224kdf_scheme 937 +#define OBJ_dhSinglePass_stdDH_sha224kdf_scheme OBJ_secg_scheme,11L,0L + +#define SN_dhSinglePass_stdDH_sha256kdf_scheme "dhSinglePass-stdDH-sha256kdf-scheme" +#define NID_dhSinglePass_stdDH_sha256kdf_scheme 938 +#define OBJ_dhSinglePass_stdDH_sha256kdf_scheme OBJ_secg_scheme,11L,1L + +#define SN_dhSinglePass_stdDH_sha384kdf_scheme "dhSinglePass-stdDH-sha384kdf-scheme" +#define NID_dhSinglePass_stdDH_sha384kdf_scheme 939 +#define OBJ_dhSinglePass_stdDH_sha384kdf_scheme OBJ_secg_scheme,11L,2L + +#define SN_dhSinglePass_stdDH_sha512kdf_scheme "dhSinglePass-stdDH-sha512kdf-scheme" +#define NID_dhSinglePass_stdDH_sha512kdf_scheme 940 +#define OBJ_dhSinglePass_stdDH_sha512kdf_scheme OBJ_secg_scheme,11L,3L + +#define SN_dhSinglePass_cofactorDH_sha1kdf_scheme "dhSinglePass-cofactorDH-sha1kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha1kdf_scheme 941 +#define OBJ_dhSinglePass_cofactorDH_sha1kdf_scheme OBJ_x9_63_scheme,3L + +#define SN_dhSinglePass_cofactorDH_sha224kdf_scheme "dhSinglePass-cofactorDH-sha224kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha224kdf_scheme 942 +#define OBJ_dhSinglePass_cofactorDH_sha224kdf_scheme OBJ_secg_scheme,14L,0L + +#define SN_dhSinglePass_cofactorDH_sha256kdf_scheme "dhSinglePass-cofactorDH-sha256kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha256kdf_scheme 943 +#define OBJ_dhSinglePass_cofactorDH_sha256kdf_scheme OBJ_secg_scheme,14L,1L + +#define SN_dhSinglePass_cofactorDH_sha384kdf_scheme "dhSinglePass-cofactorDH-sha384kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha384kdf_scheme 944 +#define OBJ_dhSinglePass_cofactorDH_sha384kdf_scheme OBJ_secg_scheme,14L,2L + +#define SN_dhSinglePass_cofactorDH_sha512kdf_scheme "dhSinglePass-cofactorDH-sha512kdf-scheme" +#define NID_dhSinglePass_cofactorDH_sha512kdf_scheme 945 +#define OBJ_dhSinglePass_cofactorDH_sha512kdf_scheme OBJ_secg_scheme,14L,3L + +#define SN_dh_std_kdf "dh-std-kdf" +#define NID_dh_std_kdf 946 + +#define SN_dh_cofactor_kdf "dh-cofactor-kdf" +#define NID_dh_cofactor_kdf 947 + +#define SN_ct_precert_scts "ct_precert_scts" +#define LN_ct_precert_scts "CT Precertificate SCTs" +#define NID_ct_precert_scts 951 +#define OBJ_ct_precert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,2L + +#define SN_ct_precert_poison "ct_precert_poison" +#define LN_ct_precert_poison "CT Precertificate Poison" +#define NID_ct_precert_poison 952 +#define OBJ_ct_precert_poison 1L,3L,6L,1L,4L,1L,11129L,2L,4L,3L + +#define SN_ct_precert_signer "ct_precert_signer" +#define LN_ct_precert_signer "CT Precertificate Signer" +#define NID_ct_precert_signer 953 +#define OBJ_ct_precert_signer 1L,3L,6L,1L,4L,1L,11129L,2L,4L,4L + +#define SN_ct_cert_scts "ct_cert_scts" +#define LN_ct_cert_scts "CT Certificate SCTs" +#define NID_ct_cert_scts 954 +#define OBJ_ct_cert_scts 1L,3L,6L,1L,4L,1L,11129L,2L,4L,5L + +#define SN_jurisdictionLocalityName "jurisdictionL" +#define LN_jurisdictionLocalityName "jurisdictionLocalityName" +#define NID_jurisdictionLocalityName 955 +#define OBJ_jurisdictionLocalityName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,1L + +#define SN_jurisdictionStateOrProvinceName "jurisdictionST" +#define LN_jurisdictionStateOrProvinceName "jurisdictionStateOrProvinceName" +#define NID_jurisdictionStateOrProvinceName 956 +#define OBJ_jurisdictionStateOrProvinceName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,2L + +#define SN_jurisdictionCountryName "jurisdictionC" +#define LN_jurisdictionCountryName "jurisdictionCountryName" +#define NID_jurisdictionCountryName 957 +#define OBJ_jurisdictionCountryName 1L,3L,6L,1L,4L,1L,311L,60L,2L,1L,3L + +#define SN_id_scrypt "id-scrypt" +#define LN_id_scrypt "scrypt" +#define NID_id_scrypt 973 +#define OBJ_id_scrypt 1L,3L,6L,1L,4L,1L,11591L,4L,11L + +#define SN_tls1_prf "TLS1-PRF" +#define LN_tls1_prf "tls1-prf" +#define NID_tls1_prf 1021 + +#define SN_hkdf "HKDF" +#define LN_hkdf "hkdf" +#define NID_hkdf 1036 + +#define SN_id_pkinit "id-pkinit" +#define NID_id_pkinit 1031 +#define OBJ_id_pkinit 1L,3L,6L,1L,5L,2L,3L + +#define SN_pkInitClientAuth "pkInitClientAuth" +#define LN_pkInitClientAuth "PKINIT Client Auth" +#define NID_pkInitClientAuth 1032 +#define OBJ_pkInitClientAuth OBJ_id_pkinit,4L + +#define SN_pkInitKDC "pkInitKDC" +#define LN_pkInitKDC "Signing KDC Response" +#define NID_pkInitKDC 1033 +#define OBJ_pkInitKDC OBJ_id_pkinit,5L + +#define SN_X25519 "X25519" +#define NID_X25519 1034 +#define OBJ_X25519 1L,3L,101L,110L + +#define SN_X448 "X448" +#define NID_X448 1035 +#define OBJ_X448 1L,3L,101L,111L + +#define SN_ED25519 "ED25519" +#define NID_ED25519 1087 +#define OBJ_ED25519 1L,3L,101L,112L + +#define SN_ED448 "ED448" +#define NID_ED448 1088 +#define OBJ_ED448 1L,3L,101L,113L + +#define SN_kx_rsa "KxRSA" +#define LN_kx_rsa "kx-rsa" +#define NID_kx_rsa 1037 + +#define SN_kx_ecdhe "KxECDHE" +#define LN_kx_ecdhe "kx-ecdhe" +#define NID_kx_ecdhe 1038 + +#define SN_kx_dhe "KxDHE" +#define LN_kx_dhe "kx-dhe" +#define NID_kx_dhe 1039 + +#define SN_kx_ecdhe_psk "KxECDHE-PSK" +#define LN_kx_ecdhe_psk "kx-ecdhe-psk" +#define NID_kx_ecdhe_psk 1040 + +#define SN_kx_dhe_psk "KxDHE-PSK" +#define LN_kx_dhe_psk "kx-dhe-psk" +#define NID_kx_dhe_psk 1041 + +#define SN_kx_rsa_psk "KxRSA_PSK" +#define LN_kx_rsa_psk "kx-rsa-psk" +#define NID_kx_rsa_psk 1042 + +#define SN_kx_psk "KxPSK" +#define LN_kx_psk "kx-psk" +#define NID_kx_psk 1043 + +#define SN_kx_srp "KxSRP" +#define LN_kx_srp "kx-srp" +#define NID_kx_srp 1044 + +#define SN_kx_gost "KxGOST" +#define LN_kx_gost "kx-gost" +#define NID_kx_gost 1045 + +#define SN_kx_any "KxANY" +#define LN_kx_any "kx-any" +#define NID_kx_any 1063 + +#define SN_auth_rsa "AuthRSA" +#define LN_auth_rsa "auth-rsa" +#define NID_auth_rsa 1046 + +#define SN_auth_ecdsa "AuthECDSA" +#define LN_auth_ecdsa "auth-ecdsa" +#define NID_auth_ecdsa 1047 + +#define SN_auth_psk "AuthPSK" +#define LN_auth_psk "auth-psk" +#define NID_auth_psk 1048 + +#define SN_auth_dss "AuthDSS" +#define LN_auth_dss "auth-dss" +#define NID_auth_dss 1049 + +#define SN_auth_gost01 "AuthGOST01" +#define LN_auth_gost01 "auth-gost01" +#define NID_auth_gost01 1050 + +#define SN_auth_gost12 "AuthGOST12" +#define LN_auth_gost12 "auth-gost12" +#define NID_auth_gost12 1051 + +#define SN_auth_srp "AuthSRP" +#define LN_auth_srp "auth-srp" +#define NID_auth_srp 1052 + +#define SN_auth_null "AuthNULL" +#define LN_auth_null "auth-null" +#define NID_auth_null 1053 + +#define SN_auth_any "AuthANY" +#define LN_auth_any "auth-any" +#define NID_auth_any 1064 + +#define SN_poly1305 "Poly1305" +#define LN_poly1305 "poly1305" +#define NID_poly1305 1061 + +#define SN_siphash "SipHash" +#define LN_siphash "siphash" +#define NID_siphash 1062 + +#define SN_ffdhe2048 "ffdhe2048" +#define NID_ffdhe2048 1126 + +#define SN_ffdhe3072 "ffdhe3072" +#define NID_ffdhe3072 1127 + +#define SN_ffdhe4096 "ffdhe4096" +#define NID_ffdhe4096 1128 + +#define SN_ffdhe6144 "ffdhe6144" +#define NID_ffdhe6144 1129 + +#define SN_ffdhe8192 "ffdhe8192" +#define NID_ffdhe8192 1130 + +#define SN_ISO_UA "ISO-UA" +#define NID_ISO_UA 1150 +#define OBJ_ISO_UA OBJ_member_body,804L + +#define SN_ua_pki "ua-pki" +#define NID_ua_pki 1151 +#define OBJ_ua_pki OBJ_ISO_UA,2L,1L,1L,1L + +#define SN_dstu28147 "dstu28147" +#define LN_dstu28147 "DSTU Gost 28147-2009" +#define NID_dstu28147 1152 +#define OBJ_dstu28147 OBJ_ua_pki,1L,1L,1L + +#define SN_dstu28147_ofb "dstu28147-ofb" +#define LN_dstu28147_ofb "DSTU Gost 28147-2009 OFB mode" +#define NID_dstu28147_ofb 1153 +#define OBJ_dstu28147_ofb OBJ_dstu28147,2L + +#define SN_dstu28147_cfb "dstu28147-cfb" +#define LN_dstu28147_cfb "DSTU Gost 28147-2009 CFB mode" +#define NID_dstu28147_cfb 1154 +#define OBJ_dstu28147_cfb OBJ_dstu28147,3L + +#define SN_dstu28147_wrap "dstu28147-wrap" +#define LN_dstu28147_wrap "DSTU Gost 28147-2009 key wrap" +#define NID_dstu28147_wrap 1155 +#define OBJ_dstu28147_wrap OBJ_dstu28147,5L + +#define SN_hmacWithDstu34311 "hmacWithDstu34311" +#define LN_hmacWithDstu34311 "HMAC DSTU Gost 34311-95" +#define NID_hmacWithDstu34311 1156 +#define OBJ_hmacWithDstu34311 OBJ_ua_pki,1L,1L,2L + +#define SN_dstu34311 "dstu34311" +#define LN_dstu34311 "DSTU Gost 34311-95" +#define NID_dstu34311 1157 +#define OBJ_dstu34311 OBJ_ua_pki,1L,2L,1L + +#define SN_dstu4145le "dstu4145le" +#define LN_dstu4145le "DSTU 4145-2002 little endian" +#define NID_dstu4145le 1158 +#define OBJ_dstu4145le OBJ_ua_pki,1L,3L,1L,1L + +#define SN_dstu4145be "dstu4145be" +#define LN_dstu4145be "DSTU 4145-2002 big endian" +#define NID_dstu4145be 1159 +#define OBJ_dstu4145be OBJ_dstu4145le,1L,1L + +#define SN_uacurve0 "uacurve0" +#define LN_uacurve0 "DSTU curve 0" +#define NID_uacurve0 1160 +#define OBJ_uacurve0 OBJ_dstu4145le,2L,0L + +#define SN_uacurve1 "uacurve1" +#define LN_uacurve1 "DSTU curve 1" +#define NID_uacurve1 1161 +#define OBJ_uacurve1 OBJ_dstu4145le,2L,1L + +#define SN_uacurve2 "uacurve2" +#define LN_uacurve2 "DSTU curve 2" +#define NID_uacurve2 1162 +#define OBJ_uacurve2 OBJ_dstu4145le,2L,2L + +#define SN_uacurve3 "uacurve3" +#define LN_uacurve3 "DSTU curve 3" +#define NID_uacurve3 1163 +#define OBJ_uacurve3 OBJ_dstu4145le,2L,3L + +#define SN_uacurve4 "uacurve4" +#define LN_uacurve4 "DSTU curve 4" +#define NID_uacurve4 1164 +#define OBJ_uacurve4 OBJ_dstu4145le,2L,4L + +#define SN_uacurve5 "uacurve5" +#define LN_uacurve5 "DSTU curve 5" +#define NID_uacurve5 1165 +#define OBJ_uacurve5 OBJ_dstu4145le,2L,5L + +#define SN_uacurve6 "uacurve6" +#define LN_uacurve6 "DSTU curve 6" +#define NID_uacurve6 1166 +#define OBJ_uacurve6 OBJ_dstu4145le,2L,6L + +#define SN_uacurve7 "uacurve7" +#define LN_uacurve7 "DSTU curve 7" +#define NID_uacurve7 1167 +#define OBJ_uacurve7 OBJ_dstu4145le,2L,7L + +#define SN_uacurve8 "uacurve8" +#define LN_uacurve8 "DSTU curve 8" +#define NID_uacurve8 1168 +#define OBJ_uacurve8 OBJ_dstu4145le,2L,8L + +#define SN_uacurve9 "uacurve9" +#define LN_uacurve9 "DSTU curve 9" +#define NID_uacurve9 1169 +#define OBJ_uacurve9 OBJ_dstu4145le,2L,9L diff --git a/include/openssl/openssl/objects.h b/include/openssl/openssl/objects.h new file mode 100644 index 00000000..5e8b5762 --- /dev/null +++ b/include/openssl/openssl/objects.h @@ -0,0 +1,175 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJECTS_H +# define HEADER_OBJECTS_H + +# include +# include +# include +# include + +# define OBJ_NAME_TYPE_UNDEF 0x00 +# define OBJ_NAME_TYPE_MD_METH 0x01 +# define OBJ_NAME_TYPE_CIPHER_METH 0x02 +# define OBJ_NAME_TYPE_PKEY_METH 0x03 +# define OBJ_NAME_TYPE_COMP_METH 0x04 +# define OBJ_NAME_TYPE_NUM 0x05 + +# define OBJ_NAME_ALIAS 0x8000 + +# define OBJ_BSEARCH_VALUE_ON_NOMATCH 0x01 +# define OBJ_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct obj_name_st { + int type; + int alias; + const char *name; + const char *data; +} OBJ_NAME; + +# define OBJ_create_and_add_object(a,b,c) OBJ_create(a,b,c) + +int OBJ_NAME_init(void); +int OBJ_NAME_new_index(unsigned long (*hash_func) (const char *), + int (*cmp_func) (const char *, const char *), + void (*free_func) (const char *, int, const char *)); +const char *OBJ_NAME_get(const char *name, int type); +int OBJ_NAME_add(const char *name, int type, const char *data); +int OBJ_NAME_remove(const char *name, int type); +void OBJ_NAME_cleanup(int type); /* -1 for everything */ +void OBJ_NAME_do_all(int type, void (*fn) (const OBJ_NAME *, void *arg), + void *arg); +void OBJ_NAME_do_all_sorted(int type, + void (*fn) (const OBJ_NAME *, void *arg), + void *arg); + +ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_nid2obj(int n); +const char *OBJ_nid2ln(int n); +const char *OBJ_nid2sn(int n); +int OBJ_obj2nid(const ASN1_OBJECT *o); +ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name); +int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name); +int OBJ_txt2nid(const char *s); +int OBJ_ln2nid(const char *s); +int OBJ_sn2nid(const char *s); +int OBJ_cmp(const ASN1_OBJECT *a, const ASN1_OBJECT *b); +const void *OBJ_bsearch_(const void *key, const void *base, int num, int size, + int (*cmp) (const void *, const void *)); +const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, + int size, + int (*cmp) (const void *, const void *), + int flags); + +# define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \ + static int nm##_cmp(type1 const *, type2 const *); \ + scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +# define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \ + _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp) +# define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) + +/*- + * Unsolved problem: if a type is actually a pointer type, like + * nid_triple is, then its impossible to get a const where you need + * it. Consider: + * + * typedef int nid_triple[3]; + * const void *a_; + * const nid_triple const *a = a_; + * + * The assignment discards a const because what you really want is: + * + * const int const * const *a = a_; + * + * But if you do that, you lose the fact that a is an array of 3 ints, + * which breaks comparison functions. + * + * Thus we end up having to cast, sadly, or unpack the + * declarations. Or, as I finally did in this case, declare nid_triple + * to be a struct, which it should have been in the first place. + * + * Ben, August 2008. + * + * Also, strictly speaking not all types need be const, but handling + * the non-constness means a lot of complication, and in practice + * comparison routines do always not touch their arguments. + */ + +# define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \ + static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \ + { \ + type1 const *a = a_; \ + type2 const *b = b_; \ + return nm##_cmp(a,b); \ + } \ + type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \ + { \ + return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \ + nm##_cmp_BSEARCH_CMP_FN); \ + } \ + extern void dummy_prototype(void) + +# define OBJ_bsearch(type1,key,type2,base,num,cmp) \ + ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN))) + +# define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \ + ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \ + num,sizeof(type2), \ + ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \ + (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \ + cmp##_BSEARCH_CMP_FN)),flags) + +int OBJ_new_nid(int num); +int OBJ_add_object(const ASN1_OBJECT *obj); +int OBJ_create(const char *oid, const char *sn, const char *ln); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() while(0) continue +#endif +int OBJ_create_objects(BIO *in); + +size_t OBJ_length(const ASN1_OBJECT *obj); +const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); + +int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid); +int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid); +int OBJ_add_sigid(int signid, int dig_id, int pkey_id); +void OBJ_sigid_free(void); + + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/objectserr.h b/include/openssl/openssl/objectserr.h new file mode 100644 index 00000000..02e166f1 --- /dev/null +++ b/include/openssl/openssl/objectserr.h @@ -0,0 +1,42 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OBJERR_H +# define HEADER_OBJERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_OBJ_strings(void); + +/* + * OBJ function codes. + */ +# define OBJ_F_OBJ_ADD_OBJECT 105 +# define OBJ_F_OBJ_ADD_SIGID 107 +# define OBJ_F_OBJ_CREATE 100 +# define OBJ_F_OBJ_DUP 101 +# define OBJ_F_OBJ_NAME_NEW_INDEX 106 +# define OBJ_F_OBJ_NID2LN 102 +# define OBJ_F_OBJ_NID2OBJ 103 +# define OBJ_F_OBJ_NID2SN 104 +# define OBJ_F_OBJ_TXT2OBJ 108 + +/* + * OBJ reason codes. + */ +# define OBJ_R_OID_EXISTS 102 +# define OBJ_R_UNKNOWN_NID 101 + +#endif diff --git a/include/openssl/openssl/opensslconf.h b/include/openssl/openssl/opensslconf.h new file mode 100644 index 00000000..2e9313bd --- /dev/null +++ b/include/openssl/openssl/opensslconf.h @@ -0,0 +1,206 @@ +/* + * WARNING: do not edit! + * Generated by makefile from include\openssl\opensslconf.h.in + * + * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef OPENSSL_ALGORITHM_DEFINES +# error OPENSSL_ALGORITHM_DEFINES no longer supported +#endif + +/* + * OpenSSL was configured with the following options: + */ + +#ifndef OPENSSL_SYS_WIN64A +# define OPENSSL_SYS_WIN64A 1 +#endif +#ifndef OPENSSL_NO_MD2 +# define OPENSSL_NO_MD2 +#endif +#ifndef OPENSSL_NO_RC5 +# define OPENSSL_NO_RC5 +#endif +#ifndef OPENSSL_THREADS +# define OPENSSL_THREADS +#endif +#ifndef OPENSSL_RAND_SEED_OS +# define OPENSSL_RAND_SEED_OS +#endif +#ifndef OPENSSL_NO_AFALGENG +# define OPENSSL_NO_AFALGENG +#endif +#ifndef OPENSSL_NO_ASAN +# define OPENSSL_NO_ASAN +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG +# define OPENSSL_NO_CRYPTO_MDEBUG +#endif +#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE +#endif +#ifndef OPENSSL_NO_DEVCRYPTOENG +# define OPENSSL_NO_DEVCRYPTOENG +#endif +#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128 +# define OPENSSL_NO_EC_NISTP_64_GCC_128 +#endif +#ifndef OPENSSL_NO_EGD +# define OPENSSL_NO_EGD +#endif +#ifndef OPENSSL_NO_EXTERNAL_TESTS +# define OPENSSL_NO_EXTERNAL_TESTS +#endif +#ifndef OPENSSL_NO_FUZZ_AFL +# define OPENSSL_NO_FUZZ_AFL +#endif +#ifndef OPENSSL_NO_FUZZ_LIBFUZZER +# define OPENSSL_NO_FUZZ_LIBFUZZER +#endif +#ifndef OPENSSL_NO_HEARTBEATS +# define OPENSSL_NO_HEARTBEATS +#endif +#ifndef OPENSSL_NO_MSAN +# define OPENSSL_NO_MSAN +#endif +#ifndef OPENSSL_NO_SCTP +# define OPENSSL_NO_SCTP +#endif +#ifndef OPENSSL_NO_SSL_TRACE +# define OPENSSL_NO_SSL_TRACE +#endif +#ifndef OPENSSL_NO_SSL3 +# define OPENSSL_NO_SSL3 +#endif +#ifndef OPENSSL_NO_SSL3_METHOD +# define OPENSSL_NO_SSL3_METHOD +#endif +#ifndef OPENSSL_NO_TESTS +# define OPENSSL_NO_TESTS +#endif +#ifndef OPENSSL_NO_UBSAN +# define OPENSSL_NO_UBSAN +#endif +#ifndef OPENSSL_NO_UNIT_TEST +# define OPENSSL_NO_UNIT_TEST +#endif +#ifndef OPENSSL_NO_WEAK_SSL_CIPHERS +# define OPENSSL_NO_WEAK_SSL_CIPHERS +#endif +#ifndef OPENSSL_NO_DYNAMIC_ENGINE +# define OPENSSL_NO_DYNAMIC_ENGINE +#endif + + +/* + * Sometimes OPENSSSL_NO_xxx ends up with an empty file and some compilers + * don't like that. This will hopefully silence them. + */ +#define NON_EMPTY_TRANSLATION_UNIT static void *dummy = &dummy; + +/* + * Applications should use -DOPENSSL_API_COMPAT= to suppress the + * declarations of functions deprecated in or before . Otherwise, they + * still won't see them if the library has been built to disable deprecated + * functions. + */ +#ifndef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f; +# ifdef __GNUC__ +# if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 0) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# elif defined(__SUNPRO_C) +# if (__SUNPRO_C >= 0x5130) +# undef DECLARE_DEPRECATED +# define DECLARE_DEPRECATED(f) f __attribute__ ((deprecated)); +# endif +# endif +#endif + +#ifndef OPENSSL_FILE +# ifdef OPENSSL_NO_FILENAMES +# define OPENSSL_FILE "" +# define OPENSSL_LINE 0 +# else +# define OPENSSL_FILE __FILE__ +# define OPENSSL_LINE __LINE__ +# endif +#endif + +#ifndef OPENSSL_MIN_API +# define OPENSSL_MIN_API 0 +#endif + +#if !defined(OPENSSL_API_COMPAT) || OPENSSL_API_COMPAT < OPENSSL_MIN_API +# undef OPENSSL_API_COMPAT +# define OPENSSL_API_COMPAT OPENSSL_MIN_API +#endif + +/* + * Do not deprecate things to be deprecated in version 1.2.0 before the + * OpenSSL version number matches. + */ +#if OPENSSL_VERSION_NUMBER < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) f; +#elif OPENSSL_API_COMPAT < 0x10200000L +# define DEPRECATEDIN_1_2_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_2_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10100000L +# define DEPRECATEDIN_1_1_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_1_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x10000000L +# define DEPRECATEDIN_1_0_0(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_1_0_0(f) +#endif + +#if OPENSSL_API_COMPAT < 0x00908000L +# define DEPRECATEDIN_0_9_8(f) DECLARE_DEPRECATED(f) +#else +# define DEPRECATEDIN_0_9_8(f) +#endif + +/* Generate 80386 code? */ +#undef I386_ONLY + +#undef OPENSSL_UNISTD +#define OPENSSL_UNISTD + +#define OPENSSL_EXPORT_VAR_AS_FUNCTION + +/* + * The following are cipher-specific, but are part of the public API. + */ +#if !defined(OPENSSL_SYS_UEFI) +# undef BN_LLONG +/* Only one for the following should be defined */ +# undef SIXTY_FOUR_BIT_LONG +# define SIXTY_FOUR_BIT +# undef THIRTY_TWO_BIT +#endif + +#define RC4_INT unsigned int + +#ifdef __cplusplus +} +#endif diff --git a/include/openssl/openssl/opensslv.h b/include/openssl/openssl/opensslv.h new file mode 100644 index 00000000..0cd6b2f9 --- /dev/null +++ b/include/openssl/openssl/opensslv.h @@ -0,0 +1,101 @@ +/* + * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSLV_H +# define HEADER_OPENSSLV_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * Numeric release version identifier: + * MNNFFPPS: major minor fix patch status + * The status nibble has one of the values 0 for development, 1 to e for betas + * 1 to 14, and f for release. The patch level is exactly that. + * For example: + * 0.9.3-dev 0x00903000 + * 0.9.3-beta1 0x00903001 + * 0.9.3-beta2-dev 0x00903002 + * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) + * 0.9.3 0x0090300f + * 0.9.3a 0x0090301f + * 0.9.4 0x0090400f + * 1.2.3z 0x102031af + * + * For continuity reasons (because 0.9.5 is already out, and is coded + * 0x00905100), between 0.9.5 and 0.9.6 the coding of the patch level + * part is slightly different, by setting the highest bit. This means + * that 0.9.5a looks like this: 0x0090581f. At 0.9.6, we can start + * with 0x0090600S... + * + * (Prior to 0.9.3-dev a different scheme was used: 0.9.2b is 0x0922.) + * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for + * major minor fix final patch/beta) + */ +# define OPENSSL_VERSION_NUMBER 0x101010bfL +# define OPENSSL_VERSION_TEXT "OpenSSL 1.1.1k 25 Mar 2021" + +/*- + * The macros below are to be used for shared library (.so, .dll, ...) + * versioning. That kind of versioning works a bit differently between + * operating systems. The most usual scheme is to set a major and a minor + * number, and have the runtime loader check that the major number is equal + * to what it was at application link time, while the minor number has to + * be greater or equal to what it was at application link time. With this + * scheme, the version number is usually part of the file name, like this: + * + * libcrypto.so.0.9 + * + * Some unixen also make a softlink with the major version number only: + * + * libcrypto.so.0 + * + * On Tru64 and IRIX 6.x it works a little bit differently. There, the + * shared library version is stored in the file, and is actually a series + * of versions, separated by colons. The rightmost version present in the + * library when linking an application is stored in the application to be + * matched at run time. When the application is run, a check is done to + * see if the library version stored in the application matches any of the + * versions in the version string of the library itself. + * This version string can be constructed in any way, depending on what + * kind of matching is desired. However, to implement the same scheme as + * the one used in the other unixen, all compatible versions, from lowest + * to highest, should be part of the string. Consecutive builds would + * give the following versions strings: + * + * 3.0 + * 3.0:3.1 + * 3.0:3.1:3.2 + * 4.0 + * 4.0:4.1 + * + * Notice how version 4 is completely incompatible with version, and + * therefore give the breach you can see. + * + * There may be other schemes as well that I haven't yet discovered. + * + * So, here's the way it works here: first of all, the library version + * number doesn't need at all to match the overall OpenSSL version. + * However, it's nice and more understandable if it actually does. + * The current library version is stored in the macro SHLIB_VERSION_NUMBER, + * which is just a piece of text in the format "M.m.e" (Major, minor, edit). + * For the sake of Tru64, IRIX, and any other OS that behaves in similar ways, + * we need to keep a history of version numbers, which is done in the + * macro SHLIB_VERSION_HISTORY. The numbers are separated by colons and + * should only keep the versions that are binary compatible with the current. + */ +# define SHLIB_VERSION_HISTORY "" +# define SHLIB_VERSION_NUMBER "1.1" + + +#ifdef __cplusplus +} +#endif +#endif /* HEADER_OPENSSLV_H */ diff --git a/include/openssl/openssl/ossl_typ.h b/include/openssl/openssl/ossl_typ.h new file mode 100644 index 00000000..e0edfaaf --- /dev/null +++ b/include/openssl/openssl/ossl_typ.h @@ -0,0 +1,197 @@ +/* + * Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_OPENSSL_TYPES_H +# define HEADER_OPENSSL_TYPES_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +# include + +# ifdef NO_ASN1_TYPEDEFS +# define ASN1_INTEGER ASN1_STRING +# define ASN1_ENUMERATED ASN1_STRING +# define ASN1_BIT_STRING ASN1_STRING +# define ASN1_OCTET_STRING ASN1_STRING +# define ASN1_PRINTABLESTRING ASN1_STRING +# define ASN1_T61STRING ASN1_STRING +# define ASN1_IA5STRING ASN1_STRING +# define ASN1_UTCTIME ASN1_STRING +# define ASN1_GENERALIZEDTIME ASN1_STRING +# define ASN1_TIME ASN1_STRING +# define ASN1_GENERALSTRING ASN1_STRING +# define ASN1_UNIVERSALSTRING ASN1_STRING +# define ASN1_BMPSTRING ASN1_STRING +# define ASN1_VISIBLESTRING ASN1_STRING +# define ASN1_UTF8STRING ASN1_STRING +# define ASN1_BOOLEAN int +# define ASN1_NULL int +# else +typedef struct asn1_string_st ASN1_INTEGER; +typedef struct asn1_string_st ASN1_ENUMERATED; +typedef struct asn1_string_st ASN1_BIT_STRING; +typedef struct asn1_string_st ASN1_OCTET_STRING; +typedef struct asn1_string_st ASN1_PRINTABLESTRING; +typedef struct asn1_string_st ASN1_T61STRING; +typedef struct asn1_string_st ASN1_IA5STRING; +typedef struct asn1_string_st ASN1_GENERALSTRING; +typedef struct asn1_string_st ASN1_UNIVERSALSTRING; +typedef struct asn1_string_st ASN1_BMPSTRING; +typedef struct asn1_string_st ASN1_UTCTIME; +typedef struct asn1_string_st ASN1_TIME; +typedef struct asn1_string_st ASN1_GENERALIZEDTIME; +typedef struct asn1_string_st ASN1_VISIBLESTRING; +typedef struct asn1_string_st ASN1_UTF8STRING; +typedef struct asn1_string_st ASN1_STRING; +typedef int ASN1_BOOLEAN; +typedef int ASN1_NULL; +# endif + +typedef struct asn1_object_st ASN1_OBJECT; + +typedef struct ASN1_ITEM_st ASN1_ITEM; +typedef struct asn1_pctx_st ASN1_PCTX; +typedef struct asn1_sctx_st ASN1_SCTX; + +# ifdef _WIN32 +# undef X509_NAME +# undef X509_EXTENSIONS +# undef PKCS7_ISSUER_AND_SERIAL +# undef PKCS7_SIGNER_INFO +# undef OCSP_REQUEST +# undef OCSP_RESPONSE +# endif + +# ifdef BIGNUM +# undef BIGNUM +# endif +struct dane_st; +typedef struct bio_st BIO; +typedef struct bignum_st BIGNUM; +typedef struct bignum_ctx BN_CTX; +typedef struct bn_blinding_st BN_BLINDING; +typedef struct bn_mont_ctx_st BN_MONT_CTX; +typedef struct bn_recp_ctx_st BN_RECP_CTX; +typedef struct bn_gencb_st BN_GENCB; + +typedef struct buf_mem_st BUF_MEM; + +typedef struct evp_cipher_st EVP_CIPHER; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_md_st EVP_MD; +typedef struct evp_md_ctx_st EVP_MD_CTX; +typedef struct evp_pkey_st EVP_PKEY; + +typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD; + +typedef struct evp_pkey_method_st EVP_PKEY_METHOD; +typedef struct evp_pkey_ctx_st EVP_PKEY_CTX; + +typedef struct evp_Encode_Ctx_st EVP_ENCODE_CTX; + +typedef struct hmac_ctx_st HMAC_CTX; + +typedef struct dh_st DH; +typedef struct dh_method DH_METHOD; + +typedef struct dsa_st DSA; +typedef struct dsa_method DSA_METHOD; + +typedef struct rsa_st RSA; +typedef struct rsa_meth_st RSA_METHOD; +typedef struct rsa_pss_params_st RSA_PSS_PARAMS; + +typedef struct ec_key_st EC_KEY; +typedef struct ec_key_method_st EC_KEY_METHOD; + +typedef struct rand_meth_st RAND_METHOD; +typedef struct rand_drbg_st RAND_DRBG; + +typedef struct ssl_dane_st SSL_DANE; +typedef struct x509_st X509; +typedef struct X509_algor_st X509_ALGOR; +typedef struct X509_crl_st X509_CRL; +typedef struct x509_crl_method_st X509_CRL_METHOD; +typedef struct x509_revoked_st X509_REVOKED; +typedef struct X509_name_st X509_NAME; +typedef struct X509_pubkey_st X509_PUBKEY; +typedef struct x509_store_st X509_STORE; +typedef struct x509_store_ctx_st X509_STORE_CTX; + +typedef struct x509_object_st X509_OBJECT; +typedef struct x509_lookup_st X509_LOOKUP; +typedef struct x509_lookup_method_st X509_LOOKUP_METHOD; +typedef struct X509_VERIFY_PARAM_st X509_VERIFY_PARAM; + +typedef struct x509_sig_info_st X509_SIG_INFO; + +typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO; + +typedef struct v3_ext_ctx X509V3_CTX; +typedef struct conf_st CONF; +typedef struct ossl_init_settings_st OPENSSL_INIT_SETTINGS; + +typedef struct ui_st UI; +typedef struct ui_method_st UI_METHOD; + +typedef struct engine_st ENGINE; +typedef struct ssl_st SSL; +typedef struct ssl_ctx_st SSL_CTX; + +typedef struct comp_ctx_st COMP_CTX; +typedef struct comp_method_st COMP_METHOD; + +typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; +typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; +typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; +typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; + +typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID; +typedef struct DIST_POINT_st DIST_POINT; +typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT; +typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS; + +typedef struct crypto_ex_data_st CRYPTO_EX_DATA; + +typedef struct ocsp_req_ctx_st OCSP_REQ_CTX; +typedef struct ocsp_response_st OCSP_RESPONSE; +typedef struct ocsp_responder_id_st OCSP_RESPID; + +typedef struct sct_st SCT; +typedef struct sct_ctx_st SCT_CTX; +typedef struct ctlog_st CTLOG; +typedef struct ctlog_store_st CTLOG_STORE; +typedef struct ct_policy_eval_ctx_st CT_POLICY_EVAL_CTX; + +typedef struct ossl_store_info_st OSSL_STORE_INFO; +typedef struct ossl_store_search_st OSSL_STORE_SEARCH; + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L && \ + defined(INTMAX_MAX) && defined(UINTMAX_MAX) +typedef intmax_t ossl_intmax_t; +typedef uintmax_t ossl_uintmax_t; +#else +/* + * Not long long, because the C-library can only be expected to provide + * strtoll(), strtoull() at the same time as intmax_t and strtoimax(), + * strtoumax(). Since we use these for parsing arguments, we need the + * conversion functions, not just the sizes. + */ +typedef long ossl_intmax_t; +typedef unsigned long ossl_uintmax_t; +#endif + +#ifdef __cplusplus +} +#endif +#endif /* def HEADER_OPENSSL_TYPES_H */ diff --git a/include/openssl/openssl/pem.h b/include/openssl/openssl/pem.h new file mode 100644 index 00000000..2ef5b5d0 --- /dev/null +++ b/include/openssl/openssl/pem.h @@ -0,0 +1,378 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEM_H +# define HEADER_PEM_H + +# include +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define PEM_BUFSIZE 1024 + +# define PEM_STRING_X509_OLD "X509 CERTIFICATE" +# define PEM_STRING_X509 "CERTIFICATE" +# define PEM_STRING_X509_TRUSTED "TRUSTED CERTIFICATE" +# define PEM_STRING_X509_REQ_OLD "NEW CERTIFICATE REQUEST" +# define PEM_STRING_X509_REQ "CERTIFICATE REQUEST" +# define PEM_STRING_X509_CRL "X509 CRL" +# define PEM_STRING_EVP_PKEY "ANY PRIVATE KEY" +# define PEM_STRING_PUBLIC "PUBLIC KEY" +# define PEM_STRING_RSA "RSA PRIVATE KEY" +# define PEM_STRING_RSA_PUBLIC "RSA PUBLIC KEY" +# define PEM_STRING_DSA "DSA PRIVATE KEY" +# define PEM_STRING_DSA_PUBLIC "DSA PUBLIC KEY" +# define PEM_STRING_PKCS7 "PKCS7" +# define PEM_STRING_PKCS7_SIGNED "PKCS #7 SIGNED DATA" +# define PEM_STRING_PKCS8 "ENCRYPTED PRIVATE KEY" +# define PEM_STRING_PKCS8INF "PRIVATE KEY" +# define PEM_STRING_DHPARAMS "DH PARAMETERS" +# define PEM_STRING_DHXPARAMS "X9.42 DH PARAMETERS" +# define PEM_STRING_SSL_SESSION "SSL SESSION PARAMETERS" +# define PEM_STRING_DSAPARAMS "DSA PARAMETERS" +# define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" +# define PEM_STRING_ECPARAMETERS "EC PARAMETERS" +# define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" +# define PEM_STRING_PARAMETERS "PARAMETERS" +# define PEM_STRING_CMS "CMS" + +# define PEM_TYPE_ENCRYPTED 10 +# define PEM_TYPE_MIC_ONLY 20 +# define PEM_TYPE_MIC_CLEAR 30 +# define PEM_TYPE_CLEAR 40 + +/* + * These macros make the PEM_read/PEM_write functions easier to maintain and + * write. Now they are all implemented with either: IMPLEMENT_PEM_rw(...) or + * IMPLEMENT_PEM_rw_cb(...) + */ + +# ifdef OPENSSL_NO_STDIO + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) /**/ +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) /**/ +# else + +# define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ +type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, const type *x) \ +{ \ +return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ +int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, \ + void *u) \ + { \ + return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \ + } + +# endif + +# define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ +type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ +{ \ +return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \ +} + +# define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, const type *x) \ +{ \ +return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \ +} + +# define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ +int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ + { \ + return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \ + } + +# define IMPLEMENT_PEM_write(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_write_cb_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ + IMPLEMENT_PEM_read_fp(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_const(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_const(name, type, str, asn1) + +# define IMPLEMENT_PEM_rw_cb(name, type, str, asn1) \ + IMPLEMENT_PEM_read(name, type, str, asn1) \ + IMPLEMENT_PEM_write_cb(name, type, str, asn1) + +/* These are the same except they are for the declarations */ + +# if defined(OPENSSL_NO_STDIO) + +# define DECLARE_PEM_read_fp(name, type) /**/ +# define DECLARE_PEM_write_fp(name, type) /**/ +# define DECLARE_PEM_write_fp_const(name, type) /**/ +# define DECLARE_PEM_write_cb_fp(name, type) /**/ +# else + +# define DECLARE_PEM_read_fp(name, type) \ + type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x); + +# define DECLARE_PEM_write_fp_const(name, type) \ + int PEM_write_##name(FILE *fp, const type *x); + +# define DECLARE_PEM_write_cb_fp(name, type) \ + int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# endif + +# define DECLARE_PEM_read_bio(name, type) \ + type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x); + +# define DECLARE_PEM_write_bio_const(name, type) \ + int PEM_write_bio_##name(BIO *bp, const type *x); + +# define DECLARE_PEM_write_cb_bio(name, type) \ + int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ + unsigned char *kstr, int klen, pem_password_cb *cb, void *u); + +# define DECLARE_PEM_write(name, type) \ + DECLARE_PEM_write_bio(name, type) \ + DECLARE_PEM_write_fp(name, type) +# define DECLARE_PEM_write_const(name, type) \ + DECLARE_PEM_write_bio_const(name, type) \ + DECLARE_PEM_write_fp_const(name, type) +# define DECLARE_PEM_write_cb(name, type) \ + DECLARE_PEM_write_cb_bio(name, type) \ + DECLARE_PEM_write_cb_fp(name, type) +# define DECLARE_PEM_read(name, type) \ + DECLARE_PEM_read_bio(name, type) \ + DECLARE_PEM_read_fp(name, type) +# define DECLARE_PEM_rw(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write(name, type) +# define DECLARE_PEM_rw_const(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_const(name, type) +# define DECLARE_PEM_rw_cb(name, type) \ + DECLARE_PEM_read(name, type) \ + DECLARE_PEM_write_cb(name, type) +typedef int pem_password_cb (char *buf, int size, int rwflag, void *userdata); + +int PEM_get_EVP_CIPHER_INFO(char *header, EVP_CIPHER_INFO *cipher); +int PEM_do_header(EVP_CIPHER_INFO *cipher, unsigned char *data, long *len, + pem_password_cb *callback, void *u); + +int PEM_read_bio(BIO *bp, char **name, char **header, + unsigned char **data, long *len); +# define PEM_FLAG_SECURE 0x1 +# define PEM_FLAG_EAY_COMPATIBLE 0x2 +# define PEM_FLAG_ONLY_B64 0x4 +int PEM_read_bio_ex(BIO *bp, char **name, char **header, + unsigned char **data, long *len, unsigned int flags); +int PEM_bytes_read_bio_secmem(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +int PEM_write_bio(BIO *bp, const char *name, const char *hdr, + const unsigned char *data, long len); +int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, + const char *name, BIO *bp, pem_password_cb *cb, + void *u); +void *PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, void *x, + const EVP_CIPHER *enc, unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cd, void *u); + +#ifndef OPENSSL_NO_STDIO +int PEM_read(FILE *fp, char **name, char **header, + unsigned char **data, long *len); +int PEM_write(FILE *fp, const char *name, const char *hdr, + const unsigned char *data, long len); +void *PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, + pem_password_cb *cb, void *u); +int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, + void *x, const EVP_CIPHER *enc, unsigned char *kstr, + int klen, pem_password_cb *callback, void *u); +STACK_OF(X509_INFO) *PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, + pem_password_cb *cb, void *u); +#endif + +int PEM_SignInit(EVP_MD_CTX *ctx, EVP_MD *type); +int PEM_SignUpdate(EVP_MD_CTX *ctx, unsigned char *d, unsigned int cnt); +int PEM_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, + unsigned int *siglen, EVP_PKEY *pkey); + +/* The default pem_password_cb that's used internally */ +int PEM_def_callback(char *buf, int num, int rwflag, void *userdata); +void PEM_proc_type(char *buf, int type); +void PEM_dek_info(char *buf, const char *type, int len, char *str); + +# include + +DECLARE_PEM_rw(X509, X509) +DECLARE_PEM_rw(X509_AUX, X509) +DECLARE_PEM_rw(X509_REQ, X509_REQ) +DECLARE_PEM_write(X509_REQ_NEW, X509_REQ) +DECLARE_PEM_rw(X509_CRL, X509_CRL) +DECLARE_PEM_rw(PKCS7, PKCS7) +DECLARE_PEM_rw(NETSCAPE_CERT_SEQUENCE, NETSCAPE_CERT_SEQUENCE) +DECLARE_PEM_rw(PKCS8, X509_SIG) +DECLARE_PEM_rw(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) +# ifndef OPENSSL_NO_RSA +DECLARE_PEM_rw_cb(RSAPrivateKey, RSA) +DECLARE_PEM_rw_const(RSAPublicKey, RSA) +DECLARE_PEM_rw(RSA_PUBKEY, RSA) +# endif +# ifndef OPENSSL_NO_DSA +DECLARE_PEM_rw_cb(DSAPrivateKey, DSA) +DECLARE_PEM_rw(DSA_PUBKEY, DSA) +DECLARE_PEM_rw_const(DSAparams, DSA) +# endif +# ifndef OPENSSL_NO_EC +DECLARE_PEM_rw_const(ECPKParameters, EC_GROUP) +DECLARE_PEM_rw_cb(ECPrivateKey, EC_KEY) +DECLARE_PEM_rw(EC_PUBKEY, EC_KEY) +# endif +# ifndef OPENSSL_NO_DH +DECLARE_PEM_rw_const(DHparams, DH) +DECLARE_PEM_write_const(DHxparams, DH) +# endif +DECLARE_PEM_rw_cb(PrivateKey, EVP_PKEY) +DECLARE_PEM_rw(PUBKEY, EVP_PKEY) + +int PEM_write_bio_PrivateKey_traditional(BIO *bp, EVP_PKEY *x, + const EVP_CIPHER *enc, + unsigned char *kstr, int klen, + pem_password_cb *cb, void *u); + +int PEM_write_bio_PKCS8PrivateKey_nid(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_bio_PKCS8PrivateKey(BIO *, EVP_PKEY *, const EVP_CIPHER *, + char *, int, pem_password_cb *, void *); +int i2d_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_bio(BIO *bp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +# ifndef OPENSSL_NO_STDIO +int i2d_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int i2d_PKCS8PrivateKey_nid_fp(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); +int PEM_write_PKCS8PrivateKey_nid(FILE *fp, EVP_PKEY *x, int nid, + char *kstr, int klen, + pem_password_cb *cb, void *u); + +EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, + void *u); + +int PEM_write_PKCS8PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc, + char *kstr, int klen, pem_password_cb *cd, + void *u); +# endif +EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x); +int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x); + +# ifndef OPENSSL_NO_DSA +EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length); +EVP_PKEY *b2i_PrivateKey_bio(BIO *in); +EVP_PKEY *b2i_PublicKey_bio(BIO *in); +int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk); +int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk); +# ifndef OPENSSL_NO_RC4 +EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u); +int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel, + pem_password_cb *cb, void *u); +# endif +# endif + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/pemerr.h b/include/openssl/openssl/pemerr.h new file mode 100644 index 00000000..4f7e3574 --- /dev/null +++ b/include/openssl/openssl/pemerr.h @@ -0,0 +1,105 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PEMERR_H +# define HEADER_PEMERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PEM_strings(void); + +/* + * PEM function codes. + */ +# define PEM_F_B2I_DSS 127 +# define PEM_F_B2I_PVK_BIO 128 +# define PEM_F_B2I_RSA 129 +# define PEM_F_CHECK_BITLEN_DSA 130 +# define PEM_F_CHECK_BITLEN_RSA 131 +# define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 +# define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 +# define PEM_F_DO_B2I 132 +# define PEM_F_DO_B2I_BIO 133 +# define PEM_F_DO_BLOB_HEADER 134 +# define PEM_F_DO_I2B 146 +# define PEM_F_DO_PK8PKEY 126 +# define PEM_F_DO_PK8PKEY_FP 125 +# define PEM_F_DO_PVK_BODY 135 +# define PEM_F_DO_PVK_HEADER 136 +# define PEM_F_GET_HEADER_AND_DATA 143 +# define PEM_F_GET_NAME 144 +# define PEM_F_I2B_PVK 137 +# define PEM_F_I2B_PVK_BIO 138 +# define PEM_F_LOAD_IV 101 +# define PEM_F_PEM_ASN1_READ 102 +# define PEM_F_PEM_ASN1_READ_BIO 103 +# define PEM_F_PEM_ASN1_WRITE 104 +# define PEM_F_PEM_ASN1_WRITE_BIO 105 +# define PEM_F_PEM_DEF_CALLBACK 100 +# define PEM_F_PEM_DO_HEADER 106 +# define PEM_F_PEM_GET_EVP_CIPHER_INFO 107 +# define PEM_F_PEM_READ 108 +# define PEM_F_PEM_READ_BIO 109 +# define PEM_F_PEM_READ_BIO_DHPARAMS 141 +# define PEM_F_PEM_READ_BIO_EX 145 +# define PEM_F_PEM_READ_BIO_PARAMETERS 140 +# define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 +# define PEM_F_PEM_READ_DHPARAMS 142 +# define PEM_F_PEM_READ_PRIVATEKEY 124 +# define PEM_F_PEM_SIGNFINAL 112 +# define PEM_F_PEM_WRITE 113 +# define PEM_F_PEM_WRITE_BIO 114 +# define PEM_F_PEM_WRITE_BIO_PRIVATEKEY_TRADITIONAL 147 +# define PEM_F_PEM_WRITE_PRIVATEKEY 139 +# define PEM_F_PEM_X509_INFO_READ 115 +# define PEM_F_PEM_X509_INFO_READ_BIO 116 +# define PEM_F_PEM_X509_INFO_WRITE_BIO 117 + +/* + * PEM reason codes. + */ +# define PEM_R_BAD_BASE64_DECODE 100 +# define PEM_R_BAD_DECRYPT 101 +# define PEM_R_BAD_END_LINE 102 +# define PEM_R_BAD_IV_CHARS 103 +# define PEM_R_BAD_MAGIC_NUMBER 116 +# define PEM_R_BAD_PASSWORD_READ 104 +# define PEM_R_BAD_VERSION_NUMBER 117 +# define PEM_R_BIO_WRITE_FAILURE 118 +# define PEM_R_CIPHER_IS_NULL 127 +# define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 +# define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119 +# define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120 +# define PEM_R_HEADER_TOO_LONG 128 +# define PEM_R_INCONSISTENT_HEADER 121 +# define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122 +# define PEM_R_KEYBLOB_TOO_SHORT 123 +# define PEM_R_MISSING_DEK_IV 129 +# define PEM_R_NOT_DEK_INFO 105 +# define PEM_R_NOT_ENCRYPTED 106 +# define PEM_R_NOT_PROC_TYPE 107 +# define PEM_R_NO_START_LINE 108 +# define PEM_R_PROBLEMS_GETTING_PASSWORD 109 +# define PEM_R_PVK_DATA_TOO_SHORT 124 +# define PEM_R_PVK_TOO_SHORT 125 +# define PEM_R_READ_KEY 111 +# define PEM_R_SHORT_HEADER 112 +# define PEM_R_UNEXPECTED_DEK_IV 130 +# define PEM_R_UNSUPPORTED_CIPHER 113 +# define PEM_R_UNSUPPORTED_ENCRYPTION 114 +# define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126 +# define PEM_R_UNSUPPORTED_PUBLIC_KEY_TYPE 110 + +#endif diff --git a/include/openssl/openssl/pkcs7.h b/include/openssl/openssl/pkcs7.h new file mode 100644 index 00000000..9b66e002 --- /dev/null +++ b/include/openssl/openssl/pkcs7.h @@ -0,0 +1,319 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7_H +# define HEADER_PKCS7_H + +# include +# include +# include + +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +Encryption_ID DES-CBC +Digest_ID MD5 +Digest_Encryption_ID rsaEncryption +Key_Encryption_ID rsaEncryption +*/ + +typedef struct pkcs7_issuer_and_serial_st { + X509_NAME *issuer; + ASN1_INTEGER *serial; +} PKCS7_ISSUER_AND_SERIAL; + +typedef struct pkcs7_signer_info_st { + ASN1_INTEGER *version; /* version 1 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *digest_alg; + STACK_OF(X509_ATTRIBUTE) *auth_attr; /* [ 0 ] */ + X509_ALGOR *digest_enc_alg; + ASN1_OCTET_STRING *enc_digest; + STACK_OF(X509_ATTRIBUTE) *unauth_attr; /* [ 1 ] */ + /* The private key to sign with */ + EVP_PKEY *pkey; +} PKCS7_SIGNER_INFO; + +DEFINE_STACK_OF(PKCS7_SIGNER_INFO) + +typedef struct pkcs7_recip_info_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ISSUER_AND_SERIAL *issuer_and_serial; + X509_ALGOR *key_enc_algor; + ASN1_OCTET_STRING *enc_key; + X509 *cert; /* get the pub-key from this */ +} PKCS7_RECIP_INFO; + +DEFINE_STACK_OF(PKCS7_RECIP_INFO) + +typedef struct pkcs7_signed_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + struct pkcs7_st *contents; +} PKCS7_SIGNED; +/* + * The above structure is very very similar to PKCS7_SIGN_ENVELOPE. How about + * merging the two + */ + +typedef struct pkcs7_enc_content_st { + ASN1_OBJECT *content_type; + X509_ALGOR *algorithm; + ASN1_OCTET_STRING *enc_data; /* [ 0 ] */ + const EVP_CIPHER *cipher; +} PKCS7_ENC_CONTENT; + +typedef struct pkcs7_enveloped_st { + ASN1_INTEGER *version; /* version 0 */ + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENVELOPE; + +typedef struct pkcs7_signedandenveloped_st { + ASN1_INTEGER *version; /* version 1 */ + STACK_OF(X509_ALGOR) *md_algs; /* md used */ + STACK_OF(X509) *cert; /* [ 0 ] */ + STACK_OF(X509_CRL) *crl; /* [ 1 ] */ + STACK_OF(PKCS7_SIGNER_INFO) *signer_info; + PKCS7_ENC_CONTENT *enc_data; + STACK_OF(PKCS7_RECIP_INFO) *recipientinfo; +} PKCS7_SIGN_ENVELOPE; + +typedef struct pkcs7_digest_st { + ASN1_INTEGER *version; /* version 0 */ + X509_ALGOR *md; /* md used */ + struct pkcs7_st *contents; + ASN1_OCTET_STRING *digest; +} PKCS7_DIGEST; + +typedef struct pkcs7_encrypted_st { + ASN1_INTEGER *version; /* version 0 */ + PKCS7_ENC_CONTENT *enc_data; +} PKCS7_ENCRYPT; + +typedef struct pkcs7_st { + /* + * The following is non NULL if it contains ASN1 encoding of this + * structure + */ + unsigned char *asn1; + long length; +# define PKCS7_S_HEADER 0 +# define PKCS7_S_BODY 1 +# define PKCS7_S_TAIL 2 + int state; /* used during processing */ + int detached; + ASN1_OBJECT *type; + /* content as defined by the type */ + /* + * all encryption/message digests are applied to the 'contents', leaving + * out the 'type' field. + */ + union { + char *ptr; + /* NID_pkcs7_data */ + ASN1_OCTET_STRING *data; + /* NID_pkcs7_signed */ + PKCS7_SIGNED *sign; + /* NID_pkcs7_enveloped */ + PKCS7_ENVELOPE *enveloped; + /* NID_pkcs7_signedAndEnveloped */ + PKCS7_SIGN_ENVELOPE *signed_and_enveloped; + /* NID_pkcs7_digest */ + PKCS7_DIGEST *digest; + /* NID_pkcs7_encrypted */ + PKCS7_ENCRYPT *encrypted; + /* Anything else */ + ASN1_TYPE *other; + } d; +} PKCS7; + +DEFINE_STACK_OF(PKCS7) + +# define PKCS7_OP_SET_DETACHED_SIGNATURE 1 +# define PKCS7_OP_GET_DETACHED_SIGNATURE 2 + +# define PKCS7_get_signed_attributes(si) ((si)->auth_attr) +# define PKCS7_get_attributes(si) ((si)->unauth_attr) + +# define PKCS7_type_is_signed(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_signed) +# define PKCS7_type_is_encrypted(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted) +# define PKCS7_type_is_enveloped(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_enveloped) +# define PKCS7_type_is_signedAndEnveloped(a) \ + (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) +# define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) +# define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) + +# define PKCS7_set_detached(p,v) \ + PKCS7_ctrl(p,PKCS7_OP_SET_DETACHED_SIGNATURE,v,NULL) +# define PKCS7_get_detached(p) \ + PKCS7_ctrl(p,PKCS7_OP_GET_DETACHED_SIGNATURE,0,NULL) + +# define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) + +/* S/MIME related flags */ + +# define PKCS7_TEXT 0x1 +# define PKCS7_NOCERTS 0x2 +# define PKCS7_NOSIGS 0x4 +# define PKCS7_NOCHAIN 0x8 +# define PKCS7_NOINTERN 0x10 +# define PKCS7_NOVERIFY 0x20 +# define PKCS7_DETACHED 0x40 +# define PKCS7_BINARY 0x80 +# define PKCS7_NOATTR 0x100 +# define PKCS7_NOSMIMECAP 0x200 +# define PKCS7_NOOLDMIMETYPE 0x400 +# define PKCS7_CRLFEOL 0x800 +# define PKCS7_STREAM 0x1000 +# define PKCS7_NOCRL 0x2000 +# define PKCS7_PARTIAL 0x4000 +# define PKCS7_REUSE_DIGEST 0x8000 +# define PKCS7_NO_DUAL_CONTENT 0x10000 + +/* Flags: for compatibility with older code */ + +# define SMIME_TEXT PKCS7_TEXT +# define SMIME_NOCERTS PKCS7_NOCERTS +# define SMIME_NOSIGS PKCS7_NOSIGS +# define SMIME_NOCHAIN PKCS7_NOCHAIN +# define SMIME_NOINTERN PKCS7_NOINTERN +# define SMIME_NOVERIFY PKCS7_NOVERIFY +# define SMIME_DETACHED PKCS7_DETACHED +# define SMIME_BINARY PKCS7_BINARY +# define SMIME_NOATTR PKCS7_NOATTR + +/* CRLF ASCII canonicalisation */ +# define SMIME_ASCIICRLF 0x80000 + +DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) + +int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data, + const EVP_MD *type, unsigned char *md, + unsigned int *len); +# ifndef OPENSSL_NO_STDIO +PKCS7 *d2i_PKCS7_fp(FILE *fp, PKCS7 **p7); +int i2d_PKCS7_fp(FILE *fp, PKCS7 *p7); +# endif +PKCS7 *PKCS7_dup(PKCS7 *p7); +PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); +int i2d_PKCS7_bio(BIO *bp, PKCS7 *p7); +int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); +int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags); + +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNED) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_SIGN_ENVELOPE) +DECLARE_ASN1_FUNCTIONS(PKCS7_DIGEST) +DECLARE_ASN1_FUNCTIONS(PKCS7_ENCRYPT) +DECLARE_ASN1_FUNCTIONS(PKCS7) + +DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN) +DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) + +DECLARE_ASN1_NDEF_FUNCTION(PKCS7) +DECLARE_ASN1_PRINT_FUNCTION(PKCS7) + +long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); + +int PKCS7_set_type(PKCS7 *p7, int type); +int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other); +int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); +int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, + const EVP_MD *dgst); +int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si); +int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); +int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); +int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); +int PKCS7_content_new(PKCS7 *p7, int nid); +int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, + BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si, + X509 *x509); + +BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio); +int PKCS7_dataFinal(PKCS7 *p7, BIO *bio); +BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert); + +PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, + EVP_PKEY *pkey, const EVP_MD *dgst); +X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si); +int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md); +STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); + +PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); +void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk, + X509_ALGOR **pdig, X509_ALGOR **psig); +void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc); +int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); +int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); +int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); +int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7); + +PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); +ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_add_signed_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int type, + void *data); +int PKCS7_add_attribute(PKCS7_SIGNER_INFO *p7si, int nid, int atrtype, + void *value); +ASN1_TYPE *PKCS7_get_attribute(PKCS7_SIGNER_INFO *si, int nid); +ASN1_TYPE *PKCS7_get_signed_attribute(PKCS7_SIGNER_INFO *si, int nid); +int PKCS7_set_signed_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); +int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si, + STACK_OF(X509_ATTRIBUTE) *sk); + +PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, + BIO *data, int flags); + +PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, + X509 *signcert, EVP_PKEY *pkey, + const EVP_MD *md, int flags); + +int PKCS7_final(PKCS7 *p7, BIO *data, int flags); +int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, + BIO *indata, BIO *out, int flags); +STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, + int flags); +PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, + int flags); +int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, + int flags); + +int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, + STACK_OF(X509_ALGOR) *cap); +STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); +int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); + +int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid); +int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t); +int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si, + const unsigned char *md, int mdlen); + +int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); +PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); + +BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/pkcs7err.h b/include/openssl/openssl/pkcs7err.h new file mode 100644 index 00000000..02e0299a --- /dev/null +++ b/include/openssl/openssl/pkcs7err.h @@ -0,0 +1,103 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_PKCS7ERR_H +# define HEADER_PKCS7ERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_PKCS7_strings(void); + +/* + * PKCS7 function codes. + */ +# define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136 +# define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135 +# define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 +# define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 +# define PKCS7_F_PKCS7_ADD_CRL 101 +# define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 +# define PKCS7_F_PKCS7_ADD_SIGNATURE 131 +# define PKCS7_F_PKCS7_ADD_SIGNER 103 +# define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 +# define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138 +# define PKCS7_F_PKCS7_CTRL 104 +# define PKCS7_F_PKCS7_DATADECODE 112 +# define PKCS7_F_PKCS7_DATAFINAL 128 +# define PKCS7_F_PKCS7_DATAINIT 105 +# define PKCS7_F_PKCS7_DATAVERIFY 107 +# define PKCS7_F_PKCS7_DECRYPT 114 +# define PKCS7_F_PKCS7_DECRYPT_RINFO 133 +# define PKCS7_F_PKCS7_ENCODE_RINFO 132 +# define PKCS7_F_PKCS7_ENCRYPT 115 +# define PKCS7_F_PKCS7_FINAL 134 +# define PKCS7_F_PKCS7_FIND_DIGEST 127 +# define PKCS7_F_PKCS7_GET0_SIGNERS 124 +# define PKCS7_F_PKCS7_RECIP_INFO_SET 130 +# define PKCS7_F_PKCS7_SET_CIPHER 108 +# define PKCS7_F_PKCS7_SET_CONTENT 109 +# define PKCS7_F_PKCS7_SET_DIGEST 126 +# define PKCS7_F_PKCS7_SET_TYPE 110 +# define PKCS7_F_PKCS7_SIGN 116 +# define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 +# define PKCS7_F_PKCS7_SIGNER_INFO_SET 129 +# define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139 +# define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137 +# define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 +# define PKCS7_F_PKCS7_VERIFY 117 + +/* + * PKCS7 reason codes. + */ +# define PKCS7_R_CERTIFICATE_VERIFY_ERROR 117 +# define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 +# define PKCS7_R_CIPHER_NOT_INITIALIZED 116 +# define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 +# define PKCS7_R_CTRL_ERROR 152 +# define PKCS7_R_DECRYPT_ERROR 119 +# define PKCS7_R_DIGEST_FAILURE 101 +# define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149 +# define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150 +# define PKCS7_R_ERROR_ADDING_RECIPIENT 120 +# define PKCS7_R_ERROR_SETTING_CIPHER 121 +# define PKCS7_R_INVALID_NULL_POINTER 143 +# define PKCS7_R_INVALID_SIGNED_DATA_TYPE 155 +# define PKCS7_R_NO_CONTENT 122 +# define PKCS7_R_NO_DEFAULT_DIGEST 151 +# define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154 +# define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 +# define PKCS7_R_NO_SIGNATURES_ON_DATA 123 +# define PKCS7_R_NO_SIGNERS 142 +# define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 +# define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 +# define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153 +# define PKCS7_R_PKCS7_DATASIGN 145 +# define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 +# define PKCS7_R_SIGNATURE_FAILURE 105 +# define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 +# define PKCS7_R_SIGNING_CTRL_FAILURE 147 +# define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148 +# define PKCS7_R_SMIME_TEXT_ERROR 129 +# define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 +# define PKCS7_R_UNABLE_TO_FIND_MEM_BIO 107 +# define PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST 108 +# define PKCS7_R_UNKNOWN_DIGEST_TYPE 109 +# define PKCS7_R_UNKNOWN_OPERATION 110 +# define PKCS7_R_UNSUPPORTED_CIPHER_TYPE 111 +# define PKCS7_R_UNSUPPORTED_CONTENT_TYPE 112 +# define PKCS7_R_WRONG_CONTENT_TYPE 113 +# define PKCS7_R_WRONG_PKCS7_TYPE 114 + +#endif diff --git a/include/openssl/openssl/rsa.h b/include/openssl/openssl/rsa.h new file mode 100644 index 00000000..5e76365c --- /dev/null +++ b/include/openssl/openssl/rsa.h @@ -0,0 +1,513 @@ +/* + * Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSA_H +# define HEADER_RSA_H + +# include + +# ifndef OPENSSL_NO_RSA +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# endif +# include +# ifdef __cplusplus +extern "C" { +# endif + +/* The types RSA and RSA_METHOD are defined in ossl_typ.h */ + +# ifndef OPENSSL_RSA_MAX_MODULUS_BITS +# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 +# endif + +# define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024 + +# ifndef OPENSSL_RSA_SMALL_MODULUS_BITS +# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 +# endif +# ifndef OPENSSL_RSA_MAX_PUBEXP_BITS + +/* exponent limit enforced for "large" modulus only */ +# define OPENSSL_RSA_MAX_PUBEXP_BITS 64 +# endif + +# define RSA_3 0x3L +# define RSA_F4 0x10001L + +/* based on RFC 8017 appendix A.1.2 */ +# define RSA_ASN1_VERSION_DEFAULT 0 +# define RSA_ASN1_VERSION_MULTI 1 + +# define RSA_DEFAULT_PRIME_NUM 2 + +# define RSA_METHOD_FLAG_NO_CHECK 0x0001/* don't check pub/private + * match */ + +# define RSA_FLAG_CACHE_PUBLIC 0x0002 +# define RSA_FLAG_CACHE_PRIVATE 0x0004 +# define RSA_FLAG_BLINDING 0x0008 +# define RSA_FLAG_THREAD_SAFE 0x0010 +/* + * This flag means the private key operations will be handled by rsa_mod_exp + * and that they do not depend on the private key components being present: + * for example a key stored in external hardware. Without this flag + * bn_mod_exp gets called when private key components are absent. + */ +# define RSA_FLAG_EXT_PKEY 0x0020 + +/* + * new with 0.9.6j and 0.9.7b; the built-in + * RSA implementation now uses blinding by + * default (ignoring RSA_FLAG_BLINDING), + * but other engines might not need it + */ +# define RSA_FLAG_NO_BLINDING 0x0080 +# if OPENSSL_API_COMPAT < 0x10100000L +/* + * Does nothing. Previously this switched off constant time behaviour. + */ +# define RSA_FLAG_NO_CONSTTIME 0x0000 +# endif +# if OPENSSL_API_COMPAT < 0x00908000L +/* deprecated name for the flag*/ +/* + * new with 0.9.7h; the built-in RSA + * implementation now uses constant time + * modular exponentiation for secret exponents + * by default. This flag causes the + * faster variable sliding window method to + * be used for all exponents. + */ +# define RSA_FLAG_NO_EXP_CONSTTIME RSA_FLAG_NO_CONSTTIME +# endif + +# define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_RSA_PADDING, pad, NULL) + +# define EVP_PKEY_CTX_get_rsa_padding(ctx, ppad) \ + RSA_pkey_ctx_ctrl(ctx, -1, EVP_PKEY_CTRL_GET_RSA_PADDING, 0, ppad) + +# define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) +/* Salt length matches digest */ +# define RSA_PSS_SALTLEN_DIGEST -1 +/* Verify only: auto detect salt length */ +# define RSA_PSS_SALTLEN_AUTO -2 +/* Set salt length to maximum possible */ +# define RSA_PSS_SALTLEN_MAX -3 +/* Old compatible max salt length for sign only */ +# define RSA_PSS_SALTLEN_MAX_SIGN -2 + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen(ctx, len) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_PSS_SALTLEN, len, NULL) + +# define EVP_PKEY_CTX_get_rsa_pss_saltlen(ctx, plen) \ + RSA_pkey_ctx_ctrl(ctx, (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \ + EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN, 0, plen) + +# define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL) + +# define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp) + +# define EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES, primes, NULL) + +# define EVP_PKEY_CTX_set_rsa_mgf1_md(ctx, md) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_mgf1_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, EVP_PKEY_OP_KEYGEN, \ + EVP_PKEY_CTRL_RSA_MGF1_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_set_rsa_oaep_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_MD, 0, (void *)(md)) + +# define EVP_PKEY_CTX_get_rsa_mgf1_md(ctx, pmd) \ + RSA_pkey_ctx_ctrl(ctx, EVP_PKEY_OP_TYPE_SIG | EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_MGF1_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_get_rsa_oaep_md(ctx, pmd) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_MD, 0, (void *)(pmd)) + +# define EVP_PKEY_CTX_set0_rsa_oaep_label(ctx, l, llen) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_RSA_OAEP_LABEL, llen, (void *)(l)) + +# define EVP_PKEY_CTX_get0_rsa_oaep_label(ctx, l) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_TYPE_CRYPT, \ + EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, 0, (void *)(l)) + +# define EVP_PKEY_CTX_set_rsa_pss_keygen_md(ctx, md) \ + EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA_PSS, \ + EVP_PKEY_OP_KEYGEN, EVP_PKEY_CTRL_MD, \ + 0, (void *)(md)) + +# define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1) +# define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3) +# define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4) +# define EVP_PKEY_CTRL_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 5) + +# define EVP_PKEY_CTRL_GET_RSA_PADDING (EVP_PKEY_ALG_CTRL + 6) +# define EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 7) +# define EVP_PKEY_CTRL_GET_RSA_MGF1_MD (EVP_PKEY_ALG_CTRL + 8) + +# define EVP_PKEY_CTRL_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 9) +# define EVP_PKEY_CTRL_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 10) + +# define EVP_PKEY_CTRL_GET_RSA_OAEP_MD (EVP_PKEY_ALG_CTRL + 11) +# define EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL (EVP_PKEY_ALG_CTRL + 12) + +# define EVP_PKEY_CTRL_RSA_KEYGEN_PRIMES (EVP_PKEY_ALG_CTRL + 13) + +# define RSA_PKCS1_PADDING 1 +# define RSA_SSLV23_PADDING 2 +# define RSA_NO_PADDING 3 +# define RSA_PKCS1_OAEP_PADDING 4 +# define RSA_X931_PADDING 5 +/* EVP_PKEY_ only */ +# define RSA_PKCS1_PSS_PADDING 6 + +# define RSA_PKCS1_PADDING_SIZE 11 + +# define RSA_set_app_data(s,arg) RSA_set_ex_data(s,0,arg) +# define RSA_get_app_data(s) RSA_get_ex_data(s,0) + +RSA *RSA_new(void); +RSA *RSA_new_method(ENGINE *engine); +int RSA_bits(const RSA *rsa); +int RSA_size(const RSA *rsa); +int RSA_security_bits(const RSA *rsa); + +int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d); +int RSA_set0_factors(RSA *r, BIGNUM *p, BIGNUM *q); +int RSA_set0_crt_params(RSA *r,BIGNUM *dmp1, BIGNUM *dmq1, BIGNUM *iqmp); +int RSA_set0_multi_prime_params(RSA *r, BIGNUM *primes[], BIGNUM *exps[], + BIGNUM *coeffs[], int pnum); +void RSA_get0_key(const RSA *r, + const BIGNUM **n, const BIGNUM **e, const BIGNUM **d); +void RSA_get0_factors(const RSA *r, const BIGNUM **p, const BIGNUM **q); +int RSA_get_multi_prime_extra_count(const RSA *r); +int RSA_get0_multi_prime_factors(const RSA *r, const BIGNUM *primes[]); +void RSA_get0_crt_params(const RSA *r, + const BIGNUM **dmp1, const BIGNUM **dmq1, + const BIGNUM **iqmp); +int RSA_get0_multi_prime_crt_params(const RSA *r, const BIGNUM *exps[], + const BIGNUM *coeffs[]); +const BIGNUM *RSA_get0_n(const RSA *d); +const BIGNUM *RSA_get0_e(const RSA *d); +const BIGNUM *RSA_get0_d(const RSA *d); +const BIGNUM *RSA_get0_p(const RSA *d); +const BIGNUM *RSA_get0_q(const RSA *d); +const BIGNUM *RSA_get0_dmp1(const RSA *r); +const BIGNUM *RSA_get0_dmq1(const RSA *r); +const BIGNUM *RSA_get0_iqmp(const RSA *r); +const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *r); +void RSA_clear_flags(RSA *r, int flags); +int RSA_test_flags(const RSA *r, int flags); +void RSA_set_flags(RSA *r, int flags); +int RSA_get_version(RSA *r); +ENGINE *RSA_get0_engine(const RSA *r); + +/* Deprecated version */ +DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void + (*callback) (int, int, void *), + void *cb_arg)) + +/* New version */ +int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +/* Multi-prime version */ +int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, + BIGNUM *e, BN_GENCB *cb); + +int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, + BIGNUM *q2, const BIGNUM *Xp1, const BIGNUM *Xp2, + const BIGNUM *Xp, const BIGNUM *Xq1, const BIGNUM *Xq2, + const BIGNUM *Xq, const BIGNUM *e, BN_GENCB *cb); +int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, + BN_GENCB *cb); + +int RSA_check_key(const RSA *); +int RSA_check_key_ex(const RSA *, BN_GENCB *cb); + /* next 4 return -1 on error */ +int RSA_public_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_encrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_public_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_private_decrypt(int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +void RSA_free(RSA *r); +/* "up" the RSA object's reference count */ +int RSA_up_ref(RSA *r); + +int RSA_flags(const RSA *r); + +void RSA_set_default_method(const RSA_METHOD *meth); +const RSA_METHOD *RSA_get_default_method(void); +const RSA_METHOD *RSA_null_method(void); +const RSA_METHOD *RSA_get_method(const RSA *rsa); +int RSA_set_method(RSA *rsa, const RSA_METHOD *meth); + +/* these are the actual RSA functions */ +const RSA_METHOD *RSA_PKCS1_OpenSSL(void); + +int RSA_pkey_ctx_ctrl(EVP_PKEY_CTX *ctx, int optype, int cmd, int p1, void *p2); + +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPublicKey) +DECLARE_ASN1_ENCODE_FUNCTIONS_const(RSA, RSAPrivateKey) + +struct rsa_pss_params_st { + X509_ALGOR *hashAlgorithm; + X509_ALGOR *maskGenAlgorithm; + ASN1_INTEGER *saltLength; + ASN1_INTEGER *trailerField; + /* Decoded hash algorithm from maskGenAlgorithm */ + X509_ALGOR *maskHash; +}; + +DECLARE_ASN1_FUNCTIONS(RSA_PSS_PARAMS) + +typedef struct rsa_oaep_params_st { + X509_ALGOR *hashFunc; + X509_ALGOR *maskGenFunc; + X509_ALGOR *pSourceFunc; + /* Decoded hash algorithm from maskGenFunc */ + X509_ALGOR *maskHash; +} RSA_OAEP_PARAMS; + +DECLARE_ASN1_FUNCTIONS(RSA_OAEP_PARAMS) + +# ifndef OPENSSL_NO_STDIO +int RSA_print_fp(FILE *fp, const RSA *r, int offset); +# endif + +int RSA_print(BIO *bp, const RSA *r, int offset); + +/* + * The following 2 functions sign and verify a X509_SIG ASN1 object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign(int type, const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, RSA *rsa); +int RSA_verify(int type, const unsigned char *m, unsigned int m_length, + const unsigned char *sigbuf, unsigned int siglen, RSA *rsa); + +/* + * The following 2 function sign and verify a ASN1_OCTET_STRING object inside + * PKCS#1 padded RSA encryption + */ +int RSA_sign_ASN1_OCTET_STRING(int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + RSA *rsa); +int RSA_verify_ASN1_OCTET_STRING(int type, const unsigned char *m, + unsigned int m_length, unsigned char *sigbuf, + unsigned int siglen, RSA *rsa); + +int RSA_blinding_on(RSA *rsa, BN_CTX *ctx); +void RSA_blinding_off(RSA *rsa); +BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *ctx); + +int RSA_padding_add_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_1(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int RSA_padding_add_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_PKCS1_type_2(unsigned char *to, int tlen, + const unsigned char *f, int fl, + int rsa_len); +int PKCS1_MGF1(unsigned char *mask, long len, const unsigned char *seed, + long seedlen, const EVP_MD *dgst); +int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, + const unsigned char *p, int pl); +int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len, + const unsigned char *p, int pl); +int RSA_padding_add_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + const unsigned char *param, int plen, + const EVP_MD *md, const EVP_MD *mgf1md); +int RSA_padding_check_PKCS1_OAEP_mgf1(unsigned char *to, int tlen, + const unsigned char *from, int flen, + int num, const unsigned char *param, + int plen, const EVP_MD *md, + const EVP_MD *mgf1md); +int RSA_padding_add_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl); +int RSA_padding_check_SSLv23(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_none(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_none(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_padding_add_X931(unsigned char *to, int tlen, const unsigned char *f, + int fl); +int RSA_padding_check_X931(unsigned char *to, int tlen, + const unsigned char *f, int fl, int rsa_len); +int RSA_X931_hash_id(int nid); + +int RSA_verify_PKCS1_PSS(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const unsigned char *EM, + int sLen); +int RSA_padding_add_PKCS1_PSS(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, const EVP_MD *Hash, + int sLen); + +int RSA_verify_PKCS1_PSS_mgf1(RSA *rsa, const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + const unsigned char *EM, int sLen); + +int RSA_padding_add_PKCS1_PSS_mgf1(RSA *rsa, unsigned char *EM, + const unsigned char *mHash, + const EVP_MD *Hash, const EVP_MD *mgf1Hash, + int sLen); + +#define RSA_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, l, p, newf, dupf, freef) +int RSA_set_ex_data(RSA *r, int idx, void *arg); +void *RSA_get_ex_data(const RSA *r, int idx); + +RSA *RSAPublicKey_dup(RSA *rsa); +RSA *RSAPrivateKey_dup(RSA *rsa); + +/* + * If this flag is set the RSA method is FIPS compliant and can be used in + * FIPS mode. This is set in the validated module method. If an application + * sets this flag in its own methods it is its responsibility to ensure the + * result is compliant. + */ + +# define RSA_FLAG_FIPS_METHOD 0x0400 + +/* + * If this flag is set the operations normally disabled in FIPS mode are + * permitted it is then the applications responsibility to ensure that the + * usage is compliant. + */ + +# define RSA_FLAG_NON_FIPS_ALLOW 0x0400 +/* + * Application has decided PRNG is good enough to generate a key: don't + * check. + */ +# define RSA_FLAG_CHECKED 0x0800 + +RSA_METHOD *RSA_meth_new(const char *name, int flags); +void RSA_meth_free(RSA_METHOD *meth); +RSA_METHOD *RSA_meth_dup(const RSA_METHOD *meth); +const char *RSA_meth_get0_name(const RSA_METHOD *meth); +int RSA_meth_set1_name(RSA_METHOD *meth, const char *name); +int RSA_meth_get_flags(const RSA_METHOD *meth); +int RSA_meth_set_flags(RSA_METHOD *meth, int flags); +void *RSA_meth_get0_app_data(const RSA_METHOD *meth); +int RSA_meth_set0_app_data(RSA_METHOD *meth, void *app_data); +int (*RSA_meth_get_pub_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_enc(RSA_METHOD *rsa, + int (*pub_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_pub_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_pub_dec(RSA_METHOD *rsa, + int (*pub_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_enc(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_enc(RSA_METHOD *rsa, + int (*priv_enc) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_priv_dec(const RSA_METHOD *meth)) + (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, int padding); +int RSA_meth_set_priv_dec(RSA_METHOD *rsa, + int (*priv_dec) (int flen, const unsigned char *from, + unsigned char *to, RSA *rsa, + int padding)); +int (*RSA_meth_get_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r0, const BIGNUM *i, RSA *rsa, BN_CTX *ctx); +int RSA_meth_set_mod_exp(RSA_METHOD *rsa, + int (*mod_exp) (BIGNUM *r0, const BIGNUM *i, RSA *rsa, + BN_CTX *ctx)); +int (*RSA_meth_get_bn_mod_exp(const RSA_METHOD *meth)) + (BIGNUM *r, const BIGNUM *a, const BIGNUM *p, + const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); +int RSA_meth_set_bn_mod_exp(RSA_METHOD *rsa, + int (*bn_mod_exp) (BIGNUM *r, + const BIGNUM *a, + const BIGNUM *p, + const BIGNUM *m, + BN_CTX *ctx, + BN_MONT_CTX *m_ctx)); +int (*RSA_meth_get_init(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_init(RSA_METHOD *rsa, int (*init) (RSA *rsa)); +int (*RSA_meth_get_finish(const RSA_METHOD *meth)) (RSA *rsa); +int RSA_meth_set_finish(RSA_METHOD *rsa, int (*finish) (RSA *rsa)); +int (*RSA_meth_get_sign(const RSA_METHOD *meth)) + (int type, + const unsigned char *m, unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa); +int RSA_meth_set_sign(RSA_METHOD *rsa, + int (*sign) (int type, const unsigned char *m, + unsigned int m_length, + unsigned char *sigret, unsigned int *siglen, + const RSA *rsa)); +int (*RSA_meth_get_verify(const RSA_METHOD *meth)) + (int dtype, const unsigned char *m, + unsigned int m_length, const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa); +int RSA_meth_set_verify(RSA_METHOD *rsa, + int (*verify) (int dtype, const unsigned char *m, + unsigned int m_length, + const unsigned char *sigbuf, + unsigned int siglen, const RSA *rsa)); +int (*RSA_meth_get_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_keygen(RSA_METHOD *rsa, + int (*keygen) (RSA *rsa, int bits, BIGNUM *e, + BN_GENCB *cb)); +int (*RSA_meth_get_multi_prime_keygen(const RSA_METHOD *meth)) + (RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); +int RSA_meth_set_multi_prime_keygen(RSA_METHOD *meth, + int (*keygen) (RSA *rsa, int bits, + int primes, BIGNUM *e, + BN_GENCB *cb)); + +# ifdef __cplusplus +} +# endif +# endif +#endif diff --git a/include/openssl/openssl/rsaerr.h b/include/openssl/openssl/rsaerr.h new file mode 100644 index 00000000..59b15e13 --- /dev/null +++ b/include/openssl/openssl/rsaerr.h @@ -0,0 +1,167 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_RSAERR_H +# define HEADER_RSAERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_RSA_strings(void); + +/* + * RSA function codes. + */ +# define RSA_F_CHECK_PADDING_MD 140 +# define RSA_F_ENCODE_PKCS1 146 +# define RSA_F_INT_RSA_VERIFY 145 +# define RSA_F_OLD_RSA_PRIV_DECODE 147 +# define RSA_F_PKEY_PSS_INIT 165 +# define RSA_F_PKEY_RSA_CTRL 143 +# define RSA_F_PKEY_RSA_CTRL_STR 144 +# define RSA_F_PKEY_RSA_SIGN 142 +# define RSA_F_PKEY_RSA_VERIFY 149 +# define RSA_F_PKEY_RSA_VERIFYRECOVER 141 +# define RSA_F_RSA_ALGOR_TO_MD 156 +# define RSA_F_RSA_BUILTIN_KEYGEN 129 +# define RSA_F_RSA_CHECK_KEY 123 +# define RSA_F_RSA_CHECK_KEY_EX 160 +# define RSA_F_RSA_CMS_DECRYPT 159 +# define RSA_F_RSA_CMS_VERIFY 158 +# define RSA_F_RSA_ITEM_VERIFY 148 +# define RSA_F_RSA_METH_DUP 161 +# define RSA_F_RSA_METH_NEW 162 +# define RSA_F_RSA_METH_SET1_NAME 163 +# define RSA_F_RSA_MGF1_TO_MD 157 +# define RSA_F_RSA_MULTIP_INFO_NEW 166 +# define RSA_F_RSA_NEW_METHOD 106 +# define RSA_F_RSA_NULL 124 +# define RSA_F_RSA_NULL_PRIVATE_DECRYPT 132 +# define RSA_F_RSA_NULL_PRIVATE_ENCRYPT 133 +# define RSA_F_RSA_NULL_PUBLIC_DECRYPT 134 +# define RSA_F_RSA_NULL_PUBLIC_ENCRYPT 135 +# define RSA_F_RSA_OSSL_PRIVATE_DECRYPT 101 +# define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 102 +# define RSA_F_RSA_OSSL_PUBLIC_DECRYPT 103 +# define RSA_F_RSA_OSSL_PUBLIC_ENCRYPT 104 +# define RSA_F_RSA_PADDING_ADD_NONE 107 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP 121 +# define RSA_F_RSA_PADDING_ADD_PKCS1_OAEP_MGF1 154 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS 125 +# define RSA_F_RSA_PADDING_ADD_PKCS1_PSS_MGF1 152 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 108 +# define RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 109 +# define RSA_F_RSA_PADDING_ADD_SSLV23 110 +# define RSA_F_RSA_PADDING_ADD_X931 127 +# define RSA_F_RSA_PADDING_CHECK_NONE 111 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP 122 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP_MGF1 153 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 112 +# define RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 113 +# define RSA_F_RSA_PADDING_CHECK_SSLV23 114 +# define RSA_F_RSA_PADDING_CHECK_X931 128 +# define RSA_F_RSA_PARAM_DECODE 164 +# define RSA_F_RSA_PRINT 115 +# define RSA_F_RSA_PRINT_FP 116 +# define RSA_F_RSA_PRIV_DECODE 150 +# define RSA_F_RSA_PRIV_ENCODE 138 +# define RSA_F_RSA_PSS_GET_PARAM 151 +# define RSA_F_RSA_PSS_TO_CTX 155 +# define RSA_F_RSA_PUB_DECODE 139 +# define RSA_F_RSA_SETUP_BLINDING 136 +# define RSA_F_RSA_SIGN 117 +# define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 +# define RSA_F_RSA_VERIFY 119 +# define RSA_F_RSA_VERIFY_ASN1_OCTET_STRING 120 +# define RSA_F_RSA_VERIFY_PKCS1_PSS_MGF1 126 +# define RSA_F_SETUP_TBUF 167 + +/* + * RSA reason codes. + */ +# define RSA_R_ALGORITHM_MISMATCH 100 +# define RSA_R_BAD_E_VALUE 101 +# define RSA_R_BAD_FIXED_HEADER_DECRYPT 102 +# define RSA_R_BAD_PAD_BYTE_COUNT 103 +# define RSA_R_BAD_SIGNATURE 104 +# define RSA_R_BLOCK_TYPE_IS_NOT_01 106 +# define RSA_R_BLOCK_TYPE_IS_NOT_02 107 +# define RSA_R_DATA_GREATER_THAN_MOD_LEN 108 +# define RSA_R_DATA_TOO_LARGE 109 +# define RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 110 +# define RSA_R_DATA_TOO_LARGE_FOR_MODULUS 132 +# define RSA_R_DATA_TOO_SMALL 111 +# define RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE 122 +# define RSA_R_DIGEST_DOES_NOT_MATCH 158 +# define RSA_R_DIGEST_NOT_ALLOWED 145 +# define RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY 112 +# define RSA_R_DMP1_NOT_CONGRUENT_TO_D 124 +# define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 +# define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 +# define RSA_R_FIRST_OCTET_INVALID 133 +# define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144 +# define RSA_R_INVALID_DIGEST 157 +# define RSA_R_INVALID_DIGEST_LENGTH 143 +# define RSA_R_INVALID_HEADER 137 +# define RSA_R_INVALID_LABEL 160 +# define RSA_R_INVALID_MESSAGE_LENGTH 131 +# define RSA_R_INVALID_MGF1_MD 156 +# define RSA_R_INVALID_MULTI_PRIME_KEY 167 +# define RSA_R_INVALID_OAEP_PARAMETERS 161 +# define RSA_R_INVALID_PADDING 138 +# define RSA_R_INVALID_PADDING_MODE 141 +# define RSA_R_INVALID_PSS_PARAMETERS 149 +# define RSA_R_INVALID_PSS_SALTLEN 146 +# define RSA_R_INVALID_SALT_LENGTH 150 +# define RSA_R_INVALID_TRAILER 139 +# define RSA_R_INVALID_X931_DIGEST 142 +# define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 +# define RSA_R_KEY_PRIME_NUM_INVALID 165 +# define RSA_R_KEY_SIZE_TOO_SMALL 120 +# define RSA_R_LAST_OCTET_INVALID 134 +# define RSA_R_MISSING_PRIVATE_KEY 179 +# define RSA_R_MGF1_DIGEST_NOT_ALLOWED 152 +# define RSA_R_MODULUS_TOO_LARGE 105 +# define RSA_R_MP_COEFFICIENT_NOT_INVERSE_OF_R 168 +# define RSA_R_MP_EXPONENT_NOT_CONGRUENT_TO_D 169 +# define RSA_R_MP_R_NOT_PRIME 170 +# define RSA_R_NO_PUBLIC_EXPONENT 140 +# define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 +# define RSA_R_N_DOES_NOT_EQUAL_PRODUCT_OF_PRIMES 172 +# define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 +# define RSA_R_OAEP_DECODING_ERROR 121 +# define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148 +# define RSA_R_PADDING_CHECK_FAILED 114 +# define RSA_R_PKCS_DECODING_ERROR 159 +# define RSA_R_PSS_SALTLEN_TOO_SMALL 164 +# define RSA_R_P_NOT_PRIME 128 +# define RSA_R_Q_NOT_PRIME 129 +# define RSA_R_RSA_OPERATIONS_NOT_SUPPORTED 130 +# define RSA_R_SLEN_CHECK_FAILED 136 +# define RSA_R_SLEN_RECOVERY_FAILED 135 +# define RSA_R_SSLV3_ROLLBACK_ATTACK 115 +# define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 +# define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 +# define RSA_R_UNKNOWN_DIGEST 166 +# define RSA_R_UNKNOWN_MASK_DIGEST 151 +# define RSA_R_UNKNOWN_PADDING_TYPE 118 +# define RSA_R_UNSUPPORTED_ENCRYPTION_TYPE 162 +# define RSA_R_UNSUPPORTED_LABEL_SOURCE 163 +# define RSA_R_UNSUPPORTED_MASK_ALGORITHM 153 +# define RSA_R_UNSUPPORTED_MASK_PARAMETER 154 +# define RSA_R_UNSUPPORTED_SIGNATURE_TYPE 155 +# define RSA_R_VALUE_MISSING 147 +# define RSA_R_WRONG_SIGNATURE_LENGTH 119 + +#endif diff --git a/include/openssl/openssl/safestack.h b/include/openssl/openssl/safestack.h new file mode 100644 index 00000000..38b55789 --- /dev/null +++ b/include/openssl/openssl/safestack.h @@ -0,0 +1,207 @@ +/* + * Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SAFESTACK_H +# define HEADER_SAFESTACK_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define STACK_OF(type) struct stack_st_##type + +# define SKM_DEFINE_STACK_OF(t1, t2, t3) \ + STACK_OF(t1); \ + typedef int (*sk_##t1##_compfunc)(const t3 * const *a, const t3 *const *b); \ + typedef void (*sk_##t1##_freefunc)(t3 *a); \ + typedef t3 * (*sk_##t1##_copyfunc)(const t3 *a); \ + static ossl_unused ossl_inline int sk_##t1##_num(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_num((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_value(const STACK_OF(t1) *sk, int idx) \ + { \ + return (t2 *)OPENSSL_sk_value((const OPENSSL_STACK *)sk, idx); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new(sk_##t1##_compfunc compare) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new((OPENSSL_sk_compfunc)compare); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_new_reserve(sk_##t1##_compfunc compare, int n) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_new_reserve((OPENSSL_sk_compfunc)compare, n); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_reserve(STACK_OF(t1) *sk, int n) \ + { \ + return OPENSSL_sk_reserve((OPENSSL_STACK *)sk, n); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_free(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_free((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_zero(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_zero((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete(STACK_OF(t1) *sk, int i) \ + { \ + return (t2 *)OPENSSL_sk_delete((OPENSSL_STACK *)sk, i); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_delete_ptr(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_delete_ptr((OPENSSL_STACK *)sk, \ + (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_push(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_push((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_unshift(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_unshift((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_pop(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_pop((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_shift(STACK_OF(t1) *sk) \ + { \ + return (t2 *)OPENSSL_sk_shift((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_pop_free(STACK_OF(t1) *sk, sk_##t1##_freefunc freefunc) \ + { \ + OPENSSL_sk_pop_free((OPENSSL_STACK *)sk, (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_insert(STACK_OF(t1) *sk, t2 *ptr, int idx) \ + { \ + return OPENSSL_sk_insert((OPENSSL_STACK *)sk, (const void *)ptr, idx); \ + } \ + static ossl_unused ossl_inline t2 *sk_##t1##_set(STACK_OF(t1) *sk, int idx, t2 *ptr) \ + { \ + return (t2 *)OPENSSL_sk_set((OPENSSL_STACK *)sk, idx, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_find_ex(STACK_OF(t1) *sk, t2 *ptr) \ + { \ + return OPENSSL_sk_find_ex((OPENSSL_STACK *)sk, (const void *)ptr); \ + } \ + static ossl_unused ossl_inline void sk_##t1##_sort(STACK_OF(t1) *sk) \ + { \ + OPENSSL_sk_sort((OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline int sk_##t1##_is_sorted(const STACK_OF(t1) *sk) \ + { \ + return OPENSSL_sk_is_sorted((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) * sk_##t1##_dup(const STACK_OF(t1) *sk) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_dup((const OPENSSL_STACK *)sk); \ + } \ + static ossl_unused ossl_inline STACK_OF(t1) *sk_##t1##_deep_copy(const STACK_OF(t1) *sk, \ + sk_##t1##_copyfunc copyfunc, \ + sk_##t1##_freefunc freefunc) \ + { \ + return (STACK_OF(t1) *)OPENSSL_sk_deep_copy((const OPENSSL_STACK *)sk, \ + (OPENSSL_sk_copyfunc)copyfunc, \ + (OPENSSL_sk_freefunc)freefunc); \ + } \ + static ossl_unused ossl_inline sk_##t1##_compfunc sk_##t1##_set_cmp_func(STACK_OF(t1) *sk, sk_##t1##_compfunc compare) \ + { \ + return (sk_##t1##_compfunc)OPENSSL_sk_set_cmp_func((OPENSSL_STACK *)sk, (OPENSSL_sk_compfunc)compare); \ + } + +# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) +# define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) +# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ + SKM_DEFINE_STACK_OF(t1, const t2, t2) +# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) + +/*- + * Strings are special: normally an lhash entry will point to a single + * (somewhat) mutable object. In the case of strings: + * + * a) Instead of a single char, there is an array of chars, NUL-terminated. + * b) The string may have be immutable. + * + * So, they need their own declarations. Especially important for + * type-checking tools, such as Deputy. + * + * In practice, however, it appears to be hard to have a const + * string. For now, I'm settling for dealing with the fact it is a + * string at all. + */ +typedef char *OPENSSL_STRING; +typedef const char *OPENSSL_CSTRING; + +/*- + * Confusingly, LHASH_OF(STRING) deals with char ** throughout, but + * STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned + * above, instead of a single char each entry is a NUL-terminated array of + * chars. So, we have to implement STRING specially for STACK_OF. This is + * dealt with in the autogenerated macros below. + */ +DEFINE_SPECIAL_STACK_OF(OPENSSL_STRING, char) +DEFINE_SPECIAL_STACK_OF_CONST(OPENSSL_CSTRING, char) + +/* + * Similarly, we sometimes use a block of characters, NOT nul-terminated. + * These should also be distinguished from "normal" stacks. + */ +typedef void *OPENSSL_BLOCK; +DEFINE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void) + +/* + * If called without higher optimization (min. -xO3) the Oracle Developer + * Studio compiler generates code for the defined (static inline) functions + * above. + * This would later lead to the linker complaining about missing symbols when + * this header file is included but the resulting object is not linked against + * the Crypto library (openssl#6912). + */ +# ifdef __SUNPRO_C +# pragma weak OPENSSL_sk_num +# pragma weak OPENSSL_sk_value +# pragma weak OPENSSL_sk_new +# pragma weak OPENSSL_sk_new_null +# pragma weak OPENSSL_sk_new_reserve +# pragma weak OPENSSL_sk_reserve +# pragma weak OPENSSL_sk_free +# pragma weak OPENSSL_sk_zero +# pragma weak OPENSSL_sk_delete +# pragma weak OPENSSL_sk_delete_ptr +# pragma weak OPENSSL_sk_push +# pragma weak OPENSSL_sk_unshift +# pragma weak OPENSSL_sk_pop +# pragma weak OPENSSL_sk_shift +# pragma weak OPENSSL_sk_pop_free +# pragma weak OPENSSL_sk_insert +# pragma weak OPENSSL_sk_set +# pragma weak OPENSSL_sk_find +# pragma weak OPENSSL_sk_find_ex +# pragma weak OPENSSL_sk_sort +# pragma weak OPENSSL_sk_is_sorted +# pragma weak OPENSSL_sk_dup +# pragma weak OPENSSL_sk_deep_copy +# pragma weak OPENSSL_sk_set_cmp_func +# endif /* __SUNPRO_C */ + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/sha.h b/include/openssl/openssl/sha.h new file mode 100644 index 00000000..6a1eb0de --- /dev/null +++ b/include/openssl/openssl/sha.h @@ -0,0 +1,119 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SHA_H +# define HEADER_SHA_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + * ! SHA_LONG has to be at least 32 bits wide. ! + * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + */ +# define SHA_LONG unsigned int + +# define SHA_LBLOCK 16 +# define SHA_CBLOCK (SHA_LBLOCK*4)/* SHA treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ +# define SHA_LAST_BLOCK (SHA_CBLOCK-8) +# define SHA_DIGEST_LENGTH 20 + +typedef struct SHAstate_st { + SHA_LONG h0, h1, h2, h3, h4; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num; +} SHA_CTX; + +int SHA1_Init(SHA_CTX *c); +int SHA1_Update(SHA_CTX *c, const void *data, size_t len); +int SHA1_Final(unsigned char *md, SHA_CTX *c); +unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md); +void SHA1_Transform(SHA_CTX *c, const unsigned char *data); + +# define SHA256_CBLOCK (SHA_LBLOCK*4)/* SHA-256 treats input data as a + * contiguous array of 32 bit wide + * big-endian values. */ + +typedef struct SHA256state_st { + SHA_LONG h[8]; + SHA_LONG Nl, Nh; + SHA_LONG data[SHA_LBLOCK]; + unsigned int num, md_len; +} SHA256_CTX; + +int SHA224_Init(SHA256_CTX *c); +int SHA224_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA224_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA224(const unsigned char *d, size_t n, unsigned char *md); +int SHA256_Init(SHA256_CTX *c); +int SHA256_Update(SHA256_CTX *c, const void *data, size_t len); +int SHA256_Final(unsigned char *md, SHA256_CTX *c); +unsigned char *SHA256(const unsigned char *d, size_t n, unsigned char *md); +void SHA256_Transform(SHA256_CTX *c, const unsigned char *data); + +# define SHA224_DIGEST_LENGTH 28 +# define SHA256_DIGEST_LENGTH 32 +# define SHA384_DIGEST_LENGTH 48 +# define SHA512_DIGEST_LENGTH 64 + +/* + * Unlike 32-bit digest algorithms, SHA-512 *relies* on SHA_LONG64 + * being exactly 64-bit wide. See Implementation Notes in sha512.c + * for further details. + */ +/* + * SHA-512 treats input data as a + * contiguous array of 64 bit + * wide big-endian values. + */ +# define SHA512_CBLOCK (SHA_LBLOCK*8) +# if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__) +# define SHA_LONG64 unsigned __int64 +# define U64(C) C##UI64 +# elif defined(__arch64__) +# define SHA_LONG64 unsigned long +# define U64(C) C##UL +# else +# define SHA_LONG64 unsigned long long +# define U64(C) C##ULL +# endif + +typedef struct SHA512state_st { + SHA_LONG64 h[8]; + SHA_LONG64 Nl, Nh; + union { + SHA_LONG64 d[SHA_LBLOCK]; + unsigned char p[SHA512_CBLOCK]; + } u; + unsigned int num, md_len; +} SHA512_CTX; + +int SHA384_Init(SHA512_CTX *c); +int SHA384_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA384_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA384(const unsigned char *d, size_t n, unsigned char *md); +int SHA512_Init(SHA512_CTX *c); +int SHA512_Update(SHA512_CTX *c, const void *data, size_t len); +int SHA512_Final(unsigned char *md, SHA512_CTX *c); +unsigned char *SHA512(const unsigned char *d, size_t n, unsigned char *md); +void SHA512_Transform(SHA512_CTX *c, const unsigned char *data); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/openssl/srtp.h b/include/openssl/openssl/srtp.h new file mode 100644 index 00000000..0b57c235 --- /dev/null +++ b/include/openssl/openssl/srtp.h @@ -0,0 +1,50 @@ +/* + * Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +/* + * DTLS code by Eric Rescorla + * + * Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. + */ + +#ifndef HEADER_D1_SRTP_H +# define HEADER_D1_SRTP_H + +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define SRTP_AES128_CM_SHA1_80 0x0001 +# define SRTP_AES128_CM_SHA1_32 0x0002 +# define SRTP_AES128_F8_SHA1_80 0x0003 +# define SRTP_AES128_F8_SHA1_32 0x0004 +# define SRTP_NULL_SHA1_80 0x0005 +# define SRTP_NULL_SHA1_32 0x0006 + +/* AEAD SRTP protection profiles from RFC 7714 */ +# define SRTP_AEAD_AES_128_GCM 0x0007 +# define SRTP_AEAD_AES_256_GCM 0x0008 + +# ifndef OPENSSL_NO_SRTP + +__owur int SSL_CTX_set_tlsext_use_srtp(SSL_CTX *ctx, const char *profiles); +__owur int SSL_set_tlsext_use_srtp(SSL *ssl, const char *profiles); + +__owur STACK_OF(SRTP_PROTECTION_PROFILE) *SSL_get_srtp_profiles(SSL *ssl); +__owur SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); + +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/openssl/ssl.h b/include/openssl/openssl/ssl.h new file mode 100644 index 00000000..fd0c5a99 --- /dev/null +++ b/include/openssl/openssl/ssl.h @@ -0,0 +1,2438 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL_H +# define HEADER_SSL_H + +# include +# include +# include +# include +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif +# include +# include +# include +# include + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* OpenSSL version number for ASN.1 encoding of the session information */ +/*- + * Version 0 - initial version + * Version 1 - added the optional peer certificate + */ +# define SSL_SESSION_ASN1_VERSION 0x0001 + +# define SSL_MAX_SSL_SESSION_ID_LENGTH 32 +# define SSL_MAX_SID_CTX_LENGTH 32 + +# define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8) +# define SSL_MAX_KEY_ARG_LENGTH 8 +# define SSL_MAX_MASTER_KEY_LENGTH 48 + +/* The maximum number of encrypt/decrypt pipelines we can support */ +# define SSL_MAX_PIPELINES 32 + +/* text strings for the ciphers */ + +/* These are used to specify which ciphers to use and not to use */ + +# define SSL_TXT_LOW "LOW" +# define SSL_TXT_MEDIUM "MEDIUM" +# define SSL_TXT_HIGH "HIGH" +# define SSL_TXT_FIPS "FIPS" + +# define SSL_TXT_aNULL "aNULL" +# define SSL_TXT_eNULL "eNULL" +# define SSL_TXT_NULL "NULL" + +# define SSL_TXT_kRSA "kRSA" +# define SSL_TXT_kDHr "kDHr"/* this cipher class has been removed */ +# define SSL_TXT_kDHd "kDHd"/* this cipher class has been removed */ +# define SSL_TXT_kDH "kDH"/* this cipher class has been removed */ +# define SSL_TXT_kEDH "kEDH"/* alias for kDHE */ +# define SSL_TXT_kDHE "kDHE" +# define SSL_TXT_kECDHr "kECDHr"/* this cipher class has been removed */ +# define SSL_TXT_kECDHe "kECDHe"/* this cipher class has been removed */ +# define SSL_TXT_kECDH "kECDH"/* this cipher class has been removed */ +# define SSL_TXT_kEECDH "kEECDH"/* alias for kECDHE */ +# define SSL_TXT_kECDHE "kECDHE" +# define SSL_TXT_kPSK "kPSK" +# define SSL_TXT_kRSAPSK "kRSAPSK" +# define SSL_TXT_kECDHEPSK "kECDHEPSK" +# define SSL_TXT_kDHEPSK "kDHEPSK" +# define SSL_TXT_kGOST "kGOST" +# define SSL_TXT_kSRP "kSRP" + +# define SSL_TXT_aRSA "aRSA" +# define SSL_TXT_aDSS "aDSS" +# define SSL_TXT_aDH "aDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDH "aECDH"/* this cipher class has been removed */ +# define SSL_TXT_aECDSA "aECDSA" +# define SSL_TXT_aPSK "aPSK" +# define SSL_TXT_aGOST94 "aGOST94" +# define SSL_TXT_aGOST01 "aGOST01" +# define SSL_TXT_aGOST12 "aGOST12" +# define SSL_TXT_aGOST "aGOST" +# define SSL_TXT_aSRP "aSRP" + +# define SSL_TXT_DSS "DSS" +# define SSL_TXT_DH "DH" +# define SSL_TXT_DHE "DHE"/* same as "kDHE:-ADH" */ +# define SSL_TXT_EDH "EDH"/* alias for DHE */ +# define SSL_TXT_ADH "ADH" +# define SSL_TXT_RSA "RSA" +# define SSL_TXT_ECDH "ECDH" +# define SSL_TXT_EECDH "EECDH"/* alias for ECDHE" */ +# define SSL_TXT_ECDHE "ECDHE"/* same as "kECDHE:-AECDH" */ +# define SSL_TXT_AECDH "AECDH" +# define SSL_TXT_ECDSA "ECDSA" +# define SSL_TXT_PSK "PSK" +# define SSL_TXT_SRP "SRP" + +# define SSL_TXT_DES "DES" +# define SSL_TXT_3DES "3DES" +# define SSL_TXT_RC4 "RC4" +# define SSL_TXT_RC2 "RC2" +# define SSL_TXT_IDEA "IDEA" +# define SSL_TXT_SEED "SEED" +# define SSL_TXT_AES128 "AES128" +# define SSL_TXT_AES256 "AES256" +# define SSL_TXT_AES "AES" +# define SSL_TXT_AES_GCM "AESGCM" +# define SSL_TXT_AES_CCM "AESCCM" +# define SSL_TXT_AES_CCM_8 "AESCCM8" +# define SSL_TXT_CAMELLIA128 "CAMELLIA128" +# define SSL_TXT_CAMELLIA256 "CAMELLIA256" +# define SSL_TXT_CAMELLIA "CAMELLIA" +# define SSL_TXT_CHACHA20 "CHACHA20" +# define SSL_TXT_GOST "GOST89" +# define SSL_TXT_ARIA "ARIA" +# define SSL_TXT_ARIA_GCM "ARIAGCM" +# define SSL_TXT_ARIA128 "ARIA128" +# define SSL_TXT_ARIA256 "ARIA256" + +# define SSL_TXT_MD5 "MD5" +# define SSL_TXT_SHA1 "SHA1" +# define SSL_TXT_SHA "SHA"/* same as "SHA1" */ +# define SSL_TXT_GOST94 "GOST94" +# define SSL_TXT_GOST89MAC "GOST89MAC" +# define SSL_TXT_GOST12 "GOST12" +# define SSL_TXT_GOST89MAC12 "GOST89MAC12" +# define SSL_TXT_SHA256 "SHA256" +# define SSL_TXT_SHA384 "SHA384" + +# define SSL_TXT_SSLV3 "SSLv3" +# define SSL_TXT_TLSV1 "TLSv1" +# define SSL_TXT_TLSV1_1 "TLSv1.1" +# define SSL_TXT_TLSV1_2 "TLSv1.2" + +# define SSL_TXT_ALL "ALL" + +/*- + * COMPLEMENTOF* definitions. These identifiers are used to (de-select) + * ciphers normally not being used. + * Example: "RC4" will activate all ciphers using RC4 including ciphers + * without authentication, which would normally disabled by DEFAULT (due + * the "!ADH" being part of default). Therefore "RC4:!COMPLEMENTOFDEFAULT" + * will make sure that it is also disabled in the specific selection. + * COMPLEMENTOF* identifiers are portable between version, as adjustments + * to the default cipher setup will also be included here. + * + * COMPLEMENTOFDEFAULT does not experience the same special treatment that + * DEFAULT gets, as only selection is being done and no sorting as needed + * for DEFAULT. + */ +# define SSL_TXT_CMPALL "COMPLEMENTOFALL" +# define SSL_TXT_CMPDEF "COMPLEMENTOFDEFAULT" + +/* + * The following cipher list is used by default. It also is substituted when + * an application-defined cipher list string starts with 'DEFAULT'. + * This applies to ciphersuites for TLSv1.2 and below. + */ +# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" +/* This is the default set of TLSv1.3 ciphersuites */ +# if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305) +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_CHACHA20_POLY1305_SHA256:" \ + "TLS_AES_128_GCM_SHA256" +# else +# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ + "TLS_AES_128_GCM_SHA256" +#endif +/* + * As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always + * starts with a reasonable order, and all we have to do for DEFAULT is + * throwing out anonymous and unencrypted ciphersuites! (The latter are not + * actually enabled by ALL, but "ALL:RSA" would enable some of them.) + */ + +/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ +# define SSL_SENT_SHUTDOWN 1 +# define SSL_RECEIVED_SHUTDOWN 2 + +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 +# define SSL_FILETYPE_PEM X509_FILETYPE_PEM + +/* + * This is needed to stop compilers complaining about the 'struct ssl_st *' + * function parameters used to prototype callbacks in SSL_CTX. + */ +typedef struct ssl_st *ssl_crock_st; +typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; +typedef struct ssl_method_st SSL_METHOD; +typedef struct ssl_cipher_st SSL_CIPHER; +typedef struct ssl_session_st SSL_SESSION; +typedef struct tls_sigalgs_st TLS_SIGALGS; +typedef struct ssl_conf_ctx_st SSL_CONF_CTX; +typedef struct ssl_comp_st SSL_COMP; + +STACK_OF(SSL_CIPHER); +STACK_OF(SSL_COMP); + +/* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ +typedef struct srtp_protection_profile_st { + const char *name; + unsigned long id; +} SRTP_PROTECTION_PROFILE; + +DEFINE_STACK_OF(SRTP_PROTECTION_PROFILE) + +typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, + int len, void *arg); +typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, + STACK_OF(SSL_CIPHER) *peer_ciphers, + const SSL_CIPHER **cipher, void *arg); + +/* Extension context codes */ +/* This extension is only allowed in TLS */ +#define SSL_EXT_TLS_ONLY 0x0001 +/* This extension is only allowed in DTLS */ +#define SSL_EXT_DTLS_ONLY 0x0002 +/* Some extensions may be allowed in DTLS but we don't implement them for it */ +#define SSL_EXT_TLS_IMPLEMENTATION_ONLY 0x0004 +/* Most extensions are not defined for SSLv3 but EXT_TYPE_renegotiate is */ +#define SSL_EXT_SSL3_ALLOWED 0x0008 +/* Extension is only defined for TLS1.2 and below */ +#define SSL_EXT_TLS1_2_AND_BELOW_ONLY 0x0010 +/* Extension is only defined for TLS1.3 and above */ +#define SSL_EXT_TLS1_3_ONLY 0x0020 +/* Ignore this extension during parsing if we are resuming */ +#define SSL_EXT_IGNORE_ON_RESUMPTION 0x0040 +#define SSL_EXT_CLIENT_HELLO 0x0080 +/* Really means TLS1.2 or below */ +#define SSL_EXT_TLS1_2_SERVER_HELLO 0x0100 +#define SSL_EXT_TLS1_3_SERVER_HELLO 0x0200 +#define SSL_EXT_TLS1_3_ENCRYPTED_EXTENSIONS 0x0400 +#define SSL_EXT_TLS1_3_HELLO_RETRY_REQUEST 0x0800 +#define SSL_EXT_TLS1_3_CERTIFICATE 0x1000 +#define SSL_EXT_TLS1_3_NEW_SESSION_TICKET 0x2000 +#define SSL_EXT_TLS1_3_CERTIFICATE_REQUEST 0x4000 + +/* Typedefs for handling custom extensions */ + +typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type, + const unsigned char **out, size_t *outlen, + int *al, void *add_arg); + +typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type, + const unsigned char *out, void *add_arg); + +typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type, + const unsigned char *in, size_t inlen, + int *al, void *parse_arg); + + +typedef int (*SSL_custom_ext_add_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char **out, + size_t *outlen, X509 *x, + size_t chainidx, + int *al, void *add_arg); + +typedef void (*SSL_custom_ext_free_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *out, + void *add_arg); + +typedef int (*SSL_custom_ext_parse_cb_ex)(SSL *s, unsigned int ext_type, + unsigned int context, + const unsigned char *in, + size_t inlen, X509 *x, + size_t chainidx, + int *al, void *parse_arg); + +/* Typedef for verification callback */ +typedef int (*SSL_verify_cb)(int preverify_ok, X509_STORE_CTX *x509_ctx); + +/* + * Some values are reserved until OpenSSL 1.2.0 because they were previously + * included in SSL_OP_ALL in a 1.1.x release. + * + * Reserved value (until OpenSSL 1.2.0) 0x00000001U + * Reserved value (until OpenSSL 1.2.0) 0x00000002U + */ +/* Allow initial connection to servers that don't support RI */ +# define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004U + +/* Reserved value (until OpenSSL 1.2.0) 0x00000008U */ +# define SSL_OP_TLSEXT_PADDING 0x00000010U +/* Reserved value (until OpenSSL 1.2.0) 0x00000020U */ +# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG 0x00000040U +/* + * Reserved value (until OpenSSL 1.2.0) 0x00000080U + * Reserved value (until OpenSSL 1.2.0) 0x00000100U + * Reserved value (until OpenSSL 1.2.0) 0x00000200U + */ + +/* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ +# define SSL_OP_ALLOW_NO_DHE_KEX 0x00000400U + +/* + * Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added in + * OpenSSL 0.9.6d. Usually (depending on the application protocol) the + * workaround is not needed. Unfortunately some broken SSL/TLS + * implementations cannot handle it at all, which is why we include it in + * SSL_OP_ALL. Added in 0.9.6e + */ +# define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800U + +/* DTLS options */ +# define SSL_OP_NO_QUERY_MTU 0x00001000U +/* Turn on Cookie Exchange (on relevant for servers) */ +# define SSL_OP_COOKIE_EXCHANGE 0x00002000U +/* Don't use RFC4507 ticket extension */ +# define SSL_OP_NO_TICKET 0x00004000U +# ifndef OPENSSL_NO_DTLS1_METHOD +/* Use Cisco's "speshul" version of DTLS_BAD_VER + * (only with deprecated DTLSv1_client_method()) */ +# define SSL_OP_CISCO_ANYCONNECT 0x00008000U +# endif + +/* As server, disallow session resumption on renegotiation */ +# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000U +/* Don't use compression even if supported */ +# define SSL_OP_NO_COMPRESSION 0x00020000U +/* Permit unsafe legacy renegotiation */ +# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000U +/* Disable encrypt-then-mac */ +# define SSL_OP_NO_ENCRYPT_THEN_MAC 0x00080000U + +/* + * Enable TLSv1.3 Compatibility mode. This is on by default. A future version + * of OpenSSL may have this disabled by default. + */ +# define SSL_OP_ENABLE_MIDDLEBOX_COMPAT 0x00100000U + +/* Prioritize Chacha20Poly1305 when client does. + * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE */ +# define SSL_OP_PRIORITIZE_CHACHA 0x00200000U + +/* + * Set on servers to choose the cipher according to the server's preferences + */ +# define SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000U +/* + * If set, a server will allow a client to issue a SSLv3.0 version number as + * latest version supported in the premaster secret, even when TLSv1.0 + * (version 3.1) was announced in the client hello. Normally this is + * forbidden to prevent version rollback attacks. + */ +# define SSL_OP_TLS_ROLLBACK_BUG 0x00800000U + +/* + * Switches off automatic TLSv1.3 anti-replay protection for early data. This + * is a server-side option only (no effect on the client). + */ +# define SSL_OP_NO_ANTI_REPLAY 0x01000000U + +# define SSL_OP_NO_SSLv3 0x02000000U +# define SSL_OP_NO_TLSv1 0x04000000U +# define SSL_OP_NO_TLSv1_2 0x08000000U +# define SSL_OP_NO_TLSv1_1 0x10000000U +# define SSL_OP_NO_TLSv1_3 0x20000000U + +# define SSL_OP_NO_DTLSv1 0x04000000U +# define SSL_OP_NO_DTLSv1_2 0x08000000U + +# define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3|\ + SSL_OP_NO_TLSv1|SSL_OP_NO_TLSv1_1|SSL_OP_NO_TLSv1_2|SSL_OP_NO_TLSv1_3) +# define SSL_OP_NO_DTLS_MASK (SSL_OP_NO_DTLSv1|SSL_OP_NO_DTLSv1_2) + +/* Disallow all renegotiation */ +# define SSL_OP_NO_RENEGOTIATION 0x40000000U + +/* + * Make server add server-hello extension from early version of cryptopro + * draft, when GOST ciphersuite is negotiated. Required for interoperability + * with CryptoPro CSP 3.x + */ +# define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000U + +/* + * SSL_OP_ALL: various bug workarounds that should be rather harmless. + * This used to be 0x000FFFFFL before 0.9.7. + * This used to be 0x80000BFFU before 1.1.1. + */ +# define SSL_OP_ALL (SSL_OP_CRYPTOPRO_TLSEXT_BUG|\ + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS|\ + SSL_OP_LEGACY_SERVER_CONNECT|\ + SSL_OP_TLSEXT_PADDING|\ + SSL_OP_SAFARI_ECDHE_ECDSA_BUG) + +/* OBSOLETE OPTIONS: retained for compatibility */ + +/* Removed from OpenSSL 1.1.0. Was 0x00000001L */ +/* Related to removed SSLv2. */ +# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000002L */ +/* Related to removed SSLv2. */ +# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 +/* Removed from OpenSSL 0.9.8q and 1.0.0c. Was 0x00000008L */ +/* Dead forever, see CVE-2010-4180 */ +# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 +/* Removed from OpenSSL 1.0.1h and 1.0.2. Was 0x00000010L */ +/* Refers to ancient SSLREF and SSLv2. */ +# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000020 */ +# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 +/* Removed from OpenSSL 0.9.7h and 0.9.8b. Was 0x00000040L */ +# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000080 */ +/* Ancient SSLeay version. */ +# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000100L */ +# define SSL_OP_TLS_D5_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00000200L */ +# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00080000L */ +# define SSL_OP_SINGLE_ECDH_USE 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x00100000L */ +# define SSL_OP_SINGLE_DH_USE 0x0 +/* Removed from OpenSSL 1.0.1k and 1.0.2. Was 0x00200000L */ +# define SSL_OP_EPHEMERAL_RSA 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x01000000L */ +# define SSL_OP_NO_SSLv2 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x08000000L */ +# define SSL_OP_PKCS1_CHECK_1 0x0 +/* Removed from OpenSSL 1.0.1. Was 0x10000000L */ +# define SSL_OP_PKCS1_CHECK_2 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x20000000L */ +# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 +/* Removed from OpenSSL 1.1.0. Was 0x40000000L */ +# define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x0 + +/* + * Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success + * when just a single record has been written): + */ +# define SSL_MODE_ENABLE_PARTIAL_WRITE 0x00000001U +/* + * Make it possible to retry SSL_write() with changed buffer location (buffer + * contents must stay the same!); this is not the default to avoid the + * misconception that non-blocking SSL_write() behaves like non-blocking + * write(): + */ +# define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 0x00000002U +/* + * Never bother the application with retries if the transport is blocking: + */ +# define SSL_MODE_AUTO_RETRY 0x00000004U +/* Don't attempt to automatically build certificate chain */ +# define SSL_MODE_NO_AUTO_CHAIN 0x00000008U +/* + * Save RAM by releasing read and write buffers when they're empty. (SSL3 and + * TLS only.) Released buffers are freed. + */ +# define SSL_MODE_RELEASE_BUFFERS 0x00000010U +/* + * Send the current time in the Random fields of the ClientHello and + * ServerHello records for compatibility with hypothetical implementations + * that require it. + */ +# define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020U +# define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040U +/* + * Send TLS_FALLBACK_SCSV in the ClientHello. To be set only by applications + * that reconnect with a downgraded protocol version; see + * draft-ietf-tls-downgrade-scsv-00 for details. DO NOT ENABLE THIS if your + * application attempts a normal handshake. Only use this in explicit + * fallback retries, following the guidance in + * draft-ietf-tls-downgrade-scsv-00. + */ +# define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080U +/* + * Support Asynchronous operation + */ +# define SSL_MODE_ASYNC 0x00000100U + +/* + * When using DTLS/SCTP, include the terminating zero in the label + * used for computing the endpoint-pair shared secret. Required for + * interoperability with implementations having this bug like these + * older version of OpenSSL: + * - OpenSSL 1.0.0 series + * - OpenSSL 1.0.1 series + * - OpenSSL 1.0.2 series + * - OpenSSL 1.1.0 series + * - OpenSSL 1.1.1 and 1.1.1a + */ +# define SSL_MODE_DTLS_SCTP_LABEL_LENGTH_BUG 0x00000400U + +/* Cert related flags */ +/* + * Many implementations ignore some aspects of the TLS standards such as + * enforcing certificate chain algorithms. When this is set we enforce them. + */ +# define SSL_CERT_FLAG_TLS_STRICT 0x00000001U + +/* Suite B modes, takes same values as certificate verify flags */ +# define SSL_CERT_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define SSL_CERT_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define SSL_CERT_FLAG_SUITEB_128_LOS 0x30000 + +/* Perform all sorts of protocol violations for testing purposes */ +# define SSL_CERT_FLAG_BROKEN_PROTOCOL 0x10000000 + +/* Flags for building certificate chains */ +/* Treat any existing certificates as untrusted CAs */ +# define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1 +/* Don't include root CA in chain */ +# define SSL_BUILD_CHAIN_FLAG_NO_ROOT 0x2 +/* Just check certificates already there */ +# define SSL_BUILD_CHAIN_FLAG_CHECK 0x4 +/* Ignore verification errors */ +# define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR 0x8 +/* Clear verification errors from queue */ +# define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR 0x10 + +/* Flags returned by SSL_check_chain */ +/* Certificate can be used with this session */ +# define CERT_PKEY_VALID 0x1 +/* Certificate can also be used for signing */ +# define CERT_PKEY_SIGN 0x2 +/* EE certificate signing algorithm OK */ +# define CERT_PKEY_EE_SIGNATURE 0x10 +/* CA signature algorithms OK */ +# define CERT_PKEY_CA_SIGNATURE 0x20 +/* EE certificate parameters OK */ +# define CERT_PKEY_EE_PARAM 0x40 +/* CA certificate parameters OK */ +# define CERT_PKEY_CA_PARAM 0x80 +/* Signing explicitly allowed as opposed to SHA1 fallback */ +# define CERT_PKEY_EXPLICIT_SIGN 0x100 +/* Client CA issuer names match (always set for server cert) */ +# define CERT_PKEY_ISSUER_NAME 0x200 +/* Cert type matches client types (always set for server cert) */ +# define CERT_PKEY_CERT_TYPE 0x400 +/* Cert chain suitable to Suite B */ +# define CERT_PKEY_SUITEB 0x800 + +# define SSL_CONF_FLAG_CMDLINE 0x1 +# define SSL_CONF_FLAG_FILE 0x2 +# define SSL_CONF_FLAG_CLIENT 0x4 +# define SSL_CONF_FLAG_SERVER 0x8 +# define SSL_CONF_FLAG_SHOW_ERRORS 0x10 +# define SSL_CONF_FLAG_CERTIFICATE 0x20 +# define SSL_CONF_FLAG_REQUIRE_PRIVATE 0x40 +/* Configuration value types */ +# define SSL_CONF_TYPE_UNKNOWN 0x0 +# define SSL_CONF_TYPE_STRING 0x1 +# define SSL_CONF_TYPE_FILE 0x2 +# define SSL_CONF_TYPE_DIR 0x3 +# define SSL_CONF_TYPE_NONE 0x4 + +/* Maximum length of the application-controlled segment of a a TLSv1.3 cookie */ +# define SSL_COOKIE_LENGTH 4096 + +/* + * Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, they + * cannot be used to clear bits. + */ + +unsigned long SSL_CTX_get_options(const SSL_CTX *ctx); +unsigned long SSL_get_options(const SSL *s); +unsigned long SSL_CTX_clear_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_clear_options(SSL *s, unsigned long op); +unsigned long SSL_CTX_set_options(SSL_CTX *ctx, unsigned long op); +unsigned long SSL_set_options(SSL *s, unsigned long op); + +# define SSL_CTX_set_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) +# define SSL_CTX_clear_mode(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_CTX_get_mode(ctx) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) +# define SSL_clear_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL) +# define SSL_set_mode(ssl,op) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) +# define SSL_get_mode(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL) +# define SSL_set_mtu(ssl, mtu) \ + SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) +# define DTLS_set_link_mtu(ssl, mtu) \ + SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL) +# define DTLS_get_link_min_mtu(ssl) \ + SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL) + +# define SSL_get_secure_renegotiation_support(ssl) \ + SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_heartbeat(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT,0,NULL) +# endif + +# define SSL_CTX_set_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_set_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CERT_FLAGS,(op),NULL) +# define SSL_CTX_clear_cert_flags(ctx,op) \ + SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) +# define SSL_clear_cert_flags(s,op) \ + SSL_ctrl((s),SSL_CTRL_CLEAR_CERT_FLAGS,(op),NULL) + +void SSL_CTX_set_msg_callback(SSL_CTX *ctx, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +void SSL_set_msg_callback(SSL *ssl, + void (*cb) (int write_p, int version, + int content_type, const void *buf, + size_t len, SSL *ssl, void *arg)); +# define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) +# define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) + +# define SSL_get_extms_support(s) \ + SSL_ctrl((s),SSL_CTRL_GET_EXTMS_SUPPORT,0,NULL) + +# ifndef OPENSSL_NO_SRP + +/* see tls_srp.c */ +__owur int SSL_SRP_CTX_init(SSL *s); +__owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); +int SSL_SRP_CTX_free(SSL *ctx); +int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); +__owur int SSL_srp_server_param_with_username(SSL *s, int *ad); +__owur int SRP_Calc_A_param(SSL *s); + +# endif + +/* 100k max cert list */ +# define SSL_MAX_CERT_LIST_DEFAULT 1024*100 + +# define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20) + +/* + * This callback type is used inside SSL_CTX, SSL, and in the functions that + * set them. It is used to override the generation of SSL/TLS session IDs in + * a server. Return value should be zero on an error, non-zero to proceed. + * Also, callbacks should themselves check if the id they generate is unique + * otherwise the SSL handshake will fail with an error - callbacks can do + * this using the 'ssl' value they're passed by; + * SSL_has_matching_session_id(ssl, id, *id_len) The length value passed in + * is set at the maximum size the session ID can be. In SSLv3/TLSv1 it is 32 + * bytes. The callback can alter this length to be less if desired. It is + * also an error for the callback to set the size to zero. + */ +typedef int (*GEN_SESSION_CB) (SSL *ssl, unsigned char *id, + unsigned int *id_len); + +# define SSL_SESS_CACHE_OFF 0x0000 +# define SSL_SESS_CACHE_CLIENT 0x0001 +# define SSL_SESS_CACHE_SERVER 0x0002 +# define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER) +# define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 +/* enough comments already ... see SSL_CTX_set_session_cache_mode(3) */ +# define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 +# define SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 +# define SSL_SESS_CACHE_NO_INTERNAL \ + (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) + +LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); +# define SSL_CTX_sess_number(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) +# define SSL_CTX_sess_connect(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL) +# define SSL_CTX_sess_connect_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL) +# define SSL_CTX_sess_connect_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL) +# define SSL_CTX_sess_accept_renegotiate(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL) +# define SSL_CTX_sess_accept_good(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL) +# define SSL_CTX_sess_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL) +# define SSL_CTX_sess_cb_hits(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL) +# define SSL_CTX_sess_misses(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL) +# define SSL_CTX_sess_timeouts(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL) +# define SSL_CTX_sess_cache_full(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) + +void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, + int (*new_session_cb) (struct ssl_st *ssl, + SSL_SESSION *sess)); +int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + SSL_SESSION *sess); +void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, + void (*remove_session_cb) (struct ssl_ctx_st + *ctx, + SSL_SESSION *sess)); +void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx)) (struct ssl_ctx_st *ctx, + SSL_SESSION *sess); +void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, + SSL_SESSION *(*get_session_cb) (struct ssl_st + *ssl, + const unsigned char + *data, int len, + int *copy)); +SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx)) (struct ssl_st *ssl, + const unsigned char *data, + int len, int *copy); +void SSL_CTX_set_info_callback(SSL_CTX *ctx, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_CTX_get_info_callback(SSL_CTX *ctx)) (const SSL *ssl, int type, + int val); +void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, + int (*client_cert_cb) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey)); +int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx)) (SSL *ssl, X509 **x509, + EVP_PKEY **pkey); +# ifndef OPENSSL_NO_ENGINE +__owur int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); +# endif +void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, + int (*app_gen_cookie_cb) (SSL *ssl, + unsigned char + *cookie, + unsigned int + *cookie_len)); +void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, + int (*app_verify_cookie_cb) (SSL *ssl, + const unsigned + char *cookie, + unsigned int + cookie_len)); + +void SSL_CTX_set_stateless_cookie_generate_cb( + SSL_CTX *ctx, + int (*gen_stateless_cookie_cb) (SSL *ssl, + unsigned char *cookie, + size_t *cookie_len)); +void SSL_CTX_set_stateless_cookie_verify_cb( + SSL_CTX *ctx, + int (*verify_stateless_cookie_cb) (SSL *ssl, + const unsigned char *cookie, + size_t cookie_len)); +# ifndef OPENSSL_NO_NEXTPROTONEG + +typedef int (*SSL_CTX_npn_advertised_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg); +void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, + SSL_CTX_npn_advertised_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_advertised_cb SSL_CTX_set_next_protos_advertised_cb + +typedef int (*SSL_CTX_npn_select_cb_func)(SSL *s, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, + SSL_CTX_npn_select_cb_func cb, + void *arg); +# define SSL_CTX_set_npn_select_cb SSL_CTX_set_next_proto_select_cb + +void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, + unsigned *len); +# define SSL_get0_npn_negotiated SSL_get0_next_proto_negotiated +# endif + +__owur int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); + +# define OPENSSL_NPN_UNSUPPORTED 0 +# define OPENSSL_NPN_NEGOTIATED 1 +# define OPENSSL_NPN_NO_OVERLAP 2 + +__owur int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char *protos, + unsigned int protos_len); +__owur int SSL_set_alpn_protos(SSL *ssl, const unsigned char *protos, + unsigned int protos_len); +typedef int (*SSL_CTX_alpn_select_cb_func)(SSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg); +void SSL_CTX_set_alpn_select_cb(SSL_CTX *ctx, + SSL_CTX_alpn_select_cb_func cb, + void *arg); +void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, + unsigned int *len); + +# ifndef OPENSSL_NO_PSK +/* + * the maximum length of the buffer given to callbacks containing the + * resulting identity/psk + */ +# define PSK_MAX_IDENTITY_LEN 128 +# define PSK_MAX_PSK_LEN 256 +typedef unsigned int (*SSL_psk_client_cb_func)(SSL *ssl, + const char *hint, + char *identity, + unsigned int max_identity_len, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, SSL_psk_client_cb_func cb); +void SSL_set_psk_client_callback(SSL *ssl, SSL_psk_client_cb_func cb); + +typedef unsigned int (*SSL_psk_server_cb_func)(SSL *ssl, + const char *identity, + unsigned char *psk, + unsigned int max_psk_len); +void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, SSL_psk_server_cb_func cb); +void SSL_set_psk_server_callback(SSL *ssl, SSL_psk_server_cb_func cb); + +__owur int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); +__owur int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); +const char *SSL_get_psk_identity_hint(const SSL *s); +const char *SSL_get_psk_identity(const SSL *s); +# endif + +typedef int (*SSL_psk_find_session_cb_func)(SSL *ssl, + const unsigned char *identity, + size_t identity_len, + SSL_SESSION **sess); +typedef int (*SSL_psk_use_session_cb_func)(SSL *ssl, const EVP_MD *md, + const unsigned char **id, + size_t *idlen, + SSL_SESSION **sess); + +void SSL_set_psk_find_session_callback(SSL *s, SSL_psk_find_session_cb_func cb); +void SSL_CTX_set_psk_find_session_callback(SSL_CTX *ctx, + SSL_psk_find_session_cb_func cb); +void SSL_set_psk_use_session_callback(SSL *s, SSL_psk_use_session_cb_func cb); +void SSL_CTX_set_psk_use_session_callback(SSL_CTX *ctx, + SSL_psk_use_session_cb_func cb); + +/* Register callbacks to handle custom TLS Extensions for client or server. */ + +__owur int SSL_CTX_has_client_custom_ext(const SSL_CTX *ctx, + unsigned int ext_type); + +__owur int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, + unsigned int ext_type, + custom_ext_add_cb add_cb, + custom_ext_free_cb free_cb, + void *add_arg, + custom_ext_parse_cb parse_cb, + void *parse_arg); + +__owur int SSL_CTX_add_custom_ext(SSL_CTX *ctx, unsigned int ext_type, + unsigned int context, + SSL_custom_ext_add_cb_ex add_cb, + SSL_custom_ext_free_cb_ex free_cb, + void *add_arg, + SSL_custom_ext_parse_cb_ex parse_cb, + void *parse_arg); + +__owur int SSL_extension_supported(unsigned int ext_type); + +# define SSL_NOTHING 1 +# define SSL_WRITING 2 +# define SSL_READING 3 +# define SSL_X509_LOOKUP 4 +# define SSL_ASYNC_PAUSED 5 +# define SSL_ASYNC_NO_JOBS 6 +# define SSL_CLIENT_HELLO_CB 7 + +/* These will only be used when doing non-blocking IO */ +# define SSL_want_nothing(s) (SSL_want(s) == SSL_NOTHING) +# define SSL_want_read(s) (SSL_want(s) == SSL_READING) +# define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) +# define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) +# define SSL_want_async(s) (SSL_want(s) == SSL_ASYNC_PAUSED) +# define SSL_want_async_job(s) (SSL_want(s) == SSL_ASYNC_NO_JOBS) +# define SSL_want_client_hello_cb(s) (SSL_want(s) == SSL_CLIENT_HELLO_CB) + +# define SSL_MAC_FLAG_READ_MAC_STREAM 1 +# define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 + +/* + * A callback for logging out TLS key material. This callback should log out + * |line| followed by a newline. + */ +typedef void (*SSL_CTX_keylog_cb_func)(const SSL *ssl, const char *line); + +/* + * SSL_CTX_set_keylog_callback configures a callback to log key material. This + * is intended for debugging use with tools like Wireshark. The cb function + * should log line followed by a newline. + */ +void SSL_CTX_set_keylog_callback(SSL_CTX *ctx, SSL_CTX_keylog_cb_func cb); + +/* + * SSL_CTX_get_keylog_callback returns the callback configured by + * SSL_CTX_set_keylog_callback. + */ +SSL_CTX_keylog_cb_func SSL_CTX_get_keylog_callback(const SSL_CTX *ctx); + +int SSL_CTX_set_max_early_data(SSL_CTX *ctx, uint32_t max_early_data); +uint32_t SSL_CTX_get_max_early_data(const SSL_CTX *ctx); +int SSL_set_max_early_data(SSL *s, uint32_t max_early_data); +uint32_t SSL_get_max_early_data(const SSL *s); +int SSL_CTX_set_recv_max_early_data(SSL_CTX *ctx, uint32_t recv_max_early_data); +uint32_t SSL_CTX_get_recv_max_early_data(const SSL_CTX *ctx); +int SSL_set_recv_max_early_data(SSL *s, uint32_t recv_max_early_data); +uint32_t SSL_get_recv_max_early_data(const SSL *s); + +#ifdef __cplusplus +} +#endif + +# include +# include +# include /* This is mostly sslv3 with a few tweaks */ +# include /* Datagram TLS */ +# include /* Support for the use_srtp extension */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * These need to be after the above set of includes due to a compiler bug + * in VisualStudio 2015 + */ +DEFINE_STACK_OF_CONST(SSL_CIPHER) +DEFINE_STACK_OF(SSL_COMP) + +/* compatibility */ +# define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)(arg))) +# define SSL_get_app_data(s) (SSL_get_ex_data(s,0)) +# define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0, \ + (char *)(a))) +# define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0)) +# define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0)) +# define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0, \ + (char *)(arg))) +DEPRECATEDIN_1_1_0(void SSL_set_debug(SSL *s, int debug)) + +/* TLSv1.3 KeyUpdate message types */ +/* -1 used so that this is an invalid value for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NONE -1 +/* Values as defined for the on-the-wire protocol */ +#define SSL_KEY_UPDATE_NOT_REQUESTED 0 +#define SSL_KEY_UPDATE_REQUESTED 1 + +/* + * The valid handshake states (one for each type message sent and one for each + * type of message received). There are also two "special" states: + * TLS = TLS or DTLS state + * DTLS = DTLS specific state + * CR/SR = Client Read/Server Read + * CW/SW = Client Write/Server Write + * + * The "special" states are: + * TLS_ST_BEFORE = No handshake has been initiated yet + * TLS_ST_OK = A handshake has been successfully completed + */ +typedef enum { + TLS_ST_BEFORE, + TLS_ST_OK, + DTLS_ST_CR_HELLO_VERIFY_REQUEST, + TLS_ST_CR_SRVR_HELLO, + TLS_ST_CR_CERT, + TLS_ST_CR_CERT_STATUS, + TLS_ST_CR_KEY_EXCH, + TLS_ST_CR_CERT_REQ, + TLS_ST_CR_SRVR_DONE, + TLS_ST_CR_SESSION_TICKET, + TLS_ST_CR_CHANGE, + TLS_ST_CR_FINISHED, + TLS_ST_CW_CLNT_HELLO, + TLS_ST_CW_CERT, + TLS_ST_CW_KEY_EXCH, + TLS_ST_CW_CERT_VRFY, + TLS_ST_CW_CHANGE, + TLS_ST_CW_NEXT_PROTO, + TLS_ST_CW_FINISHED, + TLS_ST_SW_HELLO_REQ, + TLS_ST_SR_CLNT_HELLO, + DTLS_ST_SW_HELLO_VERIFY_REQUEST, + TLS_ST_SW_SRVR_HELLO, + TLS_ST_SW_CERT, + TLS_ST_SW_KEY_EXCH, + TLS_ST_SW_CERT_REQ, + TLS_ST_SW_SRVR_DONE, + TLS_ST_SR_CERT, + TLS_ST_SR_KEY_EXCH, + TLS_ST_SR_CERT_VRFY, + TLS_ST_SR_NEXT_PROTO, + TLS_ST_SR_CHANGE, + TLS_ST_SR_FINISHED, + TLS_ST_SW_SESSION_TICKET, + TLS_ST_SW_CERT_STATUS, + TLS_ST_SW_CHANGE, + TLS_ST_SW_FINISHED, + TLS_ST_SW_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_ENCRYPTED_EXTENSIONS, + TLS_ST_CR_CERT_VRFY, + TLS_ST_SW_CERT_VRFY, + TLS_ST_CR_HELLO_REQ, + TLS_ST_SW_KEY_UPDATE, + TLS_ST_CW_KEY_UPDATE, + TLS_ST_SR_KEY_UPDATE, + TLS_ST_CR_KEY_UPDATE, + TLS_ST_EARLY_DATA, + TLS_ST_PENDING_EARLY_DATA_END, + TLS_ST_CW_END_OF_EARLY_DATA, + TLS_ST_SR_END_OF_EARLY_DATA +} OSSL_HANDSHAKE_STATE; + +/* + * Most of the following state values are no longer used and are defined to be + * the closest equivalent value in the current state machine code. Not all + * defines have an equivalent and are set to a dummy value (-1). SSL_ST_CONNECT + * and SSL_ST_ACCEPT are still in use in the definition of SSL_CB_ACCEPT_LOOP, + * SSL_CB_ACCEPT_EXIT, SSL_CB_CONNECT_LOOP and SSL_CB_CONNECT_EXIT. + */ + +# define SSL_ST_CONNECT 0x1000 +# define SSL_ST_ACCEPT 0x2000 + +# define SSL_ST_MASK 0x0FFF + +# define SSL_CB_LOOP 0x01 +# define SSL_CB_EXIT 0x02 +# define SSL_CB_READ 0x04 +# define SSL_CB_WRITE 0x08 +# define SSL_CB_ALERT 0x4000/* used in callback */ +# define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ) +# define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE) +# define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP) +# define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT) +# define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP) +# define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT) +# define SSL_CB_HANDSHAKE_START 0x10 +# define SSL_CB_HANDSHAKE_DONE 0x20 + +/* Is the SSL_connection established? */ +# define SSL_in_connect_init(a) (SSL_in_init(a) && !SSL_is_server(a)) +# define SSL_in_accept_init(a) (SSL_in_init(a) && SSL_is_server(a)) +int SSL_in_init(const SSL *s); +int SSL_in_before(const SSL *s); +int SSL_is_init_finished(const SSL *s); + +/* + * The following 3 states are kept in ssl->rlayer.rstate when reads fail, you + * should not need these + */ +# define SSL_ST_READ_HEADER 0xF0 +# define SSL_ST_READ_BODY 0xF1 +# define SSL_ST_READ_DONE 0xF2 + +/*- + * Obtain latest Finished message + * -- that we sent (SSL_get_finished) + * -- that we expected from peer (SSL_get_peer_finished). + * Returns length (0 == no Finished so far), copies up to 'count' bytes. + */ +size_t SSL_get_finished(const SSL *s, void *buf, size_t count); +size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count); + +/* + * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are + * 'ored' with SSL_VERIFY_PEER if they are desired + */ +# define SSL_VERIFY_NONE 0x00 +# define SSL_VERIFY_PEER 0x01 +# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02 +# define SSL_VERIFY_CLIENT_ONCE 0x04 +# define SSL_VERIFY_POST_HANDSHAKE 0x08 + +# if OPENSSL_API_COMPAT < 0x10100000L +# define OpenSSL_add_ssl_algorithms() SSL_library_init() +# define SSLeay_add_ssl_algorithms() SSL_library_init() +# endif + +/* More backward compatibility */ +# define SSL_get_cipher(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_cipher_bits(s,np) \ + SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) +# define SSL_get_cipher_version(s) \ + SSL_CIPHER_get_version(SSL_get_current_cipher(s)) +# define SSL_get_cipher_name(s) \ + SSL_CIPHER_get_name(SSL_get_current_cipher(s)) +# define SSL_get_time(a) SSL_SESSION_get_time(a) +# define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b)) +# define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) +# define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) + +# define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) +# define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) + +DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) +# define SSL_AD_REASON_OFFSET 1000/* offset to get SSL_R_... value + * from SSL_AD_... */ +/* These alert types are for SSLv3 and TLSv1 */ +# define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY +/* fatal */ +# define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE +/* fatal */ +# define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC +# define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED +# define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW +/* fatal */ +# define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE +/* fatal */ +# define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE +/* Not for TLS */ +# define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE +# define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE +# define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE +# define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED +# define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED +# define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN +/* fatal */ +# define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER +/* fatal */ +# define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA +/* fatal */ +# define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED +/* fatal */ +# define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR +# define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR +/* fatal */ +# define SSL_AD_EXPORT_RESTRICTION TLS1_AD_EXPORT_RESTRICTION +/* fatal */ +# define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION +/* fatal */ +# define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY +/* fatal */ +# define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR +# define SSL_AD_USER_CANCELLED TLS1_AD_USER_CANCELLED +# define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION +# define SSL_AD_MISSING_EXTENSION TLS13_AD_MISSING_EXTENSION +# define SSL_AD_CERTIFICATE_REQUIRED TLS13_AD_CERTIFICATE_REQUIRED +# define SSL_AD_UNSUPPORTED_EXTENSION TLS1_AD_UNSUPPORTED_EXTENSION +# define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE +# define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME +# define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE +# define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE +/* fatal */ +# define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY +/* fatal */ +# define SSL_AD_INAPPROPRIATE_FALLBACK TLS1_AD_INAPPROPRIATE_FALLBACK +# define SSL_AD_NO_APPLICATION_PROTOCOL TLS1_AD_NO_APPLICATION_PROTOCOL +# define SSL_ERROR_NONE 0 +# define SSL_ERROR_SSL 1 +# define SSL_ERROR_WANT_READ 2 +# define SSL_ERROR_WANT_WRITE 3 +# define SSL_ERROR_WANT_X509_LOOKUP 4 +# define SSL_ERROR_SYSCALL 5/* look at error stack/return + * value/errno */ +# define SSL_ERROR_ZERO_RETURN 6 +# define SSL_ERROR_WANT_CONNECT 7 +# define SSL_ERROR_WANT_ACCEPT 8 +# define SSL_ERROR_WANT_ASYNC 9 +# define SSL_ERROR_WANT_ASYNC_JOB 10 +# define SSL_ERROR_WANT_CLIENT_HELLO_CB 11 +# define SSL_CTRL_SET_TMP_DH 3 +# define SSL_CTRL_SET_TMP_ECDH 4 +# define SSL_CTRL_SET_TMP_DH_CB 6 +# define SSL_CTRL_GET_CLIENT_CERT_REQUEST 9 +# define SSL_CTRL_GET_NUM_RENEGOTIATIONS 10 +# define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 +# define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 +# define SSL_CTRL_GET_FLAGS 13 +# define SSL_CTRL_EXTRA_CHAIN_CERT 14 +# define SSL_CTRL_SET_MSG_CALLBACK 15 +# define SSL_CTRL_SET_MSG_CALLBACK_ARG 16 +/* only applies to datagram connections */ +# define SSL_CTRL_SET_MTU 17 +/* Stats */ +# define SSL_CTRL_SESS_NUMBER 20 +# define SSL_CTRL_SESS_CONNECT 21 +# define SSL_CTRL_SESS_CONNECT_GOOD 22 +# define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 +# define SSL_CTRL_SESS_ACCEPT 24 +# define SSL_CTRL_SESS_ACCEPT_GOOD 25 +# define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 +# define SSL_CTRL_SESS_HIT 27 +# define SSL_CTRL_SESS_CB_HIT 28 +# define SSL_CTRL_SESS_MISSES 29 +# define SSL_CTRL_SESS_TIMEOUTS 30 +# define SSL_CTRL_SESS_CACHE_FULL 31 +# define SSL_CTRL_MODE 33 +# define SSL_CTRL_GET_READ_AHEAD 40 +# define SSL_CTRL_SET_READ_AHEAD 41 +# define SSL_CTRL_SET_SESS_CACHE_SIZE 42 +# define SSL_CTRL_GET_SESS_CACHE_SIZE 43 +# define SSL_CTRL_SET_SESS_CACHE_MODE 44 +# define SSL_CTRL_GET_SESS_CACHE_MODE 45 +# define SSL_CTRL_GET_MAX_CERT_LIST 50 +# define SSL_CTRL_SET_MAX_CERT_LIST 51 +# define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 +/* see tls1.h for macros based on these */ +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 +# define SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 +# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 +# define SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 +# define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 +# define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 */ +/*# define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 */ +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 +# define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 +# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 +# define SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 +# define SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 +# define SSL_CTRL_SET_SRP_ARG 78 +# define SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 +# define SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 +# define SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT 85 +# define SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING 86 +# define SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS 87 +# endif +# define DTLS_CTRL_GET_TIMEOUT 73 +# define DTLS_CTRL_HANDLE_TIMEOUT 74 +# define SSL_CTRL_GET_RI_SUPPORT 76 +# define SSL_CTRL_CLEAR_MODE 78 +# define SSL_CTRL_SET_NOT_RESUMABLE_SESS_CB 79 +# define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 +# define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 +# define SSL_CTRL_CHAIN 88 +# define SSL_CTRL_CHAIN_CERT 89 +# define SSL_CTRL_GET_GROUPS 90 +# define SSL_CTRL_SET_GROUPS 91 +# define SSL_CTRL_SET_GROUPS_LIST 92 +# define SSL_CTRL_GET_SHARED_GROUP 93 +# define SSL_CTRL_SET_SIGALGS 97 +# define SSL_CTRL_SET_SIGALGS_LIST 98 +# define SSL_CTRL_CERT_FLAGS 99 +# define SSL_CTRL_CLEAR_CERT_FLAGS 100 +# define SSL_CTRL_SET_CLIENT_SIGALGS 101 +# define SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 +# define SSL_CTRL_GET_CLIENT_CERT_TYPES 103 +# define SSL_CTRL_SET_CLIENT_CERT_TYPES 104 +# define SSL_CTRL_BUILD_CERT_CHAIN 105 +# define SSL_CTRL_SET_VERIFY_CERT_STORE 106 +# define SSL_CTRL_SET_CHAIN_CERT_STORE 107 +# define SSL_CTRL_GET_PEER_SIGNATURE_NID 108 +# define SSL_CTRL_GET_PEER_TMP_KEY 109 +# define SSL_CTRL_GET_RAW_CIPHERLIST 110 +# define SSL_CTRL_GET_EC_POINT_FORMATS 111 +# define SSL_CTRL_GET_CHAIN_CERTS 115 +# define SSL_CTRL_SELECT_CURRENT_CERT 116 +# define SSL_CTRL_SET_CURRENT_CERT 117 +# define SSL_CTRL_SET_DH_AUTO 118 +# define DTLS_CTRL_SET_LINK_MTU 120 +# define DTLS_CTRL_GET_LINK_MIN_MTU 121 +# define SSL_CTRL_GET_EXTMS_SUPPORT 122 +# define SSL_CTRL_SET_MIN_PROTO_VERSION 123 +# define SSL_CTRL_SET_MAX_PROTO_VERSION 124 +# define SSL_CTRL_SET_SPLIT_SEND_FRAGMENT 125 +# define SSL_CTRL_SET_MAX_PIPELINES 126 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE 127 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB 128 +# define SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG 129 +# define SSL_CTRL_GET_MIN_PROTO_VERSION 130 +# define SSL_CTRL_GET_MAX_PROTO_VERSION 131 +# define SSL_CTRL_GET_SIGNATURE_NID 132 +# define SSL_CTRL_GET_TMP_KEY 133 +# define SSL_CERT_SET_FIRST 1 +# define SSL_CERT_SET_NEXT 2 +# define SSL_CERT_SET_SERVER 3 +# define DTLSv1_get_timeout(ssl, arg) \ + SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)(arg)) +# define DTLSv1_handle_timeout(ssl) \ + SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL) +# define SSL_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_clear_num_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL) +# define SSL_total_renegotiations(ssl) \ + SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL) +# define SSL_CTX_set_tmp_dh(ctx,dh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_set_dh_auto(ctx, onoff) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_dh_auto(s, onoff) \ + SSL_ctrl(s,SSL_CTRL_SET_DH_AUTO,onoff,NULL) +# define SSL_set_tmp_dh(ssl,dh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) +# define SSL_set_tmp_ecdh(ssl,ecdh) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) +# define SSL_CTX_add_extra_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_get_extra_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509) +# define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509) +# define SSL_CTX_clear_extra_chain_certs(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL) +# define SSL_CTX_set0_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_CTX_set1_chain(ctx,sk) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_CTX_add0_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_CTX_add1_chain_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_CTX_get0_chain_certs(ctx,px509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_CTX_clear_chain_certs(ctx) \ + SSL_CTX_set0_chain(ctx,NULL) +# define SSL_CTX_build_cert_chain(ctx, flags) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_CTX_select_current_cert(ctx,x509) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_CTX_set_current_cert(ctx, op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_CTX_set0_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_verify_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_CTX_set0_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_CTX_set1_chain_cert_store(ctx,st) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_set0_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,0,(char *)(sk)) +# define SSL_set1_chain(s,sk) \ + SSL_ctrl(s,SSL_CTRL_CHAIN,1,(char *)(sk)) +# define SSL_add0_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,0,(char *)(x509)) +# define SSL_add1_chain_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_CHAIN_CERT,1,(char *)(x509)) +# define SSL_get0_chain_certs(s,px509) \ + SSL_ctrl(s,SSL_CTRL_GET_CHAIN_CERTS,0,px509) +# define SSL_clear_chain_certs(s) \ + SSL_set0_chain(s,NULL) +# define SSL_build_cert_chain(s, flags) \ + SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL) +# define SSL_select_current_cert(s,x509) \ + SSL_ctrl(s,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)(x509)) +# define SSL_set_current_cert(s,op) \ + SSL_ctrl(s,SSL_CTRL_SET_CURRENT_CERT, op, NULL) +# define SSL_set0_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)(st)) +# define SSL_set1_verify_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,1,(char *)(st)) +# define SSL_set0_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,0,(char *)(st)) +# define SSL_set1_chain_cert_store(s,st) \ + SSL_ctrl(s,SSL_CTRL_SET_CHAIN_CERT_STORE,1,(char *)(st)) +# define SSL_get1_groups(s, glist) \ + SSL_ctrl(s,SSL_CTRL_GET_GROUPS,0,(int*)(glist)) +# define SSL_CTX_set1_groups(ctx, glist, glistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS,glistlen,(int *)(glist)) +# define SSL_CTX_set1_groups_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(s)) +# define SSL_set1_groups(s, glist, glistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS,glistlen,(char *)(glist)) +# define SSL_set1_groups_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_GROUPS_LIST,0,(char *)(str)) +# define SSL_get_shared_group(s, n) \ + SSL_ctrl(s,SSL_CTRL_GET_SHARED_GROUP,n,NULL) +# define SSL_CTX_set1_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_SIGALGS_LIST,0,(char *)(str)) +# define SSL_CTX_set1_client_sigalgs(ctx, slist, slistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_CTX_set1_client_sigalgs_list(ctx, s) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(s)) +# define SSL_set1_client_sigalgs(s, slist, slistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS,slistlen,(int *)(slist)) +# define SSL_set1_client_sigalgs_list(s, str) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_SIGALGS_LIST,0,(char *)(str)) +# define SSL_get0_certificate_types(s, clist) \ + SSL_ctrl(s, SSL_CTRL_GET_CLIENT_CERT_TYPES, 0, (char *)(clist)) +# define SSL_CTX_set1_client_certificate_types(ctx, clist, clistlen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen, \ + (char *)(clist)) +# define SSL_set1_client_certificate_types(s, clist, clistlen) \ + SSL_ctrl(s,SSL_CTRL_SET_CLIENT_CERT_TYPES,clistlen,(char *)(clist)) +# define SSL_get_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_SIGNATURE_NID,0,pn) +# define SSL_get_peer_signature_nid(s, pn) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_SIGNATURE_NID,0,pn) +# define SSL_get_peer_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_PEER_TMP_KEY,0,pk) +# define SSL_get_tmp_key(s, pk) \ + SSL_ctrl(s,SSL_CTRL_GET_TMP_KEY,0,pk) +# define SSL_get0_raw_cipherlist(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst) +# define SSL_get0_ec_point_formats(s, plst) \ + SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst) +# define SSL_CTX_set_min_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_CTX_set_max_proto_version(ctx, version) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_CTX_get_min_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_CTX_get_max_proto_version(ctx) \ + SSL_CTX_ctrl(ctx, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) +# define SSL_set_min_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MIN_PROTO_VERSION, version, NULL) +# define SSL_set_max_proto_version(s, version) \ + SSL_ctrl(s, SSL_CTRL_SET_MAX_PROTO_VERSION, version, NULL) +# define SSL_get_min_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MIN_PROTO_VERSION, 0, NULL) +# define SSL_get_max_proto_version(s) \ + SSL_ctrl(s, SSL_CTRL_GET_MAX_PROTO_VERSION, 0, NULL) + +/* Backwards compatibility, original 1.1.0 names */ +# define SSL_CTRL_GET_SERVER_TMP_KEY \ + SSL_CTRL_GET_PEER_TMP_KEY +# define SSL_get_server_tmp_key(s, pk) \ + SSL_get_peer_tmp_key(s, pk) + +/* + * The following symbol names are old and obsolete. They are kept + * for compatibility reasons only and should not be used anymore. + */ +# define SSL_CTRL_GET_CURVES SSL_CTRL_GET_GROUPS +# define SSL_CTRL_SET_CURVES SSL_CTRL_SET_GROUPS +# define SSL_CTRL_SET_CURVES_LIST SSL_CTRL_SET_GROUPS_LIST +# define SSL_CTRL_GET_SHARED_CURVE SSL_CTRL_GET_SHARED_GROUP + +# define SSL_get1_curves SSL_get1_groups +# define SSL_CTX_set1_curves SSL_CTX_set1_groups +# define SSL_CTX_set1_curves_list SSL_CTX_set1_groups_list +# define SSL_set1_curves SSL_set1_groups +# define SSL_set1_curves_list SSL_set1_groups_list +# define SSL_get_shared_curve SSL_get_shared_group + + +# if OPENSSL_API_COMPAT < 0x10100000L +/* Provide some compatibility macros for removed functionality. */ +# define SSL_CTX_need_tmp_RSA(ctx) 0 +# define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 +# define SSL_need_tmp_RSA(ssl) 0 +# define SSL_set_tmp_rsa(ssl,rsa) 1 +# define SSL_CTX_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +# define SSL_set_ecdh_auto(dummy, onoff) ((onoff) != 0) +/* + * We "pretend" to call the callback to avoid warnings about unused static + * functions. + */ +# define SSL_CTX_set_tmp_rsa_callback(ctx, cb) while(0) (cb)(NULL, 0, 0) +# define SSL_set_tmp_rsa_callback(ssl, cb) while(0) (cb)(NULL, 0, 0) +# endif +__owur const BIO_METHOD *BIO_f_ssl(void); +__owur BIO *BIO_new_ssl(SSL_CTX *ctx, int client); +__owur BIO *BIO_new_ssl_connect(SSL_CTX *ctx); +__owur BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); +__owur int BIO_ssl_copy_session_id(BIO *to, BIO *from); +void BIO_ssl_shutdown(BIO *ssl_bio); + +__owur int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); +__owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); +int SSL_CTX_up_ref(SSL_CTX *ctx); +void SSL_CTX_free(SSL_CTX *); +__owur long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); +__owur long SSL_CTX_get_timeout(const SSL_CTX *ctx); +__owur X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); +void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); +void SSL_CTX_set1_cert_store(SSL_CTX *, X509_STORE *); +__owur int SSL_want(const SSL *s); +__owur int SSL_clear(SSL *s); + +void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); + +__owur const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); +__owur const SSL_CIPHER *SSL_get_pending_cipher(const SSL *s); +__owur int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); +__owur const char *SSL_CIPHER_get_version(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_get_name(const SSL_CIPHER *c); +__owur const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c); +__owur const char *OPENSSL_cipher_name(const char *rfc_name); +__owur uint32_t SSL_CIPHER_get_id(const SSL_CIPHER *c); +__owur uint16_t SSL_CIPHER_get_protocol_id(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_kx_nid(const SSL_CIPHER *c); +__owur int SSL_CIPHER_get_auth_nid(const SSL_CIPHER *c); +__owur const EVP_MD *SSL_CIPHER_get_handshake_digest(const SSL_CIPHER *c); +__owur int SSL_CIPHER_is_aead(const SSL_CIPHER *c); + +__owur int SSL_get_fd(const SSL *s); +__owur int SSL_get_rfd(const SSL *s); +__owur int SSL_get_wfd(const SSL *s); +__owur const char *SSL_get_cipher_list(const SSL *s, int n); +__owur char *SSL_get_shared_ciphers(const SSL *s, char *buf, int size); +__owur int SSL_get_read_ahead(const SSL *s); +__owur int SSL_pending(const SSL *s); +__owur int SSL_has_pending(const SSL *s); +# ifndef OPENSSL_NO_SOCK +__owur int SSL_set_fd(SSL *s, int fd); +__owur int SSL_set_rfd(SSL *s, int fd); +__owur int SSL_set_wfd(SSL *s, int fd); +# endif +void SSL_set0_rbio(SSL *s, BIO *rbio); +void SSL_set0_wbio(SSL *s, BIO *wbio); +void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); +__owur BIO *SSL_get_rbio(const SSL *s); +__owur BIO *SSL_get_wbio(const SSL *s); +__owur int SSL_set_cipher_list(SSL *s, const char *str); +__owur int SSL_CTX_set_ciphersuites(SSL_CTX *ctx, const char *str); +__owur int SSL_set_ciphersuites(SSL *s, const char *str); +void SSL_set_read_ahead(SSL *s, int yes); +__owur int SSL_get_verify_mode(const SSL *s); +__owur int SSL_get_verify_depth(const SSL *s); +__owur SSL_verify_cb SSL_get_verify_callback(const SSL *s); +void SSL_set_verify(SSL *s, int mode, SSL_verify_cb callback); +void SSL_set_verify_depth(SSL *s, int depth); +void SSL_set_cert_cb(SSL *s, int (*cb) (SSL *ssl, void *arg), void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); +__owur int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, const unsigned char *d, + long len); +# endif +__owur int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); +__owur int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, + long len); +__owur int SSL_use_certificate(SSL *ssl, X509 *x); +__owur int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); +__owur int SSL_use_cert_and_key(SSL *ssl, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + + +/* serverinfo file format versions */ +# define SSL_SERVERINFOV1 1 +# define SSL_SERVERINFOV2 2 + +/* Set serverinfo data for the current active cert. */ +__owur int SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_ex(SSL_CTX *ctx, unsigned int version, + const unsigned char *serverinfo, + size_t serverinfo_length); +__owur int SSL_CTX_use_serverinfo_file(SSL_CTX *ctx, const char *file); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_use_RSAPrivateKey_file(SSL *ssl, const char *file, int type); +#endif + +__owur int SSL_use_PrivateKey_file(SSL *ssl, const char *file, int type); +__owur int SSL_use_certificate_file(SSL *ssl, const char *file, int type); + +#ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +#endif +__owur int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, + int type); +__owur int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, + int type); +/* PEM type */ +__owur int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); +__owur int SSL_use_certificate_chain_file(SSL *ssl, const char *file); +__owur STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); +__owur int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *file); +int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, + const char *dir); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_load_error_strings() \ + OPENSSL_init_ssl(OPENSSL_INIT_LOAD_SSL_STRINGS \ + | OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) +# endif + +__owur const char *SSL_state_string(const SSL *s); +__owur const char *SSL_rstate_string(const SSL *s); +__owur const char *SSL_state_string_long(const SSL *s); +__owur const char *SSL_rstate_string_long(const SSL *s); +__owur long SSL_SESSION_get_time(const SSL_SESSION *s); +__owur long SSL_SESSION_set_time(SSL_SESSION *s, long t); +__owur long SSL_SESSION_get_timeout(const SSL_SESSION *s); +__owur long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); +__owur int SSL_SESSION_get_protocol_version(const SSL_SESSION *s); +__owur int SSL_SESSION_set_protocol_version(SSL_SESSION *s, int version); + +__owur const char *SSL_SESSION_get0_hostname(const SSL_SESSION *s); +__owur int SSL_SESSION_set1_hostname(SSL_SESSION *s, const char *hostname); +void SSL_SESSION_get0_alpn_selected(const SSL_SESSION *s, + const unsigned char **alpn, + size_t *len); +__owur int SSL_SESSION_set1_alpn_selected(SSL_SESSION *s, + const unsigned char *alpn, + size_t len); +__owur const SSL_CIPHER *SSL_SESSION_get0_cipher(const SSL_SESSION *s); +__owur int SSL_SESSION_set_cipher(SSL_SESSION *s, const SSL_CIPHER *cipher); +__owur int SSL_SESSION_has_ticket(const SSL_SESSION *s); +__owur unsigned long SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s); +void SSL_SESSION_get0_ticket(const SSL_SESSION *s, const unsigned char **tick, + size_t *len); +__owur uint32_t SSL_SESSION_get_max_early_data(const SSL_SESSION *s); +__owur int SSL_SESSION_set_max_early_data(SSL_SESSION *s, + uint32_t max_early_data); +__owur int SSL_copy_session_id(SSL *to, const SSL *from); +__owur X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); +__owur int SSL_SESSION_set1_id_context(SSL_SESSION *s, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); +__owur int SSL_SESSION_set1_id(SSL_SESSION *s, const unsigned char *sid, + unsigned int sid_len); +__owur int SSL_SESSION_is_resumable(const SSL_SESSION *s); + +__owur SSL_SESSION *SSL_SESSION_new(void); +__owur SSL_SESSION *SSL_SESSION_dup(SSL_SESSION *src); +const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, + unsigned int *len); +const unsigned char *SSL_SESSION_get0_id_context(const SSL_SESSION *s, + unsigned int *len); +__owur unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); +# ifndef OPENSSL_NO_STDIO +int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); +# endif +int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); +int SSL_SESSION_print_keylog(BIO *bp, const SSL_SESSION *x); +int SSL_SESSION_up_ref(SSL_SESSION *ses); +void SSL_SESSION_free(SSL_SESSION *ses); +__owur int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); +__owur int SSL_set_session(SSL *to, SSL_SESSION *session); +int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *session); +int SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *session); +__owur int SSL_CTX_set_generate_session_id(SSL_CTX *ctx, GEN_SESSION_CB cb); +__owur int SSL_set_generate_session_id(SSL *s, GEN_SESSION_CB cb); +__owur int SSL_has_matching_session_id(const SSL *s, + const unsigned char *id, + unsigned int id_len); +SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, + long length); + +# ifdef HEADER_X509_H +__owur X509 *SSL_get_peer_certificate(const SSL *s); +# endif + +__owur STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); + +__owur int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); +__owur int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); +__owur SSL_verify_cb SSL_CTX_get_verify_callback(const SSL_CTX *ctx); +void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, SSL_verify_cb callback); +void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); +void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, + int (*cb) (X509_STORE_CTX *, void *), + void *arg); +void SSL_CTX_set_cert_cb(SSL_CTX *c, int (*cb) (SSL *ssl, void *arg), + void *arg); +# ifndef OPENSSL_NO_RSA +__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); +__owur int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, + long len); +# endif +__owur int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); +__owur int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, + const unsigned char *d, long len); +__owur int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); +__owur int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, + const unsigned char *d); +__owur int SSL_CTX_use_cert_and_key(SSL_CTX *ctx, X509 *x509, EVP_PKEY *privatekey, + STACK_OF(X509) *chain, int override); + +void SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, pem_password_cb *cb); +void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); +pem_password_cb *SSL_CTX_get_default_passwd_cb(SSL_CTX *ctx); +void *SSL_CTX_get_default_passwd_cb_userdata(SSL_CTX *ctx); +void SSL_set_default_passwd_cb(SSL *s, pem_password_cb *cb); +void SSL_set_default_passwd_cb_userdata(SSL *s, void *u); +pem_password_cb *SSL_get_default_passwd_cb(SSL *s); +void *SSL_get_default_passwd_cb_userdata(SSL *s); + +__owur int SSL_CTX_check_private_key(const SSL_CTX *ctx); +__owur int SSL_check_private_key(const SSL *ctx); + +__owur int SSL_CTX_set_session_id_context(SSL_CTX *ctx, + const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +SSL *SSL_new(SSL_CTX *ctx); +int SSL_up_ref(SSL *s); +int SSL_is_dtls(const SSL *s); +__owur int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, + unsigned int sid_ctx_len); + +__owur int SSL_CTX_set_purpose(SSL_CTX *ctx, int purpose); +__owur int SSL_set_purpose(SSL *ssl, int purpose); +__owur int SSL_CTX_set_trust(SSL_CTX *ctx, int trust); +__owur int SSL_set_trust(SSL *ssl, int trust); + +__owur int SSL_set1_host(SSL *s, const char *hostname); +__owur int SSL_add1_host(SSL *s, const char *hostname); +__owur const char *SSL_get0_peername(SSL *s); +void SSL_set_hostflags(SSL *s, unsigned int flags); + +__owur int SSL_CTX_dane_enable(SSL_CTX *ctx); +__owur int SSL_CTX_dane_mtype_set(SSL_CTX *ctx, const EVP_MD *md, + uint8_t mtype, uint8_t ord); +__owur int SSL_dane_enable(SSL *s, const char *basedomain); +__owur int SSL_dane_tlsa_add(SSL *s, uint8_t usage, uint8_t selector, + uint8_t mtype, unsigned const char *data, size_t dlen); +__owur int SSL_get0_dane_authority(SSL *s, X509 **mcert, EVP_PKEY **mspki); +__owur int SSL_get0_dane_tlsa(SSL *s, uint8_t *usage, uint8_t *selector, + uint8_t *mtype, unsigned const char **data, + size_t *dlen); +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +SSL_DANE *SSL_get0_dane(SSL *ssl); +/* + * DANE flags + */ +unsigned long SSL_CTX_dane_set_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_CTX_dane_clear_flags(SSL_CTX *ctx, unsigned long flags); +unsigned long SSL_dane_set_flags(SSL *ssl, unsigned long flags); +unsigned long SSL_dane_clear_flags(SSL *ssl, unsigned long flags); + +__owur int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); +__owur int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); + +__owur X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx); +__owur X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl); + +# ifndef OPENSSL_NO_SRP +int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); +int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); +int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); +int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, + char *(*cb) (SSL *, void *)); +int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, + int (*cb) (SSL *, void *)); +int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, + int (*cb) (SSL *, int *, void *)); +int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); + +int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, + BIGNUM *sa, BIGNUM *v, char *info); +int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, + const char *grp); + +__owur BIGNUM *SSL_get_srp_g(SSL *s); +__owur BIGNUM *SSL_get_srp_N(SSL *s); + +__owur char *SSL_get_srp_username(SSL *s); +__owur char *SSL_get_srp_userinfo(SSL *s); +# endif + +/* + * ClientHello callback and helpers. + */ + +# define SSL_CLIENT_HELLO_SUCCESS 1 +# define SSL_CLIENT_HELLO_ERROR 0 +# define SSL_CLIENT_HELLO_RETRY (-1) + +typedef int (*SSL_client_hello_cb_fn) (SSL *s, int *al, void *arg); +void SSL_CTX_set_client_hello_cb(SSL_CTX *c, SSL_client_hello_cb_fn cb, + void *arg); +int SSL_client_hello_isv2(SSL *s); +unsigned int SSL_client_hello_get0_legacy_version(SSL *s); +size_t SSL_client_hello_get0_random(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_session_id(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_ciphers(SSL *s, const unsigned char **out); +size_t SSL_client_hello_get0_compression_methods(SSL *s, + const unsigned char **out); +int SSL_client_hello_get1_extensions_present(SSL *s, int **out, size_t *outlen); +int SSL_client_hello_get0_ext(SSL *s, unsigned int type, + const unsigned char **out, size_t *outlen); + +void SSL_certs_clear(SSL *s); +void SSL_free(SSL *ssl); +# ifdef OSSL_ASYNC_FD +/* + * Windows application developer has to include windows.h to use these. + */ +__owur int SSL_waiting_for_async(SSL *s); +__owur int SSL_get_all_async_fds(SSL *s, OSSL_ASYNC_FD *fds, size_t *numfds); +__owur int SSL_get_changed_async_fds(SSL *s, OSSL_ASYNC_FD *addfd, + size_t *numaddfds, OSSL_ASYNC_FD *delfd, + size_t *numdelfds); +# endif +__owur int SSL_accept(SSL *ssl); +__owur int SSL_stateless(SSL *s); +__owur int SSL_connect(SSL *ssl); +__owur int SSL_read(SSL *ssl, void *buf, int num); +__owur int SSL_read_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); + +# define SSL_READ_EARLY_DATA_ERROR 0 +# define SSL_READ_EARLY_DATA_SUCCESS 1 +# define SSL_READ_EARLY_DATA_FINISH 2 + +__owur int SSL_read_early_data(SSL *s, void *buf, size_t num, + size_t *readbytes); +__owur int SSL_peek(SSL *ssl, void *buf, int num); +__owur int SSL_peek_ex(SSL *ssl, void *buf, size_t num, size_t *readbytes); +__owur int SSL_write(SSL *ssl, const void *buf, int num); +__owur int SSL_write_ex(SSL *s, const void *buf, size_t num, size_t *written); +__owur int SSL_write_early_data(SSL *s, const void *buf, size_t num, + size_t *written); +long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); +long SSL_callback_ctrl(SSL *, int, void (*)(void)); +long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); +long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); + +# define SSL_EARLY_DATA_NOT_SENT 0 +# define SSL_EARLY_DATA_REJECTED 1 +# define SSL_EARLY_DATA_ACCEPTED 2 + +__owur int SSL_get_early_data_status(const SSL *s); + +__owur int SSL_get_error(const SSL *s, int ret_code); +__owur const char *SSL_get_version(const SSL *s); + +/* This sets the 'default' SSL version that SSL_new() will create */ +__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); + +# ifndef OPENSSL_NO_SSL3_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_method(void)) /* SSLv3 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *SSLv3_client_method(void)) +# endif + +#define SSLv23_method TLS_method +#define SSLv23_server_method TLS_server_method +#define SSLv23_client_method TLS_client_method + +/* Negotiate highest available SSL/TLS version */ +__owur const SSL_METHOD *TLS_method(void); +__owur const SSL_METHOD *TLS_server_method(void); +__owur const SSL_METHOD *TLS_client_method(void); + +# ifndef OPENSSL_NO_TLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_method(void)) /* TLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_method(void)) /* TLSv1.1 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_TLS1_2_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_method(void)) /* TLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *TLSv1_2_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_METHOD +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_method(void)) /* DTLSv1.0 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_client_method(void)) +# endif + +# ifndef OPENSSL_NO_DTLS1_2_METHOD +/* DTLSv1.2 */ +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_server_method(void)) +DEPRECATEDIN_1_1_0(__owur const SSL_METHOD *DTLSv1_2_client_method(void)) +# endif + +__owur const SSL_METHOD *DTLS_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_server_method(void); /* DTLS 1.0 and 1.2 */ +__owur const SSL_METHOD *DTLS_client_method(void); /* DTLS 1.0 and 1.2 */ + +__owur size_t DTLS_get_data_mtu(const SSL *s); + +__owur STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_CTX_get_ciphers(const SSL_CTX *ctx); +__owur STACK_OF(SSL_CIPHER) *SSL_get_client_ciphers(const SSL *s); +__owur STACK_OF(SSL_CIPHER) *SSL_get1_supported_ciphers(SSL *s); + +__owur int SSL_do_handshake(SSL *s); +int SSL_key_update(SSL *s, int updatetype); +int SSL_get_key_update_type(const SSL *s); +int SSL_renegotiate(SSL *s); +int SSL_renegotiate_abbreviated(SSL *s); +__owur int SSL_renegotiate_pending(const SSL *s); +int SSL_shutdown(SSL *s); +__owur int SSL_verify_client_post_handshake(SSL *s); +void SSL_CTX_set_post_handshake_auth(SSL_CTX *ctx, int val); +void SSL_set_post_handshake_auth(SSL *s, int val); + +__owur const SSL_METHOD *SSL_CTX_get_ssl_method(const SSL_CTX *ctx); +__owur const SSL_METHOD *SSL_get_ssl_method(const SSL *s); +__owur int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method); +__owur const char *SSL_alert_type_string_long(int value); +__owur const char *SSL_alert_type_string(int value); +__owur const char *SSL_alert_desc_string_long(int value); +__owur const char *SSL_alert_desc_string(int value); + +void SSL_set0_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set0_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur const STACK_OF(X509_NAME) *SSL_get0_CA_list(const SSL *s); +__owur const STACK_OF(X509_NAME) *SSL_CTX_get0_CA_list(const SSL_CTX *ctx); +__owur int SSL_add1_to_CA_list(SSL *ssl, const X509 *x); +__owur int SSL_CTX_add1_to_CA_list(SSL_CTX *ctx, const X509 *x); +__owur const STACK_OF(X509_NAME) *SSL_get0_peer_CA_list(const SSL *s); + +void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); +void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); +__owur STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); +__owur STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); +__owur int SSL_add_client_CA(SSL *ssl, X509 *x); +__owur int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); + +void SSL_set_connect_state(SSL *s); +void SSL_set_accept_state(SSL *s); + +__owur long SSL_get_default_timeout(const SSL *s); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_library_init() OPENSSL_init_ssl(0, NULL) +# endif + +__owur char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); +__owur STACK_OF(X509_NAME) *SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk); + +__owur SSL *SSL_dup(SSL *ssl); + +__owur X509 *SSL_get_certificate(const SSL *ssl); +/* + * EVP_PKEY + */ +struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl); + +__owur X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx); +__owur EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx); + +void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx, int mode); +__owur int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx); +void SSL_set_quiet_shutdown(SSL *ssl, int mode); +__owur int SSL_get_quiet_shutdown(const SSL *ssl); +void SSL_set_shutdown(SSL *ssl, int mode); +__owur int SSL_get_shutdown(const SSL *ssl); +__owur int SSL_version(const SSL *ssl); +__owur int SSL_client_version(const SSL *s); +__owur int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_dir(SSL_CTX *ctx); +__owur int SSL_CTX_set_default_verify_file(SSL_CTX *ctx); +__owur int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, + const char *CApath); +# define SSL_get0_session SSL_get_session/* just peek at pointer */ +__owur SSL_SESSION *SSL_get_session(const SSL *ssl); +__owur SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ +__owur SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); +SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx); +void SSL_set_info_callback(SSL *ssl, + void (*cb) (const SSL *ssl, int type, int val)); +void (*SSL_get_info_callback(const SSL *ssl)) (const SSL *ssl, int type, + int val); +__owur OSSL_HANDSHAKE_STATE SSL_get_state(const SSL *ssl); + +void SSL_set_verify_result(SSL *ssl, long v); +__owur long SSL_get_verify_result(const SSL *ssl); +__owur STACK_OF(X509) *SSL_get0_verified_chain(const SSL *s); + +__owur size_t SSL_get_client_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_get_server_random(const SSL *ssl, unsigned char *out, + size_t outlen); +__owur size_t SSL_SESSION_get_master_key(const SSL_SESSION *sess, + unsigned char *out, size_t outlen); +__owur int SSL_SESSION_set1_master_key(SSL_SESSION *sess, + const unsigned char *in, size_t len); +uint8_t SSL_SESSION_get_max_fragment_length(const SSL_SESSION *sess); + +#define SSL_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL, l, p, newf, dupf, freef) +__owur int SSL_set_ex_data(SSL *ssl, int idx, void *data); +void *SSL_get_ex_data(const SSL *ssl, int idx); +#define SSL_SESSION_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_SESSION, l, p, newf, dupf, freef) +__owur int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); +void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); +#define SSL_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_SSL_CTX, l, p, newf, dupf, freef) +__owur int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); +void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); + +__owur int SSL_get_ex_data_X509_STORE_CTX_idx(void); + +# define SSL_CTX_sess_set_cache_size(ctx,t) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL) +# define SSL_CTX_sess_get_cache_size(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL) +# define SSL_CTX_set_session_cache_mode(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL) +# define SSL_CTX_get_session_cache_mode(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL) + +# define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx) +# define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m) +# define SSL_CTX_get_read_ahead(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL) +# define SSL_CTX_set_read_ahead(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,m,NULL) +# define SSL_CTX_get_max_cert_list(ctx) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_CTX_set_max_cert_list(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) +# define SSL_get_max_cert_list(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_MAX_CERT_LIST,0,NULL) +# define SSL_set_max_cert_list(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) + +# define SSL_CTX_set_max_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_set_max_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_split_send_fragment(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_set_split_send_fragment(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_SPLIT_SEND_FRAGMENT,m,NULL) +# define SSL_CTX_set_max_pipelines(ctx,m) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) +# define SSL_set_max_pipelines(ssl,m) \ + SSL_ctrl(ssl,SSL_CTRL_SET_MAX_PIPELINES,m,NULL) + +void SSL_CTX_set_default_read_buffer_len(SSL_CTX *ctx, size_t len); +void SSL_set_default_read_buffer_len(SSL *s, size_t len); + +# ifndef OPENSSL_NO_DH +/* NB: the |keylength| is only applicable when is_export is true */ +void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +void SSL_set_tmp_dh_callback(SSL *ssl, + DH *(*dh) (SSL *ssl, int is_export, + int keylength)); +# endif + +__owur const COMP_METHOD *SSL_get_current_compression(const SSL *s); +__owur const COMP_METHOD *SSL_get_current_expansion(const SSL *s); +__owur const char *SSL_COMP_get_name(const COMP_METHOD *comp); +__owur const char *SSL_COMP_get0_name(const SSL_COMP *comp); +__owur int SSL_COMP_get_id(const SSL_COMP *comp); +STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +__owur STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) + *meths); +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_COMP_free_compression_methods() while(0) continue +# endif +__owur int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); + +const SSL_CIPHER *SSL_CIPHER_find(SSL *ssl, const unsigned char *ptr); +int SSL_CIPHER_get_cipher_nid(const SSL_CIPHER *c); +int SSL_CIPHER_get_digest_nid(const SSL_CIPHER *c); +int SSL_bytes_to_cipher_list(SSL *s, const unsigned char *bytes, size_t len, + int isv2format, STACK_OF(SSL_CIPHER) **sk, + STACK_OF(SSL_CIPHER) **scsvs); + +/* TLS extensions functions */ +__owur int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); + +__owur int SSL_set_session_ticket_ext_cb(SSL *s, + tls_session_ticket_ext_cb_fn cb, + void *arg); + +/* Pre-shared secret session resumption functions */ +__owur int SSL_set_session_secret_cb(SSL *s, + tls_session_secret_cb_fn session_secret_cb, + void *arg); + +void SSL_CTX_set_not_resumable_session_callback(SSL_CTX *ctx, + int (*cb) (SSL *ssl, + int + is_forward_secure)); + +void SSL_set_not_resumable_session_callback(SSL *ssl, + int (*cb) (SSL *ssl, + int is_forward_secure)); + +void SSL_CTX_set_record_padding_callback(SSL_CTX *ctx, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_CTX_set_record_padding_callback_arg(SSL_CTX *ctx, void *arg); +void *SSL_CTX_get_record_padding_callback_arg(const SSL_CTX *ctx); +int SSL_CTX_set_block_padding(SSL_CTX *ctx, size_t block_size); + +void SSL_set_record_padding_callback(SSL *ssl, + size_t (*cb) (SSL *ssl, int type, + size_t len, void *arg)); +void SSL_set_record_padding_callback_arg(SSL *ssl, void *arg); +void *SSL_get_record_padding_callback_arg(const SSL *ssl); +int SSL_set_block_padding(SSL *ssl, size_t block_size); + +int SSL_set_num_tickets(SSL *s, size_t num_tickets); +size_t SSL_get_num_tickets(const SSL *s); +int SSL_CTX_set_num_tickets(SSL_CTX *ctx, size_t num_tickets); +size_t SSL_CTX_get_num_tickets(const SSL_CTX *ctx); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_cache_hit(s) SSL_session_reused(s) +# endif + +__owur int SSL_session_reused(const SSL *s); +__owur int SSL_is_server(const SSL *s); + +__owur __owur SSL_CONF_CTX *SSL_CONF_CTX_new(void); +int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx); +void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx); +unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags); +__owur unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, + unsigned int flags); +__owur int SSL_CONF_CTX_set1_prefix(SSL_CONF_CTX *cctx, const char *pre); + +void SSL_CONF_CTX_set_ssl(SSL_CONF_CTX *cctx, SSL *ssl); +void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx); + +__owur int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value); +__owur int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv); +__owur int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd); + +void SSL_add_ssl_module(void); +int SSL_config(SSL *s, const char *name); +int SSL_CTX_config(SSL_CTX *ctx, const char *name); + +# ifndef OPENSSL_NO_SSL_TRACE +void SSL_trace(int write_p, int version, int content_type, + const void *buf, size_t len, SSL *ssl, void *arg); +# endif + +# ifndef OPENSSL_NO_SOCK +int DTLSv1_listen(SSL *s, BIO_ADDR *client); +# endif + +# ifndef OPENSSL_NO_CT + +/* + * A callback for verifying that the received SCTs are sufficient. + * Expected to return 1 if they are sufficient, otherwise 0. + * May return a negative integer if an error occurs. + * A connection should be aborted if the SCTs are deemed insufficient. + */ +typedef int (*ssl_ct_validation_cb)(const CT_POLICY_EVAL_CTX *ctx, + const STACK_OF(SCT) *scts, void *arg); + +/* + * Sets a |callback| that is invoked upon receipt of ServerHelloDone to validate + * the received SCTs. + * If the callback returns a non-positive result, the connection is terminated. + * Call this function before beginning a handshake. + * If a NULL |callback| is provided, SCT validation is disabled. + * |arg| is arbitrary userdata that will be passed to the callback whenever it + * is invoked. Ownership of |arg| remains with the caller. + * + * NOTE: A side-effect of setting a CT callback is that an OCSP stapled response + * will be requested. + */ +int SSL_set_ct_validation_callback(SSL *s, ssl_ct_validation_cb callback, + void *arg); +int SSL_CTX_set_ct_validation_callback(SSL_CTX *ctx, + ssl_ct_validation_cb callback, + void *arg); +#define SSL_disable_ct(s) \ + ((void) SSL_set_validation_callback((s), NULL, NULL)) +#define SSL_CTX_disable_ct(ctx) \ + ((void) SSL_CTX_set_validation_callback((ctx), NULL, NULL)) + +/* + * The validation type enumerates the available behaviours of the built-in SSL + * CT validation callback selected via SSL_enable_ct() and SSL_CTX_enable_ct(). + * The underlying callback is a static function in libssl. + */ +enum { + SSL_CT_VALIDATION_PERMISSIVE = 0, + SSL_CT_VALIDATION_STRICT +}; + +/* + * Enable CT by setting up a callback that implements one of the built-in + * validation variants. The SSL_CT_VALIDATION_PERMISSIVE variant always + * continues the handshake, the application can make appropriate decisions at + * handshake completion. The SSL_CT_VALIDATION_STRICT variant requires at + * least one valid SCT, or else handshake termination will be requested. The + * handshake may continue anyway if SSL_VERIFY_NONE is in effect. + */ +int SSL_enable_ct(SSL *s, int validation_mode); +int SSL_CTX_enable_ct(SSL_CTX *ctx, int validation_mode); + +/* + * Report whether a non-NULL callback is enabled. + */ +int SSL_ct_is_enabled(const SSL *s); +int SSL_CTX_ct_is_enabled(const SSL_CTX *ctx); + +/* Gets the SCTs received from a connection */ +const STACK_OF(SCT) *SSL_get0_peer_scts(SSL *s); + +/* + * Loads the CT log list from the default location. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_default_ctlog_list_file(SSL_CTX *ctx); + +/* + * Loads the CT log list from the specified file path. + * If a CTLOG_STORE has previously been set using SSL_CTX_set_ctlog_store, + * the log information loaded from this file will be appended to the + * CTLOG_STORE. + * Returns 1 on success, 0 otherwise. + */ +int SSL_CTX_set_ctlog_list_file(SSL_CTX *ctx, const char *path); + +/* + * Sets the CT log list used by all SSL connections created from this SSL_CTX. + * Ownership of the CTLOG_STORE is transferred to the SSL_CTX. + */ +void SSL_CTX_set0_ctlog_store(SSL_CTX *ctx, CTLOG_STORE *logs); + +/* + * Gets the CT log list used by all SSL connections created from this SSL_CTX. + * This will be NULL unless one of the following functions has been called: + * - SSL_CTX_set_default_ctlog_list_file + * - SSL_CTX_set_ctlog_list_file + * - SSL_CTX_set_ctlog_store + */ +const CTLOG_STORE *SSL_CTX_get0_ctlog_store(const SSL_CTX *ctx); + +# endif /* OPENSSL_NO_CT */ + +/* What the "other" parameter contains in security callback */ +/* Mask for type */ +# define SSL_SECOP_OTHER_TYPE 0xffff0000 +# define SSL_SECOP_OTHER_NONE 0 +# define SSL_SECOP_OTHER_CIPHER (1 << 16) +# define SSL_SECOP_OTHER_CURVE (2 << 16) +# define SSL_SECOP_OTHER_DH (3 << 16) +# define SSL_SECOP_OTHER_PKEY (4 << 16) +# define SSL_SECOP_OTHER_SIGALG (5 << 16) +# define SSL_SECOP_OTHER_CERT (6 << 16) + +/* Indicated operation refers to peer key or certificate */ +# define SSL_SECOP_PEER 0x1000 + +/* Values for "op" parameter in security callback */ + +/* Called to filter ciphers */ +/* Ciphers client supports */ +# define SSL_SECOP_CIPHER_SUPPORTED (1 | SSL_SECOP_OTHER_CIPHER) +/* Cipher shared by client/server */ +# define SSL_SECOP_CIPHER_SHARED (2 | SSL_SECOP_OTHER_CIPHER) +/* Sanity check of cipher server selects */ +# define SSL_SECOP_CIPHER_CHECK (3 | SSL_SECOP_OTHER_CIPHER) +/* Curves supported by client */ +# define SSL_SECOP_CURVE_SUPPORTED (4 | SSL_SECOP_OTHER_CURVE) +/* Curves shared by client/server */ +# define SSL_SECOP_CURVE_SHARED (5 | SSL_SECOP_OTHER_CURVE) +/* Sanity check of curve server selects */ +# define SSL_SECOP_CURVE_CHECK (6 | SSL_SECOP_OTHER_CURVE) +/* Temporary DH key */ +# define SSL_SECOP_TMP_DH (7 | SSL_SECOP_OTHER_PKEY) +/* SSL/TLS version */ +# define SSL_SECOP_VERSION (9 | SSL_SECOP_OTHER_NONE) +/* Session tickets */ +# define SSL_SECOP_TICKET (10 | SSL_SECOP_OTHER_NONE) +/* Supported signature algorithms sent to peer */ +# define SSL_SECOP_SIGALG_SUPPORTED (11 | SSL_SECOP_OTHER_SIGALG) +/* Shared signature algorithm */ +# define SSL_SECOP_SIGALG_SHARED (12 | SSL_SECOP_OTHER_SIGALG) +/* Sanity check signature algorithm allowed */ +# define SSL_SECOP_SIGALG_CHECK (13 | SSL_SECOP_OTHER_SIGALG) +/* Used to get mask of supported public key signature algorithms */ +# define SSL_SECOP_SIGALG_MASK (14 | SSL_SECOP_OTHER_SIGALG) +/* Use to see if compression is allowed */ +# define SSL_SECOP_COMPRESSION (15 | SSL_SECOP_OTHER_NONE) +/* EE key in certificate */ +# define SSL_SECOP_EE_KEY (16 | SSL_SECOP_OTHER_CERT) +/* CA key in certificate */ +# define SSL_SECOP_CA_KEY (17 | SSL_SECOP_OTHER_CERT) +/* CA digest algorithm in certificate */ +# define SSL_SECOP_CA_MD (18 | SSL_SECOP_OTHER_CERT) +/* Peer EE key in certificate */ +# define SSL_SECOP_PEER_EE_KEY (SSL_SECOP_EE_KEY | SSL_SECOP_PEER) +/* Peer CA key in certificate */ +# define SSL_SECOP_PEER_CA_KEY (SSL_SECOP_CA_KEY | SSL_SECOP_PEER) +/* Peer CA digest algorithm in certificate */ +# define SSL_SECOP_PEER_CA_MD (SSL_SECOP_CA_MD | SSL_SECOP_PEER) + +void SSL_set_security_level(SSL *s, int level); +__owur int SSL_get_security_level(const SSL *s); +void SSL_set_security_callback(SSL *s, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_get_security_callback(const SSL *s)) (const SSL *s, + const SSL_CTX *ctx, int op, + int bits, int nid, void *other, + void *ex); +void SSL_set0_security_ex_data(SSL *s, void *ex); +__owur void *SSL_get0_security_ex_data(const SSL *s); + +void SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +__owur int SSL_CTX_get_security_level(const SSL_CTX *ctx); +void SSL_CTX_set_security_callback(SSL_CTX *ctx, + int (*cb) (const SSL *s, const SSL_CTX *ctx, + int op, int bits, int nid, + void *other, void *ex)); +int (*SSL_CTX_get_security_callback(const SSL_CTX *ctx)) (const SSL *s, + const SSL_CTX *ctx, + int op, int bits, + int nid, + void *other, + void *ex); +void SSL_CTX_set0_security_ex_data(SSL_CTX *ctx, void *ex); +__owur void *SSL_CTX_get0_security_ex_data(const SSL_CTX *ctx); + +/* OPENSSL_INIT flag 0x010000 reserved for internal use */ +# define OPENSSL_INIT_NO_LOAD_SSL_STRINGS 0x00100000L +# define OPENSSL_INIT_LOAD_SSL_STRINGS 0x00200000L + +# define OPENSSL_INIT_SSL_DEFAULT \ + (OPENSSL_INIT_LOAD_SSL_STRINGS | OPENSSL_INIT_LOAD_CRYPTO_STRINGS) + +int OPENSSL_init_ssl(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings); + +# ifndef OPENSSL_NO_UNIT_TEST +__owur const struct openssl_ssl_test_functions *SSL_test_functions(void); +# endif + +__owur int SSL_free_buffers(SSL *ssl); +__owur int SSL_alloc_buffers(SSL *ssl); + +/* Status codes passed to the decrypt session ticket callback. Some of these + * are for internal use only and are never passed to the callback. */ +typedef int SSL_TICKET_STATUS; + +/* Support for ticket appdata */ +/* fatal error, malloc failure */ +# define SSL_TICKET_FATAL_ERR_MALLOC 0 +/* fatal error, either from parsing or decrypting the ticket */ +# define SSL_TICKET_FATAL_ERR_OTHER 1 +/* No ticket present */ +# define SSL_TICKET_NONE 2 +/* Empty ticket present */ +# define SSL_TICKET_EMPTY 3 +/* the ticket couldn't be decrypted */ +# define SSL_TICKET_NO_DECRYPT 4 +/* a ticket was successfully decrypted */ +# define SSL_TICKET_SUCCESS 5 +/* same as above but the ticket needs to be renewed */ +# define SSL_TICKET_SUCCESS_RENEW 6 + +/* Return codes for the decrypt session ticket callback */ +typedef int SSL_TICKET_RETURN; + +/* An error occurred */ +#define SSL_TICKET_RETURN_ABORT 0 +/* Do not use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE 1 +/* Do not use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_IGNORE_RENEW 2 +/* Use the ticket, do not send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE 3 +/* Use the ticket, send a renewed ticket to the client */ +#define SSL_TICKET_RETURN_USE_RENEW 4 + +typedef int (*SSL_CTX_generate_session_ticket_fn)(SSL *s, void *arg); +typedef SSL_TICKET_RETURN (*SSL_CTX_decrypt_session_ticket_fn)(SSL *s, SSL_SESSION *ss, + const unsigned char *keyname, + size_t keyname_length, + SSL_TICKET_STATUS status, + void *arg); +int SSL_CTX_set_session_ticket_cb(SSL_CTX *ctx, + SSL_CTX_generate_session_ticket_fn gen_cb, + SSL_CTX_decrypt_session_ticket_fn dec_cb, + void *arg); +int SSL_SESSION_set1_ticket_appdata(SSL_SESSION *ss, const void *data, size_t len); +int SSL_SESSION_get0_ticket_appdata(SSL_SESSION *ss, void **data, size_t *len); + +extern const char SSL_version_str[]; + +typedef unsigned int (*DTLS_timer_cb)(SSL *s, unsigned int timer_us); + +void DTLS_set_timer_cb(SSL *s, DTLS_timer_cb cb); + + +typedef int (*SSL_allow_early_data_cb_fn)(SSL *s, void *arg); +void SSL_CTX_set_allow_early_data_cb(SSL_CTX *ctx, + SSL_allow_early_data_cb_fn cb, + void *arg); +void SSL_set_allow_early_data_cb(SSL *s, + SSL_allow_early_data_cb_fn cb, + void *arg); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/ssl2.h b/include/openssl/openssl/ssl2.h new file mode 100644 index 00000000..5321bd27 --- /dev/null +++ b/include/openssl/openssl/ssl2.h @@ -0,0 +1,24 @@ +/* + * Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL2_H +# define HEADER_SSL2_H + +#ifdef __cplusplus +extern "C" { +#endif + +# define SSL2_VERSION 0x0002 + +# define SSL2_MT_CLIENT_HELLO 1 + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/ssl3.h b/include/openssl/openssl/ssl3.h new file mode 100644 index 00000000..07effba2 --- /dev/null +++ b/include/openssl/openssl/ssl3.h @@ -0,0 +1,342 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSL3_H +# define HEADER_SSL3_H + +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Signalling cipher suite value from RFC 5746 + * (TLS_EMPTY_RENEGOTIATION_INFO_SCSV) + */ +# define SSL3_CK_SCSV 0x030000FF + +/* + * Signalling cipher suite value from draft-ietf-tls-downgrade-scsv-00 + * (TLS_FALLBACK_SCSV) + */ +# define SSL3_CK_FALLBACK_SCSV 0x03005600 + +# define SSL3_CK_RSA_NULL_MD5 0x03000001 +# define SSL3_CK_RSA_NULL_SHA 0x03000002 +# define SSL3_CK_RSA_RC4_40_MD5 0x03000003 +# define SSL3_CK_RSA_RC4_128_MD5 0x03000004 +# define SSL3_CK_RSA_RC4_128_SHA 0x03000005 +# define SSL3_CK_RSA_RC2_40_MD5 0x03000006 +# define SSL3_CK_RSA_IDEA_128_SHA 0x03000007 +# define SSL3_CK_RSA_DES_40_CBC_SHA 0x03000008 +# define SSL3_CK_RSA_DES_64_CBC_SHA 0x03000009 +# define SSL3_CK_RSA_DES_192_CBC3_SHA 0x0300000A + +# define SSL3_CK_DH_DSS_DES_40_CBC_SHA 0x0300000B +# define SSL3_CK_DH_DSS_DES_64_CBC_SHA 0x0300000C +# define SSL3_CK_DH_DSS_DES_192_CBC3_SHA 0x0300000D +# define SSL3_CK_DH_RSA_DES_40_CBC_SHA 0x0300000E +# define SSL3_CK_DH_RSA_DES_64_CBC_SHA 0x0300000F +# define SSL3_CK_DH_RSA_DES_192_CBC3_SHA 0x03000010 + +# define SSL3_CK_DHE_DSS_DES_40_CBC_SHA 0x03000011 +# define SSL3_CK_EDH_DSS_DES_40_CBC_SHA SSL3_CK_DHE_DSS_DES_40_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_64_CBC_SHA 0x03000012 +# define SSL3_CK_EDH_DSS_DES_64_CBC_SHA SSL3_CK_DHE_DSS_DES_64_CBC_SHA +# define SSL3_CK_DHE_DSS_DES_192_CBC3_SHA 0x03000013 +# define SSL3_CK_EDH_DSS_DES_192_CBC3_SHA SSL3_CK_DHE_DSS_DES_192_CBC3_SHA +# define SSL3_CK_DHE_RSA_DES_40_CBC_SHA 0x03000014 +# define SSL3_CK_EDH_RSA_DES_40_CBC_SHA SSL3_CK_DHE_RSA_DES_40_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_64_CBC_SHA 0x03000015 +# define SSL3_CK_EDH_RSA_DES_64_CBC_SHA SSL3_CK_DHE_RSA_DES_64_CBC_SHA +# define SSL3_CK_DHE_RSA_DES_192_CBC3_SHA 0x03000016 +# define SSL3_CK_EDH_RSA_DES_192_CBC3_SHA SSL3_CK_DHE_RSA_DES_192_CBC3_SHA + +# define SSL3_CK_ADH_RC4_40_MD5 0x03000017 +# define SSL3_CK_ADH_RC4_128_MD5 0x03000018 +# define SSL3_CK_ADH_DES_40_CBC_SHA 0x03000019 +# define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A +# define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define SSL3_RFC_RSA_NULL_MD5 "TLS_RSA_WITH_NULL_MD5" +# define SSL3_RFC_RSA_NULL_SHA "TLS_RSA_WITH_NULL_SHA" +# define SSL3_RFC_RSA_DES_192_CBC3_SHA "TLS_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_DSS_DES_192_CBC3_SHA "TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_DHE_RSA_DES_192_CBC3_SHA "TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_ADH_DES_192_CBC_SHA "TLS_DH_anon_WITH_3DES_EDE_CBC_SHA" +# define SSL3_RFC_RSA_IDEA_128_SHA "TLS_RSA_WITH_IDEA_CBC_SHA" +# define SSL3_RFC_RSA_RC4_128_MD5 "TLS_RSA_WITH_RC4_128_MD5" +# define SSL3_RFC_RSA_RC4_128_SHA "TLS_RSA_WITH_RC4_128_SHA" +# define SSL3_RFC_ADH_RC4_128_MD5 "TLS_DH_anon_WITH_RC4_128_MD5" + +# define SSL3_TXT_RSA_NULL_MD5 "NULL-MD5" +# define SSL3_TXT_RSA_NULL_SHA "NULL-SHA" +# define SSL3_TXT_RSA_RC4_40_MD5 "EXP-RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_MD5 "RC4-MD5" +# define SSL3_TXT_RSA_RC4_128_SHA "RC4-SHA" +# define SSL3_TXT_RSA_RC2_40_MD5 "EXP-RC2-CBC-MD5" +# define SSL3_TXT_RSA_IDEA_128_SHA "IDEA-CBC-SHA" +# define SSL3_TXT_RSA_DES_40_CBC_SHA "EXP-DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_64_CBC_SHA "DES-CBC-SHA" +# define SSL3_TXT_RSA_DES_192_CBC3_SHA "DES-CBC3-SHA" + +# define SSL3_TXT_DH_DSS_DES_40_CBC_SHA "EXP-DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_64_CBC_SHA "DH-DSS-DES-CBC-SHA" +# define SSL3_TXT_DH_DSS_DES_192_CBC3_SHA "DH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DH_RSA_DES_40_CBC_SHA "EXP-DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_64_CBC_SHA "DH-RSA-DES-CBC-SHA" +# define SSL3_TXT_DH_RSA_DES_192_CBC3_SHA "DH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_DHE_DSS_DES_40_CBC_SHA "EXP-DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_64_CBC_SHA "DHE-DSS-DES-CBC-SHA" +# define SSL3_TXT_DHE_DSS_DES_192_CBC3_SHA "DHE-DSS-DES-CBC3-SHA" +# define SSL3_TXT_DHE_RSA_DES_40_CBC_SHA "EXP-DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_64_CBC_SHA "DHE-RSA-DES-CBC-SHA" +# define SSL3_TXT_DHE_RSA_DES_192_CBC3_SHA "DHE-RSA-DES-CBC3-SHA" + +/* + * This next block of six "EDH" labels is for backward compatibility with + * older versions of OpenSSL. New code should use the six "DHE" labels above + * instead: + */ +# define SSL3_TXT_EDH_DSS_DES_40_CBC_SHA "EXP-EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_64_CBC_SHA "EDH-DSS-DES-CBC-SHA" +# define SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA "EDH-DSS-DES-CBC3-SHA" +# define SSL3_TXT_EDH_RSA_DES_40_CBC_SHA "EXP-EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_64_CBC_SHA "EDH-RSA-DES-CBC-SHA" +# define SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA "EDH-RSA-DES-CBC3-SHA" + +# define SSL3_TXT_ADH_RC4_40_MD5 "EXP-ADH-RC4-MD5" +# define SSL3_TXT_ADH_RC4_128_MD5 "ADH-RC4-MD5" +# define SSL3_TXT_ADH_DES_40_CBC_SHA "EXP-ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" +# define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" + +# define SSL3_SSL_SESSION_ID_LENGTH 32 +# define SSL3_MAX_SSL_SESSION_ID_LENGTH 32 + +# define SSL3_MASTER_SECRET_SIZE 48 +# define SSL3_RANDOM_SIZE 32 +# define SSL3_SESSION_ID_SIZE 32 +# define SSL3_RT_HEADER_LENGTH 5 + +# define SSL3_HM_HEADER_LENGTH 4 + +# ifndef SSL3_ALIGN_PAYLOAD + /* + * Some will argue that this increases memory footprint, but it's not + * actually true. Point is that malloc has to return at least 64-bit aligned + * pointers, meaning that allocating 5 bytes wastes 3 bytes in either case. + * Suggested pre-gaping simply moves these wasted bytes from the end of + * allocated region to its front, but makes data payload aligned, which + * improves performance:-) + */ +# define SSL3_ALIGN_PAYLOAD 8 +# else +# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0 +# error "insane SSL3_ALIGN_PAYLOAD" +# undef SSL3_ALIGN_PAYLOAD +# endif +# endif + +/* + * This is the maximum MAC (digest) size used by the SSL library. Currently + * maximum of 20 is used by SHA1, but we reserve for future extension for + * 512-bit hashes. + */ + +# define SSL3_RT_MAX_MD_SIZE 64 + +/* + * Maximum block size used in all ciphersuites. Currently 16 for AES. + */ + +# define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16 + +# define SSL3_RT_MAX_EXTRA (16384) + +/* Maximum plaintext length: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_PLAIN_LENGTH 16384 +/* Maximum compression overhead: defined by SSL/TLS standards */ +# define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024 + +/* + * The standards give a maximum encryption overhead of 1024 bytes. In + * practice the value is lower than this. The overhead is the maximum number + * of padding bytes (256) plus the mac size. + */ +# define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD 256 + +/* + * OpenSSL currently only uses a padding length of at most one block so the + * send overhead is smaller. + */ + +# define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \ + (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE) + +/* If compression isn't used don't include the compression overhead */ + +# ifdef OPENSSL_NO_COMP +# define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH +# else +# define SSL3_RT_MAX_COMPRESSED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD) +# endif +# define SSL3_RT_MAX_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH) +# define SSL3_RT_MAX_TLS13_ENCRYPTED_LENGTH \ + (SSL3_RT_MAX_PLAIN_LENGTH + SSL3_RT_MAX_TLS13_ENCRYPTED_OVERHEAD) +# define SSL3_RT_MAX_PACKET_SIZE \ + (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) + +# define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" +# define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" + +# define SSL3_VERSION 0x0300 +# define SSL3_VERSION_MAJOR 0x03 +# define SSL3_VERSION_MINOR 0x00 + +# define SSL3_RT_CHANGE_CIPHER_SPEC 20 +# define SSL3_RT_ALERT 21 +# define SSL3_RT_HANDSHAKE 22 +# define SSL3_RT_APPLICATION_DATA 23 +# define DTLS1_RT_HEARTBEAT 24 + +/* Pseudo content types to indicate additional parameters */ +# define TLS1_RT_CRYPTO 0x1000 +# define TLS1_RT_CRYPTO_PREMASTER (TLS1_RT_CRYPTO | 0x1) +# define TLS1_RT_CRYPTO_CLIENT_RANDOM (TLS1_RT_CRYPTO | 0x2) +# define TLS1_RT_CRYPTO_SERVER_RANDOM (TLS1_RT_CRYPTO | 0x3) +# define TLS1_RT_CRYPTO_MASTER (TLS1_RT_CRYPTO | 0x4) + +# define TLS1_RT_CRYPTO_READ 0x0000 +# define TLS1_RT_CRYPTO_WRITE 0x0100 +# define TLS1_RT_CRYPTO_MAC (TLS1_RT_CRYPTO | 0x5) +# define TLS1_RT_CRYPTO_KEY (TLS1_RT_CRYPTO | 0x6) +# define TLS1_RT_CRYPTO_IV (TLS1_RT_CRYPTO | 0x7) +# define TLS1_RT_CRYPTO_FIXED_IV (TLS1_RT_CRYPTO | 0x8) + +/* Pseudo content types for SSL/TLS header info */ +# define SSL3_RT_HEADER 0x100 +# define SSL3_RT_INNER_CONTENT_TYPE 0x101 + +# define SSL3_AL_WARNING 1 +# define SSL3_AL_FATAL 2 + +# define SSL3_AD_CLOSE_NOTIFY 0 +# define SSL3_AD_UNEXPECTED_MESSAGE 10/* fatal */ +# define SSL3_AD_BAD_RECORD_MAC 20/* fatal */ +# define SSL3_AD_DECOMPRESSION_FAILURE 30/* fatal */ +# define SSL3_AD_HANDSHAKE_FAILURE 40/* fatal */ +# define SSL3_AD_NO_CERTIFICATE 41 +# define SSL3_AD_BAD_CERTIFICATE 42 +# define SSL3_AD_UNSUPPORTED_CERTIFICATE 43 +# define SSL3_AD_CERTIFICATE_REVOKED 44 +# define SSL3_AD_CERTIFICATE_EXPIRED 45 +# define SSL3_AD_CERTIFICATE_UNKNOWN 46 +# define SSL3_AD_ILLEGAL_PARAMETER 47/* fatal */ + +# define TLS1_HB_REQUEST 1 +# define TLS1_HB_RESPONSE 2 + + +# define SSL3_CT_RSA_SIGN 1 +# define SSL3_CT_DSS_SIGN 2 +# define SSL3_CT_RSA_FIXED_DH 3 +# define SSL3_CT_DSS_FIXED_DH 4 +# define SSL3_CT_RSA_EPHEMERAL_DH 5 +# define SSL3_CT_DSS_EPHEMERAL_DH 6 +# define SSL3_CT_FORTEZZA_DMS 20 +/* + * SSL3_CT_NUMBER is used to size arrays and it must be large enough to + * contain all of the cert types defined for *either* SSLv3 and TLSv1. + */ +# define SSL3_CT_NUMBER 10 + +# if defined(TLS_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +/* No longer used as of OpenSSL 1.1.1 */ +# define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 + +/* Removed from OpenSSL 1.1.0 */ +# define TLS1_FLAGS_TLS_PADDING_BUG 0x0 + +# define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 + +/* Set if we encrypt then mac instead of usual mac then encrypt */ +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_READ 0x0100 +# define TLS1_FLAGS_ENCRYPT_THEN_MAC TLS1_FLAGS_ENCRYPT_THEN_MAC_READ + +/* Set if extended master secret extension received from peer */ +# define TLS1_FLAGS_RECEIVED_EXTMS 0x0200 + +# define TLS1_FLAGS_ENCRYPT_THEN_MAC_WRITE 0x0400 + +# define TLS1_FLAGS_STATELESS 0x0800 + +/* Set if extended master secret extension required on renegotiation */ +# define TLS1_FLAGS_REQUIRED_EXTMS 0x1000 + +# define SSL3_MT_HELLO_REQUEST 0 +# define SSL3_MT_CLIENT_HELLO 1 +# define SSL3_MT_SERVER_HELLO 2 +# define SSL3_MT_NEWSESSION_TICKET 4 +# define SSL3_MT_END_OF_EARLY_DATA 5 +# define SSL3_MT_ENCRYPTED_EXTENSIONS 8 +# define SSL3_MT_CERTIFICATE 11 +# define SSL3_MT_SERVER_KEY_EXCHANGE 12 +# define SSL3_MT_CERTIFICATE_REQUEST 13 +# define SSL3_MT_SERVER_DONE 14 +# define SSL3_MT_CERTIFICATE_VERIFY 15 +# define SSL3_MT_CLIENT_KEY_EXCHANGE 16 +# define SSL3_MT_FINISHED 20 +# define SSL3_MT_CERTIFICATE_URL 21 +# define SSL3_MT_CERTIFICATE_STATUS 22 +# define SSL3_MT_SUPPLEMENTAL_DATA 23 +# define SSL3_MT_KEY_UPDATE 24 +# ifndef OPENSSL_NO_NEXTPROTONEG +# define SSL3_MT_NEXT_PROTO 67 +# endif +# define SSL3_MT_MESSAGE_HASH 254 +# define DTLS1_MT_HELLO_VERIFY_REQUEST 3 + +/* Dummy message type for handling CCS like a normal handshake message */ +# define SSL3_MT_CHANGE_CIPHER_SPEC 0x0101 + +# define SSL3_MT_CCS 1 + +/* These are used when changing over to a new cipher */ +# define SSL3_CC_READ 0x001 +# define SSL3_CC_WRITE 0x002 +# define SSL3_CC_CLIENT 0x010 +# define SSL3_CC_SERVER 0x020 +# define SSL3_CC_EARLY 0x040 +# define SSL3_CC_HANDSHAKE 0x080 +# define SSL3_CC_APPLICATION 0x100 +# define SSL3_CHANGE_CIPHER_CLIENT_WRITE (SSL3_CC_CLIENT|SSL3_CC_WRITE) +# define SSL3_CHANGE_CIPHER_SERVER_READ (SSL3_CC_SERVER|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_CLIENT_READ (SSL3_CC_CLIENT|SSL3_CC_READ) +# define SSL3_CHANGE_CIPHER_SERVER_WRITE (SSL3_CC_SERVER|SSL3_CC_WRITE) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/sslerr.h b/include/openssl/openssl/sslerr.h new file mode 100644 index 00000000..82983d3c --- /dev/null +++ b/include/openssl/openssl/sslerr.h @@ -0,0 +1,773 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SSLERR_H +# define HEADER_SSLERR_H + +# ifndef HEADER_SYMHACKS_H +# include +# endif + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_SSL_strings(void); + +/* + * SSL function codes. + */ +# define SSL_F_ADD_CLIENT_KEY_SHARE_EXT 438 +# define SSL_F_ADD_KEY_SHARE 512 +# define SSL_F_BYTES_TO_CIPHER_LIST 519 +# define SSL_F_CHECK_SUITEB_CIPHER_LIST 331 +# define SSL_F_CIPHERSUITE_CB 622 +# define SSL_F_CONSTRUCT_CA_NAMES 552 +# define SSL_F_CONSTRUCT_KEY_EXCHANGE_TBS 553 +# define SSL_F_CONSTRUCT_STATEFUL_TICKET 636 +# define SSL_F_CONSTRUCT_STATELESS_TICKET 637 +# define SSL_F_CREATE_SYNTHETIC_MESSAGE_HASH 539 +# define SSL_F_CREATE_TICKET_PREQUEL 638 +# define SSL_F_CT_MOVE_SCTS 345 +# define SSL_F_CT_STRICT 349 +# define SSL_F_CUSTOM_EXT_ADD 554 +# define SSL_F_CUSTOM_EXT_PARSE 555 +# define SSL_F_D2I_SSL_SESSION 103 +# define SSL_F_DANE_CTX_ENABLE 347 +# define SSL_F_DANE_MTYPE_SET 393 +# define SSL_F_DANE_TLSA_ADD 394 +# define SSL_F_DERIVE_SECRET_KEY_AND_IV 514 +# define SSL_F_DO_DTLS1_WRITE 245 +# define SSL_F_DO_SSL3_WRITE 104 +# define SSL_F_DTLS1_BUFFER_RECORD 247 +# define SSL_F_DTLS1_CHECK_TIMEOUT_NUM 318 +# define SSL_F_DTLS1_HEARTBEAT 305 +# define SSL_F_DTLS1_HM_FRAGMENT_NEW 623 +# define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288 +# define SSL_F_DTLS1_PROCESS_BUFFERED_RECORDS 424 +# define SSL_F_DTLS1_PROCESS_RECORD 257 +# define SSL_F_DTLS1_READ_BYTES 258 +# define SSL_F_DTLS1_READ_FAILED 339 +# define SSL_F_DTLS1_RETRANSMIT_MESSAGE 390 +# define SSL_F_DTLS1_WRITE_APP_DATA_BYTES 268 +# define SSL_F_DTLS1_WRITE_BYTES 545 +# define SSL_F_DTLSV1_LISTEN 350 +# define SSL_F_DTLS_CONSTRUCT_CHANGE_CIPHER_SPEC 371 +# define SSL_F_DTLS_CONSTRUCT_HELLO_VERIFY_REQUEST 385 +# define SSL_F_DTLS_GET_REASSEMBLED_MESSAGE 370 +# define SSL_F_DTLS_PROCESS_HELLO_VERIFY 386 +# define SSL_F_DTLS_RECORD_LAYER_NEW 635 +# define SSL_F_DTLS_WAIT_FOR_DRY 592 +# define SSL_F_EARLY_DATA_COUNT_OK 532 +# define SSL_F_FINAL_EARLY_DATA 556 +# define SSL_F_FINAL_EC_PT_FORMATS 485 +# define SSL_F_FINAL_EMS 486 +# define SSL_F_FINAL_KEY_SHARE 503 +# define SSL_F_FINAL_MAXFRAGMENTLEN 557 +# define SSL_F_FINAL_RENEGOTIATE 483 +# define SSL_F_FINAL_SERVER_NAME 558 +# define SSL_F_FINAL_SIG_ALGS 497 +# define SSL_F_GET_CERT_VERIFY_TBS_DATA 588 +# define SSL_F_NSS_KEYLOG_INT 500 +# define SSL_F_OPENSSL_INIT_SSL 342 +# define SSL_F_OSSL_STATEM_CLIENT13_READ_TRANSITION 436 +# define SSL_F_OSSL_STATEM_CLIENT13_WRITE_TRANSITION 598 +# define SSL_F_OSSL_STATEM_CLIENT_CONSTRUCT_MESSAGE 430 +# define SSL_F_OSSL_STATEM_CLIENT_POST_PROCESS_MESSAGE 593 +# define SSL_F_OSSL_STATEM_CLIENT_PROCESS_MESSAGE 594 +# define SSL_F_OSSL_STATEM_CLIENT_READ_TRANSITION 417 +# define SSL_F_OSSL_STATEM_CLIENT_WRITE_TRANSITION 599 +# define SSL_F_OSSL_STATEM_SERVER13_READ_TRANSITION 437 +# define SSL_F_OSSL_STATEM_SERVER13_WRITE_TRANSITION 600 +# define SSL_F_OSSL_STATEM_SERVER_CONSTRUCT_MESSAGE 431 +# define SSL_F_OSSL_STATEM_SERVER_POST_PROCESS_MESSAGE 601 +# define SSL_F_OSSL_STATEM_SERVER_POST_WORK 602 +# define SSL_F_OSSL_STATEM_SERVER_PRE_WORK 640 +# define SSL_F_OSSL_STATEM_SERVER_PROCESS_MESSAGE 603 +# define SSL_F_OSSL_STATEM_SERVER_READ_TRANSITION 418 +# define SSL_F_OSSL_STATEM_SERVER_WRITE_TRANSITION 604 +# define SSL_F_PARSE_CA_NAMES 541 +# define SSL_F_PITEM_NEW 624 +# define SSL_F_PQUEUE_NEW 625 +# define SSL_F_PROCESS_KEY_SHARE_EXT 439 +# define SSL_F_READ_STATE_MACHINE 352 +# define SSL_F_SET_CLIENT_CIPHERSUITE 540 +# define SSL_F_SRP_GENERATE_CLIENT_MASTER_SECRET 595 +# define SSL_F_SRP_GENERATE_SERVER_MASTER_SECRET 589 +# define SSL_F_SRP_VERIFY_SERVER_PARAM 596 +# define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 +# define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 +# define SSL_F_SSL3_CTRL 213 +# define SSL_F_SSL3_CTX_CTRL 133 +# define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293 +# define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292 +# define SSL_F_SSL3_ENC 608 +# define SSL_F_SSL3_FINAL_FINISH_MAC 285 +# define SSL_F_SSL3_FINISH_MAC 587 +# define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 +# define SSL_F_SSL3_GENERATE_MASTER_SECRET 388 +# define SSL_F_SSL3_GET_RECORD 143 +# define SSL_F_SSL3_INIT_FINISHED_MAC 397 +# define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 +# define SSL_F_SSL3_READ_BYTES 148 +# define SSL_F_SSL3_READ_N 149 +# define SSL_F_SSL3_SETUP_KEY_BLOCK 157 +# define SSL_F_SSL3_SETUP_READ_BUFFER 156 +# define SSL_F_SSL3_SETUP_WRITE_BUFFER 291 +# define SSL_F_SSL3_WRITE_BYTES 158 +# define SSL_F_SSL3_WRITE_PENDING 159 +# define SSL_F_SSL_ADD_CERT_CHAIN 316 +# define SSL_F_SSL_ADD_CERT_TO_BUF 319 +# define SSL_F_SSL_ADD_CERT_TO_WPACKET 493 +# define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298 +# define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277 +# define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT 307 +# define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 +# define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 +# define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299 +# define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278 +# define SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT 308 +# define SSL_F_SSL_BAD_METHOD 160 +# define SSL_F_SSL_BUILD_CERT_CHAIN 332 +# define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 +# define SSL_F_SSL_CACHE_CIPHERLIST 520 +# define SSL_F_SSL_CERT_ADD0_CHAIN_CERT 346 +# define SSL_F_SSL_CERT_DUP 221 +# define SSL_F_SSL_CERT_NEW 162 +# define SSL_F_SSL_CERT_SET0_CHAIN 340 +# define SSL_F_SSL_CHECK_PRIVATE_KEY 163 +# define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280 +# define SSL_F_SSL_CHECK_SRP_EXT_CLIENTHELLO 606 +# define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279 +# define SSL_F_SSL_CHOOSE_CLIENT_VERSION 607 +# define SSL_F_SSL_CIPHER_DESCRIPTION 626 +# define SSL_F_SSL_CIPHER_LIST_TO_BYTES 425 +# define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 +# define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 +# define SSL_F_SSL_CLEAR 164 +# define SSL_F_SSL_CLIENT_HELLO_GET1_EXTENSIONS_PRESENT 627 +# define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD 165 +# define SSL_F_SSL_CONF_CMD 334 +# define SSL_F_SSL_CREATE_CIPHER_LIST 166 +# define SSL_F_SSL_CTRL 232 +# define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 +# define SSL_F_SSL_CTX_ENABLE_CT 398 +# define SSL_F_SSL_CTX_MAKE_PROFILES 309 +# define SSL_F_SSL_CTX_NEW 169 +# define SSL_F_SSL_CTX_SET_ALPN_PROTOS 343 +# define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 +# define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290 +# define SSL_F_SSL_CTX_SET_CT_VALIDATION_CALLBACK 396 +# define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 +# define SSL_F_SSL_CTX_SET_SSL_VERSION 170 +# define SSL_F_SSL_CTX_SET_TLSEXT_MAX_FRAGMENT_LENGTH 551 +# define SSL_F_SSL_CTX_USE_CERTIFICATE 171 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172 +# define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 +# define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 +# define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 +# define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 +# define SSL_F_SSL_CTX_USE_SERVERINFO 336 +# define SSL_F_SSL_CTX_USE_SERVERINFO_EX 543 +# define SSL_F_SSL_CTX_USE_SERVERINFO_FILE 337 +# define SSL_F_SSL_DANE_DUP 403 +# define SSL_F_SSL_DANE_ENABLE 395 +# define SSL_F_SSL_DERIVE 590 +# define SSL_F_SSL_DO_CONFIG 391 +# define SSL_F_SSL_DO_HANDSHAKE 180 +# define SSL_F_SSL_DUP_CA_LIST 408 +# define SSL_F_SSL_ENABLE_CT 402 +# define SSL_F_SSL_GENERATE_PKEY_GROUP 559 +# define SSL_F_SSL_GENERATE_SESSION_ID 547 +# define SSL_F_SSL_GET_NEW_SESSION 181 +# define SSL_F_SSL_GET_PREV_SESSION 217 +# define SSL_F_SSL_GET_SERVER_CERT_INDEX 322 +# define SSL_F_SSL_GET_SIGN_PKEY 183 +# define SSL_F_SSL_HANDSHAKE_HASH 560 +# define SSL_F_SSL_INIT_WBIO_BUFFER 184 +# define SSL_F_SSL_KEY_UPDATE 515 +# define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 +# define SSL_F_SSL_LOG_MASTER_SECRET 498 +# define SSL_F_SSL_LOG_RSA_CLIENT_KEY_EXCHANGE 499 +# define SSL_F_SSL_MODULE_INIT 392 +# define SSL_F_SSL_NEW 186 +# define SSL_F_SSL_NEXT_PROTO_VALIDATE 565 +# define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300 +# define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302 +# define SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT 310 +# define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301 +# define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303 +# define SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT 311 +# define SSL_F_SSL_PEEK 270 +# define SSL_F_SSL_PEEK_EX 432 +# define SSL_F_SSL_PEEK_INTERNAL 522 +# define SSL_F_SSL_READ 223 +# define SSL_F_SSL_READ_EARLY_DATA 529 +# define SSL_F_SSL_READ_EX 434 +# define SSL_F_SSL_READ_INTERNAL 523 +# define SSL_F_SSL_RENEGOTIATE 516 +# define SSL_F_SSL_RENEGOTIATE_ABBREVIATED 546 +# define SSL_F_SSL_SCAN_CLIENTHELLO_TLSEXT 320 +# define SSL_F_SSL_SCAN_SERVERHELLO_TLSEXT 321 +# define SSL_F_SSL_SESSION_DUP 348 +# define SSL_F_SSL_SESSION_NEW 189 +# define SSL_F_SSL_SESSION_PRINT_FP 190 +# define SSL_F_SSL_SESSION_SET1_ID 423 +# define SSL_F_SSL_SESSION_SET1_ID_CONTEXT 312 +# define SSL_F_SSL_SET_ALPN_PROTOS 344 +# define SSL_F_SSL_SET_CERT 191 +# define SSL_F_SSL_SET_CERT_AND_KEY 621 +# define SSL_F_SSL_SET_CIPHER_LIST 271 +# define SSL_F_SSL_SET_CT_VALIDATION_CALLBACK 399 +# define SSL_F_SSL_SET_FD 192 +# define SSL_F_SSL_SET_PKEY 193 +# define SSL_F_SSL_SET_RFD 194 +# define SSL_F_SSL_SET_SESSION 195 +# define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 +# define SSL_F_SSL_SET_SESSION_TICKET_EXT 294 +# define SSL_F_SSL_SET_TLSEXT_MAX_FRAGMENT_LENGTH 550 +# define SSL_F_SSL_SET_WFD 196 +# define SSL_F_SSL_SHUTDOWN 224 +# define SSL_F_SSL_SRP_CTX_INIT 313 +# define SSL_F_SSL_START_ASYNC_JOB 389 +# define SSL_F_SSL_UNDEFINED_FUNCTION 197 +# define SSL_F_SSL_UNDEFINED_VOID_FUNCTION 244 +# define SSL_F_SSL_USE_CERTIFICATE 198 +# define SSL_F_SSL_USE_CERTIFICATE_ASN1 199 +# define SSL_F_SSL_USE_CERTIFICATE_FILE 200 +# define SSL_F_SSL_USE_PRIVATEKEY 201 +# define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 +# define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 +# define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273 +# define SSL_F_SSL_USE_RSAPRIVATEKEY 204 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 +# define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 +# define SSL_F_SSL_VALIDATE_CT 400 +# define SSL_F_SSL_VERIFY_CERT_CHAIN 207 +# define SSL_F_SSL_VERIFY_CLIENT_POST_HANDSHAKE 616 +# define SSL_F_SSL_WRITE 208 +# define SSL_F_SSL_WRITE_EARLY_DATA 526 +# define SSL_F_SSL_WRITE_EARLY_FINISH 527 +# define SSL_F_SSL_WRITE_EX 433 +# define SSL_F_SSL_WRITE_INTERNAL 524 +# define SSL_F_STATE_MACHINE 353 +# define SSL_F_TLS12_CHECK_PEER_SIGALG 333 +# define SSL_F_TLS12_COPY_SIGALGS 533 +# define SSL_F_TLS13_CHANGE_CIPHER_STATE 440 +# define SSL_F_TLS13_ENC 609 +# define SSL_F_TLS13_FINAL_FINISH_MAC 605 +# define SSL_F_TLS13_GENERATE_SECRET 591 +# define SSL_F_TLS13_HKDF_EXPAND 561 +# define SSL_F_TLS13_RESTORE_HANDSHAKE_DIGEST_FOR_PHA 617 +# define SSL_F_TLS13_SAVE_HANDSHAKE_DIGEST_FOR_PHA 618 +# define SSL_F_TLS13_SETUP_KEY_BLOCK 441 +# define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 +# define SSL_F_TLS1_CHECK_DUPLICATE_EXTENSIONS 341 +# define SSL_F_TLS1_ENC 401 +# define SSL_F_TLS1_EXPORT_KEYING_MATERIAL 314 +# define SSL_F_TLS1_GET_CURVELIST 338 +# define SSL_F_TLS1_PRF 284 +# define SSL_F_TLS1_SAVE_U16 628 +# define SSL_F_TLS1_SETUP_KEY_BLOCK 211 +# define SSL_F_TLS1_SET_GROUPS 629 +# define SSL_F_TLS1_SET_RAW_SIGALGS 630 +# define SSL_F_TLS1_SET_SERVER_SIGALGS 335 +# define SSL_F_TLS1_SET_SHARED_SIGALGS 631 +# define SSL_F_TLS1_SET_SIGALGS 632 +# define SSL_F_TLS_CHOOSE_SIGALG 513 +# define SSL_F_TLS_CLIENT_KEY_EXCHANGE_POST_WORK 354 +# define SSL_F_TLS_COLLECT_EXTENSIONS 435 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_AUTHORITIES 542 +# define SSL_F_TLS_CONSTRUCT_CERTIFICATE_REQUEST 372 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS 429 +# define SSL_F_TLS_CONSTRUCT_CERT_STATUS_BODY 494 +# define SSL_F_TLS_CONSTRUCT_CERT_VERIFY 496 +# define SSL_F_TLS_CONSTRUCT_CHANGE_CIPHER_SPEC 427 +# define SSL_F_TLS_CONSTRUCT_CKE_DHE 404 +# define SSL_F_TLS_CONSTRUCT_CKE_ECDHE 405 +# define SSL_F_TLS_CONSTRUCT_CKE_GOST 406 +# define SSL_F_TLS_CONSTRUCT_CKE_PSK_PREAMBLE 407 +# define SSL_F_TLS_CONSTRUCT_CKE_RSA 409 +# define SSL_F_TLS_CONSTRUCT_CKE_SRP 410 +# define SSL_F_TLS_CONSTRUCT_CLIENT_CERTIFICATE 484 +# define SSL_F_TLS_CONSTRUCT_CLIENT_HELLO 487 +# define SSL_F_TLS_CONSTRUCT_CLIENT_KEY_EXCHANGE 488 +# define SSL_F_TLS_CONSTRUCT_CLIENT_VERIFY 489 +# define SSL_F_TLS_CONSTRUCT_CTOS_ALPN 466 +# define SSL_F_TLS_CONSTRUCT_CTOS_CERTIFICATE 355 +# define SSL_F_TLS_CONSTRUCT_CTOS_COOKIE 535 +# define SSL_F_TLS_CONSTRUCT_CTOS_EARLY_DATA 530 +# define SSL_F_TLS_CONSTRUCT_CTOS_EC_PT_FORMATS 467 +# define SSL_F_TLS_CONSTRUCT_CTOS_EMS 468 +# define SSL_F_TLS_CONSTRUCT_CTOS_ETM 469 +# define SSL_F_TLS_CONSTRUCT_CTOS_HELLO 356 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_EXCHANGE 357 +# define SSL_F_TLS_CONSTRUCT_CTOS_KEY_SHARE 470 +# define SSL_F_TLS_CONSTRUCT_CTOS_MAXFRAGMENTLEN 549 +# define SSL_F_TLS_CONSTRUCT_CTOS_NPN 471 +# define SSL_F_TLS_CONSTRUCT_CTOS_PADDING 472 +# define SSL_F_TLS_CONSTRUCT_CTOS_POST_HANDSHAKE_AUTH 619 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK 501 +# define SSL_F_TLS_CONSTRUCT_CTOS_PSK_KEX_MODES 509 +# define SSL_F_TLS_CONSTRUCT_CTOS_RENEGOTIATE 473 +# define SSL_F_TLS_CONSTRUCT_CTOS_SCT 474 +# define SSL_F_TLS_CONSTRUCT_CTOS_SERVER_NAME 475 +# define SSL_F_TLS_CONSTRUCT_CTOS_SESSION_TICKET 476 +# define SSL_F_TLS_CONSTRUCT_CTOS_SIG_ALGS 477 +# define SSL_F_TLS_CONSTRUCT_CTOS_SRP 478 +# define SSL_F_TLS_CONSTRUCT_CTOS_STATUS_REQUEST 479 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_GROUPS 480 +# define SSL_F_TLS_CONSTRUCT_CTOS_SUPPORTED_VERSIONS 481 +# define SSL_F_TLS_CONSTRUCT_CTOS_USE_SRTP 482 +# define SSL_F_TLS_CONSTRUCT_CTOS_VERIFY 358 +# define SSL_F_TLS_CONSTRUCT_ENCRYPTED_EXTENSIONS 443 +# define SSL_F_TLS_CONSTRUCT_END_OF_EARLY_DATA 536 +# define SSL_F_TLS_CONSTRUCT_EXTENSIONS 447 +# define SSL_F_TLS_CONSTRUCT_FINISHED 359 +# define SSL_F_TLS_CONSTRUCT_HELLO_REQUEST 373 +# define SSL_F_TLS_CONSTRUCT_HELLO_RETRY_REQUEST 510 +# define SSL_F_TLS_CONSTRUCT_KEY_UPDATE 517 +# define SSL_F_TLS_CONSTRUCT_NEW_SESSION_TICKET 428 +# define SSL_F_TLS_CONSTRUCT_NEXT_PROTO 426 +# define SSL_F_TLS_CONSTRUCT_SERVER_CERTIFICATE 490 +# define SSL_F_TLS_CONSTRUCT_SERVER_HELLO 491 +# define SSL_F_TLS_CONSTRUCT_SERVER_KEY_EXCHANGE 492 +# define SSL_F_TLS_CONSTRUCT_STOC_ALPN 451 +# define SSL_F_TLS_CONSTRUCT_STOC_CERTIFICATE 374 +# define SSL_F_TLS_CONSTRUCT_STOC_COOKIE 613 +# define SSL_F_TLS_CONSTRUCT_STOC_CRYPTOPRO_BUG 452 +# define SSL_F_TLS_CONSTRUCT_STOC_DONE 375 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA 531 +# define SSL_F_TLS_CONSTRUCT_STOC_EARLY_DATA_INFO 525 +# define SSL_F_TLS_CONSTRUCT_STOC_EC_PT_FORMATS 453 +# define SSL_F_TLS_CONSTRUCT_STOC_EMS 454 +# define SSL_F_TLS_CONSTRUCT_STOC_ETM 455 +# define SSL_F_TLS_CONSTRUCT_STOC_HELLO 376 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_EXCHANGE 377 +# define SSL_F_TLS_CONSTRUCT_STOC_KEY_SHARE 456 +# define SSL_F_TLS_CONSTRUCT_STOC_MAXFRAGMENTLEN 548 +# define SSL_F_TLS_CONSTRUCT_STOC_NEXT_PROTO_NEG 457 +# define SSL_F_TLS_CONSTRUCT_STOC_PSK 504 +# define SSL_F_TLS_CONSTRUCT_STOC_RENEGOTIATE 458 +# define SSL_F_TLS_CONSTRUCT_STOC_SERVER_NAME 459 +# define SSL_F_TLS_CONSTRUCT_STOC_SESSION_TICKET 460 +# define SSL_F_TLS_CONSTRUCT_STOC_STATUS_REQUEST 461 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_GROUPS 544 +# define SSL_F_TLS_CONSTRUCT_STOC_SUPPORTED_VERSIONS 611 +# define SSL_F_TLS_CONSTRUCT_STOC_USE_SRTP 462 +# define SSL_F_TLS_EARLY_POST_PROCESS_CLIENT_HELLO 521 +# define SSL_F_TLS_FINISH_HANDSHAKE 597 +# define SSL_F_TLS_GET_MESSAGE_BODY 351 +# define SSL_F_TLS_GET_MESSAGE_HEADER 387 +# define SSL_F_TLS_HANDLE_ALPN 562 +# define SSL_F_TLS_HANDLE_STATUS_REQUEST 563 +# define SSL_F_TLS_PARSE_CERTIFICATE_AUTHORITIES 566 +# define SSL_F_TLS_PARSE_CLIENTHELLO_TLSEXT 449 +# define SSL_F_TLS_PARSE_CTOS_ALPN 567 +# define SSL_F_TLS_PARSE_CTOS_COOKIE 614 +# define SSL_F_TLS_PARSE_CTOS_EARLY_DATA 568 +# define SSL_F_TLS_PARSE_CTOS_EC_PT_FORMATS 569 +# define SSL_F_TLS_PARSE_CTOS_EMS 570 +# define SSL_F_TLS_PARSE_CTOS_KEY_SHARE 463 +# define SSL_F_TLS_PARSE_CTOS_MAXFRAGMENTLEN 571 +# define SSL_F_TLS_PARSE_CTOS_POST_HANDSHAKE_AUTH 620 +# define SSL_F_TLS_PARSE_CTOS_PSK 505 +# define SSL_F_TLS_PARSE_CTOS_PSK_KEX_MODES 572 +# define SSL_F_TLS_PARSE_CTOS_RENEGOTIATE 464 +# define SSL_F_TLS_PARSE_CTOS_SERVER_NAME 573 +# define SSL_F_TLS_PARSE_CTOS_SESSION_TICKET 574 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS 575 +# define SSL_F_TLS_PARSE_CTOS_SIG_ALGS_CERT 615 +# define SSL_F_TLS_PARSE_CTOS_SRP 576 +# define SSL_F_TLS_PARSE_CTOS_STATUS_REQUEST 577 +# define SSL_F_TLS_PARSE_CTOS_SUPPORTED_GROUPS 578 +# define SSL_F_TLS_PARSE_CTOS_USE_SRTP 465 +# define SSL_F_TLS_PARSE_STOC_ALPN 579 +# define SSL_F_TLS_PARSE_STOC_COOKIE 534 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA 538 +# define SSL_F_TLS_PARSE_STOC_EARLY_DATA_INFO 528 +# define SSL_F_TLS_PARSE_STOC_EC_PT_FORMATS 580 +# define SSL_F_TLS_PARSE_STOC_KEY_SHARE 445 +# define SSL_F_TLS_PARSE_STOC_MAXFRAGMENTLEN 581 +# define SSL_F_TLS_PARSE_STOC_NPN 582 +# define SSL_F_TLS_PARSE_STOC_PSK 502 +# define SSL_F_TLS_PARSE_STOC_RENEGOTIATE 448 +# define SSL_F_TLS_PARSE_STOC_SCT 564 +# define SSL_F_TLS_PARSE_STOC_SERVER_NAME 583 +# define SSL_F_TLS_PARSE_STOC_SESSION_TICKET 584 +# define SSL_F_TLS_PARSE_STOC_STATUS_REQUEST 585 +# define SSL_F_TLS_PARSE_STOC_SUPPORTED_VERSIONS 612 +# define SSL_F_TLS_PARSE_STOC_USE_SRTP 446 +# define SSL_F_TLS_POST_PROCESS_CLIENT_HELLO 378 +# define SSL_F_TLS_POST_PROCESS_CLIENT_KEY_EXCHANGE 384 +# define SSL_F_TLS_PREPARE_CLIENT_CERTIFICATE 360 +# define SSL_F_TLS_PROCESS_AS_HELLO_RETRY_REQUEST 610 +# define SSL_F_TLS_PROCESS_CERTIFICATE_REQUEST 361 +# define SSL_F_TLS_PROCESS_CERT_STATUS 362 +# define SSL_F_TLS_PROCESS_CERT_STATUS_BODY 495 +# define SSL_F_TLS_PROCESS_CERT_VERIFY 379 +# define SSL_F_TLS_PROCESS_CHANGE_CIPHER_SPEC 363 +# define SSL_F_TLS_PROCESS_CKE_DHE 411 +# define SSL_F_TLS_PROCESS_CKE_ECDHE 412 +# define SSL_F_TLS_PROCESS_CKE_GOST 413 +# define SSL_F_TLS_PROCESS_CKE_PSK_PREAMBLE 414 +# define SSL_F_TLS_PROCESS_CKE_RSA 415 +# define SSL_F_TLS_PROCESS_CKE_SRP 416 +# define SSL_F_TLS_PROCESS_CLIENT_CERTIFICATE 380 +# define SSL_F_TLS_PROCESS_CLIENT_HELLO 381 +# define SSL_F_TLS_PROCESS_CLIENT_KEY_EXCHANGE 382 +# define SSL_F_TLS_PROCESS_ENCRYPTED_EXTENSIONS 444 +# define SSL_F_TLS_PROCESS_END_OF_EARLY_DATA 537 +# define SSL_F_TLS_PROCESS_FINISHED 364 +# define SSL_F_TLS_PROCESS_HELLO_REQ 507 +# define SSL_F_TLS_PROCESS_HELLO_RETRY_REQUEST 511 +# define SSL_F_TLS_PROCESS_INITIAL_SERVER_FLIGHT 442 +# define SSL_F_TLS_PROCESS_KEY_EXCHANGE 365 +# define SSL_F_TLS_PROCESS_KEY_UPDATE 518 +# define SSL_F_TLS_PROCESS_NEW_SESSION_TICKET 366 +# define SSL_F_TLS_PROCESS_NEXT_PROTO 383 +# define SSL_F_TLS_PROCESS_SERVER_CERTIFICATE 367 +# define SSL_F_TLS_PROCESS_SERVER_DONE 368 +# define SSL_F_TLS_PROCESS_SERVER_HELLO 369 +# define SSL_F_TLS_PROCESS_SKE_DHE 419 +# define SSL_F_TLS_PROCESS_SKE_ECDHE 420 +# define SSL_F_TLS_PROCESS_SKE_PSK_PREAMBLE 421 +# define SSL_F_TLS_PROCESS_SKE_SRP 422 +# define SSL_F_TLS_PSK_DO_BINDER 506 +# define SSL_F_TLS_SCAN_CLIENTHELLO_TLSEXT 450 +# define SSL_F_TLS_SETUP_HANDSHAKE 508 +# define SSL_F_USE_CERTIFICATE_CHAIN_FILE 220 +# define SSL_F_WPACKET_INTERN_INIT_LEN 633 +# define SSL_F_WPACKET_START_SUB_PACKET_LEN__ 634 +# define SSL_F_WRITE_STATE_MACHINE 586 + +/* + * SSL reason codes. + */ +# define SSL_R_APPLICATION_DATA_AFTER_CLOSE_NOTIFY 291 +# define SSL_R_APP_DATA_IN_HANDSHAKE 100 +# define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272 +# define SSL_R_AT_LEAST_TLS_1_0_NEEDED_IN_FIPS_MODE 143 +# define SSL_R_AT_LEAST_TLS_1_2_NEEDED_IN_SUITEB_MODE 158 +# define SSL_R_BAD_CHANGE_CIPHER_SPEC 103 +# define SSL_R_BAD_CIPHER 186 +# define SSL_R_BAD_DATA 390 +# define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106 +# define SSL_R_BAD_DECOMPRESSION 107 +# define SSL_R_BAD_DH_VALUE 102 +# define SSL_R_BAD_DIGEST_LENGTH 111 +# define SSL_R_BAD_EARLY_DATA 233 +# define SSL_R_BAD_ECC_CERT 304 +# define SSL_R_BAD_ECPOINT 306 +# define SSL_R_BAD_EXTENSION 110 +# define SSL_R_BAD_HANDSHAKE_LENGTH 332 +# define SSL_R_BAD_HANDSHAKE_STATE 236 +# define SSL_R_BAD_HELLO_REQUEST 105 +# define SSL_R_BAD_HRR_VERSION 263 +# define SSL_R_BAD_KEY_SHARE 108 +# define SSL_R_BAD_KEY_UPDATE 122 +# define SSL_R_BAD_LEGACY_VERSION 292 +# define SSL_R_BAD_LENGTH 271 +# define SSL_R_BAD_PACKET 240 +# define SSL_R_BAD_PACKET_LENGTH 115 +# define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 +# define SSL_R_BAD_PSK 219 +# define SSL_R_BAD_PSK_IDENTITY 114 +# define SSL_R_BAD_RECORD_TYPE 443 +# define SSL_R_BAD_RSA_ENCRYPT 119 +# define SSL_R_BAD_SIGNATURE 123 +# define SSL_R_BAD_SRP_A_LENGTH 347 +# define SSL_R_BAD_SRP_PARAMETERS 371 +# define SSL_R_BAD_SRTP_MKI_VALUE 352 +# define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 353 +# define SSL_R_BAD_SSL_FILETYPE 124 +# define SSL_R_BAD_VALUE 384 +# define SSL_R_BAD_WRITE_RETRY 127 +# define SSL_R_BINDER_DOES_NOT_VERIFY 253 +# define SSL_R_BIO_NOT_SET 128 +# define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129 +# define SSL_R_BN_LIB 130 +# define SSL_R_CALLBACK_FAILED 234 +# define SSL_R_CANNOT_CHANGE_CIPHER 109 +# define SSL_R_CA_DN_LENGTH_MISMATCH 131 +# define SSL_R_CA_KEY_TOO_SMALL 397 +# define SSL_R_CA_MD_TOO_WEAK 398 +# define SSL_R_CCS_RECEIVED_EARLY 133 +# define SSL_R_CERTIFICATE_VERIFY_FAILED 134 +# define SSL_R_CERT_CB_ERROR 377 +# define SSL_R_CERT_LENGTH_MISMATCH 135 +# define SSL_R_CIPHERSUITE_DIGEST_HAS_CHANGED 218 +# define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 +# define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 +# define SSL_R_CLIENTHELLO_TLSEXT 226 +# define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 +# define SSL_R_COMPRESSION_DISABLED 343 +# define SSL_R_COMPRESSION_FAILURE 141 +# define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 +# define SSL_R_COMPRESSION_LIBRARY_ERROR 142 +# define SSL_R_CONNECTION_TYPE_NOT_SET 144 +# define SSL_R_CONTEXT_NOT_DANE_ENABLED 167 +# define SSL_R_COOKIE_GEN_CALLBACK_FAILURE 400 +# define SSL_R_COOKIE_MISMATCH 308 +# define SSL_R_CUSTOM_EXT_HANDLER_ALREADY_INSTALLED 206 +# define SSL_R_DANE_ALREADY_ENABLED 172 +# define SSL_R_DANE_CANNOT_OVERRIDE_MTYPE_FULL 173 +# define SSL_R_DANE_NOT_ENABLED 175 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE 180 +# define SSL_R_DANE_TLSA_BAD_CERTIFICATE_USAGE 184 +# define SSL_R_DANE_TLSA_BAD_DATA_LENGTH 189 +# define SSL_R_DANE_TLSA_BAD_DIGEST_LENGTH 192 +# define SSL_R_DANE_TLSA_BAD_MATCHING_TYPE 200 +# define SSL_R_DANE_TLSA_BAD_PUBLIC_KEY 201 +# define SSL_R_DANE_TLSA_BAD_SELECTOR 202 +# define SSL_R_DANE_TLSA_NULL_DATA 203 +# define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145 +# define SSL_R_DATA_LENGTH_TOO_LONG 146 +# define SSL_R_DECRYPTION_FAILED 147 +# define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 +# define SSL_R_DH_KEY_TOO_SMALL 394 +# define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 +# define SSL_R_DIGEST_CHECK_FAILED 149 +# define SSL_R_DTLS_MESSAGE_TOO_BIG 334 +# define SSL_R_DUPLICATE_COMPRESSION_ID 309 +# define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318 +# define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE 374 +# define SSL_R_EE_KEY_TOO_SMALL 399 +# define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST 354 +# define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 +# define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151 +# define SSL_R_ERROR_SETTING_TLSA_BASE_DOMAIN 204 +# define SSL_R_EXCEEDS_MAX_FRAGMENT_SIZE 194 +# define SSL_R_EXCESSIVE_MESSAGE_SIZE 152 +# define SSL_R_EXTENSION_NOT_RECEIVED 279 +# define SSL_R_EXTRA_DATA_IN_MESSAGE 153 +# define SSL_R_EXT_LENGTH_MISMATCH 163 +# define SSL_R_FAILED_TO_INIT_ASYNC 405 +# define SSL_R_FRAGMENTED_CLIENT_HELLO 401 +# define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154 +# define SSL_R_HTTPS_PROXY_REQUEST 155 +# define SSL_R_HTTP_REQUEST 156 +# define SSL_R_ILLEGAL_POINT_COMPRESSION 162 +# define SSL_R_ILLEGAL_SUITEB_DIGEST 380 +# define SSL_R_INAPPROPRIATE_FALLBACK 373 +# define SSL_R_INCONSISTENT_COMPRESSION 340 +# define SSL_R_INCONSISTENT_EARLY_DATA_ALPN 222 +# define SSL_R_INCONSISTENT_EARLY_DATA_SNI 231 +# define SSL_R_INCONSISTENT_EXTMS 104 +# define SSL_R_INSUFFICIENT_SECURITY 241 +# define SSL_R_INVALID_ALERT 205 +# define SSL_R_INVALID_CCS_MESSAGE 260 +# define SSL_R_INVALID_CERTIFICATE_OR_ALG 238 +# define SSL_R_INVALID_COMMAND 280 +# define SSL_R_INVALID_COMPRESSION_ALGORITHM 341 +# define SSL_R_INVALID_CONFIG 283 +# define SSL_R_INVALID_CONFIGURATION_NAME 113 +# define SSL_R_INVALID_CONTEXT 282 +# define SSL_R_INVALID_CT_VALIDATION_TYPE 212 +# define SSL_R_INVALID_KEY_UPDATE_TYPE 120 +# define SSL_R_INVALID_MAX_EARLY_DATA 174 +# define SSL_R_INVALID_NULL_CMD_NAME 385 +# define SSL_R_INVALID_SEQUENCE_NUMBER 402 +# define SSL_R_INVALID_SERVERINFO_DATA 388 +# define SSL_R_INVALID_SESSION_ID 999 +# define SSL_R_INVALID_SRP_USERNAME 357 +# define SSL_R_INVALID_STATUS_RESPONSE 328 +# define SSL_R_INVALID_TICKET_KEYS_LENGTH 325 +# define SSL_R_LENGTH_MISMATCH 159 +# define SSL_R_LENGTH_TOO_LONG 404 +# define SSL_R_LENGTH_TOO_SHORT 160 +# define SSL_R_LIBRARY_BUG 274 +# define SSL_R_LIBRARY_HAS_NO_CIPHERS 161 +# define SSL_R_MISSING_DSA_SIGNING_CERT 165 +# define SSL_R_MISSING_ECDSA_SIGNING_CERT 381 +# define SSL_R_MISSING_FATAL 256 +# define SSL_R_MISSING_PARAMETERS 290 +# define SSL_R_MISSING_RSA_CERTIFICATE 168 +# define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169 +# define SSL_R_MISSING_RSA_SIGNING_CERT 170 +# define SSL_R_MISSING_SIGALGS_EXTENSION 112 +# define SSL_R_MISSING_SIGNING_CERT 221 +# define SSL_R_MISSING_SRP_PARAM 358 +# define SSL_R_MISSING_SUPPORTED_GROUPS_EXTENSION 209 +# define SSL_R_MISSING_TMP_DH_KEY 171 +# define SSL_R_MISSING_TMP_ECDH_KEY 311 +# define SSL_R_MIXED_HANDSHAKE_AND_NON_HANDSHAKE_DATA 293 +# define SSL_R_NOT_ON_RECORD_BOUNDARY 182 +# define SSL_R_NOT_REPLACING_CERTIFICATE 289 +# define SSL_R_NOT_SERVER 284 +# define SSL_R_NO_APPLICATION_PROTOCOL 235 +# define SSL_R_NO_CERTIFICATES_RETURNED 176 +# define SSL_R_NO_CERTIFICATE_ASSIGNED 177 +# define SSL_R_NO_CERTIFICATE_SET 179 +# define SSL_R_NO_CHANGE_FOLLOWING_HRR 214 +# define SSL_R_NO_CIPHERS_AVAILABLE 181 +# define SSL_R_NO_CIPHERS_SPECIFIED 183 +# define SSL_R_NO_CIPHER_MATCH 185 +# define SSL_R_NO_CLIENT_CERT_METHOD 331 +# define SSL_R_NO_COMPRESSION_SPECIFIED 187 +# define SSL_R_NO_COOKIE_CALLBACK_SET 287 +# define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330 +# define SSL_R_NO_METHOD_SPECIFIED 188 +# define SSL_R_NO_PEM_EXTENSIONS 389 +# define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 +# define SSL_R_NO_PROTOCOLS_AVAILABLE 191 +# define SSL_R_NO_RENEGOTIATION 339 +# define SSL_R_NO_REQUIRED_DIGEST 324 +# define SSL_R_NO_SHARED_CIPHER 193 +# define SSL_R_NO_SHARED_GROUPS 410 +# define SSL_R_NO_SHARED_SIGNATURE_ALGORITHMS 376 +# define SSL_R_NO_SRTP_PROFILES 359 +# define SSL_R_NO_SUITABLE_KEY_SHARE 101 +# define SSL_R_NO_SUITABLE_SIGNATURE_ALGORITHM 118 +# define SSL_R_NO_VALID_SCTS 216 +# define SSL_R_NO_VERIFY_COOKIE_CALLBACK 403 +# define SSL_R_NULL_SSL_CTX 195 +# define SSL_R_NULL_SSL_METHOD_PASSED 196 +# define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 +# define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344 +# define SSL_R_OVERFLOW_ERROR 237 +# define SSL_R_PACKET_LENGTH_TOO_LONG 198 +# define SSL_R_PARSE_TLSEXT 227 +# define SSL_R_PATH_TOO_LONG 270 +# define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 +# define SSL_R_PEM_NAME_BAD_PREFIX 391 +# define SSL_R_PEM_NAME_TOO_SHORT 392 +# define SSL_R_PIPELINE_FAILURE 406 +# define SSL_R_POST_HANDSHAKE_AUTH_ENCODING_ERR 278 +# define SSL_R_PRIVATE_KEY_MISMATCH 288 +# define SSL_R_PROTOCOL_IS_SHUTDOWN 207 +# define SSL_R_PSK_IDENTITY_NOT_FOUND 223 +# define SSL_R_PSK_NO_CLIENT_CB 224 +# define SSL_R_PSK_NO_SERVER_CB 225 +# define SSL_R_READ_BIO_NOT_SET 211 +# define SSL_R_READ_TIMEOUT_EXPIRED 312 +# define SSL_R_RECORD_LENGTH_MISMATCH 213 +# define SSL_R_RECORD_TOO_SMALL 298 +# define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335 +# define SSL_R_RENEGOTIATION_ENCODING_ERR 336 +# define SSL_R_RENEGOTIATION_MISMATCH 337 +# define SSL_R_REQUEST_PENDING 285 +# define SSL_R_REQUEST_SENT 286 +# define SSL_R_REQUIRED_CIPHER_MISSING 215 +# define SSL_R_REQUIRED_COMPRESSION_ALGORITHM_MISSING 342 +# define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345 +# define SSL_R_SCT_VERIFICATION_FAILED 208 +# define SSL_R_SERVERHELLO_TLSEXT 275 +# define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 +# define SSL_R_SHUTDOWN_WHILE_IN_INIT 407 +# define SSL_R_SIGNATURE_ALGORITHMS_ERROR 360 +# define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 +# define SSL_R_SRP_A_CALC 361 +# define SSL_R_SRTP_COULD_NOT_ALLOCATE_PROFILES 362 +# define SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG 363 +# define SSL_R_SRTP_UNKNOWN_PROTECTION_PROFILE 364 +# define SSL_R_SSL3_EXT_INVALID_MAX_FRAGMENT_LENGTH 232 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319 +# define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320 +# define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 +# define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 +# define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044 +# define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046 +# define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030 +# define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040 +# define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047 +# define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041 +# define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010 +# define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043 +# define SSL_R_SSL_COMMAND_SECTION_EMPTY 117 +# define SSL_R_SSL_COMMAND_SECTION_NOT_FOUND 125 +# define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228 +# define SSL_R_SSL_HANDSHAKE_FAILURE 229 +# define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS 230 +# define SSL_R_SSL_NEGATIVE_LENGTH 372 +# define SSL_R_SSL_SECTION_EMPTY 126 +# define SSL_R_SSL_SECTION_NOT_FOUND 136 +# define SSL_R_SSL_SESSION_ID_CALLBACK_FAILED 301 +# define SSL_R_SSL_SESSION_ID_CONFLICT 302 +# define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 273 +# define SSL_R_SSL_SESSION_ID_HAS_BAD_LENGTH 303 +# define SSL_R_SSL_SESSION_ID_TOO_LONG 408 +# define SSL_R_SSL_SESSION_VERSION_MISMATCH 210 +# define SSL_R_STILL_IN_INIT 121 +# define SSL_R_TLSV13_ALERT_CERTIFICATE_REQUIRED 1116 +# define SSL_R_TLSV13_ALERT_MISSING_EXTENSION 1109 +# define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049 +# define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050 +# define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021 +# define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051 +# define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION 1060 +# define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK 1086 +# define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071 +# define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 +# define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 +# define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070 +# define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 +# define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 +# define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 +# define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114 +# define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113 +# define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111 +# define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112 +# define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110 +# define SSL_R_TLS_HEARTBEAT_PEER_DOESNT_ACCEPT 365 +# define SSL_R_TLS_HEARTBEAT_PENDING 366 +# define SSL_R_TLS_ILLEGAL_EXPORTER_LABEL 367 +# define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157 +# define SSL_R_TOO_MANY_KEY_UPDATES 132 +# define SSL_R_TOO_MANY_WARN_ALERTS 409 +# define SSL_R_TOO_MUCH_EARLY_DATA 164 +# define SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS 314 +# define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239 +# define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242 +# define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243 +# define SSL_R_UNEXPECTED_CCS_MESSAGE 262 +# define SSL_R_UNEXPECTED_END_OF_EARLY_DATA 178 +# define SSL_R_UNEXPECTED_MESSAGE 244 +# define SSL_R_UNEXPECTED_RECORD 245 +# define SSL_R_UNINITIALIZED 276 +# define SSL_R_UNKNOWN_ALERT_TYPE 246 +# define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247 +# define SSL_R_UNKNOWN_CIPHER_RETURNED 248 +# define SSL_R_UNKNOWN_CIPHER_TYPE 249 +# define SSL_R_UNKNOWN_CMD_NAME 386 +# define SSL_R_UNKNOWN_COMMAND 139 +# define SSL_R_UNKNOWN_DIGEST 368 +# define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250 +# define SSL_R_UNKNOWN_PKEY_TYPE 251 +# define SSL_R_UNKNOWN_PROTOCOL 252 +# define SSL_R_UNKNOWN_SSL_VERSION 254 +# define SSL_R_UNKNOWN_STATE 255 +# define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338 +# define SSL_R_UNSOLICITED_EXTENSION 217 +# define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 +# define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 +# define SSL_R_UNSUPPORTED_PROTOCOL 258 +# define SSL_R_UNSUPPORTED_SSL_VERSION 259 +# define SSL_R_UNSUPPORTED_STATUS_TYPE 329 +# define SSL_R_USE_SRTP_NOT_NEGOTIATED 369 +# define SSL_R_VERSION_TOO_HIGH 166 +# define SSL_R_VERSION_TOO_LOW 396 +# define SSL_R_WRONG_CERTIFICATE_TYPE 383 +# define SSL_R_WRONG_CIPHER_RETURNED 261 +# define SSL_R_WRONG_CURVE 378 +# define SSL_R_WRONG_SIGNATURE_LENGTH 264 +# define SSL_R_WRONG_SIGNATURE_SIZE 265 +# define SSL_R_WRONG_SIGNATURE_TYPE 370 +# define SSL_R_WRONG_SSL_VERSION 266 +# define SSL_R_WRONG_VERSION_NUMBER 267 +# define SSL_R_X509_LIB 268 +# define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269 + +#endif diff --git a/include/openssl/openssl/stack.h b/include/openssl/openssl/stack.h new file mode 100644 index 00000000..cfc07505 --- /dev/null +++ b/include/openssl/openssl/stack.h @@ -0,0 +1,83 @@ +/* + * Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_STACK_H +# define HEADER_STACK_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct stack_st OPENSSL_STACK; /* Use STACK_OF(...) instead */ + +typedef int (*OPENSSL_sk_compfunc)(const void *, const void *); +typedef void (*OPENSSL_sk_freefunc)(void *); +typedef void *(*OPENSSL_sk_copyfunc)(const void *); + +int OPENSSL_sk_num(const OPENSSL_STACK *); +void *OPENSSL_sk_value(const OPENSSL_STACK *, int); + +void *OPENSSL_sk_set(OPENSSL_STACK *st, int i, const void *data); + +OPENSSL_STACK *OPENSSL_sk_new(OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_new_null(void); +OPENSSL_STACK *OPENSSL_sk_new_reserve(OPENSSL_sk_compfunc c, int n); +int OPENSSL_sk_reserve(OPENSSL_STACK *st, int n); +void OPENSSL_sk_free(OPENSSL_STACK *); +void OPENSSL_sk_pop_free(OPENSSL_STACK *st, void (*func) (void *)); +OPENSSL_STACK *OPENSSL_sk_deep_copy(const OPENSSL_STACK *, + OPENSSL_sk_copyfunc c, + OPENSSL_sk_freefunc f); +int OPENSSL_sk_insert(OPENSSL_STACK *sk, const void *data, int where); +void *OPENSSL_sk_delete(OPENSSL_STACK *st, int loc); +void *OPENSSL_sk_delete_ptr(OPENSSL_STACK *st, const void *p); +int OPENSSL_sk_find(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_find_ex(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_push(OPENSSL_STACK *st, const void *data); +int OPENSSL_sk_unshift(OPENSSL_STACK *st, const void *data); +void *OPENSSL_sk_shift(OPENSSL_STACK *st); +void *OPENSSL_sk_pop(OPENSSL_STACK *st); +void OPENSSL_sk_zero(OPENSSL_STACK *st); +OPENSSL_sk_compfunc OPENSSL_sk_set_cmp_func(OPENSSL_STACK *sk, + OPENSSL_sk_compfunc cmp); +OPENSSL_STACK *OPENSSL_sk_dup(const OPENSSL_STACK *st); +void OPENSSL_sk_sort(OPENSSL_STACK *st); +int OPENSSL_sk_is_sorted(const OPENSSL_STACK *st); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define _STACK OPENSSL_STACK +# define sk_num OPENSSL_sk_num +# define sk_value OPENSSL_sk_value +# define sk_set OPENSSL_sk_set +# define sk_new OPENSSL_sk_new +# define sk_new_null OPENSSL_sk_new_null +# define sk_free OPENSSL_sk_free +# define sk_pop_free OPENSSL_sk_pop_free +# define sk_deep_copy OPENSSL_sk_deep_copy +# define sk_insert OPENSSL_sk_insert +# define sk_delete OPENSSL_sk_delete +# define sk_delete_ptr OPENSSL_sk_delete_ptr +# define sk_find OPENSSL_sk_find +# define sk_find_ex OPENSSL_sk_find_ex +# define sk_push OPENSSL_sk_push +# define sk_unshift OPENSSL_sk_unshift +# define sk_shift OPENSSL_sk_shift +# define sk_pop OPENSSL_sk_pop +# define sk_zero OPENSSL_sk_zero +# define sk_set_cmp_func OPENSSL_sk_set_cmp_func +# define sk_dup OPENSSL_sk_dup +# define sk_sort OPENSSL_sk_sort +# define sk_is_sorted OPENSSL_sk_is_sorted +# endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/openssl/openssl/symhacks.h b/include/openssl/openssl/symhacks.h new file mode 100644 index 00000000..156ea6e4 --- /dev/null +++ b/include/openssl/openssl/symhacks.h @@ -0,0 +1,37 @@ +/* + * Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_SYMHACKS_H +# define HEADER_SYMHACKS_H + +# include + +/* Case insensitive linking causes problems.... */ +# if defined(OPENSSL_SYS_VMS) +# undef ERR_load_CRYPTO_strings +# define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings +# undef OCSP_crlID_new +# define OCSP_crlID_new OCSP_crlID2_new + +# undef d2i_ECPARAMETERS +# define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS +# undef i2d_ECPARAMETERS +# define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS +# undef d2i_ECPKPARAMETERS +# define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS +# undef i2d_ECPKPARAMETERS +# define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS + +/* This one clashes with CMS_data_create */ +# undef cms_Data_create +# define cms_Data_create priv_cms_Data_create + +# endif + +#endif /* ! defined HEADER_VMS_IDHACKS_H */ diff --git a/include/openssl/openssl/tls1.h b/include/openssl/openssl/tls1.h new file mode 100644 index 00000000..76d9fda4 --- /dev/null +++ b/include/openssl/openssl/tls1.h @@ -0,0 +1,1237 @@ +/* + * Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * Copyright 2005 Nokia. All rights reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_TLS1_H +# define HEADER_TLS1_H + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/* Default security level if not overridden at config time */ +# ifndef OPENSSL_TLS_SECURITY_LEVEL +# define OPENSSL_TLS_SECURITY_LEVEL 1 +# endif + +# define TLS1_VERSION 0x0301 +# define TLS1_1_VERSION 0x0302 +# define TLS1_2_VERSION 0x0303 +# define TLS1_3_VERSION 0x0304 +# define TLS_MAX_VERSION TLS1_3_VERSION + +/* Special value for method supporting multiple versions */ +# define TLS_ANY_VERSION 0x10000 + +# define TLS1_VERSION_MAJOR 0x03 +# define TLS1_VERSION_MINOR 0x01 + +# define TLS1_1_VERSION_MAJOR 0x03 +# define TLS1_1_VERSION_MINOR 0x02 + +# define TLS1_2_VERSION_MAJOR 0x03 +# define TLS1_2_VERSION_MINOR 0x03 + +# define TLS1_get_version(s) \ + ((SSL_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_version(s) : 0) + +# define TLS1_get_client_version(s) \ + ((SSL_client_version(s) >> 8) == TLS1_VERSION_MAJOR ? SSL_client_version(s) : 0) + +# define TLS1_AD_DECRYPTION_FAILED 21 +# define TLS1_AD_RECORD_OVERFLOW 22 +# define TLS1_AD_UNKNOWN_CA 48/* fatal */ +# define TLS1_AD_ACCESS_DENIED 49/* fatal */ +# define TLS1_AD_DECODE_ERROR 50/* fatal */ +# define TLS1_AD_DECRYPT_ERROR 51 +# define TLS1_AD_EXPORT_RESTRICTION 60/* fatal */ +# define TLS1_AD_PROTOCOL_VERSION 70/* fatal */ +# define TLS1_AD_INSUFFICIENT_SECURITY 71/* fatal */ +# define TLS1_AD_INTERNAL_ERROR 80/* fatal */ +# define TLS1_AD_INAPPROPRIATE_FALLBACK 86/* fatal */ +# define TLS1_AD_USER_CANCELLED 90 +# define TLS1_AD_NO_RENEGOTIATION 100 +/* TLSv1.3 alerts */ +# define TLS13_AD_MISSING_EXTENSION 109 /* fatal */ +# define TLS13_AD_CERTIFICATE_REQUIRED 116 /* fatal */ +/* codes 110-114 are from RFC3546 */ +# define TLS1_AD_UNSUPPORTED_EXTENSION 110 +# define TLS1_AD_CERTIFICATE_UNOBTAINABLE 111 +# define TLS1_AD_UNRECOGNIZED_NAME 112 +# define TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 113 +# define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 +# define TLS1_AD_UNKNOWN_PSK_IDENTITY 115/* fatal */ +# define TLS1_AD_NO_APPLICATION_PROTOCOL 120 /* fatal */ + +/* ExtensionType values from RFC3546 / RFC4366 / RFC6066 */ +# define TLSEXT_TYPE_server_name 0 +# define TLSEXT_TYPE_max_fragment_length 1 +# define TLSEXT_TYPE_client_certificate_url 2 +# define TLSEXT_TYPE_trusted_ca_keys 3 +# define TLSEXT_TYPE_truncated_hmac 4 +# define TLSEXT_TYPE_status_request 5 +/* ExtensionType values from RFC4681 */ +# define TLSEXT_TYPE_user_mapping 6 +/* ExtensionType values from RFC5878 */ +# define TLSEXT_TYPE_client_authz 7 +# define TLSEXT_TYPE_server_authz 8 +/* ExtensionType values from RFC6091 */ +# define TLSEXT_TYPE_cert_type 9 + +/* ExtensionType values from RFC4492 */ +/* + * Prior to TLSv1.3 the supported_groups extension was known as + * elliptic_curves + */ +# define TLSEXT_TYPE_supported_groups 10 +# define TLSEXT_TYPE_elliptic_curves TLSEXT_TYPE_supported_groups +# define TLSEXT_TYPE_ec_point_formats 11 + + +/* ExtensionType value from RFC5054 */ +# define TLSEXT_TYPE_srp 12 + +/* ExtensionType values from RFC5246 */ +# define TLSEXT_TYPE_signature_algorithms 13 + +/* ExtensionType value from RFC5764 */ +# define TLSEXT_TYPE_use_srtp 14 + +/* ExtensionType value from RFC5620 */ +# define TLSEXT_TYPE_heartbeat 15 + +/* ExtensionType value from RFC7301 */ +# define TLSEXT_TYPE_application_layer_protocol_negotiation 16 + +/* + * Extension type for Certificate Transparency + * https://tools.ietf.org/html/rfc6962#section-3.3.1 + */ +# define TLSEXT_TYPE_signed_certificate_timestamp 18 + +/* + * ExtensionType value for TLS padding extension. + * http://tools.ietf.org/html/draft-agl-tls-padding + */ +# define TLSEXT_TYPE_padding 21 + +/* ExtensionType value from RFC7366 */ +# define TLSEXT_TYPE_encrypt_then_mac 22 + +/* ExtensionType value from RFC7627 */ +# define TLSEXT_TYPE_extended_master_secret 23 + +/* ExtensionType value from RFC4507 */ +# define TLSEXT_TYPE_session_ticket 35 + +/* As defined for TLS1.3 */ +# define TLSEXT_TYPE_psk 41 +# define TLSEXT_TYPE_early_data 42 +# define TLSEXT_TYPE_supported_versions 43 +# define TLSEXT_TYPE_cookie 44 +# define TLSEXT_TYPE_psk_kex_modes 45 +# define TLSEXT_TYPE_certificate_authorities 47 +# define TLSEXT_TYPE_post_handshake_auth 49 +# define TLSEXT_TYPE_signature_algorithms_cert 50 +# define TLSEXT_TYPE_key_share 51 + +/* Temporary extension type */ +# define TLSEXT_TYPE_renegotiate 0xff01 + +# ifndef OPENSSL_NO_NEXTPROTONEG +/* This is not an IANA defined extension number */ +# define TLSEXT_TYPE_next_proto_neg 13172 +# endif + +/* NameType value from RFC3546 */ +# define TLSEXT_NAMETYPE_host_name 0 +/* status request value from RFC3546 */ +# define TLSEXT_STATUSTYPE_ocsp 1 + +/* ECPointFormat values from RFC4492 */ +# define TLSEXT_ECPOINTFORMAT_first 0 +# define TLSEXT_ECPOINTFORMAT_uncompressed 0 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 +# define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 +# define TLSEXT_ECPOINTFORMAT_last 2 + +/* Signature and hash algorithms from RFC5246 */ +# define TLSEXT_signature_anonymous 0 +# define TLSEXT_signature_rsa 1 +# define TLSEXT_signature_dsa 2 +# define TLSEXT_signature_ecdsa 3 +# define TLSEXT_signature_gostr34102001 237 +# define TLSEXT_signature_gostr34102012_256 238 +# define TLSEXT_signature_gostr34102012_512 239 + +/* Total number of different signature algorithms */ +# define TLSEXT_signature_num 7 + +# define TLSEXT_hash_none 0 +# define TLSEXT_hash_md5 1 +# define TLSEXT_hash_sha1 2 +# define TLSEXT_hash_sha224 3 +# define TLSEXT_hash_sha256 4 +# define TLSEXT_hash_sha384 5 +# define TLSEXT_hash_sha512 6 +# define TLSEXT_hash_gostr3411 237 +# define TLSEXT_hash_gostr34112012_256 238 +# define TLSEXT_hash_gostr34112012_512 239 + +/* Total number of different digest algorithms */ + +# define TLSEXT_hash_num 10 + +/* Flag set for unrecognised algorithms */ +# define TLSEXT_nid_unknown 0x1000000 + +/* ECC curves */ + +# define TLSEXT_curve_P_256 23 +# define TLSEXT_curve_P_384 24 + +/* OpenSSL value to disable maximum fragment length extension */ +# define TLSEXT_max_fragment_length_DISABLED 0 +/* Allowed values for max fragment length extension */ +# define TLSEXT_max_fragment_length_512 1 +# define TLSEXT_max_fragment_length_1024 2 +# define TLSEXT_max_fragment_length_2048 3 +# define TLSEXT_max_fragment_length_4096 4 + +int SSL_CTX_set_tlsext_max_fragment_length(SSL_CTX *ctx, uint8_t mode); +int SSL_set_tlsext_max_fragment_length(SSL *ssl, uint8_t mode); + +# define TLSEXT_MAXLEN_host_name 255 + +__owur const char *SSL_get_servername(const SSL *s, const int type); +__owur int SSL_get_servername_type(const SSL *s); +/* + * SSL_export_keying_material exports a value derived from the master secret, + * as specified in RFC 5705. It writes |olen| bytes to |out| given a label and + * optional context. (Since a zero length context is allowed, the |use_context| + * flag controls whether a context is included.) It returns 1 on success and + * 0 or -1 otherwise. + */ +__owur int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, + const char *label, size_t llen, + const unsigned char *context, + size_t contextlen, int use_context); + +/* + * SSL_export_keying_material_early exports a value derived from the + * early exporter master secret, as specified in + * https://tools.ietf.org/html/draft-ietf-tls-tls13-23. It writes + * |olen| bytes to |out| given a label and optional context. It + * returns 1 on success and 0 otherwise. + */ +__owur int SSL_export_keying_material_early(SSL *s, unsigned char *out, + size_t olen, const char *label, + size_t llen, + const unsigned char *context, + size_t contextlen); + +int SSL_get_peer_signature_type_nid(const SSL *s, int *pnid); +int SSL_get_signature_type_nid(const SSL *s, int *pnid); + +int SSL_get_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +int SSL_get_shared_sigalgs(SSL *s, int idx, + int *psign, int *phash, int *psignandhash, + unsigned char *rsig, unsigned char *rhash); + +__owur int SSL_check_chain(SSL *s, X509 *x, EVP_PKEY *pk, STACK_OF(X509) *chain); + +# define SSL_set_tlsext_host_name(s,name) \ + SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,\ + (void *)name) + +# define SSL_set_tlsext_debug_callback(ssl, cb) \ + SSL_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_CB,\ + (void (*)(void))cb) + +# define SSL_set_tlsext_debug_arg(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_DEBUG_ARG,0,arg) + +# define SSL_get_tlsext_status_type(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_set_tlsext_status_type(ssl, type) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_get_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_set_tlsext_status_exts(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS,0,arg) + +# define SSL_get_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_set_tlsext_status_ids(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS,0,arg) + +# define SSL_get_tlsext_status_ocsp_resp(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP,0,arg) + +# define SSL_set_tlsext_status_ocsp_resp(ssl, arg, arglen) \ + SSL_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP,arglen,arg) + +# define SSL_CTX_set_tlsext_servername_callback(ctx, cb) \ + SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,\ + (void (*)(void))cb) + +# define SSL_TLSEXT_ERR_OK 0 +# define SSL_TLSEXT_ERR_ALERT_WARNING 1 +# define SSL_TLSEXT_ERR_ALERT_FATAL 2 +# define SSL_TLSEXT_ERR_NOACK 3 + +# define SSL_CTX_set_tlsext_servername_arg(ctx, arg) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0,arg) + +# define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_GET_TLSEXT_TICKET_KEYS,keylen,keys) +# define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_TICKET_KEYS,keylen,keys) + +# define SSL_CTX_get_tlsext_status_cb(ssl, cb) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB,0,(void *)cb) +# define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,\ + (void (*)(void))cb) + +# define SSL_CTX_get_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) +# define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0,arg) + +# define SSL_CTX_set_tlsext_status_type(ssl, type) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE,type,NULL) + +# define SSL_CTX_get_tlsext_status_type(ssl) \ + SSL_CTX_ctrl(ssl,SSL_CTRL_GET_TLSEXT_STATUS_REQ_TYPE,0,NULL) + +# define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ + SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,\ + (void (*)(void))cb) + +# ifndef OPENSSL_NO_HEARTBEATS +# define SSL_DTLSEXT_HB_ENABLED 0x01 +# define SSL_DTLSEXT_HB_DONT_SEND_REQUESTS 0x02 +# define SSL_DTLSEXT_HB_DONT_RECV_REQUESTS 0x04 +# define SSL_get_dtlsext_heartbeat_pending(ssl) \ + SSL_ctrl(ssl,SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING,0,NULL) +# define SSL_set_dtlsext_heartbeat_no_requests(ssl, arg) \ + SSL_ctrl(ssl,SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS,arg,NULL) + +# if OPENSSL_API_COMPAT < 0x10100000L +# define SSL_CTRL_TLS_EXT_SEND_HEARTBEAT \ + SSL_CTRL_DTLS_EXT_SEND_HEARTBEAT +# define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING \ + SSL_CTRL_GET_DTLS_EXT_HEARTBEAT_PENDING +# define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS \ + SSL_CTRL_SET_DTLS_EXT_HEARTBEAT_NO_REQUESTS +# define SSL_TLSEXT_HB_ENABLED \ + SSL_DTLSEXT_HB_ENABLED +# define SSL_TLSEXT_HB_DONT_SEND_REQUESTS \ + SSL_DTLSEXT_HB_DONT_SEND_REQUESTS +# define SSL_TLSEXT_HB_DONT_RECV_REQUESTS \ + SSL_DTLSEXT_HB_DONT_RECV_REQUESTS +# define SSL_get_tlsext_heartbeat_pending(ssl) \ + SSL_get_dtlsext_heartbeat_pending(ssl) +# define SSL_set_tlsext_heartbeat_no_requests(ssl, arg) \ + SSL_set_dtlsext_heartbeat_no_requests(ssl,arg) +# endif +# endif + +/* PSK ciphersuites from 4279 */ +# define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A +# define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D +# define TLS1_CK_DHE_PSK_WITH_RC4_128_SHA 0x0300008E +# define TLS1_CK_DHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008F +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA 0x03000090 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA 0x03000091 +# define TLS1_CK_RSA_PSK_WITH_RC4_128_SHA 0x03000092 +# define TLS1_CK_RSA_PSK_WITH_3DES_EDE_CBC_SHA 0x03000093 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA 0x03000094 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA 0x03000095 + +/* PSK ciphersuites from 5487 */ +# define TLS1_CK_PSK_WITH_AES_128_GCM_SHA256 0x030000A8 +# define TLS1_CK_PSK_WITH_AES_256_GCM_SHA384 0x030000A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_GCM_SHA256 0x030000AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_GCM_SHA384 0x030000AB +# define TLS1_CK_RSA_PSK_WITH_AES_128_GCM_SHA256 0x030000AC +# define TLS1_CK_RSA_PSK_WITH_AES_256_GCM_SHA384 0x030000AD +# define TLS1_CK_PSK_WITH_AES_128_CBC_SHA256 0x030000AE +# define TLS1_CK_PSK_WITH_AES_256_CBC_SHA384 0x030000AF +# define TLS1_CK_PSK_WITH_NULL_SHA256 0x030000B0 +# define TLS1_CK_PSK_WITH_NULL_SHA384 0x030000B1 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CBC_SHA256 0x030000B2 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CBC_SHA384 0x030000B3 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA256 0x030000B4 +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA384 0x030000B5 +# define TLS1_CK_RSA_PSK_WITH_AES_128_CBC_SHA256 0x030000B6 +# define TLS1_CK_RSA_PSK_WITH_AES_256_CBC_SHA384 0x030000B7 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA256 0x030000B8 +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA384 0x030000B9 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_PSK_WITH_NULL_SHA 0x0300002C +# define TLS1_CK_DHE_PSK_WITH_NULL_SHA 0x0300002D +# define TLS1_CK_RSA_PSK_WITH_NULL_SHA 0x0300002E + +/* AES ciphersuites from RFC3268 */ +# define TLS1_CK_RSA_WITH_AES_128_SHA 0x0300002F +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA 0x03000030 +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA 0x03000031 +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA 0x03000032 +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA 0x03000033 +# define TLS1_CK_ADH_WITH_AES_128_SHA 0x03000034 +# define TLS1_CK_RSA_WITH_AES_256_SHA 0x03000035 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA 0x03000036 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA 0x03000037 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA 0x03000038 +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA 0x03000039 +# define TLS1_CK_ADH_WITH_AES_256_SHA 0x0300003A + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_RSA_WITH_NULL_SHA256 0x0300003B +# define TLS1_CK_RSA_WITH_AES_128_SHA256 0x0300003C +# define TLS1_CK_RSA_WITH_AES_256_SHA256 0x0300003D +# define TLS1_CK_DH_DSS_WITH_AES_128_SHA256 0x0300003E +# define TLS1_CK_DH_RSA_WITH_AES_128_SHA256 0x0300003F +# define TLS1_CK_DHE_DSS_WITH_AES_128_SHA256 0x03000040 + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000041 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000042 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000043 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA 0x03000044 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA 0x03000045 +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA 0x03000046 + +/* TLS v1.2 ciphersuites */ +# define TLS1_CK_DHE_RSA_WITH_AES_128_SHA256 0x03000067 +# define TLS1_CK_DH_DSS_WITH_AES_256_SHA256 0x03000068 +# define TLS1_CK_DH_RSA_WITH_AES_256_SHA256 0x03000069 +# define TLS1_CK_DHE_DSS_WITH_AES_256_SHA256 0x0300006A +# define TLS1_CK_DHE_RSA_WITH_AES_256_SHA256 0x0300006B +# define TLS1_CK_ADH_WITH_AES_128_SHA256 0x0300006C +# define TLS1_CK_ADH_WITH_AES_256_SHA256 0x0300006D + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000084 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000085 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000086 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA 0x03000087 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA 0x03000088 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA 0x03000089 + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_CK_RSA_WITH_SEED_SHA 0x03000096 +# define TLS1_CK_DH_DSS_WITH_SEED_SHA 0x03000097 +# define TLS1_CK_DH_RSA_WITH_SEED_SHA 0x03000098 +# define TLS1_CK_DHE_DSS_WITH_SEED_SHA 0x03000099 +# define TLS1_CK_DHE_RSA_WITH_SEED_SHA 0x0300009A +# define TLS1_CK_ADH_WITH_SEED_SHA 0x0300009B + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_CK_RSA_WITH_AES_128_GCM_SHA256 0x0300009C +# define TLS1_CK_RSA_WITH_AES_256_GCM_SHA384 0x0300009D +# define TLS1_CK_DHE_RSA_WITH_AES_128_GCM_SHA256 0x0300009E +# define TLS1_CK_DHE_RSA_WITH_AES_256_GCM_SHA384 0x0300009F +# define TLS1_CK_DH_RSA_WITH_AES_128_GCM_SHA256 0x030000A0 +# define TLS1_CK_DH_RSA_WITH_AES_256_GCM_SHA384 0x030000A1 +# define TLS1_CK_DHE_DSS_WITH_AES_128_GCM_SHA256 0x030000A2 +# define TLS1_CK_DHE_DSS_WITH_AES_256_GCM_SHA384 0x030000A3 +# define TLS1_CK_DH_DSS_WITH_AES_128_GCM_SHA256 0x030000A4 +# define TLS1_CK_DH_DSS_WITH_AES_256_GCM_SHA384 0x030000A5 +# define TLS1_CK_ADH_WITH_AES_128_GCM_SHA256 0x030000A6 +# define TLS1_CK_ADH_WITH_AES_256_GCM_SHA384 0x030000A7 + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_CK_RSA_WITH_AES_128_CCM 0x0300C09C +# define TLS1_CK_RSA_WITH_AES_256_CCM 0x0300C09D +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM 0x0300C09E +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM 0x0300C09F +# define TLS1_CK_RSA_WITH_AES_128_CCM_8 0x0300C0A0 +# define TLS1_CK_RSA_WITH_AES_256_CCM_8 0x0300C0A1 +# define TLS1_CK_DHE_RSA_WITH_AES_128_CCM_8 0x0300C0A2 +# define TLS1_CK_DHE_RSA_WITH_AES_256_CCM_8 0x0300C0A3 +# define TLS1_CK_PSK_WITH_AES_128_CCM 0x0300C0A4 +# define TLS1_CK_PSK_WITH_AES_256_CCM 0x0300C0A5 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM 0x0300C0A6 +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM 0x0300C0A7 +# define TLS1_CK_PSK_WITH_AES_128_CCM_8 0x0300C0A8 +# define TLS1_CK_PSK_WITH_AES_256_CCM_8 0x0300C0A9 +# define TLS1_CK_DHE_PSK_WITH_AES_128_CCM_8 0x0300C0AA +# define TLS1_CK_DHE_PSK_WITH_AES_256_CCM_8 0x0300C0AB + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM 0x0300C0AC +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM 0x0300C0AD +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CCM_8 0x0300C0AE +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CCM_8 0x0300C0AF + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BA +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BB +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BC +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 0x030000BD +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x030000BE +# define TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA256 0x030000BF + +# define TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C0 +# define TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C1 +# define TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C2 +# define TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 0x030000C3 +# define TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 0x030000C4 +# define TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA256 0x030000C5 + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA 0x0300C001 +# define TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA 0x0300C002 +# define TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C003 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0x0300C004 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0x0300C005 + +# define TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA 0x0300C006 +# define TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA 0x0300C007 +# define TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA 0x0300C008 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0x0300C009 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0x0300C00A + +# define TLS1_CK_ECDH_RSA_WITH_NULL_SHA 0x0300C00B +# define TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA 0x0300C00C +# define TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA 0x0300C00D +# define TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA 0x0300C00E +# define TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA 0x0300C00F + +# define TLS1_CK_ECDHE_RSA_WITH_NULL_SHA 0x0300C010 +# define TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA 0x0300C011 +# define TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA 0x0300C012 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA 0x0300C013 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA 0x0300C014 + +# define TLS1_CK_ECDH_anon_WITH_NULL_SHA 0x0300C015 +# define TLS1_CK_ECDH_anon_WITH_RC4_128_SHA 0x0300C016 +# define TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA 0x0300C017 +# define TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA 0x0300C018 +# define TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA 0x0300C019 + +/* SRP ciphersuites from RFC 5054 */ +# define TLS1_CK_SRP_SHA_WITH_3DES_EDE_CBC_SHA 0x0300C01A +# define TLS1_CK_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA 0x0300C01B +# define TLS1_CK_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA 0x0300C01C +# define TLS1_CK_SRP_SHA_WITH_AES_128_CBC_SHA 0x0300C01D +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_128_CBC_SHA 0x0300C01E +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_128_CBC_SHA 0x0300C01F +# define TLS1_CK_SRP_SHA_WITH_AES_256_CBC_SHA 0x0300C020 +# define TLS1_CK_SRP_SHA_RSA_WITH_AES_256_CBC_SHA 0x0300C021 +# define TLS1_CK_SRP_SHA_DSS_WITH_AES_256_CBC_SHA 0x0300C022 + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_SHA256 0x0300C023 +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_SHA384 0x0300C024 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_SHA256 0x0300C025 +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_SHA384 0x0300C026 +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_SHA256 0x0300C027 +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_SHA384 0x0300C028 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_SHA256 0x0300C029 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_SHA384 0x0300C02A + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02B +# define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02C +# define TLS1_CK_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 0x0300C02D +# define TLS1_CK_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 0x0300C02E +# define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0x0300C02F +# define TLS1_CK_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0x0300C030 +# define TLS1_CK_ECDH_RSA_WITH_AES_128_GCM_SHA256 0x0300C031 +# define TLS1_CK_ECDH_RSA_WITH_AES_256_GCM_SHA384 0x0300C032 + +/* ECDHE PSK ciphersuites from RFC5489 */ +# define TLS1_CK_ECDHE_PSK_WITH_RC4_128_SHA 0x0300C033 +# define TLS1_CK_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA 0x0300C034 +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA 0x0300C035 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA 0x0300C036 + +# define TLS1_CK_ECDHE_PSK_WITH_AES_128_CBC_SHA256 0x0300C037 +# define TLS1_CK_ECDHE_PSK_WITH_AES_256_CBC_SHA384 0x0300C038 + +/* NULL PSK ciphersuites from RFC4785 */ +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA 0x0300C039 +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA256 0x0300C03A +# define TLS1_CK_ECDHE_PSK_WITH_NULL_SHA384 0x0300C03B + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C072 +# define TLS1_CK_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C073 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C074 +# define TLS1_CK_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C075 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C076 +# define TLS1_CK_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C077 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 0x0300C078 +# define TLS1_CK_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 0x0300C079 + +# define TLS1_CK_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C094 +# define TLS1_CK_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C095 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C096 +# define TLS1_CK_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C097 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C098 +# define TLS1_CK_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C099 +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 0x0300C09A +# define TLS1_CK_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 0x0300C09B + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCA8 +# define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 0x0300CCA9 +# define TLS1_CK_DHE_RSA_WITH_CHACHA20_POLY1305 0x0300CCAA +# define TLS1_CK_PSK_WITH_CHACHA20_POLY1305 0x0300CCAB +# define TLS1_CK_ECDHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAC +# define TLS1_CK_DHE_PSK_WITH_CHACHA20_POLY1305 0x0300CCAD +# define TLS1_CK_RSA_PSK_WITH_CHACHA20_POLY1305 0x0300CCAE + +/* TLS v1.3 ciphersuites */ +# define TLS1_3_CK_AES_128_GCM_SHA256 0x03001301 +# define TLS1_3_CK_AES_256_GCM_SHA384 0x03001302 +# define TLS1_3_CK_CHACHA20_POLY1305_SHA256 0x03001303 +# define TLS1_3_CK_AES_128_CCM_SHA256 0x03001304 +# define TLS1_3_CK_AES_128_CCM_8_SHA256 0x03001305 + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_CK_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C050 +# define TLS1_CK_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C051 +# define TLS1_CK_DHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C052 +# define TLS1_CK_DHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C053 +# define TLS1_CK_DH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C054 +# define TLS1_CK_DH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C055 +# define TLS1_CK_DHE_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C056 +# define TLS1_CK_DHE_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C057 +# define TLS1_CK_DH_DSS_WITH_ARIA_128_GCM_SHA256 0x0300C058 +# define TLS1_CK_DH_DSS_WITH_ARIA_256_GCM_SHA384 0x0300C059 +# define TLS1_CK_DH_anon_WITH_ARIA_128_GCM_SHA256 0x0300C05A +# define TLS1_CK_DH_anon_WITH_ARIA_256_GCM_SHA384 0x0300C05B +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05C +# define TLS1_CK_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05D +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 0x0300C05E +# define TLS1_CK_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 0x0300C05F +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C060 +# define TLS1_CK_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C061 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 0x0300C062 +# define TLS1_CK_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 0x0300C063 +# define TLS1_CK_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06A +# define TLS1_CK_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06B +# define TLS1_CK_DHE_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06C +# define TLS1_CK_DHE_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06D +# define TLS1_CK_RSA_PSK_WITH_ARIA_128_GCM_SHA256 0x0300C06E +# define TLS1_CK_RSA_PSK_WITH_ARIA_256_GCM_SHA384 0x0300C06F + +/* a bundle of RFC standard cipher names, generated from ssl3_ciphers[] */ +# define TLS1_RFC_RSA_WITH_AES_128_SHA "TLS_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA "TLS_DHE_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA "TLS_DHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_128_SHA "TLS_DH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_WITH_AES_256_SHA "TLS_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA "TLS_DHE_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA "TLS_DHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_AES_256_SHA "TLS_DH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_NULL_SHA256 "TLS_RSA_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_SHA256 "TLS_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_SHA256 "TLS_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_SHA256 "TLS_DHE_DSS_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_SHA256 "TLS_DHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_SHA256 "TLS_DHE_DSS_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_SHA256 "TLS_DHE_RSA_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_128_SHA256 "TLS_DH_anon_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_SHA256 "TLS_DH_anon_WITH_AES_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_AES_128_GCM_SHA256 "TLS_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_AES_256_GCM_SHA384 "TLS_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_AES_128_GCM_SHA256 "TLS_DHE_DSS_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_AES_256_GCM_SHA384 "TLS_DHE_DSS_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ADH_WITH_AES_128_GCM_SHA256 "TLS_DH_anon_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ADH_WITH_AES_256_GCM_SHA384 "TLS_DH_anon_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_WITH_AES_128_CCM "TLS_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_RSA_WITH_AES_256_CCM "TLS_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM "TLS_DHE_RSA_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM "TLS_DHE_RSA_WITH_AES_256_CCM" +# define TLS1_RFC_RSA_WITH_AES_128_CCM_8 "TLS_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_RSA_WITH_AES_256_CCM_8 "TLS_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_128_CCM_8 "TLS_DHE_RSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_RSA_WITH_AES_256_CCM_8 "TLS_DHE_RSA_WITH_AES_256_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_128_CCM "TLS_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_PSK_WITH_AES_256_CCM "TLS_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM "TLS_DHE_PSK_WITH_AES_128_CCM" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM "TLS_DHE_PSK_WITH_AES_256_CCM" +# define TLS1_RFC_PSK_WITH_AES_128_CCM_8 "TLS_PSK_WITH_AES_128_CCM_8" +# define TLS1_RFC_PSK_WITH_AES_256_CCM_8 "TLS_PSK_WITH_AES_256_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CCM_8 "TLS_PSK_DHE_WITH_AES_128_CCM_8" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CCM_8 "TLS_PSK_DHE_WITH_AES_256_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM "TLS_ECDHE_ECDSA_WITH_AES_128_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM "TLS_ECDHE_ECDSA_WITH_AES_256_CCM" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CCM_8 "TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8" +# define TLS1_3_RFC_AES_128_GCM_SHA256 "TLS_AES_128_GCM_SHA256" +# define TLS1_3_RFC_AES_256_GCM_SHA384 "TLS_AES_256_GCM_SHA384" +# define TLS1_3_RFC_CHACHA20_POLY1305_SHA256 "TLS_CHACHA20_POLY1305_SHA256" +# define TLS1_3_RFC_AES_128_CCM_SHA256 "TLS_AES_128_CCM_SHA256" +# define TLS1_3_RFC_AES_128_CCM_8_SHA256 "TLS_AES_128_CCM_8_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_NULL_SHA "TLS_ECDHE_ECDSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_NULL_SHA "TLS_ECDHE_RSA_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_DES_192_CBC3_SHA "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_CBC_SHA "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_NULL_SHA "TLS_ECDH_anon_WITH_NULL_SHA" +# define TLS1_RFC_ECDH_anon_WITH_DES_192_CBC3_SHA "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_128_CBC_SHA "TLS_ECDH_anon_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDH_anon_WITH_AES_256_CBC_SHA "TLS_ECDH_anon_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA "TLS_PSK_WITH_NULL_SHA" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA "TLS_DHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA "TLS_RSA_PSK_WITH_NULL_SHA" +# define TLS1_RFC_PSK_WITH_3DES_EDE_CBC_SHA "TLS_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA "TLS_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA "TLS_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA "TLS_DHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA "TLS_DHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_3DES_EDE_CBC_SHA "TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA "TLS_RSA_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA "TLS_RSA_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_PSK_WITH_AES_128_GCM_SHA256 "TLS_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_GCM_SHA384 "TLS_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_GCM_SHA256 "TLS_DHE_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_GCM_SHA384 "TLS_DHE_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_GCM_SHA256 "TLS_RSA_PSK_WITH_AES_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_GCM_SHA384 "TLS_RSA_PSK_WITH_AES_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_AES_128_CBC_SHA256 "TLS_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_AES_256_CBC_SHA384 "TLS_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_NULL_SHA256 "TLS_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_PSK_WITH_NULL_SHA384 "TLS_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_DHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_DHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA256 "TLS_DHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_NULL_SHA384 "TLS_DHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_AES_128_CBC_SHA256 "TLS_RSA_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_AES_256_CBC_SHA384 "TLS_RSA_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA256 "TLS_RSA_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_NULL_SHA384 "TLS_RSA_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA "TLS_ECDHE_PSK_WITH_NULL_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA256 "TLS_ECDHE_PSK_WITH_NULL_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_NULL_SHA384 "TLS_ECDHE_PSK_WITH_NULL_SHA384" +# define TLS1_RFC_SRP_SHA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "TLS_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_128_CBC_SHA" +# define TLS1_RFC_SRP_SHA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_RSA_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "TLS_SRP_SHA_DSS_WITH_AES_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CHACHA20_POLY1305 "TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_PSK_WITH_CHACHA20_POLY1305 "TLS_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CHACHA20_POLY1305 "TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CHACHA20_POLY1305 "TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CHACHA20_POLY1305 "TLS_RSA_PSK_WITH_CHACHA20_POLY1305_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA256 "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA256" +# define TLS1_RFC_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_256_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_256_CBC_SHA" +# define TLS1_RFC_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ADH_WITH_CAMELLIA_128_CBC_SHA "TLS_DH_anon_WITH_CAMELLIA_128_CBC_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256" +# define TLS1_RFC_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384" +# define TLS1_RFC_RSA_WITH_SEED_SHA "TLS_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_DSS_WITH_SEED_SHA "TLS_DHE_DSS_WITH_SEED_CBC_SHA" +# define TLS1_RFC_DHE_RSA_WITH_SEED_SHA "TLS_DHE_RSA_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ADH_WITH_SEED_SHA "TLS_DH_anon_WITH_SEED_CBC_SHA" +# define TLS1_RFC_ECDHE_PSK_WITH_RC4_128_SHA "TLS_ECDHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDH_anon_WITH_RC4_128_SHA "TLS_ECDH_anon_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_ECDSA_WITH_RC4_128_SHA "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA" +# define TLS1_RFC_ECDHE_RSA_WITH_RC4_128_SHA "TLS_ECDHE_RSA_WITH_RC4_128_SHA" +# define TLS1_RFC_PSK_WITH_RC4_128_SHA "TLS_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_PSK_WITH_RC4_128_SHA "TLS_RSA_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_DHE_PSK_WITH_RC4_128_SHA "TLS_DHE_PSK_WITH_RC4_128_SHA" +# define TLS1_RFC_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_DH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_DH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_DSS_WITH_ARIA_128_GCM_SHA256 "TLS_DH_DSS_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_DSS_WITH_ARIA_256_GCM_SHA384 "TLS_DH_DSS_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DH_anon_WITH_ARIA_128_GCM_SHA256 "TLS_DH_anon_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DH_anon_WITH_ARIA_256_GCM_SHA384 "TLS_DH_anon_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "TLS_ECDH_RSA_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "TLS_ECDH_RSA_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_DHE_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_DHE_PSK_WITH_ARIA_256_GCM_SHA384" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "TLS_RSA_PSK_WITH_ARIA_128_GCM_SHA256" +# define TLS1_RFC_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "TLS_RSA_PSK_WITH_ARIA_256_GCM_SHA384" + + +/* + * XXX Backward compatibility alert: Older versions of OpenSSL gave some DHE + * ciphers names with "EDH" instead of "DHE". Going forward, we should be + * using DHE everywhere, though we may indefinitely maintain aliases for + * users or configurations that used "EDH" + */ +# define TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA "DHE-DSS-RC4-SHA" + +# define TLS1_TXT_PSK_WITH_NULL_SHA "PSK-NULL-SHA" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA "DHE-PSK-NULL-SHA" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA "RSA-PSK-NULL-SHA" + +/* AES ciphersuites from RFC3268 */ +# define TLS1_TXT_RSA_WITH_AES_128_SHA "AES128-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA "DH-DSS-AES128-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA "DH-RSA-AES128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA "DHE-DSS-AES128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA "DHE-RSA-AES128-SHA" +# define TLS1_TXT_ADH_WITH_AES_128_SHA "ADH-AES128-SHA" + +# define TLS1_TXT_RSA_WITH_AES_256_SHA "AES256-SHA" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA "DH-DSS-AES256-SHA" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA "DH-RSA-AES256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA "DHE-DSS-AES256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA "DHE-RSA-AES256-SHA" +# define TLS1_TXT_ADH_WITH_AES_256_SHA "ADH-AES256-SHA" + +/* ECC ciphersuites from RFC4492 */ +# define TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA "ECDH-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA "ECDH-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA "ECDH-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA "ECDH-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA "ECDH-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA "ECDHE-ECDSA-NULL-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA "ECDHE-ECDSA-RC4-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA "ECDHE-ECDSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA "ECDHE-ECDSA-AES128-SHA" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA "ECDHE-ECDSA-AES256-SHA" + +# define TLS1_TXT_ECDH_RSA_WITH_NULL_SHA "ECDH-RSA-NULL-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA "ECDH-RSA-RC4-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA "ECDH-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA "ECDH-RSA-AES128-SHA" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA "ECDH-RSA-AES256-SHA" + +# define TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA "ECDHE-RSA-NULL-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA "ECDHE-RSA-RC4-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA "ECDHE-RSA-DES-CBC3-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA "ECDHE-RSA-AES128-SHA" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA "ECDHE-RSA-AES256-SHA" + +# define TLS1_TXT_ECDH_anon_WITH_NULL_SHA "AECDH-NULL-SHA" +# define TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA "AECDH-RC4-SHA" +# define TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA "AECDH-DES-CBC3-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" +# define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" + +/* PSK ciphersuites from RFC 4279 */ +# define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA" +# define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA" + +# define TLS1_TXT_DHE_PSK_WITH_RC4_128_SHA "DHE-PSK-RC4-SHA" +# define TLS1_TXT_DHE_PSK_WITH_3DES_EDE_CBC_SHA "DHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA "DHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA "DHE-PSK-AES256-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_RC4_128_SHA "RSA-PSK-RC4-SHA" +# define TLS1_TXT_RSA_PSK_WITH_3DES_EDE_CBC_SHA "RSA-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA "RSA-PSK-AES128-CBC-SHA" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA "RSA-PSK-AES256-CBC-SHA" + +/* PSK ciphersuites from RFC 5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_GCM_SHA256 "DHE-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_GCM_SHA384 "DHE-PSK-AES256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_AES_128_GCM_SHA256 "RSA-PSK-AES128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_GCM_SHA384 "RSA-PSK-AES256-GCM-SHA384" + +# define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA256 "PSK-AES128-CBC-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA384 "PSK-AES256-CBC-SHA384" +# define TLS1_TXT_PSK_WITH_NULL_SHA256 "PSK-NULL-SHA256" +# define TLS1_TXT_PSK_WITH_NULL_SHA384 "PSK-NULL-SHA384" + +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CBC_SHA256 "DHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CBC_SHA384 "DHE-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA256 "DHE-PSK-NULL-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_NULL_SHA384 "DHE-PSK-NULL-SHA384" + +# define TLS1_TXT_RSA_PSK_WITH_AES_128_CBC_SHA256 "RSA-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_AES_256_CBC_SHA384 "RSA-PSK-AES256-CBC-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA256 "RSA-PSK-NULL-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_NULL_SHA384 "RSA-PSK-NULL-SHA384" + +/* SRP ciphersuite from RFC 5054 */ +# define TLS1_TXT_SRP_SHA_WITH_3DES_EDE_CBC_SHA "SRP-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_3DES_EDE_CBC_SHA "SRP-RSA-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_3DES_EDE_CBC_SHA "SRP-DSS-3DES-EDE-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_128_CBC_SHA "SRP-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_128_CBC_SHA "SRP-RSA-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_128_CBC_SHA "SRP-DSS-AES-128-CBC-SHA" +# define TLS1_TXT_SRP_SHA_WITH_AES_256_CBC_SHA "SRP-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_RSA_WITH_AES_256_CBC_SHA "SRP-RSA-AES-256-CBC-SHA" +# define TLS1_TXT_SRP_SHA_DSS_WITH_AES_256_CBC_SHA "SRP-DSS-AES-256-CBC-SHA" + +/* Camellia ciphersuites from RFC4132 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA "DH-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA "DHE-DSS-CAMELLIA128-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA "DHE-RSA-CAMELLIA128-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA "ADH-CAMELLIA128-SHA" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA "CAMELLIA256-SHA" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA "DH-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA "DH-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA "DHE-DSS-CAMELLIA256-SHA" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA "DHE-RSA-CAMELLIA256-SHA" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA "ADH-CAMELLIA256-SHA" + +/* TLS 1.2 Camellia SHA-256 ciphersuites from RFC5932 */ +# define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA256 "CAMELLIA128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DH-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA256 "DHE-DSS-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "DHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA256 "ADH-CAMELLIA128-SHA256" + +# define TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA256 "CAMELLIA256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DH-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DH-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA256 "DHE-DSS-CAMELLIA256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 "DHE-RSA-CAMELLIA256-SHA256" +# define TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA256 "ADH-CAMELLIA256-SHA256" + +# define TLS1_TXT_PSK_WITH_CAMELLIA_128_CBC_SHA256 "PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_PSK_WITH_CAMELLIA_256_CBC_SHA384 "PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "DHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "DHE-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 "RSA-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 "RSA-PSK-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-PSK-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-PSK-CAMELLIA256-SHA384" + +/* SEED ciphersuites from RFC4162 */ +# define TLS1_TXT_RSA_WITH_SEED_SHA "SEED-SHA" +# define TLS1_TXT_DH_DSS_WITH_SEED_SHA "DH-DSS-SEED-SHA" +# define TLS1_TXT_DH_RSA_WITH_SEED_SHA "DH-RSA-SEED-SHA" +# define TLS1_TXT_DHE_DSS_WITH_SEED_SHA "DHE-DSS-SEED-SHA" +# define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" +# define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" + +/* TLS v1.2 ciphersuites */ +# define TLS1_TXT_RSA_WITH_NULL_SHA256 "NULL-SHA256" +# define TLS1_TXT_RSA_WITH_AES_128_SHA256 "AES128-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_SHA256 "AES256-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_128_SHA256 "DH-DSS-AES128-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_128_SHA256 "DH-RSA-AES128-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_SHA256 "DHE-DSS-AES128-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_SHA256 "DHE-RSA-AES128-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_SHA256 "DH-DSS-AES256-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_SHA256 "DH-RSA-AES256-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_SHA256 "DHE-DSS-AES256-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_SHA256 "DHE-RSA-AES256-SHA256" +# define TLS1_TXT_ADH_WITH_AES_128_SHA256 "ADH-AES128-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_SHA256 "ADH-AES256-SHA256" + +/* TLS v1.2 GCM ciphersuites from RFC5288 */ +# define TLS1_TXT_RSA_WITH_AES_128_GCM_SHA256 "AES128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_AES_256_GCM_SHA384 "AES256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_GCM_SHA256 "DHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_GCM_SHA384 "DHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_AES_128_GCM_SHA256 "DH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_AES_256_GCM_SHA384 "DH-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_AES_128_GCM_SHA256 "DHE-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_AES_256_GCM_SHA384 "DHE-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_AES_128_GCM_SHA256 "DH-DSS-AES128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_AES_256_GCM_SHA384 "DH-DSS-AES256-GCM-SHA384" +# define TLS1_TXT_ADH_WITH_AES_128_GCM_SHA256 "ADH-AES128-GCM-SHA256" +# define TLS1_TXT_ADH_WITH_AES_256_GCM_SHA384 "ADH-AES256-GCM-SHA384" + +/* CCM ciphersuites from RFC6655 */ +# define TLS1_TXT_RSA_WITH_AES_128_CCM "AES128-CCM" +# define TLS1_TXT_RSA_WITH_AES_256_CCM "AES256-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM "DHE-RSA-AES128-CCM" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM "DHE-RSA-AES256-CCM" + +# define TLS1_TXT_RSA_WITH_AES_128_CCM_8 "AES128-CCM8" +# define TLS1_TXT_RSA_WITH_AES_256_CCM_8 "AES256-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_128_CCM_8 "DHE-RSA-AES128-CCM8" +# define TLS1_TXT_DHE_RSA_WITH_AES_256_CCM_8 "DHE-RSA-AES256-CCM8" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM "PSK-AES128-CCM" +# define TLS1_TXT_PSK_WITH_AES_256_CCM "PSK-AES256-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM "DHE-PSK-AES128-CCM" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM "DHE-PSK-AES256-CCM" + +# define TLS1_TXT_PSK_WITH_AES_128_CCM_8 "PSK-AES128-CCM8" +# define TLS1_TXT_PSK_WITH_AES_256_CCM_8 "PSK-AES256-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_128_CCM_8 "DHE-PSK-AES128-CCM8" +# define TLS1_TXT_DHE_PSK_WITH_AES_256_CCM_8 "DHE-PSK-AES256-CCM8" + +/* CCM ciphersuites from RFC7251 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM "ECDHE-ECDSA-AES128-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM "ECDHE-ECDSA-AES256-CCM" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CCM_8 "ECDHE-ECDSA-AES128-CCM8" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CCM_8 "ECDHE-ECDSA-AES256-CCM8" + +/* ECDH HMAC based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_SHA256 "ECDHE-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_SHA384 "ECDHE-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_SHA256 "ECDH-ECDSA-AES128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_SHA384 "ECDH-ECDSA-AES256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_SHA256 "ECDHE-RSA-AES128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_SHA384 "ECDHE-RSA-AES256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_SHA256 "ECDH-RSA-AES128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_SHA384 "ECDH-RSA-AES256-SHA384" + +/* ECDH GCM based ciphersuites from RFC5289 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 "ECDHE-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 "ECDHE-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 "ECDH-ECDSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 "ECDH-ECDSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_128_GCM_SHA256 "ECDHE-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384 "ECDHE-RSA-AES256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_AES_128_GCM_SHA256 "ECDH-RSA-AES128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_AES_256_GCM_SHA384 "ECDH-RSA-AES256-GCM-SHA384" + +/* TLS v1.2 PSK GCM ciphersuites from RFC5487 */ +# define TLS1_TXT_PSK_WITH_AES_128_GCM_SHA256 "PSK-AES128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_AES_256_GCM_SHA384 "PSK-AES256-GCM-SHA384" + +/* ECDHE PSK ciphersuites from RFC 5489 */ +# define TLS1_TXT_ECDHE_PSK_WITH_RC4_128_SHA "ECDHE-PSK-RC4-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA "ECDHE-PSK-3DES-EDE-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA "ECDHE-PSK-AES128-CBC-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA "ECDHE-PSK-AES256-CBC-SHA" + +# define TLS1_TXT_ECDHE_PSK_WITH_AES_128_CBC_SHA256 "ECDHE-PSK-AES128-CBC-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_AES_256_CBC_SHA384 "ECDHE-PSK-AES256-CBC-SHA384" + +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA "ECDHE-PSK-NULL-SHA" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA256 "ECDHE-PSK-NULL-SHA256" +# define TLS1_TXT_ECDHE_PSK_WITH_NULL_SHA384 "ECDHE-PSK-NULL-SHA384" + +/* Camellia-CBC ciphersuites from RFC6367 */ +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-ECDSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-ECDSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDHE-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDHE-RSA-CAMELLIA256-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 "ECDH-RSA-CAMELLIA128-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 "ECDH-RSA-CAMELLIA256-SHA384" + +/* draft-ietf-tls-chacha20-poly1305-03 */ +# define TLS1_TXT_ECDHE_RSA_WITH_CHACHA20_POLY1305 "ECDHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_ECDSA_WITH_CHACHA20_POLY1305 "ECDHE-ECDSA-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_RSA_WITH_CHACHA20_POLY1305 "DHE-RSA-CHACHA20-POLY1305" +# define TLS1_TXT_PSK_WITH_CHACHA20_POLY1305 "PSK-CHACHA20-POLY1305" +# define TLS1_TXT_ECDHE_PSK_WITH_CHACHA20_POLY1305 "ECDHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_DHE_PSK_WITH_CHACHA20_POLY1305 "DHE-PSK-CHACHA20-POLY1305" +# define TLS1_TXT_RSA_PSK_WITH_CHACHA20_POLY1305 "RSA-PSK-CHACHA20-POLY1305" + +/* Aria ciphersuites from RFC6209 */ +# define TLS1_TXT_RSA_WITH_ARIA_128_GCM_SHA256 "ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_WITH_ARIA_256_GCM_SHA384 "ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_128_GCM_SHA256 "DHE-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_RSA_WITH_ARIA_256_GCM_SHA384 "DHE-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_RSA_WITH_ARIA_128_GCM_SHA256 "DH-RSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_RSA_WITH_ARIA_256_GCM_SHA384 "DH-RSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_128_GCM_SHA256 "DHE-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_DSS_WITH_ARIA_256_GCM_SHA384 "DHE-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_DSS_WITH_ARIA_128_GCM_SHA256 "DH-DSS-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_DSS_WITH_ARIA_256_GCM_SHA384 "DH-DSS-ARIA256-GCM-SHA384" +# define TLS1_TXT_DH_anon_WITH_ARIA_128_GCM_SHA256 "ADH-ARIA128-GCM-SHA256" +# define TLS1_TXT_DH_anon_WITH_ARIA_256_GCM_SHA384 "ADH-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ECDSA-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_ECDSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ECDSA-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_128_GCM_SHA256 "ECDHE-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDHE_RSA_WITH_ARIA_256_GCM_SHA384 "ECDHE-ARIA256-GCM-SHA384" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_128_GCM_SHA256 "ECDH-ARIA128-GCM-SHA256" +# define TLS1_TXT_ECDH_RSA_WITH_ARIA_256_GCM_SHA384 "ECDH-ARIA256-GCM-SHA384" +# define TLS1_TXT_PSK_WITH_ARIA_128_GCM_SHA256 "PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_PSK_WITH_ARIA_256_GCM_SHA384 "PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_128_GCM_SHA256 "DHE-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_DHE_PSK_WITH_ARIA_256_GCM_SHA384 "DHE-PSK-ARIA256-GCM-SHA384" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_128_GCM_SHA256 "RSA-PSK-ARIA128-GCM-SHA256" +# define TLS1_TXT_RSA_PSK_WITH_ARIA_256_GCM_SHA384 "RSA-PSK-ARIA256-GCM-SHA384" + +# define TLS_CT_RSA_SIGN 1 +# define TLS_CT_DSS_SIGN 2 +# define TLS_CT_RSA_FIXED_DH 3 +# define TLS_CT_DSS_FIXED_DH 4 +# define TLS_CT_ECDSA_SIGN 64 +# define TLS_CT_RSA_FIXED_ECDH 65 +# define TLS_CT_ECDSA_FIXED_ECDH 66 +# define TLS_CT_GOST01_SIGN 22 +# define TLS_CT_GOST12_SIGN 238 +# define TLS_CT_GOST12_512_SIGN 239 + +/* + * when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see + * comment there) + */ +# define TLS_CT_NUMBER 10 + +# if defined(SSL3_CT_NUMBER) +# if TLS_CT_NUMBER != SSL3_CT_NUMBER +# error "SSL/TLS CT_NUMBER values do not match" +# endif +# endif + +# define TLS1_FINISH_MAC_LENGTH 12 + +# define TLS_MD_MAX_CONST_SIZE 22 +# define TLS_MD_CLIENT_FINISH_CONST "client finished" +# define TLS_MD_CLIENT_FINISH_CONST_SIZE 15 +# define TLS_MD_SERVER_FINISH_CONST "server finished" +# define TLS_MD_SERVER_FINISH_CONST_SIZE 15 +# define TLS_MD_KEY_EXPANSION_CONST "key expansion" +# define TLS_MD_KEY_EXPANSION_CONST_SIZE 13 +# define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key" +# define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_SERVER_WRITE_KEY_CONST "server write key" +# define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16 +# define TLS_MD_IV_BLOCK_CONST "IV block" +# define TLS_MD_IV_BLOCK_CONST_SIZE 8 +# define TLS_MD_MASTER_SECRET_CONST "master secret" +# define TLS_MD_MASTER_SECRET_CONST_SIZE 13 +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret" +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22 + +# ifdef CHARSET_EBCDIC +# undef TLS_MD_CLIENT_FINISH_CONST +/* + * client finished + */ +# define TLS_MD_CLIENT_FINISH_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_FINISH_CONST +/* + * server finished + */ +# define TLS_MD_SERVER_FINISH_CONST "\x73\x65\x72\x76\x65\x72\x20\x66\x69\x6e\x69\x73\x68\x65\x64" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_KEY_EXPANSION_CONST +/* + * key expansion + */ +# define TLS_MD_KEY_EXPANSION_CONST "\x6b\x65\x79\x20\x65\x78\x70\x61\x6e\x73\x69\x6f\x6e" + +# undef TLS_MD_CLIENT_WRITE_KEY_CONST +/* + * client write key + */ +# define TLS_MD_CLIENT_WRITE_KEY_CONST "\x63\x6c\x69\x65\x6e\x74\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_SERVER_WRITE_KEY_CONST +/* + * server write key + */ +# define TLS_MD_SERVER_WRITE_KEY_CONST "\x73\x65\x72\x76\x65\x72\x20\x77\x72\x69\x74\x65\x20\x6b\x65\x79" + +# undef TLS_MD_IV_BLOCK_CONST +/* + * IV block + */ +# define TLS_MD_IV_BLOCK_CONST "\x49\x56\x20\x62\x6c\x6f\x63\x6b" + +# undef TLS_MD_MASTER_SECRET_CONST +/* + * master secret + */ +# define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# undef TLS_MD_EXTENDED_MASTER_SECRET_CONST +/* + * extended master secret + */ +# define TLS_MD_EXTENDED_MASTER_SECRET_CONST "\x65\x78\x74\x65\x6e\x64\x65\x64\x20\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" +# endif + +/* TLS Session Ticket extension struct */ +struct tls_session_ticket_ext_st { + unsigned short length; + void *data; +}; + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/x509.h b/include/openssl/openssl/x509.h new file mode 100644 index 00000000..3ff86ec7 --- /dev/null +++ b/include/openssl/openssl/x509.h @@ -0,0 +1,1050 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_H +# define HEADER_X509_H + +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# if OPENSSL_API_COMPAT < 0x10100000L +# include +# include +# include +# endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Flags for X509_get_signature_info() */ +/* Signature info is valid */ +# define X509_SIG_INFO_VALID 0x1 +/* Signature is suitable for TLS use */ +# define X509_SIG_INFO_TLS 0x2 + +# define X509_FILETYPE_PEM 1 +# define X509_FILETYPE_ASN1 2 +# define X509_FILETYPE_DEFAULT 3 + +# define X509v3_KU_DIGITAL_SIGNATURE 0x0080 +# define X509v3_KU_NON_REPUDIATION 0x0040 +# define X509v3_KU_KEY_ENCIPHERMENT 0x0020 +# define X509v3_KU_DATA_ENCIPHERMENT 0x0010 +# define X509v3_KU_KEY_AGREEMENT 0x0008 +# define X509v3_KU_KEY_CERT_SIGN 0x0004 +# define X509v3_KU_CRL_SIGN 0x0002 +# define X509v3_KU_ENCIPHER_ONLY 0x0001 +# define X509v3_KU_DECIPHER_ONLY 0x8000 +# define X509v3_KU_UNDEF 0xffff + +struct X509_algor_st { + ASN1_OBJECT *algorithm; + ASN1_TYPE *parameter; +} /* X509_ALGOR */ ; + +typedef STACK_OF(X509_ALGOR) X509_ALGORS; + +typedef struct X509_val_st { + ASN1_TIME *notBefore; + ASN1_TIME *notAfter; +} X509_VAL; + +typedef struct X509_sig_st X509_SIG; + +typedef struct X509_name_entry_st X509_NAME_ENTRY; + +DEFINE_STACK_OF(X509_NAME_ENTRY) + +DEFINE_STACK_OF(X509_NAME) + +# define X509_EX_V_NETSCAPE_HACK 0x8000 +# define X509_EX_V_INIT 0x0001 +typedef struct X509_extension_st X509_EXTENSION; + +typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; + +DEFINE_STACK_OF(X509_EXTENSION) + +typedef struct x509_attributes_st X509_ATTRIBUTE; + +DEFINE_STACK_OF(X509_ATTRIBUTE) + +typedef struct X509_req_info_st X509_REQ_INFO; + +typedef struct X509_req_st X509_REQ; + +typedef struct x509_cert_aux_st X509_CERT_AUX; + +typedef struct x509_cinf_st X509_CINF; + +DEFINE_STACK_OF(X509) + +/* This is used for a table of trust checking functions */ + +typedef struct x509_trust_st { + int trust; + int flags; + int (*check_trust) (struct x509_trust_st *, X509 *, int); + char *name; + int arg1; + void *arg2; +} X509_TRUST; + +DEFINE_STACK_OF(X509_TRUST) + +/* standard trust ids */ + +# define X509_TRUST_DEFAULT 0 /* Only valid in purpose settings */ + +# define X509_TRUST_COMPAT 1 +# define X509_TRUST_SSL_CLIENT 2 +# define X509_TRUST_SSL_SERVER 3 +# define X509_TRUST_EMAIL 4 +# define X509_TRUST_OBJECT_SIGN 5 +# define X509_TRUST_OCSP_SIGN 6 +# define X509_TRUST_OCSP_REQUEST 7 +# define X509_TRUST_TSA 8 + +/* Keep these up to date! */ +# define X509_TRUST_MIN 1 +# define X509_TRUST_MAX 8 + +/* trust_flags values */ +# define X509_TRUST_DYNAMIC (1U << 0) +# define X509_TRUST_DYNAMIC_NAME (1U << 1) +/* No compat trust if self-signed, preempts "DO_SS" */ +# define X509_TRUST_NO_SS_COMPAT (1U << 2) +/* Compat trust if no explicit accepted trust EKUs */ +# define X509_TRUST_DO_SS_COMPAT (1U << 3) +/* Accept "anyEKU" as a wildcard trust OID */ +# define X509_TRUST_OK_ANY_EKU (1U << 4) + +/* check_trust return codes */ + +# define X509_TRUST_TRUSTED 1 +# define X509_TRUST_REJECTED 2 +# define X509_TRUST_UNTRUSTED 3 + +/* Flags for X509_print_ex() */ + +# define X509_FLAG_COMPAT 0 +# define X509_FLAG_NO_HEADER 1L +# define X509_FLAG_NO_VERSION (1L << 1) +# define X509_FLAG_NO_SERIAL (1L << 2) +# define X509_FLAG_NO_SIGNAME (1L << 3) +# define X509_FLAG_NO_ISSUER (1L << 4) +# define X509_FLAG_NO_VALIDITY (1L << 5) +# define X509_FLAG_NO_SUBJECT (1L << 6) +# define X509_FLAG_NO_PUBKEY (1L << 7) +# define X509_FLAG_NO_EXTENSIONS (1L << 8) +# define X509_FLAG_NO_SIGDUMP (1L << 9) +# define X509_FLAG_NO_AUX (1L << 10) +# define X509_FLAG_NO_ATTRIBUTES (1L << 11) +# define X509_FLAG_NO_IDS (1L << 12) + +/* Flags specific to X509_NAME_print_ex() */ + +/* The field separator information */ + +# define XN_FLAG_SEP_MASK (0xf << 16) + +# define XN_FLAG_COMPAT 0/* Traditional; use old X509_NAME_print */ +# define XN_FLAG_SEP_COMMA_PLUS (1 << 16)/* RFC2253 ,+ */ +# define XN_FLAG_SEP_CPLUS_SPC (2 << 16)/* ,+ spaced: more readable */ +# define XN_FLAG_SEP_SPLUS_SPC (3 << 16)/* ;+ spaced */ +# define XN_FLAG_SEP_MULTILINE (4 << 16)/* One line per field */ + +# define XN_FLAG_DN_REV (1 << 20)/* Reverse DN order */ + +/* How the field name is shown */ + +# define XN_FLAG_FN_MASK (0x3 << 21) + +# define XN_FLAG_FN_SN 0/* Object short name */ +# define XN_FLAG_FN_LN (1 << 21)/* Object long name */ +# define XN_FLAG_FN_OID (2 << 21)/* Always use OIDs */ +# define XN_FLAG_FN_NONE (3 << 21)/* No field names */ + +# define XN_FLAG_SPC_EQ (1 << 23)/* Put spaces round '=' */ + +/* + * This determines if we dump fields we don't recognise: RFC2253 requires + * this. + */ + +# define XN_FLAG_DUMP_UNKNOWN_FIELDS (1 << 24) + +# define XN_FLAG_FN_ALIGN (1 << 25)/* Align field names to 20 + * characters */ + +/* Complete set of RFC2253 flags */ + +# define XN_FLAG_RFC2253 (ASN1_STRFLGS_RFC2253 | \ + XN_FLAG_SEP_COMMA_PLUS | \ + XN_FLAG_DN_REV | \ + XN_FLAG_FN_SN | \ + XN_FLAG_DUMP_UNKNOWN_FIELDS) + +/* readable oneline form */ + +# define XN_FLAG_ONELINE (ASN1_STRFLGS_RFC2253 | \ + ASN1_STRFLGS_ESC_QUOTE | \ + XN_FLAG_SEP_CPLUS_SPC | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_SN) + +/* readable multiline form */ + +# define XN_FLAG_MULTILINE (ASN1_STRFLGS_ESC_CTRL | \ + ASN1_STRFLGS_ESC_MSB | \ + XN_FLAG_SEP_MULTILINE | \ + XN_FLAG_SPC_EQ | \ + XN_FLAG_FN_LN | \ + XN_FLAG_FN_ALIGN) + +DEFINE_STACK_OF(X509_REVOKED) + +typedef struct X509_crl_info_st X509_CRL_INFO; + +DEFINE_STACK_OF(X509_CRL) + +typedef struct private_key_st { + int version; + /* The PKCS#8 data types */ + X509_ALGOR *enc_algor; + ASN1_OCTET_STRING *enc_pkey; /* encrypted pub key */ + /* When decrypted, the following will not be NULL */ + EVP_PKEY *dec_pkey; + /* used to encrypt and decrypt */ + int key_length; + char *key_data; + int key_free; /* true if we should auto free key_data */ + /* expanded version of 'enc_algor' */ + EVP_CIPHER_INFO cipher; +} X509_PKEY; + +typedef struct X509_info_st { + X509 *x509; + X509_CRL *crl; + X509_PKEY *x_pkey; + EVP_CIPHER_INFO enc_cipher; + int enc_len; + char *enc_data; +} X509_INFO; + +DEFINE_STACK_OF(X509_INFO) + +/* + * The next 2 structures and their 8 routines are used to manipulate Netscape's + * spki structures - useful if you are writing a CA web page + */ +typedef struct Netscape_spkac_st { + X509_PUBKEY *pubkey; + ASN1_IA5STRING *challenge; /* challenge sent in atlas >= PR2 */ +} NETSCAPE_SPKAC; + +typedef struct Netscape_spki_st { + NETSCAPE_SPKAC *spkac; /* signed public key and challenge */ + X509_ALGOR sig_algor; + ASN1_BIT_STRING *signature; +} NETSCAPE_SPKI; + +/* Netscape certificate sequence structure */ +typedef struct Netscape_certificate_sequence { + ASN1_OBJECT *type; + STACK_OF(X509) *certs; +} NETSCAPE_CERT_SEQUENCE; + +/*- Unused (and iv length is wrong) +typedef struct CBCParameter_st + { + unsigned char iv[8]; + } CBC_PARAM; +*/ + +/* Password based encryption structure */ + +typedef struct PBEPARAM_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *iter; +} PBEPARAM; + +/* Password based encryption V2 structures */ + +typedef struct PBE2PARAM_st { + X509_ALGOR *keyfunc; + X509_ALGOR *encryption; +} PBE2PARAM; + +typedef struct PBKDF2PARAM_st { +/* Usually OCTET STRING but could be anything */ + ASN1_TYPE *salt; + ASN1_INTEGER *iter; + ASN1_INTEGER *keylength; + X509_ALGOR *prf; +} PBKDF2PARAM; + +#ifndef OPENSSL_NO_SCRYPT +typedef struct SCRYPT_PARAMS_st { + ASN1_OCTET_STRING *salt; + ASN1_INTEGER *costParameter; + ASN1_INTEGER *blockSize; + ASN1_INTEGER *parallelizationParameter; + ASN1_INTEGER *keyLength; +} SCRYPT_PARAMS; +#endif + +#ifdef __cplusplus +} +#endif + +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +# define X509_EXT_PACK_UNKNOWN 1 +# define X509_EXT_PACK_STRING 2 + +# define X509_extract_key(x) X509_get_pubkey(x)/*****/ +# define X509_REQ_extract_key(a) X509_REQ_get_pubkey(a) +# define X509_name_cmp(a,b) X509_NAME_cmp((a),(b)) + +void X509_CRL_set_default_method(const X509_CRL_METHOD *meth); +X509_CRL_METHOD *X509_CRL_METHOD_new(int (*crl_init) (X509_CRL *crl), + int (*crl_free) (X509_CRL *crl), + int (*crl_lookup) (X509_CRL *crl, + X509_REVOKED **ret, + ASN1_INTEGER *ser, + X509_NAME *issuer), + int (*crl_verify) (X509_CRL *crl, + EVP_PKEY *pk)); +void X509_CRL_METHOD_free(X509_CRL_METHOD *m); + +void X509_CRL_set_meth_data(X509_CRL *crl, void *dat); +void *X509_CRL_get_meth_data(X509_CRL *crl); + +const char *X509_verify_cert_error_string(long n); + +int X509_verify(X509 *a, EVP_PKEY *r); + +int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r); +int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r); +int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r); + +NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, int len); +char *NETSCAPE_SPKI_b64_encode(NETSCAPE_SPKI *x); +EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x); +int NETSCAPE_SPKI_set_pubkey(NETSCAPE_SPKI *x, EVP_PKEY *pkey); + +int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki); + +int X509_signature_dump(BIO *bp, const ASN1_STRING *sig, int indent); +int X509_signature_print(BIO *bp, const X509_ALGOR *alg, + const ASN1_STRING *sig); + +int X509_sign(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_sign_ctx(X509 *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_http_nbio(OCSP_REQ_CTX *rctx, X509 **pcert); +# endif +int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); +int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); +int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); +# ifndef OPENSSL_NO_OCSP +int X509_CRL_http_nbio(OCSP_REQ_CTX *rctx, X509_CRL **pcrl); +# endif +int NETSCAPE_SPKI_sign(NETSCAPE_SPKI *x, EVP_PKEY *pkey, const EVP_MD *md); + +int X509_pubkey_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_digest(const X509 *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_CRL_digest(const X509_CRL *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_REQ_digest(const X509_REQ *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); +int X509_NAME_digest(const X509_NAME *data, const EVP_MD *type, + unsigned char *md, unsigned int *len); + +# ifndef OPENSSL_NO_STDIO +X509 *d2i_X509_fp(FILE *fp, X509 **x509); +int i2d_X509_fp(FILE *fp, X509 *x509); +X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); +int i2d_X509_CRL_fp(FILE *fp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); +int i2d_X509_REQ_fp(FILE *fp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPrivateKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); +int i2d_RSAPublicKey_fp(FILE *fp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); +int i2d_RSA_PUBKEY_fp(FILE *fp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); +int i2d_DSA_PUBKEY_fp(FILE *fp, DSA *dsa); +DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); +int i2d_DSAPrivateKey_fp(FILE *fp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); +int i2d_EC_PUBKEY_fp(FILE *fp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); +int i2d_ECPrivateKey_fp(FILE *fp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); +int i2d_PKCS8_fp(FILE *fp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_fp(FILE *fp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, EVP_PKEY *key); +int i2d_PrivateKey_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); +int i2d_PUBKEY_fp(FILE *fp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_fp(FILE *fp, EVP_PKEY **a); +# endif + +X509 *d2i_X509_bio(BIO *bp, X509 **x509); +int i2d_X509_bio(BIO *bp, X509 *x509); +X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); +int i2d_X509_CRL_bio(BIO *bp, X509_CRL *crl); +X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); +int i2d_X509_REQ_bio(BIO *bp, X509_REQ *req); +# ifndef OPENSSL_NO_RSA +RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPrivateKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); +int i2d_RSAPublicKey_bio(BIO *bp, RSA *rsa); +RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); +int i2d_RSA_PUBKEY_bio(BIO *bp, RSA *rsa); +# endif +# ifndef OPENSSL_NO_DSA +DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); +int i2d_DSA_PUBKEY_bio(BIO *bp, DSA *dsa); +DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); +int i2d_DSAPrivateKey_bio(BIO *bp, DSA *dsa); +# endif +# ifndef OPENSSL_NO_EC +EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); +int i2d_EC_PUBKEY_bio(BIO *bp, EC_KEY *eckey); +EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); +int i2d_ECPrivateKey_bio(BIO *bp, EC_KEY *eckey); +# endif +X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); +int i2d_PKCS8_bio(BIO *bp, X509_SIG *p8); +PKCS8_PRIV_KEY_INFO *d2i_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, + PKCS8_PRIV_KEY_INFO **p8inf); +int i2d_PKCS8_PRIV_KEY_INFO_bio(BIO *bp, PKCS8_PRIV_KEY_INFO *p8inf); +int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, EVP_PKEY *key); +int i2d_PrivateKey_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); +int i2d_PUBKEY_bio(BIO *bp, EVP_PKEY *pkey); +EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); + +X509 *X509_dup(X509 *x509); +X509_ATTRIBUTE *X509_ATTRIBUTE_dup(X509_ATTRIBUTE *xa); +X509_EXTENSION *X509_EXTENSION_dup(X509_EXTENSION *ex); +X509_CRL *X509_CRL_dup(X509_CRL *crl); +X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev); +X509_REQ *X509_REQ_dup(X509_REQ *req); +X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn); +int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype, + void *pval); +void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype, + const void **ppval, const X509_ALGOR *algor); +void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md); +int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b); +int X509_ALGOR_copy(X509_ALGOR *dest, const X509_ALGOR *src); + +X509_NAME *X509_NAME_dup(X509_NAME *xn); +X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); + +int X509_cmp_time(const ASN1_TIME *s, time_t *t); +int X509_cmp_current_time(const ASN1_TIME *s); +ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *t); +ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s, + int offset_day, long offset_sec, time_t *t); +ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj); + +const char *X509_get_default_cert_area(void); +const char *X509_get_default_cert_dir(void); +const char *X509_get_default_cert_file(void); +const char *X509_get_default_cert_dir_env(void); +const char *X509_get_default_cert_file_env(void); +const char *X509_get_default_private_dir(void); + +X509_REQ *X509_to_X509_REQ(X509 *x, EVP_PKEY *pkey, const EVP_MD *md); +X509 *X509_REQ_to_X509(X509_REQ *r, int days, EVP_PKEY *pkey); + +DECLARE_ASN1_FUNCTIONS(X509_ALGOR) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_ALGORS, X509_ALGORS, X509_ALGORS) +DECLARE_ASN1_FUNCTIONS(X509_VAL) + +DECLARE_ASN1_FUNCTIONS(X509_PUBKEY) + +int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); +EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key); +EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key); +int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); +long X509_get_pathlen(X509 *x); +int i2d_PUBKEY(EVP_PKEY *a, unsigned char **pp); +EVP_PKEY *d2i_PUBKEY(EVP_PKEY **a, const unsigned char **pp, long length); +# ifndef OPENSSL_NO_RSA +int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); +RSA *d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_DSA +int i2d_DSA_PUBKEY(DSA *a, unsigned char **pp); +DSA *d2i_DSA_PUBKEY(DSA **a, const unsigned char **pp, long length); +# endif +# ifndef OPENSSL_NO_EC +int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp); +EC_KEY *d2i_EC_PUBKEY(EC_KEY **a, const unsigned char **pp, long length); +# endif + +DECLARE_ASN1_FUNCTIONS(X509_SIG) +void X509_SIG_get0(const X509_SIG *sig, const X509_ALGOR **palg, + const ASN1_OCTET_STRING **pdigest); +void X509_SIG_getm(X509_SIG *sig, X509_ALGOR **palg, + ASN1_OCTET_STRING **pdigest); + +DECLARE_ASN1_FUNCTIONS(X509_REQ_INFO) +DECLARE_ASN1_FUNCTIONS(X509_REQ) + +DECLARE_ASN1_FUNCTIONS(X509_ATTRIBUTE) +X509_ATTRIBUTE *X509_ATTRIBUTE_create(int nid, int atrtype, void *value); + +DECLARE_ASN1_FUNCTIONS(X509_EXTENSION) +DECLARE_ASN1_ENCODE_FUNCTIONS(X509_EXTENSIONS, X509_EXTENSIONS, X509_EXTENSIONS) + +DECLARE_ASN1_FUNCTIONS(X509_NAME_ENTRY) + +DECLARE_ASN1_FUNCTIONS(X509_NAME) + +int X509_NAME_set(X509_NAME **xn, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(X509_CINF) + +DECLARE_ASN1_FUNCTIONS(X509) +DECLARE_ASN1_FUNCTIONS(X509_CERT_AUX) + +#define X509_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509, l, p, newf, dupf, freef) +int X509_set_ex_data(X509 *r, int idx, void *arg); +void *X509_get_ex_data(X509 *r, int idx); +int i2d_X509_AUX(X509 *a, unsigned char **pp); +X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length); + +int i2d_re_X509_tbs(X509 *x, unsigned char **pp); + +int X509_SIG_INFO_get(const X509_SIG_INFO *siginf, int *mdnid, int *pknid, + int *secbits, uint32_t *flags); +void X509_SIG_INFO_set(X509_SIG_INFO *siginf, int mdnid, int pknid, + int secbits, uint32_t flags); + +int X509_get_signature_info(X509 *x, int *mdnid, int *pknid, int *secbits, + uint32_t *flags); + +void X509_get0_signature(const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg, const X509 *x); +int X509_get_signature_nid(const X509 *x); + +int X509_trusted(const X509 *x); +int X509_alias_set1(X509 *x, const unsigned char *name, int len); +int X509_keyid_set1(X509 *x, const unsigned char *id, int len); +unsigned char *X509_alias_get0(X509 *x, int *len); +unsigned char *X509_keyid_get0(X509 *x, int *len); +int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, + int); +int X509_TRUST_set(int *t, int trust); +int X509_add1_trust_object(X509 *x, const ASN1_OBJECT *obj); +int X509_add1_reject_object(X509 *x, const ASN1_OBJECT *obj); +void X509_trust_clear(X509 *x); +void X509_reject_clear(X509 *x); + +STACK_OF(ASN1_OBJECT) *X509_get0_trust_objects(X509 *x); +STACK_OF(ASN1_OBJECT) *X509_get0_reject_objects(X509 *x); + +DECLARE_ASN1_FUNCTIONS(X509_REVOKED) +DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) +DECLARE_ASN1_FUNCTIONS(X509_CRL) + +int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); +int X509_CRL_get0_by_serial(X509_CRL *crl, + X509_REVOKED **ret, ASN1_INTEGER *serial); +int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x); + +X509_PKEY *X509_PKEY_new(void); +void X509_PKEY_free(X509_PKEY *a); + +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKI) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_SPKAC) +DECLARE_ASN1_FUNCTIONS(NETSCAPE_CERT_SEQUENCE) + +X509_INFO *X509_INFO_new(void); +void X509_INFO_free(X509_INFO *a); +char *X509_NAME_oneline(const X509_NAME *a, char *buf, int size); + +int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); + +int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, + unsigned char *md, unsigned int *len); + +int ASN1_sign(i2d_of_void *i2d, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + char *data, EVP_PKEY *pkey, const EVP_MD *type); + +int ASN1_item_digest(const ASN1_ITEM *it, const EVP_MD *type, void *data, + unsigned char *md, unsigned int *len); + +int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *algor1, + ASN1_BIT_STRING *signature, void *data, EVP_PKEY *pkey); + +int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, void *data, + EVP_PKEY *pkey, const EVP_MD *type); +int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, + X509_ALGOR *algor2, ASN1_BIT_STRING *signature, + void *asn, EVP_MD_CTX *ctx); + +long X509_get_version(const X509 *x); +int X509_set_version(X509 *x, long version); +int X509_set_serialNumber(X509 *x, ASN1_INTEGER *serial); +ASN1_INTEGER *X509_get_serialNumber(X509 *x); +const ASN1_INTEGER *X509_get0_serialNumber(const X509 *x); +int X509_set_issuer_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_issuer_name(const X509 *a); +int X509_set_subject_name(X509 *x, X509_NAME *name); +X509_NAME *X509_get_subject_name(const X509 *a); +const ASN1_TIME * X509_get0_notBefore(const X509 *x); +ASN1_TIME *X509_getm_notBefore(const X509 *x); +int X509_set1_notBefore(X509 *x, const ASN1_TIME *tm); +const ASN1_TIME *X509_get0_notAfter(const X509 *x); +ASN1_TIME *X509_getm_notAfter(const X509 *x); +int X509_set1_notAfter(X509 *x, const ASN1_TIME *tm); +int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); +int X509_up_ref(X509 *x); +int X509_get_signature_type(const X509 *x); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_get_notBefore X509_getm_notBefore +# define X509_get_notAfter X509_getm_notAfter +# define X509_set_notBefore X509_set1_notBefore +# define X509_set_notAfter X509_set1_notAfter +#endif + + +/* + * This one is only used so that a binary form can output, as in + * i2d_X509_PUBKEY(X509_get_X509_PUBKEY(x), &buf) + */ +X509_PUBKEY *X509_get_X509_PUBKEY(const X509 *x); +const STACK_OF(X509_EXTENSION) *X509_get0_extensions(const X509 *x); +void X509_get0_uids(const X509 *x, const ASN1_BIT_STRING **piuid, + const ASN1_BIT_STRING **psuid); +const X509_ALGOR *X509_get0_tbs_sigalg(const X509 *x); + +EVP_PKEY *X509_get0_pubkey(const X509 *x); +EVP_PKEY *X509_get_pubkey(X509 *x); +ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x); +int X509_certificate_type(const X509 *x, const EVP_PKEY *pubkey); + +long X509_REQ_get_version(const X509_REQ *req); +int X509_REQ_set_version(X509_REQ *x, long version); +X509_NAME *X509_REQ_get_subject_name(const X509_REQ *req); +int X509_REQ_set_subject_name(X509_REQ *req, X509_NAME *name); +void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +void X509_REQ_set0_signature(X509_REQ *req, ASN1_BIT_STRING *psig); +int X509_REQ_set1_signature_algo(X509_REQ *req, X509_ALGOR *palg); +int X509_REQ_get_signature_nid(const X509_REQ *req); +int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); +int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); +EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); +int X509_REQ_extension_nid(int nid); +int *X509_REQ_get_extension_nids(void); +void X509_REQ_set_extension_nids(int *nids); +STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req); +int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, + int nid); +int X509_REQ_add_extensions(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts); +int X509_REQ_get_attr_count(const X509_REQ *req); +int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos); +int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc); +X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc); +int X509_REQ_add1_attr(X509_REQ *req, X509_ATTRIBUTE *attr); +int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_NID(X509_REQ *req, + int nid, int type, + const unsigned char *bytes, int len); +int X509_REQ_add1_attr_by_txt(X509_REQ *req, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_CRL_set_version(X509_CRL *x, long version); +int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); +int X509_CRL_set1_lastUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_set1_nextUpdate(X509_CRL *x, const ASN1_TIME *tm); +int X509_CRL_sort(X509_CRL *crl); +int X509_CRL_up_ref(X509_CRL *crl); + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_CRL_set_lastUpdate X509_CRL_set1_lastUpdate +# define X509_CRL_set_nextUpdate X509_CRL_set1_nextUpdate +#endif + +long X509_CRL_get_version(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_lastUpdate(const X509_CRL *crl); +const ASN1_TIME *X509_CRL_get0_nextUpdate(const X509_CRL *crl); +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl)) +DEPRECATEDIN_1_1_0(ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl)) +X509_NAME *X509_CRL_get_issuer(const X509_CRL *crl); +const STACK_OF(X509_EXTENSION) *X509_CRL_get0_extensions(const X509_CRL *crl); +STACK_OF(X509_REVOKED) *X509_CRL_get_REVOKED(X509_CRL *crl); +void X509_CRL_get0_signature(const X509_CRL *crl, const ASN1_BIT_STRING **psig, + const X509_ALGOR **palg); +int X509_CRL_get_signature_nid(const X509_CRL *crl); +int i2d_re_X509_CRL_tbs(X509_CRL *req, unsigned char **pp); + +const ASN1_INTEGER *X509_REVOKED_get0_serialNumber(const X509_REVOKED *x); +int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); +const ASN1_TIME *X509_REVOKED_get0_revocationDate(const X509_REVOKED *x); +int X509_REVOKED_set_revocationDate(X509_REVOKED *r, ASN1_TIME *tm); +const STACK_OF(X509_EXTENSION) * +X509_REVOKED_get0_extensions(const X509_REVOKED *r); + +X509_CRL *X509_CRL_diff(X509_CRL *base, X509_CRL *newer, + EVP_PKEY *skey, const EVP_MD *md, unsigned int flags); + +int X509_REQ_check_private_key(X509_REQ *x509, EVP_PKEY *pkey); + +int X509_check_private_key(const X509 *x509, const EVP_PKEY *pkey); +int X509_chain_check_suiteb(int *perror_depth, + X509 *x, STACK_OF(X509) *chain, + unsigned long flags); +int X509_CRL_check_suiteb(X509_CRL *crl, EVP_PKEY *pk, unsigned long flags); +STACK_OF(X509) *X509_chain_up_ref(STACK_OF(X509) *chain); + +int X509_issuer_and_serial_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_and_serial_hash(X509 *a); + +int X509_issuer_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_issuer_name_hash(X509 *a); + +int X509_subject_name_cmp(const X509 *a, const X509 *b); +unsigned long X509_subject_name_hash(X509 *x); + +# ifndef OPENSSL_NO_MD5 +unsigned long X509_issuer_name_hash_old(X509 *a); +unsigned long X509_subject_name_hash_old(X509 *x); +# endif + +int X509_cmp(const X509 *a, const X509 *b); +int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); +unsigned long X509_NAME_hash(X509_NAME *x); +unsigned long X509_NAME_hash_old(X509_NAME *x); + +int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); +int X509_CRL_match(const X509_CRL *a, const X509_CRL *b); +int X509_aux_print(BIO *out, X509 *x, int indent); +# ifndef OPENSSL_NO_STDIO +int X509_print_ex_fp(FILE *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print_fp(FILE *bp, X509 *x); +int X509_CRL_print_fp(FILE *bp, X509_CRL *x); +int X509_REQ_print_fp(FILE *bp, X509_REQ *req); +int X509_NAME_print_ex_fp(FILE *fp, const X509_NAME *nm, int indent, + unsigned long flags); +# endif + +int X509_NAME_print(BIO *bp, const X509_NAME *name, int obase); +int X509_NAME_print_ex(BIO *out, const X509_NAME *nm, int indent, + unsigned long flags); +int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflag, + unsigned long cflag); +int X509_print(BIO *bp, X509 *x); +int X509_ocspid_print(BIO *bp, X509 *x); +int X509_CRL_print_ex(BIO *out, X509_CRL *x, unsigned long nmflag); +int X509_CRL_print(BIO *bp, X509_CRL *x); +int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflag, + unsigned long cflag); +int X509_REQ_print(BIO *bp, X509_REQ *req); + +int X509_NAME_entry_count(const X509_NAME *name); +int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf, int len); +int X509_NAME_get_text_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + char *buf, int len); + +/* + * NOTE: you should be passing -1, not 0 as lastpos. The functions that use + * lastpos, search after that position on. + */ +int X509_NAME_get_index_by_NID(X509_NAME *name, int nid, int lastpos); +int X509_NAME_get_index_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, + int lastpos); +X509_NAME_ENTRY *X509_NAME_get_entry(const X509_NAME *name, int loc); +X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); +int X509_NAME_add_entry(X509_NAME *name, const X509_NAME_ENTRY *ne, + int loc, int set); +int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len, int loc, + int set); +int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, + const char *field, int type, + const unsigned char *bytes, + int len); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, + int type, + const unsigned char *bytes, + int len); +int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, + const unsigned char *bytes, int len, int loc, + int set); +X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, + int len); +int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj); +int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, + const unsigned char *bytes, int len); +ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne); +ASN1_STRING * X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne); +int X509_NAME_ENTRY_set(const X509_NAME_ENTRY *ne); + +int X509_NAME_get0_der(X509_NAME *nm, const unsigned char **pder, + size_t *pderlen); + +int X509v3_get_ext_count(const STACK_OF(X509_EXTENSION) *x); +int X509v3_get_ext_by_NID(const STACK_OF(X509_EXTENSION) *x, + int nid, int lastpos); +int X509v3_get_ext_by_OBJ(const STACK_OF(X509_EXTENSION) *x, + const ASN1_OBJECT *obj, int lastpos); +int X509v3_get_ext_by_critical(const STACK_OF(X509_EXTENSION) *x, + int crit, int lastpos); +X509_EXTENSION *X509v3_get_ext(const STACK_OF(X509_EXTENSION) *x, int loc); +X509_EXTENSION *X509v3_delete_ext(STACK_OF(X509_EXTENSION) *x, int loc); +STACK_OF(X509_EXTENSION) *X509v3_add_ext(STACK_OF(X509_EXTENSION) **x, + X509_EXTENSION *ex, int loc); + +int X509_get_ext_count(const X509 *x); +int X509_get_ext_by_NID(const X509 *x, int nid, int lastpos); +int X509_get_ext_by_OBJ(const X509 *x, const ASN1_OBJECT *obj, int lastpos); +int X509_get_ext_by_critical(const X509 *x, int crit, int lastpos); +X509_EXTENSION *X509_get_ext(const X509 *x, int loc); +X509_EXTENSION *X509_delete_ext(X509 *x, int loc); +int X509_add_ext(X509 *x, X509_EXTENSION *ex, int loc); +void *X509_get_ext_d2i(const X509 *x, int nid, int *crit, int *idx); +int X509_add1_ext_i2d(X509 *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_CRL_get_ext_count(const X509_CRL *x); +int X509_CRL_get_ext_by_NID(const X509_CRL *x, int nid, int lastpos); +int X509_CRL_get_ext_by_OBJ(const X509_CRL *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_CRL_get_ext_by_critical(const X509_CRL *x, int crit, int lastpos); +X509_EXTENSION *X509_CRL_get_ext(const X509_CRL *x, int loc); +X509_EXTENSION *X509_CRL_delete_ext(X509_CRL *x, int loc); +int X509_CRL_add_ext(X509_CRL *x, X509_EXTENSION *ex, int loc); +void *X509_CRL_get_ext_d2i(const X509_CRL *x, int nid, int *crit, int *idx); +int X509_CRL_add1_ext_i2d(X509_CRL *x, int nid, void *value, int crit, + unsigned long flags); + +int X509_REVOKED_get_ext_count(const X509_REVOKED *x); +int X509_REVOKED_get_ext_by_NID(const X509_REVOKED *x, int nid, int lastpos); +int X509_REVOKED_get_ext_by_OBJ(const X509_REVOKED *x, const ASN1_OBJECT *obj, + int lastpos); +int X509_REVOKED_get_ext_by_critical(const X509_REVOKED *x, int crit, + int lastpos); +X509_EXTENSION *X509_REVOKED_get_ext(const X509_REVOKED *x, int loc); +X509_EXTENSION *X509_REVOKED_delete_ext(X509_REVOKED *x, int loc); +int X509_REVOKED_add_ext(X509_REVOKED *x, X509_EXTENSION *ex, int loc); +void *X509_REVOKED_get_ext_d2i(const X509_REVOKED *x, int nid, int *crit, + int *idx); +int X509_REVOKED_add1_ext_i2d(X509_REVOKED *x, int nid, void *value, int crit, + unsigned long flags); + +X509_EXTENSION *X509_EXTENSION_create_by_NID(X509_EXTENSION **ex, + int nid, int crit, + ASN1_OCTET_STRING *data); +X509_EXTENSION *X509_EXTENSION_create_by_OBJ(X509_EXTENSION **ex, + const ASN1_OBJECT *obj, int crit, + ASN1_OCTET_STRING *data); +int X509_EXTENSION_set_object(X509_EXTENSION *ex, const ASN1_OBJECT *obj); +int X509_EXTENSION_set_critical(X509_EXTENSION *ex, int crit); +int X509_EXTENSION_set_data(X509_EXTENSION *ex, ASN1_OCTET_STRING *data); +ASN1_OBJECT *X509_EXTENSION_get_object(X509_EXTENSION *ex); +ASN1_OCTET_STRING *X509_EXTENSION_get_data(X509_EXTENSION *ne); +int X509_EXTENSION_get_critical(const X509_EXTENSION *ex); + +int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x); +int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid, + int lastpos); +int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk, + const ASN1_OBJECT *obj, int lastpos); +X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc); +X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x, + X509_ATTRIBUTE *attr); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) + **x, const ASN1_OBJECT *obj, + int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) + **x, int nid, int type, + const unsigned char *bytes, + int len); +STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) + **x, const char *attrname, + int type, + const unsigned char *bytes, + int len); +void *X509at_get0_data_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *x, + const ASN1_OBJECT *obj, int lastpos, int type); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_OBJ(X509_ATTRIBUTE **attr, + const ASN1_OBJECT *obj, + int atrtype, const void *data, + int len); +X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_txt(X509_ATTRIBUTE **attr, + const char *atrname, int type, + const unsigned char *bytes, + int len); +int X509_ATTRIBUTE_set1_object(X509_ATTRIBUTE *attr, const ASN1_OBJECT *obj); +int X509_ATTRIBUTE_set1_data(X509_ATTRIBUTE *attr, int attrtype, + const void *data, int len); +void *X509_ATTRIBUTE_get0_data(X509_ATTRIBUTE *attr, int idx, int atrtype, + void *data); +int X509_ATTRIBUTE_count(const X509_ATTRIBUTE *attr); +ASN1_OBJECT *X509_ATTRIBUTE_get0_object(X509_ATTRIBUTE *attr); +ASN1_TYPE *X509_ATTRIBUTE_get0_type(X509_ATTRIBUTE *attr, int idx); + +int EVP_PKEY_get_attr_count(const EVP_PKEY *key); +int EVP_PKEY_get_attr_by_NID(const EVP_PKEY *key, int nid, int lastpos); +int EVP_PKEY_get_attr_by_OBJ(const EVP_PKEY *key, const ASN1_OBJECT *obj, + int lastpos); +X509_ATTRIBUTE *EVP_PKEY_get_attr(const EVP_PKEY *key, int loc); +X509_ATTRIBUTE *EVP_PKEY_delete_attr(EVP_PKEY *key, int loc); +int EVP_PKEY_add1_attr(EVP_PKEY *key, X509_ATTRIBUTE *attr); +int EVP_PKEY_add1_attr_by_OBJ(EVP_PKEY *key, + const ASN1_OBJECT *obj, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_NID(EVP_PKEY *key, + int nid, int type, + const unsigned char *bytes, int len); +int EVP_PKEY_add1_attr_by_txt(EVP_PKEY *key, + const char *attrname, int type, + const unsigned char *bytes, int len); + +int X509_verify_cert(X509_STORE_CTX *ctx); + +/* lookup a cert from a X509 STACK */ +X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, X509_NAME *name, + ASN1_INTEGER *serial); +X509 *X509_find_by_subject(STACK_OF(X509) *sk, X509_NAME *name); + +DECLARE_ASN1_FUNCTIONS(PBEPARAM) +DECLARE_ASN1_FUNCTIONS(PBE2PARAM) +DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) +#ifndef OPENSSL_NO_SCRYPT +DECLARE_ASN1_FUNCTIONS(SCRYPT_PARAMS) +#endif + +int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter, + const unsigned char *salt, int saltlen); + +X509_ALGOR *PKCS5_pbe_set(int alg, int iter, + const unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen); +X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, + unsigned char *salt, int saltlen, + unsigned char *aiv, int prf_nid); + +#ifndef OPENSSL_NO_SCRYPT +X509_ALGOR *PKCS5_pbe2_set_scrypt(const EVP_CIPHER *cipher, + const unsigned char *salt, int saltlen, + unsigned char *aiv, uint64_t N, uint64_t r, + uint64_t p); +#endif + +X509_ALGOR *PKCS5_pbkdf2_set(int iter, unsigned char *salt, int saltlen, + int prf_nid, int keylen); + +/* PKCS#8 utilities */ + +DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) + +EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); +PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey); + +int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj, + int version, int ptype, void *pval, + unsigned char *penc, int penclen); +int PKCS8_pkey_get0(const ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + const X509_ALGOR **pa, const PKCS8_PRIV_KEY_INFO *p8); + +const STACK_OF(X509_ATTRIBUTE) * +PKCS8_pkey_get0_attrs(const PKCS8_PRIV_KEY_INFO *p8); +int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, + const unsigned char *bytes, int len); + +int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj, + int ptype, void *pval, + unsigned char *penc, int penclen); +int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg, + const unsigned char **pk, int *ppklen, + X509_ALGOR **pa, X509_PUBKEY *pub); + +int X509_check_trust(X509 *x, int id, int flags); +int X509_TRUST_get_count(void); +X509_TRUST *X509_TRUST_get0(int idx); +int X509_TRUST_get_by_id(int id); +int X509_TRUST_add(int id, int flags, int (*ck) (X509_TRUST *, X509 *, int), + const char *name, int arg1, void *arg2); +void X509_TRUST_cleanup(void); +int X509_TRUST_get_flags(const X509_TRUST *xp); +char *X509_TRUST_get0_name(const X509_TRUST *xp); +int X509_TRUST_get_trust(const X509_TRUST *xp); + +# ifdef __cplusplus +} +# endif +#endif diff --git a/include/openssl/openssl/x509_vfy.h b/include/openssl/openssl/x509_vfy.h new file mode 100644 index 00000000..25c79f1b --- /dev/null +++ b/include/openssl/openssl/x509_vfy.h @@ -0,0 +1,632 @@ +/* + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509_VFY_H +# define HEADER_X509_VFY_H + +/* + * Protect against recursion, x509.h and x509_vfy.h each include the other. + */ +# ifndef HEADER_X509_H +# include +# endif + +# include +# include +# include +# include +# include + +#ifdef __cplusplus +extern "C" { +#endif + +/*- +SSL_CTX -> X509_STORE + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + -> X509_LOOKUP + ->X509_LOOKUP_METHOD + +SSL -> X509_STORE_CTX + ->X509_STORE + +The X509_STORE holds the tables etc for verification stuff. +A X509_STORE_CTX is used while validating a single certificate. +The X509_STORE has X509_LOOKUPs for looking up certs. +The X509_STORE then calls a function to actually verify the +certificate chain. +*/ + +typedef enum { + X509_LU_NONE = 0, + X509_LU_X509, X509_LU_CRL +} X509_LOOKUP_TYPE; + +#if OPENSSL_API_COMPAT < 0x10100000L +#define X509_LU_RETRY -1 +#define X509_LU_FAIL 0 +#endif + +DEFINE_STACK_OF(X509_LOOKUP) +DEFINE_STACK_OF(X509_OBJECT) +DEFINE_STACK_OF(X509_VERIFY_PARAM) + +int X509_STORE_set_depth(X509_STORE *store, int depth); + +typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_verify_fn)(X509_STORE_CTX *); +typedef int (*X509_STORE_CTX_get_issuer_fn)(X509 **issuer, + X509_STORE_CTX *ctx, X509 *x); +typedef int (*X509_STORE_CTX_check_issued_fn)(X509_STORE_CTX *ctx, + X509 *x, X509 *issuer); +typedef int (*X509_STORE_CTX_check_revocation_fn)(X509_STORE_CTX *ctx); +typedef int (*X509_STORE_CTX_get_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL **crl, X509 *x); +typedef int (*X509_STORE_CTX_check_crl_fn)(X509_STORE_CTX *ctx, X509_CRL *crl); +typedef int (*X509_STORE_CTX_cert_crl_fn)(X509_STORE_CTX *ctx, + X509_CRL *crl, X509 *x); +typedef int (*X509_STORE_CTX_check_policy_fn)(X509_STORE_CTX *ctx); +typedef STACK_OF(X509) *(*X509_STORE_CTX_lookup_certs_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef STACK_OF(X509_CRL) *(*X509_STORE_CTX_lookup_crls_fn)(X509_STORE_CTX *ctx, + X509_NAME *nm); +typedef int (*X509_STORE_CTX_cleanup_fn)(X509_STORE_CTX *ctx); + + +void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth); + +# define X509_STORE_CTX_set_app_data(ctx,data) \ + X509_STORE_CTX_set_ex_data(ctx,0,data) +# define X509_STORE_CTX_get_app_data(ctx) \ + X509_STORE_CTX_get_ex_data(ctx,0) + +# define X509_L_FILE_LOAD 1 +# define X509_L_ADD_DIR 2 + +# define X509_LOOKUP_load_file(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_FILE_LOAD,(name),(long)(type),NULL) + +# define X509_LOOKUP_add_dir(x,name,type) \ + X509_LOOKUP_ctrl((x),X509_L_ADD_DIR,(name),(long)(type),NULL) + +# define X509_V_OK 0 +# define X509_V_ERR_UNSPECIFIED 1 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2 +# define X509_V_ERR_UNABLE_TO_GET_CRL 3 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 +# define X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 +# define X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 +# define X509_V_ERR_CERT_SIGNATURE_FAILURE 7 +# define X509_V_ERR_CRL_SIGNATURE_FAILURE 8 +# define X509_V_ERR_CERT_NOT_YET_VALID 9 +# define X509_V_ERR_CERT_HAS_EXPIRED 10 +# define X509_V_ERR_CRL_NOT_YET_VALID 11 +# define X509_V_ERR_CRL_HAS_EXPIRED 12 +# define X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 +# define X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 +# define X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 +# define X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 +# define X509_V_ERR_OUT_OF_MEM 17 +# define X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 +# define X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19 +# define X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 +# define X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 +# define X509_V_ERR_CERT_CHAIN_TOO_LONG 22 +# define X509_V_ERR_CERT_REVOKED 23 +# define X509_V_ERR_INVALID_CA 24 +# define X509_V_ERR_PATH_LENGTH_EXCEEDED 25 +# define X509_V_ERR_INVALID_PURPOSE 26 +# define X509_V_ERR_CERT_UNTRUSTED 27 +# define X509_V_ERR_CERT_REJECTED 28 +/* These are 'informational' when looking for issuer cert */ +# define X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29 +# define X509_V_ERR_AKID_SKID_MISMATCH 30 +# define X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31 +# define X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32 +# define X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33 +# define X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34 +# define X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35 +# define X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 +# define X509_V_ERR_INVALID_NON_CA 37 +# define X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38 +# define X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 +# define X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 +# define X509_V_ERR_INVALID_EXTENSION 41 +# define X509_V_ERR_INVALID_POLICY_EXTENSION 42 +# define X509_V_ERR_NO_EXPLICIT_POLICY 43 +# define X509_V_ERR_DIFFERENT_CRL_SCOPE 44 +# define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45 +# define X509_V_ERR_UNNESTED_RESOURCE 46 +# define X509_V_ERR_PERMITTED_VIOLATION 47 +# define X509_V_ERR_EXCLUDED_VIOLATION 48 +# define X509_V_ERR_SUBTREE_MINMAX 49 +/* The application is not happy */ +# define X509_V_ERR_APPLICATION_VERIFICATION 50 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51 +# define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52 +# define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53 +# define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54 +/* Another issuer check debug option */ +# define X509_V_ERR_PATH_LOOP 55 +/* Suite B mode algorithm violation */ +# define X509_V_ERR_SUITE_B_INVALID_VERSION 56 +# define X509_V_ERR_SUITE_B_INVALID_ALGORITHM 57 +# define X509_V_ERR_SUITE_B_INVALID_CURVE 58 +# define X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM 59 +# define X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED 60 +# define X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 61 +/* Host, email and IP check errors */ +# define X509_V_ERR_HOSTNAME_MISMATCH 62 +# define X509_V_ERR_EMAIL_MISMATCH 63 +# define X509_V_ERR_IP_ADDRESS_MISMATCH 64 +/* DANE TLSA errors */ +# define X509_V_ERR_DANE_NO_MATCH 65 +/* security level errors */ +# define X509_V_ERR_EE_KEY_TOO_SMALL 66 +# define X509_V_ERR_CA_KEY_TOO_SMALL 67 +# define X509_V_ERR_CA_MD_TOO_WEAK 68 +/* Caller error */ +# define X509_V_ERR_INVALID_CALL 69 +/* Issuer lookup error */ +# define X509_V_ERR_STORE_LOOKUP 70 +/* Certificate transparency */ +# define X509_V_ERR_NO_VALID_SCTS 71 + +# define X509_V_ERR_PROXY_SUBJECT_NAME_VIOLATION 72 +/* OCSP status errors */ +# define X509_V_ERR_OCSP_VERIFY_NEEDED 73 /* Need OCSP verification */ +# define X509_V_ERR_OCSP_VERIFY_FAILED 74 /* Couldn't verify cert through OCSP */ +# define X509_V_ERR_OCSP_CERT_UNKNOWN 75 /* Certificate wasn't recognized by the OCSP responder */ +# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 76 +# define X509_V_ERR_NO_ISSUER_PUBLIC_KEY 77 +# define X509_V_ERR_UNSUPPORTED_SIGNATURE_ALGORITHM 78 +# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 79 + +/* Certificate verify flags */ + +# if OPENSSL_API_COMPAT < 0x10100000L +# define X509_V_FLAG_CB_ISSUER_CHECK 0x0 /* Deprecated */ +# endif +/* Use check time instead of current time */ +# define X509_V_FLAG_USE_CHECK_TIME 0x2 +/* Lookup CRLs */ +# define X509_V_FLAG_CRL_CHECK 0x4 +/* Lookup CRLs for whole chain */ +# define X509_V_FLAG_CRL_CHECK_ALL 0x8 +/* Ignore unhandled critical extensions */ +# define X509_V_FLAG_IGNORE_CRITICAL 0x10 +/* Disable workarounds for broken certificates */ +# define X509_V_FLAG_X509_STRICT 0x20 +/* Enable proxy certificate validation */ +# define X509_V_FLAG_ALLOW_PROXY_CERTS 0x40 +/* Enable policy checking */ +# define X509_V_FLAG_POLICY_CHECK 0x80 +/* Policy variable require-explicit-policy */ +# define X509_V_FLAG_EXPLICIT_POLICY 0x100 +/* Policy variable inhibit-any-policy */ +# define X509_V_FLAG_INHIBIT_ANY 0x200 +/* Policy variable inhibit-policy-mapping */ +# define X509_V_FLAG_INHIBIT_MAP 0x400 +/* Notify callback that policy is OK */ +# define X509_V_FLAG_NOTIFY_POLICY 0x800 +/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */ +# define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000 +/* Delta CRL support */ +# define X509_V_FLAG_USE_DELTAS 0x2000 +/* Check self-signed CA signature */ +# define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000 +/* Use trusted store first */ +# define X509_V_FLAG_TRUSTED_FIRST 0x8000 +/* Suite B 128 bit only mode: not normally used */ +# define X509_V_FLAG_SUITEB_128_LOS_ONLY 0x10000 +/* Suite B 192 bit only mode */ +# define X509_V_FLAG_SUITEB_192_LOS 0x20000 +/* Suite B 128 bit mode allowing 192 bit algorithms */ +# define X509_V_FLAG_SUITEB_128_LOS 0x30000 +/* Allow partial chains if at least one certificate is in trusted store */ +# define X509_V_FLAG_PARTIAL_CHAIN 0x80000 +/* + * If the initial chain is not trusted, do not attempt to build an alternative + * chain. Alternate chain checking was introduced in 1.1.0. Setting this flag + * will force the behaviour to match that of previous versions. + */ +# define X509_V_FLAG_NO_ALT_CHAINS 0x100000 +/* Do not check certificate/CRL validity against current time */ +# define X509_V_FLAG_NO_CHECK_TIME 0x200000 + +# define X509_VP_FLAG_DEFAULT 0x1 +# define X509_VP_FLAG_OVERWRITE 0x2 +# define X509_VP_FLAG_RESET_FLAGS 0x4 +# define X509_VP_FLAG_LOCKED 0x8 +# define X509_VP_FLAG_ONCE 0x10 + +/* Internal use: mask of policy related options */ +# define X509_V_FLAG_POLICY_MASK (X509_V_FLAG_POLICY_CHECK \ + | X509_V_FLAG_EXPLICIT_POLICY \ + | X509_V_FLAG_INHIBIT_ANY \ + | X509_V_FLAG_INHIBIT_MAP) + +int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, + X509_LOOKUP_TYPE type, + X509_NAME *name); +X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, + X509_OBJECT *x); +int X509_OBJECT_up_ref_count(X509_OBJECT *a); +X509_OBJECT *X509_OBJECT_new(void); +void X509_OBJECT_free(X509_OBJECT *a); +X509_LOOKUP_TYPE X509_OBJECT_get_type(const X509_OBJECT *a); +X509 *X509_OBJECT_get0_X509(const X509_OBJECT *a); +int X509_OBJECT_set1_X509(X509_OBJECT *a, X509 *obj); +X509_CRL *X509_OBJECT_get0_X509_CRL(X509_OBJECT *a); +int X509_OBJECT_set1_X509_CRL(X509_OBJECT *a, X509_CRL *obj); +X509_STORE *X509_STORE_new(void); +void X509_STORE_free(X509_STORE *v); +int X509_STORE_lock(X509_STORE *ctx); +int X509_STORE_unlock(X509_STORE *ctx); +int X509_STORE_up_ref(X509_STORE *v); +STACK_OF(X509_OBJECT) *X509_STORE_get0_objects(X509_STORE *v); + +STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, X509_NAME *nm); +STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(X509_STORE_CTX *st, X509_NAME *nm); +int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); +int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); +int X509_STORE_set_trust(X509_STORE *ctx, int trust); +int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); +X509_VERIFY_PARAM *X509_STORE_get0_param(X509_STORE *ctx); + +void X509_STORE_set_verify(X509_STORE *ctx, X509_STORE_CTX_verify_fn verify); +#define X509_STORE_set_verify_func(ctx, func) \ + X509_STORE_set_verify((ctx),(func)) +void X509_STORE_CTX_set_verify(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_fn verify); +X509_STORE_CTX_verify_fn X509_STORE_get_verify(X509_STORE *ctx); +void X509_STORE_set_verify_cb(X509_STORE *ctx, + X509_STORE_CTX_verify_cb verify_cb); +# define X509_STORE_set_verify_cb_func(ctx,func) \ + X509_STORE_set_verify_cb((ctx),(func)) +X509_STORE_CTX_verify_cb X509_STORE_get_verify_cb(X509_STORE *ctx); +void X509_STORE_set_get_issuer(X509_STORE *ctx, + X509_STORE_CTX_get_issuer_fn get_issuer); +X509_STORE_CTX_get_issuer_fn X509_STORE_get_get_issuer(X509_STORE *ctx); +void X509_STORE_set_check_issued(X509_STORE *ctx, + X509_STORE_CTX_check_issued_fn check_issued); +X509_STORE_CTX_check_issued_fn X509_STORE_get_check_issued(X509_STORE *ctx); +void X509_STORE_set_check_revocation(X509_STORE *ctx, + X509_STORE_CTX_check_revocation_fn check_revocation); +X509_STORE_CTX_check_revocation_fn X509_STORE_get_check_revocation(X509_STORE *ctx); +void X509_STORE_set_get_crl(X509_STORE *ctx, + X509_STORE_CTX_get_crl_fn get_crl); +X509_STORE_CTX_get_crl_fn X509_STORE_get_get_crl(X509_STORE *ctx); +void X509_STORE_set_check_crl(X509_STORE *ctx, + X509_STORE_CTX_check_crl_fn check_crl); +X509_STORE_CTX_check_crl_fn X509_STORE_get_check_crl(X509_STORE *ctx); +void X509_STORE_set_cert_crl(X509_STORE *ctx, + X509_STORE_CTX_cert_crl_fn cert_crl); +X509_STORE_CTX_cert_crl_fn X509_STORE_get_cert_crl(X509_STORE *ctx); +void X509_STORE_set_check_policy(X509_STORE *ctx, + X509_STORE_CTX_check_policy_fn check_policy); +X509_STORE_CTX_check_policy_fn X509_STORE_get_check_policy(X509_STORE *ctx); +void X509_STORE_set_lookup_certs(X509_STORE *ctx, + X509_STORE_CTX_lookup_certs_fn lookup_certs); +X509_STORE_CTX_lookup_certs_fn X509_STORE_get_lookup_certs(X509_STORE *ctx); +void X509_STORE_set_lookup_crls(X509_STORE *ctx, + X509_STORE_CTX_lookup_crls_fn lookup_crls); +#define X509_STORE_set_lookup_crls_cb(ctx, func) \ + X509_STORE_set_lookup_crls((ctx), (func)) +X509_STORE_CTX_lookup_crls_fn X509_STORE_get_lookup_crls(X509_STORE *ctx); +void X509_STORE_set_cleanup(X509_STORE *ctx, + X509_STORE_CTX_cleanup_fn cleanup); +X509_STORE_CTX_cleanup_fn X509_STORE_get_cleanup(X509_STORE *ctx); + +#define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, l, p, newf, dupf, freef) +int X509_STORE_set_ex_data(X509_STORE *ctx, int idx, void *data); +void *X509_STORE_get_ex_data(X509_STORE *ctx, int idx); + +X509_STORE_CTX *X509_STORE_CTX_new(void); + +int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); + +void X509_STORE_CTX_free(X509_STORE_CTX *ctx); +int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, + X509 *x509, STACK_OF(X509) *chain); +void X509_STORE_CTX_set0_trusted_stack(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx); + +X509_STORE *X509_STORE_CTX_get0_store(X509_STORE_CTX *ctx); +X509 *X509_STORE_CTX_get0_cert(X509_STORE_CTX *ctx); +STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_untrusted(X509_STORE_CTX *ctx, STACK_OF(X509) *sk); +void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *ctx, + X509_STORE_CTX_verify_cb verify); +X509_STORE_CTX_verify_cb X509_STORE_CTX_get_verify_cb(X509_STORE_CTX *ctx); +X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(X509_STORE_CTX *ctx); +X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(X509_STORE_CTX *ctx); +X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(X509_STORE_CTX *ctx); +X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(X509_STORE_CTX *ctx); + +#if OPENSSL_API_COMPAT < 0x10100000L +# define X509_STORE_CTX_get_chain X509_STORE_CTX_get0_chain +# define X509_STORE_CTX_set_chain X509_STORE_CTX_set0_untrusted +# define X509_STORE_CTX_trusted_stack X509_STORE_CTX_set0_trusted_stack +# define X509_STORE_get_by_subject X509_STORE_CTX_get_by_subject +# define X509_STORE_get1_certs X509_STORE_CTX_get1_certs +# define X509_STORE_get1_crls X509_STORE_CTX_get1_crls +/* the following macro is misspelled; use X509_STORE_get1_certs instead */ +# define X509_STORE_get1_cert X509_STORE_CTX_get1_certs +/* the following macro is misspelled; use X509_STORE_get1_crls instead */ +# define X509_STORE_get1_crl X509_STORE_CTX_get1_crls +#endif + +X509_LOOKUP *X509_STORE_add_lookup(X509_STORE *v, X509_LOOKUP_METHOD *m); +X509_LOOKUP_METHOD *X509_LOOKUP_hash_dir(void); +X509_LOOKUP_METHOD *X509_LOOKUP_file(void); + +typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); +typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + X509_NAME *name, + ASN1_INTEGER *serial, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_fingerprint_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const unsigned char* bytes, + int len, + X509_OBJECT *ret); +typedef int (*X509_LOOKUP_get_by_alias_fn)(X509_LOOKUP *ctx, + X509_LOOKUP_TYPE type, + const char *str, + int len, + X509_OBJECT *ret); + +X509_LOOKUP_METHOD *X509_LOOKUP_meth_new(const char *name); +void X509_LOOKUP_meth_free(X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_new_item(X509_LOOKUP_METHOD *method, + int (*new_item) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_new_item(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_free(X509_LOOKUP_METHOD *method, + void (*free_fn) (X509_LOOKUP *ctx)); +void (*X509_LOOKUP_meth_get_free(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_init(X509_LOOKUP_METHOD *method, + int (*init) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_init(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_shutdown(X509_LOOKUP_METHOD *method, + int (*shutdown) (X509_LOOKUP *ctx)); +int (*X509_LOOKUP_meth_get_shutdown(const X509_LOOKUP_METHOD* method)) + (X509_LOOKUP *ctx); + +int X509_LOOKUP_meth_set_ctrl(X509_LOOKUP_METHOD *method, + X509_LOOKUP_ctrl_fn ctrl_fn); +X509_LOOKUP_ctrl_fn X509_LOOKUP_meth_get_ctrl(const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_subject(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_subject_fn fn); +X509_LOOKUP_get_by_subject_fn X509_LOOKUP_meth_get_get_by_subject( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_issuer_serial(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_issuer_serial_fn fn); +X509_LOOKUP_get_by_issuer_serial_fn X509_LOOKUP_meth_get_get_by_issuer_serial( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_fingerprint(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_fingerprint_fn fn); +X509_LOOKUP_get_by_fingerprint_fn X509_LOOKUP_meth_get_get_by_fingerprint( + const X509_LOOKUP_METHOD *method); + +int X509_LOOKUP_meth_set_get_by_alias(X509_LOOKUP_METHOD *method, + X509_LOOKUP_get_by_alias_fn fn); +X509_LOOKUP_get_by_alias_fn X509_LOOKUP_meth_get_get_by_alias( + const X509_LOOKUP_METHOD *method); + + +int X509_STORE_add_cert(X509_STORE *ctx, X509 *x); +int X509_STORE_add_crl(X509_STORE *ctx, X509_CRL *x); + +int X509_STORE_CTX_get_by_subject(X509_STORE_CTX *vs, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, + X509_LOOKUP_TYPE type, + X509_NAME *name); + +int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, + long argl, char **ret); + +int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_crl_file(X509_LOOKUP *ctx, const char *file, int type); +int X509_load_cert_crl_file(X509_LOOKUP *ctx, const char *file, int type); + +X509_LOOKUP *X509_LOOKUP_new(X509_LOOKUP_METHOD *method); +void X509_LOOKUP_free(X509_LOOKUP *ctx); +int X509_LOOKUP_init(X509_LOOKUP *ctx); +int X509_LOOKUP_by_subject(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, X509_OBJECT *ret); +int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + X509_NAME *name, ASN1_INTEGER *serial, + X509_OBJECT *ret); +int X509_LOOKUP_by_fingerprint(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const unsigned char *bytes, int len, + X509_OBJECT *ret); +int X509_LOOKUP_by_alias(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, + const char *str, int len, X509_OBJECT *ret); +int X509_LOOKUP_set_method_data(X509_LOOKUP *ctx, void *data); +void *X509_LOOKUP_get_method_data(const X509_LOOKUP *ctx); +X509_STORE *X509_LOOKUP_get_store(const X509_LOOKUP *ctx); +int X509_LOOKUP_shutdown(X509_LOOKUP *ctx); + +int X509_STORE_load_locations(X509_STORE *ctx, + const char *file, const char *dir); +int X509_STORE_set_default_paths(X509_STORE *ctx); + +#define X509_STORE_CTX_get_ex_new_index(l, p, newf, dupf, freef) \ + CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE_CTX, l, p, newf, dupf, freef) +int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *ctx, int idx, void *data); +void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *ctx, int idx); +int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); +int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); +X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); +X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx); +X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx); +X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get0_chain(X509_STORE_CTX *ctx); +STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set_cert(X509_STORE_CTX *c, X509 *x); +void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); +void X509_STORE_CTX_set0_crls(X509_STORE_CTX *c, STACK_OF(X509_CRL) *sk); +int X509_STORE_CTX_set_purpose(X509_STORE_CTX *ctx, int purpose); +int X509_STORE_CTX_set_trust(X509_STORE_CTX *ctx, int trust); +int X509_STORE_CTX_purpose_inherit(X509_STORE_CTX *ctx, int def_purpose, + int purpose, int trust); +void X509_STORE_CTX_set_flags(X509_STORE_CTX *ctx, unsigned long flags); +void X509_STORE_CTX_set_time(X509_STORE_CTX *ctx, unsigned long flags, + time_t t); + +X509_POLICY_TREE *X509_STORE_CTX_get0_policy_tree(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_explicit_policy(X509_STORE_CTX *ctx); +int X509_STORE_CTX_get_num_untrusted(X509_STORE_CTX *ctx); + +X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *ctx); +void X509_STORE_CTX_set0_param(X509_STORE_CTX *ctx, X509_VERIFY_PARAM *param); +int X509_STORE_CTX_set_default(X509_STORE_CTX *ctx, const char *name); + +/* + * Bridge opacity barrier between libcrypt and libssl, also needed to support + * offline testing in test/danetest.c + */ +void X509_STORE_CTX_set0_dane(X509_STORE_CTX *ctx, SSL_DANE *dane); +#define DANE_FLAG_NO_DANE_EE_NAMECHECKS (1L << 0) + +/* X509_VERIFY_PARAM functions */ + +X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void); +void X509_VERIFY_PARAM_free(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_inherit(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1(X509_VERIFY_PARAM *to, + const X509_VERIFY_PARAM *from); +int X509_VERIFY_PARAM_set1_name(X509_VERIFY_PARAM *param, const char *name); +int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *param, + unsigned long flags); +unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *param, int purpose); +int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *param, int trust); +void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *param, int depth); +void X509_VERIFY_PARAM_set_auth_level(X509_VERIFY_PARAM *param, int auth_level); +time_t X509_VERIFY_PARAM_get_time(const X509_VERIFY_PARAM *param); +void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *param, time_t t); +int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *param, + ASN1_OBJECT *policy); +int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *param, + STACK_OF(ASN1_OBJECT) *policies); + +int X509_VERIFY_PARAM_set_inh_flags(X509_VERIFY_PARAM *param, + uint32_t flags); +uint32_t X509_VERIFY_PARAM_get_inh_flags(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +int X509_VERIFY_PARAM_add1_host(X509_VERIFY_PARAM *param, + const char *name, size_t namelen); +void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *param, + unsigned int flags); +unsigned int X509_VERIFY_PARAM_get_hostflags(const X509_VERIFY_PARAM *param); +char *X509_VERIFY_PARAM_get0_peername(X509_VERIFY_PARAM *); +void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); +int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, + const char *email, size_t emaillen); +int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *param, + const unsigned char *ip, size_t iplen); +int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *param, + const char *ipasc); + +int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_auth_level(const X509_VERIFY_PARAM *param); +const char *X509_VERIFY_PARAM_get0_name(const X509_VERIFY_PARAM *param); + +int X509_VERIFY_PARAM_add0_table(X509_VERIFY_PARAM *param); +int X509_VERIFY_PARAM_get_count(void); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_get0(int id); +const X509_VERIFY_PARAM *X509_VERIFY_PARAM_lookup(const char *name); +void X509_VERIFY_PARAM_table_cleanup(void); + +/* Non positive return values are errors */ +#define X509_PCY_TREE_FAILURE -2 /* Failure to satisfy explicit policy */ +#define X509_PCY_TREE_INVALID -1 /* Inconsistent or invalid extensions */ +#define X509_PCY_TREE_INTERNAL 0 /* Internal error, most likely malloc */ + +/* + * Positive return values form a bit mask, all but the first are internal to + * the library and don't appear in results from X509_policy_check(). + */ +#define X509_PCY_TREE_VALID 1 /* The policy tree is valid */ +#define X509_PCY_TREE_EMPTY 2 /* The policy tree is empty */ +#define X509_PCY_TREE_EXPLICIT 4 /* Explicit policy required */ + +int X509_policy_check(X509_POLICY_TREE **ptree, int *pexplicit_policy, + STACK_OF(X509) *certs, + STACK_OF(ASN1_OBJECT) *policy_oids, unsigned int flags); + +void X509_policy_tree_free(X509_POLICY_TREE *tree); + +int X509_policy_tree_level_count(const X509_POLICY_TREE *tree); +X509_POLICY_LEVEL *X509_policy_tree_get0_level(const X509_POLICY_TREE *tree, + int i); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_policies(const + X509_POLICY_TREE + *tree); + +STACK_OF(X509_POLICY_NODE) *X509_policy_tree_get0_user_policies(const + X509_POLICY_TREE + *tree); + +int X509_policy_level_node_count(X509_POLICY_LEVEL *level); + +X509_POLICY_NODE *X509_policy_level_get0_node(X509_POLICY_LEVEL *level, + int i); + +const ASN1_OBJECT *X509_policy_node_get0_policy(const X509_POLICY_NODE *node); + +STACK_OF(POLICYQUALINFO) *X509_policy_node_get0_qualifiers(const + X509_POLICY_NODE + *node); +const X509_POLICY_NODE *X509_policy_node_get0_parent(const X509_POLICY_NODE + *node); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/openssl/openssl/x509err.h b/include/openssl/openssl/x509err.h new file mode 100644 index 00000000..cd08673f --- /dev/null +++ b/include/openssl/openssl/x509err.h @@ -0,0 +1,129 @@ +/* + * Generated by util/mkerr.pl DO NOT EDIT + * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the OpenSSL license (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +#ifndef HEADER_X509ERR_H +# define HEADER_X509ERR_H + +# include + +# ifdef __cplusplus +extern "C" +# endif +int ERR_load_X509_strings(void); + +/* + * X509 function codes. + */ +# define X509_F_ADD_CERT_DIR 100 +# define X509_F_BUILD_CHAIN 106 +# define X509_F_BY_FILE_CTRL 101 +# define X509_F_CHECK_NAME_CONSTRAINTS 149 +# define X509_F_CHECK_POLICY 145 +# define X509_F_DANE_I2D 107 +# define X509_F_DIR_CTRL 102 +# define X509_F_GET_CERT_BY_SUBJECT 103 +# define X509_F_I2D_X509_AUX 151 +# define X509_F_LOOKUP_CERTS_SK 152 +# define X509_F_NETSCAPE_SPKI_B64_DECODE 129 +# define X509_F_NETSCAPE_SPKI_B64_ENCODE 130 +# define X509_F_NEW_DIR 153 +# define X509_F_X509AT_ADD1_ATTR 135 +# define X509_F_X509V3_ADD_EXT 104 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_NID 136 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_OBJ 137 +# define X509_F_X509_ATTRIBUTE_CREATE_BY_TXT 140 +# define X509_F_X509_ATTRIBUTE_GET0_DATA 139 +# define X509_F_X509_ATTRIBUTE_SET1_DATA 138 +# define X509_F_X509_CHECK_PRIVATE_KEY 128 +# define X509_F_X509_CRL_DIFF 105 +# define X509_F_X509_CRL_METHOD_NEW 154 +# define X509_F_X509_CRL_PRINT_FP 147 +# define X509_F_X509_EXTENSION_CREATE_BY_NID 108 +# define X509_F_X509_EXTENSION_CREATE_BY_OBJ 109 +# define X509_F_X509_GET_PUBKEY_PARAMETERS 110 +# define X509_F_X509_LOAD_CERT_CRL_FILE 132 +# define X509_F_X509_LOAD_CERT_FILE 111 +# define X509_F_X509_LOAD_CRL_FILE 112 +# define X509_F_X509_LOOKUP_METH_NEW 160 +# define X509_F_X509_LOOKUP_NEW 155 +# define X509_F_X509_NAME_ADD_ENTRY 113 +# define X509_F_X509_NAME_CANON 156 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_NID 114 +# define X509_F_X509_NAME_ENTRY_CREATE_BY_TXT 131 +# define X509_F_X509_NAME_ENTRY_SET_OBJECT 115 +# define X509_F_X509_NAME_ONELINE 116 +# define X509_F_X509_NAME_PRINT 117 +# define X509_F_X509_OBJECT_NEW 150 +# define X509_F_X509_PRINT_EX_FP 118 +# define X509_F_X509_PUBKEY_DECODE 148 +# define X509_F_X509_PUBKEY_GET 161 +# define X509_F_X509_PUBKEY_GET0 119 +# define X509_F_X509_PUBKEY_SET 120 +# define X509_F_X509_REQ_CHECK_PRIVATE_KEY 144 +# define X509_F_X509_REQ_PRINT_EX 121 +# define X509_F_X509_REQ_PRINT_FP 122 +# define X509_F_X509_REQ_TO_X509 123 +# define X509_F_X509_STORE_ADD_CERT 124 +# define X509_F_X509_STORE_ADD_CRL 125 +# define X509_F_X509_STORE_ADD_LOOKUP 157 +# define X509_F_X509_STORE_CTX_GET1_ISSUER 146 +# define X509_F_X509_STORE_CTX_INIT 143 +# define X509_F_X509_STORE_CTX_NEW 142 +# define X509_F_X509_STORE_CTX_PURPOSE_INHERIT 134 +# define X509_F_X509_STORE_NEW 158 +# define X509_F_X509_TO_X509_REQ 126 +# define X509_F_X509_TRUST_ADD 133 +# define X509_F_X509_TRUST_SET 141 +# define X509_F_X509_VERIFY_CERT 127 +# define X509_F_X509_VERIFY_PARAM_NEW 159 + +/* + * X509 reason codes. + */ +# define X509_R_AKID_MISMATCH 110 +# define X509_R_BAD_SELECTOR 133 +# define X509_R_BAD_X509_FILETYPE 100 +# define X509_R_BASE64_DECODE_ERROR 118 +# define X509_R_CANT_CHECK_DH_KEY 114 +# define X509_R_CERT_ALREADY_IN_HASH_TABLE 101 +# define X509_R_CRL_ALREADY_DELTA 127 +# define X509_R_CRL_VERIFY_FAILURE 131 +# define X509_R_IDP_MISMATCH 128 +# define X509_R_INVALID_ATTRIBUTES 138 +# define X509_R_INVALID_DIRECTORY 113 +# define X509_R_INVALID_FIELD_NAME 119 +# define X509_R_INVALID_TRUST 123 +# define X509_R_ISSUER_MISMATCH 129 +# define X509_R_KEY_TYPE_MISMATCH 115 +# define X509_R_KEY_VALUES_MISMATCH 116 +# define X509_R_LOADING_CERT_DIR 103 +# define X509_R_LOADING_DEFAULTS 104 +# define X509_R_METHOD_NOT_SUPPORTED 124 +# define X509_R_NAME_TOO_LONG 134 +# define X509_R_NEWER_CRL_NOT_NEWER 132 +# define X509_R_NO_CERTIFICATE_FOUND 135 +# define X509_R_NO_CERTIFICATE_OR_CRL_FOUND 136 +# define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 +# define X509_R_NO_CRL_FOUND 137 +# define X509_R_NO_CRL_NUMBER 130 +# define X509_R_PUBLIC_KEY_DECODE_ERROR 125 +# define X509_R_PUBLIC_KEY_ENCODE_ERROR 126 +# define X509_R_SHOULD_RETRY 106 +# define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 +# define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 +# define X509_R_UNKNOWN_KEY_TYPE 117 +# define X509_R_UNKNOWN_NID 109 +# define X509_R_UNKNOWN_PURPOSE_ID 121 +# define X509_R_UNKNOWN_TRUST_ID 120 +# define X509_R_UNSUPPORTED_ALGORITHM 111 +# define X509_R_WRONG_LOOKUP_TYPE 112 +# define X509_R_WRONG_TYPE 122 + +#endif diff --git a/lib/ArkApi.lib b/lib/ArkApi.lib deleted file mode 100644 index f009be2b..00000000 Binary files a/lib/ArkApi.lib and /dev/null differ diff --git a/lib/PocoCryptomd.lib b/lib/PocoCryptomd.lib new file mode 100644 index 00000000..35c49d63 Binary files /dev/null and b/lib/PocoCryptomd.lib differ diff --git a/lib/PocoFoundationmd.lib b/lib/PocoFoundationmd.lib new file mode 100644 index 00000000..cd7de8c2 Binary files /dev/null and b/lib/PocoFoundationmd.lib differ diff --git a/lib/PocoNetSSLmd.lib b/lib/PocoNetSSLmd.lib new file mode 100644 index 00000000..e32a357e Binary files /dev/null and b/lib/PocoNetSSLmd.lib differ diff --git a/lib/PocoNetmd.lib b/lib/PocoNetmd.lib new file mode 100644 index 00000000..0bf105b7 Binary files /dev/null and b/lib/PocoNetmd.lib differ diff --git a/lib/PocoUtilmd.lib b/lib/PocoUtilmd.lib new file mode 100644 index 00000000..d8c536d2 Binary files /dev/null and b/lib/PocoUtilmd.lib differ diff --git a/lib/libMinHook.x64.lib b/lib/libMinHook.x64.lib index d74ebe60..544ebcd0 100644 Binary files a/lib/libMinHook.x64.lib and b/lib/libMinHook.x64.lib differ diff --git a/lib/libcrypto.lib b/lib/libcrypto.lib new file mode 100644 index 00000000..1c447e23 Binary files /dev/null and b/lib/libcrypto.lib differ diff --git a/lib/libeay32.lib b/lib/libeay32.lib new file mode 100644 index 00000000..fc8e33e3 Binary files /dev/null and b/lib/libeay32.lib differ diff --git a/lib/libssl.lib b/lib/libssl.lib new file mode 100644 index 00000000..0c1dd3ec Binary files /dev/null and b/lib/libssl.lib differ diff --git a/lib/ssleay32.lib b/lib/ssleay32.lib new file mode 100644 index 00000000..e012d8fd Binary files /dev/null and b/lib/ssleay32.lib differ diff --git a/out_lib/ArkApi.lib b/out_lib/ArkApi.lib new file mode 100644 index 00000000..3a5209c7 Binary files /dev/null and b/out_lib/ArkApi.lib differ diff --git a/out_lib/AtlasApi.lib b/out_lib/AtlasApi.lib new file mode 100644 index 00000000..5a56c020 Binary files /dev/null and b/out_lib/AtlasApi.lib differ diff --git a/version.sln b/version.sln index 11b77029..f7fd565d 100644 --- a/version.sln +++ b/version.sln @@ -7,11 +7,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "version", "version\version. EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Release|x64 = Release|x64 + Ark|x64 = Ark|x64 + Atlas|x64 = Atlas|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3941E9F8-2E29-4D69-8717-F74562ED5301}.Release|x64.ActiveCfg = Release|x64 - {3941E9F8-2E29-4D69-8717-F74562ED5301}.Release|x64.Build.0 = Release|x64 + {3941E9F8-2E29-4D69-8717-F74562ED5301}.Ark|x64.ActiveCfg = Ark|x64 + {3941E9F8-2E29-4D69-8717-F74562ED5301}.Ark|x64.Build.0 = Ark|x64 + {3941E9F8-2E29-4D69-8717-F74562ED5301}.Atlas|x64.ActiveCfg = Atlas|x64 + {3941E9F8-2E29-4D69-8717-F74562ED5301}.Atlas|x64.Build.0 = Atlas|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/version/Core/Private/ApiUtils.cpp b/version/Core/Private/ApiUtils.cpp deleted file mode 100644 index 02b64487..00000000 --- a/version/Core/Private/ApiUtils.cpp +++ /dev/null @@ -1,52 +0,0 @@ -#include "ApiUtils.h" - -namespace ArkApi -{ - ApiUtils& ApiUtils::Get() - { - static ApiUtils instance; - return instance; - } - - // UWorld - - void ApiUtils::SetWorld(UWorld* uworld) - { - u_world_ = uworld; - } - - UWorld* ApiUtils::GetWorld() const - { - return u_world_; - } - - // AShooterGameMode - - void ApiUtils::SetShooterGameMode(AShooterGameMode* shooter_game_mode) - { - shooter_game_mode_ = shooter_game_mode; - } - - AShooterGameMode* ApiUtils::GetShooterGameMode() const - { - return shooter_game_mode_; - } - - // Status - - void ApiUtils::SetStatus(ServerStatus status) - { - status_ = status; - } - - ServerStatus ApiUtils::GetStatus() const - { - return status_; - } - - // Free function - IApiUtils& GetApiUtils() - { - return ApiUtils::Get(); - } -} diff --git a/version/Core/Private/ApiUtils.h b/version/Core/Private/ApiUtils.h deleted file mode 100644 index 39ca44df..00000000 --- a/version/Core/Private/ApiUtils.h +++ /dev/null @@ -1,38 +0,0 @@ -#pragma once - -#include - -namespace ArkApi -{ - class ApiUtils : public IApiUtils - { - public: - static ApiUtils& Get(); - - ApiUtils(const ApiUtils&) = delete; - ApiUtils(ApiUtils&&) = delete; - ApiUtils& operator=(const ApiUtils&) = delete; - ApiUtils& operator=(ApiUtils&&) = delete; - - UWorld* GetWorld() const override; - AShooterGameMode* GetShooterGameMode() const override; - ServerStatus GetStatus() const override; - - void SetWorld(UWorld* uworld); - void SetShooterGameMode(AShooterGameMode* shooter_game_mode); - void SetStatus(ServerStatus status); - - private: - ApiUtils() - : u_world_(nullptr), - shooter_game_mode_(nullptr) - { - } - - ~ApiUtils() = default; - - UWorld* u_world_; - AShooterGameMode* shooter_game_mode_; - ServerStatus status_; - }; -} diff --git a/version/Core/Private/Ark/ApiUtils.cpp b/version/Core/Private/Ark/ApiUtils.cpp new file mode 100644 index 00000000..5cfe31e5 --- /dev/null +++ b/version/Core/Private/Ark/ApiUtils.cpp @@ -0,0 +1,103 @@ +#include "ApiUtils.h" + +#include "../IBaseApi.h" + +namespace ArkApi +{ + // UWorld + + void ApiUtils::SetWorld(UWorld* uworld) + { + u_world_ = uworld; + } + + UWorld* ApiUtils::GetWorld() const + { + return u_world_; + } + + // AShooterGameMode + + void ApiUtils::SetShooterGameMode(AShooterGameMode* shooter_game_mode) + { + shooter_game_mode_ = shooter_game_mode; + } + + AShooterGameMode* ApiUtils::GetShooterGameMode() const + { + return shooter_game_mode_; + } + + // Status + + void ApiUtils::SetStatus(ServerStatus status) + { + status_ = status; + } + + ServerStatus ApiUtils::GetStatus() const + { + return status_; + } + + // Cheat Manager + void ApiUtils::SetCheatManager(UShooterCheatManager* cheatmanager) + { + cheatmanager_ = cheatmanager; + } + + void ApiUtils::SetPlayerController(AShooterPlayerController* player_controller) + { + if (!player_controller) + return; + + const uint64 steam_id = ArkApi::IApiUtils::GetSteamIdFromController(player_controller); + + if (steam_id != 0) + { + steam_id_map_[steam_id] = player_controller; + } + } + + void ApiUtils::RemovePlayerController(AShooterPlayerController* player_controller) + { + if (!player_controller) + return; + + const uint64 steam_id = ArkApi::IApiUtils::GetSteamIdFromController(player_controller); + + if (steam_id != 0) + { + steam_id_map_.erase(steam_id); + } + } + + AShooterPlayerController* ApiUtils::FindPlayerFromSteamId_Internal(uint64 steam_id) const + { + AShooterPlayerController* found_player = nullptr; + + if (steam_id == 0) + return found_player; + + auto iter = steam_id_map_.find(steam_id); + + if (iter != steam_id_map_.end() + && iter->first == steam_id) + { + found_player = iter->second; + } + + return found_player; + } + + UShooterCheatManager* ApiUtils::GetCheatManager() const + { + return cheatmanager_; + } + + // Free function + IApiUtils& GetApiUtils() + { + return *API::game_api->GetApiUtils(); + } +} // namespace ArkApi \ No newline at end of file diff --git a/version/Core/Private/Ark/ApiUtils.h b/version/Core/Private/Ark/ApiUtils.h new file mode 100644 index 00000000..0c01ce84 --- /dev/null +++ b/version/Core/Private/Ark/ApiUtils.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +namespace ArkApi +{ + class ApiUtils : public IApiUtils + { + public: + ApiUtils() = default; + + ApiUtils(const ApiUtils&) = delete; + ApiUtils(ApiUtils&&) = delete; + ApiUtils& operator=(const ApiUtils&) = delete; + ApiUtils& operator=(ApiUtils&&) = delete; + + ~ApiUtils() override = default; + + UWorld* GetWorld() const override; + AShooterGameMode* GetShooterGameMode() const override; + ServerStatus GetStatus() const override; + UShooterCheatManager* GetCheatManager() const override; + + void SetWorld(UWorld* uworld); + void SetShooterGameMode(AShooterGameMode* shooter_game_mode); + void SetStatus(ServerStatus status); + void SetCheatManager(UShooterCheatManager* cheatmanager); + + AShooterPlayerController* FindPlayerFromSteamId_Internal(uint64 steam_id) const override; + void SetPlayerController(AShooterPlayerController* player_controller); + void RemovePlayerController(AShooterPlayerController* player_controller); + + private: + UWorld* u_world_{nullptr}; + AShooterGameMode* shooter_game_mode_{nullptr}; + ServerStatus status_{0}; + UShooterCheatManager* cheatmanager_{ nullptr }; + std::unordered_map steam_id_map_; + }; +} // namespace ArkApi diff --git a/version/Core/Private/Ark/ArkBaseApi.cpp b/version/Core/Private/Ark/ArkBaseApi.cpp new file mode 100644 index 00000000..7815f156 --- /dev/null +++ b/version/Core/Private/Ark/ArkBaseApi.cpp @@ -0,0 +1,175 @@ +#include "ArkBaseApi.h" + +#include + +#include + +#include "API/UE/Math/ColorList.h" +#include "../Offsets.h" +#include "../PDBReader/PDBReader.h" +#include "../PluginManager/PluginManager.h" +#include "../Hooks.h" +#include "../Commands.h" +#include "Logger/Logger.h" +#include "HooksImpl.h" +#include "ApiUtils.h" + +namespace API +{ + constexpr float api_version = 3.55f; + + ArkBaseApi::ArkBaseApi() + : commands_(std::make_unique()), + hooks_(std::make_unique()), + api_utils_(std::make_unique()) + { + } + + bool ArkBaseApi::Init() + { + Log::GetLog()->info("-----------------------------------------------"); + Log::GetLog()->info("ARK: Server Api V{:.2f}", GetVersion()); + Log::GetLog()->info("Loading...\n"); + + PdbReader pdb_reader; + + std::unordered_map offsets_dump; + std::unordered_map bitfields_dump; + + try + { + const std::string current_dir = Tools::GetCurrentDir(); + + const std::wstring dir = Tools::Utf8Decode(current_dir); + pdb_reader.Read(dir + L"/ShooterGameServer.pdb", &offsets_dump, &bitfields_dump); + } + catch (const std::exception& error) + { + Log::GetLog()->critical("Failed to read pdb - {}", error.what()); + return false; + } + + Offsets::Get().Init(move(offsets_dump), move(bitfields_dump)); + + ArkApi::InitHooks(); + + Log::GetLog()->info("API was successfully loaded"); + Log::GetLog()->info("-----------------------------------------------\n"); + + return true; + } + + float ArkBaseApi::GetVersion() + { + return api_version; + } + + std::string ArkBaseApi::GetApiName() + { + return "ArkApi"; + } + + std::unique_ptr& ArkBaseApi::GetCommands() + { + return commands_; + } + + std::unique_ptr& ArkBaseApi::GetHooks() + { + return hooks_; + } + + std::unique_ptr& ArkBaseApi::GetApiUtils() + { + return api_utils_; + } + + void ArkBaseApi::RegisterCommands() + { + GetCommands()->AddConsoleCommand("plugins.load", &LoadPluginCmd); + GetCommands()->AddConsoleCommand("plugins.unload", &UnloadPluginCmd); + GetCommands()->AddRconCommand("plugins.load", &LoadPluginRcon); + GetCommands()->AddRconCommand("plugins.unload", &UnloadPluginRcon); + } + + FString ArkBaseApi::LoadPlugin(FString* cmd) + { + TArray parsed; + cmd->ParseIntoArray(parsed, L" ", true); + + if (parsed.IsValidIndex(1)) + { + const std::string plugin_name = parsed[1].ToString(); + + try + { + PluginManager::Get().LoadPlugin(plugin_name); + } + catch (const std::exception& error) + { + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); + return FString::Format("Failed to load plugin - {}", error.what()); + } + + Log::GetLog()->info("Loaded plugin - {}", plugin_name.c_str()); + + return "Successfully loaded plugin"; + } + + return "Plugin not found"; + } + + FString ArkBaseApi::UnloadPlugin(FString* cmd) + { + TArray parsed; + cmd->ParseIntoArray(parsed, L" ", true); + + if (parsed.IsValidIndex(1)) + { + const std::string plugin_name = parsed[1].ToString(); + + try + { + PluginManager::Get().UnloadPlugin(plugin_name); + } + catch (const std::exception& error) + { + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); + return *FString::Format("Failed to unload plugin - {}", error.what()); + } + + Log::GetLog()->info("Unloaded plugin - {}", plugin_name.c_str()); + + return L"Successfully unloaded plugin"; + } + + return L"Plugin not found"; + } + + // Command Callbacks + void ArkBaseApi::LoadPluginCmd(APlayerController* player_controller, FString* cmd, bool /*unused*/) + { + auto* shooter_controller = static_cast(player_controller); + ArkApi::GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, *LoadPlugin(cmd)); + } + + void ArkBaseApi::UnloadPluginCmd(APlayerController* player_controller, FString* cmd, bool /*unused*/) + { + auto* shooter_controller = static_cast(player_controller); + ArkApi::GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, *UnloadPlugin(cmd)); + } + + // RCON Command Callbacks + void ArkBaseApi::LoadPluginRcon(RCONClientConnection* rcon_connection, RCONPacket* rcon_packet, UWorld* /*unused*/) + { + FString reply = LoadPlugin(&rcon_packet->Body); + rcon_connection->SendMessageW(rcon_packet->Id, 0, &reply); + } + + void ArkBaseApi::UnloadPluginRcon(RCONClientConnection* rcon_connection, RCONPacket* rcon_packet, + UWorld* /*unused*/) + { + FString reply = UnloadPlugin(&rcon_packet->Body); + rcon_connection->SendMessageW(rcon_packet->Id, 0, &reply); + } +} // namespace API \ No newline at end of file diff --git a/version/Core/Private/Ark/ArkBaseApi.h b/version/Core/Private/Ark/ArkBaseApi.h new file mode 100644 index 00000000..511b69e6 --- /dev/null +++ b/version/Core/Private/Ark/ArkBaseApi.h @@ -0,0 +1,41 @@ +#pragma once + +#include "../IBaseApi.h" + +#include + +namespace API +{ + class ArkBaseApi : public IBaseApi + { + public: + ArkBaseApi(); + ~ArkBaseApi() override = default; + + bool Init() override; + float GetVersion() override; + std::string GetApiName() override; + void RegisterCommands() override; + + std::unique_ptr& GetCommands() override; + std::unique_ptr& GetHooks() override; + std::unique_ptr& GetApiUtils() override; + + private: + // Callbacks + static FString LoadPlugin(FString* cmd); + static FString UnloadPlugin(FString* cmd); + + static void LoadPluginCmd(APlayerController* /*player_controller*/, FString* /*cmd*/, bool /*unused*/); + static void UnloadPluginCmd(APlayerController* /*player_controller*/, FString* /*cmd*/, bool /*unused*/); + + static void LoadPluginRcon(RCONClientConnection* /*rcon_connection*/, RCONPacket* /*rcon_packet*/, + UWorld* /*unused*/); + static void UnloadPluginRcon(RCONClientConnection* /*rcon_connection*/, RCONPacket* /*rcon_packet*/, + UWorld* /*unused*/); + + std::unique_ptr commands_; + std::unique_ptr hooks_; + std::unique_ptr api_utils_; + }; +} // namespace API diff --git a/version/Core/Private/Ark/Globals.h b/version/Core/Private/Ark/Globals.h new file mode 100644 index 00000000..14774928 --- /dev/null +++ b/version/Core/Private/Ark/Globals.h @@ -0,0 +1,3 @@ +#pragma once + +inline bool HideCommand = false; \ No newline at end of file diff --git a/version/Core/Private/Ark/HooksImpl.cpp b/version/Core/Private/Ark/HooksImpl.cpp new file mode 100644 index 00000000..d6d62dec --- /dev/null +++ b/version/Core/Private/Ark/HooksImpl.cpp @@ -0,0 +1,212 @@ +#include "HooksImpl.h" + +#include "ApiUtils.h" +#include "../Commands.h" +#include "../Hooks.h" +#include "../PluginManager/PluginManager.h" +#include "../IBaseApi.h" +#include <../Private/Ark/Globals.h> + +#include + +namespace ArkApi +{ + // Hooks declaration + DECLARE_HOOK(UEngine_Init, void, DWORD64, DWORD64); + DECLARE_HOOK(UWorld_InitWorld, void, UWorld*, DWORD64); + DECLARE_HOOK(UWorld_Tick, void, DWORD64, DWORD64, float); + DECLARE_HOOK(AShooterGameMode_InitGame, void, AShooterGameMode*, FString*, FString*, FString*); + DECLARE_HOOK(AShooterPlayerController_ServerSendChatMessage_Impl, void, AShooterPlayerController*, FString*, + EChatSendMode::Type); + DECLARE_HOOK(APlayerController_ConsoleCommand, FString*, APlayerController*, FString*, FString*, bool); + DECLARE_HOOK(AShooterPlayerController_ConsoleCommand, FString*, AShooterPlayerController*, FString*, FString*, bool); + DECLARE_HOOK(RCONClientConnection_ProcessRCONPacket, void, RCONClientConnection*, RCONPacket*, UWorld*); + DECLARE_HOOK(AGameState_DefaultTimer, void, AGameState*); + DECLARE_HOOK(AShooterGameMode_BeginPlay, void, AShooterGameMode*); + DECLARE_HOOK(URCONServer_Init, bool, URCONServer*, FString, int, UShooterCheatManager*); + DECLARE_HOOK(APlayerController_ServerReceivedPlayerControllerAck_Implementation, void, APlayerController*); + DECLARE_HOOK(AShooterPlayerController_Possess, void, AShooterPlayerController*, APawn*); + DECLARE_HOOK(AShooterGameMode_Logout, void, AShooterGameMode*, AController*); + + void InitHooks() + { + auto& hooks = API::game_api->GetHooks(); + + hooks->SetHook("UEngine.Init", &Hook_UEngine_Init, &UEngine_Init_original); + hooks->SetHook("UWorld.InitWorld", &Hook_UWorld_InitWorld, &UWorld_InitWorld_original); + hooks->SetHook("UWorld.Tick", &Hook_UWorld_Tick, &UWorld_Tick_original); + hooks->SetHook("AShooterGameMode.InitGame", &Hook_AShooterGameMode_InitGame, + &AShooterGameMode_InitGame_original); + hooks->SetHook("AShooterPlayerController.ServerSendChatMessage_Implementation", + &Hook_AShooterPlayerController_ServerSendChatMessage_Impl, + &AShooterPlayerController_ServerSendChatMessage_Impl_original); + hooks->SetHook("APlayerController.ConsoleCommand", &Hook_APlayerController_ConsoleCommand, + &APlayerController_ConsoleCommand_original); + hooks->SetHook("AShooterPlayerController.ConsoleCommand", &Hook_AShooterPlayerController_ConsoleCommand, + &AShooterPlayerController_ConsoleCommand_original); + hooks->SetHook("RCONClientConnection.ProcessRCONPacket", &Hook_RCONClientConnection_ProcessRCONPacket, + &RCONClientConnection_ProcessRCONPacket_original); + hooks->SetHook("AGameState.DefaultTimer", &Hook_AGameState_DefaultTimer, &AGameState_DefaultTimer_original); + hooks->SetHook("AShooterGameMode.BeginPlay", &Hook_AShooterGameMode_BeginPlay, + &AShooterGameMode_BeginPlay_original); + hooks->SetHook("URCONServer.Init", &Hook_URCONServer_Init, &URCONServer_Init_original); + hooks->SetHook("APlayerController.ServerReceivedPlayerControllerAck_Implementation", &Hook_APlayerController_ServerReceivedPlayerControllerAck_Implementation, + &APlayerController_ServerReceivedPlayerControllerAck_Implementation_original); + hooks->SetHook("AShooterPlayerController.Possess", &Hook_AShooterPlayerController_Possess, + &AShooterPlayerController_Possess_original); + hooks->SetHook("AShooterGameMode.Logout", &Hook_AShooterGameMode_Logout, &AShooterGameMode_Logout_original); + + Log::GetLog()->info("Initialized hooks\n"); + } + + // Hooks + + void Hook_UEngine_Init(DWORD64 _this, DWORD64 InEngineLoop) + { + UEngine_Init_original(_this, InEngineLoop); + + Log::GetLog()->info("UGameEngine::Init was called"); + Log::GetLog()->info("Loading plugins..\n"); + + API::PluginManager::Get().LoadAllPlugins(); + + dynamic_cast(*API::game_api).RegisterCommands(); + } + + void Hook_UWorld_InitWorld(UWorld* world, DWORD64 ivs) + { + Log::GetLog()->info("UWorld::InitWorld was called"); + + dynamic_cast(*API::game_api->GetApiUtils()).SetWorld(world); + + UWorld_InitWorld_original(world, ivs); + } + + void Hook_UWorld_Tick(DWORD64 world, DWORD64 tick_type, float delta_seconds) + { + Commands* command = dynamic_cast(API::game_api->GetCommands().get()); + if (command) + { + command->CheckOnTickCallbacks(delta_seconds); + } + + UWorld_Tick_original(world, tick_type, delta_seconds); + } + + void Hook_AShooterGameMode_InitGame(AShooterGameMode* a_shooter_game_mode, FString* map_name, FString* options, + FString* error_message) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetShooterGameMode(a_shooter_game_mode); + + AShooterGameMode_InitGame_original(a_shooter_game_mode, map_name, options, error_message); + } + + void Hook_AShooterPlayerController_ServerSendChatMessage_Impl( + AShooterPlayerController* player_controller, FString* message, EChatSendMode::Type mode) + { + const long double last_chat_time = player_controller->LastChatMessageTimeField(); + const long double now_time = ArkApi::GetApiUtils().GetWorld()->TimeSecondsField(); + + const auto spam_check = now_time - last_chat_time < 1.0; + if (last_chat_time > 0 && spam_check) + { + return; + } + + player_controller->LastChatMessageTimeField() = now_time; + + const auto command_executed = dynamic_cast(*API::game_api->GetCommands()). + CheckChatCommands(player_controller, message, mode); + + const auto prevent_default = dynamic_cast(*API::game_api->GetCommands()). + CheckOnChatMessageCallbacks(player_controller, message, mode, spam_check, command_executed); + + if (command_executed || prevent_default) + { + return; + } + + AShooterPlayerController_ServerSendChatMessage_Impl_original(player_controller, message, mode); + } + + FString* Hook_APlayerController_ConsoleCommand(APlayerController* a_player_controller, FString* result, + FString* cmd, bool write_to_log) + { + dynamic_cast(*API::game_api->GetCommands()).CheckConsoleCommands( + a_player_controller, cmd, write_to_log); + + return APlayerController_ConsoleCommand_original(a_player_controller, result, cmd, write_to_log); + } + + FString* Hook_AShooterPlayerController_ConsoleCommand(AShooterPlayerController* _this, FString* result, FString* Command, bool bWriteToLog) + { + if (HideCommand) + return ((APlayerController*)_this)->ConsoleCommand(result, Command, false); + else + return AShooterPlayerController_ConsoleCommand_original(_this, result, Command, bWriteToLog); + } + + void Hook_RCONClientConnection_ProcessRCONPacket(RCONClientConnection* _this, RCONPacket* packet, + UWorld* in_world) + { + if (_this->IsAuthenticatedField()) + { + dynamic_cast(*API::game_api->GetCommands()).CheckRconCommands(_this, packet, in_world); + } + + RCONClientConnection_ProcessRCONPacket_original(_this, packet, in_world); + } + + void Hook_AGameState_DefaultTimer(AGameState* _this) + { + Commands* command = dynamic_cast(API::game_api->GetCommands().get()); + if (command) + { + command->CheckOnTimerCallbacks(); + } + + API::PluginManager::DetectPluginChangesTimerCallback(); // We call this here to avoid UnknownModule crashes + + AGameState_DefaultTimer_original(_this); + } + + void Hook_AShooterGameMode_BeginPlay(AShooterGameMode* _AShooterGameMode) + { + AShooterGameMode_BeginPlay_original(_AShooterGameMode); + + dynamic_cast(*API::game_api->GetApiUtils()).SetStatus(ServerStatus::Ready); + } + + bool Hook_URCONServer_Init(URCONServer* _this, FString Password, int InPort, UShooterCheatManager* SCheatManager) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetCheatManager(SCheatManager); + + return URCONServer_Init_original(_this, Password, InPort, SCheatManager); + } + + void Hook_APlayerController_ServerReceivedPlayerControllerAck_Implementation(APlayerController* _this) + { + APlayerController_ServerReceivedPlayerControllerAck_Implementation_original(_this); + + if (_this) + { + AShooterPlayerController* ASPC = static_cast(_this); + dynamic_cast(*API::game_api->GetApiUtils()).SetPlayerController(ASPC); + } + } + + void Hook_AShooterPlayerController_Possess(AShooterPlayerController* _this, APawn* inPawn) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetPlayerController(_this); + + AShooterPlayerController_Possess_original(_this, inPawn); + } + + void Hook_AShooterGameMode_Logout(AShooterGameMode* _this, AController* Exiting) + { + AShooterPlayerController* Exiting_SPC = static_cast(Exiting); + dynamic_cast(*API::game_api->GetApiUtils()).RemovePlayerController(Exiting_SPC); + + AShooterGameMode_Logout_original(_this, Exiting); + } +} // namespace ArkApi \ No newline at end of file diff --git a/version/Core/Private/HooksImpl.h b/version/Core/Private/Ark/HooksImpl.h similarity index 70% rename from version/Core/Private/HooksImpl.h rename to version/Core/Private/Ark/HooksImpl.h index 41532f20..cf149ba7 100644 --- a/version/Core/Private/HooksImpl.h +++ b/version/Core/Private/Ark/HooksImpl.h @@ -3,4 +3,4 @@ namespace ArkApi { void InitHooks(); -} +} // namespace ArkApi diff --git a/version/Core/Private/Atlas/ApiUtils.cpp b/version/Core/Private/Atlas/ApiUtils.cpp new file mode 100644 index 00000000..3e9eb4da --- /dev/null +++ b/version/Core/Private/Atlas/ApiUtils.cpp @@ -0,0 +1,102 @@ +#include "ApiUtils.h" + +#include "../IBaseApi.h" + +namespace AtlasApi +{ + // UWorld + + void ApiUtils::SetWorld(UWorld* uworld) + { + u_world_ = uworld; + } + + UWorld* ApiUtils::GetWorld() const + { + return u_world_; + } + + // AShooterGameMode + + void ApiUtils::SetShooterGameMode(AShooterGameMode* shooter_game_mode) + { + shooter_game_mode_ = shooter_game_mode; + } + + AShooterGameMode* ApiUtils::GetShooterGameMode() const + { + return shooter_game_mode_; + } + + // Status + + void ApiUtils::SetStatus(ArkApi::ServerStatus status) + { + status_ = status; + } + + ArkApi::ServerStatus ApiUtils::GetStatus() const + { + return status_; + } + + void ApiUtils::SetCheatManager(UShooterCheatManager* cheatmanager) + { + cheatmanager_ = cheatmanager; + } + + UShooterCheatManager* ApiUtils::GetCheatManager() const + { + return cheatmanager_; + } + + void ApiUtils::SetPlayerController(AShooterPlayerController* player_controller) + { + if (!player_controller) + return; + + const uint64 steam_id = ArkApi::IApiUtils::GetSteamIdFromController(player_controller); + + if (steam_id != 0) + { + steam_id_map_[steam_id] = player_controller; + } + } + + void ApiUtils::RemovePlayerController(AShooterPlayerController* player_controller) + { + if (!player_controller) + return; + + const uint64 steam_id = ArkApi::IApiUtils::GetSteamIdFromController(player_controller); + + if (steam_id != 0) + { + steam_id_map_.erase(steam_id); + } + } + + AShooterPlayerController* ApiUtils::FindPlayerFromSteamId_Internal(uint64 steam_id) const + { + AShooterPlayerController* found_player = nullptr; + + if (steam_id == 0) + return found_player; + + auto iter = steam_id_map_.find(steam_id); + + if (iter != steam_id_map_.end() + && iter->first == steam_id) + { + found_player = iter->second; + } + + return found_player; + } + + // Free function + ArkApi::IApiUtils& GetApiUtils() + { + return *API::game_api->GetApiUtils(); + } +} // namespace AtlasApi \ No newline at end of file diff --git a/version/Core/Private/Atlas/ApiUtils.h b/version/Core/Private/Atlas/ApiUtils.h new file mode 100644 index 00000000..6faa5cfd --- /dev/null +++ b/version/Core/Private/Atlas/ApiUtils.h @@ -0,0 +1,40 @@ +#pragma once + +#include + +namespace AtlasApi +{ + class ApiUtils : public ArkApi::IApiUtils + { + public: + ApiUtils() = default; + + ApiUtils(const ApiUtils&) = delete; + ApiUtils(ApiUtils&&) = delete; + ApiUtils& operator=(const ApiUtils&) = delete; + ApiUtils& operator=(ApiUtils&&) = delete; + + ~ApiUtils() override = default; + + UWorld* GetWorld() const override; + AShooterGameMode* GetShooterGameMode() const override; + ArkApi::ServerStatus GetStatus() const override; + UShooterCheatManager* GetCheatManager() const override; + + void SetWorld(UWorld* uworld); + void SetShooterGameMode(AShooterGameMode* shooter_game_mode); + void SetStatus(ArkApi::ServerStatus status); + void SetCheatManager(UShooterCheatManager* cheatmanager); + + AShooterPlayerController* FindPlayerFromSteamId_Internal(uint64 steam_id) const override; + void SetPlayerController(AShooterPlayerController* player_controller); + void RemovePlayerController(AShooterPlayerController* player_controller); + + private: + UWorld* u_world_{nullptr}; + AShooterGameMode* shooter_game_mode_{nullptr}; + ArkApi::ServerStatus status_{0}; + UShooterCheatManager* cheatmanager_{ nullptr }; + std::unordered_map steam_id_map_; + }; +} // namespace AtlasApi diff --git a/version/Core/Private/Atlas/AtlasBaseApi.cpp b/version/Core/Private/Atlas/AtlasBaseApi.cpp new file mode 100644 index 00000000..e176060f --- /dev/null +++ b/version/Core/Private/Atlas/AtlasBaseApi.cpp @@ -0,0 +1,175 @@ +#include "AtlasBaseApi.h" + +#include + +#include + +#include "../Offsets.h" +#include "../PDBReader/PDBReader.h" +#include "../PluginManager/PluginManager.h" +#include "../Hooks.h" +#include "../Commands.h" +#include "Logger/Logger.h" +#include "HooksImpl.h" +#include "ApiUtils.h" + +namespace API +{ + constexpr float api_version = 1.7f; + + AtlasBaseApi::AtlasBaseApi() + : commands_(std::make_unique()), + hooks_(std::make_unique()), + api_utils_(std::make_unique()) + { + } + + bool AtlasBaseApi::Init() + { + Log::GetLog()->info("-----------------------------------------------"); + Log::GetLog()->info("YAPI V{:.1f}", GetVersion()); + Log::GetLog()->info("Loading...\n"); + + PdbReader pdb_reader; + + std::unordered_map offsets_dump; + std::unordered_map bitfields_dump; + + try + { + const std::string current_dir = Tools::GetCurrentDir(); + + const std::wstring dir = Tools::Utf8Decode(current_dir); + pdb_reader.Read(dir + L"/ShooterGameServer.pdb", &offsets_dump, &bitfields_dump); + } + catch (const std::exception& error) + { + Log::GetLog()->critical("Failed to read pdb - {}", error.what()); + return false; + } + + Offsets::Get().Init(move(offsets_dump), move(bitfields_dump)); + + AtlasApi::InitHooks(); + + Log::GetLog()->info("API was successfully loaded"); + Log::GetLog()->info("-----------------------------------------------\n"); + + return true; + } + + float AtlasBaseApi::GetVersion() + { + return api_version; + } + + std::string AtlasBaseApi::GetApiName() + { + return "AtlasApi"; + } + + std::unique_ptr& AtlasBaseApi::GetCommands() + { + return commands_; + } + + std::unique_ptr& AtlasBaseApi::GetHooks() + { + return hooks_; + } + + std::unique_ptr& AtlasBaseApi::GetApiUtils() + { + return api_utils_; + } + + void AtlasBaseApi::RegisterCommands() + { + GetCommands()->AddConsoleCommand("plugins.load", &LoadPluginCmd); + GetCommands()->AddConsoleCommand("plugins.unload", &UnloadPluginCmd); + GetCommands()->AddRconCommand("plugins.load", &LoadPluginRcon); + GetCommands()->AddRconCommand("plugins.unload", &UnloadPluginRcon); + } + + FString AtlasBaseApi::LoadPlugin(FString* cmd) + { + TArray parsed; + cmd->ParseIntoArray(parsed, L" ", true); + + if (parsed.IsValidIndex(1)) + { + const std::string plugin_name = parsed[1].ToString(); + + try + { + PluginManager::Get().LoadPlugin(plugin_name); + } + catch (const std::exception& error) + { + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); + return FString::Format("Failed to load plugin - {}", error.what()); + } + + Log::GetLog()->info("Loaded plugin - {}", plugin_name.c_str()); + + return "Successfully loaded plugin"; + } + + return "Plugin not found"; + } + + FString AtlasBaseApi::UnloadPlugin(FString* cmd) + { + TArray parsed; + cmd->ParseIntoArray(parsed, L" ", true); + + if (parsed.IsValidIndex(1)) + { + const std::string plugin_name = parsed[1].ToString(); + + try + { + PluginManager::Get().UnloadPlugin(plugin_name); + } + catch (const std::exception& error) + { + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); + return *FString::Format("Failed to unload plugin - {}", error.what()); + } + + Log::GetLog()->info("Unloaded plugin - {}", plugin_name.c_str()); + + return L"Successfully unloaded plugin"; + } + + return L"Plugin not found"; + } + + // Command Callbacks + void AtlasBaseApi::LoadPluginCmd(APlayerController* player_controller, FString* cmd, bool /*unused*/) + { + auto* shooter_controller = static_cast(player_controller); + ArkApi::GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, *LoadPlugin(cmd)); + } + + void AtlasBaseApi::UnloadPluginCmd(APlayerController* player_controller, FString* cmd, bool /*unused*/) + { + auto* shooter_controller = static_cast(player_controller); + ArkApi::GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, *UnloadPlugin(cmd)); + } + + // RCON Command Callbacks + void AtlasBaseApi::LoadPluginRcon(RCONClientConnection* rcon_connection, RCONPacket* rcon_packet, + UWorld* /*unused*/) + { + FString reply = LoadPlugin(&rcon_packet->Body); + rcon_connection->SendMessageW(rcon_packet->Id, 0, &reply); + } + + void AtlasBaseApi::UnloadPluginRcon(RCONClientConnection* rcon_connection, RCONPacket* rcon_packet, + UWorld* /*unused*/) + { + FString reply = UnloadPlugin(&rcon_packet->Body); + rcon_connection->SendMessageW(rcon_packet->Id, 0, &reply); + } +} // namespace API diff --git a/version/Core/Private/Atlas/AtlasBaseApi.h b/version/Core/Private/Atlas/AtlasBaseApi.h new file mode 100644 index 00000000..d62d0e96 --- /dev/null +++ b/version/Core/Private/Atlas/AtlasBaseApi.h @@ -0,0 +1,41 @@ +#pragma once + +#include "../IBaseApi.h" + +#include + +namespace API +{ + class AtlasBaseApi : public IBaseApi + { + public: + AtlasBaseApi(); + ~AtlasBaseApi() override = default; + + bool Init() override; + float GetVersion() override; + std::string GetApiName() override; + void RegisterCommands() override; + + std::unique_ptr& GetCommands() override; + std::unique_ptr& GetHooks() override; + std::unique_ptr& GetApiUtils() override; + + private: + // Callbacks + static FString LoadPlugin(FString* cmd); + static FString UnloadPlugin(FString* cmd); + + static void LoadPluginCmd(APlayerController* /*player_controller*/, FString* /*cmd*/, bool /*unused*/); + static void UnloadPluginCmd(APlayerController* /*player_controller*/, FString* /*cmd*/, bool /*unused*/); + + static void LoadPluginRcon(RCONClientConnection* /*rcon_connection*/, RCONPacket* /*rcon_packet*/, + UWorld* /*unused*/); + static void UnloadPluginRcon(RCONClientConnection* /*rcon_connection*/, RCONPacket* /*rcon_packet*/, + UWorld* /*unused*/); + + std::unique_ptr commands_; + std::unique_ptr hooks_; + std::unique_ptr api_utils_; + }; +} // namespace API diff --git a/version/Core/Private/Atlas/HooksImpl.cpp b/version/Core/Private/Atlas/HooksImpl.cpp new file mode 100644 index 00000000..8d12e760 --- /dev/null +++ b/version/Core/Private/Atlas/HooksImpl.cpp @@ -0,0 +1,176 @@ +#include "HooksImpl.h" + +#include "ApiUtils.h" +#include "../Commands.h" +#include "../Hooks.h" +#include "../PluginManager/PluginManager.h" +#include "../IBaseApi.h" + +#include + +namespace AtlasApi +{ + // Hooks declaration + DECLARE_HOOK(UEngine_Init, void, DWORD64, DWORD64); + DECLARE_HOOK(UWorld_InitWorld, void, UWorld*, DWORD64); + DECLARE_HOOK(UWorld_Tick, void, DWORD64, DWORD64, float); + DECLARE_HOOK(AShooterGameMode_InitGame, void, AShooterGameMode*, FString*, FString*, FString*); + DECLARE_HOOK(AShooterPlayerController_ServerSendChatMessage_Impl, void, AShooterPlayerController*, FString*, + EChatSendMode::Type); + DECLARE_HOOK(APlayerController_ConsoleCommand, FString*, APlayerController*, FString*, FString*, bool); + DECLARE_HOOK(RCONClientConnection_ProcessRCONPacket, void, RCONClientConnection*, RCONPacket*, UWorld*); + DECLARE_HOOK(AGameState_DefaultTimer, void, AGameState*); + DECLARE_HOOK(AShooterGameMode_BeginPlay, void, AShooterGameMode*); + DECLARE_HOOK(URCONServer_Init, bool, URCONServer*, FString, int, UShooterCheatManager*); + DECLARE_HOOK(AShooterPlayerController_Possess, void, AShooterPlayerController*, APawn*); + DECLARE_HOOK(AShooterGameMode_Logout, void, AShooterGameMode*, AController*); + + void InitHooks() + { + auto& hooks = API::game_api->GetHooks(); + + hooks->SetHook("UEngine.Init", &Hook_UEngine_Init, &UEngine_Init_original); + hooks->SetHook("UWorld.InitWorld", &Hook_UWorld_InitWorld, &UWorld_InitWorld_original); + hooks->SetHook("UWorld.Tick", &Hook_UWorld_Tick, &UWorld_Tick_original); + hooks->SetHook("AShooterGameMode.InitGame", &Hook_AShooterGameMode_InitGame, + &AShooterGameMode_InitGame_original); + hooks->SetHook("AShooterPlayerController.ServerSendChatMessage_Implementation", + &Hook_AShooterPlayerController_ServerSendChatMessage_Impl, + &AShooterPlayerController_ServerSendChatMessage_Impl_original); + hooks->SetHook("APlayerController.ConsoleCommand", &Hook_APlayerController_ConsoleCommand, + &APlayerController_ConsoleCommand_original); + hooks->SetHook("RCONClientConnection.ProcessRCONPacket", &Hook_RCONClientConnection_ProcessRCONPacket, + &RCONClientConnection_ProcessRCONPacket_original); + hooks->SetHook("AGameState.DefaultTimer", &Hook_AGameState_DefaultTimer, &AGameState_DefaultTimer_original); + hooks->SetHook("AShooterGameMode.BeginPlay", &Hook_AShooterGameMode_BeginPlay, + &AShooterGameMode_BeginPlay_original); + hooks->SetHook("URCONServer.Init", &Hook_URCONServer_Init, &URCONServer_Init_original); + hooks->SetHook("AShooterPlayerController.Possess", &Hook_AShooterPlayerController_Possess, + &AShooterPlayerController_Possess_original); + hooks->SetHook("AShooterGameMode.Logout", &Hook_AShooterGameMode_Logout, &AShooterGameMode_Logout_original); + + Log::GetLog()->info("Initialized hooks\n"); + } + + // Hooks + + void Hook_UEngine_Init(DWORD64 _this, DWORD64 InEngineLoop) + { + UEngine_Init_original(_this, InEngineLoop); + + Log::GetLog()->info("UGameEngine::Init was called"); + Log::GetLog()->info("Loading plugins..\n"); + + API::PluginManager::Get().LoadAllPlugins(); + + dynamic_cast(*API::game_api).RegisterCommands(); + } + + void Hook_UWorld_InitWorld(UWorld* world, DWORD64 ivs) + { + Log::GetLog()->info("UWorld::InitWorld was called"); + + dynamic_cast(*API::game_api->GetApiUtils()).SetWorld(world); + + UWorld_InitWorld_original(world, ivs); + } + + void Hook_UWorld_Tick(DWORD64 world, DWORD64 tick_type, float delta_seconds) + { + dynamic_cast(*API::game_api->GetCommands()).CheckOnTickCallbacks(delta_seconds); + + UWorld_Tick_original(world, tick_type, delta_seconds); + } + + void Hook_AShooterGameMode_InitGame(AShooterGameMode* a_shooter_game_mode, FString* map_name, FString* options, + FString* error_message) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetShooterGameMode(a_shooter_game_mode); + + AShooterGameMode_InitGame_original(a_shooter_game_mode, map_name, options, error_message); + } + + void Hook_AShooterPlayerController_ServerSendChatMessage_Impl( + AShooterPlayerController* player_controller, FString* message, EChatSendMode::Type mode) + { + const long double last_chat_time = player_controller->LastChatMessageTimeField(); + const long double now_time = ArkApi::GetApiUtils().GetWorld()->TimeSecondsField(); + + const auto spam_check = now_time - last_chat_time < 1.0; + if (last_chat_time > 0 && spam_check) + { + return; + } + + player_controller->LastChatMessageTimeField() = now_time; + + const auto command_executed = dynamic_cast(*API::game_api->GetCommands()). + CheckChatCommands(player_controller, message, mode); + + const auto prevent_default = dynamic_cast(*API::game_api->GetCommands()). + CheckOnChatMessageCallbacks(player_controller, message, mode, spam_check, command_executed); + + if (command_executed || prevent_default) + { + return; + } + + AShooterPlayerController_ServerSendChatMessage_Impl_original(player_controller, message, mode); + } + + FString* Hook_APlayerController_ConsoleCommand(APlayerController* a_player_controller, FString* result, + FString* cmd, bool write_to_log) + { + dynamic_cast(*API::game_api->GetCommands()).CheckConsoleCommands( + a_player_controller, cmd, write_to_log); + + return APlayerController_ConsoleCommand_original(a_player_controller, result, cmd, write_to_log); + } + + void Hook_RCONClientConnection_ProcessRCONPacket(RCONClientConnection* _this, RCONPacket* packet, + UWorld* in_world) + { + if (_this->IsAuthenticatedField()) + { + dynamic_cast(*API::game_api->GetCommands()).CheckRconCommands(_this, packet, in_world); + } + + RCONClientConnection_ProcessRCONPacket_original(_this, packet, in_world); + } + + void Hook_AGameState_DefaultTimer(AGameState* _this) + { + dynamic_cast(*API::game_api->GetCommands()).CheckOnTimerCallbacks(); + + AGameState_DefaultTimer_original(_this); + } + + void Hook_AShooterGameMode_BeginPlay(AShooterGameMode* _AShooterGameMode) + { + AShooterGameMode_BeginPlay_original(_AShooterGameMode); + + dynamic_cast(*API::game_api->GetApiUtils()).SetStatus(ArkApi::ServerStatus::Ready); + } + + bool Hook_URCONServer_Init(URCONServer* _this, FString Password, int InPort, UShooterCheatManager* SCheatManager) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetCheatManager(SCheatManager); + + return URCONServer_Init_original(_this, Password, InPort, SCheatManager); + } + + void Hook_AShooterPlayerController_Possess(AShooterPlayerController* _this, APawn* inPawn) + { + dynamic_cast(*API::game_api->GetApiUtils()).SetPlayerController(_this); + + AShooterPlayerController_Possess_original(_this, inPawn); + } + + void Hook_AShooterGameMode_Logout(AShooterGameMode* _this, AController* Exiting) + { + AShooterPlayerController* Exiting_SPC = static_cast(Exiting); + dynamic_cast(*API::game_api->GetApiUtils()).RemovePlayerController(Exiting_SPC); + + AShooterGameMode_Logout_original(_this, Exiting); + } +} // namespace AtlasApi \ No newline at end of file diff --git a/version/Core/Private/Atlas/HooksImpl.h b/version/Core/Private/Atlas/HooksImpl.h new file mode 100644 index 00000000..b71be9b0 --- /dev/null +++ b/version/Core/Private/Atlas/HooksImpl.h @@ -0,0 +1,6 @@ +#pragma once + +namespace AtlasApi +{ + void InitHooks(); +} // namespace AtlasApi diff --git a/version/Core/Private/Base.cpp b/version/Core/Private/Base.cpp index 2903aec2..004c58c3 100644 --- a/version/Core/Private/Base.cpp +++ b/version/Core/Private/Base.cpp @@ -4,25 +4,25 @@ DWORD64 GetAddress(const void* base, const std::string& name) { - return ArkApi::Offsets::Get().GetAddress(base, name); + return API::Offsets::Get().GetAddress(base, name); } LPVOID GetAddress(const std::string& name) { - return ArkApi::Offsets::Get().GetAddress(name); + return API::Offsets::Get().GetAddress(name); } LPVOID GetDataAddress(const std::string& name) { - return ArkApi::Offsets::Get().GetDataAddress(name); + return API::Offsets::Get().GetDataAddress(name); } BitField GetBitField(const void* base, const std::string& name) { - return ArkApi::Offsets::Get().GetBitField(base, name); + return API::Offsets::Get().GetBitField(base, name); } BitField GetBitField(LPVOID base, const std::string& name) { - return ArkApi::Offsets::Get().GetBitField(base, name); -} \ No newline at end of file + return API::Offsets::Get().GetBitField(base, name); +} diff --git a/version/Core/Private/Commands.cpp b/version/Core/Private/Commands.cpp index 2574274b..d52ce0b1 100644 --- a/version/Core/Private/Commands.cpp +++ b/version/Core/Private/Commands.cpp @@ -1,28 +1,24 @@ #include "Commands.h" +#include "IBaseApi.h" + namespace ArkApi { - Commands& Commands::Get() - { - static Commands instance; - return instance; - } - void Commands::AddChatCommand(const FString& command, - const std::function& - callback) + const std::function& + callback) { chat_commands_.push_back(std::make_shared(command, callback)); } void Commands::AddConsoleCommand(const FString& command, - const std::function& callback) + const std::function& callback) { console_commands_.push_back(std::make_shared(command, callback)); } void Commands::AddRconCommand(const FString& command, - const std::function& callback) + const std::function& callback) { rcon_commands_.push_back(std::make_shared(command, callback)); } @@ -38,8 +34,8 @@ namespace ArkApi } void Commands::AddOnChatMessageCallback(const FString& id, - const std::function& callback) + const std::function& callback) { on_chat_message_callbacks_.push_back(std::make_shared(id, callback)); } @@ -75,7 +71,7 @@ namespace ArkApi } bool Commands::CheckChatCommands(AShooterPlayerController* shooter_player_controller, FString* message, - EChatSendMode::Type mode) + EChatSendMode::Type mode) { return CheckCommands(*message, chat_commands_, shooter_player_controller, message, mode); } @@ -86,24 +82,33 @@ namespace ArkApi } bool Commands::CheckRconCommands(RCONClientConnection* rcon_client_connection, RCONPacket* rcon_packet, - UWorld* u_world) + UWorld* u_world) { - return CheckCommands(rcon_packet->Body, rcon_commands_, rcon_client_connection, rcon_packet, u_world); + return CheckCommands(rcon_packet->Body, rcon_commands_, rcon_client_connection, rcon_packet, + u_world); } void Commands::CheckOnTickCallbacks(float delta_seconds) { - for (const auto& data : on_tick_callbacks_) + const auto tmp_tick_callbacks = on_tick_callbacks_; + for (const auto& data : tmp_tick_callbacks) { - data->callback(delta_seconds); + if (data) + { + data->callback(delta_seconds); + } } } void Commands::CheckOnTimerCallbacks() { - for (const auto& data : on_timer_callbacks_) + const auto tmp_timer_callbacks = on_timer_callbacks_; + for (const auto& data : tmp_timer_callbacks) { - data->callback(); + if (data) + { + data->callback(); + } } } @@ -114,8 +119,10 @@ namespace ArkApi bool spam_check, bool command_executed) { + const auto tmp_chat_callbacks = on_chat_message_callbacks_; + bool prevent_default = false; - for (const auto& data : on_chat_message_callbacks_) + for (const auto& data : tmp_chat_callbacks) { prevent_default |= data->callback(player_controller, message, mode, spam_check, command_executed); } @@ -126,6 +133,6 @@ namespace ArkApi // Free function ICommands& GetCommands() { - return Commands::Get(); + return *API::game_api->GetCommands(); } -} +} // namespace ArkApi \ No newline at end of file diff --git a/version/Core/Private/Commands.h b/version/Core/Private/Commands.h index f1cfeab0..ac9c04ee 100644 --- a/version/Core/Private/Commands.h +++ b/version/Core/Private/Commands.h @@ -3,22 +3,24 @@ #include #include +#include #include #include -#include namespace ArkApi { class Commands : public ICommands { public: - static Commands& Get(); - + Commands() = default; + Commands(const Commands&) = delete; Commands(Commands&&) = delete; Commands& operator=(const Commands&) = delete; Commands& operator=(Commands&&) = delete; + ~Commands() override = default; + void AddChatCommand(const FString& command, const std::function& callback) override; @@ -30,8 +32,8 @@ namespace ArkApi void AddOnTickCallback(const FString& id, const std::function& callback) override; void AddOnTimerCallback(const FString& id, const std::function& callback) override; void AddOnChatMessageCallback(const FString& id, - const std::function& callback) override; + const std::function& callback) override; bool RemoveChatCommand(const FString& command) override; bool RemoveConsoleCommand(const FString& command) override; @@ -52,9 +54,6 @@ namespace ArkApi EChatSendMode::Type mode, bool spam_check, bool command_executed); private: - Commands() = default; - ~Commands() = default; - template struct Command { @@ -74,7 +73,8 @@ namespace ArkApi using OnTickCallback = Command; using OnTimerCallback = Command; - using OnChatMessageCallback = Command; + using OnChatMessageCallback = Command; template bool RemoveCommand(const FString& command, std::vector>& commands) @@ -102,7 +102,9 @@ namespace ArkApi message.ParseIntoArray(parsed, L" ", true); if (!parsed.IsValidIndex(0)) + { return false; + } const FString command_text = parsed[0]; @@ -127,4 +129,4 @@ namespace ArkApi std::vector> on_timer_callbacks_; std::vector> on_chat_message_callbacks_; }; -} +} // namespace ArkApi diff --git a/version/Core/Private/Helpers.cpp b/version/Core/Private/Helpers.cpp index eafcdd26..8fc7f794 100644 --- a/version/Core/Private/Helpers.cpp +++ b/version/Core/Private/Helpers.cpp @@ -1,17 +1,23 @@ #include "Helpers.h" + #include #include +#include -namespace ArkApi +namespace API { void MergePdbConfig(nlohmann::json& left, const nlohmann::json& right) { - left["structures"] = MergeStringArrays(left.value("structures", std::vector{}), - right.value("structures", std::vector{})); - left["functions"] = MergeStringArrays(left.value("functions", std::vector{}), - right.value("functions", std::vector{})); - left["globals"] = MergeStringArrays(left.value("globals", std::vector{}), - right.value("globals", std::vector{})); + nlohmann::json pdb_config_result({}); + + pdb_config_result["structures"] = MergeStringArrays(left.value("structures", std::vector{}), + right.value("structures", std::vector{})); + pdb_config_result["functions"] = MergeStringArrays(left.value("functions", std::vector{}), + right.value("functions", std::vector{})); + pdb_config_result["globals"] = MergeStringArrays(left.value("globals", std::vector{}), + right.value("globals", std::vector{})); + + left = pdb_config_result; } std::vector MergeStringArrays(std::vector first, std::vector second) @@ -61,4 +67,16 @@ namespace ArkApi return unique; } -} + + std::string ReplaceString(std::string subject, const std::string& search, const std::string& replace) + { + size_t pos = 0; + while ((pos = subject.find(search, pos)) != std::string::npos) + { + subject.replace(pos, search.length(), replace); + pos += replace.length(); + } + + return subject; + } +} // namespace API diff --git a/version/Core/Private/Helpers.h b/version/Core/Private/Helpers.h index 52f1959b..94804435 100644 --- a/version/Core/Private/Helpers.h +++ b/version/Core/Private/Helpers.h @@ -1,9 +1,13 @@ #pragma once + #include -#include "../../json.hpp" -namespace ArkApi +#include "json.hpp" + +namespace API { void MergePdbConfig(nlohmann::json& left, const nlohmann::json& right); std::vector MergeStringArrays(std::vector first, std::vector second); -} + + std::string ReplaceString(std::string subject, const std::string& search, const std::string& replace); +} // namespace API diff --git a/version/Core/Private/Hooks.cpp b/version/Core/Private/Hooks.cpp index 8cd043e2..4b7b9297 100644 --- a/version/Core/Private/Hooks.cpp +++ b/version/Core/Private/Hooks.cpp @@ -6,8 +6,9 @@ #include "../../MinHook.h" #include "Offsets.h" +#include "IBaseApi.h" -namespace ArkApi +namespace API { Hooks::Hooks() { @@ -18,12 +19,6 @@ namespace ArkApi } } - Hooks& Hooks::Get() - { - static Hooks instance; - return instance; - } - bool Hooks::SetHookInternal(const std::string& func_name, LPVOID detour, LPVOID* original) { LPVOID target = Offsets::Get().GetAddress(func_name); @@ -36,8 +31,8 @@ namespace ArkApi auto& hook_vector = all_hooks_[func_name]; LPVOID new_target = hook_vector.empty() - ? target - : hook_vector.back()->detour; + ? target + : hook_vector.back()->detour; hook_vector.push_back(std::make_shared(new_target, detour, original)); @@ -58,7 +53,7 @@ namespace ArkApi bool Hooks::DisableHook(const std::string& func_name, LPVOID detour) { - LPVOID target = Offsets::Get().GetAddress(func_name); + const LPVOID target = Offsets::Get().GetAddress(func_name); if (target == nullptr) { Log::GetLog()->error("{} does not exist", func_name); @@ -68,14 +63,14 @@ namespace ArkApi auto& hook_vector = all_hooks_[func_name]; const auto iter = std::find_if(hook_vector.begin(), hook_vector.end(), - [detour](const std::shared_ptr& hook) -> bool - { - return hook->detour == detour; - }); + [detour](const std::shared_ptr& hook) -> bool + { + return hook->detour == detour; + }); if (iter == hook_vector.end()) { - Log::GetLog()->warn("Failed to find hook"); + Log::GetLog()->warn("Failed to find hook ({})", func_name); return false; } @@ -103,10 +98,10 @@ namespace ArkApi return true; } +} // namespace API - // Free function - IHooks& GetHooks() - { - return Hooks::Get(); - } +// Free function +ArkApi::IHooks& ArkApi::GetHooks() +{ + return reinterpret_cast(*API::game_api->GetHooks()); } diff --git a/version/Core/Private/Hooks.h b/version/Core/Private/Hooks.h index 13c38082..dced5b37 100644 --- a/version/Core/Private/Hooks.h +++ b/version/Core/Private/Hooks.h @@ -2,21 +2,23 @@ #include -#include #include +#include -namespace ArkApi +namespace API { - class Hooks : public IHooks + class Hooks : public ArkApi::IHooks { public: - static Hooks& Get(); + Hooks(); Hooks(const Hooks&) = delete; Hooks(Hooks&&) = delete; Hooks& operator=(const Hooks&) = delete; Hooks& operator=(Hooks&&) = delete; + ~Hooks() override = default; + bool SetHookInternal(const std::string& func_name, LPVOID detour, LPVOID* original) override; bool DisableHook(const std::string& func_name, LPVOID detour) override; @@ -36,9 +38,6 @@ namespace ArkApi LPVOID* original; }; - Hooks(); - ~Hooks() = default; - std::unordered_map>> all_hooks_; }; -} +} // namespace API diff --git a/version/Core/Private/HooksImpl.cpp b/version/Core/Private/HooksImpl.cpp deleted file mode 100644 index e1b47af6..00000000 --- a/version/Core/Private/HooksImpl.cpp +++ /dev/null @@ -1,133 +0,0 @@ -#include "HooksImpl.h" - -#include - -#include "Hooks.h" -#include "ApiUtils.h" -#include "Commands.h" -#include "PluginManager/PluginManager.h" - -namespace ArkApi -{ - // Hooks declaration - DECLARE_HOOK(UEngine_Init, void, DWORD64, DWORD64); - DECLARE_HOOK(UWorld_InitWorld, void, UWorld*, DWORD64); - DECLARE_HOOK(UWorld_Tick, void, DWORD64, DWORD64, float); - DECLARE_HOOK(AShooterGameMode_InitGame, void, AShooterGameMode*, FString*, FString*, FString*); - DECLARE_HOOK(AShooterPlayerController_ServerSendChatMessage_Impl, void, AShooterPlayerController*, FString*, - EChatSendMode::Type); - DECLARE_HOOK(APlayerController_ConsoleCommand, FString*, APlayerController*, FString*, FString*, bool); - DECLARE_HOOK(RCONClientConnection_ProcessRCONPacket, void, RCONClientConnection*, RCONPacket*, UWorld*); - DECLARE_HOOK(AGameState_DefaultTimer, void, AGameState*); - DECLARE_HOOK(AShooterGameMode_BeginPlay, void, AShooterGameMode*); - - void InitHooks() - { - auto& hooks = Hooks::Get(); - - hooks.SetHook("UEngine.Init", &Hook_UEngine_Init, &UEngine_Init_original); - hooks.SetHook("UWorld.InitWorld", &Hook_UWorld_InitWorld, &UWorld_InitWorld_original); - hooks.SetHook("UWorld.Tick", &Hook_UWorld_Tick, &UWorld_Tick_original); - hooks.SetHook("AShooterGameMode.InitGame", &Hook_AShooterGameMode_InitGame, &AShooterGameMode_InitGame_original); - hooks.SetHook("AShooterPlayerController.ServerSendChatMessage_Implementation", - &Hook_AShooterPlayerController_ServerSendChatMessage_Impl, - &AShooterPlayerController_ServerSendChatMessage_Impl_original); - hooks.SetHook("APlayerController.ConsoleCommand", &Hook_APlayerController_ConsoleCommand, - &APlayerController_ConsoleCommand_original); - hooks.SetHook("RCONClientConnection.ProcessRCONPacket", &Hook_RCONClientConnection_ProcessRCONPacket, - &RCONClientConnection_ProcessRCONPacket_original); - hooks.SetHook("AGameState.DefaultTimer", &Hook_AGameState_DefaultTimer, &AGameState_DefaultTimer_original); - hooks.SetHook("AShooterGameMode.BeginPlay", &Hook_AShooterGameMode_BeginPlay, &AShooterGameMode_BeginPlay_original); - - Log::GetLog()->info("Initialized hooks\n"); - } - - // Hooks - - void Hook_UEngine_Init(DWORD64 _this, DWORD64 InEngineLoop) - { - UEngine_Init_original(_this, InEngineLoop); - - Log::GetLog()->info("UGameEngine::Init was called"); - Log::GetLog()->info("Loading plugins..\n"); - - PluginManager::Get().LoadAllPlugins(); - } - - void Hook_UWorld_InitWorld(UWorld* world, DWORD64 ivs) - { - Log::GetLog()->info("UWorld::InitWorld was called"); - - ApiUtils::Get().SetWorld(world); - - UWorld_InitWorld_original(world, ivs); - } - - void Hook_UWorld_Tick(DWORD64 world, DWORD64 tick_type, float delta_seconds) - { - Commands::Get().CheckOnTickCallbacks(delta_seconds); - - UWorld_Tick_original(world, tick_type, delta_seconds); - } - - void Hook_AShooterGameMode_InitGame(AShooterGameMode* a_shooter_game_mode, FString* map_name, FString* options, - FString* error_message) - { - ApiUtils::Get().SetShooterGameMode(a_shooter_game_mode); - - AShooterGameMode_InitGame_original(a_shooter_game_mode, map_name, options, error_message); - } - - void Hook_AShooterPlayerController_ServerSendChatMessage_Impl( - AShooterPlayerController* player_controller, FString* message, EChatSendMode::Type mode) - { - const long double last_chat_time = player_controller->LastChatMessageTimeField(); - const long double time_seconds = ApiUtils::Get().GetWorld()->TimeSecondsField(); - - const auto spam_check = last_chat_time > 0 && time_seconds - last_chat_time < 1.0; - - const auto command_executed = !spam_check - ? Commands::Get().CheckChatCommands(player_controller, message, mode) - : false; - if (command_executed) - player_controller->LastChatMessageTimeField() = time_seconds; - - const auto prevent_default = Commands::Get().CheckOnChatMessageCallbacks( - player_controller, message, mode, spam_check, command_executed); - - if (spam_check || command_executed || prevent_default) - return; - - AShooterPlayerController_ServerSendChatMessage_Impl_original(player_controller, message, mode); - } - - FString* Hook_APlayerController_ConsoleCommand(APlayerController* a_player_controller, FString* result, - FString* cmd, bool write_to_log) - { - Commands::Get().CheckConsoleCommands(a_player_controller, cmd, write_to_log); - - return APlayerController_ConsoleCommand_original(a_player_controller, result, cmd, write_to_log); - } - - void Hook_RCONClientConnection_ProcessRCONPacket(RCONClientConnection* _this, RCONPacket* packet, - UWorld* in_world) - { - Commands::Get().CheckRconCommands(_this, packet, in_world); - - RCONClientConnection_ProcessRCONPacket_original(_this, packet, in_world); - } - - void Hook_AGameState_DefaultTimer(AGameState* _this) - { - Commands::Get().CheckOnTimerCallbacks(); - - AGameState_DefaultTimer_original(_this); - } - - void Hook_AShooterGameMode_BeginPlay(AShooterGameMode* _AShooterGameMode) - { - AShooterGameMode_BeginPlay_original(_AShooterGameMode); - - ApiUtils::Get().SetStatus(ServerStatus::Ready); - } -} diff --git a/version/Core/Private/IBaseApi.h b/version/Core/Private/IBaseApi.h new file mode 100644 index 00000000..da0de077 --- /dev/null +++ b/version/Core/Private/IBaseApi.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +#include "ICommands.h" + +namespace API +{ + class IBaseApi + { + public: + virtual ~IBaseApi() = default; + + virtual bool Init() = 0; + virtual float GetVersion() = 0; + virtual std::string GetApiName() = 0; + virtual void RegisterCommands() = 0; + + virtual std::unique_ptr& GetCommands() = 0; + virtual std::unique_ptr& GetHooks() = 0; + virtual std::unique_ptr& GetApiUtils() = 0; + }; + + inline std::unique_ptr game_api; +} // namespace API diff --git a/version/Core/Private/Logger.cpp b/version/Core/Private/Logger.cpp index a34dd549..d9225a8b 100644 --- a/version/Core/Private/Logger.cpp +++ b/version/Core/Private/Logger.cpp @@ -1,13 +1,43 @@ #include + +#include + #include +#include + +std::string GetLogName() +{ + static std::string log_name("-1"); + if (log_name == "-1") + { + const std::string config_path = ArkApi::Tools::GetCurrentDir() + "/config.json"; + std::ifstream file{config_path}; + if (!file.is_open()) + { + log_name = ""; + return ""; + } + + nlohmann::json config; + file >> config; + file.close(); + + log_name = config["settings"].value("StaticLogPath", ""); + } + + return log_name; +} std::vector& GetLogSinks() { static std::vector sinks{ std::make_shared(), std::make_shared( - spdlog::sinks::default_daily_file_name_calculator:: - calc_filename(ArkApi::Tools::GetCurrentDir() + "/logs/ArkApi_" + std::to_string(GetCurrentProcessId()) + ".log"), + !GetLogName().empty() + ? GetLogName() + : spdlog::sinks::default_daily_file_name_calculator:: + calc_filename( + API::Tools::GetCurrentDir() + "/logs/ArkApi_" + std::to_string(GetCurrentProcessId()) + ".log"), 1024 * 1024, 5) }; diff --git a/version/Core/Private/Offsets.cpp b/version/Core/Private/Offsets.cpp index 8a2f40c0..dd49af18 100644 --- a/version/Core/Private/Offsets.cpp +++ b/version/Core/Private/Offsets.cpp @@ -1,7 +1,7 @@ #include "Offsets.h" #include "Logger/Logger.h" -namespace ArkApi +namespace API { Offsets::Offsets() { @@ -74,7 +74,7 @@ namespace ArkApi BitField Offsets::GetBitFieldInternal(const void* base, const std::string& name) { - auto bf = bitfields_dump_[name]; + const auto bf = bitfields_dump_[name]; auto cf = BitField(); cf.bit_position = bf.bit_position; cf.length = bf.length; @@ -83,4 +83,4 @@ namespace ArkApi return cf; } -} +} // namespace API diff --git a/version/Core/Private/Offsets.h b/version/Core/Private/Offsets.h index 8fa2d58b..bd98e248 100644 --- a/version/Core/Private/Offsets.h +++ b/version/Core/Private/Offsets.h @@ -1,9 +1,10 @@ #pragma once +#include + #include -#include "../Public/API/Base.h" -namespace ArkApi +namespace API { class Offsets { @@ -38,4 +39,4 @@ namespace ArkApi std::unordered_map offsets_dump_; std::unordered_map bitfields_dump_; }; -} +} // namespace API diff --git a/version/Core/Private/PDBReader/PDBReader.cpp b/version/Core/Private/PDBReader/PDBReader.cpp index 4446b732..4d9d1be6 100644 --- a/version/Core/Private/PDBReader/PDBReader.cpp +++ b/version/Core/Private/PDBReader/PDBReader.cpp @@ -1,18 +1,47 @@ #include "PDBReader.h" #include -#include #include #include -#include "../Private/Offsets.h" #include "../Private/Helpers.h" +#include "../Private/Offsets.h" -namespace ArkApi +namespace API { - void PdbReader::Read(std::wstring path, nlohmann::json plugin_pdb_config, - std::unordered_map* offsets_dump, + template + class ScopedDiaType + { + public: + ScopedDiaType() : _sym(nullptr) + { + } + + ScopedDiaType(T* sym) : _sym(sym) + { + } + + ~ScopedDiaType() + { + if (_sym != nullptr) + _sym->Release(); + } + + T** ref() { return &_sym; } + T** operator&() { return ref(); } + T* operator->() { return _sym; } + operator T*() { return _sym; } + void Attach(T* sym) { _sym = sym; } + + private: + T* _sym; + }; + + template + using CComPtr = ScopedDiaType; + + void PdbReader::Read(const std::wstring& path, std::unordered_map* offsets_dump, std::unordered_map* bitfields_dump) { offsets_dump_ = offsets_dump; @@ -36,29 +65,16 @@ namespace ArkApi throw; } - if (!ReadConfig()) - throw std::runtime_error("Failed to open config.json"); - - try - { - MergePdbConfig(config_, plugin_pdb_config); - } - catch (const std::runtime_error&) - { - Log::GetLog()->error("Failed to merge api config with pdb configs"); - throw; - } - Log::GetLog()->info("Dumping structures.."); DumpStructs(symbol); Log::GetLog()->info("Dumping functions.."); - DumpFreeFunctions(symbol); + DumpFunctions(symbol); Log::GetLog()->info("Dumping globals.."); DumpGlobalVariables(symbol); - Cleanup(symbol, dia_session); + Cleanup(symbol, dia_session, data_source); Log::GetLog()->info("Successfully read information from PDB\n"); } @@ -68,22 +84,28 @@ namespace ArkApi { const std::string current_dir = Tools::GetCurrentDir(); - std::string lib_path = current_dir + "\\msdia140.dll"; + const std::string lib_path = current_dir + "\\msdia140.dll"; const HMODULE h_module = LoadLibraryA(lib_path.c_str()); - if (!h_module) + if (h_module == nullptr) + { throw std::runtime_error("Failed to load msdia140.dll. Error code - " + std::to_string(GetLastError())); + } const auto dll_get_class_object = reinterpret_cast(GetProcAddress( h_module, "DllGetClassObject")); - if (!dll_get_class_object) + if (dll_get_class_object == nullptr) + { throw std::runtime_error("Can't find DllGetClassObject. Error code - " + std::to_string(GetLastError())); + } IClassFactory* class_factory; HRESULT hr = dll_get_class_object(__uuidof(DiaSource), IID_IClassFactory, &class_factory); if (FAILED(hr)) + { throw std::runtime_error("DllGetClassObject has failed. Error code - " + std::to_string(GetLastError())); + } - hr = class_factory->CreateInstance(nullptr, __uuidof(IDiaDataSource), reinterpret_cast(dia_source)); + hr = class_factory->CreateInstance(nullptr, __uuidof(IDiaDataSource), reinterpret_cast(dia_source)); if (FAILED(hr)) { class_factory->Release(); @@ -118,131 +140,120 @@ namespace ArkApi class_factory->Release(); } - bool PdbReader::ReadConfig() - { - const std::string config_path = Tools::GetCurrentDir() + "/config.json"; - std::ifstream file{config_path}; - if (!file.is_open()) - return false; - - file >> config_; - file.close(); - - return true; - } - void PdbReader::DumpStructs(IDiaSymbol* g_symbol) { - IDiaSymbol* symbol; + IDiaSymbol* symbol = nullptr; - auto structs_array = config_["structures"].get>(); - - IDiaEnumSymbols* enum_symbols; + CComPtr enum_symbols; if (FAILED(g_symbol->findChildren(SymTagUDT, nullptr, nsNone, &enum_symbols))) throw std::runtime_error("Failed to find symbols"); ULONG celt = 0; while (SUCCEEDED(enum_symbols->Next(1, &symbol, &celt)) && celt == 1) { - BSTR bstr_name; - if (symbol->get_name(&bstr_name) != S_OK) - continue; + CComPtr sym(symbol); - const _bstr_t bbstr_name(bstr_name); - const std::string str_name(bbstr_name); + const uint32_t sym_id = GetSymbolId(symbol); + if (visited_.find(sym_id) != visited_.end()) + return; - // Check if structure name is in config - const auto find_res = find(structs_array.begin(), structs_array.end(), str_name); - if (find_res != structs_array.end()) - DumpType(symbol, str_name, 0); + visited_.insert(sym_id); - SysFreeString(bstr_name); + std::string str_name = GetSymbolNameString(sym); + if (str_name.empty()) + continue; - symbol->Release(); + DumpType(sym, str_name, 0); } - - enum_symbols->Release(); } - void PdbReader::DumpFreeFunctions(IDiaSymbol* g_symbol) + void PdbReader::DumpFunctions(IDiaSymbol* g_symbol) { IDiaSymbol* symbol; - auto funcs_array = config_["functions"].get>(); - - IDiaEnumSymbols* enum_symbols; + CComPtr enum_symbols; if (FAILED(g_symbol->findChildren(SymTagFunction, nullptr, nsNone, &enum_symbols))) throw std::runtime_error("Failed to find symbols"); ULONG celt = 0; while (SUCCEEDED(enum_symbols->Next(1, &symbol, &celt)) && celt == 1) { - BSTR bstr_name; - if (symbol->get_name(&bstr_name) != S_OK) + CComPtr sym(symbol); + + DWORD sym_tag_type; + if (sym->get_symTag(&sym_tag_type) != S_OK) + continue; + + const uint32_t sym_id = GetSymbolId(sym); + if (visited_.find(sym_id) != visited_.end()) continue; - const _bstr_t bbstr_name(bstr_name); - const std::string str_name(bbstr_name); + visited_.insert(sym_id); + + std::string str_name = GetSymbolNameString(sym); + if (str_name.empty()) + continue; + + DWORD offset; + if (sym->get_addressOffset(&offset) != S_OK) + continue; + + // Filter out some useless functions + if (str_name.find('`') != std::string::npos) + continue; - const auto find_res = find(funcs_array.begin(), funcs_array.end(), str_name); - if (find_res != funcs_array.end()) + // Check if it's a member function + if (str_name.find(':') != std::string::npos) { - DWORD offset; - if (symbol->get_addressOffset(&offset) != S_OK) - continue; + const std::string new_str = ReplaceString(str_name, "::", "."); + (*offsets_dump_)[new_str] = offset; + } + else + { (*offsets_dump_)["Global." + str_name] = offset; } - - SysFreeString(bstr_name); - - symbol->Release(); } - - enum_symbols->Release(); } void PdbReader::DumpGlobalVariables(IDiaSymbol* g_symbol) { IDiaSymbol* symbol; - auto globals_array = config_["globals"].get>(); - - IDiaEnumSymbols* enum_symbols; + CComPtr enum_symbols; if (FAILED(g_symbol->findChildren(SymTagData, nullptr, nsNone, &enum_symbols))) throw std::runtime_error("Failed to find symbols"); ULONG celt = 0; while (SUCCEEDED(enum_symbols->Next(1, &symbol, &celt)) && celt == 1) { - BSTR bstr_name; - if (symbol->get_name(&bstr_name) != S_OK) - continue; + CComPtr sym(symbol); - const _bstr_t bbstr_name(bstr_name); - const std::string str_name(bbstr_name); + const uint32_t sym_id = GetSymbolId(symbol); + if (visited_.find(sym_id) != visited_.end()) + return; - const auto find_res = find(globals_array.begin(), globals_array.end(), str_name); - if (find_res != globals_array.end()) - { - DWORD offset; - if (symbol->get_addressOffset(&offset) != S_OK) - continue; + visited_.insert(sym_id); - (*offsets_dump_)["Global." + str_name] = offset; - } + std::string str_name = GetSymbolNameString(sym); + if (str_name.empty()) + continue; - SysFreeString(bstr_name); + DWORD sym_tag; + if (sym->get_symTag(&sym_tag) != S_OK) + continue; - symbol->Release(); - } + DWORD offset; + if (sym->get_addressOffset(&offset) != S_OK) + continue; - enum_symbols->Release(); + (*offsets_dump_)["Global." + str_name] = offset; + } } void PdbReader::DumpType(IDiaSymbol* symbol, const std::string& structure, int indent) const { - IDiaEnumSymbols* enum_children; + CComPtr enum_children; IDiaSymbol* symbol_child; DWORD sym_tag; ULONG celt = 0; @@ -264,17 +275,12 @@ namespace ArkApi { while (SUCCEEDED(enum_children->Next(1, &symbol_child, &celt)) && celt == 1) { - DumpType(symbol_child, structure, indent + 2); + CComPtr sym_child(symbol_child); - symbol_child->Release(); + DumpType(sym_child, structure, indent + 2); } - - enum_children->Release(); } break; - case SymTagFunction: - DumpFunction(symbol, structure); - break; default: break; } @@ -289,107 +295,82 @@ namespace ArkApi if (loc_type != LocIsThisRel && loc_type != LocIsBitField) return; - IDiaSymbol* type; + CComPtr type; if (symbol->get_type(&type) != S_OK) return; - if (type) - { - LONG offset; - if (symbol->get_offset(&offset) != S_OK) - return; - - BSTR bstr_name; - if (symbol->get_name(&bstr_name) != S_OK) - return; + if (type == nullptr) + return; - const _bstr_t bbstr_name(bstr_name); + LONG offset; + if (symbol->get_offset(&offset) != S_OK) + return; - if (loc_type == LocIsBitField) - { - DWORD bit_position; - if (symbol->get_bitPosition(&bit_position) != S_OK) - return; + std::string str_name = GetSymbolNameString(symbol); + if (str_name.empty()) + return; - ULONGLONG num_bits; - if (symbol->get_length(&num_bits) != S_OK) - return; + if (loc_type == LocIsBitField) + { + DWORD bit_position; + if (symbol->get_bitPosition(&bit_position) != S_OK) + return; - ULONGLONG length; - if (type->get_length(&length) != S_OK) - return; + ULONGLONG num_bits; + if (symbol->get_length(&num_bits) != S_OK) + return; - const BitField bit_field{static_cast(offset), bit_position, num_bits, length}; + ULONGLONG length; + if (type->get_length(&length) != S_OK) + return; - (*bitfields_dump_)[structure + "." + std::string(bbstr_name)] = bit_field; - } - else if (loc_type == LocIsThisRel) - { - (*offsets_dump_)[structure + "." + std::string(bbstr_name)] = offset; - } + const BitField bit_field{static_cast(offset), bit_position, num_bits, length}; - SysFreeString(bstr_name); + (*bitfields_dump_)[structure + "." + str_name] = bit_field; + } + else if (loc_type == LocIsThisRel) + { + (*offsets_dump_)[structure + "." + str_name] = offset; } - - type->Release(); } - std::string PdbReader::GetName(IDiaSymbol* symbol) + std::string PdbReader::GetSymbolNameString(IDiaSymbol* symbol) { - BSTR bstr_name; - BSTR bstr_und_name; - BSTR bstr_full_name; + BSTR str = nullptr; - if (symbol->get_name(&bstr_name) != S_OK) - return ""; + std::string name; - if (symbol->get_undecoratedName(&bstr_und_name) == S_OK) - { - bstr_full_name = wcscmp(bstr_name, bstr_und_name) == 0 ? bstr_name : bstr_und_name; - } - else + HRESULT hr = symbol->get_name(&str); + if (hr != S_OK) + return name; + + if (str != nullptr) { - bstr_full_name = bstr_name; + name = Tools::Utf8Encode(str); } - const _bstr_t str_name(bstr_name); + SysFreeString(str); - SysFreeString(bstr_name); - SysFreeString(bstr_und_name); - SysFreeString(bstr_full_name); - - return std::string(str_name); + return name; } - void PdbReader::DumpFunction(IDiaSymbol* symbol, const std::string& structure) const + uint32_t PdbReader::GetSymbolId(IDiaSymbol* symbol) { - DWORD offset; - if (symbol->get_addressOffset(&offset) != S_OK) - return; - - BSTR bstr_name; - if (symbol->get_name(&bstr_name) != S_OK) - return; - - const _bstr_t bbstr_name(bstr_name); - std::string str_name(bbstr_name); - - if (str_name.find("exec") != std::string::npos) // Filter out functions with "exec" prefix - return; - - (*offsets_dump_)[std::string(structure) + "." + str_name] = offset; + DWORD id; + symbol->get_symIndexId(&id); - SysFreeString(bstr_name); + return id; } - void PdbReader::Cleanup(IDiaSymbol* symbol, IDiaSession* session) + void PdbReader::Cleanup(IDiaSymbol* symbol, IDiaSession* session, IDiaDataSource* source) { - if (symbol) + if (symbol != nullptr) symbol->Release(); - - if (session) + if (session != nullptr) session->Release(); + if (source != nullptr) + source->Release(); CoUninitialize(); } -} +} // namespace API diff --git a/version/Core/Private/PDBReader/PDBReader.h b/version/Core/Private/PDBReader/PDBReader.h index 8578ccc2..1f04b419 100644 --- a/version/Core/Private/PDBReader/PDBReader.h +++ b/version/Core/Private/PDBReader/PDBReader.h @@ -1,40 +1,40 @@ #pragma once #include +#include -#include -#include "../../json.hpp" +#include "json.hpp" -namespace ArkApi +#include + +namespace API { class PdbReader { public: - PdbReader() - : offsets_dump_(nullptr), - bitfields_dump_(nullptr) - { - } - - void Read(std::wstring path, nlohmann::json plugin_pdb_config, - std::unordered_map* offsets_dump, + PdbReader() = default; + ~PdbReader() = default; + + void Read(const std::wstring& path, std::unordered_map* offsets_dump, std::unordered_map* bitfields_dump); private: - static void LoadDataFromPdb(const std::wstring&, IDiaDataSource**, IDiaSession**, IDiaSymbol**); - bool ReadConfig(); - void DumpStructs(IDiaSymbol*); - void DumpFreeFunctions(IDiaSymbol*); - void DumpGlobalVariables(IDiaSymbol*); - void DumpType(IDiaSymbol*, const std::string&, int) const; - void DumpData(IDiaSymbol*, const std::string&) const; - static std::string GetName(IDiaSymbol*); - void DumpFunction(IDiaSymbol*, const std::string&) const; - static void Cleanup(IDiaSymbol*, IDiaSession*); - - std::unordered_map* offsets_dump_; - std::unordered_map* bitfields_dump_; - - nlohmann::json config_; + static void LoadDataFromPdb(const std::wstring& /*path*/, IDiaDataSource** /*dia_source*/, IDiaSession** + /*session*/, IDiaSymbol** /*symbol*/); + + void DumpStructs(IDiaSymbol* /*g_symbol*/); + void DumpFunctions(IDiaSymbol* /*g_symbol*/); + void DumpGlobalVariables(IDiaSymbol* /*g_symbol*/); + void DumpType(IDiaSymbol* /*symbol*/, const std::string& /*structure*/, int /*indent*/) const; + void DumpData(IDiaSymbol* /*symbol*/, const std::string& /*structure*/) const; + + static std::string GetSymbolNameString(IDiaSymbol* /*symbol*/); + static uint32_t GetSymbolId(IDiaSymbol* /*symbol*/); + static void Cleanup(IDiaSymbol* /*symbol*/, IDiaSession* /*session*/, IDiaDataSource* /*source*/); + + std::unordered_map* offsets_dump_{nullptr}; + std::unordered_map* bitfields_dump_{nullptr}; + + std::unordered_set visited_; }; -} +} // namespace API diff --git a/version/Core/Private/PluginManager/PluginManager.cpp b/version/Core/Private/PluginManager/PluginManager.cpp index 4bae09bf..74011579 100644 --- a/version/Core/Private/PluginManager/PluginManager.cpp +++ b/version/Core/Private/PluginManager/PluginManager.cpp @@ -1,31 +1,17 @@ #include "PluginManager.h" -#include #include +#include +#include #include #include -#include -#include "../Commands.h" #include "../Helpers.h" +#include "../IBaseApi.h" -namespace ArkApi +namespace API { - PluginManager::PluginManager() : - enable_plugin_reload_(false), - reload_sleep_seconds_(5), - save_world_before_reload_(true), - next_reload_check_(0) - { - Commands& commands = Commands::Get(); - - commands.AddConsoleCommand("plugins.load", &LoadPluginCmd); - commands.AddConsoleCommand("plugins.unload", &UnloadPluginCmd); - - commands.AddOnTimerCallback(L"PluginManager.DetectPluginChangesTimerCallback", &DetectPluginChangesTimerCallback); - } - PluginManager& PluginManager::Get() { static PluginManager instance; @@ -34,9 +20,9 @@ namespace ArkApi nlohmann::json PluginManager::GetAllPDBConfigs() { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins"; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins"; auto result = nlohmann::json({}); @@ -52,7 +38,7 @@ namespace ArkApi } catch (const std::exception& error) { - Log::GetLog()->warn(error.what()); + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); } } @@ -61,15 +47,17 @@ namespace ArkApi nlohmann::json PluginManager::ReadPluginPDBConfig(const std::string& plugin_name) { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; - nlohmann::json plugin_pdb_config = nlohmann::json::object({}); + auto plugin_pdb_config = nlohmann::json({}); - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins/" + plugin_name; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins/" + plugin_name; const std::string config_path = dir_path + "/PdbConfig.json"; if (!fs::exists(config_path)) + { return plugin_pdb_config; + } std::ifstream file{config_path}; if (file.is_open()) @@ -88,7 +76,9 @@ namespace ArkApi const std::string config_path = Tools::GetCurrentDir() + "/config.json"; std::ifstream file{config_path}; if (!file.is_open()) + { return config; + } file >> config; file.close(); @@ -98,21 +88,24 @@ namespace ArkApi void PluginManager::LoadAllPlugins() { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins"; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins"; for (const auto& dir_name : fs::directory_iterator(dir_path)) { const auto& path = dir_name.path(); if (!is_directory(path)) + { continue; + } const auto filename = path.filename().stem().generic_string(); - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins/" + filename; - const std::string full_dll_path = dir_path + "/" + filename + ".dll"; - const std::string new_full_dll_path = dir_path + "/" + filename + ".dll.ArkApi"; + const std::string dir_file_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins/" + + filename; + const std::string full_dll_path = dir_file_path + "/" + filename + ".dll"; + const std::string new_full_dll_path = dir_file_path + "/" + filename + ".dll.ArkApi"; try { @@ -127,14 +120,14 @@ namespace ArkApi std::shared_ptr& plugin = LoadPlugin(filename); - stream << "Loaded plugin " << (plugin->full_name.empty() ? plugin->name : plugin->full_name) << " V" << std::fixed - << std::setprecision(1) << plugin->version << " (" << plugin->description << ")"; + stream << "Loaded plugin " << (plugin->full_name.empty() ? plugin->name : plugin->full_name) << " V" << + plugin->version << " (" << plugin->description << ")"; Log::GetLog()->info(stream.str()); } catch (const std::exception& error) { - Log::GetLog()->warn(error.what()); + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); } } @@ -155,35 +148,45 @@ namespace ArkApi std::shared_ptr& PluginManager::LoadPlugin(const std::string& plugin_name) noexcept(false) { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins/" + plugin_name; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins/" + plugin_name; const std::string full_dll_path = dir_path + "/" + plugin_name + ".dll"; if (!fs::exists(full_dll_path)) + { throw std::runtime_error("Plugin " + plugin_name + " does not exist"); + } if (IsPluginLoaded(plugin_name)) + { throw std::runtime_error("Plugin " + plugin_name + " was already loaded"); + } auto plugin_info = ReadPluginInfo(plugin_name); // Check version const auto required_version = static_cast(plugin_info["MinApiVersion"]); - if (required_version != .0f && std::stof(API_VERSION) < required_version) + if (required_version != .0f && game_api->GetVersion() < required_version) + { throw std::runtime_error("Plugin " + plugin_name + " requires newer API version!"); + } HINSTANCE h_module = LoadLibraryA(full_dll_path.c_str()); - if (!h_module) + if (h_module == nullptr) + { throw std::runtime_error( "Failed to load plugin - " + plugin_name + "\nError code: " + std::to_string(GetLastError())); + } // Calls Plugin_Init (if found) after loading DLL // Note: DllMain callbacks during LoadLibrary is load-locked so we cannot do things like WaitForMultipleObjects on threads - typedef void (_cdecl *pfnPluginInit)(); - pfnPluginInit pfnInit = (pfnPluginInit)GetProcAddress(h_module, "Plugin_Init"); - if (pfnInit) - pfnInit(); + using pfnPluginInit = void(__fastcall*)(); + const auto pfn_init = reinterpret_cast(GetProcAddress(h_module, "Plugin_Init")); + if (pfn_init != nullptr) + { + pfn_init(); + } return loaded_plugins_.emplace_back(std::make_shared(h_module, plugin_name, plugin_info["FullName"], plugin_info["Description"], plugin_info["Version"], @@ -193,38 +196,47 @@ namespace ArkApi void PluginManager::UnloadPlugin(const std::string& plugin_name) noexcept(false) { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; const auto iter = FindPlugin(plugin_name); if (iter == loaded_plugins_.end()) + { throw std::runtime_error("Plugin " + plugin_name + " is not loaded"); + } - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins/" + plugin_name; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins/" + plugin_name; const std::string full_dll_path = dir_path + "/" + plugin_name + ".dll"; if (!fs::exists(full_dll_path.c_str())) + { throw std::runtime_error("Plugin " + plugin_name + " does not exist"); + } // Calls Plugin_Unload (if found) just before unloading DLL to let DLL gracefully clean up // Note: DllMain callbacks during FreeLibrary is load-locked so we cannot do things like WaitForMultipleObjects on threads - typedef void(_cdecl *pfnPluginUnload)(); - pfnPluginUnload pfnUnload = (pfnPluginUnload)GetProcAddress((*iter)->h_module, "Plugin_Unload"); - if (pfnUnload) - pfnUnload(); + using pfnPluginUnload = void(__fastcall*)(); + const auto pfn_unload = reinterpret_cast(GetProcAddress((*iter)->h_module, "Plugin_Unload")); + if (pfn_unload != nullptr) + { + pfn_unload(); + } const BOOL result = FreeLibrary((*iter)->h_module); - if (!result) + if (result == 0) + { throw std::runtime_error( "Failed to unload plugin - " + plugin_name + "\nError code: " + std::to_string(GetLastError())); + } loaded_plugins_.erase(remove(loaded_plugins_.begin(), loaded_plugins_.end(), *iter), loaded_plugins_.end()); } nlohmann::json PluginManager::ReadPluginInfo(const std::string& plugin_name) { - nlohmann::json plugin_info = nlohmann::json::object(); + nlohmann::json plugin_info_result({}); + nlohmann::json plugin_info({}); - const std::string dir_path = Tools::GetCurrentDir() + "/ArkApi/Plugins/" + plugin_name; + const std::string dir_path = Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins/" + plugin_name; const std::string config_path = dir_path + "/PluginInfo.json"; std::ifstream file{config_path}; @@ -234,13 +246,20 @@ namespace ArkApi file.close(); } - plugin_info["FullName"] = plugin_info.value("FullName", ""); - plugin_info["Description"] = plugin_info.value("Description", "No description"); - plugin_info["Version"] = plugin_info.value("Version", 1.0f); - plugin_info["MinApiVersion"] = plugin_info.value("MinApiVersion", .0f); - plugin_info["Dependencies"] = plugin_info.value("Dependencies", std::vector{}); + try + { + plugin_info_result["FullName"] = plugin_info.value("FullName", ""); + plugin_info_result["Description"] = plugin_info.value("Description", "No description"); + plugin_info_result["Version"] = plugin_info.value("Version", 1.00f); + plugin_info_result["MinApiVersion"] = plugin_info.value("MinApiVersion", .0f); + plugin_info_result["Dependencies"] = plugin_info.value("Dependencies", std::vector{}); + } + catch (const std::exception& error) + { + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); + } - return plugin_info; + return plugin_info_result; } void PluginManager::CheckPluginsDependencies() @@ -248,13 +267,16 @@ namespace ArkApi for (const auto& plugin : loaded_plugins_) { if (plugin->dependencies.empty()) + { continue; + } for (const std::string& dependency : plugin->dependencies) { if (!IsPluginLoaded(dependency)) { - Log::GetLog()->error("Plugin {} is missing! {} might not work correctly", dependency, plugin->name); + Log::GetLog()->error("Plugin {} is missing! {} might not work correctly", dependency, + plugin->name); } } } @@ -278,11 +300,14 @@ namespace ArkApi void PluginManager::DetectPluginChangesTimerCallback() { - auto& pluginManager = PluginManager::Get(); + auto& pluginManager = Get(); - time_t now = time(NULL); - if (now < pluginManager.next_reload_check_) + const time_t now = time(nullptr); + if (now < pluginManager.next_reload_check_ + || !pluginManager.enable_plugin_reload_) + { return; + } pluginManager.next_reload_check_ = now + pluginManager.reload_sleep_seconds_; @@ -291,16 +316,19 @@ namespace ArkApi void PluginManager::DetectPluginChanges() { - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; // Prevents saving world multiple times if multiple plugins are queued to be reloaded bool save_world = save_world_before_reload_; - for (const auto& dir_name : fs::directory_iterator(Tools::GetCurrentDir() + "/ArkApi/Plugins")) + for (const auto& dir_name : fs::directory_iterator( + Tools::GetCurrentDir() + "/" + game_api->GetApiName() + "/Plugins")) { const auto& path = dir_name.path(); if (!is_directory(path)) + { continue; + } const auto filename = path.filename().stem().generic_string(); @@ -317,6 +345,7 @@ namespace ArkApi Log::GetLog()->info("Saving world before reloading plugins ..."); ArkApi::GetApiUtils().GetShooterGameMode()->SaveWorld(); Log::GetLog()->info("World saved."); + save_world = false; // do not save again if multiple plugins are reloaded in this loop } @@ -327,75 +356,20 @@ namespace ArkApi copy_file(new_plugin_file_path, plugin_file_path, fs::copy_options::overwrite_existing); fs::remove(new_plugin_file_path); + // Wait 1 second before loading to let things clean up correctly... + // This will load the plugin in the next timer callback + //auto_reload_pending_plugins_.emplace_back(filename); + LoadPlugin(filename); + + Log::GetLog()->info("Reloaded plugin - {}", filename); } catch (const std::exception& error) { - Log::GetLog()->warn(error.what()); + Log::GetLog()->warn("({}) {}", __FUNCTION__, error.what()); continue; } - - Log::GetLog()->info("Reloaded plugin - {}", filename); - } - } - } - - // Callbacks - void PluginManager::LoadPluginCmd(APlayerController* player_controller, FString* cmd, bool) - { - TArray parsed; - cmd->ParseIntoArray(parsed, L" ", true); - - if (parsed.IsValidIndex(1)) - { - AShooterPlayerController* shooter_controller = static_cast(player_controller); - - const std::string plugin_name = parsed[1].ToString(); - - try - { - Get().LoadPlugin(plugin_name); - } - catch (const std::exception& error) - { - GetApiUtils().SendServerMessage(shooter_controller, FColorList::Red, "Failed to load plugin - {}", error.what()); - - Log::GetLog()->warn(error.what()); - return; } - - GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, "Successfully loaded plugin"); - - Log::GetLog()->info("Loaded plugin - {}", plugin_name.c_str()); - } - } - - void PluginManager::UnloadPluginCmd(APlayerController* player_controller, FString* cmd, bool) - { - TArray parsed; - cmd->ParseIntoArray(parsed, L" ", true); - - if (parsed.IsValidIndex(1)) - { - AShooterPlayerController* shooter_controller = static_cast(player_controller); - - const std::string plugin_name = parsed[1].ToString(); - - try - { - Get().UnloadPlugin(plugin_name); - } - catch (const std::exception& error) - { - GetApiUtils().SendServerMessage(shooter_controller, FColorList::Red, "Failed to unload plugin - {}", error.what()); - - Log::GetLog()->warn(error.what()); - return; - } - - GetApiUtils().SendServerMessage(shooter_controller, FColorList::Green, "Successfully unloaded plugin"); - - Log::GetLog()->info("Unloaded plugin - {}", plugin_name.c_str()); } } -} +} // namespace API \ No newline at end of file diff --git a/version/Core/Private/PluginManager/PluginManager.h b/version/Core/Private/PluginManager/PluginManager.h index 1b209b14..14bd438d 100644 --- a/version/Core/Private/PluginManager/PluginManager.h +++ b/version/Core/Private/PluginManager/PluginManager.h @@ -1,15 +1,14 @@ #pragma once +#include #include #include #include -#include +#include -#include +#include "json.hpp" -#include "../../../json.hpp" - -namespace ArkApi +namespace API { struct Plugin { @@ -79,8 +78,12 @@ namespace ArkApi */ bool IsPluginLoaded(const std::string& plugin_name); + /** + * \brief Checks for auto plugin reloads + */ + static void DetectPluginChangesTimerCallback(); private: - PluginManager(); + PluginManager() = default; ~PluginManager() = default; static nlohmann::json ReadPluginInfo(const std::string& plugin_name); @@ -89,19 +92,14 @@ namespace ArkApi void CheckPluginsDependencies(); - static void DetectPluginChangesTimerCallback(); void DetectPluginChanges(); - // Callbacks - static void LoadPluginCmd(APlayerController*, FString*, bool); - static void UnloadPluginCmd(APlayerController*, FString*, bool); - std::vector> loaded_plugins_; // Plugins auto reloading - bool enable_plugin_reload_; - int reload_sleep_seconds_; - bool save_world_before_reload_; - time_t next_reload_check_; + bool enable_plugin_reload_{false}; + int reload_sleep_seconds_{5}; + bool save_world_before_reload_{true}; + time_t next_reload_check_{5}; }; -} +} // namespace API diff --git a/version/Core/Private/Tools/Requests.cpp b/version/Core/Private/Tools/Requests.cpp index f69d2002..5981d2a0 100644 --- a/version/Core/Private/Tools/Requests.cpp +++ b/version/Core/Private/Tools/Requests.cpp @@ -1,15 +1,66 @@ +#define WIN32_LEAN_AND_MEAN + #include -namespace ArkApi +#include "../IBaseApi.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace API { - Requests::Requests() + class Requests::impl { - GetCommands().AddOnTimerCallback("RequestsUpdate", &Update); + public: + void WriteRequest(std::function callback, bool success, std::string result); + + Poco::Net::HTTPRequest ConstructRequest(const std::string& url, Poco::Net::HTTPClientSession*& session, + const std::vector& headers, const std::string& request_type); + + std::string GetResponse(Poco::Net::HTTPClientSession* session, Poco::Net::HTTPResponse& response); + + void Update(); + private: + struct RequestData + { + std::function callback; + bool success; + std::string result; + }; + + std::vector RequestsVec_; + std::mutex RequestMutex_; + }; + + Requests::Requests() + : pimpl{ std::make_unique() } + { + Poco::Net::initializeSSL(); + Poco::SharedPtr ptrCert = new Poco::Net::RejectCertificateHandler(false); + Poco::Net::Context::Ptr ptrContext = new Poco::Net::Context(Poco::Net::Context::TLS_CLIENT_USE, "", "", "", Poco::Net::Context::VERIFY_NONE, 9, false, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH"); + Poco::Net::SSLManager::instance().initializeClient(0, ptrCert, ptrContext); + + game_api->GetCommands()->AddOnTickCallback("RequestsUpdate", std::bind(&impl::Update, this->pimpl.get())); } - Requests::~Requests() - { - GetCommands().RemoveOnTimerCallback("RequestsUpdate"); + Requests::~Requests() + { + Poco::Net::uninitializeSSL(); + game_api->GetCommands()->RemoveOnTickCallback("RequestsUpdate"); } Requests& Requests::Get() @@ -18,67 +69,267 @@ namespace ArkApi return instance; } - bool Requests::CreateRequest(FString& url, FString& verb, - const std::function, bool)>& callback, FString content, - bool auto_remove, FString header_value) + void Requests::impl::WriteRequest(std::function callback, bool success, std::string result) + { + std::lock_guard Guard(RequestMutex_); + RequestsVec_.push_back({ callback, success, result }); + } + + Poco::Net::HTTPRequest Requests::impl::ConstructRequest(const std::string& url, Poco::Net::HTTPClientSession*& session, + const std::vector& headers, const std::string& request_type) { - TSharedRef request; - FHttpModule::Get()->CreateRequest(&request); + Poco::URI uri(url); - FString header_name = "Content-Type"; - FString Accepts_name = "Accepts"; - FString Accepts_value = "*/*"; + const std::string& path(uri.getPathAndQuery()); - request->SetHeader(&header_name, &header_value); - request->SetHeader(&Accepts_name, &Accepts_value); - request->SetURL(&url); - request->SetVerb(&verb); - request->SetContentAsString(&content); + if (uri.getScheme() == "https") + session = new Poco::Net::HTTPSClientSession(uri.getHost(), uri.getPort()); + else + session = new Poco::Net::HTTPClientSession(uri.getHost(), uri.getPort()); - requests_.push_back({request, callback, false, !auto_remove}); + Poco::Net::HTTPRequest request(request_type, path, Poco::Net::HTTPMessage::HTTP_1_1); + + if (!headers.empty()) + { + for (const auto& header : headers) + { + const std::string& key = header.substr(0, header.find(":")); + const std::string& data = header.substr(header.find(":") + 1); - return request->ProcessRequest(); + request.add(key, data); + } + } + + return request; } - void Requests::RemoveRequest(const TSharedRef& request) + std::string Requests::impl::GetResponse(Poco::Net::HTTPClientSession* session, Poco::Net::HTTPResponse& response) { - requests_.erase(remove_if(requests_.begin(), requests_.end(), [&request](const Request& cur_request) + std::string result = ""; + + std::istream& rs = session->receiveResponse(response); + + if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_OK) + { + std::ostringstream oss; + Poco::StreamCopier::copyStream(rs, oss); + result = oss.str(); + } + else { - return cur_request.request == request; - }), requests_.end()); + Poco::NullOutputStream null; + Poco::StreamCopier::copyStream(rs, null); + result = std::to_string(response.getStatus()) + " " + response.getReason(); + } + + return result; } - void Requests::Update() + bool Requests::CreateGetRequest(const std::string& url, const std::function& callback, + std::vector headers) { - auto& requests = Get().requests_; + std::thread([this, url, callback, headers] + { + std::string Result = ""; + Poco::Net::HTTPResponse response(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); + Poco::Net::HTTPClientSession* session = nullptr; - requests.erase(remove_if(requests.begin(), requests.end(), [](const Request& request) - { - return !request.remove_manually && request.completed; - }), requests.end()); + try + { + Poco::Net::HTTPRequest& request = pimpl->ConstructRequest(url, session, headers, Poco::Net::HTTPRequest::HTTP_GET); - const auto size = requests.size(); - for (auto i = 0; i < size; ++i) - { - auto& request = requests[i]; + session->sendRequest(request); + Result = pimpl->GetResponse(session, response); + } + catch (const Poco::Exception& exc) + { + Log::GetLog()->error(exc.displayText()); + } + + const bool success = (int)response.getStatus() >= 200 + && (int)response.getStatus() < 300; - const auto status = request.request->GetStatus(); - switch (status) + pimpl->WriteRequest(callback, success, Result); + delete session; + session = nullptr; + } + ).detach(); + + return true; + } + + bool Requests::CreatePostRequest(const std::string& url, const std::function& callback, + const std::string& post_data, std::vector headers) + { + std::thread([this, url, callback, post_data, headers] { - case EHttpRequestStatus::Succeeded: - case EHttpRequestStatus::Failed: - if (!request.completed) + std::string Result = ""; + Poco::Net::HTTPResponse response(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); + Poco::Net::HTTPClientSession* session = nullptr; + + try { - request.completed = true; + Poco::Net::HTTPRequest& request = pimpl->ConstructRequest(url, session, headers, Poco::Net::HTTPRequest::HTTP_POST); + + request.setContentType("application/x-www-form-urlencoded"); + request.setContentLength(post_data.length()); - request.callback(request.request, status == EHttpRequestStatus::Succeeded); + std::ostream& OutputStream = session->sendRequest(request); + OutputStream << post_data; + + Result = pimpl->GetResponse(session, response); + } + catch (const Poco::Exception& exc) + { + Log::GetLog()->error(exc.displayText()); } - break; - case EHttpRequestStatus::NotStarted: - case EHttpRequestStatus::Processing: - break; - default: ; + + const bool success = (int)response.getStatus() >= 200 + && (int)response.getStatus() < 300; + + pimpl->WriteRequest(callback, success, Result); + delete session; + session = nullptr; } - } + ).detach(); + + return true; + } + + bool Requests::CreatePostRequest(const std::string& url, const std::function& callback, + const std::string& post_data, const std::string& content_type, std::vector headers) + { + std::thread([this, url, callback, post_data, content_type, headers] + { + std::string Result = ""; + Poco::Net::HTTPResponse response(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); + Poco::Net::HTTPClientSession* session = nullptr; + + try + { + Poco::Net::HTTPRequest& request = pimpl->ConstructRequest(url, session, headers, Poco::Net::HTTPRequest::HTTP_POST); + + request.setContentType(content_type); + request.setContentLength(post_data.length()); + + std::ostream& OutputStream = session->sendRequest(request); + OutputStream << post_data; + + Result = pimpl->GetResponse(session, response); + } + catch (const Poco::Exception& exc) + { + Log::GetLog()->error(exc.displayText()); + } + + const bool success = (int)response.getStatus() >= 200 + && (int)response.getStatus() < 300; + + pimpl->WriteRequest(callback, success, Result); + delete session; + session = nullptr; + } + ).detach(); + + return true; + } + + bool Requests::CreatePostRequest(const std::string& url, const std::function& callback, + const std::vector& post_ids, + const std::vector& post_data, std::vector headers) + { + if (post_ids.size() != post_data.size()) + return false; + + std::thread([this, url, callback, post_ids, post_data, headers] + { + std::string Result = ""; + Poco::Net::HTTPResponse response(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); + Poco::Net::HTTPClientSession* session = nullptr; + + try + { + Poco::Net::HTTPRequest& request = pimpl->ConstructRequest(url, session, headers, Poco::Net::HTTPRequest::HTTP_POST); + + std::string body; + + for (size_t i = 0; i < post_ids.size(); ++i) + { + const std::string& id = post_ids[i]; + const std::string& data = post_data[i]; + + body += fmt::format("{}={}&", Poco::UTF8::escape(id), Poco::UTF8::escape(data)); + } + + body.pop_back(); // Remove last '&' + + request.setContentType("application/x-www-form-urlencoded"); + request.setContentLength(body.size()); + + std::ostream& OutputStream = session->sendRequest(request); + OutputStream << body; + + Result = pimpl->GetResponse(session, response); + } + catch (const Poco::Exception& exc) + { + Log::GetLog()->error(exc.displayText()); + } + + const bool success = (int)response.getStatus() >= 200 + && (int)response.getStatus() < 300; + + pimpl->WriteRequest(callback, success, Result); + delete session; + session = nullptr; + } + ).detach(); + + return true; + } + + bool Requests::CreateDeleteRequest(const std::string& url, const std::function& callback, + std::vector headers) + { + std::thread([this, url, callback, headers] + { + std::string Result = ""; + Poco::Net::HTTPResponse response(Poco::Net::HTTPResponse::HTTP_BAD_REQUEST); + Poco::Net::HTTPClientSession* session = nullptr; + + try + { + Poco::Net::HTTPRequest& request = pimpl->ConstructRequest(url, session, headers, Poco::Net::HTTPRequest::HTTP_DELETE); + + session->sendRequest(request); + Result = pimpl->GetResponse(session, response); + } + catch (const Poco::Exception& exc) + { + Log::GetLog()->error(exc.displayText()); + } + + const bool success = (int)response.getStatus() >= 200 + && (int)response.getStatus() < 300; + + pimpl->WriteRequest(callback, success, Result); + delete session; + session = nullptr; + } + ).detach(); + + return true; + } + + void Requests::impl::Update() + { + if (RequestsVec_.empty()) + return; + + RequestMutex_.lock(); + std::vector requests_temp = std::move(RequestsVec_); + RequestMutex_.unlock(); + + for (const auto& request : requests_temp) { request.callback(request.success, request.result); } } -} +} // namespace API \ No newline at end of file diff --git a/version/Core/Private/Tools/Timer.cpp b/version/Core/Private/Tools/Timer.cpp new file mode 100644 index 00000000..ae024f0a --- /dev/null +++ b/version/Core/Private/Tools/Timer.cpp @@ -0,0 +1,111 @@ +#include + +#include "../IBaseApi.h" + +namespace API +{ + Timer::Timer() + { + game_api->GetCommands()->AddOnTimerCallback("TimerUpdate", std::bind(&Timer::Update, this)); + } + + Timer::~Timer() + { + game_api->GetCommands()->RemoveOnTimerCallback("TimerUpdate"); + } + + Timer& Timer::Get() + { + static Timer instance; + return instance; + } + + void Timer::DelayExecuteInternal(const std::function& callback, int delay_seconds) + { + const auto now = std::chrono::system_clock::now(); + const auto exec_time = now + std::chrono::seconds(delay_seconds); + + timer_funcs_.emplace_back(std::make_unique(exec_time, callback, true, 1, 0)); + } + + void Timer::RecurringExecuteInternal(const std::function& callback, int execution_interval, + int execution_counter, bool async) + { + if (async) + { + std::thread([callback, execution_interval, execution_counter]() + { + if (execution_counter == -1) + { + for (;;) + { + callback(); + std::this_thread::sleep_for(std::chrono::seconds(execution_interval)); + } + } + + for (int i = 0; i < execution_counter; ++i) + { + callback(); + std::this_thread::sleep_for(std::chrono::seconds(execution_interval)); + } + }).detach(); + } + else + { + const auto now = std::chrono::system_clock::now(); + timer_funcs_.emplace_back( + std::make_unique(now, callback, false, execution_counter, execution_interval)); + } + } + + void Timer::Update() + { + if (timer_funcs_.empty()) + { + return; + } + + const auto now = std::chrono::system_clock::now(); + + bool remove = false; + + for (const auto& data : timer_funcs_) + { + if (data == nullptr) continue; + + if (now >= data->next_time) + { + if (data->exec_once) + { + remove = true; + } + else + { + if (data->execution_counter > 0) + { + --data->execution_counter; + } + else if (data->execution_counter != -1) + { + remove = true; + continue; + } + + data->next_time = now + std::chrono::seconds(data->execution_interval); + } + + data->callback(); + } + } + + if (remove) + { + timer_funcs_.erase(std::remove_if(timer_funcs_.begin(), timer_funcs_.end(), [&now](const auto& data) + { + return (now >= data->next_time && data->exec_once) || + (!data->exec_once && data->execution_counter == 0); + }), timer_funcs_.end()); + } + } +} // namespace API diff --git a/version/Core/Private/Tools/Timer.cpp.rej b/version/Core/Private/Tools/Timer.cpp.rej new file mode 100644 index 00000000..6073f8e2 --- /dev/null +++ b/version/Core/Private/Tools/Timer.cpp.rej @@ -0,0 +1,10 @@ +diff a/version/Core/Private/Tools/Timer.cpp b/version/Core/Private/Tools/Timer.cpp (rejected hunks) +@@ -32,7 +32,7 @@ + { + const auto& timer_funcs = std::find_if(timer_funcs_.begin(), timer_funcs_.end(), [&timer_name](const auto& data) + { +- return timer_id == data->timer_id; ++ return timer_name == data->timer_name; + }); + + if (timer_funcs != timer_funcs_.end()) diff --git a/version/Core/Private/Tools/Tools.cpp b/version/Core/Private/Tools/Tools.cpp index ac46288b..ce48b551 100644 --- a/version/Core/Private/Tools/Tools.cpp +++ b/version/Core/Private/Tools/Tools.cpp @@ -1,5 +1,6 @@ #include +#include "../IBaseApi.h" #include "../PluginManager/PluginManager.h" namespace ArkApi::Tools @@ -14,7 +15,7 @@ namespace ArkApi::Tools return std::string(buffer).substr(0, pos); } - std::wstring ConvertToWideStr(const std::string& text) + [[deprecated]] std::wstring ConvertToWideStr(const std::string& text) { const size_t size = text.size(); @@ -30,7 +31,7 @@ namespace ArkApi::Tools return wstr; } - std::string ConvertToAnsiStr(const std::wstring& text) + [[deprecated]] std::string ConvertToAnsiStr(const std::wstring& text) { const size_t length = text.size(); @@ -42,39 +43,52 @@ namespace ArkApi::Tools std::string Utf8Encode(const std::wstring& wstr) { + std::string converted_string; + if (wstr.empty()) - return std::string(); + return converted_string; - const int size_needed = WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), nullptr, 0, - nullptr, nullptr); + const auto size_needed = WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), nullptr, 0, + nullptr, nullptr); + if (size_needed > 0) + { + converted_string.resize(size_needed); - std::string str(size_needed, 0); - WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), str.data(), size_needed, nullptr, - nullptr); + WideCharToMultiByte(CP_UTF8, 0, wstr.data(), static_cast(wstr.size()), converted_string.data(), + size_needed, nullptr, nullptr); + } - return str; + return converted_string; } std::wstring Utf8Decode(const std::string& str) { + std::wstring converted_string; + if (str.empty()) - return std::wstring(); + { + return converted_string; + } - const int size_needed = MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), nullptr, 0); + const auto size_needed = MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), nullptr, 0); + if (size_needed > 0) + { + converted_string.resize(size_needed); - std::wstring wstr(size_needed, 0); - MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), wstr.data(), size_needed); + MultiByteToWideChar(CP_UTF8, 0, str.data(), static_cast(str.size()), converted_string.data(), + size_needed); + } - return wstr; + return converted_string; } bool IsPluginLoaded(const std::string& plugin_name) { - return PluginManager::Get().IsPluginLoaded(plugin_name); + return API::PluginManager::Get().IsPluginLoaded(plugin_name); } - std::string GetApiVer() + float GetApiVersion() { - return API_VERSION; + return API::game_api->GetVersion(); } -} +} // namespace Tools // namespace ArkApi diff --git a/version/Core/Private/UE/UE.cpp b/version/Core/Private/UE/UE.cpp new file mode 100644 index 00000000..f5c309b8 --- /dev/null +++ b/version/Core/Private/UE/UE.cpp @@ -0,0 +1,10 @@ +#pragma once +#include "API\UE\UE.h" + +__declspec(dllexport) UProperty* UObject::FindProperty(FName name) +{ + for (UProperty* Property = this->ClassField()->PropertyLinkField(); Property = Property->PropertyLinkNextField();) + if (Property->NameField().Compare(&name) == 0) + return Property; + return nullptr; +} diff --git a/version/Core/Public/API/ARK/Actor.h b/version/Core/Public/API/ARK/Actor.h index 1994a320..b8a5d0ae 100644 --- a/version/Core/Public/API/ARK/Actor.h +++ b/version/Core/Public/API/ARK/Actor.h @@ -44,6 +44,12 @@ struct FUniqueNetIdRepl TSharedPtr UniqueNetId; }; +struct FWeightedObjectList +{ + TArray Weights; + TArray AssociatedObjects; +}; + struct FActorSpawnParameters { FActorSpawnParameters() @@ -81,6 +87,42 @@ struct FActorSpawnParameters FName AttachToBoneName; }; +struct FItemSetup +{ + TSubclassOf ItemType; + FString ItemBlueprintPath; + float MinQuality; + float MaxQuality; + int Quantity; + __int8 bAutoEquip : 1; + __int8 bDontStack : 1; + __int8 bForceBlueprint : 1; +}; + + +struct __declspec(align(8)) FDinoSetup +{ + TSubclassOf DinoType; + FString DinoBlueprintPath; + FString DinoName; + int DinoLevel; + char BasePointsPerStat[12]; + char PlayerAddedPointsPerStat[12]; + FVector SpawnOffset; + TEnumAsByte DinoState; + TArray> PrioritizeStats; + TArray TamedDinoInventory; + TSubclassOf SaddleType; + FString SaddleBlueprintPath; + float SaddleQuality; + float SaddleMinRandomQuality; + unsigned __int32 bIsTamed : 1; + unsigned __int32 bIgnoreMaxTameLimit : 1; + unsigned __int32 bBlockTamedDialog : 1; + unsigned __int32 bAutoEquipSaddle : 1; + unsigned __int32 bUseFixedSpawnLevel : 1; +}; + struct FPlayerDeathReason { int PlayerID; @@ -99,6 +141,59 @@ struct __declspec(align(8)) FPrimalPlayerCharacterConfigStruct FString PlayerCharacterName; float RawBoneModifiers[22]; int PlayerSpawnRegionIndex; + + FPrimalPlayerCharacterConfigStruct() + { + FLinearColor black = FLinearColor(0, 0, 0); + bIsFemale = false; + for (int i = 0; i < 4; ++i) + BodyColors[i] = black; + OverrideHeadHairColor = black; + OverrideFacialHairColor = black; + PlayerSpawnRegionIndex = 0; + PlayerCharacterName = L"Survivor"; + FMemory::Memzero(&RawBoneModifiers, sizeof(RawBoneModifiers)); + } +}; + +struct FPrimalPlayerCharacterConfigStructReplicated +{ + uint8 bIsFemale : 1; + FLinearColor BodyColors[4]; + FString PlayerCharacterName; + float RawBoneModifiers[22]; + int32 PlayerSpawnRegionIndex; + + FPrimalPlayerCharacterConfigStructReplicated() + { + FLinearColor black = FLinearColor(0, 0, 0); + bIsFemale = false; + for (int i = 0; i < 4; ++i) + BodyColors[i] = black; + PlayerSpawnRegionIndex = 0; + PlayerCharacterName = L"Survivor"; + FMemory::Memzero(&RawBoneModifiers, sizeof(RawBoneModifiers)); + } + + FPrimalPlayerCharacterConfigStructReplicated(const FPrimalPlayerCharacterConfigStruct& original) + { + bIsFemale = original.bIsFemale; + PlayerCharacterName = original.PlayerCharacterName; + PlayerSpawnRegionIndex = original.PlayerSpawnRegionIndex; + FMemory::Memcpy(&BodyColors, &original.BodyColors, sizeof(BodyColors)); + FMemory::Memcpy(&RawBoneModifiers, &original.RawBoneModifiers, sizeof(RawBoneModifiers)); + } + + FPrimalPlayerCharacterConfigStruct GetPlayerCharacterConfig() + { + FPrimalPlayerCharacterConfigStruct toReturn; + toReturn.bIsFemale = bIsFemale; + toReturn.PlayerCharacterName = PlayerCharacterName; + toReturn.PlayerSpawnRegionIndex = PlayerSpawnRegionIndex; + FMemory::Memcpy(&toReturn.BodyColors, &BodyColors, sizeof(BodyColors)); + FMemory::Memcpy(&toReturn.RawBoneModifiers, &RawBoneModifiers, sizeof(RawBoneModifiers)); + return toReturn; + } }; struct FPrimalCharacterStatusValueModifier @@ -115,6 +210,33 @@ struct FPrimalCharacterStatusValueModifier int StatusValueModifierDescriptionIndex; }; +struct FArkTributeEntity +{ + int UploadTime; +}; + +struct FARKTributeDino : FArkTributeEntity +{ + FString DinoClassName; + UClass* DinoClass; + TArray DinoData; + FString DinoName; + FString DinoNameInMap; + FString DinoStats[12]; + float DinoExperiencePoints; + float Version; + unsigned int DinoID1; + unsigned int DinoID2; +}; + +struct FARKDinoData +{ + UClass* DinoClass; + TArray DinoData; + FString DinoNameInMap; + FString DinoName; +}; + struct FDinoBaseLevelWeightEntry { float EntryWeight; @@ -122,11 +244,13 @@ struct FDinoBaseLevelWeightEntry float BaseLevelMaxRange; }; -struct FClassRemappingWeight +struct __declspec(align(8)) FClassRemappingWeight { TSubclassOf FromClass; TArray> ToClasses; TArray Weights; + FName ActiveEvent; + unsigned __int32 bExactMatch : 1; }; struct FClassNameReplacement @@ -142,6 +266,24 @@ struct FNPCDifficultyLevelRange TArray GameDifficulties; }; +struct FAlivePlayerDataInfo +{ + FString PlayerName; + FString PlayerSteamName; + unsigned __int64 PlayerID; + FString TribeName; + unsigned __int64 TargetingTeamID; +}; + +struct FAdminPlayerDataInfo +{ + FString PlayerName; + FString PlayerSteamName; + FString SteamID; + __int64 LinkedPlayerID; + bool IsHost; +}; + struct FNPCSpawnEntry { FString AnEntryName; @@ -190,20 +332,96 @@ struct FConfigCacheIni { }; +struct FARKTributeDinoListing +{ + FString DinoName; + FString DinoStats[12]; + float DinoExperiencePoints; + UClass* DinoClass; + unsigned int DinoID1; + unsigned int DinoID2; + unsigned int ExpirationTimeUTC; +}; + +struct FPrimalCharacterStatusStateDefinition +{ + TEnumAsByte StatusValueType; + int StatusValueThresholdIndex; + UTexture2D* StatusStateIcon; + FString StatusStateName; + FString StatusStateDescription; + FColor StatusStateNameColor; + bool bUsed; + bool bDisplayHUDMessage; + FString HUDMessage; + FColor HUDMessageColor; + int BuffType; +}; + +struct __declspec(align(8)) FPrimalCharacterStatusValueDefinition +{ + UTexture2D* StatusValueIcon; + FString StatusValueName; + bool bLevelUpSetToMaxValue; + bool bDisplayHideCurrentValue; + bool bDisplayAsPercent; +}; + +struct FARKTributeData +{ + FGuid ID; + TEnumAsByte DataType; + TArray DataBytes; + FString DataClassName; + FString DataTagName; + FString Name; + TArray DataStats; + long double LastReceiveDataTime; + unsigned int DataID1; + unsigned int DataID2; +}; + +struct FArkTributePlayerDataListing +{ + unsigned __int64 PlayerDataID; + FString PlayerName; + FString PlayerStats[12]; + bool bWasAllowDPCUpload; + FString UploadingServerMapName; + bool bWithItems; + unsigned int ItemCount; + float Version; + unsigned int ExpirationTimeUTC; +}; + +struct FArkTributePlayerData : FArkTributeEntity +{ + unsigned __int64 PlayerDataID; + TArray PlayerDataBytes; + FString PlayerName; + FString PlayerStats[12]; + FString UploadingServerMapName; + bool bWasAllowDPCUpload; + bool bWithItems; + unsigned int ItemCount; + bool bForServerTransfer; + float Version; +}; + struct USceneComponent : UActorComponent { FTransform& ComponentToWorldField() { return *GetNativePointerField(this, "USceneComponent.ComponentToWorld"); } TEnumAsByte& MobilityField() { return *GetNativePointerField*>(this, "USceneComponent.Mobility"); } FBoxSphereBounds& BoundsField() { return *GetNativePointerField(this, "USceneComponent.Bounds"); } - USceneComponent * AttachParentField() { return *GetNativePointerField(this, "USceneComponent.AttachParent"); } + USceneComponent* AttachParentField() { return *GetNativePointerField(this, "USceneComponent.AttachParent"); } FName& AttachSocketNameField() { return *GetNativePointerField(this, "USceneComponent.AttachSocketName"); } - TArray AttachChildrenField() { return *GetNativePointerField*>(this, "USceneComponent.AttachChildren"); } + TArray AttachChildrenField() { return *GetNativePointerField*>(this, "USceneComponent.AttachChildren"); } FVector& RelativeLocationField() { return *GetNativePointerField(this, "USceneComponent.RelativeLocation"); } FRotator& RelativeRotationField() { return *GetNativePointerField(this, "USceneComponent.RelativeRotation"); } TEnumAsByte& DetailModeField() { return *GetNativePointerField*>(this, "USceneComponent.DetailMode"); } int& AttachmentChangedIncrementerField() { return *GetNativePointerField(this, "USceneComponent.AttachmentChangedIncrementer"); } bool& NetUpdateTransformField() { return *GetNativePointerField(this, "USceneComponent.NetUpdateTransform"); } - USceneComponent * NetOldAttachParentField() { return *GetNativePointerField(this, "USceneComponent.NetOldAttachParent"); } + USceneComponent* NetOldAttachParentField() { return *GetNativePointerField(this, "USceneComponent.NetOldAttachParent"); } FName& NetOldAttachSocketNameField() { return *GetNativePointerField(this, "USceneComponent.NetOldAttachSocketName"); } FVector& RelativeScale3DField() { return *GetNativePointerField(this, "USceneComponent.RelativeScale3D"); } FVector& ComponentVelocityField() { return *GetNativePointerField(this, "USceneComponent.ComponentVelocity"); } @@ -225,73 +443,82 @@ struct USceneComponent : UActorComponent BitFieldValue bUseAttachParentBound() { return { this, "USceneComponent.bUseAttachParentBound" }; } BitFieldValue bWorldToComponentUpdated() { return { this, "USceneComponent.bWorldToComponentUpdated" }; } BitFieldValue bClientSyncAlwaysUpdatePhysicsCollision() { return { this, "USceneComponent.bClientSyncAlwaysUpdatePhysicsCollision" }; } + BitFieldValue bIgnoreParentTransformUpdate() { return { this, "USceneComponent.bIgnoreParentTransformUpdate" }; } // Functions - void OnChildAttached(USceneComponent * ChildComponent) { NativeCall(this, "USceneComponent.OnChildAttached", ChildComponent); } - FVector * GetCustomLocation(FVector * result) { return NativeCall(this, "USceneComponent.GetCustomLocation", result); } - UField * StaticClass() { return NativeCall(this, "USceneComponent.StaticClass"); } - FVector * GetForwardVector(FVector * result) { return NativeCall(this, "USceneComponent.GetForwardVector", result); } - FTransform * CalcNewComponentToWorld(FTransform * result, FTransform * NewRelativeTransform, USceneComponent * Parent) { return NativeCall(this, "USceneComponent.CalcNewComponentToWorld", result, NewRelativeTransform, Parent); } - void UpdateComponentToWorldWithParent(USceneComponent * Parent, bool bSkipPhysicsMove, FQuat * RelativeRotationQuat) { NativeCall(this, "USceneComponent.UpdateComponentToWorldWithParent", Parent, bSkipPhysicsMove, RelativeRotationQuat); } + static UClass* StaticClass() { return NativeCall(nullptr, "USceneComponent.StaticClass"); } + void OnChildAttached(USceneComponent* ChildComponent) { NativeCall(this, "USceneComponent.OnChildAttached", ChildComponent); } + FVector* GetCustomLocation(FVector* result) { return NativeCall(this, "USceneComponent.GetCustomLocation", result); } + + bool IsCollisionEnabled() { return NativeCall(this, "USceneComponent.IsCollisionEnabled"); } + TArray* GetAllSocketNames(TArray* result) { return NativeCall*, TArray*>(this, "USceneComponent.GetAllSocketNames", result); } + FVector* GetForwardVector(FVector* result) { return NativeCall(this, "USceneComponent.GetForwardVector", result); } + FTransform* CalcNewComponentToWorld(FTransform* result, FTransform* NewRelativeTransform, USceneComponent* Parent) { return NativeCall(this, "USceneComponent.CalcNewComponentToWorld", result, NewRelativeTransform, Parent); } + void UpdateComponentToWorldWithParent(USceneComponent* Parent, bool bSkipPhysicsMove, FQuat* RelativeRotationQuat) { NativeCall(this, "USceneComponent.UpdateComponentToWorldWithParent", Parent, bSkipPhysicsMove, RelativeRotationQuat); } void OnRegister() { NativeCall(this, "USceneComponent.OnRegister"); } void UpdateComponentToWorld(bool bSkipPhysicsMove) { NativeCall(this, "USceneComponent.UpdateComponentToWorld", bSkipPhysicsMove); } void PropagateTransformUpdate(bool bTransformChanged, bool bSkipPhysicsMove) { NativeCall(this, "USceneComponent.PropagateTransformUpdate", bTransformChanged, bSkipPhysicsMove); } void DestroyComponent() { NativeCall(this, "USceneComponent.DestroyComponent"); } - FBoxSphereBounds * CalcBounds(FBoxSphereBounds * result, FTransform * LocalToWorld) { return NativeCall(this, "USceneComponent.CalcBounds", result, LocalToWorld); } - void CalcBoundingCylinder(float * CylinderRadius, float * CylinderHalfHeight) { NativeCall(this, "USceneComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USceneComponent.CalcBounds", result, LocalToWorld); } + void CalcBoundingCylinder(float* CylinderRadius, float* CylinderHalfHeight) { NativeCall(this, "USceneComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } void UpdateBounds() { NativeCall(this, "USceneComponent.UpdateBounds"); } - void SetRelativeLocationAndRotation(FVector NewLocation, FQuat * NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetRelativeLocationAndRotation(FVector NewLocation, FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeLocationAndRotation", NewLocation, NewRotation, bSweep); } void AddLocalOffset(FVector DeltaLocation, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalOffset", DeltaLocation, bSweep); } void AddLocalRotation(FRotator DeltaRotation, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalRotation", DeltaRotation, bSweep); } - void AddLocalTransform(FTransform * DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalTransform", DeltaTransform, bSweep); } - void AddWorldTransform(FTransform * DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddWorldTransform", DeltaTransform, bSweep); } + void AddLocalTransform(FTransform* DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalTransform", DeltaTransform, bSweep); } + void AddWorldTransform(FTransform* DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddWorldTransform", DeltaTransform, bSweep); } void SetRelativeScale3D(FVector NewScale3D) { NativeCall(this, "USceneComponent.SetRelativeScale3D", NewScale3D); } void ResetRelativeTransform() { NativeCall(this, "USceneComponent.ResetRelativeTransform"); } - void SetRelativeTransform(FTransform * NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeTransform", NewTransform, bSweep); } - FTransform * GetRelativeTransform(FTransform * result) { return NativeCall(this, "USceneComponent.GetRelativeTransform", result); } + void SetRelativeTransform(FTransform* NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeTransform", NewTransform, bSweep); } + FTransform* GetRelativeTransform(FTransform* result) { return NativeCall(this, "USceneComponent.GetRelativeTransform", result); } void SetWorldLocation(FVector NewLocation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocation", NewLocation, bSweep); } - void SetWorldRotation(FQuat * NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldRotation", NewRotation, bSweep); } + void SetWorldRotation(FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldRotation", NewRotation, bSweep); } void SetWorldScale3D(FVector NewScale) { NativeCall(this, "USceneComponent.SetWorldScale3D", NewScale); } - void SetWorldTransform(FTransform * NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldTransform", NewTransform, bSweep); } - void SetWorldLocationAndRotation(FVector NewLocation, FQuat * NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotation", NewLocation, NewRotation, bSweep); } - void SetWorldLocationAndRotationNoPhysics(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotationNoPhysics", NewLocation, NewRotation); } - FVector * GetRightVector(FVector * result) { return NativeCall(this, "USceneComponent.GetRightVector", result); } - FVector * GetUpVector(FVector * result) { return NativeCall(this, "USceneComponent.GetUpVector", result); } - void GetParentComponents(TArray * Parents) { NativeCall *>(this, "USceneComponent.GetParentComponents", Parents); } - void GetChildrenComponents(bool bIncludeAllDescendants, TArray * Children) { NativeCall *>(this, "USceneComponent.GetChildrenComponents", bIncludeAllDescendants, Children); } - void AppendDescendants(TArray * Children) { NativeCall *>(this, "USceneComponent.AppendDescendants", Children); } - void AttachTo(USceneComponent * Parent, FName InSocketName, EAttachLocation::Type AttachType, bool bWeldSimulatedBodies) { NativeCall(this, "USceneComponent.AttachTo", Parent, InSocketName, AttachType, bWeldSimulatedBodies); } + void SetWorldTransform(FTransform* NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldTransform", NewTransform, bSweep); } + void SetWorldLocationAndRotation(FVector NewLocation, FRotator NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetWorldLocationAndRotation(FVector NewLocation, FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetWorldLocationAndRotationNoPhysics(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotationNoPhysics", NewLocation, NewRotation); } + void SetAbsolute(bool bNewAbsoluteLocation, bool bNewAbsoluteRotation, bool bNewAbsoluteScale) { NativeCall(this, "USceneComponent.SetAbsolute", bNewAbsoluteLocation, bNewAbsoluteRotation, bNewAbsoluteScale); } + FVector* GetRightVector(FVector* result) { return NativeCall(this, "USceneComponent.GetRightVector", result); } + FVector* GetUpVector(FVector* result) { return NativeCall(this, "USceneComponent.GetUpVector", result); } + USceneComponent* GetAttachParent() { return NativeCall(this, "USceneComponent.GetAttachParent"); } + void GetChildrenComponents(bool bIncludeAllDescendants, TArray* Children) { NativeCall*>(this, "USceneComponent.GetChildrenComponents", bIncludeAllDescendants, Children); } + void AppendDescendants(TArray* Children) { NativeCall*>(this, "USceneComponent.AppendDescendants", Children); } + void AttachTo(USceneComponent* Parent, FName InSocketName, EAttachLocation::Type AttachType, bool bWeldSimulatedBodies) { NativeCall(this, "USceneComponent.AttachTo", Parent, InSocketName, AttachType, bWeldSimulatedBodies); } void DetachFromParent(bool bMaintainWorldPosition) { NativeCall(this, "USceneComponent.DetachFromParent", bMaintainWorldPosition); } - FVector * GetMeshScaleMultiplier(FVector * result) { return NativeCall(this, "USceneComponent.GetMeshScaleMultiplier", result); } - AActor * GetAttachmentRootActor() { return NativeCall(this, "USceneComponent.GetAttachmentRootActor"); } + FVector* GetMeshScaleMultiplier(FVector* result) { return NativeCall(this, "USceneComponent.GetMeshScaleMultiplier", result); } + FTransform* GetBaseToWorldTransform(FTransform* result) { return NativeCall(this, "USceneComponent.GetBaseToWorldTransform", result); } + AActor* GetAttachmentRootActor() { return NativeCall(this, "USceneComponent.GetAttachmentRootActor"); } void UpdateChildTransforms() { NativeCall(this, "USceneComponent.UpdateChildTransforms"); } - void PostInterpChange(UProperty * PropertyThatChanged) { NativeCall(this, "USceneComponent.PostInterpChange", PropertyThatChanged); } - FTransform * GetSocketTransform(FTransform * result, FName SocketName, ERelativeTransformSpace TransformSpace) { return NativeCall(this, "USceneComponent.GetSocketTransform", result, SocketName, TransformSpace); } - FVector * GetSocketLocation(FVector * result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketLocation", result, SocketName); } - FRotator * GetSocketRotation(FRotator * result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketRotation", result, SocketName); } - FQuat * GetSocketQuaternion(FQuat * result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketQuaternion", result, SocketName); } - FVector * GetComponentVelocity(FVector * result) { return NativeCall(this, "USceneComponent.GetComponentVelocity", result); } - void GetSocketWorldLocationAndRotation(FName InSocketName, FVector * OutLocation, FRotator * OutRotation) { NativeCall(this, "USceneComponent.GetSocketWorldLocationAndRotation", InSocketName, OutLocation, OutRotation); } - FCollisionResponseContainer * GetCollisionResponseToChannels() { return NativeCall(this, "USceneComponent.GetCollisionResponseToChannels"); } + void Serialize(FArchive* Ar) { NativeCall(this, "USceneComponent.Serialize", Ar); } + void PostInterpChange(UProperty* PropertyThatChanged) { NativeCall(this, "USceneComponent.PostInterpChange", PropertyThatChanged); } + FTransform* GetSocketTransform(FTransform* result, FName SocketName, ERelativeTransformSpace TransformSpace) { return NativeCall(this, "USceneComponent.GetSocketTransform", result, SocketName, TransformSpace); } + FVector* GetSocketLocation(FVector* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketLocation", result, SocketName); } + FRotator* GetSocketRotation(FRotator* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketRotation", result, SocketName); } + FQuat* GetSocketQuaternion(FQuat* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketQuaternion", result, SocketName); } + FVector* GetComponentVelocity(FVector* result) { return NativeCall(this, "USceneComponent.GetComponentVelocity", result); } + void GetSocketWorldLocationAndRotation(FName InSocketName, FVector* OutLocation, FRotator* OutRotation) { NativeCall(this, "USceneComponent.GetSocketWorldLocationAndRotation", InSocketName, OutLocation, OutRotation); } + FCollisionResponseContainer* GetCollisionResponseToChannels() { return NativeCall(this, "USceneComponent.GetCollisionResponseToChannels"); } void SetMobility(EComponentMobility::Type NewMobility) { NativeCall(this, "USceneComponent.SetMobility", NewMobility); } bool IsAnySimulatingPhysics() { return NativeCall(this, "USceneComponent.IsAnySimulatingPhysics"); } void UpdatePhysicsVolume(bool bTriggerNotifiers) { NativeCall(this, "USceneComponent.UpdatePhysicsVolume", bTriggerNotifiers); } void BeginDestroy() { NativeCall(this, "USceneComponent.BeginDestroy"); } - bool InternalSetWorldLocationAndRotation(FVector NewLocation, FQuat * RotationQuat, bool bNoPhysics) { return NativeCall(this, "USceneComponent.InternalSetWorldLocationAndRotation", NewLocation, RotationQuat, bNoPhysics); } - bool MoveComponentImpl(FVector * Delta, FQuat * NewRotation, bool bSweep, FHitResult * OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "USceneComponent.MoveComponentImpl", Delta, NewRotation, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } + bool InternalSetWorldLocationAndRotation(FVector NewLocation, FQuat* RotationQuat, bool bNoPhysics) { return NativeCall(this, "USceneComponent.InternalSetWorldLocationAndRotation", NewLocation, RotationQuat, bNoPhysics); } + bool MoveComponentImpl(FVector* Delta, FQuat* NewRotation, bool bSweep, FHitResult* OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "USceneComponent.MoveComponentImpl", Delta, NewRotation, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } bool IsVisibleInEditor() { return NativeCall(this, "USceneComponent.IsVisibleInEditor"); } bool ShouldRender() { return NativeCall(this, "USceneComponent.ShouldRender"); } bool CanEverRender() { return NativeCall(this, "USceneComponent.CanEverRender"); } bool IsVisible() { return NativeCall(this, "USceneComponent.IsVisible"); } void SetVisibility(bool bNewVisibility, bool bPropagateToChildren) { NativeCall(this, "USceneComponent.SetVisibility", bNewVisibility, bPropagateToChildren); } void SetHiddenInGame(bool NewHiddenGame, bool bPropagateToChildren) { NativeCall(this, "USceneComponent.SetHiddenInGame", NewHiddenGame, bPropagateToChildren); } - void ApplyWorldOffset(FVector * InOffset, bool bWorldShift) { NativeCall(this, "USceneComponent.ApplyWorldOffset", InOffset, bWorldShift); } - FBoxSphereBounds * GetPlacementExtent(FBoxSphereBounds * result) { return NativeCall(this, "USceneComponent.GetPlacementExtent", result); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "USceneComponent.ApplyWorldOffset", InOffset, bWorldShift); } + FBoxSphereBounds* GetPlacementExtent(FBoxSphereBounds* result) { return NativeCall(this, "USceneComponent.GetPlacementExtent", result); } void PreNetReceive() { NativeCall(this, "USceneComponent.PreNetReceive"); } void PostNetReceive() { NativeCall(this, "USceneComponent.PostNetReceive"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "USceneComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } - void StopSound(USoundBase * SoundToStop, float FadeOutTime) { NativeCall(this, "USceneComponent.StopSound", SoundToStop, FadeOutTime); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "USceneComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + void StopSound(USoundBase* SoundToStop, float FadeOutTime) { NativeCall(this, "USceneComponent.StopSound", SoundToStop, FadeOutTime); } + FVector* GetWorldLocation(FVector* result) { return NativeCall(this, "USceneComponent.GetWorldLocation", result); } static void StaticRegisterNativesUSceneComponent() { NativeCall(nullptr, "USceneComponent.StaticRegisterNativesUSceneComponent"); } }; @@ -324,6 +551,16 @@ struct UPrimitiveComponent : USceneComponent long double& LastRenderTimeIgnoreShadowField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastRenderTimeIgnoreShadow"); } TEnumAsByte& CanCharacterStepUpOnField() { return *GetNativePointerField*>(this, "UPrimitiveComponent.CanCharacterStepUpOn"); } TArray>& MoveIgnoreActorsField() { return *GetNativePointerField>*>(this, "UPrimitiveComponent.MoveIgnoreActors"); } + FComponentBeginOverlapSignature& OnComponentBeginOverlapField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnComponentBeginOverlap"); } + FComponentEndOverlapSignature& OnComponentEndOverlapField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnComponentEndOverlap"); } + FComponentBeginCursorOverSignature& OnBeginCursorOverField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnBeginCursorOver"); } + FComponentEndCursorOverSignature& OnEndCursorOverField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnEndCursorOver"); } + FComponentOnClickedSignature& OnClickedField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnClicked"); } + FComponentOnReleasedSignature& OnReleasedField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnReleased"); } + FComponentOnInputTouchBeginSignature& OnInputTouchBeginField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchBegin"); } + FComponentOnInputTouchEndSignature& OnInputTouchEndField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchEnd"); } + FComponentBeginTouchOverSignature& OnInputTouchEnterField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchEnter"); } + FComponentEndTouchOverSignature& OnInputTouchLeaveField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchLeave"); } unsigned int& ProxyMeshIDField() { return *GetNativePointerField(this, "UPrimitiveComponent.ProxyMeshID"); } bool& bIsProxyMeshParentField() { return *GetNativePointerField(this, "UPrimitiveComponent.bIsProxyMeshParent"); } bool& bHasActiveProxyMeshChildrenField() { return *GetNativePointerField(this, "UPrimitiveComponent.bHasActiveProxyMeshChildren"); } @@ -390,12 +627,12 @@ struct UPrimitiveComponent : USceneComponent // Functions - UField * GetPrivateStaticClass() { return NativeCall(this, "UPrimitiveComponent.GetPrivateStaticClass"); } - void GetLightAndShadowMapMemoryUsage(int * OutNum, int * OutMax) { NativeCall(this, "UPrimitiveComponent.GetLightAndShadowMapMemoryUsage", OutNum, OutMax); } - bool CanBeBaseForCharacter(APawn * Pawn) { return NativeCall(this, "UPrimitiveComponent.CanBeBaseForCharacter", Pawn); } - bool AreSymmetricRotations(FQuat * A, FQuat * B, FVector * Scale3D) { return NativeCall(this, "UPrimitiveComponent.AreSymmetricRotations", A, B, Scale3D); } + bool CanBeBaseForCharacter(APawn* Pawn) { return NativeCall(this, "UPrimitiveComponent.CanBeBaseForCharacter", Pawn); } + bool AreSymmetricRotations(FQuat* A, FQuat* B, FVector* Scale3D) { return NativeCall(this, "UPrimitiveComponent.AreSymmetricRotations", A, B, Scale3D); } char GetStaticDepthPriorityGroup() { return NativeCall(this, "UPrimitiveComponent.GetStaticDepthPriorityGroup"); } bool HasValidSettingsForStaticLighting() { return NativeCall(this, "UPrimitiveComponent.HasValidSettingsForStaticLighting"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimitiveComponent.GetPrivateStaticClass"); } + void GetLightAndShadowMapMemoryUsage(int* OutNum, int* OutMax) { NativeCall(this, "UPrimitiveComponent.GetLightAndShadowMapMemoryUsage", OutNum, OutMax); } void DestroyRenderState_Concurrent() { NativeCall(this, "UPrimitiveComponent.DestroyRenderState_Concurrent"); } void FinishDestroy() { NativeCall(this, "UPrimitiveComponent.FinishDestroy"); } void InvalidateLightingCacheDetailed(bool bInvalidateBuildEnqueuedLighting, bool bTranslationOnly) { NativeCall(this, "UPrimitiveComponent.InvalidateLightingCacheDetailed", bInvalidateBuildEnqueuedLighting, bTranslationOnly); } @@ -408,6 +645,7 @@ struct UPrimitiveComponent : USceneComponent void OnAttachmentChanged() { NativeCall(this, "UPrimitiveComponent.OnAttachmentChanged"); } void CreatePhysicsState() { NativeCall(this, "UPrimitiveComponent.CreatePhysicsState"); } void OnUpdateTransform(bool bSkipPhysicsMove) { NativeCall(this, "UPrimitiveComponent.OnUpdateTransform", bSkipPhysicsMove); } + void Serialize(FArchive* Ar) { NativeCall(this, "UPrimitiveComponent.Serialize", Ar); } void PostLoad() { NativeCall(this, "UPrimitiveComponent.PostLoad"); } void PostDuplicate(bool bDuplicateForPIE) { NativeCall(this, "UPrimitiveComponent.PostDuplicate", bDuplicateForPIE); } bool IsReadyForFinishDestroy() { return NativeCall(this, "UPrimitiveComponent.IsReadyForFinishDestroy"); } @@ -424,29 +662,31 @@ struct UPrimitiveComponent : USceneComponent void SetAbsoluteMaxDrawScale(bool bInValue) { NativeCall(this, "UPrimitiveComponent.SetAbsoluteMaxDrawScale", bInValue); } bool IsWorldGeometry() { return NativeCall(this, "UPrimitiveComponent.IsWorldGeometry"); } ECollisionChannel GetCollisionObjectType() { return NativeCall(this, "UPrimitiveComponent.GetCollisionObjectType"); } - void InitSweepCollisionParams(FCollisionQueryParams * OutParams, FCollisionResponseParams * OutResponseParam) { NativeCall(this, "UPrimitiveComponent.InitSweepCollisionParams", OutParams, OutResponseParam); } - bool MoveComponentImpl(FVector * Delta, FQuat * NewRotationQuat, bool bSweep, FHitResult * OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "UPrimitiveComponent.MoveComponentImpl", Delta, NewRotationQuat, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } - void DispatchBlockingHit(AActor * Owner, FHitResult * BlockingHit) { NativeCall(this, "UPrimitiveComponent.DispatchBlockingHit", Owner, BlockingHit); } + void InitSweepCollisionParams(FCollisionQueryParams* OutParams, FCollisionResponseParams* OutResponseParam) { NativeCall(this, "UPrimitiveComponent.InitSweepCollisionParams", OutParams, OutResponseParam); } + bool MoveComponentImpl(FVector* Delta, FQuat* NewRotationQuat, bool bSweep, FHitResult* OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "UPrimitiveComponent.MoveComponentImpl", Delta, NewRotationQuat, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } + void DispatchBlockingHit(AActor* Owner, FHitResult* BlockingHit) { NativeCall(this, "UPrimitiveComponent.DispatchBlockingHit", Owner, BlockingHit); } bool IsNavigationRelevant() { return NativeCall(this, "UPrimitiveComponent.IsNavigationRelevant"); } - FBox * GetNavigationBounds(FBox * result) { return NativeCall(this, "UPrimitiveComponent.GetNavigationBounds", result); } + FBox* GetNavigationBounds(FBox* result) { return NativeCall(this, "UPrimitiveComponent.GetNavigationBounds", result); } void SetCanEverAffectNavigation(bool bRelevant) { NativeCall(this, "UPrimitiveComponent.SetCanEverAffectNavigation", bRelevant); } - bool LineTraceComponent(FHitResult * OutHit, FVector Start, FVector End, FCollisionQueryParams * Params) { return NativeCall(this, "UPrimitiveComponent.LineTraceComponent", OutHit, Start, End, Params); } - bool ComponentOverlapComponentImpl(UPrimitiveComponent * PrimComp, FVector Pos, FQuat * Quat, FCollisionQueryParams * Params) { return NativeCall(this, "UPrimitiveComponent.ComponentOverlapComponentImpl", PrimComp, Pos, Quat, Params); } - bool IsOverlappingActor(AActor * Other) { return NativeCall(this, "UPrimitiveComponent.IsOverlappingActor", Other); } - void GetOverlappingActors(TArray * OutOverlappingActors, UClass * ClassFilter) { NativeCall *, UClass *>(this, "UPrimitiveComponent.GetOverlappingActors", OutOverlappingActors, ClassFilter); } - void GetOverlappingComponents(TArray * OutOverlappingComponents) { NativeCall *>(this, "UPrimitiveComponent.GetOverlappingComponents", OutOverlappingComponents); } + bool LineTraceComponent(FHitResult* OutHit, FVector Start, FVector End, FCollisionQueryParams* Params) { return NativeCall(this, "UPrimitiveComponent.LineTraceComponent", OutHit, Start, End, Params); } + bool ComponentOverlapComponentImpl(UPrimitiveComponent* PrimComp, FVector Pos, FQuat* Quat, FCollisionQueryParams* Params) { return NativeCall(this, "UPrimitiveComponent.ComponentOverlapComponentImpl", PrimComp, Pos, Quat, Params); } + bool IsOverlappingActor(AActor* Other) { return NativeCall(this, "UPrimitiveComponent.IsOverlappingActor", Other); } + void GetOverlappingActors(TArray* OutOverlappingActors, UClass* ClassFilter) { NativeCall*, UClass*>(this, "UPrimitiveComponent.GetOverlappingActors", OutOverlappingActors, ClassFilter); } + void GetOverlappingComponents(TArray* OutOverlappingComponents) { NativeCall*>(this, "UPrimitiveComponent.GetOverlappingComponents", OutOverlappingComponents); } bool AreAllCollideableDescendantsRelative(bool bAllowCachedValue) { return NativeCall(this, "UPrimitiveComponent.AreAllCollideableDescendantsRelative", bAllowCachedValue); } - void IgnoreActorWhenMoving(AActor * Actor, bool bShouldIgnore) { NativeCall(this, "UPrimitiveComponent.IgnoreActorWhenMoving", Actor, bShouldIgnore); } + void IgnoreActorWhenMoving(AActor* Actor, bool bShouldIgnore) { NativeCall(this, "UPrimitiveComponent.IgnoreActorWhenMoving", Actor, bShouldIgnore); } + TArray>* GetMoveIgnoreActors() { return NativeCall>*>(this, "UPrimitiveComponent.GetMoveIgnoreActors"); } void UpdatePhysicsVolume(bool bTriggerNotifiers) { NativeCall(this, "UPrimitiveComponent.UpdatePhysicsVolume", bTriggerNotifiers); } - static void DispatchMouseOverEvents(UPrimitiveComponent * CurrentComponent, UPrimitiveComponent * NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchMouseOverEvents", CurrentComponent, NewComponent); } - static void DispatchTouchOverEvents(ETouchIndex::Type FingerIndex, UPrimitiveComponent * CurrentComponent, UPrimitiveComponent * NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchTouchOverEvents", FingerIndex, CurrentComponent, NewComponent); } + static void DispatchMouseOverEvents(UPrimitiveComponent* CurrentComponent, UPrimitiveComponent* NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchMouseOverEvents", CurrentComponent, NewComponent); } + static void DispatchTouchOverEvents(ETouchIndex::Type FingerIndex, UPrimitiveComponent* CurrentComponent, UPrimitiveComponent* NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchTouchOverEvents", FingerIndex, CurrentComponent, NewComponent); } void DispatchOnClicked() { NativeCall(this, "UPrimitiveComponent.DispatchOnClicked"); } void DispatchOnReleased() { NativeCall(this, "UPrimitiveComponent.DispatchOnReleased"); } void DispatchOnInputTouchBegin(ETouchIndex::Type FingerIndex) { NativeCall(this, "UPrimitiveComponent.DispatchOnInputTouchBegin", FingerIndex); } void DispatchOnInputTouchEnd(ETouchIndex::Type FingerIndex) { NativeCall(this, "UPrimitiveComponent.DispatchOnInputTouchEnd", FingerIndex); } void SetRenderCustomDepth(bool bValue) { NativeCall(this, "UPrimitiveComponent.SetRenderCustomDepth", bValue); } + void SetCollisionResponseSet(FCollisionResponseSet* Col) { NativeCall(this, "UPrimitiveComponent.SetCollisionResponseSet", Col); } void SetCustomDepthStencilValue(int Value) { NativeCall(this, "UPrimitiveComponent.SetCustomDepthStencilValue", Value); } - bool CanCharacterStepUp(APawn * Pawn) { return NativeCall(this, "UPrimitiveComponent.CanCharacterStepUp", Pawn); } + bool CanCharacterStepUp(APawn* Pawn) { return NativeCall(this, "UPrimitiveComponent.CanCharacterStepUp", Pawn); } bool CanEditSimulatePhysics() { return NativeCall(this, "UPrimitiveComponent.CanEditSimulatePhysics"); } void SetSimulatePhysics(bool bSimulate) { NativeCall(this, "UPrimitiveComponent.SetSimulatePhysics", bSimulate); } void AddImpulse(FVector Impulse, FName BoneName, bool bVelChange) { NativeCall(this, "UPrimitiveComponent.AddImpulse", Impulse, BoneName, bVelChange); } @@ -455,10 +695,15 @@ struct UPrimitiveComponent : USceneComponent void AddForce(FVector Force, FName BoneName) { NativeCall(this, "UPrimitiveComponent.AddForce", Force, BoneName); } void AddForceAtLocation(FVector Force, FVector Location, FName BoneName) { NativeCall(this, "UPrimitiveComponent.AddForceAtLocation", Force, Location, BoneName); } void AddRadialForce(FVector Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "UPrimitiveComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } + void SetPhysicsLinearVelocity(FVector NewVel, bool bAddToCurrent, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetPhysicsLinearVelocity", NewVel, bAddToCurrent, BoneName); } + FVector* GetPhysicsLinearVelocity(FVector* result, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetPhysicsLinearVelocity", result, BoneName); } void SetAllPhysicsLinearVelocity(FVector NewVel, bool bAddToCurrent) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsLinearVelocity", NewVel, bAddToCurrent); } - void SetAllPhysicsAngularVelocity(FVector * NewAngVel, bool bAddToCurrent) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsAngularVelocity", NewAngVel, bAddToCurrent); } + void SetPhysicsAngularVelocity(FVector NewAngVel, bool bAddToCurrent, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetPhysicsAngularVelocity", NewAngVel, bAddToCurrent, BoneName); } + FVector* GetPhysicsAngularVelocity(FVector* result, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetPhysicsAngularVelocity", result, BoneName); } + void SetAllPhysicsAngularVelocity(FVector* NewAngVel, bool bAddToCurrent) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsAngularVelocity", NewAngVel, bAddToCurrent); } void SetAllPhysicsPosition(FVector NewPos) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsPosition", NewPos); } void SetAllPhysicsRotation(FRotator NewRot) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsRotation", NewRot); } + void WakeRigidBody(FName BoneName) { NativeCall(this, "UPrimitiveComponent.WakeRigidBody", BoneName); } void WakeAllRigidBodies() { NativeCall(this, "UPrimitiveComponent.WakeAllRigidBodies"); } void SetEnableGravity(bool bGravityEnabled) { NativeCall(this, "UPrimitiveComponent.SetEnableGravity", bGravityEnabled); } bool IsGravityEnabled() { return NativeCall(this, "UPrimitiveComponent.IsGravityEnabled"); } @@ -468,25 +713,29 @@ struct UPrimitiveComponent : USceneComponent float GetAngularDamping() { return NativeCall(this, "UPrimitiveComponent.GetAngularDamping"); } float GetMass() { return NativeCall(this, "UPrimitiveComponent.GetMass"); } float CalculateMass(FName __formal) { return NativeCall(this, "UPrimitiveComponent.CalculateMass", __formal); } + void PutRigidBodyToSleep(FName BoneName) { NativeCall(this, "UPrimitiveComponent.PutRigidBodyToSleep", BoneName); } void PutAllRigidBodiesToSleep() { NativeCall(this, "UPrimitiveComponent.PutAllRigidBodiesToSleep"); } + bool RigidBodyIsAwake(FName BoneName) { return NativeCall(this, "UPrimitiveComponent.RigidBodyIsAwake", BoneName); } bool IsAnyRigidBodyAwake() { return NativeCall(this, "UPrimitiveComponent.IsAnyRigidBodyAwake"); } void SetNotifyRigidBodyCollision(bool bNewNotifyRigidBodyCollision) { NativeCall(this, "UPrimitiveComponent.SetNotifyRigidBodyCollision", bNewNotifyRigidBodyCollision); } - void SetPhysMaterialOverride(UPhysicalMaterial * NewPhysMaterial) { NativeCall(this, "UPrimitiveComponent.SetPhysMaterialOverride", NewPhysMaterial); } + void SetPhysMaterialOverride(UPhysicalMaterial* NewPhysMaterial) { NativeCall(this, "UPrimitiveComponent.SetPhysMaterialOverride", NewPhysMaterial); } void SyncComponentToRBPhysics() { NativeCall(this, "UPrimitiveComponent.SyncComponentToRBPhysics"); } - void GetWeldedBodies(TArray * OutWeldedBodies, TArray * OutLabels) { NativeCall *, TArray *>(this, "UPrimitiveComponent.GetWeldedBodies", OutWeldedBodies, OutLabels); } - bool WeldToImplementation(USceneComponent * InParent, FName ParentSocketName, bool bWeldSimulatedChild) { return NativeCall(this, "UPrimitiveComponent.WeldToImplementation", InParent, ParentSocketName, bWeldSimulatedChild); } - void WeldTo(USceneComponent * InParent, FName InSocketName) { NativeCall(this, "UPrimitiveComponent.WeldTo", InParent, InSocketName); } + void GetWeldedBodies(TArray* OutWeldedBodies, TArray* OutLabels) { NativeCall*, TArray*>(this, "UPrimitiveComponent.GetWeldedBodies", OutWeldedBodies, OutLabels); } + void WeldTo(USceneComponent* InParent, FName InSocketName) { NativeCall(this, "UPrimitiveComponent.WeldTo", InParent, InSocketName); } void UnWeldFromParent() { NativeCall(this, "UPrimitiveComponent.UnWeldFromParent"); } - FBodyInstance * GetBodyInstance(FName BoneName, bool bGetWelded) { return NativeCall(this, "UPrimitiveComponent.GetBodyInstance", BoneName, bGetWelded); } + FBodyInstance* GetBodyInstance(FName BoneName, bool bGetWelded) { return NativeCall(this, "UPrimitiveComponent.GetBodyInstance", BoneName, bGetWelded); } + float GetDistanceToCollision(FVector* Point, FVector* ClosestPointOnCollision) { return NativeCall(this, "UPrimitiveComponent.GetDistanceToCollision", Point, ClosestPointOnCollision); } bool IsSimulatingPhysics(FName BoneName) { return NativeCall(this, "UPrimitiveComponent.IsSimulatingPhysics", BoneName); } - FVector * GetComponentVelocity(FVector * result) { return NativeCall(this, "UPrimitiveComponent.GetComponentVelocity", result); } + FVector* GetComponentVelocity(FVector* result) { return NativeCall(this, "UPrimitiveComponent.GetComponentVelocity", result); } void SetCollisionObjectType(ECollisionChannel Channel) { NativeCall(this, "UPrimitiveComponent.SetCollisionObjectType", Channel); } + void SetCollisionResponseToChannel(ECollisionChannel Channel, ECollisionResponse NewResponse) { NativeCall(this, "UPrimitiveComponent.SetCollisionResponseToChannel", Channel, NewResponse); } void SetCollisionResponseToAllChannels(ECollisionResponse NewResponse) { NativeCall(this, "UPrimitiveComponent.SetCollisionResponseToAllChannels", NewResponse); } void SetCollisionEnabled(ECollisionEnabled::Type NewType) { NativeCall(this, "UPrimitiveComponent.SetCollisionEnabled", NewType); } void SetCollisionProfileName(FName InCollisionProfileName) { NativeCall(this, "UPrimitiveComponent.SetCollisionProfileName", InCollisionProfileName); } + FName* GetCollisionProfileName(FName* result) { return NativeCall(this, "UPrimitiveComponent.GetCollisionProfileName", result); } void OnActorEnableCollisionChanged() { NativeCall(this, "UPrimitiveComponent.OnActorEnableCollisionChanged"); } void OnComponentCollisionSettingsChanged() { NativeCall(this, "UPrimitiveComponent.OnComponentCollisionSettingsChanged"); } - bool K2_LineTraceComponent(FVector TraceStart, FVector TraceEnd, bool bTraceComplex, bool bShowTrace, FVector * HitLocation, FVector * HitNormal, FName * BoneName) { return NativeCall(this, "UPrimitiveComponent.K2_LineTraceComponent", TraceStart, TraceEnd, bTraceComplex, bShowTrace, HitLocation, HitNormal, BoneName); } + bool K2_LineTraceComponent(FVector TraceStart, FVector TraceEnd, bool bTraceComplex, bool bShowTrace, FVector* HitLocation, FVector* HitNormal, FName* BoneName) { return NativeCall(this, "UPrimitiveComponent.K2_LineTraceComponent", TraceStart, TraceEnd, bTraceComplex, bShowTrace, HitLocation, HitNormal, BoneName); } ECollisionEnabled::Type GetCollisionEnabled() { return NativeCall(this, "UPrimitiveComponent.GetCollisionEnabled"); } ECollisionResponse GetCollisionResponseToChannel(ECollisionChannel Channel) { return NativeCall(this, "UPrimitiveComponent.GetCollisionResponseToChannel", Channel); } void UpdatePhysicsToRBChannels() { NativeCall(this, "UPrimitiveComponent.UpdatePhysicsToRBChannels"); } @@ -496,7 +745,7 @@ struct UPrimitiveComponent : USceneComponent struct UShapeComponent : UPrimitiveComponent { - UMaterialInterface * ShapeMaterialField() { return *GetNativePointerField(this, "UShapeComponent.ShapeMaterial"); } + UMaterialInterface* ShapeMaterialField() { return *GetNativePointerField(this, "UShapeComponent.ShapeMaterial"); } // Bit fields @@ -513,12 +762,12 @@ struct USphereComponent : UShapeComponent // Functions - FBoxSphereBounds * CalcBounds(FBoxSphereBounds * result, FTransform * LocalToWorld) { return NativeCall(this, "USphereComponent.CalcBounds", result, LocalToWorld); } - void CalcBoundingCylinder(float * CylinderRadius, float * CylinderHalfHeight) { NativeCall(this, "USphereComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USphereComponent.CalcBounds", result, LocalToWorld); } + void CalcBoundingCylinder(float* CylinderRadius, float* CylinderHalfHeight) { NativeCall(this, "USphereComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } void UpdateBodySetup() { NativeCall(this, "USphereComponent.UpdateBodySetup"); } void SetSphereRadius(float InSphereRadius, bool bUpdateOverlaps) { NativeCall(this, "USphereComponent.SetSphereRadius", InSphereRadius, bUpdateOverlaps); } bool IsZeroExtent() { return NativeCall(this, "USphereComponent.IsZeroExtent"); } - bool AreSymmetricRotations(FQuat * A, FQuat * B, FVector * Scale3D) { return NativeCall(this, "USphereComponent.AreSymmetricRotations", A, B, Scale3D); } + bool AreSymmetricRotations(FQuat* A, FQuat* B, FVector* Scale3D) { return NativeCall(this, "USphereComponent.AreSymmetricRotations", A, B, Scale3D); } static void StaticRegisterNativesUSphereComponent() { NativeCall(nullptr, "USphereComponent.StaticRegisterNativesUSphereComponent"); } }; @@ -526,17 +775,19 @@ struct AActor : UObject { float& CustomTimeDilationField() { return *GetNativePointerField(this, "AActor.CustomTimeDilation"); } float& ClientReplicationSendNowThresholdField() { return *GetNativePointerField(this, "AActor.ClientReplicationSendNowThreshold"); } + bool& bForceAllowNetMulticastField() { return *GetNativePointerField(this, "AActor.bForceAllowNetMulticast"); } TEnumAsByte& RemoteRoleField() { return *GetNativePointerField*>(this, "AActor.RemoteRole"); } - AActor * OwnerField() { return *GetNativePointerField(this, "AActor.Owner"); } + AActor* OwnerField() { return *GetNativePointerField(this, "AActor.Owner"); } long double& LastReplicatedMovementField() { return *GetNativePointerField(this, "AActor.LastReplicatedMovement"); } + int& LastFrameForceNetUpdateField() { return *GetNativePointerField(this, "AActor.LastFrameForceNetUpdate"); } TEnumAsByte& RoleField() { return *GetNativePointerField*>(this, "AActor.Role"); } TEnumAsByte& NetDormancyField() { return *GetNativePointerField*>(this, "AActor.NetDormancy"); } TArray>& ReplicatedComponentsField() { return *GetNativePointerField>*>(this, "AActor.ReplicatedComponents"); } TWeakObjectPtr& LastPostProcessVolumeSoundField() { return *GetNativePointerField*>(this, "AActor.LastPostProcessVolumeSound"); } int& DefaultStasisComponentOctreeFlagsField() { return *GetNativePointerField(this, "AActor.DefaultStasisComponentOctreeFlags"); } - UPrimitiveComponent * StasisCheckComponentField() { return *GetNativePointerField(this, "AActor.StasisCheckComponent"); } - TArray NetworkSpatializationChildrenField() { return *GetNativePointerField*>(this, "AActor.NetworkSpatializationChildren"); } - AActor * NetworkSpatializationParentField() { return *GetNativePointerField(this, "AActor.NetworkSpatializationParent"); } + UPrimitiveComponent* StasisCheckComponentField() { return *GetNativePointerField(this, "AActor.StasisCheckComponent"); } + TArray NetworkSpatializationChildrenField() { return *GetNativePointerField*>(this, "AActor.NetworkSpatializationChildren"); } + AActor* NetworkSpatializationParentField() { return *GetNativePointerField(this, "AActor.NetworkSpatializationParent"); } float& NetworkAndStasisRangeMultiplierField() { return *GetNativePointerField(this, "AActor.NetworkAndStasisRangeMultiplier"); } long double& UnstasisLastInRangeTimeField() { return *GetNativePointerField(this, "AActor.UnstasisLastInRangeTime"); } long double& LastPreReplicationTimeField() { return *GetNativePointerField(this, "AActor.LastPreReplicationTime"); } @@ -561,14 +812,14 @@ struct AActor : UObject FName& NetDriverNameField() { return *GetNativePointerField(this, "AActor.NetDriverName"); } int& TargetingTeamField() { return *GetNativePointerField(this, "AActor.TargetingTeam"); } float& OverrideStasisComponentRadiusField() { return *GetNativePointerField(this, "AActor.OverrideStasisComponentRadius"); } - APawn * InstigatorField() { return *GetNativePointerField(this, "AActor.Instigator"); } + APawn* InstigatorField() { return *GetNativePointerField(this, "AActor.Instigator"); } long double& CreationTimeField() { return *GetNativePointerField(this, "AActor.CreationTime"); } long double& OriginalCreationTimeField() { return *GetNativePointerField(this, "AActor.OriginalCreationTime"); } - TArray ChildrenField() { return *GetNativePointerField*>(this, "AActor.Children"); } + TArray ChildrenField() { return *GetNativePointerField*>(this, "AActor.Children"); } unsigned int& AnimUpdateRateShiftTagField() { return *GetNativePointerField(this, "AActor.AnimUpdateRateShiftTag"); } unsigned int& AnimUpdateRateFrameCountField() { return *GetNativePointerField(this, "AActor.AnimUpdateRateFrameCount"); } - USceneComponent * RootComponentField() { return *GetNativePointerField(this, "AActor.RootComponent"); } - TArray ControllingMatineeActorsField() { return *GetNativePointerField*>(this, "AActor.ControllingMatineeActors"); } + USceneComponent* RootComponentField() { return *GetNativePointerField(this, "AActor.RootComponent"); } + TArray ControllingMatineeActorsField() { return *GetNativePointerField*>(this, "AActor.ControllingMatineeActors"); } float& InitialLifeSpanField() { return *GetNativePointerField(this, "AActor.InitialLifeSpan"); } TArray& LayersField() { return *GetNativePointerField*>(this, "AActor.Layers"); } TWeakObjectPtr& ParentComponentActorField() { return *GetNativePointerField*>(this, "AActor.ParentComponentActor"); } @@ -576,12 +827,13 @@ struct AActor : UObject long double& LastRenderTimeIgnoreShadowField() { return *GetNativePointerField(this, "AActor.LastRenderTimeIgnoreShadow"); } TArray& TagsField() { return *GetNativePointerField*>(this, "AActor.Tags"); } unsigned __int64& HiddenEditorViewsField() { return *GetNativePointerField(this, "AActor.HiddenEditorViews"); } + FTargetingTeamChanged& OnTargetingTeamChangedField() { return *GetNativePointerField(this, "AActor.OnTargetingTeamChanged"); } FVector& DefaultActorLocationField() { return *GetNativePointerField(this, "AActor.DefaultActorLocation"); } FGuid& UniqueGuidIdField() { return *GetNativePointerField(this, "AActor.UniqueGuidId"); } float& ForceMaximumReplicationRateUntilTimeField() { return *GetNativePointerField(this, "AActor.ForceMaximumReplicationRateUntilTime"); } long double& LastActorForceReplicationTimeField() { return *GetNativePointerField(this, "AActor.LastActorForceReplicationTime"); } - TArray OwnedComponentsField() { return *GetNativePointerField*>(this, "AActor.OwnedComponents"); } - TArray SerializedComponentsField() { return *GetNativePointerField*>(this, "AActor.SerializedComponents"); } + TArray OwnedComponentsField() { return *GetNativePointerField*>(this, "AActor.OwnedComponents"); } + TArray SerializedComponentsField() { return *GetNativePointerField*>(this, "AActor.SerializedComponents"); } int& LastFrameCalculcatedNetworkRangeMultiplierField() { return *GetNativePointerField(this, "AActor.LastFrameCalculcatedNetworkRangeMultiplier"); } // Bit fields @@ -603,7 +855,21 @@ struct AActor : UObject BitFieldValue bClimbable() { return { this, "AActor.bClimbable" }; } BitFieldValue bAttachmentReplicationUseNetworkParent() { return { this, "AActor.bAttachmentReplicationUseNetworkParent" }; } BitFieldValue bUnstreamComponentsUseEndOverlap() { return { this, "AActor.bUnstreamComponentsUseEndOverlap" }; } + BitFieldValue bUseBPOverrideUILocation() { return { this, "AActor.bUseBPOverrideUILocation" }; } + BitFieldValue bForceBasedActorsOutOfFastTick() { return { this, "AActor.bForceBasedActorsOutOfFastTick" }; } + BitFieldValue bUseBPGetShowDebugAnimationComponents() { return { this, "AActor.bUseBPGetShowDebugAnimationComponents" }; } + BitFieldValue bWantsServerThrottledTick() { return { this, "AActor.bWantsServerThrottledTick" }; } + BitFieldValue bAddedServerThrottledTick() { return { this, "AActor.bAddedServerThrottledTick" }; } + BitFieldValue bWantsPerformanceThrottledTick() { return { this, "AActor.bWantsPerformanceThrottledTick" }; } + BitFieldValue bAddedPerformanceThrottledTick() { return { this, "AActor.bAddedPerformanceThrottledTick" }; } + BitFieldValue bForceInfiniteDrawDistance() { return { this, "AActor.bForceInfiniteDrawDistance" }; } + BitFieldValue bUseBPCheckForErrors() { return { this, "AActor.bUseBPCheckForErrors" }; } + BitFieldValue bPreventRegularForceNetUpdate() { return { this, "AActor.bPreventRegularForceNetUpdate" }; } + BitFieldValue bUseBPOverrideTargetingLocation() { return { this, "AActor.bUseBPOverrideTargetingLocation" }; } + BitFieldValue bUseBPGetHUDDrawLocationOffset() { return { this, "AActor.bUseBPGetHUDDrawLocationOffset" }; } + BitFieldValue bPreventNPCSpawnFloor() { return { this, "AActor.bPreventNPCSpawnFloor" }; } BitFieldValue bNetCritical() { return { this, "AActor.bNetCritical" }; } + BitFieldValue bUseBPCustomIsRelevantForClient() { return { this, "AActor.bUseBPCustomIsRelevantForClient" }; } BitFieldValue bReplicateInstigator() { return { this, "AActor.bReplicateInstigator" }; } BitFieldValue bSuppressDestroyedEvent() { return { this, "AActor.bSuppressDestroyedEvent" }; } BitFieldValue bUseOnlyPointForLevelBounds() { return { this, "AActor.bUseOnlyPointForLevelBounds" }; } @@ -622,6 +888,7 @@ struct AActor : UObject BitFieldValue bAutoStasis() { return { this, "AActor.bAutoStasis" }; } BitFieldValue bBlueprintMultiUseEntries() { return { this, "AActor.bBlueprintMultiUseEntries" }; } BitFieldValue bEnableMultiUse() { return { this, "AActor.bEnableMultiUse" }; } + BitFieldValue bUseBPGetMultiUseCenterText() { return { this, "AActor.bUseBPGetMultiUseCenterText" }; } BitFieldValue bPreventSaving() { return { this, "AActor.bPreventSaving" }; } BitFieldValue bMultiUseCenterHUD() { return { this, "AActor.bMultiUseCenterHUD" }; } BitFieldValue bOnlyInitialReplication() { return { this, "AActor.bOnlyInitialReplication" }; } @@ -658,6 +925,7 @@ struct AActor : UObject BitFieldValue bBPInventoryItemUsedHandlesDurability() { return { this, "AActor.bBPInventoryItemUsedHandlesDurability" }; } BitFieldValue bUseBPForceAllowsInventoryUse() { return { this, "AActor.bUseBPForceAllowsInventoryUse" }; } BitFieldValue bAlwaysCreatePhysicsState() { return { this, "AActor.bAlwaysCreatePhysicsState" }; } + BitFieldValue bReplicateRotationHighQuality() { return { this, "AActor.bReplicateRotationHighQuality" }; } BitFieldValue bReplicateVelocityHighQuality() { return { this, "AActor.bReplicateVelocityHighQuality" }; } BitFieldValue bOnlyReplicateOnNetForcedUpdate() { return { this, "AActor.bOnlyReplicateOnNetForcedUpdate" }; } BitFieldValue bActorInitialized() { return { this, "AActor.bActorInitialized" }; } @@ -668,123 +936,144 @@ struct AActor : UObject // Functions - FVector * GetTargetPathfindingLocation(FVector * result, AActor * RequestedBy) { return NativeCall(this, "AActor.GetTargetPathfindingLocation", result, RequestedBy); } - FVector * GetTargetingLocation(FVector * result) { return NativeCall(this, "AActor.GetTargetingLocation", result); } + FVector* GetTargetPathfindingLocation(FVector* result, AActor* RequestedBy) { return NativeCall(this, "AActor.GetTargetPathfindingLocation", result, RequestedBy); } bool IsLevelBoundsRelevant() { return NativeCall(this, "AActor.IsLevelBoundsRelevant"); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AActor.GetPrivateStaticClass"); } - void OutsideWorldBounds() { NativeCall(this, "AActor.OutsideWorldBounds"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AActor.GetPrivateStaticClass"); } bool IsPendingKillPending() { return NativeCall(this, "AActor.IsPendingKillPending"); } - bool AllowSaving() { return NativeCall(this, "AActor.AllowSaving"); } - FString * GetHumanReadableName(FString * result) { return NativeCall(this, "AActor.GetHumanReadableName", result); } + bool IsOwnedBy(AActor* TestOwner) { return NativeCall(this, "AActor.IsOwnedBy", TestOwner); } + void SetRemoteRoleForBackwardsCompat(ENetRole InRemoteRole) { NativeCall(this, "AActor.SetRemoteRoleForBackwardsCompat", InRemoteRole); } + static const wchar_t* StaticConfigName() { return NativeCall(nullptr, "AActor.StaticConfigName"); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "AActor.GetHumanReadableName", result); } + UGameInstance* GetOwner() { return NativeCall(this, "AActor.GetOwner"); } bool CheckDefaultSubobjectsInternal() { return NativeCall(this, "AActor.CheckDefaultSubobjectsInternal"); } bool CheckActorComponents() { return NativeCall(this, "AActor.CheckActorComponents"); } void ResetOwnedComponents() { NativeCall(this, "AActor.ResetOwnedComponents"); } void PostInitProperties() { NativeCall(this, "AActor.PostInitProperties"); } - UWorld * GetWorld() { return NativeCall(this, "AActor.GetWorld"); } + UWorld* GetWorld() { return NativeCall(this, "AActor.GetWorld"); } bool IsInGameplayWorld() { return NativeCall(this, "AActor.IsInGameplayWorld"); } + UGameInstance* GetGameInstance() { return NativeCall(this, "AActor.GetGameInstance"); } + bool IsNetStartupActor() { return NativeCall(this, "AActor.IsNetStartupActor"); } void ClearCrossLevelReferences() { NativeCall(this, "AActor.ClearCrossLevelReferences"); } - bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AActor.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } - bool SimpleTeleportTo(FVector * DestLocation, FRotator * DestRotation) { return NativeCall(this, "AActor.SimpleTeleportTo", DestLocation, DestRotation); } - void AddTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "AActor.AddTickPrerequisiteActor", PrerequisiteActor); } - void AddTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "AActor.AddTickPrerequisiteComponent", PrerequisiteComponent); } - void RemoveTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "AActor.RemoveTickPrerequisiteActor", PrerequisiteActor); } - void RemoveTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "AActor.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AActor.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + bool SimpleTeleportTo(FVector* DestLocation, FRotator* DestRotation) { return NativeCall(this, "AActor.SimpleTeleportTo", DestLocation, DestRotation); } + void AddTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "AActor.AddTickPrerequisiteActor", PrerequisiteActor); } + void AddTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "AActor.AddTickPrerequisiteComponent", PrerequisiteComponent); } + void RemoveTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "AActor.RemoveTickPrerequisiteActor", PrerequisiteActor); } + void RemoveTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "AActor.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } void BeginDestroy() { NativeCall(this, "AActor.BeginDestroy"); } bool IsReadyForFinishDestroy() { return NativeCall(this, "AActor.IsReadyForFinishDestroy"); } void PostLoad() { NativeCall(this, "AActor.PostLoad"); } - void PostLoadSubobjects(FObjectInstancingGraph * OuterInstanceGraph) { NativeCall(this, "AActor.PostLoadSubobjects", OuterInstanceGraph); } - void ProcessEvent(UFunction * Function, void * Parameters) { NativeCall(this, "AActor.ProcessEvent", Function, Parameters); } + void PostLoadSubobjects(FObjectInstancingGraph* OuterInstanceGraph) { NativeCall(this, "AActor.PostLoadSubobjects", OuterInstanceGraph); } + void ProcessEvent(UFunction* Function, void* Parameters) { NativeCall(this, "AActor.ProcessEvent", Function, Parameters); } void RegisterActorTickFunctions(bool bRegister, bool bSaveAndRestoreTickState) { NativeCall(this, "AActor.RegisterActorTickFunctions", bRegister, bSaveAndRestoreTickState); } void RegisterAllActorTickFunctions(bool bRegister, bool bDoComponents, bool bSaveAndRestoreTickState) { NativeCall(this, "AActor.RegisterAllActorTickFunctions", bRegister, bDoComponents, bSaveAndRestoreTickState); } void SetActorTickEnabled(bool bEnabled) { NativeCall(this, "AActor.SetActorTickEnabled", bEnabled); } - bool Rename(const wchar_t * InName, UObject * NewOuter, unsigned int Flags) { return NativeCall(this, "AActor.Rename", InName, NewOuter, Flags); } - UNetConnection * GetNetConnection() { return NativeCall(this, "AActor.GetNetConnection"); } - UPlayer * GetNetOwningPlayer() { return NativeCall(this, "AActor.GetNetOwningPlayer"); } + bool Rename(const wchar_t* InName, UObject* NewOuter, unsigned int Flags) { return NativeCall(this, "AActor.Rename", InName, NewOuter, Flags); } + UNetConnection* GetNetConnection() { return NativeCall(this, "AActor.GetNetConnection"); } + UPlayer* GetNetOwningPlayer() { return NativeCall(this, "AActor.GetNetOwningPlayer"); } void Tick(float DeltaSeconds) { NativeCall(this, "AActor.Tick", DeltaSeconds); } - void GetComponentsBoundingCylinder(float * OutCollisionRadius, float * OutCollisionHalfHeight, bool bNonColliding) { NativeCall(this, "AActor.GetComponentsBoundingCylinder", OutCollisionRadius, OutCollisionHalfHeight, bNonColliding); } - void GetSimpleCollisionCylinder(float * CollisionRadius, float * CollisionHalfHeight) { NativeCall(this, "AActor.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } + void GetComponentsBoundingCylinder(float* OutCollisionRadius, float* OutCollisionHalfHeight, bool bNonColliding) { NativeCall(this, "AActor.GetComponentsBoundingCylinder", OutCollisionRadius, OutCollisionHalfHeight, bNonColliding); } + void GetSimpleCollisionCylinder(float* CollisionRadius, float* CollisionHalfHeight) { NativeCall(this, "AActor.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } + float GetApproachRadius() { return NativeCall(this, "AActor.GetApproachRadius"); } bool IsRootComponentCollisionRegistered() { return NativeCall(this, "AActor.IsRootComponentCollisionRegistered"); } - bool IsAttachedTo(AActor * Other) { return NativeCall(this, "AActor.IsAttachedTo", Other); } - bool IsBasedOnActor(AActor * Other) { return NativeCall(this, "AActor.IsBasedOnActor", Other); } + bool IsAttachedTo(AActor* Other) { return NativeCall(this, "AActor.IsAttachedTo", Other); } + bool IsBasedOnActor(AActor* Other) { return NativeCall(this, "AActor.IsBasedOnActor", Other); } bool Modify(bool bAlwaysMarkDirty) { return NativeCall(this, "AActor.Modify", bAlwaysMarkDirty); } - FBox * GetComponentsBoundingBox(FBox * result, bool bNonColliding) { return NativeCall(this, "AActor.GetComponentsBoundingBox", result, bNonColliding); } - FBox * GetComponentsBoundingBoxForLevelBounds(FBox * result) { return NativeCall(this, "AActor.GetComponentsBoundingBoxForLevelBounds", result); } + FBox* GetComponentsBoundingBox(FBox* result, bool bNonColliding) { return NativeCall(this, "AActor.GetComponentsBoundingBox", result, bNonColliding); } + FBox* GetComponentsBoundingBoxForLevelBounds(FBox* result) { return NativeCall(this, "AActor.GetComponentsBoundingBoxForLevelBounds", result); } bool CheckStillInWorld() { return NativeCall(this, "AActor.CheckStillInWorld"); } - void GetOverlappingActors(TArray * OverlappingActors, UClass * ClassFilter) { NativeCall *, UClass *>(this, "AActor.GetOverlappingActors", OverlappingActors, ClassFilter); } - void GetOverlappingComponents(TArray * OutOverlappingComponents) { NativeCall *>(this, "AActor.GetOverlappingComponents", OutOverlappingComponents); } + void UpdateOverlaps(bool bDoNotifies) { NativeCall(this, "AActor.UpdateOverlaps", bDoNotifies); } + void GetOverlappingActors(TArray* OverlappingActors, UClass* ClassFilter) { NativeCall*, UClass*>(this, "AActor.GetOverlappingActors", OverlappingActors, ClassFilter); } + void GetOverlappingComponents(TArray* OutOverlappingComponents) { NativeCall*>(this, "AActor.GetOverlappingComponents", OutOverlappingComponents); } long double GetLastRenderTime(bool ignoreShadow) { return NativeCall(this, "AActor.GetLastRenderTime", ignoreShadow); } - void SetOwner(AActor * NewOwner) { NativeCall(this, "AActor.SetOwner", NewOwner); } + void SetOwner(AActor* NewOwner) { NativeCall(this, "AActor.SetOwner", NewOwner); } bool HasNetOwner() { return NativeCall(this, "AActor.HasNetOwner"); } - void AttachRootComponentTo(USceneComponent * InParent, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentTo", InParent, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + void AttachRootComponentTo(USceneComponent* InParent, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentTo", InParent, InSocketName, AttachLocationType, bWeldSimulatedBodies); } void OnRep_AttachmentReplication() { NativeCall(this, "AActor.OnRep_AttachmentReplication"); } - void AttachRootComponentToActor(AActor * InParentActor, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentToActor", InParentActor, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + void AttachRootComponentToActor(AActor* InParentActor, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentToActor", InParentActor, InSocketName, AttachLocationType, bWeldSimulatedBodies); } void DetachRootComponentFromParent(bool bMaintainWorldPosition) { NativeCall(this, "AActor.DetachRootComponentFromParent", bMaintainWorldPosition); } - void DetachSceneComponentsFromParent(USceneComponent * InParentComponent, bool bMaintainWorldPosition) { NativeCall(this, "AActor.DetachSceneComponentsFromParent", InParentComponent, bMaintainWorldPosition); } - AActor * GetAttachParentActor() { return NativeCall(this, "AActor.GetAttachParentActor"); } - FName * GetAttachParentSocketName(FName * result) { return NativeCall(this, "AActor.GetAttachParentSocketName", result); } - void GetAttachedActors(TArray * OutActors) { NativeCall *>(this, "AActor.GetAttachedActors", OutActors); } + void DetachSceneComponentsFromParent(USceneComponent* InParentComponent, bool bMaintainWorldPosition) { NativeCall(this, "AActor.DetachSceneComponentsFromParent", InParentComponent, bMaintainWorldPosition); } + AActor* GetAttachParentActor() { return NativeCall(this, "AActor.GetAttachParentActor"); } + FName* GetAttachParentSocketName(FName* result) { return NativeCall(this, "AActor.GetAttachParentSocketName", result); } + void GetAttachedActors(TArray* OutActors) { NativeCall*>(this, "AActor.GetAttachedActors", OutActors); } bool ActorHasTag(FName Tag) { return NativeCall(this, "AActor.ActorHasTag", Tag); } bool IsMatineeControlled() { return NativeCall(this, "AActor.IsMatineeControlled"); } - bool IsRelevancyOwnerFor(AActor * ReplicatedActor, AActor * ActorOwner, AActor * ConnectionActor) { return NativeCall(this, "AActor.IsRelevancyOwnerFor", ReplicatedActor, ActorOwner, ConnectionActor); } + bool IsRootComponentStatic() { return NativeCall(this, "AActor.IsRootComponentStatic"); } + bool IsRootComponentStationary() { return NativeCall(this, "AActor.IsRootComponentStationary"); } + bool IsRootComponentMovable() { return NativeCall(this, "AActor.IsRootComponentMovable"); } + bool IsRelevancyOwnerFor(AActor* ReplicatedActor, AActor* ActorOwner, AActor* ConnectionActor) { return NativeCall(this, "AActor.IsRelevancyOwnerFor", ReplicatedActor, ActorOwner, ConnectionActor); } + void FlushNetDormancy() { NativeCall(this, "AActor.FlushNetDormancy"); } void PrestreamTextures(float Seconds, bool bEnableStreaming, int CinematicTextureGroups) { NativeCall(this, "AActor.PrestreamTextures", Seconds, bEnableStreaming, CinematicTextureGroups); } void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.EndPlay", EndPlayReason); } - FTransform * GetTransform(FTransform * result) { return NativeCall(this, "AActor.GetTransform", result); } + FTransform* ActorToWorld(FTransform* result) { return NativeCall(this, "AActor.ActorToWorld", result); } + FTransform* GetTransform(FTransform* result) { return NativeCall(this, "AActor.GetTransform", result); } void ClearNetworkSpatializationParent() { NativeCall(this, "AActor.ClearNetworkSpatializationParent"); } - void SetNetworkSpatializationParent(AActor * NewParent) { NativeCall(this, "AActor.SetNetworkSpatializationParent", NewParent); } + void SetNetworkSpatializationParent(AActor* NewParent) { NativeCall(this, "AActor.SetNetworkSpatializationParent", NewParent); } void Destroyed() { NativeCall(this, "AActor.Destroyed"); } - void FellOutOfWorld(UDamageType * dmgType) { NativeCall(this, "AActor.FellOutOfWorld", dmgType); } - void MakeNoise(float Loudness, APawn * NoiseInstigator, FVector NoiseLocation) { NativeCall(this, "AActor.MakeNoise", Loudness, NoiseInstigator, NoiseLocation); } - static void MakeNoiseImpl(AActor * NoiseMaker, float Loudness, APawn * NoiseInstigator, FVector * NoiseLocation) { NativeCall(nullptr, "AActor.MakeNoiseImpl", NoiseMaker, Loudness, NoiseInstigator, NoiseLocation); } - float TakeDamage(float DamageAmount, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "AActor.TakeDamage", DamageAmount, DamageEvent, EventInstigator, DamageCauser); } - float InternalTakeRadialDamage(float Damage, FRadialDamageEvent * RadialDamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "AActor.InternalTakeRadialDamage", Damage, RadialDamageEvent, EventInstigator, DamageCauser); } - void DispatchBlockingHit(UPrimitiveComponent * MyComp, UPrimitiveComponent * OtherComp, bool bSelfMoved, FHitResult * Hit) { NativeCall(this, "AActor.DispatchBlockingHit", MyComp, OtherComp, bSelfMoved, Hit); } - void BecomeViewTarget(APlayerController * PC) { NativeCall(this, "AActor.BecomeViewTarget", PC); } - void EndViewTarget(APlayerController * PC) { NativeCall(this, "AActor.EndViewTarget", PC); } - void CalcCamera(float DeltaTime, FMinimalViewInfo * OutResult) { NativeCall(this, "AActor.CalcCamera", DeltaTime, OutResult); } + void FellOutOfWorld(UDamageType* dmgType) { NativeCall(this, "AActor.FellOutOfWorld", dmgType); } + void MakeNoise(float Loudness, APawn* NoiseInstigator, FVector NoiseLocation) { NativeCall(this, "AActor.MakeNoise", Loudness, NoiseInstigator, NoiseLocation); } + static void MakeNoiseImpl(AActor* NoiseMaker, float Loudness, APawn* NoiseInstigator, FVector* NoiseLocation) { NativeCall(nullptr, "AActor.MakeNoiseImpl", NoiseMaker, Loudness, NoiseInstigator, NoiseLocation); } + float TakeDamage(float DamageAmount, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "AActor.TakeDamage", DamageAmount, DamageEvent, EventInstigator, DamageCauser); } + float InternalTakeRadialDamage(float Damage, FRadialDamageEvent* RadialDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "AActor.InternalTakeRadialDamage", Damage, RadialDamageEvent, EventInstigator, DamageCauser); } + void DispatchBlockingHit(UPrimitiveComponent* MyComp, UPrimitiveComponent* OtherComp, bool bSelfMoved, FHitResult* Hit) { NativeCall(this, "AActor.DispatchBlockingHit", MyComp, OtherComp, bSelfMoved, Hit); } + void OutsideWorldBounds() { NativeCall(this, "AActor.OutsideWorldBounds"); } + void BecomeViewTarget(APlayerController* PC) { NativeCall(this, "AActor.BecomeViewTarget", PC); } + void EndViewTarget(APlayerController* PC) { NativeCall(this, "AActor.EndViewTarget", PC); } + AController* GetInstigatorController() { return NativeCall(this, "AActor.GetInstigatorController"); } + void CalcCamera(float DeltaTime, FMinimalViewInfo* OutResult) { NativeCall(this, "AActor.CalcCamera", DeltaTime, OutResult); } void ForceNetRelevant() { NativeCall(this, "AActor.ForceNetRelevant"); } - void InventoryItemUsed(UObject * InventoryItemObject) { NativeCall(this, "AActor.InventoryItemUsed", InventoryItemObject); } - void InventoryItemDropped(UObject * InventoryItemObject) { NativeCall(this, "AActor.InventoryItemDropped", InventoryItemObject); } - bool ForceAllowsInventoryUse(UObject * InventoryItemObject) { return NativeCall(this, "AActor.ForceAllowsInventoryUse", InventoryItemObject); } + void GetActorEyesViewPoint(FVector* OutLocation, FRotator* OutRotation) { NativeCall(this, "AActor.GetActorEyesViewPoint", OutLocation, OutRotation); } + FVector* GetActorViewDirection(FVector* result) { return NativeCall(this, "AActor.GetActorViewDirection", result); } + void InventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "AActor.InventoryItemUsed", InventoryItemObject); } + void InventoryItemDropped(UObject* InventoryItemObject) { NativeCall(this, "AActor.InventoryItemDropped", InventoryItemObject); } + bool ForceAllowsInventoryUse(UObject* InventoryItemObject) { return NativeCall(this, "AActor.ForceAllowsInventoryUse", InventoryItemObject); } ECollisionResponse GetComponentsCollisionResponseToChannel(ECollisionChannel Channel) { return NativeCall(this, "AActor.GetComponentsCollisionResponseToChannel", Channel); } - void RemoveOwnedComponent(UActorComponent * Component) { NativeCall(this, "AActor.RemoveOwnedComponent", Component); } - UActorComponent * GetComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetComponentByClass", ComponentClass); } - UPrimitiveComponent * GetVisibleComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetVisibleComponentByClass", ComponentClass); } - UActorComponent * GetComponentByCustomTag(FName TheTag) { return NativeCall(this, "AActor.GetComponentByCustomTag", TheTag); } - TArray * GetComponentsByClass(TArray * result, TSubclassOf ComponentClass) { return NativeCall *, TArray *, TSubclassOf>(this, "AActor.GetComponentsByClass", result, ComponentClass); } - TArray * GetComponentsByCustomTag(TArray * result, FName TheTag) { return NativeCall *, TArray *, FName>(this, "AActor.GetComponentsByCustomTag", result, TheTag); } + void AddOwnedComponent(UActorComponent* Component) { NativeCall(this, "AActor.AddOwnedComponent", Component); } + void RemoveOwnedComponent(UActorComponent* Component) { NativeCall(this, "AActor.RemoveOwnedComponent", Component); } + UActorComponent* GetComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetComponentByClass", ComponentClass); } + FVector* GetTargetingLocation(FVector* result, AActor* Attacker) { return NativeCall(this, "AActor.GetTargetingLocation", result, Attacker); } + UPrimitiveComponent* GetVisibleComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetVisibleComponentByClass", ComponentClass); } + UActorComponent* GetComponentByCustomTag(FName TheTag) { return NativeCall(this, "AActor.GetComponentByCustomTag", TheTag); } + TArray* GetComponentsByClass(TArray* result, TSubclassOf ComponentClass) { return NativeCall*, TArray*, TSubclassOf>(this, "AActor.GetComponentsByClass", result, ComponentClass); } + TArray* GetComponentsByCustomTag(TArray* result, FName TheTag) { return NativeCall*, TArray*, FName>(this, "AActor.GetComponentsByCustomTag", result, TheTag); } void DisableComponentsSimulatePhysics() { NativeCall(this, "AActor.DisableComponentsSimulatePhysics"); } - void PostSpawnInitialize(FVector * SpawnLocation, FRotator * SpawnRotation, AActor * InOwner, APawn * InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "AActor.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } - void FinishSpawning(FTransform * Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.FinishSpawning", Transform, bIsDefaultTransform); } - void DoExecuteActorConstruction(FTransform * Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } + void PostSpawnInitialize(FVector* SpawnLocation, FRotator* SpawnRotation, AActor* InOwner, APawn* InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "AActor.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } + void FinishSpawning(FTransform* Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.FinishSpawning", Transform, bIsDefaultTransform); } + void DoExecuteActorConstruction(FTransform* Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } void PreSave() { NativeCall(this, "AActor.PreSave"); } void PostActorConstruction() { NativeCall(this, "AActor.PostActorConstruction"); } void SetReplicates(bool bInReplicates) { NativeCall(this, "AActor.SetReplicates", bInReplicates); } - void CopyRemoteRoleFrom(AActor * CopyFromActor) { NativeCall(this, "AActor.CopyRemoteRoleFrom", CopyFromActor); } + void CopyRemoteRoleFrom(AActor* CopyFromActor) { NativeCall(this, "AActor.CopyRemoteRoleFrom", CopyFromActor); } void PostNetInit() { NativeCall(this, "AActor.PostNetInit"); } void BeginPlay() { NativeCall(this, "AActor.BeginPlay"); } void MatineeUpdated() { NativeCall(this, "AActor.MatineeUpdated"); } void ForceReplicateNowWithChannel() { NativeCall(this, "AActor.ForceReplicateNowWithChannel"); } - void EnableInput(APlayerController * PlayerController) { NativeCall(this, "AActor.EnableInput", PlayerController); } - void DisableInput(APlayerController * PlayerController) { NativeCall(this, "AActor.DisableInput", PlayerController); } + void EnableInput(APlayerController* PlayerController) { NativeCall(this, "AActor.EnableInput", PlayerController); } + void DisableInput(APlayerController* PlayerController) { NativeCall(this, "AActor.DisableInput", PlayerController); } float GetInputAxisValue(FName InputAxisName) { return NativeCall(this, "AActor.GetInputAxisValue", InputAxisName); } float GetInputAxisKeyValue(FKey InputAxisKey) { return NativeCall(this, "AActor.GetInputAxisKeyValue", InputAxisKey); } - FVector * GetInputVectorAxisValue(FVector * result, FKey InputAxisKey) { return NativeCall(this, "AActor.GetInputVectorAxisValue", result, InputAxisKey); } - bool SetActorLocation(FVector * NewLocation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocation", NewLocation, bSweep); } + FVector* GetInputVectorAxisValue(FVector* result, FKey InputAxisKey) { return NativeCall(this, "AActor.GetInputVectorAxisValue", result, InputAxisKey); } + bool SetActorLocation(FVector* NewLocation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocation", NewLocation, bSweep); } bool SetActorRotation(FRotator NewRotation) { return NativeCall(this, "AActor.SetActorRotation", NewRotation); } - bool SetActorLocationAndRotation(FVector * NewLocation, FRotator NewRotation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocationAndRotation", NewLocation, NewRotation, bSweep); } - void SetActorScale3D(FVector * NewScale3D) { NativeCall(this, "AActor.SetActorScale3D", NewScale3D); } + bool SetActorRotation(FQuat* NewRotation) { return NativeCall(this, "AActor.SetActorRotation", NewRotation); } + bool SetActorLocationAndRotation(FVector* NewLocation, FRotator NewRotation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetActorScale3D(FVector* NewScale3D) { NativeCall(this, "AActor.SetActorScale3D", NewScale3D); } + FVector* GetActorScale3D(FVector* result) { return NativeCall(this, "AActor.GetActorScale3D", result); } + void SetActorRelativeLocation(FVector NewRelativeLocation, bool bSweep) { NativeCall(this, "AActor.SetActorRelativeLocation", NewRelativeLocation, bSweep); } + void SetActorRelativeRotation(FRotator NewRelativeRotation, bool bSweep) { NativeCall(this, "AActor.SetActorRelativeRotation", NewRelativeRotation, bSweep); } void SetActorRelativeScale3D(FVector NewRelativeScale) { NativeCall(this, "AActor.SetActorRelativeScale3D", NewRelativeScale); } void SetActorHiddenInGame(bool bNewHidden) { NativeCall(this, "AActor.SetActorHiddenInGame", bNewHidden); } void SetActorEnableCollision(bool bNewActorEnableCollision) { NativeCall(this, "AActor.SetActorEnableCollision", bNewActorEnableCollision); } bool Destroy(bool bNetForce, bool bShouldModifyLevel) { return NativeCall(this, "AActor.Destroy", bNetForce, bShouldModifyLevel); } - bool SetRootComponent(USceneComponent * NewRootComponent) { return NativeCall(this, "AActor.SetRootComponent", NewRootComponent); } - FVector * GetActorForwardVector(FVector * result) { return NativeCall(this, "AActor.GetActorForwardVector", result); } - FVector * GetActorUpVector(FVector * result) { return NativeCall(this, "AActor.GetActorUpVector", result); } - FVector * GetActorRightVector(FVector * result) { return NativeCall(this, "AActor.GetActorRightVector", result); } - void GetActorBounds(bool bOnlyCollidingComponents, FVector * Origin, FVector * BoxExtent) { NativeCall(this, "AActor.GetActorBounds", bOnlyCollidingComponents, Origin, BoxExtent); } - AWorldSettings * GetWorldSettings() { return NativeCall(this, "AActor.GetWorldSettings"); } - void PlaySoundOnActor(USoundCue * InSoundCue, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundOnActor", InSoundCue, VolumeMultiplier, PitchMultiplier); } - void PlaySoundAtLocation(USoundCue * InSoundCue, FVector SoundLocation, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundAtLocation", InSoundCue, SoundLocation, VolumeMultiplier, PitchMultiplier); } + bool HasAuthority() { return NativeCall(this, "AActor.HasAuthority"); } + bool SetRootComponent(USceneComponent* NewRootComponent) { return NativeCall(this, "AActor.SetRootComponent", NewRootComponent); } + FVector* GetActorForwardVector(FVector* result) { return NativeCall(this, "AActor.GetActorForwardVector", result); } + FVector* GetActorUpVector(FVector* result) { return NativeCall(this, "AActor.GetActorUpVector", result); } + FVector* GetActorRightVector(FVector* result) { return NativeCall(this, "AActor.GetActorRightVector", result); } + void GetActorBounds(bool bOnlyCollidingComponents, FVector* Origin, FVector* BoxExtent) { NativeCall(this, "AActor.GetActorBounds", bOnlyCollidingComponents, Origin, BoxExtent); } + AWorldSettings* GetWorldSettings() { return NativeCall(this, "AActor.GetWorldSettings"); } + void PlaySoundOnActor(USoundCue* InSoundCue, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundOnActor", InSoundCue, VolumeMultiplier, PitchMultiplier); } + void PlaySoundAtLocation(USoundCue* InSoundCue, FVector SoundLocation, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundAtLocation", InSoundCue, SoundLocation, VolumeMultiplier, PitchMultiplier); } void UnregisterAllComponents(bool bDetachFromOtherParent) { NativeCall(this, "AActor.UnregisterAllComponents", bDetachFromOtherParent); } void RegisterAllComponents() { NativeCall(this, "AActor.RegisterAllComponents"); } void MarkComponentsAsPendingKill() { NativeCall(this, "AActor.MarkComponentsAsPendingKill"); } @@ -793,104 +1082,152 @@ struct AActor : UObject void InitializeComponents() { NativeCall(this, "AActor.InitializeComponents"); } void UninitializeComponents(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.UninitializeComponents", EndPlayReason); } void InvalidateLightingCacheDetailed(bool bTranslationOnly) { NativeCall(this, "AActor.InvalidateLightingCacheDetailed", bTranslationOnly); } - bool ActorLineTraceSingle(FHitResult * OutHit, FVector * Start, FVector * End, ECollisionChannel TraceChannel, FCollisionQueryParams * Params) { return NativeCall(this, "AActor.ActorLineTraceSingle", OutHit, Start, End, TraceChannel, Params); } + bool ActorLineTraceSingle(FHitResult* OutHit, FVector* Start, FVector* End, ECollisionChannel TraceChannel, FCollisionQueryParams* Params) { return NativeCall(this, "AActor.ActorLineTraceSingle", OutHit, Start, End, TraceChannel, Params); } void SetLifeSpan(float InLifespan) { NativeCall(this, "AActor.SetLifeSpan", InLifespan); } float GetLifeSpan() { return NativeCall(this, "AActor.GetLifeSpan"); } void PostInitializeComponents() { NativeCall(this, "AActor.PostInitializeComponents"); } void Stasis() { NativeCall(this, "AActor.Stasis"); } void Unstasis() { NativeCall(this, "AActor.Unstasis"); } void PreInitializeComponents() { NativeCall(this, "AActor.PreInitializeComponents"); } - float GetDistanceTo(AActor * OtherActor) { return NativeCall(this, "AActor.GetDistanceTo", OtherActor); } - float GetHorizontalDistanceTo(AActor * OtherActor) { return NativeCall(this, "AActor.GetHorizontalDistanceTo", OtherActor); } - float GetVerticalDistanceTo(AActor * OtherActor) { return NativeCall(this, "AActor.GetVerticalDistanceTo", OtherActor); } - float GetDotProductTo(AActor * OtherActor) { return NativeCall(this, "AActor.GetDotProductTo", OtherActor); } - float GetHorizontalDotProductTo(AActor * OtherActor) { return NativeCall(this, "AActor.GetHorizontalDotProductTo", OtherActor); } - APlayerController * GetOwnerController() { return NativeCall(this, "AActor.GetOwnerController"); } - bool AlwaysReplicatePropertyConditional(UProperty * forProperty) { return NativeCall(this, "AActor.AlwaysReplicatePropertyConditional", forProperty); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "AActor.TryMultiUse", ForPC, UseIndex); } + UWorld* K2_GetWorld() { return NativeCall(this, "AActor.K2_GetWorld"); } + float GetDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetDistanceTo", OtherActor); } + float GetHorizontalDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetHorizontalDistanceTo", OtherActor); } + float GetVerticalDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetVerticalDistanceTo", OtherActor); } + float GetDotProductTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetDotProductTo", OtherActor); } + float GetHorizontalDotProductTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetHorizontalDotProductTo", OtherActor); } + FTransform* GetInterpolatedTransform(FTransform* result) { return NativeCall(this, "AActor.GetInterpolatedTransform", result); } + APlayerController* GetOwnerController() { return NativeCall(this, "AActor.GetOwnerController"); } + bool AlwaysReplicatePropertyConditional(UProperty* forProperty) { return NativeCall(this, "AActor.AlwaysReplicatePropertyConditional", forProperty); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "AActor.TryMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "AActor.ClientMultiUse", ForPC, UseIndex); } + bool GetMultiUseCenterText(APlayerController* ForPC, int UseIndex, FString* OutCenterText, FLinearColor* OutCenterTextColor) { return NativeCall(this, "AActor.GetMultiUseCenterText", ForPC, UseIndex, OutCenterText, OutCenterTextColor); } + bool AllowSaving() { return NativeCall(this, "AActor.AllowSaving"); } void ChangeActorTeam(int NewTeam) { NativeCall(this, "AActor.ChangeActorTeam", NewTeam); } + void TargetingTeamChanged() { NativeCall(this, "AActor.TargetingTeamChanged"); } + void ForceDestroy() { NativeCall(this, "AActor.ForceDestroy"); } bool GetIsMapActor() { return NativeCall(this, "AActor.GetIsMapActor"); } - void SendExecCommand(FName CommandName, FNetExecParams * ExecParams, bool bIsReliable) { NativeCall(this, "AActor.SendExecCommand", CommandName, ExecParams, bIsReliable); } + void SendExecCommand(FName CommandName, FNetExecParams* ExecParams, bool bIsReliable) { NativeCall(this, "AActor.SendExecCommand", CommandName, ExecParams, bIsReliable); } void ServerSendSimpleExecCommandToEveryone(FName CommandName, bool bIsReliable, bool bForceSendToLocalPlayer, bool bIgnoreRelevancy) { NativeCall(this, "AActor.ServerSendSimpleExecCommandToEveryone", CommandName, bIsReliable, bForceSendToLocalPlayer, bIgnoreRelevancy); } - bool IsOwnedOrControlledBy(AActor * TestOwner) { return NativeCall(this, "AActor.IsOwnedOrControlledBy", TestOwner); } - bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "AActor.PreventCharacterBasing", OtherActor, BasedOnComponent); } + bool IsPrimalCharacterOrStructure() { return NativeCall(this, "AActor.IsPrimalCharacterOrStructure"); } + void SetTickFunctionEnabled(bool bEnableTick) { NativeCall(this, "AActor.SetTickFunctionEnabled", bEnableTick); } + bool IsOwnedOrControlledBy(AActor* TestOwner) { return NativeCall(this, "AActor.IsOwnedOrControlledBy", TestOwner); } + bool PreventCharacterBasing(AActor* OtherActor, UPrimitiveComponent* BasedOnComponent) { return NativeCall(this, "AActor.PreventCharacterBasing", OtherActor, BasedOnComponent); } bool BPIsA(TSubclassOf anActorClass) { return NativeCall>(this, "AActor.BPIsA", anActorClass); } void MulticastProperty(FName PropertyName) { NativeCall(this, "AActor.MulticastProperty", PropertyName); } - void PropertyServerToClients_Implementation(AActor * ActorToRep, FName PropertyName, TArray * ReplicationData) { NativeCall *>(this, "AActor.PropertyServerToClients_Implementation", ActorToRep, PropertyName, ReplicationData); } + void MulticastPropertyToPlayer(FName PropertyName, APlayerController* PC) { NativeCall(this, "AActor.MulticastPropertyToPlayer", PropertyName, PC); } + void PropertyServerToClients_Implementation(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClients_Implementation", ActorToRep, PropertyName, ReplicationData); } float GetNetStasisAndRangeMultiplier() { return NativeCall(this, "AActor.GetNetStasisAndRangeMultiplier"); } - void StopActorSound(USoundBase * SoundAsset, float FadeOutTime) { NativeCall(this, "AActor.StopActorSound", SoundAsset, FadeOutTime); } - void GetAllSceneComponents(TArray * OutComponents) { NativeCall *>(this, "AActor.GetAllSceneComponents", OutComponents); } - void ActorPlaySound_Implementation(USoundBase * SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySound_Implementation", SoundAsset, bAttach, BoneName, LocOffset); } - void NetAttachRootComponentTo_Implementation(USceneComponent * InParent, FName InSocketName, FVector RelativeLocation, FRotator RelativeRotation) { NativeCall(this, "AActor.NetAttachRootComponentTo_Implementation", InParent, InSocketName, RelativeLocation, RelativeRotation); } + void StopActorSound(USoundBase* SoundAsset, float FadeOutTime) { NativeCall(this, "AActor.StopActorSound", SoundAsset, FadeOutTime); } + void GetAllSceneComponents(TArray* OutComponents) { NativeCall*>(this, "AActor.GetAllSceneComponents", OutComponents); } + void ActorPlaySound_Implementation(USoundBase* SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySound_Implementation", SoundAsset, bAttach, BoneName, LocOffset); } + void NetAttachRootComponentTo_Implementation(USceneComponent* InParent, FName InSocketName, FVector RelativeLocation, FRotator RelativeRotation) { NativeCall(this, "AActor.NetAttachRootComponentTo_Implementation", InParent, InSocketName, RelativeLocation, RelativeRotation); } void NetDetachRootComponentFromAny_Implementation() { NativeCall(this, "AActor.NetDetachRootComponentFromAny_Implementation"); } + FVector* GetHUDWorldDrawLocation(FVector* result, FName* HUDTag) { return NativeCall(this, "AActor.GetHUDWorldDrawLocation", result, HUDTag); } void ResetPropertiesForConstruction() { NativeCall(this, "AActor.ResetPropertiesForConstruction"); } void DestroyConstructedComponents() { NativeCall(this, "AActor.DestroyConstructedComponents"); } void RerunConstructionScripts() { NativeCall(this, "AActor.RerunConstructionScripts"); } - UActorComponent * CreateComponentFromTemplate(UActorComponent * Template, FString * InName) { return NativeCall(this, "AActor.CreateComponentFromTemplate", Template, InName); } - UActorComponent * AddComponent(FName TemplateName, bool bManualAttachment, FTransform * RelativeTransform, UObject * ComponentTemplateContext) { return NativeCall(this, "AActor.AddComponent", TemplateName, bManualAttachment, RelativeTransform, ComponentTemplateContext); } + UActorComponent* CreateComponentFromTemplate(UActorComponent* Template, FString* InName) { return NativeCall(this, "AActor.CreateComponentFromTemplate", Template, InName); } + UActorComponent* AddComponent(FName TemplateName, bool bManualAttachment, FTransform* RelativeTransform, UObject* ComponentTemplateContext) { return NativeCall(this, "AActor.AddComponent", TemplateName, bManualAttachment, RelativeTransform, ComponentTemplateContext); } void PreNetReceive() { NativeCall(this, "AActor.PreNetReceive"); } void PostNetReceive() { NativeCall(this, "AActor.PostNetReceive"); } void OnRep_ReplicatedMovement() { NativeCall(this, "AActor.OnRep_ReplicatedMovement"); } void PostNetReceiveLocationAndRotation() { NativeCall(this, "AActor.PostNetReceiveLocationAndRotation"); } void PostNetReceivePhysicState() { NativeCall(this, "AActor.PostNetReceivePhysicState"); } - bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "AActor.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AActor.GetLifetimeReplicatedProps", OutLifetimeProps); } - void GetSubobjectsWithStableNamesForNetworking(TArray * ObjList) { NativeCall *>(this, "AActor.GetSubobjectsWithStableNamesForNetworking", ObjList); } - void OnSubobjectCreatedFromReplication(UObject * NewSubobject) { NativeCall(this, "AActor.OnSubobjectCreatedFromReplication", NewSubobject); } - void OnSubobjectDestroyFromReplication(UObject * NewSubobject) { NativeCall(this, "AActor.OnSubobjectDestroyFromReplication", NewSubobject); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "AActor.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetSubobjectsWithStableNamesForNetworking(TArray* ObjList) { NativeCall*>(this, "AActor.GetSubobjectsWithStableNamesForNetworking", ObjList); } + void OnSubobjectCreatedFromReplication(UObject* NewSubobject) { NativeCall(this, "AActor.OnSubobjectCreatedFromReplication", NewSubobject); } + void OnSubobjectDestroyFromReplication(UObject* NewSubobject) { NativeCall(this, "AActor.OnSubobjectDestroyFromReplication", NewSubobject); } bool IsNameStableForNetworking() { return NativeCall(this, "AActor.IsNameStableForNetworking"); } - void GetComponents(TArray * OutComponents) { NativeCall *>(this, "AActor.GetComponents", OutComponents); } + void GetComponents(TArray* OutComponents) { NativeCall*>(this, "AActor.GetComponents", OutComponents); } void GatherCurrentMovement() { NativeCall(this, "AActor.GatherCurrentMovement"); } void ForceReplicateNow(bool bForceCreateChannel, bool bForceCreateChannelIfRelevant) { NativeCall(this, "AActor.ForceReplicateNow", bForceCreateChannel, bForceCreateChannelIfRelevant); } - void ForceNetUpdate(bool bDormantDontReplicateProperties) { NativeCall(this, "AActor.ForceNetUpdate", bDormantDontReplicateProperties); } + void ForceNetUpdate(bool bDormantDontReplicateProperties, bool bAbsoluteForceNetUpdate, bool bDontUpdateChannel) { NativeCall(this, "AActor.ForceNetUpdate", bDormantDontReplicateProperties, bAbsoluteForceNetUpdate, bDontUpdateChannel); } static void StaticRegisterNativesAActor() { NativeCall(nullptr, "AActor.StaticRegisterNativesAActor"); } - bool AllowIgnoreCharacterEncroachment(UPrimitiveComponent * HitComponent, AActor * EncroachingCharacter) { return NativeCall(this, "AActor.AllowIgnoreCharacterEncroachment", HitComponent, EncroachingCharacter); } - bool AllowManualMultiUseActivation(APlayerController * ForPC) { return NativeCall(this, "AActor.AllowManualMultiUseActivation", ForPC); } + void ActorPlaySound(USoundBase* SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySound", SoundAsset, bAttach, BoneName, LocOffset); } + void ActorPlaySoundUnreliable(USoundBase* SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySoundUnreliable", SoundAsset, bAttach, BoneName, LocOffset); } + bool AllowGrappling() { return NativeCall(this, "AActor.AllowGrappling"); } + bool AllowIgnoreCharacterEncroachment(UPrimitiveComponent* HitComponent, AActor* EncroachingCharacter) { return NativeCall(this, "AActor.AllowIgnoreCharacterEncroachment", HitComponent, EncroachingCharacter); } + bool AllowManualMultiUseActivation(APlayerController* ForPC) { return NativeCall(this, "AActor.AllowManualMultiUseActivation", ForPC); } + FVector* BP_GetHUDWorldDrawLocation(FVector* result, FName HUDTag) { return NativeCall(this, "AActor.BP_GetHUDWorldDrawLocation", result, HUDTag); } + FVector* BP_OverrideTargetingLocation(FVector* result, AActor* Attacker) { return NativeCall(this, "AActor.BP_OverrideTargetingLocation", result, Attacker); } void BPAttachedRootComponent() { NativeCall(this, "AActor.BPAttachedRootComponent"); } - bool BPForceAllowsInventoryUse(UObject * InventoryItemObject) { return NativeCall(this, "AActor.BPForceAllowsInventoryUse", InventoryItemObject); } - void BPInventoryItemDropped(UObject * InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemDropped", InventoryItemObject); } - void BPInventoryItemUsed(UObject * InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemUsed", InventoryItemObject); } - void DrawBasicFloatingHUD(AHUD * ForHUD) { NativeCall(this, "AActor.DrawBasicFloatingHUD", ForHUD); } - void K2_OnBecomeViewTarget(APlayerController * PC) { NativeCall(this, "AActor.K2_OnBecomeViewTarget", PC); } - void K2_OnEndViewTarget(APlayerController * PC) { NativeCall(this, "AActor.K2_OnEndViewTarget", PC); } - void ModifyHudMultiUseLoc(FVector2D * theVec, APlayerController * PC, int index) { NativeCall(this, "AActor.ModifyHudMultiUseLoc", theVec, PC, index); } - void PropertyServerToClients(AActor * ActorToRep, FName PropertyName, TArray * ReplicationData) { NativeCall *>(this, "AActor.PropertyServerToClients", ActorToRep, PropertyName, ReplicationData); } + void BPChangedActorTeam() { NativeCall(this, "AActor.BPChangedActorTeam"); } + bool BPConsumeSetPinCode(APlayerController* ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "AActor.BPConsumeSetPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + bool BPConsumeUsePinCode(AActor* FromKeypadActor, APlayerController* ForPC, int appledPinCode, bool bIsActivating) { return NativeCall(this, "AActor.BPConsumeUsePinCode", FromKeypadActor, ForPC, appledPinCode, bIsActivating); } + bool BPForceAllowsInventoryUse(UObject* InventoryItemObject) { return NativeCall(this, "AActor.BPForceAllowsInventoryUse", InventoryItemObject); } + int BPGetExtraSpecialBlueprintInt() { return NativeCall(this, "AActor.BPGetExtraSpecialBlueprintInt"); } + bool BPGetMultiUseCenterText(APlayerController* ForPC, int UseIndex, FString* OutCenterText, FLinearColor* OutCenterTextColor) { return NativeCall(this, "AActor.BPGetMultiUseCenterText", ForPC, UseIndex, OutCenterText, OutCenterTextColor); } + void BPInventoryItemDropped(UObject* InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemDropped", InventoryItemObject); } + void BPInventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemUsed", InventoryItemObject); } + FVector* BPOverrideUILocation(FVector* result, APlayerController* ForPC) { return NativeCall(this, "AActor.BPOverrideUILocation", result, ForPC); } + void DrawBasicFloatingHUD(AHUD* ForHUD) { NativeCall(this, "AActor.DrawBasicFloatingHUD", ForHUD); } + float GetUsablePriority() { return NativeCall(this, "AActor.GetUsablePriority"); } + void K2_OnBecomeViewTarget(APlayerController* PC) { NativeCall(this, "AActor.K2_OnBecomeViewTarget", PC); } + void K2_OnEndViewTarget(APlayerController* PC) { NativeCall(this, "AActor.K2_OnEndViewTarget", PC); } + void ModifyHudMultiUseLoc(FVector2D* theVec, APlayerController* PC, int index) { NativeCall(this, "AActor.ModifyHudMultiUseLoc", theVec, PC, index); } + void MulticastDrawDebugArrow(FVector LineStart, FVector LineEnd, float ArrowSize, FLinearColor LineColor, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugArrow", LineStart, LineEnd, ArrowSize, LineColor, Duration, enableInShipping); } + void MulticastDrawDebugBox(FVector Center, FVector Extent, FLinearColor LineColor, FRotator Rotation, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugBox", Center, Extent, LineColor, Rotation, Duration, enableInShipping); } + void MulticastDrawDebugCapsule(FVector Center, float HalfHeight, float Radius, FRotator Rotation, FLinearColor LineColor, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugCapsule", Center, HalfHeight, Radius, Rotation, LineColor, Duration, enableInShipping); } + void MulticastDrawDebugCapsuleWithExtents(FVector Top, FVector Bottom, float Radius, FLinearColor LineColor, float Duration, bool bPersistent) { NativeCall(this, "AActor.MulticastDrawDebugCapsuleWithExtents", Top, Bottom, Radius, LineColor, Duration, bPersistent); } + void MulticastDrawDebugCoordinateSystem(FVector AxisLoc, FRotator AxisRot, float Scale, float Duration, float Thickness) { NativeCall(this, "AActor.MulticastDrawDebugCoordinateSystem", AxisLoc, AxisRot, Scale, Duration, Thickness); } + void MulticastDrawDebugCylinder(FVector Start, FVector End, float Radius, int Segments, FLinearColor LineColor, float Duration) { NativeCall(this, "AActor.MulticastDrawDebugCylinder", Start, End, Radius, Segments, LineColor, Duration); } + void MulticastDrawDebugLine(FVector LineStart, FVector LineEnd, FLinearColor LineColor, float Duration, float Thickness, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugLine", LineStart, LineEnd, LineColor, Duration, Thickness, enableInShipping); } + void MulticastDrawDebugPoint(FVector Position, float Size, FLinearColor PointColor, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugPoint", Position, Size, PointColor, Duration, enableInShipping); } + void MulticastDrawDebugSphere(FVector Center, float Radius, int Segments, FLinearColor LineColor, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugSphere", Center, Radius, Segments, LineColor, Duration, enableInShipping); } + void MulticastDrawDebugString(FVector TextLocation, FString* Text, AActor* TestBaseActor, FLinearColor TextColor, float Duration, bool enableInShipping) { NativeCall(this, "AActor.MulticastDrawDebugString", TextLocation, Text, TestBaseActor, TextColor, Duration, enableInShipping); } + void NetAttachRootComponentTo(USceneComponent* InParent, FName InSocketName, FVector RelativeLocation, FRotator RelativeRotation) { NativeCall(this, "AActor.NetAttachRootComponentTo", InParent, InSocketName, RelativeLocation, RelativeRotation); } + void OnInventoryItemGrind() { NativeCall(this, "AActor.OnInventoryItemGrind"); } + void PerformanceThrottledTick() { NativeCall(this, "AActor.PerformanceThrottledTick"); } + void PropertyServerToClients(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClients", ActorToRep, PropertyName, ReplicationData); } void ReceiveActorBeginCursorOver() { NativeCall(this, "AActor.ReceiveActorBeginCursorOver"); } - void ReceiveActorBeginOverlap(AActor * OtherActor) { NativeCall(this, "AActor.ReceiveActorBeginOverlap", OtherActor); } + void ReceiveActorBeginOverlap(AActor* OtherActor) { NativeCall(this, "AActor.ReceiveActorBeginOverlap", OtherActor); } void ReceiveActorEndCursorOver() { NativeCall(this, "AActor.ReceiveActorEndCursorOver"); } - void ReceiveActorEndOverlap(AActor * OtherActor) { NativeCall(this, "AActor.ReceiveActorEndOverlap", OtherActor); } + void ReceiveActorEndOverlap(AActor* OtherActor) { NativeCall(this, "AActor.ReceiveActorEndOverlap", OtherActor); } void ReceiveActorOnClicked() { NativeCall(this, "AActor.ReceiveActorOnClicked"); } void ReceiveActorOnInputTouchBegin(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchBegin", FingerIndex); } void ReceiveActorOnInputTouchEnd(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchEnd", FingerIndex); } void ReceiveActorOnInputTouchEnter(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchEnter", FingerIndex); } void ReceiveActorOnInputTouchLeave(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchLeave", FingerIndex); } void ReceiveActorOnReleased() { NativeCall(this, "AActor.ReceiveActorOnReleased"); } - void ReceiveAnyDamage(float Damage, UDamageType * DamageType, AController * InstigatedBy, AActor * DamageCauser) { NativeCall(this, "AActor.ReceiveAnyDamage", Damage, DamageType, InstigatedBy, DamageCauser); } + void ReceiveAnyDamage(float Damage, UDamageType* DamageType, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceiveAnyDamage", Damage, DamageType, InstigatedBy, DamageCauser); } void ReceiveBeginPlay() { NativeCall(this, "AActor.ReceiveBeginPlay"); } void ReceiveDestroyed() { NativeCall(this, "AActor.ReceiveDestroyed"); } void ReceiveEndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.ReceiveEndPlay", EndPlayReason); } - void ReceiveHit(UPrimitiveComponent * MyComp, AActor * Other, UPrimitiveComponent * OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, FHitResult * Hit) { NativeCall(this, "AActor.ReceiveHit", MyComp, Other, OtherComp, bSelfMoved, HitLocation, HitNormal, NormalImpulse, Hit); } - void ReceiveInput(FString * InputName, float Value, FVector VectorValue, bool bStarted, bool bEnded) { NativeCall(this, "AActor.ReceiveInput", InputName, Value, VectorValue, bStarted, bEnded); } - void ReceivePointDamage(float Damage, UDamageType * DamageType, FVector HitLocation, FVector HitNormal, UPrimitiveComponent * HitComponent, FName BoneName, FVector ShotFromDirection, AController * InstigatedBy, AActor * DamageCauser) { NativeCall(this, "AActor.ReceivePointDamage", Damage, DamageType, HitLocation, HitNormal, HitComponent, BoneName, ShotFromDirection, InstigatedBy, DamageCauser); } - void ReceiveRadialDamage(float DamageReceived, UDamageType * DamageType, FVector Origin, FHitResult * HitInfo, AController * InstigatedBy, AActor * DamageCauser) { NativeCall(this, "AActor.ReceiveRadialDamage", DamageReceived, DamageType, Origin, HitInfo, InstigatedBy, DamageCauser); } + void ReceiveHit(UPrimitiveComponent* MyComp, AActor* Other, UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, FHitResult* Hit) { NativeCall(this, "AActor.ReceiveHit", MyComp, Other, OtherComp, bSelfMoved, HitLocation, HitNormal, NormalImpulse, Hit); } + void ReceiveInput(FString* InputName, float Value, FVector VectorValue, bool bStarted, bool bEnded) { NativeCall(this, "AActor.ReceiveInput", InputName, Value, VectorValue, bStarted, bEnded); } + void ReceivePointDamage(float Damage, UDamageType* DamageType, FVector HitLocation, FVector HitNormal, UPrimitiveComponent* HitComponent, FName BoneName, FVector ShotFromDirection, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceivePointDamage", Damage, DamageType, HitLocation, HitNormal, HitComponent, BoneName, ShotFromDirection, InstigatedBy, DamageCauser); } + void ReceiveRadialDamage(float DamageReceived, UDamageType* DamageType, FVector Origin, FHitResult* HitInfo, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceiveRadialDamage", DamageReceived, DamageType, Origin, HitInfo, InstigatedBy, DamageCauser); } void ReceiveTick(float DeltaSeconds) { NativeCall(this, "AActor.ReceiveTick", DeltaSeconds); } void RecieveMatineeUpdated() { NativeCall(this, "AActor.RecieveMatineeUpdated"); } + void ThrottledTick() { NativeCall(this, "AActor.ThrottledTick"); } void UserConstructionScript() { NativeCall(this, "AActor.UserConstructionScript"); } }; +struct AInfo : AActor +{ + + // Functions + + static UClass* StaticClass() { return NativeCall(nullptr, "AInfo.StaticClass"); } +}; + struct APawn : AActor { float& BaseEyeHeightField() { return *GetNativePointerField(this, "APawn.BaseEyeHeight"); } - TSubclassOf& AIControllerClassField() { return *GetNativePointerField*>(this, "APawn.AIControllerClass"); } - APlayerState * PlayerStateField() { return *GetNativePointerField(this, "APawn.PlayerState"); } + TSubclassOf & AIControllerClassField() { return *GetNativePointerField*>(this, "APawn.AIControllerClass"); } + APlayerState * PlayerStateField() { return *GetNativePointerField(this, "APawn.PlayerState"); } char& RemoteViewPitchField() { return *GetNativePointerField(this, "APawn.RemoteViewPitch"); } - AController * LastHitByField() { return *GetNativePointerField(this, "APawn.LastHitBy"); } - AController * ControllerField() { return *GetNativePointerField(this, "APawn.Controller"); } + AController * LastHitByField() { return *GetNativePointerField(this, "APawn.LastHitBy"); } + AController * ControllerField() { return *GetNativePointerField(this, "APawn.Controller"); } float& AllowedYawErrorField() { return *GetNativePointerField(this, "APawn.AllowedYawError"); } bool& bClearOnConsumeField() { return *GetNativePointerField(this, "APawn.bClearOnConsume"); } - FVector& ControlInputVectorField() { return *GetNativePointerField(this, "APawn.ControlInputVector"); } - FVector& LastControlInputVectorField() { return *GetNativePointerField(this, "APawn.LastControlInputVector"); } - TWeakObjectPtr& SpawnedForControllerField() { return *GetNativePointerField*>(this, "APawn.SpawnedForController"); } + TWeakObjectPtr & TetherActorField() { return *GetNativePointerField*>(this, "APawn.TetherActor"); } + float& TetherRadiusField() { return *GetNativePointerField(this, "APawn.TetherRadius"); } + float& TetherHeightField() { return *GetNativePointerField(this, "APawn.TetherHeight"); } + FVector & ControlInputVectorField() { return *GetNativePointerField(this, "APawn.ControlInputVector"); } + FVector & LastControlInputVectorField() { return *GetNativePointerField(this, "APawn.LastControlInputVector"); } + TWeakObjectPtr & SpawnedForControllerField() { return *GetNativePointerField*>(this, "APawn.SpawnedForController"); } // Bit fields @@ -904,40 +1241,48 @@ struct APawn : AActor // Functions - FVector * GetNavAgentLocation(FVector * result) { return NativeCall(this, "APawn.GetNavAgentLocation", result); } + FVector * GetNavAgentLocation(FVector * result) { return NativeCall(this, "APawn.GetNavAgentLocation", result); } void PreInitializeComponents() { NativeCall(this, "APawn.PreInitializeComponents"); } void PostInitializeComponents() { NativeCall(this, "APawn.PostInitializeComponents"); } void PostLoad() { NativeCall(this, "APawn.PostLoad"); } void PostRegisterAllComponents() { NativeCall(this, "APawn.PostRegisterAllComponents"); } void UpdateNavAgent() { NativeCall(this, "APawn.UpdateNavAgent"); } - bool CanBeBaseForCharacter(APawn * APawn2) { return NativeCall(this, "APawn.CanBeBaseForCharacter", APawn2); } - FVector * GetVelocity(FVector * result, bool bIsForRagdoll) { return NativeCall(this, "APawn.GetVelocity", result, bIsForRagdoll); } + FVector * GetVelocity(FVector * result, bool bIsForRagdoll) { return NativeCall(this, "APawn.GetVelocity", result, bIsForRagdoll); } bool IsLocallyControlled() { return NativeCall(this, "APawn.IsLocallyControlled"); } bool ReachedDesiredRotation() { return NativeCall(this, "APawn.ReachedDesiredRotation"); } float GetDefaultHalfHeight() { return NativeCall(this, "APawn.GetDefaultHalfHeight"); } bool ShouldTickIfViewportsOnly() { return NativeCall(this, "APawn.ShouldTickIfViewportsOnly"); } - FVector * GetPawnViewLocation(FVector * result, bool bAllTransforms) { return NativeCall(this, "APawn.GetPawnViewLocation", result, bAllTransforms); } - FRotator * GetViewRotation(FRotator * result) { return NativeCall(this, "APawn.GetViewRotation", result); } + FVector * GetPawnViewLocation(FVector * result, bool bAllTransforms) { return NativeCall(this, "APawn.GetPawnViewLocation", result, bAllTransforms); } + FRotator * GetViewRotation(FRotator * result) { return NativeCall(this, "APawn.GetViewRotation", result); } void SpawnDefaultController() { NativeCall(this, "APawn.SpawnDefaultController"); } void TurnOff() { NativeCall(this, "APawn.TurnOff"); } - void BecomeViewTarget(APlayerController * PC) { NativeCall(this, "APawn.BecomeViewTarget", PC); } + void BecomeViewTarget(APlayerController * PC) { NativeCall(this, "APawn.BecomeViewTarget", PC); } void PawnClientRestart() { NativeCall(this, "APawn.PawnClientRestart"); } void Destroyed() { NativeCall(this, "APawn.Destroyed"); } - bool ShouldTakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APawn.ShouldTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APawn.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - FRotator * GetControlRotation(FRotator * result) { return NativeCall(this, "APawn.GetControlRotation", result); } + bool ShouldTakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APawn.ShouldTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APawn.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + AController * GetCharacterController() { return NativeCall(this, "APawn.GetCharacterController"); } + FRotator * GetControlRotation(FRotator * result) { return NativeCall(this, "APawn.GetControlRotation", result); } void OnRep_Controller() { NativeCall(this, "APawn.OnRep_Controller"); } - void PossessedBy(AController * NewController) { NativeCall(this, "APawn.PossessedBy", NewController); } + void PossessedBy(AController * NewController) { NativeCall(this, "APawn.PossessedBy", NewController); } void UnPossessed() { NativeCall(this, "APawn.UnPossessed"); } - UNetConnection * GetNetConnection() { return NativeCall(this, "APawn.GetNetConnection"); } - UPlayer * GetNetOwningPlayer() { return NativeCall(this, "APawn.GetNetOwningPlayer"); } + UNetConnection * GetNetConnection() { return NativeCall(this, "APawn.GetNetConnection"); } + UPlayer * GetNetOwningPlayer() { return NativeCall(this, "APawn.GetNetOwningPlayer"); } void DestroyPlayerInputComponent() { NativeCall(this, "APawn.DestroyPlayerInputComponent"); } bool IsMoveInputIgnored() { return NativeCall(this, "APawn.IsMoveInputIgnored"); } + void SetMovementTether(AActor * InTetherActor, float Radius, float Height) { NativeCall(this, "APawn.SetMovementTether", InTetherActor, Radius, Height); } + void ClearMovementTether() { NativeCall(this, "APawn.ClearMovementTether"); } + AActor * GetTetherObject() { return NativeCall(this, "APawn.GetTetherObject"); } + bool IsMovementTethered() { return NativeCall(this, "APawn.IsMovementTethered"); } + bool IsWithinTether() { return NativeCall(this, "APawn.IsWithinTether"); } + bool IsTargetWithinTether(FVector * Destination, float AdditionalRadius) { return NativeCall(this, "APawn.IsTargetWithinTether", Destination, AdditionalRadius); } + FVector * GetTetheredDestination(FVector * result, FVector * Destination, float AdditionalRadius) { return NativeCall(this, "APawn.GetTetheredDestination", result, Destination, AdditionalRadius); } + FVector * GetTetheredVelocity(FVector * result, FVector * RequestedVelocity, float DeltaSeconds) { return NativeCall(this, "APawn.GetTetheredVelocity", result, RequestedVelocity, DeltaSeconds); } void AddMovementInput(FVector WorldDirection, float ScaleValue, bool bForce) { NativeCall(this, "APawn.AddMovementInput", WorldDirection, ScaleValue, bForce); } - FVector * ConsumeMovementInputVector(FVector * result) { return NativeCall(this, "APawn.ConsumeMovementInputVector", result); } + FVector * ConsumeMovementInputVector(FVector * result) { return NativeCall(this, "APawn.ConsumeMovementInputVector", result); } void Internal_AddMovementInput(FVector WorldAccel, bool bForce) { NativeCall(this, "APawn.Internal_AddMovementInput", WorldAccel, bForce); } void PostInputProcessed() { NativeCall(this, "APawn.PostInputProcessed"); } - FVector * Internal_ConsumeMovementInputVector(FVector * result) { return NativeCall(this, "APawn.Internal_ConsumeMovementInputVector", result); } + FVector * Internal_ConsumeMovementInputVector(FVector * result) { return NativeCall(this, "APawn.Internal_ConsumeMovementInputVector", result); } void AddControllerPitchInput(float Val) { NativeCall(this, "APawn.AddControllerPitchInput", Val); } void AddControllerYawInput(float Val) { NativeCall(this, "APawn.AddControllerYawInput", Val); } void AddControllerRollInput(float Val) { NativeCall(this, "APawn.AddControllerRollInput", Val); } @@ -945,33 +1290,33 @@ struct APawn : AActor void Tick(float DeltaSeconds) { NativeCall(this, "APawn.Tick", DeltaSeconds); } void RecalculateBaseEyeHeight() { NativeCall(this, "APawn.RecalculateBaseEyeHeight"); } void Reset() { NativeCall(this, "APawn.Reset"); } - FString * GetHumanReadableName(FString * result) { return NativeCall(this, "APawn.GetHumanReadableName", result); } - void GetActorEyesViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "APawn.GetActorEyesViewPoint", out_Location, out_Rotation); } - FRotator * GetBaseAimRotation(FRotator * result) { return NativeCall(this, "APawn.GetBaseAimRotation", result); } + FString * GetHumanReadableName(FString * result) { return NativeCall(this, "APawn.GetHumanReadableName", result); } + void GetActorEyesViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "APawn.GetActorEyesViewPoint", out_Location, out_Rotation); } + FRotator * GetBaseAimRotation(FRotator * result) { return NativeCall(this, "APawn.GetBaseAimRotation", result); } bool InFreeCam() { return NativeCall(this, "APawn.InFreeCam"); } void OutsideWorldBounds() { NativeCall(this, "APawn.OutsideWorldBounds"); } void ClientSetRotation(FRotator NewRotation) { NativeCall(this, "APawn.ClientSetRotation", NewRotation); } void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "APawn.FaceRotation", NewControlRotation, DeltaTime, bFromController); } void DetachFromControllerPendingDestroy() { NativeCall(this, "APawn.DetachFromControllerPendingDestroy"); } - AController * GetDamageInstigator(AController * InstigatedBy, UDamageType * DamageType) { return NativeCall(this, "APawn.GetDamageInstigator", InstigatedBy, DamageType); } - void EnableInput(APlayerController * PlayerController) { NativeCall(this, "APawn.EnableInput", PlayerController); } - void DisableInput(APlayerController * PlayerController) { NativeCall(this, "APawn.DisableInput", PlayerController); } + AController * GetDamageInstigator(AController * InstigatedBy, UDamageType * DamageType) { return NativeCall(this, "APawn.GetDamageInstigator", InstigatedBy, DamageType); } + void EnableInput(APlayerController * PlayerController) { NativeCall(this, "APawn.EnableInput", PlayerController); } + void DisableInput(APlayerController * PlayerController) { NativeCall(this, "APawn.DisableInput", PlayerController); } bool IsWalking() { return NativeCall(this, "APawn.IsWalking"); } bool IsFalling() { return NativeCall(this, "APawn.IsFalling"); } bool IsCrouched() { return NativeCall(this, "APawn.IsCrouched"); } - void PostNetReceiveVelocity(FVector * NewVelocity) { NativeCall(this, "APawn.PostNetReceiveVelocity", NewVelocity); } + void PostNetReceiveVelocity(FVector * NewVelocity) { NativeCall(this, "APawn.PostNetReceiveVelocity", NewVelocity); } void PostNetReceiveLocationAndRotation() { NativeCall(this, "APawn.PostNetReceiveLocationAndRotation"); } - bool IsBasedOnActor(AActor * Other) { return NativeCall(this, "APawn.IsBasedOnActor", Other); } - bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "APawn.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APawn.GetLifetimeReplicatedProps", OutLifetimeProps); } - void PawnMakeNoise(float Loudness, FVector NoiseLocation, bool bUseNoiseMakerLocation, AActor * NoiseMaker) { NativeCall(this, "APawn.PawnMakeNoise", Loudness, NoiseLocation, bUseNoiseMakerLocation, NoiseMaker); } - APlayerController * GetOwnerController() { return NativeCall(this, "APawn.GetOwnerController"); } - AController * GetCharacterController() { return NativeCall(this, "APawn.GetCharacterController"); } + bool IsBasedOnActor(AActor * Other) { return NativeCall(this, "APawn.IsBasedOnActor", Other); } + bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "APawn.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "APawn.GetLifetimeReplicatedProps", OutLifetimeProps); } + void PawnMakeNoise(float Loudness, FVector NoiseLocation, bool bUseNoiseMakerLocation, AActor * NoiseMaker) { NativeCall(this, "APawn.PawnMakeNoise", Loudness, NoiseLocation, bUseNoiseMakerLocation, NoiseMaker); } + APlayerController * GetOwnerController() { return NativeCall(this, "APawn.GetOwnerController"); } bool IsLocallyControlledByPlayer() { return NativeCall(this, "APawn.IsLocallyControlledByPlayer"); } static void StaticRegisterNativesAPawn() { NativeCall(nullptr, "APawn.StaticRegisterNativesAPawn"); } + void InterceptInputEvent(FString * InputName) { NativeCall(this, "APawn.InterceptInputEvent", InputName); } }; -struct UCheatManager +struct UCheatManager : UObject { float& DebugTraceDistanceField() { return *GetNativePointerField(this, "UCheatManager.DebugTraceDistance"); } float& DebugCapsuleHalfHeightField() { return *GetNativePointerField(this, "UCheatManager.DebugCapsuleHalfHeight"); } @@ -1003,10 +1348,10 @@ struct UCheatManager void DestroyTarget() { NativeCall(this, "UCheatManager.DestroyTarget"); } void DestroyAll(TSubclassOf aClass) { NativeCall>(this, "UCheatManager.DestroyAll", aClass); } void DestroyPawns(TSubclassOf aClass) { NativeCall>(this, "UCheatManager.DestroyPawns", aClass); } - void Summon(FString * ClassName) { NativeCall(this, "UCheatManager.Summon", ClassName); } + void Summon(FString* ClassName) { NativeCall(this, "UCheatManager.Summon", ClassName); } void PlayersOnly() { NativeCall(this, "UCheatManager.PlayersOnly"); } void ViewSelf() { NativeCall(this, "UCheatManager.ViewSelf"); } - void ViewPlayer(FString * S) { NativeCall(this, "UCheatManager.ViewPlayer", S); } + void ViewPlayer(FString* S) { NativeCall(this, "UCheatManager.ViewPlayer", S); } void ViewActor(FName ActorName) { NativeCall(this, "UCheatManager.ViewActor", ActorName); } void ViewClass(TSubclassOf DesiredClass) { NativeCall>(this, "UCheatManager.ViewClass", DesiredClass); } void SetLevelStreamingStatus(FName PackageName, bool bShouldBeLoaded, bool bShouldBeVisible) { NativeCall(this, "UCheatManager.SetLevelStreamingStatus", PackageName, bShouldBeLoaded, bShouldBeVisible); } @@ -1028,58 +1373,110 @@ struct UCheatManager void RebuildNavigation() { NativeCall(this, "UCheatManager.RebuildNavigation"); } void DumpOnlineSessionState() { NativeCall(this, "UCheatManager.DumpOnlineSessionState"); } void DumpVoiceMutingState() { NativeCall(this, "UCheatManager.DumpVoiceMutingState"); } - UWorld * GetWorld() { return NativeCall(this, "UCheatManager.GetWorld"); } + UWorld* GetWorld() { return NativeCall(this, "UCheatManager.GetWorld"); } void BugItGo(float X, float Y, float Z, float Pitch, float Yaw, float Roll) { NativeCall(this, "UCheatManager.BugItGo", X, Y, Z, Pitch, Yaw, Roll); } - void BugItGoString(FString * TheLocation, FString * TheRotation) { NativeCall(this, "UCheatManager.BugItGoString", TheLocation, TheRotation); } + void BugItGoString(FString* TheLocation, FString* TheRotation) { NativeCall(this, "UCheatManager.BugItGoString", TheLocation, TheRotation); } void BugItWorker(FVector TheLocation, FRotator TheRotation) { NativeCall(this, "UCheatManager.BugItWorker", TheLocation, TheRotation); } - void BugIt(FString * ScreenShotDescription) { NativeCall(this, "UCheatManager.BugIt", ScreenShotDescription); } - void BugItStringCreator(FVector ViewLocation, FRotator ViewRotation, FString * GoString, FString * LocString) { NativeCall(this, "UCheatManager.BugItStringCreator", ViewLocation, ViewRotation, GoString, LocString); } + void BugIt(FString* ScreenShotDescription) { NativeCall(this, "UCheatManager.BugIt", ScreenShotDescription); } + void BugItStringCreator(FVector ViewLocation, FRotator ViewRotation, FString* GoString, FString* LocString) { NativeCall(this, "UCheatManager.BugItStringCreator", ViewLocation, ViewRotation, GoString, LocString); } void FlushLog() { NativeCall(this, "UCheatManager.FlushLog"); } void LogLoc() { NativeCall(this, "UCheatManager.LogLoc"); } void SetWorldOrigin() { NativeCall(this, "UCheatManager.SetWorldOrigin"); } + static void StaticRegisterNativesUCheatManager() { NativeCall(nullptr, "UCheatManager.StaticRegisterNativesUCheatManager"); } void ServerToggleAILogging() { NativeCall(this, "UCheatManager.ServerToggleAILogging"); } }; struct UShooterCheatManager : UCheatManager { bool& bIsRCONCheatManagerField() { return *GetNativePointerField(this, "UShooterCheatManager.bIsRCONCheatManager"); } - AShooterPlayerController * MyPCField() { return *GetNativePointerField(this, "UShooterCheatManager.MyPC"); } + AShooterPlayerController* MyPCField() { return *GetNativePointerField(this, "UShooterCheatManager.MyPC"); } // Functions void TakeAllStructure() { NativeCall(this, "UShooterCheatManager.TakeAllStructure"); } void TakeAllDino() { NativeCall(this, "UShooterCheatManager.TakeAllDino"); } + void TakeTribe(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.TakeTribe", TribeTeamID); } void GMBuff() { NativeCall(this, "UShooterCheatManager.GMBuff"); } - void GMSummon(FString * ClassName, int Level) { NativeCall(this, "UShooterCheatManager.GMSummon", ClassName, Level); } + void GMSummon(FString* ClassName, int Level) { NativeCall(this, "UShooterCheatManager.GMSummon", ClassName, Level); } void ClearMyBuffs() { NativeCall(this, "UShooterCheatManager.ClearMyBuffs"); } - void AllowPlayerToJoinNoCheck(FString * SteamId) { NativeCall(this, "UShooterCheatManager.AllowPlayerToJoinNoCheck", SteamId); } - void RenameTribe(FString * TribeName, FString * NewName) { NativeCall(this, "UShooterCheatManager.RenameTribe", TribeName, NewName); } - void RenamePlayer(FString * PlayerName, FString * NewName) { NativeCall(this, "UShooterCheatManager.RenamePlayer", PlayerName, NewName); } - void DestroyActors(FString * ClassName) { NativeCall(this, "UShooterCheatManager.DestroyActors", ClassName); } + void ListMyBuffs() { NativeCall(this, "UShooterCheatManager.ListMyBuffs"); } + void ListMyTargetBuffs() { NativeCall(this, "UShooterCheatManager.ListMyTargetBuffs"); } + FString* ListBuffs(FString* result, APrimalCharacter* target) { return NativeCall(this, "UShooterCheatManager.ListBuffs", result, target); } + void DebugCompanionReactions() { NativeCall(this, "UShooterCheatManager.DebugCompanionReactions"); } + void DebugCompanionAsyncLoadedFiles() { NativeCall(this, "UShooterCheatManager.DebugCompanionAsyncLoadedFiles"); } + void ClearCryoSickness() { NativeCall(this, "UShooterCheatManager.ClearCryoSickness"); } + void Broadcast(FString* MessageText) { NativeCall(this, "UShooterCheatManager.Broadcast", MessageText); } + void AllowPlayerToJoinNoCheck(FString* SteamId) { NativeCall(this, "UShooterCheatManager.AllowPlayerToJoinNoCheck", SteamId); } + void RenameTribe(FString* TribeName, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenameTribe", TribeName, NewName); } + void RenameTribeID(int TribeID, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenameTribeID", TribeID, NewName); } + void RenamePlayer(FString* PlayerName, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenamePlayer", PlayerName, NewName); } + void RenamePlayerId(int PlayerID, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenamePlayerId", PlayerID, NewName); } + void DestroyActors(FString* ClassName) { NativeCall(this, "UShooterCheatManager.DestroyActors", ClassName); } + void DestroyWildDinoClasses(FString* ClassName) { NativeCall(this, "UShooterCheatManager.DestroyWildDinoClasses", ClassName); } + void SetGraphicsQuality(int val) { NativeCall(this, "UShooterCheatManager.SetGraphicsQuality", val); } + void SaveWorld() { NativeCall(this, "UShooterCheatManager.SaveWorld"); } void StartSaveBackup() { NativeCall(this, "UShooterCheatManager.StartSaveBackup"); } void DoExit() { NativeCall(this, "UShooterCheatManager.DoExit"); } - void OpenMap(FString * MapName) { NativeCall(this, "UShooterCheatManager.OpenMap", MapName); } + void OpenMap(FString* MapName) { NativeCall(this, "UShooterCheatManager.OpenMap", MapName); } void DoRestartLevel() { NativeCall(this, "UShooterCheatManager.DoRestartLevel"); } void SetGlobalPause(bool bIsPaused) { NativeCall(this, "UShooterCheatManager.SetGlobalPause", bIsPaused); } - void DisallowPlayerToJoinNoCheck(FString * SteamId) { NativeCall(this, "UShooterCheatManager.DisallowPlayerToJoinNoCheck", SteamId); } - bool SetCreativeModeOnPawn(AShooterCharacter * Pawn, bool bCreativeMode) { return NativeCall(this, "UShooterCheatManager.SetCreativeModeOnPawn", Pawn, bCreativeMode); } + void DisallowPlayerToJoinNoCheck(FString* SteamId) { NativeCall(this, "UShooterCheatManager.DisallowPlayerToJoinNoCheck", SteamId); } + void CamZoomIn() { NativeCall(this, "UShooterCheatManager.CamZoomIn"); } + void CamZoomOut() { NativeCall(this, "UShooterCheatManager.CamZoomOut"); } + void OnToggleInGameMenu() { NativeCall(this, "UShooterCheatManager.OnToggleInGameMenu"); } + void GiveResources() { NativeCall(this, "UShooterCheatManager.GiveResources"); } + void GiveEngrams() { NativeCall(this, "UShooterCheatManager.GiveEngrams"); } + void GiveEngramsTekOnly() { NativeCall(this, "UShooterCheatManager.GiveEngramsTekOnly"); } + bool SetCreativeModeOnPawn(AShooterCharacter* Pawn, bool bCreativeMode) { return NativeCall(this, "UShooterCheatManager.SetCreativeModeOnPawn", Pawn, bCreativeMode); } void GiveCreativeMode() { NativeCall(this, "UShooterCheatManager.GiveCreativeMode"); } + void GCM() { NativeCall(this, "UShooterCheatManager.GCM"); } + void DeepPockets() { NativeCall(this, "UShooterCheatManager.DeepPockets"); } + void InfiniteWeight() { NativeCall(this, "UShooterCheatManager.InfiniteWeight"); } void GiveCreativeModeToTarget() { NativeCall(this, "UShooterCheatManager.GiveCreativeModeToTarget"); } + void GCMT() { NativeCall(this, "UShooterCheatManager.GCMT"); } + void GlobalObjectCount() { NativeCall(this, "UShooterCheatManager.GlobalObjectCount"); } void GiveCreativeModeToPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.GiveCreativeModeToPlayer", PlayerID); } + void GCMP(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.GCMP", PlayerID); } + void ForceTribes(FString* PlayerName1, FString* PlayerName2, FString* NewTribeName) { NativeCall(this, "UShooterCheatManager.ForceTribes", PlayerName1, PlayerName2, NewTribeName); } + void ShowInGameMenu() { NativeCall(this, "UShooterCheatManager.ShowInGameMenu"); } + void AddExperienceToTarget(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.AddExperienceToTarget", HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void AddExperience(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.AddExperience", HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void LevelUp(FName statName, int numLevels) { NativeCall(this, "UShooterCheatManager.LevelUp", statName, numLevels); } + void SetStatOnTarget(FName StatName, float value) { NativeCall(this, "UShooterCheatManager.SetStatOnTarget", StatName, value); } void LevelUpAOE(FName statName, float Radius, int numLevels) { NativeCall(this, "UShooterCheatManager.LevelUpAOE", statName, Radius, numLevels); } void LevelUpTarget(FName StatName, int NumLevels) { NativeCall(this, "UShooterCheatManager.LevelUpTarget", StatName, NumLevels); } - void LevelUpInternal(APrimalCharacter * character, FName statName, int numLevels) { NativeCall(this, "UShooterCheatManager.LevelUpInternal", character, statName, numLevels); } + void LevelUpInternal(APrimalCharacter* character, FName statName, int numLevels) { NativeCall(this, "UShooterCheatManager.LevelUpInternal", character, statName, numLevels); } void GiveExpToPlayer(__int64 PlayerID, float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.GiveExpToPlayer", PlayerID, HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void GiveTekEngramsTo(__int64 PlayerID, FName* blueprintPath) { NativeCall(this, "UShooterCheatManager.GiveTekEngramsTo", PlayerID, blueprintPath); } void GiveExpToTarget(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.GiveExpToTarget", HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void DebugMyTarget() { NativeCall(this, "UShooterCheatManager.DebugMyTarget"); } + void DebugMyTargetFromLocation(FVector* spectatorLocation, FRotator* rotator) { NativeCall(this, "UShooterCheatManager.DebugMyTargetFromLocation", spectatorLocation, rotator); } + void DebugMyTargetPrint(AActor* actor) { NativeCall(this, "UShooterCheatManager.DebugMyTargetPrint", actor); } void DestroyMyTarget() { NativeCall(this, "UShooterCheatManager.DestroyMyTarget"); } void SetMyTargetSleeping(bool bIsSleeping) { NativeCall(this, "UShooterCheatManager.SetMyTargetSleeping", bIsSleeping); } void SetTargetDinoColor(int ColorRegion, int ColorID) { NativeCall(this, "UShooterCheatManager.SetTargetDinoColor", ColorRegion, ColorID); } void Kill() { NativeCall(this, "UShooterCheatManager.Kill"); } + void KillAOETribe(FName Category, float Radius, int TribeID) { NativeCall(this, "UShooterCheatManager.KillAOETribe", Category, Radius, TribeID); } void KillAOE(FName Category, float Radius) { NativeCall(this, "UShooterCheatManager.KillAOE", Category, Radius); } + void Mission(FName CheatName, float Value) { NativeCall(this, "UShooterCheatManager.Mission", CheatName, Value); } + void Dino(FName CheatName) { NativeCall(this, "UShooterCheatManager.Dino", CheatName); } + void DinoSet(FName CheatName, float Value) { NativeCall(this, "UShooterCheatManager.DinoSet", CheatName, Value); } + void SetNetworkTime(float NewTime) { NativeCall(this, "UShooterCheatManager.SetNetworkTime", NewTime); } + void SetDifficultyValue(float Value) { NativeCall(this, "UShooterCheatManager.SetDifficultyValue", Value); } + TArray>* FuzzyMissionSearch(TArray>* result, FString* MissionTag) { return NativeCall>*, TArray>*, FString*>(this, "UShooterCheatManager.FuzzyMissionSearch", result, MissionTag); } + void StartMission(FName MissionTag) { NativeCall(this, "UShooterCheatManager.StartMission", MissionTag); } + void ForceStartMission(FName MissionTag) { NativeCall(this, "UShooterCheatManager.ForceStartMission", MissionTag); } + void LeaveMission() { NativeCall(this, "UShooterCheatManager.LeaveMission"); } + void CompleteMission() { NativeCall(this, "UShooterCheatManager.CompleteMission"); } + void DeactivateMission() { NativeCall(this, "UShooterCheatManager.DeactivateMission"); } + void SetActiveMissionDebugFlags(int DebugFlags) { NativeCall(this, "UShooterCheatManager.SetActiveMissionDebugFlags", DebugFlags); } + void ShowActiveMissions() { NativeCall(this, "UShooterCheatManager.ShowActiveMissions"); } void KillPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.KillPlayer", PlayerID); } void TeleportPlayerIDToMe(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.TeleportPlayerIDToMe", PlayerID); } - void TeleportPlayerNameToMe(FString * PlayerName) { NativeCall(this, "UShooterCheatManager.TeleportPlayerNameToMe", PlayerName); } + void TeleportPlayerNameToMe(FString* PlayerName) { NativeCall(this, "UShooterCheatManager.TeleportPlayerNameToMe", PlayerName); } void TeleportToPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.TeleportToPlayer", PlayerID); } + void TeleportToPlayerName(FString* PlayerName) { NativeCall(this, "UShooterCheatManager.TeleportToPlayerName", PlayerName); } + void TPName(FString* PlayerName) { NativeCall(this, "UShooterCheatManager.TPName", PlayerName); } void DestroyTribePlayers() { NativeCall(this, "UShooterCheatManager.DestroyTribePlayers"); } void DestroyTribeIdPlayers(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeIdPlayers", TribeTeamID); } void DestroyTribeDinos() { NativeCall(this, "UShooterCheatManager.DestroyTribeDinos"); } @@ -1087,76 +1484,176 @@ struct UShooterCheatManager : UCheatManager void DestroyAllTames() { NativeCall(this, "UShooterCheatManager.DestroyAllTames"); } void DestroyTribeStructures() { NativeCall(this, "UShooterCheatManager.DestroyTribeStructures"); } void DestroyTribeIdStructures(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeIdStructures", TribeTeamID); } - void DestroyTribeStructuresLessThan(int TribeTeamID, int Connections) { NativeCall(this, "UShooterCheatManager.DestroyTribeStructuresLessThan", TribeTeamID, Connections); } + void DestroyTribeId(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeId", TribeTeamID); } + void DestroyTribeStructuresLessThan(int TribeTeamID, int Connections, bool includeContainers) { NativeCall(this, "UShooterCheatManager.DestroyTribeStructuresLessThan", TribeTeamID, Connections, includeContainers); } void TribeMessage(int TribeTeamID, FString Message) { NativeCall(this, "UShooterCheatManager.TribeMessage", TribeTeamID, Message); } void ForcePlayerToJoinTargetTribe(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.ForcePlayerToJoinTargetTribe", PlayerID); } + void ForcePoop() { NativeCall(this, "UShooterCheatManager.ForcePoop"); } + void ForceJoinTribe() { NativeCall(this, "UShooterCheatManager.ForceJoinTribe"); } void ForcePlayerToJoinTribe(__int64 PlayerID, FString TribeName) { NativeCall(this, "UShooterCheatManager.ForcePlayerToJoinTribe", PlayerID, TribeName); } - void SpawnActorTamed(FString * blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnActorTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset); } - AActor * DoSummon(FString * ClassName) { return NativeCall(this, "UShooterCheatManager.DoSummon", ClassName); } - void Summon(FString * ClassName) { NativeCall(this, "UShooterCheatManager.Summon", ClassName); } - void SummonTamed(FString * ClassName) { NativeCall(this, "UShooterCheatManager.SummonTamed", ClassName); } - void SDF(FName * DinoBlueprintPath, bool bIsTamed) { NativeCall(this, "UShooterCheatManager.SDF", DinoBlueprintPath, bIsTamed); } - void RainDinosHelper(TArray * dinoRefs, int NumberActors, float SpreadAmount, float ZOffset) { NativeCall *, int, float, float>(this, "UShooterCheatManager.RainDinosHelper", dinoRefs, NumberActors, SpreadAmount, ZOffset); } + void ForcePlayerToJoinTribeId(__int64 PlayerID, int TribeTeamID) { NativeCall(this, "UShooterCheatManager.ForcePlayerToJoinTribeId", PlayerID, TribeTeamID); } + void JoinTribe(__int64 PlayerID, int TribeTeamID) { NativeCall(this, "UShooterCheatManager.JoinTribe", PlayerID, TribeTeamID); } + void SpawnActor(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnActor", blueprintPath, spawnDistance, spawnYOffset, ZOffset); } + void SpawnActorTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnActorTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset); } + void SpawnDino(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int DinoLevel) { NativeCall(this, "UShooterCheatManager.SpawnDino", blueprintPath, spawnDistance, spawnYOffset, ZOffset, DinoLevel); } + APrimalDinoCharacter* SpawnSetupDinoInternal(FDinoSetup* DinoSetup, FRotator* SpawnRot) { return NativeCall(this, "UShooterCheatManager.SpawnSetupDinoInternal", DinoSetup, SpawnRot); } + void SpawnSetupDino(FString* DinoBlueprintPath, FString* SaddleBlueprintPath, float SaddleQuality, int DinoLevel, FString* DinoStats, float SpawnDistance, float YOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnSetupDino", DinoBlueprintPath, SaddleBlueprintPath, SaddleQuality, DinoLevel, DinoStats, SpawnDistance, YOffset, ZOffset); } + void SpawnExactDino(FString* DinoBlueprintPath, FString* SaddleBlueprintPath, float SaddleQuality, int BaseLevel, int ExtraLevels, FString* BaseStats, FString* AddedStats, FString* DinoName, char Cloned, char Neutered, FString* TamedOn, FString* UploadedFrom, FString* ImprinterName, int ImprinterPlayerID, float ImprintQuality, FString* Colors, __int64 DinoID, __int64 Exp, float SpawnDistance, float YOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnExactDino", DinoBlueprintPath, SaddleBlueprintPath, SaddleQuality, BaseLevel, ExtraLevels, BaseStats, AddedStats, DinoName, Cloned, Neutered, TamedOn, UploadedFrom, ImprinterName, ImprinterPlayerID, ImprintQuality, Colors, DinoID, Exp, SpawnDistance, YOffset, ZOffset); } + void DumpDinoStats() { NativeCall(this, "UShooterCheatManager.DumpDinoStats"); } + AActor* DoSummon(FString* ClassName) { return NativeCall(this, "UShooterCheatManager.DoSummon", ClassName); } + void Summon(FString* ClassName) { NativeCall(this, "UShooterCheatManager.Summon", ClassName); } + void SummonTamed(FString* ClassName) { NativeCall(this, "UShooterCheatManager.SummonTamed", ClassName); } + void ForceGiveBuff(FName* BuffBlueprintPath, bool bEnable) { NativeCall(this, "UShooterCheatManager.ForceGiveBuff", BuffBlueprintPath, bEnable); } + void SDF(FName* DinoBlueprintPath, bool bIsTamed) { NativeCall(this, "UShooterCheatManager.SDF", DinoBlueprintPath, bIsTamed); } + void SpawnActorSpread(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "UShooterCheatManager.SpawnActorSpread", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorSpreadTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "UShooterCheatManager.SpawnActorSpreadTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void RainDinosHelper(TArray* dinoRefs, int NumberActors, float SpreadAmount, float ZOffset) { NativeCall*, int, float, float>(this, "UShooterCheatManager.RainDinosHelper", dinoRefs, NumberActors, SpreadAmount, ZOffset); } void RainCritters(int NumberActors, float SpreadAmount, float ZOffset) { NativeCall(this, "UShooterCheatManager.RainCritters", NumberActors, SpreadAmount, ZOffset); } void RainDinos(int NumberActors, float SpreadAmount, float ZOffset) { NativeCall(this, "UShooterCheatManager.RainDinos", NumberActors, SpreadAmount, ZOffset); } void RainDanger(int NumberActors, float SpreadAmount, float ZOffset) { NativeCall(this, "UShooterCheatManager.RainDanger", NumberActors, SpreadAmount, ZOffset); } + void LeaveMeAlone() { NativeCall(this, "UShooterCheatManager.LeaveMeAlone"); } void InfiniteStats() { NativeCall(this, "UShooterCheatManager.InfiniteStats"); } + void SetInfiniteStats(bool bInfinite) { NativeCall(this, "UShooterCheatManager.SetInfiniteStats", bInfinite); } void GiveInfiniteStatsToTarget() { NativeCall(this, "UShooterCheatManager.GiveInfiniteStatsToTarget"); } + void RefillStats() { NativeCall(this, "UShooterCheatManager.RefillStats"); } + void ToggleHud() { NativeCall(this, "UShooterCheatManager.ToggleHud"); } void EnableCheats(FString pass) { NativeCall(this, "UShooterCheatManager.EnableCheats", pass); } + void ToggleGun() { NativeCall(this, "UShooterCheatManager.ToggleGun"); } + void ToggleDamageNumbers() { NativeCall(this, "UShooterCheatManager.ToggleDamageNumbers"); } + void ToggleDamageLogging() { NativeCall(this, "UShooterCheatManager.ToggleDamageLogging"); } + void SetGodMode(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetGodMode", bEnable); } void BanPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.BanPlayer", PlayerSteamName); } void UnbanPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.UnbanPlayer", PlayerSteamName); } + void EnableSpectator() { NativeCall(this, "UShooterCheatManager.EnableSpectator"); } + void DisableSpectator() { NativeCall(this, "UShooterCheatManager.DisableSpectator"); } void KickPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.KickPlayer", PlayerSteamName); } void Suicide() { NativeCall(this, "UShooterCheatManager.Suicide"); } void ForceTame() { NativeCall(this, "UShooterCheatManager.ForceTame"); } void ForceTameAOE(float Radius) { NativeCall(this, "UShooterCheatManager.ForceTameAOE", Radius); } void SetImprintQuality(float ImprintQuality) { NativeCall(this, "UShooterCheatManager.SetImprintQuality", ImprintQuality); } + void SetTamingEffectivenessModifier(float TamingEffectiveness) { NativeCall(this, "UShooterCheatManager.SetTamingEffectivenessModifier", TamingEffectiveness); } + void StartNearestHorde(FName HordeType, int DifficultyLevel) { NativeCall(this, "UShooterCheatManager.StartNearestHorde", HordeType, DifficultyLevel); } + void ListActiveHordeEvents() { NativeCall(this, "UShooterCheatManager.ListActiveHordeEvents"); } + void TeleportToActiveHorde(int EventIndex) { NativeCall(this, "UShooterCheatManager.TeleportToActiveHorde", EventIndex); } + void SetImprintedPlayer(FString NewImprinterName, int NewImprinterPlayerDataID) { NativeCall(this, "UShooterCheatManager.SetImprintedPlayer", NewImprinterName, NewImprinterPlayerDataID); } + void TransferImprints(int oldPlayerId, int newPlayerId, FString NewImprinterName) { NativeCall(this, "UShooterCheatManager.TransferImprints", oldPlayerId, newPlayerId, NewImprinterName); } void DoTame() { NativeCall(this, "UShooterCheatManager.DoTame"); } void GiveToMe() { NativeCall(this, "UShooterCheatManager.GiveToMe"); } + void GiveToMeAOE(float Radius) { NativeCall(this, "UShooterCheatManager.GiveToMeAOE", Radius); } void GiveAllStructure() { NativeCall(this, "UShooterCheatManager.GiveAllStructure"); } void SetTargetPlayerBodyVal(int BodyValIndex, float BodyVal) { NativeCall(this, "UShooterCheatManager.SetTargetPlayerBodyVal", BodyValIndex, BodyVal); } void SetTargetPlayerColorVal(int ColorValIndex, float ColorVal) { NativeCall(this, "UShooterCheatManager.SetTargetPlayerColorVal", ColorValIndex, ColorVal); } void SetBabyAge(float AgeValue) { NativeCall(this, "UShooterCheatManager.SetBabyAge", AgeValue); } void ListPlayers() { NativeCall(this, "UShooterCheatManager.ListPlayers"); } + void GetChat() { NativeCall(this, "UShooterCheatManager.GetChat"); } + void GetGameLog() { NativeCall(this, "UShooterCheatManager.GetGameLog"); } void EnemyInVisible(bool Invisible) { NativeCall(this, "UShooterCheatManager.EnemyInVisible", Invisible); } + void ShowTutorial(int TutorialIndex, bool bForceDisplay) { NativeCall(this, "UShooterCheatManager.ShowTutorial", TutorialIndex, bForceDisplay); } + void HideTutorial(int TutorialInde) { NativeCall(this, "UShooterCheatManager.HideTutorial", TutorialInde); } + void ClearTutorials() { NativeCall(this, "UShooterCheatManager.ClearTutorials"); } + void TestSteamRefreshItems() { NativeCall(this, "UShooterCheatManager.TestSteamRefreshItems"); } void AddItemToAllClustersInventory(FString UserId, int MasterIndexNum) { NativeCall(this, "UShooterCheatManager.AddItemToAllClustersInventory", UserId, MasterIndexNum); } - static void GiveAllItemsInSet(AShooterPlayerController * Controller, TArray * Items) { NativeCall *>(nullptr, "UShooterCheatManager.GiveAllItemsInSet", Controller, Items); } - void GiveArmorSet(FName Tier, float Quality) { NativeCall(this, "UShooterCheatManager.GiveArmorSet", Tier, Quality); } - void GiveWeaponSet(int Tier, float Quality) { NativeCall(this, "UShooterCheatManager.GiveWeaponSet", Tier, Quality); } - void GiveItemSet(int Tier) { NativeCall(this, "UShooterCheatManager.GiveItemSet", Tier); } - void GiveItemToPlayer(int playerID, FString * blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemToPlayer", playerID, blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItemNum(int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemNum", masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItem(FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItem", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + static void GiveAllItemsInSet(AShooterPlayerController* Controller, TArray* Items) { NativeCall*>(nullptr, "UShooterCheatManager.GiveAllItemsInSet", Controller, Items); } + static float QualityNameToFloat(FName QualityName) { return NativeCall(nullptr, "UShooterCheatManager.QualityNameToFloat", QualityName); } + void GiveArmorSet(FName Tier, FName QualityName) { NativeCall(this, "UShooterCheatManager.GiveArmorSet", Tier, QualityName); } + void GiveWeaponSet(FName Tier, FName QualityName) { NativeCall(this, "UShooterCheatManager.GiveWeaponSet", Tier, QualityName); } + void GiveItemSet(FName Tier) { NativeCall(this, "UShooterCheatManager.GiveItemSet", Tier); } + void GMComp(int level) { NativeCall(this, "UShooterCheatManager.GMComp", level); } + void GiveDinoSet(FName Tier, int NumDinos) { NativeCall(this, "UShooterCheatManager.GiveDinoSet", Tier, NumDinos); } + void GiveDinoSet() { NativeCall(this, "UShooterCheatManager.GiveDinoSet"); } + void AddEquipmentDurability(const float durability) { NativeCall(this, "UShooterCheatManager.AddEquipmentDurability", durability); } + void GFI(FName* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GFI", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItemToPlayer(int playerID, FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemToPlayer", playerID, blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } void GiveItemNumToPlayer(int playerID, int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemNumToPlayer", playerID, masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } void ClearPlayerInventory(int playerID, bool bClearInventory, bool bClearSlotItems, bool bClearEquippedItems) { NativeCall(this, "UShooterCheatManager.ClearPlayerInventory", playerID, bClearInventory, bClearSlotItems, bClearEquippedItems); } + void DoTestingThing() { NativeCall(this, "UShooterCheatManager.DoTestingThing"); } + void DoHang() { NativeCall(this, "UShooterCheatManager.DoHang"); } + void SetMessageOfTheDay(FString* Message) { NativeCall(this, "UShooterCheatManager.SetMessageOfTheDay", Message); } + void ShowMessageOfTheDay() { NativeCall(this, "UShooterCheatManager.ShowMessageOfTheDay"); } + void ReportSpawnManagers() { NativeCall(this, "UShooterCheatManager.ReportSpawnManagers"); } + void HibernationReport(FString* ClassName) { NativeCall(this, "UShooterCheatManager.HibernationReport", ClassName); } + void HiWarp(FString* ClassName, int Index) { NativeCall(this, "UShooterCheatManager.HiWarp", ClassName, Index); } + void ReportLeastSpawnManagers() { NativeCall(this, "UShooterCheatManager.ReportLeastSpawnManagers"); } void DestroyAllEnemies() { NativeCall(this, "UShooterCheatManager.DestroyAllEnemies"); } void DestroyWildDinos() { NativeCall(this, "UShooterCheatManager.DestroyWildDinos"); } void DestroyStructures() { NativeCall(this, "UShooterCheatManager.DestroyStructures"); } - void PrintActorLocation(FString * ActorName) { NativeCall(this, "UShooterCheatManager.PrintActorLocation", ActorName); } - void TeleportToActorLocation(FString * ActorName) { NativeCall(this, "UShooterCheatManager.TeleportToActorLocation", ActorName); } + void SetPlayerPos(float X, float Y, float Z) { NativeCall(this, "UShooterCheatManager.SetPlayerPos", X, Y, Z); } + void PrintActorLocation(FString* ActorName) { NativeCall(this, "UShooterCheatManager.PrintActorLocation", ActorName); } + void TeleportToActorLocation(FString* ActorName) { NativeCall(this, "UShooterCheatManager.TeleportToActorLocation", ActorName); } + void SPI(float X, float Y, float Z, float Yaw, float Pitch) { NativeCall(this, "UShooterCheatManager.SPI", X, Y, Z, Yaw, Pitch); } void TP(FString LocationName) { NativeCall(this, "UShooterCheatManager.TP", LocationName); } - void TPCoords(float lat, float lon) { NativeCall(this, "UShooterCheatManager.TPCoords", lat, lon); } - void ServerChat(FString * MessageText) { NativeCall(this, "UShooterCheatManager.ServerChat", MessageText); } + void TPCoords(float lat, float lon, float z) { NativeCall(this, "UShooterCheatManager.TPCoords", lat, lon, z); } + void ToggleLocation() { NativeCall(this, "UShooterCheatManager.ToggleLocation"); } + void SaveWorldDisableTransfer() { NativeCall(this, "UShooterCheatManager.SaveWorldDisableTransfer"); } + void SetTimeOfDay(FString* timeString) { NativeCall(this, "UShooterCheatManager.SetTimeOfDay", timeString); } + void WhatIsMyTarget() { NativeCall(this, "UShooterCheatManager.WhatIsMyTarget"); } + void IsUndermesh(const float debugDrawSeconds) { NativeCall(this, "UShooterCheatManager.IsUndermesh", debugDrawSeconds); } + void SetDebugMeleeAttacks(bool bDebugMelee, const float drawDuration) { NativeCall(this, "UShooterCheatManager.SetDebugMeleeAttacks", bDebugMelee, drawDuration); } + void MoveTargetTo(float x, float y, float z) { NativeCall(this, "UShooterCheatManager.MoveTargetTo", x, y, z); } + void ServerChatTo(FString* SteamID, FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChatTo", SteamID, MessageText); } + void ServerChatToPlayer(FString* PlayerName, FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChatToPlayer", PlayerName, MessageText); } + void ServerChat(FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChat", MessageText); } void SetChatLogMaxAgeInDays(int NumDays) { NativeCall(this, "UShooterCheatManager.SetChatLogMaxAgeInDays", NumDays); } - AShooterPlayerController * FindPlayerControllerFromPlayerID(__int64 PlayerID) { return NativeCall(this, "UShooterCheatManager.FindPlayerControllerFromPlayerID", PlayerID); } - void GameCommand(FString * TheCommand) { NativeCall(this, "UShooterCheatManager.GameCommand", TheCommand); } - void ScriptCommand(FString * commandString) { NativeCall(this, "UShooterCheatManager.ScriptCommand", commandString); } + void ForceUpdateDynamicConfig() { NativeCall(this, "UShooterCheatManager.ForceUpdateDynamicConfig"); } + void DumpAssetProperties(FString* Asset) { NativeCall(this, "UShooterCheatManager.DumpAssetProperties", Asset); } + void ResetLiveTuningOverloads() { NativeCall(this, "UShooterCheatManager.ResetLiveTuningOverloads"); } + AShooterPlayerController* FindPlayerControllerFromPlayerID(__int64 PlayerID) { return NativeCall(this, "UShooterCheatManager.FindPlayerControllerFromPlayerID", PlayerID); } + void GameCommand(FString* TheCommand) { NativeCall(this, "UShooterCheatManager.GameCommand", TheCommand); } + void ScriptCommand(FString* commandString) { NativeCall(this, "UShooterCheatManager.ScriptCommand", commandString); } + void PlayerCommand(FString* TheCommand) { NativeCall(this, "UShooterCheatManager.PlayerCommand", TheCommand); } + void MakeTribeAdmin() { NativeCall(this, "UShooterCheatManager.MakeTribeAdmin"); } void RemoveTribeAdmin() { NativeCall(this, "UShooterCheatManager.RemoveTribeAdmin"); } void MakeTribeFounder() { NativeCall(this, "UShooterCheatManager.MakeTribeFounder"); } - void VisualizeClass(FString * ClassIn, int MaxTotal) { NativeCall(this, "UShooterCheatManager.VisualizeClass", ClassIn, MaxTotal); } - void UnlockEngram(FString * ItemClassName) { NativeCall(this, "UShooterCheatManager.UnlockEngram", ItemClassName); } + void GiveExplorerNote(int NoteIndex) { NativeCall(this, "UShooterCheatManager.GiveExplorerNote", NoteIndex); } + void GiveAllExplorerNotes() { NativeCall(this, "UShooterCheatManager.GiveAllExplorerNotes"); } + void VisualizeClass(FString* ClassIn, int MaxTotal) { NativeCall(this, "UShooterCheatManager.VisualizeClass", ClassIn, MaxTotal); } + void UnlockEngram(FString* ItemClassName) { NativeCall(this, "UShooterCheatManager.UnlockEngram", ItemClassName); } void SetHeadHairPercent(float thePercent) { NativeCall(this, "UShooterCheatManager.SetHeadHairPercent", thePercent); } void SetFacialHairPercent(float thePercent) { NativeCall(this, "UShooterCheatManager.SetFacialHairPercent", thePercent); } void SetHeadHairstyle(int hairStyleIndex) { NativeCall(this, "UShooterCheatManager.SetHeadHairstyle", hairStyleIndex); } void SetFacialHairstyle(int hairStyleIndex) { NativeCall(this, "UShooterCheatManager.SetFacialHairstyle", hairStyleIndex); } - void PrintMessageOut(FString * Msg) { NativeCall(this, "UShooterCheatManager.PrintMessageOut", Msg); } + void PrintMessageOut(FString* Msg) { NativeCall(this, "UShooterCheatManager.PrintMessageOut", Msg); } void GetTribeIdPlayerList(int TribeID) { NativeCall(this, "UShooterCheatManager.GetTribeIdPlayerList", TribeID); } void GetSteamIDForPlayerID(int PlayerID) { NativeCall(this, "UShooterCheatManager.GetSteamIDForPlayerID", PlayerID); } void GetPlayerIDForSteamID(int SteamID) { NativeCall(this, "UShooterCheatManager.GetPlayerIDForSteamID", SteamID); } - void psc(FString * command) { NativeCall(this, "UShooterCheatManager.psc", command); } - UField * GetPrivateStaticClass() { return NativeCall(this, "UShooterCheatManager.GetPrivateStaticClass"); } + void SetShowAllPlayers(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetShowAllPlayers", bEnable); } + void SAP() { NativeCall(this, "UShooterCheatManager.SAP"); } + void TribeStructureAudit(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.TribeStructureAudit", TribeTeamID); } + void TribeDinoAudit(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.TribeDinoAudit", TribeTeamID); } + void psc(FString* command) { NativeCall(this, "UShooterCheatManager.psc", command); } + void DetachChar() { NativeCall(this, "UShooterCheatManager.DetachChar"); } + void VerifyTransferInventory() { NativeCall(this, "UShooterCheatManager.VerifyTransferInventory"); } + void HatchEgg() { NativeCall(this, "UShooterCheatManager.HatchEgg"); } + void DefeatBoss(int playerID, FName bossName, char difficulty) { NativeCall(this, "UShooterCheatManager.DefeatBoss", playerID, bossName, difficulty); } + void LvlUp(__int64 PlayerID, __int16 Level) { NativeCall(this, "UShooterCheatManager.LvlUp", PlayerID, Level); } + void LessThan(int TribeTeamID, int Connections, bool includeContainers) { NativeCall(this, "UShooterCheatManager.LessThan", TribeTeamID, Connections, includeContainers); } + void SetInstantHarvest(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetInstantHarvest", bEnable); } + void DestroyFoliage(float Radius) { NativeCall(this, "UShooterCheatManager.DestroyFoliage", Radius); } + void RegrowFoliage(float Radius) { NativeCall(this, "UShooterCheatManager.RegrowFoliage", Radius); } + void ToggleLowGravSpin() { NativeCall(this, "UShooterCheatManager.ToggleLowGravSpin"); } + void ForceCheckInMesh() { NativeCall(this, "UShooterCheatManager.ForceCheckInMesh"); } + void ForceEnableMeshCheckingOnMe(bool bEnableChecking) { NativeCall(this, "UShooterCheatManager.ForceEnableMeshCheckingOnMe", bEnableChecking); } + void SetPlayerLevel(__int64 PlayerID, __int16 Level) { NativeCall(this, "UShooterCheatManager.SetPlayerLevel", PlayerID, Level); } + void SendDataDogMetric(FString msg) { NativeCall(this, "UShooterCheatManager.SendDataDogMetric", msg); } + void MaxAscend(int playerID) { NativeCall(this, "UShooterCheatManager.MaxAscend", playerID); } + void DefeatAllBosses(int playerID) { NativeCall(this, "UShooterCheatManager.DefeatAllBosses", playerID); } + void ReassertColorization() { NativeCall(this, "UShooterCheatManager.ReassertColorization"); } + void AddHexagons(float HowMuch) { NativeCall(this, "UShooterCheatManager.AddHexagons", HowMuch); } + void DebugAllowVRMissionTeleport() { NativeCall(this, "UShooterCheatManager.DebugAllowVRMissionTeleport"); } + void ToggleClawStepping() { NativeCall(this, "UShooterCheatManager.ToggleClawStepping"); } + void God() { NativeCall(this, "UShooterCheatManager.God"); } + void DupeLastItem() { NativeCall(this, "UShooterCheatManager.DupeLastItem"); } + void ForceCompleteActiveMission(FString* MissionStateSimValues) { NativeCall(this, "UShooterCheatManager.ForceCompleteActiveMission", MissionStateSimValues); } + static UClass* StaticClass() { return NativeCall(nullptr, "UShooterCheatManager.StaticClass"); } + static void StaticRegisterNativesUShooterCheatManager() { NativeCall(nullptr, "UShooterCheatManager.StaticRegisterNativesUShooterCheatManager"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UShooterCheatManager.GetPrivateStaticClass", Package); } }; -struct UPlayer +struct UPlayer : UObject { - APlayerController * PlayerControllerField() { return *GetNativePointerField(this, "UPlayer.PlayerController"); } + APlayerController * PlayerControllerField() { return *GetNativePointerField(this, "UPlayer.PlayerController"); } int& CurrentNetSpeedField() { return *GetNativePointerField(this, "UPlayer.CurrentNetSpeed"); } int& ConfiguredInternetSpeedField() { return *GetNativePointerField(this, "UPlayer.ConfiguredInternetSpeed"); } int& ConfiguredLanSpeedField() { return *GetNativePointerField(this, "UPlayer.ConfiguredLanSpeed"); } @@ -1164,10 +1661,16 @@ struct UPlayer // Functions - void SwitchController(APlayerController * PC) { NativeCall(this, "UPlayer.SwitchController", PC); } + void SwitchController(APlayerController * PC) { NativeCall(this, "UPlayer.SwitchController", PC); } }; -struct APlayerState : AActor +struct UNetConnection : UPlayer +{ + FString& ClientGivenIPField() { return *GetNativePointerField(this, "UNetConnection.ClientGivenIP"); } + uint64 BattlEye_GetAddrAsInt() { return NativeCall(this, "UNetConnection.BattlEye_GetAddrAsInt"); } +}; + +struct APlayerState : AInfo { float& ScoreField() { return *GetNativePointerField(this, "APlayerState.Score"); } char& PingField() { return *GetNativePointerField(this, "APlayerState.Ping"); } @@ -1193,45 +1696,49 @@ struct APlayerState : AActor // Functions + UField* StaticClass() { return NativeCall(this, "APlayerState.StaticClass"); } void UpdatePing(float InPing) { NativeCall(this, "APlayerState.UpdatePing", InPing); } void RecalculateAvgPing() { NativeCall(this, "APlayerState.RecalculateAvgPing"); } - void OverrideWith(APlayerState * PlayerState) { NativeCall(this, "APlayerState.OverrideWith", PlayerState); } - void CopyProperties(APlayerState * PlayerState) { NativeCall(this, "APlayerState.CopyProperties", PlayerState); } + void OverrideWith(APlayerState* PlayerState) { NativeCall(this, "APlayerState.OverrideWith", PlayerState); } + void CopyProperties(APlayerState* PlayerState) { NativeCall(this, "APlayerState.CopyProperties", PlayerState); } void PostInitializeComponents() { NativeCall(this, "APlayerState.PostInitializeComponents"); } - void ClientInitialize(AController * C) { NativeCall(this, "APlayerState.ClientInitialize", C); } + void ClientInitialize(AController* C) { NativeCall(this, "APlayerState.ClientInitialize", C); } void OnRep_PlayerName() { NativeCall(this, "APlayerState.OnRep_PlayerName"); } void OnRep_bIsInactive() { NativeCall(this, "APlayerState.OnRep_bIsInactive"); } bool ShouldBroadCastWelcomeMessage(bool bExiting) { return NativeCall(this, "APlayerState.ShouldBroadCastWelcomeMessage", bExiting); } void Destroyed() { NativeCall(this, "APlayerState.Destroyed"); } - FString * GetHumanReadableName(FString * result) { return NativeCall(this, "APlayerState.GetHumanReadableName", result); } - void SetPlayerName(FString * S) { NativeCall(this, "APlayerState.SetPlayerName", S); } + void Reset() { NativeCall(this, "APlayerState.Reset"); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "APlayerState.GetHumanReadableName", result); } + void SetPlayerName(FString* S) { NativeCall(this, "APlayerState.SetPlayerName", S); } void OnRep_UniqueId() { NativeCall(this, "APlayerState.OnRep_UniqueId"); } - void SetUniqueId(TSharedPtr * InUniqueId) { NativeCall *>(this, "APlayerState.SetUniqueId", InUniqueId); } + void SetUniqueId(TSharedPtr* InUniqueId) { NativeCall*>(this, "APlayerState.SetUniqueId", InUniqueId); } void RegisterPlayerWithSession(bool bWasFromInvite) { NativeCall(this, "APlayerState.RegisterPlayerWithSession", bWasFromInvite); } - void UnregisterPlayerWithSession() { NativeCall(this, "APlayerState.UnregisterPlayerWithSession"); } - APlayerState * Duplicate() { return NativeCall(this, "APlayerState.Duplicate"); } - void SeamlessTravelTo(APlayerState * NewPlayerState) { NativeCall(this, "APlayerState.SeamlessTravelTo", NewPlayerState); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } + APlayerState* Duplicate() { return NativeCall(this, "APlayerState.Duplicate"); } + void SeamlessTravelTo(APlayerState* NewPlayerState) { NativeCall(this, "APlayerState.SeamlessTravelTo", NewPlayerState); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } static void StaticRegisterNativesAPlayerState() { NativeCall(nullptr, "APlayerState.StaticRegisterNativesAPlayerState"); } }; struct AShooterPlayerState : APlayerState { - UPrimalPlayerData * MyPlayerDataField() { return *GetNativePointerField(this, "AShooterPlayerState.MyPlayerData"); } - FPrimalPlayerDataStruct * MyPlayerDataStructField() { return GetNativePointerField(this, "AShooterPlayerState.MyPlayerDataStruct"); } - FieldArray, 10> DefaultItemSlotClassesField() { return { this, "AShooterPlayerState.DefaultItemSlotClasses" }; } - FieldArray DefaultItemSlotEngramsField() { return { this, "AShooterPlayerState.DefaultItemSlotEngrams" }; } - FTribeData * MyTribeDataField() { return GetNativePointerField(this, "AShooterPlayerState.MyTribeData"); } - FTribeData * LastTribeInviteDataField() { return GetNativePointerField(this, "AShooterPlayerState.LastTribeInviteData"); } + UPrimalPlayerData * MyPlayerDataField() { return *GetNativePointerField(this, "AShooterPlayerState.MyPlayerData"); } + FPrimalPlayerDataStruct * MyPlayerDataStructField() { return GetNativePointerField(this, "AShooterPlayerState.MyPlayerDataStruct"); } + FieldArray, 10> DefaultItemSlotClassesField() { return {this, "AShooterPlayerState.DefaultItemSlotClasses"}; } + FieldArray DefaultItemSlotEngramsField() { return {this, "AShooterPlayerState.DefaultItemSlotEngrams"}; } + FTribeData * MyTribeDataField() { return GetNativePointerField(this, "AShooterPlayerState.MyTribeData"); } + FTribeData * LastTribeInviteDataField() { return GetNativePointerField(this, "AShooterPlayerState.LastTribeInviteData"); } + TArray & CachedSpawnPointInfosField() { return *GetNativePointerField*>(this, "AShooterPlayerState.CachedSpawnPointInfos"); } int& TotalEngramPointsField() { return *GetNativePointerField(this, "AShooterPlayerState.TotalEngramPoints"); } int& FreeEngramPointsField() { return *GetNativePointerField(this, "AShooterPlayerState.FreeEngramPoints"); } - TArray>& EngramItemBlueprintsField() { return *GetNativePointerField>*>(this, "AShooterPlayerState.EngramItemBlueprints"); } - TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ServerEngramItemBlueprintsSetField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerState.ServerEngramItemBlueprintsSet"); } + TArray> & EngramItemBlueprintsField() { return *GetNativePointerField>*>(this, "AShooterPlayerState.EngramItemBlueprints"); } + TSet,DefaultKeyFuncs,0>,FDefaultSetAllocator> & ServerEngramItemBlueprintsSetField() { return *GetNativePointerField,DefaultKeyFuncs,0>,FDefaultSetAllocator>*>(this, "AShooterPlayerState.ServerEngramItemBlueprintsSet"); } long double& NextAllowedRespawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.NextAllowedRespawnTime"); } + long double& LastFlexPipeRefreshConnectionsNetworkTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.LastFlexPipeRefreshConnectionsNetworkTime"); } float& AllowedRespawnIntervalField() { return *GetNativePointerField(this, "AShooterPlayerState.AllowedRespawnInterval"); } long double& LastTimeDiedToEnemyTeamField() { return *GetNativePointerField(this, "AShooterPlayerState.LastTimeDiedToEnemyTeam"); } int& CurrentlySelectedDinoOrderGroupField() { return *GetNativePointerField(this, "AShooterPlayerState.CurrentlySelectedDinoOrderGroup"); } - FieldArray DinoOrderGroupsField() { return { this, "AShooterPlayerState.DinoOrderGroups" }; } + FieldArray DinoOrderGroupsField() { return {this, "AShooterPlayerState.DinoOrderGroups"}; } + long double& GenesisAbilityErrorLastTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.GenesisAbilityErrorLastTime"); } long double& LastTribeRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.LastTribeRequestTime"); } // Bit fields @@ -1240,120 +1747,179 @@ struct AShooterPlayerState : APlayerState // Functions + static UClass * StaticClass() { return NativeCall(nullptr, "AShooterPlayerState.StaticClass"); } void Reset() { NativeCall(this, "AShooterPlayerState.Reset"); } void UnregisterPlayerWithSession() { NativeCall(this, "AShooterPlayerState.UnregisterPlayerWithSession"); } - void ClientInitialize(AController * InController) { NativeCall(this, "AShooterPlayerState.ClientInitialize", InController); } - void CopyProperties(APlayerState * PlayerState) { NativeCall(this, "AShooterPlayerState.CopyProperties", PlayerState); } + void ClientInitialize(AController * InController) { NativeCall(this, "AShooterPlayerState.ClientInitialize", InController); } + void SetQuitter(bool bInQuitter) { NativeCall(this, "AShooterPlayerState.SetQuitter", bInQuitter); } + void CopyProperties(APlayerState * PlayerState) { NativeCall(this, "AShooterPlayerState.CopyProperties", PlayerState); } void ServerGetAllPlayerNamesAndLocations_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetAllPlayerNamesAndLocations_Implementation"); } void ServerGetAlivePlayerConnectedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetAlivePlayerConnectedData_Implementation"); } void ServerGetPlayerConnectedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerConnectedData_Implementation"); } void ServerGetServerOptions_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetServerOptions_Implementation"); } void ServerGetPlayerBannedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerBannedData_Implementation"); } void ServerGetPlayerWhiteListedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerWhiteListedData_Implementation"); } + void ClientGetAlivePlayerConnectedData_Implementation(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetAlivePlayerConnectedData_Implementation", list); } + void ClientGetPlayerConnectedData_Implementation(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerConnectedData_Implementation", list); } void ClientGetServerOptions_Implementation(FServerOptions info) { NativeCall(this, "AShooterPlayerState.ClientGetServerOptions_Implementation", info); } - void BroadcastDeath_Implementation(AShooterPlayerState * KillerPlayerState, UDamageType * KillerDamageType, AShooterPlayerState * KilledPlayerState) { NativeCall(this, "AShooterPlayerState.BroadcastDeath_Implementation", KillerPlayerState, KillerDamageType, KilledPlayerState); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterPlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } + void ClientGetPlayerBannedData_Implementation(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerBannedData_Implementation", list); } + void ClientGetPlayerWhiteListedData_Implementation(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerWhiteListedData_Implementation", list); } + void BroadcastDeath_Implementation(AShooterPlayerState * KillerPlayerState, UDamageType * KillerDamageType, AShooterPlayerState * KilledPlayerState) { NativeCall(this, "AShooterPlayerState.BroadcastDeath_Implementation", KillerPlayerState, KillerDamageType, KilledPlayerState); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "AShooterPlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } void Destroyed() { NativeCall(this, "AShooterPlayerState.Destroyed"); } void BeginPlay() { NativeCall(this, "AShooterPlayerState.BeginPlay"); } - void PromoteToTribeAdmin(APlayerController * PromoterPC) { NativeCall(this, "AShooterPlayerState.PromoteToTribeAdmin", PromoterPC); } - bool AddToTribe(FTribeData * MyNewTribe, bool bMergeTribe, bool bForce, bool bIsFromInvite, APlayerController * InviterPC) { return NativeCall(this, "AShooterPlayerState.AddToTribe", MyNewTribe, bMergeTribe, bForce, bIsFromInvite, InviterPC); } - void ClearTribe(bool bDontRemoveFromTribe, bool bForce, APlayerController * ForPC) { NativeCall(this, "AShooterPlayerState.ClearTribe", bDontRemoveFromTribe, bForce, ForPC); } - void TransferTribalObjects(FTribeData * TribeData, bool bTransferToTribe, bool bDontIncludePlayers) { NativeCall(this, "AShooterPlayerState.TransferTribalObjects", TribeData, bTransferToTribe, bDontIncludePlayers); } + FString * GetShortPlayerName(FString * result) { return NativeCall(this, "AShooterPlayerState.GetShortPlayerName", result); } + void PromoteToTribeAdmin(APlayerController * PromoterPC) { NativeCall(this, "AShooterPlayerState.PromoteToTribeAdmin", PromoterPC); } + bool AddToTribe(FTribeData * MyNewTribe, bool bMergeTribe, bool bForce, bool bIsFromInvite, APlayerController * InviterPC) { return NativeCall(this, "AShooterPlayerState.AddToTribe", MyNewTribe, bMergeTribe, bForce, bIsFromInvite, InviterPC); } + void UpdateTribeData(FTribeData * TribeData) { NativeCall(this, "AShooterPlayerState.UpdateTribeData", TribeData); } + void ClearTribe(bool bDontRemoveFromTribe, bool bForce, APlayerController * ForPC) { NativeCall(this, "AShooterPlayerState.ClearTribe", bDontRemoveFromTribe, bForce, ForPC); } + bool IsInTribe() { return NativeCall(this, "AShooterPlayerState.IsInTribe"); } + void TransferTribalObjects(FTribeData * TribeData, bool bTransferToTribe, bool bDontIncludePlayers) { NativeCall(this, "AShooterPlayerState.TransferTribalObjects", TribeData, bTransferToTribe, bDontIncludePlayers); } bool IsTribeOwner(unsigned int CheckPlayerDataID) { return NativeCall(this, "AShooterPlayerState.IsTribeOwner", CheckPlayerDataID); } + bool IsTribeFounder() { return NativeCall(this, "AShooterPlayerState.IsTribeFounder"); } bool IsTribeAdmin() { return NativeCall(this, "AShooterPlayerState.IsTribeAdmin"); } void ServerRequestDinoOrderGroups_Implementation() { NativeCall(this, "AShooterPlayerState.ServerRequestDinoOrderGroups_Implementation"); } void ClientRefreshDinoOrderGroup_Implementation(int groupIndex, FDinoOrderGroup groupData, int UseCurrentlySelectedGroup) { NativeCall(this, "AShooterPlayerState.ClientRefreshDinoOrderGroup_Implementation", groupIndex, groupData, UseCurrentlySelectedGroup); } - bool AllowDinoOrderByGroup(APrimalDinoCharacter * orderDino) { return NativeCall(this, "AShooterPlayerState.AllowDinoOrderByGroup", orderDino); } + bool AllowDinoOrderByGroup(APrimalDinoCharacter * orderDino) { return NativeCall(this, "AShooterPlayerState.AllowDinoOrderByGroup", orderDino); } + void LocalSetSelectedDinoOrderGroup(int newGroup, bool bDontToggle) { NativeCall(this, "AShooterPlayerState.LocalSetSelectedDinoOrderGroup", newGroup, bDontToggle); } void ServerDinoOrderGroup_AddOrRemoveDinoClass_Implementation(int groupIndex, TSubclassOf DinoClass, bool bAdd) { NativeCall, bool>(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoClass_Implementation", groupIndex, DinoClass, bAdd); } - void ServerSetDinoGroupName_Implementation(int groupIndex, FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName_Implementation", groupIndex, GroupName); } - FString * GetDinoOrderGroupName(FString * result, int groupIndex) { return NativeCall(this, "AShooterPlayerState.GetDinoOrderGroupName", result, groupIndex); } - bool IsDinoInOrderGroup(int groupIndex, APrimalDinoCharacter * dinoChar) { return NativeCall(this, "AShooterPlayerState.IsDinoInOrderGroup", groupIndex, dinoChar); } + void ServerSetDinoGroupName_Implementation(int groupIndex, FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName_Implementation", groupIndex, GroupName); } + FString * GetDinoOrderGroupName(FString * result, int groupIndex) { return NativeCall(this, "AShooterPlayerState.GetDinoOrderGroupName", result, groupIndex); } + bool IsDinoInOrderGroup(int groupIndex, APrimalDinoCharacter * dinoChar) { return NativeCall(this, "AShooterPlayerState.IsDinoInOrderGroup", groupIndex, dinoChar); } bool IsDinoClassInOrderGroup(int groupIndex, TSubclassOf dinoClass) { return NativeCall>(this, "AShooterPlayerState.IsDinoClassInOrderGroup", groupIndex, dinoClass); } - void ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation(int groupIndex, APrimalDinoCharacter * DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation", groupIndex, DinoCharacter, bAdd); } + void ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation(int groupIndex, APrimalDinoCharacter * DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation", groupIndex, DinoCharacter, bAdd); } void ServerDinoOrderGroup_Clear_Implementation(int groupIndex, bool bClearClasses, bool bClearChars) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_Clear_Implementation", groupIndex, bClearClasses, bClearChars); } void ServerDinoOrderGroup_RemoveEntryByIndex_Implementation(int groupIndex, bool bIsClass, int entryIndex) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_RemoveEntryByIndex_Implementation", groupIndex, bIsClass, entryIndex); } void ServerSetSelectedDinoOrderGroup_Implementation(int newGroup) { NativeCall(this, "AShooterPlayerState.ServerSetSelectedDinoOrderGroup_Implementation", newGroup); } - void ServerRequestRenameTribe_Implementation(FString * TribeName) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe_Implementation", TribeName); } + void ServerRequestRenameTribe_Implementation(FString * TribeName) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe_Implementation", TribeName); } void ServerRequestSetTribeGovernment_Implementation(FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeGovernment_Implementation", TribeGovernment); } - void ServerRequestCreateNewTribe_Implementation(FString * TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe_Implementation", TribeName, TribeGovernment); } + void ServerRequestCreateNewTribe_Implementation(FString * TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe_Implementation", TribeName, TribeGovernment); } void ServerRequestLeaveTribe_Implementation() { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveTribe_Implementation"); } void ServerRequestRemovePlayerIndexFromMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRemovePlayerIndexFromMyTribe_Implementation", PlayerIndexInTribe); } void ServerRequestPromotePlayerInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestPromotePlayerInMyTribe_Implementation", PlayerIndexInTribe); } void ServerRequestDemotePlayerInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestDemotePlayerInMyTribe_Implementation", PlayerIndexInTribe); } - void InvitedRankGroupPlayerIntoTribe(AShooterPlayerState * OtherPlayer) { NativeCall(this, "AShooterPlayerState.InvitedRankGroupPlayerIntoTribe", OtherPlayer); } + void InvitedRankGroupPlayerIntoTribe(AShooterPlayerState * OtherPlayer) { NativeCall(this, "AShooterPlayerState.InvitedRankGroupPlayerIntoTribe", OtherPlayer); } void ServerRequestSetTribeMemberGroupRank_Implementation(int PlayerIndexInTribe, int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeMemberGroupRank_Implementation", PlayerIndexInTribe, RankGroupIndex); } - void ServerTribeRequestAddRankGroup_Implementation(FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestAddRankGroup_Implementation", GroupName); } + void ServerTribeRequestAddRankGroup_Implementation(FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestAddRankGroup_Implementation", GroupName); } void ServerTribeRequestRemoveRankGroup_Implementation(int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestRemoveRankGroup_Implementation", RankGroupIndex); } void ServerTribeRequestApplyRankGroupSettings_Implementation(int RankGroupIndex, FTribeRankGroup newGroupSettings) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestApplyRankGroupSettings_Implementation", RankGroupIndex, newGroupSettings); } void ServerRequestTransferOwnershipInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestTransferOwnershipInMyTribe_Implementation", PlayerIndexInTribe); } - FString * GetPlayerName(FString * result) { return NativeCall(this, "AShooterPlayerState.GetPlayerName", result); } + FString * GetPlayerName(FString * result) { return NativeCall(this, "AShooterPlayerState.GetPlayerName", result); } void ServerRequestMySpawnPoints_Implementation(int IgnoreBedID, TSubclassOf FilterClass) { NativeCall>(this, "AShooterPlayerState.ServerRequestMySpawnPoints_Implementation", IgnoreBedID, FilterClass); } - void RequestCreateNewPlayerWithArkData(UPrimalPlayerData * PlayerArkData) { NativeCall(this, "AShooterPlayerState.RequestCreateNewPlayerWithArkData", PlayerArkData); } + void ClientReceiveSpawnPoints_Implementation(TArray * SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveSpawnPoints_Implementation", SpawnPointsInfos); } + void ServerRequestCreateNewPlayer_Implementation(FPrimalPlayerCharacterConfigStructReplicated PlayerCharacterConfig) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewPlayer_Implementation", PlayerCharacterConfig); } + void RequestCreateNewPlayerWithArkData(UPrimalPlayerData * PlayerArkData) { NativeCall(this, "AShooterPlayerState.RequestCreateNewPlayerWithArkData", PlayerArkData); } void ServerRequestApplyEngramPoints_Implementation(TSubclassOf forItemEntry) { NativeCall>(this, "AShooterPlayerState.ServerRequestApplyEngramPoints_Implementation", forItemEntry); } void ServerUnlockEngram(TSubclassOf forItemEntry, bool bNotifyPlayerHUD, bool bForceUnlock) { NativeCall, bool, bool>(this, "AShooterPlayerState.ServerUnlockEngram", forItemEntry, bNotifyPlayerHUD, bForceUnlock); } bool IsAlliedWith(int OtherTeam) { return NativeCall(this, "AShooterPlayerState.IsAlliedWith", OtherTeam); } - void AddEngramBlueprintToPlayerInventory(UPrimalInventoryComponent * invComp, TSubclassOf engramItemBlueprint) { NativeCall>(this, "AShooterPlayerState.AddEngramBlueprintToPlayerInventory", invComp, engramItemBlueprint); } - UObject * GetObjectW() { return NativeCall(this, "AShooterPlayerState.GetObjectW"); } + bool IsFriendly(int OtherTeam) { return NativeCall(this, "AShooterPlayerState.IsFriendly", OtherTeam); } + void AddEngramBlueprintToPlayerInventory(UPrimalInventoryComponent * invComp, TSubclassOf engramItemBlueprint) { NativeCall>(this, "AShooterPlayerState.AddEngramBlueprintToPlayerInventory", invComp, engramItemBlueprint); } + AShooterPlayerController * GetShooterController() { return NativeCall(this, "AShooterPlayerState.GetShooterController"); } + UObject * GetObjectW() { return NativeCall(this, "AShooterPlayerState.GetObjectW"); } bool HasEngram(TSubclassOf ItemClass) { return NativeCall>(this, "AShooterPlayerState.HasEngram", ItemClass); } - void NotifyPlayerJoinedTribe_Implementation(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe_Implementation", ThePlayerName, TribeName); } - void NotifyPlayerLeftTribe_Implementation(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe_Implementation", ThePlayerName, TribeName); } - void NotifyPlayerJoined_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined_Implementation", ThePlayerName); } - void NotifyTribememberJoined_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined_Implementation", ThePlayerName); } - void NotifyPlayerLeft_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft_Implementation", ThePlayerName); } - void NotifyTribememberLeft_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft_Implementation", ThePlayerName); } + void ReceivedPlayerCharacter(AShooterCharacter * NewPawn) { NativeCall(this, "AShooterPlayerState.ReceivedPlayerCharacter", NewPawn); } + void NotifyPlayerJoinedTribe_Implementation(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe_Implementation", ThePlayerName, TribeName); } + void NotifyPlayerLeftTribe_Implementation(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe_Implementation", ThePlayerName, TribeName); } + void NotifyPlayerJoined_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined_Implementation", ThePlayerName); } + void NotifyTribememberJoined_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined_Implementation", ThePlayerName); } + void NotifyPlayerLeft_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft_Implementation", ThePlayerName); } + void NotifyTribememberLeft_Implementation(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft_Implementation", ThePlayerName); } + void NotifyUniqueDinoDownloaded_Implementation(FString * TheDinoName) { NativeCall(this, "AShooterPlayerState.NotifyUniqueDinoDownloaded_Implementation", TheDinoName); } + void NotifyUniqueDinoDownloadAllowed_Implementation(FString * TheDinoName) { NativeCall(this, "AShooterPlayerState.NotifyUniqueDinoDownloadAllowed_Implementation", TheDinoName); } + AShooterHUD * GetShooterHUD() { return NativeCall(this, "AShooterPlayerState.GetShooterHUD"); } + FString * GetPlayerOrTribeName(FString * result) { return NativeCall(this, "AShooterPlayerState.GetPlayerOrTribeName", result); } void ServerSetDefaultItemSlotClass_Implementation(int slotNum, TSubclassOf ItemClass, bool bIsEngram) { NativeCall, bool>(this, "AShooterPlayerState.ServerSetDefaultItemSlotClass_Implementation", slotNum, ItemClass, bIsEngram); } void ClientNotifyLevelUpAvailable_Implementation() { NativeCall(this, "AShooterPlayerState.ClientNotifyLevelUpAvailable_Implementation"); } int GetCharacterLevel() { return NativeCall(this, "AShooterPlayerState.GetCharacterLevel"); } - void SetTribeTamingDinoSettings(APrimalDinoCharacter * aDinoChar) { NativeCall(this, "AShooterPlayerState.SetTribeTamingDinoSettings", aDinoChar); } + void SetTribeTamingDinoSettings(APrimalDinoCharacter * aDinoChar) { NativeCall(this, "AShooterPlayerState.SetTribeTamingDinoSettings", aDinoChar); } void SendTribeInviteData_Implementation(FTribeData TribeInviteData) { NativeCall(this, "AShooterPlayerState.SendTribeInviteData_Implementation", TribeInviteData); } - void DoRespec(UPrimalPlayerData * ForPlayerData, AShooterCharacter * ForCharacter, bool bSetRespecedAtCharacterLevel) { NativeCall(this, "AShooterPlayerState.DoRespec", ForPlayerData, ForCharacter, bSetRespecedAtCharacterLevel); } - FString * GetUniqueIdString(FString * result) { return NativeCall(this, "AShooterPlayerState.GetUniqueIdString", result); } + void DoRespec(UPrimalPlayerData * ForPlayerData, AShooterCharacter * ForCharacter, bool bSetRespecedAtCharacterLevel) { NativeCall(this, "AShooterPlayerState.DoRespec", ForPlayerData, ForCharacter, bSetRespecedAtCharacterLevel); } + int GetTribeId() { return NativeCall(this, "AShooterPlayerState.GetTribeId"); } + FString * GetUniqueIdString(FString * result) { return NativeCall(this, "AShooterPlayerState.GetUniqueIdString", result); } + bool IsAllowedToRefreshFlexPipeConnections(float Cooldown) { return NativeCall(this, "AShooterPlayerState.IsAllowedToRefreshFlexPipeConnections", Cooldown); } + void ResetFlexPipeGlobalCooldown() { NativeCall(this, "AShooterPlayerState.ResetFlexPipeGlobalCooldown"); } + bool IsInTribeWar(int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.IsInTribeWar", EnemyTeam); } + bool HasTribeWarRequest(int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.HasTribeWarRequest", EnemyTeam); } void ServerDeclareTribeWar_Implementation(int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime) { NativeCall(this, "AShooterPlayerState.ServerDeclareTribeWar_Implementation", EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime); } void ServerAcceptTribeWar_Implementation(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerAcceptTribeWar_Implementation", EnemyTeamID); } void ServerRejectTribeWar_Implementation(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerRejectTribeWar_Implementation", EnemyTeamID); } - FTribeWar * GetTribeWar(FTribeWar * result, int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.GetTribeWar", result, EnemyTeam); } + FTribeWar * GetTribeWar(FTribeWar * result, int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.GetTribeWar", result, EnemyTeam); } void ServerRequestRemoveAllianceMember_Implementation(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestRemoveAllianceMember_Implementation", AllianceID, MemberID); } void ServerRequestPromoteAllianceMember_Implementation(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestPromoteAllianceMember_Implementation", AllianceID, MemberID); } - void ServerTribeRequestNewAlliance_Implementation(FString * AllianceName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestNewAlliance_Implementation", AllianceName); } + void ServerTribeRequestNewAlliance_Implementation(FString * AllianceName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestNewAlliance_Implementation", AllianceName); } void ServerRequestLeaveAlliance_Implementation(unsigned int AllianceID) { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveAlliance_Implementation", AllianceID); } void AcceptJoinAlliance(unsigned int AllianceID, unsigned int NewMemberID, FString NewMemberName) { NativeCall(this, "AShooterPlayerState.AcceptJoinAlliance", AllianceID, NewMemberID, NewMemberName); } - bool AllowTribeGroupPermission(ETribeGroupPermission::Type TribeGroupPermission, UObject * OnObject) { return NativeCall(this, "AShooterPlayerState.AllowTribeGroupPermission", TribeGroupPermission, OnObject); } + bool AllowTribeGroupPermission(ETribeGroupPermission::Type TribeGroupPermission, UObject * OnObject) { return NativeCall(this, "AShooterPlayerState.AllowTribeGroupPermission", TribeGroupPermission, OnObject); } void ServerRequestSpawnPointsForDownloadedCharacters_Implementation(unsigned __int64 PlayerDataID, int IgnoreBedID) { NativeCall(this, "AShooterPlayerState.ServerRequestSpawnPointsForDownloadedCharacters_Implementation", PlayerDataID, IgnoreBedID); } void OnRep_UpdatedEngrams() { NativeCall(this, "AShooterPlayerState.OnRep_UpdatedEngrams"); } + UObject * GetUObjectInterfaceDataListProviderInterface() { return NativeCall(this, "AShooterPlayerState.GetUObjectInterfaceDataListProviderInterface"); } static void StaticRegisterNativesAShooterPlayerState() { NativeCall(nullptr, "AShooterPlayerState.StaticRegisterNativesAShooterPlayerState"); } - UField * GetPrivateStaticClass() { return NativeCall(this, "AShooterPlayerState.GetPrivateStaticClass"); } + static UClass * GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterPlayerState.GetPrivateStaticClass", Package); } + void BroadcastDeath(AShooterPlayerState * KillerPlayerState, UDamageType * KillerDamageType, AShooterPlayerState * KilledPlayerState) { NativeCall(this, "AShooterPlayerState.BroadcastDeath", KillerPlayerState, KillerDamageType, KilledPlayerState); } + void ClientGetAlivePlayerConnectedData(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetAlivePlayerConnectedData", list); } + void ClientGetPlayerBannedData(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerBannedData", list); } + void ClientGetPlayerConnectedData(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerConnectedData", list); } + void ClientGetPlayerWhiteListedData(TArray * list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerWhiteListedData", list); } void ClientGetServerOptions(FServerOptions info) { NativeCall(this, "AShooterPlayerState.ClientGetServerOptions", info); } + void ClientNotifyLevelUpAvailable() { NativeCall(this, "AShooterPlayerState.ClientNotifyLevelUpAvailable"); } + void ClientReceiveSpawnPoints(TArray * SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveSpawnPoints", SpawnPointsInfos); } void ClientRefreshDinoOrderGroup(int groupIndex, FDinoOrderGroup groupData, int UseCurrentlySelectedGroup) { NativeCall(this, "AShooterPlayerState.ClientRefreshDinoOrderGroup", groupIndex, groupData, UseCurrentlySelectedGroup); } - void NotifyPlayerJoined(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined", ThePlayerName); } - void NotifyPlayerJoinedTribe(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe", ThePlayerName, TribeName); } - void NotifyPlayerLeft(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft", ThePlayerName); } - void NotifyPlayerLeftTribe(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe", ThePlayerName, TribeName); } - void NotifyTribememberJoined(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined", ThePlayerName); } - void NotifyTribememberLeft(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft", ThePlayerName); } + void NotifyPlayerJoined(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined", ThePlayerName); } + void NotifyPlayerJoinedTribe(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe", ThePlayerName, TribeName); } + void NotifyPlayerLeft(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft", ThePlayerName); } + void NotifyPlayerLeftTribe(FString * ThePlayerName, FString * TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe", ThePlayerName, TribeName); } + void NotifyTribememberJoined(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined", ThePlayerName); } + void NotifyTribememberLeft(FString * ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft", ThePlayerName); } + void NotifyUniqueDinoDownloadAllowed(FString * TheDinoName) { NativeCall(this, "AShooterPlayerState.NotifyUniqueDinoDownloadAllowed", TheDinoName); } void SendTribeInviteData(FTribeData TribeInviteData) { NativeCall(this, "AShooterPlayerState.SendTribeInviteData", TribeInviteData); } void ServerAcceptTribeWar(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerAcceptTribeWar", EnemyTeamID); } - void ServerDinoOrderGroup_AddOrRemoveDinoCharacter(int groupIndex, APrimalDinoCharacter * DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter", groupIndex, DinoCharacter, bAdd); } + void ServerDeclareTribeWar(int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime) { NativeCall(this, "AShooterPlayerState.ServerDeclareTribeWar", EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime); } + void ServerDinoOrderGroup_AddOrRemoveDinoCharacter(int groupIndex, APrimalDinoCharacter * DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter", groupIndex, DinoCharacter, bAdd); } + void ServerDinoOrderGroup_AddOrRemoveDinoClass(int groupIndex, TSubclassOf DinoClass, bool bAdd) { NativeCall, bool>(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoClass", groupIndex, DinoClass, bAdd); } + void ServerDinoOrderGroup_Clear(int groupIndex, bool bClearClasses, bool bClearChars) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_Clear", groupIndex, bClearClasses, bClearChars); } + void ServerDinoOrderGroup_RemoveEntryByIndex(int groupIndex, bool bIsClass, int entryIndex) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_RemoveEntryByIndex", groupIndex, bIsClass, entryIndex); } + void ServerGetAlivePlayerConnectedData() { NativeCall(this, "AShooterPlayerState.ServerGetAlivePlayerConnectedData"); } void ServerGetAllPlayerNamesAndLocations() { NativeCall(this, "AShooterPlayerState.ServerGetAllPlayerNamesAndLocations"); } + void ServerGetPlayerBannedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerBannedData"); } + void ServerGetPlayerConnectedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerConnectedData"); } + void ServerGetPlayerWhiteListedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerWhiteListedData"); } + void ServerGetServerOptions() { NativeCall(this, "AShooterPlayerState.ServerGetServerOptions"); } + void ServerRejectTribeWar(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerRejectTribeWar", EnemyTeamID); } void ServerRequestApplyEngramPoints(TSubclassOf forItemEntry) { NativeCall>(this, "AShooterPlayerState.ServerRequestApplyEngramPoints", forItemEntry); } - void ServerRequestCreateNewTribe(FString * TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe", TribeName, TribeGovernment); } + void ServerRequestCreateNewPlayer(FPrimalPlayerCharacterConfigStructReplicated PlayerCharacterConfig) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewPlayer", PlayerCharacterConfig); } + void ServerRequestCreateNewTribe(FString * TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe", TribeName, TribeGovernment); } + void ServerRequestDemotePlayerInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestDemotePlayerInMyTribe", PlayerIndexInTribe); } + void ServerRequestDinoOrderGroups() { NativeCall(this, "AShooterPlayerState.ServerRequestDinoOrderGroups"); } + void ServerRequestLeaveAlliance(unsigned int AllianceID) { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveAlliance", AllianceID); } void ServerRequestLeaveTribe() { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveTribe"); } - void ServerRequestRenameTribe(FString * ServerRequestRenameTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe", ServerRequestRenameTribe); } + void ServerRequestMySpawnPoints(int IgnoreBedID, TSubclassOf FilterClass) { NativeCall>(this, "AShooterPlayerState.ServerRequestMySpawnPoints", IgnoreBedID, FilterClass); } + void ServerRequestPromoteAllianceMember(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestPromoteAllianceMember", AllianceID, MemberID); } + void ServerRequestPromotePlayerInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestPromotePlayerInMyTribe", PlayerIndexInTribe); } + void ServerRequestRemoveAllianceMember(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestRemoveAllianceMember", AllianceID, MemberID); } + void ServerRequestRemovePlayerIndexFromMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRemovePlayerIndexFromMyTribe", PlayerIndexInTribe); } + void ServerRequestRenameTribe(FString * ServerRequestRenameTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe", ServerRequestRenameTribe); } + void ServerRequestSetTribeGovernment(FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeGovernment", TribeGovernment); } void ServerRequestSetTribeMemberGroupRank(int PlayerIndexInTribe, int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeMemberGroupRank", PlayerIndexInTribe, RankGroupIndex); } void ServerRequestSpawnPointsForDownloadedCharacters(unsigned __int64 PlayerDataID, int IgnoreBedID) { NativeCall(this, "AShooterPlayerState.ServerRequestSpawnPointsForDownloadedCharacters", PlayerDataID, IgnoreBedID); } + void ServerRequestTransferOwnershipInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestTransferOwnershipInMyTribe", PlayerIndexInTribe); } void ServerSetDefaultItemSlotClass(int slotNum, TSubclassOf ItemClass, bool bIsEngram) { NativeCall, bool>(this, "AShooterPlayerState.ServerSetDefaultItemSlotClass", slotNum, ItemClass, bIsEngram); } - void ServerSetDinoGroupName(int groupIndex, FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName", groupIndex, GroupName); } + void ServerSetDinoGroupName(int groupIndex, FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName", groupIndex, GroupName); } + void ServerSetSelectedDinoOrderGroup(int newGroup) { NativeCall(this, "AShooterPlayerState.ServerSetSelectedDinoOrderGroup", newGroup); } + void ServerTribeRequestAddRankGroup(FString * GroupName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestAddRankGroup", GroupName); } void ServerTribeRequestApplyRankGroupSettings(int RankGroupIndex, FTribeRankGroup newGroupSettings) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestApplyRankGroupSettings", RankGroupIndex, newGroupSettings); } + void ServerTribeRequestNewAlliance(FString * AllianceName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestNewAlliance", AllianceName); } + void ServerTribeRequestRemoveRankGroup(int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestRemoveRankGroup", RankGroupIndex); } }; struct AController : AActor { - TWeakObjectPtr& OldPawnField() { return *GetNativePointerField*>(this, "AController.OldPawn"); } - ACharacter * CharacterField() { return *GetNativePointerField(this, "AController.Character"); } - APlayerState * PlayerStateField() { return *GetNativePointerField(this, "AController.PlayerState"); } - APawn * PawnField() { return *GetNativePointerField(this, "AController.Pawn"); } - FRotator& ControlRotationField() { return *GetNativePointerField(this, "AController.ControlRotation"); } - TWeakObjectPtr& StartSpotField() { return *GetNativePointerField*>(this, "AController.StartSpot"); } - FName& StateNameField() { return *GetNativePointerField(this, "AController.StateName"); } + TWeakObjectPtr & OldPawnField() { return *GetNativePointerField*>(this, "AController.OldPawn"); } + ACharacter * CharacterField() { return *GetNativePointerField(this, "AController.Character"); } + APlayerState * PlayerStateField() { return *GetNativePointerField(this, "AController.PlayerState"); } + APawn * PawnField() { return *GetNativePointerField(this, "AController.Pawn"); } + FRotator & ControlRotationField() { return *GetNativePointerField(this, "AController.ControlRotation"); } + TWeakObjectPtr & StartSpotField() { return *GetNativePointerField*>(this, "AController.StartSpot"); } + FName & StateNameField() { return *GetNativePointerField(this, "AController.StateName"); } // Bit fields @@ -1361,66 +1927,71 @@ struct AController : AActor // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AController.GetPrivateStaticClass"); } + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AController.GetPrivateStaticClass"); } bool IsLocalController() { return NativeCall(this, "AController.IsLocalController"); } void FailedToSpawnPawn() { NativeCall(this, "AController.FailedToSpawnPawn"); } - void SetInitialLocationAndRotation(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "AController.SetInitialLocationAndRotation", NewLocation, NewRotation); } - FRotator * GetControlRotation(FRotator * result) { return NativeCall(this, "AController.GetControlRotation", result); } - void SetControlRotation(FRotator * NewRotation) { NativeCall(this, "AController.SetControlRotation", NewRotation); } - void AttachToPawn(APawn * InPawn) { NativeCall(this, "AController.AttachToPawn", InPawn); } + void SetInitialLocationAndRotation(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "AController.SetInitialLocationAndRotation", NewLocation, NewRotation); } + FRotator * GetControlRotation(FRotator * result) { return NativeCall(this, "AController.GetControlRotation", result); } + void SetControlRotation(FRotator * NewRotation) { NativeCall(this, "AController.SetControlRotation", NewRotation); } + void AttachToPawn(APawn * InPawn) { NativeCall(this, "AController.AttachToPawn", InPawn); } void DetachFromPawn() { NativeCall(this, "AController.DetachFromPawn"); } - AActor * GetViewTarget() { return NativeCall(this, "AController.GetViewTarget"); } - void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AController.GetPlayerViewPoint", out_Location, out_Rotation); } - bool LineOfSightTo(AActor * Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } + AActor * GetViewTarget() { return NativeCall(this, "AController.GetViewTarget"); } + void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AController.GetPlayerViewPoint", out_Location, out_Rotation); } + bool LineOfSightTo(AActor * Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } void PostInitializeComponents() { NativeCall(this, "AController.PostInitializeComponents"); } - void Possess(APawn * InPawn) { NativeCall(this, "AController.Possess", InPawn); } - void PawnPendingDestroy(APawn * inPawn) { NativeCall(this, "AController.PawnPendingDestroy", inPawn); } + void Possess(APawn * InPawn) { NativeCall(this, "AController.Possess", InPawn); } + void PawnPendingDestroy(APawn * inPawn) { NativeCall(this, "AController.PawnPendingDestroy", inPawn); } void Reset() { NativeCall(this, "AController.Reset"); } void ClientSetLocation_Implementation(FVector NewLocation, FRotator NewRotation) { NativeCall(this, "AController.ClientSetLocation_Implementation", NewLocation, NewRotation); } void ClientSetRotation_Implementation(FRotator NewRotation, bool bResetCamera) { NativeCall(this, "AController.ClientSetRotation_Implementation", NewRotation, bResetCamera); } - void RemovePawnTickDependency(APawn * InOldPawn) { NativeCall(this, "AController.RemovePawnTickDependency", InOldPawn); } - void AddPawnTickDependency(APawn * NewPawn) { NativeCall(this, "AController.AddPawnTickDependency", NewPawn); } - void SetPawn(APawn * InPawn) { NativeCall(this, "AController.SetPawn", InPawn); } + void RemovePawnTickDependency(APawn * InOldPawn) { NativeCall(this, "AController.RemovePawnTickDependency", InOldPawn); } + void AddPawnTickDependency(APawn * NewPawn) { NativeCall(this, "AController.AddPawnTickDependency", NewPawn); } + void SetPawn(APawn * InPawn) { NativeCall(this, "AController.SetPawn", InPawn); } void OnRep_Pawn() { NativeCall(this, "AController.OnRep_Pawn"); } void OnRep_PlayerState() { NativeCall(this, "AController.OnRep_PlayerState"); } void Destroyed() { NativeCall(this, "AController.Destroyed"); } void CleanupPlayerState() { NativeCall(this, "AController.CleanupPlayerState"); } - void InstigatedAnyDamage(float Damage, UDamageType * DamageType, AActor * DamagedActor, AActor * DamageCauser) { NativeCall(this, "AController.InstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } + void InstigatedAnyDamage(float Damage, UDamageType * DamageType, AActor * DamagedActor, AActor * DamageCauser) { NativeCall(this, "AController.InstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } void InitPlayerState() { NativeCall(this, "AController.InitPlayerState"); } - FRotator * GetDesiredRotation(FRotator * result) { return NativeCall(this, "AController.GetDesiredRotation", result); } - void GetActorEyesViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AController.GetActorEyesViewPoint", out_Location, out_Rotation); } - FString * GetHumanReadableName(FString * result) { return NativeCall(this, "AController.GetHumanReadableName", result); } + FRotator * GetDesiredRotation(FRotator * result) { return NativeCall(this, "AController.GetDesiredRotation", result); } + void GetActorEyesViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AController.GetActorEyesViewPoint", out_Location, out_Rotation); } + FString * GetHumanReadableName(FString * result) { return NativeCall(this, "AController.GetHumanReadableName", result); } void ChangeState(FName NewState) { NativeCall(this, "AController.ChangeState", NewState); } - FVector * GetNavAgentLocation(FVector * result) { return NativeCall(this, "AController.GetNavAgentLocation", result); } - void GetMoveGoalReachTest(AActor * MovingActor, FVector * MoveOffset, FVector * GoalOffset, float * GoalRadius, float * GoalHalfHeight) { NativeCall(this, "AController.GetMoveGoalReachTest", MovingActor, MoveOffset, GoalOffset, GoalRadius, GoalHalfHeight); } + bool IsInState(FName InStateName) { return NativeCall(this, "AController.IsInState", InStateName); } + FVector * GetNavAgentLocation(FVector * result) { return NativeCall(this, "AController.GetNavAgentLocation", result); } + void GetMoveGoalReachTest(AActor * MovingActor, FVector * MoveOffset, FVector * GoalOffset, float* GoalRadius, float* GoalHalfHeight) { NativeCall(this, "AController.GetMoveGoalReachTest", MovingActor, MoveOffset, GoalOffset, GoalRadius, GoalHalfHeight); } void UpdateNavigationComponents() { NativeCall(this, "AController.UpdateNavigationComponents"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AController.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "AController.GetLifetimeReplicatedProps", OutLifetimeProps); } static void StaticRegisterNativesAController() { NativeCall(nullptr, "AController.StaticRegisterNativesAController"); } - void ReceiveInstigatedAnyDamage(float Damage, UDamageType * DamageType, AActor * DamagedActor, AActor * DamageCauser) { NativeCall(this, "AController.ReceiveInstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } + void ClientSetRotation(FRotator NewRotation, bool bResetCamera) { NativeCall(this, "AController.ClientSetRotation", NewRotation, bResetCamera); } + void ReceiveInstigatedAnyDamage(float Damage, UDamageType * DamageType, AActor * DamagedActor, AActor * DamageCauser) { NativeCall(this, "AController.ReceiveInstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } }; struct APlayerController : AController { - UPlayer * PlayerField() { return *GetNativePointerField(this, "APlayerController.Player"); } - APawn * AcknowledgedPawnField() { return *GetNativePointerField(this, "APlayerController.AcknowledgedPawn"); } + UPlayer* PlayerField() { return *GetNativePointerField(this, "APlayerController.Player"); } + APawn* AcknowledgedPawnField() { return *GetNativePointerField(this, "APlayerController.AcknowledgedPawn"); } float& LocalPlayerCachedLODDistanceFactorField() { return *GetNativePointerField(this, "APlayerController.LocalPlayerCachedLODDistanceFactor"); } - AHUD * MyHUDField() { return *GetNativePointerField(this, "APlayerController.MyHUD"); } - APlayerCameraManager * PlayerCameraManagerField() { return *GetNativePointerField(this, "APlayerController.PlayerCameraManager"); } + AHUD* MyHUDField() { return *GetNativePointerField(this, "APlayerController.MyHUD"); } + APlayerCameraManager* PlayerCameraManagerField() { return *GetNativePointerField(this, "APlayerController.PlayerCameraManager"); } TSubclassOf& PlayerCameraManagerClassField() { return *GetNativePointerField*>(this, "APlayerController.PlayerCameraManagerClass"); } bool& bAutoManageActiveCameraTargetField() { return *GetNativePointerField(this, "APlayerController.bAutoManageActiveCameraTarget"); } FRotator& TargetViewRotationField() { return *GetNativePointerField(this, "APlayerController.TargetViewRotation"); } FRotator& BlendedTargetViewRotationField() { return *GetNativePointerField(this, "APlayerController.BlendedTargetViewRotation"); } - TArray HiddenActorsField() { return *GetNativePointerField*>(this, "APlayerController.HiddenActors"); } + TArray HiddenActorsField() { return *GetNativePointerField*>(this, "APlayerController.HiddenActors"); } float& LastSpectatorStateSynchTimeField() { return *GetNativePointerField(this, "APlayerController.LastSpectatorStateSynchTime"); } int& ClientCapField() { return *GetNativePointerField(this, "APlayerController.ClientCap"); } long double& ServerLastReceivedSpectatorLocTimeField() { return *GetNativePointerField(this, "APlayerController.ServerLastReceivedSpectatorLocTime"); } - UCheatManager * CheatManagerField() { return *GetNativePointerField(this, "APlayerController.CheatManager"); } + UCheatManager* CheatManagerField() { return *GetNativePointerField(this, "APlayerController.CheatManager"); } TSubclassOf& CheatClassField() { return *GetNativePointerField*>(this, "APlayerController.CheatClass"); } + UPlayerInput* PlayerInputField() { return *GetNativePointerField(this, "APlayerController.PlayerInput"); } TArray& PendingMapChangeLevelNamesField() { return *GetNativePointerField*>(this, "APlayerController.PendingMapChangeLevelNames"); } char& NetPlayerIndexField() { return *GetNativePointerField(this, "APlayerController.NetPlayerIndex"); } - UNetConnection * PendingSwapConnectionField() { return *GetNativePointerField(this, "APlayerController.PendingSwapConnection"); } - UNetConnection * NetConnectionField() { return *GetNativePointerField(this, "APlayerController.NetConnection"); } + FPlayerMuteList& MuteListField() { return *GetNativePointerField(this, "APlayerController.MuteList"); } + UNetConnection* PendingSwapConnectionField() { return *GetNativePointerField(this, "APlayerController.PendingSwapConnection"); } + UNetConnection* NetConnectionField() { return *GetNativePointerField(this, "APlayerController.NetConnection"); } FRotator& RotationInputField() { return *GetNativePointerField(this, "APlayerController.RotationInput"); } + FRotator& PreviousRotationInputField() { return *GetNativePointerField(this, "APlayerController.PreviousRotationInput"); } float& InputYawScaleField() { return *GetNativePointerField(this, "APlayerController.InputYawScale"); } float& InputPitchScaleField() { return *GetNativePointerField(this, "APlayerController.InputPitchScale"); } float& InputRollScaleField() { return *GetNativePointerField(this, "APlayerController.InputRollScale"); } @@ -1437,10 +2008,12 @@ struct APlayerController : AController TWeakObjectPtr& AudioListenerComponentField() { return *GetNativePointerField*>(this, "APlayerController.AudioListenerComponent"); } FVector& AudioListenerLocationOverrideField() { return *GetNativePointerField(this, "APlayerController.AudioListenerLocationOverride"); } FRotator& AudioListenerRotationOverrideField() { return *GetNativePointerField(this, "APlayerController.AudioListenerRotationOverride"); } + ASpectatorPawn* SpectatorPawnField() { return *GetNativePointerField(this, "APlayerController.SpectatorPawn"); } FVector& SpawnLocationField() { return *GetNativePointerField(this, "APlayerController.SpawnLocation"); } float& LastRetryPlayerTimeField() { return *GetNativePointerField(this, "APlayerController.LastRetryPlayerTime"); } unsigned __int16& SeamlessTravelCountField() { return *GetNativePointerField(this, "APlayerController.SeamlessTravelCount"); } unsigned __int16& LastCompletedSeamlessTravelCountField() { return *GetNativePointerField(this, "APlayerController.LastCompletedSeamlessTravelCount"); } + TArray AlwaysReleventNetworkActorsField() { return *GetNativePointerField*>(this, "APlayerController.AlwaysReleventNetworkActors"); } FVector& LastReplicatedFocalLocField() { return *GetNativePointerField(this, "APlayerController.LastReplicatedFocalLoc"); } bool& bIsDelayedNetCleanupField() { return *GetNativePointerField(this, "APlayerController.bIsDelayedNetCleanup"); } float& LastTeleportDistanceField() { return *GetNativePointerField(this, "APlayerController.LastTeleportDistance"); } @@ -1450,6 +2023,7 @@ struct APlayerController : AController BitFieldValue bShortConnectTimeOut() { return { this, "APlayerController.bShortConnectTimeOut" }; } BitFieldValue bShowExtendedInfoKey() { return { this, "APlayerController.bShowExtendedInfoKey" }; } BitFieldValue bIsAnselActive() { return { this, "APlayerController.bIsAnselActive" }; } + BitFieldValue bForceSpawnedNotification() { return { this, "APlayerController.bForceSpawnedNotification" }; } BitFieldValue bCinematicMode() { return { this, "APlayerController.bCinematicMode" }; } BitFieldValue bIsUsingStreamingVolumes() { return { this, "APlayerController.bIsUsingStreamingVolumes" }; } BitFieldValue bPlayerIsWaiting() { return { this, "APlayerController.bPlayerIsWaiting" }; } @@ -1470,37 +2044,43 @@ struct APlayerController : AController // Functions - AActor * GetAimedUseActor(UActorComponent ** UseComponent, int * hitBodyIndex) { return NativeCall(this, "APlayerController.GetAimedUseActor", UseComponent, hitBodyIndex); } - AActor * BaseGetPlayerCharacter() { return NativeCall(this, "APlayerController.BaseGetPlayerCharacter"); } - static UClass * StaticClass() { return NativeCall(nullptr, "APlayerController.StaticClass"); } - UPlayer * GetNetOwningPlayer() { return NativeCall(this, "APlayerController.GetNetOwningPlayer"); } - UNetConnection * GetNetConnection() { return NativeCall(this, "APlayerController.GetNetConnection"); } + TArray* GetAlwaysReleventNetworkActors() { return NativeCall*>(this, "APlayerController.GetAlwaysReleventNetworkActors"); } + void SetKickedNotification(FString APIKey) { NativeCall(this, "APlayerController.SetKickedNotification", APIKey); } + AActor* GetAimedUseActor(UActorComponent** UseComponent, int* hitBodyIndex, bool bForceUseActorLocation) { return NativeCall(this, "APlayerController.GetAimedUseActor", UseComponent, hitBodyIndex, bForceUseActorLocation); } + AActor* BaseGetPlayerCharacter() { return NativeCall(this, "APlayerController.BaseGetPlayerCharacter"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APlayerController.StaticClass"); } + AHUD* GetHUD() { return NativeCall(this, "APlayerController.GetHUD"); } + FVector* GetSpawnLocation(FVector* result) { return NativeCall(this, "APlayerController.GetSpawnLocation", result); } + void ClientPlaySoundAtLocation_Implementation(USoundBase* Sound, FVector Location, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySoundAtLocation_Implementation", Sound, Location, VolumeMultiplier, PitchMultiplier); } + UPlayer* GetNetOwningPlayer() { return NativeCall(this, "APlayerController.GetNetOwningPlayer"); } + UNetConnection* GetNetConnection() { return NativeCall(this, "APlayerController.GetNetConnection"); } bool IsLocalController() { return NativeCall(this, "APlayerController.IsLocalController"); } bool ServerPause_Validate() { return NativeCall(this, "APlayerController.ServerPause_Validate"); } void FailedToSpawnPawn() { NativeCall(this, "APlayerController.FailedToSpawnPawn"); } void ClientFlushLevelStreaming_Implementation() { NativeCall(this, "APlayerController.ClientFlushLevelStreaming_Implementation"); } void ServerUpdateLevelVisibility_Implementation(FName PackageName, bool bIsVisible) { NativeCall(this, "APlayerController.ServerUpdateLevelVisibility_Implementation", PackageName, bIsVisible); } bool ServerUpdateLevelVisibility_Validate(FName PackageName, bool bIsVisible) { return NativeCall(this, "APlayerController.ServerUpdateLevelVisibility_Validate", PackageName, bIsVisible); } - FString * ConsoleCommand(FString * result, FString * Cmd, bool bWriteToLog) { return NativeCall(this, "APlayerController.ConsoleCommand", result, Cmd, bWriteToLog); } + FString* ConsoleCommand(FString* result, FString* Cmd, bool bWriteToLog) { return NativeCall(this, "APlayerController.ConsoleCommand", result, Cmd, bWriteToLog); } void CleanUpAudioComponents() { NativeCall(this, "APlayerController.CleanUpAudioComponents"); } - AActor * GetViewTarget() { return NativeCall(this, "APlayerController.GetViewTarget"); } - void AutoManageActiveCameraTarget(AActor * SuggestedTarget) { NativeCall(this, "APlayerController.AutoManageActiveCameraTarget", SuggestedTarget); } + AActor* GetViewTarget() { return NativeCall(this, "APlayerController.GetViewTarget"); } + void AutoManageActiveCameraTarget(AActor* SuggestedTarget) { NativeCall(this, "APlayerController.AutoManageActiveCameraTarget", SuggestedTarget); } + bool ServerNotifyLoadedWorld_Validate(FName WorldPackageName) { return NativeCall(this, "APlayerController.ServerNotifyLoadedWorld_Validate", WorldPackageName); } void ServerNotifyLoadedWorld_Implementation(FName WorldPackageName) { NativeCall(this, "APlayerController.ServerNotifyLoadedWorld_Implementation", WorldPackageName); } bool HasClientLoadedCurrentWorld() { return NativeCall(this, "APlayerController.HasClientLoadedCurrentWorld"); } - void ForceSingleNetUpdateFor(AActor * Target) { NativeCall(this, "APlayerController.ForceSingleNetUpdateFor", Target); } - void SmoothTargetViewRotation(APawn * TargetPawn, float DeltaSeconds) { NativeCall(this, "APlayerController.SmoothTargetViewRotation", TargetPawn, DeltaSeconds); } + void ForceSingleNetUpdateFor(AActor* Target) { NativeCall(this, "APlayerController.ForceSingleNetUpdateFor", Target); } + void SmoothTargetViewRotation(APawn* TargetPawn, float DeltaSeconds) { NativeCall(this, "APlayerController.SmoothTargetViewRotation", TargetPawn, DeltaSeconds); } void InitInputSystem() { NativeCall(this, "APlayerController.InitInputSystem"); } void SafeRetryClientRestart() { NativeCall(this, "APlayerController.SafeRetryClientRestart"); } - void ClientRetryClientRestart_Implementation(APawn * NewPawn) { NativeCall(this, "APlayerController.ClientRetryClientRestart_Implementation", NewPawn); } - void ClientRestart_Implementation(APawn * NewPawn) { NativeCall(this, "APlayerController.ClientRestart_Implementation", NewPawn); } - void Possess(APawn * PawnToPossess) { NativeCall(this, "APlayerController.Possess", PawnToPossess); } - void AcknowledgePossession(APawn * P) { NativeCall(this, "APlayerController.AcknowledgePossession", P); } + void ClientRetryClientRestart_Implementation(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRetryClientRestart_Implementation", NewPawn); } + void ClientRestart_Implementation(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRestart_Implementation", NewPawn); } + void Possess(APawn* PawnToPossess) { NativeCall(this, "APlayerController.Possess", PawnToPossess); } + void AcknowledgePossession(APawn* P) { NativeCall(this, "APlayerController.AcknowledgePossession", P); } void ReceivedPlayer() { NativeCall(this, "APlayerController.ReceivedPlayer"); } - FVector * GetFocalLocation(FVector * result) { return NativeCall(this, "APlayerController.GetFocalLocation", result); } + FVector* GetFocalLocation(FVector* result) { return NativeCall(this, "APlayerController.GetFocalLocation", result); } void PostLoad() { NativeCall(this, "APlayerController.PostLoad"); } - void GetActorEyesViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "APlayerController.GetActorEyesViewPoint", out_Location, out_Rotation); } - void CalcCamera(float DeltaTime, FMinimalViewInfo * OutResult) { NativeCall(this, "APlayerController.CalcCamera", DeltaTime, OutResult); } - void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "APlayerController.GetPlayerViewPoint", out_Location, out_Rotation); } + void GetActorEyesViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "APlayerController.GetActorEyesViewPoint", out_Location, out_Rotation); } + void CalcCamera(float DeltaTime, FMinimalViewInfo* OutResult) { NativeCall(this, "APlayerController.CalcCamera", DeltaTime, OutResult); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "APlayerController.GetPlayerViewPoint", out_Location, out_Rotation); } void UpdateRotation(float DeltaTime) { NativeCall(this, "APlayerController.UpdateRotation", DeltaTime); } void PostInitializeComponents() { NativeCall(this, "APlayerController.PostInitializeComponents"); } void AddCheats(bool bForce) { NativeCall(this, "APlayerController.AddCheats", bForce); } @@ -1508,22 +2088,20 @@ struct APlayerController : AController void SpawnDefaultHUD() { NativeCall(this, "APlayerController.SpawnDefaultHUD"); } void CreateTouchInterface() { NativeCall(this, "APlayerController.CreateTouchInterface"); } void CleanupGameViewport() { NativeCall(this, "APlayerController.CleanupGameViewport"); } - void GetViewportSize(int * SizeX, int * SizeY) { NativeCall(this, "APlayerController.GetViewportSize", SizeX, SizeY); } + void GetViewportSize(int* SizeX, int* SizeY) { NativeCall(this, "APlayerController.GetViewportSize", SizeX, SizeY); } void Reset() { NativeCall(this, "APlayerController.Reset"); } void ClientReset_Implementation() { NativeCall(this, "APlayerController.ClientReset_Implementation"); } void ClientGotoState_Implementation(FName NewState) { NativeCall(this, "APlayerController.ClientGotoState_Implementation", NewState); } bool IsFrozen() { return NativeCall(this, "APlayerController.IsFrozen"); } - void ServerAcknowledgePossession_Implementation(APawn * P) { NativeCall(this, "APlayerController.ServerAcknowledgePossession_Implementation", P); } - bool ServerAcknowledgePossession_Validate(APawn * P) { return NativeCall(this, "APlayerController.ServerAcknowledgePossession_Validate", P); } + void ServerAcknowledgePossession_Implementation(APawn* P) { NativeCall(this, "APlayerController.ServerAcknowledgePossession_Implementation", P); } + bool ServerAcknowledgePossession_Validate(APawn* P) { return NativeCall(this, "APlayerController.ServerAcknowledgePossession_Validate", P); } void UnPossess() { NativeCall(this, "APlayerController.UnPossess"); } void ClientSetHUD_Implementation(TSubclassOf NewHUDClass) { NativeCall>(this, "APlayerController.ClientSetHUD_Implementation", NewHUDClass); } void CleanupPlayerState() { NativeCall(this, "APlayerController.CleanupPlayerState"); } - void OnNetCleanup(UNetConnection * Connection) { NativeCall(this, "APlayerController.OnNetCleanup", Connection); } + void OnNetCleanup(UNetConnection* Connection) { NativeCall(this, "APlayerController.OnNetCleanup", Connection); } void DelayedNetCleanup() { NativeCall(this, "APlayerController.DelayedNetCleanup"); } - void ClientPlaySound_Implementation(USoundBase * Sound, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySound_Implementation", Sound, VolumeMultiplier, PitchMultiplier); } - void ClientPlaySoundAtLocation_Implementation(USoundBase * Sound, FVector Location, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySoundAtLocation_Implementation", Sound, Location, VolumeMultiplier, PitchMultiplier); } - void ClientMessage_Implementation(FString * S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientMessage_Implementation", S, Type, MsgLifeTime); } - void ClientTeamMessage_Implementation(APlayerState * SenderPlayerState, FString * S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } + void ClientPlaySound_Implementation(USoundBase* Sound, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySound_Implementation", Sound, VolumeMultiplier, PitchMultiplier); } + void ClientTeamMessage_Implementation(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } void ServerToggleAILogging_Implementation() { NativeCall(this, "APlayerController.ServerToggleAILogging_Implementation"); } void PawnLeavingGame() { NativeCall(this, "APlayerController.PawnLeavingGame"); } void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "APlayerController.EndPlay", EndPlayReason); } @@ -1531,45 +2109,42 @@ struct APlayerController : AController void FOV(float F) { NativeCall(this, "APlayerController.FOV", F); } void Camera(FName NewMode) { NativeCall(this, "APlayerController.Camera", NewMode); } void ServerCamera_Implementation(FName NewMode) { NativeCall(this, "APlayerController.ServerCamera_Implementation", NewMode); } - bool ServerCamera_Validate(FName NewMode) { return NativeCall(this, "APlayerController.ServerCamera_Validate", NewMode); } void SetCameraMode(FName NewCamMode) { NativeCall(this, "APlayerController.SetCameraMode", NewCamMode); } void ResetCameraMode() { NativeCall(this, "APlayerController.ResetCameraMode"); } void ClientSetCameraFade_Implementation(bool bEnableFading, FColor FadeColor, FVector2D FadeAlpha, float FadeTime, bool bFadeAudio) { NativeCall(this, "APlayerController.ClientSetCameraFade_Implementation", bEnableFading, FadeColor, FadeAlpha, FadeTime, bFadeAudio); } void SendClientAdjustment() { NativeCall(this, "APlayerController.SendClientAdjustment"); } void ClientCapBandwidth_Implementation(int Cap) { NativeCall(this, "APlayerController.ClientCapBandwidth_Implementation", Cap); } - void SetSpawnLocation(FVector * NewLocation) { NativeCall(this, "APlayerController.SetSpawnLocation", NewLocation); } - void SetInitialLocationAndRotation(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "APlayerController.SetInitialLocationAndRotation", NewLocation, NewRotation); } + void SetSpawnLocation(FVector* NewLocation) { NativeCall(this, "APlayerController.SetSpawnLocation", NewLocation); } + void SetInitialLocationAndRotation(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "APlayerController.SetInitialLocationAndRotation", NewLocation, NewRotation); } void ServerUpdateCamera_Implementation(FVector_NetQuantize CamLoc, int CamPitchAndYaw) { NativeCall(this, "APlayerController.ServerUpdateCamera_Implementation", CamLoc, CamPitchAndYaw); } - void RestartLevel() { NativeCall(this, "APlayerController.RestartLevel"); } - void LocalTravel(FString * FURL) { NativeCall(this, "APlayerController.LocalTravel", FURL); } - void ClientReturnToMainMenu_Implementation(FString * ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu_Implementation", ReturnReason); } + void ClientReturnToMainMenu_Implementation(FString* ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu_Implementation", ReturnReason); } + bool IsPaused() { return NativeCall(this, "APlayerController.IsPaused"); } void Pause() { NativeCall(this, "APlayerController.Pause"); } void ServerPause_Implementation() { NativeCall(this, "APlayerController.ServerPause_Implementation"); } - void SetName(FString * S) { NativeCall(this, "APlayerController.SetName", S); } - void ServerChangeName_Implementation(FString * S) { NativeCall(this, "APlayerController.ServerChangeName_Implementation", S); } - bool ServerChangeName_Validate(FString * S) { return NativeCall(this, "APlayerController.ServerChangeName_Validate", S); } - void SwitchLevel(FString * FURL) { NativeCall(this, "APlayerController.SwitchLevel", FURL); } + void SetName(FString* S) { NativeCall(this, "APlayerController.SetName", S); } + void ServerChangeName_Implementation(FString* S) { NativeCall(this, "APlayerController.ServerChangeName_Implementation", S); } + bool ServerChangeName_Validate(FString* S) { return NativeCall(this, "APlayerController.ServerChangeName_Validate", S); } void NotifyLoadedWorld(FName WorldPackageName, bool bFinalDest) { NativeCall(this, "APlayerController.NotifyLoadedWorld", WorldPackageName, bFinalDest); } - void GameHasEnded(AActor * EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.GameHasEnded", EndGameFocus, bIsWinner); } - void ClientGameEnded_Implementation(AActor * EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.ClientGameEnded_Implementation", EndGameFocus, bIsWinner); } - bool GetHitResultUnderCursor(ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursor", TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultUnderCursorByChannel(ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursorByChannel", TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultUnderCursorForObjects(TArray> * ObjectTypes, bool bTraceComplex, FHitResult * HitResult) { return NativeCall> *, bool, FHitResult *>(this, "APlayerController.GetHitResultUnderCursorForObjects", ObjectTypes, bTraceComplex, HitResult); } - bool GetHitResultUnderFinger(ETouchIndex::Type FingerIndex, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFinger", FingerIndex, TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultUnderFingerByChannel(ETouchIndex::Type FingerIndex, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFingerByChannel", FingerIndex, TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultUnderFingerForObjects(ETouchIndex::Type FingerIndex, TArray> * ObjectTypes, bool bTraceComplex, FHitResult * HitResult) { return NativeCall> *, bool, FHitResult *>(this, "APlayerController.GetHitResultUnderFingerForObjects", FingerIndex, ObjectTypes, bTraceComplex, HitResult); } - bool DeprojectMousePositionToWorld(FVector * WorldLocation, FVector * WorldDirection) { return NativeCall(this, "APlayerController.DeprojectMousePositionToWorld", WorldLocation, WorldDirection); } - bool DeprojectScreenPositionToWorld(float ScreenX, float ScreenY, FVector * WorldLocation, FVector * WorldDirection) { return NativeCall(this, "APlayerController.DeprojectScreenPositionToWorld", ScreenX, ScreenY, WorldLocation, WorldDirection); } - bool ProjectWorldLocationToScreen(FVector WorldLocation, FVector2D * ScreenLocation) { return NativeCall(this, "APlayerController.ProjectWorldLocationToScreen", WorldLocation, ScreenLocation); } - bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult * HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } - bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, TArray> * ObjectTypes, bool bTraceComplex, FHitResult * HitResult) { return NativeCall> *, bool, FHitResult *>(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, ObjectTypes, bTraceComplex, HitResult); } + void GameHasEnded(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.GameHasEnded", EndGameFocus, bIsWinner); } + void ClientGameEnded_Implementation(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.ClientGameEnded_Implementation", EndGameFocus, bIsWinner); } + bool GetHitResultUnderCursor(ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursor", TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderCursorByChannel(ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursorByChannel", TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderCursorForObjects(TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultUnderCursorForObjects", ObjectTypes, bTraceComplex, HitResult); } + bool GetHitResultUnderFinger(ETouchIndex::Type FingerIndex, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFinger", FingerIndex, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderFingerByChannel(ETouchIndex::Type FingerIndex, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFingerByChannel", FingerIndex, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderFingerForObjects(ETouchIndex::Type FingerIndex, TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultUnderFingerForObjects", FingerIndex, ObjectTypes, bTraceComplex, HitResult); } + bool DeprojectMousePositionToWorld(FVector* WorldLocation, FVector* WorldDirection) { return NativeCall(this, "APlayerController.DeprojectMousePositionToWorld", WorldLocation, WorldDirection); } + bool DeprojectScreenPositionToWorld(float ScreenX, float ScreenY, FVector* WorldLocation, FVector* WorldDirection) { return NativeCall(this, "APlayerController.DeprojectScreenPositionToWorld", ScreenX, ScreenY, WorldLocation, WorldDirection); } + bool ProjectWorldLocationToScreen(FVector WorldLocation, FVector2D* ScreenLocation, FVector* Out_ViewLocation, FBox2D* Out_ViewRect, bool* Out_bIsScreenLocationInsideViewRect) { return NativeCall(this, "APlayerController.ProjectWorldLocationToScreen", WorldLocation, ScreenLocation, Out_ViewLocation, Out_ViewRect, Out_bIsScreenLocationInsideViewRect); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, ObjectTypes, bTraceComplex, HitResult); } void PlayerTick(float DeltaTime) { NativeCall(this, "APlayerController.PlayerTick", DeltaTime); } void FlushPressedKeys() { NativeCall(this, "APlayerController.FlushPressedKeys"); } bool InputKey(FKey Key, EInputEvent EventType, float AmountDepressed, bool bGamepad) { return NativeCall(this, "APlayerController.InputKey", Key, EventType, AmountDepressed, bGamepad); } bool InputAxis(FKey Key, float Delta, float DeltaTime, int NumSamples, bool bGamepad) { return NativeCall(this, "APlayerController.InputAxis", Key, Delta, DeltaTime, NumSamples, bGamepad); } - bool InputTouch(unsigned int Handle, ETouchType::Type Type, FVector2D * TouchLocation, FDateTime DeviceTimestamp, unsigned int TouchpadIndex) { return NativeCall(this, "APlayerController.InputTouch", Handle, Type, TouchLocation, DeviceTimestamp, TouchpadIndex); } - bool InputMotion(FVector * Tilt, FVector * RotationRate, FVector * Gravity, FVector * Acceleration) { return NativeCall(this, "APlayerController.InputMotion", Tilt, RotationRate, Gravity, Acceleration); } + bool InputTouch(unsigned int Handle, ETouchType::Type Type, FVector2D* TouchLocation, FDateTime DeviceTimestamp, unsigned int TouchpadIndex) { return NativeCall(this, "APlayerController.InputTouch", Handle, Type, TouchLocation, DeviceTimestamp, TouchpadIndex); } + bool InputMotion(FVector* Tilt, FVector* RotationRate, FVector* Gravity, FVector* Acceleration) { return NativeCall(this, "APlayerController.InputMotion", Tilt, RotationRate, Gravity, Acceleration); } bool ShouldShowMouseCursor() { return NativeCall(this, "APlayerController.ShouldShowMouseCursor"); } EMouseCursor::Type GetMouseCursor() { return NativeCall(this, "APlayerController.GetMouseCursor"); } void SetupInputComponent() { NativeCall(this, "APlayerController.SetupInputComponent"); } @@ -1583,17 +2158,19 @@ struct APlayerController : AController bool IsLookInputIgnored() { return NativeCall(this, "APlayerController.IsLookInputIgnored"); } void ServerVerifyViewTarget_Implementation() { NativeCall(this, "APlayerController.ServerVerifyViewTarget_Implementation"); } void SpawnPlayerCameraManager() { NativeCall(this, "APlayerController.SpawnPlayerCameraManager"); } - void GetAudioListenerPosition(FVector * OutLocation, FVector * OutFrontDir, FVector * OutRightDir) { NativeCall(this, "APlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } + void GetAudioListenerPosition(FVector* OutLocation, FVector* OutFrontDir, FVector* OutRightDir) { NativeCall(this, "APlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } + void SetAudioListenerOverride(USceneComponent* AttachedComponent, FVector Location, FRotator Rotation) { NativeCall(this, "APlayerController.SetAudioListenerOverride", AttachedComponent, Location, Rotation); } + void ClearAudioListenerOverride() { NativeCall(this, "APlayerController.ClearAudioListenerOverride"); } void ServerCheckClientPossession_Implementation() { NativeCall(this, "APlayerController.ServerCheckClientPossession_Implementation"); } void SafeServerCheckClientPossession() { NativeCall(this, "APlayerController.SafeServerCheckClientPossession"); } void SafeServerUpdateSpectatorState() { NativeCall(this, "APlayerController.SafeServerUpdateSpectatorState"); } void ServerSetSpectatorLocation_Implementation(FVector NewLoc) { NativeCall(this, "APlayerController.ServerSetSpectatorLocation_Implementation", NewLoc); } void ServerViewNextPlayer_Implementation() { NativeCall(this, "APlayerController.ServerViewNextPlayer_Implementation"); } void ServerViewPrevPlayer_Implementation() { NativeCall(this, "APlayerController.ServerViewPrevPlayer_Implementation"); } - APlayerState * GetNextViewablePlayer(int dir) { return NativeCall(this, "APlayerController.GetNextViewablePlayer", dir); } + APlayerState* GetNextViewablePlayer(int dir) { return NativeCall(this, "APlayerController.GetNextViewablePlayer", dir); } void ViewAPlayer(int dir) { NativeCall(this, "APlayerController.ViewAPlayer", dir); } void StartFire(char FireModeNum) { NativeCall(this, "APlayerController.StartFire", FireModeNum); } - bool NotifyServerReceivedClientData(APawn * InPawn, float TimeStamp) { return NativeCall(this, "APlayerController.NotifyServerReceivedClientData", InPawn, TimeStamp); } + bool NotifyServerReceivedClientData(APawn* InPawn, float TimeStamp) { return NativeCall(this, "APlayerController.NotifyServerReceivedClientData", InPawn, TimeStamp); } void ServerRestartPlayer_Implementation() { NativeCall(this, "APlayerController.ServerRestartPlayer_Implementation"); } bool CanRestartPlayer() { return NativeCall(this, "APlayerController.CanRestartPlayer"); } void ClientIgnoreMoveInput_Implementation(bool bIgnore) { NativeCall(this, "APlayerController.ClientIgnoreMoveInput_Implementation", bIgnore); } @@ -1606,38 +2183,45 @@ struct APlayerController : AController void ClientCommitMapChange_Implementation() { NativeCall(this, "APlayerController.ClientCommitMapChange_Implementation"); } void ClientCancelPendingMapChange_Implementation() { NativeCall(this, "APlayerController.ClientCancelPendingMapChange_Implementation"); } void ClientSetBlockOnAsyncLoading_Implementation() { NativeCall(this, "APlayerController.ClientSetBlockOnAsyncLoading_Implementation"); } - void GetSeamlessTravelActorList(bool bToEntry, TArray * ActorList) { NativeCall *>(this, "APlayerController.GetSeamlessTravelActorList", bToEntry, ActorList); } - void SeamlessTravelFrom(APlayerController * OldPC) { NativeCall(this, "APlayerController.SeamlessTravelFrom", OldPC); } + void GetSeamlessTravelActorList(bool bToEntry, TArray* ActorList) { NativeCall*>(this, "APlayerController.GetSeamlessTravelActorList", bToEntry, ActorList); } + void SeamlessTravelFrom(APlayerController* OldPC) { NativeCall(this, "APlayerController.SeamlessTravelFrom", OldPC); } void ClientEnableNetworkVoice_Implementation(bool bEnable) { NativeCall(this, "APlayerController.ClientEnableNetworkVoice_Implementation", bEnable); } void StartTalking() { NativeCall(this, "APlayerController.StartTalking"); } - void ToggleSpeaking(bool bSpeaking) { NativeCall(this, "APlayerController.ToggleSpeaking", bSpeaking); } + void StopTalking() { NativeCall(this, "APlayerController.StopTalking"); } + void ToggleSpeaking(bool bSpeaking, bool bUseSuperRange) { NativeCall(this, "APlayerController.ToggleSpeaking", bSpeaking, bUseSuperRange); } void ClientVoiceHandshakeComplete_Implementation() { NativeCall(this, "APlayerController.ClientVoiceHandshakeComplete_Implementation"); } void ServerMutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerMutePlayer_Implementation", PlayerId); } bool ServerUnmutePlayer_Validate(FUniqueNetIdRepl PlayerId) { return NativeCall(this, "APlayerController.ServerUnmutePlayer_Validate", PlayerId); } void ServerUnmutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerUnmutePlayer_Implementation", PlayerId); } void ClientMutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientMutePlayer_Implementation", PlayerId); } void ClientUnmutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientUnmutePlayer_Implementation", PlayerId); } - bool IsPlayerMuted(FUniqueNetId * PlayerId) { return NativeCall(this, "APlayerController.IsPlayerMuted", PlayerId); } - bool ShouldReplicateVoicePacketFrom(FUniqueNetId * Sender, char * PlaybackFlags) { return NativeCall(this, "APlayerController.ShouldReplicateVoicePacketFrom", Sender, PlaybackFlags); } - void NotifyDirectorControl(bool bNowControlling, AMatineeActor * CurrentMatinee) { NativeCall(this, "APlayerController.NotifyDirectorControl", bNowControlling, CurrentMatinee); } - void ClientWasKicked_Implementation(FText * KickReason) { NativeCall(this, "APlayerController.ClientWasKicked_Implementation", KickReason); } - bool IsSplitscreenPlayer(int * OutSplitscreenPlayerIndex) { return NativeCall(this, "APlayerController.IsSplitscreenPlayer", OutSplitscreenPlayerIndex); } + bool IsPlayerMuted(FUniqueNetId* PlayerId) { return NativeCall(this, "APlayerController.IsPlayerMuted", PlayerId); } + bool IsPlayerMuted(FString* VivoxUsername) { return NativeCall(this, "APlayerController.IsPlayerMuted", VivoxUsername); } + bool ShouldReplicateVoicePacketFrom(FUniqueNetId* Sender, char ShouldUseSuperRange, char* PlaybackFlags) { return NativeCall(this, "APlayerController.ShouldReplicateVoicePacketFrom", Sender, ShouldUseSuperRange, PlaybackFlags); } + void ClientWasKicked_Implementation(FText* KickReason) { NativeCall(this, "APlayerController.ClientWasKicked_Implementation", KickReason); } + bool IsPrimaryPlayer() { return NativeCall(this, "APlayerController.IsPrimaryPlayer"); } + bool IsSplitscreenPlayer(int* OutSplitscreenPlayerIndex) { return NativeCall(this, "APlayerController.IsSplitscreenPlayer", OutSplitscreenPlayerIndex); } int GetSplitscreenPlayerCount() { return NativeCall(this, "APlayerController.GetSplitscreenPlayerCount"); } - void ClientSetForceMipLevelsToBeResident_Implementation(UMaterialInterface * Material, float ForceDuration, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientSetForceMipLevelsToBeResident_Implementation", Material, ForceDuration, CinematicTextureGroups); } - void ClientPrestreamTextures_Implementation(AActor * ForcedActor, float ForceDuration, bool bEnableStreaming, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientPrestreamTextures_Implementation", ForcedActor, ForceDuration, bEnableStreaming, CinematicTextureGroups); } + void ClientSetForceMipLevelsToBeResident_Implementation(UMaterialInterface* Material, float ForceDuration, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientSetForceMipLevelsToBeResident_Implementation", Material, ForceDuration, CinematicTextureGroups); } + void ClientPrestreamTextures_Implementation(AActor* ForcedActor, float ForceDuration, bool bEnableStreaming, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientPrestreamTextures_Implementation", ForcedActor, ForceDuration, bEnableStreaming, CinematicTextureGroups); } void ProcessForceFeedback(const float DeltaTime, const bool bGamePaused) { NativeCall(this, "APlayerController.ProcessForceFeedback", DeltaTime, bGamePaused); } void ClientClearCameraLensEffects_Implementation() { NativeCall(this, "APlayerController.ClientClearCameraLensEffects_Implementation"); } void ReceivedSpectatorClass(TSubclassOf SpectatorClass) { NativeCall>(this, "APlayerController.ReceivedSpectatorClass", SpectatorClass); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } - void SetPawn(APawn * InPawn) { NativeCall(this, "APlayerController.SetPawn", InPawn); } - void SetPlayer(UPlayer * InPlayer) { NativeCall(this, "APlayerController.SetPlayer", InPlayer); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } + void SetPawn(APawn* InPawn) { NativeCall(this, "APlayerController.SetPawn", InPawn); } + void ClientNetGUIDActorDeletion_Implementation(FNetworkGUID TheNetGUID) { NativeCall(this, "APlayerController.ClientNetGUIDActorDeletion_Implementation", TheNetGUID); } + void SetPlayer(UPlayer* InPlayer) { NativeCall(this, "APlayerController.SetPlayer", InPlayer); } void TickPlayerInput(const float DeltaSeconds, const bool bGamePaused) { NativeCall(this, "APlayerController.TickPlayerInput", DeltaSeconds, bGamePaused); } - bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "APlayerController.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "APlayerController.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + FString* GetPlayerNetworkAddress(FString* result) { return NativeCall(this, "APlayerController.GetPlayerNetworkAddress", result); } bool DefaultCanUnpause() { return NativeCall(this, "APlayerController.DefaultCanUnpause"); } void StartSpectatingOnly() { NativeCall(this, "APlayerController.StartSpectatingOnly"); } void EndPlayingState() { NativeCall(this, "APlayerController.EndPlayingState"); } void BeginSpectatingState() { NativeCall(this, "APlayerController.BeginSpectatingState"); } + void SetSpectatorPawn(ASpectatorPawn* NewSpectatorPawn) { NativeCall(this, "APlayerController.SetSpectatorPawn", NewSpectatorPawn); } + ASpectatorPawn* SpawnSpectatorPawn() { return NativeCall(this, "APlayerController.SpawnSpectatorPawn"); } void DestroySpectatorPawn() { NativeCall(this, "APlayerController.DestroySpectatorPawn"); } + APawn* GetPawnOrSpectator() { return NativeCall(this, "APlayerController.GetPawnOrSpectator"); } void UpdateStateInputComponents() { NativeCall(this, "APlayerController.UpdateStateInputComponents"); } void ChangeState(FName NewState) { NativeCall(this, "APlayerController.ChangeState", NewState); } void EndSpectatingState() { NativeCall(this, "APlayerController.EndSpectatingState"); } @@ -1649,42 +2233,86 @@ struct APlayerController : AController bool WasInputKeyJustPressed(FKey Key) { return NativeCall(this, "APlayerController.WasInputKeyJustPressed", Key); } bool WasInputKeyJustReleased(FKey Key) { return NativeCall(this, "APlayerController.WasInputKeyJustReleased", Key); } float GetInputAnalogKeyState(FKey Key) { return NativeCall(this, "APlayerController.GetInputAnalogKeyState", Key); } - FVector * GetInputVectorKeyState(FVector * result, FKey Key) { return NativeCall(this, "APlayerController.GetInputVectorKeyState", result, Key); } - void GetInputMotionState(FVector * Tilt, FVector * RotationRate, FVector * Gravity, FVector * Acceleration) { NativeCall(this, "APlayerController.GetInputMotionState", Tilt, RotationRate, Gravity, Acceleration); } + FVector* GetInputVectorKeyState(FVector* result, FKey Key) { return NativeCall(this, "APlayerController.GetInputVectorKeyState", result, Key); } + void GetInputMotionState(FVector* Tilt, FVector* RotationRate, FVector* Gravity, FVector* Acceleration) { NativeCall(this, "APlayerController.GetInputMotionState", Tilt, RotationRate, Gravity, Acceleration); } float GetInputKeyTimeDown(FKey Key) { return NativeCall(this, "APlayerController.GetInputKeyTimeDown", Key); } - bool GetMousePosition(float * LocationX, float * LocationY) { return NativeCall(this, "APlayerController.GetMousePosition", LocationX, LocationY); } - void GetInputMouseDelta(float * DeltaX, float * DeltaY) { NativeCall(this, "APlayerController.GetInputMouseDelta", DeltaX, DeltaY); } - void EnableInput(APlayerController * PlayerController) { NativeCall(this, "APlayerController.EnableInput", PlayerController); } - void DisableInput(APlayerController * PlayerController) { NativeCall(this, "APlayerController.DisableInput", PlayerController); } + bool GetMousePosition(float* LocationX, float* LocationY) { return NativeCall(this, "APlayerController.GetMousePosition", LocationX, LocationY); } + void GetInputMouseDelta(float* DeltaX, float* DeltaY) { NativeCall(this, "APlayerController.GetInputMouseDelta", DeltaX, DeltaY); } + void EnableInput(APlayerController* PlayerController) { NativeCall(this, "APlayerController.EnableInput", PlayerController); } + void DisableInput(APlayerController* PlayerController) { NativeCall(this, "APlayerController.DisableInput", PlayerController); } void SetVirtualJoystickVisibility(bool bVisible) { NativeCall(this, "APlayerController.SetVirtualJoystickVisibility", bVisible); } void UpdateCameraManager(float DeltaSeconds) { NativeCall(this, "APlayerController.UpdateCameraManager", DeltaSeconds); } - void ClientRepObjRef_Implementation(UObject * Object) { NativeCall(this, "APlayerController.ClientRepObjRef_Implementation", Object); } - void NetSpawnActorAtLocation_Implementation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, USceneComponent * attachToComponent, int dataIndex, FName attachSocketName) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, USceneComponent *, int, FName>(this, "APlayerController.NetSpawnActorAtLocation_Implementation", AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName); } + void ClientRepObjRef_Implementation(UObject* Object) { NativeCall(this, "APlayerController.ClientRepObjRef_Implementation", Object); } + void NetSpawnActorAtLocation_Implementation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, USceneComponent*, int, FName>(this, "APlayerController.NetSpawnActorAtLocation_Implementation", AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName); } void ServerReceivedPlayerControllerAck_Implementation() { NativeCall(this, "APlayerController.ServerReceivedPlayerControllerAck_Implementation"); } - void ClientProcessNetExecCommandUnreliable_Implementation(AActor * ForActor, FName CommandName, FNetExecParams ExecParams) { NativeCall(this, "APlayerController.ClientProcessNetExecCommandUnreliable_Implementation", ForActor, CommandName, ExecParams); } - void ClientProcessSimpleNetExecCommandBP_Implementation(AActor * ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandBP_Implementation", ForActor, CommandName); } - void ClientProcessSimpleNetExecCommandUnreliableBP_Implementation(AActor * ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandUnreliableBP_Implementation", ForActor, CommandName); } + void ClientProcessNetExecCommandUnreliable_Implementation(AActor* ForActor, FName CommandName, FNetExecParams ExecParams) { NativeCall(this, "APlayerController.ClientProcessNetExecCommandUnreliable_Implementation", ForActor, CommandName, ExecParams); } + bool NetConnectionHasActiveActor(AActor* AnActor) { return NativeCall(this, "APlayerController.NetConnectionHasActiveActor", AnActor); } + void ClientProcessSimpleNetExecCommandBP_Implementation(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandBP_Implementation", ForActor, CommandName); } + void ClientProcessSimpleNetExecCommandUnreliableBP_Implementation(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandUnreliableBP_Implementation", ForActor, CommandName); } static void StaticRegisterNativesAPlayerController() { NativeCall(nullptr, "APlayerController.StaticRegisterNativesAPlayerController"); } void ClientClearCameraLensEffects() { NativeCall(this, "APlayerController.ClientClearCameraLensEffects"); } void ClientCommitMapChange() { NativeCall(this, "APlayerController.ClientCommitMapChange"); } void ClientEnableNetworkVoice(bool bEnable) { NativeCall(this, "APlayerController.ClientEnableNetworkVoice", bEnable); } - void ClientMessage(FString * S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientMessage", S, Type, MsgLifeTime); } + void ClientGotoState(FName NewState) { NativeCall(this, "APlayerController.ClientGotoState", NewState); } + void ClientMessage(FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientMessage", S, Type, MsgLifeTime); } void ClientMutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientMutePlayer", PlayerId); } - void ClientRepObjRef(UObject * Object) { NativeCall(this, "APlayerController.ClientRepObjRef", Object); } - void ClientReturnToMainMenu(FString * ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu", ReturnReason); } + void ClientRepObjRef(UObject* Object) { NativeCall(this, "APlayerController.ClientRepObjRef", Object); } + void ClientRetryClientRestart(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRetryClientRestart", NewPawn); } + void ClientReturnToMainMenu(FString* ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu", ReturnReason); } void ClientSetHUD(TSubclassOf NewHUDClass) { NativeCall>(this, "APlayerController.ClientSetHUD", NewHUDClass); } - void ClientTeamMessage(APlayerState * SenderPlayerState, FString * S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage", SenderPlayerState, S, Type, MsgLifeTime); } + void ClientTeamMessage(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage", SenderPlayerState, S, Type, MsgLifeTime); } void ClientUnmutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientUnmutePlayer", PlayerId); } void ClientVoiceHandshakeComplete() { NativeCall(this, "APlayerController.ClientVoiceHandshakeComplete"); } - void ClientWasKicked(FText * KickReason) { NativeCall(this, "APlayerController.ClientWasKicked", KickReason); } - void ServerChangeName(FString * S) { NativeCall(this, "APlayerController.ServerChangeName", S); } + void ClientWasKicked(FText* KickReason) { NativeCall(this, "APlayerController.ClientWasKicked", KickReason); } + void ServerChangeName(FString* S) { NativeCall(this, "APlayerController.ServerChangeName", S); } void ServerMutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerMutePlayer", PlayerId); } void ServerRestartPlayer() { NativeCall(this, "APlayerController.ServerRestartPlayer"); } void ServerUnmutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerUnmutePlayer", PlayerId); } void ServerVerifyViewTarget() { NativeCall(this, "APlayerController.ServerVerifyViewTarget"); } }; -struct AShooterPlayerController : APlayerController +struct ABasePlayerController : APlayerController +{ + FName& ServerSayStringField() { return *GetNativePointerField(this, "ABasePlayerController.ServerSayString"); } + bool& bHasSentStartEventsField() { return *GetNativePointerField(this, "ABasePlayerController.bHasSentStartEvents"); } + + // Bit fields + + BitFieldValue bCheatEnabled() { return { this, "ABasePlayerController.bCheatEnabled" }; } + BitFieldValue bGameEndedFrame() { return { this, "ABasePlayerController.bGameEndedFrame" }; } + BitFieldValue bAllowGameActions() { return { this, "ABasePlayerController.bAllowGameActions" }; } + + // Functions + + void OnQueryAchievementsComplete(FUniqueNetId* PlayerId, const bool bWasSuccessful) { NativeCall(this, "ABasePlayerController.OnQueryAchievementsComplete", PlayerId, bWasSuccessful); } + void GameHasEnded(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "ABasePlayerController.GameHasEnded", EndGameFocus, bIsWinner); } + void SimulateInputKey(FKey Key, bool bPressed) { NativeCall(this, "ABasePlayerController.SimulateInputKey", Key, bPressed); } + void QueryAchievements() { NativeCall(this, "ABasePlayerController.QueryAchievements"); } + void ClientGameStarted_Implementation() { NativeCall(this, "ABasePlayerController.ClientGameStarted_Implementation"); } + void ClientStartOnlineGame_Implementation() { NativeCall(this, "ABasePlayerController.ClientStartOnlineGame_Implementation"); } + void ClientEndOnlineGame_Implementation() { NativeCall(this, "ABasePlayerController.ClientEndOnlineGame_Implementation"); } + void HandleReturnToMainMenu() { NativeCall(this, "ABasePlayerController.HandleReturnToMainMenu"); } + void ClientReturnToMainMenu_Implementation(FString* ReturnReason) { NativeCall(this, "ABasePlayerController.ClientReturnToMainMenu_Implementation", ReturnReason); } + void CleanupSessionOnReturnToMenu() { NativeCall(this, "ABasePlayerController.CleanupSessionOnReturnToMenu"); } + void ClientGameEnded_Implementation(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "ABasePlayerController.ClientGameEnded_Implementation", EndGameFocus, bIsWinner); } + void ClientSendRoundEndEvent_Implementation(bool bIsWinner, int ExpendedTimeInSeconds) { NativeCall(this, "ABasePlayerController.ClientSendRoundEndEvent_Implementation", bIsWinner, ExpendedTimeInSeconds); } + void ClientSetSpectatorCamera_Implementation(FVector CameraLocation, FRotator CameraRotation) { NativeCall(this, "ABasePlayerController.ClientSetSpectatorCamera_Implementation", CameraLocation, CameraRotation); } + void ServerCheat_Implementation(FString* Msg) { NativeCall(this, "ABasePlayerController.ServerCheat_Implementation", Msg); } + bool IsMoveInputIgnored() { return NativeCall(this, "ABasePlayerController.IsMoveInputIgnored"); } + bool IsLookInputIgnored() { return NativeCall(this, "ABasePlayerController.IsLookInputIgnored"); } + bool IsGameInputAllowed() { return NativeCall(this, "ABasePlayerController.IsGameInputAllowed"); } + static void StaticRegisterNativesABasePlayerController() { NativeCall(nullptr, "ABasePlayerController.StaticRegisterNativesABasePlayerController"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ABasePlayerController.GetPrivateStaticClass", Package); } + void ClientEndOnlineGame() { NativeCall(this, "ABasePlayerController.ClientEndOnlineGame"); } + void ClientGameStarted() { NativeCall(this, "ABasePlayerController.ClientGameStarted"); } + void ClientSendRoundEndEvent(bool bIsWinner, int ExpendedTimeInSeconds) { NativeCall(this, "ABasePlayerController.ClientSendRoundEndEvent", bIsWinner, ExpendedTimeInSeconds); } + void ClientSetSpectatorCamera(FVector CameraLocation, FRotator CameraRotation) { NativeCall(this, "ABasePlayerController.ClientSetSpectatorCamera", CameraLocation, CameraRotation); } + void ClientStartOnlineGame() { NativeCall(this, "ABasePlayerController.ClientStartOnlineGame"); } + void ServerCheat(FString* Msg) { NativeCall(this, "ABasePlayerController.ServerCheat", Msg); } + static UClass* StaticClass() { return NativeCall(nullptr, "ABasePlayerController.StaticClass"); } +}; + +struct AShooterPlayerController : ABasePlayerController { FieldArray HeldItemSlotField() { return { this, "AShooterPlayerController.HeldItemSlot" }; } FieldArray UsedItemSlotField() { return { this, "AShooterPlayerController.UsedItemSlot" }; } @@ -1693,20 +2321,27 @@ struct AShooterPlayerController : APlayerController FieldArray LastUsedItemSlotTimesField() { return { this, "AShooterPlayerController.LastUsedItemSlotTimes" }; } FVector& CurrentPlayerCharacterLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentPlayerCharacterLocation"); } int& ModifedButtonCountField() { return *GetNativePointerField(this, "AShooterPlayerController.ModifedButtonCount"); } - APrimalStructurePlacer * StructurePlacerField() { return *GetNativePointerField(this, "AShooterPlayerController.StructurePlacer"); } + int& nArkTributeLoadIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.nArkTributeLoadIndex"); } + APrimalStructurePlacer* StructurePlacerField() { return *GetNativePointerField(this, "AShooterPlayerController.StructurePlacer"); } FVector& LastDeathLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeathLocation"); } long double& LastDeathTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeathTime"); } TWeakObjectPtr& LastDeathPrimalCharacterField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastDeathPrimalCharacter"); } bool& bWasDeadField() { return *GetNativePointerField(this, "AShooterPlayerController.bWasDead"); } long double& LastDeadCharacterDestructionTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeadCharacterDestructionTime"); } + long double& LastLargeQuantityTranserAllTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastLargeQuantityTranserAllTime"); } bool& bShowGameModeHUDField() { return *GetNativePointerField(this, "AShooterPlayerController.bShowGameModeHUD"); } FVector2D& CurrentRadialDirection1Field() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentRadialDirection1"); } FVector2D& CurrentRadialDirection2Field() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentRadialDirection2"); } - USoundCue * SelectSlotSoundField() { return *GetNativePointerField(this, "AShooterPlayerController.SelectSlotSound"); } - UPrimalLocalProfile * PrimalLocalProfileField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalLocalProfile"); } - bool& bPlayerSpeakingField() { return *GetNativePointerField(this, "AShooterPlayerController.bPlayerSpeaking"); } + USoundCue* SelectSlotSoundField() { return *GetNativePointerField(this, "AShooterPlayerController.SelectSlotSound"); } + UPrimalLocalProfile* PrimalLocalProfileField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalLocalProfile"); } int& CurrentGameModeMaxNumOfRespawnsField() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentGameModeMaxNumOfRespawns"); } FVector& LastRawInputDirField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRawInputDir"); } + FString& VivoxUsernameField() { return *GetNativePointerField(this, "AShooterPlayerController.VivoxUsername"); } + int& VivoxLoginAttemptsField() { return *GetNativePointerField(this, "AShooterPlayerController.VivoxLoginAttempts"); } + int& VivoxJoinChannelAttemptsField() { return *GetNativePointerField(this, "AShooterPlayerController.VivoxJoinChannelAttempts"); } + TMap >& ConnectedVoiceChannelsField() { return *GetNativePointerField >*>(this, "AShooterPlayerController.ConnectedVoiceChannels"); } + bool& bConnectedToPositionalChannelField() { return *GetNativePointerField(this, "AShooterPlayerController.bConnectedToPositionalChannel"); } + long double& LastVivoxPositionalUpdateField() { return *GetNativePointerField(this, "AShooterPlayerController.LastVivoxPositionalUpdate"); } unsigned __int64& TargetOrbitedPlayerIdField() { return *GetNativePointerField(this, "AShooterPlayerController.TargetOrbitedPlayerId"); } char& TargetOrbitedTrialCountField() { return *GetNativePointerField(this, "AShooterPlayerController.TargetOrbitedTrialCount"); } TWeakObjectPtr& LastControlledPlayerCharacterField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastControlledPlayerCharacter"); } @@ -1715,19 +2350,20 @@ struct AShooterPlayerController : APlayerController float& MaxUseCheckRadiusField() { return *GetNativePointerField(this, "AShooterPlayerController.MaxUseCheckRadius"); } TArray& SavedSurvivorProfileSettingsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SavedSurvivorProfileSettings"); } bool& bCachedOnlyShowOnlineTribeMembersField() { return *GetNativePointerField(this, "AShooterPlayerController.bCachedOnlyShowOnlineTribeMembers"); } + int& SavedMissionBiomeFilterMaskField() { return *GetNativePointerField(this, "AShooterPlayerController.SavedMissionBiomeFilterMask"); } + bool& bInitializedMissionUIField() { return *GetNativePointerField(this, "AShooterPlayerController.bInitializedMissionUI"); } + bool& bMissionSortByDistanceField() { return *GetNativePointerField(this, "AShooterPlayerController.bMissionSortByDistance"); } + TArray& MapDinosField() { return *GetNativePointerField*>(this, "AShooterPlayerController.MapDinos"); } TArray>& RemoteViewingInventoriesField() { return *GetNativePointerField>*>(this, "AShooterPlayerController.RemoteViewingInventories"); } TWeakObjectPtr& LastHeldUseActorField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastHeldUseActor"); } TWeakObjectPtr& LastHeldUseHitComponentField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastHeldUseHitComponent"); } int& LastHeldUseHitBodyIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.LastHeldUseHitBodyIndex"); } bool& bUsePressedFromGamepadField() { return *GetNativePointerField(this, "AShooterPlayerController.bUsePressedFromGamepad"); } TWeakObjectPtr& SpawnAtBedField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SpawnAtBed"); } - APawn * TempLastLostPawnField() { return *GetNativePointerField(this, "AShooterPlayerController.TempLastLostPawn"); } + APawn* TempLastLostPawnField() { return *GetNativePointerField(this, "AShooterPlayerController.TempLastLostPawn"); } bool& bHasLoadedProfileField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasLoadedProfile"); } bool& bLockedInputDontRecenterMouseField() { return *GetNativePointerField(this, "AShooterPlayerController.bLockedInputDontRecenterMouse"); } long double& LastRespawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRespawnTime"); } - bool& bIsFirstSpawnField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsFirstSpawn"); } - bool& bIsRespawningField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsRespawning"); } - bool& bIsVRPlayerField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsVRPlayer"); } TSubclassOf& AwaitingHUDClassField() { return *GetNativePointerField*>(this, "AShooterPlayerController.AwaitingHUDClass"); } FItemNetID& LastEquipedItemNetIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastEquipedItemNetID"); } FItemNetID& LastUnequippedItemNetIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastUnequippedItemNetID"); } @@ -1737,6 +2373,7 @@ struct AShooterPlayerController : APlayerController FVector& LastTurnSpeedField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTurnSpeed"); } long double& LastMultiUseInteractionTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastMultiUseInteractionTime"); } float& LastTimeSentCarriedRotationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTimeSentCarriedRotation"); } + TMap >& LastArkTributeDataField() { return *GetNativePointerField >*>(this, "AShooterPlayerController.LastArkTributeData"); } FItemNetID& LastSteamItemIDToRemoveField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSteamItemIDToRemove"); } FItemNetID& LastSteamItemIDToAddField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSteamItemIDToAdd"); } bool& bConsumeItemSucceededField() { return *GetNativePointerField(this, "AShooterPlayerController.bConsumeItemSucceeded"); } @@ -1744,6 +2381,7 @@ struct AShooterPlayerController : APlayerController bool& bServerRefreshedSteamInventoryField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerRefreshedSteamInventory"); } bool& bServerRefreshStatusField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerRefreshStatus"); } bool& bCloseSteamStatusSceneField() { return *GetNativePointerField(this, "AShooterPlayerController.bCloseSteamStatusScene"); } + IOnlineSubsystem* OnlineSubField() { return *GetNativePointerField(this, "AShooterPlayerController.OnlineSub"); } long double& LastSteamInventoryRefreshTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSteamInventoryRefreshTime"); } long double& LastRequesteDinoAncestorsTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRequesteDinoAncestorsTime"); } long double& LastDiedMessageTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDiedMessageTime"); } @@ -1758,6 +2396,7 @@ struct AShooterPlayerController : APlayerController int& SpectatorCycleIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.SpectatorCycleIndex"); } bool& bPossessedAnyPawnField() { return *GetNativePointerField(this, "AShooterPlayerController.bPossessedAnyPawn"); } bool& bIsFastTravellingField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsFastTravelling"); } + bool& bLastSpawnWasFastTravelField() { return *GetNativePointerField(this, "AShooterPlayerController.bLastSpawnWasFastTravel"); } bool& bSuppressAdminIconField() { return *GetNativePointerField(this, "AShooterPlayerController.bSuppressAdminIcon"); } long double& WaitingForSpawnUITimeField() { return *GetNativePointerField(this, "AShooterPlayerController.WaitingForSpawnUITime"); } float& ChatSpamWeightField() { return *GetNativePointerField(this, "AShooterPlayerController.ChatSpamWeight"); } @@ -1793,6 +2432,7 @@ struct AShooterPlayerController : APlayerController bool& bLastHitMarkerStructureAllyField() { return *GetNativePointerField(this, "AShooterPlayerController.bLastHitMarkerStructureAlly"); } float& DoFSettingCurrentTimerField() { return *GetNativePointerField(this, "AShooterPlayerController.DoFSettingCurrentTimer"); } float& DoFSettingTargetTimerField() { return *GetNativePointerField(this, "AShooterPlayerController.DoFSettingTargetTimer"); } + TArray& PlayerInventoryItemsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.PlayerInventoryItems"); } int& LastSpawnPointIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSpawnPointID"); } int& LastSpawnRegionIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSpawnRegionIndex"); } unsigned __int64& LastTransferredPlayerIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTransferredPlayerID"); } @@ -1820,7 +2460,7 @@ struct AShooterPlayerController : APlayerController FString& LastConvertedPlayerIDStringField() { return *GetNativePointerField(this, "AShooterPlayerController.LastConvertedPlayerIDString"); } long double& LastShowExtendedInfoTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastShowExtendedInfoTime"); } bool& bHasDisplayedSplitScreenMessageField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasDisplayedSplitScreenMessage"); } - UPrimalItem * LastTransferredToRemoteInventoryItemField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTransferredToRemoteInventoryItem"); } + UPrimalItem* LastTransferredToRemoteInventoryItemField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTransferredToRemoteInventoryItem"); } TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& PendingResponseEquippedItemsQueueField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerController.PendingResponseEquippedItemsQueue"); } TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& PendingRequestEquippedItemsQueueField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerController.PendingRequestEquippedItemsQueue"); } bool& bIsViewingTributeInventoryField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsViewingTributeInventory"); } @@ -1829,9 +2469,31 @@ struct AShooterPlayerController : APlayerController TSubclassOf& CreativeModeBuffField() { return *GetNativePointerField*>(this, "AShooterPlayerController.CreativeModeBuff"); } float& PrimalStatsCacheFlushIntervalField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalStatsCacheFlushInterval"); } bool& bIsPrimalStatsTimerActiveField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsPrimalStatsTimerActive"); } + bool& bAutoPlayerField() { return *GetNativePointerField(this, "AShooterPlayerController.bAutoPlayer"); } + float& PingTraceDistanceField() { return *GetNativePointerField(this, "AShooterPlayerController.PingTraceDistance"); } + float& PingNotifyRadiusField() { return *GetNativePointerField(this, "AShooterPlayerController.PingNotifyRadius"); } + float& PingLifetimeField() { return *GetNativePointerField(this, "AShooterPlayerController.PingLifetime"); } + float& PingLifetime_DyingField() { return *GetNativePointerField(this, "AShooterPlayerController.PingLifetime_Dying"); } + float& PingCoolDownTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.PingCoolDownTime"); } + UTexture2D* PingIcon_DefaultField() { return *GetNativePointerField(this, "AShooterPlayerController.PingIcon_Default"); } + UTexture2D* PingIcon_PlayersField() { return *GetNativePointerField(this, "AShooterPlayerController.PingIcon_Players"); } + UTexture2D* PingIcon_DinosField() { return *GetNativePointerField(this, "AShooterPlayerController.PingIcon_Dinos"); } + UTexture2D* PingIcon_StructuresField() { return *GetNativePointerField(this, "AShooterPlayerController.PingIcon_Structures"); } + long double& LastPingTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastPingTime"); } + TArray& CurrentPingsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.CurrentPings"); } + bool& bDebugPOIsField() { return *GetNativePointerField(this, "AShooterPlayerController.bDebugPOIs"); } + float& POI_SearchTickInterval_CurrentField() { return *GetNativePointerField(this, "AShooterPlayerController.POI_SearchTickInterval_Current"); } + FVector2D& POI_SearchTickInterval_RandRangesField() { return *GetNativePointerField(this, "AShooterPlayerController.POI_SearchTickInterval_RandRanges"); } + float& POI_SearchRadiusField() { return *GetNativePointerField(this, "AShooterPlayerController.POI_SearchRadius"); } + long double& POI_LastSearchTickTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.POI_LastSearchTickTime"); } + TArray SpawnedPointWidgetsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SpawnedPointWidgets"); } + TArray SpawnedPointCosmeticActorsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SpawnedPointCosmeticActors"); } + TArray& NearbyPointsOfInterestField() { return *GetNativePointerField*>(this, "AShooterPlayerController.NearbyPointsOfInterest"); } + FMissionWaypointInfo& MissionWaypointField() { return *GetNativePointerField(this, "AShooterPlayerController.MissionWaypoint"); } // Bit fields + BitFieldValue bDidAutoRunCheats() { return { this, "AShooterPlayerController.bDidAutoRunCheats" }; } BitFieldValue bInfiniteAmmo() { return { this, "AShooterPlayerController.bInfiniteAmmo" }; } BitFieldValue bGodMode() { return { this, "AShooterPlayerController.bGodMode" }; } BitFieldValue bHideGun() { return { this, "AShooterPlayerController.bHideGun" }; } @@ -1840,17 +2502,31 @@ struct AShooterPlayerController : APlayerController BitFieldValue bUsePressed() { return { this, "AShooterPlayerController.bUsePressed" }; } BitFieldValue bForceCraftButtonHeld() { return { this, "AShooterPlayerController.bForceCraftButtonHeld" }; } BitFieldValue bGamepadHotbarModifierPressed() { return { this, "AShooterPlayerController.bGamepadHotbarModifierPressed" }; } + BitFieldValue bIsFirstSpawn() { return { this, "AShooterPlayerController.bIsFirstSpawn" }; } + BitFieldValue bIsRespawning() { return { this, "AShooterPlayerController.bIsRespawning" }; } + BitFieldValue bIsVRPlayer() { return { this, "AShooterPlayerController.bIsVRPlayer" }; } BitFieldValue bBattlEyePlayerHasGottenInGameFully() { return { this, "AShooterPlayerController.bBattlEyePlayerHasGottenInGameFully" }; } BitFieldValue bAdminShowAllPlayers() { return { this, "AShooterPlayerController.bAdminShowAllPlayers" }; } + BitFieldValue bNotifyPawnBuffsOfDamageEvents() { return { this, "AShooterPlayerController.bNotifyPawnBuffsOfDamageEvents" }; } + BitFieldValue bInstantHarvest() { return { this, "AShooterPlayerController.bInstantHarvest" }; } + BitFieldValue bForceAdminMeshChecking() { return { this, "AShooterPlayerController.bForceAdminMeshChecking" }; } + BitFieldValue bWantsToPing() { return { this, "AShooterPlayerController.bWantsToPing" }; } + BitFieldValue bEnablePingSystem() { return { this, "AShooterPlayerController.bEnablePingSystem" }; } + BitFieldValue bWasGamepadHotbarModifierPressed_RightShoulder() { return { this, "AShooterPlayerController.bWasGamepadHotbarModifierPressed_RightShoulder" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterPlayerController.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterPlayerController.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "AShooterPlayerController.StaticClass"); } + bool IsGameMenuVisible() { return NativeCall(this, "AShooterPlayerController.IsGameMenuVisible"); } void EnableCheats(FString Pass) { NativeCall(this, "AShooterPlayerController.EnableCheats", Pass); } - void CheckCheatsPassword_Implementation(FString * Pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword_Implementation", Pass); } - void CheckRequestSpectator_Implementation(FString * InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator_Implementation", InSpectatorPass); } + void CheckCheatsPassword_Implementation(FString* Pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword_Implementation", Pass); } + void AutoCycle(float Duration) { NativeCall(this, "AShooterPlayerController.AutoCycle", Duration); } + void RequestSpectator(FString InSpectatorPass) { NativeCall(this, "AShooterPlayerController.RequestSpectator", InSpectatorPass); } + void CheckRequestSpectator_Implementation(FString* InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator_Implementation", InSpectatorPass); } + void StopSpectating() { NativeCall(this, "AShooterPlayerController.StopSpectating"); } void ServerStopSpectating_Implementation() { NativeCall(this, "AShooterPlayerController.ServerStopSpectating_Implementation"); } - TArray * GetCheatsCommands(TArray * result) { return NativeCall *, TArray *>(this, "AShooterPlayerController.GetCheatsCommands", result); } + TArray* GetCheatsCommands(TArray* result) { return NativeCall*, TArray*>(this, "AShooterPlayerController.GetCheatsCommands", result); } void SetupInputComponent() { NativeCall(this, "AShooterPlayerController.SetupInputComponent"); } void OnLevelView() { NativeCall(this, "AShooterPlayerController.OnLevelView"); } void LevelView() { NativeCall(this, "AShooterPlayerController.LevelView"); } @@ -1863,12 +2539,15 @@ struct AShooterPlayerController : APlayerController void ClientTeleportSpectator_Implementation(FVector Location, unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ClientTeleportSpectator_Implementation", Location, PlayerID); } void ForceCraftPressed() { NativeCall(this, "AShooterPlayerController.ForceCraftPressed"); } void ForceCraftReleased() { NativeCall(this, "AShooterPlayerController.ForceCraftReleased"); } + void StartWhispering() { NativeCall(this, "AShooterPlayerController.StartWhispering"); } + void StartYelling() { NativeCall(this, "AShooterPlayerController.StartYelling"); } + void StartTalkingWrapper() { NativeCall(this, "AShooterPlayerController.StartTalkingWrapper"); } void StopTalkingWrapper() { NativeCall(this, "AShooterPlayerController.StopTalkingWrapper"); } void ToggleHUDHidden() { NativeCall(this, "AShooterPlayerController.ToggleHUDHidden"); } void OnUseItemSlotForStructure(int ItemSlotNumber) { NativeCall(this, "AShooterPlayerController.OnUseItemSlotForStructure", ItemSlotNumber); } void OnUsePress(bool bFromGamepad) { NativeCall(this, "AShooterPlayerController.OnUsePress", bFromGamepad); } - bool GetAllAimedHarvestActors(float MaxDistance, TArray * OutHarvestActors, TArray * OutHarvestComponents, TArray * OutHitBodyIndices) { return NativeCall *, TArray *, TArray *>(this, "AShooterPlayerController.GetAllAimedHarvestActors", MaxDistance, OutHarvestActors, OutHarvestComponents, OutHitBodyIndices); } - AActor * GetAimedUseActor(UActorComponent ** UseComponent, int * hitBodyIndex) { return NativeCall(this, "AShooterPlayerController.GetAimedUseActor", UseComponent, hitBodyIndex); } + bool GetAllAimedHarvestActors(float MaxDistance, TArray* OutHarvestActors, TArray* OutHarvestComponents, TArray* OutHitBodyIndices) { return NativeCall*, TArray*, TArray*>(this, "AShooterPlayerController.GetAllAimedHarvestActors", MaxDistance, OutHarvestActors, OutHarvestComponents, OutHitBodyIndices); } + AActor* GetAimedUseActor(UActorComponent** UseComponent, int* hitBodyIndex, bool bForceUseActorLocation) { return NativeCall(this, "AShooterPlayerController.GetAimedUseActor", UseComponent, hitBodyIndex, bForceUseActorLocation); } void OnUseRelease(bool bFromGamepad) { NativeCall(this, "AShooterPlayerController.OnUseRelease", bFromGamepad); } void ActivateMultiUseSelection(bool bIsFromUseRelease) { NativeCall(this, "AShooterPlayerController.ActivateMultiUseSelection", bIsFromUseRelease); } void CancelMultiUseSelection() { NativeCall(this, "AShooterPlayerController.CancelMultiUseSelection"); } @@ -1895,6 +2574,7 @@ struct AShooterPlayerController : APlayerController void EndEmoteSelection() { NativeCall(this, "AShooterPlayerController.EndEmoteSelection"); } void TriggerPlayerAction(int ActionIndex) { NativeCall(this, "AShooterPlayerController.TriggerPlayerAction", ActionIndex); } void ShowMyInventory() { NativeCall(this, "AShooterPlayerController.ShowMyInventory"); } + void ShowMyAdminManager() { NativeCall(this, "AShooterPlayerController.ShowMyAdminManager"); } void ShowMyCraftables() { NativeCall(this, "AShooterPlayerController.ShowMyCraftables"); } void ShowTribeManager() { NativeCall(this, "AShooterPlayerController.ShowTribeManager"); } void ShowGlobalChat() { NativeCall(this, "AShooterPlayerController.ShowGlobalChat"); } @@ -1902,6 +2582,7 @@ struct AShooterPlayerController : APlayerController void ShowAllianceChat() { NativeCall(this, "AShooterPlayerController.ShowAllianceChat"); } void ShowLocalChat() { NativeCall(this, "AShooterPlayerController.ShowLocalChat"); } void ShowTutorial(int TutorialIndex, bool bForceDisplay) { NativeCall(this, "AShooterPlayerController.ShowTutorial", TutorialIndex, bForceDisplay); } + void HideTutorial(int TutorialIndex) { NativeCall(this, "AShooterPlayerController.HideTutorial", TutorialIndex); } void ClearTutorials() { NativeCall(this, "AShooterPlayerController.ClearTutorials"); } void ToggleAutoChat() { NativeCall(this, "AShooterPlayerController.ToggleAutoChat"); } void ScrollChatDown() { NativeCall(this, "AShooterPlayerController.ScrollChatDown"); } @@ -1915,11 +2596,13 @@ struct AShooterPlayerController : APlayerController void ToggleWeaponAccessory() { NativeCall(this, "AShooterPlayerController.ToggleWeaponAccessory"); } void BeginPlay() { NativeCall(this, "AShooterPlayerController.BeginPlay"); } void SaveProfile() { NativeCall(this, "AShooterPlayerController.SaveProfile"); } + void LoadProfile(bool ForceReload) { NativeCall(this, "AShooterPlayerController.LoadProfile", ForceReload); } void ClientNotifyPaintFinished_Implementation(bool bSuccess) { NativeCall(this, "AShooterPlayerController.ClientNotifyPaintFinished_Implementation", bSuccess); } bool IsValidUnStasisCaster() { return NativeCall(this, "AShooterPlayerController.IsValidUnStasisCaster"); } + bool SameLinkedId(__int64 value) { return NativeCall(this, "AShooterPlayerController.SameLinkedId", value); } void ServerSetSpectatorLocation_Implementation(FVector NewLoc) { NativeCall(this, "AShooterPlayerController.ServerSetSpectatorLocation_Implementation", NewLoc); } - static void TickStasisForCharacter(UWorld * theWorld, AShooterCharacter * Character, FVector ActorLocation) { NativeCall(nullptr, "AShooterPlayerController.TickStasisForCharacter", theWorld, Character, ActorLocation); } - void SetPlayer(UPlayer * InPlayer) { NativeCall(this, "AShooterPlayerController.SetPlayer", InPlayer); } + static void TickStasisForCharacter(UWorld* theWorld, APrimalCharacter* Character, FVector ActorLocation) { NativeCall(nullptr, "AShooterPlayerController.TickStasisForCharacter", theWorld, Character, ActorLocation); } + void SetPlayer(UPlayer* InPlayer) { NativeCall(this, "AShooterPlayerController.SetPlayer", InPlayer); } void UnFreeze() { NativeCall(this, "AShooterPlayerController.UnFreeze"); } void ServerCheckUnfreeze_Implementation() { NativeCall(this, "AShooterPlayerController.ServerCheckUnfreeze_Implementation"); } void DoServerCheckUnfreeze_Implementation() { NativeCall(this, "AShooterPlayerController.DoServerCheckUnfreeze_Implementation"); } @@ -1927,8 +2610,6 @@ struct AShooterPlayerController : APlayerController void EnableSpectator() { NativeCall(this, "AShooterPlayerController.EnableSpectator"); } void DisableSpectator() { NativeCall(this, "AShooterPlayerController.DisableSpectator"); } void OnDisableSpectator_Implementation() { NativeCall(this, "AShooterPlayerController.OnDisableSpectator_Implementation"); } - void ServerSaveWorld_Implementation() { NativeCall(this, "AShooterPlayerController.ServerSaveWorld_Implementation"); } - void ServerLoadWorld_Implementation() { NativeCall(this, "AShooterPlayerController.ServerLoadWorld_Implementation"); } void CheckforOrbiting() { NativeCall(this, "AShooterPlayerController.CheckforOrbiting"); } bool CheckforOrbitingInstantaneously() { return NativeCall(this, "AShooterPlayerController.CheckforOrbitingInstantaneously"); } void OnToggleInGameMenu() { NativeCall(this, "AShooterPlayerController.OnToggleInGameMenu"); } @@ -1940,6 +2621,7 @@ struct AShooterPlayerController : APlayerController void SpectatorTurn(float Val) { NativeCall(this, "AShooterPlayerController.SpectatorTurn", Val); } void TurnInput(float Val) { NativeCall(this, "AShooterPlayerController.TurnInput", Val); } void LookInput(float Val) { NativeCall(this, "AShooterPlayerController.LookInput", Val); } + void BPClientUnlockExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.BPClientUnlockExplorerNote", ExplorerNoteIndex); } void OnStartFire() { NativeCall(this, "AShooterPlayerController.OnStartFire"); } void OnStopFire() { NativeCall(this, "AShooterPlayerController.OnStopFire"); } void OnStartGamepadRightFire() { NativeCall(this, "AShooterPlayerController.OnStartGamepadRightFire"); } @@ -1949,173 +2631,221 @@ struct AShooterPlayerController : APlayerController void OnStopTargeting() { NativeCall(this, "AShooterPlayerController.OnStopTargeting"); } void OnStartGamepadLeftFire() { NativeCall(this, "AShooterPlayerController.OnStartGamepadLeftFire"); } void OnStopGamepadLeftFire() { NativeCall(this, "AShooterPlayerController.OnStopGamepadLeftFire"); } - void ServerRequestPlaceStructure_Implementation(int StructureIndex, FVector BuildLocation, FRotator BuildRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, APrimalDinoCharacter * DinoCharacter, FName BoneName, FItemNetID PlaceUsingItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle) { NativeCall(this, "AShooterPlayerController.ServerRequestPlaceStructure_Implementation", StructureIndex, BuildLocation, BuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, PlaceUsingItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle); } + void ServerRequestPlaceStructure_Implementation(int StructureIndex, FVector BuildLocation, FRotator BuildRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, APrimalDinoCharacter* DinoCharacter, FName BoneName, FItemNetID PlaceUsingItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle) { NativeCall(this, "AShooterPlayerController.ServerRequestPlaceStructure_Implementation", StructureIndex, BuildLocation, BuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, PlaceUsingItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle); } + void DebugStructures() { NativeCall(this, "AShooterPlayerController.DebugStructures"); } + void SetGodMode(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetGodMode", bEnable); } void SetCinematicMode(bool bInCinematicMode, bool bHidePlayer, bool bAffectsHUD, bool bAffectsMovement, bool bAffectsTurning) { NativeCall(this, "AShooterPlayerController.SetCinematicMode", bInCinematicMode, bHidePlayer, bAffectsHUD, bAffectsMovement, bAffectsTurning); } void PawnLeavingGame() { NativeCall(this, "AShooterPlayerController.PawnLeavingGame"); } void InitInputSystem() { NativeCall(this, "AShooterPlayerController.InitInputSystem"); } void FlushPressedKeys() { NativeCall(this, "AShooterPlayerController.FlushPressedKeys"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterPlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterPlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } void EnemyInVisible(bool Invisible) { NativeCall(this, "AShooterPlayerController.EnemyInVisible", Invisible); } - void ServerSuicide_Implementation() { NativeCall(this, "AShooterPlayerController.ServerSuicide_Implementation"); } + bool HasGodMode() { return NativeCall(this, "AShooterPlayerController.HasGodMode"); } void ServerRemovePassenger_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRemovePassenger_Implementation"); } - void ClientTeamMessage_Implementation(APlayerState * SenderPlayerState, FString * S, FName Type, float MsgLifeTime) { NativeCall(this, "AShooterPlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterPlayerController.DrawHUD", HUD); } - void SetControlRotation(FRotator * NewRotation) { NativeCall(this, "AShooterPlayerController.SetControlRotation", NewRotation); } - void AcknowledgePossession(APawn * P) { NativeCall(this, "AShooterPlayerController.AcknowledgePossession", P); } + void ClientTeamMessage_Implementation(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "AShooterPlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } + AShooterHUD* GetShooterHUD() { return NativeCall(this, "AShooterPlayerController.GetShooterHUD"); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterPlayerController.DrawHUD", HUD); } + UShooterPersistentUser* GetPersistentUser() { return NativeCall(this, "AShooterPlayerController.GetPersistentUser"); } + void ShowInGameMenu() { NativeCall(this, "AShooterPlayerController.ShowInGameMenu"); } + void SetControlRotation(FRotator* NewRotation) { NativeCall(this, "AShooterPlayerController.SetControlRotation", NewRotation); } + void AcknowledgePossession(APawn* P) { NativeCall(this, "AShooterPlayerController.AcknowledgePossession", P); } void LeaveMeAlone() { NativeCall(this, "AShooterPlayerController.LeaveMeAlone"); } void InfiniteStats() { NativeCall(this, "AShooterPlayerController.InfiniteStats"); } + void SetInfiniteStats(const bool bInfinite) { NativeCall(this, "AShooterPlayerController.SetInfiniteStats", bInfinite); } void Destroyed() { NativeCall(this, "AShooterPlayerController.Destroyed"); } void PostInitializeComponents() { NativeCall(this, "AShooterPlayerController.PostInitializeComponents"); } void ServerGetMessageOfTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerGetMessageOfTheDay_Implementation"); } - void ClientGetMessageOfTheDay_Implementation(FString * Message) { NativeCall(this, "AShooterPlayerController.ClientGetMessageOfTheDay_Implementation", Message); } + void ClientGetMessageOfTheDay_Implementation(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientGetMessageOfTheDay_Implementation", Message); } void ServerReadMessageOFTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerReadMessageOFTheDay_Implementation"); } - void ClientStartReceivingActorItems_Implementation(UPrimalInventoryComponent * forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientStartReceivingActorItems_Implementation", forInventory, bEquippedItems); } - void ClientFinishedReceivingActorItems_Implementation(UPrimalInventoryComponent * forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems_Implementation", forInventory, bEquippedItems); } - void ClientAddActorItem_Implementation(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } - void ClientAddActorItemToFolder_Implementation(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString * ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } - void ClientAddItemToArk_Implementation(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bFromLoad) { NativeCall(this, "AShooterPlayerController.ClientAddItemToArk_Implementation", forInventory, itemInfo, bFromLoad); } - void ClientAddFolderToInventoryComponent_Implementation(UPrimalInventoryComponent * forInventory, FString * NewCustomFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ClientAddFolderToInventoryComponent_Implementation", forInventory, NewCustomFolderName, InventoryCompType); } - void ClientLoadArkItems_Implementation(UPrimalInventoryComponent * forInventory, TArray * itemInfos) { NativeCall *>(this, "AShooterPlayerController.ClientLoadArkItems_Implementation", forInventory, itemInfos); } - void ClientFinishedLoadArkItems_Implementation(UPrimalInventoryComponent * forInventory) { NativeCall(this, "AShooterPlayerController.ClientFinishedLoadArkItems_Implementation", forInventory); } - void ClientInsertActorItem_Implementation(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem_Implementation", forInventory, itemInfo, InsertAfterItemID); } - void ClientRemoveActorItem_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID, bool showHUDMessage) { NativeCall(this, "AShooterPlayerController.ClientRemoveActorItem_Implementation", forInventory, itemID, showHUDMessage); } - void ClientSwapActorItems_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ClientSwapActorItems_Implementation", forInventory, itemID1, itemID2); } - void ClientUpdateInventoryCraftQueue_Implementation(UPrimalInventoryComponent * forInventory, TArray * CraftQueueEntries) { NativeCall *>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue_Implementation", forInventory, CraftQueueEntries); } - void ServerRequestActorItems_Implementation(UPrimalInventoryComponent * forInventory, bool bInventoryItems, bool bIsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ServerRequestActorItems_Implementation", forInventory, bInventoryItems, bIsFirstSpawn); } + void ClientStartReceivingActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientStartReceivingActorItems_Implementation", forInventory, bEquippedItems); } + void ClientFinishedReceivingActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems_Implementation", forInventory, bEquippedItems); } + void ClientAddActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } + void ClientAddActorItemToFolder_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString* ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } + void ClientAddItemToArk_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bFromLoad) { NativeCall(this, "AShooterPlayerController.ClientAddItemToArk_Implementation", forInventory, itemInfo, bFromLoad); } + void ClientAddFolderToInventoryComponent_Implementation(UPrimalInventoryComponent* forInventory, FString* NewCustomFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ClientAddFolderToInventoryComponent_Implementation", forInventory, NewCustomFolderName, InventoryCompType); } + void ClientLoadArkItems_Implementation(UPrimalInventoryComponent* forInventory, TArray* itemInfos, bool bClear, bool bFinalBatch) { NativeCall*, bool, bool>(this, "AShooterPlayerController.ClientLoadArkItems_Implementation", forInventory, itemInfos, bClear, bFinalBatch); } + void ClientFinishedLoadArkItems_Implementation(UPrimalInventoryComponent* forInventory) { NativeCall(this, "AShooterPlayerController.ClientFinishedLoadArkItems_Implementation", forInventory); } + void ClientInsertActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem_Implementation", forInventory, itemInfo, InsertAfterItemID); } + void ClientRemoveActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, bool showHUDMessage) { NativeCall(this, "AShooterPlayerController.ClientRemoveActorItem_Implementation", forInventory, itemID, showHUDMessage); } + void ClientSwapActorItems_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ClientSwapActorItems_Implementation", forInventory, itemID1, itemID2); } + void ClientUpdateInventoryCraftQueue_Implementation(UPrimalInventoryComponent* forInventory, TArray* CraftQueueEntries) { NativeCall*>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue_Implementation", forInventory, CraftQueueEntries); } + void ServerRequestActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bInventoryItems, bool bIsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ServerRequestActorItems_Implementation", forInventory, bInventoryItems, bIsFirstSpawn); } + UPrimalInventoryComponent* GetPlayerInventory() { return NativeCall(this, "AShooterPlayerController.GetPlayerInventory"); } void ServerRemovePawnItem_Implementation(FItemNetID itemID, bool bSecondryAction) { NativeCall(this, "AShooterPlayerController.ServerRemovePawnItem_Implementation", itemID, bSecondryAction); } void ServerEquipPawnItem_Implementation(FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipPawnItem_Implementation", itemID); } - void ServerDeleteCustomFolder_Implementation(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType); } - void ServerAddItemToCustomFolder_Implementation(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } - void ServerDeleteItemFromCustomFolder_Implementation(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } - void ServerCraftItem_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem_Implementation", inventoryComp, itemID); } - void ServerRepairItem_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem_Implementation", inventoryComp, itemID); } - void ServerRequestInventorySwapItems_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems_Implementation", inventoryComp, itemID1, itemID2); } - void ServerRequestInventoryUseItemWithItem_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem_Implementation", inventoryComp, itemID1, itemID2, AdditionalData); } - void ServerRequestInventoryUseItemWithActor_Implementation(AActor * anActor, UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor_Implementation", anActor, inventoryComp, itemID1, AdditionalData); } - void ServerRequestInventoryUseItem_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem_Implementation", inventoryComp, itemID); } - void ServerActorViewRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorViewRemoteInventory_Implementation", inventoryComp); } - void ServerActorCloseRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory_Implementation", inventoryComp); } - void ServerDropFromRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory_Implementation", inventoryComp, itemID); } - void ServerInventoryClearCraftQueue_Implementation(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerInventoryClearCraftQueue_Implementation", inventoryComp); } - void ServerRequestRemoveItemSkin_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkin_Implementation", inventoryComp, itemID); } - void ServerRequestRemoveItemSkinOnly_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkinOnly_Implementation", inventoryComp, itemID); } - void ServerRequestRemoveWeaponAccessoryOnly_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponAccessoryOnly_Implementation", inventoryComp, itemID); } - void ServerRequestRemoveWeaponClipAmmo_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo_Implementation", inventoryComp, itemID); } - void ServerEquipToRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory_Implementation", inventoryComp, itemID); } - void ServerTransferFromRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory_Implementation", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } - void ServerTransferAllFromRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FString * CurrentCustomFolderFilter, FString * CurrentNameFilter, FString * CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } - void ServerTransferAllToRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FString * CurrentCustomFolderFilter, FString * CurrentNameFilter, FString * CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } - void ServerTransferToRemoteInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory_Implementation", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } + void ServerDeleteCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType); } + void ServerAddItemToCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerDeleteItemFromCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerCraftItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem_Implementation", inventoryComp, itemID); } + void ServerRepairItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem_Implementation", inventoryComp, itemID); } + void ServerRequestInventorySwapItems_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems_Implementation", inventoryComp, itemID1, itemID2); } + void ServerRequestInventoryUseItemWithItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem_Implementation", inventoryComp, itemID1, itemID2, AdditionalData); } + void ServerRequestInventoryUseItemWithActor_Implementation(AActor* anActor, UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor_Implementation", anActor, inventoryComp, itemID1, AdditionalData); } + void ServerRequestInventoryUseItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem_Implementation", inventoryComp, itemID); } + void ServerActorViewRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorViewRemoteInventory_Implementation", inventoryComp); } + void ServerActorCloseRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory_Implementation", inventoryComp); } + void ServerDropFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory_Implementation", inventoryComp, itemID); } + void ServerInventoryClearCraftQueue_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerInventoryClearCraftQueue_Implementation", inventoryComp); } + void ServerRequestRemoveItemSkin_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkin_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveItemSkinOnly_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkinOnly_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveWeaponAccessoryOnly_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponAccessoryOnly_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveWeaponClipAmmo_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo_Implementation", inventoryComp, itemID); } + void ServerEquipToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory_Implementation", inventoryComp, itemID); } + void ServerTransferFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory_Implementation", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } + void ServerTransferAllFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + bool CheckIsOnTransferAllCooldown(UPrimalInventoryComponent* inventoryComp) { return NativeCall(this, "AShooterPlayerController.CheckIsOnTransferAllCooldown", inventoryComp); } + void ServerTransferAllToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory_Implementation", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } + void ServerGrindItemInRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool grindStack) { NativeCall(this, "AShooterPlayerController.ServerGrindItemInRemoteInventory_Implementation", inventoryComp, itemID, grindStack); } void ClientFailedToAddItemFromArkInventory_Implementation() { NativeCall(this, "AShooterPlayerController.ClientFailedToAddItemFromArkInventory_Implementation"); } - void ServerAddItemFromArkInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemFromArkInventory_Implementation", inventoryComp, itemID, requestedQuantity); } + void ServerAddItemFromArkInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemFromArkInventory_Implementation", inventoryComp, itemID, requestedQuantity); } void OnRefreshSteamInventoryFinished(bool bSuccess, unsigned __int64 SteamID) { NativeCall(this, "AShooterPlayerController.OnRefreshSteamInventoryFinished", bSuccess, SteamID); } void ServerTakeItemFromArkInventoryAfterRefresh() { NativeCall(this, "AShooterPlayerController.ServerTakeItemFromArkInventoryAfterRefresh"); } - void ClientRemoveItemFromArk_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID RemovedItemID) { NativeCall(this, "AShooterPlayerController.ClientRemoveItemFromArk_Implementation", forInventory, RemovedItemID); } - void UploadCharaterDataToArk(UPrimalInventoryComponent * InvComp) { NativeCall(this, "AShooterPlayerController.UploadCharaterDataToArk", InvComp); } - void ServerRequestCreateNewPlayerWithArkData(TArray * PlayerArkDataBytes, unsigned __int64 TribeID) { NativeCall *, unsigned __int64>(this, "AShooterPlayerController.ServerRequestCreateNewPlayerWithArkData", PlayerArkDataBytes, TribeID); } - void ServerUploadCurrentCharacterAndItems_Implementation(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCurrentCharacterAndItems_Implementation", inventoryComp); } + void ClientRemoveItemFromArk_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID RemovedItemID) { NativeCall(this, "AShooterPlayerController.ClientRemoveItemFromArk_Implementation", forInventory, RemovedItemID); } + void UploadCharaterDataToArk(UPrimalInventoryComponent* InvComp) { NativeCall(this, "AShooterPlayerController.UploadCharaterDataToArk", InvComp); } + void ServerRequestCreateNewPlayerWithArkData(TArray* PlayerArkDataBytes, unsigned __int64 TribeID) { NativeCall*, unsigned __int64>(this, "AShooterPlayerController.ServerRequestCreateNewPlayerWithArkData", PlayerArkDataBytes, TribeID); } + void ServerSetItemBalloonLocation_Implementation(APrimalStructureMovingContainer* ItemBalloon, FPrimalMapMarkerEntryData MapMarker) { NativeCall(this, "AShooterPlayerController.ServerSetItemBalloonLocation_Implementation", ItemBalloon, MapMarker); } + void AddDinoToMap(APrimalDinoCharacter* Dino) { NativeCall(this, "AShooterPlayerController.AddDinoToMap", Dino); } + void RemoveDinoFromMap(APrimalDinoCharacter* Dino) { NativeCall(this, "AShooterPlayerController.RemoveDinoFromMap", Dino); } + void ServerUploadCurrentCharacterAndItems_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCurrentCharacterAndItems_Implementation", inventoryComp); } void ClientOnCurrentCharacterAndItemsUploaded_Implementation(unsigned __int64 TransferringPlayerDataId) { NativeCall(this, "AShooterPlayerController.ClientOnCurrentCharacterAndItemsUploaded_Implementation", TransferringPlayerDataId); } void OnCurrentCharacterAndItemsUploaded(bool Success) { NativeCall(this, "AShooterPlayerController.OnCurrentCharacterAndItemsUploaded", Success); } - void ServerUploadCharaterDataToArk_Implementation(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCharaterDataToArk_Implementation", inventoryComp); } - void UploadCharacterPlayerDataToArk(TArray * PlayerDataBytes, FString PlayerName, TArray PlayerStats, unsigned __int64 PlayerDataId, bool WithItems, unsigned int ItemCount) { NativeCall *, FString, TArray, unsigned __int64, bool, unsigned int>(this, "AShooterPlayerController.UploadCharacterPlayerDataToArk", PlayerDataBytes, PlayerName, PlayerStats, PlayerDataId, WithItems, ItemCount); } + void ServerUploadCharaterDataToArk_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCharaterDataToArk_Implementation", inventoryComp); } + void UploadCharacterPlayerDataToArk(TArray* PlayerDataBytes, FString PlayerName, TArray PlayerStats, unsigned __int64 PlayerDataId, bool WithItems, unsigned int ItemCount) { NativeCall*, FString, TArray, unsigned __int64, bool, unsigned int>(this, "AShooterPlayerController.UploadCharacterPlayerDataToArk", PlayerDataBytes, PlayerName, PlayerStats, PlayerDataId, WithItems, ItemCount); } void RemoveInvetoryItem(unsigned int ItemID) { NativeCall(this, "AShooterPlayerController.RemoveInvetoryItem", ItemID); } + FVector* GetViewLocation(FVector* result) { return NativeCall(this, "AShooterPlayerController.GetViewLocation", result); } + void ToggleHud() { NativeCall(this, "AShooterPlayerController.ToggleHud"); } bool IsHudVisible() { return NativeCall(this, "AShooterPlayerController.IsHudVisible"); } - AShooterCharacter * GetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacter"); } - void SetPawn(APawn * InPawn) { NativeCall(this, "AShooterPlayerController.SetPawn", InPawn); } - void ServerRepeatMultiUse_Implementation(UObject * ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerRepeatMultiUse_Implementation", ForObject, useIndex); } - void ServerMultiUse_Implementation(UObject * ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse_Implementation", ForObject, useIndex); } - void ClientDoMultiUse_Implementation(UObject * ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse_Implementation", ForObject, useIndex); } - void ClientUpdateItemQuantity_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID, int ItemQuantity) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemQuantity_Implementation", forInventory, itemID, ItemQuantity); } - void ClientUpdateItemDurability_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID, float ItemDurability) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemDurability_Implementation", forInventory, itemID, ItemDurability); } - void ClientUpdateItemWeaponClipAmmo_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID, int Ammo) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemWeaponClipAmmo_Implementation", forInventory, itemID, Ammo); } - void ClientUsedActorItem_Implementation(UPrimalInventoryComponent * forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientUsedActorItem_Implementation", forInventory, itemID); } + void ToggleGun() { NativeCall(this, "AShooterPlayerController.ToggleGun"); } + AShooterCharacter* GetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacter"); } + void SetPawn(APawn* InPawn) { NativeCall(this, "AShooterPlayerController.SetPawn", InPawn); } + void SetCharacterVivoxUsername(FString* InVivoxUsername) { NativeCall(this, "AShooterPlayerController.SetCharacterVivoxUsername", InVivoxUsername); } + void MulticastCharacterVivoxUsername() { NativeCall(this, "AShooterPlayerController.MulticastCharacterVivoxUsername"); } + void ServerRepeatMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerRepeatMultiUse_Implementation", ForObject, useIndex); } + void ServerMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse_Implementation", ForObject, useIndex); } + void ClientDoMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse_Implementation", ForObject, useIndex); } + void ClientUpdateItemQuantity_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int ItemQuantity) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemQuantity_Implementation", forInventory, itemID, ItemQuantity); } + void ClientUpdateItemDurability_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, float ItemDurability) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemDurability_Implementation", forInventory, itemID, ItemDurability); } + void ClientUpdateItemWeaponClipAmmo_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int Ammo) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemWeaponClipAmmo_Implementation", forInventory, itemID, Ammo); } + void ClientUsedActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientUsedActorItem_Implementation", forInventory, itemID); } void UnPossess() { NativeCall(this, "AShooterPlayerController.UnPossess"); } - void Possess(APawn * inPawn) { NativeCall(this, "AShooterPlayerController.Possess", inPawn); } + void Possess(APawn* inPawn) { NativeCall(this, "AShooterPlayerController.Possess", inPawn); } void ScheduleTryLoadProfile() { NativeCall(this, "AShooterPlayerController.ScheduleTryLoadProfile"); } void TryLoadProfile() { NativeCall(this, "AShooterPlayerController.TryLoadProfile"); } void UpdateRotation(float DeltaTime) { NativeCall(this, "AShooterPlayerController.UpdateRotation", DeltaTime); } + bool IsInputPressed(FName InputName, FName GamepadInputName) { return NativeCall(this, "AShooterPlayerController.IsInputPressed", InputName, GamepadInputName); } + bool IsJumpInputPressed() { return NativeCall(this, "AShooterPlayerController.IsJumpInputPressed"); } + bool IsAltFireInputPressed() { return NativeCall(this, "AShooterPlayerController.IsAltFireInputPressed"); } bool CanDoPlayerCharacterInput(bool bIgnoreCurrentWeapon, bool bWeaponForcesMountedWeaponry) { return NativeCall(this, "AShooterPlayerController.CanDoPlayerCharacterInput", bIgnoreCurrentWeapon, bWeaponForcesMountedWeaponry); } - AActor * GetPlayerControllerViewerOverride() { return NativeCall(this, "AShooterPlayerController.GetPlayerControllerViewerOverride"); } - void ForceTame(bool bCheatTame, APrimalDinoCharacter * Dino) { NativeCall(this, "AShooterPlayerController.ForceTame", bCheatTame, Dino); } + AActor* GetPlayerControllerViewerOverride() { return NativeCall(this, "AShooterPlayerController.GetPlayerControllerViewerOverride"); } + void ForceTame(bool bCheatTame, APrimalDinoCharacter* Dino) { NativeCall(this, "AShooterPlayerController.ForceTame", bCheatTame, Dino); } void SetImprintQuality(float ImprintingQuality) { NativeCall(this, "AShooterPlayerController.SetImprintQuality", ImprintingQuality); } + APrimalDinoCharacter* SetTamingEffectivenessModifier(float TamingEffectiveness) { return NativeCall(this, "AShooterPlayerController.SetTamingEffectivenessModifier", TamingEffectiveness); } void GiveToMe() { NativeCall(this, "AShooterPlayerController.GiveToMe"); } - void GiveActorToMe(AActor * anAct, bool bNotifyNetwork) { NativeCall(this, "AShooterPlayerController.GiveActorToMe", anAct, bNotifyNetwork); } - void ServerRequestLevelUp_Implementation(UPrimalCharacterStatusComponent * forStatusComp, EPrimalCharacterStatusValue::Type ValueType) { NativeCall(this, "AShooterPlayerController.ServerRequestLevelUp_Implementation", forStatusComp, ValueType); } + void GiveActorToMe(AActor* anAct, bool bNotifyNetwork) { NativeCall(this, "AShooterPlayerController.GiveActorToMe", anAct, bNotifyNetwork); } + void ServerRequestLevelUp_Implementation(UPrimalCharacterStatusComponent* forStatusComp, EPrimalCharacterStatusValue::Type ValueType) { NativeCall(this, "AShooterPlayerController.ServerRequestLevelUp_Implementation", forStatusComp, ValueType); } void AddExperience(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "AShooterPlayerController.AddExperience", HowMuch, fromTribeShare, bPreventSharingWithTribe); } - void ServerRequestSetPin_Implementation(UObject * forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin_Implementation", forTarget, PinValue, bIsSetting, TheCustomIndex); } + void ServerRequestSetPin_Implementation(UObject* forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin_Implementation", forTarget, PinValue, bIsSetting, TheCustomIndex); } void ClientNotifyTribeXP_Implementation(float HowMuch) { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeXP_Implementation", HowMuch); } - void ClientHUDNotificationTypeParams_Implementation(int MessageType, int MessageParam1, int MessageParam2, UObject * ObjectParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams_Implementation", MessageType, MessageParam1, MessageParam2, ObjectParam1); } + void ClientHUDNotificationTypeParams_Implementation(int MessageType, int MessageParam1, int MessageParam2, UObject* ObjectParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams_Implementation", MessageType, MessageParam1, MessageParam2, ObjectParam1); } + AShooterPlayerState* GetShooterPlayerState() { return NativeCall(this, "AShooterPlayerController.GetShooterPlayerState"); } void ServerRequestRespawnAtPoint_Implementation(int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestRespawnAtPoint_Implementation", spawnPointID, spawnRegionIndex); } void ServerRequestFastTravelToPoint_Implementation(int fromSpawnPointID, int spawnPointID) { NativeCall(this, "AShooterPlayerController.ServerRequestFastTravelToPoint_Implementation", fromSpawnPointID, spawnPointID); } - void ServerUploadDino_Implementation(APrimalDinoCharacter * DownloadedDino) { NativeCall(this, "AShooterPlayerController.ServerUploadDino_Implementation", DownloadedDino); } - void ServerRequestRemoteDropAllItems_Implementation(UPrimalInventoryComponent * inventoryComp, FString * CurrentCustomFolderFilter, FString * CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoteDropAllItems_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter); } - void ServerRequestDropAllItems_Implementation(FString * CurrentCustomFolderFilter, FString * CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestDropAllItems_Implementation", CurrentCustomFolderFilter, CurrentNameFilter); } + bool ServerDownloadDino(FARKTributeDino DownloadedDino) { return NativeCall(this, "AShooterPlayerController.ServerDownloadDino", DownloadedDino); } + void SendDinoToServer(FARKTributeDino DownloadedDino) { NativeCall(this, "AShooterPlayerController.SendDinoToServer", DownloadedDino); } + void ServerUploadDino_Implementation(APrimalDinoCharacter* DownloadedDino) { NativeCall(this, "AShooterPlayerController.ServerUploadDino_Implementation", DownloadedDino); } + void ServerRequestRemoteDropAllItems_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoteDropAllItems_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestDropAllItems_Implementation(FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestDropAllItems_Implementation", CurrentCustomFolderFilter, CurrentNameFilter); } void ClientShowSpawnUI_Implementation(float Delay) { NativeCall(this, "AShooterPlayerController.ClientShowSpawnUI_Implementation", Delay); } void ClientShowCharacterCreationUI_Implementation(bool bShowDownloadCharacter) { NativeCall(this, "AShooterPlayerController.ClientShowCharacterCreationUI_Implementation", bShowDownloadCharacter); } - AActor * SpawnActor(FString * blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, bool bDoDeferBeginPlay) { return NativeCall(this, "AShooterPlayerController.SpawnActor", blueprintPath, spawnDistance, spawnYOffset, ZOffset, bDoDeferBeginPlay); } - bool GiveItem(TArray * outItems, FString * blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint, bool bAutoEquip) { return NativeCall *, FString *, int, float, bool, bool>(this, "AShooterPlayerController.GiveItem", outItems, blueprintPath, quantityOverride, qualityOverride, bForceBlueprint, bAutoEquip); } - //bool GiveItem(FString * blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveItem", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } - bool GiveFast(FName * blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveFast", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } - bool GiveSlotItem(FString * blueprintPath, int slotNum, int quantityOverride) { return NativeCall(this, "AShooterPlayerController.GiveSlotItem", blueprintPath, slotNum, quantityOverride); } + AActor* SpawnActor(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, bool bDoDeferBeginPlay) { return NativeCall(this, "AShooterPlayerController.SpawnActor", blueprintPath, spawnDistance, spawnYOffset, ZOffset, bDoDeferBeginPlay); } + bool GiveItem(TArray* outItems, FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint, bool bAutoEquip, float MinRandomQuality) { return NativeCall*, FString*, int, float, bool, bool, float>(this, "AShooterPlayerController.GiveItem", outItems, blueprintPath, quantityOverride, qualityOverride, bForceBlueprint, bAutoEquip, MinRandomQuality); } + bool GiveFast(FName* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint, float MinRandomQuality) { return NativeCall(this, "AShooterPlayerController.GiveFast", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint, MinRandomQuality); } + bool GiveSlotItem(FString* blueprintPath, int slotNum, int quantityOverride) { return NativeCall(this, "AShooterPlayerController.GiveSlotItem", blueprintPath, slotNum, quantityOverride); } bool GiveSlotItemNum(int masterIndexNum, int slotNum, int quantityOverride) { return NativeCall(this, "AShooterPlayerController.GiveSlotItemNum", masterIndexNum, slotNum, quantityOverride); } bool GiveItemNum(int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveItemNum", masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } - FString * GetUniqueNetIdAsString(FString * result) { return NativeCall(this, "AShooterPlayerController.GetUniqueNetIdAsString", result); } - void ClientOnAddedItemsToAllClustersInventory_Implementation(bool Success, FString * UserId, TArray * MasterIndexNum) { NativeCall *>(this, "AShooterPlayerController.ClientOnAddedItemsToAllClustersInventory_Implementation", Success, UserId, MasterIndexNum); } - void OnAddedItemsToAllClustersInventory(bool Success, FString * UserId, TArray * MasterIndexNum) { NativeCall *>(this, "AShooterPlayerController.OnAddedItemsToAllClustersInventory", Success, UserId, MasterIndexNum); } + FString* GetUniqueNetIdAsString(FString* result) { return NativeCall(this, "AShooterPlayerController.GetUniqueNetIdAsString", result); } + unsigned __int64 GetUniqueNetIdAsUINT64() { return NativeCall(this, "AShooterPlayerController.GetUniqueNetIdAsUINT64"); } + void ClientOnAddedItemsToAllClustersInventory_Implementation(bool Success, FString* UserId, TArray* MasterIndexNum) { NativeCall*>(this, "AShooterPlayerController.ClientOnAddedItemsToAllClustersInventory_Implementation", Success, UserId, MasterIndexNum); } + void OnAddedItemsToAllClustersInventory(bool Success, FString* UserId, TArray* MasterIndexNum) { NativeCall*>(this, "AShooterPlayerController.OnAddedItemsToAllClustersInventory", Success, UserId, MasterIndexNum); } bool AddItemToAllClustersInventory(FString UserId, int MasterIndexNum) { return NativeCall(this, "AShooterPlayerController.AddItemToAllClustersInventory", UserId, MasterIndexNum); } + UPrimalInventoryComponent* GetPawnInventoryComponent() { return NativeCall(this, "AShooterPlayerController.GetPawnInventoryComponent"); } + UPrimalInventoryComponent* GetPlayerInventoryComponent() { return NativeCall(this, "AShooterPlayerController.GetPlayerInventoryComponent"); } void BeginInactiveState() { NativeCall(this, "AShooterPlayerController.BeginInactiveState"); } - void PawnPendingDestroy(APawn * inPawn) { NativeCall(this, "AShooterPlayerController.PawnPendingDestroy", inPawn); } + void PawnPendingDestroy(APawn* inPawn) { NativeCall(this, "AShooterPlayerController.PawnPendingDestroy", inPawn); } void BeginSpectatingState() { NativeCall(this, "AShooterPlayerController.BeginSpectatingState"); } void SetGraphicsQuality(int val) { NativeCall(this, "AShooterPlayerController.SetGraphicsQuality", val); } + UShooterGameUserSettings* GetUserSettings() { return NativeCall(this, "AShooterPlayerController.GetUserSettings"); } void ResetSpawnTime() { NativeCall(this, "AShooterPlayerController.ResetSpawnTime"); } - void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPoint", out_Location, out_Rotation); } - void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation, bool ForAiming) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPoint", out_Location, out_Rotation, ForAiming); } - void GetPlayerViewPointNoModifiers(FVector * out_Location, FRotator * out_Rotation, bool ForAiming, bool bNoTPVAim) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPointNoModifiers", out_Location, out_Rotation, ForAiming, bNoTPVAim); } - void ClientNotifyEditText_Implementation(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject * ForObject) { NativeCall, unsigned int, unsigned int, UObject *>(this, "AShooterPlayerController.ClientNotifyEditText_Implementation", ForObjectClass, ExtraID1, ExtraID2, ForObject); } - void ServerNotifyEditText_Implementation(FString * TextToUse, bool checkedBox, TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject * ForObject) { NativeCall, unsigned int, unsigned int, UObject *>(this, "AShooterPlayerController.ServerNotifyEditText_Implementation", TextToUse, checkedBox, ForObjectClass, ExtraID1, ExtraID2, ForObject); } - void ServerSendChatMessage_Implementation(FString * ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage_Implementation", ChatMessage, SendMode); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPoint", out_Location, out_Rotation); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation, bool ForAiming) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPoint", out_Location, out_Rotation, ForAiming); } + void GetPlayerViewPointNoModifiers(FVector* out_Location, FRotator* out_Rotation, bool ForAiming, bool bNoTPVAim) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPointNoModifiers", out_Location, out_Rotation, ForAiming, bNoTPVAim); } + void ClientNotifyEditText_Implementation(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ClientNotifyEditText_Implementation", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ServerNotifyEditText_Implementation(FString* TextToUse, bool checkedBox, TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ServerNotifyEditText_Implementation", TextToUse, checkedBox, ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ServerSendChatMessage_Implementation(FString* ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage_Implementation", ChatMessage, SendMode); } + void LogChatMessage(FChatMessage* Msg) { NativeCall(this, "AShooterPlayerController.LogChatMessage", Msg); } void ClientChatMessage_Implementation(FChatMessage Chat) { NativeCall(this, "AShooterPlayerController.ClientChatMessage_Implementation", Chat); } - void ClientServerChatMessage_Implementation(FString * MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatMessage_Implementation", MessageText, MessageColor, bIsBold); } - void ClientServerChatDirectMessage_Implementation(FString * MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage_Implementation", MessageText, MessageColor, bIsBold); } - void ClientServerNotification_Implementation(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } - void ClientServerNotificationSingle_Implementation(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay, int MessageTypeID) { NativeCall(this, "AShooterPlayerController.ClientServerNotificationSingle_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, MessageTypeID); } - void ClientServerSOTFNotificationCustom_Implementation(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientServerChatMessage_Implementation(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatMessage_Implementation", MessageText, MessageColor, bIsBold); } + void ClientServerChatDirectMessage_Implementation(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage_Implementation", MessageText, MessageColor, bIsBold); } + void ClientServerNotification_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientServerNotificationSingle_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int MessageTypeID) { NativeCall(this, "AShooterPlayerController.ClientServerNotificationSingle_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, MessageTypeID); } + void ClientServerSOTFNotification_Implementation(ESTOFNotificationType::Type NotificationType, FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, bool bLastPlayer, FString* TribeName, TArray* PlayerNames, FString* DeathReason, TArray* DeadPlayersData) { NativeCall*, FString*, TArray*>(this, "AShooterPlayerController.ClientServerSOTFNotification_Implementation", NotificationType, MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, bLastPlayer, TribeName, PlayerNames, DeathReason, DeadPlayersData); } + void ClientServerSOTFNotificationCustom_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } void ServerGetOriginalHairColor_Implementation() { NativeCall(this, "AShooterPlayerController.ServerGetOriginalHairColor_Implementation"); } void ClientReceiveOriginalHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterPlayerController.ClientReceiveOriginalHairColor_Implementation", HairColor); } - FString * WritePNTScreenshot(FString * result) { return NativeCall(this, "AShooterPlayerController.WritePNTScreenshot", result); } + void OrganizeSOTFQueue(TEnumAsByte NotificationType, TArray PlayerNames, FString DeathReason, FString TribeName, TArray DeadPlayersData, bool bLastPlayer, bool bForcePlay, float DisplayInterval, FString CustomString) { NativeCall, TArray, FString, FString, TArray, bool, bool, float, FString>(this, "AShooterPlayerController.OrganizeSOTFQueue", NotificationType, PlayerNames, DeathReason, TribeName, DeadPlayersData, bLastPlayer, bForcePlay, DisplayInterval, CustomString); } + FString* WritePNTScreenshot(FString* result) { return NativeCall(this, "AShooterPlayerController.WritePNTScreenshot", result); } void TestNotification() { NativeCall(this, "AShooterPlayerController.TestNotification"); } + void TestPhysxPerf(int RayCount, float DistanceOfRays) { NativeCall(this, "AShooterPlayerController.TestPhysxPerf", RayCount, DistanceOfRays); } + void SetDoFInterpTime(float InterpTime) { NativeCall(this, "AShooterPlayerController.SetDoFInterpTime", InterpTime); } void ClientReset_Implementation() { NativeCall(this, "AShooterPlayerController.ClientReset_Implementation"); } void Reset() { NativeCall(this, "AShooterPlayerController.Reset"); } + void SetCheatPlayer(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetCheatPlayer", bEnable); } + void DebugCheckSeven(bool bEnable) { NativeCall(this, "AShooterPlayerController.DebugCheckSeven", bEnable); } + void SetAutoPlayer(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetAutoPlayer", bEnable); } + void CopyCoordsToClipboard() { NativeCall(this, "AShooterPlayerController.CopyCoordsToClipboard"); } + void CCC() { NativeCall(this, "AShooterPlayerController.CCC"); } + void ServerGlobalCommand_Implementation(FString* Msg) { NativeCall(this, "AShooterPlayerController.ServerGlobalCommand_Implementation", Msg); } + void GlobalCommand(FString* Msg) { NativeCall(this, "AShooterPlayerController.GlobalCommand", Msg); } + void GetAllMatinees() { NativeCall(this, "AShooterPlayerController.GetAllMatinees"); } void TestAlarmNotification(FString Title, FString Message) { NativeCall(this, "AShooterPlayerController.TestAlarmNotification", Title, Message); } void SendAlarmNotification(FString SteamID, FString Title, FString Message) { NativeCall(this, "AShooterPlayerController.SendAlarmNotification", SteamID, Title, Message); } + bool IsRidingDino() { return NativeCall(this, "AShooterPlayerController.IsRidingDino"); } + bool IsOnSeatingStructure() { return NativeCall(this, "AShooterPlayerController.IsOnSeatingStructure"); } bool SendUseItemSlotToStructure() { return NativeCall(this, "AShooterPlayerController.SendUseItemSlotToStructure"); } void SpectatorUseItem(int Index) { NativeCall(this, "AShooterPlayerController.SpectatorUseItem", Index); } - void ExportDinoData(APrimalDinoCharacter * DinoToExport) { NativeCall(this, "AShooterPlayerController.ExportDinoData", DinoToExport); } + void ExportDinoData(APrimalDinoCharacter* DinoToExport) { NativeCall(this, "AShooterPlayerController.ExportDinoData", DinoToExport); } void ApplyDepthOfFieldSetting(int Index, float CurrentTimer) { NativeCall(this, "AShooterPlayerController.ApplyDepthOfFieldSetting", Index, CurrentTimer); } void ServerReleaseSeatingStructure_Implementation() { NativeCall(this, "AShooterPlayerController.ServerReleaseSeatingStructure_Implementation"); } - void AdminCheat(FString * Msg) { NativeCall(this, "AShooterPlayerController.AdminCheat", Msg); } + void AdminCheat(FString* Msg) { NativeCall(this, "AShooterPlayerController.AdminCheat", Msg); } + void DoCrash() { NativeCall(this, "AShooterPlayerController.DoCrash"); } void OnExtendedInfoPress() { NativeCall(this, "AShooterPlayerController.OnExtendedInfoPress"); } void OnExtendedInfoRelease() { NativeCall(this, "AShooterPlayerController.OnExtendedInfoRelease"); } - void ClientNotifyPlayerDeath_Implementation(APawn * InstigatingPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeath_Implementation", InstigatingPawn); } - void ClientNotifyPlayerDeathReason_Implementation(FString * ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason_Implementation", ReasonString); } + void ClientNotifyPlayerDeath_Implementation(APawn* InstigatingPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeath_Implementation", InstigatingPawn); } + void ClientNotifyPlayerDeathReason_Implementation(FString* ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason_Implementation", ReasonString); } void ServerShowMessageOfTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerShowMessageOfTheDay_Implementation"); } - void ServerSetMessageOfTheDay_Implementation(FString * Message) { NativeCall(this, "AShooterPlayerController.ServerSetMessageOfTheDay_Implementation", Message); } - void ClientNotifyMessageOfTheDay_Implementation(FString * Message, float TimeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay_Implementation", Message, TimeToDisplay); } - void ClientNotifyRemotePlayerDeath_Implementation(FString * PlayerName, FString * AttackerName) { NativeCall(this, "AShooterPlayerController.ClientNotifyRemotePlayerDeath_Implementation", PlayerName, AttackerName); } - void ClientNotifyPlayerKill_Implementation(AActor * PlayerPawn, APawn * VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill_Implementation", PlayerPawn, VictimPawn); } - void ClientNotifyDinoKill_Implementation(APrimalDinoCharacter * InstigatingPawn, APawn * VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill_Implementation", InstigatingPawn, VictimPawn); } - void ClientNotifyDinoDeath_Implementation(FString * DinoName, FString * AttackerName, bool bIsVehicle) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoDeath_Implementation", DinoName, AttackerName, bIsVehicle); } - void ClientNotifyRespawned_Implementation(APawn * NewPawn, bool IsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyRespawned_Implementation", NewPawn, IsFirstSpawn); } - void ClientNotifyReconnected_Implementation(APawn * NewPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyReconnected_Implementation", NewPawn); } + void ServerSetMessageOfTheDay_Implementation(FString* Message) { NativeCall(this, "AShooterPlayerController.ServerSetMessageOfTheDay_Implementation", Message); } + void ClientNotifyMessageOfTheDay_Implementation(FString* Message, float TimeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay_Implementation", Message, TimeToDisplay); } + void ClientNotifyRemotePlayerDeath_Implementation(FString* PlayerName, FString* AttackerName) { NativeCall(this, "AShooterPlayerController.ClientNotifyRemotePlayerDeath_Implementation", PlayerName, AttackerName); } + void ClientNotifyPlayerKill_Implementation(AActor* PlayerPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill_Implementation", PlayerPawn, VictimPawn); } + void ClientNotifyDinoKill_Implementation(APrimalDinoCharacter* InstigatingPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill_Implementation", InstigatingPawn, VictimPawn); } + void ClientNotifyDinoDeath_Implementation(FString* DinoName, FString* AttackerName, bool bIsVehicle) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoDeath_Implementation", DinoName, AttackerName, bIsVehicle); } + void ServerRequestDinoCharStats_Implementation(APrimalDinoCharacter* theDinoChar) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoCharStats_Implementation", theDinoChar); } + void ClientReceiveDinoCharStats_Implementation(APrimalDinoCharacter* theDinoChar, TArray* CurValues, TArray* MaxValues) { NativeCall*, TArray*>(this, "AShooterPlayerController.ClientReceiveDinoCharStats_Implementation", theDinoChar, CurValues, MaxValues); } + void HandleRespawned_Implementation(APawn* NewPawn, bool IsFirstSpawn) { NativeCall(this, "AShooterPlayerController.HandleRespawned_Implementation", NewPawn, IsFirstSpawn); } + void DisableEnemyInvisible() { NativeCall(this, "AShooterPlayerController.DisableEnemyInvisible"); } + void ClientNotifyRespawned_Implementation(APawn* NewPawn, bool IsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyRespawned_Implementation", NewPawn, IsFirstSpawn); } + void ClientNotifyReconnected_Implementation(APawn* NewPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyReconnected_Implementation", NewPawn); } void ClientResetRespawningFlag_Implementation() { NativeCall(this, "AShooterPlayerController.ClientResetRespawningFlag_Implementation"); } void CheckForPlayerInventory() { NativeCall(this, "AShooterPlayerController.CheckForPlayerInventory"); } void ReportSpawnManagers() { NativeCall(this, "AShooterPlayerController.ReportSpawnManagers"); } - void HibernationReport(FString * ClassName) { NativeCall(this, "AShooterPlayerController.HibernationReport", ClassName); } - void HiWarp(FString * ClassName, int Index) { NativeCall(this, "AShooterPlayerController.HiWarp", ClassName, Index); } + void HibernationReport(FString* ClassName) { NativeCall(this, "AShooterPlayerController.HibernationReport", ClassName); } + void HiWarp(FString* ClassName, int Index) { NativeCall(this, "AShooterPlayerController.HiWarp", ClassName, Index); } void ReportLeastSpawnManagers() { NativeCall(this, "AShooterPlayerController.ReportLeastSpawnManagers"); } void FlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.FlushLevelStreaming"); } void DoFlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.DoFlushLevelStreaming"); } void FinalFlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.FinalFlushLevelStreaming"); } + void InitHUD(bool bForceReinitUI) { NativeCall(this, "AShooterPlayerController.InitHUD", bForceReinitUI); } void ClientNotifyCantHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHarvest_Implementation"); } void ClientNotifyHitHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyHitHarvest_Implementation"); } void ClientNotifyCantHitHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHitHarvest_Implementation"); } @@ -2127,51 +2857,75 @@ struct AShooterPlayerController : APlayerController void SPI(float X, float Y, float Z, float Yaw, float Pitch) { NativeCall(this, "AShooterPlayerController.SPI", X, Y, Z, Yaw, Pitch); } void ClientSetSpectatorLocation_Implementation(FVector NewLocation) { NativeCall(this, "AShooterPlayerController.ClientSetSpectatorLocation_Implementation", NewLocation); } void ClientSetControlRotation_Implementation(FRotator NewRotation) { NativeCall(this, "AShooterPlayerController.ClientSetControlRotation_Implementation", NewRotation); } - bool ShouldReplicateVoicePacketFrom(FUniqueNetId * Sender, char * PlaybackFlags) { return NativeCall(this, "AShooterPlayerController.ShouldReplicateVoicePacketFrom", Sender, PlaybackFlags); } - bool HasRadio(bool allowVoice) { return NativeCall(this, "AShooterPlayerController.HasRadio", allowVoice); } - TArray * GetRadioFrequencies(TArray * result) { return NativeCall *, TArray *>(this, "AShooterPlayerController.GetRadioFrequencies", result); } - bool HasSameRadioFrequency(AShooterPlayerController * OtherPC, unsigned int * SharedFrequency) { return NativeCall(this, "AShooterPlayerController.HasSameRadioFrequency", OtherPC, SharedFrequency); } - bool CanCommunicateVoiceWithRadio(AShooterPlayerController * otherPC) { return NativeCall(this, "AShooterPlayerController.CanCommunicateVoiceWithRadio", otherPC); } - void ToggleSpeaking(bool bSpeaking) { NativeCall(this, "AShooterPlayerController.ToggleSpeaking", bSpeaking); } + bool ShouldReplicateVoicePacketFrom(FUniqueNetId* Sender, char ShouldUseSuperRange, char* PlaybackFlags) { return NativeCall(this, "AShooterPlayerController.ShouldReplicateVoicePacketFrom", Sender, ShouldUseSuperRange, PlaybackFlags); } + bool HasRadio() { return NativeCall(this, "AShooterPlayerController.HasRadio"); } + TArray* GetRadioFrequencies(TArray* result) { return NativeCall*, TArray*>(this, "AShooterPlayerController.GetRadioFrequencies", result); } + bool HasSameRadioFrequency(AShooterPlayerController* OtherPC, unsigned int* SharedFrequency) { return NativeCall(this, "AShooterPlayerController.HasSameRadioFrequency", OtherPC, SharedFrequency); } + float GetChatProximityRadius() { return NativeCall(this, "AShooterPlayerController.GetChatProximityRadius"); } + void ToggleSpeaking(bool bSpeaking, bool UseSuperRange) { NativeCall(this, "AShooterPlayerController.ToggleSpeaking", bSpeaking, UseSuperRange); } void ForceUnstasisAtLocation(FVector AtLocation) { NativeCall(this, "AShooterPlayerController.ForceUnstasisAtLocation", AtLocation); } - void SpawnActorSpread(FString * blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpread", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } - void SpawnActorSpreadTamed(FString * blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpreadTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorSpread(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpread", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorSpreadTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpreadTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } void GiveResources() { NativeCall(this, "AShooterPlayerController.GiveResources"); } - void GiveEngrams(bool ForceAllEngrams) { NativeCall(this, "AShooterPlayerController.GiveEngrams", ForceAllEngrams); } - void ForceTribes(FString * PlayerName1, FString * PlayerName2, FString * NewTribeName) { NativeCall(this, "AShooterPlayerController.ForceTribes", PlayerName1, PlayerName2, NewTribeName); } - void ClientPlayLocalSound_Implementation(USoundBase * aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound_Implementation", aSound, bAttach); } - void ClientStopLocalSound_Implementation(USoundBase * aSound) { NativeCall(this, "AShooterPlayerController.ClientStopLocalSound_Implementation", aSound); } - void ServerAddItemToArkInventory_Implementation(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemToArkInventory_Implementation", inventoryComp, itemID, requestedQuantity); } - void OnArkTributeAllClustersInventoryItemsLoaded(TArray * Items, bool bAllowForcedItemDownload) { NativeCall *, bool>(this, "AShooterPlayerController.OnArkTributeAllClustersInventoryItemsLoaded", Items, bAllowForcedItemDownload); } + void GiveEngrams(bool bForceAllEngrams, bool bTekEngramsOnly) { NativeCall(this, "AShooterPlayerController.GiveEngrams", bForceAllEngrams, bTekEngramsOnly); } + void ForceTribes(FString* PlayerName1, FString* PlayerName2, FString* NewTribeName) { NativeCall(this, "AShooterPlayerController.ForceTribes", PlayerName1, PlayerName2, NewTribeName); } + void ClientPlayLocalSound_Implementation(USoundBase* aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound_Implementation", aSound, bAttach); } + void ClientStopLocalSound_Implementation(USoundBase* aSound) { NativeCall(this, "AShooterPlayerController.ClientStopLocalSound_Implementation", aSound); } + void ServerAddItemToArkInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemToArkInventory_Implementation", inventoryComp, itemID, requestedQuantity); } + void OnArkTributeAllClustersInventoryItemsLoaded(TArray* Items, bool bAllowForcedItemDownload) { NativeCall*, bool>(this, "AShooterPlayerController.OnArkTributeAllClustersInventoryItemsLoaded", Items, bAllowForcedItemDownload); } void OnArkTributeSaved(bool Success) { NativeCall(this, "AShooterPlayerController.OnArkTributeSaved", Success); } void ClientSetArkTributeLimits_Implementation(bool LimitItems, bool LimitDinos, bool LimitCharacters, int MaxItems, int MaxDinos, int MaxCharacters) { NativeCall(this, "AShooterPlayerController.ClientSetArkTributeLimits_Implementation", LimitItems, LimitDinos, LimitCharacters, MaxItems, MaxDinos, MaxCharacters); } - void ServerLoadArkInventoryItems_Implementation(TArray * ArkInventoryItemsInfo) { NativeCall *>(this, "AShooterPlayerController.ServerLoadArkInventoryItems_Implementation", ArkInventoryItemsInfo); } - void GetTamedDinosNearBy(TArray> * Dinos, float RangeRadius) { NativeCall> *, float>(this, "AShooterPlayerController.GetTamedDinosNearBy", Dinos, RangeRadius); } - bool IsTamedDinoNearBy(APrimalDinoCharacter * Dino, float RangeRadius) { return NativeCall(this, "AShooterPlayerController.IsTamedDinoNearBy", Dino, RangeRadius); } - void ServerSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString * DataClass, FString * TagName, FString * Name, TArray * DataStats, unsigned int ID1, unsigned int ID2) { NativeCall *, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } - void ServerSendArkDataPayload_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray * DataBytes) { NativeCall *>(this, "AShooterPlayerController.ServerSendArkDataPayload_Implementation", ID, ArkDataType, DataBytes); } + void ServerLoadArkInventoryItems_Implementation(TArray* ArkInventoryItemsInfo, bool bFinalBatch) { NativeCall*, bool>(this, "AShooterPlayerController.ServerLoadArkInventoryItems_Implementation", ArkInventoryItemsInfo, bFinalBatch); } + void ServerAsyncLoadArkInventoryItems_Implementation(TArray* ArkInventoryItemsInfo, bool bFinalBatch) { NativeCall*, bool>(this, "AShooterPlayerController.ServerAsyncLoadArkInventoryItems_Implementation", ArkInventoryItemsInfo, bFinalBatch); } + void GetTamedDinosNearBy(TArray>* Dinos) { NativeCall>*>(this, "AShooterPlayerController.GetTamedDinosNearBy", Dinos); } + void GetTamedDinosNearBy(TArray>* Dinos, float RangeRadius) { NativeCall>*, float>(this, "AShooterPlayerController.GetTamedDinosNearBy", Dinos, RangeRadius); } + bool IsTamedDinoNearBy(APrimalDinoCharacter* Dino, float RangeRadius) { return NativeCall(this, "AShooterPlayerController.IsTamedDinoNearBy", Dino, RangeRadius); } + void TestSteamRefreshItems() { NativeCall(this, "AShooterPlayerController.TestSteamRefreshItems"); } + void ServerSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ServerSendArkDataPayload_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ServerSendArkDataPayload_Implementation", ID, ArkDataType, DataBytes); } void ServerSendArkDataPayloadEnd_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType) { NativeCall(this, "AShooterPlayerController.ServerSendArkDataPayloadEnd_Implementation", ID, ArkDataType); } - void ClientSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString * DataClass, FString * TagName, FString * Name, TArray * DataStats, unsigned int ID1, unsigned int ID2) { NativeCall *, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ClientSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } void ClientSendArkDataPayloadEnd_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, unsigned __int64 PlayerDataID) { NativeCall(this, "AShooterPlayerController.ClientSendArkDataPayloadEnd_Implementation", ID, ArkDataType, PlayerDataID); } - void ServerCharacterUploadWithItems_CharaterPayload_Implementation(unsigned __int64 PlayerDataId, TArray * PlayerDataChunk) { NativeCall *>(this, "AShooterPlayerController.ServerCharacterUploadWithItems_CharaterPayload_Implementation", PlayerDataId, PlayerDataChunk); } + void RequestCreateNewPlayerWithArkDataPossibleItems(FArkTributePlayerData* PlayerData, unsigned __int64 TribeID) { NativeCall(this, "AShooterPlayerController.RequestCreateNewPlayerWithArkDataPossibleItems", PlayerData, TribeID); } + void ServerCharacterUploadWithItems_Start_Implementation(unsigned __int64 PlayerDataId, FArkTributePlayerData PlayerData) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_Start_Implementation", PlayerDataId, PlayerData); } + void ServerCharacterUploadWithItems_CharaterPayload_Implementation(unsigned __int64 PlayerDataId, TArray* PlayerDataChunk) { NativeCall*>(this, "AShooterPlayerController.ServerCharacterUploadWithItems_CharaterPayload_Implementation", PlayerDataId, PlayerDataChunk); } void ServerCharacterUploadWithItems_UploadItem_Implementation(unsigned __int64 PlayerDataId, FItemNetInfo InvItem) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_UploadItem_Implementation", PlayerDataId, InvItem); } void ServerCharacterUploadWithItems_FinishAndCreateCharacter_Implementation(unsigned __int64 PlayerDataId) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_FinishAndCreateCharacter_Implementation", PlayerDataId); } + void ServerRequestCreateMissionDataBuff_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestCreateMissionDataBuff_Implementation"); } + AMissionType* GetActiveMission() { return NativeCall(this, "AShooterPlayerController.GetActiveMission"); } + TKeyValuePair* GetLatestScoreForMission(TKeyValuePair* result, FName MissionTag) { return NativeCall*, TKeyValuePair*, FName>(this, "AShooterPlayerController.GetLatestScoreForMission", result, MissionTag); } + bool HasBestScoreForMission(FName MissionTag) { return NativeCall(this, "AShooterPlayerController.HasBestScoreForMission", MissionTag); } + FLeaderboardRow* GetBestScoreForMission(FLeaderboardRow* result, FName MissionTag) { return NativeCall(this, "AShooterPlayerController.GetBestScoreForMission", result, MissionTag); } + void ServerRequestShowLeaderboards_Implementation(TSubclassOf LeaderboardType, FName MissionTag) { NativeCall, FName>(this, "AShooterPlayerController.ServerRequestShowLeaderboards_Implementation", LeaderboardType, MissionTag); } + void ClientShowLeaderboard_Implementation(TSubclassOf LeaderboardType, FName MissionTag, TArray* LeaderboardRows, bool bPlayerHasValidLatestScore, FLeaderboardRow LatestPlayerScore) { NativeCall, FName, TArray*, bool, FLeaderboardRow>(this, "AShooterPlayerController.ClientShowLeaderboard_Implementation", LeaderboardType, MissionTag, LeaderboardRows, bPlayerHasValidLatestScore, LatestPlayerScore); } void RequestCreateNewPlayerWithArkData(TArray PlayerArkDataBytes, unsigned __int64 TribeID) { NativeCall, unsigned __int64>(this, "AShooterPlayerController.RequestCreateNewPlayerWithArkData", PlayerArkDataBytes, TribeID); } + void SendArKPayload(bool bClient, FARKTributeData ArKDataPayload) { NativeCall(this, "AShooterPlayerController.SendArKPayload", bClient, ArKDataPayload); } void LoadLocalPlayerArkData() { NativeCall(this, "AShooterPlayerController.LoadLocalPlayerArkData"); } + void AsyncLoadInventory() { NativeCall(this, "AShooterPlayerController.AsyncLoadInventory"); } int GetSubscribedAppIds() { return NativeCall(this, "AShooterPlayerController.GetSubscribedAppIds"); } void ServerLoadUploadedDinos_Implementation() { NativeCall(this, "AShooterPlayerController.ServerLoadUploadedDinos_Implementation"); } + void ClientUploadedDinosLoaded_Implementation(TArray* UploadedDinosListings) { NativeCall*>(this, "AShooterPlayerController.ClientUploadedDinosLoaded_Implementation", UploadedDinosListings); } + void ServerRequestDownloadDino_Implementation(FARKTributeDino DownloadedDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDownloadDino_Implementation", DownloadedDino); } void ClientDownloadDinoRequestFinished_Implementation(bool Success) { NativeCall(this, "AShooterPlayerController.ClientDownloadDinoRequestFinished_Implementation", Success); } + void OnLoadArkTributePlayersDataFinished(bool Success, TArray* ArkUploadedCharsData, int FailureResponseCode) { NativeCall*, int>(this, "AShooterPlayerController.OnLoadArkTributePlayersDataFinished", Success, ArkUploadedCharsData, FailureResponseCode); } void AttemptTransferRedownload() { NativeCall(this, "AShooterPlayerController.AttemptTransferRedownload"); } void ServerLoadUploadedCharacters_Implementation() { NativeCall(this, "AShooterPlayerController.ServerLoadUploadedCharacters_Implementation"); } void ClientOnStartDownloadTransferredPlayerCharacter_Implementation() { NativeCall(this, "AShooterPlayerController.ClientOnStartDownloadTransferredPlayerCharacter_Implementation"); } - void ClientOnEndDownloadTransferredPlayerCharacter_Implementation(bool Success, int FailureResponseCode, FString * FailureResponseMessage) { NativeCall(this, "AShooterPlayerController.ClientOnEndDownloadTransferredPlayerCharacter_Implementation", Success, FailureResponseCode, FailureResponseMessage); } + void ClientOnEndDownloadTransferredPlayerCharacter_Implementation(bool Success, int FailureResponseCode, FString* FailureResponseMessage) { NativeCall(this, "AShooterPlayerController.ClientOnEndDownloadTransferredPlayerCharacter_Implementation", Success, FailureResponseCode, FailureResponseMessage); } void DownloadTransferredPlayerCharacter() { NativeCall(this, "AShooterPlayerController.DownloadTransferredPlayerCharacter"); } + void ClientUploadedCharactersLoaded_Implementation(bool Success, TArray* UploadedDinosListings) { NativeCall*>(this, "AShooterPlayerController.ClientUploadedCharactersLoaded_Implementation", Success, UploadedDinosListings); } + void ServerCheckIsValidPlayerToDownload_Implementation(FArkTributePlayerData PlayerData) { NativeCall(this, "AShooterPlayerController.ServerCheckIsValidPlayerToDownload_Implementation", PlayerData); } + void ClientPlayerIsValidToDownload_Implementation(bool bIsValid, FArkTributePlayerData PlayerData) { NativeCall(this, "AShooterPlayerController.ClientPlayerIsValidToDownload_Implementation", bIsValid, PlayerData); } + bool IsValidArkTributePlayerDownloadForThisServer(FArkTributePlayerData* PlayerData) { return NativeCall(this, "AShooterPlayerController.IsValidArkTributePlayerDownloadForThisServer", PlayerData); } + void ServerRequestDownloadPlayerCharacter_Implementation(FArkTributePlayerData DownloadedCharacter, int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestDownloadPlayerCharacter_Implementation", DownloadedCharacter, spawnPointID, spawnRegionIndex); } void ClientDownloadPlayerCharacterRequestFinished_Implementation(bool Success) { NativeCall(this, "AShooterPlayerController.ClientDownloadPlayerCharacterRequestFinished_Implementation", Success); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "AShooterPlayerController.LinkedPlayerIDString", result); } void ServerSetSubscribedApp_Implementation(int AppID, bool bPreventDefaultItems) { NativeCall(this, "AShooterPlayerController.ServerSetSubscribedApp_Implementation", AppID, bPreventDefaultItems); } void ServerAddItemToSteamInventory(int ItemSteamDefID, int Quantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemToSteamInventory", ItemSteamDefID, Quantity); } - void ClientRemoveItemFromSteamInventory_Implementation(TArray * ItemSteamUserID, int Quantity) { NativeCall *, int>(this, "AShooterPlayerController.ClientRemoveItemFromSteamInventory_Implementation", ItemSteamUserID, Quantity); } + void ClientRemoveItemFromSteamInventory_Implementation(TArray* ItemSteamUserID, int Quantity) { NativeCall*, int>(this, "AShooterPlayerController.ClientRemoveItemFromSteamInventory_Implementation", ItemSteamUserID, Quantity); } void ServerRemoveSteamItemSucceeded_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRemoveSteamItemSucceeded_Implementation"); } void OnConsumeItemFinished(bool bSuccess, unsigned __int64 SteamID) { NativeCall(this, "AShooterPlayerController.OnConsumeItemFinished", bSuccess, SteamID); } + void RemoveItemSucceeded() { NativeCall(this, "AShooterPlayerController.RemoveItemSucceeded"); } void OnAddItemFinished(bool bSuccess, TArray SteamItemUserIds, unsigned __int64 SteamID) { NativeCall, unsigned __int64>(this, "AShooterPlayerController.OnAddItemFinished", bSuccess, SteamItemUserIds, SteamID); } void ServerRefreshSteamInventoryForRemove() { NativeCall(this, "AShooterPlayerController.ServerRefreshSteamInventoryForRemove"); } void ServerRefreshSteamInventoryToCheckConsume() { NativeCall(this, "AShooterPlayerController.ServerRefreshSteamInventoryToCheckConsume"); } @@ -2183,46 +2937,54 @@ struct AShooterPlayerController : APlayerController void ServerRemoveSteamItem_Implementation(unsigned int ItemdDefId) { NativeCall(this, "AShooterPlayerController.ServerRemoveSteamItem_Implementation", ItemdDefId); } void ReceivedPlayerState() { NativeCall(this, "AShooterPlayerController.ReceivedPlayerState"); } void CloseSteamStatusScene() { NativeCall(this, "AShooterPlayerController.CloseSteamStatusScene"); } - void ServerAllowPlayerToJoinNoCheck_Implementation(FString * PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck_Implementation", PlayerId); } - void ServerDisallowPlayerToJoinNoCheck_Implementation(FString * PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck_Implementation", PlayerId); } - void ServerSendDirectMessage_Implementation(FString * PlayerSteamID, FString * MessageText) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage_Implementation", PlayerSteamID, MessageText); } + void AllowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.AllowPlayerToJoinNoCheck", PlayerId); } + void ServerAllowPlayerToJoinNoCheck_Implementation(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck_Implementation", PlayerId); } + void DisallowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.DisallowPlayerToJoinNoCheck", PlayerId); } + void ServerDisallowPlayerToJoinNoCheck_Implementation(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck_Implementation", PlayerId); } + void ServerSendDirectMessage_Implementation(FString* PlayerSteamID, FString* MessageText) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage_Implementation", PlayerSteamID, MessageText); } void ServerListPlayers_Implementation() { NativeCall(this, "AShooterPlayerController.ServerListPlayers_Implementation"); } void KickPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.KickPlayer", PlayerSteamName); } - void ServerKickPlayer_Implementation(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerKickPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer_Implementation", PlayerSteamName, PlayerSteamID); } void BanPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.BanPlayer", PlayerSteamName); } - void ServerBanPlayer_Implementation(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerBanPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } void UnbanPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.UnbanPlayer", PlayerSteamName); } - void ServerUnbanPlayer_Implementation(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerUnbanPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } void SetKickedNotification(FString KickReason) { NativeCall(this, "AShooterPlayerController.SetKickedNotification", KickReason); } - void ClientUnlockAchievement_Implementation(FString * AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement_Implementation", AchievementID); } - void ClientNotifyLevelUp_Implementation(APrimalCharacter * ForChar, int NewLevel) { NativeCall(this, "AShooterPlayerController.ClientNotifyLevelUp_Implementation", ForChar, NewLevel); } + void ClientUnlockAchievement_Implementation(FString* AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement_Implementation", AchievementID); } + void ClientNotifyLevelUp_Implementation(APrimalCharacter* ForChar, int NewLevel) { NativeCall(this, "AShooterPlayerController.ClientNotifyLevelUp_Implementation", ForChar, NewLevel); } void ClientNotifyAdmin_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyAdmin_Implementation"); } void ClientNotifyTorpidityIncrease_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyTorpidityIncrease_Implementation"); } - void InitCharacterPainting_Implementation(APrimalCharacter * Char) { NativeCall(this, "AShooterPlayerController.InitCharacterPainting_Implementation", Char); } + void ServerPaint_Implementation(UStructurePaintingComponent* Structure, TArray* Paints, bool bLastBatch, bool bFromLoadFile) { NativeCall*, bool, bool>(this, "AShooterPlayerController.ServerPaint_Implementation", Structure, Paints, bLastBatch, bFromLoadFile); } + void InitCharacterPainting_Implementation(APrimalCharacter* Char) { NativeCall(this, "AShooterPlayerController.InitCharacterPainting_Implementation", Char); } void ClientNotifyListenServerOutOfRange_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyListenServerOutOfRange_Implementation"); } void StopLoadingMusic() { NativeCall(this, "AShooterPlayerController.StopLoadingMusic"); } void FadeOutLoadingMusic() { NativeCall(this, "AShooterPlayerController.FadeOutLoadingMusic"); } + ASpectatorPawn* SpawnSpectatorPawn() { return NativeCall(this, "AShooterPlayerController.SpawnSpectatorPawn"); } void ChangeState(FName NewState) { NativeCall(this, "AShooterPlayerController.ChangeState", NewState); } bool IsSpectator() { return NativeCall(this, "AShooterPlayerController.IsSpectator"); } void ClientFailedRemoveSaddle_Implementation() { NativeCall(this, "AShooterPlayerController.ClientFailedRemoveSaddle_Implementation"); } void PrintColors() { NativeCall(this, "AShooterPlayerController.PrintColors"); } - FString * ConsoleCommand(FString * result, FString * Command, bool bWriteToLog) { return NativeCall(this, "AShooterPlayerController.ConsoleCommand", result, Command, bWriteToLog); } + FString* ConsoleCommand(FString* result, FString* Command, bool bWriteToLog) { return NativeCall(this, "AShooterPlayerController.ConsoleCommand", result, Command, bWriteToLog); } + void ClientRunLocalConsoleCommand_Implementation(FString* Command, bool bWriteToLog) { NativeCall(this, "AShooterPlayerController.ClientRunLocalConsoleCommand_Implementation", Command, bWriteToLog); } + void EnvQA() { NativeCall(this, "AShooterPlayerController.EnvQA"); } + void TurnOnGmBuffAndTekArmorAndStatFpsAndAlsoStatUnitBecauseThisIsEasierToTypeOnXbox() { NativeCall(this, "AShooterPlayerController.TurnOnGmBuffAndTekArmorAndStatFpsAndAlsoStatUnitBecauseThisIsEasierToTypeOnXbox"); } void GiveColors(int quantity) { NativeCall(this, "AShooterPlayerController.GiveColors", quantity); } - void ClientShowPaintingUI_Implementation(UObject * ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI_Implementation", ObjectToPaint); } + void ClientShowPaintingUI_Implementation(UObject* ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI_Implementation", ObjectToPaint); } void HideRiders(bool bDoHide) { NativeCall(this, "AShooterPlayerController.HideRiders", bDoHide); } void SetAdminIcon(bool bAdminIcon) { NativeCall(this, "AShooterPlayerController.SetAdminIcon", bAdminIcon); } void SpawnPlayerCameraManager() { NativeCall(this, "AShooterPlayerController.SpawnPlayerCameraManager"); } void ServerSetSupressAdminIcon_Implementation(bool bSuppress) { NativeCall(this, "AShooterPlayerController.ServerSetSupressAdminIcon_Implementation", bSuppress); } - void NotifyTribeWarStatus_Implementation(FString * EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus_Implementation", EnemyTribeString, StatusType); } + void NotifyTribeWarStatus_Implementation(FString* EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus_Implementation", EnemyTribeString, StatusType); } void StartArkGamepadLeftShoulder() { NativeCall(this, "AShooterPlayerController.StartArkGamepadLeftShoulder"); } void StartArkGamepadRightShoulder() { NativeCall(this, "AShooterPlayerController.StartArkGamepadRightShoulder"); } void EndArkGamepadRightShoulder() { NativeCall(this, "AShooterPlayerController.EndArkGamepadRightShoulder"); } void ServerRequestTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestTribeLog_Implementation"); } void ClientStartReceivingTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ClientStartReceivingTribeLog_Implementation"); } - void ClientReceiveTribeLog_Implementation(FString * LogString) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeLog_Implementation", LogString); } + void ClientReceiveTribeLog_Implementation(FString* LogString) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeLog_Implementation", LogString); } void ClientEndReceivingTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ClientEndReceivingTribeLog_Implementation"); } void EndArkGamepadLeftShoulder() { NativeCall(this, "AShooterPlayerController.EndArkGamepadLeftShoulder"); } void RPCStayAlive_Implementation() { NativeCall(this, "AShooterPlayerController.RPCStayAlive_Implementation"); } + void ConditonalEndGamepadModiferState() { NativeCall(this, "AShooterPlayerController.ConditonalEndGamepadModiferState"); } void StartArkGamepadBackButton() { NativeCall(this, "AShooterPlayerController.StartArkGamepadBackButton"); } void EndArkGamepadBackButton() { NativeCall(this, "AShooterPlayerController.EndArkGamepadBackButton"); } void StartArkGamepadFaceButtonLeft() { NativeCall(this, "AShooterPlayerController.StartArkGamepadFaceButtonLeft"); } @@ -2241,18 +3003,22 @@ struct AShooterPlayerController : APlayerController void EndArkGamepadDpadRight() { NativeCall(this, "AShooterPlayerController.EndArkGamepadDpadRight"); } void StartArkGamepadDpadDown() { NativeCall(this, "AShooterPlayerController.StartArkGamepadDpadDown"); } void EndArkGamepadDpadDown() { NativeCall(this, "AShooterPlayerController.EndArkGamepadDpadDown"); } - void ServerAddAchievementID_Implementation(FString * AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID_Implementation", AchievementID, bIsOnSpawn); } - FString * GetPlayerCharacterName(FString * result) { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacterName", result); } + bool IsGameInputAllowed() { return NativeCall(this, "AShooterPlayerController.IsGameInputAllowed"); } + void ServerAddAchievementID_Implementation(FString* AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID_Implementation", AchievementID, bIsOnSpawn); } + int GetLinkedPlayerID() { return NativeCall(this, "AShooterPlayerController.GetLinkedPlayerID"); } + unsigned __int64 GetLinkedPlayerID64() { return NativeCall(this, "AShooterPlayerController.GetLinkedPlayerID64"); } + FString* GetPlayerCharacterName(FString* result) { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacterName", result); } void ClientCollectedAchievementItem_Implementation(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientCollectedAchievementItem_Implementation", ItemClass); } + bool AllowTribeGroupPermission(ETribeGroupPermission::Type TribeGroupPermission, UObject* OnObject) { return NativeCall(this, "AShooterPlayerController.AllowTribeGroupPermission", TribeGroupPermission, OnObject); } bool UseTribeGroupRanks() { return NativeCall(this, "AShooterPlayerController.UseTribeGroupRanks"); } bool IsTribeAdmin() { return NativeCall(this, "AShooterPlayerController.IsTribeAdmin"); } + bool IsInTribe() { return NativeCall(this, "AShooterPlayerController.IsInTribe"); } void ClientAddFloatingDamageText_Implementation(FVector_NetQuantize AtLocation, int DamageAmount, int FromTeamID) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingDamageText_Implementation", AtLocation, DamageAmount, FromTeamID); } - void ClientAddFloatingText_Implementation(FVector_NetQuantize AtLocation, FString * FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingText_Implementation", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime); } - UPrimalItem * GetInventoryUISelectedItemLocal() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemLocal"); } - UPrimalItem * GetInventoryUISelectedItemRemote() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemRemote"); } - void PlayHitMarkerCharacter_Implementation() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacter_Implementation"); } + void ClientAddFloatingText_Implementation(FVector_NetQuantize AtLocation, FString* FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingText_Implementation", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime); } + UPrimalItem* GetInventoryUISelectedItemLocal() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemLocal"); } + UPrimalItem* GetInventoryUISelectedItemRemote() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemRemote"); } + void NotifyDealDamageSuccess(APrimalCharacter* HitCharacter, bool bHitFriendlyTarget, float PreDamageHealth, float DamageAmount, FDamageEvent* DamageEvent) { NativeCall(this, "AShooterPlayerController.NotifyDealDamageSuccess", HitCharacter, bHitFriendlyTarget, PreDamageHealth, DamageAmount, DamageEvent); } void PlayHitMarkerStructure_Implementation() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructure_Implementation"); } - void PlayHitMarkerCharacterAlly_Implementation() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacterAlly_Implementation"); } void PlayHitMarkerStructureAlly_Implementation() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructureAlly_Implementation"); } void ClientShowTransferredPlayerConfirmationDialog_Implementation() { NativeCall(this, "AShooterPlayerController.ClientShowTransferredPlayerConfirmationDialog_Implementation"); } void ShowTransferCharacterConfirmationDialog() { NativeCall(this, "AShooterPlayerController.ShowTransferCharacterConfirmationDialog"); } @@ -2261,124 +3027,321 @@ struct AShooterPlayerController : APlayerController void ClientSetHUDAndInitUIScenes_Implementation(TSubclassOf NewHUDClass) { NativeCall>(this, "AShooterPlayerController.ClientSetHUDAndInitUIScenes_Implementation", NewHUDClass); } void ClientShowSpawnUIForTransferringPlayer_Implementation(TSubclassOf NewHUDClass, unsigned __int64 TransferingPlayerID, bool bUseTimer) { NativeCall, unsigned __int64, bool>(this, "AShooterPlayerController.ClientShowSpawnUIForTransferringPlayer_Implementation", NewHUDClass, TransferingPlayerID, bUseTimer); } void ServerDownloadTransferredPlayer_Implementation(int spawnPointID, int spawnPointRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerDownloadTransferredPlayer_Implementation", spawnPointID, spawnPointRegionIndex); } - void GetAudioListenerPosition(FVector * OutLocation, FVector * OutFrontDir, FVector * OutRightDir) { NativeCall(this, "AShooterPlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } - void ServerStartWeaponFire_Implementation(AShooterWeapon * weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponFire_Implementation", weapon); } - void ServerStopWeaponFire_Implementation(AShooterWeapon * weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponFire_Implementation", weapon); } - void ServerStartWeaponAltFire_Implementation(AShooterWeapon * weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponAltFire_Implementation", weapon); } - void ServerStopWeaponAltFire_Implementation(AShooterWeapon * weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponAltFire_Implementation", weapon); } + void GetAudioListenerPosition(FVector* OutLocation, FVector* OutFrontDir, FVector* OutRightDir) { NativeCall(this, "AShooterPlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } + void ServerStartWeaponFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponFire_Implementation", weapon); } + void ServerStopWeaponFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponFire_Implementation", weapon); } + void ServerStartWeaponAltFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponAltFire_Implementation", weapon); } + void ServerStopWeaponAltFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponAltFire_Implementation", weapon); } + void StartSurfaceCamera(float OnSurfaceTargetYaw, float OnSurfaceTargetPitch, float OnSurfaceTargetRoll, float OnSurfaceCameraInterpolationSpeed, bool UseSurfaceCameraInterpolation, FVector* CameraOffset) { NativeCall(this, "AShooterPlayerController.StartSurfaceCamera", OnSurfaceTargetYaw, OnSurfaceTargetPitch, OnSurfaceTargetRoll, OnSurfaceCameraInterpolationSpeed, UseSurfaceCameraInterpolation, CameraOffset); } + void StartSurfaceCameraForPassenger(float OnSurfaceTargetYaw, float OnSurfaceTargetPitch, float OnSurfaceTargetRoll) { NativeCall(this, "AShooterPlayerController.StartSurfaceCameraForPassenger", OnSurfaceTargetYaw, OnSurfaceTargetPitch, OnSurfaceTargetRoll); } + void EndSurfaceCamera() { NativeCall(this, "AShooterPlayerController.EndSurfaceCamera"); } + void DisableSurfaceCameraInterpolation() { NativeCall(this, "AShooterPlayerController.DisableSurfaceCameraInterpolation"); } void ClientStartSurfaceCameraForPassenger_Implementation(float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "AShooterPlayerController.ClientStartSurfaceCameraForPassenger_Implementation", yaw, pitch, roll, bInvertTurnInput); } void ServerUnlockPerMapExplorerNote_Implementation(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ServerUnlockPerMapExplorerNote_Implementation", ExplorerNoteIndex); } - void UnlockExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.UnlockExplorerNote", ExplorerNoteIndex); } + void UnlockExplorerNote(int ExplorerNoteIndex, const bool forceShowExplorerNoteUI) { NativeCall(this, "AShooterPlayerController.UnlockExplorerNote", ExplorerNoteIndex, forceShowExplorerNoteUI); } + FExplorerNoteEntry* GetExplorerNoteEntry(FExplorerNoteEntry* result, int ExplorerNoteIndex) { return NativeCall(this, "AShooterPlayerController.GetExplorerNoteEntry", result, ExplorerNoteIndex); } void ClientUnlockExplorerNote_Implementation(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ClientUnlockExplorerNote_Implementation", ExplorerNoteIndex); } - APawn * GetResponsibleDamager(AActor * DamageCauser) { return NativeCall(this, "AShooterPlayerController.GetResponsibleDamager", DamageCauser); } + APawn* GetResponsibleDamager(AActor* DamageCauser) { return NativeCall(this, "AShooterPlayerController.GetResponsibleDamager", DamageCauser); } void UnlockEmote(FName EmoteName) { NativeCall(this, "AShooterPlayerController.UnlockEmote", EmoteName); } void LockEmote(FName EmoteName) { NativeCall(this, "AShooterPlayerController.LockEmote", EmoteName); } bool IsEmoteUnlocked(FName EmoteName) { return NativeCall(this, "AShooterPlayerController.IsEmoteUnlocked", EmoteName); } int GetCurrentMultiUseWheelCategory() { return NativeCall(this, "AShooterPlayerController.GetCurrentMultiUseWheelCategory"); } - void ClientReceiveDinoAncestors_Implementation(APrimalDinoCharacter * ForDino, TArray * DinoAncestors, TArray * DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall *, TArray *, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors_Implementation", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } - void ServerRequestDinoAncestors_Implementation(APrimalDinoCharacter * ForDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoAncestors_Implementation", ForDino); } + void ClientReceiveDinoAncestors_Implementation(APrimalDinoCharacter* ForDino, TArray* DinoAncestors, TArray* DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall*, TArray*, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors_Implementation", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } + void ServerRequestDinoAncestors_Implementation(APrimalDinoCharacter* ForDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoAncestors_Implementation", ForDino); } void OnPressGroupAddOrRemoveTame() { NativeCall(this, "AShooterPlayerController.OnPressGroupAddOrRemoveTame"); } - AActor * BaseGetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.BaseGetPlayerCharacter"); } + AActor* BaseGetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.BaseGetPlayerCharacter"); } void ClientNotifyUnlockedEngram_Implementation(TSubclassOf ItemClass, bool bTekGram) { NativeCall, bool>(this, "AShooterPlayerController.ClientNotifyUnlockedEngram_Implementation", ItemClass, bTekGram); } void ClientTeleportSucceeded_Implementation(FVector TeleportLoc, FRotator TeleportRot, bool bSimpleTeleport) { NativeCall(this, "AShooterPlayerController.ClientTeleportSucceeded_Implementation", TeleportLoc, TeleportRot, bSimpleTeleport); } bool IsAtPersonalTameLimit(bool bIsForStructure) { return NativeCall(this, "AShooterPlayerController.IsAtPersonalTameLimit", bIsForStructure); } - FString * GetPersonalTameLimitString(FString * result) { return NativeCall(this, "AShooterPlayerController.GetPersonalTameLimitString", result); } + FString* GetPersonalTameLimitString(FString* result) { return NativeCall(this, "AShooterPlayerController.GetPersonalTameLimitString", result); } void ClientSetPersonalDinoTameCount_Implementation(int NewPersonalDinoTameCount) { NativeCall(this, "AShooterPlayerController.ClientSetPersonalDinoTameCount_Implementation", NewPersonalDinoTameCount); } void UpdatePostProcessVolumes() { NativeCall(this, "AShooterPlayerController.UpdatePostProcessVolumes"); } bool IsSavingData() { return NativeCall(this, "AShooterPlayerController.IsSavingData"); } - FString * PlayerCommand_Implementation(FString * result, FString * TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand_Implementation", result, TheCommand); } + FString* PlayerCommand_Implementation(FString* result, FString* TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand_Implementation", result, TheCommand); } + void DoPlayerCommand(FString TheCommand) { NativeCall(this, "AShooterPlayerController.DoPlayerCommand", TheCommand); } + void SetControllerGamepadActive(bool bIsActive) { NativeCall(this, "AShooterPlayerController.SetControllerGamepadActive", bIsActive); } void TryToForceUploadCharacter_Implementation() { NativeCall(this, "AShooterPlayerController.TryToForceUploadCharacter_Implementation"); } void ServerDPC_Implementation() { NativeCall(this, "AShooterPlayerController.ServerDPC_Implementation"); } + bool ShouldHideGameplayUI() { return NativeCall(this, "AShooterPlayerController.ShouldHideGameplayUI"); } void QuitToMainMenu() { NativeCall(this, "AShooterPlayerController.QuitToMainMenu"); } bool IsViewingInventoryUI() { return NativeCall(this, "AShooterPlayerController.IsViewingInventoryUI"); } bool ViewingAnUploadTerminal() { return NativeCall(this, "AShooterPlayerController.ViewingAnUploadTerminal"); } + bool IsFirstLocalPlayer() { return NativeCall(this, "AShooterPlayerController.IsFirstLocalPlayer"); } bool IsFirstLocalPlayerOrLivingLocalPlayer() { return NativeCall(this, "AShooterPlayerController.IsFirstLocalPlayerOrLivingLocalPlayer"); } void ServerRequestMyTribeOnlineList_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestMyTribeOnlineList_Implementation"); } - void ClientReceiveMyTribeOnlineList_Implementation(TArray * OnlinePlayerIDs) { NativeCall *>(this, "AShooterPlayerController.ClientReceiveMyTribeOnlineList_Implementation", OnlinePlayerIDs); } + void ClientReceiveMyTribeOnlineList_Implementation(TArray* OnlinePlayerIDs) { NativeCall*>(this, "AShooterPlayerController.ClientReceiveMyTribeOnlineList_Implementation", OnlinePlayerIDs); } void ClientNotifyUnlockHairStyleOrEmote_Implementation(FName HairstyleOrEmoteName) { NativeCall(this, "AShooterPlayerController.ClientNotifyUnlockHairStyleOrEmote_Implementation", HairstyleOrEmoteName); } void UpdateRequestEquippedItemsQueue() { NativeCall(this, "AShooterPlayerController.UpdateRequestEquippedItemsQueue"); } void SetGamma1() { NativeCall(this, "AShooterPlayerController.SetGamma1"); } void SetGamma2() { NativeCall(this, "AShooterPlayerController.SetGamma2"); } + void ClientRequestSpectatorLocationAndRotation_Implementation() { NativeCall(this, "AShooterPlayerController.ClientRequestSpectatorLocationAndRotation_Implementation"); } + void ServerRecieveSpectatorLocationAndRotation_Implementation(FVector spectatorLocation, FRotator spectatorRotation) { NativeCall(this, "AShooterPlayerController.ServerRecieveSpectatorLocationAndRotation_Implementation", spectatorLocation, spectatorRotation); } void ServerDropAllNotReadyForUploadItems_Implementation() { NativeCall(this, "AShooterPlayerController.ServerDropAllNotReadyForUploadItems_Implementation"); } void ClientOnDropAllNotReadyForUploadItemsFinished_Implementation() { NativeCall(this, "AShooterPlayerController.ClientOnDropAllNotReadyForUploadItemsFinished_Implementation"); } - void QueueRequestEquippedItems(UPrimalInventoryComponent * invComp) { NativeCall(this, "AShooterPlayerController.QueueRequestEquippedItems", invComp); } + void QueueRequestEquippedItems(UPrimalInventoryComponent* invComp) { NativeCall(this, "AShooterPlayerController.QueueRequestEquippedItems", invComp); } void IncrementPrimalStats(EPrimalStatsValueTypes::Type statsValueType) { NativeCall(this, "AShooterPlayerController.IncrementPrimalStats", statsValueType); } void FlushPrimalStats() { NativeCall(this, "AShooterPlayerController.FlushPrimalStats"); } + TArray* GetAlwaysReleventNetworkActors() { return NativeCall*>(this, "AShooterPlayerController.GetAlwaysReleventNetworkActors"); } + void SetInstantHarvest(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetInstantHarvest", bEnable); } + bool HasInstantHarvest() { return NativeCall(this, "AShooterPlayerController.HasInstantHarvest"); } + AShooterCharacter* GetControllerPlayer() { return NativeCall(this, "AShooterPlayerController.GetControllerPlayer"); } + void Client_ReceiveBuffFromDayCycle_Implementation(TSubclassOf GiveBuffClass, ADayCycleManager* FromDayCycle) { NativeCall, ADayCycleManager*>(this, "AShooterPlayerController.Client_ReceiveBuffFromDayCycle_Implementation", GiveBuffClass, FromDayCycle); } + void Tick_UpdatePings(const float DeltaTime) { NativeCall(this, "AShooterPlayerController.Tick_UpdatePings", DeltaTime); } + void OnPingDown() { NativeCall(this, "AShooterPlayerController.OnPingDown"); } + void OnPingUp() { NativeCall(this, "AShooterPlayerController.OnPingUp"); } + bool DoPingTrace(FReplicatePingData* NewPing, bool* bIsResponding) { return NativeCall(this, "AShooterPlayerController.DoPingTrace", NewPing, bIsResponding); } + bool CanPingPlayer(AShooterCharacter* ForPlayer) { return NativeCall(this, "AShooterPlayerController.CanPingPlayer", ForPlayer); } + void Server_Ping_Implementation(FReplicatePingData WithPingData) { NativeCall(this, "AShooterPlayerController.Server_Ping_Implementation", WithPingData); } + void PingNearbyPlayers(FReplicatePingData* WithPingData) { NativeCall(this, "AShooterPlayerController.PingNearbyPlayers", WithPingData); } + void Client_ReceivePing_Implementation(FReplicatePingData ReceivedPingData) { NativeCall(this, "AShooterPlayerController.Client_ReceivePing_Implementation", ReceivedPingData); } + void Server_RespondToPing_Implementation(FReplicatePingData RespondToPingData) { NativeCall(this, "AShooterPlayerController.Server_RespondToPing_Implementation", RespondToPingData); } + void RespondToPing(FReplicatePingData* RespondToPingData) { NativeCall(this, "AShooterPlayerController.RespondToPing", RespondToPingData); } + void Client_ReceivePingResponse_Implementation(FReplicatePingData ResponseData, AShooterCharacter* RespondingPlayer) { NativeCall(this, "AShooterPlayerController.Client_ReceivePingResponse_Implementation", ResponseData, RespondingPlayer); } + bool InitPing(FPingData* ForPingData, FReplicatePingData* InitFromData) { return NativeCall(this, "AShooterPlayerController.InitPing", ForPingData, InitFromData); } + UTexture2D* GetPingIconForComponent(UPrimitiveComponent* ForComponent) { return NativeCall(this, "AShooterPlayerController.GetPingIconForComponent", ForComponent); } + static FString* GetPingTitleForActor(FString* result, AActor* ForActor) { return NativeCall(nullptr, "AShooterPlayerController.GetPingTitleForActor", result, ForActor); } + static bool IsPlayerViewingPing(AShooterPlayerController* ForPC, FPingData* CheckPingData) { return NativeCall(nullptr, "AShooterPlayerController.IsPlayerViewingPing", ForPC, CheckPingData); } + static bool DoesPlayerOwnPing(AShooterPlayerController* PlayerPC, const unsigned int PingOwnerID) { return NativeCall(nullptr, "AShooterPlayerController.DoesPlayerOwnPing", PlayerPC, PingOwnerID); } + static bool IsPingedItem(UPrimitiveComponent* PingComponent) { return NativeCall(nullptr, "AShooterPlayerController.IsPingedItem", PingComponent); } + TArray* GetNearbyPOIs(TArray* result) { return NativeCall*, TArray*>(this, "AShooterPlayerController.GetNearbyPOIs", result); } + void Tick_SearchForPOIs(float DeltaTime) { NativeCall(this, "AShooterPlayerController.Tick_SearchForPOIs", DeltaTime); } + void SetMissionWaypointInfo(FString InWaypointTitle, FVector InWaypointDestination, FName InWaypointID) { NativeCall(this, "AShooterPlayerController.SetMissionWaypointInfo", InWaypointTitle, InWaypointDestination, InWaypointID); } + void SetMissionWaypointVisible(bool bInIsVisible) { NativeCall(this, "AShooterPlayerController.SetMissionWaypointVisible", bInIsVisible); } + bool GetIsMissionWaypointActive() { return NativeCall(this, "AShooterPlayerController.GetIsMissionWaypointActive"); } + FName* GetMissionWaypointID(FName* result) { return NativeCall(this, "AShooterPlayerController.GetMissionWaypointID", result); } + void NotifyPawnBuffsOfDamageEvent(AActor* DamagedActor, float DamageAmount, FDamageEvent* DamageEvent) { NativeCall(this, "AShooterPlayerController.NotifyPawnBuffsOfDamageEvent", DamagedActor, DamageAmount, DamageEvent); } + void RetryLoginToVivox() { NativeCall(this, "AShooterPlayerController.RetryLoginToVivox"); } + void RetryJoinVivoxChannel() { NativeCall(this, "AShooterPlayerController.RetryJoinVivoxChannel"); } + void ClearVivoxRetryTimers() { NativeCall(this, "AShooterPlayerController.ClearVivoxRetryTimers"); } + void ClearVivoxRetryCounters() { NativeCall(this, "AShooterPlayerController.ClearVivoxRetryCounters"); } + void ServerLoginToVivox_Implementation() { NativeCall(this, "AShooterPlayerController.ServerLoginToVivox_Implementation"); } + void ClientLoginToVivox_Implementation(FString* VivoxUsername) { NativeCall(this, "AShooterPlayerController.ClientLoginToVivox_Implementation", VivoxUsername); } + void ServerSuccessfullyLoggedIntoVivox_Implementation(FString* LoginSessionUserUri) { NativeCall(this, "AShooterPlayerController.ServerSuccessfullyLoggedIntoVivox_Implementation", LoginSessionUserUri); } + void ClientJoinVivoxChannel_Implementation(FString* LoginSessionUserUri, FString* ChannelName, int AtlasVoiceChannelTypeAsInt, int AttenuationModelAsInt32, float MaxDistance, float MinDistance, float Rolloff) { NativeCall(this, "AShooterPlayerController.ClientJoinVivoxChannel_Implementation", LoginSessionUserUri, ChannelName, AtlasVoiceChannelTypeAsInt, AttenuationModelAsInt32, MaxDistance, MinDistance, Rolloff); } + void Update3DPosition(bool ForceUpdate) { NativeCall(this, "AShooterPlayerController.Update3DPosition", ForceUpdate); } + bool Get3DValuesAreDirty() { return NativeCall(this, "AShooterPlayerController.Get3DValuesAreDirty"); } + void Clear3DValuesAreDirty() { NativeCall(this, "AShooterPlayerController.Clear3DValuesAreDirty"); } static void StaticRegisterNativesAShooterPlayerController() { NativeCall(nullptr, "AShooterPlayerController.StaticRegisterNativesAShooterPlayerController"); } - void CheckCheatsPassword(FString * pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword", pass); } - void CheckRequestSpectator(FString * InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator", InSpectatorPass); } - void ClientAddActorItem(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } - void ClientAddActorItemToFolder(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString * ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } - void ClientAddItemToArk(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, bool bFromLoad) { NativeCall(this, "AShooterPlayerController.ClientAddItemToArk", forInventory, itemInfo, bFromLoad); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterPlayerController.GetPrivateStaticClass", Package); } + FVector* BPCheckCanDinoSpawnFromLocation(FVector* result, TSubclassOf DinoClass, FVector* CheckLocation) { return NativeCall, FVector*>(this, "AShooterPlayerController.BPCheckCanDinoSpawnFromLocation", result, DinoClass, CheckLocation); } + void CheckCheatsPassword(FString* pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword", pass); } + void CheckRequestSpectator(FString* InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator", InSpectatorPass); } + void Client_ReceiveBuffFromDayCycle(TSubclassOf GiveBuffClass, ADayCycleManager* FromDayCycle) { NativeCall, ADayCycleManager*>(this, "AShooterPlayerController.Client_ReceiveBuffFromDayCycle", GiveBuffClass, FromDayCycle); } + void Client_ReceivePing(FReplicatePingData ReceivedPingData) { NativeCall(this, "AShooterPlayerController.Client_ReceivePing", ReceivedPingData); } + void Client_ReceivePingResponse(FReplicatePingData ResponseData, AShooterCharacter* RespondingPlayer) { NativeCall(this, "AShooterPlayerController.Client_ReceivePingResponse", ResponseData, RespondingPlayer); } + void ClientAddActorItem(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } + void ClientAddActorItemToFolder(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString* ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } + void ClientAddFloatingDamageText(FVector_NetQuantize AtLocation, int DamageAmount, int FromTeamID) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingDamageText", AtLocation, DamageAmount, FromTeamID); } + void ClientAddFloatingText(FVector_NetQuantize AtLocation, FString* FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime); } + void ClientAddFolderToInventoryComponent(UPrimalInventoryComponent* forInventory, FString* NewCustomFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ClientAddFolderToInventoryComponent", forInventory, NewCustomFolderName, InventoryCompType); } + void ClientAddItemToArk(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bFromLoad) { NativeCall(this, "AShooterPlayerController.ClientAddItemToArk", forInventory, itemInfo, bFromLoad); } void ClientChatMessage(FChatMessage Chat) { NativeCall(this, "AShooterPlayerController.ClientChatMessage", Chat); } void ClientCollectedAchievementItem(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientCollectedAchievementItem", ItemClass); } - void ClientDoMultiUse(UObject * ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse", ForObject, useIndex); } + void ClientDoMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse", ForObject, useIndex); } + void ClientDownloadDinoRequestFinished(bool Success) { NativeCall(this, "AShooterPlayerController.ClientDownloadDinoRequestFinished", Success); } + void ClientDownloadPlayerCharacterRequestFinished(bool Success) { NativeCall(this, "AShooterPlayerController.ClientDownloadPlayerCharacterRequestFinished", Success); } + void ClientEndReceivingTribeLog() { NativeCall(this, "AShooterPlayerController.ClientEndReceivingTribeLog"); } void ClientFailedRemoveSaddle() { NativeCall(this, "AShooterPlayerController.ClientFailedRemoveSaddle"); } void ClientFailedToAddItemFromArkInventory() { NativeCall(this, "AShooterPlayerController.ClientFailedToAddItemFromArkInventory"); } - void ClientFinishedReceivingActorItems(UPrimalInventoryComponent * forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems", forInventory, bEquippedItems); } - void ClientHUDNotificationTypeParams(int MessageType, int MessageType1, int MessageParam2, UObject * ObjectParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams", MessageType, MessageType1, MessageParam2, ObjectParam1); } - void ClientInsertActorItem(UPrimalInventoryComponent * forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem", forInventory, itemInfo, InsertAfterItemID); } + void ClientFinishedLoadArkItems(UPrimalInventoryComponent* forInventory) { NativeCall(this, "AShooterPlayerController.ClientFinishedLoadArkItems", forInventory); } + void ClientFinishedReceivingActorItems(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems", forInventory, bEquippedItems); } + void ClientGetMessageOfTheDay(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientGetMessageOfTheDay", Message); } + void ClientHUDNotificationTypeParams(int MessageType, int MessageType1, int MessageParam2, UObject* ObjectParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams", MessageType, MessageType1, MessageParam2, ObjectParam1); } + void ClientInsertActorItem(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem", forInventory, itemInfo, InsertAfterItemID); } + void ClientJoinVivoxChannel(FString* LoginSessionUserUri, FString* ChannelName, int AtlasChannelTypeAsInt, int AttenuationModelAsInt32, float MaxDistance, float MinDistance, float Rolloff) { NativeCall(this, "AShooterPlayerController.ClientJoinVivoxChannel", LoginSessionUserUri, ChannelName, AtlasChannelTypeAsInt, AttenuationModelAsInt32, MaxDistance, MinDistance, Rolloff); } + void ClientLoadArkItems(UPrimalInventoryComponent* forInventory, TArray* itemInfos, bool bClear, bool bFinalBatch) { NativeCall*, bool, bool>(this, "AShooterPlayerController.ClientLoadArkItems", forInventory, itemInfos, bClear, bFinalBatch); } + void ClientLoginToVivox(FString* VivoxUsername) { NativeCall(this, "AShooterPlayerController.ClientLoginToVivox", VivoxUsername); } void ClientNotifyAdmin() { NativeCall(this, "AShooterPlayerController.ClientNotifyAdmin"); } - void ClientNotifyDinoDeath(FString * DinoName, FString * AttackerName, bool bIsVehicle) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoDeath", DinoName, AttackerName, bIsVehicle); } - void ClientNotifyDinoKill(APrimalDinoCharacter * InstigatingPawn, APawn * VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill", InstigatingPawn, VictimPawn); } - void ClientNotifyEditText(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject * ForObject) { NativeCall, unsigned int, unsigned int, UObject *>(this, "AShooterPlayerController.ClientNotifyEditText", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ClientNotifyCantHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHarvest"); } + void ClientNotifyCantHitHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHitHarvest"); } + void ClientNotifyDefeatedDino(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyDefeatedDino", DinoClass); } + void ClientNotifyDinoDeath(FString* DinoName, FString* AttackerName, bool bIsVehicle) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoDeath", DinoName, AttackerName, bIsVehicle); } + void ClientNotifyDinoKill(APrimalDinoCharacter* InstigatingPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill", InstigatingPawn, VictimPawn); } + void ClientNotifyEditText(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ClientNotifyEditText", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ClientNotifyHitHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyHitHarvest"); } + void ClientNotifyLevelUp(APrimalCharacter* ForChar, int NewLevel) { NativeCall(this, "AShooterPlayerController.ClientNotifyLevelUp", ForChar, NewLevel); } void ClientNotifyListenServerOutOfRange() { NativeCall(this, "AShooterPlayerController.ClientNotifyListenServerOutOfRange"); } - void ClientNotifyMessageOfTheDay(FString * Message, float timeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay", Message, timeToDisplay); } - void ClientNotifyPlayerDeathReason(FString * ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason", ReasonString); } - void ClientNotifyPlayerKill(AActor * PlayerPawn, APawn * VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill", PlayerPawn, VictimPawn); } + void ClientNotifyMessageOfTheDay(FString* Message, float timeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay", Message, timeToDisplay); } + void ClientNotifyPaintFinished(bool bSuccess) { NativeCall(this, "AShooterPlayerController.ClientNotifyPaintFinished", bSuccess); } + void ClientNotifyPlayerDeath(APawn* InstigatingPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeath", InstigatingPawn); } + void ClientNotifyPlayerDeathReason(FString* ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason", ReasonString); } + void ClientNotifyPlayerKill(AActor* PlayerPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill", PlayerPawn, VictimPawn); } + void ClientNotifyRemotePlayerDeath(FString* PlayerName, FString* AttackerName) { NativeCall(this, "AShooterPlayerController.ClientNotifyRemotePlayerDeath", PlayerName, AttackerName); } + void ClientNotifySummonedDino(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifySummonedDino", DinoClass); } void ClientNotifyTamedDino(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyTamedDino", DinoClass); } + void ClientNotifyTorpidityIncrease() { NativeCall(this, "AShooterPlayerController.ClientNotifyTorpidityIncrease"); } + void ClientNotifyTribeXP(float HowMuch) { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeXP", HowMuch); } void ClientNotifyUnlockedEngram(TSubclassOf ItemClass, bool bTekGram) { NativeCall, bool>(this, "AShooterPlayerController.ClientNotifyUnlockedEngram", ItemClass, bTekGram); } - void ClientOnAddedItemsToAllClustersInventory(bool Success, FString * UserId, TArray * MasterIndexNum) { NativeCall *>(this, "AShooterPlayerController.ClientOnAddedItemsToAllClustersInventory", Success, UserId, MasterIndexNum); } - void ClientOnEndDownloadTransferredPlayerCharacter(bool Success, int FailureResponseCode, FString * FailureResponseMessage) { NativeCall(this, "AShooterPlayerController.ClientOnEndDownloadTransferredPlayerCharacter", Success, FailureResponseCode, FailureResponseMessage); } - void ClientPlayLocalSound(USoundBase * aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound", aSound, bAttach); } - void ClientReceiveDinoAncestors(APrimalDinoCharacter * ForDino, TArray * DinoAncestors, TArray * DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall *, TArray *, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } - void ClientReceiveTribeLog(FString * LogString) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeLog", LogString); } - void ClientRemoveItemFromSteamInventory(TArray * ItemSteamUserID, int Quantity) { NativeCall *, int>(this, "AShooterPlayerController.ClientRemoveItemFromSteamInventory", ItemSteamUserID, Quantity); } - void ClientSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString * DataClass, FString * TagName, FString * Name, TArray * DataStats, unsigned int ID1, unsigned int ID2) { NativeCall *, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } - void ClientServerChatDirectMessage(FString * MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage", MessageText, MessageColor, bIsBold); } - void ClientServerNotification(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } - void ClientServerSOTFNotificationCustom(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientNotifyUnlockHairStyleOrEmote(FName HairstyleOrEmoteName) { NativeCall(this, "AShooterPlayerController.ClientNotifyUnlockHairStyleOrEmote", HairstyleOrEmoteName); } + void ClientOnAddedItemsToAllClustersInventory(bool Success, FString* UserId, TArray* MasterIndexNum) { NativeCall*>(this, "AShooterPlayerController.ClientOnAddedItemsToAllClustersInventory", Success, UserId, MasterIndexNum); } + void ClientOnCurrentCharacterAndItemsUploaded(unsigned __int64 TransferringPlayerDataId) { NativeCall(this, "AShooterPlayerController.ClientOnCurrentCharacterAndItemsUploaded", TransferringPlayerDataId); } + void ClientOnDropAllNotReadyForUploadItemsFinished() { NativeCall(this, "AShooterPlayerController.ClientOnDropAllNotReadyForUploadItemsFinished"); } + void ClientOnEndDownloadTransferredPlayerCharacter(bool Success, int FailureResponseCode, FString* FailureResponseMessage) { NativeCall(this, "AShooterPlayerController.ClientOnEndDownloadTransferredPlayerCharacter", Success, FailureResponseCode, FailureResponseMessage); } + void ClientOnStartDownloadTransferredPlayerCharacter() { NativeCall(this, "AShooterPlayerController.ClientOnStartDownloadTransferredPlayerCharacter"); } + void ClientPlayerIsValidToDownload(bool bIsValid, FArkTributePlayerData PlayerData) { NativeCall(this, "AShooterPlayerController.ClientPlayerIsValidToDownload", bIsValid, PlayerData); } + void ClientPlayLocalSound(USoundBase* aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound", aSound, bAttach); } + void ClientReceiveDinoAncestors(APrimalDinoCharacter* ForDino, TArray* DinoAncestors, TArray* DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall*, TArray*, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } + void ClientReceiveDinoCharStats(APrimalDinoCharacter* theDinoChar, TArray* CurValues, TArray* MaxValues) { NativeCall*, TArray*>(this, "AShooterPlayerController.ClientReceiveDinoCharStats", theDinoChar, CurValues, MaxValues); } + void ClientReceiveMyTribeOnlineList(TArray* OnlinePlayerIDs) { NativeCall*>(this, "AShooterPlayerController.ClientReceiveMyTribeOnlineList", OnlinePlayerIDs); } + void ClientReceiveOriginalHairColor(FLinearColor HairColor) { NativeCall(this, "AShooterPlayerController.ClientReceiveOriginalHairColor", HairColor); } + void ClientReceiveTribeLog(FString* LogString) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeLog", LogString); } + void ClientRefreshSteamInventoryFinished(bool bSuccess) { NativeCall(this, "AShooterPlayerController.ClientRefreshSteamInventoryFinished", bSuccess); } + void ClientRemoveActorItem(UPrimalInventoryComponent* forInventory, FItemNetID itemID, bool showHUDMessage) { NativeCall(this, "AShooterPlayerController.ClientRemoveActorItem", forInventory, itemID, showHUDMessage); } + void ClientRemoveItemFromArk(UPrimalInventoryComponent* forInventory, FItemNetID RemovedItemID) { NativeCall(this, "AShooterPlayerController.ClientRemoveItemFromArk", forInventory, RemovedItemID); } + void ClientRemoveItemFromSteamInventory(TArray* ItemSteamUserID, int Quantity) { NativeCall*, int>(this, "AShooterPlayerController.ClientRemoveItemFromSteamInventory", ItemSteamUserID, Quantity); } + void ClientRequestSpectatorLocationAndRotation() { NativeCall(this, "AShooterPlayerController.ClientRequestSpectatorLocationAndRotation"); } + void ClientResetRespawningFlag() { NativeCall(this, "AShooterPlayerController.ClientResetRespawningFlag"); } + void ClientRunLocalConsoleCommand(FString* Command, bool bWriteToLog) { NativeCall(this, "AShooterPlayerController.ClientRunLocalConsoleCommand", Command, bWriteToLog); } + void ClientSendArkDataPayload(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ClientSendArkDataPayload", ID, ArkDataType, DataBytes); } + void ClientSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ClientSendArkDataPayloadEnd(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, unsigned __int64 PlayerDataID) { NativeCall(this, "AShooterPlayerController.ClientSendArkDataPayloadEnd", ID, ArkDataType, PlayerDataID); } + void ClientServerChatDirectMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage", MessageText, MessageColor, bIsBold); } + void ClientServerChatMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatMessage", MessageText, MessageColor, bIsBold); } + void ClientServerNotification(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientServerNotificationSingle(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int MessageTypeID) { NativeCall(this, "AShooterPlayerController.ClientServerNotificationSingle", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, MessageTypeID); } + void ClientServerSOTFNotificationCustom(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } void ClientSetArkTributeLimits(bool LimitItems, bool LimitDinos, bool LimitCharacters, int MaxItems, int MaxDinos, int MaxCharacters) { NativeCall(this, "AShooterPlayerController.ClientSetArkTributeLimits", LimitItems, LimitDinos, LimitCharacters, MaxItems, MaxDinos, MaxCharacters); } + void ClientSetControlRotation(FRotator NewRotation) { NativeCall(this, "AShooterPlayerController.ClientSetControlRotation", NewRotation); } void ClientSetHUDAndInitUIScenes(TSubclassOf NewHUDClass) { NativeCall>(this, "AShooterPlayerController.ClientSetHUDAndInitUIScenes", NewHUDClass); } - void ClientShowPaintingUI(UObject * ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI", ObjectToPaint); } - void ClientUnlockAchievement(FString * AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement", AchievementID); } - void ClientUpdateInventoryCraftQueue(UPrimalInventoryComponent * forInventory, TArray * CraftQueueEntries) { NativeCall *>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue", forInventory, CraftQueueEntries); } - void NotifyTribeWarStatus(FString * EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus", EnemyTribeString, StatusType); } - FString * PlayerCommand(FString * result, FString * TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand", result, TheCommand); } - void ServerActorCloseRemoteInventory(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory", inventoryComp); } - void ServerAddAchievementID(FString * AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID", AchievementID, bIsOnSpawn); } - void ServerAddItemToCustomFolder(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } - void ServerAllowPlayerToJoinNoCheck(FString * PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck", PlayerId); } - void ServerBanPlayer(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer", PlayerSteamName, PlayerSteamID); } + void ClientSetPersonalDinoTameCount(int NewPersonalDinoTameCount) { NativeCall(this, "AShooterPlayerController.ClientSetPersonalDinoTameCount", NewPersonalDinoTameCount); } + void ClientSetSpectatorLocation(FVector NewLocation) { NativeCall(this, "AShooterPlayerController.ClientSetSpectatorLocation", NewLocation); } + void ClientShowCharacterCreationUI(bool bShowDownloadCharacter) { NativeCall(this, "AShooterPlayerController.ClientShowCharacterCreationUI", bShowDownloadCharacter); } + void ClientShowLeaderboard(TSubclassOf LeaderboardType, FName MissionTag, TArray* LeaderboardRows, bool bPlayerHasValidLatestScore, FLeaderboardRow LatestPlayerScore) { NativeCall, FName, TArray*, bool, FLeaderboardRow>(this, "AShooterPlayerController.ClientShowLeaderboard", LeaderboardType, MissionTag, LeaderboardRows, bPlayerHasValidLatestScore, LatestPlayerScore); } + void ClientShowPaintingUI(UObject* ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI", ObjectToPaint); } + void ClientShowSpawnUI(float Delay) { NativeCall(this, "AShooterPlayerController.ClientShowSpawnUI", Delay); } + void ClientShowSpawnUIForTransferringPlayer(TSubclassOf NewHUDClass, unsigned __int64 TransferingPlayerID, bool bUseTimer) { NativeCall, unsigned __int64, bool>(this, "AShooterPlayerController.ClientShowSpawnUIForTransferringPlayer", NewHUDClass, TransferingPlayerID, bUseTimer); } + void ClientShowTransferredPlayerConfirmationDialog() { NativeCall(this, "AShooterPlayerController.ClientShowTransferredPlayerConfirmationDialog"); } + void ClientStartReceivingActorItems(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientStartReceivingActorItems", forInventory, bEquippedItems); } + void ClientStartReceivingTribeLog() { NativeCall(this, "AShooterPlayerController.ClientStartReceivingTribeLog"); } + void ClientStartSurfaceCameraForPassenger(float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "AShooterPlayerController.ClientStartSurfaceCameraForPassenger", yaw, pitch, roll, bInvertTurnInput); } + void ClientStopLocalSound(USoundBase* aSound) { NativeCall(this, "AShooterPlayerController.ClientStopLocalSound", aSound); } + void ClientSwapActorItems(UPrimalInventoryComponent* forInventory, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ClientSwapActorItems", forInventory, itemID1, itemID2); } + void ClientTeleportSpectator(FVector Location, unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ClientTeleportSpectator", Location, PlayerID); } + void ClientUnlockAchievement(FString* AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement", AchievementID); } + void ClientUnlockExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ClientUnlockExplorerNote", ExplorerNoteIndex); } + void ClientUpdateInventoryCraftQueue(UPrimalInventoryComponent* forInventory, TArray* CraftQueueEntries) { NativeCall*>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue", forInventory, CraftQueueEntries); } + void ClientUpdateItemDurability(UPrimalInventoryComponent* forInventory, FItemNetID itemID, float ItemDurability) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemDurability", forInventory, itemID, ItemDurability); } + void ClientUpdateItemQuantity(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int ItemQuantity) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemQuantity", forInventory, itemID, ItemQuantity); } + void ClientUpdateItemWeaponClipAmmo(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int Ammo) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemWeaponClipAmmo", forInventory, itemID, Ammo); } + void ClientUploadedCharactersLoaded(bool Success, TArray* UploadedCharactersDataListings) { NativeCall*>(this, "AShooterPlayerController.ClientUploadedCharactersLoaded", Success, UploadedCharactersDataListings); } + void ClientUploadedDinosLoaded(TArray* UploadedDinosDataListings) { NativeCall*>(this, "AShooterPlayerController.ClientUploadedDinosLoaded", UploadedDinosDataListings); } + void ClientUsedActorItem(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientUsedActorItem", forInventory, itemID); } + void DoServerCheckUnfreeze() { NativeCall(this, "AShooterPlayerController.DoServerCheckUnfreeze"); } + void InitCharacterPainting(APrimalCharacter* Char) { NativeCall(this, "AShooterPlayerController.InitCharacterPainting", Char); } + void NotifyTribeWarStatus(FString* EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus", EnemyTribeString, StatusType); } + void OnDisableSpectator() { NativeCall(this, "AShooterPlayerController.OnDisableSpectator"); } + FString* PlayerCommand(FString* result, FString* TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand", result, TheCommand); } + void PlayHitMarkerStructure() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructure"); } + void PlayHitMarkerStructureAlly() { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructureAlly"); } + void RPCStayAlive() { NativeCall(this, "AShooterPlayerController.RPCStayAlive"); } + void Server_Ping(FReplicatePingData WithPingData) { NativeCall(this, "AShooterPlayerController.Server_Ping", WithPingData); } + void Server_RespondToPing(FReplicatePingData RespondToPingData) { NativeCall(this, "AShooterPlayerController.Server_RespondToPing", RespondToPingData); } + void ServerActorCloseRemoteInventory(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory", inventoryComp); } + void ServerActorViewRemoteInventory(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorViewRemoteInventory", inventoryComp); } + void ServerAddAchievementID(FString* AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID", AchievementID, bIsOnSpawn); } + void ServerAddItemFromArkInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemFromArkInventory", inventoryComp, itemID, requestedQuantity); } + void ServerAddItemToArkInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerAddItemToArkInventory", inventoryComp, itemID, requestedQuantity); } + void ServerAddItemToCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerAllowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck", PlayerId); } + void ServerAsyncLoadArkInventoryItems(TArray* ArkInventoryItems, bool bFinalBatch) { NativeCall*, bool>(this, "AShooterPlayerController.ServerAsyncLoadArkInventoryItems", ArkInventoryItems, bFinalBatch); } + void ServerBanPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer", PlayerSteamName, PlayerSteamID); } + void ServerCharacterUploadWithItems_CharaterPayload(unsigned __int64 PlayerDataId, TArray* PlayerDataChunk) { NativeCall*>(this, "AShooterPlayerController.ServerCharacterUploadWithItems_CharaterPayload", PlayerDataId, PlayerDataChunk); } + void ServerCharacterUploadWithItems_FinishAndCreateCharacter(unsigned __int64 PlayerDataId) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_FinishAndCreateCharacter", PlayerDataId); } + void ServerCharacterUploadWithItems_Start(unsigned __int64 PlayerDataId, FArkTributePlayerData PlayerData) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_Start", PlayerDataId, PlayerData); } void ServerCharacterUploadWithItems_UploadItem(unsigned __int64 PlayerDataId, FItemNetInfo InvItem) { NativeCall(this, "AShooterPlayerController.ServerCharacterUploadWithItems_UploadItem", PlayerDataId, InvItem); } - void ServerCraftItem(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem", inventoryComp, itemID); } - void ServerDeleteCustomFolder(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder", forInventory, CFolderName, InventoryCompType); } - void ServerDeleteItemFromCustomFolder(UPrimalInventoryComponent * forInventory, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } - void ServerDisallowPlayerToJoinNoCheck(FString * PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck", PlayerId); } + void ServerCheckUnfreeze() { NativeCall(this, "AShooterPlayerController.ServerCheckUnfreeze"); } + void ServerCraftItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem", inventoryComp, itemID); } + void ServerCycleSpectator(bool bNext) { NativeCall(this, "AShooterPlayerController.ServerCycleSpectator", bNext); } + void ServerDeleteCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder", forInventory, CFolderName, InventoryCompType); } + void ServerDeleteItemFromCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerDisallowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck", PlayerId); } + void ServerDownloadTransferredPlayer(int spawnPointID, int spawnPointRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerDownloadTransferredPlayer", spawnPointID, spawnPointRegionIndex); } void ServerDPC() { NativeCall(this, "AShooterPlayerController.ServerDPC"); } - void ServerDropFromRemoteInventory(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory", inventoryComp, itemID); } + void ServerDropAllNotReadyForUploadItems() { NativeCall(this, "AShooterPlayerController.ServerDropAllNotReadyForUploadItems"); } + void ServerDropFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory", inventoryComp, itemID); } void ServerEquipPawnItem(FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipPawnItem", itemID); } - void ServerEquipToRemoteInventory(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory", inventoryComp, itemID); } - void ServerKickPlayer(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer", PlayerSteamName, PlayerSteamID); } - void ServerMultiUse(UObject * ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse", ForObject, useIndex); } + void ServerEquipToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory", inventoryComp, itemID); } + void ServerGetMessageOfTheDay() { NativeCall(this, "AShooterPlayerController.ServerGetMessageOfTheDay"); } + void ServerGetOriginalHairColor() { NativeCall(this, "AShooterPlayerController.ServerGetOriginalHairColor"); } + void ServerGlobalCommand(FString* Msg) { NativeCall(this, "AShooterPlayerController.ServerGlobalCommand", Msg); } + void ServerGrindItemInRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool grindStack) { NativeCall(this, "AShooterPlayerController.ServerGrindItemInRemoteInventory", inventoryComp, itemID, grindStack); } + void ServerInventoryClearCraftQueue(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerInventoryClearCraftQueue", inventoryComp); } + void ServerKickPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer", PlayerSteamName, PlayerSteamID); } + void ServerLoadArkInventoryItems(TArray* ArkInventoryItems, bool bFinalBatch) { NativeCall*, bool>(this, "AShooterPlayerController.ServerLoadArkInventoryItems", ArkInventoryItems, bFinalBatch); } + void ServerLoadUploadedCharacters() { NativeCall(this, "AShooterPlayerController.ServerLoadUploadedCharacters"); } + void ServerLoadUploadedDinos() { NativeCall(this, "AShooterPlayerController.ServerLoadUploadedDinos"); } + void ServerLoginToVivox() { NativeCall(this, "AShooterPlayerController.ServerLoginToVivox"); } + void ServerMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse", ForObject, useIndex); } + void ServerNotifyEditText(FString* TextToUse, bool checkedBox, TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ServerNotifyEditText", TextToUse, checkedBox, ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ServerPaint(UStructurePaintingComponent* Structure, TArray* Paints, bool bLastBatch, bool bFromLoadFile) { NativeCall*, bool, bool>(this, "AShooterPlayerController.ServerPaint", Structure, Paints, bLastBatch, bFromLoadFile); } + void ServerReadMessageOFTheDay() { NativeCall(this, "AShooterPlayerController.ServerReadMessageOFTheDay"); } + void ServerRecieveSpectatorLocationAndRotation(FVector spectatorLocation, FRotator spectatorRotation) { NativeCall(this, "AShooterPlayerController.ServerRecieveSpectatorLocationAndRotation", spectatorLocation, spectatorRotation); } + void ServerRefreshSteamInventory() { NativeCall(this, "AShooterPlayerController.ServerRefreshSteamInventory"); } + void ServerReleaseSeatingStructure() { NativeCall(this, "AShooterPlayerController.ServerReleaseSeatingStructure"); } void ServerRemovePassenger() { NativeCall(this, "AShooterPlayerController.ServerRemovePassenger"); } void ServerRemovePawnItem(FItemNetID itemID, bool bSecondryAction) { NativeCall(this, "AShooterPlayerController.ServerRemovePawnItem", itemID, bSecondryAction); } - void ServerRepairItem(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem", inventoryComp, itemID); } - void ServerRequestInventorySwapItems(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems", inventoryComp, itemID1, itemID2); } - void ServerRequestInventoryUseItem(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem", inventoryComp, itemID); } - void ServerRequestInventoryUseItemWithActor(AActor * anActor, UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor", anActor, inventoryComp, itemID1, AdditionalData); } - void ServerRequestInventoryUseItemWithItem(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem", inventoryComp, itemID1, itemID2, AdditionalData); } - void ServerRequestRemoveWeaponClipAmmo(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo", inventoryComp, itemID); } - void ServerRequestSetPin(UObject * forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin", forTarget, PinValue, bIsSetting, TheCustomIndex); } - void ServerSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString * DataClass, FString * TagName, FString * Name, TArray * DataStats, unsigned int ID1, unsigned int ID2) { NativeCall *, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } - void ServerSendChatMessage(FString * ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage", ChatMessage, SendMode); } - void ServerSendDirectMessage(FString * PlayerSteamID, FString * Message) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage", PlayerSteamID, Message); } - void ServerTransferAllFromRemoteInventory(UPrimalInventoryComponent * inventoryComp, FString * CurrentCustomFolderFilter, FString * CurrentNameFilter, FString * CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } - void ServerTransferAllToRemoteInventory(UPrimalInventoryComponent * inventoryComp, FString * CurrentCustomFolderFilter, FString * CurrentNameFilter, FString * CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } - void ServerTransferFromRemoteInventory(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } - void ServerTransferToRemoteInventory(UPrimalInventoryComponent * inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } - void ServerUnbanPlayer(FString * PlayerSteamName, FString * PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer", PlayerSteamName, PlayerSteamID); } - void ServerUploadCurrentCharacterAndItems(UPrimalInventoryComponent * inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCurrentCharacterAndItems", inventoryComp); } + void ServerRemoveSteamItemSucceeded() { NativeCall(this, "AShooterPlayerController.ServerRemoveSteamItemSucceeded"); } + void ServerRepairItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem", inventoryComp, itemID); } + void ServerRepeatMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerRepeatMultiUse", ForObject, useIndex); } + void ServerRequestActorItems(UPrimalInventoryComponent* forInventory, bool bInventoryItems, bool bIsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ServerRequestActorItems", forInventory, bInventoryItems, bIsFirstSpawn); } + void ServerRequestCreateMissionDataBuff() { NativeCall(this, "AShooterPlayerController.ServerRequestCreateMissionDataBuff"); } + void ServerRequestDinoAncestors(APrimalDinoCharacter* ForDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoAncestors", ForDino); } + void ServerRequestDownloadDino(FARKTributeDino DownloadedDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDownloadDino", DownloadedDino); } + void ServerRequestDownloadPlayerCharacter(FArkTributePlayerData DownloadedCharacter, int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestDownloadPlayerCharacter", DownloadedCharacter, spawnPointID, spawnRegionIndex); } + void ServerRequestDropAllItems(FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestDropAllItems", CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestFastTravelToPoint(int fromSpawnPointID, int spawnPointID) { NativeCall(this, "AShooterPlayerController.ServerRequestFastTravelToPoint", fromSpawnPointID, spawnPointID); } + void ServerRequestInventorySwapItems(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems", inventoryComp, itemID1, itemID2); } + void ServerRequestInventoryUseItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem", inventoryComp, itemID); } + void ServerRequestInventoryUseItemWithActor(AActor* anActor, UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor", anActor, inventoryComp, itemID1, AdditionalData); } + void ServerRequestInventoryUseItemWithItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem", inventoryComp, itemID1, itemID2, AdditionalData); } + void ServerRequestLevelUp(UPrimalCharacterStatusComponent* forStatusComp, EPrimalCharacterStatusValue::Type ValueType) { NativeCall(this, "AShooterPlayerController.ServerRequestLevelUp", forStatusComp, ValueType); } + void ServerRequestMyTribeOnlineList() { NativeCall(this, "AShooterPlayerController.ServerRequestMyTribeOnlineList"); } + void ServerRequestPlaceStructure(int StructureIndex, FVector BuildLocation, FRotator BuildRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, APrimalDinoCharacter* DinoCharacter, FName BoneName, FItemNetID PlaceUsingItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle) { NativeCall(this, "AShooterPlayerController.ServerRequestPlaceStructure", StructureIndex, BuildLocation, BuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, PlaceUsingItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle); } + void ServerRequestRemoteDropAllItems(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoteDropAllItems", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestRemoveItemSkin(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkin", inventoryComp, itemID); } + void ServerRequestRemoveItemSkinOnly(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkinOnly", inventoryComp, itemID); } + void ServerRequestRemoveWeaponAccessoryOnly(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponAccessoryOnly", inventoryComp, itemID); } + void ServerRequestRemoveWeaponClipAmmo(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo", inventoryComp, itemID); } + void ServerRequestRespawnAtPoint(int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestRespawnAtPoint", spawnPointID, spawnRegionIndex); } + void ServerRequestSetPin(UObject* forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin", forTarget, PinValue, bIsSetting, TheCustomIndex); } + void ServerRequestShowLeaderboards(TSubclassOf LeaderboardType, FName MissionTag) { NativeCall, FName>(this, "AShooterPlayerController.ServerRequestShowLeaderboards", LeaderboardType, MissionTag); } + void ServerRequestTribeLog() { NativeCall(this, "AShooterPlayerController.ServerRequestTribeLog"); } + void ServerSendArkDataPayload(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ServerSendArkDataPayload", ID, ArkDataType, DataBytes); } + void ServerSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ServerSendArkDataPayloadEnd(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType) { NativeCall(this, "AShooterPlayerController.ServerSendArkDataPayloadEnd", ID, ArkDataType); } + void ServerSendChatMessage(FString* ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage", ChatMessage, SendMode); } + void ServerSendDirectMessage(FString* PlayerSteamID, FString* Message) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage", PlayerSteamID, Message); } + void ServerSetSubscribedApp(int AppID, bool bPreventDefaultItems) { NativeCall(this, "AShooterPlayerController.ServerSetSubscribedApp", AppID, bPreventDefaultItems); } + void ServerSetSupressAdminIcon(bool bSuppress) { NativeCall(this, "AShooterPlayerController.ServerSetSupressAdminIcon", bSuppress); } + void ServerSetVRPlayer(bool bSetVRPlayer) { NativeCall(this, "AShooterPlayerController.ServerSetVRPlayer", bSetVRPlayer); } + void ServerSpectateToPlayerByID(unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ServerSpectateToPlayerByID", PlayerID); } + void ServerStartWeaponAltFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponAltFire", weapon); } + void ServerStartWeaponFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponFire", weapon); } + void ServerStayAlive() { NativeCall(this, "AShooterPlayerController.ServerStayAlive"); } + void ServerStopSpectating() { NativeCall(this, "AShooterPlayerController.ServerStopSpectating"); } + void ServerStopWeaponAltFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponAltFire", weapon); } + void ServerStopWeaponFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponFire", weapon); } + void ServerSuccessfullyLoggedIntoVivox(FString* LoginSessionUserUri) { NativeCall(this, "AShooterPlayerController.ServerSuccessfullyLoggedIntoVivox", LoginSessionUserUri); } + void ServerTransferAllFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferAllToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } + void ServerTransferredPlayerConfirmationResult(bool bAccept) { NativeCall(this, "AShooterPlayerController.ServerTransferredPlayerConfirmationResult", bAccept); } + void ServerTransferToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } + void ServerUnbanPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer", PlayerSteamName, PlayerSteamID); } + void ServerUnlockPerMapExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ServerUnlockPerMapExplorerNote", ExplorerNoteIndex); } + void ServerUploadCharaterDataToArk(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCharaterDataToArk", inventoryComp); } + void ServerUploadCurrentCharacterAndItems(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCurrentCharacterAndItems", inventoryComp); } + void ServerUploadDino(APrimalDinoCharacter* DownloadedDino) { NativeCall(this, "AShooterPlayerController.ServerUploadDino", DownloadedDino); } + + // Enums + + enum CharacterTransferState + { + CTS_None = 0x0, + CTS_Transferring = 0x1, + CTS_Downloading = 0x2, + CTS_Done = 0x3, + }; }; struct ACharacter : APawn @@ -2389,11 +3352,14 @@ struct ACharacter : APawn float& LeftDynamicActorBaseTimeField() { return *GetNativePointerField(this, "ACharacter.LeftDynamicActorBaseTime"); } float& CrouchedEyeHeightField() { return *GetNativePointerField(this, "ACharacter.CrouchedEyeHeight"); } float& ProneEyeHeightField() { return *GetNativePointerField(this, "ACharacter.ProneEyeHeight"); } - TArray CharacterOverrideSoundFromField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundFrom"); } - TArray CharacterOverrideSoundToField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundTo"); } + float& HarvestingDestructionMeshRangeMultiplerField() { return *GetNativePointerField(this, "ACharacter.HarvestingDestructionMeshRangeMultipler"); } + TArray CharacterOverrideSoundFromField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundFrom"); } + TArray CharacterOverrideSoundToField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundTo"); } bool& bInBaseReplicationField() { return *GetNativePointerField(this, "ACharacter.bInBaseReplication"); } float& JumpKeyHoldTimeField() { return *GetNativePointerField(this, "ACharacter.JumpKeyHoldTime"); } float& JumpMaxHoldTimeField() { return *GetNativePointerField(this, "ACharacter.JumpMaxHoldTime"); } + float& ExtraMaxAccelerationModifierField() { return *GetNativePointerField(this, "ACharacter.ExtraMaxAccelerationModifier"); } + float& ExtraFrictionModifierField() { return *GetNativePointerField(this, "ACharacter.ExtraFrictionModifier"); } int& LastTeleportedFrameField() { return *GetNativePointerField(this, "ACharacter.LastTeleportedFrame"); } long double& ForceUnfreezeSkeletalDynamicsUntilTimeField() { return *GetNativePointerField(this, "ACharacter.ForceUnfreezeSkeletalDynamicsUntilTime"); } @@ -2416,21 +3382,35 @@ struct ACharacter : APawn BitFieldValue bCanBePushed() { return { this, "ACharacter.bCanBePushed" }; } BitFieldValue bCanPushOthers() { return { this, "ACharacter.bCanPushOthers" }; } BitFieldValue bSetDefaultMovementMode() { return { this, "ACharacter.bSetDefaultMovementMode" }; } + BitFieldValue bOverrideWalkingVelocity() { return { this, "ACharacter.bOverrideWalkingVelocity" }; } + BitFieldValue bOverrideSwimmingVelocity() { return { this, "ACharacter.bOverrideSwimmingVelocity" }; } BitFieldValue bOverrideNewFallVelocity() { return { this, "ACharacter.bOverrideNewFallVelocity" }; } + BitFieldValue bOverrideFlyingVelocity() { return { this, "ACharacter.bOverrideFlyingVelocity" }; } BitFieldValue bPreventWaterHopCorrectionVelChange() { return { this, "ACharacter.bPreventWaterHopCorrectionVelChange" }; } + BitFieldValue bUsesRootMotion() { return { this, "ACharacter.bUsesRootMotion" }; } + BitFieldValue bBasedUsesFastPathSMCTick() { return { this, "ACharacter.bBasedUsesFastPathSMCTick" }; } + BitFieldValue bBasedUsesFastPathMoveTick() { return { this, "ACharacter.bBasedUsesFastPathMoveTick" }; } + BitFieldValue bForceUnfreezeIkNextFrame() { return { this, "ACharacter.bForceUnfreezeIkNextFrame" }; } // Functions - void SetLastMovementDesiredRotation(FRotator * InRotation) { NativeCall(this, "ACharacter.SetLastMovementDesiredRotation", InRotation); } - bool NotifyLanded(FHitResult * Hit) { return NativeCall(this, "ACharacter.NotifyLanded", Hit); } + bool NotifyLanded(FHitResult* Hit) { return NativeCall(this, "ACharacter.NotifyLanded", Hit); } bool IsJumping() { return NativeCall(this, "ACharacter.IsJumping"); } - UPrimitiveComponent * GetMovementBase() { return NativeCall(this, "ACharacter.GetMovementBase"); } + float ModifyAirControl(float Damage, FPointDamageEvent* PointDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "ACharacter.ModifyAirControl", Damage, PointDamageEvent, EventInstigator, DamageCauser); } + UPrimitiveComponent* GetMovementBase() { return NativeCall(this, "ACharacter.GetMovementBase"); } + void SetLastMovementDesiredRotation(FRotator* InRotation) { NativeCall(this, "ACharacter.SetLastMovementDesiredRotation", InRotation); } + bool AllowOverrideFlyingVelocity() { return NativeCall(this, "ACharacter.AllowOverrideFlyingVelocity"); } + bool AllowOverrideNewFallVelocity() { return NativeCall(this, "ACharacter.AllowOverrideNewFallVelocity"); } + bool AllowOverrideSwimmingVelocity() { return NativeCall(this, "ACharacter.AllowOverrideSwimmingVelocity"); } + bool AllowOverrideWalkingVelocity() { return NativeCall(this, "ACharacter.AllowOverrideWalkingVelocity"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "ACharacter.GetPrivateStaticClass"); } + FRotator* BPModifyRootMotionDeltaRotation_Implementation(FRotator* result, FRotator* Delta) { return NativeCall(this, "ACharacter.BPModifyRootMotionDeltaRotation_Implementation", result, Delta); } void PostInitializeComponents() { NativeCall(this, "ACharacter.PostInitializeComponents"); } - void GetSimpleCollisionCylinder(float * CollisionRadius, float * CollisionHalfHeight) { NativeCall(this, "ACharacter.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } - void ApplyWorldOffset(FVector * InOffset, bool bWorldShift) { NativeCall(this, "ACharacter.ApplyWorldOffset", InOffset, bWorldShift); } + void GetSimpleCollisionCylinder(float* CollisionRadius, float* CollisionHalfHeight) { NativeCall(this, "ACharacter.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "ACharacter.ApplyWorldOffset", InOffset, bWorldShift); } float GetDefaultHalfHeight() { return NativeCall(this, "ACharacter.GetDefaultHalfHeight"); } - UActorComponent * FindComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "ACharacter.FindComponentByClass", ComponentClass); } - void Landed(FHitResult * Hit) { NativeCall(this, "ACharacter.Landed", Hit); } + UActorComponent* FindComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "ACharacter.FindComponentByClass", ComponentClass); } + void Landed(FHitResult* Hit) { NativeCall(this, "ACharacter.Landed", Hit); } bool CanJump() { return NativeCall(this, "ACharacter.CanJump"); } bool CanJumpInternal_Implementation() { return NativeCall(this, "ACharacter.CanJumpInternal_Implementation"); } bool DoJump(bool bReplayingMoves) { return NativeCall(this, "ACharacter.DoJump", bReplayingMoves); } @@ -2445,22 +3425,22 @@ struct ACharacter : APawn void UnProne(bool bClientSimulation) { NativeCall(this, "ACharacter.UnProne", bClientSimulation); } void OnEndCrouch(float HeightAdjust, float ScaledHeightAdjust) { NativeCall(this, "ACharacter.OnEndCrouch", HeightAdjust, ScaledHeightAdjust); } void OnStartCrouch(float HeightAdjust, float ScaledHeightAdjust) { NativeCall(this, "ACharacter.OnStartCrouch", HeightAdjust, ScaledHeightAdjust); } - void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "ACharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "ACharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } void TeleportSucceeded(bool bIsATest, bool bSimpleTeleport) { NativeCall(this, "ACharacter.TeleportSucceeded", bIsATest, bSimpleTeleport); } void NetTeleportSucceeded_Implementation(FVector ToLoc, FRotator ToRot) { NativeCall(this, "ACharacter.NetTeleportSucceeded_Implementation", ToLoc, ToRot); } void ClearCrossLevelReferences() { NativeCall(this, "ACharacter.ClearCrossLevelReferences"); } - void SetBase(UPrimitiveComponent * NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "ACharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } + void SetBase(UPrimitiveComponent* NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "ACharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } bool IsBasedOnDynamicActor() { return NativeCall(this, "ACharacter.IsBasedOnDynamicActor"); } void TurnOff() { NativeCall(this, "ACharacter.TurnOff"); } void Restart() { NativeCall(this, "ACharacter.Restart"); } void PawnClientRestart() { NativeCall(this, "ACharacter.PawnClientRestart"); } - void PossessedBy(AController * NewController) { NativeCall(this, "ACharacter.PossessedBy", NewController); } + void PossessedBy(AController* NewController) { NativeCall(this, "ACharacter.PossessedBy", NewController); } void UnPossessed() { NativeCall(this, "ACharacter.UnPossessed"); } void TornOff() { NativeCall(this, "ACharacter.TornOff"); } void BaseChange() { NativeCall(this, "ACharacter.BaseChange"); } void LaunchCharacter(FVector LaunchVelocity, bool bXYOverride, bool bZOverride) { NativeCall(this, "ACharacter.LaunchCharacter", LaunchVelocity, bXYOverride, bZOverride); } void OnMovementModeChanged(EMovementMode PrevMovementMode, char PrevCustomMode) { NativeCall(this, "ACharacter.OnMovementModeChanged", PrevMovementMode, PrevCustomMode); } - bool ShouldNotifyLanded(FHitResult * Hit) { return NativeCall(this, "ACharacter.ShouldNotifyLanded", Hit); } + bool ShouldNotifyLanded(FHitResult* Hit) { return NativeCall(this, "ACharacter.ShouldNotifyLanded", Hit); } void Jump() { NativeCall(this, "ACharacter.Jump"); } void StopJumping() { NativeCall(this, "ACharacter.StopJumping"); } void CheckJumpInput(float DeltaTime) { NativeCall(this, "ACharacter.CheckJumpInput", DeltaTime); } @@ -2471,72 +3451,82 @@ struct ACharacter : APawn void OnRep_ReplicatedBasedMovement() { NativeCall(this, "ACharacter.OnRep_ReplicatedBasedMovement"); } void OnRep_ReplicatedMovement() { NativeCall(this, "ACharacter.OnRep_ReplicatedMovement"); } void OnRep_RootMotion() { NativeCall(this, "ACharacter.OnRep_RootMotion"); } - void SimulatedRootMotionPositionFixup(float DeltaSeconds) { NativeCall(this, "ACharacter.SimulatedRootMotionPositionFixup", DeltaSeconds); } - void UpdateSimulatedPosition(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "ACharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } + void UpdateSimulatedPosition(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "ACharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } void PostNetReceiveLocationAndRotation() { NativeCall(this, "ACharacter.PostNetReceiveLocationAndRotation"); } - bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "ACharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } - bool SimpleTeleportTo(FVector * DestLocation, FRotator * DestRotation) { return NativeCall(this, "ACharacter.SimpleTeleportTo", DestLocation, DestRotation); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "ACharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "ACharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + bool SimpleTeleportTo(FVector* DestLocation, FRotator* DestRotation) { return NativeCall(this, "ACharacter.SimpleTeleportTo", DestLocation, DestRotation); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "ACharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } bool IsPlayingRootMotion() { return NativeCall(this, "ACharacter.IsPlayingRootMotion"); } - USoundBase * BPOverrideCharacterSound_Implementation(USoundBase * SoundIn) { return NativeCall(this, "ACharacter.BPOverrideCharacterSound_Implementation", SoundIn); } - float PlayAnimMontage(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "ACharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } - void StopAnimMontage(UAnimMontage * AnimMontage) { NativeCall(this, "ACharacter.StopAnimMontage", AnimMontage); } - UAnimMontage * GetCurrentMontage() { return NativeCall(this, "ACharacter.GetCurrentMontage"); } + USoundBase* BPOverrideCharacterSound_Implementation(USoundBase* SoundIn) { return NativeCall(this, "ACharacter.BPOverrideCharacterSound_Implementation", SoundIn); } + float PlayAnimMontage(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, float BlendInTime, float BlendOutTime) { return NativeCall(this, "ACharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, BlendInTime, BlendOutTime); } + void StopAnimMontage(UAnimMontage* AnimMontage) { NativeCall(this, "ACharacter.StopAnimMontage", AnimMontage); } + UAnimMontage* GetCurrentMontage() { return NativeCall(this, "ACharacter.GetCurrentMontage"); } void ClientCheatWalk_Implementation() { NativeCall(this, "ACharacter.ClientCheatWalk_Implementation"); } void ClientCheatFly_Implementation() { NativeCall(this, "ACharacter.ClientCheatFly_Implementation"); } void ClientCheatGhost_Implementation() { NativeCall(this, "ACharacter.ClientCheatGhost_Implementation"); } bool ShouldReplicateRotPitch() { return NativeCall(this, "ACharacter.ShouldReplicateRotPitch"); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "ACharacter.GetPrivateStaticClass"); } + float OverrideTerminalVelocity(bool bIgnoreTrueBlack, bool bUseGrayscale) { return NativeCall(this, "ACharacter.OverrideTerminalVelocity", bIgnoreTrueBlack, bUseGrayscale); } + static void StaticRegisterNativesACharacter() { NativeCall(nullptr, "ACharacter.StaticRegisterNativesACharacter"); } + bool BP_PreventMovementMode(EMovementMode newMovementMode, char newCustomMode) { return NativeCall(this, "ACharacter.BP_PreventMovementMode", newMovementMode, newCustomMode); } + FRotator* BPModifyRootMotionDeltaRotation(FRotator* result, FRotator* Delta) { return NativeCall(this, "ACharacter.BPModifyRootMotionDeltaRotation", result, Delta); } void K2_OnEndCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "ACharacter.K2_OnEndCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } void K2_OnMovementModeChanged(EMovementMode PrevMovementMode, EMovementMode NewMovementMode, char PrevCustomMode, char NewCustomMode) { NativeCall(this, "ACharacter.K2_OnMovementModeChanged", PrevMovementMode, NewMovementMode, PrevCustomMode, NewCustomMode); } void K2_OnStartCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "ACharacter.K2_OnStartCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } void K2_UpdateCustomMovement(float DeltaTime) { NativeCall(this, "ACharacter.K2_UpdateCustomMovement", DeltaTime); } void OnJumped() { NativeCall(this, "ACharacter.OnJumped"); } - void OnLanded(FHitResult * Hit) { NativeCall(this, "ACharacter.OnLanded", Hit); } + void OnLanded(FHitResult* Hit) { NativeCall(this, "ACharacter.OnLanded", Hit); } void OnLaunched(FVector LaunchVelocity, bool bXYOverride, bool bZOverride) { NativeCall(this, "ACharacter.OnLaunched", LaunchVelocity, bXYOverride, bZOverride); } void OnWalkingOffLedge() { NativeCall(this, "ACharacter.OnWalkingOffLedge"); } + bool ReplicateMovementToSimulatedClients() { return NativeCall(this, "ACharacter.ReplicateMovementToSimulatedClients"); } }; struct APrimalCharacter : ACharacter { - FVector& OldLocationField() { return *GetNativePointerField(this, "APrimalCharacter.OldLocation"); } - FRotator& OldRotationField() { return *GetNativePointerField(this, "APrimalCharacter.OldRotation"); } + FVector & OldLocationField() { return *GetNativePointerField(this, "APrimalCharacter.OldLocation"); } + FRotator & OldRotationField() { return *GetNativePointerField(this, "APrimalCharacter.OldRotation"); } float& EffectorInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.EffectorInterpSpeed"); } float& HalfLegLengthField() { return *GetNativePointerField(this, "APrimalCharacter.HalfLegLength"); } float& TwoLeggedVirtualPointDistFactorField() { return *GetNativePointerField(this, "APrimalCharacter.TwoLeggedVirtualPointDistFactor"); } float& FullIKDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.FullIKDistance"); } + float& IKAfterFallingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.IKAfterFallingTime"); } float& SimpleIkRateField() { return *GetNativePointerField(this, "APrimalCharacter.SimpleIkRate"); } - FVector& GroundCheckExtentField() { return *GetNativePointerField(this, "APrimalCharacter.GroundCheckExtent"); } + FVector & GroundCheckExtentField() { return *GetNativePointerField(this, "APrimalCharacter.GroundCheckExtent"); } long double& LastForceAimedCharactersTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceAimedCharactersTime"); } - UAnimMontage * JumpAnimField() { return *GetNativePointerField(this, "APrimalCharacter.JumpAnim"); } - UAnimMontage * LandedAnimField() { return *GetNativePointerField(this, "APrimalCharacter.LandedAnim"); } - UAnimMontage * HurtAnimField() { return *GetNativePointerField(this, "APrimalCharacter.HurtAnim"); } - UAnimMontage * PinnedAnimField() { return *GetNativePointerField(this, "APrimalCharacter.PinnedAnim"); } - USoundCue * HurtSoundField() { return *GetNativePointerField(this, "APrimalCharacter.HurtSound"); } - FName& RootBodyBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.RootBodyBoneName"); } - TArray BuffsField() { return *GetNativePointerField*>(this, "APrimalCharacter.Buffs"); } - FString& TribeNameField() { return *GetNativePointerField(this, "APrimalCharacter.TribeName"); } + UAnimMontage * JumpAnimField() { return *GetNativePointerField(this, "APrimalCharacter.JumpAnim"); } + UAnimMontage * LandedAnimField() { return *GetNativePointerField(this, "APrimalCharacter.LandedAnim"); } + UAnimMontage * HurtAnimField() { return *GetNativePointerField(this, "APrimalCharacter.HurtAnim"); } + UAnimMontage * HurtAnim_FlyingField() { return *GetNativePointerField(this, "APrimalCharacter.HurtAnim_Flying"); } + UAnimMontage * PinnedAnimField() { return *GetNativePointerField(this, "APrimalCharacter.PinnedAnim"); } + USoundCue * HurtSoundField() { return *GetNativePointerField(this, "APrimalCharacter.HurtSound"); } + FName & RootBodyBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.RootBodyBoneName"); } + TArray BuffsField() { return *GetNativePointerField*>(this, "APrimalCharacter.Buffs"); } + long double& LastStartedTalkingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartedTalkingTime"); } + FString & TribeNameField() { return *GetNativePointerField(this, "APrimalCharacter.TribeName"); } float& WaterSubmergedDepthThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.WaterSubmergedDepthThreshold"); } float& ProneWaterSubmergedDepthThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.ProneWaterSubmergedDepthThreshold"); } - TEnumAsByte& SubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.SubmergedWaterMovementMode"); } - TEnumAsByte& UnSubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.UnSubmergedWaterMovementMode"); } - TSubclassOf& PoopItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopItemClass"); } - FName& DragBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragBoneName"); } - FName& DragSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragSocketName"); } + TEnumAsByte & SubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.SubmergedWaterMovementMode"); } + TEnumAsByte & UnSubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.UnSubmergedWaterMovementMode"); } + float& SnapshotScaleField() { return *GetNativePointerField(this, "APrimalCharacter.SnapshotScale"); } + TArray & SnapshotPosesField() { return *GetNativePointerField*>(this, "APrimalCharacter.SnapshotPoses"); } + TSubclassOf & PoopItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopItemClass"); } + TSubclassOf & TaxidermySkinClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.TaxidermySkinClass"); } + FName & DragBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragBoneName"); } + FName & DragSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragSocketName"); } float& MaxDragDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragDistance"); } float& MaxDragDistanceTimeoutField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragDistanceTimeout"); } - TArray& BonesToIngoreWhileDraggedField() { return *GetNativePointerField*>(this, "APrimalCharacter.BonesToIngoreWhileDragged"); } + TArray & BonesToIngoreWhileDraggedField() { return *GetNativePointerField*>(this, "APrimalCharacter.BonesToIngoreWhileDragged"); } float& PreviewCameraMaxZoomMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraMaxZoomMultiplier"); } float& PreviewCameraDefaultZoomMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraDefaultZoomMultiplier"); } float& PreviewCameraDistanceScaleFactorField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraDistanceScaleFactor"); } - USoundBase * StartDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.StartDraggedSound"); } - USoundBase * EndDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EndDraggedSound"); } - APrimalCharacter * DraggedCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggedCharacter"); } - APrimalCharacter * DraggingCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggingCharacter"); } - FTransform& LocalDraggedCharacterTransformField() { return *GetNativePointerField(this, "APrimalCharacter.LocalDraggedCharacterTransform"); } + USoundBase * StartDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.StartDraggedSound"); } + USoundBase * EndDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EndDraggedSound"); } + APrimalCharacter * DraggedCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggedCharacter"); } + APrimalCharacter * DraggingCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggingCharacter"); } + FTransform & LocalDraggedCharacterTransformField() { return *GetNativePointerField(this, "APrimalCharacter.LocalDraggedCharacterTransform"); } long double& StartDraggingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.StartDraggingTime"); } long double& LastDragUpdateTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastDragUpdateTime"); } - AActor * ImmobilizationActorField() { return *GetNativePointerField(this, "APrimalCharacter.ImmobilizationActor"); } + float& StasisConsumerRangeMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.StasisConsumerRangeMultiplier"); } + AActor * ImmobilizationActorField() { return *GetNativePointerField(this, "APrimalCharacter.ImmobilizationActor"); } int& CurrentFrameAnimPreventInputField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentFrameAnimPreventInput"); } float& BPTimerServerMinField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerServerMin"); } float& BPTimerServerMaxField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerServerMax"); } @@ -2544,12 +3534,14 @@ struct APrimalCharacter : ACharacter float& BPTimerNonDedicatedMaxField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerNonDedicatedMax"); } long double& NextBPTimerServerField() { return *GetNativePointerField(this, "APrimalCharacter.NextBPTimerServer"); } long double& NextBPTimerNonDedicatedField() { return *GetNativePointerField(this, "APrimalCharacter.NextBPTimerNonDedicated"); } - TArray>& ImmobilizationTrapsToIgnoreField() { return *GetNativePointerField>*>(this, "APrimalCharacter.ImmobilizationTrapsToIgnore"); } - TWeakObjectPtr& CarryingDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.CarryingDino"); } - FName& DediOverrideCapsuleCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideCapsuleCollisionProfileName"); } - FName& DediOverrideMeshCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideMeshCollisionProfileName"); } - FName& SnaredFromSocketField() { return *GetNativePointerField(this, "APrimalCharacter.SnaredFromSocket"); } - TSubclassOf& DeathDestructionDepositInventoryClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.DeathDestructionDepositInventoryClass"); } + long double& LastCausedDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastCausedDamageTime"); } + TArray> & ImmobilizationTrapsToIgnoreField() { return *GetNativePointerField>*>(this, "APrimalCharacter.ImmobilizationTrapsToIgnore"); } + TWeakObjectPtr & BasedElevatorField() { return *GetNativePointerField*>(this, "APrimalCharacter.BasedElevator"); } + TWeakObjectPtr & CarryingDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.CarryingDino"); } + FName & DediOverrideCapsuleCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideCapsuleCollisionProfileName"); } + FName & DediOverrideMeshCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideMeshCollisionProfileName"); } + FName & SnaredFromSocketField() { return *GetNativePointerField(this, "APrimalCharacter.SnaredFromSocket"); } + TSubclassOf & DeathDestructionDepositInventoryClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.DeathDestructionDepositInventoryClass"); } float& DamageNotifyTeamAggroMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroMultiplier"); } float& DamageNotifyTeamAggroRangeField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroRange"); } float& DamageNotifyTeamAggroRangeFalloffField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroRangeFalloff"); } @@ -2557,12 +3549,13 @@ struct APrimalCharacter : ACharacter float& ReplicatedMaxHealthField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedMaxHealth"); } float& ReplicatedCurrentTorporField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedCurrentTorpor"); } float& ReplicatedMaxTorporField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedMaxTorpor"); } - FVector& DragOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DragOffset"); } - AShooterCharacter * LastGrapHookPullingOwnerField() { return *GetNativePointerField(this, "APrimalCharacter.LastGrapHookPullingOwner"); } + AShooterCharacter * LastGrapHookPullingOwnerField() { return *GetNativePointerField(this, "APrimalCharacter.LastGrapHookPullingOwner"); } + AActor*& LastGrapHookPullingMeField() { return *GetNativePointerField(this, "APrimalCharacter.LastGrapHookPullingMe"); } + FVector & DragOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DragOffset"); } long double& LastIkUpdateTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastIkUpdateTime"); } long double& LastUpdatedAimOffsetsTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastUpdatedAimOffsetsTime"); } - FVector& MeshPreRagdollRelativeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeLocation"); } - FRotator& MeshPreRagdollRelativeRotationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeRotation"); } + FVector & MeshPreRagdollRelativeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeLocation"); } + FRotator & MeshPreRagdollRelativeRotationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeRotation"); } int& DraggingBodyIndexField() { return *GetNativePointerField(this, "APrimalCharacter.DraggingBodyIndex"); } int& DraggedBoneIndexField() { return *GetNativePointerField(this, "APrimalCharacter.DraggedBoneIndex"); } int& customBitFlagsField() { return *GetNativePointerField(this, "APrimalCharacter.customBitFlags"); } @@ -2570,144 +3563,158 @@ struct APrimalCharacter : ACharacter float& LowHealthPercentageField() { return *GetNativePointerField(this, "APrimalCharacter.LowHealthPercentage"); } float& BaseTurnRateField() { return *GetNativePointerField(this, "APrimalCharacter.BaseTurnRate"); } float& BaseLookUpRateField() { return *GetNativePointerField(this, "APrimalCharacter.BaseLookUpRate"); } - UAnimMontage * DeathAnimField() { return *GetNativePointerField(this, "APrimalCharacter.DeathAnim"); } - USoundCue * DeathSoundField() { return *GetNativePointerField(this, "APrimalCharacter.DeathSound"); } - USoundCue * RunLoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopSound"); } - USoundCue * RunStopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunStopSound"); } - TArray FootStepSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.FootStepSoundsPhysMat"); } - TArray LandedSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.LandedSoundsPhysMat"); } - FName& MeshRootSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshRootSocketName"); } - TWeakObjectPtr& LastVoiceAudioComponentField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastVoiceAudioComponent"); } + UAnimMontage * DeathAnimField() { return *GetNativePointerField(this, "APrimalCharacter.DeathAnim"); } + USoundCue * DeathSoundField() { return *GetNativePointerField(this, "APrimalCharacter.DeathSound"); } + USoundCue * RunLoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopSound"); } + USoundCue * RunStopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunStopSound"); } + TArray FootStepSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.FootStepSoundsPhysMat"); } + TArray LandedSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.LandedSoundsPhysMat"); } + FName & MeshRootSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshRootSocketName"); } + TWeakObjectPtr & LastVoiceAudioComponentField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastVoiceAudioComponent"); } float& MaxFallSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.MaxFallSpeed"); } float& FallDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.FallDamageMultiplier"); } - UAudioComponent * RunLoopACField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopAC"); } + UAudioComponent * RunLoopACField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopAC"); } float& CurrentCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentCarriedYaw"); } - APrimalStructureExplosiveTransGPS * CurrentTransponderField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentTransponder"); } + APrimalStructureExplosiveTransGPS * CurrentTransponderField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentTransponder"); } float& TargetCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.TargetCarriedYaw"); } float& ServerTargetCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.ServerTargetCarriedYaw"); } - USoundBase * NetDynamicMusicSoundField() { return *GetNativePointerField(this, "APrimalCharacter.NetDynamicMusicSound"); } - TWeakObjectPtr& MountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.MountedDino"); } + USoundBase * NetDynamicMusicSoundField() { return *GetNativePointerField(this, "APrimalCharacter.NetDynamicMusicSound"); } + TWeakObjectPtr & MountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.MountedDino"); } float& MountedDinoTimeField() { return *GetNativePointerField(this, "APrimalCharacter.MountedDinoTime"); } - TWeakObjectPtr& PreviousMountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.PreviousMountedDino"); } - FVector& LastForceFallCheckBaseLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceFallCheckBaseLocation"); } - FVector& LastHitWallSweepCheckLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastHitWallSweepCheckLocation"); } + TWeakObjectPtr & PreviousMountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.PreviousMountedDino"); } + FVector & LastForceFallCheckBaseLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceFallCheckBaseLocation"); } + FVector & LastHitWallSweepCheckLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastHitWallSweepCheckLocation"); } long double& LastTimeBasedMovementHadCurrentActorField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeBasedMovementHadCurrentActor"); } - TWeakObjectPtr& LastBasedMovementActorRefField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastBasedMovementActorRef"); } + TWeakObjectPtr & LastBasedMovementActorRefField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastBasedMovementActorRef"); } float& GrabWeightThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.GrabWeightThreshold"); } float& DragWeightField() { return *GetNativePointerField(this, "APrimalCharacter.DragWeight"); } - FString& DescriptiveNameField() { return *GetNativePointerField(this, "APrimalCharacter.DescriptiveName"); } - TArray& ReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollPositions"); } - TArray& ReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollRotations"); } - TArray& LastReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollPositions"); } - TArray& LastReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollRotations"); } - FRotator& ReplicatedRootRotationField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedRootRotation"); } - TArray& ReplicatedBonesIndiciesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBonesIndicies"); } + FString & DescriptiveNameField() { return *GetNativePointerField(this, "APrimalCharacter.DescriptiveName"); } + TArray & ReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollPositions"); } + TArray & ReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollRotations"); } + TArray & LastReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollPositions"); } + TArray & LastReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollRotations"); } + FRotator & ReplicatedRootRotationField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedRootRotation"); } + TArray & ReplicatedBonesIndiciesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBonesIndicies"); } float& KillXPBaseField() { return *GetNativePointerField(this, "APrimalCharacter.KillXPBase"); } - TArray& ReplicatedBonesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBones"); } + TArray & ReplicatedBonesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBones"); } float& RagdollReplicationIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollReplicationInterval"); } + TArray & BoneDamageAdjustersField() { return *GetNativePointerField*>(this, "APrimalCharacter.BoneDamageAdjusters"); } float& ClientRotationInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.ClientRotationInterpSpeed"); } float& ClientLocationInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.ClientLocationInterpSpeed"); } float& MaxDragMovementSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragMovementSpeed"); } - FRotator& CurrentAimRotField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentAimRot"); } - FVector& CurrentRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentRootLoc"); } + FRotator & CurrentAimRotField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentAimRot"); } + FVector & CurrentRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentRootLoc"); } int& LastYawSpeedWorldFrameCounterField() { return *GetNativePointerField(this, "APrimalCharacter.LastYawSpeedWorldFrameCounter"); } - FName& MeshPreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollCollisionProfileName"); } - FName& CapsulePreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.CapsulePreRagdollCollisionProfileName"); } - UPrimalCharacterStatusComponent * MyCharacterStatusComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyCharacterStatusComponent"); } - UPrimalInventoryComponent * MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyInventoryComponent"); } + FName & MeshPreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollCollisionProfileName"); } + FName & CapsulePreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.CapsulePreRagdollCollisionProfileName"); } + UPrimalCharacterStatusComponent * MyCharacterStatusComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyCharacterStatusComponent"); } + float& LastTickStaminaValueField() { return *GetNativePointerField(this, "APrimalCharacter.LastTickStaminaValue"); } + UPrimalInventoryComponent * MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyInventoryComponent"); } + UAnimMontage * SyncedMontageField() { return *GetNativePointerField(this, "APrimalCharacter.SyncedMontage"); } + long double& LastMontageSyncTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastMontageSyncTime"); } + float& SyncedMontageDurationField() { return *GetNativePointerField(this, "APrimalCharacter.SyncedMontageDuration"); } + float& MontageSyncIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.MontageSyncInterval"); } long double& LastRunningTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastRunningTime"); } - FVector& TPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffset"); } - FVector& TPVCameraOffsetMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffsetMultiplier"); } - FVector& TPVCameraOrgOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOrgOffset"); } + FVector & TPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffset"); } + FVector & TPVCameraOffsetMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffsetMultiplier"); } + FVector & TPVCameraOrgOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOrgOffset"); } float& LandedSoundMaxRangeField() { return *GetNativePointerField(this, "APrimalCharacter.LandedSoundMaxRange"); } float& FallingDamageHealthScaleBaseField() { return *GetNativePointerField(this, "APrimalCharacter.FallingDamageHealthScaleBase"); } float& FootstepsMaxRangeField() { return *GetNativePointerField(this, "APrimalCharacter.FootstepsMaxRange"); } float& MinTimeBetweenFootstepsField() { return *GetNativePointerField(this, "APrimalCharacter.MinTimeBetweenFootsteps"); } long double& LastPlayedFootstepTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastPlayedFootstepTime"); } float& MinTimeBetweenFootstepsRunningField() { return *GetNativePointerField(this, "APrimalCharacter.MinTimeBetweenFootstepsRunning"); } - TArray AnimationsPreventInputField() { return *GetNativePointerField*>(this, "APrimalCharacter.AnimationsPreventInput"); } + TArray AnimationsPreventInputField() { return *GetNativePointerField*>(this, "APrimalCharacter.AnimationsPreventInput"); } + TSubclassOf & DeathHarvestingComponentField() { return *GetNativePointerField*>(this, "APrimalCharacter.DeathHarvestingComponent"); } + UPrimalHarvestingComponent * MyDeathHarvestingComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyDeathHarvestingComponent"); } long double& LastNetDidLandField() { return *GetNativePointerField(this, "APrimalCharacter.LastNetDidLand"); } - TWeakObjectPtr& LastDamageEventInstigatorField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastDamageEventInstigator"); } + TWeakObjectPtr & LastDamageEventInstigatorField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastDamageEventInstigator"); } int& CachedNumberOfClientRagdollCorrectionAttemptsField() { return *GetNativePointerField(this, "APrimalCharacter.CachedNumberOfClientRagdollCorrectionAttempts"); } int& NumberOfClientRagdollCorrectionAttemptsField() { return *GetNativePointerField(this, "APrimalCharacter.NumberOfClientRagdollCorrectionAttempts"); } float& ServerForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.ServerForceSleepRagdollInterval"); } float& ClientForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.ClientForceSleepRagdollInterval"); } float& NonRelevantServerForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.NonRelevantServerForceSleepRagdollInterval"); } - TEnumAsByte& TargetableDamageFXDefaultPhysMaterialField() { return *GetNativePointerField*>(this, "APrimalCharacter.TargetableDamageFXDefaultPhysMaterial"); } - UAnimMontage * PoopAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.PoopAnimation"); } + TEnumAsByte & TargetableDamageFXDefaultPhysMaterialField() { return *GetNativePointerField*>(this, "APrimalCharacter.TargetableDamageFXDefaultPhysMaterial"); } + UAnimMontage * PoopAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.PoopAnimation"); } long double& CorpseDestructionTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDestructionTime"); } float& CorpseLifespanField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseLifespan"); } float& TPVStructurePlacingHeightMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.TPVStructurePlacingHeightMultiplier"); } float& CorpseFadeAwayTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseFadeAwayTime"); } float& RagdollDeathImpulseScalerField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollDeathImpulseScaler"); } - USoundCue * PoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.PoopSound"); } + USoundCue * PoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.PoopSound"); } float& BaseTargetingDesirabilityField() { return *GetNativePointerField(this, "APrimalCharacter.BaseTargetingDesirability"); } float& DeadBaseTargetingDesirabilityField() { return *GetNativePointerField(this, "APrimalCharacter.DeadBaseTargetingDesirability"); } - FRotator& OrbitCamRotField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamRot"); } + FRotator & OrbitCamRotField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamRot"); } float& OrbitCamZoomField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamZoom"); } - FVector& LastSubmergedCheckLocField() { return *GetNativePointerField(this, "APrimalCharacter.LastSubmergedCheckLoc"); } + float& OrbitCamZoomStepSizeField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamZoomStepSize"); } + float& OrbitCamMinZoomLevelField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamMinZoomLevel"); } + float& OrbitCamMaxZoomLevelField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamMaxZoomLevel"); } + FVector & LastSubmergedCheckLocField() { return *GetNativePointerField(this, "APrimalCharacter.LastSubmergedCheckLoc"); } long double& LastTimeNotInFallingField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeNotInFalling"); } float& MaxCursorHUDDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.MaxCursorHUDDistance"); } float& AddForwardVelocityOnJumpField() { return *GetNativePointerField(this, "APrimalCharacter.AddForwardVelocityOnJump"); } - FVector& DeathActorTargetingOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DeathActorTargetingOffset"); } - FName& SocketOverrideTargetingLocationField() { return *GetNativePointerField(this, "APrimalCharacter.SocketOverrideTargetingLocation"); } - FDamageEvent * CurrentDamageEventField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentDamageEvent"); } - FVector& LastApproximatePhysVolumeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastApproximatePhysVolumeLocation"); } + FVector & DeathActorTargetingOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DeathActorTargetingOffset"); } + FName & SocketOverrideTargetingLocationField() { return *GetNativePointerField(this, "APrimalCharacter.SocketOverrideTargetingLocation"); } + FDamageEvent * CurrentDamageEventField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentDamageEvent"); } + FVector & LastApproximatePhysVolumeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastApproximatePhysVolumeLocation"); } long double& LastTimeSubmergedField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeSubmerged"); } - EPhysicalSurface& LastFootPhysicalSurfaceTypeField() { return *GetNativePointerField(this, "APrimalCharacter.LastFootPhysicalSurfaceType"); } + EPhysicalSurface & LastFootPhysicalSurfaceTypeField() { return *GetNativePointerField(this, "APrimalCharacter.LastFootPhysicalSurfaceType"); } long double& LastFootPhysicalSurfaceCheckTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastFootPhysicalSurfaceCheckTime"); } float& FootPhysicalSurfaceCheckIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.FootPhysicalSurfaceCheckInterval"); } - TWeakObjectPtr& LastHurtByNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastHurtByNearbyPlayer"); } + TWeakObjectPtr & LastHurtByNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastHurtByNearbyPlayer"); } float& LastHurtByNearbyPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastHurtByNearbyPlayerTime"); } - TWeakObjectPtr& LastAttackedNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastAttackedNearbyPlayer"); } + TWeakObjectPtr & LastAttackedNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastAttackedNearbyPlayer"); } float& LastAttackedNearbyPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastAttackedNearbyPlayerTime"); } long double& LastStartFallingRagdollTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartFallingRagdollTime"); } - FVector& RagdollLastFrameLinearVelocityField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollLastFrameLinearVelocity"); } + FVector & RagdollLastFrameLinearVelocityField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollLastFrameLinearVelocity"); } float& RagdollImpactDamageVelocityScaleField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollImpactDamageVelocityScale"); } float& RagdollImpactDamageMinDecelerationSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollImpactDamageMinDecelerationSpeed"); } float& StartFallingImpactRagdollTimeIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.StartFallingImpactRagdollTimeInterval"); } long double& LastUnstasisTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastUnstasisTime"); } - FVector& PreviousRagdollLocationField() { return *GetNativePointerField(this, "APrimalCharacter.PreviousRagdollLocation"); } + FVector & PreviousRagdollLocationField() { return *GetNativePointerField(this, "APrimalCharacter.PreviousRagdollLocation"); } int& RagdollPenetrationFailuresField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollPenetrationFailures"); } long double& NextBlinkTimeField() { return *GetNativePointerField(this, "APrimalCharacter.NextBlinkTime"); } long double& BlinkTimerField() { return *GetNativePointerField(this, "APrimalCharacter.BlinkTimer"); } long double& LastInSwimmingSoundTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastInSwimmingSoundTime"); } - USoundCue * EnteredSwimmingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSwimmingSound"); } - USoundCue * EnteredSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSleepingSound"); } - USoundCue * LeftSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.LeftSleepingSound"); } + USoundCue * EnteredSwimmingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSwimmingSound"); } + USoundCue * EnteredSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSleepingSound"); } + USoundCue * LeftSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.LeftSleepingSound"); } long double& LastRelevantToPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastRelevantToPlayerTime"); } long double& MeshStopForceUpdatingAtTimeField() { return *GetNativePointerField(this, "APrimalCharacter.MeshStopForceUpdatingAtTime"); } long double& LastWalkingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastWalkingTime"); } long double& LastSpecialDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastSpecialDamageTime"); } float& CorpseDraggedDecayRateField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDraggedDecayRate"); } float& PoopAltItemChanceField() { return *GetNativePointerField(this, "APrimalCharacter.PoopAltItemChance"); } - TSubclassOf& PoopAltItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopAltItemClass"); } - TArray>& DefaultBuffsField() { return *GetNativePointerField>*>(this, "APrimalCharacter.DefaultBuffs"); } - UTexture2D * PoopIconField() { return *GetNativePointerField(this, "APrimalCharacter.PoopIcon"); } + TSubclassOf & PoopAltItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopAltItemClass"); } + TArray> & DefaultBuffsField() { return *GetNativePointerField>*>(this, "APrimalCharacter.DefaultBuffs"); } + UTexture2D * PoopIconField() { return *GetNativePointerField(this, "APrimalCharacter.PoopIcon"); } float& RunningMaxDesiredRotDeltaField() { return *GetNativePointerField(this, "APrimalCharacter.RunningMaxDesiredRotDelta"); } long double& CorpseDestructionTimerField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDestructionTimer"); } + long double& LastSkinnedTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastSkinnedTime"); } float& OriginalCorpseLifespanField() { return *GetNativePointerField(this, "APrimalCharacter.OriginalCorpseLifespan"); } float& CorpseHarvestFadeTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseHarvestFadeTime"); } - FVector& CurrentLocalRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentLocalRootLoc"); } + FVector & CurrentLocalRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentLocalRootLoc"); } float& RootYawField() { return *GetNativePointerField(this, "APrimalCharacter.RootYaw"); } long double& LastTimeInSwimmingField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeInSwimming"); } long double& LastListenRangePushTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastListenRangePushTime"); } float& LastDamageAmountMaterialValueField() { return *GetNativePointerField(this, "APrimalCharacter.LastDamageAmountMaterialValue"); } float& BuffedDamageMultField() { return *GetNativePointerField(this, "APrimalCharacter.BuffedDamageMult"); } float& BuffedResistanceMultField() { return *GetNativePointerField(this, "APrimalCharacter.BuffedResistanceMult"); } + UStructurePaintingComponent * PaintingComponentField() { return *GetNativePointerField(this, "APrimalCharacter.PaintingComponent"); } float& ExtraMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraMaxSpeedModifier"); } + float& ExtraRotationRateModifierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraRotationRateModifier"); } float& TamedDinoCallOutRangeField() { return *GetNativePointerField(this, "APrimalCharacter.TamedDinoCallOutRange"); } long double& LastBumpedDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastBumpedDamageTime"); } - FVector& TargetPathfindingLocationOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TargetPathfindingLocationOffset"); } + FVector & TargetPathfindingLocationOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TargetPathfindingLocationOffset"); } long double& LastTookDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastTookDamageTime"); } float& ExtraReceiveDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraReceiveDamageMultiplier"); } float& ExtraMeleeDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraMeleeDamageMultiplier"); } float& LastFallingZField() { return *GetNativePointerField(this, "APrimalCharacter.LastFallingZ"); } int& NumFallZFailsField() { return *GetNativePointerField(this, "APrimalCharacter.NumFallZFails"); } - TArray>& CharactersGrappledToMeField() { return *GetNativePointerField>*>(this, "APrimalCharacter.CharactersGrappledToMe"); } + TArray> & CharactersGrappledToMeField() { return *GetNativePointerField>*>(this, "APrimalCharacter.CharactersGrappledToMe"); } float& DamageTheMeleeDamageCauserPercentField() { return *GetNativePointerField(this, "APrimalCharacter.DamageTheMeleeDamageCauserPercent"); } float& DurabilityDegrateTheMeleeDamageCauserPercentField() { return *GetNativePointerField(this, "APrimalCharacter.DurabilityDegrateTheMeleeDamageCauserPercent"); } - TSubclassOf& DamageTheMeleeDamageCauserDamageTypeField() { return *GetNativePointerField*>(this, "APrimalCharacter.DamageTheMeleeDamageCauserDamageType"); } + TSubclassOf & DamageTheMeleeDamageCauserDamageTypeField() { return *GetNativePointerField*>(this, "APrimalCharacter.DamageTheMeleeDamageCauserDamageType"); } char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "APrimalCharacter.TribeGroupInventoryRank"); } float& CharacterDamageImpulseMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.CharacterDamageImpulseMultiplier"); } long double& ForceCheckPushThroughWallsTimeField() { return *GetNativePointerField(this, "APrimalCharacter.ForceCheckPushThroughWallsTime"); } @@ -2715,13 +3722,16 @@ struct APrimalCharacter : ACharacter float& ClientRotationInterpSpeedMultiplierGroundField() { return *GetNativePointerField(this, "APrimalCharacter.ClientRotationInterpSpeedMultiplierGround"); } float& GlideGravityScaleMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.GlideGravityScaleMultiplier"); } float& GlideMaxCarriedWeightField() { return *GetNativePointerField(this, "APrimalCharacter.GlideMaxCarriedWeight"); } - UAnimMontage * lastPlayedMountAnimField() { return *GetNativePointerField(this, "APrimalCharacter.lastPlayedMountAnim"); } + UAnimMontage * lastPlayedMountAnimField() { return *GetNativePointerField(this, "APrimalCharacter.lastPlayedMountAnim"); } float& ScaleDeathHarvestHealthyByMaxHealthBaseField() { return *GetNativePointerField(this, "APrimalCharacter.ScaleDeathHarvestHealthyByMaxHealthBase"); } long double& LastForceMeshRefreshBonesTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceMeshRefreshBonesTime"); } long double& LastStartedBeingCarriedTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartedBeingCarriedTime"); } float& RunMinVelocityRotDotField() { return *GetNativePointerField(this, "APrimalCharacter.RunMinVelocityRotDot"); } long double& LastHitDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastHitDamageTime"); } - TArray>& PreventBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalCharacter.PreventBuffClasses"); } + char& bShouldBeInGodModeField() { return *GetNativePointerField(this, "APrimalCharacter.bShouldBeInGodMode"); } + int& MeshedCounterField() { return *GetNativePointerField(this, "APrimalCharacter.MeshedCounter"); } + int& MeshingTickCounterMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.MeshingTickCounterMultiplier"); } + TArray> & PreventBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalCharacter.PreventBuffClasses"); } // Bit fields @@ -2741,6 +3751,7 @@ struct APrimalCharacter : ACharacter BitFieldValue bSleepedWaterRagdoll() { return { this, "APrimalCharacter.bSleepedWaterRagdoll" }; } BitFieldValue bCanBeTorpid() { return { this, "APrimalCharacter.bCanBeTorpid" }; } BitFieldValue bDebugIK() { return { this, "APrimalCharacter.bDebugIK" }; } + BitFieldValue bDebugIK_ShowTraceNames() { return { this, "APrimalCharacter.bDebugIK_ShowTraceNames" }; } BitFieldValue bForceAlwaysUpdateMesh() { return { this, "APrimalCharacter.bForceAlwaysUpdateMesh" }; } BitFieldValue bRagdollIgnoresPawnCapsules() { return { this, "APrimalCharacter.bRagdollIgnoresPawnCapsules" }; } BitFieldValue bUsePoopAnimationNotify() { return { this, "APrimalCharacter.bUsePoopAnimationNotify" }; } @@ -2749,10 +3760,14 @@ struct APrimalCharacter : ACharacter BitFieldValue bCanBeCarried() { return { this, "APrimalCharacter.bCanBeCarried" }; } BitFieldValue bUseBPCanNotifyTeamAggroAI() { return { this, "APrimalCharacter.bUseBPCanNotifyTeamAggroAI" }; } BitFieldValue bDamageNotifyTeamAggroAI() { return { this, "APrimalCharacter.bDamageNotifyTeamAggroAI" }; } + BitFieldValue bUseBPGetOverrideCameraInterpSpeed() { return { this, "APrimalCharacter.bUseBPGetOverrideCameraInterpSpeed" }; } BitFieldValue bRecentlyUpdateIk() { return { this, "APrimalCharacter.bRecentlyUpdateIk" }; } BitFieldValue bIKEnabled() { return { this, "APrimalCharacter.bIKEnabled" }; } BitFieldValue bIsCarried() { return { this, "APrimalCharacter.bIsCarried" }; } BitFieldValue bIsCarriedAsPassenger() { return { this, "APrimalCharacter.bIsCarriedAsPassenger" }; } + BitFieldValue bUseBPPreventFallDamage() { return { this, "APrimalCharacter.bUseBPPreventFallDamage" }; } + BitFieldValue bUseBPNotifyIsDamageCauserOfAddedBuff() { return { this, "APrimalCharacter.bUseBPNotifyIsDamageCauserOfAddedBuff" }; } + BitFieldValue bPreventProjectileAttachment() { return { this, "APrimalCharacter.bPreventProjectileAttachment" }; } BitFieldValue bForceIKOnDedicatedServer() { return { this, "APrimalCharacter.bForceIKOnDedicatedServer" }; } BitFieldValue bIgnoreAllImmobilizationTraps() { return { this, "APrimalCharacter.bIgnoreAllImmobilizationTraps" }; } BitFieldValue bForceTriggerIgnoredTraps() { return { this, "APrimalCharacter.bForceTriggerIgnoredTraps" }; } @@ -2812,6 +3827,7 @@ struct APrimalCharacter : ACharacter BitFieldValue bUseBPTimerServer() { return { this, "APrimalCharacter.bUseBPTimerServer" }; } BitFieldValue bUseBPTimerNonDedicated() { return { this, "APrimalCharacter.bUseBPTimerNonDedicated" }; } BitFieldValue bTriggerBPStasis() { return { this, "APrimalCharacter.bTriggerBPStasis" }; } + BitFieldValue bUseBPSetCharacterMeshseMaterialScalarParamValue() { return { this, "APrimalCharacter.bUseBPSetCharacterMeshseMaterialScalarParamValue" }; } BitFieldValue bIsMounted() { return { this, "APrimalCharacter.bIsMounted" }; } BitFieldValue bPreventTargetingByTurrets() { return { this, "APrimalCharacter.bPreventTargetingByTurrets" }; } BitFieldValue bDelayFootstepsUnderMinInterval() { return { this, "APrimalCharacter.bDelayFootstepsUnderMinInterval" }; } @@ -2831,6 +3847,7 @@ struct APrimalCharacter : ACharacter BitFieldValue bPreventJump() { return { this, "APrimalCharacter.bPreventJump" }; } BitFieldValue bUseBPPreventStasis() { return { this, "APrimalCharacter.bUseBPPreventStasis" }; } BitFieldValue bDestroyOnStasis() { return { this, "APrimalCharacter.bDestroyOnStasis" }; } + BitFieldValue bUseBPPreSerializeSaveGame() { return { this, "APrimalCharacter.bUseBPPreSerializeSaveGame" }; } BitFieldValue bUseBPPostLoadedFromSaveGame() { return { this, "APrimalCharacter.bUseBPPostLoadedFromSaveGame" }; } BitFieldValue bUseHeavyCombatMusic() { return { this, "APrimalCharacter.bUseHeavyCombatMusic" }; } BitFieldValue bMarkForDestruction() { return { this, "APrimalCharacter.bMarkForDestruction" }; } @@ -2842,6 +3859,13 @@ struct APrimalCharacter : ACharacter BitFieldValue bServerBPNotifyInventoryItemChanges() { return { this, "APrimalCharacter.bServerBPNotifyInventoryItemChanges" }; } BitFieldValue bAllowRun() { return { this, "APrimalCharacter.bAllowRun" }; } BitFieldValue bIsAtMaxInventoryItems() { return { this, "APrimalCharacter.bIsAtMaxInventoryItems" }; } + BitFieldValue bUseBPOnStaminaDrained() { return { this, "APrimalCharacter.bUseBPOnStaminaDrained" }; } + BitFieldValue bStaminaIsGreaterThanZero() { return { this, "APrimalCharacter.bStaminaIsGreaterThanZero" }; } + BitFieldValue bUseBPGrabDebugSnapshot() { return { this, "APrimalCharacter.bUseBPGrabDebugSnapshot" }; } + BitFieldValue bIsAttachedOtherCharacter() { return { this, "APrimalCharacter.bIsAttachedOtherCharacter" }; } + BitFieldValue bUseBPOnLethalDamage() { return { this, "APrimalCharacter.bUseBPOnLethalDamage" }; } + BitFieldValue bUseBPAdjustTorpidityDamage() { return { this, "APrimalCharacter.bUseBPAdjustTorpidityDamage" }; } + BitFieldValue bUseBPForceCameraStyle() { return { this, "APrimalCharacter.bUseBPForceCameraStyle" }; } BitFieldValue bIsReplicatedRagdoll() { return { this, "APrimalCharacter.bIsReplicatedRagdoll" }; } BitFieldValue bWasAllBodiesSleeping() { return { this, "APrimalCharacter.bWasAllBodiesSleeping" }; } BitFieldValue bInRagdoll() { return { this, "APrimalCharacter.bInRagdoll" }; } @@ -2855,6 +3879,7 @@ struct APrimalCharacter : ACharacter BitFieldValue bPreventRunningWhileWalking() { return { this, "APrimalCharacter.bPreventRunningWhileWalking" }; } BitFieldValue bCanLandOnWater() { return { this, "APrimalCharacter.bCanLandOnWater" }; } BitFieldValue bUseBPAdjustMoveForward() { return { this, "APrimalCharacter.bUseBPAdjustMoveForward" }; } + BitFieldValue bUseBPAdjustMoveRight() { return { this, "APrimalCharacter.bUseBPAdjustMoveRight" }; } BitFieldValue bUseBPGetGravity() { return { this, "APrimalCharacter.bUseBPGetGravity" }; } BitFieldValue bAllowDamageWhenMounted() { return { this, "APrimalCharacter.bAllowDamageWhenMounted" }; } BitFieldValue bUseBPOnAttachmentReplication() { return { this, "APrimalCharacter.bUseBPOnAttachmentReplication" }; } @@ -2864,17 +3889,48 @@ struct APrimalCharacter : ACharacter BitFieldValue bUseBP_OnSetRunningEvent() { return { this, "APrimalCharacter.bUseBP_OnSetRunningEvent" }; } BitFieldValue bForceTurretFastTargeting() { return { this, "APrimalCharacter.bForceTurretFastTargeting" }; } BitFieldValue bFlyingOrWaterDinoPreventBackwardsRun() { return { this, "APrimalCharacter.bFlyingOrWaterDinoPreventBackwardsRun" }; } + BitFieldValue bUseBPOverrideFlyingVelocity() { return { this, "APrimalCharacter.bUseBPOverrideFlyingVelocity" }; } BitFieldValue bSleepingDisableRagdoll() { return { this, "APrimalCharacter.bSleepingDisableRagdoll" }; } BitFieldValue bDestroyOnStasisWhenDead() { return { this, "APrimalCharacter.bDestroyOnStasisWhenDead" }; } BitFieldValue bPreventLiveBlinking() { return { this, "APrimalCharacter.bPreventLiveBlinking" }; } BitFieldValue bIgnoreSeatingDetachment() { return { this, "APrimalCharacter.bIgnoreSeatingDetachment" }; } BitFieldValue bForceAlwaysUpdateMeshAndCollision() { return { this, "APrimalCharacter.bForceAlwaysUpdateMeshAndCollision" }; } + BitFieldValue bUseBPGetHUDElements() { return { this, "APrimalCharacter.bUseBPGetHUDElements" }; } BitFieldValue bPreventHurtAnim() { return { this, "APrimalCharacter.bPreventHurtAnim" }; } BitFieldValue bUseBPCanBeBaseForCharacter() { return { this, "APrimalCharacter.bUseBPCanBeBaseForCharacter" }; } + BitFieldValue bUseBPCanBaseOnCharacter() { return { this, "APrimalCharacter.bUseBPCanBaseOnCharacter" }; } + BitFieldValue bUseBPOnLanded() { return { this, "APrimalCharacter.bUseBPOnLanded" }; } + BitFieldValue bEnableMoveCollapsing() { return { this, "APrimalCharacter.bEnableMoveCollapsing" }; } + BitFieldValue bUseBP_ForceAllowBuffClasses() { return { this, "APrimalCharacter.bUseBP_ForceAllowBuffClasses" }; } + BitFieldValue bUseBPCheckJumpInput() { return { this, "APrimalCharacter.bUseBPCheckJumpInput" }; } + BitFieldValue bUseBPOverrideHurtAnim() { return { this, "APrimalCharacter.bUseBPOverrideHurtAnim" }; } + BitFieldValue bUseBPOverrideDamageCauserHitMarker() { return { this, "APrimalCharacter.bUseBPOverrideDamageCauserHitMarker" }; } + BitFieldValue bIsSkinned() { return { this, "APrimalCharacter.bIsSkinned" }; } + BitFieldValue bUseBPAdjustImpulseFromDamage() { return { this, "APrimalCharacter.bUseBPAdjustImpulseFromDamage" }; } + BitFieldValue bUseBPAdjustCharacterMovementImpulse() { return { this, "APrimalCharacter.bUseBPAdjustCharacterMovementImpulse" }; } + BitFieldValue bUseBPModifyFOVInterpSpeed() { return { this, "APrimalCharacter.bUseBPModifyFOVInterpSpeed" }; } + BitFieldValue bVerifyBasingForSaddleStructures() { return { this, "APrimalCharacter.bVerifyBasingForSaddleStructures" }; } + BitFieldValue bUseBP_OverrideTerminalVelocity() { return { this, "APrimalCharacter.bUseBP_OverrideTerminalVelocity" }; } + BitFieldValue bUseBP_ShouldForceDisableTPVCameraInterpolation() { return { this, "APrimalCharacter.bUseBP_ShouldForceDisableTPVCameraInterpolation" }; } + BitFieldValue bUseBPAllowPlayMontage() { return { this, "APrimalCharacter.bUseBPAllowPlayMontage" }; } + BitFieldValue bPreventPerPixelPainting() { return { this, "APrimalCharacter.bPreventPerPixelPainting" }; } + BitFieldValue bIgnoreLowGravityDisorientation() { return { this, "APrimalCharacter.bIgnoreLowGravityDisorientation" }; } + BitFieldValue bUseBPOnMassTeleportEvent() { return { this, "APrimalCharacter.bUseBPOnMassTeleportEvent" }; } + BitFieldValue bUseBlueprintAnimNotifyCustomState() { return { this, "APrimalCharacter.bUseBlueprintAnimNotifyCustomState" }; } + BitFieldValue bPreventIKWhenNotWalking() { return { this, "APrimalCharacter.bPreventIKWhenNotWalking" }; } + BitFieldValue bIgnoreCorpseDecompositionMultipliers() { return { this, "APrimalCharacter.bIgnoreCorpseDecompositionMultipliers" }; } + BitFieldValue bInterpHealthDamageMaterialOverlayAlpha() { return { this, "APrimalCharacter.bInterpHealthDamageMaterialOverlayAlpha" }; } + BitFieldValue bSuppressPlayerKillNotification() { return { this, "APrimalCharacter.bSuppressPlayerKillNotification" }; } + BitFieldValue bAllowCorpseDestructionWithPreventSaving() { return { this, "APrimalCharacter.bAllowCorpseDestructionWithPreventSaving" }; } + BitFieldValue bPreventInventoryAccess() { return { this, "APrimalCharacter.bPreventInventoryAccess" }; } + BitFieldValue bUseGetOverrideSocket() { return { this, "APrimalCharacter.bUseGetOverrideSocket" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalCharacter.GetPrivateStaticClass"); } + static UClass * StaticClass() { return NativeCall(nullptr, "APrimalCharacter.StaticClass"); } + UObject * GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalCharacter.GetUObjectInterfaceTargetableInterface"); } + long double GetLastStartedTalkingTime() { return NativeCall(this, "APrimalCharacter.GetLastStartedTalkingTime"); } + float GetStasisConsumerRangeMultiplier() { return NativeCall(this, "APrimalCharacter.GetStasisConsumerRangeMultiplier"); } float BPGetAddForwardVelocityOnJump_Implementation() { return NativeCall(this, "APrimalCharacter.BPGetAddForwardVelocityOnJump_Implementation"); } bool CanJumpInternal_Implementation() { return NativeCall(this, "APrimalCharacter.CanJumpInternal_Implementation"); } void PreInitializeComponents() { NativeCall(this, "APrimalCharacter.PreInitializeComponents"); } @@ -2882,55 +3938,63 @@ struct APrimalCharacter : ACharacter void PostInitializeComponents() { NativeCall(this, "APrimalCharacter.PostInitializeComponents"); } void Destroyed() { NativeCall(this, "APrimalCharacter.Destroyed"); } void BeginPlay() { NativeCall(this, "APrimalCharacter.BeginPlay"); } - void FellOutOfWorld(UDamageType * dmgType) { NativeCall(this, "APrimalCharacter.FellOutOfWorld", dmgType); } + void FellOutOfWorld(UDamageType * dmgType) { NativeCall(this, "APrimalCharacter.FellOutOfWorld", dmgType); } void Suicide() { NativeCall(this, "APrimalCharacter.Suicide"); } bool IsDead() { return NativeCall(this, "APrimalCharacter.IsDead"); } - void InventoryItemUsed(UObject * InventoryItemObject) { NativeCall(this, "APrimalCharacter.InventoryItemUsed", InventoryItemObject); } - void AdjustDamage(float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - bool CanBeTargetedBy(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalCharacter.CanBeTargetedBy", Attacker); } + void InventoryItemUsed(UObject * InventoryItemObject) { NativeCall(this, "APrimalCharacter.InventoryItemUsed", InventoryItemObject); } + void AdjustDamage(float* Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool CanBeTargetedBy(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalCharacter.CanBeTargetedBy", Attacker); } bool IsValidForCombatMusic() { return NativeCall(this, "APrimalCharacter.IsValidForCombatMusic"); } - float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - bool CanDie(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.CanDie", KillingDamage, DamageEvent, Killer, DamageCauser); } - bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } - void PlayDyingPoint_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void HurtMe(int HowMuch) { NativeCall(this, "APrimalCharacter.HurtMe", HowMuch); } + bool CanDie(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.CanDie", KillingDamage, DamageEvent, Killer, DamageCauser); } + bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void DeathHarvestingDepleted(UPrimalHarvestingComponent * fromComponent) { NativeCall(this, "APrimalCharacter.DeathHarvestingDepleted", fromComponent); } + void PlayDyingPoint_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void OnRep_IsDead() { NativeCall(this, "APrimalCharacter.OnRep_IsDead"); } void SetDeath(bool bForceRagdoll) { NativeCall(this, "APrimalCharacter.SetDeath", bForceRagdoll); } - bool CanIgnoreImmobilizationTrap(TSubclassOf TrapClass, bool * bForceTrigger) { return NativeCall, bool *>(this, "APrimalCharacter.CanIgnoreImmobilizationTrap", TrapClass, bForceTrigger); } - void Immobilize(bool bImmobilize, AActor * UsingActor, bool bImmobilizeFalling) { NativeCall(this, "APrimalCharacter.Immobilize", bImmobilize, UsingActor, bImmobilizeFalling); } + bool CanIgnoreImmobilizationTrap(TSubclassOf TrapClass, bool* bForceTrigger) { return NativeCall, bool*>(this, "APrimalCharacter.CanIgnoreImmobilizationTrap", TrapClass, bForceTrigger); } + void Immobilize(bool bImmobilize, AActor * UsingActor, bool bImmobilizeFalling, bool bPreventDismount) { NativeCall(this, "APrimalCharacter.Immobilize", bImmobilize, UsingActor, bImmobilizeFalling, bPreventDismount); } float GetCorpseLifespan() { return NativeCall(this, "APrimalCharacter.GetCorpseLifespan"); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayHitEffectGeneric_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectGeneric_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffectGeneric_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectGeneric_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } bool AllowHurtAnimation() { return NativeCall(this, "APrimalCharacter.AllowHurtAnimation"); } - UPrimitiveComponent * GetPrimaryHitComponent() { return NativeCall(this, "APrimalCharacter.GetPrimaryHitComponent"); } - void PlayHitEffect(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalCharacter.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } + UPrimitiveComponent * GetPrimaryHitComponent() { return NativeCall(this, "APrimalCharacter.GetPrimaryHitComponent"); } + void PlayHitEffect(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalCharacter.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } void DoSetRagdollPhysics() { NativeCall(this, "APrimalCharacter.DoSetRagdollPhysics"); } void SetRagdollPhysics(bool bUseRagdollLocationOffset, bool bForceRecreateBones, bool bForLoading) { NativeCall(this, "APrimalCharacter.SetRagdollPhysics", bUseRagdollLocationOffset, bForceRecreateBones, bForLoading); } void CheckOnDinoPlatformSaddle() { NativeCall(this, "APrimalCharacter.CheckOnDinoPlatformSaddle"); } + void EndDinoPlatformDragging() { NativeCall(this, "APrimalCharacter.EndDinoPlatformDragging"); } void ForceSleepRagdollEx() { NativeCall(this, "APrimalCharacter.ForceSleepRagdollEx"); } void ForceSleepRagdoll() { NativeCall(this, "APrimalCharacter.ForceSleepRagdoll"); } void ClearRagdollPhysics() { NativeCall(this, "APrimalCharacter.ClearRagdollPhysics"); } void DoFindGoodSpot(FVector RagdollLoc, bool bClearCollisionSweep) { NativeCall(this, "APrimalCharacter.DoFindGoodSpot", RagdollLoc, bClearCollisionSweep); } + void OnRep_IsSleeping() { NativeCall(this, "APrimalCharacter.OnRep_IsSleeping"); } void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "APrimalCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } void ExecSetSleeping(bool bEnable) { NativeCall(this, "APrimalCharacter.ExecSetSleeping", bEnable); } + void ExecSetPawnSleeping(bool bEnable) { NativeCall(this, "APrimalCharacter.ExecSetPawnSleeping", bEnable); } void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalCharacter.ChangeActorTeam", NewTeam); } void UpdateTribeName(FString NewTribeName) { NativeCall(this, "APrimalCharacter.UpdateTribeName", NewTribeName); } - void NetUpdateTribeName_Implementation(FString * NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName_Implementation", NewTribeName); } - float GetMaxCursorHUDDistance(AShooterPlayerController * PC) { return NativeCall(this, "APrimalCharacter.GetMaxCursorHUDDistance", PC); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalCharacter.DrawHUD", HUD); } + void NetUpdateTribeName_Implementation(FString * NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName_Implementation", NewTribeName); } + float GetMaxCursorHUDDistance(AShooterPlayerController * PC) { return NativeCall(this, "APrimalCharacter.GetMaxCursorHUDDistance", PC); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalCharacter.DrawHUD", HUD); } bool IsSubmerged(bool bDontCheckSwimming, bool bUseFullThreshold, bool bForceCheck, bool bFromVolumeChange) { return NativeCall(this, "APrimalCharacter.IsSubmerged", bDontCheckSwimming, bUseFullThreshold, bForceCheck, bFromVolumeChange); } float GetWaterSubmergedDepthThreshold() { return NativeCall(this, "APrimalCharacter.GetWaterSubmergedDepthThreshold"); } - float PlayAnimMontage(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "APrimalCharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } - void StopAnimMontage(UAnimMontage * AnimMontage) { NativeCall(this, "APrimalCharacter.StopAnimMontage", AnimMontage); } - bool IsMontagePlaying(UAnimMontage * AnimMontage, float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsMontagePlaying", AnimMontage, TimeFromEndToConsiderFinished); } + float PlayAnimMontage(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, float BlendInTime, float BlendOutTime) { return NativeCall(this, "APrimalCharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, BlendInTime, BlendOutTime); } + void StopAnimMontage(UAnimMontage * AnimMontage) { NativeCall(this, "APrimalCharacter.StopAnimMontage", AnimMontage); } + bool IsMontagePlaying(UAnimMontage * AnimMontage, float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsMontagePlaying", AnimMontage, TimeFromEndToConsiderFinished); } void StopAllAnimMontages(float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAllAnimMontages", BlendOutTime); } void TryGiveDefaultWeapon() { NativeCall(this, "APrimalCharacter.TryGiveDefaultWeapon"); } + void ToggleWeapon() { NativeCall(this, "APrimalCharacter.ToggleWeapon"); } void TryPoop() { NativeCall(this, "APrimalCharacter.TryPoop"); } void OrbitCamToggle() { NativeCall(this, "APrimalCharacter.OrbitCamToggle"); } void OrbitCamOn() { NativeCall(this, "APrimalCharacter.OrbitCamOn"); } void OrbitCamOff() { NativeCall(this, "APrimalCharacter.OrbitCamOff"); } void ServerRequestDrag_Implementation() { NativeCall(this, "APrimalCharacter.ServerRequestDrag_Implementation"); } - void ServerDinoOrder_Implementation(APrimalDinoCharacter * aDino, EDinoTamedOrder::Type OrderType, AActor * enemyTarget) { NativeCall(this, "APrimalCharacter.ServerDinoOrder_Implementation", aDino, OrderType, enemyTarget); } + void ServerDinoOrder_Implementation(APrimalDinoCharacter * aDino, EDinoTamedOrder::Type OrderType, AActor * enemyTarget) { NativeCall(this, "APrimalCharacter.ServerDinoOrder_Implementation", aDino, OrderType, enemyTarget); } + FVector * BPModifyRightDirectionInput_Implementation(FVector * result, FVector * directionInput) { return NativeCall(this, "APrimalCharacter.BPModifyRightDirectionInput_Implementation", result, directionInput); } void MoveForward(float Val) { NativeCall(this, "APrimalCharacter.MoveForward", Val); } void MoveRight(float Val) { NativeCall(this, "APrimalCharacter.MoveRight", Val); } void MoveUp(float Val) { NativeCall(this, "APrimalCharacter.MoveUp", Val); } @@ -2940,18 +4004,42 @@ struct APrimalCharacter : ACharacter void LookUpAtRate(float Val) { NativeCall(this, "APrimalCharacter.LookUpAtRate", Val); } bool IsGameInputAllowed() { return NativeCall(this, "APrimalCharacter.IsGameInputAllowed"); } bool IsInputAllowed() { return NativeCall(this, "APrimalCharacter.IsInputAllowed"); } + void OnStartFire(bool bFromGamepadRight) { NativeCall(this, "APrimalCharacter.OnStartFire", bFromGamepadRight); } + void OnStopFire(bool bFromGamepadRight) { NativeCall(this, "APrimalCharacter.OnStopFire", bFromGamepadRight); } + void OnAltFirePressed() { NativeCall(this, "APrimalCharacter.OnAltFirePressed"); } + void OnAltFireReleased() { NativeCall(this, "APrimalCharacter.OnAltFireReleased"); } + void OnStartAltFire(bool bFromGamepad) { NativeCall(this, "APrimalCharacter.OnStartAltFire", bFromGamepad); } + void OnStopAltFire(bool bFromGamepad) { NativeCall(this, "APrimalCharacter.OnStopAltFire", bFromGamepad); } void OnStartRunning() { NativeCall(this, "APrimalCharacter.OnStartRunning"); } void OnStopRunning() { NativeCall(this, "APrimalCharacter.OnStopRunning"); } + void OnRunTogglePressed() { NativeCall(this, "APrimalCharacter.OnRunTogglePressed"); } + void OnRunToggleReleased() { NativeCall(this, "APrimalCharacter.OnRunToggleReleased"); } void OnRunToggle() { NativeCall(this, "APrimalCharacter.OnRunToggle"); } bool IsRunning() { return NativeCall(this, "APrimalCharacter.IsRunning"); } bool IsMoving() { return NativeCall(this, "APrimalCharacter.IsMoving"); } void UpdateStatusComponent(float DeltaSeconds) { NativeCall(this, "APrimalCharacter.UpdateStatusComponent", DeltaSeconds); } - void SetBoundsScale(float NewScale) { NativeCall(this, "APrimalCharacter.SetBoundsScale", NewScale); } + void ServerCaptureDermis_Implementation(APrimalCharacter * Target) { NativeCall(this, "APrimalCharacter.ServerCaptureDermis_Implementation", Target); } + void CaptureCharacterSnapshot(UPrimalItem * Item) { NativeCall(this, "APrimalCharacter.CaptureCharacterSnapshot", Item); } + static void StaticApplyCharacterSnapshot(UPrimalItem * Item, AActor * To, FVector Offset, float MaxExtent, int Pose) { NativeCall(nullptr, "APrimalCharacter.StaticApplyCharacterSnapshot", Item, To, Offset, MaxExtent, Pose); } + static void StaticApplyCharacterSnapshotEquipment(UPrimalInventoryComponent * Inventory, AActor * To) { NativeCall(nullptr, "APrimalCharacter.StaticApplyCharacterSnapshotEquipment", Inventory, To); } + static void StaticRemoveCharacterSnapshot(UPrimalItem * Item, AActor * From) { NativeCall(nullptr, "APrimalCharacter.StaticRemoveCharacterSnapshot", Item, From); } + static int StaticGetSnapshotPoseCount(UPrimalItem * Item) { return NativeCall(nullptr, "APrimalCharacter.StaticGetSnapshotPoseCount", Item); } + static FPrimalSnapshotPose * StaticGetSnapshotPose(FPrimalSnapshotPose * result, UPrimalItem * Item, int PoseIndex) { return NativeCall(nullptr, "APrimalCharacter.StaticGetSnapshotPose", result, Item, PoseIndex); } + void ApplyCharacterSnapshot(UPrimalItem * Item, AActor * To, FVector Offset, float MaxExtent, int Pose) { NativeCall(this, "APrimalCharacter.ApplyCharacterSnapshot", Item, To, Offset, MaxExtent, Pose); } + void RemoveCharacterSnapshot(UPrimalItem * Item, AActor * From) { NativeCall(this, "APrimalCharacter.RemoveCharacterSnapshot", Item, From); } + static UActorComponent * GetSnapshotComponent(AActor * From, FName Tag) { return NativeCall(nullptr, "APrimalCharacter.GetSnapshotComponent", From, Tag); } + static UActorComponent * CreateSnapshotComponent(AActor * For, UObject * Template, FName Tag, FName Name) { return NativeCall(nullptr, "APrimalCharacter.CreateSnapshotComponent", For, Template, Tag, Name); } + void ModifyStasisComponentRadius(float Delta) { NativeCall(this, "APrimalCharacter.ModifyStasisComponentRadius", Delta); } void UpdateStencilValues() { NativeCall(this, "APrimalCharacter.UpdateStencilValues"); } void Tick(float DeltaSeconds) { NativeCall(this, "APrimalCharacter.Tick", DeltaSeconds); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "APrimalCharacter.EndPlay", EndPlayReason); } void SetCharacterMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "APrimalCharacter.SetCharacterMeshesMaterialScalarParamValue", ParamName, Value); } + void EnableBodiesGravity() { NativeCall(this, "APrimalCharacter.EnableBodiesGravity"); } void UpdateSwimmingState() { NativeCall(this, "APrimalCharacter.UpdateSwimmingState"); } - FVector * GetRootBodyBoneLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetRootBodyBoneLocation", result); } + FVector * GetRootBodyBoneLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetRootBodyBoneLocation", result); } + bool IsOwningClient() { return NativeCall(this, "APrimalCharacter.IsOwningClient"); } + FVector * GetInputDirectionVector(FVector * result, bool bRelativeToViewDirection) { return NativeCall(this, "APrimalCharacter.GetInputDirectionVector", result, bRelativeToViewDirection); } + void GetCharacterViewLocationAndDirection(FVector * OutViewLocation, FVector * OutViewDirection, bool* OutFromCrosshairOrCamera, float FallbackAngleOffsetDegrees) { NativeCall(this, "APrimalCharacter.GetCharacterViewLocationAndDirection", OutViewLocation, OutViewDirection, OutFromCrosshairOrCamera, FallbackAngleOffsetDegrees); } void ZoomIn() { NativeCall(this, "APrimalCharacter.ZoomIn"); } void ZoomOut() { NativeCall(this, "APrimalCharacter.ZoomOut"); } void OnStartJump() { NativeCall(this, "APrimalCharacter.OnStartJump"); } @@ -2959,104 +4047,133 @@ struct APrimalCharacter : ACharacter void PlayLandedAnim() { NativeCall(this, "APrimalCharacter.PlayLandedAnim"); } void OnJumped_Implementation() { NativeCall(this, "APrimalCharacter.OnJumped_Implementation"); } void NetOnJumped_Implementation() { NativeCall(this, "APrimalCharacter.NetOnJumped_Implementation"); } + void OnVoiceTalkingStateChanged(bool isTalking, bool IsUsingSuperRange) { NativeCall(this, "APrimalCharacter.OnVoiceTalkingStateChanged", isTalking, IsUsingSuperRange); } void OnStopJump() { NativeCall(this, "APrimalCharacter.OnStopJump"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "APrimalCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } float GetRunningSpeedModifier(bool bIsForDefaultSpeed) { return NativeCall(this, "APrimalCharacter.GetRunningSpeedModifier", bIsForDefaultSpeed); } float GetMaxHealth() { return NativeCall(this, "APrimalCharacter.GetMaxHealth"); } bool AllowFirstPerson() { return NativeCall(this, "APrimalCharacter.AllowFirstPerson"); } - AActor * GetAimedActor(ECollisionChannel CollisionChannel, UActorComponent ** HitComponent, float MaxDistanceOverride, float CheckRadius, int * hitBodyIndex, FHitResult * outHitResult, bool bForceUseCameraLocation, bool bForceUpdateAimedActors) { return NativeCall(this, "APrimalCharacter.GetAimedActor", CollisionChannel, HitComponent, MaxDistanceOverride, CheckRadius, hitBodyIndex, outHitResult, bForceUseCameraLocation, bForceUpdateAimedActors); } + AActor * GetAimedActor(ECollisionChannel CollisionChannel, UActorComponent * *HitComponent, float MaxDistanceOverride, float CheckRadius, int* hitBodyIndex, FHitResult * outHitResult, bool bForceUseCameraLocation, bool bForceUpdateAimedActors, bool bForceUseActorLocation) { return NativeCall(this, "APrimalCharacter.GetAimedActor", CollisionChannel, HitComponent, MaxDistanceOverride, CheckRadius, hitBodyIndex, outHitResult, bForceUseCameraLocation, bForceUpdateAimedActors, bForceUseActorLocation); } + void GetAimedActor(FHitResult * outHitResult, ECollisionChannel CollisionChannel, float MaxDistanceOverride, float CheckRadius, bool bForceUseCameraLocation, bool bForceUpdateAimedActors) { NativeCall(this, "APrimalCharacter.GetAimedActor", outHitResult, CollisionChannel, MaxDistanceOverride, CheckRadius, bForceUseCameraLocation, bForceUpdateAimedActors); } void OnPrimalCharacterSleeped() { NativeCall(this, "APrimalCharacter.OnPrimalCharacterSleeped"); } void OnPrimalCharacterUnsleeped() { NativeCall(this, "APrimalCharacter.OnPrimalCharacterUnsleeped"); } - float PlayAnimEx(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bReplicate, bool bReplicateToOwner, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "APrimalCharacter.PlayAnimEx", AnimMontage, InPlayRate, StartSectionName, bReplicate, bReplicateToOwner, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } - void StopAnimEx(UAnimMontage * AnimMontage, bool bReplicate, bool bReplicateToOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAnimEx", AnimMontage, bReplicate, bReplicateToOwner, BlendOutTime); } - void ClientPlayAnimation_Implementation(UAnimMontage * AnimMontage, float PlayRate, FName StartSectionName, bool bPlayOnOwner, bool bForceTickPoseAndServerUpdateMesh) { NativeCall(this, "APrimalCharacter.ClientPlayAnimation_Implementation", AnimMontage, PlayRate, StartSectionName, bPlayOnOwner, bForceTickPoseAndServerUpdateMesh); } - void ClientStopAnimation_Implementation(UAnimMontage * AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimation_Implementation", AnimMontage, bStopOnOwner, BlendOutTime); } + float PlayAnimEx(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bReplicate, bool bReplicateToOwner, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, bool bForceKeepSynced, float BlendInTime, float BlendOutTime) { return NativeCall(this, "APrimalCharacter.PlayAnimEx", AnimMontage, InPlayRate, StartSectionName, bReplicate, bReplicateToOwner, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, bForceKeepSynced, BlendInTime, BlendOutTime); } + void StopAnimEx(UAnimMontage * AnimMontage, bool bReplicate, bool bReplicateToOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAnimEx", AnimMontage, bReplicate, bReplicateToOwner, BlendOutTime); } + void ClientPlayAnimation_Implementation(UAnimMontage * AnimMontage, float PlayRate, FName StartSectionName, bool bPlayOnOwner, bool bForceTickPoseAndServerUpdateMesh) { NativeCall(this, "APrimalCharacter.ClientPlayAnimation_Implementation", AnimMontage, PlayRate, StartSectionName, bPlayOnOwner, bForceTickPoseAndServerUpdateMesh); } + void ClientSyncAnimation_Implementation(UAnimMontage * AnimMontage, float PlayRate, float ServerCurrentMontageTime, bool bForceTickPoseAndServerUpdateMesh, float BlendInTime, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientSyncAnimation_Implementation", AnimMontage, PlayRate, ServerCurrentMontageTime, bForceTickPoseAndServerUpdateMesh, BlendInTime, BlendOutTime); } + void ClientStopAnimation_Implementation(UAnimMontage * AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimation_Implementation", AnimMontage, bStopOnOwner, BlendOutTime); } + float StartSyncedMontage(UAnimMontage * AnimMontage, float PlayRate, float BlendInTime, float BlendOutTime) { return NativeCall(this, "APrimalCharacter.StartSyncedMontage", AnimMontage, PlayRate, BlendInTime, BlendOutTime); } + void StopSyncedMontage(float BlendOutTime, bool bAutoStopAnim) { NativeCall(this, "APrimalCharacter.StopSyncedMontage", BlendOutTime, bAutoStopAnim); } void SetRunning(bool bNewRunning) { NativeCall(this, "APrimalCharacter.SetRunning", bNewRunning); } void ServerSetRunning_Implementation(bool bNewRunning) { NativeCall(this, "APrimalCharacter.ServerSetRunning_Implementation", bNewRunning); } void UpdateRunSounds(bool bNewRunning) { NativeCall(this, "APrimalCharacter.UpdateRunSounds", bNewRunning); } - void ControllerLeavingGame(AShooterPlayerController * theController) { NativeCall(this, "APrimalCharacter.ControllerLeavingGame", theController); } + void ControllerLeavingGame(AShooterPlayerController * theController) { NativeCall(this, "APrimalCharacter.ControllerLeavingGame", theController); } float GetLowHealthPercentage() { return NativeCall(this, "APrimalCharacter.GetLowHealthPercentage"); } bool IsAlive() { return NativeCall(this, "APrimalCharacter.IsAlive"); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalCharacter.GetDescriptiveName", result); } - FString * GetShortName(FString * result) { return NativeCall(this, "APrimalCharacter.GetShortName", result); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalCharacter.GetDescriptiveName", result); } + FString * GetShortName(FString * result) { return NativeCall(this, "APrimalCharacter.GetShortName", result); } + TArray * GetDetailedDescription(TArray * result, FString * IndentPrefix) { return NativeCall*, TArray*, FString*>(this, "APrimalCharacter.GetDetailedDescription", result, IndentPrefix); } float GetHealthPercentage() { return NativeCall(this, "APrimalCharacter.GetHealthPercentage"); } float GetHealth() { return NativeCall(this, "APrimalCharacter.GetHealth"); } - FVector * GetInterpolatedLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedLocation", result); } - FRotator * GetInterpolatedRotation(FRotator * result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedRotation", result); } - float GetClientRotationInterpSpeed(FVector * RootLoc) { return NativeCall(this, "APrimalCharacter.GetClientRotationInterpSpeed", RootLoc); } - FRotator * GetAimOffsets(FRotator * result, float DeltaTime, FRotator * RootRotOffset, float * RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FVector * GetInterpolatedLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedLocation", result); } + void DrawFloatingChatMessage(AShooterHUD * HUD, FString Message, long double receivedChatTime) { NativeCall(this, "APrimalCharacter.DrawFloatingChatMessage", HUD, Message, receivedChatTime); } + FRotator * GetInterpolatedRotation(FRotator * result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedRotation", result); } + FRotator * GetInterpolatedRotation_NonFlattened(FRotator * result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedRotation_NonFlattened", result); } + float GetClientRotationInterpSpeed(FVector * RootLoc) { return NativeCall(this, "APrimalCharacter.GetClientRotationInterpSpeed", RootLoc); } + FRotator * GetAimOffsets(FRotator * result, float DeltaTime, FRotator * RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } void ForceRefreshBones() { NativeCall(this, "APrimalCharacter.ForceRefreshBones"); } void StartForceSkelUpdate(float ForTime, bool bForceUpdateMesh, bool bServerOnly) { NativeCall(this, "APrimalCharacter.StartForceSkelUpdate", ForTime, bForceUpdateMesh, bServerOnly); } void EndForceSkelUpdate() { NativeCall(this, "APrimalCharacter.EndForceSkelUpdate"); } + void ForceMeshRelevant(float Duration) { NativeCall(this, "APrimalCharacter.ForceMeshRelevant", Duration); } bool IsConscious() { return NativeCall(this, "APrimalCharacter.IsConscious"); } void Stasis() { NativeCall(this, "APrimalCharacter.Stasis"); } void Unstasis() { NativeCall(this, "APrimalCharacter.Unstasis"); } - UPrimalCharacterStatusComponent * GetCharacterStatusComponent() { return NativeCall(this, "APrimalCharacter.GetCharacterStatusComponent"); } - void DrawLocalPlayerHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalCharacter.DrawLocalPlayerHUD", HUD); } + bool AllowFallDamage(FHitResult * HitResult, float FallDamageAmount, bool CustomFallDamage) { return NativeCall(this, "APrimalCharacter.AllowFallDamage", HitResult, FallDamageAmount, CustomFallDamage); } + bool IsSimulated() { return NativeCall(this, "APrimalCharacter.IsSimulated"); } + bool IsWildSlow() { return NativeCall(this, "APrimalCharacter.IsWildSlow"); } + UPrimalCharacterStatusComponent * GetCharacterStatusComponent() { return NativeCall(this, "APrimalCharacter.GetCharacterStatusComponent"); } + float GetBaseStatusValue(TEnumAsByte StatusValueType) { return NativeCall>(this, "APrimalCharacter.GetBaseStatusValue", StatusValueType); } + void DrawLocalPlayerHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalCharacter.DrawLocalPlayerHUD", HUD); } bool IsInStatusState(EPrimalCharacterStatusState::Type StatusStateType) { return NativeCall(this, "APrimalCharacter.IsInStatusState", StatusStateType); } + float GetCurrentStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetCurrentStatusValue", StatusValueType); } + float GetMaxStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetMaxStatusValue", StatusValueType); } + float GetPercentStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetPercentStatusValue", StatusValueType); } bool IsValidForStatusUpdate() { return NativeCall(this, "APrimalCharacter.IsValidForStatusUpdate"); } float GetMaxSpeedModifier() { return NativeCall(this, "APrimalCharacter.GetMaxSpeedModifier"); } + float BP_GetMaxSpeedModifier() { return NativeCall(this, "APrimalCharacter.BP_GetMaxSpeedModifier"); } + float GetRotationRateModifier() { return NativeCall(this, "APrimalCharacter.GetRotationRateModifier"); } float GetJumpZModifier() { return NativeCall(this, "APrimalCharacter.GetJumpZModifier"); } - bool CanBeBaseForCharacter(APawn * Pawn) { return NativeCall(this, "APrimalCharacter.CanBeBaseForCharacter", Pawn); } + bool CanBeBaseForCharacter(APawn * Pawn) { return NativeCall(this, "APrimalCharacter.CanBeBaseForCharacter", Pawn); } float GetDefaultMovementSpeed() { return NativeCall(this, "APrimalCharacter.GetDefaultMovementSpeed"); } - void TakeFallingDamage(FHitResult * Hit) { NativeCall(this, "APrimalCharacter.TakeFallingDamage", Hit); } - void OnLanded(FHitResult * Hit) { NativeCall(this, "APrimalCharacter.OnLanded", Hit); } + void TakeFallingDamage(FHitResult * Hit) { NativeCall(this, "APrimalCharacter.TakeFallingDamage", Hit); } + void ApplyCustomFallDamage(FVector * Location, FVector * Velocity, float FallDamageThreshold) { NativeCall(this, "APrimalCharacter.ApplyCustomFallDamage", Location, Velocity, FallDamageThreshold); } + void OnLanded(FHitResult * Hit) { NativeCall(this, "APrimalCharacter.OnLanded", Hit); } void NetDidLand_Implementation() { NativeCall(this, "APrimalCharacter.NetDidLand_Implementation"); } void DidLand() { NativeCall(this, "APrimalCharacter.DidLand"); } void FadeOutLoadingMusic() { NativeCall(this, "APrimalCharacter.FadeOutLoadingMusic"); } - void LocalPossessedBy(APlayerController * ByController) { NativeCall(this, "APrimalCharacter.LocalPossessedBy", ByController); } + void LocalPossessedBy(APlayerController * ByController) { NativeCall(this, "APrimalCharacter.LocalPossessedBy", ByController); } void LocalUnpossessed_Implementation() { NativeCall(this, "APrimalCharacter.LocalUnpossessed_Implementation"); } void PlayFootstep() { NativeCall(this, "APrimalCharacter.PlayFootstep"); } - EPhysicalSurface GetFootPhysicalSurfaceType(bool bForce) { return NativeCall(this, "APrimalCharacter.GetFootPhysicalSurfaceType", bForce); } - bool ModifyInputAcceleration(FVector * InputAcceleration) { return NativeCall(this, "APrimalCharacter.ModifyInputAcceleration", InputAcceleration); } + EPhysicalSurface GetFootPhysicalSurfaceType(bool bForce, bool bIsForFootstepParticles) { return NativeCall(this, "APrimalCharacter.GetFootPhysicalSurfaceType", bForce, bIsForFootstepParticles); } + EPhysicalSurface GetPhysMatTypeFromHit(FHitResult * FromHit) { return NativeCall(this, "APrimalCharacter.GetPhysMatTypeFromHit", FromHit); } + EPhysicalSurface GetPhysMatTypeFromHits(TArray * FromHits) { return NativeCall*>(this, "APrimalCharacter.GetPhysMatTypeFromHits", FromHits); } + bool ModifyInputAcceleration(FVector * InputAcceleration) { return NativeCall(this, "APrimalCharacter.ModifyInputAcceleration", InputAcceleration); } bool ShouldAttackStopMoveCollapsing() { return NativeCall(this, "APrimalCharacter.ShouldAttackStopMoveCollapsing"); } bool AnimationPreventsInput() { return NativeCall(this, "APrimalCharacter.AnimationPreventsInput"); } + bool BP_AnimationPreventsInput() { return NativeCall(this, "APrimalCharacter.BP_AnimationPreventsInput"); } float SetHealth(float newHealth) { return NativeCall(this, "APrimalCharacter.SetHealth", newHealth); } bool IsOfTribe(int ID) { return NativeCall(this, "APrimalCharacter.IsOfTribe", ID); } void SetRagdollReplication(bool Enabled) { NativeCall(this, "APrimalCharacter.SetRagdollReplication", Enabled); } + void Serialize(FArchive * Ar) { NativeCall(this, "APrimalCharacter.Serialize", Ar); } void ReplicateRagdoll() { NativeCall(this, "APrimalCharacter.ReplicateRagdoll"); } void InitRagdollRepConstraints() { NativeCall(this, "APrimalCharacter.InitRagdollRepConstraints"); } void TermRagdollRepConstraints() { NativeCall(this, "APrimalCharacter.TermRagdollRepConstraints"); } - void ClientRagdollUpdate_Implementation(TArray * BoneLocations, FRotator_NetQuantize TargetRootRotation) { NativeCall *, FRotator_NetQuantize>(this, "APrimalCharacter.ClientRagdollUpdate_Implementation", BoneLocations, TargetRootRotation); } + void ClientRagdollUpdate_Implementation(TArray * BoneLocations, FRotator_NetQuantize TargetRootRotation) { NativeCall*, FRotator_NetQuantize>(this, "APrimalCharacter.ClientRagdollUpdate_Implementation", BoneLocations, TargetRootRotation); } void SleepBodies() { NativeCall(this, "APrimalCharacter.SleepBodies"); } void UpdateRagdollReplicationOnClient() { NativeCall(this, "APrimalCharacter.UpdateRagdollReplicationOnClient"); } void ClientEndRagdollUpdate_Implementation() { NativeCall(this, "APrimalCharacter.ClientEndRagdollUpdate_Implementation"); } void OnRep_RagdollPositions() { NativeCall(this, "APrimalCharacter.OnRep_RagdollPositions"); } void InitRagdollReplication() { NativeCall(this, "APrimalCharacter.InitRagdollReplication"); } - bool CanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "APrimalCharacter.CanDragCharacter", Character); } + bool IsDraggingCharacter() { return NativeCall(this, "APrimalCharacter.IsDraggingCharacter"); } + void EndDragCharacter() { NativeCall(this, "APrimalCharacter.EndDragCharacter"); } + bool CanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "APrimalCharacter.CanDragCharacter", Character); } bool CanBeDragged() { return NativeCall(this, "APrimalCharacter.CanBeDragged"); } bool IsInvincible() { return NativeCall(this, "APrimalCharacter.IsInvincible"); } - int GetNearestBoneIndexForDrag(APrimalCharacter * Character, FVector HitLocation) { return NativeCall(this, "APrimalCharacter.GetNearestBoneIndexForDrag", Character, HitLocation); } + int GetNearestBoneIndexForDrag(APrimalCharacter * Character, FVector HitLocation) { return NativeCall(this, "APrimalCharacter.GetNearestBoneIndexForDrag", Character, HitLocation); } void TryDragCharacter() { NativeCall(this, "APrimalCharacter.TryDragCharacter"); } void UpdateDragging() { NativeCall(this, "APrimalCharacter.UpdateDragging"); } - void OnBeginDrag_Implementation(APrimalCharacter * Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } + void OnBeginDrag_Implementation(APrimalCharacter * Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } void OnEndDrag_Implementation() { NativeCall(this, "APrimalCharacter.OnEndDrag_Implementation"); } - void OnBeginDragged(APrimalCharacter * Dragger) { NativeCall(this, "APrimalCharacter.OnBeginDragged", Dragger); } - void OnEndDragged(APrimalCharacter * Dragger) { NativeCall(this, "APrimalCharacter.OnEndDragged", Dragger); } - bool CanBeCarried(APrimalCharacter * ByCarrier) { return NativeCall(this, "APrimalCharacter.CanBeCarried", ByCarrier); } + void OnBeginDragged(APrimalCharacter * Dragger) { NativeCall(this, "APrimalCharacter.OnBeginDragged", Dragger); } + void OnEndDragged(APrimalCharacter * Dragger) { NativeCall(this, "APrimalCharacter.OnEndDragged", Dragger); } + bool CanBeCarried(APrimalCharacter * ByCarrier) { return NativeCall(this, "APrimalCharacter.CanBeCarried", ByCarrier); } float GetKillXP() { return NativeCall(this, "APrimalCharacter.GetKillXP"); } void UpdateIK() { NativeCall(this, "APrimalCharacter.UpdateIK"); } - void SetEnableIK(bool bEnable, bool bForceOnDedicated) { NativeCall(this, "APrimalCharacter.SetEnableIK", bEnable, bForceOnDedicated); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalCharacter.TryMultiUse", ForPC, UseIndex); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalCharacter.ClientMultiUse", ForPC, UseIndex); } + void SetEnableIK(bool bEnable) { NativeCall(this, "APrimalCharacter.SetEnableIK", bEnable); } + void EnableIK(bool bEnable, bool bForceOnDedicated) { NativeCall(this, "APrimalCharacter.EnableIK", bEnable, bForceOnDedicated); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalCharacter.TryMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalCharacter.ClientMultiUse", ForPC, UseIndex); } + void GetHUDElements(APlayerController * ForPC, TArray * OutElements) { NativeCall*>(this, "APrimalCharacter.GetHUDElements", ForPC, OutElements); } + void RefreshBiomeZoneVolumes() { NativeCall(this, "APrimalCharacter.RefreshBiomeZoneVolumes"); } void ForceTickPoseDelta() { NativeCall(this, "APrimalCharacter.ForceTickPoseDelta"); } void CheckJumpOutOfWater() { NativeCall(this, "APrimalCharacter.CheckJumpOutOfWater"); } bool IsTargetableDead() { return NativeCall(this, "APrimalCharacter.IsTargetableDead"); } EShooterPhysMaterialType::Type GetTargetableDamageFXDefaultPhysMaterial() { return NativeCall(this, "APrimalCharacter.GetTargetableDamageFXDefaultPhysMaterial"); } - void Poop(bool bForcePoop) { NativeCall(this, "APrimalCharacter.Poop", bForcePoop); } + bool Poop(bool bForcePoop) { return NativeCall(this, "APrimalCharacter.Poop", bForcePoop); } void EmitPoop() { NativeCall(this, "APrimalCharacter.EmitPoop"); } bool IsValidForStatusRecovery() { return NativeCall(this, "APrimalCharacter.IsValidForStatusRecovery"); } - bool GetGroundLocation(FVector * theGroundLoc, FVector * OffsetUp, FVector * OffsetDown) { return NativeCall(this, "APrimalCharacter.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown); } + bool GetGroundLocation(FVector * theGroundLoc, FVector * OffsetUp, FVector * OffsetDown) { return NativeCall(this, "APrimalCharacter.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown); } void DeathHarvestingFadeOut_Implementation() { NativeCall(this, "APrimalCharacter.DeathHarvestingFadeOut_Implementation"); } - void ServerUploadCharacter(AShooterPlayerController * UploadedBy) { NativeCall(this, "APrimalCharacter.ServerUploadCharacter", UploadedBy); } - FRotator * GetBaseAimRotation(FRotator * result) { return NativeCall(this, "APrimalCharacter.GetBaseAimRotation", result); } - void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void ServerUploadCharacter(AShooterPlayerController * UploadedBy) { NativeCall(this, "APrimalCharacter.ServerUploadCharacter", UploadedBy); } + FRotator * GetBaseAimRotation(FRotator * result) { return NativeCall(this, "APrimalCharacter.GetBaseAimRotation", result); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } void NetAddCharacterMovementImpulse_Implementation(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ) { NativeCall(this, "APrimalCharacter.NetAddCharacterMovementImpulse_Implementation", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ); } void NetSetCharacterMovementVelocity_Implementation(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.NetSetCharacterMovementVelocity_Implementation", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } bool AllowSaving() { return NativeCall(this, "APrimalCharacter.AllowSaving"); } bool IsWatered() { return NativeCall(this, "APrimalCharacter.IsWatered"); } void LoadedFromSaveGame() { NativeCall(this, "APrimalCharacter.LoadedFromSaveGame"); } - FVector * GetTargetingLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetTargetingLocation", result); } + FVector * GetTargetingLocation(FVector * result, AActor * Attacker) { return NativeCall(this, "APrimalCharacter.GetTargetingLocation", result, Attacker); } + int LevelUpPlayerAddedStat(TEnumAsByte StatToLevel, int NumLevels, AShooterPlayerController * ForPlayer) { return NativeCall, int, AShooterPlayerController*>(this, "APrimalCharacter.LevelUpPlayerAddedStat", StatToLevel, NumLevels, ForPlayer); } void CheckJumpInput(float DeltaTime) { NativeCall(this, "APrimalCharacter.CheckJumpInput", DeltaTime); } void ServerTryPoop_Implementation() { NativeCall(this, "APrimalCharacter.ServerTryPoop_Implementation"); } void ClientFailedPoop_Implementation() { NativeCall(this, "APrimalCharacter.ClientFailedPoop_Implementation"); } @@ -3064,139 +4181,305 @@ struct APrimalCharacter : ACharacter void TryAccessInventoryWrapper() { NativeCall(this, "APrimalCharacter.TryAccessInventoryWrapper"); } bool TryAccessInventory() { return NativeCall(this, "APrimalCharacter.TryAccessInventory"); } bool IsRagdolled() { return NativeCall(this, "APrimalCharacter.IsRagdolled"); } - static void ForceUpdateAimedCharacters(UWorld * World, FVector * StartLoc, FVector * EndLoc, AActor * IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(nullptr, "APrimalCharacter.ForceUpdateAimedCharacters", World, StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } - void NetForceUpdateAimedCharacters_Implementation(FVector StartLoc, FVector EndLoc, AActor * IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(this, "APrimalCharacter.NetForceUpdateAimedCharacters_Implementation", StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } + static void ForceUpdateAimedCharacters(UWorld * World, FVector * StartLoc, FVector * EndLoc, AActor * IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(nullptr, "APrimalCharacter.ForceUpdateAimedCharacters", World, StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } + void NetForceUpdateAimedCharacters_Implementation(FVector StartLoc, FVector EndLoc, AActor * IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(this, "APrimalCharacter.NetForceUpdateAimedCharacters_Implementation", StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } + static void ForceUpdateCharacter(UWorld * World, APrimalCharacter * primalChar) { NativeCall(nullptr, "APrimalCharacter.ForceUpdateCharacter", World, primalChar); } bool HasBuff(TSubclassOf BuffClass, bool useExactMatch) { return NativeCall, bool>(this, "APrimalCharacter.HasBuff", BuffClass, useExactMatch); } - APrimalBuff * GetBuff(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalCharacter.GetBuff", BuffClass); } - APrimalBuff * GetBuffForPostEffect(UMaterialInterface * anEffect) { return NativeCall(this, "APrimalCharacter.GetBuffForPostEffect", anEffect); } - void RemoveAllJumpDeactivatedBuffs(APrimalBuff * IgnoredBuff) { NativeCall(this, "APrimalCharacter.RemoveAllJumpDeactivatedBuffs", IgnoredBuff); } - void AttachGPSTransponder(APrimalStructureExplosiveTransGPS * Transponder) { NativeCall(this, "APrimalCharacter.AttachGPSTransponder", Transponder); } + bool HasBuffWithCustomTag(FName buffCustomTag) { return NativeCall(this, "APrimalCharacter.HasBuffWithCustomTag", buffCustomTag); } + int GetBuffStackCount(TSubclassOf BuffClass, bool useExactMatch) { return NativeCall, bool>(this, "APrimalCharacter.GetBuffStackCount", BuffClass, useExactMatch); } + APrimalBuff * GetBuff(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalCharacter.GetBuff", BuffClass); } + APrimalBuff * GetBuffWithCustomTag(FName BuffCustomTag) { return NativeCall(this, "APrimalCharacter.GetBuffWithCustomTag", BuffCustomTag); } + void GetAllBuffs(TArray * AllBuffs) { NativeCall*>(this, "APrimalCharacter.GetAllBuffs", AllBuffs); } + void GetBuffs(TArray * TheBuffs) { NativeCall*>(this, "APrimalCharacter.GetBuffs", TheBuffs); } + APrimalBuff * GetBuffForPostEffect(UMaterialInterface * anEffect) { return NativeCall(this, "APrimalCharacter.GetBuffForPostEffect", anEffect); } + void RemoveAllJumpDeactivatedBuffs(APrimalBuff * IgnoredBuff) { NativeCall(this, "APrimalCharacter.RemoveAllJumpDeactivatedBuffs", IgnoredBuff); } + void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalCharacter.OnStartTargeting", bFromGamepadLeft); } + void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalCharacter.OnStopTargeting", bFromGamepadLeft); } + void AttachGPSTransponder(APrimalStructureExplosiveTransGPS * Transponder) { NativeCall(this, "APrimalCharacter.AttachGPSTransponder", Transponder); } void UpdateNetDynamicMusic() { NativeCall(this, "APrimalCharacter.UpdateNetDynamicMusic"); } - void NetPlaySoundOnCharacter_Implementation(USoundBase * SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter_Implementation", SoundToPlay, bPlayOnOwner); } + void NetPlaySoundOnCharacter_Implementation(USoundBase * SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter_Implementation", SoundToPlay, bPlayOnOwner); } bool IsMeshGameplayRelevant() { return NativeCall(this, "APrimalCharacter.IsMeshGameplayRelevant"); } float GetCorpseDecayRate() { return NativeCall(this, "APrimalCharacter.GetCorpseDecayRate"); } void TagFriendlyStructures() { NativeCall(this, "APrimalCharacter.TagFriendlyStructures"); } + void DestroyByMeshing() { NativeCall(this, "APrimalCharacter.DestroyByMeshing"); } + float GetCarryingSocketYaw(bool RefreshBones) { return NativeCall(this, "APrimalCharacter.GetCarryingSocketYaw", RefreshBones); } + void SetCarryingDino(APrimalDinoCharacter * aDino) { NativeCall(this, "APrimalCharacter.SetCarryingDino", aDino); } + void ClearCarryingDino(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalCharacter.ClearCarryingDino", bFromDino, bCancelAnyCarryBuffs); } void OnAttachedToCharacter() { NativeCall(this, "APrimalCharacter.OnAttachedToCharacter"); } - void OnDetachedFromCharacter(APrimalCharacter * aCharacter, int OverrideDirection) { NativeCall(this, "APrimalCharacter.OnDetachedFromCharacter", aCharacter, OverrideDirection); } + void OnDetachedFromCharacter(APrimalCharacter * aCharacter, int OverrideDirection) { NativeCall(this, "APrimalCharacter.OnDetachedFromCharacter", aCharacter, OverrideDirection); } void ClearMountedDino(bool fromMountedDino) { NativeCall(this, "APrimalCharacter.ClearMountedDino", fromMountedDino); } - bool DinoMountOnMe(APrimalDinoCharacter * dinoCharacter) { return NativeCall(this, "APrimalCharacter.DinoMountOnMe", dinoCharacter); } - bool CanMountOnMe(APrimalDinoCharacter * dinoCharacter) { return NativeCall(this, "APrimalCharacter.CanMountOnMe", dinoCharacter); } + bool DinoMountOnMe(APrimalDinoCharacter * dinoCharacter) { return NativeCall(this, "APrimalCharacter.DinoMountOnMe", dinoCharacter); } + bool CanMountOnMe(APrimalDinoCharacter * dinoCharacter) { return NativeCall(this, "APrimalCharacter.CanMountOnMe", dinoCharacter); } void OnRep_MountedDino() { NativeCall(this, "APrimalCharacter.OnRep_MountedDino"); } - float GetDragWeight(APrimalCharacter * ForDragger) { return NativeCall(this, "APrimalCharacter.GetDragWeight", ForDragger); } - void SetBase(UPrimitiveComponent * NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "APrimalCharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } + bool HasCryoSickness() { return NativeCall(this, "APrimalCharacter.HasCryoSickness"); } + float GetDragWeight(APrimalCharacter * ForDragger) { return NativeCall(this, "APrimalCharacter.GetDragWeight", ForDragger); } + void SetBase(UPrimitiveComponent * NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "APrimalCharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } void UnPossessed() { NativeCall(this, "APrimalCharacter.UnPossessed"); } void TryCallAttackTarget() { NativeCall(this, "APrimalCharacter.TryCallAttackTarget"); } void TryCallMoveTo() { NativeCall(this, "APrimalCharacter.TryCallMoveTo"); } - UTexture2D * GetOverrideDefaultCharacterParamTexture(FName theParamName, UTexture2D * CurrentTexture) { return NativeCall(this, "APrimalCharacter.GetOverrideDefaultCharacterParamTexture", theParamName, CurrentTexture); } + UTexture2D * GetOverrideDefaultCharacterParamTexture(FName theParamName, UTexture2D * CurrentTexture) { return NativeCall(this, "APrimalCharacter.GetOverrideDefaultCharacterParamTexture", theParamName, CurrentTexture); } bool CanBePainted() { return NativeCall(this, "APrimalCharacter.CanBePainted"); } - UPaintingTexture * GetPaintingTexture() { return NativeCall(this, "APrimalCharacter.GetPaintingTexture"); } - bool AllowColoringBy(APlayerController * ForPC, UObject * anItem) { return NativeCall(this, "APrimalCharacter.AllowColoringBy", ForPC, anItem); } + UPaintingTexture * GetPaintingTexture() { return NativeCall(this, "APrimalCharacter.GetPaintingTexture"); } + void OnRep_PaintingComponent() { NativeCall(this, "APrimalCharacter.OnRep_PaintingComponent"); } + bool AllowColoringBy(APlayerController * ForPC, UObject * anItem) { return NativeCall(this, "APrimalCharacter.AllowColoringBy", ForPC, anItem); } + FVector * GetFloatingHUDLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetFloatingHUDLocation", result); } void NetStopAllAnimMontage_Implementation() { NativeCall(this, "APrimalCharacter.NetStopAllAnimMontage_Implementation"); } - void DeactivateBuffs(TSubclassOf ForBuffClass, UPrimalItem * ForInstigatorItem, bool perfectClassMatch) { NativeCall, UPrimalItem *, bool>(this, "APrimalCharacter.DeactivateBuffs", ForBuffClass, ForInstigatorItem, perfectClassMatch); } - bool ExcludePostProcessBlendableMaterial(UMaterialInterface * BlendableMaterialInterface) { return NativeCall(this, "APrimalCharacter.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } - FVector * GetVelocity(FVector * result, bool bIsForRagdoll) { return NativeCall(this, "APrimalCharacter.GetVelocity", result, bIsForRagdoll); } + void DeactivateBuffs(TSubclassOf ForBuffClass, UPrimalItem * ForInstigatorItem, bool perfectClassMatch) { NativeCall, UPrimalItem*, bool>(this, "APrimalCharacter.DeactivateBuffs", ForBuffClass, ForInstigatorItem, perfectClassMatch); } + bool ExcludePostProcessBlendableMaterial(UMaterialInterface * BlendableMaterialInterface) { return NativeCall(this, "APrimalCharacter.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } + FVector * GetVelocity(FVector * result, bool bIsForRagdoll) { return NativeCall(this, "APrimalCharacter.GetVelocity", result, bIsForRagdoll); } void TryCallStayOne() { NativeCall(this, "APrimalCharacter.TryCallStayOne"); } void TryCallFollowOne() { NativeCall(this, "APrimalCharacter.TryCallFollowOne"); } void TryCallFollowDistanceCycleOne() { NativeCall(this, "APrimalCharacter.TryCallFollowDistanceCycleOne"); } + void TryCallFlyerLandOne() { NativeCall(this, "APrimalCharacter.TryCallFlyerLandOne"); } void OnRep_AttachmentReplication() { NativeCall(this, "APrimalCharacter.OnRep_AttachmentReplication"); } + FString * GetDebugInfoString(FString * result) { return NativeCall(this, "APrimalCharacter.GetDebugInfoString", result); } + long double GetLastCausedDamageTime() { return NativeCall(this, "APrimalCharacter.GetLastCausedDamageTime"); } + void SetLastCausedDamageTime(const long double lastCausedDamageTime) { NativeCall(this, "APrimalCharacter.SetLastCausedDamageTime", lastCausedDamageTime); } bool SimulatedPreventBasedPhysics() { return NativeCall(this, "APrimalCharacter.SimulatedPreventBasedPhysics"); } - APrimalDinoCharacter * GetBasedOnDino() { return NativeCall(this, "APrimalCharacter.GetBasedOnDino"); } - FVector * GetTargetPathfindingLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetTargetPathfindingLocation", result); } + bool AllowMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "APrimalCharacter.AllowMovementMode", NewMovementMode, NewCustomMode); } + APrimalDinoCharacter * GetBasedOrSeatingOnDino() { return NativeCall(this, "APrimalCharacter.GetBasedOrSeatingOnDino"); } + APrimalDinoCharacter * GetBasedOnDino() { return NativeCall(this, "APrimalCharacter.GetBasedOnDino"); } + FVector * GetTargetPathfindingLocation(FVector * result, AActor * Attacker) { return NativeCall(this, "APrimalCharacter.GetTargetPathfindingLocation", result, Attacker); } void ClientHandleNetDestroy() { NativeCall(this, "APrimalCharacter.ClientHandleNetDestroy"); } bool UseClearOnConsumeInput() { return NativeCall(this, "APrimalCharacter.UseClearOnConsumeInput"); } float GetDamageTorpidityIncreaseMultiplierScale() { return NativeCall(this, "APrimalCharacter.GetDamageTorpidityIncreaseMultiplierScale"); } float GetIndirectTorpidityIncreaseMultiplierScale() { return NativeCall(this, "APrimalCharacter.GetIndirectTorpidityIncreaseMultiplierScale"); } - void NotifyBumpedByPawn(APrimalCharacter * ByPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedByPawn", ByPawn); } - void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedPawn", BumpedPawn); } - void PossessedBy(AController * NewController) { NativeCall(this, "APrimalCharacter.PossessedBy", NewController); } + bool BPIsBasedOnDynamicActor() { return NativeCall(this, "APrimalCharacter.BPIsBasedOnDynamicActor"); } + void NotifyBumpedByPawn(APrimalCharacter * ByPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedByPawn", ByPawn); } + void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedPawn", BumpedPawn); } + ENetRole GetRole() { return NativeCall(this, "APrimalCharacter.GetRole"); } + void SetMyInventoryComponent(UPrimalInventoryComponent * theInventoryComponent) { NativeCall(this, "APrimalCharacter.SetMyInventoryComponent", theInventoryComponent); } + FVector * GetTPVCameraOffset(FVector * result) { return NativeCall(this, "APrimalCharacter.GetTPVCameraOffset", result); } + FVector * GetTPVCameraOffsetMultiplier(FVector * result) { return NativeCall(this, "APrimalCharacter.GetTPVCameraOffsetMultiplier", result); } + bool UseCenteredTPVCamera() { return NativeCall(this, "APrimalCharacter.UseCenteredTPVCamera"); } + void PossessedBy(AController * NewController) { NativeCall(this, "APrimalCharacter.PossessedBy", NewController); } + bool IsBlockedByShield(FHitResult * HitInfo, FVector * ShotDirection, bool bBlockAllPointDamage) { return NativeCall(this, "APrimalCharacter.IsBlockedByShield", HitInfo, ShotDirection, bBlockAllPointDamage); } void BPNetAddCharacterMovementImpulse(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ, bool bApplyToBigPawns) { NativeCall(this, "APrimalCharacter.BPNetAddCharacterMovementImpulse", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ, bApplyToBigPawns); } void BPNetSetCharacterMovementVelocity(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.BPNetSetCharacterMovementVelocity", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } float GetGravityZScale() { return NativeCall(this, "APrimalCharacter.GetGravityZScale"); } + void GetCharactersGrappledToMe(TArray * GrappledCharsArray) { NativeCall*>(this, "APrimalCharacter.GetCharactersGrappledToMe", GrappledCharsArray); } + float GetFallAcceleration() { return NativeCall(this, "APrimalCharacter.GetFallAcceleration"); } void OnMovementModeChanged(EMovementMode PrevMovementMode, char PreviousCustomMode) { NativeCall(this, "APrimalCharacter.OnMovementModeChanged", PrevMovementMode, PreviousCustomMode); } void EnableBPTimerServer(bool bEnable) { NativeCall(this, "APrimalCharacter.EnableBPTimerServer", bEnable); } void EnableBPTimerNonDedicated(bool bEnable) { NativeCall(this, "APrimalCharacter.EnableBPTimerNonDedicated", bEnable); } + void SetCharacterAndRagdollLocation(FVector NewLocation) { NativeCall(this, "APrimalCharacter.SetCharacterAndRagdollLocation", NewLocation); } void CheckRagdollPenetration() { NativeCall(this, "APrimalCharacter.CheckRagdollPenetration"); } - APrimalStructureExplosive * GetAttachedExplosive() { return NativeCall(this, "APrimalCharacter.GetAttachedExplosive"); } + APrimalStructureExplosive * GetAttachedExplosive() { return NativeCall(this, "APrimalCharacter.GetAttachedExplosive"); } bool IsInVacuumSealedSpace() { return NativeCall(this, "APrimalCharacter.IsInVacuumSealedSpace"); } void DownCallOne() { NativeCall(this, "APrimalCharacter.DownCallOne"); } float BPModifyFOV_Implementation(float FOVIn) { return NativeCall(this, "APrimalCharacter.BPModifyFOV_Implementation", FOVIn); } - FVector * OverrideNewFallVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.OverrideNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } - void SetDynamicMusic(USoundBase * newMusic) { NativeCall(this, "APrimalCharacter.SetDynamicMusic", newMusic); } - bool PreventsTargeting_Implementation(AActor * ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting_Implementation", ByActor); } + bool AllowOverrideWalkingVelocity() { return NativeCall(this, "APrimalCharacter.AllowOverrideWalkingVelocity"); } + bool AllowOverrideSwimmingVelocity() { return NativeCall(this, "APrimalCharacter.AllowOverrideSwimmingVelocity"); } + bool AllowOverrideNewFallVelocity() { return NativeCall(this, "APrimalCharacter.AllowOverrideNewFallVelocity"); } + void OverrideWalkingVelocity(FVector * InitialVelocity, const float* Friction, float DeltaTime) { NativeCall(this, "APrimalCharacter.OverrideWalkingVelocity", InitialVelocity, Friction, DeltaTime); } + void OverrideSwimmingVelocity(FVector * InitialVelocity, FVector * Gravity, const float* FluidFriction, const float* NetBuoyancy, float DeltaTime) { NativeCall(this, "APrimalCharacter.OverrideSwimmingVelocity", InitialVelocity, Gravity, FluidFriction, NetBuoyancy, DeltaTime); } + void OverrideNewFallVelocity(FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { NativeCall(this, "APrimalCharacter.OverrideNewFallVelocity", InitialVelocity, Gravity, DeltaTime); } + bool PreventLanding(FVector ImpactPoint, FVector ImpactAccel, FVector * Velocity) { return NativeCall(this, "APrimalCharacter.PreventLanding", ImpactPoint, ImpactAccel, Velocity); } + bool AllowOverrideFlyingVelocity() { return NativeCall(this, "APrimalCharacter.AllowOverrideFlyingVelocity"); } + void OverrideFlyingVelocity(FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { NativeCall(this, "APrimalCharacter.OverrideFlyingVelocity", InitialVelocity, Gravity, DeltaTime); } + void SetDynamicMusic(USoundBase * newMusic) { NativeCall(this, "APrimalCharacter.SetDynamicMusic", newMusic); } + bool PreventsTargeting_Implementation(AActor * ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting_Implementation", ByActor); } bool PreventInputType(EPrimalCharacterInputType::Type inputType) { return NativeCall(this, "APrimalCharacter.PreventInputType", inputType); } + bool PreventInputDoesOffset() { return NativeCall(this, "APrimalCharacter.PreventInputDoesOffset"); } + float GetImmersionDepth(bool bUseLineTrace) { return NativeCall(this, "APrimalCharacter.GetImmersionDepth", bUseLineTrace); } bool IsAlliedWithOtherTeam(int OtherTeamID) { return NativeCall(this, "APrimalCharacter.IsAlliedWithOtherTeam", OtherTeamID); } - void ResetCollisionSweepLocation(FVector * newLocation) { NativeCall(this, "APrimalCharacter.ResetCollisionSweepLocation", newLocation); } + void TickMovementComponent(float DeltaTime) { NativeCall(this, "APrimalCharacter.TickMovementComponent", DeltaTime); } + void ResetCollisionSweepLocation(FVector * newLocation) { NativeCall(this, "APrimalCharacter.ResetCollisionSweepLocation", newLocation); } void DidTeleport_Implementation(FVector newLoc, FRotator newRot) { NativeCall(this, "APrimalCharacter.DidTeleport_Implementation", newLoc, newRot); } void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalCharacter.FinalLoadedFromSaveGame"); } - void DoExecuteActorConstruction(FTransform * Transform, bool bIsDefaultTransform) { NativeCall(this, "APrimalCharacter.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } - void UpdateSimulatedPosition(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "APrimalCharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } - void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalCharacter.NotifyItemQuantityUpdated", anItem, amount); } - void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalCharacter.NotifyItemAdded", anItem, bEquipItem); } - void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalCharacter.NotifyItemRemoved", anItem); } + void DoExecuteActorConstruction(FTransform * Transform, bool bIsDefaultTransform) { NativeCall(this, "APrimalCharacter.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } + FString * PlayerCommand_Implementation(FString * result, FString * TheCommand) { return NativeCall(this, "APrimalCharacter.PlayerCommand_Implementation", result, TheCommand); } + void UpdateSimulatedPosition(FVector * NewLocation, FRotator * NewRotation) { NativeCall(this, "APrimalCharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } + void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalCharacter.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalCharacter.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalCharacter.NotifyItemRemoved", anItem); } void TeleportSucceeded(bool bIsATest, bool bSimpleTeleport) { NativeCall(this, "APrimalCharacter.TeleportSucceeded", bIsATest, bSimpleTeleport); } bool IsAttachedToSomething() { return NativeCall(this, "APrimalCharacter.IsAttachedToSomething"); } + void AttachToOtherCharacter(APrimalCharacter * characterToAttachTo, FName InSocketName, const bool enableMovementAndCollision, EAttachLocation::Type AttachLocation) { NativeCall(this, "APrimalCharacter.AttachToOtherCharacter", characterToAttachTo, InSocketName, enableMovementAndCollision, AttachLocation); } + void AttachedToOtherCharacterUpdateWorldLocation(FVector * worldLocation) { NativeCall(this, "APrimalCharacter.AttachedToOtherCharacterUpdateWorldLocation", worldLocation); } + void DetachFromOtherCharacter(const bool enableMovementAndCollision) { NativeCall(this, "APrimalCharacter.DetachFromOtherCharacter", enableMovementAndCollision); } bool UseFastTurretTargeting() { return NativeCall(this, "APrimalCharacter.UseFastTurretTargeting"); } + bool ConsumeProjectileImpact(AShooterProjectile * theProjectile, FHitResult * HitResult) { return NativeCall(this, "APrimalCharacter.ConsumeProjectileImpact", theProjectile, HitResult); } bool IsProneOrSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "APrimalCharacter.IsProneOrSitting", bIgnoreLockedToSeat); } bool CharacterIsCarriedAsPassenger() { return NativeCall(this, "APrimalCharacter.CharacterIsCarriedAsPassenger"); } - void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff * BuffToIgnore) { NativeCall(this, "APrimalCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } + void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff * BuffToIgnore) { NativeCall(this, "APrimalCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } bool IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "APrimalCharacter.IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } void InitializedAnimScriptInstance() { NativeCall(this, "APrimalCharacter.InitializedAnimScriptInstance"); } bool ForceAddUnderwaterCharacterStatusValues() { return NativeCall(this, "APrimalCharacter.ForceAddUnderwaterCharacterStatusValues"); } - bool IsPrimalCharFriendly(APrimalCharacter * primalChar) { return NativeCall(this, "APrimalCharacter.IsPrimalCharFriendly", primalChar); } - bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "APrimalCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } - UObject * GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalCharacter.GetUObjectInterfaceTargetableInterface"); } + bool ShouldForceCameraStyle(APrimalCharacter * ForViewTarget, ECameraStyle::Type * OutForcedCameraStyle) { return NativeCall(this, "APrimalCharacter.ShouldForceCameraStyle", ForViewTarget, OutForcedCameraStyle); } + bool IsPrimalCharFriendly(APrimalCharacter * primalChar) { return NativeCall(this, "APrimalCharacter.IsPrimalCharFriendly", primalChar); } + bool IsHostileTo(APrimalCharacter * OtherCharacter) { return NativeCall(this, "APrimalCharacter.IsHostileTo", OtherCharacter); } + bool IsHostileOrAggressiveTo(APrimalCharacter * OtherCharacter) { return NativeCall(this, "APrimalCharacter.IsHostileOrAggressiveTo", OtherCharacter); } + bool ShouldDealDamageTo(APrimalCharacter * OtherCharacter, bool bAllowDamageToSelf, bool bAllowDamageToTribe, bool bAllowDamageToAlliedTribes) { return NativeCall(this, "APrimalCharacter.ShouldDealDamageTo", OtherCharacter, bAllowDamageToSelf, bAllowDamageToTribe, bAllowDamageToAlliedTribes); } + bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "APrimalCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + UPrimitiveComponent * GetBasedMovementComponent() { return NativeCall(this, "APrimalCharacter.GetBasedMovementComponent"); } + FVector * GetCapsuleTopLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetCapsuleTopLocation", result); } + FVector * GetCapsuleBottomLocation(FVector * result) { return NativeCall(this, "APrimalCharacter.GetCapsuleBottomLocation", result); } + void OnMassTeleportEvent(EMassTeleportState::Type EventState, APrimalCharacter * TeleportInitiatedByChar) { NativeCall(this, "APrimalCharacter.OnMassTeleportEvent", EventState, TeleportInitiatedByChar); } + bool GetAllAttachedChars(TArray * AttachedCharsArray, const bool bIncludeSelf, const bool bIncludeBased, const bool bIncludePassengers, const bool bIncludeCarried) { return NativeCall*, const bool, const bool, const bool, const bool>(this, "APrimalCharacter.GetAllAttachedChars", AttachedCharsArray, bIncludeSelf, bIncludeBased, bIncludePassengers, bIncludeCarried); } + bool GetAllAttachedCharsInternal(TSet,FDefaultSetAllocator> * AttachedChars, APrimalCharacter * OriginalChar, const bool bIncludeBased, const bool bIncludePassengers, const bool bIncludeCarried) { return NativeCall,FDefaultSetAllocator>*, APrimalCharacter*, const bool, const bool, const bool>(this, "APrimalCharacter.GetAllAttachedCharsInternal", AttachedChars, OriginalChar, bIncludeBased, bIncludePassengers, bIncludeCarried); } + bool ShouldForceDedicatedMovementTickEveryFrame() { return NativeCall(this, "APrimalCharacter.ShouldForceDedicatedMovementTickEveryFrame"); } + float GetMoveAnimRate() { return NativeCall(this, "APrimalCharacter.GetMoveAnimRate"); } + void ClearCachedIkTraceResults() { NativeCall(this, "APrimalCharacter.ClearCachedIkTraceResults"); } + float OverrideTerminalVelocity() { return NativeCall(this, "APrimalCharacter.OverrideTerminalVelocity"); } + void ClientCheatFly_Implementation() { NativeCall(this, "APrimalCharacter.ClientCheatFly_Implementation"); } + void ClientCheatWalk_Implementation() { NativeCall(this, "APrimalCharacter.ClientCheatWalk_Implementation"); } + bool UseOverrideWaterJumpVelocity() { return NativeCall(this, "APrimalCharacter.UseOverrideWaterJumpVelocity"); } + float GetOverrideWaterJumpVelocity(float OutOfWaterZ) { return NativeCall(this, "APrimalCharacter.GetOverrideWaterJumpVelocity", OutOfWaterZ); } + void OverrideCameraInterpSpeed(const float DefaultTPVCameraSpeedInterpMultiplier, const float DefaultTPVOffsetInterpSpeed, float* TPVCameraSpeedInterpMultiplier, float* TPVOffsetInterpSpeed) { NativeCall(this, "APrimalCharacter.OverrideCameraInterpSpeed", DefaultTPVCameraSpeedInterpMultiplier, DefaultTPVOffsetInterpSpeed, TPVCameraSpeedInterpMultiplier, TPVOffsetInterpSpeed); } + void NativeSimulateHair(TArray * CurrentPos, TArray * LastPos, TArray * RestPos, TArray * PivotPos, TArray * RestDistance, FVector HairSocketLoc, FRotator HairSocketRot, FVector ChestSocketLoc, FRotator ChestSocketRot, float DeltaTime, float Damping, float DampingFrontModifier, float DampingBack, float InWater, float HairWetness, float DragForce, float HairScale, float SpringForce, float SpringForceFrontModifier, float SpringForceBack, float GravityForce, FVector ShoulderLCollisionOffset, float ShoulderLCollisionRadius, FVector ShoulderRCollisionOffset, float ShoulderRCollisionRadius, FVector HeadHairCollisionOffset, float HeadHairCollisionRadius, FVector NeckHairCollisionOffset, float NeckHairCollisionRadius, float MaxDistanceToRestPos, FTransform LastHeadTransform, bool bPosAsPivot, bool bCollideMiddle, bool bCollideWithNeck) { NativeCall*, TArray*, TArray*, TArray*, TArray*, FVector, FRotator, FVector, FRotator, float, float, float, float, float, float, float, float, float, float, float, float, FVector, float, FVector, float, FVector, float, FVector, float, float, FTransform, bool, bool, bool>(this, "APrimalCharacter.NativeSimulateHair", CurrentPos, LastPos, RestPos, PivotPos, RestDistance, HairSocketLoc, HairSocketRot, ChestSocketLoc, ChestSocketRot, DeltaTime, Damping, DampingFrontModifier, DampingBack, InWater, HairWetness, DragForce, HairScale, SpringForce, SpringForceFrontModifier, SpringForceBack, GravityForce, ShoulderLCollisionOffset, ShoulderLCollisionRadius, ShoulderRCollisionOffset, ShoulderRCollisionRadius, HeadHairCollisionOffset, HeadHairCollisionRadius, NeckHairCollisionOffset, NeckHairCollisionRadius, MaxDistanceToRestPos, LastHeadTransform, bPosAsPivot, bCollideMiddle, bCollideWithNeck); } + bool ShouldDisableCameraInterpolation() { return NativeCall(this, "APrimalCharacter.ShouldDisableCameraInterpolation"); } + EMovementMode GetPrimalCharMovementMode() { return NativeCall(this, "APrimalCharacter.GetPrimalCharMovementMode"); } + bool IsPrimalCharWalking() { return NativeCall(this, "APrimalCharacter.IsPrimalCharWalking"); } + bool IsPrimalCharFalling() { return NativeCall(this, "APrimalCharacter.IsPrimalCharFalling"); } + bool IsPrimalCharSwimming() { return NativeCall(this, "APrimalCharacter.IsPrimalCharSwimming"); } + bool IsPrimalCharFlying() { return NativeCall(this, "APrimalCharacter.IsPrimalCharFlying"); } + UAnimMontage * GetPoopAnimation(bool bForcePoop) { return NativeCall(this, "APrimalCharacter.GetPoopAnimation", bForcePoop); } float GetBaseDragWeight() { return NativeCall(this, "APrimalCharacter.GetBaseDragWeight"); } + float BPAdjustDamage(float IncomingDamage, FDamageEvent TheDamageEvent, AController * EventInstigator, AActor * DamageCauser, bool bIsPointDamage, FHitResult PointHitInfo) { return NativeCall(this, "APrimalCharacter.BPAdjustDamage", IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser, bIsPointDamage, PointHitInfo); } + void PlayDyingGeneric(float KillingDamage, FDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingGeneric", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingPoint(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffectPoint(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectPoint", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + bool BPPreventStasis() { return NativeCall(this, "APrimalCharacter.BPPreventStasis"); } + FVector * BPAdjustCharacterMovementImpulse(FVector * result, FVector Impulse, bool bVelocityChange, float MassScaleImpulseExponent, bool bOverrideMaxImpulseZ) { return NativeCall(this, "APrimalCharacter.BPAdjustCharacterMovementImpulse", result, Impulse, bVelocityChange, MassScaleImpulseExponent, bOverrideMaxImpulseZ); } + FVector * BPAdjustImpulseFromDamage(FVector * result, FVector DesiredImpulse, float DamageTaken, FDamageEvent TheDamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsPointDamage, FHitResult PointHitInfo) { return NativeCall(this, "APrimalCharacter.BPAdjustImpulseFromDamage", result, DesiredImpulse, DamageTaken, TheDamageEvent, PawnInstigator, DamageCauser, bIsPointDamage, PointHitInfo); } + void BPCharacterDetach() { NativeCall(this, "APrimalCharacter.BPCharacterDetach"); } + ECameraStyle::Type BPForceCameraStyle(APrimalCharacter * ForViewTarget) { return NativeCall(this, "APrimalCharacter.BPForceCameraStyle", ForViewTarget); } + FVector * BPOverrideCharacterNewFallVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.BPOverrideCharacterNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } static void StaticRegisterNativesAPrimalCharacter() { NativeCall(nullptr, "APrimalCharacter.StaticRegisterNativesAPrimalCharacter"); } - float BPAdjustDamage(float IncomingDamage, FDamageEvent TheDamageEvent, AController * EventInstigator, AActor * DamageCauser, bool bIsPointDamage, FHitResult PointHitInfo) { return NativeCall(this, "APrimalCharacter.BPAdjustDamage", IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser, bIsPointDamage, PointHitInfo); } - FRotator * BPCameraBaseOrientation(FRotator * result, APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPCameraBaseOrientation", result, viewingCharacter); } - FRotator * BPCameraRotationFinal(FRotator * result, APrimalCharacter * viewingCharacter, FRotator * InCurrentFinalRot) { return NativeCall(this, "APrimalCharacter.BPCameraRotationFinal", result, viewingCharacter, InCurrentFinalRot); } - bool BPCanNotifyTeamAggroAI(APrimalDinoCharacter * Dino) { return NativeCall(this, "APrimalCharacter.BPCanNotifyTeamAggroAI", Dino); } - FVector * BPGetFPVViewLocation(FVector * result, APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPGetFPVViewLocation", result, viewingCharacter); } - float BPModifyViewHitDir(APrimalCharacter * viewingCharacter, float InViewHitDir) { return NativeCall(this, "APrimalCharacter.BPModifyViewHitDir", viewingCharacter, InViewHitDir); } + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalCharacter.GetPrivateStaticClass"); } + bool AllowPlayMontage(UAnimMontage * AnimMontage) { return NativeCall(this, "APrimalCharacter.AllowPlayMontage", AnimMontage); } + bool BP_ForceAllowAddBuff(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalCharacter.BP_ForceAllowAddBuff", BuffClass); } + bool BP_IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "APrimalCharacter.BP_IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } + void BP_OnEndCarried(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalCharacter.BP_OnEndCarried", bFromDino, bCancelAnyCarryBuffs); } + void BP_OnJumpPressed() { NativeCall(this, "APrimalCharacter.BP_OnJumpPressed"); } + void BP_OnJumpReleased() { NativeCall(this, "APrimalCharacter.BP_OnJumpReleased"); } + void BP_OnSetDeath() { NativeCall(this, "APrimalCharacter.BP_OnSetDeath"); } + void BP_OnSetRunning(bool bNewIsRunning) { NativeCall(this, "APrimalCharacter.BP_OnSetRunning", bNewIsRunning); } + void BP_OnStartCarried(APrimalDinoCharacter * aDino) { NativeCall(this, "APrimalCharacter.BP_OnStartCarried", aDino); } + void BP_OnZoomIn() { NativeCall(this, "APrimalCharacter.BP_OnZoomIn"); } + void BP_OnZoomOut() { NativeCall(this, "APrimalCharacter.BP_OnZoomOut"); } + bool BP_ShouldDisableCameraInterpolation() { return NativeCall(this, "APrimalCharacter.BP_ShouldDisableCameraInterpolation"); } + void BPAddedAttachmentsForItem(UPrimalItem * anItem) { NativeCall(this, "APrimalCharacter.BPAddedAttachmentsForItem", anItem); } + float BPAdjustTorpidityDamage(float DesiredTorpidityDamage, float HealthDamageAmount, TSubclassOf DamageType) { return NativeCall>(this, "APrimalCharacter.BPAdjustTorpidityDamage", DesiredTorpidityDamage, HealthDamageAmount, DamageType); } + void BPApplyCharacterSnapshot(UPrimalItem * Item, AActor * To, FVector Offset, float MaxExtent, int Pose) { NativeCall(this, "APrimalCharacter.BPApplyCharacterSnapshot", Item, To, Offset, MaxExtent, Pose); } + FRotator * BPCameraBaseOrientation(FRotator * result, APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPCameraBaseOrientation", result, viewingCharacter); } + FRotator * BPCameraRotationFinal(FRotator * result, APrimalCharacter * viewingCharacter, FRotator * InCurrentFinalRot) { return NativeCall(this, "APrimalCharacter.BPCameraRotationFinal", result, viewingCharacter, InCurrentFinalRot); } + bool BPCanBaseOnCharacter(APrimalCharacter * BaseCharacter) { return NativeCall(this, "APrimalCharacter.BPCanBaseOnCharacter", BaseCharacter); } + bool BPCanBeBaseForCharacter(APawn * Pawn) { return NativeCall(this, "APrimalCharacter.BPCanBeBaseForCharacter", Pawn); } + bool BPCanNotifyTeamAggroAI(APrimalDinoCharacter * Dino) { return NativeCall(this, "APrimalCharacter.BPCanNotifyTeamAggroAI", Dino); } + void BPCharacterSleeped() { NativeCall(this, "APrimalCharacter.BPCharacterSleeped"); } + void BPCharacterUnsleeped() { NativeCall(this, "APrimalCharacter.BPCharacterUnsleeped"); } + void BPCheckJumpInput(bool* bUseCustomErrorMessage, FString * ErrorMessageToDisplay) { NativeCall(this, "APrimalCharacter.BPCheckJumpInput", bUseCustomErrorMessage, ErrorMessageToDisplay); } + float BPGetAddForwardVelocityOnJump() { return NativeCall(this, "APrimalCharacter.BPGetAddForwardVelocityOnJump"); } + float BPGetExtraMeleeDamageModifier() { return NativeCall(this, "APrimalCharacter.BPGetExtraMeleeDamageModifier"); } + FVector * BPGetFPVViewLocation(FVector * result, APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPGetFPVViewLocation", result, viewingCharacter); } + float BPGetGravityZScale() { return NativeCall(this, "APrimalCharacter.BPGetGravityZScale"); } + float BPGetHUDOverrideBuffProgressBarPercent() { return NativeCall(this, "APrimalCharacter.BPGetHUDOverrideBuffProgressBarPercent"); } + void BPGetOverrideCameraInterpSpeed(float DefaultTPVCameraSpeedInterpolationMultiplier, float DefaultTPVOffsetInterpSpeed, float* TPVCameraSpeedInterpolationMultiplier, float* TPVOffsetInterpSpeed) { NativeCall(this, "APrimalCharacter.BPGetOverrideCameraInterpSpeed", DefaultTPVCameraSpeedInterpolationMultiplier, DefaultTPVOffsetInterpSpeed, TPVCameraSpeedInterpolationMultiplier, TPVOffsetInterpSpeed); } + bool BPHandleLeftShoulderButton() { return NativeCall(this, "APrimalCharacter.BPHandleLeftShoulderButton"); } + bool BPHandlePoop() { return NativeCall(this, "APrimalCharacter.BPHandlePoop"); } + bool BPHandleRightShoulderButton() { return NativeCall(this, "APrimalCharacter.BPHandleRightShoulderButton"); } + FRotator * BPLimitPlayerRotation(FRotator * result, APrimalCharacter * viewingCharacter, FRotator InViewRotation) { return NativeCall(this, "APrimalCharacter.BPLimitPlayerRotation", result, viewingCharacter, InViewRotation); } + FVector * BPModifyForwardDirectionInput(FVector * result, FVector * directionInput) { return NativeCall(this, "APrimalCharacter.BPModifyForwardDirectionInput", result, directionInput); } + float BPModifyFOVInterpSpeed(float FOVInterpSpeedIn) { return NativeCall(this, "APrimalCharacter.BPModifyFOVInterpSpeed", FOVInterpSpeedIn); } + FVector * BPModifyRightDirectionInput(FVector * result, FVector * directionInput) { return NativeCall(this, "APrimalCharacter.BPModifyRightDirectionInput", result, directionInput); } + float BPModifyViewHitDir(APrimalCharacter * viewingCharacter, float InViewHitDir) { return NativeCall(this, "APrimalCharacter.BPModifyViewHitDir", viewingCharacter, InViewHitDir); } + void BPNotifyBPNotifyIsDamageCauserOfAddedBuff(APrimalBuff * buff) { NativeCall(this, "APrimalCharacter.BPNotifyBPNotifyIsDamageCauserOfAddedBuff", buff); } + void BPNotifyBumpedByPawn(APrimalCharacter * ByPawn) { NativeCall(this, "APrimalCharacter.BPNotifyBumpedByPawn", ByPawn); } + void BPNotifyBumpedPawn(APrimalCharacter * BumpedPawn) { NativeCall(this, "APrimalCharacter.BPNotifyBumpedPawn", BumpedPawn); } + void BPNotifyDroppedItemPickedUp(ADroppedItem * itemPickedUp, APrimalCharacter * PickedUpBy) { NativeCall(this, "APrimalCharacter.BPNotifyDroppedItemPickedUp", itemPickedUp, PickedUpBy); } void BPNotifyLevelUp(int ExtraCharacterLevel) { NativeCall(this, "APrimalCharacter.BPNotifyLevelUp", ExtraCharacterLevel); } - FVector * BPOverrideCharacterNewFallVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.BPOverrideCharacterNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } - bool BPOverrideFPVViewLocation(APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPOverrideFPVViewLocation", viewingCharacter); } + void BPNotifyToggleHUD(bool bHUDHidden) { NativeCall(this, "APrimalCharacter.BPNotifyToggleHUD", bHUDHidden); } + void BPOnAnimPlayedNotify(UAnimMontage * AnimMontage, float InPlayRate, FName StartSectionName, bool bReplicate, bool bReplicateToOwner, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { NativeCall(this, "APrimalCharacter.BPOnAnimPlayedNotify", AnimMontage, InPlayRate, StartSectionName, bReplicate, bReplicateToOwner, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } + bool BPOnAttachmentReplication() { return NativeCall(this, "APrimalCharacter.BPOnAttachmentReplication"); } + void BPOnLethalDamage(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser, bool* bPreventDeath) { NativeCall(this, "APrimalCharacter.BPOnLethalDamage", KillingDamage, DamageEvent, Killer, DamageCauser, bPreventDeath); } + void BPOnMassTeleportEvent(EMassTeleportState::Type EventState, APrimalCharacter * TeleportInitiatedByChar) { NativeCall(this, "APrimalCharacter.BPOnMassTeleportEvent", EventState, TeleportInitiatedByChar); } + void BPOnMovementModeChangedNotify(EMovementMode PrevMovementMode, char PreviousCustomMode) { NativeCall(this, "APrimalCharacter.BPOnMovementModeChangedNotify", PrevMovementMode, PreviousCustomMode); } + void BPOnStaminaDrained() { NativeCall(this, "APrimalCharacter.BPOnStaminaDrained"); } + FVector * BPOverrideFlyingVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.BPOverrideFlyingVelocity", result, InitialVelocity, Gravity, DeltaTime); } + bool BPOverrideFPVViewLocation(APrimalCharacter * viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPOverrideFPVViewLocation", viewingCharacter); } + UAnimMontage * BPOverrideHurtAnim(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath, bool bIsPointDamage, FVector PointDamageLocation, FVector PointDamageHitNormal) { return NativeCall(this, "APrimalCharacter.BPOverrideHurtAnim", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, bIsPointDamage, PointDamageLocation, PointDamageHitNormal); } + void BPPreSerializeSaveGame() { NativeCall(this, "APrimalCharacter.BPPreSerializeSaveGame"); } + bool BPPreventFallDamage(FHitResult * HitResult, float FallDamageAmount) { return NativeCall(this, "APrimalCharacter.BPPreventFallDamage", HitResult, FallDamageAmount); } + bool BPPreventInputType(EPrimalCharacterInputType::Type inputType) { return NativeCall(this, "APrimalCharacter.BPPreventInputType", inputType); } + void BPRemoveCharacterSnapshot(UPrimalItem * Item, AActor * From) { NativeCall(this, "APrimalCharacter.BPRemoveCharacterSnapshot", Item, From); } + void BPSetCharacterMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "APrimalCharacter.BPSetCharacterMeshesMaterialScalarParamValue", ParamName, Value); } + bool BPShouldLimitForwardDirection() { return NativeCall(this, "APrimalCharacter.BPShouldLimitForwardDirection"); } + bool BPShouldLimitRightDirection() { return NativeCall(this, "APrimalCharacter.BPShouldLimitRightDirection"); } + void BPTimerNonDedicated() { NativeCall(this, "APrimalCharacter.BPTimerNonDedicated"); } + void BPTimerServer() { NativeCall(this, "APrimalCharacter.BPTimerServer"); } + void ClientDidPoop() { NativeCall(this, "APrimalCharacter.ClientDidPoop"); } + void ClientEndRagdollUpdate() { NativeCall(this, "APrimalCharacter.ClientEndRagdollUpdate"); } + void ClientFailedPoop() { NativeCall(this, "APrimalCharacter.ClientFailedPoop"); } + void ClientNotifyLevelUp() { NativeCall(this, "APrimalCharacter.ClientNotifyLevelUp"); } + void ClientPlayAnimation(UAnimMontage * AnimMontage, float PlayRate, FName StartSectionName, bool bPlayOnOwner, bool bForceTickPoseAndServerUpdateMesh) { NativeCall(this, "APrimalCharacter.ClientPlayAnimation", AnimMontage, PlayRate, StartSectionName, bPlayOnOwner, bForceTickPoseAndServerUpdateMesh); } + void ClientRagdollUpdate(TArray * BoneLocations, FRotator_NetQuantize TargetRootRotation) { NativeCall*, FRotator_NetQuantize>(this, "APrimalCharacter.ClientRagdollUpdate", BoneLocations, TargetRootRotation); } + void ClientStopAnimation(UAnimMontage * AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimation", AnimMontage, bStopOnOwner, BlendOutTime); } + void ClientSyncAnimation(UAnimMontage * AnimMontage, float PlayRate, float ServerCurrentMontageTime, bool bForceTickPoseAndServerUpdateMesh, float BlendInTime, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientSyncAnimation", AnimMontage, PlayRate, ServerCurrentMontageTime, bForceTickPoseAndServerUpdateMesh, BlendInTime, BlendOutTime); } + void DeathHarvestingFadeOut() { NativeCall(this, "APrimalCharacter.DeathHarvestingFadeOut"); } + void DidTeleport(FVector newLoc, FRotator newRot) { NativeCall(this, "APrimalCharacter.DidTeleport", newLoc, newRot); } + bool EnableTurnToFaceRotation() { return NativeCall(this, "APrimalCharacter.EnableTurnToFaceRotation"); } + TSubclassOf * GetGrappledBuffClassOverride(TSubclassOf * result) { return NativeCall*, TSubclassOf*>(this, "APrimalCharacter.GetGrappledBuffClassOverride", result); } + FName * GetOverrideSocket(FName * result, FName from) { return NativeCall(this, "APrimalCharacter.GetOverrideSocket", result, from); } + bool GiveKillExperience() { return NativeCall(this, "APrimalCharacter.GiveKillExperience"); } void LocalUnpossessed() { NativeCall(this, "APrimalCharacter.LocalUnpossessed"); } - void NetPlaySoundOnCharacter(USoundBase * SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter", SoundToPlay, bPlayOnOwner); } - void NetUpdateTribeName(FString * NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName", NewTribeName); } - void OnBeginDrag(APrimalCharacter * Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag", Dragged, BoneIndex, bWithGrapHook); } + void NetAddCharacterMovementImpulse(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ) { NativeCall(this, "APrimalCharacter.NetAddCharacterMovementImpulse", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ); } + void NetDidLand() { NativeCall(this, "APrimalCharacter.NetDidLand"); } + void NetOnJumped() { NativeCall(this, "APrimalCharacter.NetOnJumped"); } + void NetPlaySoundOnCharacter(USoundBase * SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter", SoundToPlay, bPlayOnOwner); } + void NetSetCharacterMovementVelocity(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.NetSetCharacterMovementVelocity", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } + void NetStopAllAnimMontage() { NativeCall(this, "APrimalCharacter.NetStopAllAnimMontage"); } + void NetUpdateTribeName(FString * NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName", NewTribeName); } + void OnBeginDrag(APrimalCharacter * Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag", Dragged, BoneIndex, bWithGrapHook); } void OnEndDrag() { NativeCall(this, "APrimalCharacter.OnEndDrag"); } - void PlayDyingGeneric(float KillingDamage, FDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingGeneric", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayDyingPoint(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayDyingRadial(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayHitEffectPoint(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectPoint", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - void PlayHitEffectRadial(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - bool PreventsTargeting(AActor * ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting", ByActor); } + bool PreventsTargeting(AActor * ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting", ByActor); } void ServerCallAggressive() { NativeCall(this, "APrimalCharacter.ServerCallAggressive"); } + void ServerCallAttackTarget(AActor * TheTarget) { NativeCall(this, "APrimalCharacter.ServerCallAttackTarget", TheTarget); } void ServerCallFollow() { NativeCall(this, "APrimalCharacter.ServerCallFollow"); } + void ServerCallFollowDistanceCycleOne(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallFollowDistanceCycleOne", ForDinoChar); } + void ServerCallFollowOne(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallFollowOne", ForDinoChar); } + void ServerCallLandFlyerOne(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallLandFlyerOne", ForDinoChar); } + void ServerCallMoveTo(FVector MoveToLoc) { NativeCall(this, "APrimalCharacter.ServerCallMoveTo", MoveToLoc); } void ServerCallNeutral() { NativeCall(this, "APrimalCharacter.ServerCallNeutral"); } void ServerCallPassive() { NativeCall(this, "APrimalCharacter.ServerCallPassive"); } void ServerCallSetAggressive() { NativeCall(this, "APrimalCharacter.ServerCallSetAggressive"); } void ServerCallStay() { NativeCall(this, "APrimalCharacter.ServerCallStay"); } - void ServerDinoOrder(APrimalDinoCharacter * aDino, EDinoTamedOrder::Type OrderType, AActor * target) { NativeCall(this, "APrimalCharacter.ServerDinoOrder", aDino, OrderType, target); } + void ServerCallStayOne(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallStayOne", ForDinoChar); } + void ServerCaptureDermis(APrimalCharacter * Target) { NativeCall(this, "APrimalCharacter.ServerCaptureDermis", Target); } + void ServerDinoOrder(APrimalDinoCharacter * aDino, EDinoTamedOrder::Type OrderType, AActor * target) { NativeCall(this, "APrimalCharacter.ServerDinoOrder", aDino, OrderType, target); } void ServerGiveDefaultWeapon() { NativeCall(this, "APrimalCharacter.ServerGiveDefaultWeapon"); } void ServerRequestDrag() { NativeCall(this, "APrimalCharacter.ServerRequestDrag"); } + void ServerSetRunning(bool bNewRunning) { NativeCall(this, "APrimalCharacter.ServerSetRunning", bNewRunning); } void ServerTryPoop() { NativeCall(this, "APrimalCharacter.ServerTryPoop"); } }; struct AShooterCharacter : APrimalCharacter { - UAnimMontage * SpawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnIntroAnim1P"); } - UAnimMontage * RespawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.RespawnIntroAnim1P"); } - UAnimMontage * ProneInAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneInAnim"); } - UAnimMontage * ProneOutAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneOutAnim"); } - UAnimMontage * StartRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StartRidingAnim"); } - UAnimMontage * StopRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StopRidingAnim"); } - UAnimMontage * TalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.TalkingAnim"); } - UAnimMontage * VoiceTalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceTalkingAnim"); } - TArray EmoteAnimsField() { return *GetNativePointerField*>(this, "AShooterCharacter.EmoteAnims"); } - UAnimMontage * FireBallistaAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.FireBallistaAnimation"); } - UAnimMontage * ReloadBallistaAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadBallistaAnimation"); } - UAnimMontage * DraggingCharacterAnimField() { return *GetNativePointerField(this, "AShooterCharacter.DraggingCharacterAnim"); } + TArray& ClientTranspondersInfoField() { return *GetNativePointerField*>(this, "AShooterCharacter.ClientTranspondersInfo"); } + UAnimMontage* SpawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnIntroAnim1P"); } + UAnimMontage* RespawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.RespawnIntroAnim1P"); } + UAnimMontage* ProneInAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneInAnim"); } + UAnimMontage* ProneOutAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneOutAnim"); } + UAnimMontage* StartRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StartRidingAnim"); } + UAnimMontage* StopRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StopRidingAnim"); } + UAnimMontage* TalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.TalkingAnim"); } + UAnimMontage* VoiceTalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceTalkingAnim"); } + UAnimMontage* VoiceYellingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceYellingAnim"); } + TArray EmoteAnimsField() { return *GetNativePointerField*>(this, "AShooterCharacter.EmoteAnims"); } + UAnimMontage* FireBallistaAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.FireBallistaAnimation"); } + UAnimMontage* ReloadBallistaAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadBallistaAnimation"); } + UAnimMontage* DraggingCharacterAnimField() { return *GetNativePointerField(this, "AShooterCharacter.DraggingCharacterAnim"); } + FString& VivoxUsernameField() { return *GetNativePointerField(this, "AShooterCharacter.VivoxUsername"); } + unsigned int& CurrentVoiceModeAsUInt32Field() { return *GetNativePointerField(this, "AShooterCharacter.CurrentVoiceModeAsUInt32"); } + unsigned int& VoiceModeForCullingTestsField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceModeForCullingTests"); } + bool& bIsActivelyTalkingField() { return *GetNativePointerField(this, "AShooterCharacter.bIsActivelyTalking"); } + bool& bClientIgnoreCurrentVoiceModeReplicationsField() { return *GetNativePointerField(this, "AShooterCharacter.bClientIgnoreCurrentVoiceModeReplications"); } + bool& bWasAlreadyYellingField() { return *GetNativePointerField(this, "AShooterCharacter.bWasAlreadyYelling"); } bool& bWasProneField() { return *GetNativePointerField(this, "AShooterCharacter.bWasProne"); } bool& bIsPreviewCharacterField() { return *GetNativePointerField(this, "AShooterCharacter.bIsPreviewCharacter"); } - bool& bIsVoiceTalkingField() { return *GetNativePointerField(this, "AShooterCharacter.bIsVoiceTalking"); } - long double& LastStartedTalkingTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastStartedTalkingTime"); } long double& DontTargetUntilTimeField() { return *GetNativePointerField(this, "AShooterCharacter.DontTargetUntilTime"); } float& OriginalCollisionHeightField() { return *GetNativePointerField(this, "AShooterCharacter.OriginalCollisionHeight"); } float& WalkBobMagnitudeField() { return *GetNativePointerField(this, "AShooterCharacter.WalkBobMagnitude"); } @@ -3204,31 +4487,40 @@ struct AShooterCharacter : APrimalCharacter float& TargetingTimeField() { return *GetNativePointerField(this, "AShooterCharacter.TargetingTime"); } float& BobMaxMovementSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.BobMaxMovementSpeed"); } float& WeaponBobMaxMovementSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobMaxMovementSpeed"); } + long double& LastCheckSevenField() { return *GetNativePointerField(this, "AShooterCharacter.LastCheckSeven"); } + long double& LastCheckSevenHitField() { return *GetNativePointerField(this, "AShooterCharacter.LastCheckSevenHit"); } + long double& LastCheckSevenTransmissionField() { return *GetNativePointerField(this, "AShooterCharacter.LastCheckSevenTransmission"); } + long double& LastValidCheckSevenField() { return *GetNativePointerField(this, "AShooterCharacter.LastValidCheckSeven"); } + long double& LastCheckSevenTeleportField() { return *GetNativePointerField(this, "AShooterCharacter.LastCheckSevenTeleport"); } + FVector& LastCheckSevenLocationField() { return *GetNativePointerField(this, "AShooterCharacter.LastCheckSevenLocation"); } TSubclassOf& DefaultWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.DefaultWeapon"); } + TSubclassOf& OverrideDefaultWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.OverrideDefaultWeapon"); } TSubclassOf& MapWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.MapWeapon"); } TSubclassOf& GPSWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.GPSWeapon"); } TSubclassOf& CompassWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.CompassWeapon"); } + TWeakObjectPtr& ClimbingLadderField() { return *GetNativePointerField*>(this, "AShooterCharacter.ClimbingLadder"); } FString& PlayerNameField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerName"); } TWeakObjectPtr& RidingDinoField() { return *GetNativePointerField*>(this, "AShooterCharacter.RidingDino"); } TArray& LowerBodyPartRootBonesField() { return *GetNativePointerField*>(this, "AShooterCharacter.LowerBodyPartRootBones"); } - UAnimMontage * DropItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DropItemAnimation"); } - UAnimMontage * ThrowItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowItemAnimation"); } - UAnimMontage * PickupItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.PickupItemAnimation"); } - UAnimMontage * ActivateInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ActivateInventoryAnimation"); } + UAnimMontage* DropItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DropItemAnimation"); } + UAnimMontage* ThrowItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowItemAnimation"); } + UAnimMontage* PickupItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.PickupItemAnimation"); } + UAnimMontage* ActivateInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ActivateInventoryAnimation"); } FRotator& LastDinoAimRotationOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.LastDinoAimRotationOffset"); } FRotator& LastAimRotOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.LastAimRotOffset"); } - UAudioComponent * LastGrapHookACField() { return *GetNativePointerField(this, "AShooterCharacter.LastGrapHookAC"); } + APrimalProjectileBoomerang* LastFiredBoomerangField() { return *GetNativePointerField(this, "AShooterCharacter.LastFiredBoomerang"); } + UAudioComponent* LastGrapHookACField() { return *GetNativePointerField(this, "AShooterCharacter.LastGrapHookAC"); } int& _GrapHookCableObjectCountField() { return *GetNativePointerField(this, "AShooterCharacter._GrapHookCableObjectCount"); } FVector& GrapHookDefaultOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookDefaultOffset"); } float& GrapHookCableWidthField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookCableWidth"); } - UMaterialInterface * GrapHookMaterialField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookMaterial"); } + UMaterialInterface* GrapHookMaterialField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookMaterial"); } float& LadderLateralJumpVelocityField() { return *GetNativePointerField(this, "AShooterCharacter.LadderLateralJumpVelocity"); } float& GrapHookPulledRopeDistanceField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookPulledRopeDistance"); } float& GrapHookSyncTimeField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookSyncTime"); } bool& bReleasingGrapHookField() { return *GetNativePointerField(this, "AShooterCharacter.bReleasingGrapHook"); } FString& PlatformProfileNameField() { return *GetNativePointerField(this, "AShooterCharacter.PlatformProfileName"); } FUniqueNetIdRepl& PlatformProfileIDField() { return *GetNativePointerField(this, "AShooterCharacter.PlatformProfileID"); } - UAudioComponent * CharacterStatusStateSoundComponentField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterStatusStateSoundComponent"); } + UAudioComponent* CharacterStatusStateSoundComponentField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterStatusStateSoundComponent"); } long double& LastUncrouchTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUncrouchTime"); } long double& LastUnproneTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUnproneTime"); } float& CurrentWeaponBobSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentWeaponBobSpeed"); } @@ -3238,14 +4530,14 @@ struct AShooterCharacter : APrimalCharacter long double& LastPressReloadTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastPressReloadTime"); } FName& WeaponAttachPointField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponAttachPoint"); } float& TargetingSpeedModifierField() { return *GetNativePointerField(this, "AShooterCharacter.TargetingSpeedModifier"); } - USoundCue * LowHealthSoundField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthSound"); } - UAnimMontage * CallFollowAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnim"); } - UAnimMontage * CallStayAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnim"); } - UAnimMontage * CallFollowAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnimSingle"); } - UAnimMontage * CallStayAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnimSingle"); } - UAnimMontage * CallMoveToAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallMoveToAnim"); } - UAnimMontage * CallAttackAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallAttackAnim"); } - UAudioComponent * LowHealthWarningPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthWarningPlayer"); } + USoundCue* LowHealthSoundField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthSound"); } + UAnimMontage* CallFollowAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnim"); } + UAnimMontage* CallStayAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnim"); } + UAnimMontage* CallFollowAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnimSingle"); } + UAnimMontage* CallStayAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnimSingle"); } + UAnimMontage* CallMoveToAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallMoveToAnim"); } + UAnimMontage* CallAttackAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallAttackAnim"); } + UAudioComponent* LowHealthWarningPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthWarningPlayer"); } FItemNetID& NextWeaponItemIDField() { return *GetNativePointerField(this, "AShooterCharacter.NextWeaponItemID"); } float& WeaponBobTimeField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobTime"); } float& CurrentAimBlendingField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentAimBlending"); } @@ -3263,21 +4555,22 @@ struct AShooterCharacter : APrimalCharacter float& WeaponBobSpeedBaseFallingField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobSpeedBaseFalling"); } float& WeaponBobTargetingBlendField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobTargetingBlend"); } TArray& DefaultAttachmentInfosField() { return *GetNativePointerField*>(this, "AShooterCharacter.DefaultAttachmentInfos"); } - USoundCue * StartCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartCrouchSound"); } - USoundCue * EndCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndCrouchSound"); } - USoundCue * StartProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartProneSound"); } - USoundCue * EndProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndProneSound"); } + USoundCue* StartCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartCrouchSound"); } + USoundCue* EndCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndCrouchSound"); } + USoundCue* StartProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartProneSound"); } + USoundCue* EndProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndProneSound"); } TSubclassOf& NextInventoryWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.NextInventoryWeapon"); } FItemNetID& PreMapWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreMapWeaponItemNetID"); } float& ServerSeatedViewRotationYawField() { return *GetNativePointerField(this, "AShooterCharacter.ServerSeatedViewRotationYaw"); } float& ServerSeatedViewRotationPitchField() { return *GetNativePointerField(this, "AShooterCharacter.ServerSeatedViewRotationPitch"); } - AShooterWeapon * CurrentWeaponField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentWeapon"); } + AShooterWeapon* CurrentWeaponField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentWeapon"); } unsigned __int64& LinkedPlayerDataIDField() { return *GetNativePointerField(this, "AShooterCharacter.LinkedPlayerDataID"); } long double& LastTimeInFallingField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeInFalling"); } long double& StartedRidingTimeField() { return *GetNativePointerField(this, "AShooterCharacter.StartedRidingTime"); } long double& TimeSinceLastControllerField() { return *GetNativePointerField(this, "AShooterCharacter.TimeSinceLastController"); } TWeakObjectPtr& LastControllerField() { return *GetNativePointerField*>(this, "AShooterCharacter.LastController"); } - UAnimMontage * DrinkingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DrinkingAnimation"); } + TWeakObjectPtr& LastValidPlayerControllerField() { return *GetNativePointerField*>(this, "AShooterCharacter.LastValidPlayerController"); } + UAnimMontage* DrinkingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DrinkingAnimation"); } long double& LastRequestedTribeTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeTime"); } unsigned __int64& LastRequestedTribeIDField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeID"); } FString& LastRequestedTribeNameField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeName"); } @@ -3288,21 +4581,21 @@ struct AShooterCharacter : APrimalCharacter long double& LastIndoorCheckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastIndoorCheckTime"); } FItemNetID& PreRidingWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreRidingWeaponItemNetID"); } FItemNetID& PreInventoryWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreInventoryWeaponItemNetID"); } - UAnimSequence * ViewingInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ViewingInventoryAnimation"); } - UAnimSequence * DefaultDinoRidingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingAnimation"); } - UAnimSequence * DefaultDinoRidingMoveAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingMoveAnimation"); } - UAnimSequence * DefaultSeatingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultSeatingAnimation"); } - UAnimSequence * DefaultShieldAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultShieldAnimation"); } - UAnimMontage * ShieldCoverAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ShieldCoverAnimation"); } - UAnimMontage * ShieldCoverAnimationForCrouchField() { return *GetNativePointerField(this, "AShooterCharacter.ShieldCoverAnimationForCrouch"); } + UAnimSequence* ViewingInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ViewingInventoryAnimation"); } + UAnimSequence* DefaultDinoRidingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingAnimation"); } + UAnimSequence* DefaultDinoRidingMoveAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingMoveAnimation"); } + UAnimSequence* DefaultSeatingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultSeatingAnimation"); } + UAnimSequence* DefaultShieldAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultShieldAnimation"); } + UAnimMontage* ShieldCoverAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ShieldCoverAnimation"); } + UAnimMontage* ShieldCoverAnimationForCrouchField() { return *GetNativePointerField(this, "AShooterCharacter.ShieldCoverAnimationForCrouch"); } float& EnemyPlayerMaxCursorHUDDistanceProneField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceProne"); } float& EnemyPlayerMaxCursorHUDDistanceCrouchedField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceCrouched"); } float& EnemyPlayerMaxCursorHUDDistanceStandingField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceStanding"); } FSaddlePassengerSeatDefinition& CurrentPassengerSeatDefinitionField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentPassengerSeatDefinition"); } - TArray AnimsOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimsOverrideFrom"); } - TArray AnimOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimOverrideTo"); } - TArray AnimSequencesOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequencesOverrideFrom"); } - TArray AnimSequenceOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequenceOverrideTo"); } + TArray AnimsOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimsOverrideFrom"); } + TArray AnimOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimOverrideTo"); } + TArray AnimSequencesOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequencesOverrideFrom"); } + TArray AnimSequenceOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequenceOverrideTo"); } float& PreviousRootYawSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousRootYawSpeed"); } FieldArray BodyColorsField() { return { this, "AShooterCharacter.BodyColors" }; } char& FacialHairIndexField() { return *GetNativePointerField(this, "AShooterCharacter.FacialHairIndex"); } @@ -3316,11 +4609,12 @@ struct AShooterCharacter : APrimalCharacter unsigned int& UniqueNetIdTypeHashField() { return *GetNativePointerField(this, "AShooterCharacter.UniqueNetIdTypeHash"); } long double& LastUseHarvestTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUseHarvestTime"); } long double& StopRidingTimeField() { return *GetNativePointerField(this, "AShooterCharacter.StopRidingTime"); } - UAnimMontage * SpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnAnim"); } - UAnimMontage * FirstSpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.FirstSpawnAnim"); } + UAnimMontage* SpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnAnim"); } + UAnimMontage* FirstSpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.FirstSpawnAnim"); } long double& LocalLastViewingInventoryTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LocalLastViewingInventoryTime"); } FVector& LastStasisCastPositionField() { return *GetNativePointerField(this, "AShooterCharacter.LastStasisCastPosition"); } bool& bWasHostPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.bWasHostPlayer"); } + long double& SavedLastTimeHadControllerField() { return *GetNativePointerField(this, "AShooterCharacter.SavedLastTimeHadController"); } long double& LastTimeHadControllerField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeHadController"); } long double& LastTaggedTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastTaggedTime"); } long double& LastTaggedTimeExtraField() { return *GetNativePointerField(this, "AShooterCharacter.LastTaggedTimeExtra"); } @@ -3340,7 +4634,7 @@ struct AShooterCharacter : APrimalCharacter int& PlayerNumUnderGroundFailField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerNumUnderGroundFail"); } float& LastSweepCapsuleHeightField() { return *GetNativePointerField(this, "AShooterCharacter.LastSweepCapsuleHeight"); } float& LastSweepCapsuleRadiusField() { return *GetNativePointerField(this, "AShooterCharacter.LastSweepCapsuleRadius"); } - USoundBase * ThrowCharacterSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowCharacterSound"); } + USoundBase* ThrowCharacterSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowCharacterSound"); } float& ClientSeatedViewRotationPitchField() { return *GetNativePointerField(this, "AShooterCharacter.ClientSeatedViewRotationPitch"); } float& ClientSeatedViewRotationYawField() { return *GetNativePointerField(this, "AShooterCharacter.ClientSeatedViewRotationYaw"); } long double& LastReleaseSeatingStructureTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastReleaseSeatingStructureTime"); } @@ -3352,8 +4646,9 @@ struct AShooterCharacter : APrimalCharacter unsigned int& AllianceInviteIDField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteID"); } FString& AllianceInviteNameField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteName"); } long double& AllianceInviteTimeField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteTime"); } - UAnimMontage * MountedCarryingDinoAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.MountedCarryingDinoAnimation"); } - UAnimMontage * CuddleAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.CuddleAnimation"); } + float& InventoryDragWeightScaleField() { return *GetNativePointerField(this, "AShooterCharacter.InventoryDragWeightScale"); } + UAnimMontage* MountedCarryingDinoAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.MountedCarryingDinoAnimation"); } + UAnimMontage* CuddleAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.CuddleAnimation"); } long double& LastUpdatedAimActorsTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUpdatedAimActorsTime"); } FVector& UpdateHyperThermalInsulationPositionField() { return *GetNativePointerField(this, "AShooterCharacter.UpdateHyperThermalInsulationPosition"); } FVector& UpdateHypoThermalInsulationPositionField() { return *GetNativePointerField(this, "AShooterCharacter.UpdateHypoThermalInsulationPosition"); } @@ -3362,7 +4657,7 @@ struct AShooterCharacter : APrimalCharacter float& LastAdditionalHypoThermalInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.LastAdditionalHypoThermalInsulation"); } float& LastAdditionalHyperThermalInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.LastAdditionalHyperThermalInsulation"); } float& WaterLossRateMultiplierField() { return *GetNativePointerField(this, "AShooterCharacter.WaterLossRateMultiplier"); } - UAnimSequence * CharacterAdditiveStandingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterAdditiveStandingAnim"); } + UAnimSequence* CharacterAdditiveStandingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterAdditiveStandingAnim"); } long double& LastTryAccessInventoryFailTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastTryAccessInventoryFailTime"); } long double& LastEmotePlayTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastEmotePlayTime"); } float& IntervalForFullHeadHairGrowthField() { return *GetNativePointerField(this, "AShooterCharacter.IntervalForFullHeadHairGrowth"); } @@ -3375,7 +4670,7 @@ struct AShooterCharacter : APrimalCharacter float& ReplicatedWeightField() { return *GetNativePointerField(this, "AShooterCharacter.ReplicatedWeight"); } long double& LocalDiedAtTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LocalDiedAtTime"); } long double& LastNotStuckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastNotStuckTime"); } - USoundBase * ProneMoveSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ProneMoveSound"); } + USoundBase* ProneMoveSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ProneMoveSound"); } long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "AShooterCharacter.UploadEarliestValidTime"); } long double& LastCollisionStuckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastCollisionStuckTime"); } int& SimulatedLastFrameProcessedForceUpdateAimedActorsField() { return *GetNativePointerField(this, "AShooterCharacter.SimulatedLastFrameProcessedForceUpdateAimedActors"); } @@ -3385,6 +4680,22 @@ struct AShooterCharacter : APrimalCharacter int& LastCameraAttachmentChangedIncrementField() { return *GetNativePointerField(this, "AShooterCharacter.LastCameraAttachmentChangedIncrement"); } bool& bPreventWeaponMovementAnimsField() { return *GetNativePointerField(this, "AShooterCharacter.bPreventWeaponMovementAnims"); } TEnumAsByte& BestInstantShotResultField() { return *GetNativePointerField*>(this, "AShooterCharacter.BestInstantShotResult"); } + TWeakObjectPtr& CurrentItemBalloonField() { return *GetNativePointerField*>(this, "AShooterCharacter.CurrentItemBalloon"); } + FWeaponEvent& NotifyWeaponUnequippedField() { return *GetNativePointerField(this, "AShooterCharacter.NotifyWeaponUnequipped"); } + FWeaponEvent& NotifyWeaponEquippedField() { return *GetNativePointerField(this, "AShooterCharacter.NotifyWeaponEquipped"); } + FWeaponEvent& NotifyWeaponFiredField() { return *GetNativePointerField(this, "AShooterCharacter.NotifyWeaponFired"); } + int& PlayerHexagonCountField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerHexagonCount"); } + int& DefaultHexagonAmountEarnedOnMissionCompletionField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultHexagonAmountEarnedOnMissionCompletion"); } + bool& bAutoPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.bAutoPlayer"); } + float& fAutoMoveField() { return *GetNativePointerField(this, "AShooterCharacter.fAutoMove"); } + float& fAutoStrafeField() { return *GetNativePointerField(this, "AShooterCharacter.fAutoStrafe"); } + float& fAutoTurnField() { return *GetNativePointerField(this, "AShooterCharacter.fAutoTurn"); } + bool& bAutoJumpField() { return *GetNativePointerField(this, "AShooterCharacter.bAutoJump"); } + bool& bAutoFireField() { return *GetNativePointerField(this, "AShooterCharacter.bAutoFire"); } + bool& bAutoFireTargetField() { return *GetNativePointerField(this, "AShooterCharacter.bAutoFireTarget"); } + bool& bAutoProneField() { return *GetNativePointerField(this, "AShooterCharacter.bAutoProne"); } + float& MeshHeightAdjustmentField() { return *GetNativePointerField(this, "AShooterCharacter.MeshHeightAdjustment"); } + float& BuffExtraDamageMultiplierField() { return *GetNativePointerField(this, "AShooterCharacter.BuffExtraDamageMultiplier"); } // Bit fields @@ -3405,6 +4716,7 @@ struct AShooterCharacter : APrimalCharacter BitFieldValue bWasSubmerged() { return { this, "AShooterCharacter.bWasSubmerged" }; } BitFieldValue bCheckPushedThroughWallsWasSeatingStructure() { return { this, "AShooterCharacter.bCheckPushedThroughWallsWasSeatingStructure" }; } BitFieldValue bGaveInitialItems() { return { this, "AShooterCharacter.bGaveInitialItems" }; } + BitFieldValue bReceivedGenesisSeasonPassItems() { return { this, "AShooterCharacter.bReceivedGenesisSeasonPassItems" }; } BitFieldValue bHadGrapHookAttachActor() { return { this, "AShooterCharacter.bHadGrapHookAttachActor" }; } BitFieldValue bAddedToActivePlayerList() { return { this, "AShooterCharacter.bAddedToActivePlayerList" }; } BitFieldValue bDisableLookYaw() { return { this, "AShooterCharacter.bDisableLookYaw" }; } @@ -3422,54 +4734,64 @@ struct AShooterCharacter : APrimalCharacter BitFieldValue bIsConnected() { return { this, "AShooterCharacter.bIsConnected" }; } BitFieldValue bRefreshDefaultAttachmentsHadEquippedItems() { return { this, "AShooterCharacter.bRefreshDefaultAttachmentsHadEquippedItems" }; } BitFieldValue bLockedToSeatingStructure() { return { this, "AShooterCharacter.bLockedToSeatingStructure" }; } + BitFieldValue bPreventAllWeapons() { return { this, "AShooterCharacter.bPreventAllWeapons" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterCharacter.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterCharacter.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "AShooterCharacter.StaticClass"); } + bool TemplateAllowActorSpawn(UWorld* World, FVector* AtLocation, FRotator* AtRotation, FActorSpawnParameters* SpawnParameters) { return NativeCall(this, "AShooterCharacter.TemplateAllowActorSpawn", World, AtLocation, AtRotation, SpawnParameters); } bool BuffsPreventFirstPerson() { return NativeCall(this, "AShooterCharacter.BuffsPreventFirstPerson"); } void PostInitializeComponents() { NativeCall(this, "AShooterCharacter.PostInitializeComponents"); } void AuthPostSpawnInit() { NativeCall(this, "AShooterCharacter.AuthPostSpawnInit"); } + void CheckFallFromLadder() { NativeCall(this, "AShooterCharacter.CheckFallFromLadder"); } void Destroyed() { NativeCall(this, "AShooterCharacter.Destroyed"); } void OnRep_RawBoneModifiers() { NativeCall(this, "AShooterCharacter.OnRep_RawBoneModifiers"); } void UpdateTransponders() { NativeCall(this, "AShooterCharacter.UpdateTransponders"); } void BeginPlay() { NativeCall(this, "AShooterCharacter.BeginPlay"); } - void DrawTranspondersInfo(AShooterHUD * HUD) { NativeCall(this, "AShooterCharacter.DrawTranspondersInfo", HUD); } + FVector* GetTPVCameraOffset(FVector* result) { return NativeCall(this, "AShooterCharacter.GetTPVCameraOffset", result); } + void DrawTranspondersInfo(AShooterHUD* HUD) { NativeCall(this, "AShooterCharacter.DrawTranspondersInfo", HUD); } void PlaySpawnAnim() { NativeCall(this, "AShooterCharacter.PlaySpawnAnim"); } void ClearSpawnAnim() { NativeCall(this, "AShooterCharacter.ClearSpawnAnim"); } void PlayJumpAnim() { NativeCall(this, "AShooterCharacter.PlayJumpAnim"); } void PlayLandedAnim() { NativeCall(this, "AShooterCharacter.PlayLandedAnim"); } void DedicatedServerBoneFixup() { NativeCall(this, "AShooterCharacter.DedicatedServerBoneFixup"); } - void ControllerLeavingGame(AShooterPlayerController * theController) { NativeCall(this, "AShooterCharacter.ControllerLeavingGame", theController); } - void ModifyFirstPersonCameraLocation(FVector * Loc, float DeltaTime) { NativeCall(this, "AShooterCharacter.ModifyFirstPersonCameraLocation", Loc, DeltaTime); } - void PossessedBy(AController * InController) { NativeCall(this, "AShooterCharacter.PossessedBy", InController); } - void LocalPossessedBy(APlayerController * ByController) { NativeCall(this, "AShooterCharacter.LocalPossessedBy", ByController); } + void ControllerLeavingGame(AShooterPlayerController* theController) { NativeCall(this, "AShooterCharacter.ControllerLeavingGame", theController); } + void ModifyFirstPersonCameraLocation(FVector* Loc, float DeltaTime) { NativeCall(this, "AShooterCharacter.ModifyFirstPersonCameraLocation", Loc, DeltaTime); } + void PossessedBy(AController* InController) { NativeCall(this, "AShooterCharacter.PossessedBy", InController); } + void LocalPossessedBy(APlayerController* ByController) { NativeCall(this, "AShooterCharacter.LocalPossessedBy", ByController); } void ServerDetachGrapHookCable_Implementation(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.ServerDetachGrapHookCable_Implementation", bDoUpwardsJump, UpwardsJumpYaw); } void ServerReleaseGrapHookCable_Implementation(bool bReleasing) { NativeCall(this, "AShooterCharacter.ServerReleaseGrapHookCable_Implementation", bReleasing); } void DetachGrapHookCable_Implementation() { NativeCall(this, "AShooterCharacter.DetachGrapHookCable_Implementation"); } void SyncGrapHookDistance_Implementation(float Distance) { NativeCall(this, "AShooterCharacter.SyncGrapHookDistance_Implementation", Distance); } void UpdateGrapHook(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.UpdateGrapHook", DeltaSeconds); } void SetCarriedPitchYaw_Implementation(float NewCarriedPitch, float NewCarriedYaw) { NativeCall(this, "AShooterCharacter.SetCarriedPitchYaw_Implementation", NewCarriedPitch, NewCarriedYaw); } - FRotator * GetAimOffsets(FRotator * result, float DeltaTime, FRotator * RootRotOffset, float * RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "AShooterCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FRotator* GetAimOffsets(FRotator* result, float DeltaTime, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset) { return NativeCall(this, "AShooterCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } void UpdatePawnMeshes(bool bForceThirdPerson, bool bForceFlush) { NativeCall(this, "AShooterCharacter.UpdatePawnMeshes", bForceThirdPerson, bForceFlush); } - void OnCameraUpdate(FVector * CameraLocation, FRotator * CameraRotation) { NativeCall(this, "AShooterCharacter.OnCameraUpdate", CameraLocation, CameraRotation); } + void OnCameraUpdate(FVector* CameraLocation, FRotator* CameraRotation) { NativeCall(this, "AShooterCharacter.OnCameraUpdate", CameraLocation, CameraRotation); } + TSubclassOf* GetDefaultWeapon(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "AShooterCharacter.GetDefaultWeapon", result); } + void ToggleWeapon() { NativeCall(this, "AShooterCharacter.ToggleWeapon"); } void GiveDefaultWeapon(bool bForceGiveDefaultWeapon) { NativeCall(this, "AShooterCharacter.GiveDefaultWeapon", bForceGiveDefaultWeapon); } void GiveMapWeapon() { NativeCall(this, "AShooterCharacter.GiveMapWeapon"); } void SwitchMap() { NativeCall(this, "AShooterCharacter.SwitchMap"); } void DelayGiveDefaultWeapon(float DelayTime) { NativeCall(this, "AShooterCharacter.DelayGiveDefaultWeapon", DelayTime); } void ServerSwitchMap_Implementation() { NativeCall(this, "AShooterCharacter.ServerSwitchMap_Implementation"); } void ServerGiveDefaultWeapon_Implementation() { NativeCall(this, "AShooterCharacter.ServerGiveDefaultWeapon_Implementation"); } - void GivePrimalItemWeapon(UPrimalItem * aPrimalItem) { NativeCall(this, "AShooterCharacter.GivePrimalItemWeapon", aPrimalItem); } - void StartWeaponSwitch(UPrimalItem * aPrimalItem, bool bDontClearLastWeapon) { NativeCall(this, "AShooterCharacter.StartWeaponSwitch", aPrimalItem, bDontClearLastWeapon); } + void GivePrimalItemWeapon(UPrimalItem* aPrimalItem) { NativeCall(this, "AShooterCharacter.GivePrimalItemWeapon", aPrimalItem); } + AShooterWeapon* GivePrimalItemWeaponForMission(UPrimalItem* aPrimalItem, AMissionType* AssociatedMission) { return NativeCall(this, "AShooterCharacter.GivePrimalItemWeaponForMission", aPrimalItem, AssociatedMission); } + void StartWeaponSwitch(UPrimalItem* aPrimalItem, bool bDontClearLastWeapon) { NativeCall(this, "AShooterCharacter.StartWeaponSwitch", aPrimalItem, bDontClearLastWeapon); } void FinishWeaponSwitch() { NativeCall(this, "AShooterCharacter.FinishWeaponSwitch"); } - float GetMaxCursorHUDDistance(AShooterPlayerController * PC) { return NativeCall(this, "AShooterCharacter.GetMaxCursorHUDDistance", PC); } - void DrawFloatingHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterCharacter.DrawFloatingHUD", HUD); } - void DrawFloatingChatMessage(AShooterHUD * HUD, FString Message, long double receivedChatTime) { NativeCall(this, "AShooterCharacter.DrawFloatingChatMessage", HUD, Message, receivedChatTime); } - void SetCurrentWeapon(AShooterWeapon * NewWeapon, AShooterWeapon * LastWeapon) { NativeCall(this, "AShooterCharacter.SetCurrentWeapon", NewWeapon, LastWeapon); } + float GetMaxCursorHUDDistance(AShooterPlayerController* PC) { return NativeCall(this, "AShooterCharacter.GetMaxCursorHUDDistance", PC); } + void DrawFloatingHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterCharacter.DrawFloatingHUD", HUD); } + void DestroyInventory() { NativeCall(this, "AShooterCharacter.DestroyInventory"); } + void OnRep_CurrentWeapon(AShooterWeapon* LastWeapon) { NativeCall(this, "AShooterCharacter.OnRep_CurrentWeapon", LastWeapon); } + void SetCurrentWeapon(AShooterWeapon* NewWeapon, AShooterWeapon* LastWeapon) { NativeCall(this, "AShooterCharacter.SetCurrentWeapon", NewWeapon, LastWeapon); } + void Serialize(FArchive* Ar) { NativeCall(this, "AShooterCharacter.Serialize", Ar); } void ForceSleep() { NativeCall(this, "AShooterCharacter.ForceSleep"); } bool CanFire() { return NativeCall(this, "AShooterCharacter.CanFire"); } void SetTargeting(bool bNewTargeting) { NativeCall(this, "AShooterCharacter.SetTargeting", bNewTargeting); } void ServerSetTargeting_Implementation(bool bNewTargeting) { NativeCall(this, "AShooterCharacter.ServerSetTargeting_Implementation", bNewTargeting); } - void ClientUpdateTranspondersInfo_Implementation(TArray * TranspondersInfo, bool bNewData) { NativeCall *, bool>(this, "AShooterCharacter.ClientUpdateTranspondersInfo_Implementation", TranspondersInfo, bNewData); } + void ClientUpdateTranspondersInfo_Implementation(TArray* TranspondersInfo, bool bNewData) { NativeCall*, bool>(this, "AShooterCharacter.ClientUpdateTranspondersInfo_Implementation", TranspondersInfo, bNewData); } void ZoomIn() { NativeCall(this, "AShooterCharacter.ZoomIn"); } void ZoomOut() { NativeCall(this, "AShooterCharacter.ZoomOut"); } bool CanProne() { return NativeCall(this, "AShooterCharacter.CanProne"); } @@ -3482,12 +4804,13 @@ struct AShooterCharacter : APrimalCharacter void OnStartCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "AShooterCharacter.OnStartCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } void OnStartFire(bool bFromGamepadRight) { NativeCall(this, "AShooterCharacter.OnStartFire", bFromGamepadRight); } void OnStopFire(bool bFromGamepadRight) { NativeCall(this, "AShooterCharacter.OnStopFire", bFromGamepadRight); } - void OnStartAltFire() { NativeCall(this, "AShooterCharacter.OnStartAltFire"); } - void OnStopAltFire() { NativeCall(this, "AShooterCharacter.OnStopAltFire"); } + void OnStartAltFire(bool bFromGamepad) { NativeCall(this, "AShooterCharacter.OnStartAltFire", bFromGamepad); } + void OnStopAltFire(bool bFromGamepad) { NativeCall(this, "AShooterCharacter.OnStopAltFire", bFromGamepad); } void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterCharacter.OnStartTargeting", bFromGamepadLeft); } void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterCharacter.OnStopTargeting", bFromGamepadLeft); } void OnPressReload() { NativeCall(this, "AShooterCharacter.OnPressReload"); } void OnReload() { NativeCall(this, "AShooterCharacter.OnReload"); } + void OnStartRunning() { NativeCall(this, "AShooterCharacter.OnStartRunning"); } bool IsRunning() { return NativeCall(this, "AShooterCharacter.IsRunning"); } void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "AShooterCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } bool IsValidUnStasisCaster() { return NativeCall(this, "AShooterCharacter.IsValidUnStasisCaster"); } @@ -3495,203 +4818,310 @@ struct AShooterCharacter : APrimalCharacter void Tick(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.Tick", DeltaSeconds); } void UpdateCarriedLocationAndRotation(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.UpdateCarriedLocationAndRotation", DeltaSeconds); } float GetCarryingSocketYaw(bool RefreshBones) { return NativeCall(this, "AShooterCharacter.GetCarryingSocketYaw", RefreshBones); } - bool CanBeCarried(APrimalCharacter * ByCarrier) { return NativeCall(this, "AShooterCharacter.CanBeCarried", ByCarrier); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool CanBeCarried(APrimalCharacter* ByCarrier) { return NativeCall(this, "AShooterCharacter.CanBeCarried", ByCarrier); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + void OnRep_VivoxUsername() { NativeCall(this, "AShooterCharacter.OnRep_VivoxUsername"); } + void OnRep_CurrentVoiceModeAsUInt32() { NativeCall(this, "AShooterCharacter.OnRep_CurrentVoiceModeAsUInt32"); } + void ServerUpdateCurrentVoiceModeAsUInt32_Implementation(unsigned int NewValue) { NativeCall(this, "AShooterCharacter.ServerUpdateCurrentVoiceModeAsUInt32_Implementation", NewValue); } + void ServerSetIsVoiceActive_Implementation(bool IsActive) { NativeCall(this, "AShooterCharacter.ServerSetIsVoiceActive_Implementation", IsActive); } + void ReplicateVoiceModeToClients() { NativeCall(this, "AShooterCharacter.ReplicateVoiceModeToClients"); } + AShooterWeapon* GetCurrentWeapon() { return NativeCall(this, "AShooterCharacter.GetCurrentWeapon"); } + FName* GetWeaponAttachPoint(FName* result) { return NativeCall(this, "AShooterCharacter.GetWeaponAttachPoint", result); } + float GetTargetingSpeedModifier() { return NativeCall(this, "AShooterCharacter.GetTargetingSpeedModifier"); } + float GetActualTargetingFOV(float DefaultTargetingFOV) { return NativeCall(this, "AShooterCharacter.GetActualTargetingFOV", DefaultTargetingFOV); } bool IsTargeting() { return NativeCall(this, "AShooterCharacter.IsTargeting"); } bool IsFirstPerson() { return NativeCall(this, "AShooterCharacter.IsFirstPerson"); } + bool IsCurrentPassengerLimitCameraYaw() { return NativeCall(this, "AShooterCharacter.IsCurrentPassengerLimitCameraYaw"); } void SetActorHiddenInGame(bool bNewHidden) { NativeCall(this, "AShooterCharacter.SetActorHiddenInGame", bNewHidden); } bool AllowFirstPerson() { return NativeCall(this, "AShooterCharacter.AllowFirstPerson"); } void SetCameraMode(bool bFirstperson, bool bIgnoreSettingFirstPersonRiding) { NativeCall(this, "AShooterCharacter.SetCameraMode", bFirstperson, bIgnoreSettingFirstPersonRiding); } + void StartCameraTransition(float Duration) { NativeCall(this, "AShooterCharacter.StartCameraTransition", Duration); } void PlaySpawnIntro() { NativeCall(this, "AShooterCharacter.PlaySpawnIntro"); } void FinishSpawnIntro() { NativeCall(this, "AShooterCharacter.FinishSpawnIntro"); } - bool ValidToRestoreForPC(AShooterPlayerController * aPC) { return NativeCall(this, "AShooterCharacter.ValidToRestoreForPC", aPC); } - static AShooterCharacter * FindForPlayerController(AShooterPlayerController * aPC) { return NativeCall(nullptr, "AShooterCharacter.FindForPlayerController", aPC); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "AShooterCharacter.GetDescriptiveName", result); } - FString * GetShortName(FString * result) { return NativeCall(this, "AShooterCharacter.GetShortName", result); } - UPrimalPlayerData * GetPlayerData() { return NativeCall(this, "AShooterCharacter.GetPlayerData"); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "AShooterCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + bool ValidToRestoreForPC(AShooterPlayerController* aPC) { return NativeCall(this, "AShooterCharacter.ValidToRestoreForPC", aPC); } + static AShooterCharacter* FindForPlayerController(AShooterPlayerController* aPC) { return NativeCall(nullptr, "AShooterCharacter.FindForPlayerController", aPC); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "AShooterCharacter.LinkedPlayerIDString", result); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "AShooterCharacter.GetDescriptiveName", result); } + FString* GetShortName(FString* result) { return NativeCall(this, "AShooterCharacter.GetShortName", result); } + UPrimalPlayerData* GetPlayerData() { return NativeCall(this, "AShooterCharacter.GetPlayerData"); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + bool IsFiring() { return NativeCall(this, "AShooterCharacter.IsFiring"); } bool IsUsingShield() { return NativeCall(this, "AShooterCharacter.IsUsingShield"); } bool IsBlockingWithShield() { return NativeCall(this, "AShooterCharacter.IsBlockingWithShield"); } bool AllowBlockingWithShield() { return NativeCall(this, "AShooterCharacter.AllowBlockingWithShield"); } - bool GetBlockingShieldOffsets(FVector * OutBlockingShieldFPVTranslation, FRotator * OutBlockingShieldFPVRotation) { return NativeCall(this, "AShooterCharacter.GetBlockingShieldOffsets", OutBlockingShieldFPVTranslation, OutBlockingShieldFPVRotation); } + bool GetBlockingShieldOffsets(FVector* OutBlockingShieldFPVTranslation, FRotator* OutBlockingShieldFPVRotation) { return NativeCall(this, "AShooterCharacter.GetBlockingShieldOffsets", OutBlockingShieldFPVTranslation, OutBlockingShieldFPVRotation); } void NetSimulatedForceUpdateAimedActors_Implementation(float OverrideMaxDistance) { NativeCall(this, "AShooterCharacter.NetSimulatedForceUpdateAimedActors_Implementation", OverrideMaxDistance); } void ServerForceUpdatedAimedActors(float OverrideMaxDistance, bool bReplicateToSimulatedClients) { NativeCall(this, "AShooterCharacter.ServerForceUpdatedAimedActors", OverrideMaxDistance, bReplicateToSimulatedClients); } void ServerSetBallistaNewRotation_Implementation(float Pitch, float Yaw) { NativeCall(this, "AShooterCharacter.ServerSetBallistaNewRotation_Implementation", Pitch, Yaw); } void ServerNotifyBallistaShot_Implementation(FHitResult Impact, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerNotifyBallistaShot_Implementation", Impact, ShootDir); } float GetMaxSpeedModifier() { return NativeCall(this, "AShooterCharacter.GetMaxSpeedModifier"); } - void SetRidingDino(APrimalDinoCharacter * aDino) { NativeCall(this, "AShooterCharacter.SetRidingDino", aDino); } - void ClearRidingDino(bool bFromDino, int OverrideUnboardDirection) { NativeCall(this, "AShooterCharacter.ClearRidingDino", bFromDino, OverrideUnboardDirection); } - void SetCarryingDino(APrimalDinoCharacter * aDino) { NativeCall(this, "AShooterCharacter.SetCarryingDino", aDino); } + void SetRidingDino(APrimalDinoCharacter* aDino) { NativeCall(this, "AShooterCharacter.SetRidingDino", aDino); } + void TryGiveGenesisSeasonPassItems(int AppID) { NativeCall(this, "AShooterCharacter.TryGiveGenesisSeasonPassItems", AppID); } + void ClearRidingDino(bool bFromDino, int OverrideUnboardDirection, bool bForceEvenIfBuffPreventsClear) { NativeCall(this, "AShooterCharacter.ClearRidingDino", bFromDino, OverrideUnboardDirection, bForceEvenIfBuffPreventsClear); } + void SetCarryingDino(APrimalDinoCharacter* aDino) { NativeCall(this, "AShooterCharacter.SetCarryingDino", aDino); } void ClearCarryingDino(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "AShooterCharacter.ClearCarryingDino", bFromDino, bCancelAnyCarryBuffs); } - void SetRidingDinoAsPassenger(APrimalDinoCharacter * aDino, FSaddlePassengerSeatDefinition * SeatDefinition) { NativeCall(this, "AShooterCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } + void SetRidingDinoAsPassenger(APrimalDinoCharacter* aDino, FSaddlePassengerSeatDefinition* SeatDefinition) { NativeCall(this, "AShooterCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } void ClearRidingDinoAsPassenger(bool bFromDino) { NativeCall(this, "AShooterCharacter.ClearRidingDinoAsPassenger", bFromDino); } void ServerLaunchMountedDino_Implementation() { NativeCall(this, "AShooterCharacter.ServerLaunchMountedDino_Implementation"); } void ClientPlayHarvestAnim_Implementation() { NativeCall(this, "AShooterCharacter.ClientPlayHarvestAnim_Implementation"); } void LaunchMountedDino() { NativeCall(this, "AShooterCharacter.LaunchMountedDino"); } void OnPrimalCharacterSleeped() { NativeCall(this, "AShooterCharacter.OnPrimalCharacterSleeped"); } - bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "AShooterCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } - void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "AShooterCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "AShooterCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } bool CanJumpInternal_Implementation() { return NativeCall(this, "AShooterCharacter.CanJumpInternal_Implementation"); } bool CanProneInternal() { return NativeCall(this, "AShooterCharacter.CanProneInternal"); } bool IsCrafting() { return NativeCall(this, "AShooterCharacter.IsCrafting"); } - void RemoveAttachments() { NativeCall(this, "AShooterCharacter.RemoveAttachments"); } + void RemoveAttachments(AActor* From, bool bIsSnapshot) { NativeCall(this, "AShooterCharacter.RemoveAttachments", From, bIsSnapshot); } void NotifyEquippedItems() { NativeCall(this, "AShooterCharacter.NotifyEquippedItems"); } - void RefreshDefaultAttachments(AActor * UseOtherActor) { NativeCall(this, "AShooterCharacter.RefreshDefaultAttachments", UseOtherActor); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "AShooterCharacter.ClientMultiUse", ForPC, UseIndex); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "AShooterCharacter.TryMultiUse", ForPC, UseIndex); } + UPrimalInventoryComponent* GetInventoryComponent(AActor* UseOtherActor) { return NativeCall(this, "AShooterCharacter.GetInventoryComponent", UseOtherActor); } + void RefreshDefaultAttachments(AActor* UseOtherActor, bool bIsSnapshot) { NativeCall(this, "AShooterCharacter.RefreshDefaultAttachments", UseOtherActor, bIsSnapshot); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "AShooterCharacter.ClientMultiUse", ForPC, UseIndex); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "AShooterCharacter.TryMultiUse", ForPC, UseIndex); } void RefreshTribeName() { NativeCall(this, "AShooterCharacter.RefreshTribeName"); } void ChangeActorTeam(int NewTeam) { NativeCall(this, "AShooterCharacter.ChangeActorTeam", NewTeam); } void ClientClearTribeRequest_Implementation() { NativeCall(this, "AShooterCharacter.ClientClearTribeRequest_Implementation"); } - void ClientNotifyTribeRequest_Implementation(FString * RequestTribeName, AShooterCharacter * PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest_Implementation", RequestTribeName, PlayerCharacter); } + void ClientNotifyTribeRequest_Implementation(FString* RequestTribeName, AShooterCharacter* PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest_Implementation", RequestTribeName, PlayerCharacter); } void PlayDrinkingAnimation() { NativeCall(this, "AShooterCharacter.PlayDrinkingAnimation"); } float GetCharacterAdditionalHypothermiaInsulationValue() { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalHypothermiaInsulationValue"); } bool CalcIsIndoors() { return NativeCall(this, "AShooterCharacter.CalcIsIndoors"); } - static bool IsIndoorsAtLoc(UWorld * theWorld, FVector * actorLoc) { return NativeCall(nullptr, "AShooterCharacter.IsIndoorsAtLoc", theWorld, actorLoc); } - float GetInsulationFromItem(FHitResult * HitOut, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetInsulationFromItem", HitOut, TypeInsulation); } - float GetCharacterAdditionalInsulationValueFromStructure(UWorld * theWorld, FVector * actorLoc, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalInsulationValueFromStructure", theWorld, actorLoc, TypeInsulation); } + static bool IsIndoorsAtLoc(UWorld* theWorld, FVector* actorLoc) { return NativeCall(nullptr, "AShooterCharacter.IsIndoorsAtLoc", theWorld, actorLoc); } + float GetInsulationFromItem(FHitResult* HitOut, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetInsulationFromItem", HitOut, TypeInsulation); } + float GetCharacterAdditionalInsulationValueFromStructure(UWorld* theWorld, FVector* actorLoc, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalInsulationValueFromStructure", theWorld, actorLoc, TypeInsulation); } float GetCharacterAdditionalHyperthermiaInsulationValue() { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalHyperthermiaInsulationValue"); } void PreInitializeComponents() { NativeCall(this, "AShooterCharacter.PreInitializeComponents"); } void OnMovementModeChanged(EMovementMode PrevMovementMode, char PreviousCustomMode) { NativeCall(this, "AShooterCharacter.OnMovementModeChanged", PrevMovementMode, PreviousCustomMode); } - void PreApplyAccumulatedForces(float DeltaSeconds, FVector * PendingImpulseToApply, FVector * PendingForceToApply) { NativeCall(this, "AShooterCharacter.PreApplyAccumulatedForces", DeltaSeconds, PendingImpulseToApply, PendingForceToApply); } - void OnBeginDrag_Implementation(APrimalCharacter * Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "AShooterCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } + void PreApplyAccumulatedForces(float DeltaSeconds, FVector* PendingImpulseToApply, FVector* PendingForceToApply) { NativeCall(this, "AShooterCharacter.PreApplyAccumulatedForces", DeltaSeconds, PendingImpulseToApply, PendingForceToApply); } + void OnBeginDrag_Implementation(APrimalCharacter* Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "AShooterCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } void OnEndDrag_Implementation() { NativeCall(this, "AShooterCharacter.OnEndDrag_Implementation"); } bool IsSubmerged(bool bDontCheckSwimming, bool bUseHalfThreshold, bool bForceCheck, bool bFromVolumeChange) { return NativeCall(this, "AShooterCharacter.IsSubmerged", bDontCheckSwimming, bUseHalfThreshold, bForceCheck, bFromVolumeChange); } void UpdateSwimmingState() { NativeCall(this, "AShooterCharacter.UpdateSwimmingState"); } void SetCharacterMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "AShooterCharacter.SetCharacterMeshesMaterialScalarParamValue", ParamName, Value); } + void RefreshRiderSocket() { NativeCall(this, "AShooterCharacter.RefreshRiderSocket"); } float GetRidingDinoAnimSpeedRatio() { return NativeCall(this, "AShooterCharacter.GetRidingDinoAnimSpeedRatio"); } - UAnimSequence * GetDinoRidingAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingAnimation"); } - UAnimSequence * GetDinoRidingMoveAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingMoveAnimation"); } - UAnimSequence * GetSeatingAnimation() { return NativeCall(this, "AShooterCharacter.GetSeatingAnimation"); } - float GetBaseTargetingDesire(ITargetableInterface * Attacker) { return NativeCall(this, "AShooterCharacter.GetBaseTargetingDesire", Attacker); } + UAnimSequence* GetDinoRidingAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingAnimation"); } + UAnimSequence* GetDinoRidingMoveAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingMoveAnimation"); } + UAnimSequence* GetSeatingAnimation() { return NativeCall(this, "AShooterCharacter.GetSeatingAnimation"); } + float GetBaseTargetingDesire(ITargetableInterface* Attacker) { return NativeCall(this, "AShooterCharacter.GetBaseTargetingDesire", Attacker); } void ApplyBodyColors() { NativeCall(this, "AShooterCharacter.ApplyBodyColors"); } void ApplyBoneModifiers() { NativeCall(this, "AShooterCharacter.ApplyBoneModifiers"); } - float GetTargetingDesirability(ITargetableInterface * Attacker) { return NativeCall(this, "AShooterCharacter.GetTargetingDesirability", Attacker); } - UAnimMontage * GetOverridenMontage(UAnimMontage * AnimMontage) { return NativeCall(this, "AShooterCharacter.GetOverridenMontage", AnimMontage); } - UAnimSequence * GetOverridenAnimSequence(UAnimSequence * AnimSeq) { return NativeCall(this, "AShooterCharacter.GetOverridenAnimSequence", AnimSeq); } + void CaptureCharacterSnapshot(UPrimalItem* Item) { NativeCall(this, "AShooterCharacter.CaptureCharacterSnapshot", Item); } + void ApplyCharacterSnapshot(UPrimalItem* Item, AActor* To, FVector Offset, float MaxExtent, int Pose) { NativeCall(this, "AShooterCharacter.ApplyCharacterSnapshot", Item, To, Offset, MaxExtent, Pose); } + void RemoveCharacterSnapshot(UPrimalItem* Item, AActor* From) { NativeCall(this, "AShooterCharacter.RemoveCharacterSnapshot", Item, From); } + float GetTargetingDesirability(ITargetableInterface* Attacker) { return NativeCall(this, "AShooterCharacter.GetTargetingDesirability", Attacker); } + UAnimMontage* GetOverridenMontage(UAnimMontage* AnimMontage) { return NativeCall(this, "AShooterCharacter.GetOverridenMontage", AnimMontage); } + UAnimSequence* GetOverridenAnimSequence(UAnimSequence* AnimSeq) { return NativeCall(this, "AShooterCharacter.GetOverridenAnimSequence", AnimSeq); } bool IsWatered() { return NativeCall(this, "AShooterCharacter.IsWatered"); } - void AdjustDamage(float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "AShooterCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - bool IsBlockedByShield(FHitResult * HitInfo, FVector * ShotDirection, bool bBlockAllPointDamage) { return NativeCall(this, "AShooterCharacter.IsBlockedByShield", HitInfo, ShotDirection, bBlockAllPointDamage); } + bool CanDoUsableHarvesting() { return NativeCall(this, "AShooterCharacter.CanDoUsableHarvesting"); } + void AdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool IsBlockedByShield(FHitResult* HitInfo, FVector* ShotDirection, bool bBlockAllPointDamage) { return NativeCall(this, "AShooterCharacter.IsBlockedByShield", HitInfo, ShotDirection, bBlockAllPointDamage); } void ClientNotifyLevelUp_Implementation() { NativeCall(this, "AShooterCharacter.ClientNotifyLevelUp_Implementation"); } void StartedFiringWeapon(bool bPrimaryFire) { NativeCall(this, "AShooterCharacter.StartedFiringWeapon", bPrimaryFire); } + void FiredWeapon() { NativeCall(this, "AShooterCharacter.FiredWeapon"); } + long double GetLastAttackTime() { return NativeCall(this, "AShooterCharacter.GetLastAttackTime"); } void OrbitCamOn() { NativeCall(this, "AShooterCharacter.OrbitCamOn"); } void OrbitCamToggle() { NativeCall(this, "AShooterCharacter.OrbitCamToggle"); } void SetRagdollPhysics(bool bUseRagdollLocationOffset, bool bForceRecreateBones, bool bForLoading) { NativeCall(this, "AShooterCharacter.SetRagdollPhysics", bUseRagdollLocationOffset, bForceRecreateBones, bForLoading); } bool IsPlayingUpperBodyCallAnimation_Implementation() { return NativeCall(this, "AShooterCharacter.IsPlayingUpperBodyCallAnimation_Implementation"); } void ServerCallFollow_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallFollow_Implementation"); } - void ServerCallFollowOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } + void ServerCallFollowOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } void ServerCallStay_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallStay_Implementation"); } - void ServerCallStayOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallStayOne_Implementation", ForDinoChar); } - void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } + void ServerCallStayOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallStayOne_Implementation", ForDinoChar); } + void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } void ServerCallAggressive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallAggressive_Implementation"); } void ServerCallNeutral_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallNeutral_Implementation"); } void ServerCallPassive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallPassive_Implementation"); } void ServerCallSetAggressive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallSetAggressive_Implementation"); } - void ServerCallAttackTarget_Implementation(AActor * TheTarget) { NativeCall(this, "AShooterCharacter.ServerCallAttackTarget_Implementation", TheTarget); } + void ServerCallAttackTarget_Implementation(AActor* TheTarget) { NativeCall(this, "AShooterCharacter.ServerCallAttackTarget_Implementation", TheTarget); } void ClientOrderedMoveTo_Implementation(FVector MoveToLoc) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveTo_Implementation", MoveToLoc); } - void ClientOrderedAttackTarget_Implementation(AActor * attackTarget) { NativeCall(this, "AShooterCharacter.ClientOrderedAttackTarget_Implementation", attackTarget); } + void ClientOrderedAttackTarget_Implementation(AActor* attackTarget) { NativeCall(this, "AShooterCharacter.ClientOrderedAttackTarget_Implementation", attackTarget); } void ServerCallMoveTo_Implementation(FVector MoveToLoc) { NativeCall(this, "AShooterCharacter.ServerCallMoveTo_Implementation", MoveToLoc); } + void ServerCallLandFlyerOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallLandFlyerOne_Implementation", ForDinoChar); } bool TryAccessInventory() { return NativeCall(this, "AShooterCharacter.TryAccessInventory"); } void PlayEmoteAnimation_Implementation(char EmoteIndex) { NativeCall(this, "AShooterCharacter.PlayEmoteAnimation_Implementation", EmoteIndex); } - void OnVoiceTalkingStateChanged(bool talking) { NativeCall(this, "AShooterCharacter.OnVoiceTalkingStateChanged", talking); } + void PlayTalkingAnimation() { NativeCall(this, "AShooterCharacter.PlayTalkingAnimation"); } + void OnVoiceTalkingStateChanged(bool talking, bool IsUsingSuperRange) { NativeCall(this, "AShooterCharacter.OnVoiceTalkingStateChanged", talking, IsUsingSuperRange); } + ACharacter* GetTalkerCharacter() { return NativeCall(this, "AShooterCharacter.GetTalkerCharacter"); } + FVector* GetTalkerLocation(FVector* result) { return NativeCall(this, "AShooterCharacter.GetTalkerLocation", result); } void OnFailedJumped() { NativeCall(this, "AShooterCharacter.OnFailedJumped"); } float GetRecoilMultiplier() { return NativeCall(this, "AShooterCharacter.GetRecoilMultiplier"); } void StasisingCharacter() { NativeCall(this, "AShooterCharacter.StasisingCharacter"); } - UAnimSequence * GetAlternateStandingAnim(float * OutBlendInTime, float * OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAlternateStandingAnim", OutBlendInTime, OutBlendOutTime); } + bool UseAltAimOffsetAnim() { return NativeCall(this, "AShooterCharacter.UseAltAimOffsetAnim"); } + bool UseAlternateStandingAnim() { return NativeCall(this, "AShooterCharacter.UseAlternateStandingAnim"); } + UAnimSequence* GetAlternateStandingAnim(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAlternateStandingAnim", OutBlendInTime, OutBlendOutTime); } bool UseAdditiveStandingAnim() { return NativeCall(this, "AShooterCharacter.UseAdditiveStandingAnim"); } bool GetAdditiveStandingAnimNonAdditive() { return NativeCall(this, "AShooterCharacter.GetAdditiveStandingAnimNonAdditive"); } - UAnimSequence * GetAdditiveStandingAnim(float * OutBlendInTime, float * OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAdditiveStandingAnim", OutBlendInTime, OutBlendOutTime); } + UAnimSequence* GetAdditiveStandingAnim(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAdditiveStandingAnim", OutBlendInTime, OutBlendOutTime); } void ClosedInventoryUI() { NativeCall(this, "AShooterCharacter.ClosedInventoryUI"); } void ServerSetViewingInventory_Implementation(bool bIsViewing) { NativeCall(this, "AShooterCharacter.ServerSetViewingInventory_Implementation", bIsViewing); } + bool AnimUseAimOffset() { return NativeCall(this, "AShooterCharacter.AnimUseAimOffset"); } void ServerCheckDrinkingWater_Implementation() { NativeCall(this, "AShooterCharacter.ServerCheckDrinkingWater_Implementation"); } void GameStateHandleEvent_Implementation(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.GameStateHandleEvent_Implementation", NameParam, VecParam); } - APrimalDinoCharacter * GetRidingDino() { return NativeCall(this, "AShooterCharacter.GetRidingDino"); } - void AttachToLadder_Implementation(USceneComponent * Parent) { NativeCall(this, "AShooterCharacter.AttachToLadder_Implementation", Parent); } + void CallGameStateHandleEvent(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.CallGameStateHandleEvent", NameParam, VecParam); } + APrimalDinoCharacter* GetRidingDino() { return NativeCall(this, "AShooterCharacter.GetRidingDino"); } + void AttachToLadder_Implementation(USceneComponent* Parent) { NativeCall(this, "AShooterCharacter.AttachToLadder_Implementation", Parent); } void DetachFromLadder_Implementation() { NativeCall(this, "AShooterCharacter.DetachFromLadder_Implementation"); } bool IsValidForStatusRecovery() { return NativeCall(this, "AShooterCharacter.IsValidForStatusRecovery"); } bool IsOnSeatingStructure() { return NativeCall(this, "AShooterCharacter.IsOnSeatingStructure"); } bool IsControllingBallistaTurret() { return NativeCall(this, "AShooterCharacter.IsControllingBallistaTurret"); } + APrimalStructureTurretBallista* GetControlledTurretBallista() { return NativeCall(this, "AShooterCharacter.GetControlledTurretBallista"); } + AMissionType* GetActiveMission() { return NativeCall(this, "AShooterCharacter.GetActiveMission"); } void OnAttachedToSeatingStructure() { NativeCall(this, "AShooterCharacter.OnAttachedToSeatingStructure"); } - void OnDetachedFromSeatingStructure(APrimalStructureSeating * InSeatingStructure) { NativeCall(this, "AShooterCharacter.OnDetachedFromSeatingStructure", InSeatingStructure); } - void TakeSeatingStructure(APrimalStructureSeating * InSeatingStructure, int SeatNumber, bool bLockedToSeat) { NativeCall(this, "AShooterCharacter.TakeSeatingStructure", InSeatingStructure, SeatNumber, bLockedToSeat); } - void ReleaseSeatingStructure(APrimalStructureSeating * InSeatingStructure) { NativeCall(this, "AShooterCharacter.ReleaseSeatingStructure", InSeatingStructure); } + void OnDetachedFromSeatingStructure(APrimalStructureSeating* InSeatingStructure) { NativeCall(this, "AShooterCharacter.OnDetachedFromSeatingStructure", InSeatingStructure); } + void TakeSeatingStructure(APrimalStructureSeating* InSeatingStructure, int SeatNumber, bool bLockedToSeat) { NativeCall(this, "AShooterCharacter.TakeSeatingStructure", InSeatingStructure, SeatNumber, bLockedToSeat); } + void ReleaseSeatingStructure(APrimalStructureSeating* InSeatingStructure) { NativeCall(this, "AShooterCharacter.ReleaseSeatingStructure", InSeatingStructure); } bool ShouldReplicateRotPitch() { return NativeCall(this, "AShooterCharacter.ShouldReplicateRotPitch"); } bool IsUsingClimbingPick() { return NativeCall(this, "AShooterCharacter.IsUsingClimbingPick"); } + void BreakGrapple() { NativeCall(this, "AShooterCharacter.BreakGrapple"); } void ServerPlayFireBallistaAnimation_Implementation() { NativeCall(this, "AShooterCharacter.ServerPlayFireBallistaAnimation_Implementation"); } void ServerStopFireBallista_Implementation() { NativeCall(this, "AShooterCharacter.ServerStopFireBallista_Implementation"); } void ServerToClientsPlayFireBallistaAnimation_Implementation() { NativeCall(this, "AShooterCharacter.ServerToClientsPlayFireBallistaAnimation_Implementation"); } + void PlayeReloadBallistaAnimation() { NativeCall(this, "AShooterCharacter.PlayeReloadBallistaAnimation"); } void ServerFireBallistaProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerFireBallistaProjectile_Implementation", Origin, ShootDir); } void ServerSeatingStructureAction_Implementation(char ActionNumber) { NativeCall(this, "AShooterCharacter.ServerSeatingStructureAction_Implementation", ActionNumber); } - void WasPushed(ACharacter * ByOtherCharacter) { NativeCall(this, "AShooterCharacter.WasPushed", ByOtherCharacter); } - void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "AShooterCharacter.NotifyBumpedPawn", BumpedPawn); } + void WasPushed(ACharacter* ByOtherCharacter) { NativeCall(this, "AShooterCharacter.WasPushed", ByOtherCharacter); } + void NotifyBumpedPawn(APawn* BumpedPawn) { NativeCall(this, "AShooterCharacter.NotifyBumpedPawn", BumpedPawn); } void ClientNetEndClimbingLadder_Implementation() { NativeCall(this, "AShooterCharacter.ClientNetEndClimbingLadder_Implementation"); } void ServerNetEndClimbingLadder_Implementation(bool bIsClimbOver, FVector ClimbOverLoc, float RightDir) { NativeCall(this, "AShooterCharacter.ServerNetEndClimbingLadder_Implementation", bIsClimbOver, ClimbOverLoc, RightDir); } - void RenamePlayer_Implementation(FString * NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer_Implementation", NewName); } - bool AllowDinoTargetingRange(FVector * AtLoc, float TargetingRange) { return NativeCall(this, "AShooterCharacter.AllowDinoTargetingRange", AtLoc, TargetingRange); } - FVector * GetPawnViewLocation(FVector * result, bool bAllTransforms) { return NativeCall(this, "AShooterCharacter.GetPawnViewLocation", result, bAllTransforms); } - FRotator * GetPassengerAttachedRotation(FRotator * result) { return NativeCall(this, "AShooterCharacter.GetPassengerAttachedRotation", result); } - void ClientInviteToAlliance_Implementation(int RequestingTeam, unsigned int AllianceID, FString * AllianceName, FString * InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance_Implementation", RequestingTeam, AllianceID, AllianceName, InviteeName); } - void InviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString AllianceName, FString InviteeName) { NativeCall(this, "AShooterCharacter.InviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviteeName); } - bool CanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "AShooterCharacter.CanDragCharacter", Character); } + void RenamePlayer_Implementation(FString* NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer_Implementation", NewName); } + bool AllowDinoTargetingRange(FVector* AtLoc, float TargetingRange) { return NativeCall(this, "AShooterCharacter.AllowDinoTargetingRange", AtLoc, TargetingRange); } + FVector* GetPawnViewLocation(FVector* result, bool bAllTransforms) { return NativeCall(this, "AShooterCharacter.GetPawnViewLocation", result, bAllTransforms); } + FRotator* GetPassengerAttachedRotation(FRotator* result) { return NativeCall(this, "AShooterCharacter.GetPassengerAttachedRotation", result); } + void ClientInviteToAlliance_Implementation(int RequestingTeam, unsigned int AllianceID, FString* AllianceName, FString* InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance_Implementation", RequestingTeam, AllianceID, AllianceName, InviteeName); } + void InviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString AllianceName, FString InviterName) { NativeCall(this, "AShooterCharacter.InviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviterName); } + bool CanDragCharacter(APrimalCharacter* Character) { return NativeCall(this, "AShooterCharacter.CanDragCharacter", Character); } void GiveDefaultWeaponTimer() { NativeCall(this, "AShooterCharacter.GiveDefaultWeaponTimer"); } bool IsCarryingSomething(bool bNotForRunning) { return NativeCall(this, "AShooterCharacter.IsCarryingSomething", bNotForRunning); } void ForceGiveDefaultWeapon() { NativeCall(this, "AShooterCharacter.ForceGiveDefaultWeapon"); } - APrimalDinoCharacter * GetBasedOnDino() { return NativeCall(this, "AShooterCharacter.GetBasedOnDino"); } + APrimalDinoCharacter* GetBasedOnDino() { return NativeCall(this, "AShooterCharacter.GetBasedOnDino"); } + bool IsOutside() { return NativeCall(this, "AShooterCharacter.IsOutside"); } void HideWeapon() { NativeCall(this, "AShooterCharacter.HideWeapon"); } void ShowWeapon() { NativeCall(this, "AShooterCharacter.ShowWeapon"); } void ServerStartSurfaceCameraForPassenger_Implementation(float yaw, float roll, float pitch, bool bShouldInvertInput) { NativeCall(this, "AShooterCharacter.ServerStartSurfaceCameraForPassenger_Implementation", yaw, roll, pitch, bShouldInvertInput); } float ModifyAirControl(float AirControlIn) { return NativeCall(this, "AShooterCharacter.ModifyAirControl", AirControlIn); } - FVector * GetLastSweepLocation(FVector * result) { return NativeCall(this, "AShooterCharacter.GetLastSweepLocation", result); } + FVector* GetLastSweepLocation(FVector* result) { return NativeCall(this, "AShooterCharacter.GetLastSweepLocation", result); } + float GetPercentageOfHeadHairGrowth() { return NativeCall(this, "AShooterCharacter.GetPercentageOfHeadHairGrowth"); } + float GetPercentageOfFacialHairGrowth() { return NativeCall(this, "AShooterCharacter.GetPercentageOfFacialHairGrowth"); } void NetSetHeadHairPercent_Implementation(float thePercent, int newHeadHairIndex) { NativeCall(this, "AShooterCharacter.NetSetHeadHairPercent_Implementation", thePercent, newHeadHairIndex); } void NetSetFacialHairPercent_Implementation(float thePercent, int newFacialHairIndex) { NativeCall(this, "AShooterCharacter.NetSetFacialHairPercent_Implementation", thePercent, newFacialHairIndex); } void UpdateHair() { NativeCall(this, "AShooterCharacter.UpdateHair"); } + int GetFacialHairIndex() { return NativeCall(this, "AShooterCharacter.GetFacialHairIndex"); } + int GetHeadHairIndex() { return NativeCall(this, "AShooterCharacter.GetHeadHairIndex"); } + FLinearColor* GetHeadHairColor(FLinearColor* result) { return NativeCall(this, "AShooterCharacter.GetHeadHairColor", result); } + FLinearColor* GetFacialHairColor(FLinearColor* result) { return NativeCall(this, "AShooterCharacter.GetFacialHairColor", result); } void NetSetOverrideHeadHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterCharacter.NetSetOverrideHeadHairColor_Implementation", HairColor); } void NetSetOverrideFacialHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterCharacter.NetSetOverrideFacialHairColor_Implementation", HairColor); } void Unstasis() { NativeCall(this, "AShooterCharacter.Unstasis"); } void RegisterActorTickFunctions(bool bRegister, bool bSaveAndRestoreTickState) { NativeCall(this, "AShooterCharacter.RegisterActorTickFunctions", bRegister, bSaveAndRestoreTickState); } void OnRep_HatHidden() { NativeCall(this, "AShooterCharacter.OnRep_HatHidden"); } float GetHeadHairMorphTargetValue() { return NativeCall(this, "AShooterCharacter.GetHeadHairMorphTargetValue"); } + static float ComputeHeadHairMorphTargetValue(bool bFemale, char HairIndex, float PercentOfGrowth) { return NativeCall(nullptr, "AShooterCharacter.ComputeHeadHairMorphTargetValue", bFemale, HairIndex, PercentOfGrowth); } float GetFacialHairMorphTargetValue() { return NativeCall(this, "AShooterCharacter.GetFacialHairMorphTargetValue"); } + static float ComputeFacialHairMorphTargetValue(bool bFemale, char HairIndex, float PercentOfGrowth) { return NativeCall(nullptr, "AShooterCharacter.ComputeFacialHairMorphTargetValue", bFemale, HairIndex, PercentOfGrowth); } void TempDampenInputAcceleration() { NativeCall(this, "AShooterCharacter.TempDampenInputAcceleration"); } - APrimalStructureExplosive * GetAttachedExplosive() { return NativeCall(this, "AShooterCharacter.GetAttachedExplosive"); } - AShooterPlayerController * GetSpawnedForController() { return NativeCall(this, "AShooterCharacter.GetSpawnedForController"); } - void Poop(bool bForcePoop) { NativeCall(this, "AShooterCharacter.Poop", bForcePoop); } - AActor * StructurePlacementUseAlternateOriginActor() { return NativeCall(this, "AShooterCharacter.StructurePlacementUseAlternateOriginActor"); } - USceneComponent * GetActorSoundAttachmentComponentOverride(USceneComponent * ForComponent) { return NativeCall(this, "AShooterCharacter.GetActorSoundAttachmentComponentOverride", ForComponent); } + APrimalStructureExplosive* GetAttachedExplosive() { return NativeCall(this, "AShooterCharacter.GetAttachedExplosive"); } + AShooterPlayerController* GetSpawnedForController() { return NativeCall(this, "AShooterCharacter.GetSpawnedForController"); } + bool Poop(bool bForcePoop) { return NativeCall(this, "AShooterCharacter.Poop", bForcePoop); } + AActor* StructurePlacementUseAlternateOriginActor() { return NativeCall(this, "AShooterCharacter.StructurePlacementUseAlternateOriginActor"); } + USceneComponent* GetActorSoundAttachmentComponentOverride(USceneComponent* ForComponent) { return NativeCall(this, "AShooterCharacter.GetActorSoundAttachmentComponentOverride", ForComponent); } bool IsNearTopOfLadder() { return NativeCall(this, "AShooterCharacter.IsNearTopOfLadder"); } bool AllowGrappling_Implementation() { return NativeCall(this, "AShooterCharacter.AllowGrappling_Implementation"); } void TryCutEnemyGrapplingCable() { NativeCall(this, "AShooterCharacter.TryCutEnemyGrapplingCable"); } void FinalLoadedFromSaveGame() { NativeCall(this, "AShooterCharacter.FinalLoadedFromSaveGame"); } - AActor * GetSecondaryMountedActor() { return NativeCall(this, "AShooterCharacter.GetSecondaryMountedActor"); } + AActor* GetSecondaryMountedActor() { return NativeCall(this, "AShooterCharacter.GetSecondaryMountedActor"); } void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "AShooterCharacter.FaceRotation", NewControlRotation, DeltaTime, bFromController); } bool IsGameInputAllowed() { return NativeCall(this, "AShooterCharacter.IsGameInputAllowed"); } - bool IsReadyToUpload(UWorld * theWorld) { return NativeCall(this, "AShooterCharacter.IsReadyToUpload", theWorld); } + bool IsReadyToUpload(UWorld* theWorld) { return NativeCall(this, "AShooterCharacter.IsReadyToUpload", theWorld); } void ServerClearSwitchingWeapon_Implementation(bool bOnlyIfDefaultWeapon, bool bClientRequestNextWeaponID) { NativeCall(this, "AShooterCharacter.ServerClearSwitchingWeapon_Implementation", bOnlyIfDefaultWeapon, bClientRequestNextWeaponID); } void ClientReceiveNextWeaponID_Implementation(FItemNetID theItemID) { NativeCall(this, "AShooterCharacter.ClientReceiveNextWeaponID_Implementation", theItemID); } - void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff * BuffToIgnore) { NativeCall(this, "AShooterCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } + void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff* BuffToIgnore) { NativeCall(this, "AShooterCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } bool IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "AShooterCharacter.IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } bool IsGrapplingHardAttached() { return NativeCall(this, "AShooterCharacter.IsGrapplingHardAttached"); } - bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AShooterCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AShooterCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "AShooterCharacter.GetDebugInfoString", result); } + FVector* GetTargetingLocation(FVector* result, AActor* Attacker) { return NativeCall(this, "AShooterCharacter.GetTargetingLocation", result, Attacker); } + bool ForceCrosshair() { return NativeCall(this, "AShooterCharacter.ForceCrosshair"); } + void WeaponUnequipped(AShooterWeapon* OldWeapon) { NativeCall(this, "AShooterCharacter.WeaponUnequipped", OldWeapon); } + void WeaponEquipped(AShooterWeapon* NewWeapon) { NativeCall(this, "AShooterCharacter.WeaponEquipped", NewWeapon); } + void SetAutoPlayer(bool bEnable) { NativeCall(this, "AShooterCharacter.SetAutoPlayer", bEnable); } + AActor* GetUnstasisViewerSiblingActor() { return NativeCall(this, "AShooterCharacter.GetUnstasisViewerSiblingActor"); } + void UpdateAutoPlayer() { NativeCall(this, "AShooterCharacter.UpdateAutoPlayer"); } + void UpdateAutoMove() { NativeCall(this, "AShooterCharacter.UpdateAutoMove"); } + void UpdateAutoTurn() { NativeCall(this, "AShooterCharacter.UpdateAutoTurn"); } + void UpdateAutoJump() { NativeCall(this, "AShooterCharacter.UpdateAutoJump"); } + void UpdateAutoFire() { NativeCall(this, "AShooterCharacter.UpdateAutoFire"); } + float PlayAnimMontage(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, float BlendInTime, float BlendOutTime) { return NativeCall(this, "AShooterCharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, BlendInTime, BlendOutTime); } + bool GetAllAttachedCharsInternal(TSet, FDefaultSetAllocator>* AttachedChars, APrimalCharacter* OriginalChar, const bool bIncludeBased, const bool bIncludePassengers, const bool bIncludeCarried) { return NativeCall, FDefaultSetAllocator>*, APrimalCharacter*, const bool, const bool, const bool>(this, "AShooterCharacter.GetAllAttachedCharsInternal", AttachedChars, OriginalChar, bIncludeBased, bIncludePassengers, bIncludeCarried); } + bool IsWatchingExplorerNote() { return NativeCall(this, "AShooterCharacter.IsWatchingExplorerNote"); } + int GiveHexagons(int NumHexagons, int TriggerIndex, float OverrideHexGainFalloffRate, int OverrideHexGainFalloffMin, float OverrideCollectSFXVolume, FVector OverrideVfxSpawnLoc, int OverrideHexagonVFXActorCount, bool VFXImmediatelyAttracts) { return NativeCall(this, "AShooterCharacter.GiveHexagons", NumHexagons, TriggerIndex, OverrideHexGainFalloffRate, OverrideHexGainFalloffMin, OverrideCollectSFXVolume, OverrideVfxSpawnLoc, OverrideHexagonVFXActorCount, VFXImmediatelyAttracts); } + int GiveHexagonsOnMissionReward(FName MissionTag, int BonusEarnedHexagons, int HexagonAmountOverride) { return NativeCall(this, "AShooterCharacter.GiveHexagonsOnMissionReward", MissionTag, BonusEarnedHexagons, HexagonAmountOverride); } + void ClientsSpawnHexagonVFX_Implementation(int NumHexagons, float OverrideCollectSFXVolume, FVector OverrideVfxSpawnLoc, int OverrideHexagonVFXActorCount, bool VFXImmediatelyAttracts) { NativeCall(this, "AShooterCharacter.ClientsSpawnHexagonVFX_Implementation", NumHexagons, OverrideCollectSFXVolume, OverrideVfxSpawnLoc, OverrideHexagonVFXActorCount, VFXImmediatelyAttracts); } + bool SetPlayerHexagonCount(int NewHexagonCount) { return NativeCall(this, "AShooterCharacter.SetPlayerHexagonCount", NewHexagonCount); } + int GetPlayerHexagonCount() { return NativeCall(this, "AShooterCharacter.GetPlayerHexagonCount"); } + void ServerRequestHexagonTrade_Implementation(int RequestedTradableItemIndex, int Quantity) { NativeCall(this, "AShooterCharacter.ServerRequestHexagonTrade_Implementation", RequestedTradableItemIndex, Quantity); } + bool IsPlayingInitialSpawnAnim() { return NativeCall(this, "AShooterCharacter.IsPlayingInitialSpawnAnim"); } + bool IsPlayingRepawnAnim() { return NativeCall(this, "AShooterCharacter.IsPlayingRepawnAnim"); } + bool BPSetPlayerHexagonCount_Implementation(int NewHexagonCount) { return NativeCall(this, "AShooterCharacter.BPSetPlayerHexagonCount_Implementation", NewHexagonCount); } + int BPGetPlayerHexagonCount_Implementation() { return NativeCall(this, "AShooterCharacter.BPGetPlayerHexagonCount_Implementation"); } + bool CanEquipWeapons() { return NativeCall(this, "AShooterCharacter.CanEquipWeapons"); } + void SetPreventEquipAllWeapons(const bool bPrevent) { NativeCall(this, "AShooterCharacter.SetPreventEquipAllWeapons", bPrevent); } + bool IsRider() { return NativeCall(this, "AShooterCharacter.IsRider"); } + unsigned __int64 GetLinkedPlayerDataID() { return NativeCall(this, "AShooterCharacter.GetLinkedPlayerDataID"); } + bool IsVoiceWhispering() { return NativeCall(this, "AShooterCharacter.IsVoiceWhispering"); } + bool IsVoiceTalking() { return NativeCall(this, "AShooterCharacter.IsVoiceTalking"); } unsigned int GetUniqueNetIdTypeHash() { return NativeCall(this, "AShooterCharacter.GetUniqueNetIdTypeHash"); } bool IsSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "AShooterCharacter.IsSitting", bIgnoreLockedToSeat); } bool IsProneOrSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "AShooterCharacter.IsProneOrSitting", bIgnoreLockedToSeat); } - UPrimalItem * GetShieldItem() { return NativeCall(this, "AShooterCharacter.GetShieldItem"); } + bool IsVoiceSilent() { return NativeCall(this, "AShooterCharacter.IsVoiceSilent"); } + UPrimalItem* GetShieldItem() { return NativeCall(this, "AShooterCharacter.GetShieldItem"); } + bool IsVoiceYelling() { return NativeCall(this, "AShooterCharacter.IsVoiceYelling"); } + void SetVivoxUsername(FString* Value) { NativeCall(this, "AShooterCharacter.SetVivoxUsername", Value); } static void StaticRegisterNativesAShooterCharacter() { NativeCall(nullptr, "AShooterCharacter.StaticRegisterNativesAShooterCharacter"); } - void ClientInviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString * AllianceName, FString * InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviteeName); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterCharacter.GetPrivateStaticClass", Package); } + void AttachToLadder(USceneComponent* Parent) { NativeCall(this, "AShooterCharacter.AttachToLadder", Parent); } + int BPGetPlayerHexagonCount() { return NativeCall(this, "AShooterCharacter.BPGetPlayerHexagonCount"); } + bool BPSetPlayerHexagonCount(int NewHexagonCount) { return NativeCall(this, "AShooterCharacter.BPSetPlayerHexagonCount", NewHexagonCount); } + void ClientClearTribeRequest() { NativeCall(this, "AShooterCharacter.ClientClearTribeRequest"); } + void ClientInviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString* AllianceName, FString* InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviteeName); } void ClientNetEndClimbingLadder() { NativeCall(this, "AShooterCharacter.ClientNetEndClimbingLadder"); } - void ClientNotifyTribeRequest(FString * RequestTribeName, AShooterCharacter * PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest", RequestTribeName, PlayerCharacter); } + void ClientNotifyTribeRequest(FString* RequestTribeName, AShooterCharacter* PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest", RequestTribeName, PlayerCharacter); } + void ClientOrderedAttackTarget(AActor* attackTarget) { NativeCall(this, "AShooterCharacter.ClientOrderedAttackTarget", attackTarget); } + void ClientOrderedMoveTo(FVector MoveToLoc) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveTo", MoveToLoc); } + void ClientPlayHarvestAnim() { NativeCall(this, "AShooterCharacter.ClientPlayHarvestAnim"); } + void ClientReceiveNextWeaponID(FItemNetID theItemID) { NativeCall(this, "AShooterCharacter.ClientReceiveNextWeaponID", theItemID); } + void ClientsSpawnHexagonVFX(int NumHexagons, float OverrideCollectSFXVolume, FVector OverrideVfxSpawnLoc, int OverrideHexagonVFXActorCount, bool VFXImmediatelyAttracts) { NativeCall(this, "AShooterCharacter.ClientsSpawnHexagonVFX", NumHexagons, OverrideCollectSFXVolume, OverrideVfxSpawnLoc, OverrideHexagonVFXActorCount, VFXImmediatelyAttracts); } + void ClientUpdateTranspondersInfo(TArray* TranspondersInfo, bool bNewData) { NativeCall*, bool>(this, "AShooterCharacter.ClientUpdateTranspondersInfo", TranspondersInfo, bNewData); } void DetachFromLadder() { NativeCall(this, "AShooterCharacter.DetachFromLadder"); } void DetachGrapHookCable() { NativeCall(this, "AShooterCharacter.DetachGrapHookCable"); } void GameStateHandleEvent(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.GameStateHandleEvent", NameParam, VecParam); } bool IsPlayingUpperBodyCallAnimation() { return NativeCall(this, "AShooterCharacter.IsPlayingUpperBodyCallAnimation"); } - void RenamePlayer(FString * NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer", NewName); } + void NetSetFacialHairPercent(float thePercent, int newFacialHairIndex) { NativeCall(this, "AShooterCharacter.NetSetFacialHairPercent", thePercent, newFacialHairIndex); } + void NetSetHeadHairPercent(float thePercent, int newHeadHairIndex) { NativeCall(this, "AShooterCharacter.NetSetHeadHairPercent", thePercent, newHeadHairIndex); } + void NetSimulatedForceUpdateAimedActors(float OverrideMaxDistance) { NativeCall(this, "AShooterCharacter.NetSimulatedForceUpdateAimedActors", OverrideMaxDistance); } + void OnWeaponEquipped(AShooterWeapon* NewWeapon) { NativeCall(this, "AShooterCharacter.OnWeaponEquipped", NewWeapon); } + void OnWeaponUnequipped(AShooterWeapon* OldWeapon) { NativeCall(this, "AShooterCharacter.OnWeaponUnequipped", OldWeapon); } + void PlayEmoteAnimation(char EmoteIndex) { NativeCall(this, "AShooterCharacter.PlayEmoteAnimation", EmoteIndex); } + void RenamePlayer(FString* NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer", NewName); } + void ServerCheckDrinkingWater() { NativeCall(this, "AShooterCharacter.ServerCheckDrinkingWater"); } void ServerDetachGrapHookCable(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.ServerDetachGrapHookCable", bDoUpwardsJump, UpwardsJumpYaw); } + void ServerFireBallistaProjectile(FVector Origin, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerFireBallistaProjectile", Origin, ShootDir); } void ServerLaunchMountedDino() { NativeCall(this, "AShooterCharacter.ServerLaunchMountedDino"); } + void ServerNetEndClimbingLadder(bool bIsClimbOver, FVector ClimbOverLoc, float RightDir) { NativeCall(this, "AShooterCharacter.ServerNetEndClimbingLadder", bIsClimbOver, ClimbOverLoc, RightDir); } void ServerNotifyBallistaShot(FHitResult Impact, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerNotifyBallistaShot", Impact, ShootDir); } void ServerPlayFireBallistaAnimation() { NativeCall(this, "AShooterCharacter.ServerPlayFireBallistaAnimation"); } + void ServerReleaseGrapHookCable(bool bReleasing) { NativeCall(this, "AShooterCharacter.ServerReleaseGrapHookCable", bReleasing); } + void ServerRequestHexagonTrade(int RequestedTradableItemIndex, int Quantity) { NativeCall(this, "AShooterCharacter.ServerRequestHexagonTrade", RequestedTradableItemIndex, Quantity); } void ServerSeatingStructureAction(char ActionNumber) { NativeCall(this, "AShooterCharacter.ServerSeatingStructureAction", ActionNumber); } void ServerSetBallistaNewRotation(float Pitch, float Yaw) { NativeCall(this, "AShooterCharacter.ServerSetBallistaNewRotation", Pitch, Yaw); } + void ServerSetIsVoiceActive(bool IsActive) { NativeCall(this, "AShooterCharacter.ServerSetIsVoiceActive", IsActive); } + void ServerSetTargeting(bool bNewTargeting) { NativeCall(this, "AShooterCharacter.ServerSetTargeting", bNewTargeting); } + void ServerSetViewingInventory(bool bIsViewing) { NativeCall(this, "AShooterCharacter.ServerSetViewingInventory", bIsViewing); } void ServerStartSurfaceCameraForPassenger(float yaw, float pitch, float roll, bool bShouldInvertInput) { NativeCall(this, "AShooterCharacter.ServerStartSurfaceCameraForPassenger", yaw, pitch, roll, bShouldInvertInput); } void ServerStopFireBallista() { NativeCall(this, "AShooterCharacter.ServerStopFireBallista"); } + void ServerSwitchMap() { NativeCall(this, "AShooterCharacter.ServerSwitchMap"); } + void ServerToClientsPlayFireBallistaAnimation() { NativeCall(this, "AShooterCharacter.ServerToClientsPlayFireBallistaAnimation"); } + void ServerUpdateCurrentVoiceModeAsUInt32(unsigned int NewValue) { NativeCall(this, "AShooterCharacter.ServerUpdateCurrentVoiceModeAsUInt32", NewValue); } + void SetCarriedPitchYaw(float NewCarriedPitch, float NewCarriedYaw) { NativeCall(this, "AShooterCharacter.SetCarriedPitchYaw", NewCarriedPitch, NewCarriedYaw); } + void SyncGrapHookDistance(float Distance) { NativeCall(this, "AShooterCharacter.SyncGrapHookDistance", Distance); } }; struct FPrimalPersistentCharacterStatsStruct @@ -3701,6 +5131,7 @@ struct FPrimalPersistentCharacterStatsStruct int& PlayerState_TotalEngramPointsField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.PlayerState_TotalEngramPoints"); } int& CharacterStatusComponent_HighestExtraCharacterLevelField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_HighestExtraCharacterLevel"); } int& CharacterStatusComponent_LastRespecAtExtraCharacterLevelField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_LastRespecAtExtraCharacterLevel"); } + long double& CharacterStatusComponent_LastRespecUtcTimeSecondsField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_LastRespecUtcTimeSeconds"); } TArray& PerMapExplorerNoteUnlocksField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.PerMapExplorerNoteUnlocks"); } TArray& EmoteUnlocksField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.EmoteUnlocks"); } TArray>& PlayerState_EngramBlueprintsField() { return *GetNativePointerField>*>(this, "FPrimalPersistentCharacterStatsStruct.PlayerState_EngramBlueprints"); } @@ -3716,11 +5147,14 @@ struct FPrimalPersistentCharacterStatsStruct // Functions - FPrimalPersistentCharacterStatsStruct * operator=(FPrimalPersistentCharacterStatsStruct * __that) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.operator=", __that); } + FPrimalPersistentCharacterStatsStruct* operator=(FPrimalPersistentCharacterStatsStruct* __that) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.operator=", __that); } bool IsPerMapExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.IsPerMapExplorerNoteUnlocked", ExplorerNoteIndex); } - void ApplyToPrimalCharacter(APrimalCharacter * aChar, AShooterPlayerController * forPC, bool bIgnoreStats) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.ApplyToPrimalCharacter", aChar, forPC, bIgnoreStats); } - void GiveEngramsToPlayerState(APrimalCharacter * aChar, AShooterPlayerController * forPC) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.GiveEngramsToPlayerState", aChar, forPC); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FPrimalPersistentCharacterStatsStruct.StaticStruct"); } + void ApplyToPrimalCharacter(APrimalCharacter* aChar, AShooterPlayerController* forPC, bool bIgnoreStats) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.ApplyToPrimalCharacter", aChar, forPC, bIgnoreStats); } + void GiveEngramsToPlayerState(APrimalCharacter* aChar, AShooterPlayerController* forPC) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.GiveEngramsToPlayerState", aChar, forPC); } + void UnlockEmote(FName EmoteName) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.UnlockEmote", EmoteName); } + bool IsEmoteUnlocked(FName EmoteName) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.IsEmoteUnlocked", EmoteName); } + void UnlockPerMapExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.UnlockPerMapExplorerNote", ExplorerNoteIndex); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalPersistentCharacterStatsStruct.StaticStruct"); } }; struct FPrimalPlayerDataStruct @@ -3732,7 +5166,7 @@ struct FPrimalPlayerDataStruct unsigned int& LocalPlayerIndexField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LocalPlayerIndex"); } FPrimalPlayerCharacterConfigStruct& MyPlayerCharacterConfigField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.MyPlayerCharacterConfig"); } int& LastPinCodeUsedField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LastPinCodeUsed"); } - FPrimalPersistentCharacterStatsStruct * MyPersistentCharacterStatsField() { return GetNativePointerField(this, "FPrimalPlayerDataStruct.MyPersistentCharacterStats"); } + FPrimalPersistentCharacterStatsStruct* MyPersistentCharacterStatsField() { return GetNativePointerField(this, "FPrimalPlayerDataStruct.MyPersistentCharacterStats"); } int& NumPersonalDinosField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NumPersonalDinos"); } int& TribeIDField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.TribeID"); } TArray& AppIDSetField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.AppIDSet"); } @@ -3745,6 +5179,7 @@ struct FPrimalPlayerDataStruct float& NumOfDeathsField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NumOfDeaths"); } int& SpawnDayNumberField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.SpawnDayNumber"); } float& SpawnDayTimeField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.SpawnDayTime"); } + TArray& LatestMissionScoresField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.LatestMissionScores"); } // Bit fields @@ -3753,34 +5188,49 @@ struct FPrimalPlayerDataStruct // Functions - FPrimalPlayerDataStruct * operator=(FPrimalPlayerDataStruct * __that) { return NativeCall(this, "FPrimalPlayerDataStruct.operator=", __that); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FPrimalPlayerDataStruct.StaticStruct"); } + FPrimalPlayerDataStruct* operator=(FPrimalPlayerDataStruct* __that) { return NativeCall(this, "FPrimalPlayerDataStruct.operator=", __that); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalPlayerDataStruct.StaticStruct"); } }; -struct UPrimalPlayerData +struct UPrimalPlayerData : UObject { - FPrimalPlayerDataStruct * MyDataField() { return GetNativePointerField(this, "UPrimalPlayerData.MyData"); } - TArray MyPersistentBuffDatasField() { return *GetNativePointerField*>(this, "UPrimalPlayerData.MyPersistentBuffDatas"); } + FPrimalPlayerDataStruct* MyDataField() { return GetNativePointerField(this, "UPrimalPlayerData.MyData"); } + TArray MyPersistentBuffDatasField() { return *GetNativePointerField*>(this, "UPrimalPlayerData.MyPersistentBuffDatas"); } bool& bIsLocalPlayerField() { return *GetNativePointerField(this, "UPrimalPlayerData.bIsLocalPlayer"); } float& LastXPWritePercentField() { return *GetNativePointerField(this, "UPrimalPlayerData.LastXPWritePercent"); } + TMap >& MissionTagToLatestMissionScoreField() { return *GetNativePointerField >*>(this, "UPrimalPlayerData.MissionTagToLatestMissionScore"); } // Functions - bool MatchesPlayer(AShooterPlayerState * aPlayerState, bool bCheckForExistingPlayer) { return NativeCall(this, "UPrimalPlayerData.MatchesPlayer", aPlayerState, bCheckForExistingPlayer); } - void InitForPlayer(AShooterPlayerState * aPlayerState, bool bDontSaveData) { NativeCall(this, "UPrimalPlayerData.InitForPlayer", aPlayerState, bDontSaveData); } - AShooterPlayerState * GetPlayerState(AShooterPlayerState * ignorePlayerState, bool bOnlyCheckExistingPlayers) { return NativeCall(this, "UPrimalPlayerData.GetPlayerState", ignorePlayerState, bOnlyCheckExistingPlayers); } - static UPrimalPlayerData * GetDataForID(unsigned __int64 PlayerDataID) { return NativeCall(nullptr, "UPrimalPlayerData.GetDataForID", PlayerDataID); } - void ApplyToPlayerState(AShooterPlayerState * aPlayerState) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerState", aPlayerState); } - void GiveInitialItems(int AppID, AShooterPlayerController * ForPC) { NativeCall(this, "UPrimalPlayerData.GiveInitialItems", AppID, ForPC); } - FString * GetUniqueIdString(FString * result) { return NativeCall(this, "UPrimalPlayerData.GetUniqueIdString", result); } - void SavePlayerData(UWorld * ForWorld) { NativeCall(this, "UPrimalPlayerData.SavePlayerData", ForWorld); } - void ApplyToPlayerCharacter(AShooterPlayerState * ForPlayerState, AShooterCharacter * NewPawn) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerCharacter", ForPlayerState, NewPawn); } - void RefreshPersistentBuffs(AShooterCharacter * theChar) { NativeCall(this, "UPrimalPlayerData.RefreshPersistentBuffs", theChar); } + bool LoadFromFile(FObjectReader* Reader) { return NativeCall(this, "UPrimalPlayerData.LoadFromFile", Reader); } + FLatestMissionScore* GetOrCreateLatestMissionScore(FName MissionTag, bool bCreate) { return NativeCall(this, "UPrimalPlayerData.GetOrCreateLatestMissionScore", MissionTag, bCreate); } + void SaveToFile(FObjectWriter* Writer) { NativeCall(this, "UPrimalPlayerData.SaveToFile", Writer); } + bool MatchesPlayer(AShooterPlayerState* aPlayerState, bool bCheckForExistingPlayer) { return NativeCall(this, "UPrimalPlayerData.MatchesPlayer", aPlayerState, bCheckForExistingPlayer); } + void InitForPlayer(AShooterPlayerState* aPlayerState, bool bDontSaveData) { NativeCall(this, "UPrimalPlayerData.InitForPlayer", aPlayerState, bDontSaveData); } + AShooterPlayerState* GetPlayerState(AShooterPlayerState* ignorePlayerState, bool bOnlyCheckExistingPlayers) { return NativeCall(this, "UPrimalPlayerData.GetPlayerState", ignorePlayerState, bOnlyCheckExistingPlayers); } + static UPrimalPlayerData* GetDataForID(unsigned __int64 PlayerDataID) { return NativeCall(nullptr, "UPrimalPlayerData.GetDataForID", PlayerDataID); } + int GetTribeTeamID() { return NativeCall(this, "UPrimalPlayerData.GetTribeTeamID"); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "UPrimalPlayerData.LinkedPlayerIDString", result); } + void ApplyToPlayerState(AShooterPlayerState* aPlayerState) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerState", aPlayerState); } + void GiveInitialItems(int AppID, AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalPlayerData.GiveInitialItems", AppID, ForPC); } + void SetSubscribedApp(int AppID, AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalPlayerData.SetSubscribedApp", AppID, ForPC); } + FString* GetUniqueIdString(FString* result) { return NativeCall(this, "UPrimalPlayerData.GetUniqueIdString", result); } + void SavePlayerData(UWorld* ForWorld) { NativeCall(this, "UPrimalPlayerData.SavePlayerData", ForWorld); } + AShooterCharacter* FindCharacterForPlayer(UWorld* inWorld) { return NativeCall(this, "UPrimalPlayerData.FindCharacterForPlayer", inWorld); } + void ApplyToPlayerCharacter(AShooterPlayerState* ForPlayerState, AShooterCharacter* NewPawn) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerCharacter", ForPlayerState, NewPawn); } + void ApplyPersistentBuffs(AShooterCharacter* NewPawn, AShooterPlayerController* forPC) { NativeCall(this, "UPrimalPlayerData.ApplyPersistentBuffs", NewPawn, forPC); } + void RefreshPersistentBuffs(AShooterCharacter* theChar) { NativeCall(this, "UPrimalPlayerData.RefreshPersistentBuffs", theChar); } void CreatedNewPlayerData() { NativeCall(this, "UPrimalPlayerData.CreatedNewPlayerData"); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimalPlayerData.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalPlayerData.StaticClass"); } + static void StaticRegisterNativesUPrimalPlayerData() { NativeCall(nullptr, "UPrimalPlayerData.StaticRegisterNativesUPrimalPlayerData"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalPlayerData.GetPrivateStaticClass", Package); } + void BPAppliedToPlayerState(AShooterPlayerState* ForPlayerState) { NativeCall(this, "UPrimalPlayerData.BPAppliedToPlayerState", ForPlayerState); } + void BPApplyToPlayerCharacter(AShooterPlayerState* ForPlayerState, AShooterCharacter* NewPlayerCharacter) { NativeCall(this, "UPrimalPlayerData.BPApplyToPlayerCharacter", ForPlayerState, NewPlayerCharacter); } + void BPCreatedNewPlayerData() { NativeCall(this, "UPrimalPlayerData.BPCreatedNewPlayerData"); } + void BPForceDefeatedBoss(int DifficultyIndex, FName BossName, AShooterPlayerController* PlayerController) { NativeCall(this, "UPrimalPlayerData.BPForceDefeatedBoss", DifficultyIndex, BossName, PlayerController); } }; -struct UPrimalCharacterStatusComponent +struct UPrimalCharacterStatusComponent : UActorComponent { FieldArray MaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.MaxStatusValues" }; } FieldArray BaseLevelMaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.BaseLevelMaxStatusValues" }; } @@ -3803,6 +5253,7 @@ struct UPrimalCharacterStatusComponent float& DinoRiderWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoRiderWeightMultiplier"); } FieldArray CanLevelUpValueField() { return { this, "UPrimalCharacterStatusComponent.CanLevelUpValue" }; } FieldArray DontUseValueField() { return { this, "UPrimalCharacterStatusComponent.DontUseValue" }; } + FieldArray StatusStateThresholdsField() { return { this, "UPrimalCharacterStatusComponent.StatusStateThresholds" }; } float& ExperienceAutomaticConsciousIncreaseSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExperienceAutomaticConsciousIncreaseSpeed"); } float& CheatMaxWeightField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CheatMaxWeight"); } int& CharacterStatusComponentPriorityField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CharacterStatusComponentPriority"); } @@ -3881,6 +5332,7 @@ struct UPrimalCharacterStatusComponent TEnumAsByte& MaxStatusValueToAutoUpdateField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.MaxStatusValueToAutoUpdate"); } float& GenericXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.GenericXPMultiplier"); } float& CraftEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CraftEarnXPMultiplier"); } + float& MinInventoryWeightField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MinInventoryWeight"); } float& KillEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.KillEarnXPMultiplier"); } float& GenericEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.GenericEarnXPMultiplier"); } float& SpecialEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SpecialEarnXPMultiplier"); } @@ -3888,6 +5340,9 @@ struct UPrimalCharacterStatusComponent float& DefaultHyperthermicInsulationField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DefaultHyperthermicInsulation"); } float& DefaultHypothermicInsulationField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DefaultHypothermicInsulation"); } float& MaxTamingEffectivenessBaseLevelMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MaxTamingEffectivenessBaseLevelMultiplier"); } + FString& FoodStatusNameOverrideField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodStatusNameOverride"); } + UTexture2D* FoodStatusIconBackgroundOverrideField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodStatusIconBackgroundOverride"); } + UTexture2D* FoodStatusIconForegroundOverrideField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodStatusIconForegroundOverride"); } TArray& StatusValueModifiersField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusValueModifiers"); } TArray& StatusValueModifierDescriptionIndicesField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusValueModifierDescriptionIndices"); } FieldArray CurrentStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.CurrentStatusValues" }; } @@ -3905,8 +5360,8 @@ struct UPrimalCharacterStatusComponent float& DehydrationStaminaRecoveryRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DehydrationStaminaRecoveryRate"); } float& WaterConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WaterConsumptionMultiplier"); } float& FoodConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodConsumptionMultiplier"); } - TArray EnteredStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.EnteredStatusStateSounds"); } - TArray ExitStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.ExitStatusStateSounds"); } + TArray EnteredStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.EnteredStatusStateSounds"); } + TArray ExitStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.ExitStatusStateSounds"); } float& ExtraOxygenSpeedStatMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraOxygenSpeedStatMultiplier"); } float& ExtraTamedHealthMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraTamedHealthMultiplier"); } float& WakingTameFoodConsumptionRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WakingTameFoodConsumptionRateMultiplier"); } @@ -3919,6 +5374,7 @@ struct UPrimalCharacterStatusComponent float& MountedDinoDinoWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MountedDinoDinoWeightMultiplier"); } float& ExtraWildDinoDamageMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraWildDinoDamageMultiplier"); } float& ExtraTamedDinoDamageMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraTamedDinoDamageMultiplier"); } + float& WeightMultiplierWhenCarriedOrBasedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightMultiplierWhenCarriedOrBased"); } float& WeightMultiplierForCarriedPassengersField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightMultiplierForCarriedPassengers"); } float& WeightMultiplierForPlatformPassengersInventoryField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightMultiplierForPlatformPassengersInventory"); } FieldArray DinoMaxStatAddMultiplierImprintingField() { return { this, "UPrimalCharacterStatusComponent.DinoMaxStatAddMultiplierImprinting" }; } @@ -3941,6 +5397,7 @@ struct UPrimalCharacterStatusComponent BitFieldValue bWalkingConsumesStamina() { return { this, "UPrimalCharacterStatusComponent.bWalkingConsumesStamina" }; } BitFieldValue bRunningConsumesStamina() { return { this, "UPrimalCharacterStatusComponent.bRunningConsumesStamina" }; } BitFieldValue bConsumeFoodAutomatically() { return { this, "UPrimalCharacterStatusComponent.bConsumeFoodAutomatically" }; } + BitFieldValue bInfiniteFood() { return { this, "UPrimalCharacterStatusComponent.bInfiniteFood" }; } BitFieldValue bAddExperienceAutomatically() { return { this, "UPrimalCharacterStatusComponent.bAddExperienceAutomatically" }; } BitFieldValue bConsumeWaterAutomatically() { return { this, "UPrimalCharacterStatusComponent.bConsumeWaterAutomatically" }; } BitFieldValue bAutomaticallyUpdateTemperature() { return { this, "UPrimalCharacterStatusComponent.bAutomaticallyUpdateTemperature" }; } @@ -3961,6 +5418,7 @@ struct UPrimalCharacterStatusComponent BitFieldValue bUseBPAdjustStatusValueModification() { return { this, "UPrimalCharacterStatusComponent.bUseBPAdjustStatusValueModification" }; } BitFieldValue bForceDefaultSpeed() { return { this, "UPrimalCharacterStatusComponent.bForceDefaultSpeed" }; } BitFieldValue bForceRefreshWeight() { return { this, "UPrimalCharacterStatusComponent.bForceRefreshWeight" }; } + BitFieldValue bHideFoodStatusFromHUD() { return { this, "UPrimalCharacterStatusComponent.bHideFoodStatusFromHUD" }; } BitFieldValue bForceGainOxygen() { return { this, "UPrimalCharacterStatusComponent.bForceGainOxygen" }; } BitFieldValue bFreezeStatusValues() { return { this, "UPrimalCharacterStatusComponent.bFreezeStatusValues" }; } BitFieldValue bTicked() { return { this, "UPrimalCharacterStatusComponent.bTicked" }; } @@ -3972,42 +5430,62 @@ struct UPrimalCharacterStatusComponent // Functions - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "UPrimalCharacterStatusComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalCharacterStatusComponent.StaticClass"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "UPrimalCharacterStatusComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } void InitializeComponent() { NativeCall(this, "UPrimalCharacterStatusComponent.InitializeComponent"); } float GetTotalStatusModifierDescriptionIndex(int StatusValueModifierDescriptionIndex) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetTotalStatusModifierDescriptionIndex", StatusValueModifierDescriptionIndex); } void AddStatusValueModifier(EPrimalCharacterStatusValue::Type ValueType, float Amount, float Speed, bool bContinueOnUnchangedValue, bool bSetValue, int StatusValueModifierDescriptionIndex, bool bResetExistingModifierDescriptionIndex, float LimitExistingModifierDescriptionToMaxAmount, bool bSetAdditionalValue, EPrimalCharacterStatusValue::Type StopAtValueNearMax, bool bMakeUntameable, TSubclassOf ScaleValueByCharacterDamageType) { NativeCall>(this, "UPrimalCharacterStatusComponent.AddStatusValueModifier", ValueType, Amount, Speed, bContinueOnUnchangedValue, bSetValue, StatusValueModifierDescriptionIndex, bResetExistingModifierDescriptionIndex, LimitExistingModifierDescriptionToMaxAmount, bSetAdditionalValue, StopAtValueNearMax, bMakeUntameable, ScaleValueByCharacterDamageType); } void ApplyStatusValueModifiers(float DeltaTime) { NativeCall(this, "UPrimalCharacterStatusComponent.ApplyStatusValueModifiers", DeltaTime); } void SetAllStatsToMaximum() { NativeCall(this, "UPrimalCharacterStatusComponent.SetAllStatsToMaximum"); } + void SetAllStatsToMaximumExcluding(EPrimalCharacterStatusValue::Type exclude) { NativeCall(this, "UPrimalCharacterStatusComponent.SetAllStatsToMaximumExcluding", exclude); } void TickStatus(float DeltaTime, bool bForceStatusUpdate) { NativeCall(this, "UPrimalCharacterStatusComponent.TickStatus", DeltaTime, bForceStatusUpdate); } void UpdateStatusValue(EPrimalCharacterStatusValue::Type valueType, float DeltaTime, bool bManualUpdate) { NativeCall(this, "UPrimalCharacterStatusComponent.UpdateStatusValue", valueType, DeltaTime, bManualUpdate); } void UpdateWeightStat(bool bForceSetValue) { NativeCall(this, "UPrimalCharacterStatusComponent.UpdateWeightStat", bForceSetValue); } - void AdjustStatusValueModification(EPrimalCharacterStatusValue::Type valueType, float * Amount, TSubclassOf DamageTypeClass, bool bManualModification) { NativeCall, bool>(this, "UPrimalCharacterStatusComponent.AdjustStatusValueModification", valueType, Amount, DamageTypeClass, bManualModification); } - void GetDinoFoodConsumptionRateMultiplier(float * Amount) { NativeCall(this, "UPrimalCharacterStatusComponent.GetDinoFoodConsumptionRateMultiplier", Amount); } + void AdjustStatusValueModification(EPrimalCharacterStatusValue::Type valueType, float* Amount, TSubclassOf DamageTypeClass, bool bManualModification) { NativeCall, bool>(this, "UPrimalCharacterStatusComponent.AdjustStatusValueModification", valueType, Amount, DamageTypeClass, bManualModification); } + void GetDinoFoodConsumptionRateMultiplier(float* Amount) { NativeCall(this, "UPrimalCharacterStatusComponent.GetDinoFoodConsumptionRateMultiplier", Amount); } + void UninitializeComponent() { NativeCall(this, "UPrimalCharacterStatusComponent.UninitializeComponent"); } + int GetExtraCharacterLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExtraCharacterLevel"); } + void SetExtraCharacterLevel(int NewExtraCharacterLevel) { NativeCall(this, "UPrimalCharacterStatusComponent.SetExtraCharacterLevel", NewExtraCharacterLevel); } + static EPrimalCharacterStatusValue::Type ConvertIntToCharacterStatusEnum(int InInteger) { return NativeCall(nullptr, "UPrimalCharacterStatusComponent.ConvertIntToCharacterStatusEnum", InInteger); } float ModifyCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float Amount, bool bPercentOfMax, bool bPercentOfCurrent, bool bManualModification, bool bSetValue, TSubclassOf DamageTypeClass, bool bDamageDontKill, bool bForceSetValue) { return NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.ModifyCurrentStatusValue", valueType, Amount, bPercentOfMax, bPercentOfCurrent, bManualModification, bSetValue, DamageTypeClass, bDamageDontKill, bForceSetValue); } void ChangedStatusState(EPrimalCharacterStatusState::Type valueType, bool bEnteredState) { NativeCall(this, "UPrimalCharacterStatusComponent.ChangedStatusState", valueType, bEnteredState); } void CharacterUpdatedInventory(bool bEquippedOrUneqippedItem) { NativeCall(this, "UPrimalCharacterStatusComponent.CharacterUpdatedInventory", bEquippedOrUneqippedItem); } + void UpdateInventoryWeight(APrimalCharacter* aPrimalChar) { NativeCall(this, "UPrimalCharacterStatusComponent.UpdateInventoryWeight", aPrimalChar); } void RefreshInsulation() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshInsulation"); } void RescaleMaxStat(EPrimalCharacterStatusValue::Type LevelUpValueType, float TargetValue, bool bIsPercentOfTrueValue) { NativeCall(this, "UPrimalCharacterStatusComponent.RescaleMaxStat", LevelUpValueType, TargetValue, bIsPercentOfTrueValue); } void RefreshTemperature() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshTemperature"); } void UpdatedCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float Amount, bool bManualModification, TSubclassOf DamageTypeClass, bool bDamageDontKill, bool bDontAdjustOtherStats) { NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.UpdatedCurrentStatusValue", valueType, Amount, bManualModification, DamageTypeClass, bDamageDontKill, bDontAdjustOtherStats); } float GetStatusValueRecoveryRate(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusValueRecoveryRate", valueType); } - void DrawLocalPlayerHUD(AShooterHUD * HUD, float ScaleMult, bool bFromBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUD", HUD, ScaleMult, bFromBottomRight); } - void DrawLocalPlayerHUDDescriptions(AShooterHUD * HUD, long double TheTimeSeconds, float ScaleMult, bool bDrawBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUDDescriptions", HUD, TheTimeSeconds, ScaleMult, bDrawBottomRight); } + float GetRawStatusValueRecoveryRate(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetRawStatusValueRecoveryRate", valueType); } + void DrawLocalPlayerHUD(AShooterHUD* HUD, float ScaleMult, bool bFromBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUD", HUD, ScaleMult, bFromBottomRight); } + void DrawLocalPlayerHUDDescriptions(AShooterHUD* HUD, long double TheTimeSeconds, float ScaleMult, bool bDrawBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUDDescriptions", HUD, TheTimeSeconds, ScaleMult, bDrawBottomRight); } bool IsInStatusState(EPrimalCharacterStatusState::Type StateType) { return NativeCall(this, "UPrimalCharacterStatusComponent.IsInStatusState", StateType); } + AActor* GetPrimalCharacter() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetPrimalCharacter"); } void OnJumped() { NativeCall(this, "UPrimalCharacterStatusComponent.OnJumped"); } float GetMeleeDamageModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMeleeDamageModifier"); } + float GetCraftingSpeedModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetCraftingSpeedModifier"); } float GetMovementSpeedModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMovementSpeedModifier"); } float GetJumpZModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetJumpZModifier"); } + void OnRep_CurrentStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_CurrentStatusValues"); } void ServerSyncReplicatedValues() { NativeCall(this, "UPrimalCharacterStatusComponent.ServerSyncReplicatedValues"); } - bool CanLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.CanLevelUp", LevelUpValueType); } - void ServerApplyLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType, AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalCharacterStatusComponent.ServerApplyLevelUp", LevelUpValueType, ByPC); } + void OnRep_GlobalCurrentStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalCurrentStatusValues"); } + void OnRep_GlobalMaxStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalMaxStatusValues"); } + void OnRep_GlobalBaseLevelMaxStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalBaseLevelMaxStatusValues"); } + void OnRep_ReplicatedExperiencePoints() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_ReplicatedExperiencePoints"); } + bool CanLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType, bool bCheckExperience) { return NativeCall(this, "UPrimalCharacterStatusComponent.CanLevelUp", LevelUpValueType, bCheckExperience); } + void ServerApplyLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType, AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalCharacterStatusComponent.ServerApplyLevelUp", LevelUpValueType, ByPC); } void SetBaseLevel(int Level, bool bDontCurrentSetToMax) { NativeCall(this, "UPrimalCharacterStatusComponent.SetBaseLevel", Level, bDontCurrentSetToMax); } + void SetBaseLevelNoStatChange(int Level) { NativeCall(this, "UPrimalCharacterStatusComponent.SetBaseLevelNoStatChange", Level); } + void SetBaseLevelCustomized(int Level, TArray* CustomBaseStats, TArray>* PrioritizeStats, bool bDontCurrentSetToMax) { NativeCall*, TArray>*, bool>(this, "UPrimalCharacterStatusComponent.SetBaseLevelCustomized", Level, CustomBaseStats, PrioritizeStats, bDontCurrentSetToMax); } void SetTameable(bool bTameable) { NativeCall(this, "UPrimalCharacterStatusComponent.SetTameable", bTameable); } - void SetTamed(float TameIneffectivenessModifier) { NativeCall(this, "UPrimalCharacterStatusComponent.SetTamed", TameIneffectivenessModifier); } + void SetTamed(float TameIneffectivenessModifier, bool bSkipAddingTamedLevels) { NativeCall(this, "UPrimalCharacterStatusComponent.SetTamed", TameIneffectivenessModifier, bSkipAddingTamedLevels); } void ApplyTamingStatModifiers(float TameIneffectivenessModifier) { NativeCall(this, "UPrimalCharacterStatusComponent.ApplyTamingStatModifiers", TameIneffectivenessModifier); } - FString * GetStatusValueString(FString * result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusValueString", result, ValueType, bValueOnly); } - FString * GetStatusNameString(FString * result, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusNameString", result, ValueType); } - FString * GetStatusMaxValueString(FString * result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusMaxValueString", result, ValueType, bValueOnly); } + bool IsAlignedWithTeam(int TargetingTeam) { return NativeCall(this, "UPrimalCharacterStatusComponent.IsAlignedWithTeam", TargetingTeam); } + FString* GetStatusValueString(FString* result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusValueString", result, ValueType, bValueOnly); } + FString* GetStatusNameString(FString* result, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusNameString", result, ValueType); } + FString* GetStatusMaxValueString(FString* result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusMaxValueString", result, ValueType, bValueOnly); } + int GetCharacterLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetCharacterLevel"); } + int GetBaseLevelFromLevelUpPoints(bool bIncludePlayerAddedLevels) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetBaseLevelFromLevelUpPoints", bIncludePlayerAddedLevels); } void AddExperience(float HowMuch, bool bShareWithTribe, EXPType::Type XPType) { NativeCall(this, "UPrimalCharacterStatusComponent.AddExperience", HowMuch, bShareWithTribe, XPType); } int GetNumLevelUpsAvailable() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetNumLevelUpsAvailable"); } float GetExperienceRequiredForNextLevelUp() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExperienceRequiredForNextLevelUp"); } @@ -4015,46 +5493,66 @@ struct UPrimalCharacterStatusComponent bool IsAtMaxLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.IsAtMaxLevel"); } bool HasExperienceForLevelUp() { return NativeCall(this, "UPrimalCharacterStatusComponent.HasExperienceForLevelUp"); } float GetExperiencePercent() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExperiencePercent"); } - void NetSyncMaxStatusValues_Implementation(TArray * NetMaxStatusValues, TArray * NetBaseMaxStatusValues) { NativeCall *, TArray *>(this, "UPrimalCharacterStatusComponent.NetSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } - void ClientSyncMaxStatusValues_Implementation(TArray * NetMaxStatusValues, TArray * NetBaseMaxStatusValues) { NativeCall *, TArray *>(this, "UPrimalCharacterStatusComponent.ClientSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } + void NetSyncMaxStatusValues_Implementation(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.NetSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } + void ClientSyncMaxStatusValues_Implementation(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.ClientSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } + void Serialize(FArchive* Ar) { NativeCall(this, "UPrimalCharacterStatusComponent.Serialize", Ar); } + bool AllowTaming() { return NativeCall(this, "UPrimalCharacterStatusComponent.AllowTaming"); } + void BPDirectSetCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPDirectSetCurrentStatusValue", valueType, newValue); } + void BPDirectSetMaxStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPDirectSetMaxStatusValue", valueType, newValue); } + float BPGetCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetCurrentStatusValue", valueType); } + float BPGetMaxStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetMaxStatusValue", valueType); } + float BPGetPercentStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetPercentStatusValue", valueType); } void SetMaxStatusValue(EPrimalCharacterStatusValue::Type StatType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.SetMaxStatusValue", StatType, newValue); } void RescaleAllStats() { NativeCall(this, "UPrimalCharacterStatusComponent.RescaleAllStats"); } + UPrimalCharacterStatusComponent* GetDefaultCharacterStatusComponent() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetDefaultCharacterStatusComponent"); } + void BPSetRecoveryRateStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPSetRecoveryRateStatusValue", valueType, newValue); } + int GetLevelUpPoints(EPrimalCharacterStatusValue::Type valueType, bool bTamedPoints) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetLevelUpPoints", valueType, bTamedPoints); } + void SetLevelUpPoints(EPrimalCharacterStatusValue::Type valueType, bool bTamedPoints, int newPoints) { NativeCall(this, "UPrimalCharacterStatusComponent.SetLevelUpPoints", valueType, bTamedPoints, newPoints); } + void ClearAllLevelUpPoints(bool bTamedPoints) { NativeCall(this, "UPrimalCharacterStatusComponent.ClearAllLevelUpPoints", bTamedPoints); } + void CopyPrimalStatusComponentValues(UPrimalCharacterStatusComponent* src) { NativeCall(this, "UPrimalCharacterStatusComponent.CopyPrimalStatusComponentValues", src); } + FString* GetDebugString(FString* result) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetDebugString", result); } + static void StaticRegisterNativesUPrimalCharacterStatusComponent() { NativeCall(nullptr, "UPrimalCharacterStatusComponent.StaticRegisterNativesUPrimalCharacterStatusComponent"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalCharacterStatusComponent.GetPrivateStaticClass", Package); } + float BPAdjustStatusValueModification(EPrimalCharacterStatusValue::Type valueType, float Amount, TSubclassOf DamageTypeClass, bool bManualModification) { return NativeCall, bool>(this, "UPrimalCharacterStatusComponent.BPAdjustStatusValueModification", valueType, Amount, DamageTypeClass, bManualModification); } float BPModifyMaxExperiencePoints(float InMaxExperiencePoints) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxExperiencePoints", InMaxExperiencePoints); } int BPModifyMaxLevel(int InMaxLevel) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxLevel", InMaxLevel); } + void ClientSyncMaxStatusValues(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.ClientSyncMaxStatusValues", NetMaxStatusValues, NetBaseMaxStatusValues); } + void NetSyncMaxStatusValues(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.NetSyncMaxStatusValues", NetMaxStatusValues, NetBaseMaxStatusValues); } }; struct APrimalDinoCharacter : APrimalCharacter { - TWeakObjectPtr& ForcedMasterTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ForcedMasterTarget"); } - FName& MountCharacterSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterSocketName"); } - TWeakObjectPtr& MountCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MountCharacter"); } - ECollisionChannel& MeshOriginalCollisionChannelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeshOriginalCollisionChannel"); } + TWeakObjectPtr & ForcedMasterTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ForcedMasterTarget"); } + FName & MountCharacterSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterSocketName"); } + TWeakObjectPtr & MountCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MountCharacter"); } + ECollisionChannel & MeshOriginalCollisionChannelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeshOriginalCollisionChannel"); } + FVector & RidingAttackExtraVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAttackExtraVelocity"); } + UAnimMontage * StartChargeAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartChargeAnimation"); } + TArray AttackAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimations"); } + TArray & AttackAnimationWeightsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationWeights"); } + TArray & AttackAnimationsTimeFromEndToConsiderFinishedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationsTimeFromEndToConsiderFinished"); } float& ColorizationIntensityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ColorizationIntensity"); } - FVector& RidingAttackExtraVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAttackExtraVelocity"); } - UAnimMontage * StartChargeAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartChargeAnimation"); } - TArray AttackAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimations"); } - TArray& AttackAnimationWeightsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationWeights"); } - TArray& AttackAnimationsTimeFromEndToConsiderFinishedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationsTimeFromEndToConsiderFinished"); } - TArray FemaleMaterialOverridesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FemaleMaterialOverrides"); } + TArray FemaleMaterialOverridesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FemaleMaterialOverrides"); } float& PaintConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PaintConsumptionMultiplier"); } float& ChargingBlockedStopTimeThresholdField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingBlockedStopTimeThreshold"); } - TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeSwingSockets"); } + TArray & MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeSwingSockets"); } int& MeleeDamageAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeDamageAmount"); } float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeDamageImpulse"); } float& MeleeSwingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeSwingRadius"); } + TArray & AttackInfosField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackInfos"); } char& CurrentAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentAttackIndex"); } char& LastAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackIndex"); } - TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeDamageType"); } - TSubclassOf& StepActorDamageTypeOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepActorDamageTypeOverride"); } + TSubclassOf & MeleeDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeDamageType"); } + TSubclassOf & StepActorDamageTypeOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepActorDamageTypeOverride"); } float& AttackOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackOffset"); } float& FleeHealthPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FleeHealthPercentage"); } float& BreakFleeHealthPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BreakFleeHealthPercentage"); } - FString& TamerStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamerString"); } - FString& TamedNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedName"); } - FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipPadding"); } - FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipScale"); } - FVector& RiderFPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraOffset"); } - FVector& LandingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LandingLocation"); } + FString & TamerStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamerString"); } + FString & TamedNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedName"); } + FVector2D & OverlayTooltipPaddingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipPadding"); } + FVector2D & OverlayTooltipScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipScale"); } + FVector & RiderFPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraOffset"); } + FVector & LandingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LandingLocation"); } long double& StartLandingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartLandingTime"); } long double& LastAxisStartPressTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAxisStartPressTime"); } long double& LastMoveForwardTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastMoveForwardTime"); } @@ -4064,41 +5562,46 @@ struct APrimalDinoCharacter : APrimalCharacter float& FlyingWanderRandomDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingWanderRandomDistanceAmount"); } float& AcceptableLandingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AcceptableLandingRadius"); } float& MaxLandingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxLandingTime"); } - FieldArray GenderSpeedMultipliersField() { return { this, "APrimalDinoCharacter.GenderSpeedMultipliers" }; } + FieldArray GenderSpeedMultipliersField() { return {this, "APrimalDinoCharacter.GenderSpeedMultipliers"}; } float& ChargeSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeSpeedMultiplier"); } - UAnimMontage * ChargingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingAnim"); } + UAnimMontage * ChargingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingAnim"); } float& ChargingStaminaPerSecondDrainField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStaminaPerSecondDrain"); } float& ChargingStopDotTresholdField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStopDotTreshold"); } - FVector& LastChargeLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastChargeLocation"); } + FVector & LastChargeLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastChargeLocation"); } long double& LastStartChargingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastStartChargingTime"); } - TWeakObjectPtr& RiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Rider"); } - TWeakObjectPtr& PreviousRiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousRider"); } - TSubclassOf& SaddleItemClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddleItemClass"); } - TArray& NoSaddlePassengerSeatsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NoSaddlePassengerSeats"); } - TWeakObjectPtr& CarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.CarriedCharacter"); } - TWeakObjectPtr& PreviousCarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousCarriedCharacter"); } - UAnimMontage * DinoWithPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithPassengerAnim"); } - UAnimMontage * DinoWithDinoPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithDinoPassengerAnim"); } - TArray>& PassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PassengerPerSeat"); } - TArray SavedPassengerPerSeatField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SavedPassengerPerSeat"); } - TArray>& PrevPassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PrevPassengerPerSeat"); } + TWeakObjectPtr & RiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Rider"); } + TWeakObjectPtr & PreviousRiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousRider"); } + TSubclassOf & SaddleItemClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddleItemClass"); } + FString & SaddleSlotNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleSlotNameOverride"); } + TArray & NoSaddlePassengerSeatsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NoSaddlePassengerSeats"); } + TWeakObjectPtr & CarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.CarriedCharacter"); } + TWeakObjectPtr & PreviousCarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousCarriedCharacter"); } + UAnimMontage * DinoWithPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithPassengerAnim"); } + UAnimMontage * DinoWithDinoPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithDinoPassengerAnim"); } + TArray> & PassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PassengerPerSeat"); } + TArray SavedPassengerPerSeatField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SavedPassengerPerSeat"); } + TArray> & PrevPassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PrevPassengerPerSeat"); } long double& LastClientCameraRotationServerUpdateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastClientCameraRotationServerUpdate"); } + TArray OverrideTargetComponentsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.OverrideTargetComponents"); } int& LastPlayedAttackAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastPlayedAttackAnimation"); } char& AttackIndexOfPlayedAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackIndexOfPlayedAnimation"); } - TArray& DinoBaseLevelWeightEntriesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoBaseLevelWeightEntries"); } + TArray & DinoBaseLevelWeightEntriesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoBaseLevelWeightEntries"); } float& OriginalCapsuleHalfHeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalCapsuleHalfHeight"); } - TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LastSocketPositions"); } - TSet, FDefaultSetAllocator> MeleeSwingHurtListField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "APrimalDinoCharacter.MeleeSwingHurtList"); } + TArray & LastSocketPositionsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LastSocketPositions"); } + TSet,FDefaultSetAllocator> MeleeSwingHurtListField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "APrimalDinoCharacter.MeleeSwingHurtList"); } long double& EndAttackTargetTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EndAttackTargetTime"); } - FVector& RidingFirstPersonViewLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingFirstPersonViewLocationOffset"); } + FVector & RidingFirstPersonViewLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingFirstPersonViewLocationOffset"); } float& BabyChanceOfTwinsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyChanceOfTwins"); } float& BabyGestationSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyGestationSpeed"); } float& ExtraBabyGestationSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraBabyGestationSpeedMultiplier"); } float& AutoFadeOutAfterTameTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AutoFadeOutAfterTameTime"); } + float& BasedCameraSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BasedCameraSpeedMultiplier"); } long double& LastEggBoostedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastEggBoostedTime"); } float& WildPercentageChanceOfBabyField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildPercentageChanceOfBaby"); } float& WildBabyAgeWeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildBabyAgeWeight"); } float& BabyGestationProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyGestationProgress"); } + float& FlyerForceLimitPitchMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerForceLimitPitchMin"); } + float& FlyerForceLimitPitchMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerForceLimitPitchMax"); } float& LastBabyAgeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastBabyAge"); } float& LastBabyGestationProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastBabyGestationProgress"); } float& BabyChanceOfTripletsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyChanceOfTriplets"); } @@ -4106,42 +5609,51 @@ struct APrimalDinoCharacter : APrimalCharacter float& MaxPercentOfCapsulHeightAllowedForIKField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxPercentOfCapsulHeightAllowedForIK"); } float& SlopeBiasForMaxCapsulePercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlopeBiasForMaxCapsulePercent"); } float& FlyingForceRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingForceRotationRateModifier"); } - TArray& HideBoneNamesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.HideBoneNames"); } - FString& HideBonesStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HideBonesString"); } - FVector& WaterSurfaceExtraJumpVectorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WaterSurfaceExtraJumpVector"); } - FVector& FlyerTakeOffAdditionalVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerTakeOffAdditionalVelocity"); } + TArray & HideBoneNamesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.HideBoneNames"); } + FString & HideBonesStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HideBonesString"); } + FVector & WaterSurfaceExtraJumpVectorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WaterSurfaceExtraJumpVector"); } + FVector & FlyerTakeOffAdditionalVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerTakeOffAdditionalVelocity"); } float& OpenDoorDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OpenDoorDelay"); } float& TamedWanderHarvestIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestInterval"); } float& TamedWanderHarvestSearchRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestSearchRange"); } float& TamedWanderHarvestCollectRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestCollectRadius"); } - FVector& TamedWanderHarvestCollectOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestCollectOffset"); } + FVector & TamedWanderHarvestCollectOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestCollectOffset"); } float& RootLocSwimOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RootLocSwimOffset"); } float& PlayAnimBelowHealthPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayAnimBelowHealthPercent"); } float& LeavePlayAnimBelowHealthPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LeavePlayAnimBelowHealthPercent"); } float& PlatformSaddleMaxStructureBuildDistance2DField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlatformSaddleMaxStructureBuildDistance2D"); } - UAnimMontage * PlayAnimBelowHealthField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayAnimBelowHealth"); } - USoundBase * LowHealthExitSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthExitSound"); } - USoundBase * LowHealthEnterSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthEnterSound"); } + UAnimMontage * PlayAnimBelowHealthField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayAnimBelowHealth"); } + USoundBase * LowHealthExitSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthExitSound"); } + USoundBase * LowHealthEnterSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthEnterSound"); } + TSubclassOf & LowHealthDinoSettingsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LowHealthDinoSettings"); } float& SwimOffsetInterpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimOffsetInterpSpeed"); } float& CurrentRootLocSwimOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentRootLocSwimOffset"); } float& AIRangeMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AIRangeMultiplier"); } - FieldArray PreventColorizationRegionsField() { return { this, "APrimalDinoCharacter.PreventColorizationRegions" }; } - FieldArray ColorSetIndicesField() { return { this, "APrimalDinoCharacter.ColorSetIndices" }; } - FieldArray ColorSetIntensityMultipliersField() { return { this, "APrimalDinoCharacter.ColorSetIntensityMultipliers" }; } + FieldArray PreventColorizationRegionsField() { return {this, "APrimalDinoCharacter.PreventColorizationRegions"}; } + FieldArray AllowPaintingColorRegionsField() { return {this, "APrimalDinoCharacter.AllowPaintingColorRegions"}; } + FieldArray ColorSetIndicesField() { return {this, "APrimalDinoCharacter.ColorSetIndices"}; } + FieldArray ColorSetNamesField() { return {this, "APrimalDinoCharacter.ColorSetNames"}; } + FieldArray ColorSetIntensityMultipliersField() { return {this, "APrimalDinoCharacter.ColorSetIntensityMultipliers"}; } + TWeakObjectPtr & ColorOverrideBuffField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ColorOverrideBuff"); } + long double& ColorOverrideBuffDeactivateTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ColorOverrideBuffDeactivateTime"); } + float& ColorOverrideBuffInterpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ColorOverrideBuffInterpSpeed"); } float& MeleeAttackStaminaCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeAttackStaminaCost"); } - UAnimMontage * WakingTameAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAnimation"); } - TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Target"); } - TWeakObjectPtr& TamedFollowTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedFollowTarget"); } + UAnimMontage * WakingTameAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAnimation"); } + TWeakObjectPtr & TargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Target"); } + TWeakObjectPtr & TamedFollowTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedFollowTarget"); } + TWeakObjectPtr & TamedLandTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedLandTarget"); } float& PercentChanceFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PercentChanceFemale"); } - TArray>& DeathGiveItemClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveItemClasses"); } - TArray& DeathGiveItemChanceToBeBlueprintField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DeathGiveItemChanceToBeBlueprint"); } + TArray> & DeathGiveItemClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveItemClasses"); } + TArray & DeathGiveItemChanceToBeBlueprintField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DeathGiveItemChanceToBeBlueprint"); } float& DeathGiveItemQualityMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemQualityMin"); } float& DeathGiveItemQualityMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemQualityMax"); } float& DeathGiveItemRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemRange"); } - FString& DeathGiveAchievementField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveAchievement"); } - USoundBase * OverrideAreaMusicField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideAreaMusic"); } - FVector& UnboardLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationOffset"); } + FString & DeathGiveAchievementField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveAchievement"); } + USoundBase * OverrideAreaMusicField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideAreaMusic"); } + FVector & UnboardLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationOffset"); } float& LastTimeWhileHeadingToGoalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTimeWhileHeadingToGoal"); } + float& ForceUpdateIKTimerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForceUpdateIKTimer"); } + long double& LastColorizationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastColorizationTime"); } float& RidingNetUpdateFequencyField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingNetUpdateFequency"); } float& RiderMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxSpeedModifier"); } float& RiderExtraMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderExtraMaxSpeedModifier"); } @@ -4149,20 +5661,21 @@ struct APrimalDinoCharacter : APrimalCharacter float& RiderRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderRotationRateModifier"); } float& SwimmingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimmingRotationRateModifier"); } float& chargingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.chargingRotationRateModifier"); } - UAnimMontage * EnterFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EnterFlightAnim"); } - UAnimMontage * ExitFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExitFlightAnim"); } - UAnimMontage * SleepConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SleepConsumeFoodAnim"); } - UAnimMontage * WakingConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingConsumeFoodAnim"); } - UAnimMontage * FallAsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FallAsleepAnim"); } - UAnimMontage * TamedUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedUnsleepAnim"); } - UAnimMontage * WildUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildUnsleepAnim"); } - UAnimMontage * OpenDoorAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OpenDoorAnim"); } + UAnimMontage * EnterFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EnterFlightAnim"); } + UAnimMontage * ExitFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExitFlightAnim"); } + UAnimMontage * SleepConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SleepConsumeFoodAnim"); } + UAnimMontage * WakingConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingConsumeFoodAnim"); } + UAnimMontage * FallAsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FallAsleepAnim"); } + UAnimMontage * TamedUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedUnsleepAnim"); } + UAnimMontage * WildUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildUnsleepAnim"); } + UAnimMontage * OpenDoorAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OpenDoorAnim"); } float& ControlFacePitchInterpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ControlFacePitchInterpSpeed"); } float& TamedWalkableFloorZField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWalkableFloorZ"); } float& CurrentMovementAnimRateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentMovementAnimRate"); } int& MinPlayerLevelForWakingTameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinPlayerLevelForWakingTame"); } float& ForceNextAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForceNextAttackIndex"); } - TSubclassOf& TamedInventoryComponentTemplateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedInventoryComponentTemplate"); } + TSubclassOf & TamedInventoryComponentTemplateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedInventoryComponentTemplate"); } + FWeightedObjectList& DeathInventoryTemplatesField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathInventoryTemplates"); } float& DeathInventoryChanceToUseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathInventoryChanceToUse"); } float& WakingTameFeedIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFeedInterval"); } long double& LastWakingTameFedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastWakingTameFedTime"); } @@ -4170,63 +5683,73 @@ struct APrimalDinoCharacter : APrimalCharacter float& RequiredTameAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RequiredTameAffinity"); } float& RequiredTameAffinityPerBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RequiredTameAffinityPerBaseLevel"); } char& TamedAITargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAITargetingRange"); } - FName& PassengerBoneNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerBoneNameOverride"); } + FName & PassengerBoneNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerBoneNameOverride"); } float& CurrentTameAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentTameAffinity"); } float& TameIneffectivenessModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TameIneffectivenessModifier"); } float& TameIneffectivenessByAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TameIneffectivenessByAffinity"); } int& LastFrameUseLowQualityAnimationTickField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameUseLowQualityAnimationTick"); } + bool& bUseBPIsValidUnStasisCasterField() { return *GetNativePointerField(this, "APrimalDinoCharacter.bUseBPIsValidUnStasisCaster"); } + TArray & SaddleStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddleStructures"); } int& MaxSaddleStructuresHeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxSaddleStructuresHeight"); } + bool& CalculateStructureHeightFromSaddleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CalculateStructureHeightFromSaddle"); } + bool& CalculateStructureDistanceFromSaddleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CalculateStructureDistanceFromSaddle"); } int& SaddlePivotOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddlePivotOffset"); } int& MaxSaddleStructuresNumField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxSaddleStructuresNum"); } + TSubclassOf & DinoSettingsClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoSettingsClass"); } float& TamingFoodConsumeIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingFoodConsumeInterval"); } float& DediForceAttackAnimTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DediForceAttackAnimTime"); } float& DediForceStartAttackAfterAnimTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DediForceStartAttackAfterAnimTime"); } float& WakingTameFoodIncreaseMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFoodIncreaseMultiplier"); } int& TamingTeamIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingTeamID"); } int& OwningPlayerIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwningPlayerID"); } - FString& OwningPlayerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwningPlayerName"); } + FString & OwningPlayerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwningPlayerName"); } long double& TamingLastFoodConsumptionTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingLastFoodConsumptionTime"); } unsigned int& DinoID1Field() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoID1"); } unsigned int& DinoID2Field() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoID2"); } - FRotator& PreviousAimRotField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousAimRot"); } + FRotator & PreviousAimRotField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousAimRot"); } int& TamedAggressionLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAggressionLevel"); } float& TamingIneffectivenessModifierIncreaseByDamagePercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingIneffectivenessModifierIncreaseByDamagePercent"); } int& NPCSpawnerExtraLevelOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCSpawnerExtraLevelOffset"); } float& NPCSpawnerLevelMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCSpawnerLevelMultiplier"); } - TWeakObjectPtr& LinkedSupplyCrateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LinkedSupplyCrate"); } + TWeakObjectPtr & LinkedSupplyCrateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LinkedSupplyCrate"); } float& UntamedPoopTimeMinIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeMinInterval"); } float& UntamedPoopTimeMaxIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeMaxInterval"); } float& MeleeHarvestDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeHarvestDamageMultiplier"); } float& AllowRidingMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AllowRidingMaxDistance"); } float& UntamedPoopTimeCacheField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeCache"); } - TSubclassOf& BaseEggClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BaseEggClass"); } - TArray>& EggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.EggItemsToSpawn"); } - TArray& EggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.EggWeightsToSpawn"); } - TArray>& FertilizedEggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.FertilizedEggItemsToSpawn"); } - TArray& FertilizedEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FertilizedEggWeightsToSpawn"); } + TSubclassOf & BaseEggClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BaseEggClass"); } + TArray> & EggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.EggItemsToSpawn"); } + TArray & EggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.EggWeightsToSpawn"); } + TArray> & FertilizedEggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.FertilizedEggItemsToSpawn"); } + TArray & FertilizedEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FertilizedEggWeightsToSpawn"); } float& EggChanceToSpawnUnstasisField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggChanceToSpawnUnstasis"); } float& EggIntervalBetweenUnstasisChancesField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggIntervalBetweenUnstasisChances"); } float& EggRangeMaximumNumberFromSameDinoTypeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggRangeMaximumNumberFromSameDinoType"); } int& EggMaximumNumberFromSameDinoTypeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggMaximumNumberFromSameDinoType"); } float& EggRangeMaximumNumberField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggRangeMaximumNumber"); } int& EggMaximumNumberField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggMaximumNumber"); } + FName & EggSpawnSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggSpawnSocketName"); } + UAnimMontage * EggLayingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggLayingAnimation"); } float& UntamedWalkingSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedWalkingSpeedModifier"); } float& TamedWalkingSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWalkingSpeedModifier"); } float& UntamedRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedRunningSpeedModifier"); } float& TamedRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedRunningSpeedModifier"); } - UAnimSequence * RiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAnimOverride"); } - UAnimSequence * TurningRightRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningRightRiderAnimOverride"); } - UAnimSequence * TurningLeftRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningLeftRiderAnimOverride"); } - UAnimSequence * LatchedRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchedRiderAnimOverride"); } - UAnimSequence * RiderMoveAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMoveAnimOverride"); } + TSubclassOf & RandomColorSetsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RandomColorSetsMale"); } + TSubclassOf & RandomColorSetsFemaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RandomColorSetsFemale"); } + TSubclassOf & SpawnerColorSetsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SpawnerColorSets"); } + UAnimSequence * RiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAnimOverride"); } + UAnimSequence * TurningRightRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningRightRiderAnimOverride"); } + UAnimSequence * TurningLeftRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningLeftRiderAnimOverride"); } + UAnimSequence * LatchedRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchedRiderAnimOverride"); } + UAnimSequence * RiderMoveAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMoveAnimOverride"); } float& RidingAnimSpeedFactorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAnimSpeedFactor"); } - UAnimMontage * StartRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartRidingAnimOverride"); } - UAnimMontage * StopRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StopRidingAnimOverride"); } - FName& TargetingTeamNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TargetingTeamNameOverride"); } + UAnimMontage * StartRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartRidingAnimOverride"); } + UAnimMontage * StopRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StopRidingAnimOverride"); } + FName & TargetingTeamNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TargetingTeamNameOverride"); } float& ExtraTamedSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraTamedSpeedMultiplier"); } float& ExtraUnTamedSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraUnTamedSpeedMultiplier"); } long double& LastEggSpawnChanceTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastEggSpawnChanceTime"); } - FName& OriginalNPCVolumeNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalNPCVolumeName"); } + FName & OriginalNPCVolumeNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalNPCVolumeName"); } float& OutsideOriginalNPCVolumeStasisDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OutsideOriginalNPCVolumeStasisDestroyInterval"); } float& StasisedDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StasisedDestroyInterval"); } float& TamedAllowNamingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAllowNamingTime"); } @@ -4235,34 +5758,36 @@ struct APrimalDinoCharacter : APrimalCharacter float& DecayDestructionPeriodField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DecayDestructionPeriod"); } long double& TamedAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAtTime"); } long double& LastInAllyRangeTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastInAllyRangeTime"); } - TArray LatchedOnStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LatchedOnStructures"); } + TArray LatchedOnStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LatchedOnStructures"); } + UPrimalDinoSettings * MyDinoSettingsCDOField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MyDinoSettingsCDO"); } int& OriginalTargetingTeamField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalTargetingTeam"); } + float& LocInterpolationSnapDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LocInterpolationSnapDistance"); } float& PreviousRootYawSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousRootYawSpeed"); } long double& LastTimeFallingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTimeFalling"); } float& TamedCorpseLifespanField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedCorpseLifespan"); } float& MateBoostDamageReceiveMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostDamageReceiveMultiplier"); } float& MateBoostDamageGiveMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostDamageGiveMultiplier"); } float& MateBoostRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostRange"); } - FName& DinoNameTagField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoNameTag"); } - AShooterPlayerController * AttackMyTargetForPlayerControllerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackMyTargetForPlayerController"); } + FName & DinoNameTagField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoNameTag"); } + AShooterPlayerController * AttackMyTargetForPlayerControllerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackMyTargetForPlayerController"); } float& RidingAttackExtraVelocityDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAttackExtraVelocityDelay"); } float& StepDamageRadialDamageIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageInterval"); } float& StepDamageRadialDamageExtraRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageExtraRadius"); } float& StepDamageRadialDamageAmountGeneralField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageAmountGeneral"); } float& StepDamageRadialDamageAmountHarvestableField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageAmountHarvestable"); } long double& LastRadialStepDamageTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRadialStepDamageTime"); } - TSubclassOf& StepHarvestableDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepHarvestableDamageType"); } + TSubclassOf & StepHarvestableDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepHarvestableDamageType"); } float& StepDamageFootDamageIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageInterval"); } float& StepDamageFootDamageRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageRadius"); } float& StepDamageFootDamageAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageAmount"); } - TArray& StepDamageFootDamageSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepDamageFootDamageSockets"); } + TArray & StepDamageFootDamageSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepDamageFootDamageSockets"); } float& DurationBeforeMovingStuckPawnField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DurationBeforeMovingStuckPawn"); } - FVector& LastCheckedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastCheckedLocation"); } + FVector & LastCheckedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastCheckedLocation"); } long double& LastValidNotStuckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastValidNotStuckTime"); } - UAnimMontage * StartledAnimationRightDefaultField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationRightDefault"); } - UAnimMontage * StartledAnimationLeftField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationLeft"); } - TArray StartledAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StartledAnimations"); } - UAnimMontage * FlyingStartledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingStartledAnimation"); } + UAnimMontage * StartledAnimationRightDefaultField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationRightDefault"); } + UAnimMontage * StartledAnimationLeftField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationLeft"); } + TArray StartledAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StartledAnimations"); } + UAnimMontage * FlyingStartledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingStartledAnimation"); } float& RandomPlayStartledAnimIntervalMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomPlayStartledAnimIntervalMin"); } float& RandomPlayStartledAnimIntervalMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomPlayStartledAnimIntervalMax"); } float& StartledAnimationCooldownField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationCooldown"); } @@ -4277,52 +5802,56 @@ struct APrimalDinoCharacter : APrimalCharacter float& MaxDinoKillerTransferWeightPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxDinoKillerTransferWeightPercent"); } float& NPCZoneVolumeCountWeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCZoneVolumeCountWeight"); } float& NPCLerpToMaxRandomBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCLerpToMaxRandomBaseLevel"); } - FVector& FloatingHUDTextWorldOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FloatingHUDTextWorldOffset"); } + FVector & FloatingHUDTextWorldOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FloatingHUDTextWorldOffset"); } long double& LastAttackedTargetTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackedTargetTime"); } long double& LastForcedLandingCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastForcedLandingCheckTime"); } long double& LastAllyTargetLookTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAllyTargetLookTime"); } long double& LastAttackedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackedTime"); } long double& LastPlayerDinoOverlapRelevantTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastPlayerDinoOverlapRelevantTime"); } - FRotator& DinoAimRotationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoAimRotationOffset"); } + FRotator & DinoAimRotationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoAimRotationOffset"); } long double& LastDinoAllyLookInterpTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastDinoAllyLookInterpTime"); } - FVector& LastRiderOverlappedPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderOverlappedPosition"); } - TWeakObjectPtr& AutoDragByPawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AutoDragByPawn"); } + FVector & LastRiderOverlappedPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderOverlappedPosition"); } + TWeakObjectPtr & AutoDragByPawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AutoDragByPawn"); } long double& NextRidingFlyerUndergroundCheckField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextRidingFlyerUndergroundCheck"); } long double& LastSetRiderTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastSetRiderTime"); } - TSubclassOf& RepairRequirementsItemField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RepairRequirementsItem"); } + TSubclassOf & RepairRequirementsItemField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RepairRequirementsItem"); } float& RepairAmountRemainingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairAmountRemaining"); } float& RepairCheckIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairCheckInterval"); } float& RepairPercentPerIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairPercentPerInterval"); } - FVector& RiderCheckTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderCheckTraceOffset"); } - FVector& RiderEjectionImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderEjectionImpulse"); } + FVector & RiderCheckTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderCheckTraceOffset"); } + FVector & RiderEjectionImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderEjectionImpulse"); } float& WakingTameAffinityDecreaseFoodPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAffinityDecreaseFoodPercentage"); } float& WakingTameAllowFeedingFoodPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAllowFeedingFoodPercentage"); } float& WakingTameFoodAffinityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFoodAffinityMultiplier"); } float& CheckForWildAmbientHarvestingIntervalMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CheckForWildAmbientHarvestingIntervalMin"); } float& CheckForWildAmbientHarvestingIntervalMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CheckForWildAmbientHarvestingIntervalMax"); } float& WildAmbientHarvestingTimerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingTimer"); } - UAnimMontage * WildAmbientHarvestingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimation"); } - TArray WildAmbientHarvestingAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimations"); } + UAnimMontage * WildAmbientHarvestingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimation"); } + TArray WildAmbientHarvestingAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimations"); } + TArray> & WildAmbientHarvestingComponentClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.WildAmbientHarvestingComponentClasses"); } float& WildAmbientHarvestingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingRadius"); } int& FlyerNumUnderGroundFailField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerNumUnderGroundFail"); } int& AbsoluteBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AbsoluteBaseLevel"); } - TSubclassOf& TamedHarvestDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedHarvestDamageType"); } - TArray DraggedRagdollsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DraggedRagdolls"); } - FVector& LastOverrodeRandomWanderLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastOverrodeRandomWanderLocation"); } + TArray & OverrideBaseStatLevelsOnSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.OverrideBaseStatLevelsOnSpawn"); } + TArray> & OverrideStatPriorityOnSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.OverrideStatPriorityOnSpawn"); } + TSubclassOf & TamedHarvestDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedHarvestDamageType"); } + FDinoSaddleStruct & SaddleStructField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleStruct"); } + TArray DraggedRagdollsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DraggedRagdolls"); } + FVector & LastOverrodeRandomWanderLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastOverrodeRandomWanderLocation"); } float& ChargeBumpDamageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeBumpDamage"); } - TSubclassOf& ChargeBumpDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ChargeBumpDamageType"); } + TSubclassOf & ChargeBumpDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ChargeBumpDamageType"); } float& ChargeBumpImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeBumpImpulse"); } float& MinChargeIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinChargeInterval"); } float& PlayerMountedLaunchFowardSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedLaunchFowardSpeed"); } float& PlayerMountedLaunchUpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedLaunchUpSpeed"); } float& AttackOnLaunchMaximumTargetDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackOnLaunchMaximumTargetDistance"); } float& KeepFlightRemainingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.KeepFlightRemainingTime"); } - UAnimMontage * MountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterAnimation"); } - UAnimMontage * UnmountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnmountCharacterAnimation"); } - UAnimMontage * EndChargingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EndChargingAnimation"); } + UAnimMontage * MountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterAnimation"); } + UAnimMontage * UnmountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnmountCharacterAnimation"); } + UAnimMontage * EndChargingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EndChargingAnimation"); } float& FlyingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingRunSpeedModifier"); } float& ChargingAnimDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingAnimDelay"); } - FName& RiderSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderSocketName"); } + FName & RiderSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderSocketName"); } float& ChargingActivationRequiresStaminaField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingActivationRequiresStamina"); } float& ChargingActivationConsumesStaminaField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingActivationConsumesStamina"); } float& FlyerHardBreakingOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerHardBreakingOverride"); } @@ -4330,11 +5859,12 @@ struct APrimalDinoCharacter : APrimalCharacter float& BabySpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabySpeedMultiplier"); } float& BabyPitchMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyPitchMultiplier"); } float& BabyVolumeMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyVolumeMultiplier"); } - TWeakObjectPtr& WanderAroundActorField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WanderAroundActor"); } + TWeakObjectPtr & WanderAroundActorField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WanderAroundActor"); } float& WanderAroundActorMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WanderAroundActorMaxDistance"); } long double& ChargingStartBlockedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStartBlockedTime"); } long double& LastChargeEndTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastChargeEndTime"); } - TArray SaddledStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddledStructures"); } + TArray SaddledStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddledStructures"); } + TSubclassOf & BuffGivenToBasedCharactersField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BuffGivenToBasedCharacters"); } long double& LastTamedFlyerNearbyAllyCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTamedFlyerNearbyAllyCheckTime"); } long double& LastUpdatedBabyAgeAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastUpdatedBabyAgeAtTime"); } long double& LastUpdatedGestationAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastUpdatedGestationAtTime"); } @@ -4346,16 +5876,16 @@ struct APrimalDinoCharacter : APrimalCharacter long double& NextAllowedMatingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextAllowedMatingTime"); } float& MatingProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingProgress"); } long double& LastMatingNotificationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastMatingNotificationTime"); } - APrimalDinoCharacter * MatingWithDinoField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingWithDino"); } - UAnimMontage * MatingAnimationMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingAnimationMale"); } - FieldArray GestationEggNumberOfLevelUpPointsAppliedField() { return { this, "APrimalDinoCharacter.GestationEggNumberOfLevelUpPointsApplied" }; } + APrimalDinoCharacter*& MatingWithDinoField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingWithDino"); } + UAnimMontage * MatingAnimationMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingAnimationMale"); } + FieldArray GestationEggNumberOfLevelUpPointsAppliedField() { return {this, "APrimalDinoCharacter.GestationEggNumberOfLevelUpPointsApplied"}; } float& GestationEggTamedIneffectivenessModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggTamedIneffectivenessModifier"); } - FieldArray GestationEggColorSetIndicesField() { return { this, "APrimalDinoCharacter.GestationEggColorSetIndices" }; } + FieldArray GestationEggColorSetIndicesField() { return {this, "APrimalDinoCharacter.GestationEggColorSetIndices"}; } float& NewFemaleMinTimeBetweenMatingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NewFemaleMinTimeBetweenMating"); } float& NewFemaleMaxTimeBetweenMatingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NewFemaleMaxTimeBetweenMating"); } - TArray>& DefaultTamedBuffsField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DefaultTamedBuffs"); } - FVector& InterpolatedVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.InterpolatedVelocity"); } - FVector& OldInterpolatedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OldInterpolatedLocation"); } + TArray> & DefaultTamedBuffsField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DefaultTamedBuffs"); } + FVector & InterpolatedVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.InterpolatedVelocity"); } + FVector & OldInterpolatedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OldInterpolatedLocation"); } float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HyperThermiaInsulation"); } float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HypoThermiaInsulation"); } float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.InsulationRange"); } @@ -4365,18 +5895,18 @@ struct APrimalDinoCharacter : APrimalCharacter int& MaxGangCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxGangCount"); } int& GangCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GangCount"); } long double& LastGangCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGangCheckTime"); } - FVector& LastGangCheckPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGangCheckPosition"); } + FVector & LastGangCheckPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGangCheckPosition"); } int& PreviousTargetingTeamField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousTargetingTeam"); } int& LastRiderExitFrameCounterField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderExitFrameCounter"); } float& WildRandomScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildRandomScale"); } float& HeldJumpSlowFallingGravityZScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HeldJumpSlowFallingGravityZScale"); } - UAnimMontage * SlowFallingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlowFallingAnim"); } + UAnimMontage * SlowFallingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlowFallingAnim"); } float& SlowFallingStaminaCostPerSecondField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlowFallingStaminaCostPerSecond"); } float& NoRiderRotationModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NoRiderRotationModifier"); } - FName& RiderFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraUseSocketName"); } - FName& RiderLatchedFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderLatchedFPVCameraUseSocketName"); } - FName& PassengerFPVCameraRootSocketField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerFPVCameraRootSocket"); } - TArray& FPVRiderBoneNamesToHideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FPVRiderBoneNamesToHide"); } + FName & RiderFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraUseSocketName"); } + FName & RiderLatchedFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderLatchedFPVCameraUseSocketName"); } + FName & PassengerFPVCameraRootSocketField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerFPVCameraRootSocket"); } + TArray & FPVRiderBoneNamesToHideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FPVRiderBoneNamesToHide"); } float& ExtraRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraRunningSpeedModifier"); } float& ScaleExtraRunningSpeedModifierMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ScaleExtraRunningSpeedModifierMin"); } float& ScaleExtraRunningSpeedModifierMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ScaleExtraRunningSpeedModifierMax"); } @@ -4384,28 +5914,29 @@ struct APrimalDinoCharacter : APrimalCharacter float& LastHigherScaleExtraRunningSpeedValueField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastHigherScaleExtraRunningSpeedValue"); } long double& LastHigherScaleExtraRunningSpeedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastHigherScaleExtraRunningSpeedTime"); } float& RiderMovementSpeedScalingRotationRatePowerMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMovementSpeedScalingRotationRatePowerMultiplier"); } + float& HighQualityLedgeDetectionExtraTraceDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HighQualityLedgeDetectionExtraTraceDistance"); } int& LoadDestroyWildDinosUnderVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LoadDestroyWildDinosUnderVersion"); } int& SaveDestroyWildDinosUnderVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaveDestroyWildDinosUnderVersion"); } float& AllowWaterSurfaceExtraJumpStaminaCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AllowWaterSurfaceExtraJumpStaminaCost"); } - USoundBase * PlayKillLocalSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayKillLocalSound"); } - TWeakObjectPtr& RiderAttackTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RiderAttackTarget"); } - FVector& RiderAttackLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAttackLocation"); } + USoundBase * PlayKillLocalSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayKillLocalSound"); } + TWeakObjectPtr & RiderAttackTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RiderAttackTarget"); } + FVector & RiderAttackLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAttackLocation"); } char& TribeGroupPetOrderingRankField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TribeGroupPetOrderingRank"); } char& TribeGroupPetRidingRankField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TribeGroupPetRidingRank"); } char& FollowStoppingDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FollowStoppingDistance"); } - FString& ImprinterNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ImprinterName"); } + FString & ImprinterNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ImprinterName"); } unsigned __int64& ImprinterPlayerDataIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ImprinterPlayerDataID"); } float& BabyMinCuddleIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyMinCuddleInterval"); } float& BabyMaxCuddleIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyMaxCuddleInterval"); } float& BabyCuddleGracePeriodField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleGracePeriod"); } float& BabyCuddleLoseImpringQualityPerSecondField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleLoseImpringQualityPerSecond"); } float& BabyCuddleWalkDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleWalkDistance"); } - FVector& BabyCuddleWalkStartingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleWalkStartingLocation"); } + FVector & BabyCuddleWalkStartingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleWalkStartingLocation"); } long double& BabyNextCuddleTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyNextCuddleTime"); } - TEnumAsByte& BabyCuddleTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleType"); } - TSubclassOf& BabyCuddleFoodField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleFood"); } - UAnimMontage * BabyCuddledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddledAnimation"); } - TArray>& MyBabyCuddleFoodTypesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.MyBabyCuddleFoodTypes"); } + TEnumAsByte & BabyCuddleTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleType"); } + TSubclassOf & BabyCuddleFoodField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleFood"); } + UAnimMontage * BabyCuddledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddledAnimation"); } + TArray> & MyBabyCuddleFoodTypesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.MyBabyCuddleFoodTypes"); } float& RiderMaxImprintingQualityDamageReductionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxImprintingQualityDamageReduction"); } float& RiderMaxImprintingQualityDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxImprintingQualityDamageMultiplier"); } float& BabyImprintingQualityTotalMaturationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyImprintingQualityTotalMaturationTime"); } @@ -4416,6 +5947,7 @@ struct APrimalDinoCharacter : APrimalCharacter float& maxRangeForWeaponTriggeredTooltipField() { return *GetNativePointerField(this, "APrimalDinoCharacter.maxRangeForWeaponTriggeredTooltip"); } float& StepRadialDamageOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepRadialDamageOffset"); } float& ForcePawnBigPushingForTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForcePawnBigPushingForTime"); } + float& WanderRadiusMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WanderRadiusMultiplier"); } float& AIDinoForceActiveUntasisingRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AIDinoForceActiveUntasisingRange"); } float& WildRunningRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildRunningRotationRateModifier"); } float& TamedRunningRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedRunningRotationRateModifier"); } @@ -4427,12 +5959,12 @@ struct APrimalDinoCharacter : APrimalCharacter float& WalkingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WalkingRotationRateModifier"); } float& SetAttackTargetTraceDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SetAttackTargetTraceDistance"); } float& SetAttackTargetTraceWidthField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SetAttackTargetTraceWidth"); } - float& WanderRadiusMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WanderRadiusMultiplier"); } long double& RepeatPrimaryAttackLastSendTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepeatPrimaryAttackLastSendTime"); } long double& NextTamedDinoCharacterStatusTickTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextTamedDinoCharacterStatusTickTime"); } long double& LastTamedDinoCharacterStatusTickTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTamedDinoCharacterStatusTickTime"); } - UAnimMontage * PlayerMountedCarryAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedCarryAnimation"); } + UAnimMontage * PlayerMountedCarryAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedCarryAnimation"); } float& HealthBarOffsetYField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HealthBarOffsetY"); } + AMissionType * OwnerMissionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwnerMission"); } float& LimitRiderYawOnLatchedRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LimitRiderYawOnLatchedRange"); } float& LatchingDistanceLimitField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingDistanceLimit"); } float& LatchingInitialYawField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingInitialYaw"); } @@ -4443,24 +5975,25 @@ struct APrimalDinoCharacter : APrimalCharacter float& TargetLatchingInitialYawField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TargetLatchingInitialYaw"); } float& CurrentStrafeMagnitudeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentStrafeMagnitude"); } float& GainStaminaWhenLatchedRateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GainStaminaWhenLatchedRate"); } + float& AIAggroNotifyNeighborsClassesRangeScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AIAggroNotifyNeighborsClassesRangeScale"); } int& LastFrameMoveRightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameMoveRight"); } int& LastFrameMoveLeftField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameMoveLeft"); } - FRotator& LastRiderMountedWeaponRotationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderMountedWeaponRotation"); } + FRotator & LastRiderMountedWeaponRotationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderMountedWeaponRotation"); } long double& LastRiderMountedWeaponRotationSentTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderMountedWeaponRotationSentTime"); } int& DeathGivesDossierIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGivesDossierIndex"); } float& DeathGivesDossierDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGivesDossierDelay"); } - FName& SaddleRiderMovementTraceThruSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleRiderMovementTraceThruSocketName"); } + FName & SaddleRiderMovementTraceThruSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleRiderMovementTraceThruSocketName"); } float& SwimmingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimmingRunSpeedModifier"); } float& RidingSwimmingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingSwimmingRunSpeedModifier"); } long double& DinoDownloadedAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoDownloadedAtTime"); } - FString& UploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UploadedFromServerName"); } - FString& LatestUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatestUploadedFromServerName"); } - FString& PreviousUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousUploadedFromServerName"); } - FString& TamedOnServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedOnServerName"); } - TArray& DinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestors"); } - TArray& DinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestorsMale"); } - TArray& NextBabyDinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestors"); } - TArray& NextBabyDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestorsMale"); } + FString & UploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UploadedFromServerName"); } + FString & LatestUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatestUploadedFromServerName"); } + FString & PreviousUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousUploadedFromServerName"); } + FString & TamedOnServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedOnServerName"); } + TArray & DinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestors"); } + TArray & DinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestorsMale"); } + TArray & NextBabyDinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestors"); } + TArray & NextBabyDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestorsMale"); } int& MaxAllowedRandomMutationsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxAllowedRandomMutations"); } int& RandomMutationRollsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationRolls"); } float& RandomMutationChanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationChance"); } @@ -4469,14 +6002,14 @@ struct APrimalDinoCharacter : APrimalCharacter int& RandomMutationsFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationsFemale"); } int& GestationEggRandomMutationsFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggRandomMutationsFemale"); } int& GestationEggRandomMutationsMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggRandomMutationsMale"); } - FName& WakingTameDistanceSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameDistanceSocketName"); } + FName & WakingTameDistanceSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameDistanceSocketName"); } int& WakingTameConsumeEntireStackMaxQuantityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameConsumeEntireStackMaxQuantity"); } float& AttackPlayerDesirabilityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackPlayerDesirabilityMultiplier"); } long double& LastAutoHealingItemUseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAutoHealingItemUse"); } long double& LastStartedCarryingCharacterTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastStartedCarryingCharacterTime"); } float& FlyerAttachedExplosiveSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerAttachedExplosiveSpeedMultiplier"); } - TArray& DinoExtraDefaultInventoryItemsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoExtraDefaultInventoryItems"); } - TArray>& DeathGiveEngramClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveEngramClasses"); } + TArray & DinoExtraDefaultInventoryItemsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoExtraDefaultInventoryItems"); } + TArray> & DeathGiveEngramClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveEngramClasses"); } float& SinglePlayerOutgoingDamageModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SinglePlayerOutgoingDamageModifier"); } float& SinglePlayerIncomingDamageModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SinglePlayerIncomingDamageModifier"); } int& LastTickDelayFrameCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTickDelayFrameCount"); } @@ -4484,23 +6017,25 @@ struct APrimalDinoCharacter : APrimalCharacter float& TickStatusTimeAccumulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TickStatusTimeAccumulation"); } long double& LastServerTamedTickField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastServerTamedTick"); } int& LastTempDampenMovementInputAccelerationFrameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTempDampenMovementInputAccelerationFrame"); } - UAnimMontage * DinoLevelUpAnimationOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoLevelUpAnimationOverride"); } - TArray>& DamageVictimClassesIgnoreBlockingGeomtryTraceField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DamageVictimClassesIgnoreBlockingGeomtryTrace"); } + UAnimMontage * DinoLevelUpAnimationOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoLevelUpAnimationOverride"); } + TArray> & DamageVictimClassesIgnoreBlockingGeomtryTraceField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DamageVictimClassesIgnoreBlockingGeomtryTrace"); } long double& LastVacuumSpaceCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastVacuumSpaceCheckTime"); } long double& LastGrappledTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGrappledTime"); } float& CloneBaseElementCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CloneBaseElementCost"); } float& CloneElementCostPerLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CloneElementCostPerLevel"); } - FName& NonDedicatedFreezeWildDinoPhysicsIfLevelUnloadedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NonDedicatedFreezeWildDinoPhysicsIfLevelUnloaded"); } - TArray& NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloadedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloaded"); } - FVector& UnboardLocationTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationTraceOffset"); } - FName& AttackLineOfSightMeshSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackLineOfSightMeshSocketName"); } + int& LastValidTameVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastValidTameVersion"); } + int& SavedLastValidTameVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SavedLastValidTameVersion"); } + FName & NonDedicatedFreezeDinoPhysicsIfLevelUnloadedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NonDedicatedFreezeDinoPhysicsIfLevelUnloaded"); } + TArray & NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloadedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloaded"); } + FVector & UnboardLocationTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationTraceOffset"); } + FName & AttackLineOfSightMeshSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackLineOfSightMeshSocketName"); } float& AttackForceWalkDistanceMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackForceWalkDistanceMultiplier"); } float& AttackForceWalkRotationRateMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackForceWalkRotationRateMultiplier"); } int& OverrideDinoTameSoundIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideDinoTameSoundIndex"); } - USoundBase * SwimSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSound"); } + USoundBase * SwimSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSound"); } float& SwimSoundIntervalPerHundredSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSoundIntervalPerHundredSpeed"); } float& SwimSoundTimeCacheField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSoundTimeCache"); } - TSubclassOf& TamedAIControllerOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedAIControllerOverride"); } + TSubclassOf & TamedAIControllerOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedAIControllerOverride"); } int& PersonalTamedDinoCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PersonalTamedDinoCost"); } long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UploadEarliestValidTime"); } float& StasisAutoDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StasisAutoDestroyInterval"); } @@ -4508,7 +6043,16 @@ struct APrimalDinoCharacter : APrimalCharacter float& ExtraDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraDamageMultiplier"); } float& ExtraTamedBaseHealthMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraTamedBaseHealthMultiplier"); } float& AttackRangeOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackRangeOffset"); } + float& DinoExtraIncreasePlayerCollisionActivationDistanceSquaredField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoExtraIncreasePlayerCollisionActivationDistanceSquared"); } char& CurrentPassengerSeatIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentPassengerSeatIndex"); } + float& OverrideApproachRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideApproachRadius"); } + float& TamedOverrideStasisComponentRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedOverrideStasisComponentRadius"); } + UStaticMesh * UniqueDino_MapMarkerMeshField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UniqueDino_MapMarkerMesh"); } + FColor & UniqueDino_MapMarkerColorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UniqueDino_MapMarkerColor"); } + float& OverrideDinoMaxExperiencePointsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideDinoMaxExperiencePoints"); } + int& MaxDinoTameLevelsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxDinoTameLevels"); } + int& DestroyTamesOverLevelClampOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DestroyTamesOverLevelClampOffset"); } + TArray> & ForceAllowFoodAsConsumableListField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.ForceAllowFoodAsConsumableList"); } // Bit fields @@ -4542,8 +6086,15 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bWakingTameConsumeEntireStack() { return { this, "APrimalDinoCharacter.bWakingTameConsumeEntireStack" }; } BitFieldValue bAllowCarryCharacterWithoutRider() { return { this, "APrimalDinoCharacter.bAllowCarryCharacterWithoutRider" }; } BitFieldValue bWildDinoPreventWeight() { return { this, "APrimalDinoCharacter.bWildDinoPreventWeight" }; } + BitFieldValue bDebugMeleeAttacks() { return { this, "APrimalDinoCharacter.bDebugMeleeAttacks" }; } BitFieldValue bRetainCarriedCharacterOnDismount() { return { this, "APrimalDinoCharacter.bRetainCarriedCharacterOnDismount" }; } BitFieldValue bUseBPOnTamedProcessOrder() { return { this, "APrimalDinoCharacter.bUseBPOnTamedProcessOrder" }; } + BitFieldValue bUseBP_OnTamedOrderReceived() { return { this, "APrimalDinoCharacter.bUseBP_OnTamedOrderReceived" }; } + BitFieldValue bAllowAttackWithCryoSickness() { return { this, "APrimalDinoCharacter.bAllowAttackWithCryoSickness" }; } + BitFieldValue bUseBPCanCryo() { return { this, "APrimalDinoCharacter.bUseBPCanCryo" }; } + BitFieldValue bWildPreventTeleporting() { return { this, "APrimalDinoCharacter.bWildPreventTeleporting" }; } + BitFieldValue bUseBPClampMaxHarvestHealth() { return { this, "APrimalDinoCharacter.bUseBPClampMaxHarvestHealth" }; } + BitFieldValue bUseBPCheckCanSpawnFromLocation() { return { this, "APrimalDinoCharacter.bUseBPCheckCanSpawnFromLocation" }; } BitFieldValue bIsLanding() { return { this, "APrimalDinoCharacter.bIsLanding" }; } BitFieldValue bCanCharge() { return { this, "APrimalDinoCharacter.bCanCharge" }; } BitFieldValue bCancelInterpolation() { return { this, "APrimalDinoCharacter.bCancelInterpolation" }; } @@ -4559,6 +6110,7 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bAllowCarryFlyerDinos() { return { this, "APrimalDinoCharacter.bAllowCarryFlyerDinos" }; } BitFieldValue bForcedLanding() { return { this, "APrimalDinoCharacter.bForcedLanding" }; } BitFieldValue bFlyerForceNoPitch() { return { this, "APrimalDinoCharacter.bFlyerForceNoPitch" }; } + BitFieldValue bFlyerForceLimitPitch() { return { this, "APrimalDinoCharacter.bFlyerForceLimitPitch" }; } BitFieldValue bPreventStasis() { return { this, "APrimalDinoCharacter.bPreventStasis" }; } BitFieldValue bAutoTameable() { return { this, "APrimalDinoCharacter.bAutoTameable" }; } BitFieldValue bAlwaysSetTamingTeamOnItemAdd() { return { this, "APrimalDinoCharacter.bAlwaysSetTamingTeamOnItemAdd" }; } @@ -4589,6 +6141,7 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bTargetEverything() { return { this, "APrimalDinoCharacter.bTargetEverything" }; } BitFieldValue bTamedWanderHarvestNonUsableHarvesting() { return { this, "APrimalDinoCharacter.bTamedWanderHarvestNonUsableHarvesting" }; } BitFieldValue bEnableTamedWandering() { return { this, "APrimalDinoCharacter.bEnableTamedWandering" }; } + BitFieldValue bEnableTamedMating() { return { this, "APrimalDinoCharacter.bEnableTamedMating" }; } BitFieldValue bCollectVictimItems() { return { this, "APrimalDinoCharacter.bCollectVictimItems" }; } BitFieldValue bServerInitializedDino() { return { this, "APrimalDinoCharacter.bServerInitializedDino" }; } BitFieldValue bNPCSpawnerOverrideLevel() { return { this, "APrimalDinoCharacter.bNPCSpawnerOverrideLevel" }; } @@ -4599,6 +6152,7 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bAnimIsMoving() { return { this, "APrimalDinoCharacter.bAnimIsMoving" }; } BitFieldValue bDoStepDamage() { return { this, "APrimalDinoCharacter.bDoStepDamage" }; } BitFieldValue bPreventBasingWhenUntamed() { return { this, "APrimalDinoCharacter.bPreventBasingWhenUntamed" }; } + BitFieldValue bForceAlwaysAllowBasing() { return { this, "APrimalDinoCharacter.bForceAlwaysAllowBasing" }; } BitFieldValue bChargingRequiresWalking() { return { this, "APrimalDinoCharacter.bChargingRequiresWalking" }; } BitFieldValue bUseRootLocSwimOffset() { return { this, "APrimalDinoCharacter.bUseRootLocSwimOffset" }; } BitFieldValue bUseLowQualityAnimationTick() { return { this, "APrimalDinoCharacter.bUseLowQualityAnimationTick" }; } @@ -4607,6 +6161,7 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bUseBPGetAttackWeight() { return { this, "APrimalDinoCharacter.bUseBPGetAttackWeight" }; } BitFieldValue bServerForceUpdateDinoGameplayMeshNearPlayer() { return { this, "APrimalDinoCharacter.bServerForceUpdateDinoGameplayMeshNearPlayer" }; } BitFieldValue bPreventAllRiderWeapons() { return { this, "APrimalDinoCharacter.bPreventAllRiderWeapons" }; } + BitFieldValue bPreventAllRiderWeaponsOnReequip() { return { this, "APrimalDinoCharacter.bPreventAllRiderWeaponsOnReequip" }; } BitFieldValue bAllowDeathAutoGrab() { return { this, "APrimalDinoCharacter.bAllowDeathAutoGrab" }; } BitFieldValue bSupportWakingTame() { return { this, "APrimalDinoCharacter.bSupportWakingTame" }; } BitFieldValue bAllowAutoUnstasisDestroy() { return { this, "APrimalDinoCharacter.bAllowAutoUnstasisDestroy" }; } @@ -4669,6 +6224,25 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bFlyerAllowRidingInCaves() { return { this, "APrimalDinoCharacter.bFlyerAllowRidingInCaves" }; } BitFieldValue bScaleExtraRunningSpeedModifier() { return { this, "APrimalDinoCharacter.bScaleExtraRunningSpeedModifier" }; } BitFieldValue bOverrideCrosshairAlpha() { return { this, "APrimalDinoCharacter.bOverrideCrosshairAlpha" }; } + BitFieldValue bOverrideCrosshairColor() { return { this, "APrimalDinoCharacter.bOverrideCrosshairColor" }; } + BitFieldValue bUseBPGetCrosshairLocation() { return { this, "APrimalDinoCharacter.bUseBPGetCrosshairLocation" }; } + BitFieldValue bCenterOffscreenFloatingHUDWidgets() { return { this, "APrimalDinoCharacter.bCenterOffscreenFloatingHUDWidgets" }; } + BitFieldValue bClampOffscreenFloatingHUDWidgets() { return { this, "APrimalDinoCharacter.bClampOffscreenFloatingHUDWidgets" }; } + BitFieldValue bUseFixedSpawnLevel() { return { this, "APrimalDinoCharacter.bUseFixedSpawnLevel" }; } + BitFieldValue bTreatCrouchInputAsAttack() { return { this, "APrimalDinoCharacter.bTreatCrouchInputAsAttack" }; } + BitFieldValue bUseBPGetRiderUnboardLocation() { return { this, "APrimalDinoCharacter.bUseBPGetRiderUnboardLocation" }; } + BitFieldValue bUseBPGetRiderUnboardDirection() { return { this, "APrimalDinoCharacter.bUseBPGetRiderUnboardDirection" }; } + BitFieldValue bUniqueDino() { return { this, "APrimalDinoCharacter.bUniqueDino" }; } + BitFieldValue bModifyBasedCamera() { return { this, "APrimalDinoCharacter.bModifyBasedCamera" }; } + BitFieldValue bUseBPOnRefreshColorization() { return { this, "APrimalDinoCharacter.bUseBPOnRefreshColorization" }; } + BitFieldValue bHideAncestorsButton() { return { this, "APrimalDinoCharacter.bHideAncestorsButton" }; } + BitFieldValue bUseBP_OverrideDinoName() { return { this, "APrimalDinoCharacter.bUseBP_OverrideDinoName" }; } + BitFieldValue bUseBPDinoTooltipCustomProgressBar() { return { this, "APrimalDinoCharacter.bUseBPDinoTooltipCustomProgressBar" }; } + BitFieldValue bUseBPDisplayTamedMessage() { return { this, "APrimalDinoCharacter.bUseBPDisplayTamedMessage" }; } + BitFieldValue bUseBPOverrideTamingDescriptionLabel() { return { this, "APrimalDinoCharacter.bUseBPOverrideTamingDescriptionLabel" }; } + BitFieldValue bUseBPCanMountOnCharacter() { return { this, "APrimalDinoCharacter.bUseBPCanMountOnCharacter" }; } + BitFieldValue bUseBPGetRiderSocket() { return { this, "APrimalDinoCharacter.bUseBPGetRiderSocket" }; } + BitFieldValue bUseBPShowTamingPanel() { return { this, "APrimalDinoCharacter.bUseBPShowTamingPanel" }; } BitFieldValue bMeleeSwingDamageBlockedByAllStationaryObjects() { return { this, "APrimalDinoCharacter.bMeleeSwingDamageBlockedByAllStationaryObjects" }; } BitFieldValue bUseBPChargingModifyInputAcceleration() { return { this, "APrimalDinoCharacter.bUseBPChargingModifyInputAcceleration" }; } BitFieldValue bUseBPOnRepIsCharging() { return { this, "APrimalDinoCharacter.bUseBPOnRepIsCharging" }; } @@ -4677,6 +6251,15 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bUsesPassengerAnimOnDinos() { return { this, "APrimalDinoCharacter.bUsesPassengerAnimOnDinos" }; } BitFieldValue bOverrideRotationOnCarriedCharacter() { return { this, "APrimalDinoCharacter.bOverrideRotationOnCarriedCharacter" }; } BitFieldValue bAdvancedCarryRelease() { return { this, "APrimalDinoCharacter.bAdvancedCarryRelease" }; } + BitFieldValue bForceCarriedPlayerToCheckForWalls() { return { this, "APrimalDinoCharacter.bForceCarriedPlayerToCheckForWalls" }; } + BitFieldValue bClearRiderOnDinoImmobilized() { return { this, "APrimalDinoCharacter.bClearRiderOnDinoImmobilized" }; } + BitFieldValue bUseBPIsBasedOnActor() { return { this, "APrimalDinoCharacter.bUseBPIsBasedOnActor" }; } + BitFieldValue bUseBPUnstasisConsumeFood() { return { this, "APrimalDinoCharacter.bUseBPUnstasisConsumeFood" }; } + BitFieldValue bUseBPOnDinoStartled() { return { this, "APrimalDinoCharacter.bUseBPOnDinoStartled" }; } + BitFieldValue bSimulateRootMotion() { return { this, "APrimalDinoCharacter.bSimulateRootMotion" }; } + BitFieldValue bUseBPOverrideStencilAllianceForTarget() { return { this, "APrimalDinoCharacter.bUseBPOverrideStencilAllianceForTarget" }; } + BitFieldValue bDisableHighQualityAIVolumeLedgeChecking() { return { this, "APrimalDinoCharacter.bDisableHighQualityAIVolumeLedgeChecking" }; } + BitFieldValue bDoHighQualityLedgeChecking() { return { this, "APrimalDinoCharacter.bDoHighQualityLedgeChecking" }; } BitFieldValue bOnlyDoStepDamageWhenRunning() { return { this, "APrimalDinoCharacter.bOnlyDoStepDamageWhenRunning" }; } BitFieldValue bShouldNotifyClientWhenLanded() { return { this, "APrimalDinoCharacter.bShouldNotifyClientWhenLanded" }; } BitFieldValue bPreventPlatformSaddleMultiFloors() { return { this, "APrimalDinoCharacter.bPreventPlatformSaddleMultiFloors" }; } @@ -4712,6 +6295,7 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bDontPlayAttackingMusic() { return { this, "APrimalDinoCharacter.bDontPlayAttackingMusic" }; } BitFieldValue bForceIgnoreRagdollHarvesting() { return { this, "APrimalDinoCharacter.bForceIgnoreRagdollHarvesting" }; } BitFieldValue bBPModifyAimOffsetTargetLocation() { return { this, "APrimalDinoCharacter.bBPModifyAimOffsetTargetLocation" }; } + BitFieldValue bBPModifyAimOffsetNoTarget() { return { this, "APrimalDinoCharacter.bBPModifyAimOffsetNoTarget" }; } BitFieldValue bIsVehicle() { return { this, "APrimalDinoCharacter.bIsVehicle" }; } BitFieldValue bDisallowPostNetReplication() { return { this, "APrimalDinoCharacter.bDisallowPostNetReplication" }; } BitFieldValue bTakingOff() { return { this, "APrimalDinoCharacter.bTakingOff" }; } @@ -4742,13 +6326,6 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bDisableHarvesting() { return { this, "APrimalDinoCharacter.bDisableHarvesting" }; } BitFieldValue bUseBPDinoPostBeginPlay() { return { this, "APrimalDinoCharacter.bUseBPDinoPostBeginPlay" }; } BitFieldValue bForceAllowTickingThisFrame() { return { this, "APrimalDinoCharacter.bForceAllowTickingThisFrame" }; } - BitFieldValue bDrawHealthBar() { return { this, "APrimalDinoCharacter.bDrawHealthBar" }; } - BitFieldValue bUseShoulderMountedLaunch() { return { this, "APrimalDinoCharacter.bUseShoulderMountedLaunch" }; } - BitFieldValue bDidSetupTamed() { return { this, "APrimalDinoCharacter.bDidSetupTamed" }; } - BitFieldValue bIncrementedNumDinos() { return { this, "APrimalDinoCharacter.bIncrementedNumDinos" }; } - BitFieldValue bForceAllowPvECarry() { return { this, "APrimalDinoCharacter.bForceAllowPvECarry" }; } - BitFieldValue bUnderwaterMating() { return { this, "APrimalDinoCharacter.bUnderwaterMating" }; } - BitFieldValue bBabyPreventExitingWater() { return { this, "APrimalDinoCharacter.bBabyPreventExitingWater" }; } BitFieldValue bFlyerDontGainImpulseOnSubmerged() { return { this, "APrimalDinoCharacter.bFlyerDontGainImpulseOnSubmerged" }; } BitFieldValue bUseBPCanAutodrag() { return { this, "APrimalDinoCharacter.bUseBPCanAutodrag" }; } BitFieldValue bUseBPCanDragCharacter() { return { this, "APrimalDinoCharacter.bUseBPCanDragCharacter" }; } @@ -4768,6 +6345,8 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bUseLocalSpaceDesiredRotationWithRider() { return { this, "APrimalDinoCharacter.bUseLocalSpaceDesiredRotationWithRider" }; } BitFieldValue bUseBPDesiredRotationIsLocalSpace() { return { this, "APrimalDinoCharacter.bUseBPDesiredRotationIsLocalSpace" }; } BitFieldValue bForcedLandingClearRider() { return { this, "APrimalDinoCharacter.bForcedLandingClearRider" }; } + BitFieldValue bUseBPOverrideCameraViewTarget() { return { this, "APrimalDinoCharacter.bUseBPOverrideCameraViewTarget" }; } + BitFieldValue bIsRobot() { return { this, "APrimalDinoCharacter.bIsRobot" }; } BitFieldValue bUseBP_CustomModifier_RotationRate() { return { this, "APrimalDinoCharacter.bUseBP_CustomModifier_RotationRate" }; } BitFieldValue bUseBP_CustomModifier_MaxSpeed() { return { this, "APrimalDinoCharacter.bUseBP_CustomModifier_MaxSpeed" }; } BitFieldValue bUseBP_OnStartLandingNotify() { return { this, "APrimalDinoCharacter.bUseBP_OnStartLandingNotify" }; } @@ -4794,12 +6373,48 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bCheckBPAllowClaiming() { return { this, "APrimalDinoCharacter.bCheckBPAllowClaiming" }; } BitFieldValue bUseBlueprintExtraBabyScale() { return { this, "APrimalDinoCharacter.bUseBlueprintExtraBabyScale" }; } BitFieldValue bPreventNeuter() { return { this, "APrimalDinoCharacter.bPreventNeuter" }; } + BitFieldValue bUseBPGetDragSocketName() { return { this, "APrimalDinoCharacter.bUseBPGetDragSocketName" }; } BitFieldValue bUseBPGetDragSocketDinoName() { return { this, "APrimalDinoCharacter.bUseBPGetDragSocketDinoName" }; } + BitFieldValue bUseBPGetLookOffsetSocketName() { return { this, "APrimalDinoCharacter.bUseBPGetLookOffsetSocketName" }; } BitFieldValue bTargetEverythingIncludingSameTeamInPVE() { return { this, "APrimalDinoCharacter.bTargetEverythingIncludingSameTeamInPVE" }; } BitFieldValue bForceUsePhysicalFootSurfaceTrace() { return { this, "APrimalDinoCharacter.bForceUsePhysicalFootSurfaceTrace" }; } BitFieldValue bUseBP_OnPostNetReplication() { return { this, "APrimalDinoCharacter.bUseBP_OnPostNetReplication" }; } BitFieldValue bPassiveFlee() { return { this, "APrimalDinoCharacter.bPassiveFlee" }; } + BitFieldValue bDidAllowTickingTickingThisFrame() { return { this, "APrimalDinoCharacter.bDidAllowTickingTickingThisFrame" }; } BitFieldValue bOnlyTargetConscious() { return { this, "APrimalDinoCharacter.bOnlyTargetConscious" }; } + BitFieldValue bBPManagedFPVViewLocationNoRider() { return { this, "APrimalDinoCharacter.bBPManagedFPVViewLocationNoRider" }; } + BitFieldValue bHideSaddleInFPV() { return { this, "APrimalDinoCharacter.bHideSaddleInFPV" }; } + BitFieldValue bPreventCloning() { return { this, "APrimalDinoCharacter.bPreventCloning" }; } + BitFieldValue bPreventStasisOnDedi() { return { this, "APrimalDinoCharacter.bPreventStasisOnDedi" }; } + BitFieldValue bAlwaysCheckForFloor() { return { this, "APrimalDinoCharacter.bAlwaysCheckForFloor" }; } + BitFieldValue bAlwaysCheckForFalling() { return { this, "APrimalDinoCharacter.bAlwaysCheckForFalling" }; } + BitFieldValue bForceAllowCarryWaterDinos() { return { this, "APrimalDinoCharacter.bForceAllowCarryWaterDinos" }; } + BitFieldValue bUseBP_AllowWalkableSlopeOverride() { return { this, "APrimalDinoCharacter.bUseBP_AllowWalkableSlopeOverride" }; } + BitFieldValue bUseBP_CanFly() { return { this, "APrimalDinoCharacter.bUseBP_CanFly" }; } + BitFieldValue bUseBP_OverrideBasedCharactersCameraInterpSpeed() { return { this, "APrimalDinoCharacter.bUseBP_OverrideBasedCharactersCameraInterpSpeed" }; } + BitFieldValue bUseBPOverrideFloatingHUDLocation() { return { this, "APrimalDinoCharacter.bUseBPOverrideFloatingHUDLocation" }; } + BitFieldValue bInterceptPlayerEmotes() { return { this, "APrimalDinoCharacter.bInterceptPlayerEmotes" }; } + BitFieldValue bUseBP_ShouldPreventBasedCharactersCameraInterpolation() { return { this, "APrimalDinoCharacter.bUseBP_ShouldPreventBasedCharactersCameraInterpolation" }; } + BitFieldValue bRidingIsSeperateUnstasisCaster() { return { this, "APrimalDinoCharacter.bRidingIsSeperateUnstasisCaster" }; } + BitFieldValue bIsOceanManagerDino() { return { this, "APrimalDinoCharacter.bIsOceanManagerDino" }; } + BitFieldValue DisableCameraShakes() { return { this, "APrimalDinoCharacter.DisableCameraShakes" }; } + BitFieldValue bUseBP_OverrideCarriedCharacterTransform() { return { this, "APrimalDinoCharacter.bUseBP_OverrideCarriedCharacterTransform" }; } + BitFieldValue bUseBP_OnBasedPawnNotifies() { return { this, "APrimalDinoCharacter.bUseBP_OnBasedPawnNotifies" }; } + BitFieldValue bUsesWaterWalking() { return { this, "APrimalDinoCharacter.bUsesWaterWalking" }; } + BitFieldValue bHasInvisiableSaddle() { return { this, "APrimalDinoCharacter.bHasInvisiableSaddle" }; } + BitFieldValue bUseWildDinoMapMultipliers() { return { this, "APrimalDinoCharacter.bUseWildDinoMapMultipliers" }; } + BitFieldValue bIgnoreFlierRidingRestrictions() { return { this, "APrimalDinoCharacter.bIgnoreFlierRidingRestrictions" }; } + BitFieldValue bRotatingUpdatesDinoIK() { return { this, "APrimalDinoCharacter.bRotatingUpdatesDinoIK" }; } + BitFieldValue bUseBP_OverrideRiderCameraCollisionSweep() { return { this, "APrimalDinoCharacter.bUseBP_OverrideRiderCameraCollisionSweep" }; } + BitFieldValue bDrawHealthBar() { return { this, "APrimalDinoCharacter.bDrawHealthBar" }; } + BitFieldValue bUseShoulderMountedLaunch() { return { this, "APrimalDinoCharacter.bUseShoulderMountedLaunch" }; } + BitFieldValue bUsePreciseLaunching() { return { this, "APrimalDinoCharacter.bUsePreciseLaunching" }; } + BitFieldValue bDidSetupTamed() { return { this, "APrimalDinoCharacter.bDidSetupTamed" }; } + BitFieldValue bIncrementedNumDinos() { return { this, "APrimalDinoCharacter.bIncrementedNumDinos" }; } + BitFieldValue bAllowInvalidTameVersion() { return { this, "APrimalDinoCharacter.bAllowInvalidTameVersion" }; } + BitFieldValue bForceAllowPvECarry() { return { this, "APrimalDinoCharacter.bForceAllowPvECarry" }; } + BitFieldValue bUnderwaterMating() { return { this, "APrimalDinoCharacter.bUnderwaterMating" }; } + BitFieldValue bBabyPreventExitingWater() { return { this, "APrimalDinoCharacter.bBabyPreventExitingWater" }; } BitFieldValue bUseBPOnMountStateChanged() { return { this, "APrimalDinoCharacter.bUseBPOnMountStateChanged" }; } BitFieldValue bHandleUseButtonPressBP() { return { this, "APrimalDinoCharacter.bHandleUseButtonPressBP" }; } BitFieldValue bGlideWhenFalling() { return { this, "APrimalDinoCharacter.bGlideWhenFalling" }; } @@ -4826,92 +6441,128 @@ struct APrimalDinoCharacter : APrimalCharacter BitFieldValue bSuppressDeathNotification() { return { this, "APrimalDinoCharacter.bSuppressDeathNotification" }; } BitFieldValue bUseCustomHealthBarColor() { return { this, "APrimalDinoCharacter.bUseCustomHealthBarColor" }; } BitFieldValue bUseOnUpdateMountedDinoMeshHiding() { return { this, "APrimalDinoCharacter.bUseOnUpdateMountedDinoMeshHiding" }; } + BitFieldValue bUseBPInterceptTurnInputEvents() { return { this, "APrimalDinoCharacter.bUseBPInterceptTurnInputEvents" }; } BitFieldValue bUseBPInterceptMoveInputEvents() { return { this, "APrimalDinoCharacter.bUseBPInterceptMoveInputEvents" }; } BitFieldValue bUseBPAdjustAttackIndex() { return { this, "APrimalDinoCharacter.bUseBPAdjustAttackIndex" }; } BitFieldValue bCheckBPAllowCarryCharacter() { return { this, "APrimalDinoCharacter.bCheckBPAllowCarryCharacter" }; } BitFieldValue bUseBPOnEndCharging() { return { this, "APrimalDinoCharacter.bUseBPOnEndCharging" }; } BitFieldValue bUseBPNotifyMateBoostChanged() { return { this, "APrimalDinoCharacter.bUseBPNotifyMateBoostChanged" }; } + BitFieldValue bForceAllowBackwardsMovementWithNoRider() { return { this, "APrimalDinoCharacter.bForceAllowBackwardsMovementWithNoRider" }; } + BitFieldValue bIsCorrupted() { return { this, "APrimalDinoCharacter.bIsCorrupted" }; } + BitFieldValue bIsHordeDino() { return { this, "APrimalDinoCharacter.bIsHordeDino" }; } + BitFieldValue bBPOverrideHealthBarOffset() { return { this, "APrimalDinoCharacter.bBPOverrideHealthBarOffset" }; } + BitFieldValue bDropWildEggsWithoutMateBoost() { return { this, "APrimalDinoCharacter.bDropWildEggsWithoutMateBoost" }; } + BitFieldValue bIsTemporaryMissionDino() { return { this, "APrimalDinoCharacter.bIsTemporaryMissionDino" }; } + BitFieldValue bForcePreventInventoryAccess() { return { this, "APrimalDinoCharacter.bForcePreventInventoryAccess" }; } + BitFieldValue bAllowWildRunningWithoutTarget() { return { this, "APrimalDinoCharacter.bAllowWildRunningWithoutTarget" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalDinoCharacter.GetPrivateStaticClass"); } + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalDinoCharacter.GetPrivateStaticClass"); } + static UClass * StaticClass() { return NativeCall(nullptr, "APrimalDinoCharacter.StaticClass"); } + UObject * GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalDinoCharacter.GetUObjectInterfaceDataListEntryInterface"); } + void OnDinoStartled(UAnimMontage * StartledAnimPlayed, bool bFromAIController) { NativeCall(this, "APrimalDinoCharacter.OnDinoStartled", StartledAnimPlayed, bFromAIController); } + float GetXPMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetXPMultiplier"); } + bool IsBossDino() { return NativeCall(this, "APrimalDinoCharacter.IsBossDino"); } + bool UseHighQualityMovement() { return NativeCall(this, "APrimalDinoCharacter.UseHighQualityMovement"); } + bool AllowPushOthers() { return NativeCall(this, "APrimalDinoCharacter.AllowPushOthers"); } + FVector * GetActorCenterTraceLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetActorCenterTraceLocation", result); } void CheckAndHandleBasedPlayersBeingPushedThroughWalls() { NativeCall(this, "APrimalDinoCharacter.CheckAndHandleBasedPlayersBeingPushedThroughWalls"); } void Tick(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.Tick", DeltaSeconds); } void PlayHardEndChargingShake_Implementation() { NativeCall(this, "APrimalDinoCharacter.PlayHardEndChargingShake_Implementation"); } - void SetForcedAggro(ITargetableInterface * Targetable, float AggroAmount, float ForcedAggroTime) { NativeCall(this, "APrimalDinoCharacter.SetForcedAggro", Targetable, AggroAmount, ForcedAggroTime); } + void SetForcedAggro(ITargetableInterface * Targetable, float AggroAmount, float ForcedAggroTime) { NativeCall(this, "APrimalDinoCharacter.SetForcedAggro", Targetable, AggroAmount, ForcedAggroTime); } + void BPSetForcedAggro(AActor * TargetableActor, float AggroAmount, float ForcedAggroTime) { NativeCall(this, "APrimalDinoCharacter.BPSetForcedAggro", TargetableActor, AggroAmount, ForcedAggroTime); } float GetAttackRangeOffset() { return NativeCall(this, "APrimalDinoCharacter.GetAttackRangeOffset"); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } void AutoDrag() { NativeCall(this, "APrimalDinoCharacter.AutoDrag"); } - bool CanRide(AShooterCharacter * byPawn, char * bOutHasSaddle, char * bOutCanRideOtherThanSaddle, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.CanRide", byPawn, bOutHasSaddle, bOutCanRideOtherThanSaddle, bDontCheckDistance); } + bool CanRide(AShooterCharacter * byPawn, char* bOutHasSaddle, char* bOutCanRideOtherThanSaddle, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.CanRide", byPawn, bOutHasSaddle, bOutCanRideOtherThanSaddle, bDontCheckDistance); } + bool CanCryo(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.CanCryo", ForPC); } void Stasis() { NativeCall(this, "APrimalDinoCharacter.Stasis"); } void Unstasis() { NativeCall(this, "APrimalDinoCharacter.Unstasis"); } void HandleUnstasised(bool bWasFromHibernation) { NativeCall(this, "APrimalDinoCharacter.HandleUnstasised", bWasFromHibernation); } + bool IsRemoteDino() { return NativeCall(this, "APrimalDinoCharacter.IsRemoteDino"); } + bool IsValidUnStasisCaster() { return NativeCall(this, "APrimalDinoCharacter.IsValidUnStasisCaster"); } void PostInitializeComponents() { NativeCall(this, "APrimalDinoCharacter.PostInitializeComponents"); } + void PostInitProperties() { NativeCall(this, "APrimalDinoCharacter.PostInitProperties"); } void RegisterAllComponents() { NativeCall(this, "APrimalDinoCharacter.RegisterAllComponents"); } int GetRandomBaseLevel() { return NativeCall(this, "APrimalDinoCharacter.GetRandomBaseLevel"); } bool AllowZoneAutoKill() { return NativeCall(this, "APrimalDinoCharacter.AllowZoneAutoKill"); } void StopActiveState(bool bShouldResetAttackIndex) { NativeCall(this, "APrimalDinoCharacter.StopActiveState", bShouldResetAttackIndex); } - bool DoAttack(int AttackIndex, bool bSetCurrentAttack) { return NativeCall(this, "APrimalDinoCharacter.DoAttack", AttackIndex, bSetCurrentAttack); } + bool DoAttack(int AttackIndex, bool bSetCurrentAttack, bool bInterruptCurrentAttack) { return NativeCall(this, "APrimalDinoCharacter.DoAttack", AttackIndex, bSetCurrentAttack, bInterruptCurrentAttack); } + bool CancelCurrentAttack(bool bStopCurrentAttackAnim, float AttackAnimBlendOutTime) { return NativeCall(this, "APrimalDinoCharacter.CancelCurrentAttack", bStopCurrentAttackAnim, AttackAnimBlendOutTime); } void ApplyRidingAttackExtraVelocity() { NativeCall(this, "APrimalDinoCharacter.ApplyRidingAttackExtraVelocity"); } - bool HasReachedDestination(FVector * Goal) { return NativeCall(this, "APrimalDinoCharacter.HasReachedDestination", Goal); } - bool IsDamageOccludedByStructures(AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.IsDamageOccludedByStructures", DamageCauser); } - float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool HasReachedDestination(FVector * Goal) { return NativeCall(this, "APrimalDinoCharacter.HasReachedDestination", Goal); } + bool IsDamageOccludedByStructures(AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.IsDamageOccludedByStructures", DamageCauser); } + bool DisableHarvesting() { return NativeCall(this, "APrimalDinoCharacter.DisableHarvesting"); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } bool CanAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.CanAttack", AttackIndex); } bool IsAttacking() { return NativeCall(this, "APrimalDinoCharacter.IsAttacking"); } - void PlayAttackAnimationOfAnimationArray(int AnimationIndex, TArray attackAnimations) { NativeCall>(this, "APrimalDinoCharacter.PlayAttackAnimationOfAnimationArray", AnimationIndex, attackAnimations); } + void PlayAttackAnimationOfAnimationArray(int AnimationIndex, TArray attackAnimations) { NativeCall>(this, "APrimalDinoCharacter.PlayAttackAnimationOfAnimationArray", AnimationIndex, attackAnimations); } void PlayWeightedAttackAnimation() { NativeCall(this, "APrimalDinoCharacter.PlayWeightedAttackAnimation"); } bool IsCurrentlyPlayingAttackAnimation() { return NativeCall(this, "APrimalDinoCharacter.IsCurrentlyPlayingAttackAnimation"); } - bool AddToMeleeSwingHurtList(AActor * AnActor) { return NativeCall(this, "APrimalDinoCharacter.AddToMeleeSwingHurtList", AnActor); } - bool ShouldDealDamage(AActor * TestActor) { return NativeCall(this, "APrimalDinoCharacter.ShouldDealDamage", TestActor); } - void DealDamage(FHitResult * Impact, FVector * ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "APrimalDinoCharacter.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } - bool CanCarryCharacter(APrimalCharacter * CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.CanCarryCharacter", CanCarryPawn); } - bool AllowCarryCharacter(APrimalCharacter * CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.AllowCarryCharacter", CanCarryPawn); } - bool CarryCharacter(APrimalCharacter * character, bool byPassCanCarryCheck) { return NativeCall(this, "APrimalDinoCharacter.CarryCharacter", character, byPassCanCarryCheck); } + bool IsWakingTame() { return NativeCall(this, "APrimalDinoCharacter.IsWakingTame"); } + void OnDinoCheat(FName CheatName, bool bSetValue, float Value) { NativeCall(this, "APrimalDinoCharacter.OnDinoCheat", CheatName, bSetValue, Value); } + bool AddToMeleeSwingHurtList(AActor * AnActor) { return NativeCall(this, "APrimalDinoCharacter.AddToMeleeSwingHurtList", AnActor); } + bool ShouldDealDamage(AActor * TestActor) { return NativeCall(this, "APrimalDinoCharacter.ShouldDealDamage", TestActor); } + void DealDamage(FHitResult * Impact, FVector * ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "APrimalDinoCharacter.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + bool CanCarryCharacter(APrimalCharacter * CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.CanCarryCharacter", CanCarryPawn); } + bool AllowCarryCharacter(APrimalCharacter * CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.AllowCarryCharacter", CanCarryPawn); } + bool CarryCharacter(APrimalCharacter * character, bool byPassCanCarryCheck) { return NativeCall(this, "APrimalDinoCharacter.CarryCharacter", character, byPassCanCarryCheck); } void ClearCarriedCharacter(bool fromCarriedCharacter, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalDinoCharacter.ClearCarriedCharacter", fromCarriedCharacter, bCancelAnyCarryBuffs); } + void OnRep_bIsCharging() { NativeCall(this, "APrimalDinoCharacter.OnRep_bIsCharging"); } void ClearPassengers() { NativeCall(this, "APrimalDinoCharacter.ClearPassengers"); } - bool AddPassenger(APrimalCharacter * Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos) { return NativeCall(this, "APrimalDinoCharacter.AddPassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos); } - void RemovePassenger(APrimalCharacter * Character, bool bFromCharacter, bool bFromPlayerController) { NativeCall(this, "APrimalDinoCharacter.RemovePassenger", Character, bFromCharacter, bFromPlayerController); } + bool AddPassenger(APrimalCharacter * Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos, bool bSkipLineTrace) { return NativeCall(this, "APrimalDinoCharacter.AddPassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos, bSkipLineTrace); } + void RemovePassenger(APrimalCharacter * Character, bool bFromCharacter, bool bFromPlayerController) { NativeCall(this, "APrimalDinoCharacter.RemovePassenger", Character, bFromCharacter, bFromPlayerController); } bool CheckLocalPassengers() { return NativeCall(this, "APrimalDinoCharacter.CheckLocalPassengers"); } bool IsPassengerSeatAvailable(int PassengerSeatIndex) { return NativeCall(this, "APrimalDinoCharacter.IsPassengerSeatAvailable", PassengerSeatIndex); } - bool CanTakePassenger(APrimalCharacter * Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos) { return NativeCall(this, "APrimalDinoCharacter.CanTakePassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos); } + int GetNumAvailablePassengerSeats(bool bOnlyManualPassengerSeats) { return NativeCall(this, "APrimalDinoCharacter.GetNumAvailablePassengerSeats", bOnlyManualPassengerSeats); } + bool CanTakePassenger(APrimalCharacter * Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos, bool bSkipLineTrace) { return NativeCall(this, "APrimalDinoCharacter.CanTakePassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos, bSkipLineTrace); } int GetNumPassengerSeats(bool bOnlyManualPassengerSeats) { return NativeCall(this, "APrimalDinoCharacter.GetNumPassengerSeats", bOnlyManualPassengerSeats); } - FSaddlePassengerSeatDefinition * GetPassengerSeatDefinition(char SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerSeatDefinition", SeatIndex); } + FSaddlePassengerSeatDefinition * GetPassengerSeatDefinition(char SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerSeatDefinition", SeatIndex); } void OnRep_PassengerPerSeat() { NativeCall(this, "APrimalDinoCharacter.OnRep_PassengerPerSeat"); } + void OnRep_bIsFlying() { NativeCall(this, "APrimalDinoCharacter.OnRep_bIsFlying"); } void ServerToggleCharging_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerToggleCharging_Implementation"); } void StartCharging(bool bForce) { NativeCall(this, "APrimalDinoCharacter.StartCharging", bForce); } void PlayChargingAnim() { NativeCall(this, "APrimalDinoCharacter.PlayChargingAnim"); } void EndCharging(bool bForce) { NativeCall(this, "APrimalDinoCharacter.EndCharging", bForce); } bool AllowHurtAnimation() { return NativeCall(this, "APrimalDinoCharacter.AllowHurtAnimation"); } - void SetRider(AShooterCharacter * aRider) { NativeCall(this, "APrimalDinoCharacter.SetRider", aRider); } + void SetRider(AShooterCharacter * aRider) { NativeCall(this, "APrimalDinoCharacter.SetRider", aRider); } void OnRep_Rider() { NativeCall(this, "APrimalDinoCharacter.OnRep_Rider"); } void OnRep_CarriedCharacter() { NativeCall(this, "APrimalDinoCharacter.OnRep_CarriedCharacter"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalDinoCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "APrimalDinoCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } void ForceUpdateColorSets_Implementation(int ColorRegion, int ColorSet) { NativeCall(this, "APrimalDinoCharacter.ForceUpdateColorSets_Implementation", ColorRegion, ColorSet); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetDescriptiveName", result); } - FString * GetShortName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetShortName", result); } + void MulticastUpdateAllColorSets_Implementation(int Color0, int Color1, int Color2, int Color3, int Color4, int Color5) { NativeCall(this, "APrimalDinoCharacter.MulticastUpdateAllColorSets_Implementation", Color0, Color1, Color2, Color3, Color4, Color5); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetDescriptiveName", result); } + FString * GetShortName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetShortName", result); } + FString * GetCurrentDinoName(FString * result, APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.GetCurrentDinoName", result, ForPC); } void ForceClearRider() { NativeCall(this, "APrimalDinoCharacter.ForceClearRider"); } - void ClearRider(bool FromRider, bool bCancelForceLand, bool SpawnDinoDefaultController, int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ClearRider", FromRider, bCancelForceLand, SpawnDinoDefaultController, OverrideUnboardDirection); } - void ControllerLeavingGame(AShooterPlayerController * theController) { NativeCall(this, "APrimalDinoCharacter.ControllerLeavingGame", theController); } - FString * GetEntryString(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryString", result); } - UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIcon", AssociatedDataObject, bIsEnabled); } - UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } - UObject * GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalDinoCharacter.GetUObjectInterfaceDataListEntryInterface"); } - FString * GetEntryDescription(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryDescription", result); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalDinoCharacter.DrawHUD", HUD); } - bool CanOrder(APrimalCharacter * FromCharacter, bool bBuildingStructures) { return NativeCall(this, "APrimalDinoCharacter.CanOrder", FromCharacter, bBuildingStructures); } - bool TamedProcessOrder(APrimalCharacter * FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor * enemyTarget) { return NativeCall(this, "APrimalDinoCharacter.TamedProcessOrder", FromCharacter, OrderType, bForce, enemyTarget); } + bool CanClearRider() { return NativeCall(this, "APrimalDinoCharacter.CanClearRider"); } + void ClearRider(bool FromRider, bool bCancelForceLand, bool SpawnDinoDefaultController, int OverrideUnboardDirection, bool bForceEvenIfBuffPreventsClear) { NativeCall(this, "APrimalDinoCharacter.ClearRider", FromRider, bCancelForceLand, SpawnDinoDefaultController, OverrideUnboardDirection, bForceEvenIfBuffPreventsClear); } + void ControllerLeavingGame(AShooterPlayerController * theController) { NativeCall(this, "APrimalDinoCharacter.ControllerLeavingGame", theController); } + FString * GetEntryString(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryString", result); } + UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + UObject * GetObjectW() { return NativeCall(this, "APrimalDinoCharacter.GetObjectW"); } + FString * GetEntryDescription(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryDescription", result); } + UTexture * GetDinoEntryIcon() { return NativeCall(this, "APrimalDinoCharacter.GetDinoEntryIcon"); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalDinoCharacter.DrawHUD", HUD); } + bool CanOrder(APrimalCharacter * FromCharacter, bool bBuildingStructures) { return NativeCall(this, "APrimalDinoCharacter.CanOrder", FromCharacter, bBuildingStructures); } + bool TamedProcessOrder(APrimalCharacter * FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor * enemyTarget) { return NativeCall(this, "APrimalDinoCharacter.TamedProcessOrder", FromCharacter, OrderType, bForce, enemyTarget); } void ServerSleepingTick() { NativeCall(this, "APrimalDinoCharacter.ServerSleepingTick"); } - float GetAffinityIncreaseForFoodItem(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetAffinityIncreaseForFoodItem", foodItem); } + float GetAffinityIncreaseForFoodItem(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetAffinityIncreaseForFoodItem", foodItem); } void ServerTamedTick() { NativeCall(this, "APrimalDinoCharacter.ServerTamedTick"); } - UPrimalItem * GetBestInventoryFoodItem(float * FoodIncrease, bool bLookForAffinity, bool bFoodItemRequiresLivePlayerCharacter, UPrimalItem ** foundFoodItem, bool bLookForWorstFood) { return NativeCall(this, "APrimalDinoCharacter.GetBestInventoryFoodItem", FoodIncrease, bLookForAffinity, bFoodItemRequiresLivePlayerCharacter, foundFoodItem, bLookForWorstFood); } - AShooterCharacter * ConsumeInventoryFoodItem(UPrimalItem * foodItem, float * AffinityIncrease, bool bDontDecrementItem, float * FoodIncrease, float FoodAmountMultiplier, bool bConsumeEntireStack) { return NativeCall(this, "APrimalDinoCharacter.ConsumeInventoryFoodItem", foodItem, AffinityIncrease, bDontDecrementItem, FoodIncrease, FoodAmountMultiplier, bConsumeEntireStack); } - AShooterCharacter * FindFirstFoodItemPlayerCharacter() { return NativeCall(this, "APrimalDinoCharacter.FindFirstFoodItemPlayerCharacter"); } - int GetFoodItemEffectivenessMultipliersIndex(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetFoodItemEffectivenessMultipliersIndex", foodItem); } - TSubclassOf * GetFirstAffinityFoodItemClass(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "APrimalDinoCharacter.GetFirstAffinityFoodItemClass", result); } - int GetExtraFoodItemEffectivenessMultipliersIndex(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetExtraFoodItemEffectivenessMultipliersIndex", foodItem); } + UPrimalItem * GetBestInventoryFoodItem(float* FoodIncrease, bool bLookForAffinity, bool bFoodItemRequiresLivePlayerCharacter, UPrimalItem * *foundFoodItem, bool bLookForWorstFood) { return NativeCall(this, "APrimalDinoCharacter.GetBestInventoryFoodItem", FoodIncrease, bLookForAffinity, bFoodItemRequiresLivePlayerCharacter, foundFoodItem, bLookForWorstFood); } + AShooterCharacter * ConsumeInventoryFoodItem(UPrimalItem * foodItem, float* AffinityIncrease, bool bDontDecrementItem, float* FoodIncrease, float FoodAmountMultiplier, bool bConsumeEntireStack) { return NativeCall(this, "APrimalDinoCharacter.ConsumeInventoryFoodItem", foodItem, AffinityIncrease, bDontDecrementItem, FoodIncrease, FoodAmountMultiplier, bConsumeEntireStack); } + AShooterCharacter * FindFirstFoodItemPlayerCharacter() { return NativeCall(this, "APrimalDinoCharacter.FindFirstFoodItemPlayerCharacter"); } + int GetFoodItemEffectivenessMultipliersIndex(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetFoodItemEffectivenessMultipliersIndex", foodItem); } + TSubclassOf * GetFirstAffinityFoodItemClass(TSubclassOf * result) { return NativeCall*, TSubclassOf*>(this, "APrimalDinoCharacter.GetFirstAffinityFoodItemClass", result); } + int GetExtraFoodItemEffectivenessMultipliersIndex(UPrimalItem * foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetExtraFoodItemEffectivenessMultipliersIndex", foodItem); } void ServerClearRider_Implementation(int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ServerClearRider_Implementation", OverrideUnboardDirection); } + void ElevateDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.ElevateDinoBP", Val); } void OnElevateDino(float Val) { NativeCall(this, "APrimalDinoCharacter.OnElevateDino", Val); } + void LowerDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.LowerDinoBP", Val); } void OnLowerDino(float Val) { NativeCall(this, "APrimalDinoCharacter.OnLowerDino", Val); } + void BrakeDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.BrakeDinoBP", Val); } void OnBrake() { NativeCall(this, "APrimalDinoCharacter.OnBrake"); } void OffBrake() { NativeCall(this, "APrimalDinoCharacter.OffBrake"); } void ServerRequestBraking_Implementation(bool bWantsToBrake) { NativeCall(this, "APrimalDinoCharacter.ServerRequestBraking_Implementation", bWantsToBrake); } @@ -4920,294 +6571,534 @@ struct APrimalDinoCharacter : APrimalCharacter void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalDinoCharacter.OnStartTargeting", bFromGamepadLeft); } void OnControllerInitiatedAttack(int AttackIndex) { NativeCall(this, "APrimalDinoCharacter.OnControllerInitiatedAttack", AttackIndex); } void UpdateAttackTargets() { NativeCall(this, "APrimalDinoCharacter.UpdateAttackTargets"); } - void ServerUpdateAttackTargets_Implementation(AActor * AttackTarget, FVector AttackLocation) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateAttackTargets_Implementation", AttackTarget, AttackLocation); } - void GetAttackTargets(AActor ** attackActor, FVector * attackLoc) { NativeCall(this, "APrimalDinoCharacter.GetAttackTargets", attackActor, attackLoc); } + bool IsMovementTethered() { return NativeCall(this, "APrimalDinoCharacter.IsMovementTethered"); } + FVector * GetTargetPathfindingLocation(FVector * result, AActor * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetTargetPathfindingLocation", result, Attacker); } + float GetApproachRadius() { return NativeCall(this, "APrimalDinoCharacter.GetApproachRadius"); } + FVector * GetTargetingLocation(FVector * result, AActor * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetTargetingLocation", result, Attacker); } + bool GetClosestTargetOverride(FVector * attackPos, FVector * targetPos) { return NativeCall(this, "APrimalDinoCharacter.GetClosestTargetOverride", attackPos, targetPos); } + void ExportDino(APlayerController * ForPC) { NativeCall(this, "APrimalDinoCharacter.ExportDino", ForPC); } + void ServerUpdateAttackTargets_Implementation(AActor * AttackTarget, FVector AttackLocation) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateAttackTargets_Implementation", AttackTarget, AttackLocation); } + void GetAttackTargets(AActor * *attackActor, FVector * attackLoc) { NativeCall(this, "APrimalDinoCharacter.GetAttackTargets", attackActor, attackLoc); } void ServerRequestAttack_Implementation(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.ServerRequestAttack_Implementation", attackIndex); } void OnPrimalCharacterSleeped() { NativeCall(this, "APrimalDinoCharacter.OnPrimalCharacterSleeped"); } void UnPossessed() { NativeCall(this, "APrimalDinoCharacter.UnPossessed"); } - FRotator * ProcessRootRotAndLoc(FRotator * result, float DeltaTime, FVector * RootLocOffset, FRotator * RootRotOffset, float * RootYawSpeed, float MaxYawAimClamp, float CurrentAimBlending, FRotator * TargetAimRot, float * RootRot) { return NativeCall(this, "APrimalDinoCharacter.ProcessRootRotAndLoc", result, DeltaTime, RootLocOffset, RootRotOffset, RootYawSpeed, MaxYawAimClamp, CurrentAimBlending, TargetAimRot, RootRot); } - FRotator * GetAimOffsets(FRotator * result, float DeltaTime, FRotator * RootRotOffset, float * RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } - FRotator * GetAimOffsetsTransform(FRotator * result, float DeltaTime, FTransform * RootRotOffsetTransform, float * RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsetsTransform", result, DeltaTime, RootRotOffsetTransform, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FRotator * ProcessRootRotAndLoc(FRotator * result, float DeltaTime, FVector * RootLocOffset, FRotator * RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, float CurrentAimBlending, FRotator * TargetAimRot, float* RootRot) { return NativeCall(this, "APrimalDinoCharacter.ProcessRootRotAndLoc", result, DeltaTime, RootLocOffset, RootRotOffset, RootYawSpeed, MaxYawAimClamp, CurrentAimBlending, TargetAimRot, RootRot); } + FRotator * GetAimOffsets(FRotator * result, float DeltaTime, FRotator * RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FRotator * GetAimOffsetsTransform(FRotator * result, float DeltaTime, FTransform * RootRotOffsetTransform, float* RootYawSpeed, float MaxYawAimClamp, FVector * RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsetsTransform", result, DeltaTime, RootRotOffsetTransform, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FRotator * GetCurrentAimOffsetsRotation(FRotator * result) { return NativeCall(this, "APrimalDinoCharacter.GetCurrentAimOffsetsRotation", result); } + float GetRootYawSpeed(float DeltaTime) { return NativeCall(this, "APrimalDinoCharacter.GetRootYawSpeed", DeltaTime); } void TempDampenInputAcceleration() { NativeCall(this, "APrimalDinoCharacter.TempDampenInputAcceleration"); } - bool ModifyInputAcceleration(FVector * InputAcceleration) { return NativeCall(this, "APrimalDinoCharacter.ModifyInputAcceleration", InputAcceleration); } + bool ModifyInputAcceleration(FVector * InputAcceleration) { return NativeCall(this, "APrimalDinoCharacter.ModifyInputAcceleration", InputAcceleration); } float GetMaxSpeedModifier() { return NativeCall(this, "APrimalDinoCharacter.GetMaxSpeedModifier"); } + bool IsInTekShield() { return NativeCall(this, "APrimalDinoCharacter.IsInTekShield"); } float GetSpeedModifier() { return NativeCall(this, "APrimalDinoCharacter.GetSpeedModifier"); } + TArray * GetDinoPlatformCollisionIgnoreActors(TArray * result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetDinoPlatformCollisionIgnoreActors", result); } float GetRotationRateModifier() { return NativeCall(this, "APrimalDinoCharacter.GetRotationRateModifier"); } bool IsFleeing() { return NativeCall(this, "APrimalDinoCharacter.IsFleeing"); } void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "APrimalDinoCharacter.FaceRotation", NewControlRotation, DeltaTime, bFromController); } void MoveForward(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveForward", Val); } void MoveRight(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveRight", Val); } void MoveUp(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveUp", Val); } + void TurnInput(float Val) { NativeCall(this, "APrimalDinoCharacter.TurnInput", Val); } void SetCurrentAttackIndex(char index) { NativeCall(this, "APrimalDinoCharacter.SetCurrentAttackIndex", index); } - char GetWiegthedAttack(float distance, float attackRangeOffset, AActor * OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.GetWiegthedAttack", distance, attackRangeOffset, OtherTarget); } + void ResetCurrentAttackIndex() { NativeCall(this, "APrimalDinoCharacter.ResetCurrentAttackIndex"); } + int BPGetCurrentAttackIndex() { return NativeCall(this, "APrimalDinoCharacter.BPGetCurrentAttackIndex"); } + bool GetCurrentAttackInfo(int* AttackIndex, FDinoAttackInfo * AttackInfo) { return NativeCall(this, "APrimalDinoCharacter.GetCurrentAttackInfo", AttackIndex, AttackInfo); } + bool BPHasCurrentAttack() { return NativeCall(this, "APrimalDinoCharacter.BPHasCurrentAttack"); } + char GetWiegthedAttack(float distance, float attackRangeOffset, AActor * OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.GetWiegthedAttack", distance, attackRangeOffset, OtherTarget); } void FireProjectileLocal(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectileLocal", Origin, ShootDir, bScaleProjDamageByDinoDamage); } + void DinoFireProjectileEx_Implementation(TSubclassOf ProjectileClass, FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage, bool bAddDinoVelocityToProjectile, float OverrideInitialSpeed, float OverrideMaxSpeed, float ExtraDirectDamageMultiplier, float ExtraExplosionDamageMultiplier, bool spawnOnOwningClient) { NativeCall, FVector, FVector_NetQuantizeNormal, bool, bool, float, float, float, float, bool>(this, "APrimalDinoCharacter.DinoFireProjectileEx_Implementation", ProjectileClass, Origin, ShootDir, bScaleProjDamageByDinoDamage, bAddDinoVelocityToProjectile, OverrideInitialSpeed, OverrideMaxSpeed, ExtraDirectDamageMultiplier, ExtraExplosionDamageMultiplier, spawnOnOwningClient); } + void FireMultipleProjectilesEx_Implementation(TSubclassOf ProjectileClass, TArray * Locations, TArray * Directions, bool bAddPawnVelocityToProjectile, bool bScaleProjDamageByDinoDamage, USceneComponent * HomingTarget, FVector HomingTargetOffset, float OverrideInitialSpeed) { NativeCall, TArray*, TArray*, bool, bool, USceneComponent*, FVector, float>(this, "APrimalDinoCharacter.FireMultipleProjectilesEx_Implementation", ProjectileClass, Locations, Directions, bAddPawnVelocityToProjectile, bScaleProjDamageByDinoDamage, HomingTarget, HomingTargetOffset, OverrideInitialSpeed); } void FireProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectile_Implementation", Origin, ShootDir, bScaleProjDamageByDinoDamage); } - void ServerToClientsPlayAttackAnimation_Implementation(char AttackinfoIndex, char AnimationIndex, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, AActor * MyTarget) { NativeCall(this, "APrimalDinoCharacter.ServerToClientsPlayAttackAnimation_Implementation", AttackinfoIndex, AnimationIndex, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, MyTarget); } + void ServerToClientsPlayAttackAnimation_Implementation(char AttackinfoIndex, char AnimationIndex, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, AActor * MyTarget) { NativeCall(this, "APrimalDinoCharacter.ServerToClientsPlayAttackAnimation_Implementation", AttackinfoIndex, AnimationIndex, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, MyTarget); } + bool IsCurrentAttackStopsMovement() { return NativeCall(this, "APrimalDinoCharacter.IsCurrentAttackStopsMovement"); } void ServerRequestToggleFlight_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerRequestToggleFlight_Implementation"); } void CalcCapsuleHalfHeight() { NativeCall(this, "APrimalDinoCharacter.CalcCapsuleHalfHeight"); } void ClientStartLanding_Implementation(FVector loc) { NativeCall(this, "APrimalDinoCharacter.ClientStartLanding_Implementation", loc); } void StartLanding(FVector OverrideLandingLocation) { NativeCall(this, "APrimalDinoCharacter.StartLanding", OverrideLandingLocation); } + bool IsLandingOnDino(FVector * loc) { return NativeCall(this, "APrimalDinoCharacter.IsLandingOnDino", loc); } void ServerInterruptLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerInterruptLanding_Implementation"); } void InterruptLanding() { NativeCall(this, "APrimalDinoCharacter.InterruptLanding"); } void ClientInterruptLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ClientInterruptLanding_Implementation"); } void ServerFinishedLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerFinishedLanding_Implementation"); } void FinishedLanding() { NativeCall(this, "APrimalDinoCharacter.FinishedLanding"); } void ClientShouldNotifyLanded_Implementation() { NativeCall(this, "APrimalDinoCharacter.ClientShouldNotifyLanded_Implementation"); } - FVector * GetLandingLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetLandingLocation", result); } + FVector * GetLandingLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetLandingLocation", result); } + bool CanFly() { return NativeCall(this, "APrimalDinoCharacter.CanFly"); } + bool HasBuffPreventingFlight() { return NativeCall(this, "APrimalDinoCharacter.HasBuffPreventingFlight"); } + bool HasBuffPreventingClearRiderOnDinoImmobilized() { return NativeCall(this, "APrimalDinoCharacter.HasBuffPreventingClearRiderOnDinoImmobilized"); } void SetFlight(bool bFly, bool bCancelForceLand) { NativeCall(this, "APrimalDinoCharacter.SetFlight", bFly, bCancelForceLand); } + void KeepFlight(float ForDuration) { NativeCall(this, "APrimalDinoCharacter.KeepFlight", ForDuration); } void KeepFlightTimer() { NativeCall(this, "APrimalDinoCharacter.KeepFlightTimer"); } void DidLand() { NativeCall(this, "APrimalDinoCharacter.DidLand"); } void AddFlyerTakeOffImpulse() { NativeCall(this, "APrimalDinoCharacter.AddFlyerTakeOffImpulse"); } void OnStartJump() { NativeCall(this, "APrimalDinoCharacter.OnStartJump"); } + void OnStopJump() { NativeCall(this, "APrimalDinoCharacter.OnStopJump"); } void ServerRequestWaterSurfaceJump_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerRequestWaterSurfaceJump_Implementation"); } - bool IsUpdatingComponentTransforms(USceneComponent * InSceneComponent) { return NativeCall(this, "APrimalDinoCharacter.IsUpdatingComponentTransforms", InSceneComponent); } + bool IsUpdatingComponentTransforms(USceneComponent * InSceneComponent) { return NativeCall(this, "APrimalDinoCharacter.IsUpdatingComponentTransforms", InSceneComponent); } bool UseLowQualityMovementTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityMovementTick"); } bool UseLowQualityAnimationTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityAnimationTick"); } bool UseLowQualityBehaviorTreeTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityBehaviorTreeTick"); } - bool CanTame(AShooterPlayerController * ForPC, bool bIgnoreMaxTamedDinos) { return NativeCall(this, "APrimalDinoCharacter.CanTame", ForPC, bIgnoreMaxTamedDinos); } + void UpdateNetDynamicMusic() { NativeCall(this, "APrimalDinoCharacter.UpdateNetDynamicMusic"); } + bool CanTame(AShooterPlayerController * ForPC, bool bIgnoreMaxTamedDinos) { return NativeCall(this, "APrimalDinoCharacter.CanTame", ForPC, bIgnoreMaxTamedDinos); } void SetupTamed(bool bWasJustTamed) { NativeCall(this, "APrimalDinoCharacter.SetupTamed", bWasJustTamed); } - void TameDino(AShooterPlayerController * ForPC, bool bIgnoreMaxTameLimit, int OverrideTamingTeamID) { NativeCall(this, "APrimalDinoCharacter.TameDino", ForPC, bIgnoreMaxTameLimit, OverrideTamingTeamID); } + void TameDino(AShooterPlayerController * ForPC, bool bIgnoreMaxTameLimit, int OverrideTamingTeamID, bool bPreventNameDialog, bool bSkipAddingTamedLevels, bool bSuppressNotifications) { NativeCall(this, "APrimalDinoCharacter.TameDino", ForPC, bIgnoreMaxTameLimit, OverrideTamingTeamID, bPreventNameDialog, bSkipAddingTamedLevels, bSuppressNotifications); } void SetCharacterStatusTameable(bool bSetTameable, bool bCreateInventory, bool keepInventoryForWakingTame) { NativeCall(this, "APrimalDinoCharacter.SetCharacterStatusTameable", bSetTameable, bCreateInventory, keepInventoryForWakingTame); } void OnPrimalCharacterUnsleeped() { NativeCall(this, "APrimalDinoCharacter.OnPrimalCharacterUnsleeped"); } bool IsValidForStatusUpdate() { return NativeCall(this, "APrimalDinoCharacter.IsValidForStatusUpdate"); } - AActor * GetOtherActorToIgnore() { return NativeCall(this, "APrimalDinoCharacter.GetOtherActorToIgnore"); } + AActor * GetOtherActorToIgnore() { return NativeCall(this, "APrimalDinoCharacter.GetOtherActorToIgnore"); } long double GetForceClaimTime() { return NativeCall(this, "APrimalDinoCharacter.GetForceClaimTime"); } void UnclaimDino(bool bDestroyAI) { NativeCall(this, "APrimalDinoCharacter.UnclaimDino", bDestroyAI); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalDinoCharacter.TryMultiUse", ForPC, UseIndex); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalDinoCharacter.TryMultiUse", ForPC, UseIndex); } bool SetTurretMode_Implementation(bool enabled) { return NativeCall(this, "APrimalDinoCharacter.SetTurretMode_Implementation", enabled); } void SetTurretModeMovementRestrictions(bool enabled) { NativeCall(this, "APrimalDinoCharacter.SetTurretModeMovementRestrictions", enabled); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalDinoCharacter.ClientMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalDinoCharacter.ClientMultiUse", ForPC, UseIndex); } void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalDinoCharacter.ChangeActorTeam", NewTeam); } - void LinkedSupplyCrateDestroyed(APrimalStructureItemContainer_SupplyCrate * aCrate) { NativeCall(this, "APrimalDinoCharacter.LinkedSupplyCrateDestroyed", aCrate); } - bool AllowNewEggAtLocation(FVector * AtLocation) { return NativeCall(this, "APrimalDinoCharacter.AllowNewEggAtLocation", AtLocation); } + void LinkedSupplyCrateDestroyed(APrimalStructureItemContainer_SupplyCrate * aCrate) { NativeCall(this, "APrimalDinoCharacter.LinkedSupplyCrateDestroyed", aCrate); } + bool AllowNewEggAtLocation(FVector * AtLocation) { return NativeCall(this, "APrimalDinoCharacter.AllowNewEggAtLocation", AtLocation); } void SpawnEgg() { NativeCall(this, "APrimalDinoCharacter.SpawnEgg"); } float GetRunningSpeedModifier(bool bIsForDefaultSpeed) { return NativeCall(this, "APrimalDinoCharacter.GetRunningSpeedModifier", bIsForDefaultSpeed); } void BeginPlay() { NativeCall(this, "APrimalDinoCharacter.BeginPlay"); } void ForceRefreshTransform() { NativeCall(this, "APrimalDinoCharacter.ForceRefreshTransform"); } + void FlyerCheck() { NativeCall(this, "APrimalDinoCharacter.FlyerCheck"); } void AutoTame() { NativeCall(this, "APrimalDinoCharacter.AutoTame"); } void SetupColorization() { NativeCall(this, "APrimalDinoCharacter.SetupColorization"); } - void RefreshColorization() { NativeCall(this, "APrimalDinoCharacter.RefreshColorization"); } - bool CanTarget(ITargetableInterface * Victim) { return NativeCall(this, "APrimalDinoCharacter.CanTarget", Victim); } + void AssertColorNames() { NativeCall(this, "APrimalDinoCharacter.AssertColorNames"); } + void ReassertColorization() { NativeCall(this, "APrimalDinoCharacter.ReassertColorization"); } + TArray * GetColorizationData(TArray * result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetColorizationData", result); } + void SetColorizationData(TArray * ColorData) { NativeCall*>(this, "APrimalDinoCharacter.SetColorizationData", ColorData); } + void ModifyFirstPersonCameraLocation(FVector * Loc, float DeltaTime) { NativeCall(this, "APrimalDinoCharacter.ModifyFirstPersonCameraLocation", Loc, DeltaTime); } + void ServerRequestUseItemWithActor(APlayerController * ForPC, UObject * anItem, int AdditionalData) { NativeCall(this, "APrimalDinoCharacter.ServerRequestUseItemWithActor", ForPC, anItem, AdditionalData); } + void RefreshColorization(bool bForceRefresh) { NativeCall(this, "APrimalDinoCharacter.RefreshColorization", bForceRefresh); } + bool CanTarget(ITargetableInterface * Victim) { return NativeCall(this, "APrimalDinoCharacter.CanTarget", Victim); } int GetOriginalTargetingTeam() { return NativeCall(this, "APrimalDinoCharacter.GetOriginalTargetingTeam"); } - float GetTargetingDesirability(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetTargetingDesirability", Attacker); } + float GetTargetingDesirability(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetTargetingDesirability", Attacker); } bool ShouldReplicateRotPitch() { return NativeCall(this, "APrimalDinoCharacter.ShouldReplicateRotPitch"); } - void NetUpdateDinoNameStrings_Implementation(FString * NewTamerString, FString * NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings_Implementation", NewTamerString, NewTamedName); } - void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool checkedBox) { NativeCall(this, "APrimalDinoCharacter.ProcessEditText", ForPC, TextToUse, checkedBox); } - static APrimalDinoCharacter * FindDinoWithID(UWorld * aWorld, unsigned int DinoID1, unsigned int DinoID2) { return NativeCall(nullptr, "APrimalDinoCharacter.FindDinoWithID", aWorld, DinoID1, DinoID2); } + void NetUpdateDinoNameStrings_Implementation(FString * NewTamerString, FString * NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings_Implementation", NewTamerString, NewTamedName); } + void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool checkedBox) { NativeCall(this, "APrimalDinoCharacter.ProcessEditText", ForPC, TextToUse, checkedBox); } + static APrimalDinoCharacter * FindDinoWithID(UWorld * aWorld, unsigned int DinoID1, unsigned int DinoID2) { return NativeCall(nullptr, "APrimalDinoCharacter.FindDinoWithID", aWorld, DinoID1, DinoID2); } void TargetingTeamChanged() { NativeCall(this, "APrimalDinoCharacter.TargetingTeamChanged"); } void Destroyed() { NativeCall(this, "APrimalDinoCharacter.Destroyed"); } - void DrawFloatingHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalDinoCharacter.DrawFloatingHUD", HUD); } - void DrawDinoFloatingHUD(AShooterHUD * HUD, bool bDrawDinoOrderIcon) { NativeCall(this, "APrimalDinoCharacter.DrawDinoFloatingHUD", HUD, bDrawDinoOrderIcon); } - bool IsNearFeed(AShooterPlayerState * ForPlayer) { return NativeCall(this, "APrimalDinoCharacter.IsNearFeed", ForPlayer); } + void DrawFloatingHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalDinoCharacter.DrawFloatingHUD", HUD); } + void DrawDinoFloatingHUD(AShooterHUD * HUD, bool bDrawDinoOrderIcon) { NativeCall(this, "APrimalDinoCharacter.DrawDinoFloatingHUD", HUD, bDrawDinoOrderIcon); } + bool IsNearFeed(AShooterPlayerState * ForPlayer) { return NativeCall(this, "APrimalDinoCharacter.IsNearFeed", ForPlayer); } void DeathHarvestingFadeOut_Implementation() { NativeCall(this, "APrimalDinoCharacter.DeathHarvestingFadeOut_Implementation"); } - void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemAdded", anItem, bEquipItem); } - FString * GetDinoDescriptiveName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetDinoDescriptiveName", result); } + void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemAdded", anItem, bEquipItem); } + FString * GetDinoDescriptiveName(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetDinoDescriptiveName", result); } + TArray * GetDetailedDescription(TArray * result, FString * IndentPrefix) { return NativeCall*, TArray*, FString*>(this, "APrimalDinoCharacter.GetDetailedDescription", result, IndentPrefix); } void ServerGiveDefaultWeapon_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerGiveDefaultWeapon_Implementation"); } void ServerCallFollow_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallFollow_Implementation"); } - void ServerCallFollowOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } + void ServerCallFollowOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } void ServerCallStay_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallStay_Implementation"); } - void ServerCallStayOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallStayOne_Implementation", ForDinoChar); } - void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } + void ServerCallStayOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallStayOne_Implementation", ForDinoChar); } + void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } + void ServerCallLandFlyerOne_Implementation(APrimalDinoCharacter * ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallLandFlyerOne_Implementation", ForDinoChar); } void ServerCallAggressive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallAggressive_Implementation"); } void ServerCallSetAggressive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallSetAggressive_Implementation"); } void ServerCallNeutral_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallNeutral_Implementation"); } void ServerCallPassive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallPassive_Implementation"); } - void ServerCallAttackTarget_Implementation(AActor * TheTarget) { NativeCall(this, "APrimalDinoCharacter.ServerCallAttackTarget_Implementation", TheTarget); } + void ServerCallAttackTarget_Implementation(AActor * TheTarget) { NativeCall(this, "APrimalDinoCharacter.ServerCallAttackTarget_Implementation", TheTarget); } void ServerCallMoveTo_Implementation(FVector MoveToLoc) { NativeCall(this, "APrimalDinoCharacter.ServerCallMoveTo_Implementation", MoveToLoc); } - void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemRemoved", anItem); } + void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemRemoved", anItem); } float GetCorpseLifespan() { return NativeCall(this, "APrimalDinoCharacter.GetCorpseLifespan"); } void UpdateMateBoost() { NativeCall(this, "APrimalDinoCharacter.UpdateMateBoost"); } - void AdjustDamage(float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void AdjustDamage(float* Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } void SpawnDefaultController() { NativeCall(this, "APrimalDinoCharacter.SpawnDefaultController"); } - bool AllowFallDamage() { return NativeCall(this, "APrimalDinoCharacter.AllowFallDamage"); } - void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + bool AllowFallDamage(FHitResult * HitResult, float FallDamageAmount, bool CustomFallDamage) { return NativeCall(this, "APrimalDinoCharacter.AllowFallDamage", HitResult, FallDamageAmount, CustomFallDamage); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } void UpdateIK() { NativeCall(this, "APrimalDinoCharacter.UpdateIK"); } bool AllowIKFreeze() { return NativeCall(this, "APrimalDinoCharacter.AllowIKFreeze"); } void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "APrimalDinoCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } - bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } - bool AllowPenetrationCheck(AActor * OtherActor) { return NativeCall(this, "APrimalDinoCharacter.AllowPenetrationCheck", OtherActor); } - bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalDinoCharacter.PreventCharacterBasing", OtherActor, BasedOnComponent); } + bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + bool AllowPenetrationCheck(AActor * OtherActor) { return NativeCall(this, "APrimalDinoCharacter.AllowPenetrationCheck", OtherActor); } + bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalDinoCharacter.PreventCharacterBasing", OtherActor, BasedOnComponent); } + bool IsBasedOnActor(AActor * Other) { return NativeCall(this, "APrimalDinoCharacter.IsBasedOnActor", Other); } void LoadedFromSaveGame() { NativeCall(this, "APrimalDinoCharacter.LoadedFromSaveGame"); } float GetCorpseTargetingMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetCorpseTargetingMultiplier"); } void UpdateStatusComponent(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.UpdateStatusComponent", DeltaSeconds); } + void CaptureCharacterSnapshot(UPrimalItem * Item) { NativeCall(this, "APrimalDinoCharacter.CaptureCharacterSnapshot", Item); } + void ApplyCharacterSnapshot(UPrimalItem * Item, AActor * To, FVector Offset, float MaxExtent, int Pose) { NativeCall(this, "APrimalDinoCharacter.ApplyCharacterSnapshot", Item, To, Offset, MaxExtent, Pose); } void TamedDinoUnstasisConsumeFood(long double ForceTimeSinceStasis) { NativeCall(this, "APrimalDinoCharacter.TamedDinoUnstasisConsumeFood", ForceTimeSinceStasis); } - AActor * GetTamedFollowTarget() { return NativeCall(this, "APrimalDinoCharacter.GetTamedFollowTarget"); } - void DinoKillerTransferItemsToInventory(UPrimalInventoryComponent * FromInventory) { NativeCall(this, "APrimalDinoCharacter.DinoKillerTransferItemsToInventory", FromInventory); } + AActor * GetTamedFollowTarget() { return NativeCall(this, "APrimalDinoCharacter.GetTamedFollowTarget"); } + AActor * GetTamedLandTarget() { return NativeCall(this, "APrimalDinoCharacter.GetTamedLandTarget"); } + void ClearTamedLandTarget() { NativeCall(this, "APrimalDinoCharacter.ClearTamedLandTarget"); } + void DinoKillerTransferItemsToInventory(UPrimalInventoryComponent * FromInventory) { NativeCall(this, "APrimalDinoCharacter.DinoKillerTransferItemsToInventory", FromInventory); } bool FlyingUseHighQualityCollision() { return NativeCall(this, "APrimalDinoCharacter.FlyingUseHighQualityCollision"); } - bool AllowWalkableSlopeOverride() { return NativeCall(this, "APrimalDinoCharacter.AllowWalkableSlopeOverride"); } + bool AllowWalkableSlopeOverride(UPrimitiveComponent * ForComponent) { return NativeCall(this, "APrimalDinoCharacter.AllowWalkableSlopeOverride", ForComponent); } float GetCarryingSocketYaw(bool RefreshBones) { return NativeCall(this, "APrimalDinoCharacter.GetCarryingSocketYaw", RefreshBones); } - void GetRidingCarryingIgnoreList(TArray * IgnoreList) { NativeCall *>(this, "APrimalDinoCharacter.GetRidingCarryingIgnoreList", IgnoreList); } - void SetCarryingDino(APrimalDinoCharacter * aDino) { NativeCall(this, "APrimalDinoCharacter.SetCarryingDino", aDino); } + void GetRidingCarryingIgnoreList(TArray * IgnoreList) { NativeCall*>(this, "APrimalDinoCharacter.GetRidingCarryingIgnoreList", IgnoreList); } + void SetCarryingDino(APrimalDinoCharacter * aDino) { NativeCall(this, "APrimalDinoCharacter.SetCarryingDino", aDino); } void ClearCarryingDino(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalDinoCharacter.ClearCarryingDino", bFromDino, bCancelAnyCarryBuffs); } void UpdateCarriedLocationAndRotation(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.UpdateCarriedLocationAndRotation", DeltaSeconds); } - bool CanBeCarried(APrimalCharacter * ByCarrier) { return NativeCall(this, "APrimalDinoCharacter.CanBeCarried", ByCarrier); } - void SetMountCharacter(APrimalCharacter * aCharacter) { NativeCall(this, "APrimalDinoCharacter.SetMountCharacter", aCharacter); } + bool CanBeCarried(APrimalCharacter * ByCarrier) { return NativeCall(this, "APrimalDinoCharacter.CanBeCarried", ByCarrier); } + bool CanBeBaseForCharacter(APawn * Pawn) { return NativeCall(this, "APrimalDinoCharacter.CanBeBaseForCharacter", Pawn); } + void SetMountCharacter(APrimalCharacter * aCharacter) { NativeCall(this, "APrimalDinoCharacter.SetMountCharacter", aCharacter); } void StartForceSkelUpdate(float ForTime, bool bForceUpdateMesh, bool bServerOnly) { NativeCall(this, "APrimalDinoCharacter.StartForceSkelUpdate", ForTime, bForceUpdateMesh, bServerOnly); } void ClearMountCharacter(bool bFromMountCharacter) { NativeCall(this, "APrimalDinoCharacter.ClearMountCharacter", bFromMountCharacter); } - bool CanMount(APrimalCharacter * aCharacter) { return NativeCall(this, "APrimalDinoCharacter.CanMount", aCharacter); } - static APrimalDinoCharacter * SpawnDino(UWorld * World, TSubclassOf DinoClass, FVector SpawnLoc, FRotator SpawnRot, float LevelMultiplier, int ExtraLevelOffset, bool AddLevelOffsetBeforeMultiplier, bool bOverrideBaseNPCLevel, int BaseLevelOverrideValue, bool bNPCDontWander, float NPCAIRangeMultiplier, int NPCAbsoluteBaseLevel, bool bSpawnWithoutCapsuleOffset) { return NativeCall, FVector, FRotator, float, int, bool, bool, int, bool, float, int, bool>(nullptr, "APrimalDinoCharacter.SpawnDino", World, DinoClass, SpawnLoc, SpawnRot, LevelMultiplier, ExtraLevelOffset, AddLevelOffsetBeforeMultiplier, bOverrideBaseNPCLevel, BaseLevelOverrideValue, bNPCDontWander, NPCAIRangeMultiplier, NPCAbsoluteBaseLevel, bSpawnWithoutCapsuleOffset); } - void InitDownloadedTamedDino(AShooterPlayerController * TamerController, int AltTeam) { NativeCall(this, "APrimalDinoCharacter.InitDownloadedTamedDino", TamerController, AltTeam); } - void NetUpdateDinoOwnerData_Implementation(FString * NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData_Implementation", NewOwningPlayerName, NewOwningPlayerID); } - bool RemoteInventoryAllowViewing(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.RemoteInventoryAllowViewing", ForPC); } + bool CanMount(APrimalCharacter * aCharacter) { return NativeCall(this, "APrimalDinoCharacter.CanMount", aCharacter); } + static APrimalDinoCharacter * SpawnDino(UWorld * World, TSubclassOf DinoClass, FVector SpawnLoc, FRotator SpawnRot, float LevelMultiplier, int ExtraLevelOffset, bool AddLevelOffsetBeforeMultiplier, bool bOverrideBaseNPCLevel, int BaseLevelOverrideValue, bool bNPCDontWander, float NPCAIRangeMultiplier, int NPCAbsoluteBaseLevel, bool bSpawnWithoutCapsuleOffset) { return NativeCall, FVector, FRotator, float, int, bool, bool, int, bool, float, int, bool>(nullptr, "APrimalDinoCharacter.SpawnDino", World, DinoClass, SpawnLoc, SpawnRot, LevelMultiplier, ExtraLevelOffset, AddLevelOffsetBeforeMultiplier, bOverrideBaseNPCLevel, BaseLevelOverrideValue, bNPCDontWander, NPCAIRangeMultiplier, NPCAbsoluteBaseLevel, bSpawnWithoutCapsuleOffset); } + void UpdateNextAllowedMatingTime(long double fromTime) { NativeCall(this, "APrimalDinoCharacter.UpdateNextAllowedMatingTime", fromTime); } + void SetNextAllowedMatingTime(long double nextAllowedMatingTime) { NativeCall(this, "APrimalDinoCharacter.SetNextAllowedMatingTime", nextAllowedMatingTime); } + void InitDownloadedTamedDino(AShooterPlayerController * TamerController, int AltTeam) { NativeCall(this, "APrimalDinoCharacter.InitDownloadedTamedDino", TamerController, AltTeam); } + void NetUpdateDinoOwnerData_Implementation(FString * NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData_Implementation", NewOwningPlayerName, NewOwningPlayerID); } + bool RemoteInventoryAllowViewing(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.RemoteInventoryAllowViewing", ForPC); } bool ForceAllowBackwardsMovement() { return NativeCall(this, "APrimalDinoCharacter.ForceAllowBackwardsMovement"); } - bool CanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "APrimalDinoCharacter.CanDragCharacter", Character); } + bool CanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "APrimalDinoCharacter.CanDragCharacter", Character); } bool IsTaming() { return NativeCall(this, "APrimalDinoCharacter.IsTaming"); } void UpdateWakingTame(float DeltaTime) { NativeCall(this, "APrimalDinoCharacter.UpdateWakingTame", DeltaTime); } void FedWakingTameDino_Implementation() { NativeCall(this, "APrimalDinoCharacter.FedWakingTameDino_Implementation"); } - void AddStructure(APrimalStructure * Structure, FVector RelLoc, FRotator RelRot, FName BoneName) { NativeCall(this, "APrimalDinoCharacter.AddStructure", Structure, RelLoc, RelRot, BoneName); } - void RemoveStructure(APrimalStructure * Structure) { NativeCall(this, "APrimalDinoCharacter.RemoveStructure", Structure); } + void AddStructure(APrimalStructure * Structure, FVector RelLoc, FRotator RelRot, FName BoneName) { NativeCall(this, "APrimalDinoCharacter.AddStructure", Structure, RelLoc, RelRot, BoneName); } + void RemoveStructure(APrimalStructure * Structure) { NativeCall(this, "APrimalDinoCharacter.RemoveStructure", Structure); } + void InitializeInvisiableSaddle() { NativeCall(this, "APrimalDinoCharacter.InitializeInvisiableSaddle"); } + int FindSaddleStructure(APrimalStructure * Structure) { return NativeCall(this, "APrimalDinoCharacter.FindSaddleStructure", Structure); } void OnRep_Saddle() { NativeCall(this, "APrimalDinoCharacter.OnRep_Saddle"); } - void ServerUploadCharacter(AShooterPlayerController * UploadedBy) { NativeCall(this, "APrimalDinoCharacter.ServerUploadCharacter", UploadedBy); } + void RemoveSaddleAttachment(FItemNetID Id) { NativeCall(this, "APrimalDinoCharacter.RemoveSaddleAttachment", Id); } + void ServerUploadCharacter(AShooterPlayerController * UploadedBy) { NativeCall(this, "APrimalDinoCharacter.ServerUploadCharacter", UploadedBy); } + UAnimMontage * GetPoopAnimation(bool bForcePoop) { return NativeCall(this, "APrimalDinoCharacter.GetPoopAnimation", bForcePoop); } void EmitPoop() { NativeCall(this, "APrimalDinoCharacter.EmitPoop"); } void CheckForWildAmbientHarvesting() { NativeCall(this, "APrimalDinoCharacter.CheckForWildAmbientHarvesting"); } - void OverrideRandomWanderLocation_Implementation(FVector * originalDestination, FVector * inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation_Implementation", originalDestination, inVec); } + void OverrideRandomWanderLocation_Implementation(FVector * originalDestination, FVector * inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation_Implementation", originalDestination, inVec); } + bool OverrideFinalWanderLocation_Implementation(FVector * outVec) { return NativeCall(this, "APrimalDinoCharacter.OverrideFinalWanderLocation_Implementation", outVec); } + void BPForceReachedDestination() { NativeCall(this, "APrimalDinoCharacter.BPForceReachedDestination"); } bool AllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "APrimalDinoCharacter.AllowEquippingItemType", equipmentType); } + void OnPressProne() { NativeCall(this, "APrimalDinoCharacter.OnPressProne"); } + void OnReleaseProne() { NativeCall(this, "APrimalDinoCharacter.OnReleaseProne"); } void OnPressReload() { NativeCall(this, "APrimalDinoCharacter.OnPressReload"); } void OnPressCrouch() { NativeCall(this, "APrimalDinoCharacter.OnPressCrouch"); } - void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedPawn", BumpedPawn); } - void NotifyBumpedStructure(AActor * BumpedStructure) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedStructure", BumpedStructure); } + void OnReleaseCrouch() { NativeCall(this, "APrimalDinoCharacter.OnReleaseCrouch"); } + void DoDinoCrouch() { NativeCall(this, "APrimalDinoCharacter.DoDinoCrouch"); } + void OnPressCrouchProneToggle() { NativeCall(this, "APrimalDinoCharacter.OnPressCrouchProneToggle"); } + void OnReleaseCrouchProneToggle() { NativeCall(this, "APrimalDinoCharacter.OnReleaseCrouchProneToggle"); } + void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedPawn", BumpedPawn); } + void NotifyBumpedStructure(AActor * BumpedStructure) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedStructure", BumpedStructure); } + void DoDeathHarvestingFadeOut() { NativeCall(this, "APrimalDinoCharacter.DoDeathHarvestingFadeOut"); } void StartRepair() { NativeCall(this, "APrimalDinoCharacter.StartRepair"); } void RepairCheckTimer() { NativeCall(this, "APrimalDinoCharacter.RepairCheckTimer"); } bool InitializeForReplicatedBasing() { return NativeCall(this, "APrimalDinoCharacter.InitializeForReplicatedBasing"); } - void RemoveBasedPawn(AActor * anPawn) { NativeCall(this, "APrimalDinoCharacter.RemoveBasedPawn", anPawn); } + void AddBasedPawn(AActor * anPawn) { NativeCall(this, "APrimalDinoCharacter.AddBasedPawn", anPawn); } + void RemoveBasedPawn(AActor * anPawn) { NativeCall(this, "APrimalDinoCharacter.RemoveBasedPawn", anPawn); } bool AllowMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "APrimalDinoCharacter.AllowMovementMode", NewMovementMode, NewCustomMode); } void OnRep_bBonesHidden() { NativeCall(this, "APrimalDinoCharacter.OnRep_bBonesHidden"); } void SetBabyAge(float TheAge) { NativeCall(this, "APrimalDinoCharacter.SetBabyAge", TheAge); } - void ApplyBoneModifiers(bool bForce) { NativeCall(this, "APrimalDinoCharacter.ApplyBoneModifiers", bForce); } + void ApplyBoneModifiers(bool bForce, bool bForceOnDedicated) { NativeCall(this, "APrimalDinoCharacter.ApplyBoneModifiers", bForce, bForceOnDedicated); } void ApplyGestationBoneModifiers() { NativeCall(this, "APrimalDinoCharacter.ApplyGestationBoneModifiers"); } float GetAttachedSoundPitchMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedSoundPitchMultiplier"); } float GetAttachedSoundVolumeMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedSoundVolumeMultiplier"); } - void Poop(bool bForcePoop) { NativeCall(this, "APrimalDinoCharacter.Poop", bForcePoop); } + bool Poop(bool bForcePoop) { return NativeCall(this, "APrimalDinoCharacter.Poop", bForcePoop); } float GetBaseDragWeight() { return NativeCall(this, "APrimalDinoCharacter.GetBaseDragWeight"); } void ServerUpdateBabyAge(float overrideAgePercent) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateBabyAge", overrideAgePercent); } void ServerUpdateGestation() { NativeCall(this, "APrimalDinoCharacter.ServerUpdateGestation"); } float GetHealthPercentage() { return NativeCall(this, "APrimalDinoCharacter.GetHealthPercentage"); } void UpdateMating() { NativeCall(this, "APrimalDinoCharacter.UpdateMating"); } - void DoMate(APrimalDinoCharacter * WithMate) { NativeCall(this, "APrimalDinoCharacter.DoMate", WithMate); } - ADroppedItem * CreateCloneFertilizedEgg(FVector AtLoc, FRotator AtRot, TSubclassOf DroppedItemTemplateOverride) { return NativeCall>(this, "APrimalDinoCharacter.CreateCloneFertilizedEgg", AtLoc, AtRot, DroppedItemTemplateOverride); } - FVector * GetInterpolatedLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetInterpolatedLocation", result); } - static APrimalDinoCharacter * BPStaticCreateBabyDinoNoAncestors(UWorld * TheWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector *, float, TArray, TArray, float, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDinoNoAncestors", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } - static APrimalDinoCharacter * BPStaticCreateBabyDino(UWorld * TheWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, TArray EggDinoAncestors, TArray EggDinoAncestorsMale, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector *, float, TArray, TArray, float, TArray, TArray, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDino", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, EggDinoAncestors, EggDinoAncestorsMale, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } - static APrimalDinoCharacter * StaticCreateBabyDino(UWorld * theWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, char * EggColorSetIndices, char * EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, TArray * EggDinoAncestors, TArray * EggDinoAncestorsMale, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector *, float, char *, char *, float, int, TArray *, TArray *, int, int>(nullptr, "APrimalDinoCharacter.StaticCreateBabyDino", theWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggDinoAncestors, EggDinoAncestorsMale, EggRandomMutationsFemale, EggRandomMutationsMale); } + void DoMate(APrimalDinoCharacter * WithMate) { NativeCall(this, "APrimalDinoCharacter.DoMate", WithMate); } + ADroppedItem * CreateCloneFertilizedEgg(FVector AtLoc, FRotator AtRot, TSubclassOf DroppedItemTemplateOverride) { return NativeCall>(this, "APrimalDinoCharacter.CreateCloneFertilizedEgg", AtLoc, AtRot, DroppedItemTemplateOverride); } + FVector * GetInterpolatedLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetInterpolatedLocation", result); } + static APrimalDinoCharacter * BPStaticCreateBabyDinoNoAncestors(UWorld * TheWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, TArray, TArray, float, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDinoNoAncestors", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } + static APrimalDinoCharacter * BPStaticCreateBabyDino(UWorld * TheWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, TArray EggDinoAncestors, TArray EggDinoAncestorsMale, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, TArray, TArray, float, TArray, TArray, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDino", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, EggDinoAncestors, EggDinoAncestorsMale, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } + static APrimalDinoCharacter * StaticCreateBabyDino(UWorld * theWorld, TSubclassOf EggDinoClassToSpawn, FVector * theGroundLoc, float actorRotationYaw, char* EggColorSetIndices, char* EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, TArray * EggDinoAncestors, TArray * EggDinoAncestorsMale, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, char*, char*, float, int, TArray*, TArray*, int, int>(nullptr, "APrimalDinoCharacter.StaticCreateBabyDino", theWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggDinoAncestors, EggDinoAncestorsMale, EggRandomMutationsFemale, EggRandomMutationsMale); } + FVector * GetDinoVelocity(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetDinoVelocity", result); } void UpdateGang() { NativeCall(this, "APrimalDinoCharacter.UpdateGang"); } - TSubclassOf * BlueprintOverrideHarvestDamageType_Implementation(TSubclassOf * result, float * OutHarvestDamageMultiplier) { return NativeCall *, TSubclassOf *, float *>(this, "APrimalDinoCharacter.BlueprintOverrideHarvestDamageType_Implementation", result, OutHarvestDamageMultiplier); } + bool WantsPerFrameSkeletalAnimationTicking() { return NativeCall(this, "APrimalDinoCharacter.WantsPerFrameSkeletalAnimationTicking"); } + bool BPIsTamed() { return NativeCall(this, "APrimalDinoCharacter.BPIsTamed"); } + TSubclassOf * BlueprintOverrideHarvestDamageType_Implementation(TSubclassOf * result, float* OutHarvestDamageMultiplier) { return NativeCall*, TSubclassOf*, float*>(this, "APrimalDinoCharacter.BlueprintOverrideHarvestDamageType_Implementation", result, OutHarvestDamageMultiplier); } + bool ShouldForceFlee() { return NativeCall(this, "APrimalDinoCharacter.ShouldForceFlee"); } float GetGravityZScale() { return NativeCall(this, "APrimalDinoCharacter.GetGravityZScale"); } bool ForceAllowAccelerationRotationWhenFalling() { return NativeCall(this, "APrimalDinoCharacter.ForceAllowAccelerationRotationWhenFalling"); } bool ShouldDisableControllerDesiredRotation() { return NativeCall(this, "APrimalDinoCharacter.ShouldDisableControllerDesiredRotation"); } bool AllowExtendedCraftingFunctionality() { return NativeCall(this, "APrimalDinoCharacter.AllowExtendedCraftingFunctionality"); } + void ClearCharacterAIMovement() { NativeCall(this, "APrimalDinoCharacter.ClearCharacterAIMovement"); } void UpdateTribeGroupRanks_Implementation(char NewTribeGroupPetOrderingRank, char NewTribeGroupPetRidingRank) { NativeCall(this, "APrimalDinoCharacter.UpdateTribeGroupRanks_Implementation", NewTribeGroupPetOrderingRank, NewTribeGroupPetRidingRank); } - FVector * GetFloatingHUDLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetFloatingHUDLocation", result); } - void WasPushed(ACharacter * ByOtherCharacter) { NativeCall(this, "APrimalDinoCharacter.WasPushed", ByOtherCharacter); } - void UpdateImprintingDetails_Implementation(FString * NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails_Implementation", NewImprinterName, NewImprinterPlayerDataID); } + FVector * GetFloatingHUDLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.GetFloatingHUDLocation", result); } + void WasPushed(ACharacter * ByOtherCharacter) { NativeCall(this, "APrimalDinoCharacter.WasPushed", ByOtherCharacter); } + float GetAIFollowStoppingDistanceMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAIFollowStoppingDistanceMultiplier"); } + float GetAIFollowStoppingDistanceOffset() { return NativeCall(this, "APrimalDinoCharacter.GetAIFollowStoppingDistanceOffset"); } + FVector * GetSocketLocationTemp(FVector * result, FName SocketName) { return NativeCall(this, "APrimalDinoCharacter.GetSocketLocationTemp", result, SocketName); } + void SetMovementAccelerationVector(FVector fVector) { NativeCall(this, "APrimalDinoCharacter.SetMovementAccelerationVector", fVector); } + bool GetForceTickPose() { return NativeCall(this, "APrimalDinoCharacter.GetForceTickPose"); } + bool PlayedAnimationHasAttack() { return NativeCall(this, "APrimalDinoCharacter.PlayedAnimationHasAttack"); } + bool BPGetAttackOfPlayedAnimation(FDinoAttackInfo * OutAttackInfo) { return NativeCall(this, "APrimalDinoCharacter.BPGetAttackOfPlayedAnimation", OutAttackInfo); } + bool ShouldAttackOfPlayedAnimationStopMovement() { return NativeCall(this, "APrimalDinoCharacter.ShouldAttackOfPlayedAnimationStopMovement"); } + void SetPreventSaving(bool fPreventSaving) { NativeCall(this, "APrimalDinoCharacter.SetPreventSaving", fPreventSaving); } + void SetStasisComponentRadius(float StasisOverrideRadius) { NativeCall(this, "APrimalDinoCharacter.SetStasisComponentRadius", StasisOverrideRadius); } + void UpdateImprintingDetailsForController(AShooterPlayerController * controller) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetailsForController", controller); } + void UpdateImprintingDetails_Implementation(FString * NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails_Implementation", NewImprinterName, NewImprinterPlayerDataID); } void UpdateImprintingQuality_Implementation(float NewImprintingQuality) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingQuality_Implementation", NewImprintingQuality); } void UpdateBabyCuddling_Implementation(long double NewBabyNextCuddleTime, char NewBabyCuddleType, TSubclassOf NewBabyCuddleFood) { NativeCall>(this, "APrimalDinoCharacter.UpdateBabyCuddling_Implementation", NewBabyNextCuddleTime, NewBabyCuddleType, NewBabyCuddleFood); } - TSubclassOf * GetBabyCuddleFood(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "APrimalDinoCharacter.GetBabyCuddleFood", result); } + TSubclassOf * GetBabyCuddleFood(TSubclassOf * result) { return NativeCall*, TSubclassOf*>(this, "APrimalDinoCharacter.GetBabyCuddleFood", result); } void IncrementImprintingQuality() { NativeCall(this, "APrimalDinoCharacter.IncrementImprintingQuality"); } void AddedImprintingQuality_Implementation(float Amount) { NativeCall(this, "APrimalDinoCharacter.AddedImprintingQuality_Implementation", Amount); } - bool AllowWakingTame_Implementation(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame_Implementation", ForPC); } - float GetBaseTargetingDesire(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetBaseTargetingDesire", Attacker); } + bool AllowWakingTame_Implementation(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame_Implementation", ForPC); } + float GetBaseTargetingDesire(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetBaseTargetingDesire", Attacker); } + bool BPAllowEquippingItemType_Implementation(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "APrimalDinoCharacter.BPAllowEquippingItemType_Implementation", equipmentType); } + void UpdateUnstasisFlags() { NativeCall(this, "APrimalDinoCharacter.UpdateUnstasisFlags"); } + void UpdateStasisFlags() { NativeCall(this, "APrimalDinoCharacter.UpdateStasisFlags"); } + bool IsVehicle() { return NativeCall(this, "APrimalDinoCharacter.IsVehicle"); } + void DestroyController() { NativeCall(this, "APrimalDinoCharacter.DestroyController"); } void PostNetReceiveLocationAndRotation() { NativeCall(this, "APrimalDinoCharacter.PostNetReceiveLocationAndRotation"); } void ResetTakingOff() { NativeCall(this, "APrimalDinoCharacter.ResetTakingOff"); } - void FireMultipleProjectiles_Implementation(TArray * Locations, TArray * Directions, bool bScaleProjectileDamageByDinoDamage) { NativeCall *, TArray *, bool>(this, "APrimalDinoCharacter.FireMultipleProjectiles_Implementation", Locations, Directions, bScaleProjectileDamageByDinoDamage); } + void RemoveFromMeleeSwingHurtList(AActor * AnActor) { NativeCall(this, "APrimalDinoCharacter.RemoveFromMeleeSwingHurtList", AnActor); } + void FireMultipleProjectiles_Implementation(TArray * Locations, TArray * Directions, bool bScaleProjectileDamageByDinoDamage) { NativeCall*, TArray*, bool>(this, "APrimalDinoCharacter.FireMultipleProjectiles_Implementation", Locations, Directions, bScaleProjectileDamageByDinoDamage); } + bool IsMissionDino() { return NativeCall(this, "APrimalDinoCharacter.IsMissionDino"); } void CycleAttackWeightsForAttackAtIndex(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.CycleAttackWeightsForAttackAtIndex", attackIndex); } void SetAnimWeightsForAttackAtIndex(int attackIndex, TArray newWeights) { NativeCall>(this, "APrimalDinoCharacter.SetAnimWeightsForAttackAtIndex", attackIndex, newWeights); } - void AddDinoReferenceInLatchingStructure(APrimalStructure * Structure) { NativeCall(this, "APrimalDinoCharacter.AddDinoReferenceInLatchingStructure", Structure); } + AShooterCharacter * BPConsumeInventoryFoodItem(UPrimalItem * foodItem, bool bConsumeEntireStack) { return NativeCall(this, "APrimalDinoCharacter.BPConsumeInventoryFoodItem", foodItem, bConsumeEntireStack); } + void AddDinoReferenceInLatchingStructure(APrimalStructure * Structure) { NativeCall(this, "APrimalDinoCharacter.AddDinoReferenceInLatchingStructure", Structure); } void RemoveDinoReferenceFromLatchingStructure() { NativeCall(this, "APrimalDinoCharacter.RemoveDinoReferenceFromLatchingStructure"); } + bool HasTarget() { return NativeCall(this, "APrimalDinoCharacter.HasTarget"); } + UPrimalItem * GiveSaddle(TSubclassOf SaddleType, float Quality, float MinRandomQuality, bool bAutoEquip) { return NativeCall, float, float, bool>(this, "APrimalDinoCharacter.GiveSaddle", SaddleType, Quality, MinRandomQuality, bAutoEquip); } + UPrimalItem * GiveSaddleFromString(FString * BlueprintPath, float Quality, float MinRandomQuality, bool bAutoEquip) { return NativeCall(this, "APrimalDinoCharacter.GiveSaddleFromString", BlueprintPath, Quality, MinRandomQuality, bAutoEquip); } void StartSurfaceCameraForPassengers(float yaw, float pitch, float roll) { NativeCall(this, "APrimalDinoCharacter.StartSurfaceCameraForPassengers", yaw, pitch, roll); } - TArray * GetPassengers(TArray * result) { return NativeCall *, TArray *>(this, "APrimalDinoCharacter.GetPassengers", result); } - void GetPassengersAndSeatIndexes(TArray * Passengers, TArray * Indexes) { NativeCall *, TArray *>(this, "APrimalDinoCharacter.GetPassengersAndSeatIndexes", Passengers, Indexes); } + void StartSurfaceCameraForPassenger(AShooterCharacter * Passenger, float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "APrimalDinoCharacter.StartSurfaceCameraForPassenger", Passenger, yaw, pitch, roll, bInvertTurnInput); } + TArray * GetPassengers(TArray * result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetPassengers", result); } + void GetPassengersAndSeatIndexes(TArray * Passengers, TArray * Indexes) { NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetPassengersAndSeatIndexes", Passengers, Indexes); } + int GetPassengersSeatIndex(APrimalCharacter * Passenger) { return NativeCall(this, "APrimalDinoCharacter.GetPassengersSeatIndex", Passenger); } bool ShouldIgnoreMoveCombiningOverlap() { return NativeCall(this, "APrimalDinoCharacter.ShouldIgnoreMoveCombiningOverlap"); } bool AllowMountedWeaponry(bool bIgnoreCurrentWeapon, bool bWeaponForcesMountedWeaponry) { return NativeCall(this, "APrimalDinoCharacter.AllowMountedWeaponry", bIgnoreCurrentWeapon, bWeaponForcesMountedWeaponry); } - void ModifyDesiredRotation(FRotator * InDesiredRotation) { NativeCall(this, "APrimalDinoCharacter.ModifyDesiredRotation", InDesiredRotation); } + void ModifyDesiredRotation(FRotator * InDesiredRotation) { NativeCall(this, "APrimalDinoCharacter.ModifyDesiredRotation", InDesiredRotation); } void GiveDeathDossier() { NativeCall(this, "APrimalDinoCharacter.GiveDeathDossier"); } void ServerSetRiderMountedWeaponRotation_Implementation(FRotator InVal) { NativeCall(this, "APrimalDinoCharacter.ServerSetRiderMountedWeaponRotation_Implementation", InVal); } void DoNeuter_Implementation() { NativeCall(this, "APrimalDinoCharacter.DoNeuter_Implementation"); } + float BPModifyHarvestingQuantity_Implementation(float originalQuantity, TSubclassOf resourceSelected) { return NativeCall>(this, "APrimalDinoCharacter.BPModifyHarvestingQuantity_Implementation", originalQuantity, resourceSelected); } + float BPModifyHarvestDamage_Implementation(UPrimalHarvestingComponent * harvestComponent, float inDamage) { return NativeCall(this, "APrimalDinoCharacter.BPModifyHarvestDamage_Implementation", harvestComponent, inDamage); } bool OverrideForcePreventExitingWater() { return NativeCall(this, "APrimalDinoCharacter.OverrideForcePreventExitingWater"); } - APrimalStructureExplosive * GetAttachedExplosive() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedExplosive"); } + APrimalStructureExplosive * GetAttachedExplosive() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedExplosive"); } void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalDinoCharacter.OnStopTargeting", bFromGamepadLeft); } - void SetDynamicMusic(USoundBase * newMusic) { NativeCall(this, "APrimalDinoCharacter.SetDynamicMusic", newMusic); } - FLinearColor * GetDinoColor(FLinearColor * result, int ColorRegionIndex) { return NativeCall(this, "APrimalDinoCharacter.GetDinoColor", result, ColorRegionIndex); } + void SetDynamicMusic(USoundBase * newMusic) { NativeCall(this, "APrimalDinoCharacter.SetDynamicMusic", newMusic); } + FLinearColor * GetDinoColor(FLinearColor * result, int ColorRegionIndex) { return NativeCall(this, "APrimalDinoCharacter.GetDinoColor", result, ColorRegionIndex); } + FLinearColor * GetColorForColorizationRegion(FLinearColor * result, int ColorRegionIndex, int ColorIndexOverride) { return NativeCall(this, "APrimalDinoCharacter.GetColorForColorizationRegion", result, ColorRegionIndex, ColorIndexOverride); } bool SpecialActorWantsPerFrameTicking() { return NativeCall(this, "APrimalDinoCharacter.SpecialActorWantsPerFrameTicking"); } int IsActorTickAllowed() { return NativeCall(this, "APrimalDinoCharacter.IsActorTickAllowed"); } void IncrementNumTamedDinos() { NativeCall(this, "APrimalDinoCharacter.IncrementNumTamedDinos"); } + UAnimMontage * GetDinoLevelUpAnimation_Implementation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoLevelUpAnimation_Implementation"); } bool ShouldStillAllowRequestedMoveAcceleration() { return NativeCall(this, "APrimalDinoCharacter.ShouldStillAllowRequestedMoveAcceleration"); } bool AreSpawnerSublevelsLoaded() { return NativeCall(this, "APrimalDinoCharacter.AreSpawnerSublevelsLoaded"); } - void SetLastMovementDesiredRotation(FRotator * InRotation) { NativeCall(this, "APrimalDinoCharacter.SetLastMovementDesiredRotation", InRotation); } - USoundBase * GetDinoTameSound_Implementation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoTameSound_Implementation"); } + void SetLastMovementDesiredRotation(FRotator * InRotation) { NativeCall(this, "APrimalDinoCharacter.SetLastMovementDesiredRotation", InRotation); } + USoundBase * GetDinoTameSound_Implementation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoTameSound_Implementation"); } bool AllowTickPhysics() { return NativeCall(this, "APrimalDinoCharacter.AllowTickPhysics"); } void CheckForTamedFoodConsumption(int Steps) { NativeCall(this, "APrimalDinoCharacter.CheckForTamedFoodConsumption", Steps); } - bool ShouldIgnoreHitResult(UWorld * InWorld, FHitResult * TestHit, FVector * MovementDirDenormalized) { return NativeCall(this, "APrimalDinoCharacter.ShouldIgnoreHitResult", InWorld, TestHit, MovementDirDenormalized); } - bool WalkingAllowCheckFall(FVector * DeltaWalk) { return NativeCall(this, "APrimalDinoCharacter.WalkingAllowCheckFall", DeltaWalk); } + long double GetDinoDeathTime() { return NativeCall(this, "APrimalDinoCharacter.GetDinoDeathTime"); } + bool ShouldIgnoreHitResult(UWorld * InWorld, FHitResult * TestHit, FVector * MovementDirDenormalized) { return NativeCall(this, "APrimalDinoCharacter.ShouldIgnoreHitResult", InWorld, TestHit, MovementDirDenormalized); } + bool WalkingAllowCheckFloor(FVector * DeltaWalk) { return NativeCall(this, "APrimalDinoCharacter.WalkingAllowCheckFloor", DeltaWalk); } + bool WalkingAllowCheckFall(FVector * DeltaWalk) { return NativeCall(this, "APrimalDinoCharacter.WalkingAllowCheckFall", DeltaWalk); } float GetGestationTimeRemaining() { return NativeCall(this, "APrimalDinoCharacter.GetGestationTimeRemaining"); } int GetTamedDinoCountCost() { return NativeCall(this, "APrimalDinoCharacter.GetTamedDinoCountCost"); } void ClearAllSaddleStructures() { NativeCall(this, "APrimalDinoCharacter.ClearAllSaddleStructures"); } - bool IsReadyToUpload(UWorld * theWorld) { return NativeCall(this, "APrimalDinoCharacter.IsReadyToUpload", theWorld); } - void ImprintOnPlayerTarget(AShooterPlayerController * ForPC, bool bIgnoreMaxTameLimit) { NativeCall(this, "APrimalDinoCharacter.ImprintOnPlayerTarget", ForPC, bIgnoreMaxTameLimit); } - void BPNotifyNameEditText(AShooterPlayerController * ForPC) { NativeCall(this, "APrimalDinoCharacter.BPNotifyNameEditText", ForPC); } - void SetRidingDinoAsPassenger(APrimalDinoCharacter * aDino, FSaddlePassengerSeatDefinition * SeatDefinition) { NativeCall(this, "APrimalDinoCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } + bool IsReadyToUpload(UWorld * theWorld) { return NativeCall(this, "APrimalDinoCharacter.IsReadyToUpload", theWorld); } + void ImprintOnPlayerTarget(AShooterPlayerController * ForPC, bool bIgnoreMaxTameLimit) { NativeCall(this, "APrimalDinoCharacter.ImprintOnPlayerTarget", ForPC, bIgnoreMaxTameLimit); } + bool IsImprintPlayer(AShooterCharacter * ForChar) { return NativeCall(this, "APrimalDinoCharacter.IsImprintPlayer", ForChar); } + void SetImprintPlayer(AShooterCharacter * ForChar) { NativeCall(this, "APrimalDinoCharacter.SetImprintPlayer", ForChar); } + void BPNotifyNameEditText(AShooterPlayerController * ForPC) { NativeCall(this, "APrimalDinoCharacter.BPNotifyNameEditText", ForPC); } + void SetRidingDinoAsPassenger(APrimalDinoCharacter * aDino, FSaddlePassengerSeatDefinition * SeatDefinition) { NativeCall(this, "APrimalDinoCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } void ClearRidingDinoAsPassenger(bool bFromDino) { NativeCall(this, "APrimalDinoCharacter.ClearRidingDinoAsPassenger", bFromDino); } - APrimalCharacter * GetPassengerPerSeat(int SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerPerSeat", SeatIndex); } - void SpawnNewAIController(TSubclassOf NewAIController) { NativeCall>(this, "APrimalDinoCharacter.SpawnNewAIController", NewAIController); } - int GetSeatIndexForPassenger(APrimalCharacter * PassengerChar) { return NativeCall(this, "APrimalDinoCharacter.GetSeatIndexForPassenger", PassengerChar); } - bool IsPrimalCharFriendly(APrimalCharacter * primalChar) { return NativeCall(this, "APrimalDinoCharacter.IsPrimalCharFriendly", primalChar); } + APrimalCharacter * GetPassengerPerSeat(int SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerPerSeat", SeatIndex); } + void SetLastAttackTimeForAttack(int AttackIndex, long double NewTime) { NativeCall(this, "APrimalDinoCharacter.SetLastAttackTimeForAttack", AttackIndex, NewTime); } + int GetSeatIndexForPassenger(APrimalCharacter * PassengerChar) { return NativeCall(this, "APrimalDinoCharacter.GetSeatIndexForPassenger", PassengerChar); } + bool IsPrimalCharFriendly(APrimalCharacter * primalChar) { return NativeCall(this, "APrimalDinoCharacter.IsPrimalCharFriendly", primalChar); } void PrepareForSaving() { NativeCall(this, "APrimalDinoCharacter.PrepareForSaving"); } void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalDinoCharacter.FinalLoadedFromSaveGame"); } void RefreshBabyScaling() { NativeCall(this, "APrimalDinoCharacter.RefreshBabyScaling"); } - float GetXPMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetXPMultiplier"); } - bool UseHighQualityMovement() { return NativeCall(this, "APrimalDinoCharacter.UseHighQualityMovement"); } - bool AllowPushOthers() { return NativeCall(this, "APrimalDinoCharacter.AllowPushOthers"); } - bool IsVehicle() { return NativeCall(this, "APrimalDinoCharacter.IsVehicle"); } + FString * GetDebugInfoString(FString * result) { return NativeCall(this, "APrimalDinoCharacter.GetDebugInfoString", result); } + void GetDinoIDs(int* OutDinoID1, int* OutDinoID2) { NativeCall(this, "APrimalDinoCharacter.GetDinoIDs", OutDinoID1, OutDinoID2); } + void GetDinoIDsAsStrings(FString * OutDinoID1, FString * OutDinoID2) { NativeCall(this, "APrimalDinoCharacter.GetDinoIDsAsStrings", OutDinoID1, OutDinoID2); } + bool IsDeprecated() { return NativeCall(this, "APrimalDinoCharacter.IsDeprecated"); } + void DeferredDeprecationCheck() { NativeCall(this, "APrimalDinoCharacter.DeferredDeprecationCheck"); } + bool IsActiveEventDino() { return NativeCall(this, "APrimalDinoCharacter.IsActiveEventDino"); } + bool GetAllAttachedCharsInternal(TSet,FDefaultSetAllocator> * AttachedChars, APrimalCharacter * OriginalChar, const bool bIncludeBased, const bool bIncludePassengers, const bool bIncludeCarried) { return NativeCall,FDefaultSetAllocator>*, APrimalCharacter*, const bool, const bool, const bool>(this, "APrimalDinoCharacter.GetAllAttachedCharsInternal", AttachedChars, OriginalChar, bIncludeBased, bIncludePassengers, bIncludeCarried); } + bool ShouldForceDedicatedMovementTickEveryFrame() { return NativeCall(this, "APrimalDinoCharacter.ShouldForceDedicatedMovementTickEveryFrame"); } + bool ShouldShowDinoTooltip(AShooterHUD * HUD) { return NativeCall(this, "APrimalDinoCharacter.ShouldShowDinoTooltip", HUD); } + void OverrideBasedCharactersCameraInterpSpeed(APrimalCharacter * ForBasedChar, const float DefaultTPVCameraSpeedInterpMultiplier, const float DefaultTPVOffsetInterpSpeed, float* TPVCameraSpeedInterpMultiplier, float* TPVOffsetInterpSpeed) { NativeCall(this, "APrimalDinoCharacter.OverrideBasedCharactersCameraInterpSpeed", ForBasedChar, DefaultTPVCameraSpeedInterpMultiplier, DefaultTPVOffsetInterpSpeed, TPVCameraSpeedInterpMultiplier, TPVOffsetInterpSpeed); } + bool ShouldDisableBasedCharactersCameraInterpolation(APrimalCharacter * ForBasedChar) { return NativeCall(this, "APrimalDinoCharacter.ShouldDisableBasedCharactersCameraInterpolation", ForBasedChar); } + bool CanDinoAttackTargetsWithoutRider() { return NativeCall(this, "APrimalDinoCharacter.CanDinoAttackTargetsWithoutRider"); } + void ClearControlInputVector() { NativeCall(this, "APrimalDinoCharacter.ClearControlInputVector"); } + void CopyPaintingComponentFrom(APrimalDinoCharacter * Other) { NativeCall(this, "APrimalDinoCharacter.CopyPaintingComponentFrom", Other); } + void PerformanceThrottledTick_Implementation() { NativeCall(this, "APrimalDinoCharacter.PerformanceThrottledTick_Implementation"); } + void OnVersionChange(bool* doDestroy) { NativeCall(this, "APrimalDinoCharacter.OnVersionChange", doDestroy); } + bool BPIsValidUnStasisCaster() { return NativeCall(this, "APrimalDinoCharacter.BPIsValidUnStasisCaster"); } static void StaticRegisterNativesAPrimalDinoCharacter() { NativeCall(nullptr, "APrimalDinoCharacter.StaticRegisterNativesAPrimalDinoCharacter"); } - bool AllowWakingTame(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame", ForPC); } - float BlueprintAdjustOutputDamage(int AttackIndex, float OriginalDamageAmount, AActor * HitActor, TSubclassOf * OutDamageType, float * OutDamageImpulse) { return NativeCall *, float *>(this, "APrimalDinoCharacter.BlueprintAdjustOutputDamage", AttackIndex, OriginalDamageAmount, HitActor, OutDamageType, OutDamageImpulse); } - void BlueprintDrawFloatingHUD(AShooterHUD * HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalDinoCharacter.BlueprintDrawFloatingHUD", HUD, CenterX, CenterY, DrawScale); } + static UClass * GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalDinoCharacter.GetPrivateStaticClass", Package); } + void AddedImprintingQuality(float Amount) { NativeCall(this, "APrimalDinoCharacter.AddedImprintingQuality", Amount); } + bool AllowWakingTame(APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame", ForPC); } + void AnimNotifyMountedDino() { NativeCall(this, "APrimalDinoCharacter.AnimNotifyMountedDino"); } + float BlueprintAdjustOutputDamage(int AttackIndex, float OriginalDamageAmount, AActor * HitActor, TSubclassOf * OutDamageType, float* OutDamageImpulse) { return NativeCall*, float*>(this, "APrimalDinoCharacter.BlueprintAdjustOutputDamage", AttackIndex, OriginalDamageAmount, HitActor, OutDamageType, OutDamageImpulse); } + bool BlueprintCanAttack(int AttackIndex, float distance, float attackRangeOffset, AActor * OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.BlueprintCanAttack", AttackIndex, distance, attackRangeOffset, OtherTarget); } + bool BlueprintCanRiderAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BlueprintCanRiderAttack", AttackIndex); } + void BlueprintDrawFloatingHUD(AShooterHUD * HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalDinoCharacter.BlueprintDrawFloatingHUD", HUD, CenterX, CenterY, DrawScale); } float BlueprintExtraBabyScaling() { return NativeCall(this, "APrimalDinoCharacter.BlueprintExtraBabyScaling"); } - float BlueprintGetAttackWeight(int AttackIndex, float inputWeight, float distance, float attackRangeOffset, AActor * OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.BlueprintGetAttackWeight", AttackIndex, inputWeight, distance, attackRangeOffset, OtherTarget); } + float BlueprintGetAttackWeight(int AttackIndex, float inputWeight, float distance, float attackRangeOffset, AActor * OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.BlueprintGetAttackWeight", AttackIndex, inputWeight, distance, attackRangeOffset, OtherTarget); } + TSubclassOf * BlueprintOverrideHarvestDamageType(TSubclassOf * result, float* OutHarvestDamageMultiplier) { return NativeCall*, TSubclassOf*, float*>(this, "APrimalDinoCharacter.BlueprintOverrideHarvestDamageType", result, OutHarvestDamageMultiplier); } bool BlueprintOverrideWantsToRun(bool bInputWantsToRun) { return NativeCall(this, "APrimalDinoCharacter.BlueprintOverrideWantsToRun", bInputWantsToRun); } - void BlueprintPlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.BlueprintPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void BlueprintPlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalDinoCharacter.BlueprintPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void BlueprintTamedTick() { NativeCall(this, "APrimalDinoCharacter.BlueprintTamedTick"); } + bool BP_AllowWalkableSlopeOverride(UPrimitiveComponent * ForComponent) { return NativeCall(this, "APrimalDinoCharacter.BP_AllowWalkableSlopeOverride", ForComponent); } + bool BP_CanFly() { return NativeCall(this, "APrimalDinoCharacter.BP_CanFly"); } + float BP_GetCustomModifier_MaxSpeed() { return NativeCall(this, "APrimalDinoCharacter.BP_GetCustomModifier_MaxSpeed"); } + float BP_GetCustomModifier_RotationRate() { return NativeCall(this, "APrimalDinoCharacter.BP_GetCustomModifier_RotationRate"); } + bool BP_InterceptMoveForward(float axisValue) { return NativeCall(this, "APrimalDinoCharacter.BP_InterceptMoveForward", axisValue); } + bool BP_InterceptMoveRight(float axisValue) { return NativeCall(this, "APrimalDinoCharacter.BP_InterceptMoveRight", axisValue); } + bool BP_InterceptTurnInput(float axisValue) { return NativeCall(this, "APrimalDinoCharacter.BP_InterceptTurnInput", axisValue); } + void BP_OnBasedPawnAddedNotify(AActor * AddedActor) { NativeCall(this, "APrimalDinoCharacter.BP_OnBasedPawnAddedNotify", AddedActor); } + void BP_OnBasedPawnRemovedNotify(AActor * RemovedActor) { NativeCall(this, "APrimalDinoCharacter.BP_OnBasedPawnRemovedNotify", RemovedActor); } + void BP_OnLandingInterruptedNotify() { NativeCall(this, "APrimalDinoCharacter.BP_OnLandingInterruptedNotify"); } + void BP_OnPostNetReplication(FVector ReplicatedLoc, FRotator ReplicatedRot) { NativeCall(this, "APrimalDinoCharacter.BP_OnPostNetReplication", ReplicatedLoc, ReplicatedRot); } + void BP_OnRiderChangeWeapons(AShooterCharacter * theRider, UPrimalItem * newWeapon) { NativeCall(this, "APrimalDinoCharacter.BP_OnRiderChangeWeapons", theRider, newWeapon); } + void BP_OnStartLandFailed(int ReasonIndex) { NativeCall(this, "APrimalDinoCharacter.BP_OnStartLandFailed", ReasonIndex); } void BP_OnStartLandingNotify() { NativeCall(this, "APrimalDinoCharacter.BP_OnStartLandingNotify"); } - bool BPAllowClaiming(AShooterPlayerController * forPlayer) { return NativeCall(this, "APrimalDinoCharacter.BPAllowClaiming", forPlayer); } - bool BPCanAutodrag(APrimalCharacter * characterToDrag) { return NativeCall(this, "APrimalDinoCharacter.BPCanAutodrag", characterToDrag); } + void BP_OnTamedOrderReceived(APrimalCharacter * FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor * enemyTarget, bool orderNotExecuted) { NativeCall(this, "APrimalDinoCharacter.BP_OnTamedOrderReceived", FromCharacter, OrderType, bForce, enemyTarget, orderNotExecuted); } + void BP_OnTargetedByTamedOrder(APrimalCharacter * OrderingCharacter, APrimalDinoCharacter * AttackingDino, bool bForced) { NativeCall(this, "APrimalDinoCharacter.BP_OnTargetedByTamedOrder", OrderingCharacter, AttackingDino, bForced); } + void BP_OverrideBasedCharactersCameraInterpSpeed(APrimalCharacter * ForBasedChar, const float DefaultTPVCameraSpeedInterpMultiplier, const float DefaultTPVOffsetInterpSpeed, float* TPVCameraSpeedInterpMultiplier, float* TPVOffsetInterpSpeed) { NativeCall(this, "APrimalDinoCharacter.BP_OverrideBasedCharactersCameraInterpSpeed", ForBasedChar, DefaultTPVCameraSpeedInterpMultiplier, DefaultTPVOffsetInterpSpeed, TPVCameraSpeedInterpMultiplier, TPVOffsetInterpSpeed); } + bool BP_OverrideCarriedCharacterTransform(APrimalCharacter * ForCarriedChar) { return NativeCall(this, "APrimalDinoCharacter.BP_OverrideCarriedCharacterTransform", ForCarriedChar); } + FString * BP_OverrideDinoName(FString * result, FString * CurrentDinoName, APlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.BP_OverrideDinoName", result, CurrentDinoName, ForPC); } + FHitResult * BP_OverrideRiderCameraCollisionSweep(FHitResult * result, FVector * SweepStart, FVector * SweepEnd) { return NativeCall(this, "APrimalDinoCharacter.BP_OverrideRiderCameraCollisionSweep", result, SweepStart, SweepEnd); } + bool BP_PreventCarrying() { return NativeCall(this, "APrimalDinoCharacter.BP_PreventCarrying"); } + bool BP_PreventCarryingByCharacter(APrimalCharacter * ByCarrier) { return NativeCall(this, "APrimalDinoCharacter.BP_PreventCarryingByCharacter", ByCarrier); } + bool BP_ShouldDisableBasedCharactersCameraInterpolation(APrimalCharacter * ForBasedChar) { return NativeCall(this, "APrimalDinoCharacter.BP_ShouldDisableBasedCharactersCameraInterpolation", ForBasedChar); } + int BPAdjustAttackIndex(int attackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPAdjustAttackIndex", attackIndex); } + bool BPAllowCarryCharacter(APrimalCharacter * checkCharacter) { return NativeCall(this, "APrimalDinoCharacter.BPAllowCarryCharacter", checkCharacter); } + bool BPAllowClaiming(AShooterPlayerController * forPlayer) { return NativeCall(this, "APrimalDinoCharacter.BPAllowClaiming", forPlayer); } + bool BPAllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "APrimalDinoCharacter.BPAllowEquippingItemType", equipmentType); } + void BPBecomeAdult() { NativeCall(this, "APrimalDinoCharacter.BPBecomeAdult"); } + void BPBecomeBaby() { NativeCall(this, "APrimalDinoCharacter.BPBecomeBaby"); } + bool BPCanAutodrag(APrimalCharacter * characterToDrag) { return NativeCall(this, "APrimalDinoCharacter.BPCanAutodrag", characterToDrag); } + bool BPCanCryo(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalDinoCharacter.BPCanCryo", ForPC); } + bool BPCanDragCharacter(APrimalCharacter * Character) { return NativeCall(this, "APrimalDinoCharacter.BPCanDragCharacter", Character); } + bool BPCanIgnoreImmobilizationTrap(TSubclassOf TrapClass, bool bForceTrigger) { return NativeCall, bool>(this, "APrimalDinoCharacter.BPCanIgnoreImmobilizationTrap", TrapClass, bForceTrigger); } + bool BPCanMountOnCharacter(APrimalCharacter * character) { return NativeCall(this, "APrimalDinoCharacter.BPCanMountOnCharacter", character); } + bool BPCanTakePassenger(APrimalCharacter * Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos) { return NativeCall(this, "APrimalDinoCharacter.BPCanTakePassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos); } bool BPCanTargetCorpse() { return NativeCall(this, "APrimalDinoCharacter.BPCanTargetCorpse"); } + FVector * BPChargingModifyInputAcceleration(FVector * result, FVector inputAcceleration) { return NativeCall(this, "APrimalDinoCharacter.BPChargingModifyInputAcceleration", result, inputAcceleration); } + float BPClampMaxHarvestHealth() { return NativeCall(this, "APrimalDinoCharacter.BPClampMaxHarvestHealth"); } bool BPDesiredRotationIsLocalSpace() { return NativeCall(this, "APrimalDinoCharacter.BPDesiredRotationIsLocalSpace"); } + void BPDidClearCarriedCharacter(APrimalCharacter * PreviousCarriedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPDidClearCarriedCharacter", PreviousCarriedCharacter); } + void BPDidSetCarriedCharacter(APrimalCharacter * PreviousCarriedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPDidSetCarriedCharacter", PreviousCarriedCharacter); } void BPDinoARKDownloadedBegin() { NativeCall(this, "APrimalDinoCharacter.BPDinoARKDownloadedBegin"); } void BPDinoARKDownloadedEnd() { NativeCall(this, "APrimalDinoCharacter.BPDinoARKDownloadedEnd"); } + void BPDinoPostBeginPlay() { NativeCall(this, "APrimalDinoCharacter.BPDinoPostBeginPlay"); } + void BPDinoPrepareForARKUploading() { NativeCall(this, "APrimalDinoCharacter.BPDinoPrepareForARKUploading"); } + bool BPDinoTooltipCustomTamingProgressBar(bool* overrideTamingProgressBarIfActive, float* progressPercent, FString * Label) { return NativeCall(this, "APrimalDinoCharacter.BPDinoTooltipCustomTamingProgressBar", overrideTamingProgressBarIfActive, progressPercent, Label); } + bool BPDinoTooltipCustomTorpidityProgressBar(bool* overrideTorpidityProgressBarIfActive, float* progressPercent, FString * Label) { return NativeCall(this, "APrimalDinoCharacter.BPDinoTooltipCustomTorpidityProgressBar", overrideTorpidityProgressBarIfActive, progressPercent, Label); } + bool BPDisplayTamedMessage() { return NativeCall(this, "APrimalDinoCharacter.BPDisplayTamedMessage"); } + void BPDoAttack(int AttackIndex) { NativeCall(this, "APrimalDinoCharacter.BPDoAttack", AttackIndex); } void BPDoHarvestAttack(int harvestIndex) { NativeCall(this, "APrimalDinoCharacter.BPDoHarvestAttack", harvestIndex); } - void BPFedWakingTameEvent(APlayerController * ForPC) { NativeCall(this, "APrimalDinoCharacter.BPFedWakingTameEvent", ForPC); } - FVector * BPGetHealthBarColor(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.BPGetHealthBarColor", result); } - bool BPHandleUseButtonPress(AShooterPlayerController * RiderController) { return NativeCall(this, "APrimalDinoCharacter.BPHandleUseButtonPress", RiderController); } - bool BPModifyDesiredRotation(FRotator * InDesiredRotation, FRotator * OutDesiredRotation) { return NativeCall(this, "APrimalDinoCharacter.BPModifyDesiredRotation", InDesiredRotation, OutDesiredRotation); } + void BPDrawToRiderHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalDinoCharacter.BPDrawToRiderHUD", HUD); } + void BPFedWakingTameEvent(APlayerController * ForPC) { NativeCall(this, "APrimalDinoCharacter.BPFedWakingTameEvent", ForPC); } + bool BPForceTurretFastTargeting() { return NativeCall(this, "APrimalDinoCharacter.BPForceTurretFastTargeting"); } + float BPGetCrosshairAlpha() { return NativeCall(this, "APrimalDinoCharacter.BPGetCrosshairAlpha"); } + FLinearColor * BPGetCrosshairColor(FLinearColor * result) { return NativeCall(this, "APrimalDinoCharacter.BPGetCrosshairColor", result); } + void BPGetCrosshairLocation(float CanvasClipX, float CanvasClipY, float* OutX, float* OutY) { NativeCall(this, "APrimalDinoCharacter.BPGetCrosshairLocation", CanvasClipX, CanvasClipY, OutX, OutY); } + FName * BPGetDragSocketDinoName(FName * result, APrimalDinoCharacter * aGrabbedDino) { return NativeCall(this, "APrimalDinoCharacter.BPGetDragSocketDinoName", result, aGrabbedDino); } + FName * BPGetDragSocketName(FName * result, APrimalCharacter * DraggingChar) { return NativeCall(this, "APrimalDinoCharacter.BPGetDragSocketName", result, DraggingChar); } + FVector * BPGetHealthBarColor(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.BPGetHealthBarColor", result); } + FName * BPGetLookOffsetSocketName(FName * result, APrimalCharacter * ForPrimalChar) { return NativeCall(this, "APrimalDinoCharacter.BPGetLookOffsetSocketName", result, ForPrimalChar); } + FName * BPGetRiderSocket(FName * result) { return NativeCall(this, "APrimalDinoCharacter.BPGetRiderSocket", result); } + FVector * BPGetRiderUnboardDirection(FVector * result, APrimalCharacter * RidingCharacter) { return NativeCall(this, "APrimalDinoCharacter.BPGetRiderUnboardDirection", result, RidingCharacter); } + FVector * BPGetRiderUnboardLocation(FVector * result, APrimalCharacter * RidingCharacter) { return NativeCall(this, "APrimalDinoCharacter.BPGetRiderUnboardLocation", result, RidingCharacter); } + bool BPHandleControllerInitiatedAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPHandleControllerInitiatedAttack", AttackIndex); } + bool BPHandleOnStopFire() { return NativeCall(this, "APrimalDinoCharacter.BPHandleOnStopFire"); } + bool BPHandleOnStopTargeting() { return NativeCall(this, "APrimalDinoCharacter.BPHandleOnStopTargeting"); } + bool BPHandleUseButtonPress(AShooterPlayerController * RiderController) { return NativeCall(this, "APrimalDinoCharacter.BPHandleUseButtonPress", RiderController); } + bool BPIsBasedOnActor(AActor * Other) { return NativeCall(this, "APrimalDinoCharacter.BPIsBasedOnActor", Other); } + void BPKilledSomethingEvent(APrimalCharacter * killedTarget) { NativeCall(this, "APrimalDinoCharacter.BPKilledSomethingEvent", killedTarget); } + FRotator * BPModifyAimOffsetNoTarget(FRotator * result, FRotator * Aim) { return NativeCall(this, "APrimalDinoCharacter.BPModifyAimOffsetNoTarget", result, Aim); } + FVector * BPModifyAimOffsetTargetLocation(FVector * result, FVector * AimTargetLocation) { return NativeCall(this, "APrimalDinoCharacter.BPModifyAimOffsetTargetLocation", result, AimTargetLocation); } + bool BPModifyDesiredRotation(FRotator * InDesiredRotation, FRotator * OutDesiredRotation) { return NativeCall(this, "APrimalDinoCharacter.BPModifyDesiredRotation", InDesiredRotation, OutDesiredRotation); } float BPModifyHarvestingQuantity(float originalQuantity, TSubclassOf resourceSelected) { return NativeCall>(this, "APrimalDinoCharacter.BPModifyHarvestingQuantity", originalQuantity, resourceSelected); } - void BPModifyHarvestingWeightsArray(TArray * resourceWeightsIn, TArray * resourceItems, TArray * resourceWeightsOut) { NativeCall *, TArray *, TArray *>(this, "APrimalDinoCharacter.BPModifyHarvestingWeightsArray", resourceWeightsIn, resourceItems, resourceWeightsOut); } + void BPModifyHarvestingWeightsArray(TArray * resourceWeightsIn, TArray * resourceItems, TArray * resourceWeightsOut) { NativeCall*, TArray*, TArray*>(this, "APrimalDinoCharacter.BPModifyHarvestingWeightsArray", resourceWeightsIn, resourceItems, resourceWeightsOut); } + void BPNotifyAddPassenger(APrimalCharacter * PassengerChar, int SeatIndex) { NativeCall(this, "APrimalDinoCharacter.BPNotifyAddPassenger", PassengerChar, SeatIndex); } void BPNotifyBabyAgeIncrement(float PreviousAge, float NewAge) { NativeCall(this, "APrimalDinoCharacter.BPNotifyBabyAgeIncrement", PreviousAge, NewAge); } - void BPNotifyCarriedDinoBabyAgeIncrement(APrimalDinoCharacter * AgingCarriedDino, float PreviousAge, float NewAge) { NativeCall(this, "APrimalDinoCharacter.BPNotifyCarriedDinoBabyAgeIncrement", AgingCarriedDino, PreviousAge, NewAge); } + void BPNotifyCarriedDinoBabyAgeIncrement(APrimalDinoCharacter * AgingCarriedDino, float PreviousAge, float NewAge) { NativeCall(this, "APrimalDinoCharacter.BPNotifyCarriedDinoBabyAgeIncrement", AgingCarriedDino, PreviousAge, NewAge); } + void BPNotifyClaimed() { NativeCall(this, "APrimalDinoCharacter.BPNotifyClaimed"); } + void BPNotifyClearPassenger(APrimalCharacter * PassengerChar, int SeatIndex) { NativeCall(this, "APrimalDinoCharacter.BPNotifyClearPassenger", PassengerChar, SeatIndex); } + void BPNotifyClearRider(AShooterCharacter * RiderClearing) { NativeCall(this, "APrimalDinoCharacter.BPNotifyClearRider", RiderClearing); } + void BPNotifyIfPassengerLaunchShoulderMount(APrimalCharacter * launchedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPNotifyIfPassengerLaunchShoulderMount", launchedCharacter); } void BPNotifyMateBoostChanged() { NativeCall(this, "APrimalDinoCharacter.BPNotifyMateBoostChanged"); } - void BPNotifyStructurePlacedNearby(APrimalStructure * NewStructure) { NativeCall(this, "APrimalDinoCharacter.BPNotifyStructurePlacedNearby", NewStructure); } + void BPNotifySetRider(AShooterCharacter * RiderSetting) { NativeCall(this, "APrimalDinoCharacter.BPNotifySetRider", RiderSetting); } + void BPNotifyStructurePlacedNearby(APrimalStructure * NewStructure) { NativeCall(this, "APrimalDinoCharacter.BPNotifyStructurePlacedNearby", NewStructure); } + void BPNotifyWildHarvestAttack(int harvestIndex) { NativeCall(this, "APrimalDinoCharacter.BPNotifyWildHarvestAttack", harvestIndex); } void BPOnClearMountedDino() { NativeCall(this, "APrimalDinoCharacter.BPOnClearMountedDino"); } - bool BPPreventRiding(AShooterCharacter * byPawn, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.BPPreventRiding", byPawn, bDontCheckDistance); } + void BPOnDinoCheat(FName CheatName, bool bSetValue, float Value) { NativeCall(this, "APrimalDinoCharacter.BPOnDinoCheat", CheatName, bSetValue, Value); } + void BPOnDinoStartled(UAnimMontage * StartledAnimPlayed, bool bFromAIController) { NativeCall(this, "APrimalDinoCharacter.BPOnDinoStartled", StartledAnimPlayed, bFromAIController); } + void BPOnEndCharging() { NativeCall(this, "APrimalDinoCharacter.BPOnEndCharging"); } + void BPOnRefreshColorization(TArray * Colors) { NativeCall*>(this, "APrimalDinoCharacter.BPOnRefreshColorization", Colors); } + void BPOnRepIsCharging() { NativeCall(this, "APrimalDinoCharacter.BPOnRepIsCharging"); } + void BPOnSetFlight(bool bFly) { NativeCall(this, "APrimalDinoCharacter.BPOnSetFlight", bFly); } + void BPOnSetMountedDino() { NativeCall(this, "APrimalDinoCharacter.BPOnSetMountedDino"); } + bool BPOnStartJump() { return NativeCall(this, "APrimalDinoCharacter.BPOnStartJump"); } + bool BPOnStopJump() { return NativeCall(this, "APrimalDinoCharacter.BPOnStopJump"); } + void BPOnTamedProcessOrder(APrimalCharacter * FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor * enemyTarget, bool orderNotExecuted) { NativeCall(this, "APrimalDinoCharacter.BPOnTamedProcessOrder", FromCharacter, OrderType, bForce, enemyTarget, orderNotExecuted); } + void BPOrderedMoveToLoc(FVector * DestLoc) { NativeCall(this, "APrimalDinoCharacter.BPOrderedMoveToLoc", DestLoc); } + FVector * BPOverrideFloatingHUDLocation(FVector * result) { return NativeCall(this, "APrimalDinoCharacter.BPOverrideFloatingHUDLocation", result); } + int BPOverrideGetAttackAnimationIndex(int AttackIndex, TArray * AnimationArray) { return NativeCall*>(this, "APrimalDinoCharacter.BPOverrideGetAttackAnimationIndex", AttackIndex, AnimationArray); } + float BPOverrideHealthBarOffset(APlayerController * forPC) { return NativeCall(this, "APrimalDinoCharacter.BPOverrideHealthBarOffset", forPC); } + bool BPOverrideMoveToOrder(FVector MoveToLocation, AShooterCharacter * OrderingPlayer) { return NativeCall(this, "APrimalDinoCharacter.BPOverrideMoveToOrder", MoveToLocation, OrderingPlayer); } + FString * BPOverrideTamingDescriptionLabel(FString * result, FSlateColor * TextColor) { return NativeCall(this, "APrimalDinoCharacter.BPOverrideTamingDescriptionLabel", result, TextColor); } + bool BPPreventOrderAllowed(APrimalCharacter * FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor * enemyTarget, bool orderNotExecuted) { return NativeCall(this, "APrimalDinoCharacter.BPPreventOrderAllowed", FromCharacter, OrderType, bForce, enemyTarget, orderNotExecuted); } + bool BPPreventRiding(AShooterCharacter * byPawn, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.BPPreventRiding", byPawn, bDontCheckDistance); } + void BPSentKilledNotification(AShooterPlayerController * ToPC) { NativeCall(this, "APrimalDinoCharacter.BPSentKilledNotification", ToPC); } + void BPSetupTamed(bool bWasJustTamed) { NativeCall(this, "APrimalDinoCharacter.BPSetupTamed", bWasJustTamed); } + bool BPShouldCancelDoAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPShouldCancelDoAttack", AttackIndex); } + bool BPShouldForceFlee() { return NativeCall(this, "APrimalDinoCharacter.BPShouldForceFlee"); } + bool BPShowTamingPanel(bool currentVisibility) { return NativeCall(this, "APrimalDinoCharacter.BPShowTamingPanel", currentVisibility); } + void BPTamedConsumeFoodItem(UPrimalItem * foodItem) { NativeCall(this, "APrimalDinoCharacter.BPTamedConsumeFoodItem", foodItem); } + void BPUnsetupDinoTameable() { NativeCall(this, "APrimalDinoCharacter.BPUnsetupDinoTameable"); } + float BPUnstasisConsumeFood(float FoodNeeded) { return NativeCall(this, "APrimalDinoCharacter.BPUnstasisConsumeFood", FoodNeeded); } + void BPUntamedConsumeFoodItem(UPrimalItem * foodItem) { NativeCall(this, "APrimalDinoCharacter.BPUntamedConsumeFoodItem", foodItem); } + void BSetupDinoTameable() { NativeCall(this, "APrimalDinoCharacter.BSetupDinoTameable"); } + void ClientInterruptLanding() { NativeCall(this, "APrimalDinoCharacter.ClientInterruptLanding"); } + void ClientShouldNotifyLanded() { NativeCall(this, "APrimalDinoCharacter.ClientShouldNotifyLanded"); } + void ClientStartLanding(FVector landingLoc) { NativeCall(this, "APrimalDinoCharacter.ClientStartLanding", landingLoc); } + void DinoFireProjectileEx(TSubclassOf ProjectileClass, FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage, bool bAddDinoVelocityToProjectile, float OverrideInitialSpeed, float OverrideMaxSpeed, float ExtraDirectDamageMultiplier, float ExtraExplosionDamageMultiplier, bool spawnOnOwningClient) { NativeCall, FVector, FVector_NetQuantizeNormal, bool, bool, float, float, float, float, bool>(this, "APrimalDinoCharacter.DinoFireProjectileEx", ProjectileClass, Origin, ShootDir, bScaleProjDamageByDinoDamage, bAddDinoVelocityToProjectile, OverrideInitialSpeed, OverrideMaxSpeed, ExtraDirectDamageMultiplier, ExtraExplosionDamageMultiplier, spawnOnOwningClient); } + void DinoShoulderMountedLaunch(FVector launchDir, AShooterCharacter * throwingCharacter) { NativeCall(this, "APrimalDinoCharacter.DinoShoulderMountedLaunch", launchDir, throwingCharacter); } + void DoNeuter() { NativeCall(this, "APrimalDinoCharacter.DoNeuter"); } + float DoOverrideMountedAirControl(float AirControlIn) { return NativeCall(this, "APrimalDinoCharacter.DoOverrideMountedAirControl", AirControlIn); } + void FedWakingTameDino() { NativeCall(this, "APrimalDinoCharacter.FedWakingTameDino"); } + void FireMultipleProjectiles(TArray * Locations, TArray * Directions, bool bScaleProjectileDamageByDinoDamage) { NativeCall*, TArray*, bool>(this, "APrimalDinoCharacter.FireMultipleProjectiles", Locations, Directions, bScaleProjectileDamageByDinoDamage); } void FireProjectile(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectile", Origin, ShootDir, bScaleProjDamageByDinoDamage); } + void ForceUpdateColorSets(int ColorRegion, int ColorSet) { NativeCall(this, "APrimalDinoCharacter.ForceUpdateColorSets", ColorRegion, ColorSet); } + UAnimMontage * GetDinoLevelUpAnimation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoLevelUpAnimation"); } + USoundBase * GetDinoTameSound() { return NativeCall(this, "APrimalDinoCharacter.GetDinoTameSound"); } + FName * GetSocketForMeleeTraceForHitBlockers(FName * result, int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.GetSocketForMeleeTraceForHitBlockers", result, AttackIndex); } + void HandleMountedDinoAction(AShooterPlayerController * PC) { NativeCall(this, "APrimalDinoCharacter.HandleMountedDinoAction", PC); } + bool InterceptMountedOnPlayerEmoteAnim(UAnimMontage * EmoteAnim) { return NativeCall(this, "APrimalDinoCharacter.InterceptMountedOnPlayerEmoteAnim", EmoteAnim); } + bool InterceptRiderEmoteAnim(UAnimMontage * EmoteAnim) { return NativeCall(this, "APrimalDinoCharacter.InterceptRiderEmoteAnim", EmoteAnim); } void InterruptLatching() { NativeCall(this, "APrimalDinoCharacter.InterruptLatching"); } - void NetUpdateDinoNameStrings(FString * NewTamerString, FString * NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings", NewTamerString, NewTamedName); } - void NetUpdateDinoOwnerData(FString * NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData", NewOwningPlayerName, NewOwningPlayerID); } - void OverrideRandomWanderLocation(FVector * originalDestination, FVector * inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation", originalDestination, inVec); } + void NetUpdateDinoNameStrings(FString * NewTamerString, FString * NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings", NewTamerString, NewTamedName); } + void NetUpdateDinoOwnerData(FString * NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData", NewOwningPlayerName, NewOwningPlayerID); } + void OnUpdateMountedDinoMeshHiding(bool bshouldBeVisible) { NativeCall(this, "APrimalDinoCharacter.OnUpdateMountedDinoMeshHiding", bshouldBeVisible); } + bool OverrideFinalWanderLocation(FVector * outVec) { return NativeCall(this, "APrimalDinoCharacter.OverrideFinalWanderLocation", outVec); } + void OverrideRandomWanderLocation(FVector * originalDestination, FVector * inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation", originalDestination, inVec); } void PlayHardEndChargingShake() { NativeCall(this, "APrimalDinoCharacter.PlayHardEndChargingShake"); } - void RidingTick() { NativeCall(this, "APrimalDinoCharacter.RidingTick"); } + void RidingTick(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.RidingTick", DeltaSeconds); } void ServerClearRider(int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ServerClearRider", OverrideUnboardDirection); } + void ServerFinishedLanding() { NativeCall(this, "APrimalDinoCharacter.ServerFinishedLanding"); } + void ServerInterruptLanding() { NativeCall(this, "APrimalDinoCharacter.ServerInterruptLanding"); } void ServerRequestAttack(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.ServerRequestAttack", attackIndex); } + void ServerRequestBraking(bool bWantsToBrake) { NativeCall(this, "APrimalDinoCharacter.ServerRequestBraking", bWantsToBrake); } + void ServerRequestToggleFlight() { NativeCall(this, "APrimalDinoCharacter.ServerRequestToggleFlight"); } + void ServerRequestWaterSurfaceJump() { NativeCall(this, "APrimalDinoCharacter.ServerRequestWaterSurfaceJump"); } + void ServerSetRiderMountedWeaponRotation(FRotator InVal) { NativeCall(this, "APrimalDinoCharacter.ServerSetRiderMountedWeaponRotation", InVal); } + void ServerToClientsPlayAttackAnimation(char AttackinfoIndex, char animationIndex, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, AActor * MyTarget) { NativeCall(this, "APrimalDinoCharacter.ServerToClientsPlayAttackAnimation", AttackinfoIndex, animationIndex, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, MyTarget); } + void ServerToggleCharging() { NativeCall(this, "APrimalDinoCharacter.ServerToggleCharging"); } + void ServerUpdateAttackTargets(AActor * AttackTarget, FVector AttackLocation) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateAttackTargets", AttackTarget, AttackLocation); } + bool SetTurretMode(bool enabled) { return NativeCall(this, "APrimalDinoCharacter.SetTurretMode", enabled); } void UpdateBabyCuddling(long double NewBabyNextCuddleTime, char NewBabyCuddleType, TSubclassOf NewBabyCuddleFood) { NativeCall>(this, "APrimalDinoCharacter.UpdateBabyCuddling", NewBabyNextCuddleTime, NewBabyCuddleType, NewBabyCuddleFood); } - void UpdateImprintingDetails(FString * NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails", NewImprinterName, NewImprinterPlayerDataID); } + void UpdateImprintingDetails(FString * NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails", NewImprinterName, NewImprinterPlayerDataID); } void UpdateImprintingQuality(float NewImprintingQuality) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingQuality", NewImprintingQuality); } + void UpdateTribeGroupRanks(char NewTribeGroupPetOrderingRank, char NewTribeGroupPetRidingRank) { NativeCall(this, "APrimalDinoCharacter.UpdateTribeGroupRanks", NewTribeGroupPetOrderingRank, NewTribeGroupPetRidingRank); } + void GetDinoData(FARKDinoData * OutDinoData) { NativeCall(this, "APrimalDinoCharacter.GetDinoData", OutDinoData); } + FString* GetColorSetInidcesAsString(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetColorSetInidcesAsString", result); } + TArray* GetColorSetNamesAsArray(TArray* result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetColorSetNamesAsArray", result); } + static APrimalDinoCharacter* SpawnFromDinoDataEx(FARKDinoData* InDinoData, UWorld* InWorld, FVector* AtLocation, FRotator* AtRotation, bool* dupedDino, int ForTeam, bool bGenerateNewDinoID, AShooterPlayerController* TamerController, bool beginPlay) { return NativeCall(nullptr, "APrimalDinoCharacter.SpawnFromDinoDataEx", InDinoData, InWorld, AtLocation, AtRotation, dupedDino, ForTeam, bGenerateNewDinoID, TamerController, beginPlay); } }; struct AShooterWeapon : AActor { float& EquipTimeField() { return *GetNativePointerField(this, "AShooterWeapon.EquipTime"); } - UAnimMontage * OverrideProneInAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideProneInAnim"); } - UAnimMontage * OverrideProneOutAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideProneOutAnim"); } - UAnimMontage * OverrideJumpAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideJumpAnim"); } - UAnimMontage * OverrideLandedAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideLandedAnim"); } - TArray OverrideRiderAnimSequenceFromField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceFrom"); } - TArray OverrideRiderAnimSequenceToField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceTo"); } + UAnimMontage* OverrideProneInAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideProneInAnim"); } + UAnimMontage* OverrideProneOutAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideProneOutAnim"); } + UAnimMontage* OverrideJumpAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideJumpAnim"); } + UAnimMontage* OverrideLandedAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideLandedAnim"); } + TArray OverrideRiderAnimSequenceFromField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceFrom"); } + TArray OverrideRiderAnimSequenceToField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceTo"); } float& ItemDurabilityToConsumePerMeleeHitField() { return *GetNativePointerField(this, "AShooterWeapon.ItemDurabilityToConsumePerMeleeHit"); } float& AmmoIconsCountField() { return *GetNativePointerField(this, "AShooterWeapon.AmmoIconsCount"); } float& TargetingTooltipCheckRangeField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingTooltipCheckRange"); } @@ -5237,14 +7128,15 @@ struct AShooterWeapon : AActor bool& bUseBlueprintAnimNotificationsField() { return *GetNativePointerField(this, "AShooterWeapon.bUseBlueprintAnimNotifications"); } TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeSwingSockets"); } float& AllowMeleeTimeBeforeAnimationEndField() { return *GetNativePointerField(this, "AShooterWeapon.AllowMeleeTimeBeforeAnimationEnd"); } - UPrimalItem * AssociatedPrimalItemField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedPrimalItem"); } + UPrimalItem* AssociatedPrimalItemField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedPrimalItem"); } + AMissionType* AssociatedMissionField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedMission"); } bool& bCanBeUsedAsEquipmentField() { return *GetNativePointerField(this, "AShooterWeapon.bCanBeUsedAsEquipment"); } FItemNetInfo& AssociatedItemNetInfoField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedItemNetInfo"); } FWeaponData& WeaponConfigField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponConfig"); } TSubclassOf& WeaponAmmoItemTemplateField() { return *GetNativePointerField*>(this, "AShooterWeapon.WeaponAmmoItemTemplate"); } long double& NextAllowedMeleeTimeField() { return *GetNativePointerField(this, "AShooterWeapon.NextAllowedMeleeTime"); } TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "AShooterWeapon.LastSocketPositions"); } - TArray MeleeSwingHurtListField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeSwingHurtList"); } + TArray MeleeSwingHurtListField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeSwingHurtList"); } long double& LastFPVRenderTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastFPVRenderTime"); } FRotator& LastCameraRotationField() { return *GetNativePointerField(this, "AShooterWeapon.LastCameraRotation"); } FRotator& FPVAdditionalLookRotOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVAdditionalLookRotOffset"); } @@ -5252,19 +7144,19 @@ struct AShooterWeapon : AActor FVector& FPVLastVROffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLastVROffset"); } FVector& FPVRelativeLocationOffscreenOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeLocationOffscreenOffset"); } FRotator& FPVLastRotOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLastRotOffset"); } - AShooterCharacter * MyPawnField() { return *GetNativePointerField(this, "AShooterWeapon.MyPawn"); } - UAudioComponent * FireACField() { return *GetNativePointerField(this, "AShooterWeapon.FireAC"); } + AShooterCharacter* MyPawnField() { return *GetNativePointerField(this, "AShooterWeapon.MyPawn"); } + UAudioComponent* FireACField() { return *GetNativePointerField(this, "AShooterWeapon.FireAC"); } FName& MuzzleAttachPointField() { return *GetNativePointerField(this, "AShooterWeapon.MuzzleAttachPoint"); } - USoundCue * FireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireSound"); } - USoundCue * AltFireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.AltFireSound"); } - USoundCue * FireFinishSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireFinishSound"); } - USoundCue * OutOfAmmoSoundField() { return *GetNativePointerField(this, "AShooterWeapon.OutOfAmmoSound"); } + USoundCue* FireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireSound"); } + USoundCue* AltFireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.AltFireSound"); } + USoundCue* FireFinishSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireFinishSound"); } + USoundCue* OutOfAmmoSoundField() { return *GetNativePointerField(this, "AShooterWeapon.OutOfAmmoSound"); } int& MeleeDamageAmountField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeDamageAmount"); } float& TheMeleeSwingRadiusField() { return *GetNativePointerField(this, "AShooterWeapon.TheMeleeSwingRadius"); } float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeDamageImpulse"); } - UAnimMontage * WeaponMesh3PReloadAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PReloadAnim"); } - USoundCue * EquipSoundField() { return *GetNativePointerField(this, "AShooterWeapon.EquipSound"); } - UAnimMontage * WeaponMesh3PFireAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PFireAnim"); } + UAnimMontage* WeaponMesh3PReloadAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PReloadAnim"); } + USoundCue* EquipSoundField() { return *GetNativePointerField(this, "AShooterWeapon.EquipSound"); } + UAnimMontage* WeaponMesh3PFireAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PFireAnim"); } float& FPVMoveOffscreenWhenTurningMaxMoveWeaponSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMaxMoveWeaponSpeed"); } float& FPVMoveOffscreenWhenTurningMinMoveWeaponSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMinMoveWeaponSpeed"); } float& FPVMoveOffscreenWhenTurningMinViewRotSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMinViewRotSpeed"); } @@ -5274,6 +7166,7 @@ struct AShooterWeapon : AActor float& FPVMoveOffscreenWhenTurningMaxOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMaxOffset"); } long double& FPVStoppedTurningTimeField() { return *GetNativePointerField(this, "AShooterWeapon.FPVStoppedTurningTime"); } float& ItemDestructionUnequipWeaponDelayField() { return *GetNativePointerField(this, "AShooterWeapon.ItemDestructionUnequipWeaponDelay"); } + float& WeaponUnequipDelayField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponUnequipDelay"); } EWeaponState::Type& CurrentStateField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentState"); } long double& LastFireTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastFireTime"); } int& CurrentAmmoField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentAmmo"); } @@ -5283,14 +7176,14 @@ struct AShooterWeapon : AActor FName& FPVAccessoryToggleComponentField() { return *GetNativePointerField(this, "AShooterWeapon.FPVAccessoryToggleComponent"); } FName& TPVAccessoryToggleComponentField() { return *GetNativePointerField(this, "AShooterWeapon.TPVAccessoryToggleComponent"); } float& TimeToAutoReloadField() { return *GetNativePointerField(this, "AShooterWeapon.TimeToAutoReload"); } - USoundBase * ToggleAccessorySoundField() { return *GetNativePointerField(this, "AShooterWeapon.ToggleAccessorySound"); } + USoundBase* ToggleAccessorySoundField() { return *GetNativePointerField(this, "AShooterWeapon.ToggleAccessorySound"); } int& FiredLastNoAmmoShotField() { return *GetNativePointerField(this, "AShooterWeapon.FiredLastNoAmmoShot"); } long double& LastNotifyShotTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastNotifyShotTime"); } TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeDamageType"); } FVector& VRTargetingModelOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.VRTargetingModelOffset"); } FVector& VRTargetingAimOriginOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.VRTargetingAimOriginOffset"); } - UMaterialInterface * ScopeOverlayMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeOverlayMI"); } - UMaterialInterface * ScopeCrosshairMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairMI"); } + UMaterialInterface* ScopeOverlayMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeOverlayMI"); } + UMaterialInterface* ScopeCrosshairMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairMI"); } float& ScopeCrosshairSizeField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairSize"); } FName& ScopeCrosshairColorParameterField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairColorParameter"); } float& MinItemDurabilityPercentageForShotField() { return *GetNativePointerField(this, "AShooterWeapon.MinItemDurabilityPercentageForShot"); } @@ -5301,7 +7194,7 @@ struct AShooterWeapon : AActor float& AimDriftPitchAngleField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftPitchAngle"); } float& AimDriftYawFrequencyField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftYawFrequency"); } float& AimDriftPitchFrequencyField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftPitchFrequency"); } - UAnimMontage * AlternateInventoryEquipAnimField() { return *GetNativePointerField(this, "AShooterWeapon.AlternateInventoryEquipAnim"); } + UAnimMontage* AlternateInventoryEquipAnimField() { return *GetNativePointerField(this, "AShooterWeapon.AlternateInventoryEquipAnim"); } float& MeleeHitRandomChanceToDestroyItemField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeHitRandomChanceToDestroyItem"); } float& GlobalFireCameraShakeScaleField() { return *GetNativePointerField(this, "AShooterWeapon.GlobalFireCameraShakeScale"); } float& DurabilityCostToEquipField() { return *GetNativePointerField(this, "AShooterWeapon.DurabilityCostToEquip"); } @@ -5320,13 +7213,14 @@ struct AShooterWeapon : AActor bool& bClientAlreadyReloadedField() { return *GetNativePointerField(this, "AShooterWeapon.bClientAlreadyReloaded"); } float& AutoReloadTimerField() { return *GetNativePointerField(this, "AShooterWeapon.AutoReloadTimer"); } bool& bConsumedDurabilityForThisMeleeHitField() { return *GetNativePointerField(this, "AShooterWeapon.bConsumedDurabilityForThisMeleeHit"); } - USoundCue * TargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingSound"); } - USoundCue * UntargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.UntargetingSound"); } + USoundCue* TargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingSound"); } + USoundCue* UntargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.UntargetingSound"); } float& FPVMeleeTraceFXRangeField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMeleeTraceFXRange"); } + TSubclassOf& MeleeAttackUsableHarvestDamageTypeField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeAttackUsableHarvestDamageType"); } float& MeleeAttackHarvetUsableComponentsRadiusField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeAttackHarvetUsableComponentsRadius"); } float& MeleeAttackUsableHarvestDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeAttackUsableHarvestDamageMultiplier"); } FieldArray bColorizeRegionsField() { return { this, "AShooterWeapon.bColorizeRegions" }; } - UAnimMontage * TPVForcePlayAnimField() { return *GetNativePointerField(this, "AShooterWeapon.TPVForcePlayAnim"); } + UAnimMontage* TPVForcePlayAnimField() { return *GetNativePointerField(this, "AShooterWeapon.TPVForcePlayAnim"); } bool& bPreventOpeningInventoryField() { return *GetNativePointerField(this, "AShooterWeapon.bPreventOpeningInventory"); } bool& bAllowUseOnSeatingStructureField() { return *GetNativePointerField(this, "AShooterWeapon.bAllowUseOnSeatingStructure"); } bool& bOnlyUseOnSeatingStructureField() { return *GetNativePointerField(this, "AShooterWeapon.bOnlyUseOnSeatingStructure"); } @@ -5336,8 +7230,9 @@ struct AShooterWeapon : AActor bool& bFoceSimulatedTickField() { return *GetNativePointerField(this, "AShooterWeapon.bFoceSimulatedTick"); } bool& bWasLastFireFromGamePadField() { return *GetNativePointerField(this, "AShooterWeapon.bWasLastFireFromGamePad"); } bool& bDisableWeaponCrosshairField() { return *GetNativePointerField(this, "AShooterWeapon.bDisableWeaponCrosshair"); } - UStaticMesh * DyePreviewMeshOverrideSMField() { return *GetNativePointerField(this, "AShooterWeapon.DyePreviewMeshOverrideSM"); } + UStaticMesh* DyePreviewMeshOverrideSMField() { return *GetNativePointerField(this, "AShooterWeapon.DyePreviewMeshOverrideSM"); } bool& bBPOverrideAspectRatioField() { return *GetNativePointerField(this, "AShooterWeapon.bBPOverrideAspectRatio"); } + bool& bBPOverrideFPVMasterPoseComponentField() { return *GetNativePointerField(this, "AShooterWeapon.bBPOverrideFPVMasterPoseComponent"); } bool& bForceAllowMountedWeaponryField() { return *GetNativePointerField(this, "AShooterWeapon.bForceAllowMountedWeaponry"); } float& FireCameraShakeSpreadScaleExponentField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleExponent"); } float& FireCameraShakeSpreadScaleExponentLessThanField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleExponentLessThan"); } @@ -5345,10 +7240,11 @@ struct AShooterWeapon : AActor float& FireCameraShakeSpreadScaleMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleMultiplier"); } bool& bUseFireCameraShakeScaleField() { return *GetNativePointerField(this, "AShooterWeapon.bUseFireCameraShakeScale"); } bool& bForceTickWithNoControllerField() { return *GetNativePointerField(this, "AShooterWeapon.bForceTickWithNoController"); } + FInstantWeaponData& InstantConfigField() { return *GetNativePointerField(this, "AShooterWeapon.InstantConfig"); } float& CurrentFiringSpreadField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentFiringSpread"); } TSubclassOf& ScopedBuffField() { return *GetNativePointerField*>(this, "AShooterWeapon.ScopedBuff"); } TWeakObjectPtr& MyScopedBuffField() { return *GetNativePointerField*>(this, "AShooterWeapon.MyScopedBuff"); } - UAnimSequence * OverrideTPVShieldAnimationField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideTPVShieldAnimation"); } + UAnimSequence* OverrideTPVShieldAnimationField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideTPVShieldAnimation"); } bool& bAllowTargetingDuringMeleeSwingField() { return *GetNativePointerField(this, "AShooterWeapon.bAllowTargetingDuringMeleeSwing"); } FVector& FPVMuzzleLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMuzzleLocationOffset"); } FVector& TPVMuzzleLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.TPVMuzzleLocationOffset"); } @@ -5358,6 +7254,7 @@ struct AShooterWeapon : AActor long double& LocalInventoryViewingSkippedEquipAnimTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LocalInventoryViewingSkippedEquipAnimTime"); } float& DraggingOffsetInterpField() { return *GetNativePointerField(this, "AShooterWeapon.DraggingOffsetInterp"); } bool& bForceTPVCameraOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.bForceTPVCameraOffset"); } + bool& bUseBPSpawnMeleeEffectsField() { return *GetNativePointerField(this, "AShooterWeapon.bUseBPSpawnMeleeEffects"); } // Bit fields @@ -5400,6 +7297,7 @@ struct AShooterWeapon : AActor BitFieldValue bTargetUnTargetWithClick() { return { this, "AShooterWeapon.bTargetUnTargetWithClick" }; } BitFieldValue bDontActuallyConsumeItemAmmo() { return { this, "AShooterWeapon.bDontActuallyConsumeItemAmmo" }; } BitFieldValue bBPUseWeaponCanFire() { return { this, "AShooterWeapon.bBPUseWeaponCanFire" }; } + BitFieldValue bBPUseTargetingEvents() { return { this, "AShooterWeapon.bBPUseTargetingEvents" }; } BitFieldValue bIsEquipped() { return { this, "AShooterWeapon.bIsEquipped" }; } BitFieldValue bWantsToFire() { return { this, "AShooterWeapon.bWantsToFire" }; } BitFieldValue bWantsToAltFire() { return { this, "AShooterWeapon.bWantsToAltFire" }; } @@ -5418,8 +7316,10 @@ struct AShooterWeapon : AActor BitFieldValue bUseBPCanToggleAccessory() { return { this, "AShooterWeapon.bUseBPCanToggleAccessory" }; } BitFieldValue bUseBPOnScoped() { return { this, "AShooterWeapon.bUseBPOnScoped" }; } BitFieldValue bIsDefaultWeapon() { return { this, "AShooterWeapon.bIsDefaultWeapon" }; } + BitFieldValue bForceKeepEquippedWhileInInventory() { return { this, "AShooterWeapon.bForceKeepEquippedWhileInInventory" }; } BitFieldValue bOnlyAllowUseWhenRidingDino() { return { this, "AShooterWeapon.bOnlyAllowUseWhenRidingDino" }; } BitFieldValue bPrimaryFireDoesMeleeAttack() { return { this, "AShooterWeapon.bPrimaryFireDoesMeleeAttack" }; } + BitFieldValue bMeleeHitCaptureDermis() { return { this, "AShooterWeapon.bMeleeHitCaptureDermis" }; } BitFieldValue bIsAccessoryActive() { return { this, "AShooterWeapon.bIsAccessoryActive" }; } BitFieldValue bCanAccessoryBeSetOn() { return { this, "AShooterWeapon.bCanAccessoryBeSetOn" }; } BitFieldValue bConsumeAmmoItemOnReload() { return { this, "AShooterWeapon.bConsumeAmmoItemOnReload" }; } @@ -5432,6 +7332,9 @@ struct AShooterWeapon : AActor BitFieldValue bUseBPShouldDealDamage() { return { this, "AShooterWeapon.bUseBPShouldDealDamage" }; } BitFieldValue bDoesntUsePrimalItem() { return { this, "AShooterWeapon.bDoesntUsePrimalItem" }; } BitFieldValue bUseCanAccessoryBeSetOn() { return { this, "AShooterWeapon.bUseCanAccessoryBeSetOn" }; } + BitFieldValue bUseBPGetActorForTargetingTooltip() { return { this, "AShooterWeapon.bUseBPGetActorForTargetingTooltip" }; } + BitFieldValue bUseBPOverrideAimDirection() { return { this, "AShooterWeapon.bUseBPOverrideAimDirection" }; } + BitFieldValue bUseBPIsValidUnstasisActor() { return { this, "AShooterWeapon.bUseBPIsValidUnstasisActor" }; } BitFieldValue bLoopingSimulateWeaponFire() { return { this, "AShooterWeapon.bLoopingSimulateWeaponFire" }; } BitFieldValue bFiredFirstBurstShot() { return { this, "AShooterWeapon.bFiredFirstBurstShot" }; } BitFieldValue bClientTriggersHandleFiring() { return { this, "AShooterWeapon.bClientTriggersHandleFiring" }; } @@ -5475,6 +7378,7 @@ struct AShooterWeapon : AActor BitFieldValue bForceFirstPersonWhileTargeting() { return { this, "AShooterWeapon.bForceFirstPersonWhileTargeting" }; } BitFieldValue bUseBPStartEquippedNotify() { return { this, "AShooterWeapon.bUseBPStartEquippedNotify" }; } BitFieldValue bDirectPrimaryFireToSecondaryAction() { return { this, "AShooterWeapon.bDirectPrimaryFireToSecondaryAction" }; } + BitFieldValue bUseAlternateAimOffset() { return { this, "AShooterWeapon.bUseAlternateAimOffset" }; } BitFieldValue bOverrideStandingAnim() { return { this, "AShooterWeapon.bOverrideStandingAnim" }; } BitFieldValue bUseCustomSeatedAnim() { return { this, "AShooterWeapon.bUseCustomSeatedAnim" }; } BitFieldValue bUseBPForceTPVTargetingAnimation() { return { this, "AShooterWeapon.bUseBPForceTPVTargetingAnimation" }; } @@ -5486,19 +7390,27 @@ struct AShooterWeapon : AActor BitFieldValue bForceReloadOnDestruction() { return { this, "AShooterWeapon.bForceReloadOnDestruction" }; } BitFieldValue bUseBPModifyFOV() { return { this, "AShooterWeapon.bUseBPModifyFOV" }; } BitFieldValue bServerIgnoreCheckCanFire() { return { this, "AShooterWeapon.bServerIgnoreCheckCanFire" }; } + BitFieldValue bUseBPGetTPVCameraOffset() { return { this, "AShooterWeapon.bUseBPGetTPVCameraOffset" }; } + BitFieldValue bUseBPOverrideRootRotationOffset() { return { this, "AShooterWeapon.bUseBPOverrideRootRotationOffset" }; } + BitFieldValue bSpawnedByMission() { return { this, "AShooterWeapon.bSpawnedByMission" }; } BitFieldValue bForceAlwaysPlayEquipAnim() { return { this, "AShooterWeapon.bForceAlwaysPlayEquipAnim" }; } BitFieldValue bLastMeleeAttacked() { return { this, "AShooterWeapon.bLastMeleeAttacked" }; } + BitFieldValue bIgnoreReloadState() { return { this, "AShooterWeapon.bIgnoreReloadState" }; } // Functions - static UClass * StaticClass() { return NativeCall(nullptr, "AShooterWeapon.StaticClass"); } - USceneComponent * FindComponentByName(FName ComponentName) { return NativeCall(this, "AShooterWeapon.FindComponentByName", ComponentName); } + static UClass* StaticClass() { return NativeCall(nullptr, "AShooterWeapon.StaticClass"); } + static ABrush* GetStandingAnimation_Implementation(TSubclassOf BrushType, FTransform* BrushTransform, FVector BoxExtent) { return NativeCall, FTransform*, FVector>(nullptr, "AShooterWeapon.GetStandingAnimation_Implementation", BrushType, BrushTransform, BoxExtent); } + bool IsPlayingCameraAnimFPV() { return NativeCall(this, "AShooterWeapon.IsPlayingCameraAnimFPV"); } + USceneComponent* FindComponentByName(FName ComponentName) { return NativeCall(this, "AShooterWeapon.FindComponentByName", ComponentName); } void ZoomOut() { NativeCall(this, "AShooterWeapon.ZoomOut"); } void ZoomIn() { NativeCall(this, "AShooterWeapon.ZoomIn"); } + bool UseAlternateAimOffsetAnim() { return NativeCall(this, "AShooterWeapon.UseAlternateAimOffsetAnim"); } void PostInitializeComponents() { NativeCall(this, "AShooterWeapon.PostInitializeComponents"); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterWeapon.DrawHUD", HUD); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterWeapon.DrawHUD", HUD); } void UpdateFirstPersonMeshes(bool bIsFirstPerson) { NativeCall(this, "AShooterWeapon.UpdateFirstPersonMeshes", bIsFirstPerson); } void Destroyed() { NativeCall(this, "AShooterWeapon.Destroyed"); } + bool IsValidUnStasisCaster() { return NativeCall(this, "AShooterWeapon.IsValidUnStasisCaster"); } void OnEquip() { NativeCall(this, "AShooterWeapon.OnEquip"); } void OnEquipFinished() { NativeCall(this, "AShooterWeapon.OnEquipFinished"); } void StartUnequip_Implementation() { NativeCall(this, "AShooterWeapon.StartUnequip_Implementation"); } @@ -5506,11 +7418,17 @@ struct AShooterWeapon : AActor void AttachMeshToPawn() { NativeCall(this, "AShooterWeapon.AttachMeshToPawn"); } void ApplyPrimalItemSettingsToWeapon(bool bShallowUpdate) { NativeCall(this, "AShooterWeapon.ApplyPrimalItemSettingsToWeapon", bShallowUpdate); } void DetachMeshFromPawn() { NativeCall(this, "AShooterWeapon.DetachMeshFromPawn"); } + void ApplyCharacterSnapshot(UPrimalItem* SnapshotItem, AActor* To) { NativeCall(this, "AShooterWeapon.ApplyCharacterSnapshot", SnapshotItem, To); } + bool AllowedToFire(bool bForceAllowSubmergedFiring) { return NativeCall(this, "AShooterWeapon.AllowedToFire", bForceAllowSubmergedFiring); } void StartFire(bool bFromGamepad) { NativeCall(this, "AShooterWeapon.StartFire", bFromGamepad); } void StopFire() { NativeCall(this, "AShooterWeapon.StopFire"); } void StartAltFire() { NativeCall(this, "AShooterWeapon.StartAltFire"); } void StartSecondaryAction() { NativeCall(this, "AShooterWeapon.StartSecondaryAction"); } + void StopSecondaryAction() { NativeCall(this, "AShooterWeapon.StopSecondaryAction"); } + void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterWeapon.OnStartTargeting", bFromGamepadLeft); } + void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterWeapon.OnStopTargeting", bFromGamepadLeft); } bool CanToggleAccessory() { return NativeCall(this, "AShooterWeapon.CanToggleAccessory"); } + void SetAccessoryEnabled(bool bEnabled) { NativeCall(this, "AShooterWeapon.SetAccessoryEnabled", bEnabled); } void ToggleAccessory() { NativeCall(this, "AShooterWeapon.ToggleAccessory"); } void RefreshToggleAccessory() { NativeCall(this, "AShooterWeapon.RefreshToggleAccessory"); } bool CanMeleeAttack() { return NativeCall(this, "AShooterWeapon.CanMeleeAttack"); } @@ -5548,42 +7466,54 @@ struct AShooterWeapon : AActor void SetAutoReload() { NativeCall(this, "AShooterWeapon.SetAutoReload"); } void OnBurstStarted() { NativeCall(this, "AShooterWeapon.OnBurstStarted"); } void OnBurstFinished() { NativeCall(this, "AShooterWeapon.OnBurstFinished"); } + bool IsSimulated() { return NativeCall(this, "AShooterWeapon.IsSimulated"); } void ClientStopSimulatingWeaponFire_Implementation() { NativeCall(this, "AShooterWeapon.ClientStopSimulatingWeaponFire_Implementation"); } void ClientSimulateWeaponFire_Implementation() { NativeCall(this, "AShooterWeapon.ClientSimulateWeaponFire_Implementation"); } - UAudioComponent * PlayWeaponSound(USoundCue * Sound) { return NativeCall(this, "AShooterWeapon.PlayWeaponSound", Sound); } - float PlayCameraAnimationFPV(UAnimMontage * Animation1P) { return NativeCall(this, "AShooterWeapon.PlayCameraAnimationFPV", Animation1P); } + UAudioComponent* PlayWeaponSound(USoundCue* Sound) { return NativeCall(this, "AShooterWeapon.PlayWeaponSound", Sound); } + float PlayCameraAnimationFPV(UAnimMontage* Animation1P) { return NativeCall(this, "AShooterWeapon.PlayCameraAnimationFPV", Animation1P); } void StopCameraAnimationFPV() { NativeCall(this, "AShooterWeapon.StopCameraAnimationFPV"); } void ClientPlayShieldHitAnim_Implementation() { NativeCall(this, "AShooterWeapon.ClientPlayShieldHitAnim_Implementation"); } - FVector * GetAdjustedAim(FVector * result) { return NativeCall(this, "AShooterWeapon.GetAdjustedAim", result); } - FVector * GetCameraDamageStartLocation(FVector * result, FVector * AimDir) { return NativeCall(this, "AShooterWeapon.GetCameraDamageStartLocation", result, AimDir); } - FVector * GetShootingCameraLocation(FVector * result) { return NativeCall(this, "AShooterWeapon.GetShootingCameraLocation", result); } - FVector * GetMuzzleLocation(FVector * result) { return NativeCall(this, "AShooterWeapon.GetMuzzleLocation", result); } - FHitResult * WeaponTrace(FHitResult * result, FVector * StartTrace, FVector * EndTrace) { return NativeCall(this, "AShooterWeapon.WeaponTrace", result, StartTrace, EndTrace); } - void WeaponTraceHits(TArray * HitResults, FVector * StartTrace, FVector * EndTrace) { NativeCall *, FVector *, FVector *>(this, "AShooterWeapon.WeaponTraceHits", HitResults, StartTrace, EndTrace); } - void SetOwningPawn(AShooterCharacter * NewOwner) { NativeCall(this, "AShooterWeapon.SetOwningPawn", NewOwner); } - void OnCameraUpdate(FVector * CameraLocation, FRotator * CameraRotation, FVector * WeaponBob) { NativeCall(this, "AShooterWeapon.OnCameraUpdate", CameraLocation, CameraRotation, WeaponBob); } + FVector* GetAdjustedAim(FVector* result) { return NativeCall(this, "AShooterWeapon.GetAdjustedAim", result); } + FVector* GetCameraDamageStartLocation(FVector* result, FVector* AimDir) { return NativeCall(this, "AShooterWeapon.GetCameraDamageStartLocation", result, AimDir); } + FVector* GetShootingCameraLocation(FVector* result) { return NativeCall(this, "AShooterWeapon.GetShootingCameraLocation", result); } + FVector* GetMuzzleLocation(FVector* result) { return NativeCall(this, "AShooterWeapon.GetMuzzleLocation", result); } + FVector* GetMuzzleDirection(FVector* result) { return NativeCall(this, "AShooterWeapon.GetMuzzleDirection", result); } + FHitResult* WeaponTrace(FHitResult* result, FVector* StartTrace, FVector* EndTrace) { return NativeCall(this, "AShooterWeapon.WeaponTrace", result, StartTrace, EndTrace); } + void WeaponTraceHits(TArray* HitResults, FVector* StartTrace, FVector* EndTrace) { NativeCall*, FVector*, FVector*>(this, "AShooterWeapon.WeaponTraceHits", HitResults, StartTrace, EndTrace); } + void SetOwningPawn(AShooterCharacter* NewOwner) { NativeCall(this, "AShooterWeapon.SetOwningPawn", NewOwner); } + void OnCameraUpdate(FVector* CameraLocation, FRotator* CameraRotation, FVector* WeaponBob) { NativeCall(this, "AShooterWeapon.OnCameraUpdate", CameraLocation, CameraRotation, WeaponBob); } + void OnRep_MyPawn() { NativeCall(this, "AShooterWeapon.OnRep_MyPawn"); } + void OnRep_AccessoryToggle() { NativeCall(this, "AShooterWeapon.OnRep_AccessoryToggle"); } void SimulateWeaponFire() { NativeCall(this, "AShooterWeapon.SimulateWeaponFire"); } void StartMuzzleFX() { NativeCall(this, "AShooterWeapon.StartMuzzleFX"); } void StopMuzzleFX() { NativeCall(this, "AShooterWeapon.StopMuzzleFX"); } void PlayFireAnimation() { NativeCall(this, "AShooterWeapon.PlayFireAnimation"); } void StopSimulatingWeaponFire() { NativeCall(this, "AShooterWeapon.StopSimulatingWeaponFire"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterWeapon.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterWeapon.GetLifetimeReplicatedProps", OutLifetimeProps); } + AShooterCharacter* GetPawnOwner() { return NativeCall(this, "AShooterWeapon.GetPawnOwner"); } + EWeaponState::Type GetCurrentState() { return NativeCall(this, "AShooterWeapon.GetCurrentState"); } + int GetCurrentAmmo() { return NativeCall(this, "AShooterWeapon.GetCurrentAmmo"); } + int GetCurrentAmmoInClip() { return NativeCall(this, "AShooterWeapon.GetCurrentAmmoInClip"); } + bool UsesAmmo() { return NativeCall(this, "AShooterWeapon.UsesAmmo"); } bool HasInfiniteAmmo() { return NativeCall(this, "AShooterWeapon.HasInfiniteAmmo"); } void StartMeleeSwing() { NativeCall(this, "AShooterWeapon.StartMeleeSwing"); } void EndMeleeSwing() { NativeCall(this, "AShooterWeapon.EndMeleeSwing"); } void EndDoMeleeSwing() { NativeCall(this, "AShooterWeapon.EndDoMeleeSwing"); } - bool AddToMeleeSwingHurtList(AActor * AnActor) { return NativeCall(this, "AShooterWeapon.AddToMeleeSwingHurtList", AnActor); } - bool ShouldDealDamage(AActor * TestActor) { return NativeCall(this, "AShooterWeapon.ShouldDealDamage", TestActor); } - void DealDamage(FHitResult * Impact, FVector * ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "AShooterWeapon.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + bool AddToMeleeSwingHurtList(AActor* AnActor) { return NativeCall(this, "AShooterWeapon.AddToMeleeSwingHurtList", AnActor); } + bool ShouldDealDamage(AActor* TestActor) { return NativeCall(this, "AShooterWeapon.ShouldDealDamage", TestActor); } + void DealDamage(FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "AShooterWeapon.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + float GetWeaponDamageMultiplier() { return NativeCall(this, "AShooterWeapon.GetWeaponDamageMultiplier"); } void TickMeleeSwing(float DeltaTime) { NativeCall(this, "AShooterWeapon.TickMeleeSwing", DeltaTime); } void ClientStartMuzzleFX_Implementation() { NativeCall(this, "AShooterWeapon.ClientStartMuzzleFX_Implementation"); } void CosumeMeleeHitDurability(float DurabilityConsumptionMultiplier) { NativeCall(this, "AShooterWeapon.CosumeMeleeHitDurability", DurabilityConsumptionMultiplier); } void PlayWeaponBreakAnimation_Implementation() { NativeCall(this, "AShooterWeapon.PlayWeaponBreakAnimation_Implementation"); } void Tick(float DeltaSeconds) { NativeCall(this, "AShooterWeapon.Tick", DeltaSeconds); } + bool IsFiring() { return NativeCall(this, "AShooterWeapon.IsFiring"); } void BeginPlay() { NativeCall(this, "AShooterWeapon.BeginPlay"); } void LocalPossessed() { NativeCall(this, "AShooterWeapon.LocalPossessed"); } bool IsLocallyOwned() { return NativeCall(this, "AShooterWeapon.IsLocallyOwned"); } void CheckItemAssocation() { NativeCall(this, "AShooterWeapon.CheckItemAssocation"); } + bool IsOwningClient() { return NativeCall(this, "AShooterWeapon.IsOwningClient"); } void OnRep_CurrentAmmoInClip() { NativeCall(this, "AShooterWeapon.OnRep_CurrentAmmoInClip"); } void LoadedFromSaveGame() { NativeCall(this, "AShooterWeapon.LoadedFromSaveGame"); } void PlayUseHarvestAnimation_Implementation() { NativeCall(this, "AShooterWeapon.PlayUseHarvestAnimation_Implementation"); } @@ -5600,28 +7530,87 @@ struct AShooterWeapon : AActor bool ForceFirstPerson() { return NativeCall(this, "AShooterWeapon.ForceFirstPerson"); } bool TryFireWeapon() { return NativeCall(this, "AShooterWeapon.TryFireWeapon"); } bool ForcesTPVCameraOffset_Implementation() { return NativeCall(this, "AShooterWeapon.ForcesTPVCameraOffset_Implementation"); } + void SetAmmoInClip(int newAmmo) { NativeCall(this, "AShooterWeapon.SetAmmoInClip", newAmmo); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "AShooterWeapon.GetDebugInfoString", result); } + bool IsInMeleeAttack() { return NativeCall(this, "AShooterWeapon.IsInMeleeAttack"); } + void ClientSpawnMeleeEffects_Implementation(FVector Impact, FVector ShootDir) { NativeCall(this, "AShooterWeapon.ClientSpawnMeleeEffects_Implementation", Impact, ShootDir); } + FString* BPGetDebugInfoString(FString* result) { return NativeCall(this, "AShooterWeapon.BPGetDebugInfoString", result); } + float BPModifyFOV(float inFOV) { return NativeCall(this, "AShooterWeapon.BPModifyFOV", inFOV); } static void StaticRegisterNativesAShooterWeapon() { NativeCall(nullptr, "AShooterWeapon.StaticRegisterNativesAShooterWeapon"); } - bool BPConstrainAspectRatio(float * OutAspectRatio) { return NativeCall(this, "AShooterWeapon.BPConstrainAspectRatio", OutAspectRatio); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterWeapon.GetPrivateStaticClass", Package); } + bool AllowTargeting() { return NativeCall(this, "AShooterWeapon.AllowTargeting"); } + bool AllowUnequip() { return NativeCall(this, "AShooterWeapon.AllowUnequip"); } + void BP_OnReloadNotify() { NativeCall(this, "AShooterWeapon.BP_OnReloadNotify"); } + int BPAdjustAmmoPerShot() { return NativeCall(this, "AShooterWeapon.BPAdjustAmmoPerShot"); } + bool BPAllowNativeFireWeapon() { return NativeCall(this, "AShooterWeapon.BPAllowNativeFireWeapon"); } + void BPAppliedPrimalItemToWeapon() { NativeCall(this, "AShooterWeapon.BPAppliedPrimalItemToWeapon"); } + bool BPCanEquip(AShooterCharacter* ByCharacter) { return NativeCall(this, "AShooterWeapon.BPCanEquip", ByCharacter); } + bool BPCanToggleAccessory() { return NativeCall(this, "AShooterWeapon.BPCanToggleAccessory"); } + bool BPConstrainAspectRatio(float* OutAspectRatio) { return NativeCall(this, "AShooterWeapon.BPConstrainAspectRatio", OutAspectRatio); } + void BPDrawHud(AShooterHUD* HUD) { NativeCall(this, "AShooterWeapon.BPDrawHud", HUD); } + void BPFiredWeapon() { NativeCall(this, "AShooterWeapon.BPFiredWeapon"); } + void BPFireWeapon() { NativeCall(this, "AShooterWeapon.BPFireWeapon"); } + bool BPForceTPVTargetingAnimation() { return NativeCall(this, "AShooterWeapon.BPForceTPVTargetingAnimation"); } + AActor* BPGetActorForTargetingTooltip() { return NativeCall(this, "AShooterWeapon.BPGetActorForTargetingTooltip"); } + UAnimSequence* BPGetSeatingAnimation() { return NativeCall(this, "AShooterWeapon.BPGetSeatingAnimation"); } + FText* BPGetTargetingTooltipInfoLabel(FText* result) { return NativeCall(this, "AShooterWeapon.BPGetTargetingTooltipInfoLabel", result); } + FVector* BPGetTPVCameraOffset(FVector* result) { return NativeCall(this, "AShooterWeapon.BPGetTPVCameraOffset", result); } + void BPGlobalFireWeapon() { NativeCall(this, "AShooterWeapon.BPGlobalFireWeapon"); } + void BPHandleMeleeAttack() { NativeCall(this, "AShooterWeapon.BPHandleMeleeAttack"); } + void BPLostController() { NativeCall(this, "AShooterWeapon.BPLostController"); } + void BPMeleeAttackStarted() { NativeCall(this, "AShooterWeapon.BPMeleeAttackStarted"); } + void BPOnScoped() { NativeCall(this, "AShooterWeapon.BPOnScoped"); } + void BPOnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterWeapon.BPOnStartTargeting", bFromGamepadLeft); } + void BPOnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterWeapon.BPOnStopTargeting", bFromGamepadLeft); } + FVector* BPOverrideAimDirection(FVector* result, FVector* DesiredAimDirection) { return NativeCall(this, "AShooterWeapon.BPOverrideAimDirection", result, DesiredAimDirection); } + FRotator* BPOverrideRootRotationOffset(FRotator* result, FRotator InRootRotation) { return NativeCall(this, "AShooterWeapon.BPOverrideRootRotationOffset", result, InRootRotation); } + bool BPPreventSwitchingWeapon() { return NativeCall(this, "AShooterWeapon.BPPreventSwitchingWeapon"); } + bool BPRemainEquipped() { return NativeCall(this, "AShooterWeapon.BPRemainEquipped"); } + bool BPShouldDealDamage(AActor* TestActor) { return NativeCall(this, "AShooterWeapon.BPShouldDealDamage", TestActor); } + void BPSpawnMeleeEffects(FVector Impact, FVector ShootDir) { NativeCall(this, "AShooterWeapon.BPSpawnMeleeEffects", Impact, ShootDir); } + void BPStartEquippedNotify() { NativeCall(this, "AShooterWeapon.BPStartEquippedNotify"); } + void BPStopMeleeAttack() { NativeCall(this, "AShooterWeapon.BPStopMeleeAttack"); } + void BPToggleAccessory() { NativeCall(this, "AShooterWeapon.BPToggleAccessory"); } + void BPToggleAccessoryFailed() { NativeCall(this, "AShooterWeapon.BPToggleAccessoryFailed"); } + bool BPTryFireWeapon() { return NativeCall(this, "AShooterWeapon.BPTryFireWeapon"); } bool BPWeaponCanFire() { return NativeCall(this, "AShooterWeapon.BPWeaponCanFire"); } - int BPWeaponDealDamage(FHitResult * Impact, FVector * ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.BPWeaponDealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + int BPWeaponDealDamage(FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.BPWeaponDealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void BPWeaponZoom(bool bZoomingIn) { NativeCall(this, "AShooterWeapon.BPWeaponZoom", bZoomingIn); } + void ClientPlayShieldHitAnim() { NativeCall(this, "AShooterWeapon.ClientPlayShieldHitAnim"); } + void ClientSetClipAmmo(int newClipAmmo, bool bOnlyUpdateItem) { NativeCall(this, "AShooterWeapon.ClientSetClipAmmo", newClipAmmo, bOnlyUpdateItem); } + void ClientSimulateWeaponFire() { NativeCall(this, "AShooterWeapon.ClientSimulateWeaponFire"); } + void ClientSpawnMeleeEffects(FVector Impact, FVector ShootDir) { NativeCall(this, "AShooterWeapon.ClientSpawnMeleeEffects", Impact, ShootDir); } void ClientStartMuzzleFX() { NativeCall(this, "AShooterWeapon.ClientStartMuzzleFX"); } + void ClientStartReload() { NativeCall(this, "AShooterWeapon.ClientStartReload"); } + void ClientStopSimulatingWeaponFire() { NativeCall(this, "AShooterWeapon.ClientStopSimulatingWeaponFire"); } bool ForcesTPVCameraOffset() { return NativeCall(this, "AShooterWeapon.ForcesTPVCameraOffset"); } - UAnimSequence * GetStandingAnimation(float * OutBlendInTime, float * OutBlendOutTime) { return NativeCall(this, "AShooterWeapon.GetStandingAnimation", OutBlendInTime, OutBlendOutTime); } + UAnimSequence* GetStandingAnimation(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterWeapon.GetStandingAnimation", OutBlendInTime, OutBlendOutTime); } + void OnInstigatorPlayDyingEvent() { NativeCall(this, "AShooterWeapon.OnInstigatorPlayDyingEvent"); } + void PlayUseHarvestAnimation() { NativeCall(this, "AShooterWeapon.PlayUseHarvestAnimation"); } void PlayWeaponBreakAnimation() { NativeCall(this, "AShooterWeapon.PlayWeaponBreakAnimation"); } void ServerSetColorizeRegion(int theRegion, bool bValToUse) { NativeCall(this, "AShooterWeapon.ServerSetColorizeRegion", theRegion, bValToUse); } + void ServerStartAltFire() { NativeCall(this, "AShooterWeapon.ServerStartAltFire"); } void ServerStartFire() { NativeCall(this, "AShooterWeapon.ServerStartFire"); } + void ServerStartReload() { NativeCall(this, "AShooterWeapon.ServerStartReload"); } + void ServerStartSecondaryAction() { NativeCall(this, "AShooterWeapon.ServerStartSecondaryAction"); } + void ServerStopAltFire() { NativeCall(this, "AShooterWeapon.ServerStopAltFire"); } + void ServerStopFire() { NativeCall(this, "AShooterWeapon.ServerStopFire"); } + void ServerToggleAccessory() { NativeCall(this, "AShooterWeapon.ServerToggleAccessory"); } + void StartSecondaryActionEvent() { NativeCall(this, "AShooterWeapon.StartSecondaryActionEvent"); } void StartUnequip() { NativeCall(this, "AShooterWeapon.StartUnequip"); } + void StartUnequipEvent() { NativeCall(this, "AShooterWeapon.StartUnequipEvent"); } + void StopSecondaryActionEvent() { NativeCall(this, "AShooterWeapon.StopSecondaryActionEvent"); } }; struct AAIController : AController { - FVector& MoveTowardTargetOffsetField() { return *GetNativePointerField(this, "AAIController.MoveTowardTargetOffset"); } - FVector& TargetFocalPositionOffsetField() { return *GetNativePointerField(this, "AAIController.TargetFocalPositionOffset"); } + FVector & MoveTowardTargetOffsetField() { return *GetNativePointerField(this, "AAIController.MoveTowardTargetOffset"); } + FVector & TargetFocalPositionOffsetField() { return *GetNativePointerField(this, "AAIController.TargetFocalPositionOffset"); } float& ReachedDestinationThresholdOffsetField() { return *GetNativePointerField(this, "AAIController.ReachedDestinationThresholdOffset"); } float& MovementGoalHeightField() { return *GetNativePointerField(this, "AAIController.MovementGoalHeight"); } unsigned int& RequestMoveIDField() { return *GetNativePointerField(this, "AAIController.RequestMoveID"); } - TWeakObjectPtr& CurrentGoalField() { return *GetNativePointerField*>(this, "AAIController.CurrentGoal"); } - FVector& MoveSegmentDirectionField() { return *GetNativePointerField(this, "AAIController.MoveSegmentDirection"); } + TWeakObjectPtr & CurrentGoalField() { return *GetNativePointerField*>(this, "AAIController.CurrentGoal"); } + FVector & MoveSegmentDirectionField() { return *GetNativePointerField(this, "AAIController.MoveSegmentDirection"); } int& MoveSegmentStartIndexField() { return *GetNativePointerField(this, "AAIController.MoveSegmentStartIndex"); } int& MoveSegmentEndIndexField() { return *GetNativePointerField(this, "AAIController.MoveSegmentEndIndex"); } float& CurrentAcceptanceRadiusField() { return *GetNativePointerField(this, "AAIController.CurrentAcceptanceRadius"); } @@ -5633,45 +7622,47 @@ struct AAIController : AController BitFieldValue bAllowStrafe() { return { this, "AAIController.bAllowStrafe" }; } BitFieldValue bWantsPlayerState() { return { this, "AAIController.bWantsPlayerState" }; } BitFieldValue bUse3DGoalRadius() { return { this, "AAIController.bUse3DGoalRadius" }; } + BitFieldValue bForceInputAcceptanceRadius() { return { this, "AAIController.bForceInputAcceptanceRadius" }; } BitFieldValue bCurrentStopOnOverlap() { return { this, "AAIController.bCurrentStopOnOverlap" }; } BitFieldValue bLastMoveReachedGoal() { return { this, "AAIController.bLastMoveReachedGoal" }; } BitFieldValue bLastRequestedMoveToLocationWasPlayerCommand() { return { this, "AAIController.bLastRequestedMoveToLocationWasPlayerCommand" }; } // Functions - UField * StaticClass() { return NativeCall(this, "AAIController.StaticClass"); } - UObject * GetUObjectInterfaceAIPerceptionListenerInterface() { return NativeCall(this, "AAIController.GetUObjectInterfaceAIPerceptionListenerInterface"); } + UObject * GetUObjectInterfaceAIPerceptionListenerInterface() { return NativeCall(this, "AAIController.GetUObjectInterfaceAIPerceptionListenerInterface"); } + UField * StaticClass() { return NativeCall(this, "AAIController.StaticClass"); } void Tick(float DeltaTime) { NativeCall(this, "AAIController.Tick", DeltaTime); } void PostInitializeComponents() { NativeCall(this, "AAIController.PostInitializeComponents"); } void PostRegisterAllComponents() { NativeCall(this, "AAIController.PostRegisterAllComponents"); } void Reset() { NativeCall(this, "AAIController.Reset"); } - void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AAIController.GetPlayerViewPoint", out_Location, out_Rotation); } + void GetPlayerViewPoint(FVector * out_Location, FRotator * out_Rotation) { NativeCall(this, "AAIController.GetPlayerViewPoint", out_Location, out_Rotation); } void SetFocalPoint(FVector FP, bool bOffsetFromBase, char InPriority) { NativeCall(this, "AAIController.SetFocalPoint", FP, bOffsetFromBase, InPriority); } - FVector * GetFocalPoint(FVector * result) { return NativeCall(this, "AAIController.GetFocalPoint", result); } - AActor * GetFocusActor() { return NativeCall(this, "AAIController.GetFocusActor"); } - void SetFocus(AActor * NewFocus, char InPriority) { NativeCall(this, "AAIController.SetFocus", NewFocus, InPriority); } + FVector * GetFocalPoint(FVector * result) { return NativeCall(this, "AAIController.GetFocalPoint", result); } + AActor * GetFocusActor() { return NativeCall(this, "AAIController.GetFocusActor"); } + void SetFocus(AActor * NewFocus, char InPriority) { NativeCall(this, "AAIController.SetFocus", NewFocus, InPriority); } void ClearFocus(char InPriority) { NativeCall(this, "AAIController.ClearFocus", InPriority); } - bool LineOfSightTo(AActor * Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AAIController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } + bool LineOfSightTo(AActor * Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AAIController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } void UpdateControlRotation(float DeltaTime, bool bUpdatePawn) { NativeCall(this, "AAIController.UpdateControlRotation", DeltaTime, bUpdatePawn); } - void Possess(APawn * InPawn) { NativeCall(this, "AAIController.Possess", InPawn); } + void Possess(APawn * InPawn) { NativeCall(this, "AAIController.Possess", InPawn); } void UnPossess() { NativeCall(this, "AAIController.UnPossess"); } - EPathFollowingRequestResult::Type MoveToActor(AActor * Goal, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bCanStrafe, TSubclassOf FilterClass) { return NativeCall>(this, "AAIController.MoveToActor", Goal, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bCanStrafe, FilterClass); } - EPathFollowingRequestResult::Type MoveToLocation(FVector * Dest, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bProjectDestinationToNavigation, bool bCanStrafe, TSubclassOf FilterClass, bool WasPlayerCommand) { return NativeCall, bool>(this, "AAIController.MoveToLocation", Dest, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bProjectDestinationToNavigation, bCanStrafe, FilterClass, WasPlayerCommand); } - bool HasReached(FVector * TestPoint, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestPoint, InAcceptanceRadius, bExactSpot); } - bool HasReached(AActor * TestGoal, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestGoal, InAcceptanceRadius, bExactSpot); } - bool HasReachedDestination(FVector * CurrentLocation) { return NativeCall(this, "AAIController.HasReachedDestination", CurrentLocation); } - bool HasReachedCurrentTarget(FVector * CurrentLocation) { return NativeCall(this, "AAIController.HasReachedCurrentTarget", CurrentLocation); } - bool HasReachedInternal(FVector * Goal, float GoalRadius, float GoalHalfHeight, FVector * AgentLocation, float RadiusThreshold, bool bUseAgentRadius) { return NativeCall(this, "AAIController.HasReachedInternal", Goal, GoalRadius, GoalHalfHeight, AgentLocation, RadiusThreshold, bUseAgentRadius); } - void AbortMove(FString * Reason, FAIRequestID RequestID, bool bResetVelocity, bool bSilent, char MessageFlags) { NativeCall(this, "AAIController.AbortMove", Reason, RequestID, bResetVelocity, bSilent, MessageFlags); } + EPathFollowingRequestResult::Type MoveToActor(AActor * Goal, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bCanStrafe, TSubclassOf FilterClass) { return NativeCall>(this, "AAIController.MoveToActor", Goal, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bCanStrafe, FilterClass); } + EPathFollowingRequestResult::Type MoveToLocation(FVector * Dest, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bProjectDestinationToNavigation, bool bCanStrafe, TSubclassOf FilterClass, bool WasPlayerCommand) { return NativeCall, bool>(this, "AAIController.MoveToLocation", Dest, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bProjectDestinationToNavigation, bCanStrafe, FilterClass, WasPlayerCommand); } + bool HasReached(FVector * TestPoint, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestPoint, InAcceptanceRadius, bExactSpot); } + bool HasReached(AActor * TestGoal, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestGoal, InAcceptanceRadius, bExactSpot); } + bool HasReachedDestination(FVector * CurrentLocation) { return NativeCall(this, "AAIController.HasReachedDestination", CurrentLocation); } + bool HasReachedCurrentTarget(FVector * CurrentLocation) { return NativeCall(this, "AAIController.HasReachedCurrentTarget", CurrentLocation); } + bool HasReachedInternal(FVector * Goal, float GoalRadius, float GoalHalfHeight, FVector * AgentLocation, float RadiusThreshold, bool bUseAgentRadius) { return NativeCall(this, "AAIController.HasReachedInternal", Goal, GoalRadius, GoalHalfHeight, AgentLocation, RadiusThreshold, bUseAgentRadius); } + void AbortMove(FString * Reason, FAIRequestID RequestID, bool bResetVelocity, bool bSilent, char MessageFlags) { NativeCall(this, "AAIController.AbortMove", Reason, RequestID, bResetVelocity, bSilent, MessageFlags); } void UpdatePathSegment() { NativeCall(this, "AAIController.UpdatePathSegment"); } void FollowPathSegment(float DeltaTime) { NativeCall(this, "AAIController.FollowPathSegment", DeltaTime); } void ResetMovement() { NativeCall(this, "AAIController.ResetMovement"); } void OnPathFinished(EPathFollowingResult::Type Result) { NativeCall(this, "AAIController.OnPathFinished", Result); } - FVector * GetMoveFocus(FVector * result) { return NativeCall(this, "AAIController.GetMoveFocus", result); } + FVector * GetMoveFocus(FVector * result) { return NativeCall(this, "AAIController.GetMoveFocus", result); } void UpdateMoveFocus() { NativeCall(this, "AAIController.UpdateMoveFocus"); } void SetMoveSegment(int SegmentStartIndex) { NativeCall(this, "AAIController.SetMoveSegment", SegmentStartIndex); } void StopMovement() { NativeCall(this, "AAIController.StopMovement"); } void OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result) { NativeCall(this, "AAIController.OnMoveCompleted", RequestID, Result); } + static void StaticRegisterNativesAAIController() { NativeCall(nullptr, "AAIController.StaticRegisterNativesAAIController"); } }; struct APrimalDinoAIController : AAIController @@ -5694,12 +7685,14 @@ struct APrimalDinoAIController : AAIController FVector& LastBlockadeHitNormalField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeHitNormal"); } FVector& LastBlockadeHitLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeHitLocation"); } FVector& StartMovingAroundBlockadeLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.StartMovingAroundBlockadeLocation"); } - AActor * LastMovingAroundBlockadeActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastMovingAroundBlockadeActor"); } - AActor * TargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.Target"); } + AActor* LastMovingAroundBlockadeActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastMovingAroundBlockadeActor"); } + AActor* ForceTargetActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForceTargetActor"); } + AActor* TargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.Target"); } float& AttackDestinationOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackDestinationOffset"); } bool& bUseOverlapTargetCheckField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseOverlapTargetCheck"); } bool& bNotifyNeighborsWithoutDamageField() { return *GetNativePointerField(this, "APrimalDinoAIController.bNotifyNeighborsWithoutDamage"); } bool& bUseBPShouldNotifyNeighborField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseBPShouldNotifyNeighbor"); } + bool& bUseBPShouldNotifyAnyNeighborField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseBPShouldNotifyAnyNeighbor"); } bool& bRequireAbsoluteDamageForNeighborNotificationField() { return *GetNativePointerField(this, "APrimalDinoAIController.bRequireAbsoluteDamageForNeighborNotification"); } float& AboveDeltaZAttackRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.AboveDeltaZAttackRange"); } float& BelowDeltaZAttackRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.BelowDeltaZAttackRange"); } @@ -5757,7 +7750,8 @@ struct APrimalDinoAIController : AAIController FVector& LastCheckAttackRangePawnLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangePawnLocation"); } FVector& LastCheckAttackRangeClosestPointField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeClosestPoint"); } FVector& LastCheckAttackRangeTargetLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeTargetLocation"); } - AActor * LastCheckAttackRangeTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeTarget"); } + AActor* LastCheckAttackRangeTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeTarget"); } + bool& HasAttackPriorityField() { return *GetNativePointerField(this, "APrimalDinoAIController.HasAttackPriority"); } TArray& TamedAITargetingRangeMultipliersField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.TamedAITargetingRangeMultipliers"); } float& MateBoostAggroNotifyNeighborsMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.MateBoostAggroNotifyNeighborsMultiplier"); } TArray>& AggroNotifyNeighborsClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoAIController.AggroNotifyNeighborsClasses"); } @@ -5765,6 +7759,7 @@ struct APrimalDinoAIController : AAIController float& MoveAroundObjectMaxVelocityField() { return *GetNativePointerField(this, "APrimalDinoAIController.MoveAroundObjectMaxVelocity"); } float& ForcedAggroTimeCounterField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForcedAggroTimeCounter"); } float& TamedMaxFollowDistanceField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedMaxFollowDistance"); } + float& BaseStructureTargetingDesireField() { return *GetNativePointerField(this, "APrimalDinoAIController.BaseStructureTargetingDesire"); } float& LandDinoMaxFlyerTargetDeltaZField() { return *GetNativePointerField(this, "APrimalDinoAIController.LandDinoMaxFlyerTargetDeltaZ"); } float& NaturalMaxDepthZField() { return *GetNativePointerField(this, "APrimalDinoAIController.NaturalMaxDepthZ"); } TWeakObjectPtr& ForcedAttackTargetField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.ForcedAttackTarget"); } @@ -5823,78 +7818,126 @@ struct APrimalDinoAIController : AAIController BitFieldValue bUseBPForceTargetDinoRider() { return { this, "APrimalDinoAIController.bUseBPForceTargetDinoRider" }; } BitFieldValue bAlwaysStartledWhenAggroedByNeighbor() { return { this, "APrimalDinoAIController.bAlwaysStartledWhenAggroedByNeighbor" }; } BitFieldValue bForceOnlyTargetingPlayers() { return { this, "APrimalDinoAIController.bForceOnlyTargetingPlayers" }; } + BitFieldValue bIsMissionDino() { return { this, "APrimalDinoAIController.bIsMissionDino" }; } + BitFieldValue bUseImprovedAggroFalloffBehavior() { return { this, "APrimalDinoAIController.bUseImprovedAggroFalloffBehavior" }; } BitFieldValue bUseBP_TamedOverrideHorizontalLandingRange() { return { this, "APrimalDinoAIController.bUseBP_TamedOverrideHorizontalLandingRange" }; } BitFieldValue bFlyerWanderDefaultToOrigin() { return { this, "APrimalDinoAIController.bFlyerWanderDefaultToOrigin" }; } + BitFieldValue bCheckBuffTargetingDesireOverride() { return { this, "APrimalDinoAIController.bCheckBuffTargetingDesireOverride" }; } // Functions + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalDinoAIController.StaticClass"); } + void BeginPlay() { NativeCall(this, "APrimalDinoAIController.BeginPlay"); } void ForceLand() { NativeCall(this, "APrimalDinoAIController.ForceLand"); } - FVector * GetRandomWanderDestination(FVector * result, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation) { return NativeCall(this, "APrimalDinoAIController.GetRandomWanderDestination", result, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation); } - static FVector * StaticGetRandomWanderDestination(FVector * result, APrimalDinoCharacter * TargetCharacter, APrimalDinoAIController * TargetAIController, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(nullptr, "APrimalDinoAIController.StaticGetRandomWanderDestination", result, TargetCharacter, TargetAIController, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation, GroundCheckSpreadOverride); } + FVector* GetRandomWanderDestination(FVector* result, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation) { return NativeCall(this, "APrimalDinoAIController.GetRandomWanderDestination", result, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation); } + static FVector* StaticGetRandomWanderDestination(FVector* result, APrimalDinoCharacter* TargetCharacter, APrimalDinoAIController* TargetAIController, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(nullptr, "APrimalDinoAIController.StaticGetRandomWanderDestination", result, TargetCharacter, TargetAIController, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation, GroundCheckSpreadOverride); } void Unstasis() { NativeCall(this, "APrimalDinoAIController.Unstasis"); } - AActor * GetCorpseFoodTarget() { return NativeCall(this, "APrimalDinoAIController.GetCorpseFoodTarget"); } - AActor * FindTarget(bool bDontSet) { return NativeCall(this, "APrimalDinoAIController.FindTarget", bDontSet); } - float GetTargetingDesire(AActor * InTarget) { return NativeCall(this, "APrimalDinoAIController.GetTargetingDesire", InTarget); } - void SetTarget(AActor * InTarget, bool bDontAddAggro, bool bOverlapFoundTarget) { NativeCall(this, "APrimalDinoAIController.SetTarget", InTarget, bDontAddAggro, bOverlapFoundTarget); } - void AddToAggro(AActor * Attacker, float DamagePercent, bool bNotifyNeighbors, bool SetValue, bool bIsFromDamage, bool skipTeamCheck) { NativeCall(this, "APrimalDinoAIController.AddToAggro", Attacker, DamagePercent, bNotifyNeighbors, SetValue, bIsFromDamage, skipTeamCheck); } + AActor* GetCorpseFoodTarget() { return NativeCall(this, "APrimalDinoAIController.GetCorpseFoodTarget"); } + AActor* FindTarget(bool bDontSet) { return NativeCall(this, "APrimalDinoAIController.FindTarget", bDontSet); } + float GetTargetingDesire(AActor* InTarget) { return NativeCall(this, "APrimalDinoAIController.GetTargetingDesire", InTarget); } + void SetTarget(AActor* InTarget, bool bDontAddAggro, bool bOverlapFoundTarget) { NativeCall(this, "APrimalDinoAIController.SetTarget", InTarget, bDontAddAggro, bOverlapFoundTarget); } + void AddToAggro(AActor* Attacker, float DamagePercent, bool bNotifyNeighbors, bool SetValue, bool bIsFromDamage, bool skipTeamCheck) { NativeCall(this, "APrimalDinoAIController.AddToAggro", Attacker, DamagePercent, bNotifyNeighbors, SetValue, bIsFromDamage, skipTeamCheck); } + AActor* FindNewTarget(bool bDontSet) { return NativeCall(this, "APrimalDinoAIController.FindNewTarget", bDontSet); } + AActor* GetTarget() { return NativeCall(this, "APrimalDinoAIController.GetTarget"); } void UpdateAggro() { NativeCall(this, "APrimalDinoAIController.UpdateAggro"); } - bool IsWithinAttackRange(AActor * Other, bool bForceUseLastAttackIndex) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRange", Other, bForceUseLastAttackIndex); } - FVector * GetWanderAroundActorDestination(FVector * result, APrimalDinoCharacter * dinoCharacter, FVector originalDestination) { return NativeCall(this, "APrimalDinoAIController.GetWanderAroundActorDestination", result, dinoCharacter, originalDestination); } - bool IsWithinAttackRangeAndCalculateBestAttack(AActor * Other, bool * bAttackChanged) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRangeAndCalculateBestAttack", Other, bAttackChanged); } - bool CalculateAndSetWonderingAIState(bool * StateChanged) { return NativeCall(this, "APrimalDinoAIController.CalculateAndSetWonderingAIState", StateChanged); } - float GetAggroDesirability(AActor * InTarget) { return NativeCall(this, "APrimalDinoAIController.GetAggroDesirability", InTarget); } - void NotifyTakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalDinoAIController.NotifyTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool IsWithinAttackRange(AActor* Other, bool bForceUseLastAttackIndex) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRange", Other, bForceUseLastAttackIndex); } + float GetAttackRange() { return NativeCall(this, "APrimalDinoAIController.GetAttackRange"); } + float GetMinAttackRange() { return NativeCall(this, "APrimalDinoAIController.GetMinAttackRange"); } + float GetAttackInterval() { return NativeCall(this, "APrimalDinoAIController.GetAttackInterval"); } + float GetAttackRotationRangeDegrees() { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationRangeDegrees"); } + float GetAttackRotationGroundSpeedMultiplier() { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationGroundSpeedMultiplier"); } + FRotator* GetAttackRotationRate(FRotator* result) { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationRate", result); } + FVector* GetWanderAroundActorDestination(FVector* result, APrimalDinoCharacter* dinoCharacter, FVector originalDestination) { return NativeCall(this, "APrimalDinoAIController.GetWanderAroundActorDestination", result, dinoCharacter, originalDestination); } + char GetCurrentAttackIndex() { return NativeCall(this, "APrimalDinoAIController.GetCurrentAttackIndex"); } + bool IsWithinAttackRangeAndCalculateBestAttack(AActor* Other, bool* bAttackChanged) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRangeAndCalculateBestAttack", Other, bAttackChanged); } + bool CalculateAndSetWonderingAIState(bool* StateChanged) { return NativeCall(this, "APrimalDinoAIController.CalculateAndSetWonderingAIState", StateChanged); } + APrimalDinoCharacter* GetControlledDino() { return NativeCall(this, "APrimalDinoAIController.GetControlledDino"); } + float GetAggroDesirability(AActor* InTarget) { return NativeCall(this, "APrimalDinoAIController.GetAggroDesirability", InTarget); } + void NotifyTakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalDinoAIController.NotifyTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } bool CheckMoveAroundBlockadePoint(FVector moveToPoint) { return NativeCall(this, "APrimalDinoAIController.CheckMoveAroundBlockadePoint", moveToPoint); } - bool MoveAroundBlockade(FVector PreBumpLocation, AActor * BlockadeActor, UPrimitiveComponent * OtherComp, float BlockadeWidth, FVector HitNormal, FVector HitLocation, bool SkipBlockingCheck) { return NativeCall(this, "APrimalDinoAIController.MoveAroundBlockade", PreBumpLocation, BlockadeActor, OtherComp, BlockadeWidth, HitNormal, HitLocation, SkipBlockingCheck); } - void NotifyBump(FVector PreBumpLocation, AActor * Other, UPrimitiveComponent * OtherComp, FVector * HitNormal, FVector * HitLocation) { NativeCall(this, "APrimalDinoAIController.NotifyBump", PreBumpLocation, Other, OtherComp, HitNormal, HitLocation); } + bool MoveAroundBlockade(FVector PreBumpLocation, AActor* BlockadeActor, UPrimitiveComponent* OtherComp, float BlockadeWidth, FVector HitNormal, FVector HitLocation, bool SkipBlockingCheck) { return NativeCall(this, "APrimalDinoAIController.MoveAroundBlockade", PreBumpLocation, BlockadeActor, OtherComp, BlockadeWidth, HitNormal, HitLocation, SkipBlockingCheck); } + void NotifyBump(FVector PreBumpLocation, AActor* Other, UPrimitiveComponent* OtherComp, FVector* HitNormal, FVector* HitLocation) { NativeCall(this, "APrimalDinoAIController.NotifyBump", PreBumpLocation, Other, OtherComp, HitNormal, HitLocation); } void RecoverMovement() { NativeCall(this, "APrimalDinoAIController.RecoverMovement"); } void PlayStartledAnim() { NativeCall(this, "APrimalDinoAIController.PlayStartledAnim"); } void Destroyed() { NativeCall(this, "APrimalDinoAIController.Destroyed"); } bool CanLand() { return NativeCall(this, "APrimalDinoAIController.CanLand"); } - FVector * GetLandingLocation(FVector * result) { return NativeCall(this, "APrimalDinoAIController.GetLandingLocation", result); } + FVector* GetLandingLocation(FVector* result) { return NativeCall(this, "APrimalDinoAIController.GetLandingLocation", result); } + void SetAttackRotationRate() { NativeCall(this, "APrimalDinoAIController.SetAttackRotationRate"); } + void ResetRotationUseAcceleration() { NativeCall(this, "APrimalDinoAIController.ResetRotationUseAcceleration"); } + void ResetAccelerationFollowsRotation() { NativeCall(this, "APrimalDinoAIController.ResetAccelerationFollowsRotation"); } void ResetRotationRate() { NativeCall(this, "APrimalDinoAIController.ResetRotationRate"); } void SetAttackGroundSpeed() { NativeCall(this, "APrimalDinoAIController.SetAttackGroundSpeed"); } + void ResetGroundSpeed() { NativeCall(this, "APrimalDinoAIController.ResetGroundSpeed"); } void AvoidOutOfWater() { NativeCall(this, "APrimalDinoAIController.AvoidOutOfWater"); } + void AvoidGenericToPoint(FVector TargetDestination) { NativeCall(this, "APrimalDinoAIController.AvoidGenericToPoint", TargetDestination); } bool UseLowQualityBehaviorTreeTick() { return NativeCall(this, "APrimalDinoAIController.UseLowQualityBehaviorTreeTick"); } - void Possess(APawn * InPawn) { NativeCall(this, "APrimalDinoAIController.Possess", InPawn); } + void Possess(APawn* InPawn) { NativeCall(this, "APrimalDinoAIController.Possess", InPawn); } + void ClearAggroEntries() { NativeCall(this, "APrimalDinoAIController.ClearAggroEntries"); } bool ShouldForceFlee() { return NativeCall(this, "APrimalDinoAIController.ShouldForceFlee"); } - AActor * GetAggroEntriesAttackerAtIndex(int Index) { return NativeCall(this, "APrimalDinoAIController.GetAggroEntriesAttackerAtIndex", Index); } + int GetAggroEntriesCount() { return NativeCall(this, "APrimalDinoAIController.GetAggroEntriesCount"); } + AActor* GetAggroEntriesAttackerAtIndex(int Index) { return NativeCall(this, "APrimalDinoAIController.GetAggroEntriesAttackerAtIndex", Index); } + bool GetAggroEntry(int Index, AActor** OutAttacker, float* OutAggroFactor, long double* OutLastAggroHitTime) { return NativeCall(this, "APrimalDinoAIController.GetAggroEntry", Index, OutAttacker, OutAggroFactor, OutLastAggroHitTime); } + void SetHasAttackPriority(bool Value) { NativeCall(this, "APrimalDinoAIController.SetHasAttackPriority", Value); } bool ShouldForceRunWhenAttacking() { return NativeCall(this, "APrimalDinoAIController.ShouldForceRunWhenAttacking"); } + APawn* GetControllerPawn() { return NativeCall(this, "APrimalDinoAIController.GetControllerPawn"); } float GetAcceptanceHeightOffset() { return NativeCall(this, "APrimalDinoAIController.GetAcceptanceHeightOffset"); } float GetAcceptanceRadiusOffset() { return NativeCall(this, "APrimalDinoAIController.GetAcceptanceRadiusOffset"); } void OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result) { NativeCall(this, "APrimalDinoAIController.OnMoveCompleted", RequestID, Result); } void StopBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.StopBrainComponent", reason); } + void RestartBrainComponent() { NativeCall(this, "APrimalDinoAIController.RestartBrainComponent"); } + void PauseBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.PauseBrainComponent", reason); } + void ResumeBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.ResumeBrainComponent", reason); } + bool IsLogicPaused() { return NativeCall(this, "APrimalDinoAIController.IsLogicPaused"); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "APrimalDinoAIController.GetDebugInfoString", result); } float GetAggroNotifyNeighborsRange_Implementation() { return NativeCall(this, "APrimalDinoAIController.GetAggroNotifyNeighborsRange_Implementation"); } - bool IsForceTargetDinoRider(AShooterCharacter * playerTarget) { return NativeCall(this, "APrimalDinoAIController.IsForceTargetDinoRider", playerTarget); } - float BPGetTargetingDesire(AActor * ForTarget, float ForTargetingDesireValue) { return NativeCall(this, "APrimalDinoAIController.BPGetTargetingDesire", ForTarget, ForTargetingDesireValue); } + bool IsForceTargetDinoRider(AShooterCharacter* playerTarget) { return NativeCall(this, "APrimalDinoAIController.IsForceTargetDinoRider", playerTarget); } + static void StaticRegisterNativesAPrimalDinoAIController() { NativeCall(nullptr, "APrimalDinoAIController.StaticRegisterNativesAPrimalDinoAIController"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalDinoAIController.GetPrivateStaticClass", Package); } + FVector2D* BP_TamedOverrideHorizontalLandingRange(FVector2D* result) { return NativeCall(this, "APrimalDinoAIController.BP_TamedOverrideHorizontalLandingRange", result); } + bool BPForceTargetDinoRider(AShooterCharacter* playerTarget) { return NativeCall(this, "APrimalDinoAIController.BPForceTargetDinoRider", playerTarget); } + float BPGetTargetingDesire(AActor* ForTarget, float ForTargetingDesireValue) { return NativeCall(this, "APrimalDinoAIController.BPGetTargetingDesire", ForTarget, ForTargetingDesireValue); } + void BPNotifyTargetSet() { NativeCall(this, "APrimalDinoAIController.BPNotifyTargetSet"); } void BPOnFleeEvent() { NativeCall(this, "APrimalDinoAIController.BPOnFleeEvent"); } - AActor * BPUpdateBestTarget(AActor * bestTarget, bool dontSetIn, bool * dontSetOut) { return NativeCall(this, "APrimalDinoAIController.BPUpdateBestTarget", bestTarget, dontSetIn, dontSetOut); } + bool BPOverrideIgnoredByWildDino(AActor* wildDinoToIgnore) { return NativeCall(this, "APrimalDinoAIController.BPOverrideIgnoredByWildDino", wildDinoToIgnore); } + void BPSetupFindTarget() { NativeCall(this, "APrimalDinoAIController.BPSetupFindTarget"); } + bool BPShouldNotifyAnyNeighbor(APrimalDinoCharacter* neighbor) { return NativeCall(this, "APrimalDinoAIController.BPShouldNotifyAnyNeighbor", neighbor); } + bool BPShouldNotifyNeighbor(APrimalDinoCharacter* neighbor) { return NativeCall(this, "APrimalDinoAIController.BPShouldNotifyNeighbor", neighbor); } + AActor* BPUpdateBestTarget(AActor* bestTarget, bool dontSetIn, bool* dontSetOut) { return NativeCall(this, "APrimalDinoAIController.BPUpdateBestTarget", bestTarget, dontSetIn, dontSetOut); } + bool CalculateAndSetWonderingAIStateEvent(bool StateChanged) { return NativeCall(this, "APrimalDinoAIController.CalculateAndSetWonderingAIStateEvent", StateChanged); } void ChangedAITarget() { NativeCall(this, "APrimalDinoAIController.ChangedAITarget"); } + float GetAggroNotifyNeighborsRange() { return NativeCall(this, "APrimalDinoAIController.GetAggroNotifyNeighborsRange"); } + void OnLosingTargetEvent() { NativeCall(this, "APrimalDinoAIController.OnLosingTargetEvent"); } }; struct ADroppedItem : AActor { - FItemNetInfo& MyItemInfoField() { return *GetNativePointerField(this, "ADroppedItem.MyItemInfo"); } - UPrimalItem * MyItemField() { return *GetNativePointerField(this, "ADroppedItem.MyItem"); } + FItemNetInfo & MyItemInfoField() { return *GetNativePointerField(this, "ADroppedItem.MyItemInfo"); } + UPrimalItem * MyItemField() { return *GetNativePointerField(this, "ADroppedItem.MyItem"); } + int& AssignedToTribeIDField() { return *GetNativePointerField(this, "ADroppedItem.AssignedToTribeID"); } float& ImpulseMagnitudeField() { return *GetNativePointerField(this, "ADroppedItem.ImpulseMagnitude"); } float& ForceSleepTimerField() { return *GetNativePointerField(this, "ADroppedItem.ForceSleepTimer"); } - FVector& DroppedItemScaleField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemScale"); } - FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipPadding"); } - FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipScale"); } - FString& DroppedByNameField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByName"); } + FVector & DroppedItemScaleField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemScale"); } + FVector2D & OverlayTooltipPaddingField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipPadding"); } + FVector2D & OverlayTooltipScaleField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipScale"); } + FString & DroppedByNameField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByName"); } unsigned __int64& DroppedByPlayerIDField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByPlayerID"); } long double& DroppedItemDestructionTimeField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemDestructionTime"); } + FVector & DroppedItemInterpTargetField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemInterpTarget"); } bool& bClientDisablePhysicsField() { return *GetNativePointerField(this, "ADroppedItem.bClientDisablePhysics"); } - UStaticMesh * NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverride"); } - UMaterialInterface * NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshMaterialOverride"); } - FVector& NetDroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverrideScale3D"); } + UStaticMesh * NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverride"); } + UMaterialInterface * NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshMaterialOverride"); } + FVector & NetDroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverrideScale3D"); } float& MaxPickUpDistanceField() { return *GetNativePointerField(this, "ADroppedItem.MaxPickUpDistance"); } float& PrevLinearDampingField() { return *GetNativePointerField(this, "ADroppedItem.PrevLinearDamping"); } float& PrevAngularDampingField() { return *GetNativePointerField(this, "ADroppedItem.PrevAngularDamping"); } long double& SpawnDropSoundTimeField() { return *GetNativePointerField(this, "ADroppedItem.SpawnDropSoundTime"); } - FVector& PreviousLocationField() { return *GetNativePointerField(this, "ADroppedItem.PreviousLocation"); } - TWeakObjectPtr& DroppedByActorField() { return *GetNativePointerField*>(this, "ADroppedItem.DroppedByActor"); } + FVector & PreviousLocationField() { return *GetNativePointerField(this, "ADroppedItem.PreviousLocation"); } + TWeakObjectPtr & DroppedByActorField() { return *GetNativePointerField*>(this, "ADroppedItem.DroppedByActor"); } + FVector & PreviousStuckLocationField() { return *GetNativePointerField(this, "ADroppedItem.PreviousStuckLocation"); } + float& LocationStuckTimerField() { return *GetNativePointerField(this, "ADroppedItem.LocationStuckTimer"); } + long double& PhysicsKeepAliveUntilTimeField() { return *GetNativePointerField(this, "ADroppedItem.PhysicsKeepAliveUntilTime"); } float& FreezePhysicsAfterTimeField() { return *GetNativePointerField(this, "ADroppedItem.FreezePhysicsAfterTime"); } + float& PickupAllRangeField() { return *GetNativePointerField(this, "ADroppedItem.PickupAllRange"); } float& DroppedLifeSpanOverrideField() { return *GetNativePointerField(this, "ADroppedItem.DroppedLifeSpanOverride"); } // Bit fields @@ -5904,23 +7947,61 @@ struct ADroppedItem : AActor BitFieldValue bUseCollisionTrace() { return { this, "ADroppedItem.bUseCollisionTrace" }; } BitFieldValue bPreventPickup() { return { this, "ADroppedItem.bPreventPickup" }; } BitFieldValue bDestroyOutOfWater() { return { this, "ADroppedItem.bDestroyOutOfWater" }; } + BitFieldValue bUseClientDroppedItemPhysics() { return { this, "ADroppedItem.bUseClientDroppedItemPhysics" }; } BitFieldValue bIsUnderwater() { return { this, "ADroppedItem.bIsUnderwater" }; } BitFieldValue bNotifyPreviousOwnerOfPickup() { return { this, "ADroppedItem.bNotifyPreviousOwnerOfPickup" }; } + BitFieldValue bAssignedToTribePickupOnly() { return { this, "ADroppedItem.bAssignedToTribePickupOnly" }; } + BitFieldValue bLowQuality() { return { this, "ADroppedItem.bLowQuality" }; } // Functions void Tick(float DeltaSeconds) { NativeCall(this, "ADroppedItem.Tick", DeltaSeconds); } + void LoadedFromSaveGame() { NativeCall(this, "ADroppedItem.LoadedFromSaveGame"); } void Stasis() { NativeCall(this, "ADroppedItem.Stasis"); } - float GetDroppedItemLifeTime(bool bIgnoreTrueBlack, bool bUseGrayscale) { return NativeCall(this, "ADroppedItem.GetDroppedItemLifeTime", bIgnoreTrueBlack, bUseGrayscale); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "ADroppedItem.TryMultiUse", ForPC, UseIndex); } + float GetDroppedItemLifeTime() { return NativeCall(this, "ADroppedItem.GetDroppedItemLifeTime"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "ADroppedItem.TryMultiUse", ForPC, UseIndex); } void BeginPlay() { NativeCall(this, "ADroppedItem.BeginPlay"); } + void SetupDroppedItemLifeSpan() { NativeCall(this, "ADroppedItem.SetupDroppedItemLifeSpan"); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "ADroppedItem.PostNetReceiveLocationAndRotation"); } void FreezePhysics() { NativeCall(this, "ADroppedItem.FreezePhysics"); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "ADroppedItem.DrawHUD", HUD); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "ADroppedItem.GetLifetimeReplicatedProps", OutLifetimeProps); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "ADroppedItem.DrawHUD", HUD); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "ADroppedItem.GetLifetimeReplicatedProps", OutLifetimeProps); } void ForceSleep() { NativeCall(this, "ADroppedItem.ForceSleep"); } void SetupVisuals() { NativeCall(this, "ADroppedItem.SetupVisuals"); } void PreInitializeComponents() { NativeCall(this, "ADroppedItem.PreInitializeComponents"); } + void KeepPhysicsActiveForDuration(float Duration) { NativeCall(this, "ADroppedItem.KeepPhysicsActiveForDuration", Duration); } + static UClass * StaticClass() { return NativeCall(nullptr, "ADroppedItem.StaticClass"); } static void StaticRegisterNativesADroppedItem() { NativeCall(nullptr, "ADroppedItem.StaticRegisterNativesADroppedItem"); } + static UClass * GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ADroppedItem.GetPrivateStaticClass", Package); } + bool IsAllowedToPickupItem(APlayerController * PC) { return NativeCall(this, "ADroppedItem.IsAllowedToPickupItem", PC); } +}; + +struct ADroppedItemEgg : ADroppedItem +{ + float& IndoorsHypoThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.IndoorsHypoThermalInsulation"); } + float& IndoorsHyperThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.IndoorsHyperThermalInsulation"); } + float& EggThermalInsulationTemperatureMultiplierField() { return *GetNativePointerField(this, "ADroppedItemEgg.EggThermalInsulationTemperatureMultiplier"); } + double& LastInsulationCalcTimeField() { return *GetNativePointerField(this, "ADroppedItemEgg.LastInsulationCalcTime"); } + float& HyperThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.HyperThermalInsulation"); } + float& HypoThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.HypoThermalInsulation"); } + + // Bit fields + + BitFieldValue bIsEggTooHot() { return { this, "ADroppedItemEgg.bIsEggTooHot" }; } + BitFieldValue bIsEggTooCold() { return { this, "ADroppedItemEgg.bIsEggTooCold" }; } + + // Functions + + void UpdateEgg(float DeltaSeconds) { NativeCall(this, "ADroppedItemEgg.UpdateEgg", DeltaSeconds); } + void Tick(float DeltaTime) { NativeCall(this, "ADroppedItemEgg.Tick", DeltaTime); } + static UClass* StaticClass() { return NativeCall(nullptr, "ADroppedItemEgg.StaticClass"); } + void Stasis() { NativeCall(this, "ADroppedItemEgg.Stasis"); } + void NetSpawnDinoEmitter() { NativeCall(this, "ADroppedItemEgg.NetSpawnDinoEmitter"); } + void NetSpawnDinoEmitter_Implementation() { NativeCall(this, "ADroppedItemEgg.NetSpawnDinoEmitter_Implementation"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "ADroppedItemEgg.GetPrivateStaticClass"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "ADroppedItemEgg.GetLifetimeReplicatedProps", OutLifetimeProps); } + void CalcInsulation() { NativeCall(this, "ADroppedItemEgg.CalcInsulation"); } + void BeginPlay() { NativeCall(this, "ADroppedItemEgg.BeginPlay"); } }; struct AMatineeActor : AActor @@ -5936,8 +8017,9 @@ struct AMatineeActor : AActor // Functions - void AddActorToGroup(FName GroupName, AActor * TheGroupActor) { NativeCall(this, "AMatineeActor.AddActorToGroup", GroupName, TheGroupActor); } - FName * GetFunctionNameForEvent(FName * result, FName EventName) { return NativeCall(this, "AMatineeActor.GetFunctionNameForEvent", result, EventName); } + static UClass* StaticClass() { return NativeCall(nullptr, "AMatineeActor.StaticClass"); } + void AddActorToGroup(FName GroupName, AActor* TheGroupActor) { NativeCall(this, "AMatineeActor.AddActorToGroup", GroupName, TheGroupActor); } + FName* GetFunctionNameForEvent(FName* result, FName EventName) { return NativeCall(this, "AMatineeActor.GetFunctionNameForEvent", result, EventName); } void NotifyEventTriggered(FName EventName, float EventTime) { NativeCall(this, "AMatineeActor.NotifyEventTriggered", EventName, EventTime); } void Play(float OverrideSetPosition, bool bOverridePositionJump) { NativeCall(this, "AMatineeActor.Play", OverrideSetPosition, bOverridePositionJump); } void Reverse() { NativeCall(this, "AMatineeActor.Reverse"); } @@ -5946,32 +8028,37 @@ struct AMatineeActor : AActor void ChangePlaybackDirection() { NativeCall(this, "AMatineeActor.ChangePlaybackDirection"); } void SetLoopingState(bool bNewLooping) { NativeCall(this, "AMatineeActor.SetLoopingState", bNewLooping); } void SetPosition(float NewPosition, bool bJump, bool bForceJumpFromBeginningForEvents, bool bSkipMatineeUpdate) { NativeCall(this, "AMatineeActor.SetPosition", NewPosition, bJump, bForceJumpFromBeginningForEvents, bSkipMatineeUpdate); } - void AddPlayerToDirectorTracks(APlayerController * PC) { NativeCall(this, "AMatineeActor.AddPlayerToDirectorTracks", PC); } + void AddPlayerToDirectorTracks(APlayerController* PC) { NativeCall(this, "AMatineeActor.AddPlayerToDirectorTracks", PC); } void Tick(float DeltaTime) { NativeCall(this, "AMatineeActor.Tick", DeltaTime); } void UpdateStreamingForCameraCuts(float CurrentTime, bool bPreview) { NativeCall(this, "AMatineeActor.UpdateStreamingForCameraCuts", CurrentTime, bPreview); } void UpdateInterp(float NewPosition, bool bPreview, bool bJump, bool bSkipMatineeUpdate) { NativeCall(this, "AMatineeActor.UpdateInterp", NewPosition, bPreview, bJump, bSkipMatineeUpdate); } void InitInterp() { NativeCall(this, "AMatineeActor.InitInterp"); } void TermInterp() { NativeCall(this, "AMatineeActor.TermInterp"); } void SetupCameraCuts() { NativeCall(this, "AMatineeActor.SetupCameraCuts"); } - bool IsMatineeCompatibleWithPlayer(APlayerController * InPC) { return NativeCall(this, "AMatineeActor.IsMatineeCompatibleWithPlayer", InPC); } + bool IsMatineeCompatibleWithPlayer(APlayerController* InPC) { return NativeCall(this, "AMatineeActor.IsMatineeCompatibleWithPlayer", InPC); } void StepInterp(float DeltaTime, bool bPreview) { NativeCall(this, "AMatineeActor.StepInterp", DeltaTime, bPreview); } void EnableCinematicMode(bool bEnable) { NativeCall(this, "AMatineeActor.EnableCinematicMode", bEnable); } - void PostLoadSubobjects(FObjectInstancingGraph * OuterInstanceGraph) { NativeCall(this, "AMatineeActor.PostLoadSubobjects", OuterInstanceGraph); } + void PostLoadSubobjects(FObjectInstancingGraph* OuterInstanceGraph) { NativeCall(this, "AMatineeActor.PostLoadSubobjects", OuterInstanceGraph); } void UpdateReplicatedData(bool bIsBeginningPlay) { NativeCall(this, "AMatineeActor.UpdateReplicatedData", bIsBeginningPlay); } void BeginPlay() { NativeCall(this, "AMatineeActor.BeginPlay"); } - void ApplyWorldOffset(FVector * InOffset, bool bWorldShift) { NativeCall(this, "AMatineeActor.ApplyWorldOffset", InOffset, bWorldShift); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "AMatineeActor.ApplyWorldOffset", InOffset, bWorldShift); } void CheckPriorityRefresh() { NativeCall(this, "AMatineeActor.CheckPriorityRefresh"); } void PostInitializeComponents() { NativeCall(this, "AMatineeActor.PostInitializeComponents"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AMatineeActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AMatineeActor.GetLifetimeReplicatedProps", OutLifetimeProps); } void PreNetReceive() { NativeCall(this, "AMatineeActor.PreNetReceive"); } void PostNetReceive() { NativeCall(this, "AMatineeActor.PostNetReceive"); } void InitClientMatinee() { NativeCall(this, "AMatineeActor.InitClientMatinee"); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AMatineeActor.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AMatineeActor.GetPrivateStaticClass", Package); } +}; + +struct UMovementComponent : UActorComponent +{ + FVector& VelocityField() { return *GetNativePointerField(this, "UMovementComponent.Velocity"); } }; -struct UCharacterMovementComponent +struct UCharacterMovementComponent : UMovementComponent { - ACharacter * CharacterOwnerField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CharacterOwner"); } + ACharacter * CharacterOwnerField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CharacterOwner"); } float& MaxStepHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxStepHeight"); } float& JumpZVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpZVelocity"); } float& JumpOffJumpZFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpOffJumpZFactor"); } @@ -5981,14 +8068,16 @@ struct UCharacterMovementComponent float& LedgeSlipVelocityBuildUpMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeSlipVelocityBuildUpMultiplier"); } float& WalkableFloorAngleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WalkableFloorAngle"); } float& WalkableFloorZField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WalkableFloorZ"); } - TEnumAsByte& MovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.MovementMode"); } + long double& TimeLastAppliedImpulseField() { return *GetNativePointerField(this, "UCharacterMovementComponent.TimeLastAppliedImpulse"); } + TEnumAsByte & MovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.MovementMode"); } char& CustomMovementModeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CustomMovementMode"); } - FVector& OldBaseLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseLocation"); } - FQuat& OldBaseQuatField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseQuat"); } + FVector & OldBaseLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseLocation"); } + FQuat & OldBaseQuatField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseQuat"); } long double& LastNonZeroAccelField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastNonZeroAccel"); } float& CurrentLedgeSlipPushVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CurrentLedgeSlipPushVelocity"); } int& LastFrameDisabledFloorBasingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastFrameDisabledFloorBasing"); } long double& ForceBigPushingTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ForceBigPushingTime"); } + long double& LastClientMoveTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastClientMoveTime"); } float& GravityScaleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.GravityScale"); } float& GroundFrictionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.GroundFriction"); } float& MaxWalkSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxWalkSpeed"); } @@ -6017,8 +8106,8 @@ struct UCharacterMovementComponent float& BuoyancyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Buoyancy"); } float& PerchRadiusThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PerchRadiusThreshold"); } float& PerchAdditionalHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PerchAdditionalHeight"); } - FRotator& RotationRateField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RotationRate"); } - UPrimitiveComponent * DeferredUpdatedMoveComponentField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DeferredUpdatedMoveComponent"); } + FRotator & RotationRateField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RotationRate"); } + UPrimitiveComponent * DeferredUpdatedMoveComponentField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DeferredUpdatedMoveComponent"); } float& MaxOutOfWaterStepHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxOutOfWaterStepHeight"); } float& OutofWaterZField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OutofWaterZ"); } float& MassField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Mass"); } @@ -6038,21 +8127,21 @@ struct UCharacterMovementComponent float& MinTouchForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MinTouchForce"); } float& MaxTouchForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxTouchForce"); } float& RepulsionForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RepulsionForce"); } - FVector& LastUpdateLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastUpdateLocation"); } - FVector& MoveStartLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MoveStartLocation"); } + FVector & LastUpdateLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastUpdateLocation"); } + FVector & MoveStartLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MoveStartLocation"); } float& AnalogInputModifierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AnalogInputModifier"); } float& BackwardsMaxSpeedMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BackwardsMaxSpeedMultiplier"); } float& BackwardsMovementDotThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BackwardsMovementDotThreshold"); } - FVector& PendingForceToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingForceToApply"); } - FVector& PendingImpulseToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingImpulseToApply"); } - FVector& AccelerationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Acceleration"); } + FVector & PendingForceToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingForceToApply"); } + FVector & PendingImpulseToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingImpulseToApply"); } + FVector & AccelerationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Acceleration"); } float& MaxSimulationTimeStepField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxSimulationTimeStep"); } int& MaxSimulationIterationsField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxSimulationIterations"); } float& LedgeCheckThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeCheckThreshold"); } float& JumpOutOfWaterPitchField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpOutOfWaterPitch"); } float& UpperImpactNormalScaleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.UpperImpactNormalScale"); } - TEnumAsByte& DefaultLandMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultLandMovementMode"); } - TEnumAsByte& DefaultWaterMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultWaterMovementMode"); } + TEnumAsByte & DefaultLandMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultLandMovementMode"); } + TEnumAsByte & DefaultWaterMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultWaterMovementMode"); } float& PreventWaterHoppingPlaneOffsetField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PreventWaterHoppingPlaneOffset"); } long double& PreventWaterHopping_LastTimeAtSurfaceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PreventWaterHopping_LastTimeAtSurface"); } float& AccelerationFollowsRotationMinDotField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AccelerationFollowsRotationMinDot"); } @@ -6064,28 +8153,33 @@ struct UCharacterMovementComponent float& TamedSwimmingAccelZMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.TamedSwimmingAccelZMultiplier"); } bool& bHACKTickedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bHACKTicked"); } bool& bHackTestDisableRotationCodeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bHackTestDisableRotationCode"); } - FVector& LastForcedNetVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastForcedNetVelocity"); } + FVector & LastForcedNetVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastForcedNetVelocity"); } long double& LastStepUpTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastStepUpTime"); } int& BadFloorPenetrationCountField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BadFloorPenetrationCount"); } - FVector& AvoidanceLockVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceLockVelocity"); } + FVector & AvoidanceLockVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceLockVelocity"); } float& AvoidanceLockTimerField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceLockTimer"); } long double& LastSkippedMoveTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastSkippedMoveTime"); } long double& LastSwimTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastSwimTime"); } - FRotator& CurrentRotationSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CurrentRotationSpeed"); } - FVector& RequestedVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RequestedVelocity"); } + FRotator & CurrentRotationSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CurrentRotationSpeed"); } + FVector & RequestedVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RequestedVelocity"); } long double& DisableMovementPhysicsUntilTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DisableMovementPhysicsUntilTime"); } float& LostDeltaTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LostDeltaTime"); } float& LastLostDeltaTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastLostDeltaTime"); } int& AvoidanceUIDField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceUID"); } float& AvoidanceWeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceWeight"); } - FVector& PendingLaunchVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingLaunchVelocity"); } + FVector & PendingLaunchVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingLaunchVelocity"); } + FNetworkPredictionData_Client_Character * ClientPredictionDataField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ClientPredictionData"); } + FNetworkPredictionData_Server_Character * ServerPredictionDataField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ServerPredictionData"); } + TArray & PendingAsyncTracesField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.PendingAsyncTraces"); } float& MinTimeBetweenTimeStampResetsField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MinTimeBetweenTimeStampResets"); } + TArray & ClientMovedDataField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.ClientMovedData"); } bool& bWasSimulatingRootMotionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bWasSimulatingRootMotion"); } - FVector& LastCheckedFloorAtRelativeLocField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastCheckedFloorAtRelativeLoc"); } + FVector & LastCheckedFloorAtRelativeLocField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastCheckedFloorAtRelativeLoc"); } // Bit fields BitFieldValue bReplicateRelativeToAttachedParent() { return { this, "UCharacterMovementComponent.bReplicateRelativeToAttachedParent" }; } + BitFieldValue bFindFloorOnce() { return { this, "UCharacterMovementComponent.bFindFloorOnce" }; } BitFieldValue bPreventExitingWaterForceExtraOverlap() { return { this, "UCharacterMovementComponent.bPreventExitingWaterForceExtraOverlap" }; } BitFieldValue bUseControllerDesiredRotation() { return { this, "UCharacterMovementComponent.bUseControllerDesiredRotation" }; } BitFieldValue bRequireAccelerationForUseControllerDesiredRotation() { return { this, "UCharacterMovementComponent.bRequireAccelerationForUseControllerDesiredRotation" }; } @@ -6096,6 +8190,7 @@ struct UCharacterMovementComponent BitFieldValue bReduceBackwardsMovement() { return { this, "UCharacterMovementComponent.bReduceBackwardsMovement" }; } BitFieldValue bUseAsyncWalking() { return { this, "UCharacterMovementComponent.bUseAsyncWalking" }; } BitFieldValue bAllowSimulatedTickDistanceSkip() { return { this, "UCharacterMovementComponent.bAllowSimulatedTickDistanceSkip" }; } + BitFieldValue bUseBPAcknowledgeServerCorrection() { return { this, "UCharacterMovementComponent.bUseBPAcknowledgeServerCorrection" }; } BitFieldValue bAllowImpactDeflection() { return { this, "UCharacterMovementComponent.bAllowImpactDeflection" }; } BitFieldValue bDisableSimulatedMovement() { return { this, "UCharacterMovementComponent.bDisableSimulatedMovement" }; } BitFieldValue bLastAllowSimulate() { return { this, "UCharacterMovementComponent.bLastAllowSimulate" }; } @@ -6114,6 +8209,7 @@ struct UCharacterMovementComponent BitFieldValue bCanWalkOffLedges() { return { this, "UCharacterMovementComponent.bCanWalkOffLedges" }; } BitFieldValue bCanWalkOffLedgesWhenCrouching() { return { this, "UCharacterMovementComponent.bCanWalkOffLedgesWhenCrouching" }; } BitFieldValue bDeferUpdateMoveComponent() { return { this, "UCharacterMovementComponent.bDeferUpdateMoveComponent" }; } + BitFieldValue bUseRootMotionForLocomotion() { return { this, "UCharacterMovementComponent.bUseRootMotionForLocomotion" }; } BitFieldValue bForceBraking_DEPRECATED() { return { this, "UCharacterMovementComponent.bForceBraking_DEPRECATED" }; } BitFieldValue bMaintainHorizontalGroundVelocity() { return { this, "UCharacterMovementComponent.bMaintainHorizontalGroundVelocity" }; } BitFieldValue bImpartBaseVelocityX() { return { this, "UCharacterMovementComponent.bImpartBaseVelocityX" }; } @@ -6138,6 +8234,7 @@ struct UCharacterMovementComponent BitFieldValue bAccelerationFollowsRotation() { return { this, "UCharacterMovementComponent.bAccelerationFollowsRotation" }; } BitFieldValue bPreventWaterSurfaceHopping() { return { this, "UCharacterMovementComponent.bPreventWaterSurfaceHopping" }; } BitFieldValue bCheckFallingAITempIgnoreDinoRiderMesh() { return { this, "UCharacterMovementComponent.bCheckFallingAITempIgnoreDinoRiderMesh" }; } + BitFieldValue bAlwaysCheckForInvallidFloor() { return { this, "UCharacterMovementComponent.bAlwaysCheckForInvallidFloor" }; } BitFieldValue bFallingAITempIgnoreDinoRiderMesh() { return { this, "UCharacterMovementComponent.bFallingAITempIgnoreDinoRiderMesh" }; } BitFieldValue bUseRotationAcceleration() { return { this, "UCharacterMovementComponent.bUseRotationAcceleration" }; } BitFieldValue bIgnoreRotationAccelerationWhenSwimming() { return { this, "UCharacterMovementComponent.bIgnoreRotationAccelerationWhenSwimming" }; } @@ -6158,56 +8255,57 @@ struct UCharacterMovementComponent bool HasPredictionData_Server() { return NativeCall(this, "UCharacterMovementComponent.HasPredictionData_Server"); } bool HasPredictionData_Client() { return NativeCall(this, "UCharacterMovementComponent.HasPredictionData_Client"); } - UObject * GetUObjectInterfaceNetworkPredictionInterface() { return NativeCall(this, "UCharacterMovementComponent.GetUObjectInterfaceNetworkPredictionInterface"); } + UObject * GetUObjectInterfaceNetworkPredictionInterface() { return NativeCall(this, "UCharacterMovementComponent.GetUObjectInterfaceNetworkPredictionInterface"); } float GetJumpZVelocity() { return NativeCall(this, "UCharacterMovementComponent.GetJumpZVelocity"); } void OnUnregister() { NativeCall(this, "UCharacterMovementComponent.OnUnregister"); } void PostLoad() { NativeCall(this, "UCharacterMovementComponent.PostLoad"); } void OnRegister() { NativeCall(this, "UCharacterMovementComponent.OnRegister"); } void BeginDestroy() { NativeCall(this, "UCharacterMovementComponent.BeginDestroy"); } - void SetUpdatedComponent(UPrimitiveComponent * NewUpdatedComponent) { NativeCall(this, "UCharacterMovementComponent.SetUpdatedComponent", NewUpdatedComponent); } + void SetUpdatedComponent(UPrimitiveComponent * NewUpdatedComponent) { NativeCall(this, "UCharacterMovementComponent.SetUpdatedComponent", NewUpdatedComponent); } bool HasValidData() { return NativeCall(this, "UCharacterMovementComponent.HasValidData"); } bool DoJump(bool bReplayingMoves) { return NativeCall(this, "UCharacterMovementComponent.DoJump", bReplayingMoves); } - FVector * GetImpartedMovementBaseVelocity(FVector * result) { return NativeCall(this, "UCharacterMovementComponent.GetImpartedMovementBaseVelocity", result); } - void Launch(FVector * LaunchVel, bool bNoLowerVelocity) { NativeCall(this, "UCharacterMovementComponent.Launch", LaunchVel, bNoLowerVelocity); } + FVector * GetImpartedMovementBaseVelocity(FVector * result) { return NativeCall(this, "UCharacterMovementComponent.GetImpartedMovementBaseVelocity", result); } + void Launch(FVector * LaunchVel, bool bNoLowerVelocity) { NativeCall(this, "UCharacterMovementComponent.Launch", LaunchVel, bNoLowerVelocity); } bool HandlePendingLaunch() { return NativeCall(this, "UCharacterMovementComponent.HandlePendingLaunch"); } - void JumpOff(AActor * MovementBaseActor) { NativeCall(this, "UCharacterMovementComponent.JumpOff", MovementBaseActor); } - FVector * GetBestDirectionOffActor(FVector * result, AActor * BaseActor) { return NativeCall(this, "UCharacterMovementComponent.GetBestDirectionOffActor", result, BaseActor); } + void JumpOff(AActor * MovementBaseActor) { NativeCall(this, "UCharacterMovementComponent.JumpOff", MovementBaseActor); } + FVector * GetBestDirectionOffActor(FVector * result, AActor * BaseActor) { return NativeCall(this, "UCharacterMovementComponent.GetBestDirectionOffActor", result, BaseActor); } float GetNetworkSafeRandomAngleDegrees() { return NativeCall(this, "UCharacterMovementComponent.GetNetworkSafeRandomAngleDegrees"); } void SetDefaultMovementMode() { NativeCall(this, "UCharacterMovementComponent.SetDefaultMovementMode"); } void SetMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { NativeCall(this, "UCharacterMovementComponent.SetMovementMode", NewMovementMode, NewCustomMode); } void OnMovementModeChanged(EMovementMode PreviousMovementMode, char PreviousCustomMode) { NativeCall(this, "UCharacterMovementComponent.OnMovementModeChanged", PreviousMovementMode, PreviousCustomMode); } + bool MoveUpdatedComponentImpl(FVector * Delta, FQuat * NewRotation, bool bSweep, FHitResult * OutHit) { return NativeCall(this, "UCharacterMovementComponent.MoveUpdatedComponentImpl", Delta, NewRotation, bSweep, OutHit); } + char PackNetworkMovementMode() { return NativeCall(this, "UCharacterMovementComponent.PackNetworkMovementMode"); } void ApplyNetworkMovementMode(const char ReceivedMode) { NativeCall(this, "UCharacterMovementComponent.ApplyNetworkMovementMode", ReceivedMode); } void PerformAirControl(FVector Direction, float ZDiff) { NativeCall(this, "UCharacterMovementComponent.PerformAirControl", Direction, ZDiff); } void PerformAirControlForPathFollowing(FVector Direction, float ZDiff) { NativeCall(this, "UCharacterMovementComponent.PerformAirControlForPathFollowing", Direction, ZDiff); } void ExecuteStoredMoves() { NativeCall(this, "UCharacterMovementComponent.ExecuteStoredMoves"); } void AdjustProxyCapsuleSize() { NativeCall(this, "UCharacterMovementComponent.AdjustProxyCapsuleSize"); } void SimulatedTick(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.SimulatedTick", DeltaSeconds); } - void SimulateRootMotion(float DeltaSeconds, FTransform * LocalRootMotionTransform) { NativeCall(this, "UCharacterMovementComponent.SimulateRootMotion", DeltaSeconds, LocalRootMotionTransform); } void SimulateMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.SimulateMovement", DeltaSeconds); } - UPrimitiveComponent * GetMovementBase() { return NativeCall(this, "UCharacterMovementComponent.GetMovementBase"); } - void SetBase(UPrimitiveComponent * NewBase, FName BoneName, bool bNotifyActor) { NativeCall(this, "UCharacterMovementComponent.SetBase", NewBase, BoneName, bNotifyActor); } + UPrimitiveComponent * GetMovementBase() { return NativeCall(this, "UCharacterMovementComponent.GetMovementBase"); } + void SetBase(UPrimitiveComponent * NewBase, FName BoneName, bool bNotifyActor) { NativeCall(this, "UCharacterMovementComponent.SetBase", NewBase, BoneName, bNotifyActor); } void MaybeUpdateBasedMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.MaybeUpdateBasedMovement", DeltaSeconds); } void MaybeSaveBaseLocation() { NativeCall(this, "UCharacterMovementComponent.MaybeSaveBaseLocation"); } void UpdateBasedMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.UpdateBasedMovement", DeltaSeconds); } - void UpdateBasedRotation(FRotator * FinalRotation, FRotator * ReducedRotation) { NativeCall(this, "UCharacterMovementComponent.UpdateBasedRotation", FinalRotation, ReducedRotation); } + void UpdateBasedRotation(FRotator * FinalRotation, FRotator * ReducedRotation) { NativeCall(this, "UCharacterMovementComponent.UpdateBasedRotation", FinalRotation, ReducedRotation); } void DisableMovement() { NativeCall(this, "UCharacterMovementComponent.DisableMovement"); } void PerformMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.PerformMovement", DeltaSeconds); } - void CallMovementUpdateDelegate(float DeltaTime, FVector * OldLocation, FVector * OldVelocity) { NativeCall(this, "UCharacterMovementComponent.CallMovementUpdateDelegate", DeltaTime, OldLocation, OldVelocity); } + void CallMovementUpdateDelegate(float DeltaTime, FVector * OldLocation, FVector * OldVelocity) { NativeCall(this, "UCharacterMovementComponent.CallMovementUpdateDelegate", DeltaTime, OldLocation, OldVelocity); } void SaveBaseLocation() { NativeCall(this, "UCharacterMovementComponent.SaveBaseLocation"); } bool CanCrouchInCurrentState() { return NativeCall(this, "UCharacterMovementComponent.CanCrouchInCurrentState"); } - bool CanProneInCurrentState() { return NativeCall(this, "UCharacterMovementComponent.CanProneInCurrentState"); } + bool IsWalking() { return NativeCall(this, "UCharacterMovementComponent.IsWalking"); } void Crouch(bool bClientSimulation) { NativeCall(this, "UCharacterMovementComponent.Crouch", bClientSimulation); } void UnCrouch(bool bClientSimulation, bool bForce) { NativeCall(this, "UCharacterMovementComponent.UnCrouch", bClientSimulation, bForce); } void StartNewPhysics(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.StartNewPhysics", deltaTime, Iterations); } float GetGravityZ() { return NativeCall(this, "UCharacterMovementComponent.GetGravityZ"); } float GetMaxSpeed() { return NativeCall(this, "UCharacterMovementComponent.GetMaxSpeed"); } - bool ResolvePenetrationImpl(FVector * Adjustment, FHitResult * Hit, FQuat * NewRotation) { return NativeCall(this, "UCharacterMovementComponent.ResolvePenetrationImpl", Adjustment, Hit, NewRotation); } - float SlideAlongSurface(FVector * Delta, float Time, FVector * InNormal, FHitResult * Hit, bool bHandleImpact) { return NativeCall(this, "UCharacterMovementComponent.SlideAlongSurface", Delta, Time, InNormal, Hit, bHandleImpact); } - void TwoWallAdjust(FVector * Delta, FHitResult * Hit, FVector * OldHitNormal) { NativeCall(this, "UCharacterMovementComponent.TwoWallAdjust", Delta, Hit, OldHitNormal); } - FVector * ComputeSlideVector(FVector * result, FVector * InDelta, const float Time, FVector * Normal, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.ComputeSlideVector", result, InDelta, Time, Normal, Hit); } - FVector * HandleSlopeBoosting(FVector * result, FVector * SlideResult, FVector * Delta, const float Time, FVector * Normal, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.HandleSlopeBoosting", result, SlideResult, Delta, Time, Normal, Hit); } - FVector * AdjustUpperHemisphereImpact(FVector * result, FVector * Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.AdjustUpperHemisphereImpact", result, Delta, Hit); } - FVector * NewFallVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.NewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } + bool ResolvePenetrationImpl(FVector * Adjustment, FHitResult * Hit, FQuat * NewRotation) { return NativeCall(this, "UCharacterMovementComponent.ResolvePenetrationImpl", Adjustment, Hit, NewRotation); } + float SlideAlongSurface(FVector * Delta, float Time, FVector * InNormal, FHitResult * Hit, bool bHandleImpact) { return NativeCall(this, "UCharacterMovementComponent.SlideAlongSurface", Delta, Time, InNormal, Hit, bHandleImpact); } + void TwoWallAdjust(FVector * Delta, FHitResult * Hit, FVector * OldHitNormal) { NativeCall(this, "UCharacterMovementComponent.TwoWallAdjust", Delta, Hit, OldHitNormal); } + FVector * ComputeSlideVector(FVector * result, FVector * InDelta, const float Time, FVector * Normal, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.ComputeSlideVector", result, InDelta, Time, Normal, Hit); } + FVector * HandleSlopeBoosting(FVector * result, FVector * SlideResult, FVector * Delta, const float Time, FVector * Normal, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.HandleSlopeBoosting", result, SlideResult, Delta, Time, Normal, Hit); } + FVector * AdjustUpperHemisphereImpact(FVector * result, FVector * Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.AdjustUpperHemisphereImpact", result, Delta, Hit); } + FVector * NewFallVelocity(FVector * result, FVector * InitialVelocity, FVector * Gravity, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.NewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } float ImmersionDepth(bool bUseLineTrace) { return NativeCall(this, "UCharacterMovementComponent.ImmersionDepth", bUseLineTrace); } bool IsFlying() { return NativeCall(this, "UCharacterMovementComponent.IsFlying"); } bool IsMovingOnGround() { return NativeCall(this, "UCharacterMovementComponent.IsMovingOnGround"); } @@ -6216,10 +8314,10 @@ struct UCharacterMovementComponent bool IsCrouching() { return NativeCall(this, "UCharacterMovementComponent.IsCrouching"); } bool IsProne() { return NativeCall(this, "UCharacterMovementComponent.IsProne"); } void CalcVelocity(float DeltaTime, float Friction, bool bFluid, float BrakingDeceleration) { NativeCall(this, "UCharacterMovementComponent.CalcVelocity", DeltaTime, Friction, bFluid, BrakingDeceleration); } - bool ApplyRequestedMove(float DeltaTime, float MaxAccel, float MaxSpeed, float Friction, float BrakingDeceleration, FVector * OutAcceleration, float * OutRequestedSpeed) { return NativeCall(this, "UCharacterMovementComponent.ApplyRequestedMove", DeltaTime, MaxAccel, MaxSpeed, Friction, BrakingDeceleration, OutAcceleration, OutRequestedSpeed); } - void RequestDirectMove(FVector * MoveVelocity, bool bForceMaxSpeed) { NativeCall(this, "UCharacterMovementComponent.RequestDirectMove", MoveVelocity, bForceMaxSpeed); } + bool ApplyRequestedMove(float DeltaTime, float MaxAccel, float MaxSpeed, float Friction, float BrakingDeceleration, FVector * OutAcceleration, float* OutRequestedSpeed) { return NativeCall(this, "UCharacterMovementComponent.ApplyRequestedMove", DeltaTime, MaxAccel, MaxSpeed, Friction, BrakingDeceleration, OutAcceleration, OutRequestedSpeed); } + void RequestDirectMove(FVector * MoveVelocity, bool bForceMaxSpeed) { NativeCall(this, "UCharacterMovementComponent.RequestDirectMove", MoveVelocity, bForceMaxSpeed); } bool CanStopPathFollowing() { return NativeCall(this, "UCharacterMovementComponent.CanStopPathFollowing"); } - void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "UCharacterMovementComponent.NotifyBumpedPawn", BumpedPawn); } + void NotifyBumpedPawn(APawn * BumpedPawn) { NativeCall(this, "UCharacterMovementComponent.NotifyBumpedPawn", BumpedPawn); } float GetMaxJumpHeight() { return NativeCall(this, "UCharacterMovementComponent.GetMaxJumpHeight"); } float GetModifiedMaxAcceleration() { return NativeCall(this, "UCharacterMovementComponent.GetModifiedMaxAcceleration"); } float K2_GetModifiedMaxAcceleration() { return NativeCall(this, "UCharacterMovementComponent.K2_GetModifiedMaxAcceleration"); } @@ -6229,96 +8327,125 @@ struct UCharacterMovementComponent void PhysFlying(float deltaTime, int Iterations, float friction, float brakingDeceleration) { NativeCall(this, "UCharacterMovementComponent.PhysFlying", deltaTime, Iterations, friction, brakingDeceleration); } void PhysSwimming(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysSwimming", deltaTime, Iterations); } void StartSwimming(FVector OldLocation, FVector OldVelocity, float timeTick, float remainingTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.StartSwimming", OldLocation, OldVelocity, timeTick, remainingTime, Iterations); } - float Swim(FVector Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.Swim", Delta, Hit); } - FVector * FindWaterLine(FVector * result, FVector InWater, FVector OutofWater) { return NativeCall(this, "UCharacterMovementComponent.FindWaterLine", result, InWater, OutofWater); } + float Swim(FVector Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.Swim", Delta, Hit); } + FVector * FindWaterLine(FVector * result, FVector InWater, FVector OutofWater) { return NativeCall(this, "UCharacterMovementComponent.FindWaterLine", result, InWater, OutofWater); } void NotifyJumpApex() { NativeCall(this, "UCharacterMovementComponent.NotifyJumpApex"); } - FVector * GetFallingLateralAcceleration(FVector * result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetFallingLateralAcceleration", result, DeltaTime); } - float GetAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.GetAirControl", DeltaTime, TickAirControl, FallAcceleration); } - float BoostAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.BoostAirControl", DeltaTime, TickAirControl, FallAcceleration); } + FVector * GetFallingLateralAcceleration(FVector * result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetFallingLateralAcceleration", result, DeltaTime); } + float GetAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.GetAirControl", DeltaTime, TickAirControl, FallAcceleration); } + float BoostAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.BoostAirControl", DeltaTime, TickAirControl, FallAcceleration); } void PhysFalling(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysFalling", deltaTime, Iterations); } - bool FindAirControlImpact(float DeltaTime, float TickAirControl, FVector * FallAcceleration, FHitResult * OutHitResult) { return NativeCall(this, "UCharacterMovementComponent.FindAirControlImpact", DeltaTime, TickAirControl, FallAcceleration, OutHitResult); } - float LimitAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration, FHitResult * HitResult) { return NativeCall(this, "UCharacterMovementComponent.LimitAirControl", DeltaTime, TickAirControl, FallAcceleration, HitResult); } - bool CheckLedgeDirection(FVector * OldLocation, FVector * SideStep, FVector * GravDir) { return NativeCall(this, "UCharacterMovementComponent.CheckLedgeDirection", OldLocation, SideStep, GravDir); } - FVector * GetLedgeMove(FVector * result, FVector * OldLocation, FVector * Delta, FVector * GravDir) { return NativeCall(this, "UCharacterMovementComponent.GetLedgeMove", result, OldLocation, Delta, GravDir); } + bool FindAirControlImpact(float DeltaTime, float TickAirControl, FVector * FallAcceleration, FHitResult * OutHitResult) { return NativeCall(this, "UCharacterMovementComponent.FindAirControlImpact", DeltaTime, TickAirControl, FallAcceleration, OutHitResult); } + float LimitAirControl(float DeltaTime, float TickAirControl, FVector * FallAcceleration, FHitResult * HitResult) { return NativeCall(this, "UCharacterMovementComponent.LimitAirControl", DeltaTime, TickAirControl, FallAcceleration, HitResult); } + bool CheckLedgeDirection(FVector * OldLocation, FVector * SideStep, FVector * GravDir) { return NativeCall(this, "UCharacterMovementComponent.CheckLedgeDirection", OldLocation, SideStep, GravDir); } + FVector * GetLedgeMove(FVector * result, FVector * OldLocation, FVector * Delta, FVector * GravDir) { return NativeCall(this, "UCharacterMovementComponent.GetLedgeMove", result, OldLocation, Delta, GravDir); } bool CanWalkOffLedges() { return NativeCall(this, "UCharacterMovementComponent.CanWalkOffLedges"); } - bool CheckFall(FHitResult * Hit, FVector Delta, FVector subLoc, float remainingTime, float timeTick, int Iterations, bool bMustJump) { return NativeCall(this, "UCharacterMovementComponent.CheckFall", Hit, Delta, subLoc, remainingTime, timeTick, Iterations, bMustJump); } - void StartFalling(int Iterations, float remainingTime, float timeTick, FVector * Delta, FVector * subLoc) { NativeCall(this, "UCharacterMovementComponent.StartFalling", Iterations, remainingTime, timeTick, Delta, subLoc); } - FVector * ComputeGroundMovementDelta(FVector * result, FVector * Delta, FHitResult * RampHit, const bool bHitFromLineTrace) { return NativeCall(this, "UCharacterMovementComponent.ComputeGroundMovementDelta", result, Delta, RampHit, bHitFromLineTrace); } + bool CheckFall(FHitResult * Hit, FVector Delta, FVector subLoc, float remainingTime, float timeTick, int Iterations, bool bMustJump) { return NativeCall(this, "UCharacterMovementComponent.CheckFall", Hit, Delta, subLoc, remainingTime, timeTick, Iterations, bMustJump); } + void StartFalling(int Iterations, float remainingTime, float timeTick, FVector * Delta, FVector * subLoc) { NativeCall(this, "UCharacterMovementComponent.StartFalling", Iterations, remainingTime, timeTick, Delta, subLoc); } + FVector * ComputeGroundMovementDelta(FVector * result, FVector * Delta, FHitResult * RampHit, const bool bHitFromLineTrace) { return NativeCall(this, "UCharacterMovementComponent.ComputeGroundMovementDelta", result, Delta, RampHit, bHitFromLineTrace); } void MaintainHorizontalGroundVelocity() { NativeCall(this, "UCharacterMovementComponent.MaintainHorizontalGroundVelocity"); } bool PhysWalkingAsync(float deltaTime, int Iterations) { return NativeCall(this, "UCharacterMovementComponent.PhysWalkingAsync", deltaTime, Iterations); } void PhysWalking(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysWalking", deltaTime, Iterations); } void PhysCustom(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysCustom", deltaTime, Iterations); } void AdjustFloorHeight() { NativeCall(this, "UCharacterMovementComponent.AdjustFloorHeight"); } void StopActiveMovement() { NativeCall(this, "UCharacterMovementComponent.StopActiveMovement"); } - void ProcessLanded(FHitResult * Hit, float remainingTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.ProcessLanded", Hit, remainingTime, Iterations); } - void SetPostLandedPhysics(FHitResult * Hit) { NativeCall(this, "UCharacterMovementComponent.SetPostLandedPhysics", Hit); } + void ProcessLanded(FHitResult * Hit, float remainingTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.ProcessLanded", Hit, remainingTime, Iterations); } + void SetPostLandedPhysics(FHitResult * Hit) { NativeCall(this, "UCharacterMovementComponent.SetPostLandedPhysics", Hit); } void OnTeleported() { NativeCall(this, "UCharacterMovementComponent.OnTeleported"); } - FRotator * GetDeltaRotation(FRotator * result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetDeltaRotation", result, DeltaTime); } - FRotator * ComputeOrientToMovementRotation(FRotator * result, FRotator * CurrentRotation, float DeltaTime, FRotator * DeltaRotation) { return NativeCall(this, "UCharacterMovementComponent.ComputeOrientToMovementRotation", result, CurrentRotation, DeltaTime, DeltaRotation); } + FRotator * GetDeltaRotation(FRotator * result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetDeltaRotation", result, DeltaTime); } + FRotator * ComputeOrientToMovementRotation(FRotator * result, FRotator * CurrentRotation, float DeltaTime, FRotator * DeltaRotation) { return NativeCall(this, "UCharacterMovementComponent.ComputeOrientToMovementRotation", result, CurrentRotation, DeltaTime, DeltaRotation); } void PhysicsRotation(float DeltaTime) { NativeCall(this, "UCharacterMovementComponent.PhysicsRotation", DeltaTime); } - bool ShouldJumpOutOfWater(FVector * JumpDir) { return NativeCall(this, "UCharacterMovementComponent.ShouldJumpOutOfWater", JumpDir); } + bool ShouldJumpOutOfWater(FVector * JumpDir) { return NativeCall(this, "UCharacterMovementComponent.ShouldJumpOutOfWater", JumpDir); } void ServerJumpOutOfWater_Implementation(FVector_NetQuantize100 WallNormal, char JumpFlag) { NativeCall(this, "UCharacterMovementComponent.ServerJumpOutOfWater_Implementation", WallNormal, JumpFlag); } - bool CheckWaterJump(FVector CheckPoint, FVector * WallNormal) { return NativeCall(this, "UCharacterMovementComponent.CheckWaterJump", CheckPoint, WallNormal); } + bool CheckWaterJump(FVector CheckPoint, FVector * WallNormal) { return NativeCall(this, "UCharacterMovementComponent.CheckWaterJump", CheckPoint, WallNormal); } void AddImpulse(FVector Impulse, bool bVelocityChange, float MassScaleImpulseExponent, bool bOverrideMaxImpulseZ) { NativeCall(this, "UCharacterMovementComponent.AddImpulse", Impulse, bVelocityChange, MassScaleImpulseExponent, bOverrideMaxImpulseZ); } void AddForce(FVector Force) { NativeCall(this, "UCharacterMovementComponent.AddForce", Force); } - bool IsWalkable(FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.IsWalkable", Hit); } + bool IsWalkable(FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.IsWalkable", Hit); } void SetWalkableFloorZ(float InWalkableFloorZ) { NativeCall(this, "UCharacterMovementComponent.SetWalkableFloorZ", InWalkableFloorZ); } - bool IsWithinEdgeTolerance(FVector * CapsuleLocation, FVector * TestImpactPoint, const float CapsuleRadius) { return NativeCall(this, "UCharacterMovementComponent.IsWithinEdgeTolerance", CapsuleLocation, TestImpactPoint, CapsuleRadius); } - bool IsValidLandingSpot(FVector * CapsuleLocation, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.IsValidLandingSpot", CapsuleLocation, Hit); } - bool ShouldCheckForValidLandingSpot(float DeltaTime, FVector * Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.ShouldCheckForValidLandingSpot", DeltaTime, Delta, Hit); } + bool IsWithinEdgeTolerance(FVector * CapsuleLocation, FVector * TestImpactPoint, const float CapsuleRadius) { return NativeCall(this, "UCharacterMovementComponent.IsWithinEdgeTolerance", CapsuleLocation, TestImpactPoint, CapsuleRadius); } + bool IsValidLandingSpot(FVector * CapsuleLocation, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.IsValidLandingSpot", CapsuleLocation, Hit); } + bool ShouldCheckForValidLandingSpot(float DeltaTime, FVector * Delta, FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.ShouldCheckForValidLandingSpot", DeltaTime, Delta, Hit); } float GetPerchRadiusThreshold() { return NativeCall(this, "UCharacterMovementComponent.GetPerchRadiusThreshold"); } float GetValidPerchRadius() { return NativeCall(this, "UCharacterMovementComponent.GetValidPerchRadius"); } - bool ShouldComputePerchResult(FHitResult * InHit, bool bCheckRadius) { return NativeCall(this, "UCharacterMovementComponent.ShouldComputePerchResult", InHit, bCheckRadius); } - bool CanStepUp(FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.CanStepUp", Hit); } - void HandleImpact(FHitResult * Impact, float TimeSlice, FVector * MoveDelta) { NativeCall(this, "UCharacterMovementComponent.HandleImpact", Impact, TimeSlice, MoveDelta); } - void ApplyImpactPhysicsForces(FHitResult * Impact, FVector * ImpactAcceleration, FVector * ImpactVelocity) { NativeCall(this, "UCharacterMovementComponent.ApplyImpactPhysicsForces", Impact, ImpactAcceleration, ImpactVelocity); } - FString * GetMovementName(FString * result) { return NativeCall(this, "UCharacterMovementComponent.GetMovementName", result); } + bool ShouldComputePerchResult(FHitResult * InHit, bool bCheckRadius) { return NativeCall(this, "UCharacterMovementComponent.ShouldComputePerchResult", InHit, bCheckRadius); } + bool CanStepUp(FHitResult * Hit) { return NativeCall(this, "UCharacterMovementComponent.CanStepUp", Hit); } + void HandleImpact(FHitResult * Impact, float TimeSlice, FVector * MoveDelta) { NativeCall(this, "UCharacterMovementComponent.HandleImpact", Impact, TimeSlice, MoveDelta); } + void ApplyImpactPhysicsForces(FHitResult * Impact, FVector * ImpactAcceleration, FVector * ImpactVelocity) { NativeCall(this, "UCharacterMovementComponent.ApplyImpactPhysicsForces", Impact, ImpactAcceleration, ImpactVelocity); } + FString * GetMovementName(FString * result) { return NativeCall(this, "UCharacterMovementComponent.GetMovementName", result); } void ForceReplicationUpdate() { NativeCall(this, "UCharacterMovementComponent.ForceReplicationUpdate"); } - FVector * ConstrainInputAcceleration(FVector * result, FVector * InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ConstrainInputAcceleration", result, InputAcceleration); } - FVector * ScaleInputAcceleration(FVector * result, FVector * InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ScaleInputAcceleration", result, InputAcceleration); } + FVector * ConstrainInputAcceleration(FVector * result, FVector * InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ConstrainInputAcceleration", result, InputAcceleration); } + FVector * ScaleInputAcceleration(FVector * result, FVector * InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ScaleInputAcceleration", result, InputAcceleration); } float ComputeAnalogInputModifier() { return NativeCall(this, "UCharacterMovementComponent.ComputeAnalogInputModifier"); } bool ClientUpdatePositionAfterServerUpdate() { return NativeCall(this, "UCharacterMovementComponent.ClientUpdatePositionAfterServerUpdate"); } void ForcePositionUpdate(float DeltaTime) { NativeCall(this, "UCharacterMovementComponent.ForcePositionUpdate", DeltaTime); } + FNetworkPredictionData_Client * GetPredictionData_Client() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Client"); } + FNetworkPredictionData_Server * GetPredictionData_Server() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Server"); } + FNetworkPredictionData_Client_Character * GetPredictionData_Client_Character() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Client_Character"); } + FNetworkPredictionData_Server_Character * GetPredictionData_Server_Character() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Server_Character"); } void ResetPredictionData_Client() { NativeCall(this, "UCharacterMovementComponent.ResetPredictionData_Client"); } void ResetPredictionData_Server() { NativeCall(this, "UCharacterMovementComponent.ResetPredictionData_Server"); } - void ReplicateMoveToServer(float DeltaTime, FVector * NewAcceleration) { NativeCall(this, "UCharacterMovementComponent.ReplicateMoveToServer", DeltaTime, NewAcceleration); } + void ReplicateMoveToServer(float DeltaTime, FVector * NewAcceleration) { NativeCall(this, "UCharacterMovementComponent.ReplicateMoveToServer", DeltaTime, NewAcceleration); } void ServerMoveOld_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOld_Implementation", OldTimeStamp, OldAccel, OldMoveFlags); } - void ServerMoveWithRotation_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } + void ServerMoveWithRotation_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } void ServerMoveOldWithRotation_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotation_Implementation", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation); } - void ServerMoveDualWithRotation_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBone, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode, InRotation0, InRotation); } - void ServerMoveHandleClientErrorForDinos(float TimeStamp, float DeltaTime, FVector * Accel, FVector * RelativeClientLoc, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator * InClientRot) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientErrorForDinos", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InClientRot); } - void ServerMoveDual_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBone, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode); } - void ServerMove_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } - void ServerMoveHandleClientError(float TimeStamp, float DeltaTime, FVector * Accel, FVector * RelativeClientLoc, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientError", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveDualWithRotation_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBone, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode, InRotation0, InRotation); } + void ServerMoveHandleClientErrorForDinos(float TimeStamp, float DeltaTime, FVector * Accel, FVector * RelativeClientLoc, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator * InClientRot) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientErrorForDinos", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InClientRot); } + void ServerMoveDual_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBone, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode); } + bool VerifyClientTimeStamp(float TimeStamp, FNetworkPredictionData_Server_Character * ServerData) { return NativeCall(this, "UCharacterMovementComponent.VerifyClientTimeStamp", TimeStamp, ServerData); } + void ReadjustClientPositionToCurrent(float TimeStamp, FNetworkPredictionData_Server_Character * ServerData) { NativeCall(this, "UCharacterMovementComponent.ReadjustClientPositionToCurrent", TimeStamp, ServerData); } + bool ProcessClientTimeStamp(float TimeStamp, FNetworkPredictionData_Server_Character * ServerData) { return NativeCall(this, "UCharacterMovementComponent.ProcessClientTimeStamp", TimeStamp, ServerData); } + void ServerMove_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveHandleClientError(float TimeStamp, float DeltaTime, FVector * Accel, FVector * RelativeClientLoc, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientError", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } void ServerMoveOnlyRotation_Implementation(float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotation_Implementation", TimeStamp, ClientRoll, View); } void ServerMoveDualOnlyRotation_Implementation(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotation_Implementation", TimeStamp0, View0, TimeStamp, ClientRoll, View); } - void MoveAutonomous(float ClientTimeStamp, float DeltaTime, char CompressedFlags, FVector * NewAccel) { NativeCall(this, "UCharacterMovementComponent.MoveAutonomous", ClientTimeStamp, DeltaTime, CompressedFlags, NewAccel); } + void MoveAutonomous(float ClientTimeStamp, float DeltaTime, char CompressedFlags, FVector * NewAccel) { NativeCall(this, "UCharacterMovementComponent.MoveAutonomous", ClientTimeStamp, DeltaTime, CompressedFlags, NewAccel); } void UpdateFloorFromAdjustment() { NativeCall(this, "UCharacterMovementComponent.UpdateFloorFromAdjustment"); } void SendClientAdjustment() { NativeCall(this, "UCharacterMovementComponent.SendClientAdjustment"); } - void ClientVeryShortAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition_Implementation", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } - void ClientAdjustPosition_Implementation(float TimeStamp, FVector NewLocation, FVector NewVelocity, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition_Implementation", TimeStamp, NewLocation, NewVelocity, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } - void ClientAdjustRootMotionPosition_Implementation(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent * ServerBase, FName ServerBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustRootMotionPosition_Implementation", TimeStamp, ServerMontageTrackPosition, ServerLoc, ServerRotation, ServerVelZ, ServerBase, ServerBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientVeryShortAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition_Implementation", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientAdjustPosition_Implementation(float TimeStamp, FVector NewLocation, FVector NewVelocity, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition_Implementation", TimeStamp, NewLocation, NewVelocity, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientAdjustRootMotionPosition_Implementation(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent * ServerBase, FName ServerBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustRootMotionPosition_Implementation", TimeStamp, ServerMontageTrackPosition, ServerLoc, ServerRotation, ServerVelZ, ServerBase, ServerBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } void ClientAckGoodMove_Implementation(float TimeStamp) { NativeCall(this, "UCharacterMovementComponent.ClientAckGoodMove_Implementation", TimeStamp); } - void CapsuleTouched(AActor * Other, UPrimitiveComponent * OtherComp, int OtherBodyIndex, bool bFromSweep, FHitResult * SweepResult) { NativeCall(this, "UCharacterMovementComponent.CapsuleTouched", Other, OtherComp, OtherBodyIndex, bFromSweep, SweepResult); } + void CapsuleTouched(AActor * Other, UPrimitiveComponent * OtherComp, int OtherBodyIndex, bool bFromSweep, FHitResult * SweepResult) { NativeCall(this, "UCharacterMovementComponent.CapsuleTouched", Other, OtherComp, OtherBodyIndex, bFromSweep, SweepResult); } void ApplyRepulsionForce(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.ApplyRepulsionForce", DeltaSeconds); } void ApplyAccumulatedForces(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.ApplyAccumulatedForces", DeltaSeconds); } - void AddRadialForce(FVector * Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "UCharacterMovementComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } - void AddRadialImpulse(FVector * Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff, bool bVelChange) { NativeCall(this, "UCharacterMovementComponent.AddRadialImpulse", Origin, Radius, Strength, Falloff, bVelChange); } + void AddRadialForce(FVector * Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "UCharacterMovementComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } + void AddRadialImpulse(FVector * Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff, bool bVelChange) { NativeCall(this, "UCharacterMovementComponent.AddRadialImpulse", Origin, Radius, Strength, Falloff, bVelChange); } + bool IsFlyingOrControlledFalling() { return NativeCall(this, "UCharacterMovementComponent.IsFlyingOrControlledFalling"); } void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UCharacterMovementComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } + void TickCharacterPose(float DeltaTime) { NativeCall(this, "UCharacterMovementComponent.TickCharacterPose", DeltaTime); } void UpdateFromCompressedFlags(char Flags) { NativeCall(this, "UCharacterMovementComponent.UpdateFromCompressedFlags", Flags); } void Prone(bool bClientSimulation) { NativeCall(this, "UCharacterMovementComponent.Prone", bClientSimulation); } void UnProne(bool bClientSimulation, bool bForce) { NativeCall(this, "UCharacterMovementComponent.UnProne", bClientSimulation, bForce); } + bool IsOnWalkableFloor() { return NativeCall(this, "UCharacterMovementComponent.IsOnWalkableFloor"); } + bool ShouldForceDedicatedTickEveryFrame() { return NativeCall(this, "UCharacterMovementComponent.ShouldForceDedicatedTickEveryFrame"); } + static void StaticRegisterNativesUCharacterMovementComponent() { NativeCall(nullptr, "UCharacterMovementComponent.StaticRegisterNativesUCharacterMovementComponent"); } void ClientAckGoodMove(float TimeStamp) { NativeCall(this, "UCharacterMovementComponent.ClientAckGoodMove", TimeStamp); } - void ClientAdjustPosition(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition", TimeStamp, NewLoc, NewVel, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } - void ClientVeryShortAdjustPosition(float TimeStamp, FVector NewLoc, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } - void ServerMove(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } - void ServerMoveDual(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ClientAdjustPosition(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition", TimeStamp, NewLoc, NewVel, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientVeryShortAdjustPosition(float TimeStamp, FVector NewLoc, UPrimitiveComponent * NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ServerJumpOutOfWater(FVector_NetQuantize100 WallNormal, char JumpFlag) { NativeCall(this, "UCharacterMovementComponent.ServerJumpOutOfWater", WallNormal, JumpFlag); } + void ServerMove(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveDual(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } void ServerMoveDualOnlyRotation(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotation", TimeStamp0, View0, TimeStamp, ClientRoll, View); } - void ServerMoveDualWithRotation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InRotation0, InRotation); } + void ServerMoveDualWithRotation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InRotation0, InRotation); } void ServerMoveOld(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOld", OldTimeStamp, OldAccel, OldMoveFlags); } void ServerMoveOldWithRotation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotation", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation); } void ServerMoveOnlyRotation(float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotation", TimeStamp, ClientRoll, View); } - void ServerMoveWithRotation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } + void ServerMoveWithRotation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent * ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } + + // Enums + + enum EServerMoveType + { + DefaultMove = 0x0, + MoveOnlyRotation = 0x1, + }; + + enum EShrinkCapsuleExtent + { + SHRINK_None = 0x0, + SHRINK_RadiusCustom = 0x1, + SHRINK_HeightCustom = 0x2, + SHRINK_AllCustom = 0x3, + }; }; struct ABrush : AActor @@ -6337,11 +8464,11 @@ struct ANPCZoneVolume : AVolume /*unsigned __int32 bOnlyCountWaterDinos : 1; unsigned __int32 bOnlyCountLandDinos : 1; unsigned __int32 bCountTamedDinos : 1; - TArray, FDefaultAllocator> OnlyCountDinoClasses; - TArray, FDefaultAllocator> IgnoreDinoClasses; - TArray HibernatedEntities; + TArray> OnlyCountDinoClasses; + TArray> IgnoreDinoClasses; + TArray HibernatedEntities; float HibernatedCountWeights; - TArray OverlappedDinos; + TArray OverlappedDinos; float CountWeights;*/ }; @@ -6353,22 +8480,23 @@ struct FLinkedZoneSpawnVolumeEntry { // Fields /*ANPCZoneSpawnVolume *LinkedZoneSpawnVolume; - TArray ZoneSpawnVolumeFloors; - TArray ZoneSpawnVolumeFloorTags; + TArray ZoneSpawnVolumeFloors; + TArray ZoneSpawnVolumeFloorTags; float EntryWeight;*/ }; -struct AInfo : AActor -{ - -}; - struct AWorldSettings : AInfo { }; struct APrimalWorldSettings : AWorldSettings { + bool& bOverrideLongitudeAndLatitudeField() { return *GetNativePointerField(this, "APrimalWorldSettings.bOverrideLongitudeAndLatitude"); } + float& LongitudeScaleField() { return *GetNativePointerField(this, "APrimalWorldSettings.LongitudeScale"); } + float& LatitudeScaleField() { return *GetNativePointerField(this, "APrimalWorldSettings.LatitudeScale"); } + float& LongitudeOriginField() { return *GetNativePointerField(this, "APrimalWorldSettings.LongitudeOrigin"); } + float& LatitudeOriginField() { return *GetNativePointerField(this, "APrimalWorldSettings.LatitudeOrigin"); } + TMap& StructureIDMapField() { return *GetNativePointerField *>(this, "APrimalWorldSettings.StructureIDMap"); } }; struct ANPCZoneManager @@ -6461,5 +8589,873 @@ struct ANPCZoneManager void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "ANPCZoneManager.EndPlay", EndPlayReason); } static TArray * StaticSpawnNPCs(TArray * result, UObject * WorldContext, ANPCZoneManager * AtZoneManager, TSubclassOf TheNPCSpawnEntries, FVector AtSpawnPoint, FRotator AtRotation, int UseSpawnVolumeIndex) { return NativeCall *, TArray *, UObject *, ANPCZoneManager *, TSubclassOf, FVector, FRotator, int>(nullptr, "ANPCZoneManager.StaticSpawnNPCs", result, WorldContext, AtZoneManager, TheNPCSpawnEntries, AtSpawnPoint, AtRotation, UseSpawnVolumeIndex); } static void StaticRegisterNativesANPCZoneManager() { NativeCall(nullptr, "ANPCZoneManager.StaticRegisterNativesANPCZoneManager"); } - UField * GetPrivateStaticClass() { return NativeCall(this, "ANPCZoneManager.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "ANPCZoneManager.GetPrivateStaticClass"); } +}; + +struct AShooterProjectile : AActor +{ + TWeakObjectPtr& DamageCauserField() { return *GetNativePointerField*>(this, "AShooterProjectile.DamageCauser"); } + // Functions + + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterProjectile.GetPrivateStaticClass"); } +}; + +struct APrimalBuff : AActor +{ + float& DeactivationLifespanField() { return *GetNativePointerField(this, "APrimalBuff.DeactivationLifespan"); } + FName& InstigatorAttachmentSocketField() { return *GetNativePointerField(this, "APrimalBuff.InstigatorAttachmentSocket"); } + float& RemoteForcedFleeDurationField() { return *GetNativePointerField(this, "APrimalBuff.RemoteForcedFleeDuration"); } + FVector& AoETraceToTargetsStartOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoETraceToTargetsStartOffset"); } + TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalBuff.Target"); } + TWeakObjectPtr& InstigatorItemField() { return *GetNativePointerField*>(this, "APrimalBuff.InstigatorItem"); } + float& SlowInstigatorFallingAddZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingAddZVelocity"); } + float& SlowInstigatorFallingDampenZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingDampenZVelocity"); } + float& DeactivateAfterTimeField() { return *GetNativePointerField(this, "APrimalBuff.DeactivateAfterTime"); } + float& WeaponRecoilMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.WeaponRecoilMultiplier"); } + float& ReceiveDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ReceiveDamageMultiplier"); } + float& MeleeDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.MeleeDamageMultiplier"); } + float& DepleteInstigatorItemDurabilityPerSecondField() { return *GetNativePointerField(this, "APrimalBuff.DepleteInstigatorItemDurabilityPerSecond"); } + FieldArray ValuesToAddPerSecondField() { return { this, "APrimalBuff.ValuesToAddPerSecond" }; } + FStatusValueModifierDescription& BuffDescriptionField() { return *GetNativePointerField(this, "APrimalBuff.BuffDescription"); } + float& CharacterAdd_DefaultHyperthermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHyperthermicInsulation"); } + float& CharacterAdd_DefaultHypothermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHypothermicInsulation"); } + float& CharacterMultiplier_ExtraWaterConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraWaterConsumptionMultiplier"); } + float& CharacterMultiplier_ExtraFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraFoodConsumptionMultiplier"); } + float& CharacterMultiplier_SubmergedOxygenDecreaseSpeedField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_SubmergedOxygenDecreaseSpeed"); } + float& ViewMinExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMinExposureMultiplier"); } + float& ViewMaxExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMaxExposureMultiplier"); } + float& XPtoAddField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAdd"); } + float& XPtoAddRateField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAddRate"); } + bool& bDeactivateAfterAddingXPField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivateAfterAddingXP"); } + int& DinoColorizationPriorityField() { return *GetNativePointerField(this, "APrimalBuff.DinoColorizationPriority"); } + float& DinoColorizationInterpSpeedField() { return *GetNativePointerField(this, "APrimalBuff.DinoColorizationInterpSpeed"); } + FieldArray DesiredDinoColorsField() { return { this, "APrimalBuff.DesiredDinoColors" }; } + float& SubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.SubmergedMaxSpeedModifier"); } + float& UnsubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.UnsubmergedMaxSpeedModifier"); } + TArray& CharacterStatusValueModifiersField() { return *GetNativePointerField*>(this, "APrimalBuff.CharacterStatusValueModifiers"); } + long double& BuffStartTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffStartTime"); } + UMaterialInterface* BuffPostProcessEffectField() { return *GetNativePointerField(this, "APrimalBuff.BuffPostProcessEffect"); } + TArray>& PreventActorClassesTargetingField() { return *GetNativePointerField>*>(this, "APrimalBuff.PreventActorClassesTargeting"); } + TArray& PreventActorClassesTargetingRangesField() { return *GetNativePointerField*>(this, "APrimalBuff.PreventActorClassesTargetingRanges"); } + float& PreventIfMovementMassGreaterThanField() { return *GetNativePointerField(this, "APrimalBuff.PreventIfMovementMassGreaterThan"); } + TSubclassOf& AOEOtherBuffToApplyField() { return *GetNativePointerField*>(this, "APrimalBuff.AOEOtherBuffToApply"); } + float& AOEBuffRangeField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffRange"); } + float& CharacterAOEBuffDamageField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffDamage"); } + float& CharacterAOEBuffResistanceField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffResistance"); } + float& Maximum2DVelocityForStaminaRecoveryField() { return *GetNativePointerField(this, "APrimalBuff.Maximum2DVelocityForStaminaRecovery"); } + TArray PostprocessBlendablesToExcludeField() { return *GetNativePointerField*>(this, "APrimalBuff.PostprocessBlendablesToExclude"); } + TArray>& BuffedCharactersField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffedCharacters"); } + long double& LastItemDurabilityDepletionTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastItemDurabilityDepletionTime"); } + TSubclassOf& BuffToGiveOnDeactivationField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffToGiveOnDeactivation"); } + TArray>& BuffClassesToCancelOnActivationField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffClassesToCancelOnActivation"); } + TArray>& ActivePreventsBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalBuff.ActivePreventsBuffClasses"); } + TArray>& BuffRequiresOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffRequiresOwnerClass"); } + TArray>& BuffPreventsOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffPreventsOwnerClass"); } + float& XPEarningMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.XPEarningMultiplier"); } + bool& bUseBPSetupForInstigatorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPSetupForInstigator"); } + bool& bUseBPDeactivatedField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPDeactivated"); } + bool& bUseBPOverrideBuffToGiveOnDeactivationField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPOverrideBuffToGiveOnDeactivation"); } + bool& bUseBPCustomAllowAddBuffField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPCustomAllowAddBuff"); } + FVector& staticPathingDestinationField() { return *GetNativePointerField(this, "APrimalBuff.staticPathingDestination"); } + long double& TickingDeactivationTimeField() { return *GetNativePointerField(this, "APrimalBuff.TickingDeactivationTime"); } + UPrimalBuffPersistentData* MyBuffPersistentDataField() { return *GetNativePointerField(this, "APrimalBuff.MyBuffPersistentData"); } + TSubclassOf& BuffPersistentDataClassField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffPersistentDataClass"); } + TArray& MaxStatScalersField() { return *GetNativePointerField*>(this, "APrimalBuff.MaxStatScalers"); } + TWeakObjectPtr& DamageCauserField() { return *GetNativePointerField*>(this, "APrimalBuff.DamageCauser"); } + USoundBase* ExtraActivationSoundToPlayField() { return *GetNativePointerField(this, "APrimalBuff.ExtraActivationSoundToPlay"); } + bool& bPersistentBuffSurvivesLevelUpField() { return *GetNativePointerField(this, "APrimalBuff.bPersistentBuffSurvivesLevelUp"); } + float& AoEApplyDamageField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamage"); } + float& AoEApplyDamageIntervalField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamageInterval"); } + TSubclassOf& AoEApplyDamageTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.AoEApplyDamageType"); } + TSubclassOf& ForceNetworkSpatializationMaxLimitBuffTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.ForceNetworkSpatializationMaxLimitBuffType"); } + int& ForceNetworkSpatializationBuffMaxLimitNumField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitNum"); } + float& ForceNetworkSpatializationBuffMaxLimitRangeField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitRange"); } + float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalBuff.InsulationRange"); } + float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HyperThermiaInsulation"); } + float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HypoThermiaInsulation"); } + FVector& AoEBuffLocOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoEBuffLocOffset"); } + TArray>& AoEClassesToIncludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToInclude"); } + TArray>& AoEClassesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToExclude"); } + bool& bUseBPExcludeAoEActorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPExcludeAoEActor"); } + bool& bOverrideBuffDescriptionField() { return *GetNativePointerField(this, "APrimalBuff.bOverrideBuffDescription"); } + bool& bOnlyTickWhenPossessedField() { return *GetNativePointerField(this, "APrimalBuff.bOnlyTickWhenPossessed"); } + bool& bDestroyWhenUnpossessedField() { return *GetNativePointerField(this, "APrimalBuff.bDestroyWhenUnpossessed"); } + long double& LastAoEApplyDamageTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastAoEApplyDamageTime"); } + float& OnlyForInstigatorSoundFadeInTimeField() { return *GetNativePointerField(this, "APrimalBuff.OnlyForInstigatorSoundFadeInTime"); } + bool& bUseBuffTickServerField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickServer"); } + bool& bUseBuffTickClientField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickClient"); } + float& BuffTickServerMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMaxTime"); } + float& BuffTickServerMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMinTime"); } + float& BuffTickClientMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMaxTime"); } + float& BuffTickClientMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMinTime"); } + bool& bContinueTickingServerAfterDeactivateField() { return *GetNativePointerField(this, "APrimalBuff.bContinueTickingServerAfterDeactivate"); } + bool& bContinueTickingClientAfterDeactivateField() { return *GetNativePointerField(this, "APrimalBuff.bContinueTickingClientAfterDeactivate"); } + long double& LastBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeServer"); } + long double& LastBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeClient"); } + long double& NextBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeServer"); } + long double& NextBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeClient"); } + bool& bTickFunctionDisabledField() { return *GetNativePointerField(this, "APrimalBuff.bTickFunctionDisabled"); } + bool& bWasStasisedField() { return *GetNativePointerField(this, "APrimalBuff.bWasStasised"); } + int& AddBuffMaxNumStacksField() { return *GetNativePointerField(this, "APrimalBuff.AddBuffMaxNumStacks"); } + USoundBase* DeactivatedSoundField() { return *GetNativePointerField(this, "APrimalBuff.DeactivatedSound"); } + bool& bDeactivatedSoundOnlyLocalField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivatedSoundOnlyLocal"); } + bool& bDisableBloomField() { return *GetNativePointerField(this, "APrimalBuff.bDisableBloom"); } + bool& bBPOverrideCharacterNewFallVelocityField() { return *GetNativePointerField(this, "APrimalBuff.bBPOverrideCharacterNewFallVelocity"); } + bool& bForceOverrideCharacterNewFallVelocityField() { return *GetNativePointerField(this, "APrimalBuff.bForceOverrideCharacterNewFallVelocity"); } + bool& bBPModifyCharacterFOVField() { return *GetNativePointerField(this, "APrimalBuff.bBPModifyCharacterFOV"); } + bool& bDisableLightShaftsField() { return *GetNativePointerField(this, "APrimalBuff.bDisableLightShafts"); } + float& PostProcessInterpSpeedDownField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedDown"); } + float& PostProcessInterpSpeedUpField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedUp"); } + float& TPVCameraSpeedInterpolationMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.TPVCameraSpeedInterpolationMultiplier"); } + bool& bIsCarryBuffField() { return *GetNativePointerField(this, "APrimalBuff.bIsCarryBuff"); } + TArray& PostprocessMaterialAdjustersField() { return *GetNativePointerField*>(this, "APrimalBuff.PostprocessMaterialAdjusters"); } + long double& TimeForNextAOECheckField() { return *GetNativePointerField(this, "APrimalBuff.TimeForNextAOECheck"); } + float& AOEBuffIntervalMinField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMin"); } + float& AOEBuffIntervalMaxField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMax"); } + float& MaximumVelocityZForSlowingFallField() { return *GetNativePointerField(this, "APrimalBuff.MaximumVelocityZForSlowingFall"); } + int& FNameIntField() { return *GetNativePointerField(this, "APrimalBuff.FNameInt"); } + + // Bit fields + + BitFieldValue bSlowInstigatorFalling() { return { this, "APrimalBuff.bSlowInstigatorFalling" }; } + BitFieldValue bDeactivateOnJump() { return { this, "APrimalBuff.bDeactivateOnJump" }; } + BitFieldValue bPreventJump() { return { this, "APrimalBuff.bPreventJump" }; } + BitFieldValue bPreventDinoRiding() { return { this, "APrimalBuff.bPreventDinoRiding" }; } + BitFieldValue bPreventDinoDismount() { return { this, "APrimalBuff.bPreventDinoDismount" }; } + BitFieldValue bPreventCarryOrPassenger() { return { this, "APrimalBuff.bPreventCarryOrPassenger" }; } + BitFieldValue bDeactivated() { return { this, "APrimalBuff.bDeactivated" }; } + BitFieldValue bUsesInstigator() { return { this, "APrimalBuff.bUsesInstigator" }; } + BitFieldValue bFollowTarget() { return { this, "APrimalBuff.bFollowTarget" }; } + BitFieldValue bAddCharacterValues() { return { this, "APrimalBuff.bAddCharacterValues" }; } + BitFieldValue bOnlyAddCharacterValuesUnderwater() { return { this, "APrimalBuff.bOnlyAddCharacterValuesUnderwater" }; } + BitFieldValue bDisableIfCharacterUnderwater() { return { this, "APrimalBuff.bDisableIfCharacterUnderwater" }; } + BitFieldValue bUseInstigatorItem() { return { this, "APrimalBuff.bUseInstigatorItem" }; } + BitFieldValue bDestroyOnTargetStasis() { return { this, "APrimalBuff.bDestroyOnTargetStasis" }; } + BitFieldValue bAoETraceToTargets() { return { this, "APrimalBuff.bAoETraceToTargets" }; } + BitFieldValue bAOEOnlyApplyOtherBuffToWildDinos() { return { this, "APrimalBuff.bAOEOnlyApplyOtherBuffToWildDinos" }; } + BitFieldValue bAoEIgnoreDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEIgnoreDinosTargetingInstigator" }; } + BitFieldValue bAoEOnlyOnDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEOnlyOnDinosTargetingInstigator" }; } + BitFieldValue bBuffForceNoTick() { return { this, "APrimalBuff.bBuffForceNoTick" }; } + BitFieldValue bBuffForceNoTickDedicated() { return { this, "APrimalBuff.bBuffForceNoTickDedicated" }; } + BitFieldValue bCustomDepthStencilIgnoreHealth() { return { this, "APrimalBuff.bCustomDepthStencilIgnoreHealth" }; } + BitFieldValue bUseActivateSoundFadeInDuration() { return { this, "APrimalBuff.bUseActivateSoundFadeInDuration" }; } + BitFieldValue bDinoIgnoreBuffPostprocessEffectWhenRidden() { return { this, "APrimalBuff.bDinoIgnoreBuffPostprocessEffectWhenRidden" }; } + BitFieldValue bPlayerIgnoreBuffPostprocessEffectWhenRidingDino() { return { this, "APrimalBuff.bPlayerIgnoreBuffPostprocessEffectWhenRidingDino" }; } + BitFieldValue bRemoteForcedFlee() { return { this, "APrimalBuff.bRemoteForcedFlee" }; } + BitFieldValue bUseBPDinoRefreshColorization() { return { this, "APrimalBuff.bUseBPDinoRefreshColorization" }; } + BitFieldValue bOnlyActivateSoundForInstigator() { return { this, "APrimalBuff.bOnlyActivateSoundForInstigator" }; } + BitFieldValue bAOEBuffCarnosOnly() { return { this, "APrimalBuff.bAOEBuffCarnosOnly" }; } + BitFieldValue bCausesCryoSickness() { return { this, "APrimalBuff.bCausesCryoSickness" }; } + BitFieldValue bModifyMaxSpeed() { return { this, "APrimalBuff.bModifyMaxSpeed" }; } + BitFieldValue bDisplayHUDProgressBar() { return { this, "APrimalBuff.bDisplayHUDProgressBar" }; } + BitFieldValue bForceUsePreventTargeting() { return { this, "APrimalBuff.bForceUsePreventTargeting" }; } + BitFieldValue bForceUsePreventTargetingTurret() { return { this, "APrimalBuff.bForceUsePreventTargetingTurret" }; } + BitFieldValue bBPOverrideWeaponBob() { return { this, "APrimalBuff.bBPOverrideWeaponBob" }; } + BitFieldValue bUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bUseBPModifyPlayerBoneModifiers" }; } + BitFieldValue bDediServerUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bDediServerUseBPModifyPlayerBoneModifiers" }; } + BitFieldValue bUseBPNonDedicatedPlayerPostAnimUpdate() { return { this, "APrimalBuff.bUseBPNonDedicatedPlayerPostAnimUpdate" }; } + BitFieldValue bUseBPIsCharacterHardAttached() { return { this, "APrimalBuff.bUseBPIsCharacterHardAttached" }; } + BitFieldValue bDoCharacterDetachment() { return { this, "APrimalBuff.bDoCharacterDetachment" }; } + BitFieldValue bDoCharacterDetachmentIncludeRiding() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeRiding" }; } + BitFieldValue bDoCharacterDetachmentIncludeCarrying() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeCarrying" }; } + BitFieldValue bUseBPInitializedCharacterAnimScriptInstance() { return { this, "APrimalBuff.bUseBPInitializedCharacterAnimScriptInstance" }; } + BitFieldValue bUseBPCanBeCarried() { return { this, "APrimalBuff.bUseBPCanBeCarried" }; } + BitFieldValue bUsePostAdjustDamage() { return { this, "APrimalBuff.bUsePostAdjustDamage" }; } + BitFieldValue bPreventFallDamage() { return { this, "APrimalBuff.bPreventFallDamage" }; } + BitFieldValue bUseBPOnInstigatorCapsuleComponentHit() { return { this, "APrimalBuff.bUseBPOnInstigatorCapsuleComponentHit" }; } + BitFieldValue bEnabledCollisionNotify() { return { this, "APrimalBuff.bEnabledCollisionNotify" }; } + BitFieldValue bUseBPOverrideCameraViewTarget() { return { this, "APrimalBuff.bUseBPOverrideCameraViewTarget" }; } + BitFieldValue bUseBPIsValidUnstasisActor() { return { this, "APrimalBuff.bUseBPIsValidUnstasisActor" }; } + BitFieldValue bUseBPOverrideIsNetRelevantFor() { return { this, "APrimalBuff.bUseBPOverrideIsNetRelevantFor" }; } + BitFieldValue bPreventClearRiderOnDinoImmobilize() { return { this, "APrimalBuff.bPreventClearRiderOnDinoImmobilize" }; } + BitFieldValue bAOEApplyOtherBuffOnPlayers() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnPlayers" }; } + BitFieldValue bAOEApplyOtherBuffOnDinos() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnDinos" }; } + BitFieldValue bAOEApplyOtherBuffIgnoreSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffIgnoreSameTeam" }; } + BitFieldValue bAOEApplyOtherBuffRequireSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffRequireSameTeam" }; } + BitFieldValue bBuffDrawFloatingHUD() { return { this, "APrimalBuff.bBuffDrawFloatingHUD" }; } + BitFieldValue bAddResetsBuffTime() { return { this, "APrimalBuff.bAddResetsBuffTime" }; } + BitFieldValue bAoEBuffAllowIfAlreadyBuffed() { return { this, "APrimalBuff.bAoEBuffAllowIfAlreadyBuffed" }; } + BitFieldValue bNetResetBuffStart() { return { this, "APrimalBuff.bNetResetBuffStart" }; } + BitFieldValue bImmobilizeTarget() { return { this, "APrimalBuff.bImmobilizeTarget" }; } + BitFieldValue bForcePlayerProne() { return { this, "APrimalBuff.bForcePlayerProne" }; } + BitFieldValue bHideBuffFromHUD() { return { this, "APrimalBuff.bHideBuffFromHUD" }; } + BitFieldValue bHideTimerFromHUD() { return { this, "APrimalBuff.bHideTimerFromHUD" }; } + BitFieldValue bBPAddMultiUseEntries() { return { this, "APrimalBuff.bBPAddMultiUseEntries" }; } + BitFieldValue bIsBuffPersistent() { return { this, "APrimalBuff.bIsBuffPersistent" }; } + BitFieldValue bBPUseBumpedByPawn() { return { this, "APrimalBuff.bBPUseBumpedByPawn" }; } + BitFieldValue bBPUseBumpedPawn() { return { this, "APrimalBuff.bBPUseBumpedPawn" }; } + BitFieldValue bAllowBuffWhenInstigatorDead() { return { this, "APrimalBuff.bAllowBuffWhenInstigatorDead" }; } + BitFieldValue bNotifyDamage() { return { this, "APrimalBuff.bNotifyDamage" }; } + BitFieldValue bAllowBuffStasis() { return { this, "APrimalBuff.bAllowBuffStasis" }; } + BitFieldValue bApplyStatModifierToPlayers() { return { this, "APrimalBuff.bApplyStatModifierToPlayers" }; } + BitFieldValue bApplyStatModifierToDinos() { return { this, "APrimalBuff.bApplyStatModifierToDinos" }; } + BitFieldValue bPreventOnWildDino() { return { this, "APrimalBuff.bPreventOnWildDino" }; } + BitFieldValue bPreventOnDino() { return { this, "APrimalBuff.bPreventOnDino" }; } + BitFieldValue bPreventOnPlayer() { return { this, "APrimalBuff.bPreventOnPlayer" }; } + BitFieldValue bPreventOnBigDino() { return { this, "APrimalBuff.bPreventOnBigDino" }; } + BitFieldValue bPreventOnBossDino() { return { this, "APrimalBuff.bPreventOnBossDino" }; } + BitFieldValue bPreventOnRobotDino() { return { this, "APrimalBuff.bPreventOnRobotDino" }; } + BitFieldValue bIsDisease() { return { this, "APrimalBuff.bIsDisease" }; } + BitFieldValue bUseBPPreventAddingOtherBuff() { return { this, "APrimalBuff.bUseBPPreventAddingOtherBuff" }; } + BitFieldValue bUseBPPreventRunning() { return { this, "APrimalBuff.bUseBPPreventRunning" }; } + BitFieldValue bAddReactivates() { return { this, "APrimalBuff.bAddReactivates" }; } + BitFieldValue bAoEApplyDamageAllTargetables() { return { this, "APrimalBuff.bAoEApplyDamageAllTargetables" }; } + BitFieldValue bUseBPAdjustCharacterMovementImpulse() { return { this, "APrimalBuff.bUseBPAdjustCharacterMovementImpulse" }; } + BitFieldValue bUseBPAdjustImpulseFromDamage() { return { this, "APrimalBuff.bUseBPAdjustImpulseFromDamage" }; } + BitFieldValue bUseBPGetHUDElements() { return { this, "APrimalBuff.bUseBPGetHUDElements" }; } + BitFieldValue bUseBPActivated() { return { this, "APrimalBuff.bUseBPActivated" }; } + BitFieldValue bUseBPHandleOnStartFire() { return { this, "APrimalBuff.bUseBPHandleOnStartFire" }; } + BitFieldValue bUseBPPreventFlight() { return { this, "APrimalBuff.bUseBPPreventFlight" }; } + BitFieldValue bRequireController() { return { this, "APrimalBuff.bRequireController" }; } + BitFieldValue bDontPlayInstigatorActiveSoundOnDino() { return { this, "APrimalBuff.bDontPlayInstigatorActiveSoundOnDino" }; } + BitFieldValue bAddExtendBuffTime() { return { this, "APrimalBuff.bAddExtendBuffTime" }; } + BitFieldValue bUseTickingDeactivation() { return { this, "APrimalBuff.bUseTickingDeactivation" }; } + BitFieldValue bCheckPreventInput() { return { this, "APrimalBuff.bCheckPreventInput" }; } + BitFieldValue bBPDrawBuffStatusHUD() { return { this, "APrimalBuff.bBPDrawBuffStatusHUD" }; } + BitFieldValue bEnableStaticPathing() { return { this, "APrimalBuff.bEnableStaticPathing" }; } + BitFieldValue bHUDFormatTimerAsTimecode() { return { this, "APrimalBuff.bHUDFormatTimerAsTimecode" }; } + BitFieldValue bUseBPPreventThrowingItem() { return { this, "APrimalBuff.bUseBPPreventThrowingItem" }; } + BitFieldValue bPreventInputDoesOffset() { return { this, "APrimalBuff.bPreventInputDoesOffset" }; } + BitFieldValue bNotifyExperienceGained() { return { this, "APrimalBuff.bNotifyExperienceGained" }; } + BitFieldValue bOnlyTickWhenVisible() { return { this, "APrimalBuff.bOnlyTickWhenVisible" }; } + BitFieldValue bBPAdjustStatusValueModification() { return { this, "APrimalBuff.bBPAdjustStatusValueModification" }; } + BitFieldValue bWasDestroyed() { return { this, "APrimalBuff.bWasDestroyed" }; } + BitFieldValue bUseBPNotifyOtherBuffActivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffActivated" }; } + BitFieldValue bUseBPNotifyOtherBuffDeactivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffDeactivated" }; } + BitFieldValue bUseBPPreventFirstPerson() { return { this, "APrimalBuff.bUseBPPreventFirstPerson" }; } + BitFieldValue bForceAddUnderwaterCharacterStatusValues() { return { this, "APrimalBuff.bForceAddUnderwaterCharacterStatusValues" }; } + BitFieldValue bPreventInstigatorAttack() { return { this, "APrimalBuff.bPreventInstigatorAttack" }; } + BitFieldValue bUseBPOnInstigatorMovementModeChangedNotify() { return { this, "APrimalBuff.bUseBPOnInstigatorMovementModeChangedNotify" }; } + BitFieldValue bUseBPPreventInstigatorMovementMode() { return { this, "APrimalBuff.bUseBPPreventInstigatorMovementMode" }; } + BitFieldValue bUseBPOverrideTalkerCharacter() { return { this, "APrimalBuff.bUseBPOverrideTalkerCharacter" }; } + + // Functions + + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalBuff.StaticClass"); } + void Deactivate() { NativeCall(this, "APrimalBuff.Deactivate"); } + void NetDeactivate_Implementation() { NativeCall(this, "APrimalBuff.NetDeactivate_Implementation"); } + void BeginPlay() { NativeCall(this, "APrimalBuff.BeginPlay"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalBuff.GetLifetimeReplicatedProps", OutLifetimeProps); } + void AddDamageStatusValueModifier(APrimalCharacter* addToCharacter, EPrimalCharacterStatusValue::Type ValueType, bool bSpeedToAddInSeconds, bool bContinueOnUnchangedValue, bool bResetExistingModifierDescriptionIndex, bool bSetValue, bool bSetAdditionalValue, float LimitExistingModifierDescriptionToMaxAmount, float damageMultiplierAmountToAdd, float speedToAdd, int StatusValueModifierDescriptionIndex, bool bUsePercentualDamage, bool bMakeUntameable, float percentualDamage, TSubclassOf ScaleValueByCharacterDamageType) { NativeCall>(this, "APrimalBuff.AddDamageStatusValueModifier", addToCharacter, ValueType, bSpeedToAddInSeconds, bContinueOnUnchangedValue, bResetExistingModifierDescriptionIndex, bSetValue, bSetAdditionalValue, LimitExistingModifierDescriptionToMaxAmount, damageMultiplierAmountToAdd, speedToAdd, StatusValueModifierDescriptionIndex, bUsePercentualDamage, bMakeUntameable, percentualDamage, ScaleValueByCharacterDamageType); } + void SetupForInstigator() { NativeCall(this, "APrimalBuff.SetupForInstigator"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalBuff.Tick", DeltaSeconds); } + void ProcessStaticPathing(bool triggerRunning) { NativeCall(this, "APrimalBuff.ProcessStaticPathing", triggerRunning); } + FVector* UpdateStaticPathingDestination(FVector* result, FVector locOverride, float randomOffsetMultiplier, bool useRandomNegativeXDir, bool orientRandOffsetByRotation, FRotator randOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(this, "APrimalBuff.UpdateStaticPathingDestination", result, locOverride, randomOffsetMultiplier, useRandomNegativeXDir, orientRandOffsetByRotation, randOffsetByRotation, GroundCheckSpreadOverride); } + void EnableTickFunction() { NativeCall(this, "APrimalBuff.EnableTickFunction"); } + bool AOEBuffCanAffect(APrimalCharacter* forChar) { return NativeCall(this, "APrimalBuff.AOEBuffCanAffect", forChar); } + void InstigatorJumped() { NativeCall(this, "APrimalBuff.InstigatorJumped"); } + void Destroyed() { NativeCall(this, "APrimalBuff.Destroyed"); } + void NetResetBuffStart_Implementation() { NativeCall(this, "APrimalBuff.NetResetBuffStart_Implementation"); } + bool ResetBuffStart() { return NativeCall(this, "APrimalBuff.ResetBuffStart"); } + APrimalBuff* AddBuff(APrimalCharacter* ForCharacter, AActor* DamageCauser) { return NativeCall(this, "APrimalBuff.AddBuff", ForCharacter, DamageCauser); } + void GetHUDElements(APlayerController* ForPC, TArray* OutHUDElements) { NativeCall*>(this, "APrimalBuff.GetHUDElements", ForPC, OutHUDElements); } + static APrimalBuff* StaticAddBuff(TSubclassOf BuffClass, APrimalCharacter* ForCharacter, UPrimalItem* AssociatedItem, AActor* DamageCauser, bool bForceOnClient) { return NativeCall, APrimalCharacter*, UPrimalItem*, AActor*, bool>(nullptr, "APrimalBuff.StaticAddBuff", BuffClass, ForCharacter, AssociatedItem, DamageCauser, bForceOnClient); } + bool ExcludePostProcessBlendableMaterial(UMaterialInterface* BlendableMaterialInterface) { return NativeCall(this, "APrimalBuff.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } + bool PreventActorTargeting_Implementation(AActor* ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting_Implementation", ByActor); } + bool PreventRunning() { return NativeCall(this, "APrimalBuff.PreventRunning"); } + bool ExcludeAoEActor(AActor* ActorToConsider) { return NativeCall(this, "APrimalBuff.ExcludeAoEActor", ActorToConsider); } + bool HideBuffFromHUD_Implementation() { return NativeCall(this, "APrimalBuff.HideBuffFromHUD_Implementation"); } + void Stasis() { NativeCall(this, "APrimalBuff.Stasis"); } + void Unstasis() { NativeCall(this, "APrimalBuff.Unstasis"); } + bool ExtendBuffTime(float AmountOfAdditionalTime) { return NativeCall(this, "APrimalBuff.ExtendBuffTime", AmountOfAdditionalTime); } + int GetBuffType_Implementation() { return NativeCall(this, "APrimalBuff.GetBuffType_Implementation"); } + bool ReduceBuffTime(float AmountOfTimeToReduce) { return NativeCall(this, "APrimalBuff.ReduceBuffTime", AmountOfTimeToReduce); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "APrimalBuff.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + bool IsValidUnStasisCaster() { return NativeCall(this, "APrimalBuff.IsValidUnStasisCaster"); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "APrimalBuff.GetDebugInfoString", result); } + void BPGetHUDElements(APlayerController* ForPC, TArray* OutElements) { NativeCall*>(this, "APrimalBuff.BPGetHUDElements", ForPC, OutElements); } + void BPOverrideCameraViewTarget(FName CurrentCameraMode, FVector DesiredCameraLocation, FRotator DesiredCameraRotation, float DesiredFOV, bool* bOverrideCameraLocation, FVector* CameraLocation, bool* bOverrideCameraRotation, FRotator* CameraRotation, bool* bOverrideCameraFOV, float* CameraFOV) { NativeCall(this, "APrimalBuff.BPOverrideCameraViewTarget", CurrentCameraMode, DesiredCameraLocation, DesiredCameraRotation, DesiredFOV, bOverrideCameraLocation, CameraLocation, bOverrideCameraRotation, CameraRotation, bOverrideCameraFOV, CameraFOV); } + static void StaticRegisterNativesAPrimalBuff() { NativeCall(nullptr, "APrimalBuff.StaticRegisterNativesAPrimalBuff"); } + void BPDrawBuffStatusHUD(AShooterHUD* HUD, float XPos, float YPos, float ScaleMult) { NativeCall(this, "APrimalBuff.BPDrawBuffStatusHUD", HUD, XPos, YPos, ScaleMult); } + void BPOnInstigatorCapsuleComponentHit(AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector* NormalImpulse, FHitResult* Hit) { NativeCall(this, "APrimalBuff.BPOnInstigatorCapsuleComponentHit", OtherActor, OtherComp, NormalImpulse, Hit); } + float BuffAdjustDamage(float Damage, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf TheDamgeType) { return NativeCall>(this, "APrimalBuff.BuffAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } + void BuffPostAdjustDamage(float Damage, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf TheDamgeType) { NativeCall>(this, "APrimalBuff.BuffPostAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } + void DrawBuffFloatingHUD(int BuffIndex, AShooterHUD* HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalBuff.DrawBuffFloatingHUD", BuffIndex, HUD, CenterX, CenterY, DrawScale); } + FStatusValueModifierDescription* GetBuffDescription(FStatusValueModifierDescription* result) { return NativeCall(this, "APrimalBuff.GetBuffDescription", result); } + int GetBuffType() { return NativeCall(this, "APrimalBuff.GetBuffType"); } + void NotifyDamage(float DamageAmount, TSubclassOf DamageClass, AController* EventInstigator, AActor* TheDamageCauser) { NativeCall, AController*, AActor*>(this, "APrimalBuff.NotifyDamage", DamageAmount, DamageClass, EventInstigator, TheDamageCauser); } + bool PreventActorTargeting(AActor* ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting", ByActor); } + void SetBuffCauser(AActor* CausedBy) { NativeCall(this, "APrimalBuff.SetBuffCauser", CausedBy); } +}; + +struct APrimalBuff_Grappled : APrimalBuff +{ + // Functions + + void BreakAllTethers() { NativeCall(this, "APrimalBuff_Grappled.BreakAllTethers"); } +}; + +struct FHarvestResourceEntry +{ + int OverrideQuantityMax; + int OverrideQuantityMin; + float OverrideQuantityRandomPower; + float EntryWeight; + float EffectivenessQuantityMultiplier; + float EffectivenessQualityMultiplier; + TSubclassOf ResourceItem; + float QualityMin; + float QualityMax; + float XPGainMax; + float XPGainMin; + TArray> DamageTypeEntryValuesOverrides; + TArray DamageTypeEntryWeightOverrides; + TArray DamageTypeEntryMinQuantityOverrides; + TArray DamageTypeEntryMaxQuantityOverrides; + __int8 bScaleWithDinoBabyAge : 1; +}; + +struct UMeshComponent : UPrimitiveComponent +{ + FieldArray MaterialsField() { return { this, "UMeshComponent.Materials" }; } + + // Functions + + void BeginDestroy() { NativeCall(this, "UMeshComponent.BeginDestroy"); } + void SetMaterial(int ElementIndex, UMaterialInterface* Material) { NativeCall(this, "UMeshComponent.SetMaterial", ElementIndex, Material); } + void GetUsedMaterials(TArray* OutMaterials) { NativeCall*>(this, "UMeshComponent.GetUsedMaterials", OutMaterials); } + void PrestreamTextures(float Seconds, bool bPrioritizeCharacterTextures, int CinematicTextureGroups) { NativeCall(this, "UMeshComponent.PrestreamTextures", Seconds, bPrioritizeCharacterTextures, CinematicTextureGroups); } + void SetTextureForceResidentFlag(bool bForceMiplevelsToBeResident) { NativeCall(this, "UMeshComponent.SetTextureForceResidentFlag", bForceMiplevelsToBeResident); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UMeshComponent.GetPrivateStaticClass", Package); } + TArray Materials; + TArray DefaultMaterialsOverride; + TSubclassOf DamageFXActorToSpawn; +}; + +struct USkinnedMeshComponent : UMeshComponent +{ + TArray& SpaceBasesField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.SpaceBases"); } + TArray& MasterBoneMapField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.MasterBoneMap"); } + //TArray& ActiveVertexAnimsField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.ActiveVertexAnims"); } + //UPhysicsAsset* PhysicsAssetOverrideField() { return GetNativePointerField(this, "USkinnedMeshComponent.PhysicsAssetOverride"); } + int& ForcedLodModelField() { return *GetNativePointerField(this, "USkinnedMeshComponent.ForcedLodModel"); } + int& MinLodModelField() { return *GetNativePointerField(this, "USkinnedMeshComponent.MinLodModel"); } + int& PredictedLODLevelField() { return *GetNativePointerField(this, "USkinnedMeshComponent.PredictedLODLevel"); } + int& OldPredictedLODLevelField() { return *GetNativePointerField(this, "USkinnedMeshComponent.OldPredictedLODLevel"); } + float& MaxDistanceFactorField() { return *GetNativePointerField(this, "USkinnedMeshComponent.MaxDistanceFactor"); } + float& ShadowedRecentlyRenderedBoundsScaleMultiplierField() { return *GetNativePointerField(this, "USkinnedMeshComponent.ShadowedRecentlyRenderedBoundsScaleMultiplier"); } + //TArray& LODInfoField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.LODInfo"); } + float& StreamingDistanceMultiplierField() { return *GetNativePointerField(this, "USkinnedMeshComponent.StreamingDistanceMultiplier"); } + FColor& WireframeColorField() { return *GetNativePointerField(this, "USkinnedMeshComponent.WireframeColor"); } + float& ForceTickPoseWithinRangeSquaredField() { return *GetNativePointerField(this, "USkinnedMeshComponent.ForceTickPoseWithinRangeSquared"); } + TArray& BoneVisibilityStatesField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.BoneVisibilityStates"); } + //TEnumAsByte& MeshComponentUpdateFlagField() { return *GetNativePointerField*>(this, "USkinnedMeshComponent.MeshComponentUpdateFlag"); } + float& ProgressiveDrawingFractionField() { return *GetNativePointerField(this, "USkinnedMeshComponent.ProgressiveDrawingFraction"); } + char& CustomSortAlternateIndexModeField() { return *GetNativePointerField(this, "USkinnedMeshComponent.CustomSortAlternateIndexMode"); } + FBoxSphereBounds& CachedLocalBoundsField() { return *GetNativePointerField(this, "USkinnedMeshComponent.CachedLocalBounds"); } + bool& bCachedLocalBoundsUpToDateField() { return *GetNativePointerField(this, "USkinnedMeshComponent.bCachedLocalBoundsUpToDate"); } + bool& bEnableUpdateRateOptimizationsField() { return *GetNativePointerField(this, "USkinnedMeshComponent.bEnableUpdateRateOptimizations"); } + bool& bDisplayDebugUpdateRateOptimizationsField() { return *GetNativePointerField(this, "USkinnedMeshComponent.bDisplayDebugUpdateRateOptimizations"); } + float& SkippedTickDeltaTimeField() { return *GetNativePointerField(this, "USkinnedMeshComponent.SkippedTickDeltaTime"); } + bool& bPoseTickedField() { return *GetNativePointerField(this, "USkinnedMeshComponent.bPoseTicked"); } + //FAnimUpdateRateParameters& AnimUpdateRateParamsField() { return *GetNativePointerField(this, "USkinnedMeshComponent.AnimUpdateRateParams"); } + + // Functions + + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USkinnedMeshComponent.CalcBounds", result, LocalToWorld); } + void Serialize(FArchive* Ar) { NativeCall(this, "USkinnedMeshComponent.Serialize", Ar); } + //unsigned __int64 GetResourceSize(EResourceSizeMode::Type Mode) { return NativeCall(this, "USkinnedMeshComponent.GetResourceSize", Mode); } + void OnRegister() { NativeCall(this, "USkinnedMeshComponent.OnRegister"); } + void OnUnregister() { NativeCall(this, "USkinnedMeshComponent.OnUnregister"); } + void CreateRenderState_Concurrent() { NativeCall(this, "USkinnedMeshComponent.CreateRenderState_Concurrent"); } + void DestroyRenderState_Concurrent() { NativeCall(this, "USkinnedMeshComponent.DestroyRenderState_Concurrent"); } + FString* GetDetailedInfoInternal(FString* result) { return NativeCall(this, "USkinnedMeshComponent.GetDetailedInfoInternal", result); } + void SendRenderDynamicData_Concurrent() { NativeCall(this, "USkinnedMeshComponent.SendRenderDynamicData_Concurrent"); } + void InitLODInfos() { NativeCall(this, "USkinnedMeshComponent.InitLODInfos"); } + bool ShouldTickPose() { return NativeCall(this, "USkinnedMeshComponent.ShouldTickPose"); } + bool ShouldUpdateTransform(bool bLODHasChanged) { return NativeCall(this, "USkinnedMeshComponent.ShouldUpdateTransform", bLODHasChanged); } + void TickUpdateRate() { NativeCall(this, "USkinnedMeshComponent.TickUpdateRate"); } + int GetNumMaterials() { return NativeCall(this, "USkinnedMeshComponent.GetNumMaterials"); } + //void GetStreamingTextureInfo(TArray* OutStreamingTextures) { NativeCall*>(this, "USkinnedMeshComponent.GetStreamingTextureInfo", OutStreamingTextures); } + bool ShouldUpdateBoneVisibility() { return NativeCall(this, "USkinnedMeshComponent.ShouldUpdateBoneVisibility"); } + void RebuildVisibilityArray() { NativeCall(this, "USkinnedMeshComponent.RebuildVisibilityArray"); } + //UPhysicsAsset* GetPhysicsAsset() { return NativeCall(this, "USkinnedMeshComponent.GetPhysicsAsset"); } + FBoxSphereBounds* CalcMeshBound(FBoxSphereBounds* result, FVector* RootOffset, bool UsePhysicsAsset, FTransform* LocalToWorld) { return NativeCall(this, "USkinnedMeshComponent.CalcMeshBound", result, RootOffset, UsePhysicsAsset, LocalToWorld); } + //FMatrix* GetBoneMatrix(FMatrix* result, int BoneIdx) { return NativeCall(this, "USkinnedMeshComponent.GetBoneMatrix", result, BoneIdx); } + FTransform* GetBoneTransform(FTransform* result, int BoneIdx) { return NativeCall(this, "USkinnedMeshComponent.GetBoneTransform", result, BoneIdx); } + int GetBoneIndex(FName BoneName) { return NativeCall(this, "USkinnedMeshComponent.GetBoneIndex", BoneName); } + FName* GetBoneName(FName* result, int BoneIndex) { return NativeCall(this, "USkinnedMeshComponent.GetBoneName", result, BoneIndex); } + //void SetSkeletalMesh(USkeletalMesh* InSkelMesh) { NativeCall(this, "USkinnedMeshComponent.SetSkeletalMesh", InSkelMesh); } + //FSkeletalMeshResource* GetSkeletalMeshResource() { return NativeCall(this, "USkinnedMeshComponent.GetSkeletalMeshResource"); } + bool AllocateTransformData() { return NativeCall(this, "USkinnedMeshComponent.AllocateTransformData"); } + void DeallocateTransformData() { NativeCall(this, "USkinnedMeshComponent.DeallocateTransformData"); } + //void SetPhysicsAsset(UPhysicsAsset* InPhysicsAsset, bool bForceReInit) { NativeCall(this, "USkinnedMeshComponent.SetPhysicsAsset", InPhysicsAsset, bForceReInit); } + void SetMasterPoseComponent(USkinnedMeshComponent* NewMasterBoneComponent) { NativeCall(this, "USkinnedMeshComponent.SetMasterPoseComponent", NewMasterBoneComponent); } + void InvalidateCachedBounds() { NativeCall(this, "USkinnedMeshComponent.InvalidateCachedBounds"); } + void RefreshSlaveComponents() { NativeCall(this, "USkinnedMeshComponent.RefreshSlaveComponents"); } + //UMorphTarget* FindMorphTarget(FName MorphTargetName) { return NativeCall(this, "USkinnedMeshComponent.FindMorphTarget", MorphTargetName); } + void UpdateMasterBoneMap() { NativeCall(this, "USkinnedMeshComponent.UpdateMasterBoneMap"); } + TArray* GetAllSocketNames(TArray* result) { return NativeCall*, TArray*>(this, "USkinnedMeshComponent.GetAllSocketNames", result); } + FTransform* GetSocketTransform(FTransform* result, FName InSocketName, ERelativeTransformSpace TransformSpace) { return NativeCall(this, "USkinnedMeshComponent.GetSocketTransform", result, InSocketName, TransformSpace); } + bool DoesSocketExist(FName InSocketName) { return NativeCall(this, "USkinnedMeshComponent.DoesSocketExist", InSocketName); } + FQuat* GetBoneQuaternion(FQuat* result, FName BoneName, int Space) { return NativeCall(this, "USkinnedMeshComponent.GetBoneQuaternion", result, BoneName, Space); } + FVector* GetBoneLocation(FVector* result, FName BoneName, int Space) { return NativeCall(this, "USkinnedMeshComponent.GetBoneLocation", result, BoneName, Space); } + bool HasAnySockets() { return NativeCall(this, "USkinnedMeshComponent.HasAnySockets"); } + //void QuerySupportedSockets(TArray* OutSockets) { NativeCall*>(this, "USkinnedMeshComponent.QuerySupportedSockets", OutSockets); } + void UpdateOverlaps(TArray* PendingOverlaps, bool bDoNotifies, TArray* OverlapsAtEndLocation) { NativeCall*, bool, TArray*>(this, "USkinnedMeshComponent.UpdateOverlaps", PendingOverlaps, bDoNotifies, OverlapsAtEndLocation); } + void TransformToBoneSpace(FName BoneName, FVector InPosition, FRotator InRotation, FVector* OutPosition, FRotator* OutRotation) { NativeCall(this, "USkinnedMeshComponent.TransformToBoneSpace", BoneName, InPosition, InRotation, OutPosition, OutRotation); } + void TransformFromBoneSpace(FName BoneName, FVector InPosition, FRotator InRotation, FVector* OutPosition, FRotator* OutRotation) { NativeCall(this, "USkinnedMeshComponent.TransformFromBoneSpace", BoneName, InPosition, InRotation, OutPosition, OutRotation); } + FName* FindClosestBone(FName* result, FVector TestLocation, FVector* BoneLocation, float IgnoreScale) { return NativeCall(this, "USkinnedMeshComponent.FindClosestBone", result, TestLocation, BoneLocation, IgnoreScale); } + void GetUsedMaterials(TArray* OutMaterials) { NativeCall*>(this, "USkinnedMeshComponent.GetUsedMaterials", OutMaterials); } + FVector* GetSkinnedVertexPosition(FVector* result, int VertexIndex) { return NativeCall(this, "USkinnedMeshComponent.GetSkinnedVertexPosition", result, VertexIndex); } + void ComputeSkinnedPositions(TArray* OutPositions) { NativeCall*>(this, "USkinnedMeshComponent.ComputeSkinnedPositions", OutPositions); } + FColor* GetVertexColor(FColor* result, int VertexIndex) { return NativeCall(this, "USkinnedMeshComponent.GetVertexColor", result, VertexIndex); } + //void HideBone(int BoneIndex, EPhysBodyOp PhysBodyOption) { NativeCall(this, "USkinnedMeshComponent.HideBone", BoneIndex, PhysBodyOption); } + void UnHideBone(int BoneIndex) { NativeCall(this, "USkinnedMeshComponent.UnHideBone", BoneIndex); } + bool IsBoneHidden(int BoneIndex) { return NativeCall(this, "USkinnedMeshComponent.IsBoneHidden", BoneIndex); } + bool IsBoneHiddenByName(FName BoneName) { return NativeCall(this, "USkinnedMeshComponent.IsBoneHiddenByName", BoneName); } + //void HideBoneByName(FName BoneName, EPhysBodyOp PhysBodyOption) { NativeCall(this, "USkinnedMeshComponent.HideBoneByName", BoneName, PhysBodyOption); } + void UnHideBoneByName(FName BoneName) { NativeCall(this, "USkinnedMeshComponent.UnHideBoneByName", BoneName); } + bool UpdateLODStatus() { return NativeCall(this, "USkinnedMeshComponent.UpdateLODStatus"); } + //static TArray* UpdateActiveVertexAnims(TArray* result, USkeletalMesh* InSkeletalMesh, TMap >* MorphCurveAnims, TArray* ActiveAnims) { return NativeCall*, TArray*, USkeletalMesh*, TMap >*, TArray*>(nullptr, "USkinnedMeshComponent.UpdateActiveVertexAnims", result, InSkeletalMesh, MorphCurveAnims, ActiveAnims); } + void AnimUpdateRateTick() { NativeCall(this, "USkinnedMeshComponent.AnimUpdateRateTick"); } + void AnimUpdateRateSetParams(const bool* bRecentlyRendered, const float* MaxDistanceFactor, const bool* bPlayingRootMotion) { NativeCall(this, "USkinnedMeshComponent.AnimUpdateRateSetParams", bRecentlyRendered, MaxDistanceFactor, bPlayingRootMotion); } +}; + +struct USkeletalMeshComponent : USkinnedMeshComponent +{ + //TEnumAsByte& AnimationModeField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.AnimationMode"); } + FVector& InterpolatedRootLocationField() { return *GetNativePointerField(this, "USkeletalMeshComponent.InterpolatedRootLocation"); } + FRotator& InterpolatedRootRotationField() { return *GetNativePointerField(this, "USkeletalMeshComponent.InterpolatedRootRotation"); } + FVector& CurrentSkeletonUpDirField() { return *GetNativePointerField(this, "USkeletalMeshComponent.CurrentSkeletonUpDir"); } + TArray& OriginalBonesOffsetsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.OriginalBonesOffsets"); } + //TArray& IkLegsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.IkLegs"); } + //TArray& IkGroundPlaneOverridesField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.IkGroundPlaneOverrides"); } + //TArray& IkRootAdjustmentPointsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.IkRootAdjustmentPoints"); } + float& IkRootAdjustmentHeightCSField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootAdjustmentHeightCS"); } + float& IkRootOffsetInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootOffsetInterpSpeed"); } + float& IkRootOffsetInterpSpeedUpField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootOffsetInterpSpeedUp"); } + float& IkRootWorldOffsetInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootWorldOffsetInterpSpeed"); } + float& IkRootWorldOffsetInterpSpeedUpField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootWorldOffsetInterpSpeedUp"); } + float& IkInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkInterpSpeed"); } + float& IkInterpSpeedUpField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkInterpSpeedUp"); } + float& IkFabrikInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkFabrikInterpSpeed"); } + float& IkFeetAlignmentInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkFeetAlignmentInterpSpeed"); } + float& IkGroundPlaneInterpSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkGroundPlaneInterpSpeed"); } + float& MinHitNormalZForFeetAlignmentField() { return *GetNativePointerField(this, "USkeletalMeshComponent.MinHitNormalZForFeetAlignment"); } + float& FeetAlignmentLimitField() { return *GetNativePointerField(this, "USkeletalMeshComponent.FeetAlignmentLimit"); } + float& LegLimitRatioFromCylinderHeightField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LegLimitRatioFromCylinderHeight"); } + FRotator& IkRootRotationOffsetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootRotationOffset"); } + FVector& IkRootLocationOffsetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IkRootLocationOffset"); } + float& DinoIKDelayedTraceFreezeDurationMultiplierField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DinoIKDelayedTraceFreezeDurationMultiplier"); } + float& DinoIKSlopeMatchingRootHeightOffsetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DinoIKSlopeMatchingRootHeightOffset"); } + float& DinoIKAnimationLegZOffsetingMultiplierField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DinoIKAnimationLegZOffsetingMultiplier"); } + FVector& TwoLegVirtualHitLocationWSField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TwoLegVirtualHitLocationWS"); } + FVector& TwoLegVirtualHitLocationWSTargetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TwoLegVirtualHitLocationWSTarget"); } + FVector& TwoLegVirtualHitLocationCSField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TwoLegVirtualHitLocationCS"); } + float& DistanceFromGroundToStartIKField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DistanceFromGroundToStartIK"); } + float& DistanceFromGroundToStartIKBiasField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DistanceFromGroundToStartIKBias"); } + int& MaxIterationsField() { return *GetNativePointerField(this, "USkeletalMeshComponent.MaxIterations"); } + float& MatchSlopeRotationSpeedField() { return *GetNativePointerField(this, "USkeletalMeshComponent.MatchSlopeRotationSpeed"); } + float& RootPitchRotationLimitField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootPitchRotationLimit"); } + float& RootRollRotationLimitField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootRollRotationLimit"); } + float& ForceUpdateValuesTimeLimitField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ForceUpdateValuesTimeLimit"); } + float& RootOffsetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootOffset"); } + FRotator& RootRotationOffsetField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootRotationOffset"); } + long double& LastIkUpdateTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastIkUpdateTime"); } + int& LastIKCalculationFrameField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastIKCalculationFrame"); } + long double& ForceIkUpdateTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ForceIkUpdateTime"); } + long double& IKFirstFrozenUpdatedTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IKFirstFrozenUpdatedTime"); } + long double& LastIKFrozenStartTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastIKFrozenStartTime"); } + float& LastRootZField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastRootZ"); } + FQuat& CurrentGroundSlopeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.CurrentGroundSlope"); } + bool& bMovedLastFrameField() { return *GetNativePointerField(this, "USkeletalMeshComponent.bMovedLastFrame"); } + bool& bNeedsUpdateToCachedLegInfosField() { return *GetNativePointerField(this, "USkeletalMeshComponent.bNeedsUpdateToCachedLegInfos"); } + bool& bUsingFrozenIKField() { return *GetNativePointerField(this, "USkeletalMeshComponent.bUsingFrozenIK"); } + long double& TimeToStopUpdatingLegCachesField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TimeToStopUpdatingLegCaches"); } + //TArray& LastCachedIKLegInfosField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.LastCachedIKLegInfos"); } + FVector& CachedTwoLegVirtualHitLocationWSField() { return *GetNativePointerField(this, "USkeletalMeshComponent.CachedTwoLegVirtualHitLocationWS"); } + FVector& CachedTwoLegVirtualHitLocationCSField() { return *GetNativePointerField(this, "USkeletalMeshComponent.CachedTwoLegVirtualHitLocationCS"); } + FVector& LastIKPositionField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastIKPosition"); } + float& BoneModifiersLegLengthPercentageField() { return *GetNativePointerField(this, "USkeletalMeshComponent.BoneModifiersLegLengthPercentage"); } + //TArray& CurrentBoneModifiersField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.CurrentBoneModifiers"); } + //UAnimBlueprintGeneratedClass* AnimBlueprintGeneratedClassField() { return GetNativePointerField(this, "USkeletalMeshComponent.AnimBlueprintGeneratedClass"); } + //FSingleAnimationPlayData& AnimationDataField() { return *GetNativePointerField(this, "USkeletalMeshComponent.AnimationData"); } + TArray& LocalAtomsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.LocalAtoms"); } + long double& LastMeshGameplayRelevantTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastMeshGameplayRelevantTime"); } + TArray& CachedLocalAtomsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.CachedLocalAtoms"); } + TArray& CachedSpaceBasesField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.CachedSpaceBases"); } + float& GlobalAnimRateScaleField() { return *GetNativePointerField(this, "USkeletalMeshComponent.GlobalAnimRateScale"); } + //TEnumAsByte& KinematicBonesUpdateTypeField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.KinematicBonesUpdateType"); } + float& ComponentMassScaleField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ComponentMassScale"); } + float& MinLinearDampingField() { return *GetNativePointerField(this, "USkeletalMeshComponent.MinLinearDamping"); } + float& MinAngularDampingField() { return *GetNativePointerField(this, "USkeletalMeshComponent.MinAngularDamping"); } + float& TeleportDistanceThresholdField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TeleportDistanceThreshold"); } + float& TeleportRotationThresholdField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TeleportRotationThreshold"); } + float& ClothBlendWeightField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ClothBlendWeight"); } + FVector& RootBoneTranslationField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootBoneTranslation"); } + int& NumNonZeroLODsField() { return *GetNativePointerField(this, "USkeletalMeshComponent.NumNonZeroLODs"); } + TEnumAsByte& PreSleepingKinematicsCollisionTypeField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.PreSleepingKinematicsCollisionType"); } + FVector& LineCheckBoundsScaleField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LineCheckBoundsScale"); } + TArray& RequiredBonesField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.RequiredBones"); } + int& RootBodyIndexField() { return *GetNativePointerField(this, "USkeletalMeshComponent.RootBodyIndex"); } + TArray& BodiesField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.Bodies"); } + //TArray& ConstraintsField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.Constraints"); } + //physx::PxAggregate* AggregateField() { return GetNativePointerField(this, "USkeletalMeshComponent.Aggregate"); } + TMap >& MorphTargetCurvesField() { return *GetNativePointerField >*>(this, "USkeletalMeshComponent.MorphTargetCurves"); } + //FAnimationEvaluationContext& AnimEvaluationContextField() { return *GetNativePointerField(this, "USkeletalMeshComponent.AnimEvaluationContext"); } + //TRefCountPtr& ParallelAnimationEvaluationTaskField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.ParallelAnimationEvaluationTask"); } + //TRefCountPtr& ParallelBlendPhysicsCompletionTaskField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.ParallelBlendPhysicsCompletionTask"); } + float& ForcedBlueprintBlendCurrentWeightField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ForcedBlueprintBlendCurrentWeight"); } + float& ForcedBlueprintBlendDurationField() { return *GetNativePointerField(this, "USkeletalMeshComponent.ForcedBlueprintBlendDuration"); } + TArray& ForcedBlueprintBlendCachedBonesField() { return *GetNativePointerField*>(this, "USkeletalMeshComponent.ForcedBlueprintBlendCachedBones"); } + UAnimSequence* SequenceToPlay_DEPRECATEDField() { return GetNativePointerField(this, "USkeletalMeshComponent.SequenceToPlay_DEPRECATED"); } + float& DefaultPosition_DEPRECATEDField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DefaultPosition_DEPRECATED"); } + float& DefaultPlayRate_DEPRECATEDField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DefaultPlayRate_DEPRECATED"); } + int& TickingModulusField() { return *GetNativePointerField(this, "USkeletalMeshComponent.TickingModulus"); } + int& LowQualityTickingModulusField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LowQualityTickingModulus"); } + int& LastKinematicWorldUpdateFrameField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastKinematicWorldUpdateFrame"); } + long double& LastTickTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.LastTickTime"); } + long double& PreventSoundCuesTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.PreventSoundCuesTime"); } + long double& DisableParallelAnimationsTimeField() { return *GetNativePointerField(this, "USkeletalMeshComponent.DisableParallelAnimationsTime"); } + bool& IgnoreStaggeredUpdatesThisTickField() { return *GetNativePointerField(this, "USkeletalMeshComponent.IgnoreStaggeredUpdatesThisTick"); } + int& StaggeredUIDField() { return *GetNativePointerField(this, "USkeletalMeshComponent.StaggeredUID"); } + + // Functions + + void Serialize(FArchive* Ar) { NativeCall(this, "USkeletalMeshComponent.Serialize", Ar); } + void OnRegister() { NativeCall(this, "USkeletalMeshComponent.OnRegister"); } + void OnUnregister() { NativeCall(this, "USkeletalMeshComponent.OnUnregister"); } + //void BPSetBoneModifiers(TArray* NamedBoneModifiers) { NativeCall*>(this, "USkeletalMeshComponent.BPSetBoneModifiers", NamedBoneModifiers); } + void RemoveBasedPawns(USceneComponent* BasedOnComponent) { NativeCall(this, "USkeletalMeshComponent.RemoveBasedPawns", BasedOnComponent); } + bool IsPlayingAnimationMontagesOnSlotName(FName SlotName) { return NativeCall(this, "USkeletalMeshComponent.IsPlayingAnimationMontagesOnSlotName", SlotName); } + void InitAnim(bool bForceReinit) { NativeCall(this, "USkeletalMeshComponent.InitAnim", bForceReinit); } + void InitializeAnimScriptInstance(bool bForceReinit) { NativeCall(this, "USkeletalMeshComponent.InitializeAnimScriptInstance", bForceReinit); } + void CreateRenderState_Concurrent() { NativeCall(this, "USkeletalMeshComponent.CreateRenderState_Concurrent"); } + void InitializeComponent() { NativeCall(this, "USkeletalMeshComponent.InitializeComponent"); } + void TickAnimation(float DeltaTime) { NativeCall(this, "USkeletalMeshComponent.TickAnimation", DeltaTime); } + bool UpdateLODStatus() { return NativeCall(this, "USkeletalMeshComponent.UpdateLODStatus"); } + bool ShouldUpdateTransform(bool bLODHasChanged) { return NativeCall(this, "USkeletalMeshComponent.ShouldUpdateTransform", bLODHasChanged); } + bool ShouldTickPose() { return NativeCall(this, "USkeletalMeshComponent.ShouldTickPose"); } + void TickPose(float DeltaTime) { NativeCall(this, "USkeletalMeshComponent.TickPose", DeltaTime); } + //void FillSpaceBases(USkeletalMesh* InSkeletalMesh, TArray* SourceAtoms, TArray* DestSpaceBases) { NativeCall*, TArray*>(this, "USkeletalMeshComponent.FillSpaceBases", InSkeletalMesh, SourceAtoms, DestSpaceBases); } + void RecalcRequiredBones(int LODIndex) { NativeCall(this, "USkeletalMeshComponent.RecalcRequiredBones", LODIndex); } + //void EvaluateAnimation(USkeletalMesh* InSkeletalMesh, UAnimInstance* InAnimInstance, TArray* OutLocalAtoms, TArray* OutVertexAnims, FVector* OutRootBoneTranslation) { NativeCall*, TArray*, FVector*>(this, "USkeletalMeshComponent.EvaluateAnimation", InSkeletalMesh, InAnimInstance, OutLocalAtoms, OutVertexAnims, OutRootBoneTranslation); } + void UpdateSlaveComponent() { NativeCall(this, "USkeletalMeshComponent.UpdateSlaveComponent"); } + //void PerformAnimationEvaluation(USkeletalMesh* InSkeletalMesh, UAnimInstance* InAnimInstance, TArray* OutSpaceBases, TArray* OutLocalAtoms, TArray* OutVertexAnims, FVector* OutRootBoneTranslation) { NativeCall*, TArray*, TArray*, FVector*>(this, "USkeletalMeshComponent.PerformAnimationEvaluation", InSkeletalMesh, InAnimInstance, OutSpaceBases, OutLocalAtoms, OutVertexAnims, OutRootBoneTranslation); } + //void PostAnimEvaluation(FAnimationEvaluationContext* EvaluationContext) { NativeCall(this, "USkeletalMeshComponent.PostAnimEvaluation", EvaluationContext); } + void UpdateBounds() { NativeCall(this, "USkeletalMeshComponent.UpdateBounds"); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USkeletalMeshComponent.CalcBounds", result, LocalToWorld); } + FTransform* CalcNewComponentToWorld(FTransform* result, FTransform* NewRelativeTransform, USceneComponent* Parent) { return NativeCall(this, "USkeletalMeshComponent.CalcNewComponentToWorld", result, NewRelativeTransform, Parent); } + FVector* GetMeshScaleMultiplier(FVector* result) { return NativeCall(this, "USkeletalMeshComponent.GetMeshScaleMultiplier", result); } + //void SetSkeletalMesh(USkeletalMesh* InSkelMesh) { NativeCall(this, "USkeletalMeshComponent.SetSkeletalMesh", InSkelMesh); } + bool AllocateTransformData() { return NativeCall(this, "USkeletalMeshComponent.AllocateTransformData"); } + void DeallocateTransformData() { NativeCall(this, "USkeletalMeshComponent.DeallocateTransformData"); } + void SetAnimInstanceClass(UClass* NewClass) { NativeCall(this, "USkeletalMeshComponent.SetAnimInstanceClass", NewClass); } + //FMatrix* GetTransformMatrix(FMatrix* result) { return NativeCall(this, "USkeletalMeshComponent.GetTransformMatrix", result); } + //void SkelMeshCompOnParticleSystemFinished(UParticleSystemComponent* PSC) { NativeCall(this, "USkeletalMeshComponent.SkelMeshCompOnParticleSystemFinished", PSC); } + //void HideBone(int BoneIndex, EPhysBodyOp PhysBodyOption) { NativeCall(this, "USkeletalMeshComponent.HideBone", BoneIndex, PhysBodyOption); } + void UnHideBone(int BoneIndex) { NativeCall(this, "USkeletalMeshComponent.UnHideBone", BoneIndex); } + bool IsAnySimulatingPhysics() { return NativeCall(this, "USkeletalMeshComponent.IsAnySimulatingPhysics"); } + float GetOverrideWalkableZ(AActor* ForActor) { return NativeCall(this, "USkeletalMeshComponent.GetOverrideWalkableZ", ForActor); } + //void DebugDrawBones(UCanvas* Canvas, bool bSimpleBones) { NativeCall(this, "USkeletalMeshComponent.DebugDrawBones", Canvas, bSimpleBones); } + //void RenderAxisGizmo(FTransform* Transform, UCanvas* Canvas) { NativeCall(this, "USkeletalMeshComponent.RenderAxisGizmo", Transform, Canvas); } + void SetMorphTarget(FName MorphTargetName, float Value) { NativeCall(this, "USkeletalMeshComponent.SetMorphTarget", MorphTargetName, Value); } + //unsigned __int64 GetResourceSize(EResourceSizeMode::Type Mode) { return NativeCall(this, "USkeletalMeshComponent.GetResourceSize", Mode); } + //void SetAnimationMode(EAnimationMode::Type InAnimationMode) { NativeCall(this, "USkeletalMeshComponent.SetAnimationMode", InAnimationMode); } + //void PlayAnimation(UAnimationAsset* NewAnimToPlay, bool bLooping) { NativeCall(this, "USkeletalMeshComponent.PlayAnimation", NewAnimToPlay, bLooping); } + //void SetAnimation(UAnimationAsset* NewAnimToPlay) { NativeCall(this, "USkeletalMeshComponent.SetAnimation", NewAnimToPlay); } + bool IsPlayingMontage(UAnimMontage* Montage, float TimeFromEndToConsiderFinished) { return NativeCall(this, "USkeletalMeshComponent.IsPlayingMontage", Montage, TimeFromEndToConsiderFinished); } + void SetPosition(float InPos, bool bFireNotifies) { NativeCall(this, "USkeletalMeshComponent.SetPosition", InPos, bFireNotifies); } + FTransform* ConvertLocalRootMotionToWorld(FTransform* result, FTransform* InTransform) { return NativeCall(this, "USkeletalMeshComponent.ConvertLocalRootMotionToWorld", result, InTransform); } + float CalculateMass(FName BoneName) { return NativeCall(this, "USkeletalMeshComponent.CalculateMass", BoneName); } + bool IsPlayingRootMotion() { return NativeCall(this, "USkeletalMeshComponent.IsPlayingRootMotion"); } + void SetCollisionObjectType(ECollisionChannel Channel) { NativeCall(this, "USkeletalMeshComponent.SetCollisionObjectType", Channel); } + void SetCollisionEnabled(ECollisionEnabled::Type NewType) { NativeCall(this, "USkeletalMeshComponent.SetCollisionEnabled", NewType); } + void UpdateComponentToWorld(bool bSkipPhysicsMove) { NativeCall(this, "USkeletalMeshComponent.UpdateComponentToWorld", bSkipPhysicsMove); } + void RecreatePhysicsState(bool bRestoreBoneTransforms) { NativeCall(this, "USkeletalMeshComponent.RecreatePhysicsState", bRestoreBoneTransforms); } + void SkippedTickPose() { NativeCall(this, "USkeletalMeshComponent.SkippedTickPose"); } + bool HandleExistingParallelEvaluationTask(bool bBlockOnTask, bool bPerformPostAnimEvaluation) { return NativeCall(this, "USkeletalMeshComponent.HandleExistingParallelEvaluationTask", bBlockOnTask, bPerformPostAnimEvaluation); } + void FlushMorphTargets() { NativeCall(this, "USkeletalMeshComponent.FlushMorphTargets"); } + void CreateBodySetup() { NativeCall(this, "USkeletalMeshComponent.CreateBodySetup"); } + bool ContainsPhysicsTriMeshData(bool InUseAllTriData) { return NativeCall(this, "USkeletalMeshComponent.ContainsPhysicsTriMeshData", InUseAllTriData); } + bool CanEditSimulatePhysics() { return NativeCall(this, "USkeletalMeshComponent.CanEditSimulatePhysics"); } + void SetSimulatePhysics(bool bSimulate) { NativeCall(this, "USkeletalMeshComponent.SetSimulatePhysics", bSimulate); } + void OnComponentCollisionSettingsChanged() { NativeCall(this, "USkeletalMeshComponent.OnComponentCollisionSettingsChanged"); } + void AddRadialImpulse(FVector Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff, bool bVelChange) { NativeCall(this, "USkeletalMeshComponent.AddRadialImpulse", Origin, Radius, Strength, Falloff, bVelChange); } + void AddRadialForce(FVector Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "USkeletalMeshComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } + void WakeAllRigidBodies() { NativeCall(this, "USkeletalMeshComponent.WakeAllRigidBodies"); } + void PutAllRigidBodiesToSleep() { NativeCall(this, "USkeletalMeshComponent.PutAllRigidBodiesToSleep"); } + bool IsAnyRigidBodyAwake() { return NativeCall(this, "USkeletalMeshComponent.IsAnyRigidBodyAwake"); } + void SetAllPhysicsLinearVelocity(FVector NewVel, bool bAddToCurrent) { NativeCall(this, "USkeletalMeshComponent.SetAllPhysicsLinearVelocity", NewVel, bAddToCurrent); } + void SetAllPhysicsAngularVelocity(FVector* NewAngVel, bool bAddToCurrent) { NativeCall(this, "USkeletalMeshComponent.SetAllPhysicsAngularVelocity", NewAngVel, bAddToCurrent); } + void SetAllPhysicsPosition(FVector NewPos) { NativeCall(this, "USkeletalMeshComponent.SetAllPhysicsPosition", NewPos); } + void SetAllPhysicsRotation(FRotator NewRot) { NativeCall(this, "USkeletalMeshComponent.SetAllPhysicsRotation", NewRot); } + void ApplyDeltaToAllPhysicsTransforms(FVector* DeltaLocation, FQuat* DeltaRotation) { NativeCall(this, "USkeletalMeshComponent.ApplyDeltaToAllPhysicsTransforms", DeltaLocation, DeltaRotation); } + void SetPhysMaterialOverride(UPhysicalMaterial* NewPhysMaterial) { NativeCall(this, "USkeletalMeshComponent.SetPhysMaterialOverride", NewPhysMaterial); } + //void InitArticulated(FPhysScene* PhysScene, bool bForceOnDedicatedServer) { NativeCall(this, "USkeletalMeshComponent.InitArticulated", PhysScene, bForceOnDedicatedServer); } + void TermArticulated() { NativeCall(this, "USkeletalMeshComponent.TermArticulated"); } + void TermBodiesBelow(FName ParentBoneName) { NativeCall(this, "USkeletalMeshComponent.TermBodiesBelow", ParentBoneName); } + void SetAllBodiesSimulatePhysics(bool bNewSimulate) { NativeCall(this, "USkeletalMeshComponent.SetAllBodiesSimulatePhysics", bNewSimulate); } + void SetAllBodiesSleepThreshold(float SleepThresh) { NativeCall(this, "USkeletalMeshComponent.SetAllBodiesSleepThreshold", SleepThresh); } + void SetAllBodiesBelowSimulatePhysics(FName* InBoneName, bool bNewSimulate) { NativeCall(this, "USkeletalMeshComponent.SetAllBodiesBelowSimulatePhysics", InBoneName, bNewSimulate); } + void ResetAllBodiesSimulatePhysics() { NativeCall(this, "USkeletalMeshComponent.ResetAllBodiesSimulatePhysics"); } + void SetPhysicsBlendWeight(float PhysicsBlendWeight) { NativeCall(this, "USkeletalMeshComponent.SetPhysicsBlendWeight", PhysicsBlendWeight); } + void SetAllBodiesPhysicsBlendWeight(float PhysicsBlendWeight, bool bSkipCustomPhysicsType) { NativeCall(this, "USkeletalMeshComponent.SetAllBodiesPhysicsBlendWeight", PhysicsBlendWeight, bSkipCustomPhysicsType); } + void SetAllBodiesBelowPhysicsBlendWeight(FName* InBoneName, float PhysicsBlendWeight, bool bSkipCustomPhysicsType) { NativeCall(this, "USkeletalMeshComponent.SetAllBodiesBelowPhysicsBlendWeight", InBoneName, PhysicsBlendWeight, bSkipCustomPhysicsType); } + void AccumulateAllBodiesBelowPhysicsBlendWeight(FName* InBoneName, float PhysicsBlendWeight, bool bSkipCustomPhysicsType) { NativeCall(this, "USkeletalMeshComponent.AccumulateAllBodiesBelowPhysicsBlendWeight", InBoneName, PhysicsBlendWeight, bSkipCustomPhysicsType); } + void OnUpdateTransform(bool bSkipPhysicsMove) { NativeCall(this, "USkeletalMeshComponent.OnUpdateTransform", bSkipPhysicsMove); } + void CreatePhysicsState() { NativeCall(this, "USkeletalMeshComponent.CreatePhysicsState"); } + void DestroyPhysicsState() { NativeCall(this, "USkeletalMeshComponent.DestroyPhysicsState"); } + FBodyInstance* GetBodyInstance(FName BoneName, bool __formal) { return NativeCall(this, "USkeletalMeshComponent.GetBodyInstance", BoneName, __formal); } + void GetWeldedBodies(TArray* OutWeldedBodies, TArray* OutLabels) { NativeCall*, TArray*>(this, "USkeletalMeshComponent.GetWeldedBodies", OutWeldedBodies, OutLabels); } + //void SetPhysicsAsset(UPhysicsAsset* InPhysicsAsset, bool bForceReInit) { NativeCall(this, "USkeletalMeshComponent.SetPhysicsAsset", InPhysicsAsset, bForceReInit); } + void UpdateHasValidBodies() { NativeCall(this, "USkeletalMeshComponent.UpdateHasValidBodies"); } + void UpdatePhysicsToRBChannels() { NativeCall(this, "USkeletalMeshComponent.UpdatePhysicsToRBChannels"); } + FVector* GetSkinnedVertexPosition(FVector* result, int VertexIndex) { return NativeCall(this, "USkeletalMeshComponent.GetSkinnedVertexPosition", result, VertexIndex); } + bool LineTraceComponent(FHitResult* OutHit, FVector Start, FVector End, FCollisionQueryParams* Params) { return NativeCall(this, "USkeletalMeshComponent.LineTraceComponent", OutHit, Start, End, Params); } + //bool SweepComponent(FHitResult* OutHit, FVector Start, FVector End, FCollisionShape* CollisionShape, bool bTraceComplex) { return NativeCall(this, "USkeletalMeshComponent.SweepComponent", OutHit, Start, End, CollisionShape, bTraceComplex); } + bool ComponentOverlapComponentImpl(UPrimitiveComponent* PrimComp, FVector Pos, FQuat* Quat, FCollisionQueryParams* Params) { return NativeCall(this, "USkeletalMeshComponent.ComponentOverlapComponentImpl", PrimComp, Pos, Quat, Params); } + //bool OverlapComponent(FVector* Pos, FQuat* Rot, FCollisionShape* CollisionShape) { return NativeCall(this, "USkeletalMeshComponent.OverlapComponent", Pos, Rot, CollisionShape); } + //bool ComponentOverlapMultiImpl(TArray* OutOverlaps, UWorld* World, FVector* Pos, FQuat* Quat, ECollisionChannel TestChannel, FComponentQueryParams* Params, FCollisionObjectQueryParams* ObjectQueryParams) { return NativeCall*, UWorld*, FVector*, FQuat*, ECollisionChannel, FComponentQueryParams*, FCollisionObjectQueryParams*>(this, "USkeletalMeshComponent.ComponentOverlapMultiImpl", OutOverlaps, World, Pos, Quat, TestChannel, Params, ObjectQueryParams); } + float GetMass() { return NativeCall(this, "USkeletalMeshComponent.GetMass"); } + void CompleteParallelAnimationEvaluation(bool bDoPostAnimEvaluation) { NativeCall(this, "USkeletalMeshComponent.CompleteParallelAnimationEvaluation", bDoPostAnimEvaluation); } + void ParallelAnimationEvaluation() { NativeCall(this, "USkeletalMeshComponent.ParallelAnimationEvaluation"); } + void UpdateKinematicBonesToPhysics(bool bTeleport, bool bNeedsSkinning, bool bForceUpdate, bool bAbsoluteForceUpdate, bool bOnlyDisableKinematicCollisions) { NativeCall(this, "USkeletalMeshComponent.UpdateKinematicBonesToPhysics", bTeleport, bNeedsSkinning, bForceUpdate, bAbsoluteForceUpdate, bOnlyDisableKinematicCollisions); } + void UpdateRBJointMotors() { NativeCall(this, "USkeletalMeshComponent.UpdateRBJointMotors"); } +}; + +struct UStaticMeshComponent : UMeshComponent +{ + UStaticMesh* StaticMeshField() { return GetNativePointerField(this, "UStaticMeshComponent.StaticMesh"); } + bool& bOverrideWireframeColorField() { return *GetNativePointerField(this, "UStaticMeshComponent.bOverrideWireframeColor"); } + FColor& WireframeColorOverrideField() { return *GetNativePointerField(this, "UStaticMeshComponent.WireframeColorOverride"); } + int& LandscapeInfoMaskField() { return *GetNativePointerField(this, "UStaticMeshComponent.LandscapeInfoMask"); } + int& OverriddenLightMapResField() { return *GetNativePointerField(this, "UStaticMeshComponent.OverriddenLightMapRes"); } + float& StreamingDistanceMultiplierField() { return *GetNativePointerField(this, "UStaticMeshComponent.StreamingDistanceMultiplier"); } + int& SubDivisionStepSizeField() { return *GetNativePointerField(this, "UStaticMeshComponent.SubDivisionStepSize"); } + TArray& IrrelevantLightsField() { return *GetNativePointerField*>(this, "UStaticMeshComponent.IrrelevantLights"); } + //TArray& LODDataField() { return *GetNativePointerField*>(this, "UStaticMeshComponent.LODData"); } + //FLightmassPrimitiveSettings& LightmassSettingsField() { return *GetNativePointerField(this, "UStaticMeshComponent.LightmassSettings"); } + + // Functions + + static UClass* StaticClass() { return NativeCall(nullptr, "UStaticMeshComponent.StaticClass"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UStaticMeshComponent.GetPrivateStaticClass", Package); } + bool GetShadowIndirectOnly() { return NativeCall(this, "UStaticMeshComponent.GetShadowIndirectOnly"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "UStaticMeshComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool HasAnySockets() { return NativeCall(this, "UStaticMeshComponent.HasAnySockets"); } + //void QuerySupportedSockets(TArray* OutSockets) { NativeCall*>(this, "UStaticMeshComponent.QuerySupportedSockets", OutSockets); } + TArray* GetAllSocketNames(TArray* result) { return NativeCall*, TArray*>(this, "UStaticMeshComponent.GetAllSocketNames", result); } + FString* GetDetailedInfoInternal(FString* result) { return NativeCall(this, "UStaticMeshComponent.GetDetailedInfoInternal", result); } + //static void AddReferencedObjects(UObject* InThis, FReferenceCollector* Collector) { NativeCall(nullptr, "UStaticMeshComponent.AddReferencedObjects", InThis, Collector); } + void Serialize(FArchive* Ar) { NativeCall(this, "UStaticMeshComponent.Serialize", Ar); } + bool AreNativePropertiesIdenticalTo(UObject* Other) { return NativeCall(this, "UStaticMeshComponent.AreNativePropertiesIdenticalTo", Other); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "UStaticMeshComponent.CalcBounds", result, LocalToWorld); } + void OnRegister() { NativeCall(this, "UStaticMeshComponent.OnRegister"); } + void OnUnregister() { NativeCall(this, "UStaticMeshComponent.OnUnregister"); } + //void GetStreamingTextureInfo(TArray* OutStreamingTextures) { NativeCall*>(this, "UStaticMeshComponent.GetStreamingTextureInfo", OutStreamingTextures); } + bool CanEditSimulatePhysics() { return NativeCall(this, "UStaticMeshComponent.CanEditSimulatePhysics"); } + bool DoesSocketExist(FName InSocketName) { return NativeCall(this, "UStaticMeshComponent.DoesSocketExist", InSocketName); } + UStaticMeshSocket* GetSocketByName(FName InSocketName) { return NativeCall(this, "UStaticMeshComponent.GetSocketByName", InSocketName); } + FTransform* GetSocketTransform(FTransform* result, FName InSocketName, ERelativeTransformSpace TransformSpace) { return NativeCall(this, "UStaticMeshComponent.GetSocketTransform", result, InSocketName, TransformSpace); } + void BeginDestroy() { NativeCall(this, "UStaticMeshComponent.BeginDestroy"); } + void ExportCustomProperties(FOutputDevice* Out, unsigned int Indent) { NativeCall(this, "UStaticMeshComponent.ExportCustomProperties", Out, Indent); } + //void ImportCustomProperties(const wchar_t* SourceText, FFeedbackContext* Warn) { NativeCall(this, "UStaticMeshComponent.ImportCustomProperties", SourceText, Warn); } + void PostLoad() { NativeCall(this, "UStaticMeshComponent.PostLoad"); } + bool SetStaticMesh(UStaticMesh* NewMesh) { return NativeCall(this, "UStaticMeshComponent.SetStaticMesh", NewMesh); } + void GetLocalBounds(FVector* Min, FVector* Max) { NativeCall(this, "UStaticMeshComponent.GetLocalBounds", Min, Max); } + bool UsesOnlyUnlitMaterials() { return NativeCall(this, "UStaticMeshComponent.UsesOnlyUnlitMaterials"); } + bool GetLightMapResolution(int* Width, int* Height) { return NativeCall(this, "UStaticMeshComponent.GetLightMapResolution", Width, Height); } + void GetEstimatedLightMapResolution(int* Width, int* Height) { NativeCall(this, "UStaticMeshComponent.GetEstimatedLightMapResolution", Width, Height); } + bool HasValidSettingsForStaticLighting() { return NativeCall(this, "UStaticMeshComponent.HasValidSettingsForStaticLighting"); } + bool UsesTextureLightmaps(int InWidth, int InHeight) { return NativeCall(this, "UStaticMeshComponent.UsesTextureLightmaps", InWidth, InHeight); } + bool HasLightmapTextureCoordinates() { return NativeCall(this, "UStaticMeshComponent.HasLightmapTextureCoordinates"); } + void GetTextureLightAndShadowMapMemoryUsage(int InWidth, int InHeight, int* OutLightMapMemoryUsage, int* OutShadowMapMemoryUsage) { NativeCall(this, "UStaticMeshComponent.GetTextureLightAndShadowMapMemoryUsage", InWidth, InHeight, OutLightMapMemoryUsage, OutShadowMapMemoryUsage); } + void GetLightAndShadowMapMemoryUsage(int* LightMapMemoryUsage, int* ShadowMapMemoryUsage) { NativeCall(this, "UStaticMeshComponent.GetLightAndShadowMapMemoryUsage", LightMapMemoryUsage, ShadowMapMemoryUsage); } + bool GetEstimatedLightAndShadowMapMemoryUsage(int* TextureLightMapMemoryUsage, int* TextureShadowMapMemoryUsage, int* VertexLightMapMemoryUsage, int* VertexShadowMapMemoryUsage, int* StaticLightingResolution, bool* bIsUsingTextureMapping, bool* bHasLightmapTexCoords) { return NativeCall(this, "UStaticMeshComponent.GetEstimatedLightAndShadowMapMemoryUsage", TextureLightMapMemoryUsage, TextureShadowMapMemoryUsage, VertexLightMapMemoryUsage, VertexShadowMapMemoryUsage, StaticLightingResolution, bIsUsingTextureMapping, bHasLightmapTexCoords); } + int GetNumMaterials() { return NativeCall(this, "UStaticMeshComponent.GetNumMaterials"); } + void GetUsedMaterials(TArray* OutMaterials) { NativeCall*>(this, "UStaticMeshComponent.GetUsedMaterials", OutMaterials); } + FName* GetComponentInstanceDataType(FName* result) { return NativeCall(this, "UStaticMeshComponent.GetComponentInstanceDataType", result); } + //void ApplyComponentInstanceData(TSharedPtr ComponentInstanceData) { NativeCall>(this, "UStaticMeshComponent.ApplyComponentInstanceData", ComponentInstanceData); } + //bool DoCustomNavigableGeometryExport(FNavigableGeometryExport* GeomExport) { return NativeCall(this, "UStaticMeshComponent.DoCustomNavigableGeometryExport", GeomExport); } + //ELightMapInteractionType GetStaticLightingType() { return NativeCall(this, "UStaticMeshComponent.GetStaticLightingType"); } + float GetEmissiveBoost(int ElementIndex) { return NativeCall(this, "UStaticMeshComponent.GetEmissiveBoost", ElementIndex); } + float GetDiffuseBoost(int ElementIndex) { return NativeCall(this, "UStaticMeshComponent.GetDiffuseBoost", ElementIndex); } + void InvalidateLightingCacheDetailed(bool bInvalidateBuildEnqueuedLighting, bool bTranslationOnly) { NativeCall(this, "UStaticMeshComponent.InvalidateLightingCacheDetailed", bInvalidateBuildEnqueuedLighting, bTranslationOnly); } + bool SetStaticLightingMapping(bool bTextureMapping, int ResolutionToUse) { return NativeCall(this, "UStaticMeshComponent.SetStaticLightingMapping", bTextureMapping, ResolutionToUse); } + void SetLODDataCount(const unsigned int MinSize, const unsigned int MaxSize) { NativeCall(this, "UStaticMeshComponent.SetLODDataCount", MinSize, MaxSize); } + bool ShouldRecreateProxyOnUpdateTransform() { return NativeCall(this, "UStaticMeshComponent.ShouldRecreateProxyOnUpdateTransform"); } +}; + +struct UInstancedStaticMeshComponent : UStaticMeshComponent +{ + void DealDirectDamage(APlayerController* ForPC, float DamageAmount, TSubclassOf DamageTypeClass, int hitBodyIndex) { NativeCall, int>(this, "UInstancedStaticMeshComponent.DealDirectDamage", ForPC, DamageAmount, DamageTypeClass, hitBodyIndex); } }; + +struct UStaticMeshSocket : UObject +{ + FName& SocketNameField() { return *GetNativePointerField(this, "UStaticMeshSocket.SocketName"); } + FVector& RelativeLocationField() { return *GetNativePointerField(this, "UStaticMeshSocket.RelativeLocation"); } + FRotator& RelativeRotationField() { return *GetNativePointerField(this, "UStaticMeshSocket.RelativeRotation"); } + FVector& RelativeScaleField() { return *GetNativePointerField(this, "UStaticMeshSocket.RelativeScale"); } + FString& TagField() { return *GetNativePointerField(this, "UStaticMeshSocket.Tag"); } + + // Functions + + bool GetSocketTransform(FTransform* OutTransform, UStaticMeshComponent* MeshComp) { return NativeCall(this, "UStaticMeshSocket.GetSocketTransform", OutTransform, MeshComp); } +}; + +struct UStaticMesh : UObject +{ + TArray& MaterialsField() { return *GetNativePointerField*>(this, "UStaticMesh.Materials"); } + //TScopedPointer& RenderDataField() { return *GetNativePointerField*>(this, "UStaticMesh.RenderData"); } + int& LightMapResolutionField() { return *GetNativePointerField(this, "UStaticMesh.LightMapResolution"); } + int& LightMapCoordinateIndexField() { return *GetNativePointerField(this, "UStaticMesh.LightMapCoordinateIndex"); } + //TEnumAsByte& DistanceFieldTwoSidedOverrideField() { return *GetNativePointerField*>(this, "UStaticMesh.DistanceFieldTwoSidedOverride"); } + float& DistanceFieldRuntimeQualityField() { return *GetNativePointerField(this, "UStaticMesh.DistanceFieldRuntimeQuality"); } + int& CurrentStreamedInSizeField() { return *GetNativePointerField(this, "UStaticMesh.CurrentStreamedInSize"); } + bool& bStreamInStateField() { return *GetNativePointerField(this, "UStaticMesh.bStreamInState"); } + bool& bStreamInRequestField() { return *GetNativePointerField(this, "UStaticMesh.bStreamInRequest"); } + unsigned __int64& RequestLoadField() { return *GetNativePointerField(this, "UStaticMesh.RequestLoad"); } + //FThreadSafeCounter& PendingLODRequestField() { return *GetNativePointerField(this, "UStaticMesh.PendingLODRequest"); } + long double& LastStreamChangeCallField() { return *GetNativePointerField(this, "UStaticMesh.LastStreamChangeCall"); } + //TLinkedList* LinkedStreamersField() { return GetNativePointerField*>(this, "UStaticMesh.LinkedStreamers"); } + float& StreamingDistanceMultiplierField() { return *GetNativePointerField(this, "UStaticMesh.StreamingDistanceMultiplier"); } + float& LpvBiasMultiplierField() { return *GetNativePointerField(this, "UStaticMesh.LpvBiasMultiplier"); } + //FRenderCommandFence& ReleaseResourcesFenceField() { return *GetNativePointerField(this, "UStaticMesh.ReleaseResourcesFence"); } + FString& HighResSourceMeshNameField() { return *GetNativePointerField(this, "UStaticMesh.HighResSourceMeshName"); } + unsigned int& HighResSourceMeshCRCField() { return *GetNativePointerField(this, "UStaticMesh.HighResSourceMeshCRC"); } + FGuid& LightingGuidField() { return *GetNativePointerField(this, "UStaticMesh.LightingGuid"); } + TArray& SocketsField() { return *GetNativePointerField*>(this, "UStaticMesh.Sockets"); } + //TSharedPtr& SpeedTreeWindField() { return *GetNativePointerField*>(this, "UStaticMesh.SpeedTreeWind"); } + long double& LastRenderTimeField() { return *GetNativePointerField(this, "UStaticMesh.LastRenderTime"); } + float& ClosestDistanceField() { return *GetNativePointerField(this, "UStaticMesh.ClosestDistance"); } + unsigned int& StreamDistanceFrameField() { return *GetNativePointerField(this, "UStaticMesh.StreamDistanceFrame"); } + int& ElementToIgnoreForTexFactorField() { return *GetNativePointerField(this, "UStaticMesh.ElementToIgnoreForTexFactor"); } + TArray& AssetUserDataField() { return *GetNativePointerField*>(this, "UStaticMesh.AssetUserData"); } + //UNavCollision* NavCollisionField() { return GetNativePointerField(this, "UStaticMesh.NavCollision"); } + FName& CustomTagField() { return *GetNativePointerField(this, "UStaticMesh.CustomTag"); } + + // Functions + + void InitResources() { NativeCall(this, "UStaticMesh.InitResources"); } + //unsigned __int64 GetResourceSize(EResourceSizeMode::Type Mode) { return NativeCall(this, "UStaticMesh.GetResourceSize", Mode); } + bool HasValidRenderData() { return NativeCall(this, "UStaticMesh.HasValidRenderData"); } + FBoxSphereBounds* GetBounds(FBoxSphereBounds* result) { return NativeCall(this, "UStaticMesh.GetBounds", result); } + float GetStreamingTextureFactor(int RequestedUVIndex) { return NativeCall(this, "UStaticMesh.GetStreamingTextureFactor", RequestedUVIndex); } + void ReleaseResources() { NativeCall(this, "UStaticMesh.ReleaseResources"); } + //static void AddReferencedObjects(UObject* InThis, FReferenceCollector* Collector) { NativeCall(nullptr, "UStaticMesh.AddReferencedObjects", InThis, Collector); } + void BeginDestroy() { NativeCall(this, "UStaticMesh.BeginDestroy"); } + bool IsReadyForFinishDestroy() { return NativeCall(this, "UStaticMesh.IsReadyForFinishDestroy"); } + //void GetAssetRegistryTags(TArray* OutTags) { NativeCall*>(this, "UStaticMesh.GetAssetRegistryTags", OutTags); } + void Serialize(FArchive* Ar) { NativeCall(this, "UStaticMesh.Serialize", Ar); } + void PostLoad() { NativeCall(this, "UStaticMesh.PostLoad"); } + FString* GetDesc(FString* result) { return NativeCall(this, "UStaticMesh.GetDesc", result); } + bool ContainsPhysicsTriMeshData(bool bInUseAllTriData) { return NativeCall(this, "UStaticMesh.ContainsPhysicsTriMeshData", bInUseAllTriData); } + void AddAssetUserData(UAssetUserData* InUserData) { NativeCall(this, "UStaticMesh.AddAssetUserData", InUserData); } + UAssetUserData* GetAssetUserDataOfClass(TSubclassOf InUserDataClass) { return NativeCall>(this, "UStaticMesh.GetAssetUserDataOfClass", InUserDataClass); } + void RemoveUserDataOfClass(TSubclassOf InUserDataClass) { NativeCall>(this, "UStaticMesh.RemoveUserDataOfClass", InUserDataClass); } + void EnforceLightmapRestrictions() { NativeCall(this, "UStaticMesh.EnforceLightmapRestrictions"); } + void UnlinkStreaming() { NativeCall(this, "UStaticMesh.UnlinkStreaming"); } + void ResetStreamingState() { NativeCall(this, "UStaticMesh.ResetStreamingState"); } + void SetLODStreaming(long double CurrentAppTime) { NativeCall(this, "UStaticMesh.SetLODStreaming", CurrentAppTime); } + long double Dyn_GetLastRenderTime() { return NativeCall(this, "UStaticMesh.Dyn_GetLastRenderTime"); } + float Dyn_GetSizePriority() { return NativeCall(this, "UStaticMesh.Dyn_GetSizePriority"); } + void Dyn_SetStreaming(bool bShouldStream) { NativeCall(this, "UStaticMesh.Dyn_SetStreaming", bShouldStream); } + int Dyn_GetStreamingSize() { return NativeCall(this, "UStaticMesh.Dyn_GetStreamingSize"); } + bool Dyn_IsStreamed() { return NativeCall(this, "UStaticMesh.Dyn_IsStreamed"); } + bool UpdateStreaming() { return NativeCall(this, "UStaticMesh.UpdateStreaming"); } + void InitializeLODData() { NativeCall(this, "UStaticMesh.InitializeLODData"); } +}; + +struct FAttachedInstancedHarvestingElement +{ + UMeshComponent* BaseMeshComponent; + int OriginalIndexIntoBase; + float MaxHarvestHealth; + float CurrentHarvestHealth; + float HarvestDamageCache; + float HarvestEffectivenessCache; + UPrimalHarvestingComponent* ParentHarvestingComponent; + FVector Position; + __int8 bIsUnharvestable : 1; + __int8 bUseInternalActorComponentOctree : 1; + __int8 bRegisteredInternalActorComponentOctree : 1; + __int8 bHarvestingComponentHidden : 1; + __int8 bDontRegisterWithOctree : 1; + long double LastDepletionTime; + long double LastReplenishTime; + float DepletionExhaustionEffect; + float NextReplenishInterval; + TArray AdditionalComponentAttachments; +}; + +struct FComponentAttachmentEntry +{ + TSubclassOf ActorComponentClass; + FVector ComponentLocationOffset; + FRotator ComponentRotationOffset; +}; + +struct UPrimalHarvestingComponent : UActorComponent +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalHarvestingComponent.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUPrimalHarvestingComponent() { NativeCall(nullptr, "UPrimalHarvestingComponent.StaticRegisterNativesUPrimalHarvestingComponent"); } + bool TemplateCheckForHarvestRepopulation(bool bForceReinit, UWorld* world, FVector* where) { NativeCall(this, "UPrimalHarvestingComponent.TemplateCheckForHarvestRepopulation", world, where); } + void DealDirectDamage(APlayerController* ForPC, float DamageAmount, TSubclassOf DamageTypeClass) { NativeCall>(this, "UPrimalHarvestingComponent.DealDirectDamage", ForPC, DamageAmount, DamageTypeClass); } + + TArray& HarvestResourceEntries() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.HarvestResourceEntries"); } + TArray& BaseHarvestResourceEntries() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.BaseHarvestResourceEntries"); } + + FString& DescriptiveName() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DescriptiveName"); } + FString& UseHarvestString() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UseHarvestString"); } + FString& UnequipWeaponToUseHarvestString() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UnequipWeaponToUseHarvestString"); } + FString& HarvestableFriendlyName() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.HarvestableFriendlyName"); } + FAttachedInstancedHarvestingElement* ActiveInstancedElement() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ActiveInstancedElement"); } + + TArray& AdditionalComponentAttachments() { return *GetNativePointerField< TArray*>(this, "UPrimalHarvestingComponent.AdditionalComponentAttachments"); } +}; + +struct AMissionType : AActor +{ + FString& MissionDisplayNameField() { return *GetNativePointerField(this, "AMissionType.MissionDisplayName"); } + + int& MissionVersionField() { return *GetNativePointerField(this, "AMissionType.MissionVersion"); } + FName& CachedMissionTagField() { return *GetNativePointerField(this, "AMissionType.CachedMissionTag"); } + + static void GetNearbyPlayersAndTamedDinos(UObject* WorldContextObject, TArray* OutCharacters, FVector* Location, float Radius) { NativeCall*, FVector*, float>(nullptr, "AMissionType.GetNearbyPlayersAndTamedDinos", WorldContextObject, OutCharacters, Location, Radius); } +}; + +struct FCharacterAndControllerPair +{ + AShooterCharacter* Character; + AShooterPlayerController* Controller; +}; + +struct ABiomeZoneVolume : AVolume +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ABiomeZoneVolume.GetPrivateStaticClass", Package); } +}; + +struct FSpawnPointInfo +{ + int& SpawnPointIDField() { return *GetNativePointerField(this, "FSpawnPointInfo.SpawnPointID"); } + FString& BedNameField() { return *GetNativePointerField(this, "FSpawnPointInfo.BedName"); } + ABiomeZoneVolume* SpawnPointVolumeField() { return GetNativePointerField(this, "FSpawnPointInfo.SpawnPointVolume"); } + FVector& AtLocationField() { return *GetNativePointerField(this, "FSpawnPointInfo.AtLocation"); } + long double& NextAllowedUseTimeField() { return *GetNativePointerField(this, "FSpawnPointInfo.NextAllowedUseTime"); } + bool& bAllowedUseField() { return *GetNativePointerField(this, "FSpawnPointInfo.bAllowedUse"); } + + // Functions + + FString* GetDisplayName(FString* result, FVector* FromPos, bool bIncludeDistance) { return NativeCall(this, "FSpawnPointInfo.GetDisplayName", result, FromPos, bIncludeDistance); } + FSpawnPointInfo* operator=(FSpawnPointInfo* __that) { return NativeCall(this, "FSpawnPointInfo.operator=", __that); } + bool operator==(FSpawnPointInfo* Other) { return NativeCall(this, "FSpawnPointInfo.operator==", Other); } +}; + +struct ATriggerBase : AActor +{ + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "ATriggerBase.GetPrivateStaticClass"); } + TSubobjectPtr& CollisionComponentField() { return *GetNativePointerField*>(this, "ATriggerBase.CollisionComponent"); } +}; + +struct ATriggerSphere : ATriggerBase +{ + static UClass* GetClass() + { + static UClass* Class = Globals::FindClass("Class /Script/Engine.TriggerSphere"); + + return Class; + } +}; \ No newline at end of file diff --git a/version/Core/Public/API/ARK/Ark.h b/version/Core/Public/API/ARK/Ark.h index f84c5ed8..2522ad3b 100644 --- a/version/Core/Public/API/ARK/Ark.h +++ b/version/Core/Public/API/ARK/Ark.h @@ -2,26 +2,31 @@ #define _CRT_SECURE_NO_WARNINGS +#ifndef _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING +#define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING +#endif + +#ifndef ARK_GAME +#define ARK_GAME +#endif + #include "../Base.h" +#include "Enums.h" #include "../UE/Math/Vector.h" #include "../UE/Math/Rotator.h" #include "../UE/NetSerialization.h" -#include "../Enums.h" +#include "../UE/Math/ColorList.h" #include "../UE/UE.h" #include "Inventory.h" -#include "GameMode.h" -#include "GameState.h" #include "Other.h" #include "Tribe.h" #include "Actor.h" +#include "GameMode.h" +#include "GameState.h" #include "PrimalStructure.h" -#include "IApiUtils.h" -#include "ICommands.h" +#include "../../IApiUtils.h" +#include "../../ICommands.h" #include "IHooks.h" #include "Tools.h" - -#define DECLARE_HOOK(name, returnType, ...) typedef returnType(__fastcall * name ## _Func)(__VA_ARGS__); \ -inline name ## _Func name ## _original; \ -returnType __fastcall Hook_ ## name(__VA_ARGS__) diff --git a/version/Core/Public/API/ARK/Enums.h b/version/Core/Public/API/ARK/Enums.h new file mode 100644 index 00000000..f14dbc31 --- /dev/null +++ b/version/Core/Public/API/ARK/Enums.h @@ -0,0 +1,14422 @@ +#pragma once + +#pragma warning(push) +#pragma warning(disable : 4369) + +enum class USetSpanCondition +{ + USET_SPAN_NOT_CONTAINED = 0x0, + USET_SPAN_CONTAINED = 0x1, + USET_SPAN_SIMPLE = 0x2, + USET_SPAN_CONDITION_COUNT = 0x3, +}; + +enum class EThreadPriority +{ + TPri_Normal = 0x0, + TPri_AboveNormal = 0x1, + TPri_BelowNormal = 0x2, + TPri_Highest = 0x3, + TPri_Lowest = 0x4, + TPri_SlightlyBelowNormal = 0x5, +}; + +namespace EHostSessionPanel +{ + enum Type + { + GENERAL = 0x0, + ADVANCED = 0x1, + ENGRAMS = 0x2, + MAX = 0x3, + }; +} + +namespace EDelegateInstanceType +{ + enum Type + { + SharedPointerMethod = 0x0, + ThreadSafeSharedPointerMethod = 0x1, + RawMethod = 0x2, + UFunction = 0x3, + UObjectMethod = 0x4, + Raw = 0x5, + Functor = 0x6, + }; +} + +namespace ELocalizationResourceSource +{ + enum Type + { + ManifestArchive = 0x0, + LocalizationResource = 0x1, + }; +} + +namespace EPopUpOrientation +{ + enum Type + { + Horizontal = 0x0, + Vertical = 0x1, + }; +} + +enum class EConsoleVariableFlags +{ + ECVF_Default = 0x0, + ECVF_Cheat = 0x1, + ECVF_Changed = 0x2, + ECVF_ReadOnly = 0x4, + ECVF_Unregistered = 0x8, + ECVF_CreatedFromIni = 0x10, + ECVF_RenderThreadSafe = 0x20, + ECVF_Scalability = 0x40, + ECVF_ScalabilityGroup = 0x80, + ECVF_SetByMask = 0xff000000, +}; + +namespace FWindowsOSVersionHelper +{ + enum ErrorCodes + { + SUCCEEDED = 0x0, + ERROR_UNKNOWNVERSION = 0x1, + ERROR_GETPRODUCTINFO_FAILED = 0x2, + ERROR_GETVERSIONEX_FAILED = 0x4, + }; +} + +enum class ERHIZBuffer +{ + FarPlane = 0x0, + NearPlane = 0x1, + IsInverted = 0x1, +}; + +namespace EWindowTitleAlignment +{ + enum Type + { + Left = 0x0, + Center = 0x1, + Right = 0x2, + }; +} + +enum class EModuleChangeReason +{ + ModuleLoaded = 0x0, + ModuleUnloaded = 0x1, + PluginDirectoryChanged = 0x2, +}; + +namespace ETargetDeviceFeatures +{ + enum Type + { + MultiLaunch = 0x0, + PowerOff = 0x1, + PowerOn = 0x2, + ProcessSnapshot = 0x3, + Reboot = 0x4, + }; +} + +namespace FDelegateHandle +{ + enum EGenerateNewHandleType + { + GenerateNewHandle = 0x0, + }; +} + +enum class EResourceLockMode +{ + RLM_ReadOnly = 0x0, + RLM_WriteOnly = 0x1, + RLM_PrepRead = 0x2, + RLM_DoRead = 0x3, + RLM_Num = 0x4, +}; + +namespace ELogTimes +{ + enum Type + { + None = 0x0, + UTC = 0x1, + SinceGStartTime = 0x2, + }; +} + +enum class ECastToken +{ + CST_ObjectToInterface = 0x46, + CST_ObjectToBool = 0x47, + CST_InterfaceToBool = 0x49, + CST_Max = 0xff, +}; + +namespace ERangeBoundTypes +{ + enum Type + { + Exclusive = 0x0, + Inclusive = 0x1, + Open = 0x2, + }; +} + +namespace EMouseButtons +{ + enum Type + { + Left = 0x0, + Middle = 0x1, + Right = 0x2, + Thumb01 = 0x3, + Thumb02 = 0x4, + Invalid = 0x5, + }; +} + +enum class EShadowMapFlags +{ + SMF_None = 0x0, + SMF_Streamed = 0x1, +}; + +namespace EMaterialShaderMapUsage +{ + enum Type + { + Default = 0x0, + LightmassExportEmissive = 0x1, + LightmassExportDiffuse = 0x2, + LightmassExportOpacity = 0x3, + LightmassExportNormal = 0x4, + }; +} + +namespace EControllerButtons +{ + enum Type + { + LeftAnalogY = 0x0, + LeftAnalogX = 0x1, + RightAnalogY = 0x2, + RightAnalogX = 0x3, + LeftTriggerAnalog = 0x4, + RightTriggerAnalog = 0x5, + FaceButtonBottom = 0x6, + FaceButtonRight = 0x7, + FaceButtonLeft = 0x8, + FaceButtonTop = 0x9, + LeftShoulder = 0xa, + RightShoulder = 0xb, + SpecialLeft = 0xc, + SpecialRight = 0xd, + LeftThumb = 0xe, + RightThumb = 0xf, + LeftTriggerThreshold = 0x10, + RightTriggerThreshold = 0x11, + DPadUp = 0x12, + DPadDown = 0x13, + DPadLeft = 0x14, + DPadRight = 0x15, + LeftStickUp = 0x16, + LeftStickDown = 0x17, + LeftStickLeft = 0x18, + LeftStickRight = 0x19, + RightStickUp = 0x1a, + RightStickDown = 0x1b, + RightStickLeft = 0x1c, + RightStickRight = 0x1d, + Touch0 = 0x1e, + Touch1 = 0x1f, + Touch2 = 0x20, + Touch3 = 0x21, + BackLeft = 0x22, + BackRight = 0x23, + GlobalMenu = 0x24, + GlobalView = 0x25, + GlobalPause = 0x26, + GlobalPlay = 0x27, + GlobalBack = 0x28, + AndroidBack = 0x29, + Invalid = 0x2a, + }; +} + +namespace EMessageDataState +{ + enum Type + { + Complete = 0x0, + Incomplete = 0x1, + Invalid = 0x2, + }; +} + +enum class ECustomSortAlternateIndexMode +{ + CSAIM_Auto = 0x0, + CSAIM_Left = 0x1, + CSAIM_Right = 0x2, +}; + +enum class ELightMapInteractionType +{ + LMIT_None = 0x0, + LMIT_Texture = 0x2, + LMIT_NumBits = 0x3, +}; + +enum class ETrackActiveCondition +{ + ETAC_Always = 0x0, + ETAC_GoreEnabled = 0x1, + ETAC_GoreDisabled = 0x2, + ETAC_MAX = 0x3, +}; + +enum class EClearBinding +{ + ENoneBound = 0x0, + EColorBound = 0x1, + EDepthStencilBound = 0x2, +}; + +namespace FGenericPlatformMemory +{ + enum EMemoryCounterRegion + { + MCR_Invalid = 0x0, + MCR_Physical = 0x1, + MCR_GPU = 0x2, + MCR_GPUSystem = 0x3, + MCR_TexturePool = 0x4, + MCR_MAX = 0x5, + }; +} + +namespace EDrawDynamicFlags +{ + enum Type + { + ForceLowestLOD = 0x1, + }; +} + +namespace EWindowActivation +{ + enum Type + { + Activate = 0x0, + ActivateByMouse = 0x1, + Deactivate = 0x2, + }; +} + +namespace EWindowZone +{ + enum Type + { + NotInWindow = 0x0, + TopLeftBorder = 0x1, + TopBorder = 0x2, + TopRightBorder = 0x3, + LeftBorder = 0x4, + ClientArea = 0x5, + RightBorder = 0x6, + BottomLeftBorder = 0x7, + BottomBorder = 0x8, + BottomRightBorder = 0x9, + TitleBar = 0xa, + MinimizeButton = 0xb, + MaximizeButton = 0xc, + CloseButton = 0xd, + SysMenu = 0xe, + }; +} + +enum class EInterpCurveMode +{ + CIM_Linear = 0x0, + CIM_CurveAuto = 0x1, + CIM_Constant = 0x2, + CIM_CurveUser = 0x3, + CIM_CurveBreak = 0x4, + CIM_CurveAutoClamped = 0x5, + CIM_Unknown = 0x6, +}; + +namespace EMeshComponentUpdateFlag +{ + enum Type + { + AlwaysTickPoseAndRefreshBones = 0x0, + AlwaysTickPose = 0x1, + OnlyTickPoseWhenRendered = 0x2, + LocalControlTickPoseAndRefreshBones = 0x3, + }; +} + +enum class EVerticalAlignment +{ + VAlign_Fill = 0x0, + VAlign_Top = 0x1, + VAlign_Center = 0x2, + VAlign_Bottom = 0x3, +}; + +enum class EMovementMode +{ + MOVE_None = 0x0, + MOVE_Walking = 0x1, + MOVE_Falling = 0x2, + MOVE_Swimming = 0x3, + MOVE_Flying = 0x4, + MOVE_Custom = 0x5, + MOVE_MAX = 0x6, +}; + +namespace FWindowsPlatformMemory +{ + enum EMemoryCounterRegion + { + MCR_Invalid = 0x0, + MCR_Physical = 0x1, + MCR_GPU = 0x2, + MCR_GPUSystem = 0x3, + MCR_TexturePool = 0x4, + MCR_SamplePlatformSpecifcMemoryRegion = 0x5, + MCR_MAX = 0x6, + }; +} + +namespace EWindowAction +{ + enum Type + { + ClickedNonClientArea = 0x1, + Maximize = 0x2, + Restore = 0x3, + WindowMenu = 0x4, + }; +} + +namespace EDropEffect +{ + enum Type + { + None = 0x0, + Copy = 0x1, + Move = 0x2, + Link = 0x3, + }; +} + +enum class ETriangleSortAxis +{ + TSA_X_Axis = 0x0, + TSA_Y_Axis = 0x1, + TSA_Z_Axis = 0x2, + TSA_MAX = 0x3, +}; + +namespace EGestureEvent +{ + enum Type + { + None = 0x0, + Scroll = 0x1, + Magnify = 0x2, + Swipe = 0x3, + Rotate = 0x4, + Count = 0x5, + }; +} + +namespace EOnlineSharingReadCategory +{ + enum Type + { + None = 0x0, + Posts = 0x1, + Friends = 0x2, + Mailbox = 0x4, + OnlineStatus = 0x8, + ProfileInfo = 0x10, + LocationInfo = 0x20, + Default = 0x30, + }; +} + +namespace EExportedDeclaration +{ + enum Type + { + Local = 0x0, + Member = 0x1, + Parameter = 0x2, + }; +} + +namespace EBrowseReturnVal +{ + enum Type + { + Success = 0x0, + Failure = 0x1, + Pending = 0x2, + }; +} + +namespace EGuidFormats +{ + enum Type + { + Digits = 0x0, + DigitsWithHyphens = 0x1, + DigitsWithHyphensInBraces = 0x2, + DigitsWithHyphensInParentheses = 0x3, + HexValuesInBraces = 0x4, + UniqueObjectGuid = 0x5, + }; +} + +enum class ELandscapeSetupErrors +{ + LSE_None = 0x0, + LSE_NoLandscapeInfo = 0x1, + LSE_CollsionXY = 0x2, + LSE_NoLayerInfo = 0x3, + LSE_MAX = 0x4, +}; + +enum class ETwitterRequestMethod +{ + TRM_Get = 0x0, + TRM_Post = 0x1, + TRM_Delete = 0x2, + TRM_MAX = 0x3, +}; + +namespace EQueueMode +{ + enum Type + { + Mpsc = 0x0, + Spsc = 0x1, + }; +} + +enum class EClassFlags +{ + CLASS_None = 0x0, + CLASS_Abstract = 0x1, + CLASS_DefaultConfig = 0x2, + CLASS_Config = 0x4, + CLASS_Transient = 0x8, + CLASS_Parsed = 0x10, + CLASS_Localized = 0x20, + CLASS_AdvancedDisplay = 0x40, + CLASS_Native = 0x80, + CLASS_NoExport = 0x100, + CLASS_NotPlaceable = 0x200, + CLASS_PerObjectConfig = 0x400, + CLASS_PointersDefaultToWeak = 0x800, + CLASS_EditInlineNew = 0x1000, + CLASS_CollapseCategories = 0x2000, + CLASS_Interface = 0x4000, + CLASS_CustomConstructor = 0x8000, + CLASS_Const = 0x10000, + CLASS_PointersDefaultToAutoWeak = 0x20000, + CLASS_CompiledFromBlueprint = 0x40000, + CLASS_MinimalAPI = 0x80000, + CLASS_RequiredAPI = 0x100000, + CLASS_DefaultToInstanced = 0x200000, + CLASS_TokenStreamAssembled = 0x400000, + CLASS_HasInstancedReference = 0x800000, + CLASS_Hidden = 0x1000000, + CLASS_Deprecated = 0x2000000, + CLASS_HideDropDown = 0x4000000, + CLASS_Intrinsic = 0x10000000, + CLASS_Temporary = 0x20000000, + CLASS_ConfigDoNotCheckDefaults = 0x40000000, + CLASS_NewerVersionExists = 0x80000000, + CLASS_Inherit = 0x42a30e2e, + CLASS_RecompilerClear = 0x52e30faf, + CLASS_ShouldNeverBeLoaded = 0x10400080, + CLASS_ScriptInherit = 0x42a33e2e, + CLASS_SaveInCompiledInClasses = 0x57bb7eef, + CLASS_AllFlags = 0xff, +}; + +namespace ELogVerbosity +{ + enum Type + { + NoLogging = 0x0, + Fatal = 0x1, + Error = 0x2, + Warning = 0x3, + Display = 0x4, + Log = 0x5, + Verbose = 0x6, + VeryVerbose = 0x7, + All = 0x7, + NumVerbosity = 0x8, + VerbosityMask = 0xf, + SetColor = 0x40, + BreakOnLog = 0x80, + }; +} + +namespace EMonthOfYear +{ + enum Type + { + January = 0x1, + February = 0x2, + March = 0x3, + April = 0x4, + May = 0x5, + June = 0x6, + July = 0x7, + August = 0x8, + September = 0x9, + October = 0xa, + November = 0xb, + December = 0xc, + }; +} + +enum class EMemZeroed +{ + MEM_Zeroed = 0x1, +}; + +enum class EMemOned +{ + MEM_Oned = 0x1, +}; + +namespace ENetMoveType +{ + enum Type + { + ServerMove = 0x0, + ServerMoveOld = 0x1, + ServerMoveWithRotation = 0x2, + ServerMoveOldWithRotation = 0x3, + ServerMoveOnlyRotation = 0x4, + }; +} + +namespace ELaunchVerb +{ + enum Type + { + Open = 0x0, + Edit = 0x1, + }; +} + +enum class EMaterialShadingModel +{ + MSM_Unlit = 0x0, + MSM_DefaultLit = 0x1, + MSM_Subsurface = 0x2, + MSM_PreintegratedSkin = 0x3, + MSM_ClearCoat = 0x4, + MSM_SubsurfaceProfile = 0x5, + MSM_TwoSidedFoliage = 0x6, + MSM_MAX = 0x7, +}; + +namespace EAutomationTestFlags +{ + enum Type + { + ATF_None = 0x0, + ATF_Editor = 0x1, + ATF_Game = 0x2, + ATF_Commandlet = 0x4, + ATF_ApplicationMask = 0x7, + ATF_NonNullRHI = 0x100, + ATF_RequiresUser = 0x200, + ATF_FeatureMask = 0x300, + ATF_VisualCommandlet = 0x10000, + ATF_ActionMask = 0x10000, + ATF_SmokeTest = 0x1000000, + }; +} + +enum class EUserDefinedStructureStatus +{ + UDSS_UpToDate = 0x0, + UDSS_Dirty = 0x1, + UDSS_Error = 0x2, + UDSS_Duplicate = 0x3, + UDSS_MAX = 0x4, +}; + +namespace EAutomationTestType +{ + enum Type + { + ATT_SmokeTest = 0x1, + ATT_NormalTest = 0x2, + ATT_StressTest = 0x4, + }; +} + +enum class ETextureMipCount +{ + TMC_ResidentMips = 0x0, + TMC_AllMips = 0x1, + TMC_AllMipsBiased = 0x2, + TMC_MAX = 0x3, +}; + +namespace EDateTimeStyle +{ + enum Type + { + Default = 0x0, + Short = 0x1, + Medium = 0x2, + Long = 0x3, + Full = 0x4, + }; +} + +enum class ESteamAPICallFailure +{ + k_ESteamAPICallFailureNone = 0xff, + k_ESteamAPICallFailureSteamGone = 0x0, + k_ESteamAPICallFailureNetworkFailure = 0x1, + k_ESteamAPICallFailureInvalidHandle = 0x2, + k_ESteamAPICallFailureMismatchedCallback = 0x3, +}; + +enum class EMeshScreenAlignment +{ + PSMA_MeshFaceCameraWithRoll = 0x0, + PSMA_MeshFaceCameraWithSpin = 0x1, + PSMA_MeshFaceCameraWithLockedAxis = 0x2, + PSMA_MAX = 0x3, +}; + +enum class EStreamingStatus +{ + LEVEL_Unloaded = 0x0, + LEVEL_UnloadedButStillAround = 0x1, + LEVEL_Loading = 0x2, + LEVEL_Loaded = 0x3, + LEVEL_MakingVisible = 0x4, + LEVEL_Visible = 0x5, + LEVEL_Preloading = 0x6, +}; + +enum class EDistanceFieldTwoSidedOverride +{ + DFTSO_NotOverriden = 0x0, + DFTSO_OverrideTrue = 0x1, + DFTSO_OverrideFalse = 0x2, + DFTSO_Max = 0x3, +}; + +enum class ETwitterIntegrationDelegate +{ + TID_AuthorizeComplete = 0x0, + TID_TweetUIComplete = 0x1, + TID_RequestComplete = 0x2, + TID_MAX = 0x3, +}; + +enum class EStatType +{ + STATTYPE_CycleCounter = 0x0, + STATTYPE_AccumulatorFLOAT = 0x1, + STATTYPE_AccumulatorDWORD = 0x2, + STATTYPE_CounterFLOAT = 0x3, + STATTYPE_CounterDWORD = 0x4, + STATTYPE_MemoryCounter = 0x5, + STATTYPE_Error = 0x6, +}; + +enum class ECanBeCharacterBase +{ + ECB_No = 0x0, + ECB_Yes = 0x1, + ECB_Owner = 0x2, + ECB_MAX = 0x3, +}; + +namespace FRHIResourceTableEntry +{ + enum EResourceTableDefinitions + { + RTD_NumBits_UniformBufferIndex = 0x8, + RTD_NumBits_ResourceIndex = 0x10, + }; +} + +enum class EGCReferenceType +{ + GCRT_None = 0x0, + GCRT_Object = 0x1, + GCRT_PersistentObject = 0x2, + GCRT_ArrayObject = 0x3, + GCRT_ArrayStruct = 0x4, + GCRT_FixedArray = 0x5, + GCRT_AddStructReferencedObjects = 0x6, + GCRT_AddReferencedObjects = 0x7, + GCRT_EndOfStream = 0x8, +}; + +namespace ETextJustify +{ + enum Type + { + Left = 0x0, + Center = 0x1, + Right = 0x2, + }; +} + +namespace EAttachLocation +{ + enum Type + { + KeepRelativeOffset = 0x0, + KeepWorldPosition = 0x1, + SnapToTarget = 0x2, + }; +} + +namespace UNavigationSystem +{ + enum ERegistrationResult + { + RegistrationError = 0x0, + RegistrationFailed_DataPendingKill = 0x1, + RegistrationFailed_AgentAlreadySupported = 0x2, + RegistrationFailed_AgentNotValid = 0x3, + RegistrationSuccessful = 0x4, + }; +} + +enum class ESoundDistanceCalc +{ + SOUNDDISTANCE_Normal = 0x0, + SOUNDDISTANCE_InfiniteXYPlane = 0x1, + SOUNDDISTANCE_InfiniteXZPlane = 0x2, + SOUNDDISTANCE_InfiniteYZPlane = 0x3, + SOUNDDISTANCE_MAX = 0x4, +}; + +namespace ERecastPartitioning +{ + enum Type + { + Monotone = 0x0, + Watershed = 0x1, + ChunkyMonotone = 0x2, + }; +} + +enum class EVoiceChatAttenuationModel +{ + None = 0x0, + InverseByDistance = 0x1, + LinearByDistance = 0x2, + ExponentialByDistance = 0x3, +}; + +namespace EFeaturePrivilegeLevel +{ + enum Type + { + Undefined = 0x0, + Disabled = 0x1, + EnabledFriendsOnly = 0x2, + Enabled = 0x3, + }; +} + +namespace EMouseCursor +{ + enum Type + { + None = 0x0, + Default = 0x1, + TextEditBeam = 0x2, + ResizeLeftRight = 0x3, + ResizeUpDown = 0x4, + ResizeSouthEast = 0x5, + ResizeSouthWest = 0x6, + CardinalCross = 0x7, + Crosshairs = 0x8, + Hand = 0x9, + GrabHand = 0xa, + GrabHandClosed = 0xb, + SlashedCircle = 0xc, + EyeDropper = 0xd, + TotalCursorCount = 0xe, + }; +} + +enum class EAsyncIOPriority +{ + AIOP_MIN = 0x0, + AIOP_Low = 0x1, + AIOP_BelowNormal = 0x2, + AIOP_Normal = 0x3, + AIOP_High = 0x4, + AIOP_MAX = 0x5, +}; + +namespace EEnvTestWeight +{ + enum Type + { + None = 0x0, + Square = 0x1, + Inverse = 0x2, + Absolute = 0x3, + Constant = 0x4, + Skip = 0x5, + }; +} + +namespace ESlateLineJoinType +{ + enum Type + { + Sharp = 0x0, + Simple = 0x1, + }; +} + +namespace EComponentType +{ + enum Type + { + None = 0x0, + TranslationX = 0x1, + TranslationY = 0x2, + TranslationZ = 0x3, + RotationX = 0x4, + RotationY = 0x5, + RotationZ = 0x6, + Scale = 0x7, + }; +} + +namespace EPathFindingMode +{ + enum Type + { + Regular = 0x0, + Hierarchical = 0x1, + }; +} + +enum class ECollisionChannel +{ + ECC_WorldStatic = 0x0, + ECC_WorldDynamic = 0x1, + ECC_Visibility = 0x2, + ECC_PhysicsBody = 0x3, + ECC_Destructible = 0x4, + ECC_GameTraceChannel1 = 0x5, + ECC_GameTraceChannel2 = 0x6, + ECC_GameTraceChannel3 = 0x7, + ECC_GameTraceChannel4 = 0x8, + ECC_GameTraceChannel5 = 0x9, + ECC_GameTraceChannel6 = 0xa, + ECC_GameTraceChannel7 = 0xb, + ECC_GameTraceChannel8 = 0xc, + ECC_GameTraceChannel9 = 0xd, + ECC_GameTraceChannel10 = 0xe, + ECC_GameTraceChannel11 = 0xf, + ECC_GameTraceChannel12 = 0x10, + ECC_GameTraceChannel13 = 0x11, + ECC_GameTraceChannel14 = 0x12, + ECC_GameTraceChannel15 = 0x13, + ECC_GameTraceChannel16 = 0x14, + ECC_GameTraceChannel17 = 0x15, + ECC_GameTraceChannel18 = 0x16, + ECC_GameTraceChannel19 = 0x17, + ECC_GameTraceChannel20 = 0x18, + ECC_GameTraceChannel21 = 0x19, + ECC_GameTraceChannel22 = 0x1a, + ECC_GameTraceChannel23 = 0x1b, + ECC_GameTraceChannel24 = 0x1c, + ECC_GameTraceChannel25 = 0x1d, + ECC_GameTraceChannel26 = 0x1e, + ECC_GameTraceChannel27 = 0x1f, + ECC_OverlapAll_Deprecated = 0x20, + ECC_OverlapAllDynamic_Deprecated = 0x21, + ECC_OverlapAllStatic_Deprecated = 0x22, + ECC_MAX = 0x23, +}; + +namespace EWorldBuffDifficultyType +{ + enum Type + { + GAMMA = 0x0, + BETA = 0x1, + ALPHA = 0x2, + OTHER = 0x3, + }; +} + +namespace EAutoReceiveInput +{ + enum Type + { + Disabled = 0x0, + Player0 = 0x1, + Player1 = 0x2, + Player2 = 0x3, + Player3 = 0x4, + Player4 = 0x5, + Player5 = 0x6, + Player6 = 0x7, + Player7 = 0x8, + }; +} + +namespace EFieldIteratorFlags +{ + enum InterfaceClassFlags + { + ExcludeInterfaces = 0x0, + IncludeInterfaces = 0x1, + }; +} + +enum class EPropertyExportCPPFlags +{ + CPPF_None = 0x0, + CPPF_OptionalValue = 0x1, + CPPF_ArgumentOrReturnValue = 0x2, + CPPF_Implementation = 0x4, +}; + +enum class EFileWrite +{ + FILEWRITE_NoFail = 0x1, + FILEWRITE_NoReplaceExisting = 0x2, + FILEWRITE_EvenIfReadOnly = 0x4, + FILEWRITE_Append = 0x8, + FILEWRITE_AllowRead = 0x10, +}; + +enum class EResourceAlignment +{ + VERTEXBUFFER_ALIGNMENT = 0x0, +}; + +enum class EFileRead +{ + FILEREAD_NoFail = 0x1, + FILEREAD_Silent = 0x2, +}; + +enum class ECopyResult +{ + COPY_OK = 0x0, + COPY_Fail = 0x1, + COPY_Canceled = 0x2, +}; + +enum class EBufferUsageFlags +{ + BUF_Static = 0x1, + BUF_Dynamic = 0x2, + BUF_Volatile = 0x4, + BUF_UnorderedAccess = 0x8, + BUF_ByteAddressBuffer = 0x20, + BUF_UAVCounter = 0x40, + BUF_StreamOutput = 0x80, + BUF_DrawIndirect = 0x100, + BUF_ShaderResource = 0x200, + BUF_KeepCPUAccessible = 0x400, + BUF_ZeroStride = 0x800, + BUF_FastVRAM = 0x1000, + BUF_AnyDynamic = 0x6, +}; + +namespace ENotifyTriggerMode +{ + enum Type + { + AllAnimations = 0x0, + HighestWeightedAnimation = 0x1, + None = 0x2, + }; +} + +enum class ELinkerNameTableConstructor +{ + ENAME_LinkerConstructor = 0x0, +}; + +enum class EFoliageInstanceFlags +{ + FOLIAGE_AlignToNormal = 0x1, + FOLIAGE_NoRandomYaw = 0x2, + FOLIAGE_Readjusted = 0x4, +}; + +enum class EFileOpenFlags +{ + IO_READ = 0x1, + IO_WRITE = 0x2, + IO_APPEND = 0x40, +}; + +namespace EVariantTypes +{ + enum Type + { + Empty = 0x0, + Ansichar = 0x1, + Bool = 0x2, + Box = 0x3, + BoxSphereBounds = 0x4, + ByteArray = 0x5, + Color = 0x6, + DateTime = 0x7, + Double = 0x8, + Enum = 0x9, + Float = 0xa, + Guid = 0xb, + Int8 = 0xc, + Int16 = 0xd, + Int32 = 0xe, + Int64 = 0xf, + IntRect = 0x10, + LinearColor = 0x11, + Matrix = 0x12, + Name = 0x13, + Plane = 0x14, + Quat = 0x15, + RandomStream = 0x16, + Rotator = 0x17, + String = 0x18, + Widechar = 0x19, + Timespan = 0x1a, + Transform = 0x1b, + TwoVectors = 0x1c, + UInt8 = 0x1d, + UInt16 = 0x1e, + UInt32 = 0x1f, + UInt64 = 0x20, + Vector = 0x21, + Vector2d = 0x22, + Vector4 = 0x23, + IntPoint = 0x24, + IntVector = 0x25, + NetworkGUID = 0x26, + Custom = 0x40, + }; +} + +enum class ERangeCompressionMode +{ + RCM_UNorm = 0x0, + RCM_SNorm = 0x1, + RCM_MinMaxNorm = 0x2, + RCM_MinMax = 0x3, +}; + +namespace EBoneSpaces +{ + enum Type + { + WorldSpace = 0x0, + ComponentSpace = 0x1, + }; +} + +enum class ELoopingMode +{ + LOOP_Never = 0x0, + LOOP_WithNotification = 0x1, + LOOP_Forever = 0x2, +}; + +namespace EProcessResource +{ + enum Type + { + VirtualMemory = 0x0, + }; +} + +enum class ETrailWidthMode +{ + ETrailWidthMode_FromCentre = 0x0, + ETrailWidthMode_FromFirst = 0x1, + ETrailWidthMode_FromSecond = 0x2, +}; + +enum class ENetMode +{ + NM_Standalone = 0x0, + NM_DedicatedServer = 0x1, + NM_ListenServer = 0x2, + NM_Client = 0x3, + NM_MAX = 0x4, +}; + +enum class EServerMode +{ + eServerModeInvalid = 0x0, + eServerModeNoAuthentication = 0x1, + eServerModeAuthentication = 0x2, + eServerModeAuthenticationAndSecure = 0x3, +}; + +enum class EUnrealEngineObjectUE4Version +{ + VER_UE4_ADD_PINTYPE_ARRAY = 0x6c, + VER_UE4_REMOVE_REDUNDANT_KEY = 0x6d, + VER_UE4_SUPPORT_LARGE_SHADERS = 0x6e, + VER_UE4_FUNCTIONS_IN_SHADERMAPID = 0x6f, + VER_UE4_ASSET_REGISTRY_TAGS = 0x70, + VER_UE4_DONTSORTCATEGORIES_REMOVED = 0x71, + VER_UE4_TILED_NAVMESH = 0x72, + VER_UE4_REMOVED_OLD_NAVMESH = 0x73, + VER_UE4_ANIMNOTIFY_NAMECHANGE = 0x74, + VER_UE4_CONSOLIDATE_HEADER_PARSER_ONLY_PROPERTIES = 0x75, + VER_UE4_STOPPED_SERIALIZING_COMPONENTNAMETODEFAULTOBJECTMAP = 0x76, + VER_UE4_RESET_MODIFYFREQUENCY_STATICLIGHTS = 0x77, + VER_UE4_ADD_SOUNDNODEWAVE_GUID = 0x78, + VER_UE4_ADD_SOUNDNODEWAVE_TO_DDC = 0x79, + VER_UE4_MATERIAL_BLEND_OVERRIDE = 0x7a, + VER_UE4_ADD_COOKED_TO_SOUND_NODE_WAVE = 0x7b, + VER_UE4_TEXTURE_DERIVED_DATA2 = 0x7c, + VER_UE4_ADD_COOKED_TO_TEXTURE2D = 0x7d, + VER_UE4_ADD_COOKED_TO_BODY_SETUP = 0x7e, + VER_UE4_ADD_KISMETNETWORKGRAPHS = 0x7f, + VER_UE4_MATERIAL_QUALITY_LEVEL_SWITCH = 0x80, + VER_DEBUG_MATERIALSHADER_UNIFORM_EXPRESSIONS = 0x81, + VER_UE4_REMOVED_STRIP_DATA = 0x82, + VER_UE4_FLAG_SCS_TRANSACTIONAL = 0x83, + VER_UE4_NX_DESTRUCTIBLE_ASSET_CHUNK_BOUNDS_FIX = 0x84, + VER_UE4_STATIC_MESH_SOCKETS = 0x85, + VER_UE4_REMOVE_EXTRA_SKELMESH_VERTEX_INFLUENCES = 0x86, + VER_UE4_UCURVE_USING_RICHCURVES = 0x87, + VER_UE4_INLINE_SHADERS = 0x88, + VER_UE4_ADDITIVE_TYPE_CHANGE = 0x89, + VER_UE4_READD_COOKER = 0x8a, + VER_UE4_ADDED_SCRIPT_SERIALIZATION_FOR_BLUEPRINT_GENERATED_CLASSES = 0x8b, + VER_UE4_VARIABLE_BITFIELD_SIZE = 0x8c, + VER_UE4_FIX_REQUIRED_BONES = 0x8d, + VER_UE4_COOKED_PACKAGE_VERSION_IS_PACKAGE_VERSION = 0x8e, + VER_UE4_TEXTURE_SOURCE_ART_REFACTOR = 0x8f, + VER_UE4_ADDED_EXTRA_MESH_OPTIMIZATION_SETTINGS = 0x90, + VER_UE4_DESTRUCTIBLE_MESH_BODYSETUP_HOLDS_PHYSICAL_MATERIAL = 0x91, + VER_UE4_REMOVE_USEQUENCE = 0x92, + VER_UE4_ADD_PINTYPE_BYREF = 0x93, + VER_UE4_PUBLIC_BLUEPRINT_VARS_READONLY = 0x94, + VER_UE4_VISIBILITY_FLAG_CHANGES = 0x95, + VER_UE4_REMOVE_COMPONENT_ENABLED_FLAG = 0x96, + VER_UE4_CONFORM_COMPONENT_ACTIVATE_FLAG = 0x97, + VER_UE4_ADD_SKELMESH_MESHTOIMPORTVERTEXMAP = 0x98, + VER_UE4_REMOVE_UE3_864_SERIALIZATION = 0x99, + VER_UE4_SH_LIGHTMAPS = 0x9a, + VER_UE4_REMOVED_PERSHADER_DDC = 0x9b, + VER_UE4_CORE_SPLIT = 0x9c, + VER_UE4_REMOVED_FMATERIAL_COMPILE_OUTPUTS = 0x9d, + VER_UE4_PHYSICAL_MATERIAL_MODEL = 0x9e, + VER_UE4_ADDED_MATERIALSHADERMAP_USAGE = 0x9f, + VER_UE4_BLUEPRINT_PROPERTYFLAGS_SIZE_CHANGE = 0xa0, + VER_UE4_CONSOLIDATE_SKINNEDMESH_UPDATE_FLAGS = 0xa1, + VER_UE4_REMOVE_INTERNAL_ARCHETYPE = 0xa2, + VER_UE4_REMOVE_ARCHETYPE_INDEX_FROM_LINKER_TABLES = 0xa3, + VER_UE4_VARK2NODE_NULL_VARSRCCLASS_ON_SELF = 0xa4, + VER_UE4_REMOVED_SPECULAR_BOOST = 0xa5, + VER_UE4_ADD_KISMETVISIBLE = 0xa6, + VER_UE4_MOVE_DISTRIBUITONS_TO_POSTINITPROPS = 0xa7, + VER_UE4_SHADOW_ONLY_INDEX_BUFFERS = 0xa8, + VER_UE4_CHANGED_VOLUME_SAMPLE_FORMAT = 0xa9, + VER_UE4_CHANGE_BENABLECOLLISION_TO_COLLISIONENABLED = 0xaa, + VER_UE4_CHANGED_IRRELEVANT_LIGHT_GUIDS = 0xab, + VER_UE4_RENAME_DISABLEALLRIGIDBODIES = 0xac, + VER_UE4_SOUND_NODE_ATTENUATION_SETTINGS_CHANGE = 0xad, + VER_UE4_ADD_EDGRAPHNODE_GUID = 0xae, + VER_UE4_FIX_INTERPDATA_OUTERS = 0xaf, + VER_UE4_BLUEPRINT_NATIVE_SERIALIZATION = 0xb0, + VER_UE4_SOUND_NODE_INHERIT_FROM_ED_GRAPH_NODE = 0xb1, + VER_UE4_UNIFY_AMBIENT_SOUND_ACTORS = 0xb2, + VER_UE4_LIGHTMAP_COMPRESSION = 0xb3, + VER_UE4_MORPHTARGET_CURVE_INTEGRATION = 0xb4, + VER_UE4_CLEAR_STANDALONE_FROM_LEVEL_SCRIPT_BLUEPRINTS = 0xb5, + VER_UE4_NO_INTERFACE_PROPERTY = 0xb6, + VER_UE4_CATEGORY_MOVED_TO_METADATA = 0xb7, + VER_UE4_REMOVE_CTOR_LINK = 0xb8, + VER_UE4_REMOVE_SHORT_PACKAGE_NAME_ASSOCIATIONS = 0xb9, + VER_UE4_ADD_CREATEDBYCONSTRUCTIONSCRIPT = 0xba, + VER_UE4_NX_DESTRUCTIBLE_ASSET_AUTHORING_LOAD_FIX = 0xbb, + VER_UE4_ANGULAR_CONSTRAINT_OPTIONS = 0xbc, + VER_UE4_CHANGE_MATERIAL_EXPRESSION_CONSTANTS_TO_LINEARCOLOR = 0xbd, + VER_UE4_PRIMITIVE_BUILT_LIGHTING_FLAG = 0xbe, + VER_UE4_ATMOSPHERIC_FOG_CACHE_TEXTURE = 0xbf, + VER_UE4_PRECOMPUTED_SHADOW_MAPS = 0xc0, + VER_UE4_MODULATOR_CONTINUOUS_NO_DISTRIBUTION = 0xc1, + VER_UE4_PACKAGE_MAGIC_POSTTAG = 0xc2, + VER_UE4_TOSS_IRRELEVANT_LIGHTS = 0xc3, + VER_UE4_REMOVE_NET_INDEX = 0xc4, + VER_UE4_BLUEPRINT_CDO_MIGRATION = 0xc5, + VER_UE4_BULKDATA_AT_LARGE_OFFSETS = 0xc6, + VER_UE4_EXPLICIT_STREAMING_TEXTURE_BUILT = 0xc7, + VER_UE4_PRECOMPUTED_SHADOW_MAPS_BSP = 0xc8, + VER_UE4_STATIC_MESH_REFACTOR = 0xc9, + VER_UE4_REMOVE_CACHED_STATIC_MESH_STREAMING_FACTORS = 0xca, + VER_UE4_ATMOSPHERIC_FOG_MATERIAL = 0xcb, + VER_UE4_FIX_BSP_BRUSH_TYPE = 0xcc, + VER_UE4_REMOVE_CLIENTDESTROYEDACTORCONTENT = 0xcd, + VER_UE4_SOUND_CUE_GRAPH_EDITOR = 0xce, + VER_UE4_STRIP_TRANS_LEVEL_MOVE_BUFFER = 0xcf, + VER_UE4_DEPRECATED_BNOENCROACHCHECK = 0xd0, + VER_UE4_LIGHTS_USE_IES_BRIGHTNESS_DEFAULT_CHANGED = 0xd1, + VER_UE4_MATERIAL_ATTRIBUTES_MULTIPLEX = 0xd2, + VER_UE4_TEXTURE_FORMAT_RGBA_SWIZZLE = 0xd3, + VER_UE4_SUMMARY_HAS_BULKDATA_OFFSET = 0xd4, + VER_UE4_DEFAULT_ROOT_COMP_TRANSACTIONAL = 0xd5, + VER_UE4_HASHED_MATERIAL_OUTPUT = 0xd6, + VER_UE4_BLUEPRINT_VARS_NOT_READ_ONLY = 0xd7, + VER_UE4_STATIC_MESH_STORE_NAV_COLLISION = 0xd8, + VER_UE4_ATMOSPHERIC_FOG_DECAY_NAME_CHANGE = 0xd9, + VER_UE4_SCENECOMP_TRANSLATION_TO_LOCATION = 0xda, + VER_UE4_MATERIAL_ATTRIBUTES_REORDERING = 0xdb, + VER_UE4_COLLISION_PROFILE_SETTING = 0xdc, + VER_UE4_BLUEPRINT_SKEL_TEMPORARY_TRANSIENT = 0xdd, + VER_UE4_BLUEPRINT_SKEL_SERIALIZED_AGAIN = 0xde, + VER_UE4_BLUEPRINT_SETS_REPLICATION = 0xdf, + VER_UE4_WORLD_LEVEL_INFO = 0xe0, + VER_UE4_AFTER_CAPSULE_HALF_HEIGHT_CHANGE = 0xe1, + VER_UE4_ADDED_NAMESPACE_AND_KEY_DATA_TO_FTEXT = 0xe2, + VER_UE4_ATTENUATION_SHAPES = 0xe3, + VER_UE4_LIGHTCOMPONENT_USE_IES_TEXTURE_MULTIPLIER_ON_NON_IES_BRIGHTNESS = 0xe4, + VER_UE4_REMOVE_INPUT_COMPONENTS_FROM_BLUEPRINTS = 0xe5, + VER_UE4_VARK2NODE_USE_MEMBERREFSTRUCT = 0xe6, + VER_UE4_REFACTOR_MATERIAL_EXPRESSION_SCENECOLOR_AND_SCENEDEPTH_INPUTS = 0xe7, + VER_UE4_SPLINE_MESH_ORIENTATION = 0xe8, + VER_UE4_REVERB_EFFECT_ASSET_TYPE = 0xe9, + VER_UE4_MAX_TEXCOORD_INCREASED = 0xea, + VER_UE4_SPEEDTREE_STATICMESH = 0xeb, + VER_UE4_LANDSCAPE_COMPONENT_LAZY_REFERENCES = 0xec, + VER_UE4_SWITCH_CALL_NODE_TO_USE_MEMBER_REFERENCE = 0xed, + VER_UE4_ADDED_SKELETON_ARCHIVER_REMOVAL = 0xee, + VER_UE4_ADDED_SKELETON_ARCHIVER_REMOVAL_SECOND_TIME = 0xef, + VER_UE4_BLUEPRINT_SKEL_CLASS_TRANSIENT_AGAIN = 0xf0, + VER_UE4_ADD_COOKED_TO_UCLASS = 0xf1, + VER_UE4_DEPRECATED_STATIC_MESH_THUMBNAIL_PROPERTIES_REMOVED = 0xf2, + VER_UE4_COLLECTIONS_IN_SHADERMAPID = 0xf3, + VER_UE4_REFACTOR_MOVEMENT_COMPONENT_HIERARCHY = 0xf4, + VER_UE4_FIX_TERRAIN_LAYER_SWITCH_ORDER = 0xf5, + VER_UE4_ALL_PROPS_TO_CONSTRAINTINSTANCE = 0xf6, + VER_UE4_LOW_QUALITY_DIRECTIONAL_LIGHTMAPS = 0xf7, + VER_UE4_ADDED_NOISE_EMITTER_COMPONENT = 0xf8, + VER_UE4_ADD_TEXT_COMPONENT_VERTICAL_ALIGNMENT = 0xf9, + VER_UE4_ADDED_FBX_ASSET_IMPORT_DATA = 0xfa, + VER_UE4_REMOVE_LEVELBODYSETUP = 0xfb, + VER_UE4_REFACTOR_CHARACTER_CROUCH = 0xfc, + VER_UE4_SMALLER_DEBUG_MATERIALSHADER_UNIFORM_EXPRESSIONS = 0xfd, + VER_UE4_APEX_CLOTH = 0xfe, + VER_UE4_SAVE_COLLISIONRESPONSE_PER_CHANNEL = 0xff, + VER_UE4_ADDED_LANDSCAPE_SPLINE_EDITOR_MESH = 0x100, + VER_UE4_CHANGED_MATERIAL_REFACTION_TYPE = 0x101, + VER_UE4_REFACTOR_PROJECTILE_MOVEMENT = 0x102, + VER_UE4_REMOVE_PHYSICALMATERIALPROPERTY = 0x103, + VER_UE4_PURGED_FMATERIAL_COMPILE_OUTPUTS = 0x104, + VER_UE4_ADD_COOKED_TO_LANDSCAPE = 0x105, + VER_UE4_CONSUME_INPUT_PER_BIND = 0x106, + VER_UE4_SOUND_CLASS_GRAPH_EDITOR = 0x107, + VER_UE4_FIXUP_TERRAIN_LAYER_NODES = 0x108, + VER_UE4_RETROFIT_CLAMP_EXPRESSIONS_SWAP = 0x109, + VER_UE4_REMOVE_LIGHT_MOBILITY_CLASSES = 0x10a, + VER_UE4_REFACTOR_PHYSICS_BLENDING = 0x10b, + VER_UE4_WORLD_LEVEL_INFO_UPDATED = 0x10c, + VER_UE4_STATIC_SKELETAL_MESH_SERIALIZATION_FIX = 0x10d, + VER_UE4_REMOVE_STATICMESH_MOBILITY_CLASSES = 0x10e, + VER_UE4_REFACTOR_PHYSICS_TRANSFORMS = 0x10f, + VER_UE4_REMOVE_ZERO_TRIANGLE_SECTIONS = 0x110, + VER_UE4_CHARACTER_MOVEMENT_DECELERATION = 0x111, + VER_UE4_CAMERA_ACTOR_USING_CAMERA_COMPONENT = 0x112, + VER_UE4_CHARACTER_MOVEMENT_DEPRECATE_PITCH_ROLL = 0x113, + VER_UE4_REBUILD_TEXTURE_STREAMING_DATA_ON_LOAD = 0x114, + VER_UE4_SUPPORT_32BIT_STATIC_MESH_INDICES = 0x115, + VER_UE4_ADDED_CHUNKID_TO_ASSETDATA_AND_UPACKAGE = 0x116, + VER_UE4_CHARACTER_DEFAULT_MOVEMENT_BINDINGS = 0x117, + VER_UE4_APEX_CLOTH_LOD = 0x118, + VER_UE4_ATMOSPHERIC_FOG_CACHE_DATA = 0x119, + VAR_UE4_ARRAY_PROPERTY_INNER_TAGS = 0x11a, + VER_UE4_KEEP_SKEL_MESH_INDEX_DATA = 0x11b, + VER_UE4_BODYSETUP_COLLISION_CONVERSION = 0x11c, + VER_UE4_REFLECTION_CAPTURE_COOKING = 0x11d, + VER_UE4_REMOVE_DYNAMIC_VOLUME_CLASSES = 0x11e, + VER_UE4_STORE_HASCOOKEDDATA_FOR_BODYSETUP = 0x11f, + VER_UE4_REFRACTION_BIAS_TO_REFRACTION_DEPTH_BIAS = 0x120, + VER_UE4_REMOVE_SKELETALPHYSICSACTOR = 0x121, + VER_UE4_PC_ROTATION_INPUT_REFACTOR = 0x122, + VER_UE4_LANDSCAPE_PLATFORMDATA_COOKING = 0x123, + VER_UE4_CREATEEXPORTS_CLASS_LINKING_FOR_BLUEPRINTS = 0x124, + VER_UE4_REMOVE_NATIVE_COMPONENTS_FROM_BLUEPRINT_SCS = 0x125, + VER_UE4_REMOVE_SINGLENODEINSTANCE = 0x126, + VER_UE4_CHARACTER_BRAKING_REFACTOR = 0x127, + VER_UE4_VOLUME_SAMPLE_LOW_QUALITY_SUPPORT = 0x128, + VER_UE4_SPLIT_TOUCH_AND_CLICK_ENABLES = 0x129, + VER_UE4_HEALTH_DEATH_REFACTOR = 0x12a, + VER_UE4_SOUND_NODE_ENVELOPER_CURVE_CHANGE = 0x12b, + VER_UE4_POINT_LIGHT_SOURCE_RADIUS = 0x12c, + VER_UE4_SCENE_CAPTURE_CAMERA_CHANGE = 0x12d, + VER_UE4_MOVE_SKELETALMESH_SHADOWCASTING = 0x12e, + VER_UE4_CHANGE_SETARRAY_BYTECODE = 0x12f, + VER_UE4_MATERIAL_INSTANCE_BASE_PROPERTY_OVERRIDES = 0x130, + VER_UE4_COMBINED_LIGHTMAP_TEXTURES = 0x131, + VER_UE4_BUMPED_MATERIAL_EXPORT_GUIDS = 0x132, + VER_UE4_BLUEPRINT_INPUT_BINDING_OVERRIDES = 0x133, + VER_UE4_FIXUP_BODYSETUP_INVALID_CONVEX_TRANSFORM = 0x134, + VER_UE4_FIXUP_STIFFNESS_AND_DAMPING_SCALE = 0x135, + VER_UE4_REFERENCE_SKELETON_REFACTOR = 0x136, + VER_UE4_K2NODE_REFERENCEGUIDS = 0x137, + VER_UE4_FIXUP_ROOTBONE_PARENT = 0x138, + VER_UE4_TEXT_RENDER_COMPONENTS_WORLD_SPACE_SIZING = 0x139, + VER_UE4_MATERIAL_INSTANCE_BASE_PROPERTY_OVERRIDES_PHASE_2 = 0x13a, + VER_UE4_CLASS_NOTPLACEABLE_ADDED = 0x13b, + VER_UE4_WORLD_LEVEL_INFO_LOD_LIST = 0x13c, + VER_UE4_CHARACTER_MOVEMENT_VARIABLE_RENAMING_1 = 0x13d, + VER_UE4_FSLATESOUND_CONVERSION = 0x13e, + VER_UE4_WORLD_LEVEL_INFO_ZORDER = 0x13f, + VER_UE4_PACKAGE_REQUIRES_LOCALIZATION_GATHER_FLAGGING = 0x140, + VER_UE4_BP_ACTOR_VARIABLE_DEFAULT_PREVENTING = 0x141, + VER_UE4_TEST_ANIMCOMP_CHANGE = 0x142, + VER_UE4_EDITORONLY_BLUEPRINTS = 0x143, + VER_UE4_EDGRAPHPINTYPE_SERIALIZATION = 0x144, + VER_UE4_NO_MIRROR_BRUSH_MODEL_COLLISION = 0x145, + VER_UE4_CHANGED_CHUNKID_TO_BE_AN_ARRAY_OF_CHUNKIDS = 0x146, + VER_UE4_WORLD_NAMED_AFTER_PACKAGE = 0x147, + VER_UE4_SKY_LIGHT_COMPONENT = 0x148, + VER_UE4_WORLD_LAYER_ENABLE_DISTANCE_STREAMING = 0x149, + VER_UE4_REMOVE_ZONES_FROM_MODEL = 0x14a, + VER_UE4_FIX_ANIMATIONBASEPOSE_SERIALIZATION = 0x14b, + VER_UE4_SUPPORT_8_BONE_INFLUENCES_SKELETAL_MESHES = 0x14c, + VER_UE4_ADD_OVERRIDE_GRAVITY_FLAG = 0x14d, + VER_UE4_SUPPORT_GPUSKINNING_8_BONE_INFLUENCES = 0x14e, + VER_UE4_ANIM_SUPPORT_NONUNIFORM_SCALE_ANIMATION = 0x14f, + VER_UE4_ENGINE_VERSION_OBJECT = 0x150, + VER_UE4_PUBLIC_WORLDS = 0x151, + VER_UE4_SKELETON_GUID_SERIALIZATION = 0x152, + VER_UE4_CHARACTER_MOVEMENT_WALKABLE_FLOOR_REFACTOR = 0x153, + VER_UE4_INVERSE_SQUARED_LIGHTS_DEFAULT = 0x154, + VER_UE4_DISABLED_SCRIPT_LIMIT_BYTECODE = 0x155, + VER_UE4_PRIVATE_REMOTE_ROLE = 0x156, + VER_UE4_FOLIAGE_STATIC_MOBILITY = 0x157, + VER_UE4_BUILD_SCALE_VECTOR = 0x158, + VER_UE4_FOLIAGE_COLLISION = 0x159, + VER_UE4_SKY_BENT_NORMAL = 0x15a, + VER_UE4_LANDSCAPE_COLLISION_DATA_COOKING = 0x15b, + VER_UE4_MORPHTARGET_CPU_TANGENTZDELTA_FORMATCHANGE = 0x15c, + VER_UE4_SOFT_CONSTRAINTS_USE_MASS = 0x15d, + VER_UE4_REFLECTION_DATA_IN_PACKAGES = 0x15e, + VER_UE4_FOLIAGE_MOVABLE_MOBILITY = 0x15f, + VER_UE4_UNDO_BREAK_MATERIALATTRIBUTES_CHANGE = 0x160, + VER_UE4_ADD_CUSTOMPROFILENAME_CHANGE = 0x161, + VER_UE4_FLIP_MATERIAL_COORDS = 0x162, + VER_UE4_MEMBERREFERENCE_IN_PINTYPE = 0x163, + VER_UE4_VEHICLES_UNIT_CHANGE = 0x164, + VER_UE4_ANIMATION_REMOVE_NANS = 0x165, + VER_UE4_SKELETON_ASSET_PROPERTY_TYPE_CHANGE = 0x166, + VER_UE4_FIX_BLUEPRINT_VARIABLE_FLAGS = 0x167, + VER_UE4_VEHICLES_UNIT_CHANGE2 = 0x168, + VER_UE4_UCLASS_SERIALIZE_INTERFACES_AFTER_LINKING = 0x169, + VER_UE4_STATIC_MESH_SCREEN_SIZE_LODS = 0x16a, + VER_UE4_FIX_MATERIAL_COORDS = 0x16b, + VER_UE4_SPEEDTREE_WIND_V7 = 0x16c, + VER_UE4_LOAD_FOR_EDITOR_GAME = 0x16d, + VER_UE4_SERIALIZE_RICH_CURVE_KEY = 0x16e, + VER_UE4_MOVE_LANDSCAPE_MICS_AND_TEXTURES_WITHIN_LEVEL = 0x16f, + VER_UE4_FTEXT_HISTORY = 0x170, + VER_UE4_FIX_MATERIAL_COMMENTS = 0x171, + VER_UE4_STORE_BONE_EXPORT_NAMES = 0x172, + VER_UE4_MESH_EMITTER_INITIAL_ORIENTATION_DISTRIBUTION = 0x173, + VER_UE4_DISALLOW_FOLIAGE_ON_BLUEPRINTS = 0x174, + VER_UE4_FIXUP_MOTOR_UNITS = 0x175, + VER_UE4_DEPRECATED_MOVEMENTCOMPONENT_MODIFIED_SPEEDS = 0x176, + VER_UE4_RENAME_CANBECHARACTERBASE = 0x177, + VER_UE4_GAMEPLAY_TAG_CONTAINER_TAG_TYPE_CHANGE = 0x178, + VER_UE4_FOLIAGE_SETTINGS_TYPE = 0x179, + VER_UE4_STATIC_SHADOW_DEPTH_MAPS = 0x17a, + VER_UE4_ADD_TRANSACTIONAL_TO_DATA_ASSETS = 0x17b, + VER_UE4_ADD_LB_WEIGHTBLEND = 0x17c, + VER_UE4_ADD_ROOTCOMPONENT_TO_FOLIAGEACTOR = 0x17d, + VER_UE4_FIX_MATERIAL_PROPERTY_OVERRIDE_SERIALIZE = 0x17e, + VER_UE4_ADD_LINEAR_COLOR_SAMPLER = 0x17f, + VER_UE4_ADD_STRING_ASSET_REFERENCES_MAP = 0x180, + VER_UE4_BLUEPRINT_USE_SCS_ROOTCOMPONENT_SCALE = 0x181, + VER_UE4_LEVEL_STREAMING_DRAW_COLOR_TYPE_CHANGE = 0x182, + VER_UE4_CLEAR_NOTIFY_TRIGGERS = 0x183, + VER_UE4_SKELETON_ADD_SMARTNAMES = 0x184, + VER_UE4_ADDED_CURRENCY_CODE_TO_FTEXT = 0x185, + VER_UE4_ENUM_CLASS_SUPPORT = 0x186, + VER_UE4_FIXUP_WIDGET_ANIMATION_CLASS = 0x187, + VER_UE4_SOUND_COMPRESSION_TYPE_ADDED = 0x188, + VER_UE4_AUTO_WELDING = 0x189, + VER_UE4_RENAME_CROUCHMOVESCHARACTERDOWN = 0x18a, + VER_UE4_LIGHTMAP_MESH_BUILD_SETTINGS = 0x18b, + VER_UE4_RENAME_SM3_TO_ES3_1 = 0x18c, + VER_UE4_DEPRECATE_UMG_STYLE_ASSETS = 0x18d, + VER_UE4_POST_DUPLICATE_NODE_GUID = 0x18e, + VER_UE4_RENAME_CAMERA_COMPONENT_VIEW_ROTATION = 0x18f, + VER_UE4_CASE_PRESERVING_FNAME = 0x190, + VER_UE4_RENAME_CAMERA_COMPONENT_CONTROL_ROTATION = 0x191, + VER_UE4_REBUILD_HIERARCHICAL_INSTANCE_TREES = 0x192, + VER_UE4_REFLECTION_CAPTURE_DEPTH = 0x193, + VER_UE4_TEXTURE_RENDER_TARGET_FORMAT = 0x194, + VER_UE4_AUTOMATIC_VERSION_PLUS_ONE = 0x195, + VER_UE4_AUTOMATIC_VERSION = 0x194, +}; + +namespace ETextFlag +{ + enum Type + { + Transient = 0x1, + CultureInvariant = 0x2, + ConvertedProperty = 0x4, + }; +} + +namespace EGrammaticalGender +{ + enum Type + { + Neuter = 0x0, + Masculine = 0x1, + Feminine = 0x2, + Mixed = 0x3, + }; +} + +enum class ELightMapPaddingType +{ + LMPT_NormalPadding = 0x0, + LMPT_PrePadding = 0x1, + LMPT_NoPadding = 0x2, +}; + +namespace ETimerStatus +{ + enum Type + { + Unused = 0x0, + Pending = 0x1, + Active = 0x2, + Paused = 0x3, + Executing = 0x4, + Looping = 0x5, + }; +} + +namespace FOnlineStatUpdate +{ + enum EOnlineStatModificationType + { + Unknown = 0x0, + Sum = 0x1, + Set = 0x2, + Largest = 0x3, + Smallest = 0x4, + }; +} + +namespace EAppReturnType +{ + enum Type + { + No = 0x0, + Yes = 0x1, + YesAll = 0x2, + NoAll = 0x3, + Cancel = 0x4, + Ok = 0x5, + Retry = 0x6, + Continue = 0x7, + }; +} + +namespace ECustomVersionSerializationFormat +{ + enum Type + { + Guids = 0x0, + Enums = 0x1, + }; +} + +namespace EFormatArgumentType +{ + enum Type + { + Int = 0x0, + UInt = 0x1, + Float = 0x2, + Double = 0x3, + Text = 0x4, + }; +} + +enum class ERoundingMode +{ + HalfToEven = 0x0, + HalfFromZero = 0x1, + HalfToZero = 0x2, + FromZero = 0x3, + ToZero = 0x4, + ToNegativeInfinity = 0x5, + ToPositiveInfinity = 0x6, +}; + +enum class EBlendMode +{ + BLEND_Opaque = 0x0, + BLEND_Masked = 0x1, + BLEND_Translucent = 0x2, + BLEND_Additive = 0x3, + BLEND_Modulate = 0x4, + BLEND_MAX = 0x5, +}; + +namespace FRHICommandListBase +{ + enum ERenderThreadContext + { + SceneRenderTargets = 0x0, + Num = 0x1, + }; +} + +enum class ECallbackQueryType +{ + CALLBACK_ModalErrorMessage = 0x0, + CALLBACK_LocalizationExportFilter = 0x1, + CALLBACK_QueryCount = 0x2, +}; + +namespace EHotfixDelegates +{ + enum Type + { + Test = 0x0, + }; +} + +namespace EDropItemIconAction +{ + enum Type + { + DA_NoAction = 0x0, + DA_Equip = 0x1, + DA_UnEquip = 0x2, + DA_AddToSlot = 0x3, + DA_RemoveFromSlot = 0x4, + DA_ToRemoteInv = 0x5, + DA_FromRemoteInv = 0x6, + DA_RemoteEquip = 0x7, + DA_MergeItemStack = 0x8, + DA_SplitItemStack = 0x9, + DA_SwapItems = 0xa, + DA_UseWithItem = 0xb, + DA_UnEquipTransferToLocal = 0xc, + DA_RemoveItemSkin = 0xd, + DA_SplitItemStackOne = 0xe, + DA_RemoveWeaponAmmo = 0xf, + DA_FromRemoteInvToSlot = 0x10, + DA_ToRemoteInvFromSlot = 0x11, + DA_EquipLocalFromRemote = 0x12, + DA_EquipRemoteFromLocal = 0x13, + DA_UnequipRemote = 0x14, + DA_UnequipTransferToRemote = 0x15, + DA_ToArkInv = 0x16, + DA_FromArkInv = 0x17, + MAX = 0x18, + }; +} + +enum class EAlphaBlendType +{ + ABT_Linear = 0x0, + ABT_Cubic = 0x1, + ABT_Sinusoidal = 0x2, + ABT_EaseInOutExponent2 = 0x3, + ABT_EaseInOutExponent3 = 0x4, + ABT_EaseInOutExponent4 = 0x5, + ABT_EaseInOutExponent5 = 0x6, + ABT_MAX = 0x7, +}; + +namespace EWindowMode +{ + enum Type + { + Fullscreen = 0x0, + WindowedFullscreen = 0x1, + Windowed = 0x2, + WindowedMirror = 0x3, + NumWindowModes = 0x4, + }; +} + +namespace EBuildConfigurations +{ + enum Type + { + Unknown = 0x0, + Debug = 0x1, + DebugGame = 0x2, + Development = 0x3, + Shipping = 0x4, + Test = 0x5, + }; +} + +enum class ESlateTextureAtlasPaddingStyle +{ + NoPadding = 0x0, + DilateBorder = 0x1, + PadWithZero = 0x2, +}; + +namespace SplashTextType +{ + enum Type + { + StartupProgress = 0x0, + VersionInfo1 = 0x1, + CopyrightInfo = 0x2, + GameName = 0x3, + NumTextTypes = 0x4, + }; +} + +enum class ECompressionFlags +{ + COMPRESS_None = 0x0, + COMPRESS_ZLIB = 0x1, + COMPRESS_LZ4 = 0x2, + COMPRESS_BiasMemory = 0x10, + COMPRESS_BiasSpeed = 0x20, +}; + +namespace ENavLinkDirection +{ + enum Type + { + BothWays = 0x0, + LeftToRight = 0x1, + RightToLeft = 0x2, + }; +} + +enum class EBulkDataLockFlags +{ + LOCK_READ_ONLY = 0x1, + LOCK_READ_WRITE = 0x2, +}; + +namespace EBuildTargets +{ + enum Type + { + Unknown = 0x0, + Editor = 0x1, + Game = 0x2, + Server = 0x3, + }; +} + +namespace FDragDropOLEData +{ + enum EWindowsOLEDataType + { + None = 0x0, + Text = 0x1, + Files = 0x2, + }; +} + +namespace EErrorReportMode +{ + enum Type + { + Interactive = 0x0, + Unattended = 0x1, + Balloon = 0x2, + }; +} + +namespace EAILockSource +{ + enum Type + { + Animation = 0x0, + Logic = 0x1, + Script = 0x2, + Gameplay = 0x3, + MAX = 0x4, + }; +} + +namespace EAppMsgType +{ + enum Type + { + Ok = 0x0, + YesNo = 0x1, + OkCancel = 0x2, + YesNoCancel = 0x3, + CancelRetryContinue = 0x4, + YesNoYesAllNoAll = 0x5, + YesNoYesAllNoAllCancel = 0x6, + YesNoYesAll = 0x7, + }; +} + +namespace EAxisList +{ + enum Type + { + None = 0x0, + X = 0x1, + Y = 0x2, + Z = 0x4, + Screen = 0x8, + XY = 0x3, + XZ = 0x5, + YZ = 0x6, + XYZ = 0x7, + All = 0xf, + ZRotation = 0x6, + }; +} + +enum class EUnrealEngineObjectLicenseeUE4Version +{ + VER_LIC_NONE = 0x0, + VER_LIC_FOLIAGE_NAME_TABLE = 0x1, + VER_LIC_MATERIAL_SURFACE_LEVEL = 0x2, + VER_LIC_BULK_SM_INSTANCES_UPDATE = 0x3, + VER_LIC_COOKED_SHADERMAP_EXTRAPATH = 0x4, + VER_LIC_FOLIAGE_OCTREE = 0x5, + VER_LIC_SKYLIGHT_MULT = 0x6, + VER_LIC_POSTPROCESS_STENCIL = 0x7, + VER_LIC_DECAL_CREATIONTIME = 0x8, + VER_LIC_FONT_UPDATE = 0x9, + VER_LIC_ORIGIN_VALIDATION = 0xa, + VER_LIC_AUTOMATIC_VERSION_PLUS_ONE = 0xb, + VER_LIC_AUTOMATIC_VERSION = 0xa, +}; + +enum class EWalkableSlopeBehavior +{ + WalkableSlope_Default = 0x0, + WalkableSlope_Increase = 0x1, + WalkableSlope_Decrease = 0x2, + WalkableSlope_Unwalkable = 0x3, + WalkableSlope_Max = 0x4, +}; + +namespace EDayOfWeek +{ + enum Type + { + Monday = 0x0, + Tuesday = 0x1, + Wednesday = 0x2, + Thursday = 0x3, + Friday = 0x4, + Saturday = 0x5, + Sunday = 0x6, + }; +} + +enum class ECompositeTextureMode +{ + CTM_Disabled = 0x0, + CTM_NormalRoughnessToRed = 0x1, + CTM_NormalRoughnessToGreen = 0x2, + CTM_NormalRoughnessToBlue = 0x3, + CTM_NormalRoughnessToAlpha = 0x4, + CTM_MAX = 0x5, +}; + +namespace EAxis +{ + enum Type + { + None = 0x0, + X = 0x1, + Y = 0x2, + Z = 0x3, + }; +} + +namespace ESlateShaderResource +{ + enum Type + { + NativeTexture = 0x0, + TextureObject = 0x1, + Material = 0x2, + }; +} + +enum class ETransitionType +{ + TT_None = 0x0, + TT_Paused = 0x1, + TT_Loading = 0x2, + TT_Saving = 0x3, + TT_Connecting = 0x4, + TT_Precaching = 0x5, + TT_WaitingToConnect = 0x6, + TT_MAX = 0x7, +}; + +namespace EOnlineNotificationResult +{ + enum Type + { + None = 0x0, + Block = 0x1, + Forward = 0x2, + }; +} + +namespace EPathFollowingMessage +{ + enum Type + { + NoPath = 0x0, + OtherRequest = 0x1, + }; +} + +enum class EObjectTypeQuery +{ + ObjectTypeQuery1 = 0x0, + ObjectTypeQuery2 = 0x1, + ObjectTypeQuery3 = 0x2, + ObjectTypeQuery4 = 0x3, + ObjectTypeQuery5 = 0x4, + ObjectTypeQuery6 = 0x5, + ObjectTypeQuery7 = 0x6, + ObjectTypeQuery8 = 0x7, + ObjectTypeQuery9 = 0x8, + ObjectTypeQuery10 = 0x9, + ObjectTypeQuery11 = 0xa, + ObjectTypeQuery12 = 0xb, + ObjectTypeQuery13 = 0xc, + ObjectTypeQuery14 = 0xd, + ObjectTypeQuery15 = 0xe, + ObjectTypeQuery16 = 0xf, + ObjectTypeQuery17 = 0x10, + ObjectTypeQuery18 = 0x11, + ObjectTypeQuery19 = 0x12, + ObjectTypeQuery20 = 0x13, + ObjectTypeQuery21 = 0x14, + ObjectTypeQuery22 = 0x15, + ObjectTypeQuery23 = 0x16, + ObjectTypeQuery24 = 0x17, + ObjectTypeQuery25 = 0x18, + ObjectTypeQuery26 = 0x19, + ObjectTypeQuery27 = 0x1a, + ObjectTypeQuery28 = 0x1b, + ObjectTypeQuery29 = 0x1c, + ObjectTypeQuery30 = 0x1d, + ObjectTypeQuery31 = 0x1e, + ObjectTypeQuery32 = 0x1f, + ObjectTypeQuery_MAX = 0x20, +}; + +enum class ReverbPreset +{ + REVERB_Default = 0x0, + REVERB_Bathroom = 0x1, + REVERB_StoneRoom = 0x2, + REVERB_Auditorium = 0x3, + REVERB_ConcertHall = 0x4, + REVERB_Cave = 0x5, + REVERB_Hallway = 0x6, + REVERB_StoneCorridor = 0x7, + REVERB_Alley = 0x8, + REVERB_Forest = 0x9, + REVERB_City = 0xa, + REVERB_Mountains = 0xb, + REVERB_Quarry = 0xc, + REVERB_Plain = 0xd, + REVERB_ParkingLot = 0xe, + REVERB_SewerPipe = 0xf, + REVERB_Underwater = 0x10, + REVERB_SmallRoom = 0x11, + REVERB_MediumRoom = 0x12, + REVERB_LargeRoom = 0x13, + REVERB_MediumHall = 0x14, + REVERB_LargeHall = 0x15, + REVERB_Plate = 0x16, + REVERB_MAX = 0x17, +}; + +enum class ENameCase +{ + CaseSensitive = 0x0, + IgnoreCase = 0x1, +}; + +namespace SThrobber +{ + enum EAnimation + { + Vertical = 0x1, + Horizontal = 0x2, + Opacity = 0x4, + VerticalAndOpacity = 0x5, + All = 0x7, + None = 0x0, + }; +} + +enum class EBlueprintStatus +{ + BS_Unknown = 0x0, + BS_Dirty = 0x1, + BS_Error = 0x2, + BS_UpToDate = 0x3, + BS_BeingCreated = 0x4, + BS_UpToDateWithWarnings = 0x5, + BS_MAX = 0x6, +}; + +enum class EBreakIteratorType +{ + Grapheme = 0x0, + Word = 0x1, + Line = 0x2, + Sentence = 0x3, + Title = 0x4, +}; + +enum class EMicroTransactionDelegate +{ + MTD_PurchaseQueryComplete = 0x0, + MTD_PurchaseComplete = 0x1, + MTD_MAX = 0x2, +}; + +enum class ETranslucencyLightingMode +{ + TLM_VolumetricNonDirectional = 0x0, + TLM_VolumetricDirectional = 0x1, + TLM_Surface = 0x2, + TLM_MAX = 0x3, +}; + +namespace EChatMessageType +{ + enum Type + { + MyMessage = 0x0, + SameTeamMessage = 0x1, + DifferentTeamMessage = 0x2, + SystemWideMessage = 0x3, + SameAllianceMessage = 0x4, + MAX = 0x5, + }; +} + +enum class UBlockCode +{ + UBLOCK_NO_BLOCK = 0x0, + UBLOCK_BASIC_LATIN = 0x1, + UBLOCK_LATIN_1_SUPPLEMENT = 0x2, + UBLOCK_LATIN_EXTENDED_A = 0x3, + UBLOCK_LATIN_EXTENDED_B = 0x4, + UBLOCK_IPA_EXTENSIONS = 0x5, + UBLOCK_SPACING_MODIFIER_LETTERS = 0x6, + UBLOCK_COMBINING_DIACRITICAL_MARKS = 0x7, + UBLOCK_GREEK = 0x8, + UBLOCK_CYRILLIC = 0x9, + UBLOCK_ARMENIAN = 0xa, + UBLOCK_HEBREW = 0xb, + UBLOCK_ARABIC = 0xc, + UBLOCK_SYRIAC = 0xd, + UBLOCK_THAANA = 0xe, + UBLOCK_DEVANAGARI = 0xf, + UBLOCK_BENGALI = 0x10, + UBLOCK_GURMUKHI = 0x11, + UBLOCK_GUJARATI = 0x12, + UBLOCK_ORIYA = 0x13, + UBLOCK_TAMIL = 0x14, + UBLOCK_TELUGU = 0x15, + UBLOCK_KANNADA = 0x16, + UBLOCK_MALAYALAM = 0x17, + UBLOCK_SINHALA = 0x18, + UBLOCK_THAI = 0x19, + UBLOCK_LAO = 0x1a, + UBLOCK_TIBETAN = 0x1b, + UBLOCK_MYANMAR = 0x1c, + UBLOCK_GEORGIAN = 0x1d, + UBLOCK_HANGUL_JAMO = 0x1e, + UBLOCK_ETHIOPIC = 0x1f, + UBLOCK_CHEROKEE = 0x20, + UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS = 0x21, + UBLOCK_OGHAM = 0x22, + UBLOCK_RUNIC = 0x23, + UBLOCK_KHMER = 0x24, + UBLOCK_MONGOLIAN = 0x25, + UBLOCK_LATIN_EXTENDED_ADDITIONAL = 0x26, + UBLOCK_GREEK_EXTENDED = 0x27, + UBLOCK_GENERAL_PUNCTUATION = 0x28, + UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS = 0x29, + UBLOCK_CURRENCY_SYMBOLS = 0x2a, + UBLOCK_COMBINING_MARKS_FOR_SYMBOLS = 0x2b, + UBLOCK_LETTERLIKE_SYMBOLS = 0x2c, + UBLOCK_NUMBER_FORMS = 0x2d, + UBLOCK_ARROWS = 0x2e, + UBLOCK_MATHEMATICAL_OPERATORS = 0x2f, + UBLOCK_MISCELLANEOUS_TECHNICAL = 0x30, + UBLOCK_CONTROL_PICTURES = 0x31, + UBLOCK_OPTICAL_CHARACTER_RECOGNITION = 0x32, + UBLOCK_ENCLOSED_ALPHANUMERICS = 0x33, + UBLOCK_BOX_DRAWING = 0x34, + UBLOCK_BLOCK_ELEMENTS = 0x35, + UBLOCK_GEOMETRIC_SHAPES = 0x36, + UBLOCK_MISCELLANEOUS_SYMBOLS = 0x37, + UBLOCK_DINGBATS = 0x38, + UBLOCK_BRAILLE_PATTERNS = 0x39, + UBLOCK_CJK_RADICALS_SUPPLEMENT = 0x3a, + UBLOCK_KANGXI_RADICALS = 0x3b, + UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS = 0x3c, + UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION = 0x3d, + UBLOCK_HIRAGANA = 0x3e, + UBLOCK_KATAKANA = 0x3f, + UBLOCK_BOPOMOFO = 0x40, + UBLOCK_HANGUL_COMPATIBILITY_JAMO = 0x41, + UBLOCK_KANBUN = 0x42, + UBLOCK_BOPOMOFO_EXTENDED = 0x43, + UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS = 0x44, + UBLOCK_CJK_COMPATIBILITY = 0x45, + UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A = 0x46, + UBLOCK_CJK_UNIFIED_IDEOGRAPHS = 0x47, + UBLOCK_YI_SYLLABLES = 0x48, + UBLOCK_YI_RADICALS = 0x49, + UBLOCK_HANGUL_SYLLABLES = 0x4a, + UBLOCK_HIGH_SURROGATES = 0x4b, + UBLOCK_HIGH_PRIVATE_USE_SURROGATES = 0x4c, + UBLOCK_LOW_SURROGATES = 0x4d, + UBLOCK_PRIVATE_USE_AREA = 0x4e, + UBLOCK_PRIVATE_USE = 0x4e, + UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS = 0x4f, + UBLOCK_ALPHABETIC_PRESENTATION_FORMS = 0x50, + UBLOCK_ARABIC_PRESENTATION_FORMS_A = 0x51, + UBLOCK_COMBINING_HALF_MARKS = 0x52, + UBLOCK_CJK_COMPATIBILITY_FORMS = 0x53, + UBLOCK_SMALL_FORM_VARIANTS = 0x54, + UBLOCK_ARABIC_PRESENTATION_FORMS_B = 0x55, + UBLOCK_SPECIALS = 0x56, + UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS = 0x57, + UBLOCK_OLD_ITALIC = 0x58, + UBLOCK_GOTHIC = 0x59, + UBLOCK_DESERET = 0x5a, + UBLOCK_BYZANTINE_MUSICAL_SYMBOLS = 0x5b, + UBLOCK_MUSICAL_SYMBOLS = 0x5c, + UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 0x5d, + UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B = 0x5e, + UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 0x5f, + UBLOCK_TAGS = 0x60, + UBLOCK_CYRILLIC_SUPPLEMENT = 0x61, + UBLOCK_CYRILLIC_SUPPLEMENTARY = 0x61, + UBLOCK_TAGALOG = 0x62, + UBLOCK_HANUNOO = 0x63, + UBLOCK_BUHID = 0x64, + UBLOCK_TAGBANWA = 0x65, + UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 0x66, + UBLOCK_SUPPLEMENTAL_ARROWS_A = 0x67, + UBLOCK_SUPPLEMENTAL_ARROWS_B = 0x68, + UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 0x69, + UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 0x6a, + UBLOCK_KATAKANA_PHONETIC_EXTENSIONS = 0x6b, + UBLOCK_VARIATION_SELECTORS = 0x6c, + UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A = 0x6d, + UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B = 0x6e, + UBLOCK_LIMBU = 0x6f, + UBLOCK_TAI_LE = 0x70, + UBLOCK_KHMER_SYMBOLS = 0x71, + UBLOCK_PHONETIC_EXTENSIONS = 0x72, + UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS = 0x73, + UBLOCK_YIJING_HEXAGRAM_SYMBOLS = 0x74, + UBLOCK_LINEAR_B_SYLLABARY = 0x75, + UBLOCK_LINEAR_B_IDEOGRAMS = 0x76, + UBLOCK_AEGEAN_NUMBERS = 0x77, + UBLOCK_UGARITIC = 0x78, + UBLOCK_SHAVIAN = 0x79, + UBLOCK_OSMANYA = 0x7a, + UBLOCK_CYPRIOT_SYLLABARY = 0x7b, + UBLOCK_TAI_XUAN_JING_SYMBOLS = 0x7c, + UBLOCK_VARIATION_SELECTORS_SUPPLEMENT = 0x7d, + UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION = 0x7e, + UBLOCK_ANCIENT_GREEK_NUMBERS = 0x7f, + UBLOCK_ARABIC_SUPPLEMENT = 0x80, + UBLOCK_BUGINESE = 0x81, + UBLOCK_CJK_STROKES = 0x82, + UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 0x83, + UBLOCK_COPTIC = 0x84, + UBLOCK_ETHIOPIC_EXTENDED = 0x85, + UBLOCK_ETHIOPIC_SUPPLEMENT = 0x86, + UBLOCK_GEORGIAN_SUPPLEMENT = 0x87, + UBLOCK_GLAGOLITIC = 0x88, + UBLOCK_KHAROSHTHI = 0x89, + UBLOCK_MODIFIER_TONE_LETTERS = 0x8a, + UBLOCK_NEW_TAI_LUE = 0x8b, + UBLOCK_OLD_PERSIAN = 0x8c, + UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT = 0x8d, + UBLOCK_SUPPLEMENTAL_PUNCTUATION = 0x8e, + UBLOCK_SYLOTI_NAGRI = 0x8f, + UBLOCK_TIFINAGH = 0x90, + UBLOCK_VERTICAL_FORMS = 0x91, + UBLOCK_NKO = 0x92, + UBLOCK_BALINESE = 0x93, + UBLOCK_LATIN_EXTENDED_C = 0x94, + UBLOCK_LATIN_EXTENDED_D = 0x95, + UBLOCK_PHAGS_PA = 0x96, + UBLOCK_PHOENICIAN = 0x97, + UBLOCK_CUNEIFORM = 0x98, + UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION = 0x99, + UBLOCK_COUNTING_ROD_NUMERALS = 0x9a, + UBLOCK_SUNDANESE = 0x9b, + UBLOCK_LEPCHA = 0x9c, + UBLOCK_OL_CHIKI = 0x9d, + UBLOCK_CYRILLIC_EXTENDED_A = 0x9e, + UBLOCK_VAI = 0x9f, + UBLOCK_CYRILLIC_EXTENDED_B = 0xa0, + UBLOCK_SAURASHTRA = 0xa1, + UBLOCK_KAYAH_LI = 0xa2, + UBLOCK_REJANG = 0xa3, + UBLOCK_CHAM = 0xa4, + UBLOCK_ANCIENT_SYMBOLS = 0xa5, + UBLOCK_PHAISTOS_DISC = 0xa6, + UBLOCK_LYCIAN = 0xa7, + UBLOCK_CARIAN = 0xa8, + UBLOCK_LYDIAN = 0xa9, + UBLOCK_MAHJONG_TILES = 0xaa, + UBLOCK_DOMINO_TILES = 0xab, + UBLOCK_SAMARITAN = 0xac, + UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 0xad, + UBLOCK_TAI_THAM = 0xae, + UBLOCK_VEDIC_EXTENSIONS = 0xaf, + UBLOCK_LISU = 0xb0, + UBLOCK_BAMUM = 0xb1, + UBLOCK_COMMON_INDIC_NUMBER_FORMS = 0xb2, + UBLOCK_DEVANAGARI_EXTENDED = 0xb3, + UBLOCK_HANGUL_JAMO_EXTENDED_A = 0xb4, + UBLOCK_JAVANESE = 0xb5, + UBLOCK_MYANMAR_EXTENDED_A = 0xb6, + UBLOCK_TAI_VIET = 0xb7, + UBLOCK_MEETEI_MAYEK = 0xb8, + UBLOCK_HANGUL_JAMO_EXTENDED_B = 0xb9, + UBLOCK_IMPERIAL_ARAMAIC = 0xba, + UBLOCK_OLD_SOUTH_ARABIAN = 0xbb, + UBLOCK_AVESTAN = 0xbc, + UBLOCK_INSCRIPTIONAL_PARTHIAN = 0xbd, + UBLOCK_INSCRIPTIONAL_PAHLAVI = 0xbe, + UBLOCK_OLD_TURKIC = 0xbf, + UBLOCK_RUMI_NUMERAL_SYMBOLS = 0xc0, + UBLOCK_KAITHI = 0xc1, + UBLOCK_EGYPTIAN_HIEROGLYPHS = 0xc2, + UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 0xc3, + UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 0xc4, + UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 0xc5, + UBLOCK_MANDAIC = 0xc6, + UBLOCK_BATAK = 0xc7, + UBLOCK_ETHIOPIC_EXTENDED_A = 0xc8, + UBLOCK_BRAHMI = 0xc9, + UBLOCK_BAMUM_SUPPLEMENT = 0xca, + UBLOCK_KANA_SUPPLEMENT = 0xcb, + UBLOCK_PLAYING_CARDS = 0xcc, + UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 0xcd, + UBLOCK_EMOTICONS = 0xce, + UBLOCK_TRANSPORT_AND_MAP_SYMBOLS = 0xcf, + UBLOCK_ALCHEMICAL_SYMBOLS = 0xd0, + UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 0xd1, + UBLOCK_ARABIC_EXTENDED_A = 0xd2, + UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 0xd3, + UBLOCK_CHAKMA = 0xd4, + UBLOCK_MEETEI_MAYEK_EXTENSIONS = 0xd5, + UBLOCK_MEROITIC_CURSIVE = 0xd6, + UBLOCK_MEROITIC_HIEROGLYPHS = 0xd7, + UBLOCK_MIAO = 0xd8, + UBLOCK_SHARADA = 0xd9, + UBLOCK_SORA_SOMPENG = 0xda, + UBLOCK_SUNDANESE_SUPPLEMENT = 0xdb, + UBLOCK_TAKRI = 0xdc, + UBLOCK_COUNT = 0xdd, + UBLOCK_INVALID_CODE = 0xff, +}; + +enum class EDebugState +{ + DEBUGSTATE_None = 0x0, + DEBUGSTATE_IsolateDryAudio = 0x1, + DEBUGSTATE_IsolateReverb = 0x2, + DEBUGSTATE_TestLPF = 0x3, + DEBUGSTATE_TestStereoBleed = 0x4, + DEBUGSTATE_TestLFEBleed = 0x5, + DEBUGSTATE_DisableLPF = 0x6, + DEBUGSTATE_DisableRadio = 0x7, + DEBUGSTATE_MAX = 0x8, +}; + +namespace EPawnActionResult +{ + enum Type + { + InProgress = 0x0, + Success = 0x1, + Failed = 0x2, + Aborted = 0x3, + }; +} + +namespace FAIStimulus +{ + enum FResult + { + SensingSucceeded = 0x0, + SensingFailed = 0x1, + }; +} + +enum class ECmdList +{ + EGfx = 0x0, + ECompute = 0x1, +}; + +namespace ETwoPlayerSplitScreenType +{ + enum Type + { + Horizontal = 0x0, + Vertical = 0x1, + }; +} + +enum class ESimpleElementBlendMode +{ + SE_BLEND_Opaque = 0x0, + SE_BLEND_Masked = 0x1, + SE_BLEND_Translucent = 0x2, + SE_BLEND_Additive = 0x3, + SE_BLEND_Modulate = 0x4, + SE_BLEND_MaskedDistanceField = 0x5, + SE_BLEND_MaskedDistanceFieldShadowed = 0x6, + SE_BLEND_TranslucentDistanceField = 0x7, + SE_BLEND_TranslucentDistanceFieldShadowed = 0x8, + SE_BLEND_AlphaComposite = 0x9, + SE_BLEND_AlphaBlend = 0xa, + SE_BLEND_TranslucentAlphaOnly = 0xb, + SE_BLEND_RGBA_MASK_START = 0xc, + SE_BLEND_RGBA_MASK_END = 0x2b, + SE_BLEND_MAX = 0x2c, +}; + +namespace ETribeGroupPermission +{ + enum Type + { + STRUCTUREACTIVATE = 0x0, + INVENTORYACCESS = 0x1, + PET_ORDER = 0x2, + PET_RIDE = 0x3, + GENERAL_STRUCTUREDEMOLISH = 0x4, + GENERAL_STRUCTUREATTACHMENT = 0x5, + GENERAL_BUILDSTRUCTUREINRANGE = 0x6, + INVITEMEMBER = 0x7, + PROMOTEMEMBER = 0x8, + DEMOTEMEMBER = 0x9, + BANISHMEMBER = 0xa, + PET_UNCLAIM = 0xb, + TELEPORT_MEMBERS = 0xc, + TELEPORT_DINOS = 0xd, + }; +} + +namespace ERHIFeatureLevel +{ + enum Type + { + ES2 = 0x0, + ES3_1 = 0x1, + SM4 = 0x2, + SM5 = 0x3, + Num = 0x4, + }; +} + +namespace ESelectInfo +{ + enum Type + { + OnKeyPress = 0x0, + OnNavigation = 0x1, + OnMouseClick = 0x2, + Direct = 0x3, + }; +} + +namespace EOnlineFriendState +{ + enum Type + { + Offline = 0x0, + Online = 0x1, + Away = 0x2, + Busy = 0x3, + }; +} + +namespace ESlateCheckBoxType +{ + enum Type + { + CheckBox = 0x0, + ToggleButton = 0x1, + }; +} + +namespace ELeaderboardColumnName +{ + enum Type + { + MissionTag = 0x0, + PlayerNetId = 0x1, + TribeId = 0x2, + TimestampUtc = 0x3, + FloatValue = 0x4, + IntValue = 0x5, + NameValue = 0x6, + StringValue = 0x7, + }; +} + +namespace ELeaderboardUpdateMethod +{ + enum Type + { + KeepBest = 0x0, + Force = 0x1, + }; +} + +enum class EStencilOp +{ + SO_Keep = 0x0, + SO_Zero = 0x1, + SO_Replace = 0x2, + SO_SaturatedIncrement = 0x3, + SO_SaturatedDecrement = 0x4, + SO_Invert = 0x5, + SO_Increment = 0x6, + SO_Decrement = 0x7, +}; + +namespace ECameraProjectionMode +{ + enum Type + { + Perspective = 0x0, + Orthographic = 0x1, + }; +} + +namespace EMarkMaskBits +{ + enum Type + { + StaticMeshShadowDepthMapMask = 0x1, + StaticMeshVisibilityMapMask = 0x2, + StaticMeshVelocityMapMask = 0x4, + StaticMeshOccluderMapMask = 0x8, + }; +} + +namespace FNavigationSystem +{ + enum EMode + { + InvalidMode = 0xff, + GameMode = 0x0, + EditorMode = 0x1, + SimulationMode = 0x2, + PIEMode = 0x3, + }; +} + +enum class EMaterialSamplerType +{ + SAMPLERTYPE_Color = 0x0, + SAMPLERTYPE_Grayscale = 0x1, + SAMPLERTYPE_Alpha = 0x2, + SAMPLERTYPE_Normal = 0x3, + SAMPLERTYPE_Masks = 0x4, + SAMPLERTYPE_DistanceFieldFont = 0x5, + SAMPLERTYPE_LinearColor = 0x6, + SAMPLERTYPE_LinearGrayscale = 0x7, + SAMPLERTYPE_MAX = 0x8, +}; + +enum class UNumberFormatFields +{ + UNUM_INTEGER_FIELD = 0x0, + UNUM_FRACTION_FIELD = 0x1, + UNUM_DECIMAL_SEPARATOR_FIELD = 0x2, + UNUM_EXPONENT_SYMBOL_FIELD = 0x3, + UNUM_EXPONENT_SIGN_FIELD = 0x4, + UNUM_EXPONENT_FIELD = 0x5, + UNUM_GROUPING_SEPARATOR_FIELD = 0x6, + UNUM_CURRENCY_FIELD = 0x7, + UNUM_PERCENT_FIELD = 0x8, + UNUM_PERMILL_FIELD = 0x9, + UNUM_SIGN_FIELD = 0xa, + UNUM_FIELD_COUNT = 0xb, +}; + +namespace EMatineeCaptureType +{ + enum Type + { + AVI = 0x0, + BMP = 0x1, + PNG = 0x2, + JPEG = 0x3, + }; +} + +enum class EAspectRatioAxisConstraint +{ + AspectRatio_MaintainYFOV = 0x0, + AspectRatio_MaintainXFOV = 0x1, + AspectRatio_MajorAxisFOV = 0x2, + AspectRatio_MAX = 0x3, +}; + +namespace ENavigationCoordSystem +{ + enum Type + { + Unreal = 0x0, + Recast = 0x1, + }; +} + +namespace ERHISurfaceLevel +{ + enum Type + { + Low = 0x0, + Default = 0x1, + Num = 0x2, + }; +} + +namespace ERecastNamedFilter +{ + enum Type + { + FilterOutNavLinks = 0x0, + FilterOutAreas = 0x1, + FilterOutNavLinksAndAreas = 0x2, + NamedFiltersCount = 0x3, + }; +} + +namespace ENullTerminatedString +{ + enum Type + { + No = 0x0, + Yes = 0x1, + }; +} + +enum class EPrimalStructureElevatorState +{ + PSLS_Down = 0x0, + PSLS_Up = 0x1, +}; + +enum class EPrimitiveType +{ + PT_TriangleList = 0x0, + PT_TriangleStrip = 0x1, + PT_LineList = 0x2, + PT_QuadList = 0x3, + PT_PointList = 0x4, + PT_1_ControlPointPatchList = 0x5, + PT_2_ControlPointPatchList = 0x6, + PT_3_ControlPointPatchList = 0x7, + PT_4_ControlPointPatchList = 0x8, + PT_5_ControlPointPatchList = 0x9, + PT_6_ControlPointPatchList = 0xa, + PT_7_ControlPointPatchList = 0xb, + PT_8_ControlPointPatchList = 0xc, + PT_9_ControlPointPatchList = 0xd, + PT_10_ControlPointPatchList = 0xe, + PT_11_ControlPointPatchList = 0xf, + PT_12_ControlPointPatchList = 0x10, + PT_13_ControlPointPatchList = 0x11, + PT_14_ControlPointPatchList = 0x12, + PT_15_ControlPointPatchList = 0x13, + PT_16_ControlPointPatchList = 0x14, + PT_17_ControlPointPatchList = 0x15, + PT_18_ControlPointPatchList = 0x16, + PT_19_ControlPointPatchList = 0x17, + PT_20_ControlPointPatchList = 0x18, + PT_21_ControlPointPatchList = 0x19, + PT_22_ControlPointPatchList = 0x1a, + PT_23_ControlPointPatchList = 0x1b, + PT_24_ControlPointPatchList = 0x1c, + PT_25_ControlPointPatchList = 0x1d, + PT_26_ControlPointPatchList = 0x1e, + PT_27_ControlPointPatchList = 0x1f, + PT_28_ControlPointPatchList = 0x20, + PT_29_ControlPointPatchList = 0x21, + PT_30_ControlPointPatchList = 0x22, + PT_31_ControlPointPatchList = 0x23, + PT_32_ControlPointPatchList = 0x24, + PT_Num = 0x25, + PT_NumBits = 0x6, +}; + +namespace EPathFollowingAction +{ + enum Type + { + Error = 0x0, + NoMove = 0x1, + DirectMove = 0x2, + PartialPath = 0x3, + PathToGoal = 0x4, + }; +} + +enum class EStereoscopicPass +{ + eSSP_FULL = 0x0, + eSSP_LEFT_EYE = 0x1, + eSSP_RIGHT_EYE = 0x2, +}; + +enum class EAllowOverscroll +{ + Yes = 0x0, + No = 0x1, +}; + +enum class ECursorMoveMethod +{ + Cardinal = 0x0, + ScreenPosition = 0x1, +}; + +namespace ETableViewMode +{ + enum Type + { + List = 0x0, + Tile = 0x1, + Tree = 0x2, + }; +} + +enum class EPhysBodyOp +{ + PBO_None = 0x0, + PBO_Term = 0x1, + PBO_Disable = 0x2, + PBO_MAX = 0x3, +}; + +enum class ULocDataLocaleType +{ + ULOC_ACTUAL_LOCALE = 0x0, + ULOC_VALID_LOCALE = 0x1, + ULOC_REQUESTED_LOCALE = 0x2, + ULOC_DATA_LOCALE_TYPE_LIMIT = 0x3, +}; + +enum class EUniformBufferBaseType +{ + UBMT_INVALID = 0x0, + UBMT_BOOL = 0x1, + UBMT_INT32 = 0x2, + UBMT_UINT32 = 0x3, + UBMT_FLOAT32 = 0x4, + UBMT_STRUCT = 0x5, + UBMT_SRV = 0x6, + UBMT_UAV = 0x7, + UBMT_SAMPLER = 0x8, + UBMT_TEXTURE = 0x9, +}; + +namespace SDockingNode +{ + enum Type + { + DockTabStack = 0x0, + DockSplitter = 0x1, + DockArea = 0x2, + PlaceholderNode = 0x3, + }; +} + +enum class ESamplerFilter +{ + SF_Point = 0x0, + SF_Bilinear = 0x1, + SF_Trilinear = 0x2, + SF_AnisotropicPoint = 0x3, + SF_AnisotropicLinear = 0x4, +}; + +enum class WICDecodeOptions +{ + WICDecodeMetadataCacheOnDemand = 0x0, + WICDecodeMetadataCacheOnLoad = 0x1, + WICMETADATACACHEOPTION_FORCE_DWORD = 0x7fffffff, +}; + +namespace EDrawDebugTrace +{ + enum Type + { + None = 0x0, + ForOneFrame = 0x1, + ForDuration = 0x2, + Persistent = 0x3, + }; +} + +namespace FGenericPlatformMemory +{ + enum ESharedMemoryAccess + { + Read = 0x2, + Write = 0x4, + }; +} + +namespace FInputChord +{ + enum RelationshipType + { + None = 0x0, + Same = 0x1, + Masked = 0x2, + Masks = 0x3, + }; +} + +namespace EMeshFeatureImportance +{ + enum Type + { + Off = 0x0, + Lowest = 0x1, + Low = 0x2, + Normal = 0x3, + High = 0x4, + Highest = 0x5, + }; +} + +enum class MoveRequestState +{ + DT_CROWDAGENT_TARGET_NONE = 0x0, + DT_CROWDAGENT_TARGET_FAILED = 0x1, + DT_CROWDAGENT_TARGET_VALID = 0x2, + DT_CROWDAGENT_TARGET_REQUESTING = 0x3, + DT_CROWDAGENT_TARGET_WAITING_FOR_QUEUE = 0x4, + DT_CROWDAGENT_TARGET_WAITING_FOR_PATH = 0x5, + DT_CROWDAGENT_TARGET_VELOCITY = 0x6, +}; + +enum class ESaveFlags +{ + SAVE_None = 0x0, + SAVE_NoError = 0x1, + SAVE_FromAutosave = 0x2, + SAVE_KeepDirty = 0x4, + SAVE_KeepGUID = 0x8, + SAVE_Async = 0x10, + SAVE_Unversioned = 0x20, + SAVE_CutdownPackage = 0x40, +}; + +namespace ECameraStyle +{ + enum Type + { + Default = 0x0, + FirstPerson = 0x1, + ThirdPerson = 0x2, + FreeCam = 0x3, + Orbit = 0x4, + Spectator = 0x5, + }; +} + +namespace EBPMapCheckSeverity +{ + enum Type + { + Info = 0x0, + Warning = 0x1, + PerformanceWarning = 0x2, + Error = 0x3, + }; +} + +enum class ERichCurveTangentMode +{ + RCTM_Auto = 0x0, + RCTM_User = 0x1, + RCTM_Break = 0x2, +}; + +enum class ERasterizerCullMode +{ + CM_None = 0x0, + CM_CW = 0x1, + CM_CCW = 0x2, +}; + +namespace FClothingActor +{ + enum TeleportMode + { + Continuous = 0x0, + Teleport = 0x1, + TeleportAndReset = 0x2, + }; +} + +enum class EVertexElementType +{ + VET_None = 0x0, + VET_Float1 = 0x1, + VET_Float2 = 0x2, + VET_Float3 = 0x3, + VET_Float4 = 0x4, + VET_PackedNormal = 0x5, + VET_UByte4 = 0x6, + VET_UByte4N = 0x7, + VET_Color = 0x8, + VET_Short2 = 0x9, + VET_Short4 = 0xa, + VET_Short2N = 0xb, + VET_Half2 = 0xc, + VET_Half4 = 0xd, + VET_Short4N = 0xe, + VET_UShort2 = 0xf, + VET_UShort4 = 0x10, + VET_UShort2N = 0x11, + VET_UShort4N = 0x12, + VET_URGB10A2N = 0x13, + VET_MAX = 0x14, +}; + +namespace EClearSceneOptions +{ + enum Type + { + NoClear = 0x0, + HardwareClear = 0x1, + QuadAtMaxZ = 0x2, + }; +} + +enum class EAudioSpeakers +{ + SPEAKER_FrontLeft = 0x0, + SPEAKER_FrontRight = 0x1, + SPEAKER_FrontCenter = 0x2, + SPEAKER_LowFrequency = 0x3, + SPEAKER_LeftSurround = 0x4, + SPEAKER_RightSurround = 0x5, + SPEAKER_LeftBack = 0x6, + SPEAKER_RightBack = 0x7, + SPEAKER_Count = 0x8, +}; + +namespace FSubobjectPtr +{ + enum EInvalidPtr + { + InvalidPtrValue = 0x3, + }; +} + +namespace FXAudio2SoundSource +{ + enum EDataReadMode + { + Synchronous = 0x0, + Asynchronous = 0x1, + AsynchronousSkipFirstFrame = 0x2, + }; +} + +enum class EHitProxyPriority +{ + HPP_World = 0x0, + HPP_Wireframe = 0x1, + HPP_Foreground = 0x2, + HPP_UI = 0x3, +}; + +enum class EVoiceChatChannelType +{ + NonPositional = 0x0, + Positional = 0x1, + Echo = 0x2, +}; + +enum class FStreamoutLogic +{ + StreamOut_UnwantedMips = 0x0, + StreamOut_AllMips = 0x1, +}; + +namespace EMessageTracerDispatchTypes +{ + enum Type + { + Direct = 0x0, + Pending = 0x1, + TaskGraph = 0x2, + }; +} + +enum class EOptimizationType +{ + OT_NumOfTriangles = 0x0, + OT_MaxDeviation = 0x1, + OT_MAX = 0x2, +}; + +enum class EImpactDamageOverride +{ + IDO_None = 0x0, + IDO_On = 0x1, + IDO_Off = 0x2, + IDO_MAX = 0x3, +}; + +enum class ENetRole +{ + ROLE_None = 0x0, + ROLE_SimulatedProxy = 0x1, + ROLE_AutonomousProxy = 0x2, + ROLE_Authority = 0x3, + ROLE_MAX = 0x4, +}; + +enum class EPolyFlags +{ + PF_Invisible = 0x1, + PF_NotSolid = 0x8, + PF_Semisolid = 0x20, + PF_GeomMarked = 0x40, + PF_TwoSided = 0x100, + PF_Portal = 0x4000000, + PF_Memorized = 0x1000000, + PF_Selected = 0x2000000, + PF_HiddenEd = 0x8000000, + PF_Hovered = 0x10000000, + PF_EdProcessed = 0x40000000, + PF_EdCut = 0x80000000, + PF_NoEdit = 0xd3000000, + PF_NoImport = 0xd3000000, + PF_AddLast = 0x28, + PF_NoAddToBSP = 0xd3000000, + PF_ModelComponentMask = 0x0, + PF_DefaultFlags = 0x0, +}; + +enum class DistributionParamMode +{ + DPM_Normal = 0x0, + DPM_Abs = 0x1, + DPM_Direct = 0x2, + DPM_MAX = 0x3, +}; + +namespace ESeedCropPhase +{ + enum Type + { + Seedling = 0x0, + Midling = 0x1, + Growthling = 0x2, + Fruiting = 0x3, + MAX = 0x4, + }; +} + +enum class EStaticConstructor +{ + EC_StaticConstructor = 0x0, +}; + +enum class ERichCurveInterpMode +{ + RCIM_Linear = 0x0, + RCIM_Constant = 0x1, + RCIM_Cubic = 0x2, +}; + +enum class ETimelineLengthMode +{ + TL_TimelineLength = 0x0, + TL_LastKeyFrame = 0x1, +}; + +namespace ULinkerLoad +{ + enum EVerifyResult + { + VERIFY_Failed = 0x0, + VERIFY_Success = 0x1, + VERIFY_Redirected = 0x2, + }; +} + +enum class EBiomeZone +{ + None = 0x0, + Beach = 0x1, + Canyon = 0x2, + River = 0x3, + Grassland = 0x4, + Swamp = 0x5, + Jungle = 0x6, + RedwoodForest = 0x7, + Mountain = 0x8, + Snow = 0x9, + Ocean = 0xa, + Lava = 0xb, + Surface = 0xc, + FertileChamber = 0xd, + BioluminescentChamber = 0xe, + ElementChamber = 0xf, + Wasteland = 0x10, +}; + +enum class EPhysicalSurface +{ + SurfaceType_Default = 0x0, + SurfaceType1 = 0x1, + SurfaceType2 = 0x2, + SurfaceType3 = 0x3, + SurfaceType4 = 0x4, + SurfaceType5 = 0x5, + SurfaceType6 = 0x6, + SurfaceType7 = 0x7, + SurfaceType8 = 0x8, + SurfaceType9 = 0x9, + SurfaceType10 = 0xa, + SurfaceType11 = 0xb, + SurfaceType12 = 0xc, + SurfaceType13 = 0xd, + SurfaceType14 = 0xe, + SurfaceType15 = 0xf, + SurfaceType16 = 0x10, + SurfaceType17 = 0x11, + SurfaceType18 = 0x12, + SurfaceType19 = 0x13, + SurfaceType20 = 0x14, + SurfaceType21 = 0x15, + SurfaceType22 = 0x16, + SurfaceType23 = 0x17, + SurfaceType24 = 0x18, + SurfaceType25 = 0x19, + SurfaceType26 = 0x1a, + SurfaceType27 = 0x1b, + SurfaceType28 = 0x1c, + SurfaceType29 = 0x1d, + SurfaceType30 = 0x1e, + SurfaceType31 = 0x1f, + SurfaceType32 = 0x20, + SurfaceType33 = 0x21, + SurfaceType34 = 0x22, + SurfaceType35 = 0x23, + SurfaceType36 = 0x24, + SurfaceType37 = 0x25, + SurfaceType38 = 0x26, + SurfaceType39 = 0x27, + SurfaceType40 = 0x28, + SurfaceType41 = 0x29, + SurfaceType42 = 0x2a, + SurfaceType43 = 0x2b, + SurfaceType44 = 0x2c, + SurfaceType45 = 0x2d, + SurfaceType46 = 0x2e, + SurfaceType47 = 0x2f, + SurfaceType48 = 0x30, + SurfaceType49 = 0x31, + SurfaceType50 = 0x32, + SurfaceType51 = 0x33, + SurfaceType52 = 0x34, + SurfaceType53 = 0x35, + SurfaceType54 = 0x36, + SurfaceType55 = 0x37, + SurfaceType56 = 0x38, + SurfaceType57 = 0x39, + SurfaceType58 = 0x3a, + SurfaceType59 = 0x3b, + SurfaceType60 = 0x3c, + SurfaceType61 = 0x3d, + SurfaceType62 = 0x3e, + SurfaceType_Max = 0x3f, +}; + +namespace ESlateBrushImageType +{ + enum Type + { + NoImage = 0x0, + FullColor = 0x1, + Linear = 0x2, + }; +} + +namespace EBlueprintExceptionType +{ + enum Type + { + Breakpoint = 0x0, + Tracepoint = 0x1, + WireTracepoint = 0x2, + AccessViolation = 0x3, + InfiniteLoop = 0x4, + NonFatalError = 0x5, + FatalError = 0x6, + }; +} + +enum class EPhysicsType +{ + PhysType_Default = 0x0, + PhysType_Kinematic = 0x1, + PhysType_Simulated = 0x2, +}; + +namespace EThreePlayerSplitScreenType +{ + enum Type + { + FavorTop = 0x0, + FavorBottom = 0x1, + }; +} + +namespace ECompositingSampleCount +{ + enum Type + { + One = 0x1, + Two = 0x2, + Four = 0x4, + Eight = 0x8, + }; +} + +namespace EBoneTranslationRetargetingMode +{ + enum Type + { + Animation = 0x0, + Skeleton = 0x1, + AnimationScaled = 0x2, + }; +} + +namespace FScopeLogTime +{ + enum EScopeLogTimeUnits + { + ScopeLog_Milliseconds = 0x0, + ScopeLog_Seconds = 0x1, + }; +} + +namespace ESaveType +{ + enum Type + { + Map = 0x0, + Profile = 0x1, + Tribe = 0x2, + CharacterSetting = 0x3, + }; +} + +namespace FGenericPlatformMisc +{ + enum EScreenSaverAction + { + Disable = 0x0, + Enable = 0x1, + }; +} + +namespace FWindowsPlatformNamedPipe +{ + enum EState + { + State_Uninitialized = 0x0, + State_Created = 0x1, + State_Connecting = 0x2, + State_ReadyForRW = 0x3, + State_WaitingForRW = 0x4, + State_ErrorPipeClosedUnexpectedly = 0x5, + }; +} + +enum class EShaderParameterFlags +{ + SPF_Optional = 0x0, + SPF_Mandatory = 0x1, +}; + +enum class ETextureReallocationStatus +{ + TexRealloc_Succeeded = 0x0, + TexRealloc_Failed = 0x1, + TexRealloc_InProgress = 0x2, +}; + +enum class EDepthOfFieldMethod +{ + DOFM_BokehDOF = 0x0, + DOFM_Gaussian = 0x1, + DOFM_MAX = 0x2, +}; + +enum class EWorkshopFileAction +{ + k_EWorkshopFileActionPlayed = 0x0, + k_EWorkshopFileActionCompleted = 0x1, +}; + +namespace ESubsequentsMode +{ + enum Type + { + TrackSubsequents = 0x0, + FireAndForget = 0x1, + }; +} + +namespace FStripDataFlags +{ + enum EStrippedData + { + None = 0x0, + Editor = 0x1, + Server = 0x2, + All = 0xff, + }; +} + +namespace EListSessionStatus +{ + enum Type + { + SearchingOfficial = 0x0, + SearchingUnofficial = 0x1, + SearchingHistory = 0x2, + SearchingFavorites = 0x3, + SearchingFriends = 0x4, + SearchingLAN = 0x5, + SearchingListenServers = 0x6, + SearchingUnOfficialPCServer = 0x7, + SearchingOfficialLegacy = 0x8, + MAX = 0x9, + }; +} + +enum class EAOUpsampleType +{ + AOUpsample_OutputBentNormal = 0x0, + AOUpsample_OutputAO = 0x1, + AOUpsample_OutputBentNormalAndIrradiance = 0x2, + AOUpsample_OutputIrradiance = 0x3, +}; + +enum class ELightComponentType +{ + LightType_Directional = 0x0, + LightType_Point = 0x1, + LightType_Spot = 0x2, + LightType_MAX = 0x3, + LightType_NumBits = 0x2, +}; + +namespace EAxisOption +{ + enum Type + { + X = 0x0, + Y = 0x1, + Z = 0x2, + X_Neg = 0x3, + Y_Neg = 0x4, + Z_Neg = 0x5, + }; +} + +enum class EOverlapFilterOption +{ + OverlapFilter_All = 0x0, + OverlapFilter_DynamicOnly = 0x1, + OverlapFilter_StaticOnly = 0x2, +}; + +namespace EBTMemoryInit +{ + enum Type + { + Initialize = 0x0, + RestoreSubtree = 0x1, + }; +} + +enum class EAntiDupeTransactionLog +{ + Item_Upload = 0x0, + Dino_Upload = 0x1, + Player_Upload = 0x2, + MAX_ENTRY = 0x3, +}; + +namespace ERootMotionRootLock +{ + enum Type + { + RefPose = 0x0, + AnimFirstFrame = 0x1, + Zero = 0x2, + }; +} + +enum class ShowHarvestingElementOption +{ + NoMulticastShowInstance = 0x0, + MulticastShowInstance = 0x1, +}; + +namespace ENetworkFailure +{ + enum Type + { + NetDriverAlreadyExists = 0x0, + NetDriverCreateFailure = 0x1, + NetDriverListenFailure = 0x2, + ConnectionLost = 0x3, + ConnectionTimeout = 0x4, + FailureReceived = 0x5, + BuildIdMismatch = 0x6, + OutdatedClient = 0x7, + OutdatedServer = 0x8, + PendingConnectionFailure = 0x9, + TotalConversionIDMismatch = 0xa, + ModMisMatch = 0xb, + ModDLCNotInstalled = 0xc, + PGTerrainMismatch = 0xd, + }; +} + +enum class ETrailsRenderAxisOption +{ + Trails_CameraUp = 0x0, + Trails_SourceUp = 0x1, + Trails_WorldUp = 0x2, + Trails_MAX = 0x3, +}; + +enum class UColReorderCode +{ + UCOL_REORDER_CODE_DEFAULT = 0xff, + UCOL_REORDER_CODE_NONE = 0x67, + UCOL_REORDER_CODE_OTHERS = 0x67, + UCOL_REORDER_CODE_SPACE = 0x1000, + UCOL_REORDER_CODE_FIRST = 0x1000, + UCOL_REORDER_CODE_PUNCTUATION = 0x1001, + UCOL_REORDER_CODE_SYMBOL = 0x1002, + UCOL_REORDER_CODE_CURRENCY = 0x1003, + UCOL_REORDER_CODE_DIGIT = 0x1004, + UCOL_REORDER_CODE_LIMIT = 0x1005, +}; + +enum class ECompareFunction +{ + CF_Less = 0x0, + CF_LessEqual = 0x1, + CF_Greater = 0x2, + CF_GreaterEqual = 0x3, + CF_Equal = 0x4, + CF_NotEqual = 0x5, + CF_Never = 0x6, + CF_Always = 0x7, + CF_DepthNearOrEqual = 0x3, + CF_DepthNear = 0x2, + CF_DepthFartherOrEqual = 0x1, +}; + +namespace EButtonTouchMethod +{ + enum Type + { + DownAndUp = 0x0, + PreciseTap = 0x1, + }; +} + +namespace EVersionComparison +{ + enum Type + { + Neither = 0x0, + First = 0x1, + Second = 0x2, + }; +} + +namespace EImmediateFlushType +{ + enum Type + { + WaitForOutstandingTasksOnly = 0x0, + DispatchToRHIThread = 0x1, + WaitForDispatchToRHIThread = 0x2, + FlushRHIThread = 0x3, + FlushRHIThreadFlushResources = 0x4, + }; +} + +enum class ESceneDepthPriorityGroup +{ + SDPG_World = 0x0, + SDPG_Foreground = 0x1, + SDPG_MAX = 0x2, +}; + +namespace ESlateBrushMirrorType +{ + enum Type + { + NoMirror = 0x0, + Horizontal = 0x1, + Vertical = 0x2, + Both = 0x3, + }; +} + +enum class ELifetimeCondition +{ + COND_None = 0x0, + COND_InitialOnly = 0x1, + COND_OwnerOnly = 0x2, + COND_SkipOwner = 0x3, + COND_SimulatedOnly = 0x4, + COND_AutonomousOnly = 0x5, + COND_SimulatedOrPhysics = 0x6, + COND_InitialOrOwner = 0x7, + COND_Custom = 0x8, + COND_Max = 0x9, +}; + +enum class EMusicTrackState +{ + EMTS_Initalizing = 0x0, + EMTS_Loading = 0x1, + EMTS_WaitingToPlay = 0x2, + EMTS_CrossFadeIn = 0x3, + EMTS_Playing = 0x4, + EMTS_CrossFadeOut = 0x5, + EMTS_Finished = 0x6, + EMTS_Failed = 0x7, +}; + +enum class EBlueprintPinStyleType +{ + BPST_Original = 0x0, + BPST_VariantA = 0x1, +}; + +namespace EPrimalEquipmentType +{ + enum Type + { + Hat = 0x0, + Shirt = 0x1, + Pants = 0x2, + Boots = 0x3, + Gloves = 0x4, + DinoSaddle = 0x5, + Trophy = 0x6, + Costume = 0x7, + Shield = 0x8, + Weapon = 0x9, + Snapshot = 0xa, + MAX = 0xb, + }; +} + +namespace EEarlyZPass +{ + enum Type + { + None = 0x0, + OpaqueOnly = 0x1, + OpaqueAndMasked = 0x2, + Auto = 0x3, + }; +} + +enum class EConnectionState +{ + USOCK_Invalid = 0x0, + USOCK_Closed = 0x1, + USOCK_Pending = 0x2, + USOCK_Open = 0x3, +}; + +enum class UCalendarWallTimeOption +{ + UCAL_WALLTIME_LAST = 0x0, + UCAL_WALLTIME_FIRST = 0x1, + UCAL_WALLTIME_NEXT_VALID = 0x2, +}; + +namespace ECustomDepth +{ + enum Type + { + Disabled = 0x0, + Enabled = 0x1, + EnabledOnDemand = 0x2, + }; +} + +namespace ESocketWaitConditions +{ + enum Type + { + WaitForRead = 0x0, + WaitForWrite = 0x1, + WaitForReadOrWrite = 0x2, + }; +} + +namespace EAudioOutputTarget +{ + enum Type + { + Speaker = 0x0, + Controller = 0x1, + ControllerFallbackToSpeaker = 0x2, + }; +} + +namespace EBiomeFilter +{ + enum Type + { + ARCTIC = 0x1, + BOG = 0x4, + LUNAR = 0x8, + OCEAN = 0x10, + VOLCANIC = 0x20, + ALL_MISSIONS = 0x3d, + }; +} + +namespace ETravelFailure +{ + enum Type + { + NoLevel = 0x0, + LoadMapFailure = 0x1, + InvalidURL = 0x2, + PackageMissing = 0x3, + PackageVersion = 0x4, + NoDownload = 0x5, + TravelFailure = 0x6, + CheatCommands = 0x7, + PendingNetGameCreateFailure = 0x8, + CloudSaveFailure = 0x9, + ServerTravelFailure = 0xa, + ClientTravelFailure = 0xb, + }; +} + +namespace EPrimalStatsValueTypes +{ + enum Type + { + TotalShots = 0x0, + Misses = 0x1, + HitsStructure = 0x2, + HitsDinoBody = 0x3, + HitsDinoCritical = 0x4, + HitsPlayerBody = 0x5, + HitsPlayerCritical = 0x6, + MAX = 0x7, + }; +} + +enum class dtStraightPathOptions +{ + DT_STRAIGHTPATH_AREA_CROSSINGS = 0x1, + DT_STRAIGHTPATH_ALL_CROSSINGS = 0x2, +}; + +enum class EFoldedMathOperation +{ + FMO_Add = 0x0, + FMO_Sub = 0x1, + FMO_Mul = 0x2, + FMO_Div = 0x3, + FMO_Dot = 0x4, +}; + +enum class EByteOrderMark +{ + UTF8 = 0x0, + Unspecified = 0x1, +}; + +namespace EGraphDataStyle +{ + enum Type + { + Lines = 0x0, + Filled = 0x1, + }; +} + +enum class EResourceTransitionPipeline +{ + EGfxToCompute = 0x0, + EComputeToGfx = 0x1, + EGfxToGfx = 0x2, + EComputeToCompute = 0x3, +}; + +namespace EVersionComponent +{ + enum Type + { + Major = 0x0, + Minor = 0x1, + Patch = 0x2, + Changelist = 0x3, + Branch = 0x4, + }; +} + +enum class ETextureSourceArtType +{ + TSAT_Uncompressed = 0x0, + TSAT_PNGCompressed = 0x1, + TSAT_DDSFile = 0x2, + TSAT_MAX = 0x3, +}; + +enum class EGameUserSettingsVersion +{ + UE_GAMEUSERSETTINGS_VERSION = 0x5, +}; + +enum class TextureCompressionSettings +{ + TC_Default = 0x0, + TC_Normalmap = 0x1, + TC_Masks = 0x2, + TC_Grayscale = 0x3, + TC_Displacementmap = 0x4, + TC_VectorDisplacementmap = 0x5, + TC_HDR = 0x6, + TC_EditorIcon = 0x7, + TC_Alpha = 0x8, + TC_DistanceFieldFont = 0x9, + TC_MAX = 0xa, +}; + +namespace EngineUtils +{ + enum EAssetToLoad + { + ATL_Regular = 0x0, + ATL_Class = 0x1, + }; +} + +namespace EKismetCompileType +{ + enum Type + { + SkeletonOnly = 0x0, + Full = 0x1, + StubAfterFailure = 0x2, + BytecodeOnly = 0x3, + }; +} + +enum class EDistributionVectorLockFlags +{ + EDVLF_None = 0x0, + EDVLF_XY = 0x1, + EDVLF_XZ = 0x2, + EDVLF_YZ = 0x3, + EDVLF_XYZ = 0x4, + EDVLF_MAX = 0x5, +}; + +enum class EMoveComponentFlags +{ + MOVECOMP_NoFlags = 0x0, + MOVECOMP_IgnoreBases = 0x1, + MOVECOMP_SkipPhysicsMove = 0x2, + MOVECOMP_NeverIgnoreBlockingOverlaps = 0x4, + MOVECOMP_DoCenterOfMassCheck = 0x8, +}; + +enum class rcAllocHint +{ + RC_ALLOC_PERM = 0x0, + RC_ALLOC_TEMP = 0x1, +}; + +enum class EDenyReason +{ + k_EDenyInvalid = 0x0, + k_EDenyInvalidVersion = 0x1, + k_EDenyGeneric = 0x2, + k_EDenyNotLoggedOn = 0x3, + k_EDenyNoLicense = 0x4, + k_EDenyCheater = 0x5, + k_EDenyLoggedInElseWhere = 0x6, + k_EDenyUnknownText = 0x7, + k_EDenyIncompatibleAnticheat = 0x8, + k_EDenyMemoryCorruption = 0x9, + k_EDenyIncompatibleSoftware = 0xa, + k_EDenySteamConnectionLost = 0xb, + k_EDenySteamConnectionError = 0xc, + k_EDenySteamResponseTimedOut = 0xd, + k_EDenySteamValidationStalled = 0xe, + k_EDenySteamOwnerLeftGuestUser = 0xf, +}; + +enum class EShaderPlatform +{ + SP_PCD3D_SM5 = 0x0, + SP_OPENGL_SM4 = 0x1, + SP_PS4 = 0x2, + SP_OPENGL_PCES2 = 0x3, + SP_XBOXONE = 0x4, + SP_PCD3D_SM4 = 0x5, + SP_OPENGL_SM5 = 0x6, + SP_PCD3D_ES2 = 0x7, + SP_OPENGL_ES2_ANDROID = 0x8, + SP_OPENGL_ES2_WEBGL = 0x9, + SP_OPENGL_ES2_IOS = 0xa, + SP_METAL = 0xb, + SP_OPENGL_SM4_MAC = 0xc, + SP_METAL_MRT = 0xd, + SP_OPENGL_ES31_EXT = 0xe, + SP_PCD3D_ES3_1 = 0xf, + SP_OPENGL_PCES3_1 = 0x10, + SP_METAL_SM5 = 0x11, + SP_VULKAN_PCES3_1 = 0x12, + SP_METAL_SM4 = 0x13, + SP_VULKAN_SM4 = 0x14, + SP_VULKAN_SM5 = 0x15, + SP_VULKAN_ES3_1_ANDROID = 0x16, + SP_METAL_MACES3_1 = 0x17, + SP_METAL_MACES2 = 0x18, + SP_OPENGL_ES3_1_ANDROID = 0x19, + SP_SWITCH = 0x1a, + SP_SWITCH_FORWARD = 0x1b, + SP_NumPlatforms = 0x1c, + SP_NumBits = 0x5, +}; + +enum class EMaterialUsage +{ + MATUSAGE_SkeletalMesh = 0x0, + MATUSAGE_ParticleSprites = 0x1, + MATUSAGE_BeamTrails = 0x2, + MATUSAGE_MeshParticles = 0x3, + MATUSAGE_StaticLighting = 0x4, + MATUSAGE_MorphTargets = 0x5, + MATUSAGE_SplineMesh = 0x6, + MATUSAGE_Landscape = 0x7, + MATUSAGE_InstancedStaticMeshes = 0x8, + MATUSAGE_Clothing = 0x9, + MATUSAGE_UI = 0xa, + MATUSAGE_GroundClutter = 0xb, + MATUSAGE_MAX = 0xc, +}; + +namespace EKinematicBonesUpdateToPhysics +{ + enum Type + { + SkipSimulatingBones = 0x0, + SkipAllBones = 0x1, + }; +} + +namespace EAnimationMode +{ + enum Type + { + AnimationBlueprint = 0x0, + AnimationSingleNode = 0x1, + }; +} + +namespace EEventLog +{ + enum Type + { + MouseMove = 0x0, + MouseEnter = 0x1, + MouseLeave = 0x2, + MouseButtonDown = 0x3, + MouseButtonUp = 0x4, + MouseButtonDoubleClick = 0x5, + MouseWheel = 0x6, + DragDetected = 0x7, + DragEnter = 0x8, + DragLeave = 0x9, + DragOver = 0xa, + DragDrop = 0xb, + DropMessage = 0xc, + KeyDown = 0xd, + KeyUp = 0xe, + KeyChar = 0xf, + UICommand = 0x10, + BeginTransaction = 0x11, + EndTransaction = 0x12, + TouchGesture = 0x13, + Other = 0x14, + }; +} + +enum class ERenderQueryType +{ + RQT_Undefined = 0x0, + RQT_Occlusion = 0x1, + RQT_AbsoluteTime = 0x2, + RQT_Fence = 0x3, +}; + +enum class EFullyLoadPackageType +{ + FULLYLOAD_Map = 0x0, + FULLYLOAD_Game_PreLoadClass = 0x1, + FULLYLOAD_Game_PostLoadClass = 0x2, + FULLYLOAD_Always = 0x3, + FULLYLOAD_Mutator = 0x4, + FULLYLOAD_MAX = 0x5, +}; + +namespace EClimbingMode +{ + enum Type + { + None = 0x0, + Attached = 0x1, + Finalizing = 0x2, + MAX = 0x3, + }; +} + +namespace ENavigationOptionFlag +{ + enum Type + { + Default = 0x0, + Enable = 0x1, + Disable = 0x2, + MAX = 0x3, + }; +} + +enum class EDuplicateForPie +{ + SDO_No_DuplicateForPie = 0x0, + SDO_DuplicateForPie = 0x1, +}; + +enum class EConsoleType +{ + CONSOLE_Any = 0x0, + CONSOLE_Mobile = 0x1, + CONSOLE_XBOXONE = 0x2, + CONSOLE_MAX = 0x3, +}; + +namespace ISteamHTMLSurface +{ + enum EHTMLKeyModifiers + { + k_eHTMLKeyModifier_None = 0x0, + k_eHTMLKeyModifier_AltDown = 0x1, + k_eHTMLKeyModifier_CtrlDown = 0x2, + k_eHTMLKeyModifier_ShiftDown = 0x4, + }; +} + +enum class ESamplerAddressMode +{ + AM_Wrap = 0x0, + AM_Clamp = 0x1, + AM_Mirror = 0x2, + AM_Border = 0x3, +}; + +enum class EBlueprintType +{ + BPTYPE_Normal = 0x0, + BPTYPE_Const = 0x1, + BPTYPE_MacroLibrary = 0x2, + BPTYPE_Interface = 0x3, + BPTYPE_LevelScript = 0x4, + BPTYPE_FunctionLibrary = 0x5, + BPTYPE_MAX = 0x6, +}; + +enum class ESamplerCompareFunction +{ + SCF_Never = 0x0, + SCF_Less = 0x1, +}; + +enum class ERasterizerFillMode +{ + FM_Point = 0x0, + FM_Wireframe = 0x1, + FM_Solid = 0x2, +}; + +enum class EObjectMark +{ + OBJECTMARK_NOMARKS = 0x0, + OBJECTMARK_Saved = 0x4, + OBJECTMARK_TagImp = 0x8, + OBJECTMARK_TagExp = 0x10, + OBJECTMARK_NotForClient = 0x20, + OBJECTMARK_NotForServer = 0x40, + OBJECTMARK_NotForEditorGame = 0x80, + OBJECTMARK_ALLMARKS = 0xff, +}; + +enum class ECompiledMaterialProperty +{ + CompiledMP_EmissiveColorCS = 0x1f, + CompiledMP_MAX = 0x20, +}; + +namespace FSizeParam +{ + enum ESizeRule + { + SizeRule_Auto = 0x0, + SizeRule_Stretch = 0x1, + }; +} + +enum class ECollisionTraceFlag +{ + CTF_UseDefault = 0x0, + CTF_UseSimpleAsComplex = 0x1, + CTF_UseComplexAsSimple = 0x2, + CTF_MAX = 0x3, +}; + +enum class ENetDormancy +{ + DORM_Never = 0x0, + DORM_Awake = 0x1, + DORM_DormantAll = 0x2, + DORM_DormantPartial = 0x3, + DORM_Initial = 0x4, + DORN_MAX = 0x5, +}; + +enum class EColorWriteMask +{ + CW_RED = 0x1, + CW_GREEN = 0x2, + CW_BLUE = 0x4, + CW_ALPHA = 0x8, + CW_NONE = 0x0, + CW_RGB = 0x7, + CW_RGBA = 0xf, + CW_RG = 0x3, + CW_BA = 0xc, +}; + +namespace EBodyCollisionResponse +{ + enum Type + { + BodyCollision_Enabled = 0x0, + BodyCollision_Disabled = 0x1, + }; +} + +namespace ERenderThreadIdleTypes +{ + enum Type + { + WaitingForAllOtherSleep = 0x0, + WaitingForGPUQuery = 0x1, + WaitingForGPUPresent = 0x2, + Num = 0x3, + }; +} + +namespace EEndPlayReason +{ + enum Type + { + ActorDestroyed = 0x0, + LevelTransition = 0x1, + EndPlayInEditor = 0x2, + RemovedFromWorld = 0x3, + Quit = 0x4, + }; +} + +namespace ENavPathEvent +{ + enum Type + { + Cleared = 0x0, + NewPath = 0x1, + UpdatedDueToGoalMoved = 0x2, + UpdatedDueToNavigationChanged = 0x3, + Invalidated = 0x4, + RePathFailed = 0x5, + Custom = 0x6, + }; +} + +namespace ENavPathUpdateType +{ + enum Type + { + GoalMoved = 0x0, + NavigationChanged = 0x1, + Custom = 0x2, + }; +} + +enum class TextureGroup +{ + TEXTUREGROUP_World = 0x0, + TEXTUREGROUP_WorldNormalMap = 0x1, + TEXTUREGROUP_WorldSpecular = 0x2, + TEXTUREGROUP_Character = 0x3, + TEXTUREGROUP_CharacterNormalMap = 0x4, + TEXTUREGROUP_CharacterSpecular = 0x5, + TEXTUREGROUP_Weapon = 0x6, + TEXTUREGROUP_WeaponNormalMap = 0x7, + TEXTUREGROUP_WeaponSpecular = 0x8, + TEXTUREGROUP_Vehicle = 0x9, + TEXTUREGROUP_VehicleNormalMap = 0xa, + TEXTUREGROUP_VehicleSpecular = 0xb, + TEXTUREGROUP_Cinematic = 0xc, + TEXTUREGROUP_Effects = 0xd, + TEXTUREGROUP_EffectsNotFiltered = 0xe, + TEXTUREGROUP_Skybox = 0xf, + TEXTUREGROUP_UI = 0x10, + TEXTUREGROUP_Lightmap = 0x11, + TEXTUREGROUP_RenderTarget = 0x12, + TEXTUREGROUP_MobileFlattened = 0x13, + TEXTUREGROUP_ProcBuilding_Face = 0x14, + TEXTUREGROUP_ProcBuilding_LightMap = 0x15, + TEXTUREGROUP_Shadowmap = 0x16, + TEXTUREGROUP_ColorLookupTable = 0x17, + TEXTUREGROUP_Terrain_Heightmap = 0x18, + TEXTUREGROUP_Terrain_Weightmap = 0x19, + TEXTUREGROUP_Bokeh = 0x1a, + TEXTUREGROUP_IESLightProfile = 0x1b, + TEXTUREGROUP_SourceRez = 0x1c, + TEXTUREGROUP_MAX = 0x1d, +}; + +namespace EPathObservationResult +{ + enum Type + { + NoLongerObserving = 0x0, + NoChange = 0x1, + RequestRepath = 0x2, + }; +} + +namespace ENavCostDisplay +{ + enum Type + { + TotalCost = 0x0, + HeuristicOnly = 0x1, + RealCostOnly = 0x2, + }; +} + +namespace ENavAreaEvent +{ + enum Type + { + Registered = 0x0, + Unregistered = 0x1, + }; +} + +enum class EBlendOperation +{ + BO_Add = 0x0, + BO_Subtract = 0x1, + BO_Min = 0x2, + BO_Max = 0x3, + BO_ReverseSubtract = 0x4, +}; + +namespace EAsyncPackageState +{ + enum Type + { + TimeOut = 0x0, + PendingImports = 0x1, + Complete = 0x2, + }; +} + +enum class EViewTargetBlendFunction +{ + VTBlend_Linear = 0x0, + VTBlend_Cubic = 0x1, + VTBlend_EaseIn = 0x2, + VTBlend_EaseOut = 0x3, + VTBlend_EaseInOut = 0x4, + VTBlend_MAX = 0x5, +}; + +enum class GroundClutterState +{ + DoNotUpdate = 0x0, + Update = 0x1, +}; + +enum class EBlendFactor +{ + BF_Zero = 0x0, + BF_One = 0x1, + BF_SourceColor = 0x2, + BF_InverseSourceColor = 0x3, + BF_SourceAlpha = 0x4, + BF_InverseSourceAlpha = 0x5, + BF_DestAlpha = 0x6, + BF_InverseDestAlpha = 0x7, + BF_DestColor = 0x8, + BF_InverseDestColor = 0x9, + BF_ConstantBlendFactor = 0xa, + BF_InverseConstantBlendFactor = 0xb, +}; + +enum class ESplitType +{ + SP_Coplanar = 0x0, + SP_Front = 0x1, + SP_Back = 0x2, + SP_Split = 0x3, +}; + +enum class TextureMipGenSettings +{ + TMGS_FromTextureGroup = 0x0, + TMGS_SimpleAverage = 0x1, + TMGS_Sharpen0 = 0x2, + TMGS_Sharpen1 = 0x3, + TMGS_Sharpen2 = 0x4, + TMGS_Sharpen3 = 0x5, + TMGS_Sharpen4 = 0x6, + TMGS_Sharpen5 = 0x7, + TMGS_Sharpen6 = 0x8, + TMGS_Sharpen7 = 0x9, + TMGS_Sharpen8 = 0xa, + TMGS_Sharpen9 = 0xb, + TMGS_Sharpen10 = 0xc, + TMGS_NoMipmaps = 0xd, + TMGS_LeaveExistingMips = 0xe, + TMGS_Blur1 = 0xf, + TMGS_Blur2 = 0x10, + TMGS_Blur3 = 0x11, + TMGS_Blur4 = 0x12, + TMGS_Blur5 = 0x13, + TMGS_MAX = 0x14, +}; + +enum class EHorizTextAligment +{ + EHTA_Left = 0x0, + EHTA_Center = 0x1, + EHTA_Right = 0x2, +}; + +enum class EVerticalTextAligment +{ + EVRTA_TextTop = 0x0, + EVRTA_TextCenter = 0x1, + EVRTA_TextBottom = 0x2, + EVRTA_QuadTop = 0x3, +}; + +namespace EOnlineSharingPublishingCategory +{ + enum Type + { + None = 0x0, + Posts = 0x1, + Friends = 0x2, + AccountAdmin = 0x4, + Events = 0x8, + }; +} + +namespace EHasCustomNavigableGeometry +{ + enum Type + { + No = 0x0, + Yes = 0x1, + EvenIfNotCollidable = 0x2, + }; +} + +enum class EGraphType +{ + GT_Function = 0x0, + GT_Ubergraph = 0x1, + GT_Macro = 0x2, + GT_Animation = 0x3, + GT_StateMachine = 0x4, + GT_MAX = 0x5, +}; + +enum class ECubeFace +{ + CubeFace_PosX = 0x0, + CubeFace_NegX = 0x1, + CubeFace_PosY = 0x2, + CubeFace_NegY = 0x3, + CubeFace_PosZ = 0x4, + CubeFace_NegZ = 0x5, + CubeFace_MAX = 0x6, +}; + +enum class EUniformBufferUsage +{ + UniformBuffer_SingleDraw = 0x0, + UniformBuffer_SingleFrame = 0x1, + UniformBuffer_MultiFrame = 0x2, +}; + +enum class EMipFadeSettings +{ + MipFade_Normal = 0x0, + MipFade_Slow = 0x1, + MipFade_NumSettings = 0x2, +}; + +namespace EEnvTestDistance +{ + enum Type + { + Distance3D = 0x0, + Distance2D = 0x1, + DistanceZ = 0x2, + }; +} + +namespace FunctionCallspace +{ + enum Type + { + Absorbed = 0x0, + Remote = 0x1, + Local = 0x2, + }; +} + +namespace EAntiAliasingMethodUI +{ + enum Type + { + AAM_None = 0x0, + AAM_FXAA = 0x1, + AAM_TemporalAA = 0x2, + AAM_MAX = 0x3, + }; +} + +enum class EEmitterDynamicParameterValue +{ + EDPV_UserSet = 0x0, + EDPV_VelocityX = 0x1, + EDPV_VelocityY = 0x2, + EDPV_VelocityZ = 0x3, + EDPV_VelocityMag = 0x4, + EDPV_MAX = 0x5, +}; + +enum class EFunctionFlags +{ + FUNC_Final = 0x1, + FUNC_RequiredAPI = 0x2, + FUNC_BlueprintAuthorityOnly = 0x4, + FUNC_BlueprintCosmetic = 0x8, + FUNC_Net = 0x40, + FUNC_NetReliable = 0x80, + FUNC_NetRequest = 0x100, + FUNC_Exec = 0x200, + FUNC_Native = 0x400, + FUNC_Event = 0x800, + FUNC_NetResponse = 0x1000, + FUNC_Static = 0x2000, + FUNC_NetMulticast = 0x4000, + FUNC_MulticastDelegate = 0x10000, + FUNC_Public = 0x20000, + FUNC_Private = 0x40000, + FUNC_Protected = 0x80000, + FUNC_Delegate = 0x100000, + FUNC_NetServer = 0x200000, + FUNC_HasOutParms = 0x400000, + FUNC_HasDefaults = 0x800000, + FUNC_NetClient = 0x1000000, + FUNC_DLLImport = 0x2000000, + FUNC_BlueprintCallable = 0x4000000, + FUNC_BlueprintEvent = 0x8000000, + FUNC_BlueprintPure = 0x10000000, + FUNC_Const = 0x40000000, + FUNC_NetValidate = 0x80000000, + FUNC_FuncInherit = 0xc000a0c, + FUNC_FuncOverrideMatch = 0xe2201, + FUNC_NetFuncFlags = 0x12040c0, + FUNC_AccessSpecifiers = 0xe0000, + FUNC_AllFlags = 0xff, +}; + +namespace EAttenuationShape +{ + enum Type + { + Sphere = 0x0, + Capsule = 0x1, + Box = 0x2, + Cone = 0x3, + }; +} + +namespace EUIScalingRule +{ + enum Type + { + ShortestSide = 0x0, + LongestSide = 0x1, + Horizontal = 0x2, + Vertical = 0x3, + SmallestCurve = 0x4, + }; +} + +namespace EGrammaticalNumber +{ + enum Type + { + Singular = 0x0, + Plural = 0x1, + }; +} + +namespace EReflectionCaptureShape +{ + enum Type + { + Sphere = 0x0, + Box = 0x1, + Plane = 0x2, + Num = 0x3, + }; +} + +enum class ETextureStreamingState +{ + TexState_InProgress_Initialization = 0xff, + TexState_ReadyFor_Requests = 0x0, + TexState_InProgress_Finalization = 0x1, + TexState_ReadyFor_Finalization = 0x2, + TexState_InProgress_Upload = 0x3, + TexState_ReadyFor_Upload = 0x4, + TexState_InProgress_Loading = 0x5, + TexState_ReadyFor_Loading = 0x64, + TexState_InProgress_Allocation = 0x65, + TexState_InProgress_AsyncAllocation = 0x66, +}; + +namespace ENavigationQueryResult +{ + enum Type + { + Invalid = 0x0, + Error = 0x1, + Fail = 0x2, + Success = 0x3, + }; +} + +enum class EExprToken +{ + EX_LocalVariable = 0x0, + EX_InstanceVariable = 0x1, + EX_Return = 0x4, + EX_Jump = 0x6, + EX_JumpIfNot = 0x7, + EX_Assert = 0x9, + EX_Nothing = 0xb, + EX_Let = 0xf, + EX_MetaCast = 0x13, + EX_LetBool = 0x14, + EX_EndParmValue = 0x15, + EX_EndFunctionParms = 0x16, + EX_Self = 0x17, + EX_Skip = 0x18, + EX_Context = 0x19, + EX_Context_FailSilent = 0x1a, + EX_VirtualFunction = 0x1b, + EX_FinalFunction = 0x1c, + EX_IntConst = 0x1d, + EX_FloatConst = 0x1e, + EX_StringConst = 0x1f, + EX_ObjectConst = 0x20, + EX_NameConst = 0x21, + EX_RotationConst = 0x22, + EX_VectorConst = 0x23, + EX_ByteConst = 0x24, + EX_IntZero = 0x25, + EX_IntOne = 0x26, + EX_True = 0x27, + EX_False = 0x28, + EX_TextConst = 0x29, + EX_NoObject = 0x2a, + EX_TransformConst = 0x2b, + EX_IntConstByte = 0x2c, + EX_DynamicCast = 0x2e, + EX_StructConst = 0x2f, + EX_EndStructConst = 0x30, + EX_SetArray = 0x31, + EX_EndArray = 0x32, + EX_UnicodeStringConst = 0x34, + EX_PrimitiveCast = 0x38, + EX_StructMemberContext = 0x42, + EX_LetMulticastDelegate = 0x43, + EX_LetDelegate = 0x44, + EX_LocalOutVariable = 0x48, + EX_DeprecatedOp4A = 0x4a, + EX_InstanceDelegate = 0x4b, + EX_PushExecutionFlow = 0x4c, + EX_PopExecutionFlow = 0x4d, + EX_ComputedJump = 0x4e, + EX_PopExecutionFlowIfNot = 0x4f, + EX_Breakpoint = 0x50, + EX_InterfaceContext = 0x51, + EX_ObjToInterfaceCast = 0x52, + EX_EndOfScript = 0x53, + EX_CrossInterfaceCast = 0x54, + EX_WireTracepoint = 0x5a, + EX_SkipOffsetConst = 0x5b, + EX_AddMulticastDelegate = 0x5c, + EX_ClearMulticastDelegate = 0x5d, + EX_Tracepoint = 0x5e, + EX_LetObj = 0x5f, + EX_LetWeakObjPtr = 0x60, + EX_BindDelegate = 0x61, + EX_RemoveMulticastDelegate = 0x62, + EX_CallMulticastDelegate = 0x63, + EX_DoubleConst = 0x64, + EX_StringLocConst = 0x65, + EX_Max = 0x100, +}; + +enum class EBoneVisibilityStatus +{ + BVS_HiddenByParent = 0x0, + BVS_Visible = 0x1, + BVS_ExplicitlyHidden = 0x2, + BVS_MAX = 0x3, +}; + +namespace EScopedUpdate +{ + enum Type + { + ImmediateUpdates = 0x0, + DeferredUpdates = 0x1, + }; +} + +namespace ELoginStatus +{ + enum Type + { + NotLoggedIn = 0x0, + UsingLocalProfile = 0x1, + LoggedIn = 0x2, + }; +} + +enum class ERawDistributionOperation +{ + RDO_Uninitialized = 0x0, + RDO_None = 0x1, + RDO_Random = 0x2, + RDO_Extreme = 0x3, +}; + +namespace EKeyboardFocusCause +{ + enum Type + { + Mouse = 0x0, + Keyboard = 0x1, + SetDirectly = 0x2, + Cleared = 0x3, + OtherWidgetLostFocus = 0x4, + WindowActivate = 0x5, + }; +} + +enum class ERHIResourceType +{ + RRT_None = 0x0, + RRT_SamplerState = 0x1, + RRT_RasterizerState = 0x2, + RRT_DepthStencilState = 0x3, + RRT_BlendState = 0x4, + RRT_VertexDeclaration = 0x5, + RRT_VertexShader = 0x6, + RRT_HullShader = 0x7, + RRT_DomainShader = 0x8, + RRT_PixelShader = 0x9, + RRT_GeometryShader = 0xa, + RRT_ComputeShader = 0xb, + RRT_BoundShaderState = 0xc, + RRT_UniformBuffer = 0xd, + RRT_IndexBuffer = 0xe, + RRT_VertexBuffer = 0xf, + RRT_StructuredBuffer = 0x10, + RRT_Texture = 0x11, + RRT_Texture2D = 0x12, + RRT_Texture2DArray = 0x13, + RRT_Texture3D = 0x14, + RRT_TextureCube = 0x15, + RRT_TextureReference = 0x16, + RRT_RenderQuery = 0x17, + RRT_Viewport = 0x18, + RRT_UnorderedAccessView = 0x19, + RRT_ShaderResourceView = 0x1a, + RRT_Num = 0x1b, +}; + +namespace EOnlineServerConnectionStatus +{ + enum Type + { + Normal = 0x0, + NotConnected = 0x1, + Connected = 0x2, + ConnectionDropped = 0x3, + NoNetworkConnection = 0x4, + ServiceUnavailable = 0x5, + UpdateRequired = 0x6, + ServersTooBusy = 0x7, + DuplicateLoginDetected = 0x8, + InvalidUser = 0x9, + NotAuthorized = 0xa, + InvalidSession = 0xb, + }; +} + +enum class EDetailMode +{ + DM_Low = 0x0, + DM_Medium = 0x1, + DM_High = 0x2, + DM_MAX = 0x3, +}; + +enum class ERelativeTransformSpace +{ + RTS_World = 0x0, + RTS_Actor = 0x1, + RTS_Component = 0x2, +}; + +enum class EPackageFlags +{ + PKG_ClientOptional = 0x2, + PKG_ServerSideOnly = 0x4, + PKG_CompiledIn = 0x10, + PKG_ForDiffing = 0x20, + PKG_Need = 0x8000, + PKG_Compiling = 0x10000, + PKG_ContainsMap = 0x20000, + PKG_RequiresLocalizationGather = 0x40000, + PKG_DisallowLazyLoading = 0x80000, + PKG_PlayInEditor = 0x100000, + PKG_ContainsScript = 0x200000, + PKG_BulkAtEndUseSeparateFile = 0x800000, + PKG_StoreCompressed = 0x2000000, + PKG_StoreFullyCompressed = 0x4000000, + PKG_ReloadingForCooker = 0x40000000, + PKG_FilterEditorOnly = 0x80000000, +}; + +namespace EInviteStatus +{ + enum Type + { + Unknown = 0x0, + Accepted = 0x1, + PendingInbound = 0x2, + PendingOutbound = 0x3, + }; +} + +enum class ETravelType +{ + TRAVEL_Absolute = 0x0, + TRAVEL_Partial = 0x1, + TRAVEL_Relative = 0x2, + TRAVEL_MAX = 0x3, +}; + +enum class ETextureCreateFlags +{ + TexCreate_None = 0x0, + TexCreate_RenderTargetable = 0x1, + TexCreate_ResolveTargetable = 0x2, + TexCreate_DepthStencilTargetable = 0x4, + TexCreate_ShaderResource = 0x8, + TexCreate_SRGB = 0x10, + TexCreate_NoMipTail = 0x20, + TexCreate_NoTiling = 0x40, + TexCreate_Dynamic = 0x100, + TexCreate_AllowFailure = 0x200, + TexCreate_DisableAutoDefrag = 0x400, + TexCreate_BiasNormalMap = 0x800, + TexCreate_GenerateMipCapable = 0x1000, + TexCreate_UAV = 0x10000, + TexCreate_Presentable = 0x20000, + TexCreate_CPUReadback = 0x40000, + TexCreate_OfflineProcessed = 0x80000, + TexCreate_FastVRAM = 0x100000, + TexCreate_HideInVisualizeTexture = 0x200000, + TexCreate_Virtual = 0x400000, + TexCreate_TargetArraySlicesIndependently = 0x800000, + TexCreate_Shared = 0x1000000, + TexCreate_NoFastClear = 0x2000000, + TexCreate_DepthStencilResolveTarget = 0x4000000, + TexCreate_NoFastClearFinalize = 0x10000000, + TexCreate_AFRManual = 0x20000000, + TexCreate_FromPC = 0x40000000, +}; + +enum class EDrawRectangleFlags +{ + EDRF_Default = 0x0, + EDRF_UseTriangleOptimization = 0x1, +}; + +namespace ETangentOptions +{ + enum Type + { + None = 0x0, + BlendOverlappingNormals = 0x1, + IgnoreDegenerateTriangles = 0x2, + UseMikkTSpace = 0x4, + }; +} + +enum class EInitialOscillatorOffset +{ + EOO_OffsetRandom = 0x0, + EOO_OffsetZero = 0x1, + EOO_MAX = 0x2, +}; + +enum class ELocalizedLanguage +{ + ca = 0x0, + cs = 0x1, + da = 0x2, + de = 0x3, + en = 0x4, + es = 0x5, + eu = 0x6, + fi = 0x7, + fr = 0x8, + hu = 0x9, + it = 0xa, + ja = 0xb, + ka = 0xc, + ko = 0xd, + nl = 0xe, + pl = 0xf, + pt_BR = 0x10, + ru = 0x11, + sv = 0x12, + th = 0x13, + tr = 0x14, + uk = 0x15, + zh = 0x16, + zh__Hans__CN = 0x17, + zh__TW = 0x18, + MAX = 0x19, +}; + +namespace ETouchType +{ + enum Type + { + Began = 0x0, + Moved = 0x1, + Stationary = 0x2, + Ended = 0x3, + NumTypes = 0x4, + }; +} + +enum class EAsyncComputePriority +{ + AsyncComputePriority_Default = 0x0, + AsyncComputePriority_High = 0x1, +}; + +enum class EShadowMapInteractionType +{ + SMIT_None = 0x0, + SMIT_Texture = 0x2, + SMIT_NumBits = 0x3, +}; + +namespace EMaterialQualityLevel +{ + enum Type + { + Low = 0x0, + High = 0x1, + Num = 0x2, + }; +} + +namespace EFieldIteratorFlags +{ + enum SuperClassFlags + { + ExcludeSuper = 0x0, + IncludeSuper = 0x1, + }; +} + +enum class EMaterialProperty +{ + MP_EmissiveColor = 0x0, + MP_Opacity = 0x1, + MP_OpacityMask = 0x2, + MP_DiffuseColor = 0x3, + MP_SpecularColor = 0x4, + MP_BaseColor = 0x5, + MP_Metallic = 0x6, + MP_Specular = 0x7, + MP_Roughness = 0x8, + MP_Normal = 0x9, + MP_WorldPositionOffset = 0xa, + MP_WorldDisplacement = 0xb, + MP_TessellationMultiplier = 0xc, + MP_SubsurfaceColor = 0xd, + MP_ClearCoat = 0xe, + MP_ClearCoatRoughness = 0xf, + MP_AmbientOcclusion = 0x10, + MP_Refraction = 0x11, + MP_SSAOIntensity = 0x12, + MP_SSAOInfluence = 0x13, + MP_SSAOLightInfluence = 0x14, + MP_PixelDepthOffset = 0x15, + MP_CustomizedUVs0 = 0x16, + MP_CustomizedUVs1 = 0x17, + MP_CustomizedUVs2 = 0x18, + MP_CustomizedUVs3 = 0x19, + MP_CustomizedUVs4 = 0x1a, + MP_CustomizedUVs5 = 0x1b, + MP_CustomizedUVs6 = 0x1c, + MP_CustomizedUVs7 = 0x1d, + MP_MaterialAttributes = 0x1e, + MP_MAX = 0x1f, +}; + +namespace EFieldIteratorFlags +{ + enum DeprecatedPropertyFlags + { + ExcludeDeprecated = 0x0, + IncludeDeprecated = 0x1, + }; +} + +namespace EOnlineAsyncTaskState +{ + enum Type + { + NotStarted = 0x0, + InProgress = 0x1, + Done = 0x2, + Failed = 0x3, + }; +} + +enum class EViewModeIndex +{ + VMI_BrushWireframe = 0x0, + VMI_Wireframe = 0x1, + VMI_Unlit = 0x2, + VMI_Lit = 0x3, + VMI_Lit_DetailLighting = 0x4, + VMI_LightingOnly = 0x5, + VMI_LightComplexity = 0x6, + VMI_ShaderComplexity = 0x8, + VMI_LightmapDensity = 0x9, + VMI_LitLightmapDensity = 0xa, + VMI_ReflectionOverride = 0xb, + VMI_VisualizeBuffer = 0xc, + VMI_StationaryLightOverlap = 0xe, + VMI_CollisionPawn = 0xf, + VMI_CollisionVisibility = 0x10, + VMI_Max = 0x11, + VMI_Unknown = 0xff, +}; + +namespace ELeaderboardSort +{ + enum Type + { + None = 0x0, + Ascending = 0x1, + Descending = 0x2, + }; +} + +namespace EBlendModeFilter +{ + enum Type + { + None = 0x0, + OpaqueAndMasked = 0x1, + Translucent = 0x2, + All = 0x3, + }; +} + +enum class ELinearConstraintMotion +{ + LCM_Free = 0x0, + LCM_Limited = 0x1, + LCM_Locked = 0x2, + LCM_MAX = 0x3, +}; + +namespace ECastCheckedType +{ + enum Type + { + NullAllowed = 0x0, + NullChecked = 0x1, + }; +} + +enum class EBspNodeFlags +{ + NF_NotCsg = 0x1, + NF_NotVisBlocking = 0x4, + NF_BrightCorners = 0x10, + NF_IsNew = 0x20, + NF_IsFront = 0x40, + NF_IsBack = 0x80, +}; + +namespace EOnlineCachedResult +{ + enum Type + { + Success = 0x0, + NotFound = 0x1, + }; +} + +namespace EConstraintFrame +{ + enum Type + { + Frame1 = 0x0, + Frame2 = 0x1, + }; +} + +namespace EAngularDriveMode +{ + enum Type + { + SLERP = 0x0, + TwistAndSwing = 0x1, + }; +} + +namespace ELeaderboardFormat +{ + enum Type + { + Number = 0x0, + Seconds = 0x1, + Milliseconds = 0x2, + }; +} + +namespace EOnlineStatusUpdatePrivacy +{ + enum Type + { + OnlyMe = 0x0, + OnlyFriends = 0x1, + Everyone = 0x2, + }; +} + +enum class ESoundFormat +{ + SoundFormat_Invalid = 0x0, + SoundFormat_PCM = 0x1, + SoundFormat_PCMPreview = 0x2, + SoundFormat_PCMRT = 0x3, + SoundFormat_XMA2 = 0x4, + SoundFormat_XWMA = 0x5, + SoundFormat_Streaming = 0x6, +}; + +enum class EAsyncComputeBudget +{ + ELeast_0 = 0x0, + EGfxHeavy_1 = 0x1, + EBalanced_2 = 0x2, + EComputeHeavy_3 = 0x3, + EAll_4 = 0x4, +}; + +enum class EStructFlags +{ + STRUCT_NoFlags = 0x0, + STRUCT_Native = 0x1, + STRUCT_IdenticalNative = 0x2, + STRUCT_HasInstancedReference = 0x4, + STRUCT_Atomic = 0x10, + STRUCT_Immutable = 0x20, + STRUCT_AddStructReferencedObjects = 0x40, + STRUCT_RequiredAPI = 0x200, + STRUCT_NetSerializeNative = 0x400, + STRUCT_SerializeNative = 0x800, + STRUCT_CopyNative = 0x1000, + STRUCT_IsPlainOldData = 0x2000, + STRUCT_NoDestructor = 0x4000, + STRUCT_ZeroConstructor = 0x8000, + STRUCT_ExportTextItemNative = 0x10000, + STRUCT_ImportTextItemNative = 0x20000, + STRUCT_PostSerializeNative = 0x40000, + STRUCT_SerializeFromMismatchedTag = 0x80000, + STRUCT_NetDeltaSerializeNative = 0x100000, + STRUCT_Inherit = 0x14, + STRUCT_ComputedFlags = 0x1ffc42, +}; + +enum class EDecalBlendMode +{ + DBM_Translucent = 0x0, + DBM_Stain = 0x1, + DBM_Normal = 0x2, + DBM_Emissive = 0x3, + DBM_DBuffer_ColorNormalRoughness = 0x4, + DBM_DBuffer_Color = 0x5, + DBM_DBuffer_ColorNormal = 0x6, + DBM_DBuffer_ColorRoughness = 0x7, + DBM_DBuffer_Normal = 0x8, + DBM_DBuffer_NormalRoughness = 0x9, + DBM_DBuffer_Roughness = 0xa, + DBM_MAX = 0xb, +}; + +namespace ELanBeaconState +{ + enum Type + { + NotUsingLanBeacon = 0x0, + Hosting = 0x1, + Searching = 0x2, + }; +} + +enum class EMaterialDomain +{ + MD_Surface = 0x0, + MD_DeferredDecal = 0x1, + MD_LightFunction = 0x2, + MD_PostProcess = 0x3, + MD_MAX = 0x4, +}; + +namespace EOnlineSessionState +{ + enum Type + { + NoSession = 0x0, + Creating = 0x1, + Pending = 0x2, + Starting = 0x3, + InProgress = 0x4, + Ending = 0x5, + Ended = 0x6, + Destroying = 0x7, + }; +} + +enum class EMaterialDecalResponse +{ + MDR_None = 0x0, + MDR_ColorNormalRoughness = 0x1, + MDR_Color = 0x2, + MDR_ColorNormal = 0x3, + MDR_ColorRoughness = 0x4, + MDR_Normal = 0x5, + MDR_NormalRoughness = 0x6, + MDR_Roughness = 0x7, + MDR_MAX = 0x8, +}; + +namespace ETimelineDirection +{ + enum Type + { + Forward = 0x0, + Backward = 0x1, + }; +} + +namespace EDynamicForceFeedbackAction +{ + enum Type + { + Start = 0x0, + Update = 0x1, + Stop = 0x2, + }; +} + +enum class EActorMetricsType +{ + METRICS_VERTS = 0x0, + METRICS_TRIS = 0x1, + METRICS_SECTIONS = 0x2, + METRICS_MAX = 0x3, +}; + +namespace EReflectionDFAOOption +{ + enum Type + { + Default = 0x0, + UsedWithDFAO = 0x1, + NotUsedWithDFAO = 0x2, + }; +} + +namespace EShaderPrecisionModifier +{ + enum Type + { + Float = 0x0, + Half = 0x1, + Fixed = 0x2, + }; +} + +enum class EIndirectLightingCacheQuality +{ + ILCQ_Off = 0x0, + ILCQ_Point = 0x1, + ILCQ_Volume = 0x2, +}; + +namespace EOnlineDataAdvertisementType +{ + enum Type + { + DontAdvertise = 0x0, + ViaPingOnly = 0x1, + ViaOnlineService = 0x2, + ViaOnlineServiceAndPing = 0x3, + }; +} + +enum class ESamplerSourceMode +{ + SSM_FromTextureAsset = 0x0, + SSM_Wrap_WorldGroupSettings = 0x1, + SSM_Clamp_WorldGroupSettings = 0x2, +}; + +namespace EOnlineComparisonOp +{ + enum Type + { + Equals = 0x0, + NotEquals = 0x1, + GreaterThan = 0x2, + GreaterThanEquals = 0x3, + LessThan = 0x4, + LessThanEquals = 0x5, + Near = 0x6, + }; +} + +enum class EInputEvent +{ + IE_Pressed = 0x0, + IE_Released = 0x1, + IE_Repeat = 0x2, + IE_DoubleClick = 0x3, + IE_Axis = 0x4, + IE_MAX = 0x5, +}; + +enum class EMaterialTessellationMode +{ + MTM_NoTessellation = 0x0, + MTM_FlatTessellation = 0x1, + MTM_PNTriangles = 0x2, + MTM_MAX = 0x3, +}; + +namespace EAutoCenter +{ + enum Type + { + None = 0x0, + PrimaryWorkArea = 0x1, + PreferredWorkArea = 0x2, + }; +} + +enum class ELevelTick +{ + LEVELTICK_TimeOnly = 0x0, + LEVELTICK_ViewportsOnly = 0x1, + LEVELTICK_All = 0x2, + LEVELTICK_PauseTick = 0x3, +}; + +enum class EConstructTextureFlags +{ + CTF_Compress = 0x1, + CTF_DeferCompression = 0x2, + CTF_SRGB = 0x4, + CTF_AllowMips = 0x8, + CTF_ForceOneBitAlpha = 0x10, + CTF_RemapAlphaAsMasked = 0x20, + CTF_ForceOpaque = 0x40, + CTF_Default = 0x5, +}; + +namespace ESizingRule +{ + enum Type + { + FixedSize = 0x0, + Autosized = 0x1, + UserSized = 0x2, + }; +} + +enum class ETickingGroup +{ + TG_PrePhysics = 0x0, + TG_StartPhysics = 0x1, + TG_DuringPhysics = 0x2, + TG_EndPhysics = 0x3, + TG_PreCloth = 0x4, + TG_StartCloth = 0x5, + TG_EndCloth = 0x6, + TG_PostPhysics = 0x7, + TG_PostUpdateWork = 0x8, + TG_NewlySpawned = 0x9, + TG_MAX = 0xa, +}; + +enum class ECppProperty +{ + EC_CppProperty = 0x0, +}; + +enum class ELightInteractionType +{ + LIT_CachedIrrelevant = 0x0, + LIT_CachedLightMap = 0x1, + LIT_Dynamic = 0x2, + LIT_CachedSignedDistanceFieldShadowMap2D = 0x3, +}; + +enum class ECanCreateConnectionResponse +{ + CONNECT_RESPONSE_MAKE = 0x0, + CONNECT_RESPONSE_DISALLOW = 0x1, + CONNECT_RESPONSE_BREAK_OTHERS_A = 0x2, + CONNECT_RESPONSE_BREAK_OTHERS_B = 0x3, + CONNECT_RESPONSE_BREAK_OTHERS_AB = 0x4, + CONNECT_RESPONSE_MAKE_WITH_CONVERSION_NODE = 0x5, + CONNECT_RESPONSE_MAX = 0x6, +}; + +enum class ELightingBuildQuality +{ + Quality_Preview = 0x0, + Quality_Medium = 0x1, + Quality_High = 0x2, + Quality_Production = 0x3, + Quality_MAX = 0x4, +}; + +enum class ETriangleSortOption +{ + TRISORT_None = 0x0, + TRISORT_CenterRadialDistance = 0x1, + TRISORT_Random = 0x2, + TRISORT_MergeContiguous = 0x3, + TRISORT_Custom = 0x4, + TRISORT_CustomLeftRight = 0x5, + TRISORT_MAX = 0x6, +}; + +namespace EAcceptConnection +{ + enum Type + { + Reject = 0x0, + Accept = 0x1, + Ignore = 0x2, + }; +} + +namespace ENamedThreads +{ + enum Type + { + UnusedAnchor = 0xff, + RHIThread = 0x0, + AudioThread = 0x1, + GameThread = 0x2, + ActualRenderingThread = 0x3, + }; +} + +enum class EStreamingVolumeUsage +{ + SVB_Loading = 0x0, + SVB_LoadingAndVisibility = 0x1, + SVB_VisibilityBlockingOnLoad = 0x2, + SVB_BlockingOnLoad = 0x3, + SVB_LoadingNotVisible = 0x4, + SVB_MAX = 0x5, +}; + +enum class ELightMapFlags +{ + LMF_None = 0x0, + LMF_Streamed = 0x1, + LMF_LQLightmap = 0x2, +}; + +namespace EFrictionCombineMode +{ + enum Type + { + Average = 0x0, + Min = 0x1, + Multiply = 0x2, + Max = 0x3, + }; +} + +namespace ESettingsLockedAxis +{ + enum Type + { + None = 0x0, + X = 0x1, + Y = 0x2, + Z = 0x3, + }; +} + +namespace ESlateColorStylingMode +{ + enum Type + { + UseColor_Specified = 0x0, + UseColor_Specified_Link = 0x1, + UseColor_Foreground = 0x2, + UseColor_Foreground_Subdued = 0x3, + }; +} + +enum class EMicroTransactionResult +{ + MTR_Succeeded = 0x0, + MTR_Failed = 0x1, + MTR_Canceled = 0x2, + MTR_RestoredFromServer = 0x3, + MTR_MAX = 0x4, +}; + +namespace ESplitScreenType +{ + enum Type + { + None = 0x0, + TwoPlayer_Horizontal = 0x1, + TwoPlayer_Vertical = 0x2, + ThreePlayer_FavorTop = 0x3, + ThreePlayer_FavorBottom = 0x4, + FourPlayer = 0x5, + SplitTypeCount = 0x6, + }; +} + +enum class ESafeZoneType +{ + eSZ_TOP = 0x0, + eSZ_BOTTOM = 0x1, + eSZ_LEFT = 0x2, + eSZ_RIGHT = 0x3, + eSZ_MAX = 0x4, +}; + +enum class ERunAttributes +{ + None = 0x0, + SupportsText = 0x1, +}; + +enum class SkeletalMeshOptimizationImportance +{ + SMOI_Off = 0x0, + SMOI_Lowest = 0x1, + SMOI_Low = 0x2, + SMOI_Normal = 0x3, + SMOI_High = 0x4, + SMOI_Highest = 0x5, + SMOI_MAX = 0x6, +}; + +enum class EDistanceFieldShadowingType +{ + DFS_DirectionalLightScatterTileCulling = 0x0, + DFS_DirectionalLightTiledCulling = 0x1, + DFS_PointLightTiledCulling = 0x2, +}; + +enum class EAnimCurveFlags +{ + ACF_DrivesMorphTarget = 0x1, + ACF_TriggerEvent = 0x2, + ACF_Editable = 0x4, + ACF_DrivesMaterial = 0x8, + ACF_Metadata = 0x10, + ACF_DefaultCurve = 0x6, +}; + +enum class SkeletalMeshOptimizationType +{ + SMOT_NumOfTriangles = 0x0, + SMOT_MaxDeviation = 0x1, + SMOT_MAX = 0x2, +}; + +enum class ECloudStorageDelegate +{ + CSD_KeyValueReadComplete = 0x0, + CSD_KeyValueWriteComplete = 0x1, + CSD_ValueChanged = 0x2, + CSD_DocumentQueryComplete = 0x3, + CSD_DocumentReadComplete = 0x4, + CSD_DocumentWriteComplete = 0x5, + CSD_DocumentConflictDetected = 0x6, + CSD_MAX = 0x7, +}; + +enum class EMaterialValueType +{ + MCT_Float1 = 0x1, + MCT_Float2 = 0x2, + MCT_Float3 = 0x4, + MCT_Float4 = 0x8, + MCT_Float = 0xf, + MCT_Texture2D = 0x10, + MCT_TextureCube = 0x20, + MCT_Texture = 0x30, + MCT_StaticBool = 0x40, + MCT_Unknown = 0x80, + MCT_MaterialAttributes = 0x100, +}; + +enum class EChannelType +{ + CHTYPE_None = 0x0, + CHTYPE_Control = 0x1, + CHTYPE_Actor = 0x2, + CHTYPE_File = 0x3, + CHTYPE_Voice = 0x4, + CHTYPE_ClassInfo = 0x5, + CHTYPE_BattlEye = 0x6, + CHTYPE_MAX = 0x8, +}; + +enum class ESleepFamily +{ + SF_Normal = 0x0, + SF_Sensitive = 0x1, + SF_MAX = 0x2, +}; + +enum class ECsgOper +{ + CSG_Active = 0x0, + CSG_Add = 0x1, + CSG_Subtract = 0x2, + CSG_Intersect = 0x3, + CSG_Deintersect = 0x4, + CSG_None = 0x5, + CSG_MAX = 0x6, +}; + +enum class EBrushType +{ + Brush_Default = 0x0, + Brush_Add = 0x1, + Brush_Subtract = 0x2, + Brush_MAX = 0x3, +}; + +enum class ETraceTypeQuery +{ + TraceTypeQuery1 = 0x0, + TraceTypeQuery2 = 0x1, + TraceTypeQuery3 = 0x2, + TraceTypeQuery4 = 0x3, + TraceTypeQuery5 = 0x4, + TraceTypeQuery6 = 0x5, + TraceTypeQuery7 = 0x6, + TraceTypeQuery8 = 0x7, + TraceTypeQuery9 = 0x8, + TraceTypeQuery10 = 0x9, + TraceTypeQuery11 = 0xa, + TraceTypeQuery12 = 0xb, + TraceTypeQuery13 = 0xc, + TraceTypeQuery14 = 0xd, + TraceTypeQuery15 = 0xe, + TraceTypeQuery16 = 0xf, + TraceTypeQuery17 = 0x10, + TraceTypeQuery18 = 0x11, + TraceTypeQuery19 = 0x12, + TraceTypeQuery20 = 0x13, + TraceTypeQuery21 = 0x14, + TraceTypeQuery22 = 0x15, + TraceTypeQuery23 = 0x16, + TraceTypeQuery24 = 0x17, + TraceTypeQuery25 = 0x18, + TraceTypeQuery26 = 0x19, + TraceTypeQuery27 = 0x1a, + TraceTypeQuery28 = 0x1b, + TraceTypeQuery29 = 0x1c, + TraceTypeQuery30 = 0x1d, + TraceTypeQuery31 = 0x1e, + TraceTypeQuery32 = 0x1f, + TraceTypeQuery_MAX = 0x20, +}; + +enum class EPropertyPortFlags +{ + PPF_None = 0x0, + PPF_Localized = 0x1, + PPF_Delimited = 0x2, + PPF_CheckReferences = 0x4, + PPF_ExportsNotFullyQualified = 0x8, + PPF_AttemptNonQualifiedSearch = 0x10, + PPF_RestrictImportTypes = 0x20, + PPF_LocalizedOnly = 0x80, + PPF_SubobjectsOnly = 0x100, + PPF_DeepComparison = 0x200, + PPF_DeepCompareInstances = 0x400, + PPF_Copy = 0x800, + PPF_Duplicate = 0x1000, + PPF_SimpleObjectText = 0x2000, + PPF_ParsingDefaultProperties = 0x8000, + PPF_IncludeTransient = 0x20000, + PPF_DeltaComparison = 0x40000, + PPF_PropertyWindow = 0x80000, + PPF_NoInternalArcheType = 0x100000, + PPF_DebugDump = 0x200000, + PPF_DuplicateForPIE = 0x400000, + PPF_SeparateDeclare = 0x800000, + PPF_SeparateDefine = 0x1000000, + PPF_BlueprintDebugView = 0x2000000, + PPF_ConsoleVariable = 0x4000000, +}; + +enum class EPlatformInterfaceDataType +{ + PIDT_None = 0x0, + PIDT_Int = 0x1, + PIDT_Float = 0x2, + PIDT_String = 0x3, + PIDT_Object = 0x4, + PIDT_Custom = 0x5, + PIDT_MAX = 0x6, +}; + +namespace ESuggestProjVelocityTraceOption +{ + enum Type + { + DoNotTrace = 0x0, + TraceFullPath = 0x1, + OnlyTraceWhileAsceding = 0x2, + }; +} + +namespace EComponentMobility +{ + enum Type + { + Static = 0x0, + Stationary = 0x1, + Movable = 0x2, + }; +} + +enum class EPhysicsSceneType +{ + PST_Sync = 0x0, + PST_Cloth = 0x1, + PST_Async = 0x2, + PST_MAX = 0x3, +}; + +enum class ECollisionResponse +{ + ECR_Ignore = 0x0, + ECR_Overlap = 0x1, + ECR_Block = 0x2, + ECR_MAX = 0x3, +}; + +namespace ESteamSession +{ + enum Type + { + None = 0x0, + LobbySession = 0x1, + AdvertisedSessionHost = 0x2, + AdvertisedSessionClient = 0x3, + LANSession = 0x4, + }; +} + +enum class EFilterInterpolationType +{ + BSIT_Average = 0x0, + BSIT_Linear = 0x1, + BSIT_Cubic = 0x2, + BSIT_MAX = 0x3, +}; + +namespace EAnimGroupRole +{ + enum Type + { + CanBeLeader = 0x0, + AlwaysFollower = 0x1, + AlwaysLeader = 0x2, + }; +} + +enum class EInputConsumeOptions +{ + ICO_ConsumeAll = 0x0, + ICO_ConsumeBoundKeys = 0x1, + ICO_ConsumeNone = 0x2, + ICO_MAX = 0x3, +}; + +enum class EImportanceLevel +{ + IL_Off = 0x0, + IL_Lowest = 0x1, + IL_Low = 0x2, + IL_Normal = 0x3, + IL_High = 0x4, + IL_Highest = 0x5, + TEMP_BROKEN2 = 0x6, + EImportanceLevel_MAX = 0x7, +}; + +enum class EPropertyType +{ + CPT_None = 0x0, + CPT_Byte = 0x1, + CPT_UInt16 = 0x2, + CPT_UInt32 = 0x3, + CPT_UInt64 = 0x4, + CPT_Int8 = 0x5, + CPT_Int16 = 0x6, + CPT_Int = 0x7, + CPT_Int64 = 0x8, + CPT_Bool = 0x9, + CPT_Bool8 = 0xa, + CPT_Bool16 = 0xb, + CPT_Bool32 = 0xc, + CPT_Bool64 = 0xd, + CPT_Float = 0xe, + CPT_ObjectReference = 0xf, + CPT_Name = 0x10, + CPT_Delegate = 0x11, + CPT_Interface = 0x12, + CPT_Range = 0x13, + CPT_Struct = 0x14, + CPT_Vector = 0x15, + CPT_Rotation = 0x16, + CPT_String = 0x17, + CPT_Text = 0x18, + CPT_MulticastDelegate = 0x19, + CPT_WeakObjectReference = 0x1a, + CPT_LazyObjectReference = 0x1b, + CPT_AssetObjectReference = 0x1c, + CPT_Double = 0x1d, + CPT_MAX = 0x1e, +}; + +namespace EWorldType +{ + enum Type + { + None = 0x0, + Game = 0x1, + Editor = 0x2, + PIE = 0x3, + Preview = 0x4, + Inactive = 0x5, + }; +} + +enum class FForceFeedbackChannelType +{ + FF_CHANNEL_LEFT_LARGE = 0x0, + FF_CHANNEL_LEFT_SMALL = 0x1, + FF_CHANNEL_RIGHT_LARGE = 0x2, + FF_CHANNEL_RIGHT_SMALL = 0x3, +}; + +namespace EControllerAnalogStick +{ + enum Type + { + CAS_LeftStick = 0x0, + CAS_RightStick = 0x1, + CAS_MAX = 0x2, + }; +} + +namespace ESlateBrushDrawType +{ + enum Type + { + NoDrawType = 0x0, + Box = 0x1, + Border = 0x2, + Image = 0x3, + }; +} + +namespace EVertexColorViewMode +{ + enum Type + { + Invalid = 0x0, + Color = 0x1, + Alpha = 0x2, + Red = 0x3, + Green = 0x4, + Blue = 0x5, + }; +} + +enum class EFilterShape +{ + EFS_Horiz = 0x0, + EFS_Vert = 0x1, +}; + +enum class ELoadFlags +{ + LOAD_None = 0x0, + LOAD_SeekFree = 0x1, + LOAD_NoWarn = 0x2, + LOAD_Verify = 0x10, + LOAD_AllowDll = 0x20, + LOAD_NoVerify = 0x80, + LOAD_Quiet = 0x2000, + LOAD_FindIfFail = 0x4000, + LOAD_MemoryReader = 0x8000, + LOAD_NoRedirects = 0x10000, + LOAD_ForDiff = 0x20000, + LOAD_NoSeekFreeLinkerDetatch = 0x40000, + LOAD_PackageForPIE = 0x80000, +}; + +enum class ETranslucencyVolumeCascade +{ + TVC_Inner = 0x0, + TVC_Outer = 0x1, + TVC_MAX = 0x2, +}; + +enum class ESoundDistanceModel +{ + ATTENUATION_Linear = 0x0, + ATTENUATION_Logarithmic = 0x1, + ATTENUATION_Inverse = 0x2, + ATTENUATION_LogReverse = 0x3, + ATTENUATION_NaturalSound = 0x4, + ATTENUATION_MAX = 0x5, +}; + +namespace ETouchIndex +{ + enum Type + { + Touch1 = 0x0, + Touch2 = 0x1, + Touch3 = 0x2, + Touch4 = 0x3, + Touch5 = 0x4, + Touch6 = 0x5, + Touch7 = 0x6, + Touch8 = 0x7, + Touch9 = 0x8, + Touch10 = 0x9, + }; +} + +namespace EComponentSocketType +{ + enum Type + { + Invalid = 0x0, + Bone = 0x1, + Socket = 0x2, + }; +} + +enum class EAdManagerDelegate +{ + AMD_ClickedBanner = 0x0, + AMD_UserClosedAd = 0x1, + AMD_MAX = 0x2, +}; + +enum class ERichCurveTangentWeightMode +{ + RCTWM_WeightedNone = 0x0, + RCTWM_WeightedArrive = 0x1, + RCTWM_WeightedLeave = 0x2, + RCTWM_WeightedBoth = 0x3, +}; + +namespace EConsoleForGamepadLabels +{ + enum Type + { + None = 0x0, + XBoxOne = 0x1, + PS4 = 0x2, + }; +} + +namespace EPhysxUserDataType +{ + enum Type + { + Invalid = 0x0, + BodyInstance = 0x1, + PhysicalMaterial = 0x2, + PhysScene = 0x3, + ConstraintInstance = 0x4, + PrimitiveComponent = 0x5, + DestructibleChunk = 0x6, + }; +} + +namespace EButtonClickMethod +{ + enum Type + { + DownAndUp = 0x0, + MouseDown = 0x1, + MouseUp = 0x2, + }; +} + +enum class ECompilerFlags +{ + CFLAG_PreferFlowControl = 0x0, + CFLAG_Debug = 0x1, + CFLAG_AvoidFlowControl = 0x2, + CFLAG_SkipValidation = 0x3, + CFLAG_StandardOptimization = 0x4, + CFLAG_OnChip = 0x5, +}; + +enum class EInternal +{ + EC_Internal = 0x0, +}; + +namespace EFocusMoveDirection +{ + enum Type + { + Next = 0x0, + Previous = 0x1, + }; +} + +namespace ENavigationLockReason +{ + enum Type + { + Unknown = 0x1, + AllowUnregister = 0x2, + MaterialUpdate = 0x4, + LightingUpdate = 0x8, + ContinuousEditorMove = 0x10, + }; +} + +enum class EHorizontalAlignment +{ + HAlign_Fill = 0x0, + HAlign_Left = 0x1, + HAlign_Center = 0x2, + HAlign_Right = 0x3, +}; + +enum class EMenuPlacement +{ + MenuPlacement_BelowAnchor = 0x0, + MenuPlacement_ComboBox = 0x1, + MenuPlacement_ComboBoxRight = 0x2, + MenuPlacement_MenuRight = 0x3, + MenuPlacement_AboveAnchor = 0x4, +}; + +enum class EOrientation +{ + Orient_Horizontal = 0x0, + Orient_Vertical = 0x1, +}; + +enum class EScrollDirection +{ + Scroll_Down = 0x0, + Scroll_Up = 0x1, +}; + +enum class EAngularConstraintMotion +{ + ACM_Free = 0x0, + ACM_Limited = 0x1, + ACM_Locked = 0x2, + ACM_MAX = 0x3, +}; + +namespace ETextCommit +{ + enum Type + { + Default = 0x0, + OnEnter = 0x1, + OnUserMovedFocus = 0x2, + OnCleared = 0x3, + }; +} + +enum class EFontImportCharacterSet +{ + FontICS_Default = 0x0, + FontICS_Ansi = 0x1, + FontICS_Symbol = 0x2, + FontICS_MAX = 0x3, +}; + +enum class EShowFlagGroup +{ + SFG_Normal = 0x0, + SFG_Advanced = 0x1, + SFG_PostProcess = 0x2, + SFG_CollisionModes = 0x3, + SFG_Developer = 0x4, + SFG_Visualize = 0x5, + SFG_LightingComponents = 0x6, + SFG_LightingFeatures = 0x7, + SFG_Hidden = 0x8, + SFG_Max = 0x9, +}; + +namespace ENodeAdvancedPins +{ + enum Type + { + NoPins = 0x0, + Shown = 0x1, + Hidden = 0x2, + }; +} + +namespace ENavigationShapeType +{ + enum Type + { + Unknown = 0x0, + Cylinder = 0x1, + Box = 0x2, + Convex = 0x3, + }; +} + +enum class TextureFilter +{ + TF_Nearest = 0x0, + TF_Bilinear = 0x1, + TF_Trilinear = 0x2, + TF_Default = 0x3, + TF_MAX = 0x4, +}; + +enum class EShowFlagInitMode +{ + ESFIM_Game = 0x0, + ESFIM_Editor = 0x1, + ESFIM_All0 = 0x2, +}; + +namespace UE4 +{ + enum ELoadConfigPropagationFlags + { + LCPF_None = 0x0, + LCPF_ReadParentSections = 0x1, + LCPF_PropagateToChildDefaultObjects = 0x2, + LCPF_PropagateToInstances = 0x4, + LCPF_ReloadingConfigData = 0x8, + LCPF_PersistentFlags = 0x8, + }; +} + +enum class TextureAddress +{ + TA_Wrap = 0x0, + TA_Clamp = 0x1, + TA_Mirror = 0x2, + TA_MAX = 0x3, +}; + +namespace EIndexBufferStride +{ + enum Type + { + Force16Bit = 0x1, + Force32Bit = 0x2, + AutoDetect = 0x3, + }; +} + +enum class ERadialImpulseFalloff +{ + RIF_Constant = 0x0, + RIF_Linear = 0x1, + RIF_MAX = 0x2, +}; + +enum class ETextureSourceFormat +{ + TSF_Invalid = 0x0, + TSF_G8 = 0x1, + TSF_BGRA8 = 0x2, + TSF_BGRE8 = 0x3, + TSF_RGBA16 = 0x4, + TSF_RGBA16F = 0x5, + TSF_RGBA8 = 0x6, + TSF_RGBE8 = 0x7, + TSF_MAX = 0x8, +}; + +enum class ESkyLightSourceType +{ + SLS_CapturedScene = 0x0, + SLS_SpecifiedCubemap = 0x1, + SLS_MAX = 0x2, +}; + +enum class EVisibilityAggressiveness +{ + VIS_LeastAggressive = 0x0, + VIS_ModeratelyAggressive = 0x1, + VIS_MostAggressive = 0x2, + VIS_Max = 0x3, +}; + +enum class ETimelineSigType +{ + ETS_EventSignature = 0x0, + ETS_FloatSignature = 0x1, + ETS_VectorSignature = 0x2, + ETS_LinearColorSignature = 0x3, + ETS_InvalidSignature = 0x4, + ETS_MAX = 0x5, +}; + +namespace ECollisionEnabled +{ + enum Type + { + NoCollision = 0x0, + QueryOnly = 0x1, + QueryAndPhysics = 0x2, + }; +} + +namespace EConnectionType +{ + enum Type + { + OldNet = 0x0, + WrappedNet = 0x1, + }; +} + +enum class EBulkDataFlags +{ + BULKDATA_None = 0x0, + BULKDATA_PayloadAtEndOfFile = 0x1, + BULKDATA_SerializeCompressedZLIB = 0x2, + BULKDATA_ForceSingleElementSerialization = 0x4, + BULKDATA_SingleUse = 0x8, + BULKDATA_Unused = 0x20, + BULKDATA_ForceInlinePayload = 0x40, + BULKDATA_StoreInSeparateFile = 0x80, + BULKDATA_SerializeCompressed = 0x2, +}; + +namespace EClientLoginState +{ + enum Type + { + Invalid = 0x0, + LoggingIn = 0x1, + Welcomed = 0x2, + }; +} + +namespace EMouseCaptureMode +{ + enum Type + { + NoCapture = 0x0, + CapturePermanently = 0x1, + CaptureDuringMouseDown = 0x2, + }; +} + +enum class EBulkDataLockStatus +{ + LOCKSTATUS_Unlocked = 0x0, + LOCKSTATUS_ReadOnlyLock = 0x1, + LOCKSTATUS_ReadWriteLock = 0x2, +}; + +namespace ERigidBodyFlags +{ + enum Type + { + None = 0x0, + Sleeping = 0x1, + NeedsUpdate = 0x2, + }; +} + +enum class EDynamicPrimitiveType +{ + DPT_Level = 0x0, + DPT_Spawned = 0x1, + DPT_MAX = 0x2, +}; + +enum class ERemoveStreamingViews +{ + RemoveStreamingViews_Normal = 0x0, + RemoveStreamingViews_All = 0x1, +}; + +namespace ECameraAnimPlaySpace +{ + enum Type + { + CameraLocal = 0x0, + World = 0x1, + UserDefined = 0x2, + }; +} + +enum class EBlendableLocation +{ + BL_AfterTonemapping = 0x0, + BL_BeforeTonemapping = 0x1, + BL_BeforeTranslucency = 0x2, + BL_MAX = 0x3, +}; + +enum class EDistributionVectorMirrorFlags +{ + EDVMF_Same = 0x0, + EDVMF_Different = 0x1, + EDVMF_Mirror = 0x2, + EDVMF_MAX = 0x3, +}; + +namespace EMessageScope +{ + enum Type + { + Thread = 0x0, + Process = 0x1, + Network = 0x2, + All = 0x3, + }; +} + +enum class ENormalMode +{ + NM_PreserveSmoothingGroups = 0x0, + NM_RecalculateNormals = 0x1, + NM_RecalculateNormalsSmooth = 0x2, + NM_RecalculateNormalsHard = 0x3, + TEMP_BROKEN = 0x4, + ENormalMode_MAX = 0x5, +}; + +namespace ESlateBrushTileType +{ + enum Type + { + NoTile = 0x0, + Horizontal = 0x1, + Vertical = 0x2, + Both = 0x3, + }; +} + +namespace ELockedAxis +{ + enum Type + { + Default = 0x0, + X = 0x1, + Y = 0x2, + Z = 0x3, + Custom = 0x4, + None = 0x5, + }; +} + +enum class EActorLists +{ + AL_PLAYERS = 0x0, + AL_PLAYERSTATES = 0x1, + AL_FLOATINGHUD = 0x2, + AL_UNSTASISEDACTORS = 0x3, + AL_NPC = 0x4, + AL_NPC_ACTIVE = 0x5, + AL_FORCEDHUD = 0x6, + AL_NPCZONEMANAGERS = 0x7, + AL_PLAYERCONTROLLERS = 0x8, + AL_BEDS = 0x9, + AL_BIOMEZONEVOLUMES = 0xa, + AL_NPC_DEAD = 0xb, + AL_DAYCYCLEAMBIENTSOUNDS = 0xc, + AL_STRUCTURESCLIENT = 0xd, + AL_STRUCTUREPREVENTIONVOLUMES = 0xe, + AL_TRANSPONDERS = 0xf, + AL_CUSTOMACTORLISTS = 0x10, + AL_BLOCKINGVOLUMES = 0x11, + AL_AMBIENTSOUNDS = 0x12, + AL_CONNECTEDSHOOTERCHARACTERS = 0x13, + AL_EXPLORERNOTECHESTS = 0x14, + AL_SUPPLYCRATEVOLUMES = 0x15, + AL_TAMED_DINOS = 0x16, + AL_NPCZONEMANAGERS_LEVELSTREAM = 0x17, + AL_TILEVOLUMES = 0x18, + AL_DIRECTIONAL_LIGHTS = 0x19, + AL_MISSIONS = 0x1a, + AL_MISSION_DISPATCHERS = 0x1b, + AL_THROTTLEDTICKS = 0x1c, + AL_PLAYER_STARTS = 0x1d, + AL_MISSION_DISPATCHER_POINTS = 0x1e, + AL_UNDERMESH_VOLUMES = 0x1f, + AL_PERFORMANCETHROTTLEDTICKS = 0x20, + MAX_ACTORLISTS = 0x21, +}; + +enum class EAntiAliasingMethod +{ + AAM_None = 0x0, + AAM_FXAA = 0x1, + AAM_TemporalAA = 0x2, + AAM_MAX = 0x3, +}; + +enum class EPixelFormat +{ + PF_Unknown = 0x0, + PF_A32B32G32R32F = 0x1, + PF_B8G8R8A8 = 0x2, + PF_G8 = 0x3, + PF_G16 = 0x4, + PF_DXT1 = 0x5, + PF_DXT3 = 0x6, + PF_DXT5 = 0x7, + PF_UYVY = 0x8, + PF_FloatRGB = 0x9, + PF_FloatRGBA = 0xa, + PF_DepthStencil = 0xb, + PF_ShadowDepth = 0xc, + PF_R32_FLOAT = 0xd, + PF_G16R16 = 0xe, + PF_G16R16F = 0xf, + PF_G16R16F_FILTER = 0x10, + PF_G32R32F = 0x11, + PF_A2B10G10R10 = 0x12, + PF_A16B16G16R16 = 0x13, + PF_D24 = 0x14, + PF_R16F = 0x15, + PF_R16F_FILTER = 0x16, + PF_BC5 = 0x17, + PF_V8U8 = 0x18, + PF_A1 = 0x19, + PF_FloatR11G11B10 = 0x1a, + PF_A8 = 0x1b, + PF_R32_UINT = 0x1c, + PF_R32_SINT = 0x1d, + PF_PVRTC2 = 0x1e, + PF_PVRTC4 = 0x1f, + PF_R16_UINT = 0x20, + PF_R16_SINT = 0x21, + PF_R16G16B16A16_UINT = 0x22, + PF_R16G16B16A16_SINT = 0x23, + PF_R5G6B5_UNORM = 0x24, + PF_R8G8B8A8 = 0x25, + PF_A8R8G8B8 = 0x26, + PF_BC4 = 0x27, + PF_R8G8 = 0x28, + PF_ATC_RGB = 0x29, + PF_ATC_RGBA_E = 0x2a, + PF_ATC_RGBA_I = 0x2b, + PF_X24_G8 = 0x2c, + PF_ETC1 = 0x2d, + PF_ETC2_RGB = 0x2e, + PF_ETC2_RGBA = 0x2f, + PF_R32G32B32A32_UINT = 0x30, + PF_R16G16_UINT = 0x31, + PF_ASTC_4x4 = 0x32, + PF_ASTC_6x6 = 0x33, + PF_ASTC_8x8 = 0x34, + PF_ASTC_10x10 = 0x35, + PF_ASTC_12x12 = 0x36, + MAX = 0x37, +}; + +namespace FNavigationSystem +{ + enum ECreateIfEmpty + { + Invalid = 0xff, + DontCreate = 0x0, + Create = 0x1, + }; +} + +namespace ECameraAlphaBlendMode +{ + enum Type + { + CABM_Linear = 0x0, + CABM_Cubic = 0x1, + }; +} + +namespace ENavigationDirtyFlag +{ + enum Type + { + Geometry = 0x1, + DynamicModifier = 0x2, + UseAgentHeight = 0x4, + All = 0x3, + }; +} + +namespace EActorListsBP +{ + enum Type + { + AL_PLAYERS = 0x0, + AL_PLAYERSTATES = 0x1, + AL_FLOATINGHUD = 0x2, + AL_UNSTASISEDACTORS = 0x3, + AL_NPC = 0x4, + AL_NPC_ACTIVE = 0x5, + AL_FORCEDHUD = 0x6, + AL_NPCZONEMANAGERS = 0x7, + AL_PLAYERCONTROLLERS = 0x8, + AL_BEDS = 0x9, + AL_BIOMEZONEVOLUMES = 0xa, + AL_NPC_DEAD = 0xb, + AL_DAYCYCLEAMBIENTSOUNDS = 0xc, + AL_STRUCTURESCLIENT = 0xd, + AL_STRUCTUREPREVENTIONVOLUMES = 0xe, + AL_TRANSPONDERS = 0xf, + AL_CUSTOMACTORLISTS = 0x10, + AL_BLOCKINGVOLUMES = 0x11, + AL_AMBIENTSOUNDS = 0x12, + AL_CONNECTEDSHOOTERCHARACTERS = 0x13, + AL_EXPLORERNOTECHESTS = 0x14, + AL_SUPPLYCRATEVOLUMES = 0x15, + AL_TAMED_DINOS = 0x16, + MAX = 0x17, + }; +} + +namespace EModType +{ + enum Type + { + Unknown = 0x0, + Game = 0x1, + Map = 0x2, + TotalConversion = 0x3, + IslandExtension = 0x4, + }; +} + +enum class ETextureRenderTargetFormat +{ + RTF_R8 = 0x0, + RTF_RG8 = 0x1, + RTF_RGBA8 = 0x2, + RTF_R16f = 0x3, + RTF_RG16f = 0x4, + RTF_RGBA16f = 0x5, + RTF_R32f = 0x6, + RTF_RG32f = 0x7, + RTF_RGBA32f = 0x8, +}; + +namespace ECurveEaseFunction +{ + enum Type + { + Linear = 0x0, + QuadIn = 0x1, + QuadOut = 0x2, + QuadInOut = 0x3, + CubicIn = 0x4, + CubicOut = 0x5, + CubicInOut = 0x6, + }; +} + +enum class EEdGraphPinDirection +{ + EGPD_Input = 0x0, + EGPD_Output = 0x1, + EGPD_MAX = 0x2, +}; + +namespace ENodeTitleType +{ + enum Type + { + FullTitle = 0x0, + ListView = 0x1, + EditableTitle = 0x2, + MenuTitle = 0x3, + MAX_TitleTypes = 0x4, + }; +} + +namespace ECollisionShape +{ + enum Type + { + Line = 0x0, + Box = 0x1, + Sphere = 0x2, + Capsule = 0x3, + }; +} + +enum class EShaderFrequency +{ + SF_Vertex = 0x0, + SF_Hull = 0x1, + SF_Domain = 0x2, + SF_Pixel = 0x3, + SF_Geometry = 0x4, + SF_Compute = 0x5, + SF_NumFrequencies = 0x6, + SF_NumBits = 0x3, +}; + +enum class ESceneCaptureSource +{ + SCS_SceneColorHDR = 0x0, + SCS_FinalColorLDR = 0x1, +}; + +enum class EFontCacheType +{ + Offline = 0x0, + Runtime = 0x1, +}; + +enum class ERenderTargetStoreAction +{ + ENoAction = 0x0, + EStore = 0x1, + EMultisampleResolve = 0x2, +}; + +namespace EDataDisplay +{ + enum Type + { + MISSION_INFO = 0x0, + LEADERBOARDS = 0x1, + }; +} + +namespace EBoolExecResult +{ + enum Type + { + Success = 0x0, + Failed = 0x1, + }; +} + +namespace Concurrency +{ + enum SchedulerType + { + ThreadScheduler = 0x0, + }; +} + +namespace FWindowActivateEvent +{ + enum EActivationType + { + EA_Activate = 0x0, + EA_ActivateByMouse = 0x1, + EA_Deactivate = 0x2, + }; +} + +enum class EPrimitiveTopologyType +{ + Triangle = 0x0, + Patch = 0x1, + Line = 0x2, + Point = 0x3, + Quad = 0x4, + Num = 0x5, + NumBits = 0x3, +}; + +namespace EStencilAlliance +{ + enum Type + { + None = 0x0, + Friendly = 0x1, + NPC = 0x2, + NPCFleeing = 0x3, + Hostile = 0x4, + Ally = 0x5, + Element = 0x6, + }; +} + +namespace EChunkPriority +{ + enum Type + { + Immediate = 0x0, + High = 0x1, + Low = 0x2, + }; +} + +namespace ETabActivationCause +{ + enum Type + { + UserClickedOnTab = 0x0, + SetDirectly = 0x1, + }; +} + +namespace FKeyDetails +{ + enum EKeyFlags + { + GamepadKey = 0x1, + MouseButton = 0x2, + ModifierKey = 0x4, + NotBlueprintBindableKey = 0x8, + FloatAxis = 0x10, + VectorAxis = 0x20, + NoFlags = 0x0, + }; +} + +namespace FSlateDrawElement +{ + enum EElementType + { + ET_Box = 0x0, + ET_DebugQuad = 0x1, + ET_Text = 0x2, + ET_Spline = 0x3, + ET_Line = 0x4, + ET_Gradient = 0x5, + ET_Viewport = 0x6, + ET_Border = 0x7, + ET_Custom = 0x8, + }; +} + +namespace EAIOptionFlag +{ + enum Type + { + Default = 0x0, + Enable = 0x1, + Disable = 0x2, + MAX = 0x3, + }; +} + +namespace EPrimalItemMessage +{ + enum Type + { + Broken = 0x0, + Repaired = 0x1, + MAX = 0x2, + }; +} + +namespace FEngineShowFlags +{ + enum EShowFlag + { + SF_PostProcessing = 0x0, + SF_Bloom = 0x1, + SF_Tonemapper = 0x2, + SF_AntiAliasing = 0x3, + SF_TemporalAA = 0x4, + SF_AmbientCubemap = 0x5, + SF_EyeAdaptation = 0x6, + SF_VisualizeHDR = 0x7, + SF_LensFlares = 0x8, + SF_GlobalIllumination = 0x9, + SF_Vignette = 0xa, + SF_Grain = 0xb, + SF_AmbientOcclusion = 0xc, + SF_Decals = 0xd, + SF_CameraImperfections = 0xe, + SF_OnScreenDebug = 0xf, + SF_OverrideDiffuseAndSpecular = 0x10, + SF_ReflectionOverride = 0x11, + SF_VisualizeBuffer = 0x12, + SF_DirectLighting = 0x13, + SF_DirectionalLights = 0x14, + SF_PointLights = 0x15, + SF_SpotLights = 0x16, + SF_ColorGrading = 0x17, + SF_VectorFields = 0x18, + SF_DepthOfField = 0x19, + SF_ShadowsFromEditorHiddenActors = 0x1a, + SF_GBufferHints = 0x1b, + SF_MotionBlur = 0x1c, + SF_CompositeEditorPrimitives = 0x1d, + SF_TestImage = 0x1e, + SF_VisualizeDOF = 0x1f, + SF_VisualizeAdaptiveDOF = 0x20, + SF_VertexColors = 0x21, + SF_Refraction = 0x22, + SF_CameraInterpolation = 0x23, + SF_SceneColorFringe = 0x24, + SF_SeparateTranslucency = 0x25, + SF_ScreenPercentage = 0x26, + SF_VisualizeMotionBlur = 0x27, + SF_ReflectionEnvironment = 0x28, + SF_VisualizeOutOfBoundsPixels = 0x29, + SF_Diffuse = 0x2a, + SF_Specular = 0x2b, + SF_SelectionOutline = 0x2c, + SF_ScreenSpaceReflections = 0x2d, + SF_SubsurfaceScattering = 0x2e, + SF_VisualizeSSS = 0x2f, + SF_IndirectLightingCache = 0x30, + SF_DebugAI = 0x31, + SF_VisLog = 0x32, + SF_Navigation = 0x33, + SF_GameplayDebug = 0x34, + SF_TexturedLightProfiles = 0x35, + SF_LightFunctions = 0x36, + SF_Tessellation = 0x37, + SF_InstancedStaticMeshes = 0x38, + SF_DynamicShadows = 0x39, + SF_Particles = 0x3a, + SF_SkeletalMeshes = 0x3b, + SF_BuilderBrush = 0x3c, + SF_Translucency = 0x3d, + SF_BillboardSprites = 0x3e, + SF_LOD = 0x3f, + SF_LightComplexity = 0x40, + SF_ShaderComplexity = 0x41, + SF_StationaryLightOverlap = 0x42, + SF_LightMapDensity = 0x43, + SF_StreamingBounds = 0x44, + SF_Constraints = 0x45, + SF_CameraFrustums = 0x46, + SF_AudioRadius = 0x47, + SF_BSPSplit = 0x48, + SF_Brushes = 0x49, + SF_Lighting = 0x4a, + SF_DeferredLighting = 0x4b, + SF_Editor = 0x4c, + SF_BSPTriangles = 0x4d, + SF_LargeVertices = 0x4e, + SF_Grid = 0x4f, + SF_Snap = 0x50, + SF_MeshEdges = 0x51, + SF_Cover = 0x52, + SF_Splines = 0x53, + SF_Selection = 0x54, + SF_ModeWidgets = 0x55, + SF_Bounds = 0x56, + SF_HitProxies = 0x57, + SF_PropertyColoration = 0x58, + SF_LightInfluences = 0x59, + SF_Pivot = 0x5a, + SF_ShadowFrustums = 0x5b, + SF_Wireframe = 0x5c, + SF_Materials = 0x5d, + SF_StaticMeshes = 0x5e, + SF_Landscape = 0x5f, + SF_LightRadius = 0x60, + SF_Fog = 0x61, + SF_Volumes = 0x62, + SF_Game = 0x63, + SF_LevelColoration = 0x64, + SF_BSP = 0x65, + SF_Collision = 0x66, + SF_CollisionVisibility = 0x67, + SF_CollisionPawn = 0x68, + SF_LightShafts = 0x69, + SF_PostProcessMaterial = 0x6a, + SF_Atmosphere = 0x6b, + SF_CameraAspectRatioBars = 0x6c, + SF_CameraSafeFrames = 0x6d, + SF_TextRender = 0x6e, + SF_Rendering = 0x6f, + SF_HighResScreenshotMask = 0x70, + SF_HMDDistortion = 0x71, + SF_StereoRendering = 0x72, + SF_DistanceCulledPrimitives = 0x73, + SF_VisualizeLightCulling = 0x74, + SF_PrecomputedVisibility = 0x75, + SF_SkyLighting = 0x76, + SF_VisualizeLPV = 0x77, + SF_PreviewShadowsIndicator = 0x78, + SF_PrecomputedVisibilityCells = 0x79, + SF_VolumeLightingSamples = 0x7a, + SF_LpvLightingOnly = 0x7b, + SF_Paper2DSprites = 0x7c, + SF_VisualizeDistanceFieldAO = 0x7d, + SF_VisualizeDistanceFieldGI = 0x7e, + SF_VisualizeMeshDistanceFields = 0x7f, + SF_VisualizeGlobalDistanceField = 0x80, + SF_DistanceFieldAO = 0x81, + SF_DistanceFieldGI = 0x82, + SF_VisualizeSSR = 0x83, + SF_ForceGBuffer = 0x84, + SF_VisualizeSenses = 0x85, + SF_TrueSky = 0x86, + SF_GroundClutter = 0x87, + SF_AllowMaskedZEqual = 0x88, + }; +} + +namespace ISlateStyle +{ + enum EStyleMessageSeverity + { + CriticalError = 0x0, + Error = 0x1, + PerformanceWarning = 0x2, + Warning = 0x3, + Info = 0x4, + }; +} + +enum class EResourceTransitionAccess +{ + EReadable = 0x0, + EWritable = 0x1, + ERWBarrier = 0x2, + ERWNoBarrier = 0x3, + ERWSubResBarrier = 0x4, + EMetaData = 0x5, + EMaxAccess = 0x6, +}; + +enum class EOutputFormat +{ + LDR_GAMMA_32 = 0x0, + HDR_LINEAR_32 = 0x1, + HDR_LINEAR_64 = 0x2, +}; + +namespace EHttpResponseCodes +{ + enum Type + { + Unknown = 0x0, + Continue = 0x64, + SwitchProtocol = 0x65, + Ok = 0xc8, + Created = 0xc9, + Accepted = 0xca, + Partial = 0xcb, + NoContent = 0xcc, + ResetContent = 0xcd, + PartialContent = 0xce, + Ambiguous = 0x12c, + Moved = 0x12d, + Redirect = 0x12e, + RedirectMethod = 0x12f, + NotModified = 0x130, + UseProxy = 0x131, + RedirectKeepVerb = 0x133, + BadRequest = 0x190, + Denied = 0x191, + PaymentReq = 0x192, + Forbidden = 0x193, + NotFound = 0x194, + BadMethod = 0x195, + NoneAcceptable = 0x196, + ProxyAuthReq = 0x197, + RequestTimeout = 0x198, + Conflict = 0x199, + Gone = 0x19a, + LengthRequired = 0x19b, + PrecondFailed = 0x19c, + RequestTooLarge = 0x19d, + UriTooLong = 0x19e, + UnsupportedMedia = 0x19f, + RetryWith = 0x1c1, + ServerError = 0x1f4, + NotSupported = 0x1f5, + BadGateway = 0x1f6, + ServiceUnavail = 0x1f7, + GatewayTimeout = 0x1f8, + VersionNotSup = 0x1f9, + }; +} + +enum class EModuleLoadResult +{ + Success = 0x0, + FileNotFound = 0x1, + FileIncompatible = 0x2, + CouldNotBeLoadedByOS = 0x3, + FailedToInitialize = 0x4, +}; + +enum class EOrbitChainMode +{ + EOChainMode_Add = 0x0, + EOChainMode_Scale = 0x1, + EOChainMode_Link = 0x2, + EOChainMode_MAX = 0x3, +}; + +enum class UCollationResult +{ + UCOL_EQUAL = 0x0, + UCOL_GREATER = 0x1, + UCOL_LESS = 0xff, +}; + +namespace EBTExecutionSnap +{ + enum Type + { + Regular = 0x0, + OutOfNodes = 0x1, + }; +} + +enum class EResult +{ + k_EResultOK = 0x1, + k_EResultFail = 0x2, + k_EResultNoConnection = 0x3, + k_EResultInvalidPassword = 0x5, + k_EResultLoggedInElsewhere = 0x6, + k_EResultInvalidProtocolVer = 0x7, + k_EResultInvalidParam = 0x8, + k_EResultFileNotFound = 0x9, + k_EResultBusy = 0xa, + k_EResultInvalidState = 0xb, + k_EResultInvalidName = 0xc, + k_EResultInvalidEmail = 0xd, + k_EResultDuplicateName = 0xe, + k_EResultAccessDenied = 0xf, + k_EResultTimeout = 0x10, + k_EResultBanned = 0x11, + k_EResultAccountNotFound = 0x12, + k_EResultInvalidSteamID = 0x13, + k_EResultServiceUnavailable = 0x14, + k_EResultNotLoggedOn = 0x15, + k_EResultPending = 0x16, + k_EResultEncryptionFailure = 0x17, + k_EResultInsufficientPrivilege = 0x18, + k_EResultLimitExceeded = 0x19, + k_EResultRevoked = 0x1a, + k_EResultExpired = 0x1b, + k_EResultAlreadyRedeemed = 0x1c, + k_EResultDuplicateRequest = 0x1d, + k_EResultAlreadyOwned = 0x1e, + k_EResultIPNotFound = 0x1f, + k_EResultPersistFailed = 0x20, + k_EResultLockingFailed = 0x21, + k_EResultLogonSessionReplaced = 0x22, + k_EResultConnectFailed = 0x23, + k_EResultHandshakeFailed = 0x24, + k_EResultIOFailure = 0x25, + k_EResultRemoteDisconnect = 0x26, + k_EResultShoppingCartNotFound = 0x27, + k_EResultBlocked = 0x28, + k_EResultIgnored = 0x29, + k_EResultNoMatch = 0x2a, + k_EResultAccountDisabled = 0x2b, + k_EResultServiceReadOnly = 0x2c, + k_EResultAccountNotFeatured = 0x2d, + k_EResultAdministratorOK = 0x2e, + k_EResultContentVersion = 0x2f, + k_EResultTryAnotherCM = 0x30, + k_EResultPasswordRequiredToKickSession = 0x31, + k_EResultAlreadyLoggedInElsewhere = 0x32, + k_EResultSuspended = 0x33, + k_EResultCancelled = 0x34, + k_EResultDataCorruption = 0x35, + k_EResultDiskFull = 0x36, + k_EResultRemoteCallFailed = 0x37, + k_EResultPasswordUnset = 0x38, + k_EResultExternalAccountUnlinked = 0x39, + k_EResultPSNTicketInvalid = 0x3a, + k_EResultExternalAccountAlreadyLinked = 0x3b, + k_EResultRemoteFileConflict = 0x3c, + k_EResultIllegalPassword = 0x3d, + k_EResultSameAsPreviousValue = 0x3e, + k_EResultAccountLogonDenied = 0x3f, + k_EResultCannotUseOldPassword = 0x40, + k_EResultInvalidLoginAuthCode = 0x41, + k_EResultAccountLogonDeniedNoMail = 0x42, + k_EResultHardwareNotCapableOfIPT = 0x43, + k_EResultIPTInitError = 0x44, + k_EResultParentalControlRestricted = 0x45, + k_EResultFacebookQueryError = 0x46, + k_EResultExpiredLoginAuthCode = 0x47, + k_EResultIPLoginRestrictionFailed = 0x48, + k_EResultAccountLockedDown = 0x49, + k_EResultAccountLogonDeniedVerifiedEmailRequired = 0x4a, + k_EResultNoMatchingURL = 0x4b, + k_EResultBadResponse = 0x4c, + k_EResultRequirePasswordReEntry = 0x4d, + k_EResultValueOutOfRange = 0x4e, + k_EResultUnexpectedError = 0x4f, + k_EResultDisabled = 0x50, + k_EResultInvalidCEGSubmission = 0x51, + k_EResultRestrictedDevice = 0x52, + k_EResultRegionLocked = 0x53, + k_EResultRateLimitExceeded = 0x54, + k_EResultAccountLoginDeniedNeedTwoFactor = 0x55, + k_EResultItemDeleted = 0x56, + k_EResultAccountLoginDeniedThrottle = 0x57, + k_EResultTwoFactorCodeMismatch = 0x58, + k_EResultTwoFactorActivationCodeMismatch = 0x59, + k_EResultAccountAssociatedToMultiplePartners = 0x5a, + k_EResultNotModified = 0x5b, +}; + +namespace ESlateSizeRule +{ + enum Type + { + Automatic = 0x0, + Fill = 0x1, + }; +} + +enum class EAdditiveBasePoseType +{ + ABPT_None = 0x0, + ABPT_RefPose = 0x1, + ABPT_AnimScaled = 0x2, + ABPT_AnimFrame = 0x3, + ABPT_MAX = 0x4, +}; + +namespace ELegendPosition +{ + enum Type + { + Outside = 0x0, + Inside = 0x1, + }; +} + +namespace EColorChannelTarget +{ + enum Type + { + Red = 0x0, + Green = 0x1, + Blue = 0x2, + Alpha = 0x3, + All = 0x4, + }; +} + +namespace EParticleKey +{ + enum Type + { + Toggle = 0x0, + Trigger = 0x1, + }; +} + +enum class EClearDepthStencil +{ + Depth = 0x0, + Stencil = 0x1, + DepthStencil = 0x2, +}; + +enum class EDDSPixelFormat +{ + DDSPF_FourCC = 0x4, + DDSPF_RGB = 0x40, + DDSPF_DXT1 = 0x31545844, + DDSPF_DXT3 = 0x33545844, + DDSPF_DXT5 = 0x35545844, +}; + +namespace EMissionAlertType +{ + enum Type + { + Positive = 0x0, + Neutral = 0x1, + Negative = 0x2, + }; +} + +enum class UDisplayContextType +{ + UDISPCTX_TYPE_DIALECT_HANDLING = 0x0, + UDISPCTX_TYPE_CAPITALIZATION = 0x1, +}; + +enum class EFriendFlags +{ + k_EFriendFlagNone = 0x0, + k_EFriendFlagBlocked = 0x1, + k_EFriendFlagFriendshipRequested = 0x2, + k_EFriendFlagImmediate = 0x4, + k_EFriendFlagClanMember = 0x8, + k_EFriendFlagOnGameServer = 0x10, + k_EFriendFlagRequestingFriendship = 0x80, + k_EFriendFlagRequestingInfo = 0x100, + k_EFriendFlagIgnored = 0x200, + k_EFriendFlagIgnoredFriend = 0x400, + k_EFriendFlagSuggested = 0x800, + k_EFriendFlagAll = 0xffff, +}; + +namespace EHubSubMenu +{ + enum Type + { + Inventory = 0x0, + Engrams = 0x1, + TribeManager = 0x2, + TameGroups = 0x3, + TamingList = 0x4, + SurvivalProfile = 0x5, + MissionList = 0x6, + MAX = 0x7, + }; +} + +namespace EPartyReservationResult +{ + enum Type + { + RequestPending = 0x0, + GeneralError = 0x1, + PartyLimitReached = 0x2, + IncorrectPlayerCount = 0x3, + RequestTimedOut = 0x4, + ReservationDuplicate = 0x5, + ReservationNotFound = 0x6, + ReservationAccepted = 0x7, + ReservationDenied = 0x8, + ReservationDenied_Banned = 0x9, + ReservationRequestCanceled = 0xa, + }; +} + +namespace FOpenGLBase +{ + enum EFenceResult + { + FR_AlreadySignaled = 0x0, + FR_TimeoutExpired = 0x1, + FR_ConditionSatisfied = 0x2, + FR_WaitFailed = 0x3, + }; +} + +namespace UCanvas +{ + enum ELastCharacterIndexFormat + { + LastWholeCharacterBeforeOffset = 0x0, + CharacterAtOffset = 0x1, + Unused = 0x2, + }; +} + +namespace EAlignVerticalUI +{ + enum Type + { + Top = 0x0, + Center = 0x1, + Bottom = 0x2, + }; +} + +namespace EBTMemoryClear +{ + enum Type + { + Destroy = 0x0, + StoreSubtree = 0x1, + }; +} + +enum class EInjectFlags +{ + INJECT_SHADOWED = 0x1, +}; + +namespace Concurrency +{ + enum SchedulingProtocolType + { + EnhanceScheduleGroupLocality = 0x0, + EnhanceForwardProgress = 0x1, + }; +} + +namespace FSlateFontMeasure +{ + enum ELastCharacterIndexFormat + { + LastWholeCharacterBeforeOffset = 0x0, + CharacterAtOffset = 0x1, + Unused = 0x2, + }; +} + +namespace EPrimalItemType +{ + enum Type + { + MiscConsumable = 0x0, + Equipment = 0x1, + Weapon = 0x2, + Ammo = 0x3, + Structure = 0x4, + Resource = 0x5, + Skin = 0x6, + WeaponAttachment = 0x7, + Artifact = 0x8, + MAX = 0x9, + }; +} + +enum class EBTActionMemoryHelper +{ + ActionAbortingDone = 0x0, + WaitingForActionToFinishAborting = 0x1, +}; + +namespace ENativeMissionMetaTag +{ + enum Type + { + INVALID = 0x0, + GENESIS_VR_BOSS_UNLOCK = 0x1, + ARCTIC_MISSION = 0x2, + BOG_MISSION = 0x3, + LUNAR_MISSION = 0x4, + OCEAN_MISSION = 0x5, + VOLCANIC_MISSION = 0x6, + NORMAL_DIFFICULTY = 0x7, + ALPHA_DIFFICULTY = 0x8, + BETA_DIFFICULTY = 0x9, + GAMMA_DIFFICULTY = 0xa, + MAX = 0xb, + }; +} + +namespace UAtmosphericFogComponent +{ + enum EPrecomputeState + { + EInvalid = 0x0, + EFinishedComputation = 0x1, + EValid = 0x2, + }; +} + +namespace ETraceType +{ + enum Type + { + TT_LineTrace = 0x0, + TT_ArcTrace = 0x1, + TT_Max = 0x2, + }; +} + +namespace FSceneRenderTargets +{ + enum EShadingPath + { + Forward = 0x0, + Deferred = 0x1, + Num = 0x2, + }; +} + +enum class EVisibilityTrackCondition +{ + EVTC_Always = 0x0, + EVTC_GoreEnabled = 0x1, + EVTC_GoreDisabled = 0x2, + EVTC_MAX = 0x3, +}; + +enum class ERenderTargetLoadAction +{ + ENoAction = 0x0, + ELoad = 0x1, + EClear = 0x2, +}; + +namespace EChunkLocation +{ + enum Type + { + DoesNotExist = 0x0, + NotAvailable = 0x1, + LocalSlow = 0x2, + LocalFast = 0x3, + BestLocation = 0x3, + }; +} + +enum class EStandbyType +{ + STDBY_Rx = 0x0, + STDBY_Tx = 0x1, + STDBY_BadPing = 0x2, + STDBY_MAX = 0x3, +}; + +enum class UColBoundMode +{ + UCOL_BOUND_LOWER = 0x0, + UCOL_BOUND_UPPER = 0x1, + UCOL_BOUND_UPPER_LONG = 0x2, + UCOL_BOUND_VALUE_COUNT = 0x3, +}; + +enum class ETerrainCoordMappingType +{ + TCMT_Auto = 0x0, + TCMT_XY = 0x1, + TCMT_XZ = 0x2, + TCMT_YZ = 0x3, + TCMT_MAX = 0x4, +}; + +enum class EBeam2Method +{ + PEB2M_Distance = 0x0, + PEB2M_Target = 0x1, + PEB2M_Branch = 0x2, + PEB2M_MAX = 0x3, +}; + +namespace FHMDViewMesh +{ + enum EHMDMeshType + { + MT_HiddenArea = 0x0, + MT_VisibleArea = 0x1, + }; +} + +enum class ELightmapQuality +{ + LQ_LIGHTMAP = 0x0, + HQ_LIGHTMAP = 0x1, +}; + +namespace FPlayerAllClustersInventory +{ + enum LockStatus + { + LS_Unlocked = 0x0, + LS_Locked = 0x1, + LS_Locking = 0x2, + }; +} + +enum class dtCompressedTileFlags +{ + DT_COMPRESSEDTILE_FREE_DATA = 0x1, +}; + +namespace FKeyDetails +{ + enum EInputAxisType + { + None = 0x0, + Float = 0x1, + Vector = 0x2, + }; +} + +namespace EClimbingAnimationType +{ + enum Type + { + Up = 0x0, + Down = 0x1, + Right = 0x2, + Left = 0x3, + MeleeUp = 0x4, + MeleeRight = 0x5, + MeleeLeft = 0x6, + FinishUp = 0x7, + FinishDown = 0x8, + HangingFwd = 0x9, + HangingMelee = 0xa, + HangingFinishUp = 0xb, + HangingFinishDown = 0xc, + JumpUp = 0xd, + JumpUpRight = 0xe, + JumpUpLeft = 0xf, + SlideDown = 0x10, + AttachUp = 0x11, + AttachDown = 0x12, + AttachHangingUp = 0x13, + AttachHangingDown = 0x14, + FlipLeft = 0x15, + FlipRight = 0x16, + FlipUp = 0x17, + FlipDown = 0x18, + TurnUp = 0x19, + TurnDown = 0x1a, + TurnRight = 0x1b, + TurnLeft = 0x1c, + OpenInventory = 0x1d, + OpenInventoryHanging = 0x1e, + QuakeFall = 0x1f, + MAX = 0x20, + }; +} + +namespace ITextInputMethodContext +{ + enum ECaretPosition + { + Beginning = 0x0, + Ending = 0x1, + }; +} + +namespace EHostSessionPanel +{ + enum Map + { + ISLAND = 0x0, + CENTER = 0x1, + SCORCHED_EARTH = 0x2, + RAGNAROK = 0x3, + VALGUERO = 0x4, + ABERRATION = 0x5, + EXTINCTION = 0x6, + GENESIS = 0x7, + GEN2 = 0x8, + PGARK = 0x9, + UNKNOWN = 0xa, + CRYSTALISLES = 0xb, + }; +} + +enum class EEmitterRenderMode +{ + ERM_Normal = 0x0, + ERM_Point = 0x1, + ERM_Cross = 0x2, + ERM_LightsOnly = 0x3, + ERM_None = 0x4, + ERM_MAX = 0x5, +}; + +enum class EHeaderComboVisibility +{ + Always = 0x0, + Ghosted = 0x1, + OnHover = 0x2, +}; + +enum class EParticleCameraOffsetUpdateMethod +{ + EPCOUM_DirectSet = 0x0, + EPCOUM_Additive = 0x1, + EPCOUM_Scalar = 0x2, + EPCOUM_MAX = 0x3, +}; + +enum class EMaterialPositionTransformSource +{ + TRANSFORMPOSSOURCE_Local = 0x0, + TRANSFORMPOSSOURCE_World = 0x1, + TRANSFORMPOSSOURCE_MAX = 0x2, +}; + +namespace FSpeedTreeWind +{ + enum EOscillationComponents + { + OSC_GLOBAL = 0x0, + OSC_BRANCH_1 = 0x1, + OSC_BRANCH_2 = 0x2, + OSC_LEAF_1_RIPPLE = 0x3, + OSC_LEAF_1_TUMBLE = 0x4, + OSC_LEAF_1_TWITCH = 0x5, + OSC_LEAF_2_RIPPLE = 0x6, + OSC_LEAF_2_TUMBLE = 0x7, + OSC_LEAF_2_TWITCH = 0x8, + OSC_FROND_RIPPLE = 0x9, + NUM_OSC_COMPONENTS = 0xa, + }; +} + +namespace FGCReferenceTokenStream +{ + enum EGCArrayInfoPlaceholder + { + E_GCSkipIndexPlaceholder = 0xdeadbabe, + }; +} + +namespace EBabyCuddleType +{ + enum Type + { + PET = 0x0, + FOOD = 0x1, + WALK = 0x2, + MAX = 0x3, + }; +} + +namespace EMultiBlockType +{ + enum Type + { + None = 0x0, + ButtonRow = 0x1, + EditableText = 0x2, + Heading = 0x3, + MenuEntry = 0x4, + MenuSeparator = 0x5, + ToolBarButton = 0x6, + ToolBarComboButton = 0x7, + ToolBarSeparator = 0x8, + Widget = 0x9, + }; +} + +enum class EFontHinting +{ + Default = 0x0, + Auto = 0x1, + AutoLight = 0x2, + Monochrome = 0x3, + None = 0x4, +}; + +enum class EDecompressionType +{ + DTYPE_Setup = 0x0, + DTYPE_Invalid = 0x1, + DTYPE_Preview = 0x2, + DTYPE_Native = 0x3, + DTYPE_RealTime = 0x4, + DTYPE_Procedural = 0x5, + DTYPE_Xenon = 0x6, + DTYPE_Streaming = 0x7, + DTYPE_MAX = 0x8, +}; + +namespace EGlassTransparencyType +{ + enum Type + { + TwoWay = 0x0, + OneWayA = 0x1, + OneWayB = 0x2, + Opaque = 0x3, + }; +} + +namespace ULinkerLoad +{ + enum ELinkerStatus + { + LINKER_Failed = 0x0, + LINKER_Loaded = 0x1, + LINKER_TimedOut = 0x2, + }; +} + +namespace EChatSendMode +{ + enum Type + { + GlobalChat = 0x0, + GlobalTribeChat = 0x1, + LocalChat = 0x2, + AllianceChat = 0x3, + MAX = 0x4, + }; +} + +namespace EPathFollowingStatus +{ + enum Type + { + Idle = 0x0, + Waiting = 0x1, + Paused = 0x2, + Moving = 0x3, + }; +} + +namespace EPrimalCharacterStatusValue +{ + enum Type + { + Health = 0x0, + Stamina = 0x1, + Torpidity = 0x2, + Oxygen = 0x3, + Food = 0x4, + Water = 0x5, + Temperature = 0x6, + Weight = 0x7, + MeleeDamageMultiplier = 0x8, + SpeedMultiplier = 0x9, + TemperatureFortitude = 0xa, + CraftingSpeedMultiplier = 0xb, + MAX = 0xc, + }; +} + +namespace EHUDElementAnchorMode +{ + enum Type + { + Specified = 0x0, + QuickbarLeft = 0x1, + QuickbarRight = 0x2, + QuickbarTop = 0x3, + }; +} + +namespace SDockingNode +{ + enum RelativeDirection + { + LeftOf = 0x0, + Above = 0x1, + RightOf = 0x2, + Below = 0x3, + Center = 0x4, + }; +} + +namespace SSearchBox +{ + enum SearchDirection + { + Previous = 0x0, + Next = 0x1, + }; +} + +enum class CopyStatus +{ + CS_OK = 0x0, + CS_Fail = 0x1, + CS_InProgress = 0x2, +}; + +enum class ESteamNetConnectionEnd +{ + k_ESteamNetConnectionEnd_Invalid = 0x0, + k_ESteamNetConnectionEnd_App_Min = 0x3e8, + k_ESteamNetConnectionEnd_App_Generic = 0x3e8, + k_ESteamNetConnectionEnd_App_Max = 0x7cf, + k_ESteamNetConnectionEnd_AppException_Min = 0x7d0, + k_ESteamNetConnectionEnd_AppException_Generic = 0x7d0, + k_ESteamNetConnectionEnd_AppException_Max = 0xbb7, + k_ESteamNetConnectionEnd_Local_Min = 0xbb8, + k_ESteamNetConnectionEnd_Local_OfflineMode = 0xbb9, + k_ESteamNetConnectionEnd_Local_ManyRelayConnectivity = 0xbba, + k_ESteamNetConnectionEnd_Local_HostedServerPrimaryRelay = 0xbbb, + k_ESteamNetConnectionEnd_Local_NetworkConfig = 0xbbc, + k_ESteamNetConnectionEnd_Local_Rights = 0xbbd, + k_ESteamNetConnectionEnd_Local_Max = 0xf9f, + k_ESteamNetConnectionEnd_Remote_Min = 0xfa0, + k_ESteamNetConnectionEnd_Remote_Timeout = 0xfa1, + k_ESteamNetConnectionEnd_Remote_BadCrypt = 0xfa2, + k_ESteamNetConnectionEnd_Remote_BadCert = 0xfa3, + k_ESteamNetConnectionEnd_Remote_NotLoggedIn = 0xfa4, + k_ESteamNetConnectionEnd_Remote_NotRunningApp = 0xfa5, + k_ESteamNetConnectionEnd_Remote_Max = 0x1387, + k_ESteamNetConnectionEnd_Misc_Min = 0x1388, + k_ESteamNetConnectionEnd_Misc_Generic = 0x1389, + k_ESteamNetConnectionEnd_Misc_InternalError = 0x138a, + k_ESteamNetConnectionEnd_Misc_Timeout = 0x138b, + k_ESteamNetConnectionEnd_Misc_RelayConnectivity = 0x138c, + k_ESteamNetConnectionEnd_Misc_SteamConnectivity = 0x138d, + k_ESteamNetConnectionEnd_Misc_NoRelaySessionsToClient = 0x138e, + k_ESteamNetConnectionEnd_Misc_Max = 0x176f, +}; + +namespace EListDisplay +{ + enum Type + { + MISSIONS = 0x0, + EFFECTS = 0x1, + }; +} + +namespace EPrimalItemStat +{ + enum Type + { + GenericQuality = 0x0, + Armor = 0x1, + MaxDurability = 0x2, + WeaponDamagePercent = 0x3, + WeaponClipAmmo = 0x4, + HypothermalInsulation = 0x5, + Weight = 0x6, + HyperthermalInsulation = 0x7, + MAX = 0x8, + }; +} + +namespace FGraphicsPipelineStateInitializer +{ + enum OptionalState + { + OS_SetStencilRef = 0x1, + OS_SetBlendFactor = 0x2, + }; +} + +enum class EAdditiveAnimationType +{ + AAT_None = 0x0, + AAT_LocalSpaceBase = 0x1, + AAT_RotationOffsetMeshSpace = 0x2, + AAT_MAX = 0x3, +}; + +namespace Imf +{ + enum Compression + { + NO_COMPRESSION = 0x0, + RLE_COMPRESSION = 0x1, + ZIPS_COMPRESSION = 0x2, + ZIP_COMPRESSION = 0x3, + PIZ_COMPRESSION = 0x4, + PXR24_COMPRESSION = 0x5, + B44_COMPRESSION = 0x6, + B44A_COMPRESSION = 0x7, + NUM_COMPRESSION_METHODS = 0x8, + }; +} + +namespace Concurrency +{ + enum DynamicProgressFeedbackType + { + ProgressFeedbackDisabled = 0x0, + ProgressFeedbackEnabled = 0x1, + }; +} + +enum class ESteamNetworkingSocketsDebugOutputType +{ + k_ESteamNetworkingSocketsDebugOutputType_None = 0x0, + k_ESteamNetworkingSocketsDebugOutputType_Bug = 0x1, + k_ESteamNetworkingSocketsDebugOutputType_Error = 0x2, + k_ESteamNetworkingSocketsDebugOutputType_Important = 0x3, + k_ESteamNetworkingSocketsDebugOutputType_Warning = 0x4, + k_ESteamNetworkingSocketsDebugOutputType_Msg = 0x5, + k_ESteamNetworkingSocketsDebugOutputType_Verbose = 0x6, + k_ESteamNetworkingSocketsDebugOutputType_Debug = 0x7, + k_ESteamNetworkingSocketsDebugOutputType_Everything = 0x8, +}; + +namespace EPlayerActionIndex +{ + enum Action + { + None = 0x0, + WhistleFollow = 0x1, + WhistleFollowOne = 0x2, + WhistleStop = 0x3, + WhistleStopOne = 0x4, + WhistleAggressive = 0x5, + WhistleNeutral = 0x6, + WhistlePassive = 0x7, + WhistlePassiveFlee = 0x8, + WhistleAttackTarget = 0x9, + WhistleLandFlyerOne = 0xa, + ShowInventory = 0xb, + ShowCraftables = 0xc, + ShowTribeManager = 0xd, + Poop = 0xe, + UnHideCompanion = 0xf, + ShowEmoteSelection = 0x10, + Emote_HatSwitch = 0x11, + Emote_Salute = 0x12, + Emote_Sorry = 0x13, + Emote_Thank = 0x14, + Emote_Wave = 0x15, + Emote_Laugh = 0x16, + Emote_Yes = 0x17, + Emote_No = 0x18, + Emote_Taunt = 0x19, + Emote_Cheer = 0x1a, + Emote_FriendlyLowerHands = 0x1b, + Emote_MAX = 0x1c, + }; +} + +namespace EColumnSortMode +{ + enum Type + { + None = 0x0, + Ascending = 0x1, + Descending = 0x2, + }; +} + +namespace ECompanionState +{ + enum Type + { + IDLE = 0x0, + FOCUSED = 0x1, + EVENT = 0x2, + MONOLOGUE = 0x3, + ASLEEP = 0x4, + CUSTOM = 0x5, + }; +} + +namespace ESplitterResizeMode +{ + enum Type + { + Fixed = 0x0, + Fill = 0x1, + }; +} + +namespace EUserPrivileges +{ + enum Type + { + CanPlay = 0x0, + CanPlayOnline = 0x1, + CanCommunicateOnline = 0x2, + CanUseUserGeneratedContent = 0x3, + }; +} + +enum class EEmitterNormalsMode +{ + ENM_CameraFacing = 0x0, + ENM_Spherical = 0x1, + ENM_Cylindrical = 0x2, + ENM_MAX = 0x3, +}; + +namespace ansel +{ + enum StartSessionStatus + { + kDisallowed = 0x0, + kAllowed = 0x1, + }; +} + +namespace EInventorySortType +{ + enum Type + { + Default = 0x0, + Alphabetical_Asc = 0x1, + Alphabetical_Dsc = 0x2, + Weight_Asc = 0x3, + Weight_Dsc = 0x4, + Type_Asc = 0x5, + Type_Dsc = 0x6, + SpoilTimer_Asc = 0x7, + SpoilTimer_Dsc = 0x8, + }; +} + +enum class EMaterialVectorCoordTransformSource +{ + TRANSFORMSOURCE_World = 0x0, + TRANSFORMSOURCE_Local = 0x1, + TRANSFORMSOURCE_Tangent = 0x2, + TRANSFORMSOURCE_View = 0x3, + TRANSFORMSOURCE_RefPose = 0x4, + TRANSFORMSOURCE_MAX = 0x5, +}; + +namespace EVoronoiBlendType +{ + enum Type + { + Flat = 0x0, + Closest = 0x1, + SecondClosest = 0x2, + Cellular = 0x3, + Organic = 0x4, + }; +} + +namespace EEnvQueryParam +{ + enum Type + { + Float = 0x0, + Int = 0x1, + Bool = 0x2, + }; +} + +namespace EVisibility +{ + enum Private + { + VISPRIVATE_Visible = 0x1, + VISPRIVATE_Collapsed = 0x2, + VISPRIVATE_Hidden = 0x4, + VISPRIVATE_SelfHitTestVisible = 0x8, + VISPRIVATE_ChildrenHitTestVisible = 0x10, + VIS_Visible = 0x19, + VIS_Collapsed = 0x2, + VIS_Hidden = 0x4, + }; +} + +enum class EPassInputId +{ + ePId_Input0 = 0x0, + ePId_Input1 = 0x1, + ePId_Input2 = 0x2, + ePId_Input3 = 0x3, + ePId_Input4 = 0x4, + ePId_Input5 = 0x5, + ePId_Input6 = 0x6, + ePId_Input_MAX = 0x7, +}; + +namespace dtTileCache +{ + enum ObstacleRequestAction + { + REQUEST_ADD = 0x0, + REQUEST_REMOVE = 0x1, + }; +} + +enum class ETextHistoryType +{ + Base = 0x0, + NamedFormat = 0x1, + OrderedFormat = 0x2, + ArgumentFormat = 0x3, + AsNumber = 0x4, + AsPercent = 0x5, + AsCurrency = 0x6, + AsDate = 0x7, + AsTime = 0x8, + AsDateTime = 0x9, +}; + +enum class ECustomMaterialOutputType +{ + CMOT_Float1 = 0x0, + CMOT_Float2 = 0x1, + CMOT_Float3 = 0x2, + CMOT_Float4 = 0x3, + CMOT_MAX = 0x4, +}; + +enum class ELobbyDistanceFilter +{ + k_ELobbyDistanceFilterClose = 0x0, + k_ELobbyDistanceFilterDefault = 0x1, + k_ELobbyDistanceFilterFar = 0x2, + k_ELobbyDistanceFilterWorldwide = 0x3, +}; + +enum class ControlDirection +{ + None = 0x0, + Up = 0x1, + Down = 0x2, + Left = 0x3, + Right = 0x4, +}; + +enum class EUserUGCListSortOrder +{ + k_EUserUGCListSortOrder_CreationOrderDesc = 0x0, + k_EUserUGCListSortOrder_CreationOrderAsc = 0x1, + k_EUserUGCListSortOrder_TitleAsc = 0x2, + k_EUserUGCListSortOrder_LastUpdatedDesc = 0x3, + k_EUserUGCListSortOrder_SubscriptionDateDesc = 0x4, + k_EUserUGCListSortOrder_VoteScoreDesc = 0x5, + k_EUserUGCListSortOrder_ForModeration = 0x6, +}; + +namespace EJsonNotation +{ + enum Type + { + ObjectStart = 0x0, + ObjectEnd = 0x1, + ArrayStart = 0x2, + ArrayEnd = 0x3, + Boolean = 0x4, + String = 0x5, + Number = 0x6, + Null = 0x7, + Error = 0x8, + }; +} + +namespace ETargetPlatformFeatures +{ + enum Type + { + AudioStreaming = 0x0, + DistanceFieldShadows = 0x1, + GrayscaleSRGB = 0x2, + HighQualityLightmaps = 0x3, + LowQualityLightmaps = 0x4, + MultipleGameInstances = 0x5, + Packaging = 0x6, + SdkConnectDisconnect = 0x7, + Tessellation = 0x8, + TextureStreaming = 0x9, + UserCredentials = 0xa, + VertexShaderTextureSampling = 0xb, + }; +} + +namespace SDockingSplitter +{ + enum ETabStackToFind + { + UpperLeft = 0x0, + UpperRight = 0x1, + }; +} + +namespace EBoneModifierType +{ + enum Type + { + HEAD = 0x0, + NECK = 0x1, + NECKLENGTH = 0x2, + CHEST = 0x3, + SHOULDERS = 0x4, + ARMLENGTH = 0x5, + UPPERARM = 0x6, + LOWERARM = 0x7, + HAND = 0x8, + LEGLENGTH = 0x9, + UPPERLEG = 0xa, + LOWERLEG = 0xb, + FOOT = 0xc, + HIP = 0xd, + TORSO = 0xe, + UPPERFACESIZE = 0xf, + LOWERFACESIZE = 0x10, + TORSODEPTH = 0x11, + HEADHEIGHT = 0x12, + HEADWIDTH = 0x13, + HEADDEPTH = 0x14, + TORSOHEIGHT = 0x15, + MAX = 0x16, + }; +} + +namespace FRecastDebugGeometry +{ + enum EOffMeshLinkEnd + { + OMLE_None = 0x0, + OMLE_Left = 0x1, + OMLE_Right = 0x2, + OMLE_Both = 0x3, + }; +} + +enum class ModulationParamMode +{ + MPM_Normal = 0x0, + MPM_Abs = 0x1, + MPM_Direct = 0x2, + MPM_MAX = 0x3, +}; + +enum class ESimpleRenderTargetMode +{ + EExistingColorAndDepth = 0x0, + EUninitializedColorAndDepth = 0x1, + EUninitializedColorExistingDepth = 0x2, + EUninitializedColorClearDepth = 0x3, + EClearColorExistingDepth = 0x4, + EClearColorAndDepth = 0x5, + EExistingContents_NoDepthStore = 0x6, + EExistingColorAndClearDepth = 0x7, + EExistingColorAndDepthAndClearStencil = 0x8, +}; + +namespace EBindingKind +{ + enum Type + { + Function = 0x0, + Property = 0x1, + }; +} + +namespace FAtmosphereTextureResource +{ + enum ETextureType + { + E_Transmittance = 0x0, + E_Irradiance = 0x1, + E_Inscatter = 0x2, + }; +} + +namespace EXPType +{ + enum Type + { + XP_GENERIC = 0x0, + XP_KILL = 0x1, + XP_HARVEST = 0x2, + XP_CRAFT = 0x3, + XP_SPECIAL = 0x4, + XP_ALPHAKILL = 0x5, + MAX = 0x6, + }; +} + +namespace ENetworkModeResult +{ + enum Type + { + Yes = 0x0, + No = 0x1, + }; +} + +namespace FPipeWorkerInfo +{ + enum EState + { + State_Idle = 0x0, + State_Connecting = 0x1, + State_SendingJobData = 0x2, + State_ReceivingResultSize = 0x3, + State_ReceivingResults = 0x4, + }; +} + +namespace FGenericTeamId +{ + enum EPredefinedId + { + NoTeamId = 0xff, + }; +} + +namespace FSpeedTreeWind +{ + enum EOptions + { + GLOBAL_WIND = 0x0, + GLOBAL_PRESERVE_SHAPE = 0x1, + BRANCH_SIMPLE_1 = 0x2, + BRANCH_DIRECTIONAL_1 = 0x3, + BRANCH_DIRECTIONAL_FROND_1 = 0x4, + BRANCH_TURBULENCE_1 = 0x5, + BRANCH_WHIP_1 = 0x6, + BRANCH_OSC_COMPLEX_1 = 0x7, + BRANCH_SIMPLE_2 = 0x8, + BRANCH_DIRECTIONAL_2 = 0x9, + BRANCH_DIRECTIONAL_FROND_2 = 0xa, + BRANCH_TURBULENCE_2 = 0xb, + BRANCH_WHIP_2 = 0xc, + BRANCH_OSC_COMPLEX_2 = 0xd, + LEAF_RIPPLE_VERTEX_NORMAL_1 = 0xe, + LEAF_RIPPLE_COMPUTED_1 = 0xf, + LEAF_TUMBLE_1 = 0x10, + LEAF_TWITCH_1 = 0x11, + LEAF_OCCLUSION_1 = 0x12, + LEAF_RIPPLE_VERTEX_NORMAL_2 = 0x13, + LEAF_RIPPLE_COMPUTED_2 = 0x14, + LEAF_TUMBLE_2 = 0x15, + LEAF_TWITCH_2 = 0x16, + LEAF_OCCLUSION_2 = 0x17, + FROND_RIPPLE_ONE_SIDED = 0x18, + FROND_RIPPLE_TWO_SIDED = 0x19, + FROND_RIPPLE_ADJUST_LIGHTING = 0x1a, + ROLLING = 0x1b, + NUM_WIND_OPTIONS = 0x1c, + }; +} + +namespace EStretchDirection +{ + enum Type + { + Both = 0x0, + DownOnly = 0x1, + UpOnly = 0x2, + }; +} + +namespace EPinHidingMode +{ + enum Type + { + NeverAsPin = 0x0, + PinHiddenByDefault = 0x1, + PinShownByDefault = 0x2, + AlwaysAsPin = 0x3, + }; +} + +namespace EGrappleState +{ + enum Type + { + GRAPPLE_Idle = 0x0, + GRAPPLE_Pulling = 0x1, + GRAPPLE_Releasing = 0x2, + GRAPPLE_Custom = 0x3, + GRAPPLE_Max = 0x4, + }; +} + +namespace FSlateDrawElement +{ + enum ERotationSpace + { + RelativeToElement = 0x0, + RelativeToWorld = 0x1, + }; +} + +namespace FOpenGLBase +{ + enum EResourceLockMode + { + RLM_ReadWrite = 0x0, + RLM_ReadOnly = 0x1, + RLM_WriteOnly = 0x2, + RLM_WriteOnlyUnsynchronized = 0x3, + RLM_WriteOnlyPersistent = 0x4, + }; +} + +enum class ERemoteStoragePlatform +{ + k_ERemoteStoragePlatformNone = 0x0, + k_ERemoteStoragePlatformWindows = 0x1, + k_ERemoteStoragePlatformOSX = 0x2, + k_ERemoteStoragePlatformPS3 = 0x4, + k_ERemoteStoragePlatformLinux = 0x8, + k_ERemoteStoragePlatformReserved2 = 0x10, + k_ERemoteStoragePlatformAll = 0xff, +}; + +enum class UCharProperty +{ + UCHAR_ALPHABETIC = 0x0, +}; + +namespace EOnlinePresenceState +{ + enum Type + { + Online = 0x0, + Offline = 0x1, + Away = 0x2, + ExtendedAway = 0x3, + DoNotDisturb = 0x4, + Chat = 0x5, + }; +} + +namespace ESortedActiveWaveGetType +{ + enum Type + { + FullUpdate = 0x0, + PausedUpdate = 0x1, + QueryOnly = 0x2, + }; +} + +enum class AnimationKeyFormat +{ + AKF_ConstantKeyLerp = 0x0, + AKF_VariableKeyLerp = 0x1, + AKF_PerTrackCompression = 0x2, + AKF_MAX = 0x3, +}; + +enum class EP2PSessionError +{ + k_EP2PSessionErrorNone = 0x0, + k_EP2PSessionErrorNotRunningApp = 0x1, + k_EP2PSessionErrorNoRightsToApp = 0x2, + k_EP2PSessionErrorDestinationNotLoggedIn = 0x3, + k_EP2PSessionErrorTimeout = 0x4, + k_EP2PSessionErrorMax = 0x5, +}; + +namespace EVoiceCaptureState +{ + enum Type + { + UnInitialized = 0x0, + NotCapturing = 0x1, + Ok = 0x2, + NoData = 0x3, + Stopping = 0x4, + BufferTooSmall = 0x5, + Error = 0x6, + }; +} + +enum class SourceDestinations +{ + DEST_DRY = 0x0, + DEST_REVERB = 0x1, + DEST_RADIO = 0x2, + DEST_COUNT = 0x3, +}; + +namespace UNavigationSystem +{ + enum EOctreeUpdateMode + { + OctreeUpdate_Default = 0x0, + OctreeUpdate_Geometry = 0x1, + OctreeUpdate_Modifiers = 0x2, + OctreeUpdate_Refresh = 0x4, + OctreeUpdate_ParentChain = 0x8, + }; +} + +namespace UNavigationSystem +{ + enum ECleanupMode + { + CleanupWithWorld = 0x0, + CleanupUnsafe = 0x1, + }; +} + +enum class ERealtimeAudioTaskType +{ + Decompress = 0x0, + Procedural = 0x1, +}; + +enum class Beam2SourceTargetMethod +{ + PEB2STM_Default = 0x0, + PEB2STM_UserSet = 0x1, + PEB2STM_Emitter = 0x2, + PEB2STM_Particle = 0x3, + PEB2STM_Actor = 0x4, + PEB2STM_MAX = 0x5, +}; + +namespace ECompilationResult +{ + enum Type + { + UpToDate = 0xfe, + Canceled = 0xff, + Succeeded = 0x0, + FailedDueToHeaderChange = 0x1, + OtherCompilationError = 0x2, + Unsupported = 0x3, + Unknown = 0x4, + }; +} + +namespace EMultiplayerAutomationRoles +{ + enum Type + { + Host = 0x0, + Client0 = 0x1, + MaxNumParticipants = 0x2, + }; +} + +namespace EEnvTestCost +{ + enum Type + { + Low = 0x0, + Medium = 0x1, + High = 0x2, + }; +} + +enum class EBeamTaperMethod +{ + PEBTM_None = 0x0, + PEBTM_Full = 0x1, + PEBTM_Partial = 0x2, + PEBTM_MAX = 0x3, +}; + +namespace FNavigationOctree +{ + enum ENavGeometryStoringMode + { + SkipNavGeometry = 0x0, + StoreNavGeometry = 0x1, + }; +} + +namespace UEnum +{ + enum ECppForm + { + Regular = 0x0, + Namespaced = 0x1, + EnumClass = 0x2, + }; +} + +namespace EPhaseRequirementWidgetVisualState +{ + enum Type + { + Neutral = 0x0, + Positive = 0x1, + Negative = 0x2, + Custom = 0x3, + }; +} + +namespace EColumnSizeMode +{ + enum Type + { + Fill = 0x0, + Fixed = 0x1, + }; +} + +namespace EAIForceParam +{ + enum Type + { + Force = 0x0, + DoNotForce = 0x1, + MAX = 0x2, + }; +} + +enum class UCharIteratorOrigin +{ + UITER_START = 0x0, + UITER_CURRENT = 0x1, + UITER_LIMIT = 0x2, + UITER_ZERO = 0x3, + UITER_LENGTH = 0x4, +}; + +enum class ERenderModuleType +{ + Sprites = 0x0, + Ribbon = 0x1, +}; + +enum class EModuleType +{ + EPMT_General = 0x0, + EPMT_TypeData = 0x1, + EPMT_Beam = 0x2, + EPMT_Trail = 0x3, + EPMT_Spawn = 0x4, + EPMT_Required = 0x5, + EPMT_Event = 0x6, + EPMT_Light = 0x7, + EPMT_MAX = 0x8, +}; + +enum class ELinkAllocationType +{ + CREATE_LINK_PREALLOCATED = 0x0, + CREATE_LINK_DYNAMIC_OFFMESH = 0x1, + CREATE_LINK_DYNAMIC_CLUSTER = 0x2, +}; + +namespace UParticleSystemComponent +{ + enum EForceAsyncWorkCompletion + { + STALL = 0x0, + ENSURE_AND_STALL = 0x1, + SILENT = 0x2, + }; +} + +namespace ESkyResources +{ + enum Type + { + Sky = 0x0, + FogScatter = 0x1, + FogLoss = 0x2, + MAX = 0x3, + }; +} + +namespace FExclusiveDepthStencil +{ + enum Type + { + DepthNop = 0x0, + DepthRead = 0x1, + DepthWrite = 0x2, + DepthMask = 0xf, + }; +} + +enum class ESpeedTreeLODType +{ + STLOD_Pop = 0x0, + STLOD_Smooth = 0x1, +}; + +enum class EOverlayToStoreFlag +{ + k_EOverlayToStoreFlag_None = 0x0, + k_EOverlayToStoreFlag_AddToCart = 0x1, + k_EOverlayToStoreFlag_AddToCartAndShow = 0x2, +}; + +namespace FRHIUniformBufferLayout +{ + enum EInit + { + Zero = 0x0, + }; +} + +namespace UContextMenuItemSwitchMode +{ + enum Type + { + None = 0x0, + Radio = 0x1, + Checkbox = 0x2, + }; +} + +enum class EInterpTrackParticleReplayDragType +{ + PRDT_LeftEdge = 0xa, + PRDT_RightEdge = 0xb, +}; + +namespace FExternalDragOperation +{ + enum ExternalDragType + { + DragText = 0x0, + DragFiles = 0x1, + }; +} + +enum class ETrackInterpMode +{ + FTI_Set = 0x0, + FTI_Add = 0x1, + FTI_Multiply = 0x2, + FTI_MAX = 0x3, +}; + +enum class ServerSortingTypeType +{ + Official_Asc = 0x0, + Official_Dsc = 0x1, + Ping_Asc = 0x2, + Ping_Dsc = 0x3, + Players_Asc = 0x4, + Players_Dsc = 0x5, +}; + +namespace EPostProcessVolumeType +{ + enum Type + { + Generic = 0x0, + Cave = 0x1, + Water = 0x2, + }; +} + +namespace EPawnActionMoveMode +{ + enum Type + { + UsePathfinding = 0x0, + StraightLine = 0x1, + }; +} + +namespace EShooterHudPosition +{ + enum Type + { + Left = 0x0, + FrontLeft = 0x1, + Front = 0x2, + FrontRight = 0x3, + Right = 0x4, + BackRight = 0x5, + Back = 0x6, + BackLeft = 0x7, + }; +} + +namespace PGFixed +{ + enum FixedRaw + { + RAW = 0x0, + }; +} + +enum class EUserUGCList +{ + k_EUserUGCList_Published = 0x0, + k_EUserUGCList_VotedOn = 0x1, + k_EUserUGCList_VotedUp = 0x2, + k_EUserUGCList_VotedDown = 0x3, + k_EUserUGCList_WillVoteLater = 0x4, + k_EUserUGCList_Favorited = 0x5, + k_EUserUGCList_Subscribed = 0x6, + k_EUserUGCList_UsedOrPlayed = 0x7, + k_EUserUGCList_Followed = 0x8, +}; + +enum class EInterpTrackAnimControlDragType +{ + ACDT_AnimBlockLeftEdge = 0x0, + ACDT_AnimBlockRightEdge = 0x1, +}; + +enum class EDynamicParameterUpdateFlags +{ + EDPU_UPDATE_NONE = 0x0, + EDPU_UPDATE_0 = 0x1, + EDPU_UPDATE_1 = 0x2, + EDPU_UPDATE_2 = 0x4, + EDPU_UPDATE_3 = 0x8, + EDPU_UPDATE_01 = 0x3, + EDPU_UPDATE_012 = 0x7, + EDPU_UPDATE_ALL = 0xf, +}; + +enum class EChatSteamIDInstanceFlags +{ + k_EChatAccountInstanceMask = 0xfff, + k_EChatInstanceFlagClan = 0x80000, + k_EChatInstanceFlagLobby = 0x40000, + k_EChatInstanceFlagMMSLobby = 0x20000, +}; + +namespace EChatType +{ + enum Type + { + GlobalChat = 0x0, + ProximityChat = 0x1, + RadioChat = 0x2, + GlobalTribeChat = 0x3, + AllianceChat = 0x4, + MAX = 0x5, + }; +} + +namespace EBTActiveNode +{ + enum Type + { + Composite = 0x0, + ActiveTask = 0x1, + AbortingTask = 0x2, + InactiveTask = 0x3, + }; +} + +namespace ETargetingTeamBehavior +{ + enum Type + { + ExactMatch = 0x0, + FriendlyWith = 0x1, + PrioritizeButIncludeAny = 0x2, + }; +} + +namespace ESoundMixState +{ + enum Type + { + Inactive = 0x0, + FadingIn = 0x1, + Active = 0x2, + FadingOut = 0x3, + AwaitingRemoval = 0x4, + }; +} + +enum class ProcessingStages +{ + STAGE_SOURCE = 0x1, + STAGE_RADIO = 0x2, + STAGE_REVERB = 0x3, + STAGE_EQPREMASTER = 0x4, + STAGE_OUTPUT = 0x5, +}; + +enum class ELocationSkelVertSurfaceSource +{ + VERTSURFACESOURCE_Vert = 0x0, + VERTSURFACESOURCE_Surface = 0x1, + VERTSURFACESOURCE_MAX = 0x2, +}; + +enum class ELandscapeCustomizedCoordType +{ + LCCT_None = 0x0, + LCCT_CustomUV0 = 0x1, + LCCT_CustomUV1 = 0x2, + LCCT_CustomUV2 = 0x3, + LCCT_WeightMapUV = 0x4, + LCCT_MAX = 0x5, +}; + +namespace EEvaluatorDataSource +{ + enum Type + { + EDS_SourcePose = 0x0, + EDS_DestinationPose = 0x1, + }; +} + +namespace EMissionTimerMode +{ + enum Type + { + HideTimer = 0x0, + ShowTimeRemaining = 0x1, + ShowTimeElapsed = 0x2, + UseBPGetMissionTimerText = 0x3, + }; +} + +namespace ESpawnPattern +{ + enum Type + { + Circle = 0x0, + Grid = 0x1, + Random = 0x2, + }; +} + +namespace EMissionRelatedPropertyUsage +{ + enum Type + { + Prefix = 0x0, + Suffix = 0x1, + Description = 0x2, + }; +} + +namespace EMissionRelatedPropertyType +{ + enum Type + { + Name_PropertyType = 0x0, + String_PropertyType = 0x1, + Boolean_PropertyType = 0x2, + Integer_PropertyType = 0x3, + Float_PropertyType = 0x4, + Double_PropertyType = 0x5, + }; +} + +namespace EProgressBarFillType +{ + enum Type + { + LeftToRight = 0x0, + RightToLeft = 0x1, + FillFromCenter = 0x2, + TopToBottom = 0x3, + BottomToTop = 0x4, + }; +} + +enum class EParticleSysParamType +{ + PSPT_None = 0x0, + PSPT_Scalar = 0x1, + PSPT_ScalarRand = 0x2, + PSPT_Vector = 0x3, + PSPT_VectorRand = 0x4, + PSPT_Color = 0x5, + PSPT_Actor = 0x6, + PSPT_Material = 0x7, + PSPT_MAX = 0x8, +}; + +namespace EServerOctreeGroup +{ + enum Type + { + STASISCOMPONENTS = 0x0, + PLAYERPAWNS = 0x1, + DINOPAWNS = 0x2, + PAWNS = 0x3, + STRUCTURES = 0x4, + TARGETABLEACTORS = 0x5, + PLAYERS_CONNECTED = 0x6, + SPATIALNETWORKEDACTORS = 0x7, + SPATIALNETWORKEDACTORS_DORMANT = 0x8, + ALL_SPATIAL = 0x9, + THERMALSTRUCTURES = 0xa, + STRUCTURES_CORE = 0xb, + DINOPAWNS_TAMED = 0xc, + PLAYERS_AND_TAMED_DINOS = 0xd, + PLAYERS_CONNECTED_AND_TAMED_DINOS = 0xe, + DINOFOODCONTAINER = 0xf, + GRENADES = 0x10, + TREESAPTAPS = 0x11, + LARGEUNSTASISRANGE = 0x12, + TRAPS = 0x13, + MAX = 0x14, + }; +} + +enum class ETrackToggleAction +{ + ETTA_Off = 0x0, + ETTA_On = 0x1, + ETTA_Toggle = 0x2, + ETTA_Trigger = 0x3, + ETTA_MAX = 0x4, +}; + +namespace EMultiBlockLocation +{ + enum Type + { + None = 0xff, + Start = 0x0, + Middle = 0x1, + End = 0x2, + }; +} + +enum class ParticleReplayState +{ + PRS_Disabled = 0x0, + PRS_Capturing = 0x1, + PRS_Replaying = 0x2, + PRS_MAX = 0x3, +}; + +enum class EColorPickerChannels +{ + Red = 0x0, + Green = 0x1, + Blue = 0x2, + Alpha = 0x3, + Hue = 0x4, + Saturation = 0x5, + Value = 0x6, +}; + +enum class EParticleEventType +{ + EPET_Any = 0x0, + EPET_Spawn = 0x1, + EPET_Death = 0x2, + EPET_Collision = 0x3, + EPET_Burst = 0x4, + EPET_Blueprint = 0x5, + EPET_MAX = 0x6, +}; + +namespace EEngramGroup +{ + enum Type + { + ARK_PRIME = 0x2, + ARK_SCORCHEDEARTH = 0x4, + ARK_TEK = 0x8, + ARK_UNLEARNED = 0x10, + ARK_ABERRATION = 0x20, + ARK_EXTINCTION = 0x40, + ARK_GENESIS = 0x80, + ARK_GEN2 = 0x81, + MAX = 0x82, + }; +} + +namespace EEditorMessageLogLevel +{ + enum Type + { + Error = 0x0, + Warning = 0x1, + Info = 0x2, + Success = 0x3, + }; +} + +namespace ETabRole +{ + enum Type + { + MajorTab = 0x0, + PanelTab = 0x1, + NomadTab = 0x2, + DocumentTab = 0x3, + NumRoles = 0x4, + }; +} + +namespace FolderWidgetType +{ + enum Type + { + FWT_Back = 0x0, + FWT_Folder = 0x1, + FWT_CustomFolder = 0x2, + }; +} + +namespace EJson +{ + enum Type + { + None = 0x0, + Null = 0x1, + String = 0x2, + Number = 0x3, + Boolean = 0x4, + Array = 0x5, + Object = 0x6, + }; +} + +namespace EJsonToken +{ + enum Type + { + None = 0x0, + Comma = 0x1, + CurlyOpen = 0x2, + CurlyClose = 0x3, + SquareOpen = 0x4, + SquareClose = 0x5, + Colon = 0x6, + String = 0x7, + Number = 0x8, + True = 0x9, + False = 0xa, + Null = 0xb, + Identifier = 0xc, + }; +} + +enum class EParticleVertexFactoryType +{ + PVFT_Sprite = 0x0, + PVFT_BeamTrail = 0x1, + PVFT_Mesh = 0x2, + PVFT_MAX = 0x3, +}; + +namespace EMaxConcurrentResolutionRule +{ + enum Type + { + PreventNew = 0x0, + StopOldest = 0x1, + StopFarthestThenPreventNew = 0x2, + StopFarthestThenOldest = 0x3, + }; +} + +namespace EHUDElementType +{ + enum Type + { + Text = 0x0, + ProgressBar = 0x1, + Image = 0x2, + }; +} + +namespace EHUDElementHorizontalAlignment +{ + enum Type + { + Center = 0x0, + Left = 0x1, + Right = 0x2, + }; +} + +namespace EHUDElementVerticalAlignment +{ + enum Type + { + Center = 0x0, + Top = 0x1, + Bottom = 0x2, + }; +} + +namespace Concurrency +{ + enum PolicyElementKey + { + SchedulerKind = 0x0, + MaxConcurrency = 0x1, + MinConcurrency = 0x2, + TargetOversubscriptionFactor = 0x3, + LocalContextCacheSize = 0x4, + ContextStackSize = 0x5, + ContextPriority = 0x6, + SchedulingProtocol = 0x7, + DynamicProgressFeedback = 0x8, + WinRTInitialization = 0x9, + MaxPolicyElementKey = 0xa, + }; +} + +namespace Concurrency +{ + enum WinRTInitializationType + { + InitializeWinRTAsMTA = 0x0, + DoNotInitializeWinRT = 0x1, + }; +} + +enum class ESoundGroup +{ + SOUNDGROUP_Default = 0x0, + SOUNDGROUP_Effects = 0x1, + SOUNDGROUP_UI = 0x2, + SOUNDGROUP_Music = 0x3, + SOUNDGROUP_Voice = 0x4, + SOUNDGROUP_GameSoundGroup1 = 0x5, + SOUNDGROUP_GameSoundGroup2 = 0x6, + SOUNDGROUP_GameSoundGroup3 = 0x7, + SOUNDGROUP_GameSoundGroup4 = 0x8, + SOUNDGROUP_GameSoundGroup5 = 0x9, + SOUNDGROUP_GameSoundGroup6 = 0xa, + SOUNDGROUP_GameSoundGroup7 = 0xb, + SOUNDGROUP_GameSoundGroup8 = 0xc, + SOUNDGROUP_GameSoundGroup9 = 0xd, + SOUNDGROUP_GameSoundGroup10 = 0xe, + SOUNDGROUP_GameSoundGroup11 = 0xf, + SOUNDGROUP_GameSoundGroup12 = 0x10, + SOUNDGROUP_GameSoundGroup13 = 0x11, + SOUNDGROUP_GameSoundGroup14 = 0x12, + SOUNDGROUP_GameSoundGroup15 = 0x13, + SOUNDGROUP_GameSoundGroup16 = 0x14, + SOUNDGROUP_GameSoundGroup17 = 0x15, + SOUNDGROUP_GameSoundGroup18 = 0x16, + SOUNDGROUP_GameSoundGroup19 = 0x17, + SOUNDGROUP_GameSoundGroup20 = 0x18, +}; + +enum class ETypeAdvanceAnim +{ + ETAA_Default = 0x0, + ETAA_Finished = 0x1, + ETAA_Looped = 0x2, +}; + +namespace EListSessionPVE +{ + enum Type + { + SearchingPVEandPVP = 0x0, + SearchingPVP = 0x1, + SearchingPVE = 0x2, + }; +} + +namespace EListSessionDLCType +{ + enum Type + { + SearchingAll = 0x0, + SearchingArkPrime = 0x1, + SearchingCenter = 0x2, + SearchingRagnarok = 0x3, + SearchingCrystalIsles = 0x4, + SearchingValguero = 0x5, + SearchingScorchedEarth = 0x6, + SearchingAberration = 0x7, + SearchingExtinction = 0x8, + SearchingGenesis = 0x9, + SearchingGen2 = 0xa, + SearchingPGARK = 0xb, + }; +} + +enum class AnimationCompressionFormat +{ + ACF_None = 0x0, + ACF_Float96NoW = 0x1, + ACF_Fixed48NoW = 0x2, + ACF_IntervalFixed32NoW = 0x3, + ACF_Fixed32NoW = 0x4, + ACF_Float32NoW = 0x5, + ACF_Identity = 0x6, + ACF_MAX = 0x7, +}; + +namespace EListSessionSort +{ + enum Type + { + Name = 0x0, + Players = 0x1, + Ping = 0x2, + Day = 0x3, + }; +} + +enum class EParticleSystemUpdateMode +{ + EPSUM_RealTime = 0x0, + EPSUM_FixedTime = 0x1, + EPSUM_MAX = 0x2, +}; + +enum class ParticleSystemLODMethod +{ + PARTICLESYSTEMLODMETHOD_Automatic = 0x0, + PARTICLESYSTEMLODMETHOD_DirectSet = 0x1, + PARTICLESYSTEMLODMETHOD_ActivateAutomatic = 0x2, + PARTICLESYSTEMLODMETHOD_MAX = 0x3, +}; + +enum class EParticleStates +{ + STATE_Particle_Freeze = 0x4000000, + STATE_Particle_IgnoreCollisions = 0x8000000, + STATE_Particle_FreezeTranslation = 0x10000000, + STATE_Particle_FreezeRotation = 0x20000000, + STATE_Particle_CollisionIgnoreCheck = 0x3c000000, + STATE_Particle_DelayCollisions = 0x40000000, + STATE_Particle_CollisionHasOccurred = 0x80000000, + STATE_Mask = 0xfc000000, + STATE_CounterMask = 0x3ffffff, +}; + +enum class EConvertQueryResult +{ + Valid = 0x0, + Invalid = 0x1, +}; + +namespace EMultiBoxType +{ + enum Type + { + MenuBar = 0x0, + ToolBar = 0x1, + VerticalToolBar = 0x2, + Menu = 0x3, + ButtonRow = 0x4, + }; +} + +enum class EParticleSystemOcclusionBoundsMethod +{ + EPSOBM_None = 0x0, + EPSOBM_ParticleBounds = 0x1, + EPSOBM_CustomBounds = 0x2, + EPSOBM_MAX = 0x3, +}; + +namespace EOptionsSubMenu +{ + enum Type + { + Options = 0x0, + AdvancedSettings = 0x1, + KeyBindings = 0x2, + Gamepad = 0x3, + RTSKeyBinds = 0x4, + MAX = 0x5, + }; +} + +namespace ESelectionMode +{ + enum Type + { + None = 0x0, + Single = 0x1, + SingleToggle = 0x2, + Multi = 0x3, + }; +} + +namespace ETextRole +{ + enum Type + { + Custom = 0x0, + ButtonText = 0x1, + ComboText = 0x2, + }; +} + +enum class EntryType +{ + TYPE_HELENA = 0x0, + TYPE_ROCKWELL = 0x1, + TYPE_MEIYIN = 0x2, + TYPE_NERVA = 0x3, + TYPE_BOSSES = 0x4, + TYPE_DOSSIER = 0x5, + TYPE_RAIA = 0x6, + TYPE_DAHKEYA = 0x7, + TYPE_GRADUATE = 0x8, + TYPE_DIANA = 0x9, + TYPE_SHEWHOWAITS = 0xa, + TYPE_SANTIAGO = 0xb, + TYPE_HLNABOT = 0xc, + TYPE_NIDA = 0xd, + TYPE_GABRIEL = 0xe, + MAX_COUNT = 0xf, + TYPE_NONE = 0xff, +}; + +enum class EDynamicEmitterType +{ + DET_Unknown = 0x0, + DET_Sprite = 0x1, + DET_Mesh = 0x2, + DET_Beam2 = 0x3, + DET_Ribbon = 0x4, + DET_AnimTrail = 0x5, + DET_Custom = 0x6, +}; + +namespace EAnimEventTriggerOffsets +{ + enum Type + { + OffsetBefore = 0x0, + OffsetAfter = 0x1, + NoOffset = 0x2, + }; +} + +namespace EAILogicResuming +{ + enum Type + { + Continue = 0x0, + RestartedInstead = 0x1, + }; +} + +namespace EPawnActionAbortState +{ + enum Type + { + NotBeingAborted = 0x0, + MarkPendingAbort = 0x1, + LatentAbortInProgress = 0x2, + AbortDone = 0x3, + MAX = 0x4, + }; +} + +namespace ELeaderboardGroupByMode +{ + enum Type + { + None = 0x0, + First = 0x1, + Min = 0x2, + Max = 0x3, + Sum = 0x4, + Count = 0x5, + Average = 0x6, + }; +} + +namespace ELeaderboardOrdering +{ + enum Type + { + Ascending = 0x0, + Descending = 0x1, + }; +} + +namespace EPawnActionEventType +{ + enum Type + { + Invalid = 0x0, + FailedToStart = 0x1, + FinishedAborting = 0x2, + FinishedExecution = 0x3, + Push = 0x4, + }; +} + +namespace EAlignHorizontalUI +{ + enum Type + { + Left = 0x0, + Center = 0x1, + Right = 0x2, + }; +} + +namespace EAIRequestPriority +{ + enum Type + { + SoftScript = 0x0, + Logic = 0x1, + HardScript = 0x2, + Reaction = 0x3, + Ultimate = 0x4, + MAX = 0x5, + }; +} + +namespace EHostSessionPanel +{ + enum RightPanel + { + MODS = 0x0, + MAPS = 0x1, + PATCH_NOTES = 0x2, + }; +} + +namespace EMissionDispatchMode +{ + enum Type + { + StartAnywhere = 0x0, + RequireNearbyMissionDispatcher = 0x1, + RequireInsideMissionDispatcher = 0x2, + UseBPStaticCanStartMission = 0x3, + RequireInsideDispatcherNoCheck = 0x4, + }; +} + +enum class EBlendSpaceAxis +{ + BSA_None = 0x0, + BSA_X = 0x1, + BSA_Y = 0x2, + BSA_Max = 0x3, +}; + +enum class EBoneControlSpace +{ + BCS_WorldSpace = 0x0, + BCS_ComponentSpace = 0x1, + BCS_ParentBoneSpace = 0x2, + BCS_BoneSpace = 0x3, + BCS_MAX = 0x4, +}; + +enum class EBoneRotationSource +{ + BRS_KeepComponentSpaceRotation = 0x0, + BRS_KeepLocalSpaceRotation = 0x1, + BRS_CopyFromTarget = 0x2, +}; + +namespace ESTOFNotificationType +{ + enum Type + { + Death = 0x0, + TribeEliminated = 0x1, + MatchVictory = 0x2, + MatchDraw = 0x3, + MAX = 0x4, + }; +} + +namespace EOnlineKeyValuePairDataType +{ + enum Type + { + Empty = 0x0, + Int32 = 0x1, + Int64 = 0x2, + Double = 0x3, + String = 0x4, + Float = 0x5, + Blob = 0x6, + Bool = 0x7, + MAX = 0x8, + }; +} + +namespace ESplinePointType +{ + enum Type + { + Linear = 0x0, + Curve = 0x1, + Constant = 0x2, + CurveClamped = 0x3, + CurveCustomTangent = 0x4, + }; +} + +namespace ESplineCoordinateSpace +{ + enum Type + { + Local = 0x0, + World = 0x1, + }; +} + +namespace EPrimalARKTributeDataType +{ + enum Type + { + Items = 0x0, + TamedDinos = 0x1, + CharacterData = 0x2, + MAX = 0x3, + }; +} + +namespace ELandscapeLayerPaintingRestriction +{ + enum Type + { + None = 0x0, + UseMaxLayers = 0x1, + ExistingOnly = 0x2, + }; +} + +namespace EPathFollowingResult +{ + enum Type + { + Success = 0x0, + Blocked = 0x1, + OffPath = 0x2, + Aborted = 0x3, + Skipped = 0x4, + Invalid = 0x5, + }; +} + +namespace ELandscapeLODFalloff +{ + enum Type + { + Linear = 0x0, + SquareRoot = 0x1, + }; +} + +namespace EDinoTamedOrder +{ + enum Type + { + SetAggressionPassive = 0x0, + SetAggressionNeutral = 0x1, + SetAggressionAggressive = 0x2, + SetAggressionAttackTarget = 0x3, + ToggleFollowMe = 0x4, + FollowMe = 0x5, + StopFollowing = 0x6, + CycleFollowDistance = 0x7, + SetAggressionPassiveFlee = 0x8, + LandingToMe = 0x9, + MAX = 0xa, + }; +} + +namespace EPathFollowingRequestResult +{ + enum Type + { + Failed = 0x0, + AlreadyAtGoal = 0x1, + RequestSuccessful = 0x2, + }; +} + +namespace EColumnSortPriority +{ + enum Type + { + Primary = 0x0, + Secondary = 0x1, + Max = 0x2, + }; +} + +namespace EPathFollowingDebugTokens +{ + enum Type + { + Description = 0x0, + ParamName = 0x1, + FailedValue = 0x2, + PassedValue = 0x3, + }; +} + +namespace EPrimalCharacterInputType +{ + enum Type + { + PrimaryFire = 0x0, + Targeting = 0x1, + AltFire = 0x2, + SwitchWeapon = 0x3, + Reload = 0x4, + Crouch = 0x5, + Prone = 0x6, + CrouchProneToggle = 0x7, + SwitchMap = 0x8, + DinoAttack = 0x9, + }; +} + +namespace EVehicleDifferential4W +{ + enum Type + { + LimitedSlip_4W = 0x0, + LimitedSlip_FrontDrive = 0x1, + LimitedSlip_RearDrive = 0x2, + Open_4W = 0x3, + Open_FrontDrive = 0x4, + Open_RearDrive = 0x5, + }; +} + +enum class HighlightStartingPoint +{ + TopLeft = 0x0, + Center = 0x1, +}; + +namespace EHelpPage +{ + enum Type + { + HELP = 0x0, + UI = 0x1, + CRAFTING = 0x2, + CREATURES = 0x3, + EXPLORATION = 0x4, + MAX = 0x5, + }; +} + +namespace EHelpPage +{ + enum PageNumber + { + PAGE_ONE = 0x0, + PAGE_TWO = 0x1, + PAGE_THREE = 0x2, + PAGE_FOUR = 0x3, + PAGE_FIVE = 0x4, + PAGE_SIX = 0x5, + PAGE_SEVEN = 0x6, + PAGE_MAX = 0x7, + }; +} + +namespace ELootItemType +{ + enum Type + { + None = 0x0, + Element = 0x1, + Hexagons = 0x2, + ResourceCommon = 0x3, + ResourceUncommon = 0x4, + ResourceRare = 0x5, + ArmorTier1 = 0x6, + ArmorTier2 = 0x7, + ArmorTier3 = 0x8, + ArmorTek = 0x9, + WeaponTier1 = 0xa, + WeaponTier2 = 0xb, + WeaponTier3 = 0xc, + WeaponTek = 0xd, + AmmoTier1 = 0xe, + AmmoTier2 = 0xf, + AmmoTier3 = 0x10, + Saddle = 0x11, + }; +} + +namespace ESimpleCurve +{ + enum Type + { + Linear = 0x0, + Pow0_5 = 0x1, + Pow1_0 = 0x2, + Pow1_5 = 0x3, + Pow2_0 = 0x4, + Pow2_5 = 0x5, + Pow3_0 = 0x6, + Pow3_5 = 0x7, + PowCos0_5 = 0x8, + PowCos1_0 = 0x9, + PowCos1_5 = 0xa, + PowCos2_0 = 0xb, + PowCos2_5 = 0xc, + PowCos3_0 = 0xd, + PowCos3_5 = 0xe, + PowSin0_5 = 0xf, + PowSin1_0 = 0x10, + PowSin1_5 = 0x11, + PowSin2_0 = 0x12, + PowSin2_5 = 0x13, + PowSin3_0 = 0x14, + PowSin3_5 = 0x15, + PowMinCos0_5 = 0x16, + PowMinCos1_0 = 0x17, + PowMinCos1_5 = 0x18, + PowMinCos2_0 = 0x19, + PowMinCos2_5 = 0x1a, + PowMinCos3_0 = 0x1b, + PowMinCos3_5 = 0x1c, + PowMax0_5 = 0x1d, + PowMax1_0 = 0x1e, + PowMax1_5 = 0x1f, + PowMax2_0 = 0x20, + PowMax2_5 = 0x21, + PowMax3_0 = 0x22, + PowMax3_5 = 0x23, + }; +} + +namespace ELevelExperienceRampType +{ + enum Type + { + Player = 0x0, + DinoEasy = 0x1, + DinoMedium = 0x2, + DinoHard = 0x3, + MAX = 0x4, + }; +} + +namespace EPendingJobState +{ + enum State + { + Pending = 0x0, + Started = 0x1, + Streaming = 0x2, + Cancelled = 0x3, + }; +} + +namespace EPrimalConsumableType +{ + enum Type + { + Food = 0x0, + Water = 0x1, + Medicine = 0x2, + Other = 0x3, + MAX = 0x4, + }; +} + +namespace EPrimalCharacterStatusState +{ + enum Type + { + Dead = 0x0, + Winded = 0x1, + Starvation = 0x2, + Dehydration = 0x3, + Suffocation = 0x4, + Encumbered = 0x5, + Hypothermia = 0x6, + Hyperthermia = 0x7, + Injured = 0x8, + KnockedOut = 0x9, + Sleeping = 0xa, + Cold = 0xb, + Hot = 0xc, + Crafting = 0xd, + MAX = 0xe, + }; +} + +namespace EInventoryDataListType +{ + enum Type + { + LocalEquipment = 0x1, + LocalQuickSlots = 0x4, + LocalItems = 0x8, + LocalCraftables = 0x10, + RemoteItems = 0x100, + RemoteCraftables = 0x200, + RemoteEquipment = 0x400, + ArkInventory = 0x10000, + Droppable = 0x20000, + DroppableMinusEquipped = 0x40000, + Colors = 0x80000, + Brushes = 0x100000, + Dyes = 0x200000, + Ingredients = 0x400000, + Mask_Local = 0xff, + Mask_Remote = 0xff00, + Mask_LocalInventory = 0x18, + Mask_RemoteInventory = 0x300, + Mask_LocalDataList = 0x19, + Mask_RemoteDataList = 0x700, + Mask_Inventories = 0x10318, + Mask_Items = 0x108, + Mask_Craftables = 0x210, + Mask_Equipment = 0x401, + }; +} + +namespace EUserInterfaceActionType +{ + enum Type + { + Button = 0x0, + ToggleButton = 0x1, + RadioButton = 0x2, + Check = 0x3, + }; +} + +namespace EFriendsLists +{ + enum Type + { + Default = 0x0, + RecentPlayers = 0x1, + OnlinePlayers = 0x2, + InGamePlayers = 0x3, + }; +} + +namespace EBoidType +{ + enum Type + { + Follower = 0x0, + Leader = 0x1, + FreeAgent = 0x2, + }; +} + +namespace EStretch +{ + enum Type + { + None = 0x0, + Fill = 0x1, + ScaleToFit = 0x2, + ScaleToFill = 0x3, + }; +} + +enum class TextEntryInstigator +{ + RENAME_TRIBE = 0x0, + RENAME_GROUP_RANK = 0x1, + RENAME_ALLIANCE = 0x2, + NEW_ALLIANCE = 0x3, + NEW_GROUP_RANK = 0x4, + NONE = 0x5, +}; + +enum class ESortState +{ + Empty_Arrow = 0x0, + Up_Arrow = 0x1, + Down_Arrow = 0x2, +}; + +namespace EShooterCrosshairDirection +{ + enum Type + { + Left = 0x0, + Right = 0x1, + Top = 0x2, + Bottom = 0x3, + Center = 0x4, + }; +} + +namespace EShooterPhysMaterialType +{ + enum Type + { + Unknown = 0x0, + Concrete = 0x1, + Dirt = 0x2, + Water = 0x3, + Metal = 0x4, + Wood = 0x5, + Grass = 0x6, + Glass = 0x7, + Flesh = 0x8, + Leaves = 0x9, + Rock = 0xa, + Sand = 0xb, + Snow = 0xc, + Corruption = 0xd, + Lava = 0xe, + Acid = 0xf, + MAX = 0x10, + }; +} + +namespace EExtensionHook +{ + enum Position + { + Before = 0x0, + After = 0x1, + First = 0x2, + }; +} + +namespace EMissionDispatcherTriggerMode +{ + enum Type + { + AutoStartMission = 0x0, + Ignore = 0x1, + ActivateViaMultiUse = 0x2, + }; +} + +namespace EWeaponState +{ + enum Type + { + Idle = 0x0, + Firing = 0x1, + Reloading = 0x2, + Equipping = 0x3, + UnEquipping = 0x4, + }; +} + +namespace ETabSpawnerMenuType +{ + enum Type + { + Display = 0x0, + Hide = 0x1, + }; +} + +namespace EShooterDialogType +{ + enum Type + { + None = 0x0, + Generic = 0x1, + ControllerDisconnected = 0x2, + }; +} + +namespace EBTNodeResult +{ + enum Type + { + Succeeded = 0x0, + Failed = 0x1, + Aborted = 0x2, + InProgress = 0x3, + }; +} + +enum class ModItemStatus +{ + IS_None = 0x0, + IS_Ready = 0x1, + IS_RetrieveingInfo = 0x2, + IS_Subscribing = 0x3, + IS_Waiting = 0x4, + IS_Installing = 0x5, + IS_Copying = 0x6, + IS_Failed = 0x7, +}; + +namespace ESPMessageType +{ + enum Type + { + Default = 0x0, + Error = 0x1, + Warning = 0x2, + Helpful = 0x3, + }; +} + +namespace EBTExecutionMode +{ + enum Type + { + SingleRun = 0x0, + Looped = 0x1, + }; +} + +namespace EBTFlowAbortMode +{ + enum Type + { + None = 0x0, + LowerPriority = 0x1, + Self = 0x2, + Both = 0x3, + }; +} + +namespace EBTTaskStatus +{ + enum Type + { + Active = 0x0, + Aborting = 0x1, + Inactive = 0x2, + }; +} + +namespace EBTNodeUpdateMode +{ + enum Type + { + Add = 0x0, + AddForLowerPri = 0x1, + Remove = 0x2, + }; +} + +namespace EOnJoinSessionCompleteResult +{ + enum Type + { + Success = 0x0, + RoomIsFull = 0x1, + RoomDoesNotExist = 0x2, + CouldNotRetrieveAddress = 0x3, + AlreadyInSession = 0x4, + UnknownError = 0x5, + }; +} + +enum class EKeyboardType +{ + Keyboard_Default = 0x0, + Keyboard_Number = 0x1, + Keyboard_Web = 0x2, + Keyboard_Email = 0x3, + Keyboard_Password = 0x4, +}; + +namespace EMassTeleportState +{ + enum Type + { + INITIATED = 0x0, + TRIGGERED_SUCCESS = 0x1, + TRIGGERED_FAILED = 0x2, + COMPLETED = 0x3, + CANCELLED = 0x4, + }; +} + +enum class ELobbyType +{ + k_ELobbyTypePrivate = 0x0, + k_ELobbyTypeFriendsOnly = 0x1, + k_ELobbyTypePublic = 0x2, + k_ELobbyTypeInvisible = 0x3, +}; + +namespace EClimbingType +{ + enum Type + { + None = 0x0, + ClimbLook = 0x1, + ClimbInput = 0x2, + Slide = 0x3, + MAX = 0x4, + }; +} + +namespace ESlateVisibility +{ + enum Type + { + Visible = 0x0, + Collapsed = 0x1, + Hidden = 0x2, + HitTestInvisible = 0x3, + SelfHitTestInvisible = 0x4, + }; +} + +namespace ETransitionBlendMode +{ + enum Type + { + TBM_Linear = 0x0, + TBM_Cubic = 0x1, + }; +} + +namespace ETransitionLogicType +{ + enum Type + { + TLT_StandardBlend = 0x0, + TLT_Custom = 0x1, + }; +} + +namespace ETabState +{ + enum Type + { + OpenedTab = 0x1, + ClosedTab = 0x2, + }; +} + +namespace ESlateCheckBoxState +{ + enum Type + { + Unchecked = 0x0, + Checked = 0x1, + Undetermined = 0x2, + }; +} + +namespace EBTDescriptionVerbosity +{ + enum Type + { + Basic = 0x0, + Detailed = 0x1, + }; +} + +namespace EWorldBuffPropertyLocation +{ + enum Type + { + GameMode = 0x0, + GameState = 0x1, + }; +} + +namespace EMissionState +{ + enum Type + { + ServerSetup = 0x0, + Activated = 0x1, + Suspended = 0x2, + Deactivated = 0x3, + }; +} + +namespace SVirtualJoystick +{ + enum EVirtualJoystickState + { + State_Active = 0x0, + State_CountingDownToInactive = 0x1, + State_CountingDownToReset = 0x2, + State_Inactive = 0x3, + State_WaitForStart = 0x4, + State_CountingDownToStart = 0x5, + }; +} + +enum class EFriendRelationship +{ + k_EFriendRelationshipNone = 0x0, + k_EFriendRelationshipBlocked = 0x1, + k_EFriendRelationshipRequestRecipient = 0x2, + k_EFriendRelationshipFriend = 0x3, + k_EFriendRelationshipRequestInitiator = 0x4, + k_EFriendRelationshipIgnored = 0x5, + k_EFriendRelationshipIgnoredFriend = 0x6, + k_EFriendRelationshipSuggested = 0x7, + k_EFriendRelationshipMax = 0x8, +}; + +enum class EMediaPlayerStreamModes +{ + MASM_FromMemory = 0x0, + MASM_FromUrl = 0x1, + MASM_MAX = 0x2, +}; + +enum class AtlasVoiceChannelType +{ + Echo = 0x0, + NonPositional = 0x1, + Positional = 0x2, +}; + +namespace IOnlineIdentity +{ + enum EPrivilegeResults + { + NoFailures = 0x0, + RequiredPatchAvailable = 0x1, + RequiredSystemUpdate = 0x2, + AgeRestrictionFailure = 0x4, + AccountTypeFailure = 0x8, + UserNotFound = 0x10, + ChatRestriction = 0x20, + UGCRestriction = 0x40, + GenericFailure = 0x80, + }; +} + +enum class EVoiceChatTransmitMode +{ + None = 0x0, + All = 0x1, + Channel = 0x2, +}; + +namespace SSplitter +{ + enum ESizeRule + { + SizeToContent = 0x0, + FractionOfParent = 0x1, + }; +} + +namespace EBasePassSort +{ + enum Type + { + Auto = 0x0, + None = 0x1, + SortStateBuckets = 0x2, + SortPerMesh = 0x3, + FirstForcedMode = 0x1, + LastForcedMode = 0x3, + }; +} + +enum class EPersonaState +{ + k_EPersonaStateOffline = 0x0, + k_EPersonaStateOnline = 0x1, + k_EPersonaStateBusy = 0x2, + k_EPersonaStateAway = 0x3, + k_EPersonaStateSnooze = 0x4, + k_EPersonaStateLookingToTrade = 0x5, + k_EPersonaStateLookingToPlay = 0x6, + k_EPersonaStateMax = 0x7, +}; + +enum class ETextHitPoint +{ + WithinText = 0x0, + LeftGutter = 0x1, + RightGutter = 0x2, +}; + +enum class EVoiceMode +{ + Silent = 0x0, + Talking = 0x1, + Yelling = 0x2, + Whispering = 0x3, +}; + +namespace SVolumeControl +{ + enum ESpeakerIcon + { + ES_Full = 0x0, + ES_Mid = 0x1, + ES_Low = 0x2, + ES_Off = 0x3, + ES_Muted = 0x4, + ES_MAX = 0x5, + }; +} + +enum class WICBitmapEncoderCacheOption +{ + WICBitmapEncoderCacheInMemory = 0x0, + WICBitmapEncoderCacheTempFile = 0x1, + WICBitmapEncoderNoCache = 0x2, + WICBITMAPENCODERCACHEOPTION_FORCE_DWORD = 0x7fffffff, +}; + +enum class dtStraightPathFlags +{ + DT_STRAIGHTPATH_START = 0x1, + DT_STRAIGHTPATH_END = 0x2, + DT_STRAIGHTPATH_OFFMESH_CONNECTION = 0x4, +}; + +namespace SMenuAnchor +{ + enum EMethod + { + CreateNewWindow = 0x0, + UseCurrentWindow = 0x1, + }; +} + +enum class UNormalization2Mode +{ + UNORM2_COMPOSE = 0x0, + UNORM2_DECOMPOSE = 0x1, + UNORM2_FCD = 0x2, + UNORM2_COMPOSE_CONTIGUOUS = 0x3, +}; + +namespace FAtmosphereShaderPrecomputeTextureParameters +{ + enum TexType + { + Transmittance = 0x0, + Irradiance = 0x1, + DeltaE = 0x2, + Inscatter = 0x3, + DeltaSR = 0x4, + DeltaSM = 0x5, + DeltaJ = 0x6, + Type_MAX = 0x7, + }; +} + +namespace SNotificationItem +{ + enum ECompletionState + { + CS_None = 0x0, + CS_Pending = 0x1, + CS_Success = 0x2, + CS_Fail = 0x3, + }; +} + +enum class EEntryCategory +{ + LearnedNotes = 0x0, + TheIsland = 0x1, + ScorchedEarth = 0x2, + Aberration = 0x3, + Extinction = 0x4, + Genesis1 = 0x5, + Genesis2 = 0x6, + MAX_COUNT = 0x7, +}; + +enum class EMeshCameraFacingOptions +{ + XAxisFacing_NoUp = 0x0, + XAxisFacing_ZUp = 0x1, + XAxisFacing_NegativeZUp = 0x2, + XAxisFacing_YUp = 0x3, + XAxisFacing_NegativeYUp = 0x4, + LockedAxis_ZAxisFacing = 0x5, + LockedAxis_NegativeZAxisFacing = 0x6, + LockedAxis_YAxisFacing = 0x7, + LockedAxis_NegativeYAxisFacing = 0x8, + VelocityAligned_ZAxisFacing = 0x9, + VelocityAligned_NegativeZAxisFacing = 0xa, + VelocityAligned_YAxisFacing = 0xb, + VelocityAligned_NegativeYAxisFacing = 0xc, + EMeshCameraFacingOptions_MAX = 0xd, +}; + +enum class EWorkshopFileType +{ + k_EWorkshopFileTypeFirst = 0x0, +}; + +namespace ITextInputMethodChangeNotifier +{ + enum ELayoutChangeType + { + Created = 0x0, + Changed = 0x1, + Destroyed = 0x2, + }; +} + +enum class ECursorAction +{ + MoveCursor = 0x0, + SelectText = 0x1, +}; + +enum class EDDSCaps +{ + DDSC_CubeMap = 0x200, + DDSC_CubeMap_AllFaces = 0xfc00, + DDSC_Volume = 0x200000, +}; + +enum class ECullObjectsForShadowCSFlags +{ + ECullObjectsForShadowCS_None = 0x0, + ECullObjectsForShadowCS_UseHighCount = 0x1, + ECullObjectsForShadowCS_AggressiveCulling = 0x2, + ECullObjectsForShadowCS_UseLayerCulling = 0x4, +}; + +enum class ECursorMoveGranularity +{ + Character = 0x0, + Word = 0x1, +}; + +namespace FPopupTransitionEffect +{ + enum ESlideDirection + { + None = 0x0, + ComboButton = 0x1, + TopMenu = 0x2, + SubMenu = 0x3, + TypeInPopup = 0x4, + ContextMenu = 0x5, + }; +} + +enum class ETextLocation +{ + BeginningOfDocument = 0x0, + EndOfDocument = 0x1, + BeginningOfLine = 0x2, + EndOfLine = 0x3, +}; + +enum class UCalendarDateFields +{ + UCAL_ERA = 0x0, + UCAL_YEAR = 0x1, + UCAL_MONTH = 0x2, + UCAL_WEEK_OF_YEAR = 0x3, + UCAL_WEEK_OF_MONTH = 0x4, + UCAL_DATE = 0x5, + UCAL_DAY_OF_YEAR = 0x6, + UCAL_DAY_OF_WEEK = 0x7, + UCAL_DAY_OF_WEEK_IN_MONTH = 0x8, + UCAL_AM_PM = 0x9, + UCAL_HOUR = 0xa, + UCAL_HOUR_OF_DAY = 0xb, + UCAL_MINUTE = 0xc, + UCAL_SECOND = 0xd, + UCAL_MILLISECOND = 0xe, + UCAL_ZONE_OFFSET = 0xf, + UCAL_DST_OFFSET = 0x10, + UCAL_YEAR_WOY = 0x11, + UCAL_DOW_LOCAL = 0x12, + UCAL_EXTENDED_YEAR = 0x13, + UCAL_JULIAN_DAY = 0x14, + UCAL_MILLISECONDS_IN_DAY = 0x15, + UCAL_IS_LEAP_MONTH = 0x16, + UCAL_FIELD_COUNT = 0x17, + UCAL_DAY_OF_MONTH = 0x5, +}; + +enum class EGamepadTextInputLineMode +{ + k_EGamepadTextInputLineModeSingleLine = 0x0, + k_EGamepadTextInputLineModeMultipleLines = 0x1, +}; + +namespace EDocumentationActorType +{ + enum Type + { + None = 0x0, + UDNLink = 0x1, + URLLink = 0x2, + InvalidLink = 0x3, + }; +} + +enum class EFilterCombineMethod +{ + EFCM_Weighted = 0x0, + EFCM_MaxMagnitude = 0x1, +}; + +namespace SMultiLineEditableText +{ + enum ECursorAlignment + { + Left = 0x0, + Right = 0x1, + }; +} + +namespace FAIMessage +{ + enum EStatus + { + Failure = 0x0, + Success = 0x1, + }; +} + +enum class EWorldPositionIncludedOffsets +{ + WPT_Default = 0x0, + WPT_ExcludeAllShaderOffsets = 0x1, + WPT_CameraRelative = 0x2, + WPT_CameraRelativeNoOffsets = 0x3, + WPT_MAX = 0x4, +}; + +enum class CURLoption +{ + CURLOPT_FILE = 0x2711, + CURLOPT_URL = 0x2712, + CURLOPT_PORT = 0x3, + CURLOPT_PROXY = 0x2714, + CURLOPT_USERPWD = 0x2715, + CURLOPT_PROXYUSERPWD = 0x2716, + CURLOPT_RANGE = 0x2717, + CURLOPT_INFILE = 0x2719, + CURLOPT_ERRORBUFFER = 0x271a, + CURLOPT_WRITEFUNCTION = 0x4e2b, + CURLOPT_READFUNCTION = 0x4e2c, + CURLOPT_TIMEOUT = 0xd, + CURLOPT_INFILESIZE = 0xe, + CURLOPT_POSTFIELDS = 0x271f, + CURLOPT_REFERER = 0x2720, + CURLOPT_FTPPORT = 0x2721, + CURLOPT_USERAGENT = 0x2722, + CURLOPT_LOW_SPEED_LIMIT = 0x13, + CURLOPT_LOW_SPEED_TIME = 0x14, + CURLOPT_RESUME_FROM = 0x15, + CURLOPT_COOKIE = 0x2726, + CURLOPT_HTTPHEADER = 0x2727, + CURLOPT_HTTPPOST = 0x2728, + CURLOPT_SSLCERT = 0x2729, + CURLOPT_KEYPASSWD = 0x272a, + CURLOPT_CRLF = 0x1b, + CURLOPT_QUOTE = 0x272c, + CURLOPT_WRITEHEADER = 0x272d, + CURLOPT_COOKIEFILE = 0x272f, + CURLOPT_SSLVERSION = 0x20, + CURLOPT_TIMECONDITION = 0x21, + CURLOPT_TIMEVALUE = 0x22, + CURLOPT_CUSTOMREQUEST = 0x2734, + CURLOPT_STDERR = 0x2735, + CURLOPT_POSTQUOTE = 0x2737, + CURLOPT_WRITEINFO = 0x2738, + CURLOPT_VERBOSE = 0x29, + CURLOPT_HEADER = 0x2a, + CURLOPT_NOPROGRESS = 0x2b, + CURLOPT_NOBODY = 0x2c, + CURLOPT_FAILONERROR = 0x2d, + CURLOPT_UPLOAD = 0x2e, + CURLOPT_POST = 0x2f, + CURLOPT_DIRLISTONLY = 0x30, + CURLOPT_APPEND = 0x32, + CURLOPT_NETRC = 0x33, + CURLOPT_FOLLOWLOCATION = 0x34, + CURLOPT_TRANSFERTEXT = 0x35, + CURLOPT_PUT = 0x36, + CURLOPT_PROGRESSFUNCTION = 0x4e58, + CURLOPT_PROGRESSDATA = 0x2749, + CURLOPT_AUTOREFERER = 0x3a, + CURLOPT_PROXYPORT = 0x3b, + CURLOPT_POSTFIELDSIZE = 0x3c, + CURLOPT_HTTPPROXYTUNNEL = 0x3d, + CURLOPT_INTERFACE = 0x274e, + CURLOPT_KRBLEVEL = 0x274f, + CURLOPT_SSL_VERIFYPEER = 0x40, + CURLOPT_CAINFO = 0x2751, + CURLOPT_MAXREDIRS = 0x44, + CURLOPT_FILETIME = 0x45, + CURLOPT_TELNETOPTIONS = 0x2756, + CURLOPT_MAXCONNECTS = 0x47, + CURLOPT_CLOSEPOLICY = 0x48, + CURLOPT_FRESH_CONNECT = 0x4a, + CURLOPT_FORBID_REUSE = 0x4b, + CURLOPT_RANDOM_FILE = 0x275c, + CURLOPT_EGDSOCKET = 0x275d, + CURLOPT_CONNECTTIMEOUT = 0x4e, + CURLOPT_HEADERFUNCTION = 0x4e6f, + CURLOPT_HTTPGET = 0x50, + CURLOPT_SSL_VERIFYHOST = 0x51, + CURLOPT_COOKIEJAR = 0x2762, + CURLOPT_SSL_CIPHER_LIST = 0x2763, + CURLOPT_HTTP_VERSION = 0x54, + CURLOPT_FTP_USE_EPSV = 0x55, + CURLOPT_SSLCERTTYPE = 0x2766, + CURLOPT_SSLKEY = 0x2767, + CURLOPT_SSLKEYTYPE = 0x2768, + CURLOPT_SSLENGINE = 0x2769, + CURLOPT_SSLENGINE_DEFAULT = 0x5a, + CURLOPT_DNS_USE_GLOBAL_CACHE = 0x5b, + CURLOPT_DNS_CACHE_TIMEOUT = 0x5c, + CURLOPT_PREQUOTE = 0x276d, + CURLOPT_DEBUGFUNCTION = 0x4e7e, + CURLOPT_DEBUGDATA = 0x276f, + CURLOPT_COOKIESESSION = 0x60, + CURLOPT_CAPATH = 0x2771, + CURLOPT_BUFFERSIZE = 0x62, + CURLOPT_NOSIGNAL = 0x63, + CURLOPT_SHARE = 0x2774, + CURLOPT_PROXYTYPE = 0x65, + CURLOPT_ACCEPT_ENCODING = 0x2776, + CURLOPT_PRIVATE = 0x2777, + CURLOPT_HTTP200ALIASES = 0x2778, + CURLOPT_UNRESTRICTED_AUTH = 0x69, + CURLOPT_FTP_USE_EPRT = 0x6a, + CURLOPT_HTTPAUTH = 0x6b, + CURLOPT_SSL_CTX_FUNCTION = 0x4e8c, + CURLOPT_SSL_CTX_DATA = 0x277d, + CURLOPT_FTP_CREATE_MISSING_DIRS = 0x6e, + CURLOPT_PROXYAUTH = 0x6f, + CURLOPT_FTP_RESPONSE_TIMEOUT = 0x70, + CURLOPT_IPRESOLVE = 0x71, + CURLOPT_MAXFILESIZE = 0x72, + CURLOPT_INFILESIZE_LARGE = 0x75a3, + CURLOPT_RESUME_FROM_LARGE = 0x75a4, + CURLOPT_MAXFILESIZE_LARGE = 0x75a5, + CURLOPT_NETRC_FILE = 0x2786, + CURLOPT_USE_SSL = 0x77, + CURLOPT_POSTFIELDSIZE_LARGE = 0x75a8, + CURLOPT_TCP_NODELAY = 0x79, + CURLOPT_FTPSSLAUTH = 0x81, + CURLOPT_IOCTLFUNCTION = 0x4ea2, + CURLOPT_IOCTLDATA = 0x2793, + CURLOPT_FTP_ACCOUNT = 0x2796, + CURLOPT_COOKIELIST = 0x2797, + CURLOPT_IGNORE_CONTENT_LENGTH = 0x88, + CURLOPT_FTP_SKIP_PASV_IP = 0x89, + CURLOPT_FTP_FILEMETHOD = 0x8a, + CURLOPT_LOCALPORT = 0x8b, + CURLOPT_LOCALPORTRANGE = 0x8c, + CURLOPT_CONNECT_ONLY = 0x8d, + CURLOPT_CONV_FROM_NETWORK_FUNCTION = 0x4eae, + CURLOPT_CONV_TO_NETWORK_FUNCTION = 0x4eaf, + CURLOPT_CONV_FROM_UTF8_FUNCTION = 0x4eb0, + CURLOPT_MAX_SEND_SPEED_LARGE = 0x75c1, + CURLOPT_MAX_RECV_SPEED_LARGE = 0x75c2, + CURLOPT_FTP_ALTERNATIVE_TO_USER = 0x27a3, + CURLOPT_SOCKOPTFUNCTION = 0x4eb4, + CURLOPT_SOCKOPTDATA = 0x27a5, + CURLOPT_SSL_SESSIONID_CACHE = 0x96, + CURLOPT_SSH_AUTH_TYPES = 0x97, + CURLOPT_SSH_PUBLIC_KEYFILE = 0x27a8, + CURLOPT_SSH_PRIVATE_KEYFILE = 0x27a9, + CURLOPT_FTP_SSL_CCC = 0x9a, + CURLOPT_TIMEOUT_MS = 0x9b, + CURLOPT_CONNECTTIMEOUT_MS = 0x9c, + CURLOPT_HTTP_TRANSFER_DECODING = 0x9d, + CURLOPT_HTTP_CONTENT_DECODING = 0x9e, + CURLOPT_NEW_FILE_PERMS = 0x9f, + CURLOPT_NEW_DIRECTORY_PERMS = 0xa0, + CURLOPT_POSTREDIR = 0xa1, + CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 = 0x27b2, + CURLOPT_OPENSOCKETFUNCTION = 0x4ec3, + CURLOPT_OPENSOCKETDATA = 0x27b4, + CURLOPT_COPYPOSTFIELDS = 0x27b5, + CURLOPT_PROXY_TRANSFER_MODE = 0xa6, + CURLOPT_SEEKFUNCTION = 0x4ec7, + CURLOPT_SEEKDATA = 0x27b8, + CURLOPT_CRLFILE = 0x27b9, + CURLOPT_ISSUERCERT = 0x27ba, + CURLOPT_ADDRESS_SCOPE = 0xab, + CURLOPT_CERTINFO = 0xac, + CURLOPT_USERNAME = 0x27bd, + CURLOPT_PASSWORD = 0x27be, + CURLOPT_PROXYUSERNAME = 0x27bf, + CURLOPT_PROXYPASSWORD = 0x27c0, + CURLOPT_NOPROXY = 0x27c1, + CURLOPT_TFTP_BLKSIZE = 0xb2, + CURLOPT_SOCKS5_GSSAPI_SERVICE = 0x27c3, + CURLOPT_SOCKS5_GSSAPI_NEC = 0xb4, + CURLOPT_PROTOCOLS = 0xb5, + CURLOPT_REDIR_PROTOCOLS = 0xb6, + CURLOPT_SSH_KNOWNHOSTS = 0x27c7, + CURLOPT_SSH_KEYFUNCTION = 0x4ed8, + CURLOPT_SSH_KEYDATA = 0x27c9, + CURLOPT_MAIL_FROM = 0x27ca, + CURLOPT_MAIL_RCPT = 0x27cb, + CURLOPT_FTP_USE_PRET = 0xbc, + CURLOPT_RTSP_REQUEST = 0xbd, + CURLOPT_RTSP_SESSION_ID = 0x27ce, + CURLOPT_RTSP_STREAM_URI = 0x27cf, + CURLOPT_RTSP_TRANSPORT = 0x27d0, + CURLOPT_RTSP_CLIENT_CSEQ = 0xc1, + CURLOPT_RTSP_SERVER_CSEQ = 0xc2, + CURLOPT_INTERLEAVEDATA = 0x27d3, + CURLOPT_INTERLEAVEFUNCTION = 0x4ee4, + CURLOPT_WILDCARDMATCH = 0xc5, + CURLOPT_CHUNK_BGN_FUNCTION = 0x4ee6, + CURLOPT_CHUNK_END_FUNCTION = 0x4ee7, + CURLOPT_FNMATCH_FUNCTION = 0x4ee8, + CURLOPT_CHUNK_DATA = 0x27d9, + CURLOPT_FNMATCH_DATA = 0x27da, + CURLOPT_RESOLVE = 0x27db, + CURLOPT_TLSAUTH_USERNAME = 0x27dc, + CURLOPT_TLSAUTH_PASSWORD = 0x27dd, + CURLOPT_TLSAUTH_TYPE = 0x27de, + CURLOPT_TRANSFER_ENCODING = 0xcf, + CURLOPT_CLOSESOCKETFUNCTION = 0x4ef0, + CURLOPT_CLOSESOCKETDATA = 0x27e1, + CURLOPT_GSSAPI_DELEGATION = 0xd2, + CURLOPT_DNS_SERVERS = 0x27e3, + CURLOPT_ACCEPTTIMEOUT_MS = 0xd4, + CURLOPT_TCP_KEEPALIVE = 0xd5, + CURLOPT_TCP_KEEPIDLE = 0xd6, + CURLOPT_TCP_KEEPINTVL = 0xd7, + CURLOPT_SSL_OPTIONS = 0xd8, + CURLOPT_MAIL_AUTH = 0x27e9, + CURLOPT_SASL_IR = 0xda, + CURLOPT_XFERINFOFUNCTION = 0x4efb, + CURLOPT_XOAUTH2_BEARER = 0x27ec, + CURLOPT_DNS_INTERFACE = 0x27ed, + CURLOPT_DNS_LOCAL_IP4 = 0x27ee, + CURLOPT_DNS_LOCAL_IP6 = 0x27ef, + CURLOPT_LOGIN_OPTIONS = 0x27f0, + CURLOPT_LASTENTRY = 0x27f1, +}; + +namespace EParticleCollisionResponse +{ + enum Type + { + Bounce = 0x0, + Stop = 0x1, + Kill = 0x2, + }; +} + +enum class EVoiceResult +{ + k_EVoiceResultOK = 0x0, + k_EVoiceResultNotInitialized = 0x1, + k_EVoiceResultNotRecording = 0x2, + k_EVoiceResultNoData = 0x3, + k_EVoiceResultBufferTooSmall = 0x4, + k_EVoiceResultDataCorrupted = 0x5, + k_EVoiceResultRestricted = 0x6, + k_EVoiceResultUnsupportedCodec = 0x7, + k_EVoiceResultReceiverOutOfDate = 0x8, + k_EVoiceResultReceiverDidNotAnswer = 0x9, +}; + +enum class EPassOutputId +{ + ePId_Output0 = 0x0, + ePId_Output1 = 0x1, + ePId_Output2 = 0x2, + ePId_Output3 = 0x3, + ePId_Output4 = 0x4, + ePId_Output5 = 0x5, + ePId_Output6 = 0x6, + ePId_Output7 = 0x7, +}; + +enum class EMatchMakingServerResponse +{ + eServerResponded = 0x0, + eServerFailedToRespond = 0x1, + eNoServersListedOnMasterServer = 0x2, +}; + +enum class BattleyePlayerStatus +{ + BE_NewPlayerPendingAdd = 0x0, + BE_Connected = 0x1, + BE_PendingRemoval = 0x2, +}; + +enum class EUGCMatchingUGCType +{ + k_EUGCMatchingUGCType_Items = 0x0, + k_EUGCMatchingUGCType_Items_Mtx = 0x1, + k_EUGCMatchingUGCType_Items_ReadyToUse = 0x2, + k_EUGCMatchingUGCType_Collections = 0x3, + k_EUGCMatchingUGCType_Artwork = 0x4, + k_EUGCMatchingUGCType_Videos = 0x5, + k_EUGCMatchingUGCType_Screenshots = 0x6, + k_EUGCMatchingUGCType_AllGuides = 0x7, + k_EUGCMatchingUGCType_WebGuides = 0x8, + k_EUGCMatchingUGCType_IntegratedGuides = 0x9, + k_EUGCMatchingUGCType_UsableInGame = 0xa, + k_EUGCMatchingUGCType_ControllerBindings = 0xb, +}; + +enum class ELocationEmitterSelectionMethod +{ + ELESM_Random = 0x0, + ELESM_Sequential = 0x1, + ELESM_MAX = 0x2, +}; + +enum class ChannelOutputs +{ + CHANNELOUT_FRONTLEFT = 0x0, + CHANNELOUT_FRONTRIGHT = 0x1, + CHANNELOUT_FRONTCENTER = 0x2, + CHANNELOUT_LOWFREQUENCY = 0x3, + CHANNELOUT_LEFTSURROUND = 0x4, + CHANNELOUT_RIGHTSURROUND = 0x5, + CHANNELOUT_REVERB = 0x6, + CHANNELOUT_RADIO = 0x7, + CHANNELOUT_COUNT = 0x8, +}; + +enum class ERemoteStoragePublishedFileVisibility +{ + k_ERemoteStoragePublishedFileVisibilityPublic = 0x0, + k_ERemoteStoragePublishedFileVisibilityFriendsOnly = 0x1, + k_ERemoteStoragePublishedFileVisibilityPrivate = 0x2, +}; + +namespace SDockingNode +{ + enum ELayoutModification + { + TabRemoval_DraggedOut = 0x0, + TabRemoval_Closed = 0x1, + TabRemoval_None = 0x2, + }; +} + +enum class EVoiceChatResult +{ + Success = 0x0, + InvalidState = 0x1, + NotInitialized = 0x2, + NotConnected = 0x3, + NotLoggedIn = 0x4, + NotPermitted = 0x5, + Throttled = 0x6, + InvalidArgument = 0x7, + CredentialsInvalid = 0x8, + CredentialsExpired = 0x9, + ClientTimeout = 0xa, + ServerTimeout = 0xb, + DnsFailure = 0xc, + ConnectionFailure = 0xd, + ImplementationError = 0xe, +}; + +enum class UColAttributeValue +{ + UCOL_DEFAULT = 0xff, + UCOL_PRIMARY = 0x0, + UCOL_SECONDARY = 0x1, + UCOL_TERTIARY = 0x2, + UCOL_DEFAULT_STRENGTH = 0x2, + UCOL_CE_STRENGTH_LIMIT = 0x3, + UCOL_QUATERNARY = 0x3, + UCOL_IDENTICAL = 0xf, + UCOL_STRENGTH_LIMIT = 0x10, + UCOL_OFF = 0x10, + UCOL_ON = 0x11, + UCOL_SHIFTED = 0x14, + UCOL_NON_IGNORABLE = 0x15, + UCOL_LOWER_FIRST = 0x18, + UCOL_UPPER_FIRST = 0x19, + UCOL_ATTRIBUTE_VALUE_COUNT = 0x1a, +}; + +enum class EVolumeUpdateType +{ + VUT_MeshDistanceFields = 0x1, + VUT_Heightfields = 0x2, + VUT_All = 0x3, +}; + +namespace EMaterialSceneAttributeInputMode +{ + enum Type + { + Coordinates = 0x0, + OffsetFraction = 0x1, + }; +} + +enum class WICBitmapLockFlags +{ + WICBitmapLockRead = 0x1, + WICBitmapLockWrite = 0x2, + WICBITMAPLOCKFLAGS_FORCE_DWORD = 0x7fffffff, +}; + +namespace CGameID +{ + enum EGameIDType + { + k_EGameIDTypeApp = 0x0, + k_EGameIDTypeGameMod = 0x1, + k_EGameIDTypeShortcut = 0x2, + k_EGameIDTypeP2P = 0x3, + }; +} + +namespace FSpeedTreeWind +{ + enum Constants + { + NUM_WIND_POINTS_IN_CURVE = 0xa, + NUM_BRANCH_LEVELS = 0x2, + NUM_LEAF_GROUPS = 0x2, + }; +} + +namespace ULandscapeHeightfieldCollisionComponent +{ + enum ECollisionQuadFlags + { + QF_PhysicalMaterialMask = 0x3f, + QF_EdgeTurned = 0x40, + QF_NoCollision = 0x80, + }; +} + +enum class ESocketType +{ + SOCKTYPE_Unknown = 0x0, + SOCKTYPE_Datagram = 0x1, + SOCKTYPE_Streaming = 0x2, +}; + +enum class ESocketErrors +{ + SE_NO_ERROR = 0x0, + SE_EINTR = 0x1, + SE_EBADF = 0x2, + SE_EACCES = 0x3, + SE_EFAULT = 0x4, + SE_EINVAL = 0x5, + SE_EMFILE = 0x6, + SE_EWOULDBLOCK = 0x7, + SE_EINPROGRESS = 0x8, + SE_EALREADY = 0x9, + SE_ENOTSOCK = 0xa, + SE_EDESTADDRREQ = 0xb, + SE_EMSGSIZE = 0xc, + SE_EPROTOTYPE = 0xd, + SE_ENOPROTOOPT = 0xe, + SE_EPROTONOSUPPORT = 0xf, + SE_ESOCKTNOSUPPORT = 0x10, + SE_EOPNOTSUPP = 0x11, + SE_EPFNOSUPPORT = 0x12, + SE_EAFNOSUPPORT = 0x13, + SE_EADDRINUSE = 0x14, + SE_EADDRNOTAVAIL = 0x15, + SE_ENETDOWN = 0x16, + SE_ENETUNREACH = 0x17, + SE_ENETRESET = 0x18, + SE_ECONNABORTED = 0x19, + SE_ECONNRESET = 0x1a, + SE_ENOBUFS = 0x1b, + SE_EISCONN = 0x1c, + SE_ENOTCONN = 0x1d, + SE_ESHUTDOWN = 0x1e, + SE_ETOOMANYREFS = 0x1f, + SE_ETIMEDOUT = 0x20, + SE_ECONNREFUSED = 0x21, + SE_ELOOP = 0x22, + SE_ENAMETOOLONG = 0x23, + SE_EHOSTDOWN = 0x24, + SE_EHOSTUNREACH = 0x25, + SE_ENOTEMPTY = 0x26, + SE_EPROCLIM = 0x27, + SE_EUSERS = 0x28, + SE_EDQUOT = 0x29, + SE_ESTALE = 0x2a, + SE_EREMOTE = 0x2b, + SE_EDISCON = 0x2c, + SE_SYSNOTREADY = 0x2d, + SE_VERNOTSUPPORTED = 0x2e, + SE_NOTINITIALISED = 0x2f, + SE_HOST_NOT_FOUND = 0x30, + SE_TRY_AGAIN = 0x31, + SE_NO_RECOVERY = 0x32, + SE_NO_DATA = 0x33, + SE_UDP_ERR_PORT_UNREACH = 0x34, + SE_GET_LAST_ERROR_CODE = 0x35, +}; + +namespace ESocketReceiveFlags +{ + enum Type + { + None = 0x0, + Peek = 0x2, + WaitAll = 0x100, + }; +} + +enum class ESocketConnectionState +{ + SCS_NotConnected = 0x0, + SCS_Connected = 0x1, + SCS_ConnectionError = 0x2, +}; + +enum class ELobbyComparison +{ + k_ELobbyComparisonEqualToOrLessThan = 0xfe, + k_ELobbyComparisonLessThan = 0xff, + k_ELobbyComparisonEqual = 0x0, + k_ELobbyComparisonGreaterThan = 0x1, + k_ELobbyComparisonEqualToOrGreaterThan = 0x2, + k_ELobbyComparisonNotEqual = 0x3, +}; + +namespace EMoveComponentAction +{ + enum Type + { + Move = 0x0, + Stop = 0x1, + Return = 0x2, + }; +} + +namespace ENetModeBP +{ + enum Type + { + Standalone = 0x0, + DedicatedServer = 0x1, + ListenServer = 0x2, + Client = 0x3, + }; +} + +namespace EPawnActionFailHandling +{ + enum Type + { + RequireSuccess = 0x0, + IgnoreFailure = 0x1, + }; +} + +namespace EBeaconState +{ + enum Type + { + AllowRequests = 0x0, + DenyRequests = 0x1, + }; +} + +namespace EInAppPurchaseState +{ + enum Type + { + Success = 0x0, + Failed = 0x1, + Cancelled = 0x2, + Invalid = 0x3, + NotAllowed = 0x4, + Unknown = 0x5, + }; +} + +namespace EGraphAxisStyle +{ + enum Type + { + Lines = 0x0, + Notches = 0x1, + Grid = 0x2, + }; +} + +enum class EMediaStates +{ + Closed = 0x0, + Error = 0x1, + Paused = 0x2, + Playing = 0x3, + Stopped = 0x4, +}; + +namespace ETestExternalUIInterfaceState +{ + enum Type + { + Begin = 0x0, + ShowLoginUI = 0x1, + ShowFriendsUI = 0x2, + ShowInviteUI = 0x3, + ShowAchievementsUI = 0x4, + ShowWebURL = 0x5, + ShowProfileUI = 0x6, + End = 0x7, + }; +} + +enum class EClampMode +{ + CMODE_Clamp = 0x0, + CMODE_ClampMin = 0x1, + CMODE_ClampMax = 0x2, +}; + +enum class ETrail2SourceMethod +{ + PET2SRCM_Default = 0x0, + PET2SRCM_Particle = 0x1, + PET2SRCM_Actor = 0x2, + PET2SRCM_MAX = 0x3, +}; + +namespace ERawImageFormat +{ + enum Type + { + G8 = 0x0, + BGRA8 = 0x1, + BGRE8 = 0x2, + RGBA16 = 0x3, + RGBA16F = 0x4, + RGBA32F = 0x5, + }; +} + +namespace EChunkProgressReportingType +{ + enum Type + { + ETA = 0x0, + PercentageComplete = 0x1, + }; +} + +enum class CURLcode +{ + CURLE_OK = 0x0, + CURLE_UNSUPPORTED_PROTOCOL = 0x1, + CURLE_FAILED_INIT = 0x2, + CURLE_URL_MALFORMAT = 0x3, + CURLE_NOT_BUILT_IN = 0x4, + CURLE_COULDNT_RESOLVE_PROXY = 0x5, + CURLE_COULDNT_RESOLVE_HOST = 0x6, + CURLE_COULDNT_CONNECT = 0x7, + CURLE_FTP_WEIRD_SERVER_REPLY = 0x8, + CURLE_REMOTE_ACCESS_DENIED = 0x9, + CURLE_FTP_ACCEPT_FAILED = 0xa, + CURLE_FTP_WEIRD_PASS_REPLY = 0xb, + CURLE_FTP_ACCEPT_TIMEOUT = 0xc, + CURLE_FTP_WEIRD_PASV_REPLY = 0xd, + CURLE_FTP_WEIRD_227_FORMAT = 0xe, + CURLE_FTP_CANT_GET_HOST = 0xf, + CURLE_OBSOLETE16 = 0x10, + CURLE_FTP_COULDNT_SET_TYPE = 0x11, + CURLE_PARTIAL_FILE = 0x12, + CURLE_FTP_COULDNT_RETR_FILE = 0x13, + CURLE_OBSOLETE20 = 0x14, + CURLE_QUOTE_ERROR = 0x15, + CURLE_HTTP_RETURNED_ERROR = 0x16, + CURLE_WRITE_ERROR = 0x17, + CURLE_OBSOLETE24 = 0x18, + CURLE_UPLOAD_FAILED = 0x19, + CURLE_READ_ERROR = 0x1a, + CURLE_OUT_OF_MEMORY = 0x1b, + CURLE_OPERATION_TIMEDOUT = 0x1c, + CURLE_OBSOLETE29 = 0x1d, + CURLE_FTP_PORT_FAILED = 0x1e, + CURLE_FTP_COULDNT_USE_REST = 0x1f, + CURLE_OBSOLETE32 = 0x20, + CURLE_RANGE_ERROR = 0x21, + CURLE_HTTP_POST_ERROR = 0x22, + CURLE_SSL_CONNECT_ERROR = 0x23, + CURLE_BAD_DOWNLOAD_RESUME = 0x24, + CURLE_FILE_COULDNT_READ_FILE = 0x25, + CURLE_LDAP_CANNOT_BIND = 0x26, + CURLE_LDAP_SEARCH_FAILED = 0x27, + CURLE_OBSOLETE40 = 0x28, + CURLE_FUNCTION_NOT_FOUND = 0x29, + CURLE_ABORTED_BY_CALLBACK = 0x2a, + CURLE_BAD_FUNCTION_ARGUMENT = 0x2b, + CURLE_OBSOLETE44 = 0x2c, + CURLE_INTERFACE_FAILED = 0x2d, + CURLE_OBSOLETE46 = 0x2e, + CURLE_TOO_MANY_REDIRECTS = 0x2f, + CURLE_UNKNOWN_OPTION = 0x30, + CURLE_TELNET_OPTION_SYNTAX = 0x31, + CURLE_OBSOLETE50 = 0x32, + CURLE_PEER_FAILED_VERIFICATION = 0x33, + CURLE_GOT_NOTHING = 0x34, + CURLE_SSL_ENGINE_NOTFOUND = 0x35, + CURLE_SSL_ENGINE_SETFAILED = 0x36, + CURLE_SEND_ERROR = 0x37, + CURLE_RECV_ERROR = 0x38, + CURLE_OBSOLETE57 = 0x39, + CURLE_SSL_CERTPROBLEM = 0x3a, + CURLE_SSL_CIPHER = 0x3b, + CURLE_SSL_CACERT = 0x3c, + CURLE_BAD_CONTENT_ENCODING = 0x3d, + CURLE_LDAP_INVALID_URL = 0x3e, + CURLE_FILESIZE_EXCEEDED = 0x3f, + CURLE_USE_SSL_FAILED = 0x40, + CURLE_SEND_FAIL_REWIND = 0x41, + CURLE_SSL_ENGINE_INITFAILED = 0x42, + CURLE_LOGIN_DENIED = 0x43, + CURLE_TFTP_NOTFOUND = 0x44, + CURLE_TFTP_PERM = 0x45, + CURLE_REMOTE_DISK_FULL = 0x46, + CURLE_TFTP_ILLEGAL = 0x47, + CURLE_TFTP_UNKNOWNID = 0x48, + CURLE_REMOTE_FILE_EXISTS = 0x49, + CURLE_TFTP_NOSUCHUSER = 0x4a, + CURLE_CONV_FAILED = 0x4b, + CURLE_CONV_REQD = 0x4c, + CURLE_SSL_CACERT_BADFILE = 0x4d, + CURLE_REMOTE_FILE_NOT_FOUND = 0x4e, + CURLE_SSH = 0x4f, + CURLE_SSL_SHUTDOWN_FAILED = 0x50, + CURLE_AGAIN = 0x51, + CURLE_SSL_CRL_BADFILE = 0x52, + CURLE_SSL_ISSUER_ERROR = 0x53, + CURLE_FTP_PRET_FAILED = 0x54, + CURLE_RTSP_CSEQ_ERROR = 0x55, + CURLE_RTSP_SESSION_ERROR = 0x56, + CURLE_FTP_BAD_FILE_LIST = 0x57, + CURLE_CHUNK_FAILED = 0x58, + CURLE_NO_CONNECTION_AVAILABLE = 0x59, + CURL_LAST = 0x5a, +}; + +enum class EUserHasLicenseForAppResult +{ + k_EUserHasLicenseResultHasLicense = 0x0, + k_EUserHasLicenseResultDoesNotHaveLicense = 0x1, + k_EUserHasLicenseResultNoAuth = 0x2, +}; + +namespace EQuitPreference +{ + enum Type + { + Quit = 0x0, + Background = 0x1, + }; +} + +enum class EUniverse +{ + k_EUniverseInvalid = 0x0, + k_EUniversePublic = 0x1, + k_EUniverseBeta = 0x2, + k_EUniverseInternal = 0x3, + k_EUniverseDev = 0x4, + k_EUniverseMax = 0x5, +}; + +enum class EAccountType +{ + k_EAccountTypeInvalid = 0x0, + k_EAccountTypeIndividual = 0x1, + k_EAccountTypeMultiseat = 0x2, + k_EAccountTypeGameServer = 0x3, + k_EAccountTypeAnonGameServer = 0x4, + k_EAccountTypePending = 0x5, + k_EAccountTypeContentServer = 0x6, + k_EAccountTypeClan = 0x7, + k_EAccountTypeChat = 0x8, + k_EAccountTypeConsoleUser = 0x9, + k_EAccountTypeAnonUser = 0xa, + k_EAccountTypeMax = 0xb, +}; + +enum class EMarketingMessageFlags +{ + k_EMarketingMessageFlagsNone = 0x0, + k_EMarketingMessageFlagsHighPriority = 0x1, + k_EMarketingMessageFlagsPlatformWindows = 0x2, + k_EMarketingMessageFlagsPlatformMac = 0x4, + k_EMarketingMessageFlagsPlatformLinux = 0x8, + k_EMarketingMessageFlagsPlatformRestrictions = 0xe, +}; + +namespace ISteamHTMLSurface +{ + enum EHTMLMouseButton + { + eHTMLMouseButton_Left = 0x0, + eHTMLMouseButton_Right = 0x1, + eHTMLMouseButton_Middle = 0x2, + }; +} + +namespace ISteamHTMLSurface +{ + enum EMouseCursor + { + dc_user = 0x0, + dc_none = 0x1, + dc_arrow = 0x2, + dc_ibeam = 0x3, + dc_hourglass = 0x4, + dc_waitarrow = 0x5, + dc_crosshair = 0x6, + dc_up = 0x7, + dc_sizenw = 0x8, + dc_sizese = 0x9, + dc_sizene = 0xa, + dc_sizesw = 0xb, + dc_sizew = 0xc, + dc_sizee = 0xd, + dc_sizen = 0xe, + dc_sizes = 0xf, + dc_sizewe = 0x10, + dc_sizens = 0x11, + dc_sizeall = 0x12, + dc_no = 0x13, + dc_hand = 0x14, + dc_blank = 0x15, + dc_middle_pan = 0x16, + dc_north_pan = 0x17, + dc_north_east_pan = 0x18, + dc_east_pan = 0x19, + dc_south_east_pan = 0x1a, + dc_south_pan = 0x1b, + dc_south_west_pan = 0x1c, + dc_west_pan = 0x1d, + dc_north_west_pan = 0x1e, + dc_alias = 0x1f, + dc_cell = 0x20, + dc_colresize = 0x21, + dc_copycur = 0x22, + dc_verticaltext = 0x23, + dc_rowresize = 0x24, + dc_zoomin = 0x25, + dc_zoomout = 0x26, + dc_help = 0x27, + dc_custom = 0x28, + dc_last = 0x29, + }; +} + +enum class EGamepadTextInputMode +{ + k_EGamepadTextInputModeNormal = 0x0, + k_EGamepadTextInputModePassword = 0x1, +}; + +enum class EFunctionInputType +{ + FunctionInput_Scalar = 0x0, + FunctionInput_Vector2 = 0x1, + FunctionInput_Vector3 = 0x2, + FunctionInput_Vector4 = 0x3, + FunctionInput_Texture2D = 0x4, + FunctionInput_TextureCube = 0x5, + FunctionInput_StaticBool = 0x6, + FunctionInput_MaterialAttributes = 0x7, + FunctionInput_MAX = 0x8, +}; + +namespace Imf +{ + enum LineOrder + { + INCREASING_Y = 0x0, + DECREASING_Y = 0x1, + RANDOM_Y = 0x2, + NUM_LINEORDERS = 0x3, + }; +} + +enum class WICBitmapAlphaChannelOption +{ + WICBitmapUseAlpha = 0x0, + WICBitmapUsePremultipliedAlpha = 0x1, + WICBitmapIgnoreAlpha = 0x2, + WICBITMAPALPHACHANNELOPTIONS_FORCE_DWORD = 0x7fffffff, +}; + +enum class ERepParentFlags +{ + PARENT_IsLifetime = 0x1, + PARENT_IsConditional = 0x2, + PARENT_IsConfig = 0x4, + PARENT_IsCustomDelta = 0x8, +}; + +enum class ELeaderboardSortMethod +{ + k_ELeaderboardSortMethodNone = 0x0, + k_ELeaderboardSortMethodAscending = 0x1, + k_ELeaderboardSortMethodDescending = 0x2, +}; + +namespace MilBitmapInterpolationMode +{ + enum Enum + { + NearestNeighbor = 0x0, + Linear = 0x1, + Cubic = 0x2, + Fant = 0x3, + TriLinear = 0x4, + Anisotropic = 0x5, + SuperSample = 0x6, + Inherit = 0xff, + }; +} + +enum class ELeaderboardDisplayType +{ + k_ELeaderboardDisplayTypeNone = 0x0, + k_ELeaderboardDisplayTypeNumeric = 0x1, + k_ELeaderboardDisplayTypeTimeSeconds = 0x2, + k_ELeaderboardDisplayTypeTimeMilliSeconds = 0x3, +}; + +enum class ELeaderboardUploadScoreMethod +{ + k_ELeaderboardUploadScoreMethodNone = 0x0, + k_ELeaderboardUploadScoreMethodKeepBest = 0x1, + k_ELeaderboardUploadScoreMethodForceUpdate = 0x2, +}; + +enum class EBokehIndexStyle +{ + BIS_Fast = 0x0, + BIS_Slow = 0x1, +}; + +enum class EChatMemberStateChange +{ + k_EChatMemberStateChangeEntered = 0x1, + k_EChatMemberStateChangeLeft = 0x2, + k_EChatMemberStateChangeDisconnected = 0x4, + k_EChatMemberStateChangeKicked = 0x8, + k_EChatMemberStateChangeBanned = 0x10, +}; + +namespace ESceneRenderTargetsMode +{ + enum Type + { + SetTextures = 0x0, + DontSet = 0x1, + DontSetIgnoreBoundByEditorCompositing = 0x2, + NonSceneAlignedPass = 0x3, + }; +} + +enum class EChatRoomEnterResponse +{ + k_EChatRoomEnterResponseSuccess = 0x1, + k_EChatRoomEnterResponseDoesntExist = 0x2, + k_EChatRoomEnterResponseNotAllowed = 0x3, + k_EChatRoomEnterResponseFull = 0x4, + k_EChatRoomEnterResponseError = 0x5, + k_EChatRoomEnterResponseBanned = 0x6, + k_EChatRoomEnterResponseLimited = 0x7, + k_EChatRoomEnterResponseClanDisabled = 0x8, + k_EChatRoomEnterResponseCommunityBan = 0x9, + k_EChatRoomEnterResponseMemberBlockedYou = 0xa, + k_EChatRoomEnterResponseYouBlockedMember = 0xb, +}; + +enum class UResType +{ + URES_NONE = 0xff, + URES_STRING = 0x0, + URES_BINARY = 0x1, + URES_TABLE = 0x2, + URES_ALIAS = 0x3, + URES_INT = 0x7, + URES_ARRAY = 0x8, + URES_INT_VECTOR = 0xe, +}; + +enum class EP2PSend +{ + k_EP2PSendUnreliable = 0x0, + k_EP2PSendUnreliableNoDelay = 0x1, + k_EP2PSendReliable = 0x2, + k_EP2PSendReliableWithBuffering = 0x3, +}; + +enum class EUGCReadAction +{ + k_EUGCRead_ContinueReadingUntilFinished = 0x0, + k_EUGCRead_ContinueReading = 0x1, + k_EUGCRead_Close = 0x2, +}; + +enum class USystemTimeZoneType +{ + UCAL_ZONE_TYPE_ANY = 0x0, + UCAL_ZONE_TYPE_CANONICAL = 0x1, + UCAL_ZONE_TYPE_CANONICAL_LOCATION = 0x2, +}; + +enum class EInterpTrackMoveRotMode +{ + IMR_Keyframed = 0x0, + IMR_LookAtGroup = 0x1, + IMR_Ignore = 0x2, + IMR_MAX = 0x3, +}; + +enum class EChatEntryType +{ + k_EChatEntryTypeInvalid = 0x0, + k_EChatEntryTypeChatMsg = 0x1, + k_EChatEntryTypeTyping = 0x2, + k_EChatEntryTypeInviteGame = 0x3, + k_EChatEntryTypeEmote = 0x4, + k_EChatEntryTypeLeftConversation = 0x6, + k_EChatEntryTypeEntered = 0x7, + k_EChatEntryTypeWasKicked = 0x8, + k_EChatEntryTypeWasBanned = 0x9, + k_EChatEntryTypeDisconnected = 0xa, + k_EChatEntryTypeHistoricalChat = 0xb, + k_EChatEntryTypeReserved1 = 0xc, + k_EChatEntryTypeReserved2 = 0xd, +}; + +enum class EBeginAuthSessionResult +{ + k_EBeginAuthSessionResultOK = 0x0, + k_EBeginAuthSessionResultInvalidTicket = 0x1, + k_EBeginAuthSessionResultDuplicateRequest = 0x2, + k_EBeginAuthSessionResultInvalidVersion = 0x3, + k_EBeginAuthSessionResultGameMismatch = 0x4, + k_EBeginAuthSessionResultExpiredTicket = 0x5, +}; + +enum class ELeaderboardDataRequest +{ + k_ELeaderboardDataRequestGlobal = 0x0, + k_ELeaderboardDataRequestGlobalAroundUser = 0x1, + k_ELeaderboardDataRequestFriends = 0x2, + k_ELeaderboardDataRequestUsers = 0x3, +}; + +enum class ESNetSocketConnectionType +{ + k_ESNetSocketConnectionTypeNotConnected = 0x0, + k_ESNetSocketConnectionTypeUDP = 0x1, + k_ESNetSocketConnectionTypeUDPRelay = 0x2, +}; + +enum class ENotificationPosition +{ + k_EPositionTopLeft = 0x0, + k_EPositionTopRight = 0x1, + k_EPositionBottomLeft = 0x2, + k_EPositionBottomRight = 0x3, +}; + +enum class EWorkshopVideoProvider +{ + k_EWorkshopVideoProviderNone = 0x0, + k_EWorkshopVideoProviderYoutube = 0x1, +}; + +enum class EWorkshopEnumerationType +{ + k_EWorkshopEnumerationTypeRankedByVote = 0x0, + k_EWorkshopEnumerationTypeRecent = 0x1, + k_EWorkshopEnumerationTypeTrending = 0x2, + k_EWorkshopEnumerationTypeFavoritesOfFriends = 0x3, + k_EWorkshopEnumerationTypeVotedByFriends = 0x4, + k_EWorkshopEnumerationTypeContentByFriends = 0x5, + k_EWorkshopEnumerationTypeRecentFromFollowedUsers = 0x6, +}; + +enum class EUGCQuery +{ + k_EUGCQuery_RankedByVote = 0x0, + k_EUGCQuery_RankedByPublicationDate = 0x1, + k_EUGCQuery_AcceptedForGameRankedByAcceptanceDate = 0x2, + k_EUGCQuery_RankedByTrend = 0x3, + k_EUGCQuery_FavoritedByFriendsRankedByPublicationDate = 0x4, + k_EUGCQuery_CreatedByFriendsRankedByPublicationDate = 0x5, + k_EUGCQuery_RankedByNumTimesReported = 0x6, + k_EUGCQuery_CreatedByFollowedUsersRankedByPublicationDate = 0x7, + k_EUGCQuery_NotYetRated = 0x8, + k_EUGCQuery_RankedByTotalVotesAsc = 0x9, + k_EUGCQuery_RankedByVotesUp = 0xa, + k_EUGCQuery_RankedByTextSearch = 0xb, + k_EUGCQuery_RankedByTotalUniqueSubscriptions = 0xc, +}; + +enum class EItemUpdateStatus +{ + k_EItemUpdateStatusInvalid = 0x0, + k_EItemUpdateStatusPreparingConfig = 0x1, + k_EItemUpdateStatusPreparingContent = 0x2, + k_EItemUpdateStatusUploadingContent = 0x3, + k_EItemUpdateStatusUploadingPreviewFile = 0x4, + k_EItemUpdateStatusCommittingChanges = 0x5, +}; + +enum class OfflineFolderStatus +{ + OFS_INACTIVE = 0xff, + OFS_ONLINE = 0x0, + OFS_OFFLINE = 0x1, + OFS_SERVERBACK = 0x2, + OFS_DIRTYCACHE = 0x3, +}; + +namespace EConstraintTransform +{ + enum Type + { + Absoluate = 0x0, + Relative = 0x1, + }; +} + +namespace ETargetDeviceTypes +{ + enum Type + { + Indeterminate = 0x0, + Browser = 0x1, + Console = 0x2, + Desktop = 0x3, + Phone = 0x4, + Tablet = 0x5, + }; +} + +enum class UJoiningGroup +{ + U_JG_NO_JOINING_GROUP = 0x0, + U_JG_AIN = 0x1, + U_JG_ALAPH = 0x2, + U_JG_ALEF = 0x3, + U_JG_BEH = 0x4, + U_JG_BETH = 0x5, + U_JG_DAL = 0x6, + U_JG_DALATH_RISH = 0x7, + U_JG_E = 0x8, + U_JG_FEH = 0x9, + U_JG_FINAL_SEMKATH = 0xa, + U_JG_GAF = 0xb, + U_JG_GAMAL = 0xc, + U_JG_HAH = 0xd, + U_JG_TEH_MARBUTA_GOAL = 0xe, + U_JG_HAMZA_ON_HEH_GOAL = 0xe, + U_JG_HE = 0xf, + U_JG_HEH = 0x10, + U_JG_HEH_GOAL = 0x11, + U_JG_HETH = 0x12, + U_JG_KAF = 0x13, + U_JG_KAPH = 0x14, + U_JG_KNOTTED_HEH = 0x15, + U_JG_LAM = 0x16, + U_JG_LAMADH = 0x17, + U_JG_MEEM = 0x18, + U_JG_MIM = 0x19, + U_JG_NOON = 0x1a, + U_JG_NUN = 0x1b, + U_JG_PE = 0x1c, + U_JG_QAF = 0x1d, + U_JG_QAPH = 0x1e, + U_JG_REH = 0x1f, + U_JG_REVERSED_PE = 0x20, + U_JG_SAD = 0x21, + U_JG_SADHE = 0x22, + U_JG_SEEN = 0x23, + U_JG_SEMKATH = 0x24, + U_JG_SHIN = 0x25, + U_JG_SWASH_KAF = 0x26, + U_JG_SYRIAC_WAW = 0x27, + U_JG_TAH = 0x28, + U_JG_TAW = 0x29, + U_JG_TEH_MARBUTA = 0x2a, + U_JG_TETH = 0x2b, + U_JG_WAW = 0x2c, + U_JG_YEH = 0x2d, + U_JG_YEH_BARREE = 0x2e, + U_JG_YEH_WITH_TAIL = 0x2f, + U_JG_YUDH = 0x30, + U_JG_YUDH_HE = 0x31, + U_JG_ZAIN = 0x32, + U_JG_FE = 0x33, + U_JG_KHAPH = 0x34, + U_JG_ZHAIN = 0x35, + U_JG_BURUSHASKI_YEH_BARREE = 0x36, + U_JG_FARSI_YEH = 0x37, + U_JG_NYA = 0x38, + U_JG_ROHINGYA_YEH = 0x39, + U_JG_COUNT = 0x3a, +}; + +namespace FSpeedTreeWind +{ + enum EShaderValues + { + SH_WIND_DIR_X = 0x0, + SH_WIND_DIR_Y = 0x1, + SH_WIND_DIR_Z = 0x2, + SH_GENERAL_STRENGTH = 0x3, + SH_GLOBAL_TIME = 0x4, + SH_GLOBAL_DISTANCE = 0x5, + SH_GLOBAL_HEIGHT = 0x6, + SH_GLOBAL_HEIGHT_EXPONENT = 0x7, + SH_BRANCH_1_TIME = 0x8, + SH_BRANCH_1_DISTANCE = 0x9, + SH_BRANCH_2_TIME = 0xa, + SH_BRANCH_2_DISTANCE = 0xb, + SH_BRANCH_1_TWITCH = 0xc, + SH_BRANCH_1_TWITCH_FREQ_SCALE = 0xd, + SH_BRANCH_2_TWITCH = 0xe, + SH_BRANCH_2_TWITCH_FREQ_SCALE = 0xf, + SH_BRANCH_1_WHIP = 0x10, + SH_BRANCH_2_WHIP = 0x11, + SH_WIND_PACK0 = 0x12, + SH_WIND_PACK1 = 0x13, + SH_WIND_ANCHOR_X = 0x14, + SH_WIND_ANCHOR_Y = 0x15, + SH_WIND_ANCHOR_Z = 0x16, + SH_WIND_PACK2 = 0x17, + SH_GLOBAL_DIRECTION_ADHERENCE = 0x18, + SH_BRANCH_1_DIRECTION_ADHERENCE = 0x19, + SH_BRANCH_2_DIRECTION_ADHERENCE = 0x1a, + SH_WIND_PACK5 = 0x1b, + SH_BRANCH_1_TURBULENCE = 0x1c, + SH_BRANCH_2_TURBULENCE = 0x1d, + SH_WIND_PACK6 = 0x1e, + SH_WIND_PACK7 = 0x1f, + SH_LEAF_1_RIPPLE_TIME = 0x20, + SH_LEAF_1_RIPPLE_DISTANCE = 0x21, + SH_LEAF_1_LEEWARD_SCALAR = 0x22, + SH_WIND_PACK8 = 0x23, + SH_LEAF_1_TUMBLE_TIME = 0x24, + SH_LEAF_1_TUMBLE_FLIP = 0x25, + SH_LEAF_1_TUMBLE_TWIST = 0x26, + SH_LEAF_1_TUMBLE_DIRECTION_ADHERENCE = 0x27, + SH_LEAF_1_TWITCH_THROW = 0x28, + SH_LEAF_1_TWITCH_SHARPNESS = 0x29, + SH_LEAF_1_TWITCH_TIME = 0x2a, + SH_WIND_PACK9 = 0x2b, + SH_LEAF_2_RIPPLE_TIME = 0x2c, + SH_LEAF_2_RIPPLE_DISTANCE = 0x2d, + SH_LEAF_2_LEEWARD_SCALAR = 0x2e, + SH_WIND_PACK10 = 0x2f, + SH_LEAF_2_TUMBLE_TIME = 0x30, + SH_LEAF_2_TUMBLE_FLIP = 0x31, + SH_LEAF_2_TUMBLE_TWIST = 0x32, + SH_LEAF_2_TUMBLE_DIRECTION_ADHERENCE = 0x33, + SH_LEAF_2_TWITCH_THROW = 0x34, + SH_LEAF_2_TWITCH_SHARPNESS = 0x35, + SH_LEAF_2_TWITCH_TIME = 0x36, + SH_WIND_PACK11 = 0x37, + SH_FROND_RIPPLE_TIME = 0x38, + SH_FROND_RIPPLE_DISTANCE = 0x39, + SH_FROND_RIPPLE_TILE = 0x3a, + SH_FROND_RIPPLE_LIGHTING_SCALAR = 0x3b, + SH_ROLLING_BRANCH_FIELD_MIN = 0x3c, + SH_ROLLING_BRANCH_LIGHTING_ADJUST = 0x3d, + SH_ROLLING_BRANCH_VERTICAL_OFFSET = 0x3e, + SH_WIND_PACK12 = 0x3f, + SH_ROLLING_LEAF_RIPPLE_MIN = 0x40, + SH_ROLLING_LEAF_TUMBLE_MIN = 0x41, + SH_ROLLING_X = 0x42, + SH_ROLLING_Y = 0x43, + SH_ROLLING_NOISE_PERIOD = 0x44, + SH_ROLLING_NOISE_SIZE = 0x45, + SH_ROLLING_NOISE_TURBULENCE = 0x46, + SH_ROLLING_NOISE_TWIST = 0x47, + NUM_SHADER_VALUES = 0x48, + }; +} + +enum class rcTimerLabel +{ + RC_TIMER_TOTAL = 0x0, + RC_TIMER_TEMP = 0x1, + RC_TIMER_RASTERIZE_TRIANGLES = 0x2, + RC_TIMER_BUILD_COMPACTHEIGHTFIELD = 0x3, + RC_TIMER_BUILD_CONTOURS = 0x4, + RC_TIMER_BUILD_CONTOURS_TRACE = 0x5, + RC_TIMER_BUILD_CONTOURS_SIMPLIFY = 0x6, + RC_TIMER_BUILD_CLUSTERS = 0x7, + RC_TIMER_FILTER_BORDER = 0x8, + RC_TIMER_FILTER_WALKABLE = 0x9, + RC_TIMER_MEDIAN_AREA = 0xa, + RC_TIMER_FILTER_LOW_OBSTACLES = 0xb, + RC_TIMER_BUILD_POLYMESH = 0xc, + RC_TIMER_MERGE_POLYMESH = 0xd, + RC_TIMER_ERODE_AREA = 0xe, + RC_TIMER_MARK_BOX_AREA = 0xf, + RC_TIMER_MARK_CYLINDER_AREA = 0x10, + RC_TIMER_MARK_CONVEXPOLY_AREA = 0x11, + RC_TIMER_BUILD_DISTANCEFIELD = 0x12, + RC_TIMER_BUILD_DISTANCEFIELD_DIST = 0x13, + RC_TIMER_BUILD_DISTANCEFIELD_BLUR = 0x14, + RC_TIMER_BUILD_REGIONS = 0x15, + RC_TIMER_BUILD_REGIONS_WATERSHED = 0x16, + RC_TIMER_BUILD_REGIONS_EXPAND = 0x17, + RC_TIMER_BUILD_REGIONS_FLOOD = 0x18, + RC_TIMER_BUILD_REGIONS_FILTER = 0x19, + RC_TIMER_BUILD_LAYERS = 0x1a, + RC_TIMER_BUILD_POLYMESHDETAIL = 0x1b, + RC_TIMER_MERGE_POLYMESHDETAIL = 0x1c, + RC_MAX_TIMERS = 0x1d, +}; + +namespace EHMDDeviceType +{ + enum Type + { + DT_OculusRift = 0x0, + DT_Morpheus = 0x1, + DT_ES2GenericStereoMesh = 0x2, + DT_SteamVR = 0x3, + DT_GearVR = 0x4, + }; +} + +namespace EEasingFunc +{ + enum Type + { + Linear = 0x0, + Step = 0x1, + SinusoidalIn = 0x2, + SinusoidalOut = 0x3, + SinusoidalInOut = 0x4, + EaseIn = 0x5, + EaseOut = 0x6, + EaseInOut = 0x7, + ExpoIn = 0x8, + ExpoOut = 0x9, + ExpoInOut = 0xa, + CircularIn = 0xb, + CircularOut = 0xc, + CircularInOut = 0xd, + }; +} + +enum class WICBitmapDitherType +{ + WICBitmapDitherTypeNone = 0x0, +}; + +namespace EAtmosphereRenderFlag +{ + enum Type + { + E_EnableAll = 0x0, + E_DisableSunDisk = 0x1, + E_DisableGroundScattering = 0x2, + E_DisableLightShaft = 0x4, + E_ScatterAndLoss = 0x8, + E_DisableSunAndGround = 0x3, + E_DisableSunAndLightShaft = 0x5, + E_DisableGroundAndLightShaft = 0x6, + E_DisableAll = 0x7, + E_RenderFlagMax = 0x8, + E_LightShaftMask = 0xfb, + }; +} + +enum class WICBitmapTransformOptions +{ + WICBitmapTransformRotate0 = 0x0, + WICBitmapTransformRotate90 = 0x1, + WICBitmapTransformRotate180 = 0x2, + WICBitmapTransformRotate270 = 0x3, + WICBitmapTransformFlipHorizontal = 0x8, + WICBitmapTransformFlipVertical = 0x10, + WICBITMAPTRANSFORMOPTIONS_FORCE_DWORD = 0x7fffffff, +}; + +enum class EShadowDepthPixelShaderMode +{ + PixelShadowDepth_NonPerspectiveCorrect = 0x0, + PixelShadowDepth_PerspectiveCorrect = 0x1, + PixelShadowDepth_OnePassPointLight = 0x2, +}; + +namespace FScene +{ + enum EBasePassDrawListType + { + EBasePass_Default = 0x0, + EBasePass_Masked = 0x1, + EBasePass_MAX = 0x2, + }; +} + +enum class ESceneTextureId +{ + PPI_SceneColor = 0x0, + PPI_SceneDepth = 0x1, + PPI_DiffuseColor = 0x2, + PPI_SpecularColor = 0x3, + PPI_SubsurfaceColor = 0x4, + PPI_BaseColor = 0x5, + PPI_Specular = 0x6, + PPI_Metallic = 0x7, + PPI_WorldNormal = 0x8, + PPI_SeparateTranslucency = 0x9, + PPI_Opacity = 0xa, + PPI_Roughness = 0xb, + PPI_MaterialAO = 0xc, + PPI_CustomDepth = 0xd, + PPI_PostProcessInput0 = 0xe, + PPI_PostProcessInput1 = 0xf, + PPI_PostProcessInput2 = 0x10, + PPI_PostProcessInput3 = 0x11, + PPI_PostProcessInput4 = 0x12, + PPI_PostProcessInput5 = 0x13, + PPI_PostProcessInput6 = 0x14, + PPI_DecalMask = 0x15, + PPI_ShadingModel = 0x16, + PPI_AmbientOcclusion = 0x17, +}; + +enum class FGlobalDFCacheType +{ + GDF_MostlyStatic = 0x0, + GDF_Full = 0x1, + GDF_Num = 0x2, +}; + +enum class TonemapperOption +{ + TonemapperGammaOnly = 0x1, + TonemapperColorMatrix = 0x2, + TonemapperShadowTint = 0x4, + TonemapperContrast = 0x8, + TonemapperGrainJitter = 0x10, + TonemapperGrainIntensity = 0x20, + TonemapperGrainQuantization = 0x40, + TonemapperBloom = 0x80, + TonemapperDOF = 0x100, + TonemapperVignette = 0x200, + TonemapperVignetteColor = 0x400, + TonemapperLightShafts = 0x800, + TonemapperMosaic = 0x1000, + TonemapperColorFringe = 0x2000, + TonemapperColorGrading = 0x4000, + TonemapperMsaa = 0x8000, +}; + +enum class ERenderTargetPoolEventType +{ + ERTPE_Alloc = 0x0, + ERTPE_Dealloc = 0x1, + ERTPE_Phase = 0x2, +}; + +enum class EDepthDrawingMode +{ + DDM_None = 0x0, + DDM_NonMaskedOnly = 0x1, + DDM_AllOccluders = 0x2, + DDM_AllOpaque = 0x3, +}; + +namespace EEnvTestPathfinding +{ + enum Type + { + PathExist = 0x0, + PathCost = 0x1, + PathLength = 0x2, + }; +} + +namespace OVR +{ + enum HandedSystem + { + Handed_R = 0x1, + Handed_L = 0xff, + }; +} + +enum class LandscapeSplineMeshOrientation +{ + LSMO_XUp = 0x0, + LSMO_YUp = 0x1, + LSMO_MAX = 0x2, +}; + +enum class ERenderTargetMode +{ + RTM_Unknown = 0xff, + RTM_SceneColorAndGBuffer = 0x0, + RTM_DBuffer = 0x1, + RTM_GBufferNormal = 0x2, + RTM_SceneColor = 0x3, +}; + +enum class EParticleBurstMethod +{ + EPBM_Instant = 0x0, + EPBM_Interpolated = 0x1, + EPBM_MAX = 0x2, +}; + +enum class EInterpMoveAxis +{ + AXIS_TranslationX = 0x0, + AXIS_TranslationY = 0x1, + AXIS_TranslationZ = 0x2, + AXIS_RotationX = 0x3, + AXIS_RotationY = 0x4, + AXIS_RotationZ = 0x5, +}; + +enum class EShadowDepthVertexShaderMode +{ + VertexShadowDepth_PerspectiveCorrect = 0x0, + VertexShadowDepth_OutputDepth = 0x1, + VertexShadowDepth_OnePassPointLight = 0x2, +}; + +enum class ETranslucencyShadowDepthShaderMode +{ + TranslucencyShadowDepth_PerspectiveCorrect = 0x0, + TranslucencyShadowDepth_Standard = 0x1, +}; + +enum class EMaturityChildType +{ + ChildType_None = 0x0, + ChildType_Mature = 0x1, + ChildType_NonMature = 0x2, +}; + +enum class EMaterialVectorCoordTransform +{ + TRANSFORM_World = 0x0, + TRANSFORM_View = 0x1, + TRANSFORM_Local = 0x2, + TRANSFORM_Tangent = 0x3, + TRANSFORM_MAX = 0x4, +}; + +namespace EOcclusionFlags +{ + enum Type + { + None = 0x0, + CanBeOccluded = 0x1, + AllowApproximateOcclusion = 0x4, + HasPrecomputedVisibility = 0x8, + HasSubprimitiveQueries = 0x10, + }; +} + +namespace FCustomBlockTransaction +{ + enum ETransactionType + { + Remove = 0x0, + Add = 0x1, + }; +} + +namespace EPluginDescriptorVersion +{ + enum Type + { + Invalid = 0x0, + Initial = 0x1, + NameHash = 0x2, + ProjectPluginUnification = 0x3, + LatestPlusOne = 0x4, + Latest = 0x3, + }; +} + +enum class UNumberFormatStyle +{ + UNUM_PATTERN_DECIMAL = 0x0, + UNUM_DECIMAL = 0x1, + UNUM_CURRENCY = 0x2, + UNUM_PERCENT = 0x3, + UNUM_SCIENTIFIC = 0x4, + UNUM_SPELLOUT = 0x5, + UNUM_ORDINAL = 0x6, + UNUM_DURATION = 0x7, + UNUM_NUMBERING_SYSTEM = 0x8, + UNUM_PATTERN_RULEBASED = 0x9, + UNUM_CURRENCY_ISO = 0xa, + UNUM_CURRENCY_PLURAL = 0xb, + UNUM_CURRENCY_ACCOUNTING = 0xc, + UNUM_FORMAT_STYLE_COUNT = 0xd, + UNUM_DEFAULT = 0x1, +}; + +enum class EVPLMode +{ + VPLMode_PlaceFromLight = 0x0, + VPLMode_PlaceFromSurfels = 0x1, +}; + +enum class EFlattenedDimension +{ + Flatten_XAxis = 0x0, + Flatten_YAxis = 0x1, + Flatten_ZAxis = 0x2, + Flatten_None = 0x3, +}; + +enum class CrowdAgentState +{ + DT_CROWDAGENT_STATE_INVALID = 0x0, + DT_CROWDAGENT_STATE_WALKING = 0x1, + DT_CROWDAGENT_STATE_OFFMESH = 0x2, + DT_CROWDAGENT_STATE_WAITING = 0x3, +}; + +enum class PropagateShaderFlags +{ + PROPAGATE_SECONDARY_OCCLUSION = 0x1, + PROPAGATE_MULTIPLE_BOUNCES = 0x2, + PROPAGATE_SECONDARY_OCCLUSION_AND_MULTIPLE_BOUNCES = 0x3, +}; + +namespace FShadowMapData2D +{ + enum ShadowMapDataType + { + UNKNOWN = 0x0, + SHADOW_FACTOR_DATA = 0x1, + SHADOW_FACTOR_DATA_QUANTIZED = 0x2, + SHADOW_SIGNED_DISTANCE_FIELD_DATA = 0x3, + SHADOW_SIGNED_DISTANCE_FIELD_DATA_QUANTIZED = 0x4, + }; +} + +enum class DrawNavMeshFlags +{ + DU_DRAWNAVMESH_OFFMESHCONS = 0x1, + DU_DRAWNAVMESH_CLOSEDLIST = 0x2, + DU_DRAWNAVMESH_COLOR_TILES = 0x4, +}; + +enum class ENoiseFunction +{ + NOISEFUNCTION_Simplex = 0x0, + NOISEFUNCTION_Perlin = 0x1, + NOISEFUNCTION_Gradient = 0x2, + NOISEFUNCTION_FastGradient = 0x3, + NOISEFUNCTION_MAX = 0x4, +}; + +enum class ESteamNetworkingConnectionState +{ + k_ESteamNetworkingConnectionState_None = 0x0, + k_ESteamNetworkingConnectionState_Connecting = 0x1, + k_ESteamNetworkingConnectionState_FindingRoute = 0x2, + k_ESteamNetworkingConnectionState_Connected = 0x3, + k_ESteamNetworkingConnectionState_ClosedByPeer = 0x4, + k_ESteamNetworkingConnectionState_ProblemDetectedLocally = 0x5, + k_ESteamNetworkingConnectionState_FinWait = 0xff, + k_ESteamNetworkingConnectionState_Linger = 0xfe, + k_ESteamNetworkingConnectionState_Dead = 0xfd, +}; + +namespace EChunkInstallSpeed +{ + enum Type + { + Paused = 0x0, + Slow = 0x1, + Fast = 0x2, + }; +} + +enum class EMediaSeekDirection +{ + Backward = 0x0, + Beginning = 0x1, + End = 0x2, + Forward = 0x3, +}; + +enum class EMediaTrackTypes +{ + Audio = 0x0, + Caption = 0x1, + Video = 0x2, +}; + +enum class EMediaPlaybackDirections +{ + Forward = 0x0, + Reverse = 0x1, +}; + +enum class ERefPoseType +{ + EIT_LocalSpace = 0x0, + EIT_Additive = 0x1, +}; + +enum class ELocationBoneSocketSource +{ + BONESOCKETSOURCE_Bones = 0x0, + BONESOCKETSOURCE_Sockets = 0x1, + BONESOCKETSOURCE_MAX = 0x2, +}; + +namespace UBlackboardData +{ + enum EKeyLookupMode + { + CheckParentKeys = 0x0, + DontCheckParentKeys = 0x1, + }; +} + +enum class EBTChildIndex +{ + FirstNode = 0x0, + TaskNode = 0x1, +}; + +namespace EReporterLineStyle +{ + enum Type + { + Line = 0x0, + Dash = 0x1, + }; +} + +namespace EControlConstraint +{ + enum Type + { + Orientation = 0x0, + Translation = 0x1, + Max = 0x2, + }; +} + +namespace USoundNodeBranch +{ + enum BranchPurpose + { + ParameterTrue = 0x0, + ParameterFalse = 0x1, + ParameterUnset = 0x2, + MAX = 0x3, + }; +} + +enum class UDateFormatField +{ + UDAT_ERA_FIELD = 0x0, + UDAT_YEAR_FIELD = 0x1, + UDAT_MONTH_FIELD = 0x2, + UDAT_DATE_FIELD = 0x3, + UDAT_HOUR_OF_DAY1_FIELD = 0x4, + UDAT_HOUR_OF_DAY0_FIELD = 0x5, + UDAT_MINUTE_FIELD = 0x6, + UDAT_SECOND_FIELD = 0x7, + UDAT_FRACTIONAL_SECOND_FIELD = 0x8, + UDAT_DAY_OF_WEEK_FIELD = 0x9, + UDAT_DAY_OF_YEAR_FIELD = 0xa, + UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 0xb, + UDAT_WEEK_OF_YEAR_FIELD = 0xc, + UDAT_WEEK_OF_MONTH_FIELD = 0xd, + UDAT_AM_PM_FIELD = 0xe, + UDAT_HOUR1_FIELD = 0xf, + UDAT_HOUR0_FIELD = 0x10, + UDAT_TIMEZONE_FIELD = 0x11, + UDAT_YEAR_WOY_FIELD = 0x12, + UDAT_DOW_LOCAL_FIELD = 0x13, + UDAT_EXTENDED_YEAR_FIELD = 0x14, + UDAT_JULIAN_DAY_FIELD = 0x15, + UDAT_MILLISECONDS_IN_DAY_FIELD = 0x16, + UDAT_TIMEZONE_RFC_FIELD = 0x17, + UDAT_TIMEZONE_GENERIC_FIELD = 0x18, + UDAT_STANDALONE_DAY_FIELD = 0x19, + UDAT_STANDALONE_MONTH_FIELD = 0x1a, + UDAT_QUARTER_FIELD = 0x1b, + UDAT_STANDALONE_QUARTER_FIELD = 0x1c, + UDAT_TIMEZONE_SPECIAL_FIELD = 0x1d, + UDAT_YEAR_NAME_FIELD = 0x1e, + UDAT_TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 0x1f, + UDAT_TIMEZONE_ISO_FIELD = 0x20, + UDAT_TIMEZONE_ISO_LOCAL_FIELD = 0x21, + UDAT_RELATED_YEAR_FIELD = 0x22, + UDAT_FIELD_COUNT = 0x23, +}; + +namespace ESplineMeshAxis +{ + enum Type + { + X = 0x0, + Y = 0x1, + Z = 0x2, + }; +} + +enum class EEdGraphActionType +{ + GRAPHACTION_Default = 0x0, + GRAPHACTION_UserInitiated = 0x1, + GRAPHACTION_AddNode = 0x2, + GRAPHACTION_AddNodeUI = 0x3, + GRAPHACTION_SelectNode = 0x4, +}; + +enum class EBoneModificationMode +{ + BMM_Ignore = 0x0, + BMM_Replace = 0x1, + BMM_Additive = 0x2, +}; + +enum class ESlabOverlapFlag +{ + SLABOVERLAP_Cross = 0x1, + SLABOVERLAP_Min = 0x2, + SLABOVERLAP_Max = 0x4, +}; + +namespace ECommentBoxMode +{ + enum Type + { + GroupMovement = 0x0, + NoGroupMovement = 0x1, + }; +} + +enum class FoliageVertexColorMask +{ + FOLIAGEVERTEXCOLORMASK_Disabled = 0x0, + FOLIAGEVERTEXCOLORMASK_Red = 0x1, + FOLIAGEVERTEXCOLORMASK_Green = 0x2, + FOLIAGEVERTEXCOLORMASK_Blue = 0x3, + FOLIAGEVERTEXCOLORMASK_Alpha = 0x4, +}; + +enum class EVisibilityTrackAction +{ + EVTA_Hide = 0x0, + EVTA_Show = 0x1, + EVTA_Toggle = 0x2, + EVTA_MAX = 0x3, +}; + +enum class EDepthOfFieldFunctionValue +{ + TDOF_NearAndFarMask = 0x0, + TDOF_NearMask = 0x1, + TDOF_FarMask = 0x2, + TDOF_MAX = 0x3, +}; + +enum class ELandscapeLayerBlendType +{ + LB_WeightBlend = 0x0, + LB_AlphaBlend = 0x1, + LB_HeightBlend = 0x2, + LB_MAX = 0x3, +}; + +enum class ESpeedTreeGeometryType +{ + STG_Branch = 0x0, + STG_Frond = 0x1, + STG_Leaf = 0x2, + STG_FacingLeaf = 0x3, + STG_Billboard = 0x4, +}; + +enum class ESpeedTreeWindType +{ + STW_None = 0x0, + STW_Fastest = 0x1, + STW_Fast = 0x2, + STW_Better = 0x3, + STW_Best = 0x4, + STW_Palm = 0x5, +}; + +enum class ETextureMipValueMode +{ + TMVM_None = 0x0, + TMVM_MipLevel = 0x1, + TMVM_MipBias = 0x2, + TMVM_Derivative = 0x3, + TMVM_MAX = 0x4, +}; + +enum class ETextureColorChannel +{ + TCC_Red = 0x0, + TCC_Green = 0x1, + TCC_Blue = 0x2, + TCC_Alpha = 0x3, + TCC_MAX = 0x4, +}; + +enum class EParticleAxisLock +{ + EPAL_NONE = 0x0, + EPAL_X = 0x1, + EPAL_Y = 0x2, + EPAL_Z = 0x3, + EPAL_NEGATIVE_X = 0x4, + EPAL_NEGATIVE_Y = 0x5, + EPAL_NEGATIVE_Z = 0x6, + EPAL_ROTATE_X = 0x7, + EPAL_ROTATE_Y = 0x8, + EPAL_ROTATE_Z = 0x9, + EPAL_MAX = 0xa, +}; + +enum class WICBitmapCreateCacheOption +{ + WICBitmapNoCache = 0x0, + WICBitmapCacheOnDemand = 0x1, + WICBitmapCacheOnLoad = 0x2, + WICBITMAPCREATECACHEOPTION_FORCE_DWORD = 0x7fffffff, +}; + +enum class EAttractorParticleSelectionMethod +{ + EAPSM_Random = 0x0, + EAPSM_Sequential = 0x1, + EAPSM_MAX = 0x2, +}; + +enum class BeamModifierType +{ + PEB2MT_Source = 0x0, + PEB2MT_Target = 0x1, + PEB2MT_MAX = 0x2, +}; + +enum class Beam2SourceTargetTangentMethod +{ + PEB2STTM_Direct = 0x0, + PEB2STTM_UserSet = 0x1, + PEB2STTM_Distribution = 0x2, + PEB2STTM_Emitter = 0x3, + PEB2STTM_MAX = 0x4, +}; + +enum class EParticleCollisionComplete +{ + EPCC_Kill = 0x0, + EPCC_Freeze = 0x1, + EPCC_HaltCollisions = 0x2, + EPCC_FreezeTranslation = 0x3, + EPCC_FreezeRotation = 0x4, + EPCC_FreezeMovement = 0x5, + EPCC_MAX = 0x6, +}; + +enum class ELocationBoneSocketSelectionMethod +{ + BONESOCKETSEL_Sequential = 0x0, + BONESOCKETSEL_Random = 0x1, + BONESOCKETSEL_MAX = 0x2, +}; + +enum class CylinderHeightAxis +{ + PMLPC_HEIGHTAXIS_X = 0x0, + PMLPC_HEIGHTAXIS_Y = 0x1, + PMLPC_HEIGHTAXIS_Z = 0x2, + PMLPC_HEIGHTAXIS_MAX = 0x3, +}; + +enum class EParticleScreenAlignment +{ + PSA_FacingCameraPosition = 0x0, + PSA_Square = 0x1, + PSA_Rectangle = 0x2, + PSA_Velocity = 0x3, + PSA_AwayFromCenter = 0x4, + PSA_TypeSpecific = 0x5, + PSA_MAX = 0x6, +}; + +enum class EParticleSortMode +{ + PSORTMODE_None = 0x0, + PSORTMODE_ViewProjDepth = 0x1, + PSORTMODE_DistanceToView = 0x2, + PSORTMODE_Age_OldestFirst = 0x3, + PSORTMODE_Age_NewestFirst = 0x4, + PSORTMODE_MAX = 0x5, +}; + +enum class EParticleSubUVInterpMethod +{ + PSUVIM_None = 0x0, + PSUVIM_Linear = 0x1, + PSUVIM_Linear_Blend = 0x2, + PSUVIM_Random = 0x3, + PSUVIM_Random_Blend = 0x4, + PSUVIM_MAX = 0x5, +}; + +enum class EParticleSourceSelectionMethod +{ + EPSSM_Random = 0x0, + EPSSM_Sequential = 0x1, + EPSSM_MAX = 0x2, +}; + +enum class EMeshCameraFacingUpAxis +{ + CameraFacing_NoneUP = 0x0, + CameraFacing_ZUp = 0x1, + CameraFacing_NegativeZUp = 0x2, + CameraFacing_YUp = 0x3, + CameraFacing_NegativeYUp = 0x4, + CameraFacing_MAX = 0x5, +}; + +enum class EVectorFieldConstructionOp +{ + VFCO_Extrude = 0x0, + VFCO_Revolve = 0x1, + VFCO_MAX = 0x2, +}; + +enum class EBoneAxis +{ + BA_X = 0x0, + BA_Y = 0x1, + BA_Z = 0x2, +}; + +namespace EEvaluatorMode +{ + enum Mode + { + EM_Standard = 0x0, + EM_Freeze = 0x1, + EM_DelayedFreeze = 0x2, + }; +} + +namespace EEnvQueryStatus +{ + enum Type + { + Processing = 0x0, + Success = 0x1, + Failed = 0x2, + Aborted = 0x3, + OwnerLost = 0x4, + MissingParam = 0x5, + }; +} + +namespace EEvaluateCurveTableResult +{ + enum Type + { + RowFound = 0x0, + RowNotFound = 0x1, + }; +} + +namespace SDockingTabStack +{ + enum ETabsToClose + { + CloseDocumentTabs = 0x0, + CloseDocumentAndMajorTabs = 0x1, + CloseAllTabs = 0x2, + }; +} + +namespace EEnvTestScoreEquation +{ + enum Type + { + Linear = 0x0, + Square = 0x1, + InverseLinear = 0x2, + Constant = 0x3, + }; +} + +enum class EPhysXFilterDataFlags +{ + EPDF_SimpleCollision = 0x1, + EPDF_ComplexCollision = 0x2, + EPDF_CCD = 0x4, + EPDF_ContactNotify = 0x8, + EPDF_StaticShape = 0x10, + EPDF_QueryOnly = 0x20, +}; + +namespace EMessageSeverity +{ + enum Type + { + CriticalError = 0x0, + Error = 0x1, + PerformanceWarning = 0x2, + Warning = 0x3, + Info = 0x4, + }; +} + +namespace EMessageToken +{ + enum Type + { + Action = 0x0, + AssetName = 0x1, + Documentation = 0x2, + Image = 0x3, + Object = 0x4, + Severity = 0x5, + Text = 0x6, + Tutorial = 0x7, + URL = 0x8, + }; +} + +enum class UpdateFlags +{ + DT_CROWD_ANTICIPATE_TURNS = 0x1, + DT_CROWD_OBSTACLE_AVOIDANCE = 0x2, + DT_CROWD_SEPARATION = 0x4, + DT_CROWD_OPTIMIZE_VIS = 0x8, + DT_CROWD_OPTIMIZE_TOPO = 0x10, + DT_CROWD_OPTIMIZE_VIS_MULTI = 0x20, + DT_CROWD_OFFSET_PATH = 0x40, + DT_CROWD_SLOWDOWN_AT_GOAL = 0x80, +}; + +enum class ESteamNetworkingConnectionConfigurationValue +{ + k_ESteamNetworkingConnectionConfigurationValue_SNP_MaxRate = 0x0, + k_ESteamNetworkingConnectionConfigurationValue_SNP_MinRate = 0x1, + k_ESteamNetworkingConnectionConfigurationValue_Count = 0x2, +}; + +enum class UMessagePatternGraveMode +{ + UMSGPAT_GRAVE_DOUBLE_OPTIONAL = 0x0, + UMSGPAT_GRAVE_DOUBLE_REQUIRED = 0x1, +}; + +namespace PhysCommand +{ + enum Type + { + Release = 0x0, + ReleasePScene = 0x1, + DeleteCPUDispatcher = 0x2, + DeleteSimEventCallback = 0x3, + Max = 0x4, + }; +} + +enum class EKCollisionPrimitiveType +{ + KPT_Sphere = 0x0, + KPT_Box = 0x1, + KPT_Sphyl = 0x2, + KPT_Convex = 0x3, + KPT_Unknown = 0x4, +}; + +namespace EScaleMode +{ + enum Type + { + Free = 0x0, + LockedXY = 0x1, + LockedXYZ = 0x2, + }; +} + +namespace EParticleSimulatePhase +{ + enum Type + { + Main = 0x0, + Collision = 0x1, + }; +} + +namespace EStreamPassType +{ + enum Type + { + OnlyPendingVisibility = 0x0, + Loading = 0x1, + Unloading = 0x2, + }; +} + +enum class rcLogCategory +{ + RC_LOG_PROGRESS = 0x1, + RC_LOG_WARNING = 0x2, + RC_LOG_ERROR = 0x3, +}; + +namespace EEnvQueryTrace +{ + enum Type + { + None = 0x0, + Navigation = 0x1, + Geometry = 0x2, + }; +} + +enum class EGPUSortTest +{ + GPU_SORT_TEST_SMALL = 0x1, + GPU_SORT_TEST_LARGE = 0x2, + GPU_SORT_TEST_EXHAUSTIVE = 0x3, + GPU_SORT_TEST_RANDOM = 0x4, +}; + +namespace EEnvTestPurpose +{ + enum Type + { + Filter = 0x0, + Score = 0x1, + FilterAndScore = 0x2, + }; +} + +namespace ERGBFormat +{ + enum Type + { + Invalid = 0xff, + RGBA = 0x0, + BGRA = 0x1, + Gray = 0x2, + }; +} + +namespace FFoliageCustomVersion +{ + enum Type + { + BeforeCustomVersionWasAdded = 0x0, + FoliageUsingHierarchicalISMC = 0x1, + HierarchicalISMCNonTransactional = 0x2, + VersionPlusOne = 0x3, + LatestVersion = 0x2, + }; +} + +namespace ECollisionQuery +{ + enum Type + { + ObjectQuery = 0x0, + TraceQuery = 0x1, + }; +} + +namespace EBTParallelMode +{ + enum Type + { + AbortBackground = 0x0, + WaitForBackground = 0x1, + }; +} + +enum class ESteamNetworkingConfigurationString +{ + k_ESteamNetworkingConfigurationString_ClientForceRelayCluster = 0x0, + k_ESteamNetworkingConfigurationString_ClientDebugTicketAddress = 0x1, + k_ESteamNetworkingConfigurationString_ClientForceProxyAddr = 0x2, + k_ESteamNetworkingConfigurationString_Count = 0x3, +}; + +enum class WICBitmapPaletteType +{ + WICBitmapPaletteTypeCustom = 0x0, + WICBitmapPaletteTypeMedianCut = 0x1, + WICBitmapPaletteTypeFixedBW = 0x2, + WICBitmapPaletteTypeFixedHalftone8 = 0x3, + WICBitmapPaletteTypeFixedHalftone27 = 0x4, + WICBitmapPaletteTypeFixedHalftone64 = 0x5, + WICBitmapPaletteTypeFixedHalftone125 = 0x6, + WICBitmapPaletteTypeFixedHalftone216 = 0x7, + WICBitmapPaletteTypeFixedWebPalette = 0x7, + WICBitmapPaletteTypeFixedHalftone252 = 0x8, + WICBitmapPaletteTypeFixedHalftone256 = 0x9, + WICBitmapPaletteTypeFixedGray4 = 0xa, + WICBitmapPaletteTypeFixedGray16 = 0xb, + WICBitmapPaletteTypeFixedGray256 = 0xc, + WICBITMAPPALETTETYPE_FORCE_DWORD = 0x7fffffff, +}; + +namespace Imf +{ + enum LevelMode + { + ONE_LEVEL = 0x0, + MIPMAP_LEVELS = 0x1, + RIPMAP_LEVELS = 0x2, + NUM_LEVELMODES = 0x3, + }; +} + +namespace FRecastNavMeshGenerator +{ + enum EDataOwnership + { + DO_ForeignData = 0x0, + DO_OwnsData = 0x1, + }; +} + +enum class rcBuildContoursFlags +{ + RC_CONTOUR_TESS_WALL_EDGES = 0x1, + RC_CONTOUR_TESS_AREA_EDGES = 0x2, +}; + +enum class UMessagePatternPartType +{ + UMSGPAT_PART_TYPE_MSG_START = 0x0, + UMSGPAT_PART_TYPE_MSG_LIMIT = 0x1, + UMSGPAT_PART_TYPE_SKIP_SYNTAX = 0x2, + UMSGPAT_PART_TYPE_INSERT_CHAR = 0x3, + UMSGPAT_PART_TYPE_REPLACE_NUMBER = 0x4, + UMSGPAT_PART_TYPE_ARG_START = 0x5, + UMSGPAT_PART_TYPE_ARG_LIMIT = 0x6, + UMSGPAT_PART_TYPE_ARG_NUMBER = 0x7, + UMSGPAT_PART_TYPE_ARG_NAME = 0x8, + UMSGPAT_PART_TYPE_ARG_TYPE = 0x9, + UMSGPAT_PART_TYPE_ARG_STYLE = 0xa, + UMSGPAT_PART_TYPE_ARG_SELECTOR = 0xb, + UMSGPAT_PART_TYPE_ARG_INT = 0xc, + UMSGPAT_PART_TYPE_ARG_DOUBLE = 0xd, +}; + +enum class dtAllocHint +{ + DT_ALLOC_PERM = 0x0, + DT_ALLOC_TEMP = 0x1, +}; + +enum class duDebugDrawPrimitives +{ + DU_DRAW_POINTS = 0x0, + DU_DRAW_LINES = 0x1, + DU_DRAW_TRIS = 0x2, + DU_DRAW_QUADS = 0x3, +}; + +enum class dtTileFlags +{ + DT_TILE_FREE_DATA = 0x1, +}; + +enum class dtPolyTypes +{ + DT_POLYTYPE_GROUND = 0x0, + DT_POLYTYPE_OFFMESH_POINT = 0x1, + DT_POLYTYPE_OFFMESH_SEGMENT = 0x2, +}; + +enum class rcRegionPartitioning +{ + RC_REGION_MONOTONE = 0x0, + RC_REGION_WATERSHED = 0x1, + RC_REGION_CHUNKY = 0x2, +}; + +namespace Imf +{ + enum RgbaChannels + { + WRITE_R = 0x1, + WRITE_G = 0x2, + WRITE_B = 0x4, + WRITE_A = 0x8, + WRITE_Y = 0x10, + WRITE_C = 0x20, + WRITE_RGB = 0x7, + WRITE_RGBA = 0xf, + WRITE_YC = 0x30, + WRITE_YA = 0x18, + WRITE_YCA = 0x38, + }; +} + +enum class EDataBaseUnrealTypes +{ + DBT_UNKOWN = 0x0, + DBT_FLOAT = 0x1, + DBT_INT = 0x2, + DBT_STRING = 0x3, +}; + +namespace EWorldSerializeLoadFlag +{ + enum WSLF + { + NoInlineLoadNeeded = 0x1, + Loading = 0x2, + Loaded = 0x4, + }; +} + +namespace FEnvTraceData +{ + enum EDescriptionMode + { + Brief = 0x0, + Detailed = 0x1, + }; +} + +namespace EEnvTestFilterType +{ + enum Type + { + Minimum = 0x0, + Maximum = 0x1, + Range = 0x2, + Match = 0x3, + }; +} + +namespace EImageFormat +{ + enum Type + { + Invalid = 0xff, + PNG = 0x0, + JPEG = 0x1, + GrayscaleJPEG = 0x2, + BMP = 0x3, + ICO = 0x4, + EXR = 0x5, + }; +} + +namespace EIPv4SubnetClasses +{ + enum Type + { + Invalid = 0x0, + ClassA = 0x1, + ClassB = 0x2, + ClassC = 0x3, + }; +} + +enum class EGametypeContentReferencerTypes +{ + GametypeCommon_ReferencerIndex = 0x0, + GametypeCommon_LocalizedReferencerIndex = 0x1, + GametypeContent_ReferencerIndex = 0x2, + GametypeContent_LocalizedReferencerIndex = 0x3, + MAX_ReferencerIndex = 0x4, +}; + +namespace SDockingNode +{ + enum ECleanupRetVal + { + VisibleTabsUnderNode = 0x0, + HistoryTabsUnderNode = 0x1, + NoTabsUnderNode = 0x2, + }; +} + +namespace EWriteUserCaptureVideoError +{ + enum Type + { + None = 0x0, + VideoCaptureInvalid = 0x1, + CaptureNotRunning = 0x2, + FailedToCreateDirectory = 0x3, + }; +} + +namespace EEnvTraceShape +{ + enum Type + { + Line = 0x0, + Box = 0x1, + Sphere = 0x2, + Capsule = 0x3, + }; +} + +namespace EEnvQueryRunMode +{ + enum Type + { + SingleResult = 0x0, + AllMatching = 0x1, + }; +} + +namespace Imf +{ + enum LevelRoundingMode + { + ROUND_DOWN = 0x0, + ROUND_UP = 0x1, + NUM_ROUNDINGMODES = 0x2, + }; +} + +namespace FGPUSkinCache +{ + enum SkinCacheInitSettings + { + MaxBufferSize = 0x2000000, + MaxUniformBufferBones = 0x100, + MaxCachedElements = 0x400, + MaxCachedVertexBufferSRVs = 0x80, + }; +} + +enum class WICComponentType +{ + WICDecoder = 0x1, + WICEncoder = 0x2, + WICPixelFormatConverter = 0x4, + WICMetadataReader = 0x8, + WICMetadataWriter = 0x10, + WICPixelFormat = 0x20, + WICAllComponents = 0x3f, + WICCOMPONENTTYPE_FORCE_DWORD = 0x7fffffff, +}; + +enum class WICMetadataCreationOptions +{ + WICMetadataCreationDefault = 0x0, +}; + +enum class ERepLayoutCmdType +{ + REPCMD_DynamicArray = 0x0, + REPCMD_Return = 0x1, + REPCMD_Property = 0x2, + REPCMD_PropertyBool = 0x3, + REPCMD_PropertyFloat = 0x4, + REPCMD_PropertyInt = 0x5, + REPCMD_PropertyByte = 0x6, + REPCMD_PropertyName = 0x7, + REPCMD_PropertyObject = 0x8, + REPCMD_PropertyUInt32 = 0x9, + REPCMD_PropertyVector = 0xa, + REPCMD_PropertyRotator = 0xb, + REPCMD_PropertyPlane = 0xc, + REPCMD_PropertyVector100 = 0xd, + REPCMD_PropertyNetId = 0xe, + REPCMD_RepMovement = 0xf, + REPCMD_PropertyVectorNormal = 0x10, + REPCMD_PropertyVector10 = 0x11, + REPCMD_PropertyVectorQ = 0x12, + REPCMD_PropertyString = 0x13, + REPCMD_PropertyUInt64 = 0x14, + REPCMD_PropertyVectorLow = 0x15, + REPCMD_PropertyRotatorNetQuantize = 0x16, + REPCMD_PropertyRotatorNetQuantizeNoRoll = 0x17, + REPCMD_PropertyRotatorNetQuantizeYawOnly = 0x18, + REPCMD_PropertyRotatorNetQuantizeSmartPitch = 0x19, +}; + +namespace ENiagaraVectorAttr +{ + enum Type + { + Position = 0x0, + Velocity = 0x1, + Color = 0x2, + Rotation = 0x3, + RelativeTime = 0x4, + MaxVectorAttribs = 0x5, + }; +} + +namespace FDockingDragOperation +{ + enum EViaTabwell + { + DockingViaTabWell = 0x0, + DockingViaTarget = 0x1, + }; +} + +namespace TileCacheData +{ + enum EdgeValues + { + UNDEF = 0xff, + HULL = 0xfe, + }; +} + +namespace ansel +{ + enum FovType + { + kHorizontalFov = 0x0, + kVerticalFov = 0x1, + }; +} + +enum class WICBitmapInterpolationMode +{ + WICBitmapInterpolationModeNearestNeighbor = 0x0, + WICBitmapInterpolationModeLinear = 0x1, + WICBitmapInterpolationModeCubic = 0x2, + WICBitmapInterpolationModeFant = 0x3, + WICBITMAPINTERPOLATIONMODE_FORCE_DWORD = 0x7fffffff, +}; + +enum class UNormalizationCheckResult +{ + UNORM_NO = 0x0, + UNORM_YES = 0x1, + UNORM_MAYBE = 0x2, +}; + +enum class EDDSFlags +{ + DDSF_Caps = 0x1, + DDSF_Height = 0x2, + DDSF_Width = 0x4, + DDSF_PixelFormat = 0x1000, +}; + +namespace FOpenGLSamplerStateData +{ + enum EGLSamplerData + { + EGLSamplerData_WrapS = 0x0, + EGLSamplerData_WrapT = 0x1, + EGLSamplerData_WrapR = 0x2, + EGLSamplerData_LODBias = 0x3, + EGLSamplerData_MagFilter = 0x4, + EGLSamplerData_MinFilter = 0x5, + EGLSamplerData_MaxAniso = 0x6, + EGLSamplerData_CompareMode = 0x7, + EGLSamplerData_CompareFunc = 0x8, + EGLSamplerData_Num = 0x9, + }; +} + +namespace FAnalytics +{ + enum BuildType + { + Development = 0x0, + Test = 0x1, + Debug = 0x2, + Release = 0x3, + }; +} + +namespace FCsvParser +{ + enum EParseResult + { + EndOfCell = 0x0, + EndOfRow = 0x1, + EndOfString = 0x2, + }; +} + +enum class ETextureStreamingType +{ + StreamType_Static = 0x0, + StreamType_Dynamic = 0x1, + StreamType_Forced = 0x2, + StreamType_LastRenderTime = 0x3, + StreamType_Orphaned = 0x4, + StreamType_Other = 0x5, +}; + +namespace ETaskbarProgressState +{ + enum Type + { + NoProgress = 0x0, + Indeterminate = 0x1, + Normal = 0x2, + Error = 0x4, + Paused = 0x8, + }; +} + +enum class FPSChartStats +{ + STAT_FPSChartFirstStat = 0x0, +}; + +enum class EAudioStreamingState +{ + AudioState_ReadyFor_Requests = 0x0, + AudioState_ReadyFor_Finalization = 0x1, + AudioState_InProgress_Loading = 0x2, +}; + +namespace EEnvTestCondition +{ + enum Type + { + NoCondition = 0x0, + AtLeast = 0x1, + UpTo = 0x2, + Match = 0x3, + }; +} + +enum class InternetCookieState +{ + COOKIE_STATE_UNKNOWN = 0x0, + COOKIE_STATE_ACCEPT = 0x1, + COOKIE_STATE_PROMPT = 0x2, + COOKIE_STATE_LEASH = 0x3, + COOKIE_STATE_DOWNGRADE = 0x4, + COOKIE_STATE_REJECT = 0x5, + COOKIE_STATE_MAX = 0x5, +}; + +enum class CURLversion +{ + CURLVERSION_FIRST = 0x0, + CURLVERSION_SECOND = 0x1, + CURLVERSION_THIRD = 0x2, + CURLVERSION_FOURTH = 0x3, + CURLVERSION_LAST = 0x4, +}; + +enum class CURLMcode +{ + CURLM_CALL_MULTI_PERFORM = 0xff, + CURLM_OK = 0x0, + CURLM_BAD_HANDLE = 0x1, + CURLM_BAD_EASY_HANDLE = 0x2, + CURLM_OUT_OF_MEMORY = 0x3, + CURLM_INTERNAL_ERROR = 0x4, + CURLM_BAD_SOCKET = 0x5, + CURLM_UNKNOWN_OPTION = 0x6, + CURLM_ADDED_ALREADY = 0x7, + CURLM_LAST = 0x8, +}; + +namespace EMovieScenePlayerStatus +{ + enum Type + { + Stopped = 0x0, + Playing = 0x1, + Recording = 0x2, + BeginningScrubbing = 0x3, + Scrubbing = 0x4, + MAX = 0x5, + }; +} + +namespace ETeamAttitude +{ + enum Type + { + Friendly = 0x0, + Neutral = 0x1, + Hostile = 0x2, + }; +} + +namespace ECorePerceptionTypes +{ + enum Type + { + Sight = 0x0, + Hearing = 0x1, + Damage = 0x2, + Touch = 0x3, + Team = 0x4, + Prediction = 0x5, + MAX = 0x6, + }; +} + +namespace EBTDecoratorLogic +{ + enum Type + { + Invalid = 0x0, + Test = 0x1, + And = 0x2, + Or = 0x3, + Not = 0x4, + }; +} + +namespace UAIPerceptionSystem +{ + enum EDelayedStimulusSorting + { + RequiresSorting = 0x0, + NoNeedToSort = 0x1, + }; +} + +namespace EBlackboardCompare +{ + enum Type + { + Less = 0xff, + Equal = 0x0, + Greater = 0x1, + NotEqual = 0x1, + }; +} + +namespace EBlackboardDescription +{ + enum Type + { + OnlyValue = 0x0, + KeyWithValue = 0x1, + DetailedKeyWithValue = 0x2, + Full = 0x3, + }; +} + +namespace EEnvQueryTestClamping +{ + enum Type + { + None = 0x0, + SpecifiedValue = 0x1, + FilterThreshold = 0x2, + }; +} + +namespace EBlackboardKeyOperation +{ + enum Type + { + Basic = 0x0, + Arithmetic = 0x1, + Text = 0x2, + }; +} + +namespace EBasicKeyOperation +{ + enum Type + { + Set = 0x0, + NotSet = 0x1, + }; +} + +namespace EArithmeticKeyOperation +{ + enum Type + { + Equal = 0x0, + NotEqual = 0x1, + Less = 0x2, + LessOrEqual = 0x3, + Greater = 0x4, + GreaterOrEqual = 0x5, + }; +} + +namespace ETextKeyOperation +{ + enum Type + { + Equal = 0x0, + NotEqual = 0x1, + Contain = 0x2, + NotContain = 0x3, + }; +} + +namespace ESightPerceptionEventName +{ + enum Type + { + Undefined = 0x0, + GainedSight = 0x1, + LostSight = 0x2, + }; +} + +namespace EBTBlackboardRestart +{ + enum Type + { + ValueChange = 0x0, + ResultChange = 0x1, + }; +} + +namespace EBlackBoardEntryComparison +{ + enum Type + { + Equal = 0x0, + NotEqual = 0x1, + }; +} + +namespace EPathExistanceQueryType +{ + enum Type + { + NavmeshRaycast2D = 0x0, + HierarchicalQuery = 0x1, + RegularPathFinding = 0x2, + }; +} + +namespace EEnvDirection +{ + enum Type + { + TwoPoints = 0x0, + Rotation = 0x1, + }; +} + +enum class EBitmapCompression +{ + BCBI_RGB = 0x0, + BCBI_RLE8 = 0x1, + BCBI_RLE4 = 0x2, + BCBI_BITFIELDS = 0x3, +}; + +namespace EBTParallelChild +{ + enum Type + { + MainTask = 0x0, + BackgroundTree = 0x1, + SearchIndicator = 0x2, + }; +} + +namespace EHostType +{ + enum Type + { + Runtime = 0x0, + RuntimeNoCommandlet = 0x1, + Developer = 0x2, + Editor = 0x3, + EditorNoCommandlet = 0x4, + Program = 0x5, + Max = 0x6, + }; +} + +enum class EComparisonOp +{ + ECO_Unknown = 0x0, + ECO_Equal = 0x1, + ECO_NotEqual = 0x2, + ECO_Larger = 0x3, + ECO_LargerThan = 0x4, + ECO_Smaller = 0x5, + ECO_SmallerThan = 0x6, +}; + +enum class EGPUProfileSortMode +{ + EChronological = 0x0, + ETimeElapsed = 0x1, + ENumPrims = 0x2, + ENumVerts = 0x3, + EMax = 0x4, +}; + +namespace FOpenGLBase +{ + enum EQueryMode + { + QM_Result = 0x0, + QM_ResultAvailable = 0x1, + }; +} + +enum class EOpenGLCurrentContext +{ + CONTEXT_Other = 0xfe, + CONTEXT_Invalid = 0xff, + CONTEXT_Shared = 0x0, + CONTEXT_Rendering = 0x1, +}; + +enum class EClearType +{ + CT_None = 0x0, + CT_Depth = 0x1, + CT_Stencil = 0x2, + CT_Color = 0x4, + CT_DepthStencil = 0x3, +}; + +enum class ESteamNetworkingSendType +{ + k_ESteamNetworkingSendType_Unreliable = 0x0, + k_ESteamNetworkingSendType_UnreliableNoNagle = 0x1, + k_ESteamNetworkingSendType_UnreliableNoDelay = 0x3, + k_ESteamNetworkingSendType_Reliable = 0x8, + k_ESteamNetworkingSendType_ReliableNoNagle = 0x9, +}; + +namespace Imf +{ + enum PixelType + { + UINT = 0x0, + HALF = 0x1, + FLOAT = 0x2, + NUM_PIXELTYPES = 0x3, + }; +} + +namespace FGlobalTexturePool +{ + enum EInternalFormat + { + IF_DXT1 = 0x0, + IF_DXT5 = 0x1, + IF_BC5 = 0x2, + IF_Max = 0x3, + }; +} + +enum class ObstacleState +{ + DT_OBSTACLE_EMPTY = 0x0, + DT_OBSTACLE_PROCESSING = 0x1, + DT_OBSTACLE_PROCESSED = 0x2, + DT_OBSTACLE_REMOVING = 0x3, +}; + +enum class EdgeValues +{ + UNDEF = 0xff, + HULL = 0xfe, +}; + +enum class dtRegionPartitioning +{ + DT_REGION_MONOTONE = 0x0, + DT_REGION_WATERSHED = 0x1, + DT_REGION_CHUNKY = 0x2, +}; + +enum class dtNodeFlags +{ + DT_NODE_OPEN = 0x1, + DT_NODE_CLOSED = 0x2, +}; + +enum class ELaunchOptionType +{ + k_ELaunchOptionType_None = 0x0, + k_ELaunchOptionType_Default = 0x1, + k_ELaunchOptionType_SafeMode = 0x2, + k_ELaunchOptionType_Multiplayer = 0x3, + k_ELaunchOptionType_Config = 0x4, + k_ELaunchOptionType_OpenVR = 0x5, + k_ELaunchOptionType_Server = 0x6, + k_ELaunchOptionType_Editor = 0x7, + k_ELaunchOptionType_Manual = 0x8, + k_ELaunchOptionType_Benchmark = 0x9, + k_ELaunchOptionType_Option1 = 0xa, + k_ELaunchOptionType_Option2 = 0xb, + k_ELaunchOptionType_Option3 = 0xc, + k_ELaunchOptionType_OculusVR = 0xd, + k_ELaunchOptionType_OpenVROverlay = 0xe, + k_ELaunchOptionType_OSVR = 0xf, + k_ELaunchOptionType_Dialog = 0x3e8, +}; + +enum class EVRHMDType +{ + k_eEVRHMDType_None = 0xff, + k_eEVRHMDType_Unknown = 0x0, + k_eEVRHMDType_HTC_Dev = 0x1, + k_eEVRHMDType_HTC_VivePre = 0x2, + k_eEVRHMDType_HTC_Vive = 0x3, + k_eEVRHMDType_HTC_Unknown = 0x14, + k_eEVRHMDType_Oculus_DK1 = 0x15, + k_eEVRHMDType_Oculus_DK2 = 0x16, + k_eEVRHMDType_Oculus_Rift = 0x17, + k_eEVRHMDType_Oculus_Unknown = 0x28, +}; + +namespace ESocketInternalState +{ + enum Param + { + CanRead = 0x0, + CanWrite = 0x1, + HasError = 0x2, + }; +} + +namespace ESocketInternalState +{ + enum Return + { + Yes = 0x0, + No = 0x1, + EncounteredError = 0x2, + }; +} + +enum class ESteamNetworkingConfigurationValue +{ + k_ESteamNetworkingConfigurationValue_FakeMessageLoss_Send = 0x0, + k_ESteamNetworkingConfigurationValue_FakeMessageLoss_Recv = 0x1, + k_ESteamNetworkingConfigurationValue_FakePacketLoss_Send = 0x2, + k_ESteamNetworkingConfigurationValue_FakePacketLoss_Recv = 0x3, + k_ESteamNetworkingConfigurationValue_FakePacketLag_Send = 0x4, + k_ESteamNetworkingConfigurationValue_FakePacketLag_Recv = 0x5, + k_ESteamNetworkingConfigurationValue_FakePacketReorder_Send = 0x6, + k_ESteamNetworkingConfigurationValue_FakePacketReorder_Recv = 0x7, + k_ESteamNetworkingConfigurationValue_FakePacketReorder_Time = 0x8, + k_ESteamNetworkingConfigurationValue_SendBufferSize = 0x9, + k_ESteamNetworkingConfigurationValue_MaxRate = 0xa, + k_ESteamNetworkingConfigurationValue_MinRate = 0xb, + k_ESteamNetworkingConfigurationValue_Nagle_Time = 0xc, + k_ESteamNetworkingConfigurationValue_LogLevel_AckRTT = 0xd, + k_ESteamNetworkingConfigurationValue_LogLevel_Packet = 0xe, + k_ESteamNetworkingConfigurationValue_LogLevel_Message = 0xf, + k_ESteamNetworkingConfigurationValue_LogLevel_PacketGaps = 0x10, + k_ESteamNetworkingConfigurationValue_LogLevel_P2PRendezvous = 0x11, + k_ESteamNetworkingConfigurationValue_LogLevel_RelayPings = 0x12, + k_ESteamNetworkingConfigurationValue_ClientConsecutitivePingTimeoutsFailInitial = 0x13, + k_ESteamNetworkingConfigurationValue_ClientConsecutitivePingTimeoutsFail = 0x14, + k_ESteamNetworkingConfigurationValue_ClientMinPingsBeforePingAccurate = 0x15, + k_ESteamNetworkingConfigurationValue_ClientSingleSocket = 0x16, + k_ESteamNetworkingConfigurationValue_IP_Allow_Without_Auth = 0x17, + k_ESteamNetworkingConfigurationValue_Timeout_Seconds_Initial = 0x18, + k_ESteamNetworkingConfigurationValue_Timeout_Seconds_Connected = 0x19, + k_ESteamNetworkingConfigurationValue_Count = 0x1a, +}; + +namespace SWidgetGallery +{ + enum ERadioChoice + { + Radio0 = 0x0, + Radio1 = 0x1, + Radio2 = 0x2, + }; +} + +enum class EColorPickerModes +{ + Spectrum = 0x0, + Wheel = 0x1, +}; + +namespace FSyntaxTokenizer +{ + enum ETokenType + { + Syntax = 0x0, + Literal = 0x1, + }; +} + +namespace SDockingTabStack +{ + enum EChromeElement + { + Icon = 0x0, + Controls = 0x1, + }; +} + +namespace MilPixelFormat +{ + enum Enum + { + DontCare = 0x0, + }; +} + +namespace EExtensionType +{ + enum Type + { + MenuBar = 0x0, + Menu = 0x1, + ToolBar = 0x2, + }; +} + +namespace FWindowsTextInputMethodSystem +{ + enum EAPI + { + Unknown = 0x0, + IMM = 0x1, + TSF = 0x2, + }; +} + +namespace FInternationalizationArchive +{ + enum EFormatVersion + { + Initial = 0x0, + EscapeFixes = 0x1, + LatestPlusOne = 0x2, + Latest = 0x1, + }; +} + +enum class FAmazonS3GetObjectStatus +{ + GetObject_NotStarted = 0x0, + GetObject_Downloading = 0x1, + GetObject_Done = 0x2, + GetObject_Errored = 0x3, +}; + +namespace EProjectDescriptorVersion +{ + enum Type + { + Invalid = 0x0, + Initial = 0x1, + NameHash = 0x2, + ProjectPluginUnification = 0x3, + LatestPlusOne = 0x4, + Latest = 0x3, + }; +} + +namespace ELoadingPhase +{ + enum Type + { + Default = 0x0, + PostDefault = 0x1, + PreDefault = 0x2, + PostConfigInit = 0x3, + PreLoadingScreen = 0x4, + PostEngineInit = 0x5, + Max = 0x6, + }; +} + +enum class UDisplayContext +{ + UDISPCTX_STANDARD_NAMES = 0x0, + UDISPCTX_DIALECT_NAMES = 0x1, + UDISPCTX_CAPITALIZATION_NONE = 0x100, + UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE = 0x101, + UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE = 0x102, + UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU = 0x103, + UDISPCTX_CAPITALIZATION_FOR_STANDALONE = 0x104, +}; + +namespace EPluginLoadedFrom +{ + enum Type + { + Engine = 0x0, + GameProject = 0x1, + }; +} + +namespace EWindowsDragDropOperationType +{ + enum Type + { + DragEnter = 0x0, + DragOver = 0x1, + DragLeave = 0x2, + Drop = 0x3, + }; +} + +enum class WICNamedWhitePoint +{ + WICWhitePointDefault = 0x1, + WICWhitePointDaylight = 0x2, + WICWhitePointCloudy = 0x4, + WICWhitePointShade = 0x8, + WICWhitePointTungsten = 0x10, + WICWhitePointFluorescent = 0x20, + WICWhitePointFlash = 0x40, + WICWhitePointUnderwater = 0x80, + WICWhitePointCustom = 0x100, + WICWhitePointAutoWhiteBalance = 0x200, +}; + +enum class WICColorContextType +{ + WICColorContextUninitialized = 0x0, + WICColorContextProfile = 0x1, + WICColorContextExifColorSpace = 0x2, +}; + +namespace ELocMetadataType +{ + enum Type + { + None = 0x0, + Boolean = 0x1, + String = 0x2, + Array = 0x3, + Object = 0x4, + }; +} + +enum class UErrorCode +{ + U_USING_FALLBACK_WARNING = 0x80, +}; + +namespace FInternationalizationManifest +{ + enum EFormatVersion + { + Initial = 0x0, + EscapeFixes = 0x1, + LatestPlusOne = 0x2, + Latest = 0x1, + }; +} + +enum class UCalendarType +{ + UCAL_TRADITIONAL = 0x0, +}; + +enum class UNormalizationMode +{ + UNORM_NONE = 0x1, + UNORM_NFD = 0x2, + UNORM_NFKD = 0x3, + UNORM_NFC = 0x4, + UNORM_DEFAULT = 0x4, + UNORM_NFKC = 0x5, + UNORM_FCD = 0x6, + UNORM_MODE_COUNT = 0x7, +}; + +enum class UScriptCode +{ + USCRIPT_INVALID_CODE = 0xff, + USCRIPT_COMMON = 0x0, + USCRIPT_INHERITED = 0x1, + USCRIPT_ARABIC = 0x2, + USCRIPT_ARMENIAN = 0x3, + USCRIPT_BENGALI = 0x4, + USCRIPT_BOPOMOFO = 0x5, + USCRIPT_CHEROKEE = 0x6, + USCRIPT_COPTIC = 0x7, + USCRIPT_CYRILLIC = 0x8, + USCRIPT_DESERET = 0x9, + USCRIPT_DEVANAGARI = 0xa, + USCRIPT_ETHIOPIC = 0xb, + USCRIPT_GEORGIAN = 0xc, + USCRIPT_GOTHIC = 0xd, + USCRIPT_GREEK = 0xe, + USCRIPT_GUJARATI = 0xf, + USCRIPT_GURMUKHI = 0x10, + USCRIPT_HAN = 0x11, + USCRIPT_HANGUL = 0x12, + USCRIPT_HEBREW = 0x13, + USCRIPT_HIRAGANA = 0x14, + USCRIPT_KANNADA = 0x15, + USCRIPT_KATAKANA = 0x16, + USCRIPT_KHMER = 0x17, + USCRIPT_LAO = 0x18, + USCRIPT_LATIN = 0x19, + USCRIPT_MALAYALAM = 0x1a, + USCRIPT_MONGOLIAN = 0x1b, + USCRIPT_MYANMAR = 0x1c, + USCRIPT_OGHAM = 0x1d, + USCRIPT_OLD_ITALIC = 0x1e, + USCRIPT_ORIYA = 0x1f, + USCRIPT_RUNIC = 0x20, + USCRIPT_SINHALA = 0x21, + USCRIPT_SYRIAC = 0x22, + USCRIPT_TAMIL = 0x23, + USCRIPT_TELUGU = 0x24, + USCRIPT_THAANA = 0x25, + USCRIPT_THAI = 0x26, + USCRIPT_TIBETAN = 0x27, + USCRIPT_CANADIAN_ABORIGINAL = 0x28, + USCRIPT_UCAS = 0x28, + USCRIPT_YI = 0x29, + USCRIPT_TAGALOG = 0x2a, + USCRIPT_HANUNOO = 0x2b, + USCRIPT_BUHID = 0x2c, + USCRIPT_TAGBANWA = 0x2d, + USCRIPT_BRAILLE = 0x2e, + USCRIPT_CYPRIOT = 0x2f, + USCRIPT_LIMBU = 0x30, + USCRIPT_LINEAR_B = 0x31, + USCRIPT_OSMANYA = 0x32, + USCRIPT_SHAVIAN = 0x33, + USCRIPT_TAI_LE = 0x34, + USCRIPT_UGARITIC = 0x35, + USCRIPT_KATAKANA_OR_HIRAGANA = 0x36, + USCRIPT_BUGINESE = 0x37, + USCRIPT_GLAGOLITIC = 0x38, + USCRIPT_KHAROSHTHI = 0x39, + USCRIPT_SYLOTI_NAGRI = 0x3a, + USCRIPT_NEW_TAI_LUE = 0x3b, + USCRIPT_TIFINAGH = 0x3c, + USCRIPT_OLD_PERSIAN = 0x3d, + USCRIPT_BALINESE = 0x3e, + USCRIPT_BATAK = 0x3f, + USCRIPT_BLISSYMBOLS = 0x40, + USCRIPT_BRAHMI = 0x41, + USCRIPT_CHAM = 0x42, + USCRIPT_CIRTH = 0x43, + USCRIPT_OLD_CHURCH_SLAVONIC_CYRILLIC = 0x44, + USCRIPT_DEMOTIC_EGYPTIAN = 0x45, + USCRIPT_HIERATIC_EGYPTIAN = 0x46, + USCRIPT_EGYPTIAN_HIEROGLYPHS = 0x47, + USCRIPT_KHUTSURI = 0x48, + USCRIPT_SIMPLIFIED_HAN = 0x49, + USCRIPT_TRADITIONAL_HAN = 0x4a, + USCRIPT_PAHAWH_HMONG = 0x4b, + USCRIPT_OLD_HUNGARIAN = 0x4c, + USCRIPT_HARAPPAN_INDUS = 0x4d, + USCRIPT_JAVANESE = 0x4e, + USCRIPT_KAYAH_LI = 0x4f, + USCRIPT_LATIN_FRAKTUR = 0x50, + USCRIPT_LATIN_GAELIC = 0x51, + USCRIPT_LEPCHA = 0x52, + USCRIPT_LINEAR_A = 0x53, + USCRIPT_MANDAIC = 0x54, + USCRIPT_MANDAEAN = 0x54, + USCRIPT_MAYAN_HIEROGLYPHS = 0x55, + USCRIPT_MEROITIC_HIEROGLYPHS = 0x56, + USCRIPT_MEROITIC = 0x56, + USCRIPT_NKO = 0x57, + USCRIPT_ORKHON = 0x58, + USCRIPT_OLD_PERMIC = 0x59, + USCRIPT_PHAGS_PA = 0x5a, + USCRIPT_PHOENICIAN = 0x5b, + USCRIPT_MIAO = 0x5c, + USCRIPT_PHONETIC_POLLARD = 0x5c, + USCRIPT_RONGORONGO = 0x5d, + USCRIPT_SARATI = 0x5e, + USCRIPT_ESTRANGELO_SYRIAC = 0x5f, + USCRIPT_WESTERN_SYRIAC = 0x60, + USCRIPT_EASTERN_SYRIAC = 0x61, + USCRIPT_TENGWAR = 0x62, + USCRIPT_VAI = 0x63, + USCRIPT_VISIBLE_SPEECH = 0x64, + USCRIPT_CUNEIFORM = 0x65, + USCRIPT_UNWRITTEN_LANGUAGES = 0x66, + USCRIPT_UNKNOWN = 0x67, + USCRIPT_CARIAN = 0x68, + USCRIPT_JAPANESE = 0x69, + USCRIPT_LANNA = 0x6a, + USCRIPT_LYCIAN = 0x6b, + USCRIPT_LYDIAN = 0x6c, + USCRIPT_OL_CHIKI = 0x6d, + USCRIPT_REJANG = 0x6e, + USCRIPT_SAURASHTRA = 0x6f, + USCRIPT_SIGN_WRITING = 0x70, + USCRIPT_SUNDANESE = 0x71, + USCRIPT_MOON = 0x72, + USCRIPT_MEITEI_MAYEK = 0x73, + USCRIPT_IMPERIAL_ARAMAIC = 0x74, + USCRIPT_AVESTAN = 0x75, + USCRIPT_CHAKMA = 0x76, + USCRIPT_KOREAN = 0x77, + USCRIPT_KAITHI = 0x78, + USCRIPT_MANICHAEAN = 0x79, + USCRIPT_INSCRIPTIONAL_PAHLAVI = 0x7a, + USCRIPT_PSALTER_PAHLAVI = 0x7b, + USCRIPT_BOOK_PAHLAVI = 0x7c, + USCRIPT_INSCRIPTIONAL_PARTHIAN = 0x7d, + USCRIPT_SAMARITAN = 0x7e, + USCRIPT_TAI_VIET = 0x7f, + USCRIPT_MATHEMATICAL_NOTATION = 0x80, + USCRIPT_SYMBOLS = 0x81, + USCRIPT_BAMUM = 0x82, + USCRIPT_LISU = 0x83, + USCRIPT_NAKHI_GEBA = 0x84, + USCRIPT_OLD_SOUTH_ARABIAN = 0x85, + USCRIPT_BASSA_VAH = 0x86, + USCRIPT_DUPLOYAN_SHORTAND = 0x87, + USCRIPT_ELBASAN = 0x88, + USCRIPT_GRANTHA = 0x89, + USCRIPT_KPELLE = 0x8a, + USCRIPT_LOMA = 0x8b, + USCRIPT_MENDE = 0x8c, + USCRIPT_MEROITIC_CURSIVE = 0x8d, + USCRIPT_OLD_NORTH_ARABIAN = 0x8e, + USCRIPT_NABATAEAN = 0x8f, + USCRIPT_PALMYRENE = 0x90, + USCRIPT_SINDHI = 0x91, + USCRIPT_WARANG_CITI = 0x92, + USCRIPT_AFAKA = 0x93, + USCRIPT_JURCHEN = 0x94, + USCRIPT_MRO = 0x95, + USCRIPT_NUSHU = 0x96, + USCRIPT_SHARADA = 0x97, + USCRIPT_SORA_SOMPENG = 0x98, + USCRIPT_TAKRI = 0x99, + USCRIPT_TANGUT = 0x9a, + USCRIPT_WOLEAI = 0x9b, + USCRIPT_ANATOLIAN_HIEROGLYPHS = 0x9c, + USCRIPT_KHOJKI = 0x9d, + USCRIPT_TIRHUTA = 0x9e, + USCRIPT_CAUCASIAN_ALBANIAN = 0x9f, + USCRIPT_MAHAJANI = 0xa0, + USCRIPT_CODE_LIMIT = 0xa1, +}; + +enum class UCharNameChoice +{ + U_UNICODE_CHAR_NAME = 0x0, + U_UNICODE_10_CHAR_NAME = 0x1, + U_EXTENDED_CHAR_NAME = 0x2, + U_CHAR_NAME_ALIAS = 0x3, + U_CHAR_NAME_CHOICE_COUNT = 0x4, +}; + +enum class UDateFormatStyle +{ + UDAT_FULL = 0x0, + UDAT_LONG = 0x1, + UDAT_MEDIUM = 0x2, + UDAT_SHORT = 0x3, + UDAT_DEFAULT = 0x2, + UDAT_RELATIVE = 0x80, + UDAT_FULL_RELATIVE = 0x80, + UDAT_LONG_RELATIVE = 0x81, + UDAT_MEDIUM_RELATIVE = 0x82, + UDAT_SHORT_RELATIVE = 0x83, + UDAT_NONE = 0xff, + UDAT_PATTERN = 0xfe, + UDAT_IGNORE = 0xfe, +}; + +enum class UDateFormatBooleanAttribute +{ + UDAT_PARSE_ALLOW_WHITESPACE = 0x0, + UDAT_PARSE_ALLOW_NUMERIC = 0x1, + UDAT_PARSE_PARTIAL_MATCH = 0x2, + UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH = 0x3, + UDAT_BOOLEAN_ATTRIBUTE_COUNT = 0x4, +}; + +enum class UColAttribute +{ + UCOL_FRENCH_COLLATION = 0x0, + UCOL_ALTERNATE_HANDLING = 0x1, + UCOL_CASE_FIRST = 0x2, + UCOL_CASE_LEVEL = 0x3, + UCOL_NORMALIZATION_MODE = 0x4, + UCOL_DECOMPOSITION_MODE = 0x4, + UCOL_STRENGTH = 0x5, + UCOL_HIRAGANA_QUATERNARY_MODE = 0x6, + UCOL_NUMERIC_COLLATION = 0x7, + UCOL_ATTRIBUTE_COUNT = 0x8, +}; + +enum class ULineBreak +{ + U_LB_UNKNOWN = 0x0, + U_LB_AMBIGUOUS = 0x1, + U_LB_ALPHABETIC = 0x2, + U_LB_BREAK_BOTH = 0x3, + U_LB_BREAK_AFTER = 0x4, + U_LB_BREAK_BEFORE = 0x5, + U_LB_MANDATORY_BREAK = 0x6, + U_LB_CONTINGENT_BREAK = 0x7, + U_LB_CLOSE_PUNCTUATION = 0x8, + U_LB_COMBINING_MARK = 0x9, + U_LB_CARRIAGE_RETURN = 0xa, + U_LB_EXCLAMATION = 0xb, + U_LB_GLUE = 0xc, + U_LB_HYPHEN = 0xd, + U_LB_IDEOGRAPHIC = 0xe, + U_LB_INSEPARABLE = 0xf, + U_LB_INSEPERABLE = 0xf, + U_LB_INFIX_NUMERIC = 0x10, + U_LB_LINE_FEED = 0x11, + U_LB_NONSTARTER = 0x12, + U_LB_NUMERIC = 0x13, + U_LB_OPEN_PUNCTUATION = 0x14, + U_LB_POSTFIX_NUMERIC = 0x15, + U_LB_PREFIX_NUMERIC = 0x16, + U_LB_QUOTATION = 0x17, + U_LB_COMPLEX_CONTEXT = 0x18, + U_LB_SURROGATE = 0x19, + U_LB_SPACE = 0x1a, + U_LB_BREAK_SYMBOLS = 0x1b, + U_LB_ZWSPACE = 0x1c, + U_LB_NEXT_LINE = 0x1d, + U_LB_WORD_JOINER = 0x1e, + U_LB_H2 = 0x1f, + U_LB_H3 = 0x20, + U_LB_JL = 0x21, + U_LB_JT = 0x22, + U_LB_JV = 0x23, + U_LB_CLOSE_PARENTHESIS = 0x24, + U_LB_CONDITIONAL_JAPANESE_STARTER = 0x25, + U_LB_HEBREW_LETTER = 0x26, + U_LB_REGIONAL_INDICATOR = 0x27, + U_LB_COUNT = 0x28, +}; + +enum class UNumberFormatRoundingMode +{ + UNUM_ROUND_CEILING = 0x0, + UNUM_ROUND_FLOOR = 0x1, + UNUM_ROUND_DOWN = 0x2, + UNUM_ROUND_UP = 0x3, + UNUM_ROUND_HALFEVEN = 0x4, + UNUM_FOUND_HALFEVEN = 0x4, + UNUM_ROUND_HALFDOWN = 0x5, + UNUM_ROUND_HALFUP = 0x6, + UNUM_ROUND_UNNECESSARY = 0x7, +}; + +enum class UCurrencySpacing +{ + UNUM_CURRENCY_MATCH = 0x0, + UNUM_CURRENCY_SURROUNDING_MATCH = 0x1, + UNUM_CURRENCY_INSERT = 0x2, + UNUM_CURRENCY_SPACING_COUNT = 0x3, +}; + +enum class UNumberFormatAttribute +{ + UNUM_PARSE_INT_ONLY = 0x0, + UNUM_GROUPING_USED = 0x1, + UNUM_DECIMAL_ALWAYS_SHOWN = 0x2, + UNUM_MAX_INTEGER_DIGITS = 0x3, + UNUM_MIN_INTEGER_DIGITS = 0x4, + UNUM_INTEGER_DIGITS = 0x5, + UNUM_MAX_FRACTION_DIGITS = 0x6, + UNUM_MIN_FRACTION_DIGITS = 0x7, + UNUM_FRACTION_DIGITS = 0x8, + UNUM_MULTIPLIER = 0x9, + UNUM_GROUPING_SIZE = 0xa, + UNUM_ROUNDING_MODE = 0xb, + UNUM_ROUNDING_INCREMENT = 0xc, + UNUM_FORMAT_WIDTH = 0xd, + UNUM_PADDING_POSITION = 0xe, + UNUM_SECONDARY_GROUPING_SIZE = 0xf, + UNUM_SIGNIFICANT_DIGITS_USED = 0x10, + UNUM_MIN_SIGNIFICANT_DIGITS = 0x11, + UNUM_MAX_SIGNIFICANT_DIGITS = 0x12, + UNUM_LENIENT_PARSE = 0x13, + UNUM_PARSE_ALL_INPUT = 0x14, + UNUM_SCALE = 0x15, + UNUM_NUMERIC_ATTRIBUTE_COUNT = 0x16, + UNUM_MAX_NONBOOLEAN_ATTRIBUTE = 0xfff, + UNUM_FORMAT_FAIL_IF_MORE_THAN_MAX_DIGITS = 0x1000, + UNUM_PARSE_NO_EXPONENT = 0x1001, + UNUM_LIMIT_BOOLEAN_ATTRIBUTE = 0x1002, +}; + +namespace FCamelCaseBreakIterator +{ + enum ETokenType + { + Uppercase = 0x0, + Lowercase = 0x1, + Digit = 0x2, + Null = 0x3, + Other = 0x4, + }; +} + +enum class UNumberFormatAttributeValue +{ + UNUM_NO = 0x0, + UNUM_YES = 0x1, + UNUM_MAYBE = 0x2, +}; + +enum class UCalendarDaysOfWeek +{ + UCAL_SUNDAY = 0x1, + UCAL_MONDAY = 0x2, + UCAL_TUESDAY = 0x3, + UCAL_WEDNESDAY = 0x4, + UCAL_THURSDAY = 0x5, + UCAL_FRIDAY = 0x6, + UCAL_SATURDAY = 0x7, +}; + +enum class UCalendarWeekdayType +{ + UCAL_WEEKDAY = 0x0, + UCAL_WEEKEND = 0x1, + UCAL_WEEKEND_ONSET = 0x2, + UCAL_WEEKEND_CEASE = 0x3, +}; + +enum class EEventPoolTypes +{ + AutoReset = 0x0, + ManualReset = 0x1, +}; + +enum class UConverterType +{ + UCNV_UNSUPPORTED_CONVERTER = 0xff, + UCNV_SBCS = 0x0, + UCNV_DBCS = 0x1, + UCNV_MBCS = 0x2, + UCNV_LATIN_1 = 0x3, + UCNV_UTF8 = 0x4, + UCNV_UTF16_BigEndian = 0x5, + UCNV_UTF16_LittleEndian = 0x6, + UCNV_UTF32_BigEndian = 0x7, + UCNV_UTF32_LittleEndian = 0x8, + UCNV_EBCDIC_STATEFUL = 0x9, + UCNV_ISO_2022 = 0xa, + UCNV_LMBCS_1 = 0xb, + UCNV_LMBCS_2 = 0xc, + UCNV_LMBCS_3 = 0xd, + UCNV_LMBCS_4 = 0xe, + UCNV_LMBCS_5 = 0xf, + UCNV_LMBCS_6 = 0x10, + UCNV_LMBCS_8 = 0x11, + UCNV_LMBCS_11 = 0x12, + UCNV_LMBCS_16 = 0x13, + UCNV_LMBCS_17 = 0x14, + UCNV_LMBCS_18 = 0x15, + UCNV_LMBCS_19 = 0x16, + UCNV_LMBCS_LAST = 0x16, + UCNV_HZ = 0x17, + UCNV_SCSU = 0x18, + UCNV_ISCII = 0x19, + UCNV_US_ASCII = 0x1a, + UCNV_UTF7 = 0x1b, + UCNV_BOCU1 = 0x1c, + UCNV_UTF16 = 0x1d, + UCNV_UTF32 = 0x1e, + UCNV_CESU8 = 0x1f, + UCNV_IMAP_MAILBOX = 0x20, + UCNV_COMPOUND_TEXT = 0x21, + UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES = 0x22, +}; + +enum class UMessagePatternArgType +{ + UMSGPAT_ARG_TYPE_NONE = 0x0, + UMSGPAT_ARG_TYPE_SIMPLE = 0x1, + UMSGPAT_ARG_TYPE_CHOICE = 0x2, + UMSGPAT_ARG_TYPE_PLURAL = 0x3, + UMSGPAT_ARG_TYPE_SELECT = 0x4, + UMSGPAT_ARG_TYPE_SELECTORDINAL = 0x5, +}; + +enum class ETmMessageFlags +{ + TMP_MF_SEVERITY_LOG = 0x1, + TMP_MF_SEVERITY_WARNING = 0x2, + TMP_MF_SEVERITY_ERROR = 0x4, + TMP_MF_SEVERITY_RESERVED = 0x8, + TMP_MF_SEVERITY_MASK = 0xf, + TMP_MF_ZONE_LABEL = 0x10, + TMP_MF_ZONE_SUBLABEL = 0x20, + TMP_MF_ZONE_SHOW_IN_PARENTS = 0x40, + TMP_MF_ZONE_RESERVED01 = 0x80, + TMP_MF_ZONE_MASK = 0xf0, +}; + +enum class UDataFileAccess +{ + UDATA_FILES_FIRST = 0x0, +}; + +enum class UBreakIteratorType +{ + UBRK_CHARACTER = 0x0, + UBRK_WORD = 0x1, + UBRK_LINE = 0x2, + UBRK_SENTENCE = 0x3, + UBRK_TITLE = 0x4, + UBRK_COUNT = 0x5, +}; + +enum class UPluralType +{ + UPLURAL_TYPE_CARDINAL = 0x0, + UPLURAL_TYPE_ORDINAL = 0x1, + UPLURAL_TYPE_COUNT = 0x2, +}; + +namespace OVR +{ + enum AxisDirection + { + Axis_Up = 0x2, + Axis_Down = 0xfe, + Axis_Right = 0x1, + Axis_Left = 0xff, + Axis_In = 0x3, + Axis_Out = 0xfd, + }; +} + +enum class EAmazonS3MultipartUploadStatus +{ + NotStarted = 0x0, + Uploading = 0x1, + Done = 0x2, + Errored = 0x3, +}; + +namespace OVR +{ + enum Axis + { + Axis_X = 0x0, + Axis_Y = 0x1, + Axis_Z = 0x2, + }; +} + +enum class DLAttr +{ + dlattrRva = 0x1, +}; + +namespace XAPOBaseWaveHlpNameSpace +{ + enum WaveFmtSize + { + FmtReadSize = 0x0, + FmtWriteSize = 0x1, + }; +} + +namespace OAPIPELINE +{ + enum EAudioFormat + { + PCM_INT8 = 0x0, + PCM_INT16 = 0x1, + PCM_INT20IN24 = 0x2, + PCM_INT20IN32 = 0x3, + PCM_INT24IN24 = 0x4, + PCM_INT24IN32 = 0x5, + PCM_INT32 = 0x6, + PCM_FLOAT32 = 0x7, + }; +} + +namespace FVivoxVoiceChat +{ + enum EConnectionState + { + Disconnected = 0x0, + Disconnecting = 0x1, + Connecting = 0x2, + Connected = 0x3, + }; +} + +namespace EUdpMessageSegments +{ + enum Type + { + None = 0x0, + Abort = 0x1, + Acknowledge = 0x2, + Bye = 0x3, + Data = 0x4, + Hello = 0x5, + Retransmit = 0x6, + Timeout = 0x7, + }; +} + +namespace FHMDSettings +{ + enum EInitStatus + { + eNotInitialized = 0x0, + eStartupExecuted = 0x1, + eInitialized = 0x2, + }; +} + +namespace OVR +{ + enum StereoEye + { + StereoEye_Left = 0x0, + StereoEye_Right = 0x1, + StereoEye_Center = 0x2, + }; +} + +namespace OVR +{ + enum RotateDirection + { + Rotate_CCW = 0x1, + Rotate_CW = 0xff, + }; +} + +enum class ETmZoneFlags +{ + TMP_ZF_NONE = 0x0, + TMP_ZF_STALL = 0x2, + TMP_ZF_IDLE = 0x4, + TMP_ZF_CONTEXT_SWITCH = 0x8, + TMP_ZF_PLOT_TIME = 0x10, +}; + +enum class PluginStyle +{ + DEFAULT_STYLE = 0x0, + UNREAL_STYLE = 0x1, + UNITY_STYLE = 0x2, + UNITY_STYLE_DEFERRED = 0x3, +}; + +enum class wrapEncodedKERNEL32Functions +{ + eFlsAlloc = 0x0, + eFlsFree = 0x1, + eFlsGetValue = 0x2, + eFlsSetValue = 0x3, + eInitializeCriticalSectionEx = 0x4, + eCreateEventExW = 0x5, + eCreateSemaphoreExW = 0x6, + eSetThreadStackGuarantee = 0x7, + eCreateThreadpoolTimer = 0x8, + eSetThreadpoolTimer = 0x9, + eWaitForThreadpoolTimerCallbacks = 0xa, + eCloseThreadpoolTimer = 0xb, + eCreateThreadpoolWait = 0xc, + eSetThreadpoolWait = 0xd, + eCloseThreadpoolWait = 0xe, + eFlushProcessWriteBuffers = 0xf, + eFreeLibraryWhenCallbackReturns = 0x10, + eGetCurrentProcessorNumber = 0x11, + eGetLogicalProcessorInformation = 0x12, + eCreateSymbolicLinkW = 0x13, + eSetDefaultDllDirectories = 0x14, + eCompareStringEx = 0x15, + eEnumSystemLocalesEx = 0x16, + eGetDateFormatEx = 0x17, + eGetLocaleInfoEx = 0x18, + eGetTimeFormatEx = 0x19, + eGetUserDefaultLocaleName = 0x1a, + eIsValidLocaleName = 0x1b, + eLCMapStringEx = 0x1c, + eGetCurrentPackageId = 0x1d, + eGetTickCount64 = 0x1e, + eGetFileInformationByHandleExW = 0x1f, + eSetFileInformationByHandleW = 0x20, + eMaxKernel32Function = 0x21, +}; + +namespace MilBitmapLock +{ + enum FlagsEnum + { + Read = 0x1, + Write = 0x2, + FORCE_DWORD = 0xff, + }; +} + +enum class ContentTypes +{ + ContentTypes_Unknown = 0x0, + ContentTypes_Video = 0x1, + ContentTypes_Audio = 0x2, + ContentTypes_Image = 0x4, + ContentTypes_All = 0x7, +}; + +#pragma warning(pop) \ No newline at end of file diff --git a/version/Core/Public/API/ARK/GameMode.h b/version/Core/Public/API/ARK/GameMode.h index ca314918..1ef480ce 100644 --- a/version/Core/Public/API/ARK/GameMode.h +++ b/version/Core/Public/API/ARK/GameMode.h @@ -1,7 +1,6 @@ #pragma once #include "API/UE/UE.h" -#include "API/Enums.h" #include "API/UE/Containers/Map.h" #include "Other.h" @@ -12,6 +11,64 @@ struct __declspec(align(8)) FEngramEntryAutoUnlock int LevelToAutoUnlock; }; +struct UGameViewportClient +{ + TArray ViewPortWidgetsField() { return *GetNativePointerField*>(this, "UGameViewportClient.ViewPortWidgets"); } + int& MaxSplitscreenPlayersField() { return *GetNativePointerField(this, "UGameViewportClient.MaxSplitscreenPlayers"); } + UWorld * WorldField() { return *GetNativePointerField(this, "UGameViewportClient.World"); } + bool& bSuppressTransitionMessageField() { return *GetNativePointerField(this, "UGameViewportClient.bSuppressTransitionMessage"); } + float& ProgressFadeTimeField() { return *GetNativePointerField(this, "UGameViewportClient.ProgressFadeTime"); } + int& ViewModeIndexField() { return *GetNativePointerField(this, "UGameViewportClient.ViewModeIndex"); } + FName& CurrentBufferVisualizationModeField() { return *GetNativePointerField(this, "UGameViewportClient.CurrentBufferVisualizationMode"); } + bool& bDisableSplitScreenOverrideField() { return *GetNativePointerField(this, "UGameViewportClient.bDisableSplitScreenOverride"); } + TArray& IgnoreInputValuesField() { return *GetNativePointerField*>(this, "UGameViewportClient.IgnoreInputValues"); } + + // Bit fields + + BitFieldValue bShowTitleSafeZone() { return { this, "UGameViewportClient.bShowTitleSafeZone" }; } + BitFieldValue bIsPlayInEditorViewport() { return { this, "UGameViewportClient.bIsPlayInEditorViewport" }; } + BitFieldValue bDisableWorldRendering() { return { this, "UGameViewportClient.bDisableWorldRendering" }; } + + // Functions + + bool IsStatEnabled(const wchar_t * InName) { return NativeCall(this, "UGameViewportClient.IsStatEnabled", InName); } + void SetEnabledStats(TArray * InEnabledStats) { NativeCall *>(this, "UGameViewportClient.SetEnabledStats", InEnabledStats); } + TArray * GetEnabledStats() { return NativeCall *>(this, "UGameViewportClient.GetEnabledStats"); } + FGuid * GetEngineShowFlags() { return NativeCall(this, "UGameViewportClient.GetEngineShowFlags"); } + void PostInitProperties() { NativeCall(this, "UGameViewportClient.PostInitProperties"); } + void BeginDestroy() { NativeCall(this, "UGameViewportClient.BeginDestroy"); } + void DetachViewportClient() { NativeCall(this, "UGameViewportClient.DetachViewportClient"); } + FString * ConsoleCommand(FString * result, FString * Command) { return NativeCall(this, "UGameViewportClient.ConsoleCommand", result, Command); } + void SetIsSimulateInEditorViewport(bool bInIsSimulateInEditorViewport) { NativeCall(this, "UGameViewportClient.SetIsSimulateInEditorViewport", bInIsSimulateInEditorViewport); } + bool GetMousePosition(FVector2D * MousePosition) { return NativeCall(this, "UGameViewportClient.GetMousePosition", MousePosition); } + bool RequiresUncapturedAxisInput() { return NativeCall(this, "UGameViewportClient.RequiresUncapturedAxisInput"); } + void SetDropDetail(float DeltaSeconds) { NativeCall(this, "UGameViewportClient.SetDropDetail", DeltaSeconds); } + void GetViewportSize(FVector2D * out_ViewportSize) { NativeCall(this, "UGameViewportClient.GetViewportSize", out_ViewportSize); } + void Precache() { NativeCall(this, "UGameViewportClient.Precache"); } + ULocalPlayer * SetupInitialLocalPlayer(FString * OutError) { return NativeCall(this, "UGameViewportClient.SetupInitialLocalPlayer", OutError); } + ULocalPlayer * CreatePlayer(int ControllerId, FString * OutError, bool bSpawnActor) { return NativeCall(this, "UGameViewportClient.CreatePlayer", ControllerId, OutError, bSpawnActor); } + bool RemovePlayer(ULocalPlayer * ExPlayer) { return NativeCall(this, "UGameViewportClient.RemovePlayer", ExPlayer); } + void UpdateActiveSplitscreenType() { NativeCall(this, "UGameViewportClient.UpdateActiveSplitscreenType"); } + void LayoutPlayers() { NativeCall(this, "UGameViewportClient.LayoutPlayers"); } + void GetSubtitleRegion(FVector2D * MinPos, FVector2D * MaxPos) { NativeCall(this, "UGameViewportClient.GetSubtitleRegion", MinPos, MaxPos); } + void NotifyPlayerAdded(int PlayerIndex, ULocalPlayer * RemovedPlayer) { NativeCall(this, "UGameViewportClient.NotifyPlayerAdded", PlayerIndex, RemovedPlayer); } + void RemoveAllViewportWidgets() { NativeCall(this, "UGameViewportClient.RemoveAllViewportWidgets"); } + void VerifyPathRenderingComponents() { NativeCall(this, "UGameViewportClient.VerifyPathRenderingComponents"); } + bool RequestBugScreenShot(const wchar_t * Cmd, bool bDisplayHUDInfo) { return NativeCall(this, "UGameViewportClient.RequestBugScreenShot", Cmd, bDisplayHUDInfo); } + void HandleViewportStatCheckEnabled(const wchar_t * InName, bool * bOutCurrentEnabled, bool * bOutOthersEnabled) { NativeCall(this, "UGameViewportClient.HandleViewportStatCheckEnabled", InName, bOutCurrentEnabled, bOutOthersEnabled); } + void HandleViewportStatEnabled(const wchar_t * InName) { NativeCall(this, "UGameViewportClient.HandleViewportStatEnabled", InName); } + void HandleViewportStatDisabled(const wchar_t * InName) { NativeCall(this, "UGameViewportClient.HandleViewportStatDisabled", InName); } + void HandleViewportStatDisableAll(const bool bInAnyViewport) { NativeCall(this, "UGameViewportClient.HandleViewportStatDisableAll", bInAnyViewport); } + void SetIgnoreInput(bool Ignore, int ControllerId) { NativeCall(this, "UGameViewportClient.SetIgnoreInput", Ignore, ControllerId); } + bool IgnoreInput(int ControllerId) { return NativeCall(this, "UGameViewportClient.IgnoreInput", ControllerId); } + void OnSplitscreenPlayerJoinFailure(TSharedPtr * PlayerUniqueNetId, FString * ErrorMsg) { NativeCall *, FString *>(this, "UGameViewportClient.OnSplitscreenPlayerJoinFailure", PlayerUniqueNetId, ErrorMsg); } + int SetStatEnabled(const wchar_t * InName, const bool bEnable, const bool bAll) { return NativeCall(this, "UGameViewportClient.SetStatEnabled", InName, bEnable, bAll); } + static void StaticRegisterNativesUGameViewportClient() { NativeCall(nullptr, "UGameViewportClient.StaticRegisterNativesUGameViewportClient"); } +}; + +struct UGameInstance; +struct FChatMessage; + struct UWorld : UObject { struct InitializationValues @@ -27,31 +84,32 @@ struct UWorld : UObject unsigned __int32 bTransactional : 1; unsigned __int32 bCreateFXSystem : 1; }; - - TArray>& ActorsClassesAllowedToSaveField() { return *GetNativePointerField>*>(this, "UWorld.ActorsClassesAllowedToSave"); } + + TArray> & ActorsClassesAllowedToSaveField() { return *GetNativePointerField>*>(this, "UWorld.ActorsClassesAllowedToSave"); } bool& bIsIdleField() { return *GetNativePointerField(this, "UWorld.bIsIdle"); } - TArray>& LocalStasisActorsField() { return *GetNativePointerField>*>(this, "UWorld.LocalStasisActors"); } - TSet, FDefaultSetAllocator>& LevelNameHashField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UWorld.LevelNameHash"); } - ULevel * PersistentLevelField() { return *GetNativePointerField(this, "UWorld.PersistentLevel"); } - AGameState * GameStateField() { return *GetNativePointerField(this, "UWorld.GameState"); } - TArray ExtraReferencedObjectsField() { return *GetNativePointerField*>(this, "UWorld.ExtraReferencedObjects"); } - FString& StreamingLevelsPrefixField() { return *GetNativePointerField(this, "UWorld.StreamingLevelsPrefix"); } - ULevel * CurrentLevelPendingVisibilityField() { return *GetNativePointerField(this, "UWorld.CurrentLevelPendingVisibility"); } - TArray& ViewLocationsRenderedLastFrameField() { return *GetNativePointerField*>(this, "UWorld.ViewLocationsRenderedLastFrame"); } - AGameMode * AuthorityGameModeField() { return *GetNativePointerField(this, "UWorld.AuthorityGameMode"); } - TArray LevelsField() { return *GetNativePointerField*>(this, "UWorld.Levels"); } - TArray NetworkActorsField() { return *GetNativePointerField*>(this, "UWorld.NetworkActors"); } - ULevel * CurrentLevelField() { return *GetNativePointerField(this, "UWorld.CurrentLevel"); } + TArray> & LocalStasisActorsField() { return *GetNativePointerField>*>(this, "UWorld.LocalStasisActors"); } + TSet,FDefaultSetAllocator> & LevelNameHashField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "UWorld.LevelNameHash"); } + ULevel * PersistentLevelField() { return *GetNativePointerField(this, "UWorld.PersistentLevel"); } + AGameState * GameStateField() { return *GetNativePointerField(this, "UWorld.GameState"); } + TArray ExtraReferencedObjectsField() { return *GetNativePointerField*>(this, "UWorld.ExtraReferencedObjects"); } + FString & StreamingLevelsPrefixField() { return *GetNativePointerField(this, "UWorld.StreamingLevelsPrefix"); } + ULevel * CurrentLevelPendingVisibilityField() { return *GetNativePointerField(this, "UWorld.CurrentLevelPendingVisibility"); } + TArray & ViewLocationsRenderedLastFrameField() { return *GetNativePointerField*>(this, "UWorld.ViewLocationsRenderedLastFrame"); } + AGameMode * AuthorityGameModeField() { return *GetNativePointerField(this, "UWorld.AuthorityGameMode"); } + TArray LevelsField() { return *GetNativePointerField*>(this, "UWorld.Levels"); } + TArray NetworkActorsField() { return *GetNativePointerField*>(this, "UWorld.NetworkActors"); } + ULevel * CurrentLevelField() { return *GetNativePointerField(this, "UWorld.CurrentLevel"); } + UGameInstance * OwningGameInstanceField() { return *GetNativePointerField(this, "UWorld.OwningGameInstance"); } int& FrameCounterField() { return *GetNativePointerField(this, "UWorld.FrameCounter"); } bool& GamePreviewField() { return *GetNativePointerField(this, "UWorld.GamePreview"); } - TMap>>, FDefaultSetAllocator, TDefaultMapKeyFuncs>>, 0> >& LocalInstancedStaticMeshComponentInstancesVisibilityStateField() { return *GetNativePointerField>>, FDefaultSetAllocator, TDefaultMapKeyFuncs>>, 0> >*>(this, "UWorld.LocalInstancedStaticMeshComponentInstancesVisibilityState"); } - TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >& PrioritizedObjectMapField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "UWorld.PrioritizedObjectMap"); } - TArray>& ControllerListField() { return *GetNativePointerField>*>(this, "UWorld.ControllerList"); } - TArray>& PlayerControllerListField() { return *GetNativePointerField>*>(this, "UWorld.PlayerControllerList"); } - TArray>& PawnListField() { return *GetNativePointerField>*>(this, "UWorld.PawnList"); } - TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ComponentsThatNeedEndOfFrameUpdateField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate"); } - TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ComponentsThatNeedEndOfFrameUpdate_OnGameThreadField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate_OnGameThread"); } - TMap, TWeakObjectPtr, FDefaultSetAllocator, TDefaultMapKeyFuncs, TWeakObjectPtr, 0> >& BlueprintObjectsBeingDebuggedField() { return *GetNativePointerField, TWeakObjectPtr, FDefaultSetAllocator, TDefaultMapKeyFuncs, TWeakObjectPtr, 0> >*>(this, "UWorld.BlueprintObjectsBeingDebugged"); } + TMap>>,FDefaultSetAllocator,TDefaultMapKeyFuncs>>,0> > & LocalInstancedStaticMeshComponentInstancesVisibilityStateField() { return *GetNativePointerField>>,FDefaultSetAllocator,TDefaultMapKeyFuncs>>,0> >*>(this, "UWorld.LocalInstancedStaticMeshComponentInstancesVisibilityState"); } + TMap,FDefaultSetAllocator,TDefaultMapKeyFuncs,0> > & PrioritizedObjectMapField() { return *GetNativePointerField,FDefaultSetAllocator,TDefaultMapKeyFuncs,0> >*>(this, "UWorld.PrioritizedObjectMap"); } + TArray> & ControllerListField() { return *GetNativePointerField>*>(this, "UWorld.ControllerList"); } + TArray> & PlayerControllerListField() { return *GetNativePointerField>*>(this, "UWorld.PlayerControllerList"); } + TArray> & PawnListField() { return *GetNativePointerField>*>(this, "UWorld.PawnList"); } + TSet,DefaultKeyFuncs,0>,FDefaultSetAllocator> & ComponentsThatNeedEndOfFrameUpdateField() { return *GetNativePointerField,DefaultKeyFuncs,0>,FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate"); } + TSet,DefaultKeyFuncs,0>,FDefaultSetAllocator> & ComponentsThatNeedEndOfFrameUpdate_OnGameThreadField() { return *GetNativePointerField,DefaultKeyFuncs,0>,FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate_OnGameThread"); } + TMap,TWeakObjectPtr,FDefaultSetAllocator,TDefaultMapKeyFuncs,TWeakObjectPtr,0> > & BlueprintObjectsBeingDebuggedField() { return *GetNativePointerField,TWeakObjectPtr,FDefaultSetAllocator,TDefaultMapKeyFuncs,TWeakObjectPtr,0> >*>(this, "UWorld.BlueprintObjectsBeingDebugged"); } bool& bRequiresHitProxiesField() { return *GetNativePointerField(this, "UWorld.bRequiresHitProxies"); } long double& BuildStreamingDataTimerField() { return *GetNativePointerField(this, "UWorld.BuildStreamingDataTimer"); } bool& bInTickField() { return *GetNativePointerField(this, "UWorld.bInTick"); } @@ -69,10 +127,10 @@ struct UWorld : UObject bool& bShouldForceUnloadStreamingLevelsField() { return *GetNativePointerField(this, "UWorld.bShouldForceUnloadStreamingLevels"); } bool& bShouldForceVisibleStreamingLevelsField() { return *GetNativePointerField(this, "UWorld.bShouldForceVisibleStreamingLevels"); } bool& bDoDelayedUpdateCullDistanceVolumesField() { return *GetNativePointerField(this, "UWorld.bDoDelayedUpdateCullDistanceVolumes"); } - TEnumAsByte& WorldTypeField() { return *GetNativePointerField*>(this, "UWorld.WorldType"); } + TEnumAsByte & WorldTypeField() { return *GetNativePointerField*>(this, "UWorld.WorldType"); } bool& bIsRunningConstructionScriptField() { return *GetNativePointerField(this, "UWorld.bIsRunningConstructionScript"); } bool& bShouldSimulatePhysicsField() { return *GetNativePointerField(this, "UWorld.bShouldSimulatePhysics"); } - FName& DebugDrawTraceTagField() { return *GetNativePointerField(this, "UWorld.DebugDrawTraceTag"); } + FName & DebugDrawTraceTagField() { return *GetNativePointerField(this, "UWorld.DebugDrawTraceTag"); } long double& LastTimeUnbuiltLightingWasEncounteredField() { return *GetNativePointerField(this, "UWorld.LastTimeUnbuiltLightingWasEncountered"); } long double& TimeSecondsField() { return *GetNativePointerField(this, "UWorld.TimeSeconds"); } long double& LoadedAtTimeSecondsField() { return *GetNativePointerField(this, "UWorld.LoadedAtTimeSeconds"); } @@ -94,87 +152,112 @@ struct UWorld : UObject unsigned int& LoadedSaveIncrementorField() { return *GetNativePointerField(this, "UWorld.LoadedSaveIncrementor"); } unsigned int& CurrentSaveIncrementorField() { return *GetNativePointerField(this, "UWorld.CurrentSaveIncrementor"); } bool& bBlockAllOnNextLevelStreamingProcessField() { return *GetNativePointerField(this, "UWorld.bBlockAllOnNextLevelStreamingProcess"); } - FIntVector& OriginLocationField() { return *GetNativePointerField(this, "UWorld.OriginLocation"); } - FIntVector& RequestedOriginLocationField() { return *GetNativePointerField(this, "UWorld.RequestedOriginLocation"); } + FIntVector & OriginLocationField() { return *GetNativePointerField(this, "UWorld.OriginLocation"); } + FIntVector & RequestedOriginLocationField() { return *GetNativePointerField(this, "UWorld.RequestedOriginLocation"); } bool& bOriginOffsetThisFrameField() { return *GetNativePointerField(this, "UWorld.bOriginOffsetThisFrame"); } bool& bFlushingLevelStreamingField() { return *GetNativePointerField(this, "UWorld.bFlushingLevelStreaming"); } long double& ForceBlockLoadTimeoutField() { return *GetNativePointerField(this, "UWorld.ForceBlockLoadTimeout"); } - FString& NextURLField() { return *GetNativePointerField(this, "UWorld.NextURL"); } + FString & NextURLField() { return *GetNativePointerField(this, "UWorld.NextURL"); } float& NextSwitchCountdownField() { return *GetNativePointerField(this, "UWorld.NextSwitchCountdown"); } - TArray& PreparingLevelNamesField() { return *GetNativePointerField*>(this, "UWorld.PreparingLevelNames"); } - FName& CommittedPersistentLevelNameField() { return *GetNativePointerField(this, "UWorld.CommittedPersistentLevelName"); } - FString& CurrentDayTimeField() { return *GetNativePointerField(this, "UWorld.CurrentDayTime"); } + TArray & PreparingLevelNamesField() { return *GetNativePointerField*>(this, "UWorld.PreparingLevelNames"); } + FName & CommittedPersistentLevelNameField() { return *GetNativePointerField(this, "UWorld.CommittedPersistentLevelName"); } + FString & CurrentDayTimeField() { return *GetNativePointerField(this, "UWorld.CurrentDayTime"); } unsigned int& NumLightingUnbuiltObjectsField() { return *GetNativePointerField(this, "UWorld.NumLightingUnbuiltObjects"); } // Functions - AActor * SpawnActor(UClass * Class, FVector * Location, FRotator * Rotation, FActorSpawnParameters * SpawnParameters) { return NativeCall(this, "UWorld.SpawnActor", Class, Location, Rotation, SpawnParameters); } - bool DestroyActor(AActor * ThisActor, bool bNetForce, bool bShouldModifyLevel) { return NativeCall(this, "UWorld.DestroyActor", ThisActor, bNetForce, bShouldModifyLevel); } - bool FindTeleportSpot(AActor * TestActor, FVector * TestLocation, FRotator TestRotation, FVector * TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.FindTeleportSpot", TestActor, TestLocation, TestRotation, TraceWorldGeometryFromLocation); } - bool EncroachingBlockingGeometry(AActor * TestActor, FVector TestLocation, FRotator TestRotation, FVector * ProposedAdjustment, FVector * TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.EncroachingBlockingGeometry", TestActor, TestLocation, TestRotation, ProposedAdjustment, TraceWorldGeometryFromLocation); } + UGameInstance * GetGameInstance() { return NativeCall(this, "UWorld.GetGameInstance"); } + AGameMode * GetAuthGameMode() { return NativeCall(this, "UWorld.GetAuthGameMode"); } + AActor * SpawnActor(UClass * Class, FVector * Location, FRotator * Rotation, FActorSpawnParameters * SpawnParameters) { return NativeCall(this, "UWorld.SpawnActor", Class, Location, Rotation, SpawnParameters); } + bool DestroyActor(AActor * ThisActor, bool bNetForce, bool bShouldModifyLevel) { return NativeCall(this, "UWorld.DestroyActor", ThisActor, bNetForce, bShouldModifyLevel); } + bool FindTeleportSpot(AActor * TestActor, FVector * TestLocation, FRotator TestRotation, FVector * TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.FindTeleportSpot", TestActor, TestLocation, TestRotation, TraceWorldGeometryFromLocation); } + bool EncroachingBlockingGeometry(AActor * TestActor, FVector TestLocation, FRotator TestRotation, FVector * ProposedAdjustment, FVector * TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.EncroachingBlockingGeometry", TestActor, TestLocation, TestRotation, ProposedAdjustment, TraceWorldGeometryFromLocation); } void SetMapNeedsLightingFullyRebuilt(int InNumLightingUnbuiltObjects) { NativeCall(this, "UWorld.SetMapNeedsLightingFullyRebuilt", InNumLightingUnbuiltObjects); } void TickNetClient(float DeltaSeconds) { NativeCall(this, "UWorld.TickNetClient", DeltaSeconds); } bool IsPaused() { return NativeCall(this, "UWorld.IsPaused"); } - void ProcessLevelStreamingVolumes(FVector * OverrideViewLocation) { NativeCall(this, "UWorld.ProcessLevelStreamingVolumes", OverrideViewLocation); } - void MarkActorComponentForNeededEndOfFrameUpdate(UActorComponent * Component, bool bForceGameThread) { NativeCall(this, "UWorld.MarkActorComponentForNeededEndOfFrameUpdate", Component, bForceGameThread); } + void ProcessLevelStreamingVolumes(FVector * OverrideViewLocation) { NativeCall(this, "UWorld.ProcessLevelStreamingVolumes", OverrideViewLocation); } + void MarkActorComponentForNeededEndOfFrameUpdate(UActorComponent * Component, bool bForceGameThread) { NativeCall(this, "UWorld.MarkActorComponentForNeededEndOfFrameUpdate", Component, bForceGameThread); } void CleanupActors() { NativeCall(this, "UWorld.CleanupActors"); } + void ForceGarbageCollection(bool bForcePurge) { NativeCall(this, "UWorld.ForceGarbageCollection", bForcePurge); } void UpdateAllReflectionCaptures() { NativeCall(this, "UWorld.UpdateAllReflectionCaptures"); } + void Serialize(FArchive * Ar) { NativeCall(this, "UWorld.Serialize", Ar); } void PostDuplicate(bool bDuplicateForPIE) { NativeCall(this, "UWorld.PostDuplicate", bDuplicateForPIE); } void FinishDestroy() { NativeCall(this, "UWorld.FinishDestroy"); } void PostLoad() { NativeCall(this, "UWorld.PostLoad"); } - bool PreSaveRoot(const wchar_t * Filename, TArray * AdditionalPackagesToCook) { return NativeCall *>(this, "UWorld.PreSaveRoot", Filename, AdditionalPackagesToCook); } + bool PreSaveRoot(const wchar_t* Filename, TArray * AdditionalPackagesToCook) { return NativeCall*>(this, "UWorld.PreSaveRoot", Filename, AdditionalPackagesToCook); } void PostSaveRoot(bool bCleanupIsRequired) { NativeCall(this, "UWorld.PostSaveRoot", bCleanupIsRequired); } void SetupParameterCollectionInstances() { NativeCall(this, "UWorld.SetupParameterCollectionInstances"); } void UpdateParameterCollectionInstances(bool bUpdateInstanceUniformBuffers) { NativeCall(this, "UWorld.UpdateParameterCollectionInstances", bUpdateInstanceUniformBuffers); } void InitWorld(UWorld::InitializationValues IVS) { NativeCall(this, "UWorld.InitWorld", IVS); } void InitializeNewWorld(UWorld::InitializationValues IVS) { NativeCall(this, "UWorld.InitializeNewWorld", IVS); } - void RemoveActor(AActor * Actor, bool bShouldModifyLevel) { NativeCall(this, "UWorld.RemoveActor", Actor, bShouldModifyLevel); } + void RemoveActor(AActor * Actor, bool bShouldModifyLevel) { NativeCall(this, "UWorld.RemoveActor", Actor, bShouldModifyLevel); } bool AllowAudioPlayback() { return NativeCall(this, "UWorld.AllowAudioPlayback"); } void ClearWorldComponents() { NativeCall(this, "UWorld.ClearWorldComponents"); } void UpdateWorldComponents(bool bRerunConstructionScripts, bool bCurrentLevelOnly) { NativeCall(this, "UWorld.UpdateWorldComponents", bRerunConstructionScripts, bCurrentLevelOnly); } void UpdateCullDistanceVolumes() { NativeCall(this, "UWorld.UpdateCullDistanceVolumes"); } void EnsureCollisionTreeIsBuilt() { NativeCall(this, "UWorld.EnsureCollisionTreeIsBuilt"); } - void AddToWorld(ULevel * Level, FTransform * LevelTransform, bool bAlwaysConsiderTimeLimit) { NativeCall(this, "UWorld.AddToWorld", Level, LevelTransform, bAlwaysConsiderTimeLimit); } - void RemoveFromWorld(ULevel * Level) { NativeCall(this, "UWorld.RemoveFromWorld", Level); } - static FString * ConvertToPIEPackageName(FString * result, FString * PackageName, int PIEInstanceID) { return NativeCall(nullptr, "UWorld.ConvertToPIEPackageName", result, PackageName, PIEInstanceID); } - static FString * StripPIEPrefixFromPackageName(FString * result, FString * PrefixedName, FString * Prefix) { return NativeCall(nullptr, "UWorld.StripPIEPrefixFromPackageName", result, PrefixedName, Prefix); } - static UWorld * DuplicateWorldForPIE(FString * PackageName, UWorld * OwningWorld) { return NativeCall(nullptr, "UWorld.DuplicateWorldForPIE", PackageName, OwningWorld); } + void AddToWorld(ULevel * Level, FTransform * LevelTransform, bool bAlwaysConsiderTimeLimit) { NativeCall(this, "UWorld.AddToWorld", Level, LevelTransform, bAlwaysConsiderTimeLimit); } + void RemoveFromWorld(ULevel * Level) { NativeCall(this, "UWorld.RemoveFromWorld", Level); } + static FString * ConvertToPIEPackageName(FString * result, FString * PackageName, int PIEInstanceID) { return NativeCall(nullptr, "UWorld.ConvertToPIEPackageName", result, PackageName, PIEInstanceID); } + static FString * StripPIEPrefixFromPackageName(FString * result, FString * PrefixedName, FString * Prefix) { return NativeCall(nullptr, "UWorld.StripPIEPrefixFromPackageName", result, PrefixedName, Prefix); } + static FString * BuildPIEPackagePrefix(FString * result, int PIEInstanceID) { return NativeCall(nullptr, "UWorld.BuildPIEPackagePrefix", result, PIEInstanceID); } + static UWorld * DuplicateWorldForPIE(FString * PackageName, UWorld * OwningWorld) { return NativeCall(nullptr, "UWorld.DuplicateWorldForPIE", PackageName, OwningWorld); } bool AreAlwaysLoadedLevelsLoaded() { return NativeCall(this, "UWorld.AreAlwaysLoadedLevelsLoaded"); } bool AllowLevelLoadRequests() { return NativeCall(this, "UWorld.AllowLevelLoadRequests"); } - void CleanupWorld(bool bSessionEnded, bool bCleanupResources, UWorld * NewWorld) { NativeCall(this, "UWorld.CleanupWorld", bSessionEnded, bCleanupResources, NewWorld); } - APlayerController * GetFirstPlayerController() { return NativeCall(this, "UWorld.GetFirstPlayerController"); } - ULocalPlayer * GetFirstLocalPlayerFromController() { return NativeCall(this, "UWorld.GetFirstLocalPlayerFromController"); } - void AddController(AController * Controller) { NativeCall(this, "UWorld.AddController", Controller); } - void RemoveController(AController * Controller) { NativeCall(this, "UWorld.RemoveController", Controller); } - void AddNetworkActor(AActor * Actor) { NativeCall(this, "UWorld.AddNetworkActor", Actor); } - void RemoveNetworkActor(AActor * Actor) { NativeCall(this, "UWorld.RemoveNetworkActor", Actor); } - AWorldSettings * GetWorldSettings(bool bCheckStreamingPesistent, bool bChecked) { return NativeCall(this, "UWorld.GetWorldSettings", bCheckStreamingPesistent, bChecked); } + void CleanupWorld(bool bSessionEnded, bool bCleanupResources, UWorld * NewWorld) { NativeCall(this, "UWorld.CleanupWorld", bSessionEnded, bCleanupResources, NewWorld); } + UGameViewportClient * GetGameViewport() { return NativeCall(this, "UWorld.GetGameViewport"); } + TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int> * GetControllerIterator(TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int> * result) { return NativeCall> const ,TAutoWeakObjectPtr const ,int>*, TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int>*>(this, "UWorld.GetControllerIterator", result); } + TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int> * GetPlayerControllerIterator(TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int> * result) { return NativeCall> const ,TAutoWeakObjectPtr const ,int>*, TIndexedContainerIterator> const ,TAutoWeakObjectPtr const ,int>*>(this, "UWorld.GetPlayerControllerIterator", result); } + APlayerController * GetFirstPlayerController() { return NativeCall(this, "UWorld.GetFirstPlayerController"); } + ULocalPlayer * GetFirstLocalPlayerFromController() { return NativeCall(this, "UWorld.GetFirstLocalPlayerFromController"); } + void AddController(AController * Controller) { NativeCall(this, "UWorld.AddController", Controller); } + void RemoveController(AController * Controller) { NativeCall(this, "UWorld.RemoveController", Controller); } + void AddNetworkActor(AActor * Actor) { NativeCall(this, "UWorld.AddNetworkActor", Actor); } + void RemoveNetworkActor(AActor * Actor) { NativeCall(this, "UWorld.RemoveNetworkActor", Actor); } + long double GetTimeSeconds() { return NativeCall(this, "UWorld.GetTimeSeconds"); } + long double GetRealTimeSeconds() { return NativeCall(this, "UWorld.GetRealTimeSeconds"); } + float GetDeltaSeconds() { return NativeCall(this, "UWorld.GetDeltaSeconds"); } + long double TimeSince(long double Time) { return NativeCall(this, "UWorld.TimeSince", Time); } + void CreatePhysicsScene() { NativeCall(this, "UWorld.CreatePhysicsScene"); } + AWorldSettings * GetWorldSettings(bool bCheckStreamingPesistent, bool bChecked) { return NativeCall(this, "UWorld.GetWorldSettings", bCheckStreamingPesistent, bChecked); } + float GetGravityZ() { return NativeCall(this, "UWorld.GetGravityZ"); } float GetDefaultGravityZ() { return NativeCall(this, "UWorld.GetDefaultGravityZ"); } - FString * GetMapName(FString * result) { return NativeCall(this, "UWorld.GetMapName", result); } - void WelcomePlayer(UNetConnection * Connection) { NativeCall(this, "UWorld.WelcomePlayer", Connection); } - bool DestroySwappedPC(UNetConnection * Connection) { return NativeCall(this, "UWorld.DestroySwappedPC", Connection); } + FString * GetMapName(FString * result) { return NativeCall(this, "UWorld.GetMapName", result); } + bool NotifyAcceptingChannel(UChannel * Channel) { return NativeCall(this, "UWorld.NotifyAcceptingChannel", Channel); } + void WelcomePlayer(UNetConnection * Connection) { NativeCall(this, "UWorld.WelcomePlayer", Connection); } + bool DestroySwappedPC(UNetConnection * Connection) { return NativeCall(this, "UWorld.DestroySwappedPC", Connection); } bool IsPreparingMapChange() { return NativeCall(this, "UWorld.IsPreparingMapChange"); } bool SetNewWorldOrigin(FIntVector InNewOriginLocation) { return NativeCall(this, "UWorld.SetNewWorldOrigin", InNewOriginLocation); } void NavigateTo(FIntVector InLocation) { NativeCall(this, "UWorld.NavigateTo", InLocation); } - void GetMatineeActors(TArray * OutMatineeActors) { NativeCall *>(this, "UWorld.GetMatineeActors", OutMatineeActors); } - void SeamlessTravel(FString * SeamlessTravelURL, bool bAbsolute, FGuid MapPackageGuid) { NativeCall(this, "UWorld.SeamlessTravel", SeamlessTravelURL, bAbsolute, MapPackageGuid); } + void GetMatineeActors(TArray * OutMatineeActors) { NativeCall*>(this, "UWorld.GetMatineeActors", OutMatineeActors); } + void SeamlessTravel(FString * SeamlessTravelURL, bool bAbsolute, FGuid MapPackageGuid) { NativeCall(this, "UWorld.SeamlessTravel", SeamlessTravelURL, bAbsolute, MapPackageGuid); } bool IsInSeamlessTravel() { return NativeCall(this, "UWorld.IsInSeamlessTravel"); } void UpdateConstraintActors() { NativeCall(this, "UWorld.UpdateConstraintActors"); } int GetActorCount() { return NativeCall(this, "UWorld.GetActorCount"); } int GetNetRelevantActorCount() { return NativeCall(this, "UWorld.GetNetRelevantActorCount"); } - bool ContainsLevel(ULevel * InLevel) { return NativeCall(this, "UWorld.ContainsLevel", InLevel); } + bool ContainsLevel(ULevel * InLevel) { return NativeCall(this, "UWorld.ContainsLevel", InLevel); } + TArray * GetLevels() { return NativeCall*>(this, "UWorld.GetLevels"); } void BroadcastLevelsChanged() { NativeCall(this, "UWorld.BroadcastLevelsChanged"); } - bool IsLevelLoadedByName(FName * LevelName) { return NativeCall(this, "UWorld.IsLevelLoadedByName", LevelName); } - FString * GetLocalURL(FString * result) { return NativeCall(this, "UWorld.GetLocalURL", result); } - FString * GetAddressURL(FString * result) { return NativeCall(this, "UWorld.GetAddressURL", result); } - static FString * RemovePIEPrefix(FString * result, FString * Source) { return NativeCall(nullptr, "UWorld.RemovePIEPrefix", result, Source); } - void ServerTravel(FString * FURL, bool bAbsolute, bool bShouldSkipGameNotify) { NativeCall(this, "UWorld.ServerTravel", FURL, bAbsolute, bShouldSkipGameNotify); } - UClass * GetModPrioritizedClass(FName * NameIn) { return NativeCall(this, "UWorld.GetModPrioritizedClass", NameIn); } - bool LoadFromFile(FString * filename) { return NativeCall(this, "UWorld.LoadFromFile", filename); } - void UpdateMemoryState(FName PackageName, bool bSave, ULevel * Level) { NativeCall(this, "UWorld.UpdateMemoryState", PackageName, bSave, Level); } - void AddToInternalOctree(UPrimitiveComponent * InComponent) { NativeCall(this, "UWorld.AddToInternalOctree", InComponent); } - void RemoveFromInternalOctree(UPrimitiveComponent * InComponent) { NativeCall(this, "UWorld.RemoveFromInternalOctree", InComponent); } - bool LineTraceSingle(FHitResult * OutHit, FVector * Start, FVector * End, FCollisionQueryParams * Params, FCollisionObjectQueryParams * ObjectQueryParams) { return NativeCall(this, "UWorld.LineTraceSingle", OutHit, Start, End, Params, ObjectQueryParams); } + bool IsLevelLoadedByName(FName * LevelName) { return NativeCall(this, "UWorld.IsLevelLoadedByName", LevelName); } + FString * GetLocalURL(FString * result) { return NativeCall(this, "UWorld.GetLocalURL", result); } + bool IsPlayInEditor() { return NativeCall(this, "UWorld.IsPlayInEditor"); } + bool IsGameWorld() { return NativeCall(this, "UWorld.IsGameWorld"); } + FString * GetAddressURL(FString * result) { return NativeCall(this, "UWorld.GetAddressURL", result); } + static FString * RemovePIEPrefix(FString * result, FString * Source) { return NativeCall(nullptr, "UWorld.RemovePIEPrefix", result, Source); } + void ServerTravel(FString * FURL, bool bAbsolute, bool bShouldSkipGameNotify) { NativeCall(this, "UWorld.ServerTravel", FURL, bAbsolute, bShouldSkipGameNotify); } + UClass * GetModPrioritizedClass(FName * NameIn) { return NativeCall(this, "UWorld.GetModPrioritizedClass", NameIn); } + bool LoadFromFile(FString * filename) { return NativeCall(this, "UWorld.LoadFromFile", filename); } + void UpdateInternalOctreeTransform(UPrimitiveComponent * InComponent) { NativeCall(this, "UWorld.UpdateInternalOctreeTransform", InComponent); } + void RemoveFromInternalOctree(UPrimitiveComponent * InComponent) { NativeCall(this, "UWorld.RemoveFromInternalOctree", InComponent); } + bool OverlapMultiInternalOctree(TArray * OutPrimitives, FBoxCenterAndExtent * InBounds, unsigned int InSearchMask, bool bDontClearOutArray) { return NativeCall*, FBoxCenterAndExtent*, unsigned int, bool>(this, "UWorld.OverlapMultiInternalOctree", OutPrimitives, InBounds, InSearchMask, bDontClearOutArray); } + void UpdateInternalSimpleOctreeTransform(FOctreeElementSimple * InElement) { NativeCall(this, "UWorld.UpdateInternalSimpleOctreeTransform", InElement); } + void RemoveFromInternalSimpleOctree(FOctreeElementSimple * InElement) { NativeCall(this, "UWorld.RemoveFromInternalSimpleOctree", InElement); } + int OverlapNumInternalOctree(FBoxCenterAndExtent * InBounds, unsigned int InSearchMask) { return NativeCall(this, "UWorld.OverlapNumInternalOctree", InBounds, InSearchMask); } + bool OverlapMultiInternalSimpleOctree(TArray * OutPrimitives, FBoxCenterAndExtent * InBounds, unsigned int InSearchMask, bool bDontClearOutArray) { return NativeCall*, FBoxCenterAndExtent*, unsigned int, bool>(this, "UWorld.OverlapMultiInternalSimpleOctree", OutPrimitives, InBounds, InSearchMask, bDontClearOutArray); } + bool LineTraceSingle(FHitResult * OutHit, FVector * Start, FVector * End, ECollisionChannel TraceChannel, FCollisionQueryParams * Params, FCollisionResponseParams * ResponseParam, bool bUsePostfilter, float NegativeDistanceTolerance) { return NativeCall(this, "UWorld.LineTraceSingle", OutHit, Start, End, TraceChannel, Params, ResponseParam, bUsePostfilter, NegativeDistanceTolerance); } + bool LineTraceMulti(TArray * OutHits, FVector * Start, FVector * End, ECollisionChannel TraceChannel, FCollisionQueryParams * Params, FCollisionResponseParams * ResponseParam, bool bDoSort, bool bCullBackfaces, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall*, FVector*, FVector*, ECollisionChannel, FCollisionQueryParams*, FCollisionResponseParams*, bool, bool, bool, float>(this, "UWorld.LineTraceMulti", OutHits, Start, End, TraceChannel, Params, ResponseParam, bDoSort, bCullBackfaces, bUsePostFilter, NegativeDistanceTolerance); } + bool LineTraceSingle(FHitResult * OutHit, FVector * Start, FVector * End, FCollisionQueryParams * Params, FCollisionObjectQueryParams * ObjectQueryParams, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall(this, "UWorld.LineTraceSingle", OutHit, Start, End, Params, ObjectQueryParams, bUsePostFilter, NegativeDistanceTolerance); } + bool LineTraceMulti(TArray * OutHits, FVector * Start, FVector * End, FCollisionQueryParams * Params, FCollisionObjectQueryParams * ObjectQueryParams, bool bDoSort, bool bCullBackfaces, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall*, FVector*, FVector*, FCollisionQueryParams*, FCollisionObjectQueryParams*, bool, bool, bool, float>(this, "UWorld.LineTraceMulti", OutHits, Start, End, Params, ObjectQueryParams, bDoSort, bCullBackfaces, bUsePostFilter, NegativeDistanceTolerance); } void StartAsyncTrace() { NativeCall(this, "UWorld.StartAsyncTrace"); } void FinishAsyncTrace() { NativeCall(this, "UWorld.FinishAsyncTrace"); } void FinishPhysicsSim() { NativeCall(this, "UWorld.FinishPhysicsSim"); } @@ -183,23 +266,52 @@ struct UWorld : UObject struct UEngine : UObject { - TWeakObjectPtr& ActiveMatineeField() { return *GetNativePointerField*>(this, "UEngine.ActiveMatinee"); } - TArray& AdditionalFontNamesField() { return *GetNativePointerField*>(this, "UEngine.AdditionalFontNames"); } - TSubclassOf& LocalPlayerClassField() { return *GetNativePointerField*>(this, "UEngine.LocalPlayerClass"); } - TSubclassOf& WorldSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.WorldSettingsClass"); } - //TSubclassOf& GameUserSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.GameUserSettingsClass"); } - //UGameUserSettings * GameUserSettingsField() { return *GetNativePointerField(this, "UEngine.GameUserSettings"); } - UPrimalGlobals * GameSingletonField() { return *GetNativePointerField(this, "UEngine.GameSingleton"); } - TSubclassOf& DefaultPreviewPawnClassField() { return *GetNativePointerField*>(this, "UEngine.DefaultPreviewPawnClass"); } - FString& PlayOnConsoleSaveDirField() { return *GetNativePointerField(this, "UEngine.PlayOnConsoleSaveDir"); } - UTexture2D * DefaultTextureField() { return *GetNativePointerField(this, "UEngine.DefaultTexture"); } - UTexture2D * DefaultBSPVertexTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBSPVertexTexture"); } - UTexture2D * HighFrequencyNoiseTextureField() { return *GetNativePointerField(this, "UEngine.HighFrequencyNoiseTexture"); } - UTexture2D * DefaultBokehTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBokehTexture"); } - FLinearColor& LightingOnlyBrightnessField() { return *GetNativePointerField(this, "UEngine.LightingOnlyBrightness"); } - TArray& LightComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.LightComplexityColors"); } - TArray& ShaderComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.ShaderComplexityColors"); } - TArray& StationaryLightOverlapColorsField() { return *GetNativePointerField*>(this, "UEngine.StationaryLightOverlapColors"); } + UFont * TinyFontField() { return *GetNativePointerField(this, "UEngine.TinyFont"); } + UFont * SmallFontField() { return *GetNativePointerField(this, "UEngine.SmallFont"); } + UFont * MediumFontField() { return *GetNativePointerField(this, "UEngine.MediumFont"); } + UFont * LargeFontField() { return *GetNativePointerField(this, "UEngine.LargeFont"); } + UFont * SubtitleFontField() { return *GetNativePointerField(this, "UEngine.SubtitleFont"); } + TArray AdditionalFontsField() { return *GetNativePointerField*>(this, "UEngine.AdditionalFonts"); } + TWeakObjectPtr & ActiveMatineeField() { return *GetNativePointerField*>(this, "UEngine.ActiveMatinee"); } + TArray & AdditionalFontNamesField() { return *GetNativePointerField*>(this, "UEngine.AdditionalFontNames"); } + TSubclassOf & ConsoleClassField() { return *GetNativePointerField*>(this, "UEngine.ConsoleClass"); } + TSubclassOf & GameViewportClientClassField() { return *GetNativePointerField*>(this, "UEngine.GameViewportClientClass"); } + TSubclassOf & LocalPlayerClassField() { return *GetNativePointerField*>(this, "UEngine.LocalPlayerClass"); } + TSubclassOf & WorldSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.WorldSettingsClass"); } + TSubclassOf & GameUserSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.GameUserSettingsClass"); } + UGameUserSettings * GameUserSettingsField() { return *GetNativePointerField(this, "UEngine.GameUserSettings"); } + TSubclassOf & LevelScriptActorClassField() { return *GetNativePointerField*>(this, "UEngine.LevelScriptActorClass"); } + UObject * GameSingletonField() { return *GetNativePointerField(this, "UEngine.GameSingleton"); } + UTireType * DefaultTireTypeField() { return *GetNativePointerField(this, "UEngine.DefaultTireType"); } + TSubclassOf & DefaultPreviewPawnClassField() { return *GetNativePointerField*>(this, "UEngine.DefaultPreviewPawnClass"); } + FString & PlayOnConsoleSaveDirField() { return *GetNativePointerField(this, "UEngine.PlayOnConsoleSaveDir"); } + UTexture2D * DefaultTextureField() { return *GetNativePointerField(this, "UEngine.DefaultTexture"); } + UTexture * DefaultDiffuseTextureField() { return *GetNativePointerField(this, "UEngine.DefaultDiffuseTexture"); } + UTexture2D * DefaultBSPVertexTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBSPVertexTexture"); } + UTexture2D * HighFrequencyNoiseTextureField() { return *GetNativePointerField(this, "UEngine.HighFrequencyNoiseTexture"); } + UTexture2D * DefaultBokehTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBokehTexture"); } + UMaterial * WireframeMaterialField() { return *GetNativePointerField(this, "UEngine.WireframeMaterial"); } + UMaterial * DebugMeshMaterialField() { return *GetNativePointerField(this, "UEngine.DebugMeshMaterial"); } + UMaterial * LevelColorationLitMaterialField() { return *GetNativePointerField(this, "UEngine.LevelColorationLitMaterial"); } + UMaterial * LevelColorationUnlitMaterialField() { return *GetNativePointerField(this, "UEngine.LevelColorationUnlitMaterial"); } + UMaterial * LightingTexelDensityMaterialField() { return *GetNativePointerField(this, "UEngine.LightingTexelDensityMaterial"); } + UMaterial * ShadedLevelColorationLitMaterialField() { return *GetNativePointerField(this, "UEngine.ShadedLevelColorationLitMaterial"); } + UMaterial * ShadedLevelColorationUnlitMaterialField() { return *GetNativePointerField(this, "UEngine.ShadedLevelColorationUnlitMaterial"); } + UMaterial * RemoveSurfaceMaterialField() { return *GetNativePointerField(this, "UEngine.RemoveSurfaceMaterial"); } + UMaterial * VertexColorMaterialField() { return *GetNativePointerField(this, "UEngine.VertexColorMaterial"); } + UMaterial * VertexColorViewModeMaterial_ColorOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_ColorOnly"); } + UMaterial * VertexColorViewModeMaterial_AlphaAsColorField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_AlphaAsColor"); } + UMaterial * VertexColorViewModeMaterial_RedOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_RedOnly"); } + UMaterial * VertexColorViewModeMaterial_GreenOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_GreenOnly"); } + UMaterial * VertexColorViewModeMaterial_BlueOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_BlueOnly"); } + UMaterial * ConstraintLimitMaterialField() { return *GetNativePointerField(this, "UEngine.ConstraintLimitMaterial"); } + UMaterial * InvalidLightmapSettingsMaterialField() { return *GetNativePointerField(this, "UEngine.InvalidLightmapSettingsMaterial"); } + UMaterial * PreviewShadowsIndicatorMaterialField() { return *GetNativePointerField(this, "UEngine.PreviewShadowsIndicatorMaterial"); } + UMaterial * ArrowMaterialField() { return *GetNativePointerField(this, "UEngine.ArrowMaterial"); } + FLinearColor & LightingOnlyBrightnessField() { return *GetNativePointerField(this, "UEngine.LightingOnlyBrightness"); } + TArray & LightComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.LightComplexityColors"); } + TArray & ShaderComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.ShaderComplexityColors"); } + TArray & StationaryLightOverlapColorsField() { return *GetNativePointerField*>(this, "UEngine.StationaryLightOverlapColors"); } float& MaxPixelShaderAdditiveComplexityCountField() { return *GetNativePointerField(this, "UEngine.MaxPixelShaderAdditiveComplexityCount"); } float& MaxES2PixelShaderAdditiveComplexityCountField() { return *GetNativePointerField(this, "UEngine.MaxES2PixelShaderAdditiveComplexityCount"); } float& MinLightMapDensityField() { return *GetNativePointerField(this, "UEngine.MinLightMapDensity"); } @@ -207,13 +319,21 @@ struct UEngine : UObject float& MaxLightMapDensityField() { return *GetNativePointerField(this, "UEngine.MaxLightMapDensity"); } float& RenderLightMapDensityGrayscaleScaleField() { return *GetNativePointerField(this, "UEngine.RenderLightMapDensityGrayscaleScale"); } float& RenderLightMapDensityColorScaleField() { return *GetNativePointerField(this, "UEngine.RenderLightMapDensityColorScale"); } - FLinearColor& LightMapDensityVertexMappedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensityVertexMappedColor"); } - FLinearColor& LightMapDensitySelectedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensitySelectedColor"); } - UPhysicalMaterial * DefaultPhysMaterialField() { return *GetNativePointerField(this, "UEngine.DefaultPhysMaterial"); } - UTexture2D * PreIntegratedSkinBRDFTextureField() { return *GetNativePointerField(this, "UEngine.PreIntegratedSkinBRDFTexture"); } - UTexture2D * MiniFontTextureField() { return *GetNativePointerField(this, "UEngine.MiniFontTexture"); } - UTexture2D * LightMapDensityTextureField() { return *GetNativePointerField(this, "UEngine.LightMapDensityTexture"); } - TArray& DeferredCommandsField() { return *GetNativePointerField*>(this, "UEngine.DeferredCommands"); } + FLinearColor & LightMapDensityVertexMappedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensityVertexMappedColor"); } + FLinearColor & LightMapDensitySelectedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensitySelectedColor"); } + TArray & StatColorMappingsField() { return *GetNativePointerField*>(this, "UEngine.StatColorMappings"); } + UPhysicalMaterial * DefaultPhysMaterialField() { return *GetNativePointerField(this, "UEngine.DefaultPhysMaterial"); } + TArray & ActiveGameNameRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveGameNameRedirects"); } + TArray & ActiveClassRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveClassRedirects"); } + TArray & ActivePluginRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActivePluginRedirects"); } + TArray & ActiveStructRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveStructRedirects"); } + UTexture2D * PreIntegratedSkinBRDFTextureField() { return *GetNativePointerField(this, "UEngine.PreIntegratedSkinBRDFTexture"); } + UTexture2D * MiniFontTextureField() { return *GetNativePointerField(this, "UEngine.MiniFontTexture"); } + UTexture * WeightMapPlaceholderTextureField() { return *GetNativePointerField(this, "UEngine.WeightMapPlaceholderTexture"); } + UTexture2D * LightMapDensityTextureField() { return *GetNativePointerField(this, "UEngine.LightMapDensityTexture"); } + IEngineLoop * EngineLoopField() { return *GetNativePointerField(this, "UEngine.EngineLoop"); } + UGameViewportClient * GameViewportField() { return *GetNativePointerField(this, "UEngine.GameViewport"); } + TArray & DeferredCommandsField() { return *GetNativePointerField*>(this, "UEngine.DeferredCommands"); } int& TickCyclesField() { return *GetNativePointerField(this, "UEngine.TickCycles"); } int& GameCyclesField() { return *GetNativePointerField(this, "UEngine.GameCycles"); } int& ClientCyclesField() { return *GetNativePointerField(this, "UEngine.ClientCycles"); } @@ -225,23 +345,23 @@ struct UEngine : UObject int& LevelStreamingComponentsRegistrationGranularityField() { return *GetNativePointerField(this, "UEngine.LevelStreamingComponentsRegistrationGranularity"); } int& MaximumLoopIterationCountField() { return *GetNativePointerField(this, "UEngine.MaximumLoopIterationCount"); } int& NumPawnsAllowedToBeSpawnedInAFrameField() { return *GetNativePointerField(this, "UEngine.NumPawnsAllowedToBeSpawnedInAFrame"); } - FColor& C_WorldBoxField() { return *GetNativePointerField(this, "UEngine.C_WorldBox"); } - FColor& C_BrushWireField() { return *GetNativePointerField(this, "UEngine.C_BrushWire"); } - FColor& C_AddWireField() { return *GetNativePointerField(this, "UEngine.C_AddWire"); } - FColor& C_SubtractWireField() { return *GetNativePointerField(this, "UEngine.C_SubtractWire"); } - FColor& C_SemiSolidWireField() { return *GetNativePointerField(this, "UEngine.C_SemiSolidWire"); } - FColor& C_NonSolidWireField() { return *GetNativePointerField(this, "UEngine.C_NonSolidWire"); } - FColor& C_WireBackgroundField() { return *GetNativePointerField(this, "UEngine.C_WireBackground"); } - FColor& C_ScaleBoxHiField() { return *GetNativePointerField(this, "UEngine.C_ScaleBoxHi"); } - FColor& C_VolumeCollisionField() { return *GetNativePointerField(this, "UEngine.C_VolumeCollision"); } - FColor& C_BSPCollisionField() { return *GetNativePointerField(this, "UEngine.C_BSPCollision"); } - FColor& C_OrthoBackgroundField() { return *GetNativePointerField(this, "UEngine.C_OrthoBackground"); } - FColor& C_VolumeField() { return *GetNativePointerField(this, "UEngine.C_Volume"); } - FColor& C_BrushShapeField() { return *GetNativePointerField(this, "UEngine.C_BrushShape"); } + FColor & C_WorldBoxField() { return *GetNativePointerField(this, "UEngine.C_WorldBox"); } + FColor & C_BrushWireField() { return *GetNativePointerField(this, "UEngine.C_BrushWire"); } + FColor & C_AddWireField() { return *GetNativePointerField(this, "UEngine.C_AddWire"); } + FColor & C_SubtractWireField() { return *GetNativePointerField(this, "UEngine.C_SubtractWire"); } + FColor & C_SemiSolidWireField() { return *GetNativePointerField(this, "UEngine.C_SemiSolidWire"); } + FColor & C_NonSolidWireField() { return *GetNativePointerField(this, "UEngine.C_NonSolidWire"); } + FColor & C_WireBackgroundField() { return *GetNativePointerField(this, "UEngine.C_WireBackground"); } + FColor & C_ScaleBoxHiField() { return *GetNativePointerField(this, "UEngine.C_ScaleBoxHi"); } + FColor & C_VolumeCollisionField() { return *GetNativePointerField(this, "UEngine.C_VolumeCollision"); } + FColor & C_BSPCollisionField() { return *GetNativePointerField(this, "UEngine.C_BSPCollision"); } + FColor & C_OrthoBackgroundField() { return *GetNativePointerField(this, "UEngine.C_OrthoBackground"); } + FColor & C_VolumeField() { return *GetNativePointerField(this, "UEngine.C_Volume"); } + FColor & C_BrushShapeField() { return *GetNativePointerField(this, "UEngine.C_BrushShape"); } float& StreamingDistanceFactorField() { return *GetNativePointerField(this, "UEngine.StreamingDistanceFactor"); } - TEnumAsByte& TransitionTypeField() { return *GetNativePointerField*>(this, "UEngine.TransitionType"); } - FString& TransitionDescriptionField() { return *GetNativePointerField(this, "UEngine.TransitionDescription"); } - FString& TransitionGameModeField() { return *GetNativePointerField(this, "UEngine.TransitionGameMode"); } + TEnumAsByte & TransitionTypeField() { return *GetNativePointerField*>(this, "UEngine.TransitionType"); } + FString & TransitionDescriptionField() { return *GetNativePointerField(this, "UEngine.TransitionDescription"); } + FString & TransitionGameModeField() { return *GetNativePointerField(this, "UEngine.TransitionGameMode"); } float& MeshLODRangeField() { return *GetNativePointerField(this, "UEngine.MeshLODRange"); } float& CameraRotationThresholdField() { return *GetNativePointerField(this, "UEngine.CameraRotationThreshold"); } float& CameraTranslationThresholdField() { return *GetNativePointerField(this, "UEngine.CameraTranslationThreshold"); } @@ -249,43 +369,60 @@ struct UEngine : UObject float& MaxOcclusionPixelsFractionField() { return *GetNativePointerField(this, "UEngine.MaxOcclusionPixelsFraction"); } int& MaxParticleResizeField() { return *GetNativePointerField(this, "UEngine.MaxParticleResize"); } int& MaxParticleResizeWarnField() { return *GetNativePointerField(this, "UEngine.MaxParticleResizeWarn"); } + TArray & PendingDroppedNotesField() { return *GetNativePointerField*>(this, "UEngine.PendingDroppedNotes"); } + FRigidBodyErrorCorrection & PhysicErrorCorrectionField() { return *GetNativePointerField(this, "UEngine.PhysicErrorCorrection"); } float& NetClientTicksPerSecondField() { return *GetNativePointerField(this, "UEngine.NetClientTicksPerSecond"); } float& DisplayGammaField() { return *GetNativePointerField(this, "UEngine.DisplayGamma"); } float& MinDesiredFrameRateField() { return *GetNativePointerField(this, "UEngine.MinDesiredFrameRate"); } - FLinearColor& DefaultSelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.DefaultSelectedMaterialColor"); } - FLinearColor& SelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColor"); } - FLinearColor& SelectionOutlineColorField() { return *GetNativePointerField(this, "UEngine.SelectionOutlineColor"); } - FLinearColor& SelectedMaterialColorOverrideField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColorOverride"); } + FLinearColor & DefaultSelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.DefaultSelectedMaterialColor"); } + FLinearColor & SelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColor"); } + FLinearColor & SelectionOutlineColorField() { return *GetNativePointerField(this, "UEngine.SelectionOutlineColor"); } + FLinearColor & SelectedMaterialColorOverrideField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColorOverride"); } bool& bIsOverridingSelectedColorField() { return *GetNativePointerField(this, "UEngine.bIsOverridingSelectedColor"); } unsigned int& bEnableVisualLogRecordingOnStartField() { return *GetNativePointerField(this, "UEngine.bEnableVisualLogRecordingOnStart"); } + UDeviceProfileManager * DeviceProfileManagerField() { return *GetNativePointerField(this, "UEngine.DeviceProfileManager"); } int& ScreenSaverInhibitorSemaphoreField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitorSemaphore"); } - FString& MatineeCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineeCaptureName"); } - FString& MatineePackageCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineePackageCaptureName"); } + FString & MatineeCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineeCaptureName"); } + FString & MatineePackageCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineePackageCaptureName"); } int& MatineeCaptureFPSField() { return *GetNativePointerField(this, "UEngine.MatineeCaptureFPS"); } bool& bNoTextureStreamingField() { return *GetNativePointerField(this, "UEngine.bNoTextureStreaming"); } - FString& ParticleEventManagerClassPathField() { return *GetNativePointerField(this, "UEngine.ParticleEventManagerClassPath"); } + FString & ParticleEventManagerClassPathField() { return *GetNativePointerField(this, "UEngine.ParticleEventManagerClassPath"); } + TArray & PriorityScreenMessagesField() { return *GetNativePointerField*>(this, "UEngine.PriorityScreenMessages"); } float& SelectionHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.SelectionHighlightIntensity"); } float& BSPSelectionHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.BSPSelectionHighlightIntensity"); } float& HoverHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.HoverHighlightIntensity"); } float& SelectionHighlightIntensityBillboardsField() { return *GetNativePointerField(this, "UEngine.SelectionHighlightIntensityBillboards"); } - FString& LastModDownloadTextField() { return *GetNativePointerField(this, "UEngine.LastModDownloadText"); } - FString& PrimalNetAuth_MyIPStrField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_MyIPStr"); } - FString& PrimalNetAuth_TokenField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_Token"); } + FString & LastModDownloadTextField() { return *GetNativePointerField(this, "UEngine.LastModDownloadText"); } + FString & PrimalNetAuth_MyIPStrField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_MyIPStr"); } + FString & PrimalNetAuth_TokenField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_Token"); } bool& bIsInitializedField() { return *GetNativePointerField(this, "UEngine.bIsInitialized"); } + TMap > & ScreenMessagesField() { return *GetNativePointerField >*>(this, "UEngine.ScreenMessages"); } + FAudioDevice * AudioDeviceField() { return *GetNativePointerField(this, "UEngine.AudioDevice"); } + TSharedPtr & StereoRenderingDeviceField() { return *GetNativePointerField*>(this, "UEngine.StereoRenderingDevice"); } + TSharedPtr & HMDDeviceField() { return *GetNativePointerField*>(this, "UEngine.HMDDevice"); } + FRunnableThread * ScreenSaverInhibitorField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitor"); } + FScreenSaverInhibitor * ScreenSaverInhibitorRunnableField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitorRunnable"); } bool& bPendingHardwareSurveyResultsField() { return *GetNativePointerField(this, "UEngine.bPendingHardwareSurveyResults"); } - TArray& ServerActorsField() { return *GetNativePointerField*>(this, "UEngine.ServerActors"); } + TArray & NetDriverDefinitionsField() { return *GetNativePointerField*>(this, "UEngine.NetDriverDefinitions"); } + TArray & ServerActorsField() { return *GetNativePointerField*>(this, "UEngine.ServerActors"); } int& NextWorldContextHandleField() { return *GetNativePointerField(this, "UEngine.NextWorldContextHandle"); } // Functions + void FEngineStatFuncs() { NativeCall(this, "UEngine.FEngineStatFuncs"); } + FAudioDevice * GetAudioDevice() { return NativeCall(this, "UEngine.GetAudioDevice"); } bool IsInitialized() { return NativeCall(this, "UEngine.IsInitialized"); } - FString * GetLastModDownloadText(FString * result) { return NativeCall(this, "UEngine.GetLastModDownloadText", result); } + FString * GetLastModDownloadText(FString * result) { return NativeCall(this, "UEngine.GetLastModDownloadText", result); } void TickFPSChart(float DeltaSeconds) { NativeCall(this, "UEngine.TickFPSChart", DeltaSeconds); } void StartFPSChart() { NativeCall(this, "UEngine.StartFPSChart"); } void StopFPSChart() { NativeCall(this, "UEngine.StopFPSChart"); } - void DumpFPSChartToLog(float TotalTime, float DeltaTime, int NumFrames, FString * InMapName) { NativeCall(this, "UEngine.DumpFPSChartToLog", TotalTime, DeltaTime, NumFrames, InMapName); } - void DumpFPSChart(FString * InMapName, bool bForceDump) { NativeCall(this, "UEngine.DumpFPSChart", InMapName, bForceDump); } + void DumpFPSChartToLog(float TotalTime, float DeltaTime, int NumFrames, FString * InMapName) { NativeCall(this, "UEngine.DumpFPSChartToLog", TotalTime, DeltaTime, NumFrames, InMapName); } + void DumpFPSChart(FString * InMapName, bool bForceDump) { NativeCall(this, "UEngine.DumpFPSChart", InMapName, bForceDump); } + void LoadMapRedrawViewports() { NativeCall(this, "UEngine.LoadMapRedrawViewports"); } void Tick(float DeltaSeconds, bool bIdleMode) { NativeCall(this, "UEngine.Tick", DeltaSeconds, bIdleMode); } + bool IsHardwareSurveyRequired(int LocalUserNum) { return NativeCall(this, "UEngine.IsHardwareSurveyRequired", LocalUserNum); } + void Init(IEngineLoop * InEngineLoop) { NativeCall(this, "UEngine.Init", InEngineLoop); } + void RequestAuthTokenThenNotifyPendingNetGame(UPendingNetGame * PendingNetGameToNotify) { NativeCall(this, "UEngine.RequestAuthTokenThenNotifyPendingNetGame", PendingNetGameToNotify); } void OnExternalUIChange(bool bInIsOpening) { NativeCall(this, "UEngine.OnExternalUIChange", bInIsOpening); } void ShutdownAudioDevice() { NativeCall(this, "UEngine.ShutdownAudioDevice"); } void PreExit() { NativeCall(this, "UEngine.PreExit"); } @@ -293,73 +430,116 @@ struct UEngine : UObject void UpdateTimeAndHandleMaxTickRate() { NativeCall(this, "UEngine.UpdateTimeAndHandleMaxTickRate"); } void ParseCommandline() { NativeCall(this, "UEngine.ParseCommandline"); } void InitializeObjectReferences() { NativeCall(this, "UEngine.InitializeObjectReferences"); } + void Serialize(FArchive * Ar) { NativeCall(this, "UEngine.Serialize", Ar); } + static UFont * GetSmallFont() { return NativeCall(nullptr, "UEngine.GetSmallFont"); } bool InitializeAudioDevice() { return NativeCall(this, "UEngine.InitializeAudioDevice"); } bool UseSound() { return NativeCall(this, "UEngine.UseSound"); } bool InitializeHMDDevice() { return NativeCall(this, "UEngine.InitializeHMDDevice"); } void RecordHMDAnalytics() { NativeCall(this, "UEngine.RecordHMDAnalytics"); } - bool IsSplitScreen(UWorld * InWorld) { return NativeCall(this, "UEngine.IsSplitScreen", InWorld); } - ULocalPlayer * GetLocalPlayerFromControllerId(UWorld * InWorld, int ControllerId) { return NativeCall(this, "UEngine.GetLocalPlayerFromControllerId", InWorld, ControllerId); } - void SwapControllerId(ULocalPlayer * NewPlayer, int CurrentControllerId, int NewControllerID) { NativeCall(this, "UEngine.SwapControllerId", NewPlayer, CurrentControllerId, NewControllerID); } - APlayerController * GetFirstLocalPlayerController(UWorld * InWorld) { return NativeCall(this, "UEngine.GetFirstLocalPlayerController", InWorld); } - void GetAllLocalPlayerControllers(TArray * PlayerList) { NativeCall *>(this, "UEngine.GetAllLocalPlayerControllers", PlayerList); } + bool IsSplitScreen(UWorld * InWorld) { return NativeCall(this, "UEngine.IsSplitScreen", InWorld); } + ULocalPlayer * GetLocalPlayerFromControllerId(UGameViewportClient * InViewport, int ControllerId) { return NativeCall(this, "UEngine.GetLocalPlayerFromControllerId", InViewport, ControllerId); } + ULocalPlayer * GetLocalPlayerFromControllerId(UWorld * InWorld, int ControllerId) { return NativeCall(this, "UEngine.GetLocalPlayerFromControllerId", InWorld, ControllerId); } + void SwapControllerId(ULocalPlayer * NewPlayer, int CurrentControllerId, int NewControllerID) { NativeCall(this, "UEngine.SwapControllerId", NewPlayer, CurrentControllerId, NewControllerID); } + APlayerController * GetFirstLocalPlayerController(UWorld * InWorld) { return NativeCall(this, "UEngine.GetFirstLocalPlayerController", InWorld); } + void GetAllLocalPlayerControllers(TArray * PlayerList) { NativeCall*>(this, "UEngine.GetAllLocalPlayerControllers", PlayerList); } void OnLostFocusPause(bool EnablePause) { NativeCall(this, "UEngine.OnLostFocusPause", EnablePause); } void TickHardwareSurvey() { NativeCall(this, "UEngine.TickHardwareSurvey"); } - static FString * HardwareSurveyBucketRAM(FString * result, unsigned int MemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketRAM", result, MemoryMB); } - static FString * HardwareSurveyBucketVRAM(FString * result, unsigned int VidMemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketVRAM", result, VidMemoryMB); } - static FString * HardwareSurveyBucketResolution(FString * result, unsigned int DisplayWidth, unsigned int DisplayHeight) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketResolution", result, DisplayWidth, DisplayHeight); } + static FString * HardwareSurveyBucketRAM(FString * result, unsigned int MemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketRAM", result, MemoryMB); } + static FString * HardwareSurveyBucketVRAM(FString * result, unsigned int VidMemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketVRAM", result, VidMemoryMB); } + static FString * HardwareSurveyBucketResolution(FString * result, unsigned int DisplayWidth, unsigned int DisplayHeight) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketResolution", result, DisplayWidth, DisplayHeight); } + void OnHardwareSurveyComplete(FHardwareSurveyResults * SurveyResults) { NativeCall(this, "UEngine.OnHardwareSurveyComplete", SurveyResults); } float GetMaxTickRate(float DeltaTime, bool bAllowFrameRateSmoothing) { return NativeCall(this, "UEngine.GetMaxTickRate", DeltaTime, bAllowFrameRateSmoothing); } void EnableScreenSaver(bool bEnable) { NativeCall(this, "UEngine.EnableScreenSaver", bEnable); } - static FGuid * GetPackageGuid(FGuid * result, FName PackageName) { return NativeCall(nullptr, "UEngine.GetPackageGuid", result, PackageName); } - void PerformanceCapture(FString * CaptureName) { NativeCall(this, "UEngine.PerformanceCapture", CaptureName); } - void WorldAdded(UWorld * InWorld) { NativeCall(this, "UEngine.WorldAdded", InWorld); } - void WorldDestroyed(UWorld * InWorld) { NativeCall(this, "UEngine.WorldDestroyed", InWorld); } - TIndexedContainerIterator const, ULocalPlayer * const, int> * GetLocalPlayerIterator(TIndexedContainerIterator const, ULocalPlayer * const, int> * result, UWorld * World) { return NativeCall const, ULocalPlayer * const, int> *, TIndexedContainerIterator const, ULocalPlayer * const, int> *, UWorld *>(this, "UEngine.GetLocalPlayerIterator", result, World); } - TArray * GetGamePlayers(UWorld * World) { return NativeCall *, UWorld *>(this, "UEngine.GetGamePlayers", World); } - ULocalPlayer * FindFirstLocalPlayerFromControllerId(int ControllerId) { return NativeCall(this, "UEngine.FindFirstLocalPlayerFromControllerId", ControllerId); } - int GetNumGamePlayers(UWorld * InWorld) { return NativeCall(this, "UEngine.GetNumGamePlayers", InWorld); } - ULocalPlayer * GetFirstGamePlayer(UWorld * InWorld) { return NativeCall(this, "UEngine.GetFirstGamePlayer", InWorld); } - ULocalPlayer * GetDebugLocalPlayer() { return NativeCall(this, "UEngine.GetDebugLocalPlayer"); } - bool CreateNamedNetDriver(UWorld * InWorld, FName NetDriverName, FName NetDriverDefinition) { return NativeCall(this, "UEngine.CreateNamedNetDriver", InWorld, NetDriverName, NetDriverDefinition); } - void DestroyNamedNetDriver(UWorld * InWorld, FName NetDriverName) { NativeCall(this, "UEngine.DestroyNamedNetDriver", InWorld, NetDriverName); } - void SpawnServerActors(UWorld * World) { NativeCall(this, "UEngine.SpawnServerActors", World); } - bool MakeSureMapNameIsValid(FString * InOutMapName) { return NativeCall(this, "UEngine.MakeSureMapNameIsValid", InOutMapName); } + static FGuid * GetPackageGuid(FGuid * result, FName PackageName) { return NativeCall(nullptr, "UEngine.GetPackageGuid", result, PackageName); } + void PerformanceCapture(FString * CaptureName) { NativeCall(this, "UEngine.PerformanceCapture", CaptureName); } + void WorldAdded(UWorld * InWorld) { NativeCall(this, "UEngine.WorldAdded", InWorld); } + void WorldDestroyed(UWorld * InWorld) { NativeCall(this, "UEngine.WorldDestroyed", InWorld); } + UWorld * GetWorldFromContextObject(UObject * Object, bool bChecked) { return NativeCall(this, "UEngine.GetWorldFromContextObject", Object, bChecked); } + TIndexedContainerIterator const ,ULocalPlayer* const,int> * GetLocalPlayerIterator(TIndexedContainerIterator const ,ULocalPlayer* const,int> * result, UWorld * World) { return NativeCall const ,ULocalPlayer* const,int>*, TIndexedContainerIterator const ,ULocalPlayer* const,int>*, UWorld*>(this, "UEngine.GetLocalPlayerIterator", result, World); } + TIndexedContainerIterator const ,ULocalPlayer* const,int> * GetLocalPlayerIterator(TIndexedContainerIterator const ,ULocalPlayer* const,int> * result, UGameViewportClient * Viewport) { return NativeCall const ,ULocalPlayer* const,int>*, TIndexedContainerIterator const ,ULocalPlayer* const,int>*, UGameViewportClient*>(this, "UEngine.GetLocalPlayerIterator", result, Viewport); } + TArray * GetGamePlayers(UWorld * World) { return NativeCall*, UWorld*>(this, "UEngine.GetGamePlayers", World); } + TArray * GetGamePlayers(UGameViewportClient * Viewport) { return NativeCall*, UGameViewportClient*>(this, "UEngine.GetGamePlayers", Viewport); } + ULocalPlayer * FindFirstLocalPlayerFromControllerId(int ControllerId) { return NativeCall(this, "UEngine.FindFirstLocalPlayerFromControllerId", ControllerId); } + int GetNumGamePlayers(UWorld * InWorld) { return NativeCall(this, "UEngine.GetNumGamePlayers", InWorld); } + ULocalPlayer * GetFirstGamePlayer(UWorld * InWorld) { return NativeCall(this, "UEngine.GetFirstGamePlayer", InWorld); } + ULocalPlayer * GetFirstGamePlayer(UPendingNetGame * PendingNetGame) { return NativeCall(this, "UEngine.GetFirstGamePlayer", PendingNetGame); } + ULocalPlayer * GetDebugLocalPlayer() { return NativeCall(this, "UEngine.GetDebugLocalPlayer"); } + bool CreateNamedNetDriver(UWorld * InWorld, FName NetDriverName, FName NetDriverDefinition) { return NativeCall(this, "UEngine.CreateNamedNetDriver", InWorld, NetDriverName, NetDriverDefinition); } + void DestroyNamedNetDriver(UWorld * InWorld, FName NetDriverName) { NativeCall(this, "UEngine.DestroyNamedNetDriver", InWorld, NetDriverName); } + void SpawnServerActors(UWorld * World) { NativeCall(this, "UEngine.SpawnServerActors", World); } + bool MakeSureMapNameIsValid(FString * InOutMapName) { return NativeCall(this, "UEngine.MakeSureMapNameIsValid", InOutMapName); } + void CancelPending(FWorldContext * Context) { NativeCall(this, "UEngine.CancelPending", Context); } + void CancelPending(UWorld * InWorld, UPendingNetGame * NewPendingNetGame) { NativeCall(this, "UEngine.CancelPending", InWorld, NewPendingNetGame); } void CancelAllPending() { NativeCall(this, "UEngine.CancelAllPending"); } + void BrowseToDefaultMap(FWorldContext * Context) { NativeCall(this, "UEngine.BrowseToDefaultMap", Context); } + bool TickWorldTravel(FWorldContext * Context, float DeltaSeconds) { return NativeCall(this, "UEngine.TickWorldTravel", Context, DeltaSeconds); } + void TriggerPostLoadMapEvents() { NativeCall(this, "UEngine.TriggerPostLoadMapEvents"); } + void CancelPendingMapChange(FWorldContext * Context) { NativeCall(this, "UEngine.CancelPendingMapChange", Context); } void ClearDebugDisplayProperties() { NativeCall(this, "UEngine.ClearDebugDisplayProperties"); } - void UpdateTransitionType(UWorld * CurrentWorld) { NativeCall(this, "UEngine.UpdateTransitionType", CurrentWorld); } - void DestroyWorldContext(UWorld * InWorld) { NativeCall(this, "UEngine.DestroyWorldContext", InWorld); } + void MovePendingLevel(FWorldContext * Context) { NativeCall(this, "UEngine.MovePendingLevel", Context); } + void UpdateTransitionType(UWorld * CurrentWorld) { NativeCall(this, "UEngine.UpdateTransitionType", CurrentWorld); } + FWorldContext * CreateNewWorldContext(EWorldType::Type WorldType) { return NativeCall(this, "UEngine.CreateNewWorldContext", WorldType); } + FWorldContext * GetWorldContextFromHandleChecked(FName WorldContextHandle) { return NativeCall(this, "UEngine.GetWorldContextFromHandleChecked", WorldContextHandle); } + FWorldContext * GetWorldContextFromWorld(UWorld * InWorld) { return NativeCall(this, "UEngine.GetWorldContextFromWorld", InWorld); } + FWorldContext * GetWorldContextFromWorldChecked(UWorld * InWorld) { return NativeCall(this, "UEngine.GetWorldContextFromWorldChecked", InWorld); } + void DestroyWorldContext(UWorld * InWorld) { NativeCall(this, "UEngine.DestroyWorldContext", InWorld); } void VerifyLoadMapWorldCleanup() { NativeCall(this, "UEngine.VerifyLoadMapWorldCleanup"); } + bool PrepareMapChange(FWorldContext * Context, TArray * LevelNames) { return NativeCall*>(this, "UEngine.PrepareMapChange", Context, LevelNames); } + void ConditionalCommitMapChange(FWorldContext * Context) { NativeCall(this, "UEngine.ConditionalCommitMapChange", Context); } + bool CommitMapChange(FWorldContext * Context) { return NativeCall(this, "UEngine.CommitMapChange", Context); } + FSeamlessTravelHandler * SeamlessTravelHandlerForWorld(UWorld * World) { return NativeCall(this, "UEngine.SeamlessTravelHandlerForWorld", World); } void CreateGameUserSettings() { NativeCall(this, "UEngine.CreateGameUserSettings"); } - //UGameUserSettings * GetGameUserSettings() { return NativeCall(this, "UEngine.GetGameUserSettings"); } + UGameUserSettings * GetGameUserSettings() { return NativeCall(this, "UEngine.GetGameUserSettings"); } bool ShouldAbsorbAuthorityOnlyEvent() { return NativeCall(this, "UEngine.ShouldAbsorbAuthorityOnlyEvent"); } bool ShouldAbsorbCosmeticOnlyEvent() { return NativeCall(this, "UEngine.ShouldAbsorbCosmeticOnlyEvent"); } - bool IsEngineStat(FString * InName) { return NativeCall(this, "UEngine.IsEngineStat", InName); } + bool IsEngineStat(FString * InName) { return NativeCall(this, "UEngine.IsEngineStat", InName); } + void RenderEngineStats(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int LHSX, int* InOutLHSY, int RHSX, int* InOutRHSY, FVector * ViewLocation, FRotator * ViewRotation) { NativeCall(this, "UEngine.RenderEngineStats", World, Viewport, Canvas, LHSX, InOutLHSY, RHSX, InOutRHSY, ViewLocation, ViewRotation); } + int RenderStatFPS(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatFPS", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatTexture(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatTexture", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatHitches(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatHitches", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatSummary(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatSummary", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatNamedEvents(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatNamedEvents", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatColorList(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatColorList", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatLevels(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatLevels", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatUnit(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatUnit", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatSounds(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatSounds", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatAI(UWorld * World, FViewport * Viewport, FCanvas * Canvas, int X, int Y, FVector * ViewLocation, FRotator * ViewRotation) { return NativeCall(this, "UEngine.RenderStatAI", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } }; -struct UPrimalGlobals +struct UPrimalGlobals : UObject { - UPrimalGameData * PrimalGameDataField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameData"); } - UPrimalGameData * PrimalGameDataOverrideField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameDataOverride"); } + UPrimalGameData* PrimalGameDataField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameData"); } + UPrimalGameData* PrimalGameDataOverrideField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameDataOverride"); } + TSubclassOf& GlobalGenericConfirmationDialogField() { return *GetNativePointerField*>(this, "UPrimalGlobals.GlobalGenericConfirmationDialog"); } bool& bAllowSingleplayerField() { return *GetNativePointerField(this, "UPrimalGlobals.bAllowSingleplayer"); } bool& bAllowNonDedicatedHostField() { return *GetNativePointerField(this, "UPrimalGlobals.bAllowNonDedicatedHost"); } TArray& UIOnlyShowMapFileNamesField() { return *GetNativePointerField*>(this, "UPrimalGlobals.UIOnlyShowMapFileNames"); } TArray& UIOnlyShowModIDsField() { return *GetNativePointerField*>(this, "UPrimalGlobals.UIOnlyShowModIDs"); } bool& bTotalConversionShowUnofficialServersField() { return *GetNativePointerField(this, "UPrimalGlobals.bTotalConversionShowUnofficialServers"); } FString& CreditStringField() { return *GetNativePointerField(this, "UPrimalGlobals.CreditString"); } + FLinearColor& AlphaMissionColorField() { return *GetNativePointerField(this, "UPrimalGlobals.AlphaMissionColor"); } + FLinearColor& BetaMissionColorField() { return *GetNativePointerField(this, "UPrimalGlobals.BetaMissionColor"); } + FLinearColor& GammaMissionColorField() { return *GetNativePointerField(this, "UPrimalGlobals.GammaMissionColor"); } + FLinearColor& MissionCompleteMultiUseWheelTextColorField() { return *GetNativePointerField(this, "UPrimalGlobals.MissionCompleteMultiUseWheelTextColor"); } bool& bGameMediaLoadedField() { return *GetNativePointerField(this, "UPrimalGlobals.bGameMediaLoaded"); } bool& bStartedAsyncLoadField() { return *GetNativePointerField(this, "UPrimalGlobals.bStartedAsyncLoad"); } + FStreamableManager& StreamableManagerField() { return *GetNativePointerField(this, "UPrimalGlobals.StreamableManager"); } // Functions void AsyncLoadGameMedia() { NativeCall(this, "UPrimalGlobals.AsyncLoadGameMedia"); } void FinishLoadGameMedia() { NativeCall(this, "UPrimalGlobals.FinishLoadGameMedia"); } void FinishedLoadingGameMedia() { NativeCall(this, "UPrimalGlobals.FinishedLoadingGameMedia"); } - void LoadNextTick(UWorld * ForWorld) { NativeCall(this, "UPrimalGlobals.LoadNextTick", ForWorld); } + void LoadNextTick(UWorld* ForWorld) { NativeCall(this, "UPrimalGlobals.LoadNextTick", ForWorld); } void OnConfirmationDialogClosed(bool bAccept) { NativeCall(this, "UPrimalGlobals.OnConfirmationDialogClosed", bAccept); } - //static ADayCycleManager * GetDayCycleManager(UWorld * World) { return NativeCall(nullptr, "UPrimalGlobals.GetDayCycleManager", World); } - //static ASOTFNotification * GetSOTFNotificationManager(UWorld * World) { return NativeCall(nullptr, "UPrimalGlobals.GetSOTFNotificationManager", World); } + static ADayCycleManager* GetDayCycleManager(UWorld* World) { return NativeCall(nullptr, "UPrimalGlobals.GetDayCycleManager", World); } + static ASOTFNotification* GetSOTFNotificationManager(UWorld* World) { return NativeCall(nullptr, "UPrimalGlobals.GetSOTFNotificationManager", World); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalGlobals.StaticClass"); } static void StaticRegisterNativesUPrimalGlobals() { NativeCall(nullptr, "UPrimalGlobals.StaticRegisterNativesUPrimalGlobals"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalGlobals.GetPrivateStaticClass", Package); } }; + // Level struct ULevelBase @@ -373,7 +553,7 @@ struct ULevel : ULevelBase // Game Mode -struct AGameMode +struct AGameMode : AInfo { FName& MatchStateField() { return *GetNativePointerField(this, "AGameMode.MatchState"); } FString& OptionsStringField() { return *GetNativePointerField(this, "AGameMode.OptionsString"); } @@ -383,19 +563,20 @@ struct AGameMode int& NumPlayersField() { return *GetNativePointerField(this, "AGameMode.NumPlayers"); } int& NumBotsField() { return *GetNativePointerField(this, "AGameMode.NumBots"); } float& MinRespawnDelayField() { return *GetNativePointerField(this, "AGameMode.MinRespawnDelay"); } - AGameSession * GameSessionField() { return *GetNativePointerField(this, "AGameMode.GameSession"); } + AGameSession* GameSessionField() { return *GetNativePointerField(this, "AGameMode.GameSession"); } int& NumTravellingPlayersField() { return *GetNativePointerField(this, "AGameMode.NumTravellingPlayers"); } int& CurrentIDField() { return *GetNativePointerField(this, "AGameMode.CurrentID"); } FString& DefaultPlayerNameField() { return *GetNativePointerField(this, "AGameMode.DefaultPlayerName"); } - TArray PlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.PlayerStarts"); } + TArray PlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.PlayerStarts"); } TSubclassOf& PlayerControllerClassField() { return *GetNativePointerField*>(this, "AGameMode.PlayerControllerClass"); } + TSubclassOf& SpectatorClassField() { return *GetNativePointerField*>(this, "AGameMode.SpectatorClass"); } TSubclassOf& PlayerStateClassField() { return *GetNativePointerField*>(this, "AGameMode.PlayerStateClass"); } TSubclassOf& GameStateClassField() { return *GetNativePointerField*>(this, "AGameMode.GameStateClass"); } - AGameState * GameStateField() { return *GetNativePointerField(this, "AGameMode.GameState"); } - TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameMode.InactivePlayerArray"); } - UAntiDupeTransactionLog * AntiDupeTransactionLogField() { return *GetNativePointerField(this, "AGameMode.AntiDupeTransactionLog"); } + AGameState* GameStateField() { return *GetNativePointerField(this, "AGameMode.GameState"); } + TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameMode.InactivePlayerArray"); } + UAntiDupeTransactionLog* AntiDupeTransactionLogField() { return *GetNativePointerField(this, "AGameMode.AntiDupeTransactionLog"); } float& InactivePlayerStateLifeSpanField() { return *GetNativePointerField(this, "AGameMode.InactivePlayerStateLifeSpan"); } - TArray UsedPlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.UsedPlayerStarts"); } + TArray UsedPlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.UsedPlayerStarts"); } // Bit fields @@ -406,20 +587,23 @@ struct AGameMode // Functions - FString * GetNetworkNumber(FString * result) { return NativeCall(this, "AGameMode.GetNetworkNumber", result); } - void SwapPlayerControllers(APlayerController * OldPC, APlayerController * NewPC) { NativeCall(this, "AGameMode.SwapPlayerControllers", OldPC, NewPC); } - void ForceClearUnpauseDelegates(AActor * PauseActor) { NativeCall(this, "AGameMode.ForceClearUnpauseDelegates", PauseActor); } - void InitGame(FString * MapName, FString * Options, FString * ErrorMessage) { NativeCall(this, "AGameMode.InitGame", MapName, Options, ErrorMessage); } + FName* GetMatchState(FName* result) { return NativeCall(this, "AGameMode.GetMatchState", result); } + static UClass* StaticClass() { return NativeCall(nullptr, "AGameMode.StaticClass"); } + static const wchar_t* StaticConfigName() { return NativeCall(nullptr, "AGameMode.StaticConfigName"); } + FString* GetNetworkNumber(FString* result) { return NativeCall(this, "AGameMode.GetNetworkNumber", result); } + void SwapPlayerControllers(APlayerController* OldPC, APlayerController* NewPC) { NativeCall(this, "AGameMode.SwapPlayerControllers", OldPC, NewPC); } + void ForceClearUnpauseDelegates(AActor* PauseActor) { NativeCall(this, "AGameMode.ForceClearUnpauseDelegates", PauseActor); } + void InitGame(FString* MapName, FString* Options, FString* ErrorMessage) { NativeCall(this, "AGameMode.InitGame", MapName, Options, ErrorMessage); } void RestartGame() { NativeCall(this, "AGameMode.RestartGame"); } void ReturnToMainMenuHost() { NativeCall(this, "AGameMode.ReturnToMainMenuHost"); } - void PostLogin(APlayerController * NewPlayer) { NativeCall(this, "AGameMode.PostLogin", NewPlayer); } - bool ShouldStartInCinematicMode(bool * OutHidePlayer, bool * OutHideHUD, bool * OutDisableMovement, bool * OutDisableTurning) { return NativeCall(this, "AGameMode.ShouldStartInCinematicMode", OutHidePlayer, OutHideHUD, OutDisableMovement, OutDisableTurning); } - void SetPlayerDefaults(APawn * PlayerPawn) { NativeCall(this, "AGameMode.SetPlayerDefaults", PlayerPawn); } - void Logout(AController * Exiting) { NativeCall(this, "AGameMode.Logout", Exiting); } + void PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.PostLogin", NewPlayer); } + bool ShouldStartInCinematicMode(bool* OutHidePlayer, bool* OutHideHUD, bool* OutDisableMovement, bool* OutDisableTurning) { return NativeCall(this, "AGameMode.ShouldStartInCinematicMode", OutHidePlayer, OutHideHUD, OutDisableMovement, OutDisableTurning); } + void SetPlayerDefaults(APawn* PlayerPawn) { NativeCall(this, "AGameMode.SetPlayerDefaults", PlayerPawn); } + void Logout(AController* Exiting) { NativeCall(this, "AGameMode.Logout", Exiting); } void InitGameState() { NativeCall(this, "AGameMode.InitGameState"); } - AActor * FindPlayerStart(AController * Player, FString * IncomingName) { return NativeCall(this, "AGameMode.FindPlayerStart", Player, IncomingName); } + AActor* FindPlayerStart(AController* Player, FString* IncomingName) { return NativeCall(this, "AGameMode.FindPlayerStart", Player, IncomingName); } void PreInitializeComponents() { NativeCall(this, "AGameMode.PreInitializeComponents"); } - void RestartPlayer(AController * NewPlayer) { NativeCall(this, "AGameMode.RestartPlayer", NewPlayer); } + void RestartPlayer(AController* NewPlayer) { NativeCall(this, "AGameMode.RestartPlayer", NewPlayer); } void StartPlay() { NativeCall(this, "AGameMode.StartPlay"); } void HandleMatchIsWaitingToStart() { NativeCall(this, "AGameMode.HandleMatchIsWaitingToStart"); } bool ReadyToStartMatch() { return NativeCall(this, "AGameMode.ReadyToStartMatch"); } @@ -435,51 +619,52 @@ struct AGameMode void SetMatchState(FName NewState) { NativeCall(this, "AGameMode.SetMatchState", NewState); } void Tick(float DeltaSeconds) { NativeCall(this, "AGameMode.Tick", DeltaSeconds); } void ResetLevel() { NativeCall(this, "AGameMode.ResetLevel"); } - void HandleSeamlessTravelPlayer(AController ** C) { NativeCall(this, "AGameMode.HandleSeamlessTravelPlayer", C); } - void SetSeamlessTravelViewTarget(APlayerController * PC) { NativeCall(this, "AGameMode.SetSeamlessTravelViewTarget", PC); } - void ProcessServerTravel(FString * URL, bool bAbsolute) { NativeCall(this, "AGameMode.ProcessServerTravel", URL, bAbsolute); } - void GetSeamlessTravelActorList(bool bToEntry, TArray * ActorList) { NativeCall *>(this, "AGameMode.GetSeamlessTravelActorList", bToEntry, ActorList); } + void HandleSeamlessTravelPlayer(AController** C) { NativeCall(this, "AGameMode.HandleSeamlessTravelPlayer", C); } + void SetSeamlessTravelViewTarget(APlayerController* PC) { NativeCall(this, "AGameMode.SetSeamlessTravelViewTarget", PC); } + void ProcessServerTravel(FString* URL, bool bAbsolute) { NativeCall(this, "AGameMode.ProcessServerTravel", URL, bAbsolute); } + void GetSeamlessTravelActorList(bool bToEntry, TArray* ActorList) { NativeCall*>(this, "AGameMode.GetSeamlessTravelActorList", bToEntry, ActorList); } void SetBandwidthLimit(float AsyncIOBandwidthLimit) { NativeCall(this, "AGameMode.SetBandwidthLimit", AsyncIOBandwidthLimit); } - FString * InitNewPlayer(FString * result, APlayerController * NewPlayerController, TSharedPtr * UniqueId, FString * Options, FString * Portal) { return NativeCall *, FString *, FString *>(this, "AGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } - bool MustSpectate(APlayerController * NewPlayerController) { return NativeCall(this, "AGameMode.MustSpectate", NewPlayerController); } - APlayerController * Login(UPlayer * NewPlayer, FString * Portal, FString * Options, TSharedPtr * UniqueId, FString * ErrorMessage) { return NativeCall *, FString *>(this, "AGameMode.Login", NewPlayer, Portal, Options, UniqueId, ErrorMessage); } + FString* InitNewPlayer(FString* result, APlayerController* NewPlayerController, TSharedPtr* UniqueId, FString* Options, FString* Portal) { return NativeCall*, FString*, FString*>(this, "AGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } + bool MustSpectate(APlayerController* NewPlayerController) { return NativeCall(this, "AGameMode.MustSpectate", NewPlayerController); } + APlayerController* Login(UPlayer* NewPlayer, FString* Portal, FString* Options, TSharedPtr* UniqueId, FString* ErrorMessage) { return NativeCall*, FString*>(this, "AGameMode.Login", NewPlayer, Portal, Options, UniqueId, ErrorMessage); } void Reset() { NativeCall(this, "AGameMode.Reset"); } - void RemovePlayerControllerFromPlayerCount(APlayerController * PC) { NativeCall(this, "AGameMode.RemovePlayerControllerFromPlayerCount", PC); } + void RemovePlayerControllerFromPlayerCount(APlayerController* PC) { NativeCall(this, "AGameMode.RemovePlayerControllerFromPlayerCount", PC); } int GetNumPlayers() { return NativeCall(this, "AGameMode.GetNumPlayers"); } void ClearPause() { NativeCall(this, "AGameMode.ClearPause"); } - bool GrabOption(FString * Options, FString * Result) { return NativeCall(this, "AGameMode.GrabOption", Options, Result); } - void GetKeyValue(FString * Pair, FString * Key, FString * Value) { NativeCall(this, "AGameMode.GetKeyValue", Pair, Key, Value); } - FString * ParseOption(FString * result, FString * Options, FString * InKey) { return NativeCall(this, "AGameMode.ParseOption", result, Options, InKey); } - bool HasOption(FString * Options, FString * InKey) { return NativeCall(this, "AGameMode.HasOption", Options, InKey); } - FString * GetDefaultGameClassPath(FString * result, FString * MapName, FString * Options, FString * Portal) { return NativeCall(this, "AGameMode.GetDefaultGameClassPath", result, MapName, Options, Portal); } - TSubclassOf * GetGameSessionClass(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "AGameMode.GetGameSessionClass", result); } - APlayerController * ProcessClientTravel(FString * FURL, FGuid NextMapGuid, bool bSeamless, bool bAbsolute) { return NativeCall(this, "AGameMode.ProcessClientTravel", FURL, NextMapGuid, bSeamless, bAbsolute); } - void PreLogin(FString * Options, FString * Address, TSharedPtr * UniqueId, FString * authToken, FString * ErrorMessage) { NativeCall *, FString *, FString *>(this, "AGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage); } - void RemoveConnectedPlayer(TSharedPtr * UniqueNetId) { NativeCall *>(this, "AGameMode.RemoveConnectedPlayer", UniqueNetId); } - APlayerController * SpawnPlayerController(FVector * SpawnLocation, FRotator * SpawnRotation) { return NativeCall(this, "AGameMode.SpawnPlayerController", SpawnLocation, SpawnRotation); } - TSubclassOf * GetDefaultPawnClassForController_Implementation(TSubclassOf * result, AController * InController) { return NativeCall *, TSubclassOf *, AController *>(this, "AGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } - APawn * SpawnDefaultPawnFor(AController * NewPlayer, AActor * StartSpot) { return NativeCall(this, "AGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } - void GenericPlayerInitialization(AController * C) { NativeCall(this, "AGameMode.GenericPlayerInitialization", C); } - void StartNewPlayer(APlayerController * NewPlayer) { NativeCall(this, "AGameMode.StartNewPlayer", NewPlayer); } - void ChangeName(AController * Other, FString * S, bool bNameChange) { NativeCall(this, "AGameMode.ChangeName", Other, S, bNameChange); } - void SendPlayer(APlayerController * aPlayer, FString * FURL) { NativeCall(this, "AGameMode.SendPlayer", aPlayer, FURL); } - void Broadcast(AActor * Sender, FString * Msg, FName Type) { NativeCall(this, "AGameMode.Broadcast", Sender, Msg, Type); } - bool ShouldSpawnAtStartSpot_Implementation(AController * Player) { return NativeCall(this, "AGameMode.ShouldSpawnAtStartSpot_Implementation", Player); } - void AddPlayerStart(APlayerStart * NewPlayerStart) { NativeCall(this, "AGameMode.AddPlayerStart", NewPlayerStart); } - void RemovePlayerStart(APlayerStart * RemovedPlayerStart) { NativeCall(this, "AGameMode.RemovePlayerStart", RemovedPlayerStart); } - AActor * ChoosePlayerStart_Implementation(AController * Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart_Implementation", Player); } - bool PlayerCanRestart(APlayerController * Player) { return NativeCall(this, "AGameMode.PlayerCanRestart", Player); } - void UpdateGameplayMuteList(APlayerController * aPlayer) { NativeCall(this, "AGameMode.UpdateGameplayMuteList", aPlayer); } - bool AllowCheats(APlayerController * P) { return NativeCall(this, "AGameMode.AllowCheats", P); } - bool AllowPausing(APlayerController * PC) { return NativeCall(this, "AGameMode.AllowPausing", PC); } - void AddInactivePlayer(APlayerState * PlayerState, APlayerController * PC) { NativeCall(this, "AGameMode.AddInactivePlayer", PlayerState, PC); } - bool FindInactivePlayer(APlayerController * PC) { return NativeCall(this, "AGameMode.FindInactivePlayer", PC); } - void OverridePlayerState(APlayerController * PC, APlayerState * OldPlayerState) { NativeCall(this, "AGameMode.OverridePlayerState", PC, OldPlayerState); } + bool GrabOption(FString* Options, FString* Result) { return NativeCall(this, "AGameMode.GrabOption", Options, Result); } + void GetKeyValue(FString* Pair, FString* Key, FString* Value) { NativeCall(this, "AGameMode.GetKeyValue", Pair, Key, Value); } + FString* ParseOption(FString* result, FString* Options, FString* InKey) { return NativeCall(this, "AGameMode.ParseOption", result, Options, InKey); } + bool HasOption(FString* Options, FString* InKey) { return NativeCall(this, "AGameMode.HasOption", Options, InKey); } + int GetIntOption(FString* Options, FString* ParseString, int CurrentValue) { return NativeCall(this, "AGameMode.GetIntOption", Options, ParseString, CurrentValue); } + FString* GetDefaultGameClassPath(FString* result, FString* MapName, FString* Options, FString* Portal) { return NativeCall(this, "AGameMode.GetDefaultGameClassPath", result, MapName, Options, Portal); } + TSubclassOf* GetGameSessionClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "AGameMode.GetGameSessionClass", result); } + APlayerController* ProcessClientTravel(FString* FURL, FGuid NextMapGuid, bool bSeamless, bool bAbsolute) { return NativeCall(this, "AGameMode.ProcessClientTravel", FURL, NextMapGuid, bSeamless, bAbsolute); } + void PreLogin(FString* Options, FString* Address, TSharedPtr* UniqueId, FString* authToken, FString* ErrorMessage) { NativeCall*, FString*, FString*>(this, "AGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage); } + void RemoveConnectedPlayer(TSharedPtr* UniqueNetId) { NativeCall*>(this, "AGameMode.RemoveConnectedPlayer", UniqueNetId); } + APlayerController* SpawnPlayerController(FVector* SpawnLocation, FRotator* SpawnRotation) { return NativeCall(this, "AGameMode.SpawnPlayerController", SpawnLocation, SpawnRotation); } + TSubclassOf* GetDefaultPawnClassForController_Implementation(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } + APawn* SpawnDefaultPawnFor(AController* NewPlayer, AActor* StartSpot) { return NativeCall(this, "AGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } + void GenericPlayerInitialization(AController* C) { NativeCall(this, "AGameMode.GenericPlayerInitialization", C); } + void StartNewPlayer(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.StartNewPlayer", NewPlayer); } + void ChangeName(AController* Other, FString* S, bool bNameChange) { NativeCall(this, "AGameMode.ChangeName", Other, S, bNameChange); } + void SendPlayer(APlayerController* aPlayer, FString* FURL) { NativeCall(this, "AGameMode.SendPlayer", aPlayer, FURL); } + void Broadcast(AActor* Sender, FString* Msg, FName Type) { NativeCall(this, "AGameMode.Broadcast", Sender, Msg, Type); } + bool ShouldSpawnAtStartSpot_Implementation(AController* Player) { return NativeCall(this, "AGameMode.ShouldSpawnAtStartSpot_Implementation", Player); } + void AddPlayerStart(APlayerStart* NewPlayerStart) { NativeCall(this, "AGameMode.AddPlayerStart", NewPlayerStart); } + void RemovePlayerStart(APlayerStart* RemovedPlayerStart) { NativeCall(this, "AGameMode.RemovePlayerStart", RemovedPlayerStart); } + AActor* ChoosePlayerStart_Implementation(AController* Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart_Implementation", Player); } + bool PlayerCanRestart(APlayerController* Player) { return NativeCall(this, "AGameMode.PlayerCanRestart", Player); } + void UpdateGameplayMuteList(APlayerController* aPlayer) { NativeCall(this, "AGameMode.UpdateGameplayMuteList", aPlayer); } + bool AllowPausing(APlayerController* PC) { return NativeCall(this, "AGameMode.AllowPausing", PC); } + void AddInactivePlayer(APlayerState* PlayerState, APlayerController* PC) { NativeCall(this, "AGameMode.AddInactivePlayer", PlayerState, PC); } + bool FindInactivePlayer(APlayerController* PC) { return NativeCall(this, "AGameMode.FindInactivePlayer", PC); } + void OverridePlayerState(APlayerController* PC, APlayerState* OldPlayerState) { NativeCall(this, "AGameMode.OverridePlayerState", PC, OldPlayerState); } void PostSeamlessTravel() { NativeCall(this, "AGameMode.PostSeamlessTravel"); } - static FString * StaticGetFullGameClassName(FString * result, FString * Str) { return NativeCall(nullptr, "AGameMode.StaticGetFullGameClassName", result, Str); } + static FString* StaticGetFullGameClassName(FString* result, FString* Str) { return NativeCall(nullptr, "AGameMode.StaticGetFullGameClassName", result, Str); } static void StaticRegisterNativesAGameMode() { NativeCall(nullptr, "AGameMode.StaticRegisterNativesAGameMode"); } - AActor * ChoosePlayerStart(AController * Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart", Player); } - void K2_PostLogin(APlayerController * NewPlayer) { NativeCall(this, "AGameMode.K2_PostLogin", NewPlayer); } + AActor* ChoosePlayerStart(AController* Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart", Player); } + TSubclassOf* GetDefaultPawnClassForController(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AGameMode.GetDefaultPawnClassForController", result, InController); } + void K2_PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.K2_PostLogin", NewPlayer); } }; struct AShooterGameMode : AGameMode @@ -487,23 +672,34 @@ struct AShooterGameMode : AGameMode int& LastRepopulationIndexToCheckField() { return *GetNativePointerField(this, "AShooterGameMode.LastRepopulationIndexToCheck"); } FString& AlarmNotificationKeyField() { return *GetNativePointerField(this, "AShooterGameMode.AlarmNotificationKey"); } FString& AlarmNotificationURLField() { return *GetNativePointerField(this, "AShooterGameMode.AlarmNotificationURL"); } + TArray>& PendingStructureDestroysField() { return *GetNativePointerField>*>(this, "AShooterGameMode.PendingStructureDestroys"); } + TSet, FDefaultSetAllocator>& AllowedAdminIPsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.AllowedAdminIPs"); } FString& BanFileNameField() { return *GetNativePointerField(this, "AShooterGameMode.BanFileName"); } TMap >& BannedMapField() { return *GetNativePointerField >*>(this, "AShooterGameMode.BannedMap"); } long double& LastTimeCheckedForSaveBackupField() { return *GetNativePointerField(this, "AShooterGameMode.LastTimeCheckedForSaveBackup"); } int& LastDayOfYearBackedUpField() { return *GetNativePointerField(this, "AShooterGameMode.LastDayOfYearBackedUp"); } long double& TimeLastStartedDoingRemoteBackupField() { return *GetNativePointerField(this, "AShooterGameMode.TimeLastStartedDoingRemoteBackup"); } bool& InitiatedArkTributeAvailabilityCheckField() { return *GetNativePointerField(this, "AShooterGameMode.InitiatedArkTributeAvailabilityCheck"); } - URCONServer * RCONSocketField() { return *GetNativePointerField(this, "AShooterGameMode.RCONSocket"); } + URCONServer* RCONSocketField() { return *GetNativePointerField(this, "AShooterGameMode.RCONSocket"); } FString& PlayersJoinNoCheckFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.PlayersJoinNoCheckFilename"); } FString& PlayersExclusiveCheckFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.PlayersExclusiveCheckFilename"); } + UShooterCheatManager* GlobalCommandsCheatManagerField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalCommandsCheatManager"); } + long double& LastUpdatedLoginLocksTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastUpdatedLoginLocksTime"); } + long double& LastLoginLocksConnectedTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastLoginLocksConnectedTime"); } + FString& CheckGlobalEnablesURLField() { return *GetNativePointerField(this, "AShooterGameMode.CheckGlobalEnablesURL"); } int& TerrainGeneratorVersionField() { return *GetNativePointerField(this, "AShooterGameMode.TerrainGeneratorVersion"); } TArray& PlayersJoinNoCheckField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayersJoinNoCheck"); } TArray& PlayersExclusiveListField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayersExclusiveList"); } - void * GameBackupPipeReadField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeRead"); } - void * GameBackupPipeWriteField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeWrite"); } + void* GameBackupPipeReadField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeRead"); } + void* GameBackupPipeWriteField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeWrite"); } TSet, FDefaultSetAllocator>& TribesIdsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.TribesIds"); } TMap >& PlayersIdsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PlayersIds"); } TMap >& SteamIdsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.SteamIds"); } + bool& bGlobalDisableLoginLockCheckField() { return *GetNativePointerField(this, "AShooterGameMode.bGlobalDisableLoginLockCheck"); } + bool& bTempDisableLoginLockCheckField() { return *GetNativePointerField(this, "AShooterGameMode.bTempDisableLoginLockCheck"); } + FString& MyServerIdField() { return *GetNativePointerField(this, "AShooterGameMode.MyServerId"); } + TArray& PendingLoginLockReleasesField() { return *GetNativePointerField*>(this, "AShooterGameMode.PendingLoginLockReleases"); } + TMap >& ActiveProfilesSavingField() { return *GetNativePointerField >*>(this, "AShooterGameMode.ActiveProfilesSaving"); } FString& LaunchOptionsField() { return *GetNativePointerField(this, "AShooterGameMode.LaunchOptions"); } TArray& TribesDataField() { return *GetNativePointerField*>(this, "AShooterGameMode.TribesData"); } FString& PGMapNameField() { return *GetNativePointerField(this, "AShooterGameMode.PGMapName"); } @@ -519,8 +715,14 @@ struct AShooterGameMode : AGameMode float& DifficultyValueMaxField() { return *GetNativePointerField(this, "AShooterGameMode.DifficultyValueMax"); } float& ProximityRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.ProximityRadius"); } float& ProximityRadiusUnconsiousScaleField() { return *GetNativePointerField(this, "AShooterGameMode.ProximityRadiusUnconsiousScale"); } + float& YellingRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.YellingRadius"); } + float& WhisperRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.WhisperRadius"); } + unsigned int& VivoxAttenuationModelField() { return *GetNativePointerField(this, "AShooterGameMode.VivoxAttenuationModel"); } + float& VivoxMinDistanceField() { return *GetNativePointerField(this, "AShooterGameMode.VivoxMinDistance"); } + float& VivoxRolloffField() { return *GetNativePointerField(this, "AShooterGameMode.VivoxRolloff"); } TSubclassOf& CheatClassField() { return *GetNativePointerField*>(this, "AShooterGameMode.CheatClass"); } bool& bIsOfficialServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsOfficialServer"); } + bool& bIsConsoleUnOfficialPCServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsConsoleUnOfficialPCServer"); } bool& bServerAllowArkDownloadField() { return *GetNativePointerField(this, "AShooterGameMode.bServerAllowArkDownload"); } bool& bServerAllowThirdPersonPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.bServerAllowThirdPersonPlayer"); } bool& bUseExclusiveListField() { return *GetNativePointerField(this, "AShooterGameMode.bUseExclusiveList"); } @@ -539,6 +741,7 @@ struct AShooterGameMode : AGameMode bool& bClampResourceHarvestDamageField() { return *GetNativePointerField(this, "AShooterGameMode.bClampResourceHarvestDamage"); } bool& bPreventStructurePaintingField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventStructurePainting"); } bool& bAllowCaveBuildingPvEField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCaveBuildingPvE"); } + bool& bAllowCaveBuildingPvPField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCaveBuildingPvP"); } bool& bAdminLoggingField() { return *GetNativePointerField(this, "AShooterGameMode.bAdminLogging"); } bool& bPvPStructureDecayField() { return *GetNativePointerField(this, "AShooterGameMode.bPvPStructureDecay"); } bool& bAutoDestroyStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoDestroyStructures"); } @@ -562,8 +765,17 @@ struct AShooterGameMode : AGameMode bool& bPreventSpawnAnimationsField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventSpawnAnimations"); } bool& bIsLegacyServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsLegacyServer"); } bool& bIdlePlayerKickAllowedField() { return *GetNativePointerField(this, "AShooterGameMode.bIdlePlayerKickAllowed"); } + bool& bEnableVictoryCoreDupeCheckField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableVictoryCoreDupeCheck"); } + bool& bIgnoreLimitMaxStructuresInRangeTypeFlagField() { return *GetNativePointerField(this, "AShooterGameMode.bIgnoreLimitMaxStructuresInRangeTypeFlag"); } + bool& bEnableOfficialOnlyVersioningCodeField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableOfficialOnlyVersioningCode"); } + bool& bEnableCryopodNerfField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableCryopodNerf"); } int& TheMaxStructuresInRangeField() { return *GetNativePointerField(this, "AShooterGameMode.TheMaxStructuresInRange"); } int& MaxStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.MaxStructuresInSmallRadius"); } + bool& bEnableCryoSicknessPVEField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableCryoSicknessPVE"); } + float& CryopodNerfDamageMultField() { return *GetNativePointerField(this, "AShooterGameMode.CryopodNerfDamageMult"); } + float& CryopodNerfDurationField() { return *GetNativePointerField(this, "AShooterGameMode.CryopodNerfDuration"); } + bool& bEnableMeshBitingProtectionField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableMeshBitingProtection"); } + float& CryopodNerfIncomingDamageMultPercentField() { return *GetNativePointerField(this, "AShooterGameMode.CryopodNerfIncomingDamageMultPercent"); } int& RCONPortField() { return *GetNativePointerField(this, "AShooterGameMode.RCONPort"); } float& DayCycleSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameMode.DayCycleSpeedScale"); } float& NightTimeSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameMode.NightTimeSpeedScale"); } @@ -587,6 +799,11 @@ struct AShooterGameMode : AGameMode float& XPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.XPMultiplier"); } FName& ActiveEventField() { return *GetNativePointerField(this, "AShooterGameMode.ActiveEvent"); } float& TribeNameChangeCooldownField() { return *GetNativePointerField(this, "AShooterGameMode.TribeNameChangeCooldown"); } + float& PlatformSaddleBuildAreaBoundsMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlatformSaddleBuildAreaBoundsMultiplier"); } + bool& bAlwaysAllowStructurePickupField() { return *GetNativePointerField(this, "AShooterGameMode.bAlwaysAllowStructurePickup"); } + float& StructurePickupTimeAfterPlacementField() { return *GetNativePointerField(this, "AShooterGameMode.StructurePickupTimeAfterPlacement"); } + float& StructurePickupHoldDurationField() { return *GetNativePointerField(this, "AShooterGameMode.StructurePickupHoldDuration"); } + bool& bAllowIntegratedSPlusStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowIntegratedSPlusStructures"); } bool& bAllowHideDamageSourceFromLogsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowHideDamageSourceFromLogs"); } float& KillXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.KillXPMultiplier"); } float& HarvestXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HarvestXPMultiplier"); } @@ -603,7 +820,7 @@ struct AShooterGameMode : AGameMode TArray& ArkGameCodesField() { return *GetNativePointerField*>(this, "AShooterGameMode.ArkGameCodes"); } bool& bIsCurrentlyRequestingKeyField() { return *GetNativePointerField(this, "AShooterGameMode.bIsCurrentlyRequestingKey"); } FString& SaveDirectoryNameField() { return *GetNativePointerField(this, "AShooterGameMode.SaveDirectoryName"); } - TArray PlayerDatasField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDatas"); } + TArray PlayerDatasField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDatas"); } int& NPCZoneManagerModField() { return *GetNativePointerField(this, "AShooterGameMode.NPCZoneManagerMod"); } bool& bPopulatingSpawnZonesField() { return *GetNativePointerField(this, "AShooterGameMode.bPopulatingSpawnZones"); } bool& bRestartedAPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.bRestartedAPlayer"); } @@ -646,8 +863,17 @@ struct AShooterGameMode : AGameMode TArray& LevelExperienceRampOverridesField() { return *GetNativePointerField*>(this, "AShooterGameMode.LevelExperienceRampOverrides"); } TArray& OverridePlayerLevelEngramPointsField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverridePlayerLevelEngramPoints"); } TArray& ExcludeItemIndicesField() { return *GetNativePointerField*>(this, "AShooterGameMode.ExcludeItemIndices"); } + TArray& OverrideEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideEngramEntries"); } + TArray& OverrideNamedEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideNamedEngramEntries"); } TArray& EngramEntryAutoUnlocksField() { return *GetNativePointerField*>(this, "AShooterGameMode.EngramEntryAutoUnlocks"); } TArray& PreventDinoTameClassNamesField() { return *GetNativePointerField*>(this, "AShooterGameMode.PreventDinoTameClassNames"); } + TArray& DinoSpawnWeightMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoSpawnWeightMultipliers"); } + TArray& DinoClassResistanceMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoClassResistanceMultipliers"); } + TArray& TamedDinoClassResistanceMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.TamedDinoClassResistanceMultipliers"); } + TArray& DinoClassDamageMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoClassDamageMultipliers"); } + TArray& TamedDinoClassDamageMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.TamedDinoClassDamageMultipliers"); } + TArray& HarvestResourceItemAmountClassMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.HarvestResourceItemAmountClassMultipliers"); } + TArray& NPCReplacementsField() { return *GetNativePointerField*>(this, "AShooterGameMode.NPCReplacements"); } float& PvPZoneStructureDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PvPZoneStructureDamageMultiplier"); } bool& bOnlyAllowSpecifiedEngramsField() { return *GetNativePointerField(this, "AShooterGameMode.bOnlyAllowSpecifiedEngrams"); } int& OverrideMaxExperiencePointsPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.OverrideMaxExperiencePointsPlayer"); } @@ -723,7 +949,7 @@ struct AShooterGameMode : AGameMode bool& bTribeStoreCharacterConfigurationField() { return *GetNativePointerField(this, "AShooterGameMode.bTribeStoreCharacterConfiguration"); } TMap, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >& PvEActiveTribeWarsField() { return *GetNativePointerField, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >*>(this, "AShooterGameMode.PvEActiveTribeWars"); } TMap, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >& TribeAlliesField() { return *GetNativePointerField, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >*>(this, "AShooterGameMode.TribeAllies"); } - TMap > IDtoPlayerDatasField() { return *GetNativePointerField >*>(this, "AShooterGameMode.IDtoPlayerDatas"); } + TMap > IDtoPlayerDatasField() { return *GetNativePointerField >*>(this, "AShooterGameMode.IDtoPlayerDatas"); } int& MaxTribeLogsField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTribeLogs"); } int& MaxPersonalTamedDinosField() { return *GetNativePointerField(this, "AShooterGameMode.MaxPersonalTamedDinos"); } int& PersonalTamedDinosSaddleStructureCostField() { return *GetNativePointerField(this, "AShooterGameMode.PersonalTamedDinosSaddleStructureCost"); } @@ -745,14 +971,27 @@ struct AShooterGameMode : AGameMode bool& bOverideStructurePlatformPreventionField() { return *GetNativePointerField(this, "AShooterGameMode.bOverideStructurePlatformPrevention"); } bool& bAllowAnyoneBabyImprintCuddleField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowAnyoneBabyImprintCuddle"); } bool& bDisableImprintDinoBuffField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableImprintDinoBuff"); } - bool& bShowFloatingDamageTextField() { return *GetNativePointerField(this, "AShooterGameMode.bShowFloatingDamageText"); } bool& bOnlyDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bOnlyDecayUnsnappedCoreStructures"); } bool& bFastDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bFastDecayUnsnappedCoreStructures"); } bool& bDestroyUnconnectedWaterPipesField() { return *GetNativePointerField(this, "AShooterGameMode.bDestroyUnconnectedWaterPipes"); } bool& bAllowCrateSpawnsOnTopOfStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCrateSpawnsOnTopOfStructures"); } bool& bNotifyAdminCommandsInChatField() { return *GetNativePointerField(this, "AShooterGameMode.bNotifyAdminCommandsInChat"); } bool& bRandomSupplyCratePointsField() { return *GetNativePointerField(this, "AShooterGameMode.bRandomSupplyCratePoints"); } + bool& bOfficialDisableGenesisMissionsField() { return *GetNativePointerField(this, "AShooterGameMode.bOfficialDisableGenesisMissions"); } float& PreventOfflinePvPIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.PreventOfflinePvPInterval"); } + bool& bShowFloatingDamageTextField() { return *GetNativePointerField(this, "AShooterGameMode.bShowFloatingDamageText"); } + bool& bAllowTekSuitPowersInGenesisField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowTekSuitPowersInGenesis"); } + FString& CurrentMerticsURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentMerticsURL"); } + FString& CurrentNotificationURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentNotificationURL"); } + FString& CurrentAdminCommandTrackingAPIKeyField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentAdminCommandTrackingAPIKey"); } + FString& CurrentAdminCommandTrackingURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentAdminCommandTrackingURL"); } + TArray& OverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideItemCraftingCosts"); } + TArray& ConfigOverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideItemCraftingCosts"); } + TArray& ConfigOverrideItemMaxQuantityField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideItemMaxQuantity"); } + TArray& ConfigOverrideSupplyCrateItemsField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideSupplyCrateItems"); } + TArray& ConfigOverrideNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideNPCSpawnEntriesContainer"); } + TArray& ConfigAddNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigAddNPCSpawnEntriesContainer"); } + TArray& ConfigSubtractNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigSubtractNPCSpawnEntriesContainer"); } float& BabyImprintingStatScaleMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyImprintingStatScaleMultiplier"); } float& BabyCuddleIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyCuddleIntervalMultiplier"); } float& BabyCuddleGracePeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyCuddleGracePeriodMultiplier"); } @@ -760,10 +999,12 @@ struct AShooterGameMode : AGameMode float& HairGrowthSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HairGrowthSpeedMultiplier"); } bool& bPreventDiseasesField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventDiseases"); } bool& bNonPermanentDiseasesField() { return *GetNativePointerField(this, "AShooterGameMode.bNonPermanentDiseases"); } + UAllClustersInventory* AllClustersInventoryField() { return *GetNativePointerField(this, "AShooterGameMode.AllClustersInventory"); } int& SaveForceRespawnDinosVersionField() { return *GetNativePointerField(this, "AShooterGameMode.SaveForceRespawnDinosVersion"); } unsigned __int64& ServerIDField() { return *GetNativePointerField(this, "AShooterGameMode.ServerID"); } int& LoadForceRespawnDinosVersionField() { return *GetNativePointerField(this, "AShooterGameMode.LoadForceRespawnDinosVersion"); } bool& bIsLoadedServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsLoadedServer"); } + TMap >& TributePlayerTribeInfosField() { return *GetNativePointerField >*>(this, "AShooterGameMode.TributePlayerTribeInfos"); } TArray& SupportedSpawnRegionsField() { return *GetNativePointerField*>(this, "AShooterGameMode.SupportedSpawnRegions"); } bool& bServerUseDinoListField() { return *GetNativePointerField(this, "AShooterGameMode.bServerUseDinoList"); } float& MaxAllowedRespawnIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.MaxAllowedRespawnInterval"); } @@ -781,10 +1022,12 @@ struct AShooterGameMode : AGameMode float& FastDecayIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.FastDecayInterval"); } bool& bUseSingleplayerSettingsField() { return *GetNativePointerField(this, "AShooterGameMode.bUseSingleplayerSettings"); } bool& bUseCorpseLocatorField() { return *GetNativePointerField(this, "AShooterGameMode.bUseCorpseLocator"); } + bool& bDisableGenesisMissionsField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableGenesisMissions"); } bool& bDisableStructurePlacementCollisionField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableStructurePlacementCollision"); } bool& bForceUseInventoryAppendsField() { return *GetNativePointerField(this, "AShooterGameMode.bForceUseInventoryAppends"); } float& SupplyCrateLootQualityMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.SupplyCrateLootQualityMultiplier"); } float& FishingLootQualityMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.FishingLootQualityMultiplier"); } + float& ItemStackSizeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.ItemStackSizeMultiplier"); } float& CraftingSkillBonusMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CraftingSkillBonusMultiplier"); } bool& bAllowPlatformSaddleMultiFloorsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowPlatformSaddleMultiFloors"); } bool& bAllowUnlimitedRespecsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowUnlimitedRespecs"); } @@ -806,9 +1049,12 @@ struct AShooterGameMode : AGameMode bool& bForceAllowAllStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllowAllStructures"); } bool& bForceAllowAscensionItemDownloadsField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllowAscensionItemDownloads"); } bool& bShowCreativeModeField() { return *GetNativePointerField(this, "AShooterGameMode.bShowCreativeMode"); } + float& LimitNonPlayerDroppedItemsRangeField() { return *GetNativePointerField(this, "AShooterGameMode.LimitNonPlayerDroppedItemsRange"); } + int& LimitNonPlayerDroppedItemsCountField() { return *GetNativePointerField(this, "AShooterGameMode.LimitNonPlayerDroppedItemsCount"); } float& GlobalPoweredBatteryDurabilityDecreasePerSecondField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalPoweredBatteryDurabilityDecreasePerSecond"); } float& SingleplayerSettingsCorpseLifespanMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.SingleplayerSettingsCorpseLifespanMultiplier"); } float& UseCorpseLifeSpanMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.UseCorpseLifeSpanMultiplier"); } + float& TimePeriodToHideDisconnectedPlayersField() { return *GetNativePointerField(this, "AShooterGameMode.TimePeriodToHideDisconnectedPlayers"); } bool& bUseBPPreSpawnedDinoField() { return *GetNativePointerField(this, "AShooterGameMode.bUseBPPreSpawnedDino"); } float& PreventOfflinePvPConnectionInvincibleIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.PreventOfflinePvPConnectionInvincibleInterval"); } float& TamedDinoCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoCharacterFoodDrainMultiplier"); } @@ -817,113 +1063,174 @@ struct AShooterGameMode : AGameMode float& PassiveTameIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PassiveTameIntervalMultiplier"); } float& TamedDinoTorporDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoTorporDrainMultiplier"); } bool& bDisableWeatherFogField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableWeatherFog"); } + float& MeshCheckingRayDistanceField() { return *GetNativePointerField(this, "AShooterGameMode.MeshCheckingRayDistance"); } + float& MeshCheckingSubdivisonsField() { return *GetNativePointerField(this, "AShooterGameMode.MeshCheckingSubdivisons"); } + float& MeshCheckingPercentageToFailField() { return *GetNativePointerField(this, "AShooterGameMode.MeshCheckingPercentageToFail"); } + bool& bIgnoreStructuresPreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameMode.bIgnoreStructuresPreventionVolumes"); } + bool& bGenesisUseStructuresPreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameMode.bGenesisUseStructuresPreventionVolumes"); } + bool& bServerEnableMeshCheckingField() { return *GetNativePointerField(this, "AShooterGameMode.bServerEnableMeshChecking"); } FString& ArkServerMetricsKeyField() { return *GetNativePointerField(this, "AShooterGameMode.ArkServerMetricsKey"); } FString& ArkServerMetricsURLField() { return *GetNativePointerField(this, "AShooterGameMode.ArkServerMetricsURL"); } + TArray& CachedArkMetricsPayloadsField() { return *GetNativePointerField*>(this, "AShooterGameMode.CachedArkMetricsPayloads"); } + bool& bCollectArkMetricsField() { return *GetNativePointerField(this, "AShooterGameMode.bCollectArkMetrics"); } bool& bLogChatMessagesField() { return *GetNativePointerField(this, "AShooterGameMode.bLogChatMessages"); } int& ChatLogFlushIntervalSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.ChatLogFlushIntervalSeconds"); } int& ChatLogFileSplitIntervalSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.ChatLogFileSplitIntervalSeconds"); } int& ChatLogMaxAgeInDaysField() { return *GetNativePointerField(this, "AShooterGameMode.ChatLogMaxAgeInDays"); } + TArray>& ChatMessageBufferField() { return *GetNativePointerField>*>(this, "AShooterGameMode.ChatMessageBuffer"); } FString& CurrentChatLogFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentChatLogFilename"); } FDateTime& LastChatLogFlushTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastChatLogFlushTime"); } FDateTime& LastChatLogFileCreateTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastChatLogFileCreateTime"); } + bool& bDamageEventLoggingEnabledField() { return *GetNativePointerField(this, "AShooterGameMode.bDamageEventLoggingEnabled"); } + bool& bIsGenesisMapField() { return *GetNativePointerField(this, "AShooterGameMode.bIsGenesisMap"); } + TArray>& DamageEventBufferField() { return *GetNativePointerField>*>(this, "AShooterGameMode.DamageEventBuffer"); } + FString& CurrentDamageEventLogFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentDamageEventLogFilename"); } + TMap >& MissionTagToLeaderboardEntryField() { return *GetNativePointerField >*>(this, "AShooterGameMode.MissionTagToLeaderboardEntry"); } FName& UseStructurePreventionVolumeTagField() { return *GetNativePointerField(this, "AShooterGameMode.UseStructurePreventionVolumeTag"); } bool& bHasCovertedToStoreField() { return *GetNativePointerField(this, "AShooterGameMode.bHasCovertedToStore"); } bool& bAllowStoredDatasField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowStoredDatas"); } + FDataStore& TribeDataStoreField() { return *GetNativePointerField*>(this, "AShooterGameMode.TribeDataStore"); } + FDataStore& PlayerDataStoreField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDataStore"); } + AOceanDinoManager* TheOceanDinoManagerField() { return *GetNativePointerField(this, "AShooterGameMode.TheOceanDinoManager"); } + bool& bCheckedForOceanDinoManagerField() { return *GetNativePointerField(this, "AShooterGameMode.bCheckedForOceanDinoManager"); } + bool& bParseServerToJsonField() { return *GetNativePointerField(this, "AShooterGameMode.bParseServerToJson"); } + bool& bAllowFlyerSpeedLevelingField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowFlyerSpeedLeveling"); } // Functions - bool AllowAddXP(UPrimalCharacterStatusComponent * forComp) { return NativeCall(this, "AShooterGameMode.AllowAddXP", forComp); } + static UClass* StaticClass() { return NativeCall(nullptr, "AShooterGameMode.StaticClass"); } + bool AllowAddXP(UPrimalCharacterStatusComponent* forComp) { return NativeCall(this, "AShooterGameMode.AllowAddXP", forComp); } void CheckArkTributeAvailability() { NativeCall(this, "AShooterGameMode.CheckArkTributeAvailability"); } void ArkTributeAvailabilityRequestComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.ArkTributeAvailabilityRequestComplete", HttpRequest, HttpResponse, bSucceeded); } - void InitGame(FString * MapName, FString * Options, FString * ErrorMessage) { NativeCall(this, "AShooterGameMode.InitGame", MapName, Options, ErrorMessage); } + void AddToPendingStructureDestroys(APrimalStructure* theStructure) { NativeCall(this, "AShooterGameMode.AddToPendingStructureDestroys", theStructure); } + void IncrementPreLoginMetric() { NativeCall(this, "AShooterGameMode.IncrementPreLoginMetric"); } + void InitGame(FString* MapName, FString* Options, FString* ErrorMessage) { NativeCall(this, "AShooterGameMode.InitGame", MapName, Options, ErrorMessage); } void InitOptionBool(FString Commandline, FString Section, FString Option, bool bDefaultValue) { NativeCall(this, "AShooterGameMode.InitOptionBool", Commandline, Section, Option, bDefaultValue); } void InitOptionString(FString Commandline, FString Section, FString Option) { NativeCall(this, "AShooterGameMode.InitOptionString", Commandline, Section, Option); } void InitOptionFloat(FString Commandline, FString Section, FString Option, float CurrentValue) { NativeCall(this, "AShooterGameMode.InitOptionFloat", Commandline, Section, Option, CurrentValue); } - bool GetServerSettingsFloat(FString * Keyvalue, float * OutFloat) { return NativeCall(this, "AShooterGameMode.GetServerSettingsFloat", Keyvalue, OutFloat); } + bool GetServerSettingsFloat(FString* Keyvalue, float* OutFloat) { return NativeCall(this, "AShooterGameMode.GetServerSettingsFloat", Keyvalue, OutFloat); } void SingleplayerSetupValues() { NativeCall(this, "AShooterGameMode.SingleplayerSetupValues"); } void InitOptionInteger(FString Commandline, FString Section, FString Option, int CurrentValue) { NativeCall(this, "AShooterGameMode.InitOptionInteger", Commandline, Section, Option, CurrentValue); } - bool GetBoolOption(FString * Options, FString * ParseString, bool CurrentValue) { return NativeCall(this, "AShooterGameMode.GetBoolOption", Options, ParseString, CurrentValue); } - float GetFloatOption(FString * Options, FString * ParseString, float CurrentValue) { return NativeCall(this, "AShooterGameMode.GetFloatOption", Options, ParseString, CurrentValue); } - int GetIntOption(FString * Options, FString * ParseString, int CurrentValue) { return NativeCall(this, "AShooterGameMode.GetIntOption", Options, ParseString, CurrentValue); } + bool GetBoolOption(FString* Options, FString* ParseString, bool CurrentValue) { return NativeCall(this, "AShooterGameMode.GetBoolOption", Options, ParseString, CurrentValue); } + float GetFloatOption(FString* Options, FString* ParseString, float CurrentValue) { return NativeCall(this, "AShooterGameMode.GetFloatOption", Options, ParseString, CurrentValue); } + int GetIntOption(FString* Options, FString* ParseString, int CurrentValue) { return NativeCall(this, "AShooterGameMode.GetIntOption", Options, ParseString, CurrentValue); } void InitOptions(FString Options) { NativeCall(this, "AShooterGameMode.InitOptions", Options); } - bool GetBoolOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetBoolOptionIni", Section, OptionName); } + bool GetBoolOptionIni(FString Section, FString OptionName, bool bDefaultValue) { return NativeCall(this, "AShooterGameMode.GetBoolOptionIni", Section, OptionName, bDefaultValue); } float GetFloatOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetFloatOptionIni", Section, OptionName); } int GetIntOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetIntOptionIni", Section, OptionName); } - FString * GetStringOption(FString * result, FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetStringOption", result, Section, OptionName); } + FString* GetStringOption(FString* result, FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetStringOption", result, Section, OptionName); } void SaveWorld() { NativeCall(this, "AShooterGameMode.SaveWorld"); } void ClearSavesAndRestart() { NativeCall(this, "AShooterGameMode.ClearSavesAndRestart"); } bool LoadWorld() { return NativeCall(this, "AShooterGameMode.LoadWorld"); } - TSubclassOf * GetGameSessionClass(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "AShooterGameMode.GetGameSessionClass", result); } + TSubclassOf* GetGameSessionClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "AShooterGameMode.GetGameSessionClass", result); } + bool ReadyToStartMatch() { return NativeCall(this, "AShooterGameMode.ReadyToStartMatch"); } void HandleMatchHasStarted() { NativeCall(this, "AShooterGameMode.HandleMatchHasStarted"); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AShooterGameMode.EndPlay", EndPlayReason); } void HandleLeavingMap() { NativeCall(this, "AShooterGameMode.HandleLeavingMap"); } - void PreLogin(FString * Options, FString * Address, TSharedPtr * UniqueId, FString * authToken, FString * ErrorMessage) { NativeCall *, FString *, FString *>(this, "AShooterGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage); } - void PostLogin(APlayerController * NewPlayer) { NativeCall(this, "AShooterGameMode.PostLogin", NewPlayer); } - TArray * GetWhiteListedMap(TArray * result) { return NativeCall *, TArray *>(this, "AShooterGameMode.GetWhiteListedMap", result); } - void Killed(AController * Killer, AController * KilledPlayer, APawn * KilledPawn, UDamageType * DamageType) { NativeCall(this, "AShooterGameMode.Killed", Killer, KilledPlayer, KilledPawn, DamageType); } - TSubclassOf * GetDefaultPawnClassForController_Implementation(TSubclassOf * result, AController * InController) { return NativeCall *, TSubclassOf *, AController *>(this, "AShooterGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } - AActor * ChoosePlayerStart_Implementation(AController * Player) { return NativeCall(this, "AShooterGameMode.ChoosePlayerStart_Implementation", Player); } - bool IsSpawnpointPreferred(APlayerStart * SpawnPoint, AController * Player) { return NativeCall(this, "AShooterGameMode.IsSpawnpointPreferred", SpawnPoint, Player); } - bool IsFirstPlayerSpawn(APlayerController * NewPlayer) { return NativeCall(this, "AShooterGameMode.IsFirstPlayerSpawn", NewPlayer); } - void StartNewPlayer(APlayerController * NewPlayer) { NativeCall(this, "AShooterGameMode.StartNewPlayer", NewPlayer); } - void StartNewShooterPlayer(APlayerController * NewPlayer, bool bForceCreateNewPlayerData, bool bIsFromLogin, FPrimalPlayerCharacterConfigStruct * charConfig, UPrimalPlayerData * ArkPlayerData) { NativeCall(this, "AShooterGameMode.StartNewShooterPlayer", NewPlayer, bForceCreateNewPlayerData, bIsFromLogin, charConfig, ArkPlayerData); } - void HandleTransferCharacterDialogResult(bool bAccept, AShooterPlayerController * NewPlayer) { NativeCall(this, "AShooterGameMode.HandleTransferCharacterDialogResult", bAccept, NewPlayer); } - void Logout(AController * Exiting) { NativeCall(this, "AShooterGameMode.Logout", Exiting); } - FVector * GetTracedSpawnLocation(FVector * result, FVector * SpawnLoc, float CharHalfHeight) { return NativeCall(this, "AShooterGameMode.GetTracedSpawnLocation", result, SpawnLoc, CharHalfHeight); } - void SetMessageOfTheDay(FString * Message) { NativeCall(this, "AShooterGameMode.SetMessageOfTheDay", Message); } + void RequestFinishAndExitToMainMenu() { NativeCall(this, "AShooterGameMode.RequestFinishAndExitToMainMenu"); } + void PreLogin(FString* Options, FString* Address, TSharedPtr* UniqueId, FString* authToken, FString* ErrorMessage) { NativeCall*, FString*, FString*>(this, "AShooterGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage); } + bool ExtraPreLoginChecksBeforeWelcomePlayer(UNetConnection* Connection) { return NativeCall(this, "AShooterGameMode.ExtraPreLoginChecksBeforeWelcomePlayer", Connection); } + void PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.PostLogin", NewPlayer); } + void RemoveLoginLock(TSharedPtr* UniqueNetId) { NativeCall*>(this, "AShooterGameMode.RemoveLoginLock", UniqueNetId); } + TMap >* GetBannedMap(TMap >* result) { return NativeCall >*, TMap >*>(this, "AShooterGameMode.GetBannedMap", result); } + TArray* GetWhiteListedMap(TArray* result) { return NativeCall*, TArray*>(this, "AShooterGameMode.GetWhiteListedMap", result); } + void Killed(AController* Killer, AController* KilledPlayer, APawn* KilledPawn, UDamageType* DamageType) { NativeCall(this, "AShooterGameMode.Killed", Killer, KilledPlayer, KilledPawn, DamageType); } + float ModifyDamage(float Damage, AActor* DamagedActor, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "AShooterGameMode.ModifyDamage", Damage, DamagedActor, DamageEvent, EventInstigator, DamageCauser); } + bool CanDealDamage(APlayerStart* SpawnPoint, AController* Player) { return NativeCall(this, "AShooterGameMode.CanDealDamage", SpawnPoint, Player); } + TSubclassOf* GetDefaultPawnClassForController_Implementation(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AShooterGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } + AActor* ChoosePlayerStart_Implementation(AController* Player) { return NativeCall(this, "AShooterGameMode.ChoosePlayerStart_Implementation", Player); } + bool CheckJoinInProgress_Implementation(bool bIsFromLogin, APlayerController* NewPlayer) { return NativeCall(this, "AShooterGameMode.CheckJoinInProgress_Implementation", bIsFromLogin, NewPlayer); } + bool IsSpawnpointPreferred(APlayerStart* SpawnPoint, AController* Player) { return NativeCall(this, "AShooterGameMode.IsSpawnpointPreferred", SpawnPoint, Player); } + bool IsFirstPlayerSpawn(APlayerController* NewPlayer) { return NativeCall(this, "AShooterGameMode.IsFirstPlayerSpawn", NewPlayer); } + void IncrementNumDeaths(FString* PlayerDataID) { NativeCall(this, "AShooterGameMode.IncrementNumDeaths", PlayerDataID); } + int GetNumDeaths(FString* PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetNumDeaths", PlayerDataID); } + UPrimalPlayerData* GetPlayerData(FString* PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetPlayerData", PlayerDataID); } + void StartNewPlayer(APlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.StartNewPlayer", NewPlayer); } + void StartNewShooterPlayer(APlayerController* NewPlayer, bool bForceCreateNewPlayerData, bool bIsFromLogin, FPrimalPlayerCharacterConfigStruct* charConfig, UPrimalPlayerData* ArkPlayerData) { NativeCall(this, "AShooterGameMode.StartNewShooterPlayer", NewPlayer, bForceCreateNewPlayerData, bIsFromLogin, charConfig, ArkPlayerData); } + void HandleTransferCharacterDialogResult(bool bAccept, AShooterPlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.HandleTransferCharacterDialogResult", bAccept, NewPlayer); } + void Logout(AController* Exiting) { NativeCall(this, "AShooterGameMode.Logout", Exiting); } + FVector* GetTracedSpawnLocation(FVector* result, FVector* SpawnLoc, float CharHalfHeight) { return NativeCall(this, "AShooterGameMode.GetTracedSpawnLocation", result, SpawnLoc, CharHalfHeight); } + void SetMessageOfTheDay(FString* Message) { NativeCall(this, "AShooterGameMode.SetMessageOfTheDay", Message); } void ShowMessageOfTheDay() { NativeCall(this, "AShooterGameMode.ShowMessageOfTheDay"); } - APawn * SpawnDefaultPawnFor(AController * NewPlayer, AActor * StartSpot) { return NativeCall(this, "AShooterGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } - FPrimalPlayerCharacterConfigStruct * ValidateCharacterConfig(FPrimalPlayerCharacterConfigStruct * result, FPrimalPlayerCharacterConfigStruct * charConfig) { return NativeCall(this, "AShooterGameMode.ValidateCharacterConfig", result, charConfig); } - FString * GenerateProfileFileName(FString * result, FUniqueNetIdRepl * UniqueId, FString * NetworkAddresss, FString * PlayerName) { return NativeCall(this, "AShooterGameMode.GenerateProfileFileName", result, UniqueId, NetworkAddresss, PlayerName); } - UPrimalPlayerData * LoadPlayerData(AShooterPlayerState * PlayerState, bool bIsLoadingBackup) { return NativeCall(this, "AShooterGameMode.LoadPlayerData", PlayerState, bIsLoadingBackup); } - void DeletePlayerData(AShooterPlayerState * PlayerState) { NativeCall(this, "AShooterGameMode.DeletePlayerData", PlayerState); } - bool GetOrLoadTribeData(int TribeID, FTribeData * LoadedTribeData) { return NativeCall(this, "AShooterGameMode.GetOrLoadTribeData", TribeID, LoadedTribeData); } - bool LoadTribeData(int TribeID, FTribeData * LoadedTribeData, bool bIsLoadingBackup, bool bDontCheckDirtyTribeWar) { return NativeCall(this, "AShooterGameMode.LoadTribeData", TribeID, LoadedTribeData, bIsLoadingBackup, bDontCheckDirtyTribeWar); } - UPrimalPlayerData * GetPlayerDataFor(AShooterPlayerController * PC, bool * bCreatedNewPlayerData, bool bForceCreateNewPlayerData, FPrimalPlayerCharacterConfigStruct * charConfig, bool bAutoCreateNewData, bool bDontSaveNewData) { return NativeCall(this, "AShooterGameMode.GetPlayerDataFor", PC, bCreatedNewPlayerData, bForceCreateNewPlayerData, charConfig, bAutoCreateNewData, bDontSaveNewData); } + APawn* SpawnDefaultPawnFor(AController* NewPlayer, AActor* StartSpot) { return NativeCall(this, "AShooterGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } + FPrimalPlayerCharacterConfigStruct* ValidateCharacterConfig(FPrimalPlayerCharacterConfigStruct* result, FPrimalPlayerCharacterConfigStruct* charConfig) { return NativeCall(this, "AShooterGameMode.ValidateCharacterConfig", result, charConfig); } + FString* GenerateProfileFileName(FString* result, FUniqueNetIdRepl* UniqueId, FString* NetworkAddresss, FString* PlayerName) { return NativeCall(this, "AShooterGameMode.GenerateProfileFileName", result, UniqueId, NetworkAddresss, PlayerName); } + UPrimalPlayerData* LoadPlayerData(AShooterPlayerState* PlayerState, bool bIsLoadingBackup) { return NativeCall(this, "AShooterGameMode.LoadPlayerData", PlayerState, bIsLoadingBackup); } + void DeletePlayerData(AShooterPlayerState* PlayerState) { NativeCall(this, "AShooterGameMode.DeletePlayerData", PlayerState); } + bool GetOrLoadTribeData(int TribeID, FTribeData* LoadedTribeData) { return NativeCall(this, "AShooterGameMode.GetOrLoadTribeData", TribeID, LoadedTribeData); } + bool LoadTribeData(int TribeID, FTribeData* LoadedTribeData, bool bIsLoadingBackup, bool bDontCheckDirtyTribeWar) { return NativeCall(this, "AShooterGameMode.LoadTribeData", TribeID, LoadedTribeData, bIsLoadingBackup, bDontCheckDirtyTribeWar); } + UPrimalPlayerData* GetPlayerDataFor(AShooterPlayerController* PC, bool* bCreatedNewPlayerData, bool bForceCreateNewPlayerData, FPrimalPlayerCharacterConfigStruct* charConfig, bool bAutoCreateNewData, bool bDontSaveNewData) { return NativeCall(this, "AShooterGameMode.GetPlayerDataFor", PC, bCreatedNewPlayerData, bForceCreateNewPlayerData, charConfig, bAutoCreateNewData, bDontSaveNewData); } void CheckForRepopulation() { NativeCall(this, "AShooterGameMode.CheckForRepopulation"); } + void ForceRepopulateFoliageAtPoint(FVector AtPoint, float MaxRangeFromPoint, int MaxNumFoliages, TSubclassOf RepopulatedEmitter, FVector* StructureDownTraceVector, FVector* StructureUpTraceVector, bool bDontCheckForOverlaps, int TriggeredByTeamID, bool bForce) { NativeCall, FVector*, FVector*, bool, int, bool>(this, "AShooterGameMode.ForceRepopulateFoliageAtPoint", AtPoint, MaxRangeFromPoint, MaxNumFoliages, RepopulatedEmitter, StructureDownTraceVector, StructureUpTraceVector, bDontCheckForOverlaps, TriggeredByTeamID, bForce); } + void TickLoginLocks() { NativeCall(this, "AShooterGameMode.TickLoginLocks"); } + bool IsLoginLockDisabled() { return NativeCall(this, "AShooterGameMode.IsLoginLockDisabled"); } + void CheckGlobalEnables() { NativeCall(this, "AShooterGameMode.CheckGlobalEnables"); } + void HttpCheckGlobalEnablesComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.HttpCheckGlobalEnablesComplete", HttpRequest, HttpResponse, bSucceeded); } void Tick(float DeltaSeconds) { NativeCall(this, "AShooterGameMode.Tick", DeltaSeconds); } bool StartSaveBackup() { return NativeCall(this, "AShooterGameMode.StartSaveBackup"); } - void SendDatadogMetricEvent(FString * Title, FString * Message) { NativeCall(this, "AShooterGameMode.SendDatadogMetricEvent", Title, Message); } + void SendDatadogMetricEvent(FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.SendDatadogMetricEvent", Title, Message); } void TickSaveBackup() { NativeCall(this, "AShooterGameMode.TickSaveBackup"); } - unsigned __int64 AddNewTribe(AShooterPlayerState * PlayerOwner, FString * TribeName, FTribeGovernment * TribeGovernment) { return NativeCall(this, "AShooterGameMode.AddNewTribe", PlayerOwner, TribeName, TribeGovernment); } + float TimeSinceMissionDeactivated(TSubclassOf MissionType) { return NativeCall>(this, "AShooterGameMode.TimeSinceMissionDeactivated", MissionType); } + bool IsTimeSinceMissionDeactivated(TSubclassOf MissionType, float CheckTimeSince, bool bForceTrueAtZeroTime) { return NativeCall, float, bool>(this, "AShooterGameMode.IsTimeSinceMissionDeactivated", MissionType, CheckTimeSince, bForceTrueAtZeroTime); } + void ClearLastMissionDeactivatedTime(TSubclassOf MissionType) { NativeCall>(this, "AShooterGameMode.ClearLastMissionDeactivatedTime", MissionType); } + long double GetLastMissionDeactivatedUtcTime(TSubclassOf MissionType) { return NativeCall>(this, "AShooterGameMode.GetLastMissionDeactivatedUtcTime", MissionType); } + void SetLastMissionDeactivatedUtcTime(TSubclassOf MissionType, long double UtcTime) { NativeCall, long double>(this, "AShooterGameMode.SetLastMissionDeactivatedUtcTime", MissionType, UtcTime); } + unsigned __int64 AddNewTribe(AShooterPlayerState* PlayerOwner, FString* TribeName, FTribeGovernment* TribeGovernment) { return NativeCall(this, "AShooterGameMode.AddNewTribe", PlayerOwner, TribeName, TribeGovernment); } void RemoveTribe(unsigned __int64 TribeID) { NativeCall(this, "AShooterGameMode.RemoveTribe", TribeID); } void UpdateTribeData(FTribeData* NewTribeData) { NativeCall(this, "AShooterGameMode.UpdateTribeData", NewTribeData); } void RemovePlayerFromTribe(unsigned __int64 TribeID, unsigned __int64 PlayerDataID, bool bDontUpdatePlayerState) { NativeCall(this, "AShooterGameMode.RemovePlayerFromTribe", TribeID, PlayerDataID, bDontUpdatePlayerState); } int GetTribeIDOfPlayerID(unsigned __int64 PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetTribeIDOfPlayerID", PlayerDataID); } - FTribeData * GetTribeData(FTribeData * result, unsigned __int64 TribeID) { return NativeCall(this, "AShooterGameMode.GetTribeData", result, TribeID); } + FTribeData* GetTribeDataBlueprint(FTribeData* result, int TribeID) { return NativeCall(this, "AShooterGameMode.GetTribeDataBlueprint", result, TribeID); } + FTribeData* GetTribeData(FTribeData* result, unsigned __int64 TribeID) { return NativeCall(this, "AShooterGameMode.GetTribeData", result, TribeID); } + void ArkGlobalCommand(FString Command) { NativeCall(this, "AShooterGameMode.ArkGlobalCommand", Command); } + void InitializeDatabaseRefs() { NativeCall(this, "AShooterGameMode.InitializeDatabaseRefs"); } void BeginPlay() { NativeCall(this, "AShooterGameMode.BeginPlay"); } - void GetActorSaveGameTypes(TArray> * saveGameTypes) { NativeCall> *>(this, "AShooterGameMode.GetActorSaveGameTypes", saveGameTypes); } - FString * InitNewPlayer(FString * result, APlayerController * NewPlayerController, TSharedPtr * UniqueId, FString * Options, FString * Portal) { return NativeCall *, FString *, FString *>(this, "AShooterGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } - void SendServerDirectMessage(FString * PlayerSteamID, FString * MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID, FString * PlayerName) { NativeCall(this, "AShooterGameMode.SendServerDirectMessage", PlayerSteamID, MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID, PlayerName); } - void SendServerChatMessage(FString * MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID) { NativeCall(this, "AShooterGameMode.SendServerChatMessage", MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID); } - void SendServerNotification(FString * MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D * MessageIcon, USoundBase * SoundToPlay, int ReceiverTeamId, int ReceiverPlayerID, bool bDoBillboard) { NativeCall(this, "AShooterGameMode.SendServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, ReceiverTeamId, ReceiverPlayerID, bDoBillboard); } - void RemovePlayerData(AShooterPlayerState * PlayerState) { NativeCall(this, "AShooterGameMode.RemovePlayerData", PlayerState); } + void Serialize(FArchive* Ar) { NativeCall(this, "AShooterGameMode.Serialize", Ar); } + FLeaderboardEntry* GetOrCreateLeaderboardEntry(FName MissionTag) { return NativeCall(this, "AShooterGameMode.GetOrCreateLeaderboardEntry", MissionTag); } + void GetActorSaveGameTypes(TArray>* saveGameTypes) { NativeCall>*>(this, "AShooterGameMode.GetActorSaveGameTypes", saveGameTypes); } + FString* InitNewPlayer(FString* result, APlayerController* NewPlayerController, TSharedPtr* UniqueId, FString* Options, FString* Portal) { return NativeCall*, FString*, FString*>(this, "AShooterGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } + void SendServerDirectMessage(FString* PlayerSteamID, FString* MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID, FString* PlayerName) { NativeCall(this, "AShooterGameMode.SendServerDirectMessage", PlayerSteamID, MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID, PlayerName); } + void SendServerChatMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID) { NativeCall(this, "AShooterGameMode.SendServerChatMessage", MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID); } + void SendServerNotification(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int ReceiverTeamId, int ReceiverPlayerID, bool bDoBillboard) { NativeCall(this, "AShooterGameMode.SendServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, ReceiverTeamId, ReceiverPlayerID, bDoBillboard); } + void RemovePlayerData(AShooterPlayerState* PlayerState) { NativeCall(this, "AShooterGameMode.RemovePlayerData", PlayerState); } void InitGameState() { NativeCall(this, "AShooterGameMode.InitGameState"); } void PreInitializeComponents() { NativeCall(this, "AShooterGameMode.PreInitializeComponents"); } void CheckIsOfficialServer() { NativeCall(this, "AShooterGameMode.CheckIsOfficialServer"); } void BeginUnloadingWorld() { NativeCall(this, "AShooterGameMode.BeginUnloadingWorld"); } + void ApplyLiveTuningOverloads(TSharedPtr Overloads) { NativeCall>(this, "AShooterGameMode.ApplyLiveTuningOverloads", Overloads); } + static FString* GetLiveTuningOverloadsDirectory(FString* result, bool bEnsureDirectoryExists) { return NativeCall(nullptr, "AShooterGameMode.GetLiveTuningOverloadsDirectory", result, bEnsureDirectoryExists); } + static bool IsSupportedLiveTuningProperty(UProperty* Property, bool bIgnoreLiveTuningFlag) { return NativeCall(nullptr, "AShooterGameMode.IsSupportedLiveTuningProperty", Property, bIgnoreLiveTuningFlag); } + void ResetLiveTuningOverloads() { NativeCall(this, "AShooterGameMode.ResetLiveTuningOverloads"); } + bool DumpAssetProperties(FString* Asset, FString* OutFilename) { return NativeCall(this, "AShooterGameMode.DumpAssetProperties", Asset, OutFilename); } void GetServerNotification() { NativeCall(this, "AShooterGameMode.GetServerNotification"); } void HttpServerNotificationRequestComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.HttpServerNotificationRequestComplete", HttpRequest, HttpResponse, bSucceeded); } void GetDynamicConfig() { NativeCall(this, "AShooterGameMode.GetDynamicConfig"); } void HttpGetDynamicConfigComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.HttpGetDynamicConfigComplete", HttpRequest, HttpResponse, bSucceeded); } - void PostAlarmNotification(FUniqueNetId * SteamID, FString * Title, FString * Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } - void PostAlarmNotification(FString SteamID, FString * Title, FString * Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } + void HttpGetLiveTuningOverloadsComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.HttpGetLiveTuningOverloadsComplete", HttpRequest, HttpResponse, bSucceeded); } + void PostAlarmNotification(FUniqueNetId* SteamID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } + void PostAlarmNotification(unsigned __int64 SteamID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } + void PostAlarmNotification(FString SteamID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } void PostServerMetrics() { NativeCall(this, "AShooterGameMode.PostServerMetrics"); } + void AddTrackedAdminCommand(APlayerController* Controller, FString* CommandType, FString* Command) { NativeCall(this, "AShooterGameMode.AddTrackedAdminCommand", Controller, CommandType, Command); } + void PostAdminTrackedCommands() { NativeCall(this, "AShooterGameMode.PostAdminTrackedCommands"); } + void AllowPlayerToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { NativeCall(this, "AShooterGameMode.AllowPlayerToJoinNoCheck", PlayerId); } + void DisallowPlayerToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { NativeCall(this, "AShooterGameMode.DisallowPlayerToJoinNoCheck", PlayerId); } void SavePlayersJoinNoCheckList() { NativeCall(this, "AShooterGameMode.SavePlayersJoinNoCheckList"); } void LoadPlayersJoinNoCheckList() { NativeCall(this, "AShooterGameMode.LoadPlayersJoinNoCheckList"); } - bool IsPlayerAllowedToJoinNoCheck(FUniqueNetIdUInt64 * PlayerId) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToJoinNoCheck", PlayerId); } - bool IsPlayerControllerAllowedToJoinNoCheck(AShooterPlayerController * ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToJoinNoCheck", ForPlayer); } - bool IsPlayerControllerAllowedToExclusiveJoin(AShooterPlayerController * ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToExclusiveJoin", ForPlayer); } + bool IsPlayerAllowedToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToJoinNoCheck", PlayerId); } + bool IsPlayerControllerAllowedToJoinNoCheck(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToJoinNoCheck", ForPlayer); } + bool IsPlayerControllerAllowedToExclusiveJoin(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToExclusiveJoin", ForPlayer); } bool KickPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.KickPlayer", PlayerSteamName, PlayerSteamID); } - void KickPlayerController(APlayerController * thePC, FString * KickMessage) { NativeCall(this, "AShooterGameMode.KickPlayerController", thePC, KickMessage); } + void KickPlayerController(APlayerController* thePC, FString* KickMessage) { NativeCall(this, "AShooterGameMode.KickPlayerController", thePC, KickMessage); } bool BanPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.BanPlayer", PlayerSteamName, PlayerSteamID); } bool UnbanPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.UnbanPlayer", PlayerSteamName, PlayerSteamID); } void SaveBannedList() { NativeCall(this, "AShooterGameMode.SaveBannedList"); } void LoadBannedList() { NativeCall(this, "AShooterGameMode.LoadBannedList"); } - FString * GetMapName(FString * result) { return NativeCall(this, "AShooterGameMode.GetMapName", result); } + FString* GetMapName(FString* result) { return NativeCall(this, "AShooterGameMode.GetMapName", result); } void UpdateSaveBackupFiles() { NativeCall(this, "AShooterGameMode.UpdateSaveBackupFiles"); } void LoadTribeIds_Process(unsigned int theTribeID) { NativeCall(this, "AShooterGameMode.LoadTribeIds_Process", theTribeID); } void LoadTribeIds() { NativeCall(this, "AShooterGameMode.LoadTribeIds"); } - void LoadPlayerIds_Process(unsigned __int64 InPlayerID, TArray * ReadBytes) { NativeCall *>(this, "AShooterGameMode.LoadPlayerIds_Process", InPlayerID, ReadBytes); } + void LoadPlayerIds_Process(unsigned __int64 InPlayerID, TArray* ReadBytes) { NativeCall*>(this, "AShooterGameMode.LoadPlayerIds_Process", InPlayerID, ReadBytes); } void LoadPlayerDataIds() { NativeCall(this, "AShooterGameMode.LoadPlayerDataIds"); } void AddPlayerID(int playerDataID, unsigned __int64 netUniqueID) { NativeCall(this, "AShooterGameMode.AddPlayerID", playerDataID, netUniqueID); } unsigned __int64 GetSteamIDForPlayerID(int playerDataID) { return NativeCall(this, "AShooterGameMode.GetSteamIDForPlayerID", playerDataID); } @@ -931,176 +1238,233 @@ struct AShooterGameMode : AGameMode unsigned int GenerateTribeId() { return NativeCall(this, "AShooterGameMode.GenerateTribeId"); } unsigned int GeneratePlayerDataId(unsigned __int64 NetUniqueID) { return NativeCall(this, "AShooterGameMode.GeneratePlayerDataId", NetUniqueID); } float ModifyNPCSpawnLimits(FName DinoNameTag, float CurrentLimit) { return NativeCall(this, "AShooterGameMode.ModifyNPCSpawnLimits", DinoNameTag, CurrentLimit); } + float GetExtraDinoSpawnWeight(FName DinoNameTag) { return NativeCall(this, "AShooterGameMode.GetExtraDinoSpawnWeight", DinoNameTag); } float GetHarvestResourceItemAmountMultiplier(TSubclassOf HarvestItemClass) { return NativeCall>(this, "AShooterGameMode.GetHarvestResourceItemAmountMultiplier", HarvestItemClass); } - float GetDinoDamageMultiplier(APrimalDinoCharacter * ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoDamageMultiplier", ForDino); } - float GetDinoResistanceMultiplier(APrimalDinoCharacter * ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoResistanceMultiplier", ForDino); } + float GetDinoDamageMultiplier(APrimalDinoCharacter* ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoDamageMultiplier", ForDino); } + float GetDinoResistanceMultiplier(APrimalDinoCharacter* ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoResistanceMultiplier", ForDino); } bool IsEngramClassHidden(TSubclassOf ForItemClass) { return NativeCall>(this, "AShooterGameMode.IsEngramClassHidden", ForItemClass); } bool IsEngramClassGiveToPlayer(TSubclassOf ForItemClass) { return NativeCall>(this, "AShooterGameMode.IsEngramClassGiveToPlayer", ForItemClass); } void ListenServerClampPlayerLocations() { NativeCall(this, "AShooterGameMode.ListenServerClampPlayerLocations"); } - FString * ValidateTribeName(FString * result, FString theTribeName) { return NativeCall(this, "AShooterGameMode.ValidateTribeName", result, theTribeName); } - void AdjustDamage(AActor * Victim, float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "AShooterGameMode.AdjustDamage", Victim, Damage, DamageEvent, EventInstigator, DamageCauser); } - void SetTimeOfDay(FString * timeString) { NativeCall(this, "AShooterGameMode.SetTimeOfDay", timeString); } + FString* ValidateTribeName(FString* result, FString theTribeName) { return NativeCall(this, "AShooterGameMode.ValidateTribeName", result, theTribeName); } + void AdjustDamage(AActor* Victim, float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterGameMode.AdjustDamage", Victim, Damage, DamageEvent, EventInstigator, DamageCauser); } + void NotifyDamage(AActor* Victim, float DamageAmount, FDamageEvent* Event, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterGameMode.NotifyDamage", Victim, DamageAmount, Event, EventInstigator, DamageCauser); } + void DamageEventLogFlush() { NativeCall(this, "AShooterGameMode.DamageEventLogFlush"); } + void SetDamageEventLoggingEnabled(bool bEnabled) { NativeCall(this, "AShooterGameMode.SetDamageEventLoggingEnabled", bEnabled); } + bool AllowRenameTribe(AShooterPlayerState* ForPlayerState, FString* TribeName) { return NativeCall(this, "AShooterGameMode.AllowRenameTribe", ForPlayerState, TribeName); } + void SetTimeOfDay(FString* timeString) { NativeCall(this, "AShooterGameMode.SetTimeOfDay", timeString); } void KickAllPlayersAndReload() { NativeCall(this, "AShooterGameMode.KickAllPlayersAndReload"); } - bool PlayerCanRestart(APlayerController * Player) { return NativeCall(this, "AShooterGameMode.PlayerCanRestart", Player); } - bool HandleNewPlayer_Implementation(AShooterPlayerController * NewPlayer, UPrimalPlayerData * PlayerData, AShooterCharacter * PlayerCharacter, bool bIsFromLogin) { return NativeCall(this, "AShooterGameMode.HandleNewPlayer_Implementation", NewPlayer, PlayerData, PlayerCharacter, bIsFromLogin); } - bool IsPlayerAllowedToCheat(AShooterPlayerController * ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToCheat", ForPlayer); } - void PrintToGameplayLog(FString * InString) { NativeCall(this, "AShooterGameMode.PrintToGameplayLog", InString); } - void PrintToServerGameLog(FString * InString, bool bSendChatToAllAdmins) { NativeCall(this, "AShooterGameMode.PrintToServerGameLog", InString, bSendChatToAllAdmins); } + void RestartServer() { NativeCall(this, "AShooterGameMode.RestartServer"); } + void SerializeForSaveFile(int SaveVersion, FArchive* InArchive) { NativeCall(this, "AShooterGameMode.SerializeForSaveFile", SaveVersion, InArchive); } + bool PlayerCanRestart(APlayerController* Player) { return NativeCall(this, "AShooterGameMode.PlayerCanRestart", Player); } + bool HandleNewPlayer_Implementation(AShooterPlayerController* NewPlayer, UPrimalPlayerData* PlayerData, AShooterCharacter* PlayerCharacter, bool bIsFromLogin) { return NativeCall(this, "AShooterGameMode.HandleNewPlayer_Implementation", NewPlayer, PlayerData, PlayerCharacter, bIsFromLogin); } + bool IsPlayerAllowedToCheat(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToCheat", ForPlayer); } + void PrintToGameplayLog(FString* InString) { NativeCall(this, "AShooterGameMode.PrintToGameplayLog", InString); } + void PrintToServerGameLog(FString* InString, bool bSendChatToAllAdmins) { NativeCall(this, "AShooterGameMode.PrintToServerGameLog", InString, bSendChatToAllAdmins); } void LoadedFromSaveGame() { NativeCall(this, "AShooterGameMode.LoadedFromSaveGame"); } void RemoveInactivePlayersAndTribes() { NativeCall(this, "AShooterGameMode.RemoveInactivePlayersAndTribes"); } void DDoSDetected() { NativeCall(this, "AShooterGameMode.DDoSDetected"); } - FString * GetSessionTimeString_Implementation(FString * result) { return NativeCall(this, "AShooterGameMode.GetSessionTimeString_Implementation", result); } - static bool AllowDamage(UWorld * ForWorld, int TargetingTeam1, int TargetingTeam2, bool bIgnoreDamageIfAllied) { return NativeCall(nullptr, "AShooterGameMode.AllowDamage", ForWorld, TargetingTeam1, TargetingTeam2, bIgnoreDamageIfAllied); } + FString* GetSessionTimeString_Implementation(FString* result) { return NativeCall(this, "AShooterGameMode.GetSessionTimeString_Implementation", result); } + bool GetLaunchOptionFloat(FString* LaunchOptionKey, float* ReturnVal) { return NativeCall(this, "AShooterGameMode.GetLaunchOptionFloat", LaunchOptionKey, ReturnVal); } + static bool AllowDamage(UWorld* ForWorld, int TargetingTeam1, int TargetingTeam2, bool bIgnoreDamageIfAllied) { return NativeCall(nullptr, "AShooterGameMode.AllowDamage", ForWorld, TargetingTeam1, TargetingTeam2, bIgnoreDamageIfAllied); } bool IsTribeWar(int TribeID1, int TribeID2) { return NativeCall(this, "AShooterGameMode.IsTribeWar", TribeID1, TribeID2); } void UpdateTribeWars() { NativeCall(this, "AShooterGameMode.UpdateTribeWars"); } - void AddToTribeLog(int TribeId, FString * NewLog) { NativeCall(this, "AShooterGameMode.AddToTribeLog", TribeId, NewLog); } - TArray * GetOverlappingDinoCharactersOfTeamAndClass(TArray * result, FVector * AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall *, TArray *, FVector *, float, TSubclassOf, int, bool, bool>(this, "AShooterGameMode.GetOverlappingDinoCharactersOfTeamAndClass", result, AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } - int CountOverlappingDinoCharactersOfTeamAndClass(FVector * AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall, int, bool, bool>(this, "AShooterGameMode.CountOverlappingDinoCharactersOfTeamAndClass", AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } + void AddToTribeLog(int TribeId, FString* NewLog) { NativeCall(this, "AShooterGameMode.AddToTribeLog", TribeId, NewLog); } + TArray* GetOverlappingDinoCharactersOfTeamAndClass(TArray* result, FVector* AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall*, TArray*, FVector*, float, TSubclassOf, int, bool, bool>(this, "AShooterGameMode.GetOverlappingDinoCharactersOfTeamAndClass", result, AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } + int CountOverlappingDinoCharactersOfTeamAndClass(FVector* AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall, int, bool, bool>(this, "AShooterGameMode.CountOverlappingDinoCharactersOfTeamAndClass", AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } void IncrementNumDinos(int ForTeam, int ByAmount) { NativeCall(this, "AShooterGameMode.IncrementNumDinos", ForTeam, ByAmount); } int GetNumDinosOnTeam(int OnTeam) { return NativeCall(this, "AShooterGameMode.GetNumDinosOnTeam", OnTeam); } bool AllowTaming(int ForTeam) { return NativeCall(this, "AShooterGameMode.AllowTaming", ForTeam); } - int ForceAddPlayerToTribe(AShooterPlayerState * ForPlayerState, FString * TribeName) { return NativeCall(this, "AShooterGameMode.ForceAddPlayerToTribe", ForPlayerState, TribeName); } - int ForceCreateTribe(FString * TribeName, int TeamOverride) { return NativeCall(this, "AShooterGameMode.ForceCreateTribe", TribeName, TeamOverride); } - int GetNumberOfLivePlayersOnTribe(FString * TribeName) { return NativeCall(this, "AShooterGameMode.GetNumberOfLivePlayersOnTribe", TribeName); } - static bool TriggerLevelCustomEvents(UWorld * InWorld, FString * EventName) { return NativeCall(nullptr, "AShooterGameMode.TriggerLevelCustomEvents", InWorld, EventName); } - void UpdateTribeAllianceData(FTribeAlliance * TribeAllianceData, TArray * OldMembersArray, bool bIsAdd) { NativeCall *, bool>(this, "AShooterGameMode.UpdateTribeAllianceData", TribeAllianceData, OldMembersArray, bIsAdd); } + int ForceAddPlayerToTribe(AShooterPlayerState* ForPlayerState, FString* TribeName) { return NativeCall(this, "AShooterGameMode.ForceAddPlayerToTribe", ForPlayerState, TribeName); } + int ForceCreateTribe(FString* TribeName, int TeamOverride) { return NativeCall(this, "AShooterGameMode.ForceCreateTribe", TribeName, TeamOverride); } + int GetNumberOfLivePlayersOnTribe(FString* TribeName) { return NativeCall(this, "AShooterGameMode.GetNumberOfLivePlayersOnTribe", TribeName); } + static bool TriggerLevelCustomEvents(UWorld* InWorld, FString* EventName) { return NativeCall(nullptr, "AShooterGameMode.TriggerLevelCustomEvents", InWorld, EventName); } + void UpdateTribeAllianceData(FTribeAlliance* TribeAllianceData, TArray* OldMembersArray, bool bIsAdd) { NativeCall*, bool>(this, "AShooterGameMode.UpdateTribeAllianceData", TribeAllianceData, OldMembersArray, bIsAdd); } bool AreTribesAllied(int TribeID1, int TribeID2) { return NativeCall(this, "AShooterGameMode.AreTribesAllied", TribeID1, TribeID2); } void AddTribeWar(int MyTribeID, int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime, bool bForceApprove) { NativeCall(this, "AShooterGameMode.AddTribeWar", MyTribeID, EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime, bForceApprove); } + void PostAlarmNotificationPlayerID(int PlayerID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotificationPlayerID", PlayerID, Title, Message); } void PostAlarmNotificationTribe(int TribeID, FString Title, FString Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotificationTribe", TribeID, Title, Message); } - void SpawnedPawnFor(AController * PC, APawn * SpawnedPawn) { NativeCall(this, "AShooterGameMode.SpawnedPawnFor", PC, SpawnedPawn); } + void SpawnedPawnFor(AController* PC, APawn* SpawnedPawn) { NativeCall(this, "AShooterGameMode.SpawnedPawnFor", PC, SpawnedPawn); } void SaveTributePlayerDatas(FString UniqueID) { NativeCall(this, "AShooterGameMode.SaveTributePlayerDatas", UniqueID); } void LoadTributePlayerDatas(FString UniqueID) { NativeCall(this, "AShooterGameMode.LoadTributePlayerDatas", UniqueID); } - void DownloadTransferredPlayer(AShooterPlayerController * NewPlayer) { NativeCall(this, "AShooterGameMode.DownloadTransferredPlayer", NewPlayer); } + void DownloadTransferredPlayer(AShooterPlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.DownloadTransferredPlayer", NewPlayer); } void CheckForDupedDinos() { NativeCall(this, "AShooterGameMode.CheckForDupedDinos"); } - void FlushPrimalStats(AShooterPlayerController * ForPC) { NativeCall(this, "AShooterGameMode.FlushPrimalStats", ForPC); } + void ArkMetricsAppend(FString* Type, TSharedPtr Payload) { NativeCall>(this, "AShooterGameMode.ArkMetricsAppend", Type, Payload); } + void FlushPrimalStats(AShooterPlayerController* ForPC) { NativeCall(this, "AShooterGameMode.FlushPrimalStats", ForPC); } + void ReassertColorization() { NativeCall(this, "AShooterGameMode.ReassertColorization"); } void SendAllCachedArkMetrics() { NativeCall(this, "AShooterGameMode.SendAllCachedArkMetrics"); } void HttpSendAllCachedArkMetricsRequestComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameMode.HttpSendAllCachedArkMetricsRequestComplete", HttpRequest, HttpResponse, bSucceeded); } - FString * GetServerName(FString * result, bool bNumbersAndLettersOnly) { return NativeCall(this, "AShooterGameMode.GetServerName", result, bNumbersAndLettersOnly); } + FString* GetServerName(FString* result, bool bNumbersAndLettersOnly) { return NativeCall(this, "AShooterGameMode.GetServerName", result, bNumbersAndLettersOnly); } + void ChatLogAppend(AShooterPlayerController* SenderController, FChatMessage* Msg) { NativeCall(this, "AShooterGameMode.ChatLogAppend", SenderController, Msg); } void ChatLogFlush(bool bFinalize) { NativeCall(this, "AShooterGameMode.ChatLogFlush", bFinalize); } + bool BPIsSpawnpointAllowed_Implementation(APlayerStart* SpawnPoint, AController* Player) { return NativeCall(this, "AShooterGameMode.BPIsSpawnpointAllowed_Implementation", SpawnPoint, Player); } + bool BPIsSpawnpointPreferred_Implementation(APlayerStart* SpawnPoint, AController* Player) { return NativeCall(this, "AShooterGameMode.BPIsSpawnpointPreferred_Implementation", SpawnPoint, Player); } + AOceanDinoManager* GetOceanDinoManager() { return NativeCall(this, "AShooterGameMode.GetOceanDinoManager"); } + void ReloadAdminIPs() { NativeCall(this, "AShooterGameMode.ReloadAdminIPs"); } void ChatLogFlushOnTick() { NativeCall(this, "AShooterGameMode.ChatLogFlushOnTick"); } - void BPPreSpawnedDino(APrimalDinoCharacter * theDino) { NativeCall(this, "AShooterGameMode.BPPreSpawnedDino", theDino); } -}; - -struct ACustomGameMode : AShooterGameMode -{ + static void StaticRegisterNativesAShooterGameMode() { NativeCall(nullptr, "AShooterGameMode.StaticRegisterNativesAShooterGameMode"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterGameMode.GetPrivateStaticClass", Package); } + void BPPreSpawnedDino(APrimalDinoCharacter* theDino) { NativeCall(this, "AShooterGameMode.BPPreSpawnedDino", theDino); } + bool CheckJoinInProgress(bool bIsFromLogin, APlayerController* NewPlayer) { return NativeCall(this, "AShooterGameMode.CheckJoinInProgress", bIsFromLogin, NewPlayer); } + bool HandleNewPlayer(AShooterPlayerController* NewPlayer, UPrimalPlayerData* PlayerData, AShooterCharacter* PlayerCharacter, bool bIsFromLogin) { return NativeCall(this, "AShooterGameMode.HandleNewPlayer", NewPlayer, PlayerData, PlayerCharacter, bIsFromLogin); } + void OnLogout(AController* Exiting) { NativeCall(this, "AShooterGameMode.OnLogout", Exiting); } + FString* GetSaveDirectoryName(FString* result, ESaveType::Type SaveType) { return NativeCall(this, "AShooterGameMode.GetSaveDirectoryName", result, SaveType); } }; -// Game Data - struct UPrimalGameData : UObject { FString& ModNameField() { return *GetNativePointerField(this, "UPrimalGameData.ModName"); } FString& ModDescriptionField() { return *GetNativePointerField(this, "UPrimalGameData.ModDescription"); } + FieldArray StatusValueDefinitionsField() { return { this, "UPrimalGameData.StatusValueDefinitions" }; } + FieldArray StatusStateDefinitionsField() { return { this, "UPrimalGameData.StatusStateDefinitions" }; } + FieldArray ItemStatDefinitionsField() { return { this, "UPrimalGameData.ItemStatDefinitions" }; } + FieldArray ItemTypeDefinitionsField() { return { this, "UPrimalGameData.ItemTypeDefinitions" }; } + FieldArray EquipmentTypeDefinitionsField() { return { this, "UPrimalGameData.EquipmentTypeDefinitions" }; } TArray>& MasterItemListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.MasterItemList"); } + TArray& ItemQualityDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ItemQualityDefinitions"); } TArray>& EngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.EngramBlueprintClasses"); } TArray>& AdditionalEngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalEngramBlueprintClasses"); } TArray>& RemoveEngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.RemoveEngramBlueprintClasses"); } + TArray& StatusValueModifierDescriptionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.StatusValueModifierDescriptions"); } TArray& PlayerSpawnRegionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerSpawnRegions"); } - USoundBase * TutorialDisplaySoundField() { return *GetNativePointerField(this, "UPrimalGameData.TutorialDisplaySound"); } - USoundBase * Sound_StartItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartItemDrag"); } - USoundBase * Sound_StopItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StopItemDrag"); } - USoundBase * Sound_CancelPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CancelPlacingStructure"); } - USoundBase * Sound_ChooseStructureRotationField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ChooseStructureRotation"); } - USoundBase * Sound_FailPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_FailPlacingStructure"); } - USoundBase * Sound_ConfirmPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ConfirmPlacingStructure"); } - USoundBase * Sound_StartPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartPlacingStructure"); } - USoundBase * Sound_CorpseDecomposeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CorpseDecompose"); } - USoundBase * Sound_ApplyLevelUpField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelUp"); } - USoundBase * Sound_ApplyLevelPointField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelPoint"); } - USoundBase * Sound_LearnedEngramField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_LearnedEngram"); } - USoundBase * Sound_ReconnectToCharacterField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ReconnectToCharacter"); } - USoundBase * Sound_DropAllItemsField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropAllItems"); } - USoundBase * Sound_TransferAllItemsToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsToRemote"); } - USoundBase * Sound_TransferAllItemsFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsFromRemote"); } - USoundBase * Sound_TransferItemToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemToRemote"); } - USoundBase * Sound_TransferItemFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemFromRemote"); } - USoundBase * Sound_AddItemToSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddItemToSlot"); } - USoundBase * Sound_RemoveItemFromSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemFromSlot"); } - USoundBase * Sound_ClearCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ClearCraftQueue"); } - USoundBase * Sound_AddToCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddToCraftQueue"); } - USoundBase * Sound_SetRadioFrequencyField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetRadioFrequency"); } - USoundBase * Sound_AddPinToMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddPinToMap"); } - USoundBase * Sound_RemovePinFromMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemovePinFromMap"); } - USoundBase * Sound_ApplyDyeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyDye"); } - USoundBase * Sound_ApplyPaintField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyPaint"); } - USoundBase * Sound_SetTextGenericField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetTextGeneric"); } - USoundBase * Sound_SplitItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SplitItemStack"); } - USoundBase * Sound_MergeItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_MergeItemStack"); } - USoundBase * Sound_InputPinDigitField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_InputPinDigit"); } - USoundBase * Sound_PinValidatedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinValidated"); } - USoundBase * Sound_PinRejectedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinRejected"); } - USoundBase * Sound_TribeWarBeginField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarBegin"); } - USoundBase * Sound_TribeWarEndField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarEnd"); } - USoundBase * Sound_DropInventoryItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropInventoryItem"); } - USoundBase * Sound_RefillWaterContainerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RefillWaterContainer"); } - TArray EngramBlueprintEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.EngramBlueprintEntries"); } + USoundBase* TutorialDisplaySoundField() { return *GetNativePointerField(this, "UPrimalGameData.TutorialDisplaySound"); } + USoundBase* Sound_StartItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartItemDrag"); } + USoundBase* Sound_StopItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StopItemDrag"); } + UTexture2D* PreventGrindingIconField() { return *GetNativePointerField(this, "UPrimalGameData.PreventGrindingIcon"); } + USoundBase* Sound_CancelPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CancelPlacingStructure"); } + USoundBase* Sound_ChooseStructureRotationField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ChooseStructureRotation"); } + USoundBase* Sound_FailPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_FailPlacingStructure"); } + USoundBase* Sound_ConfirmPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ConfirmPlacingStructure"); } + USoundBase* Sound_StartPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartPlacingStructure"); } + USoundBase* Sound_CorpseDecomposeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CorpseDecompose"); } + USoundBase* Sound_ApplyLevelUpField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelUp"); } + USoundBase* Sound_ApplyLevelPointField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelPoint"); } + USoundBase* Sound_LearnedEngramField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_LearnedEngram"); } + USoundBase* Sound_ReconnectToCharacterField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ReconnectToCharacter"); } + USoundBase* Sound_DropAllItemsField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropAllItems"); } + USoundBase* Sound_TransferAllItemsToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsToRemote"); } + USoundBase* Sound_TransferAllItemsFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsFromRemote"); } + USoundBase* Sound_TransferItemToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemToRemote"); } + USoundBase* Sound_TransferItemFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemFromRemote"); } + USoundBase* Sound_AddItemToSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddItemToSlot"); } + USoundBase* Sound_RemoveItemFromSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemFromSlot"); } + USoundBase* Sound_ClearCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ClearCraftQueue"); } + USoundBase* Sound_AddToCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddToCraftQueue"); } + USoundBase* Sound_SetRadioFrequencyField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetRadioFrequency"); } + USoundBase* Sound_AddPinToMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddPinToMap"); } + USoundBase* Sound_RemovePinFromMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemovePinFromMap"); } + USoundBase* Sound_ApplyDyeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyDye"); } + USoundBase* Sound_ApplyPaintField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyPaint"); } + USoundBase* Sound_SetTextGenericField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetTextGeneric"); } + USoundBase* Sound_SplitItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SplitItemStack"); } + USoundBase* Sound_MergeItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_MergeItemStack"); } + USoundBase* Sound_InputPinDigitField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_InputPinDigit"); } + USoundBase* Sound_PinValidatedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinValidated"); } + USoundBase* Sound_PinRejectedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinRejected"); } + USoundBase* Sound_TribeWarBeginField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarBegin"); } + USoundBase* Sound_TribeWarEndField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarEnd"); } + USoundBase* Sound_DropInventoryItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropInventoryItem"); } + USoundBase* Sound_RefillWaterContainerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RefillWaterContainer"); } + TArray& CoreAppIDItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.CoreAppIDItems"); } + TArray& AppIDItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AppIDItems"); } + TArray EngramBlueprintEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.EngramBlueprintEntries"); } + TArray ExplorerNoteEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteEntriesObjects"); } + TArray HeadHairStylesEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.HeadHairStylesEntriesObjects"); } + TArray FacialHairStylesEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.FacialHairStylesEntriesObjects"); } + TSubclassOf& DefaultToolTipWidgetField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultToolTipWidget"); } TSubclassOf& StarterNoteItemField() { return *GetNativePointerField*>(this, "UPrimalGameData.StarterNoteItem"); } TArray>& PrimaryResourcesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.PrimaryResources"); } TSubclassOf& GenericDroppedItemTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericDroppedItemTemplate"); } - UMaterialInterface * PostProcess_KnockoutBlurField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_KnockoutBlur"); } - TArray BuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.BuffPostProcessEffects"); } - TArray AdditionalBuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalBuffPostProcessEffects"); } - UTexture2D * UnknownIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownIcon"); } - UMaterialInterface * UnknownMaterialField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownMaterial"); } - UTexture2D * WhiteTextureField() { return *GetNativePointerField(this, "UPrimalGameData.WhiteTexture"); } - UTexture2D * BlueprintBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.BlueprintBackground"); } - UTexture2D * BabyCuddleIconField() { return *GetNativePointerField(this, "UPrimalGameData.BabyCuddleIcon"); } - UTexture2D * ImprintedRiderIconField() { return *GetNativePointerField(this, "UPrimalGameData.ImprintedRiderIcon"); } - UTexture2D * WeaponAccessoryActivatedIconField() { return *GetNativePointerField(this, "UPrimalGameData.WeaponAccessoryActivatedIcon"); } - UTexture2D * EngramBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.EngramBackground"); } - UTexture2D * VoiceChatIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatIcon"); } - UTexture2D * ItemButtonRecentlySelectedBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.ItemButtonRecentlySelectedBackground"); } + UMaterialInterface* PostProcess_KnockoutBlurField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_KnockoutBlur"); } + UMaterialInterface* AdditionalDeathPostProcessEffectField() { return *GetNativePointerField(this, "UPrimalGameData.AdditionalDeathPostProcessEffect"); } + TArray BuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.BuffPostProcessEffects"); } + TArray AdditionalBuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalBuffPostProcessEffects"); } + TSubclassOf& GenericDroppedItemTemplateLowQualityField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericDroppedItemTemplateLowQuality"); } + TArray& TutorialDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.TutorialDefinitions"); } + UTexture2D* UnknownIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownIcon"); } + UMaterialInterface* UnknownMaterialField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownMaterial"); } + UTexture2D* WhiteTextureField() { return *GetNativePointerField(this, "UPrimalGameData.WhiteTexture"); } + UTexture2D* BlueprintBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.BlueprintBackground"); } + UTexture2D* BabyCuddleIconField() { return *GetNativePointerField(this, "UPrimalGameData.BabyCuddleIcon"); } + UTexture2D* ImprintedRiderIconField() { return *GetNativePointerField(this, "UPrimalGameData.ImprintedRiderIcon"); } + UTexture2D* WeaponAccessoryActivatedIconField() { return *GetNativePointerField(this, "UPrimalGameData.WeaponAccessoryActivatedIcon"); } + UTexture2D* EngramBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.EngramBackground"); } + UTexture2D* VoiceChatIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatIcon"); } + UTexture2D* VoiceChatYellingIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatYellingIcon"); } + UTexture2D* VoiceChatWhisperingIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatWhisperingIcon"); } + UTexture2D* ItemButtonRecentlySelectedBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.ItemButtonRecentlySelectedBackground"); } float& GlobalGeneralArmorDegradationMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalGeneralArmorDegradationMultiplier"); } float& GlobalSpecificArmorDegradationMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalSpecificArmorDegradationMultiplier"); } float& GlobalSpecificArmorRatingMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalSpecificArmorRatingMultiplier"); } float& GlobalGeneralArmorRatingMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalGeneralArmorRatingMultiplier"); } float& EnemyFoundationPreventionRadiusField() { return *GetNativePointerField(this, "UPrimalGameData.EnemyFoundationPreventionRadius"); } - TArray ExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraResources"); } - TArray BaseExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.BaseExtraResources"); } - TSubclassOf& BaseExtraResourcesContainerField() { return *GetNativePointerField*>(this, "UPrimalGameData.BaseExtraResourcesContainer"); } - USoundBase * CombatMusicDayField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay"); } - USoundBase * CombatMusicNightField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight"); } - USoundBase * CombatMusicDay_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay_Heavy"); } - USoundBase * CombatMusicNight_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight_Heavy"); } - USoundBase * LevelUpStingerSoundField() { return *GetNativePointerField(this, "UPrimalGameData.LevelUpStingerSound"); } + TArray& ColorDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ColorDefinitions"); } + TArray ExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraResources"); } + TArray BaseExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.BaseExtraResources"); } + USoundBase* CombatMusicDayField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay"); } + USoundBase* CombatMusicNightField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight"); } + USoundBase* CombatMusicDay_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay_Heavy"); } + USoundBase* CombatMusicNight_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight_Heavy"); } + USoundBase* LevelUpStingerSoundField() { return *GetNativePointerField(this, "UPrimalGameData.LevelUpStingerSound"); } + USoundBase* TrackMissionSoundField() { return *GetNativePointerField(this, "UPrimalGameData.TrackMissionSound"); } + USoundBase* UntrackMissionSoundField() { return *GetNativePointerField(this, "UPrimalGameData.UntrackMissionSound"); } + FieldArray PlayerCharacterGenderDefinitionsField() { return { this, "UPrimalGameData.PlayerCharacterGenderDefinitions" }; } TSubclassOf& DefaultGameModeField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultGameMode"); } FieldArray LevelExperienceRampsField() { return { this, "UPrimalGameData.LevelExperienceRamps" }; } FieldArray SinglePlayerLevelExperienceRampsField() { return { this, "UPrimalGameData.SinglePlayerLevelExperienceRamps" }; } + TArray& NamedTeamDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.NamedTeamDefinitions"); } TArray& PlayerLevelEngramPointsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerLevelEngramPoints"); } TArray& PlayerLevelEngramPointsSPField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerLevelEngramPointsSP"); } TArray& PreventBuildStructureReasonStringsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PreventBuildStructureReasonStrings"); } + TArray& ExplorerNoteAchievementsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteAchievements"); } + TArray& Remap_NPCField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_NPC"); } + TArray& Remap_SupplyCratesField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_SupplyCrates"); } + TArray& Remap_ActiveEventSupplyCratesField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_ActiveEventSupplyCrates"); } + TArray& Remap_ResourceComponentsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_ResourceComponents"); } + TArray& Remap_NPCSpawnEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_NPCSpawnEntries"); } + TArray& Remap_EngramsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_Engrams"); } + TArray& Remap_ItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_Items"); } + TArray& AdditionalStructureEngramsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalStructureEngrams"); } + TArray& AdditionalDefaultBuffsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalDefaultBuffs"); } + TArray& AvailableMissionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AvailableMissions"); } TSubclassOf& ActorToSpawnUponEnemyCoreStructureDeathField() { return *GetNativePointerField*>(this, "UPrimalGameData.ActorToSpawnUponEnemyCoreStructureDeath"); } TArray>& AdditionalStructuresToPlaceField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalStructuresToPlace"); } + TArray>& MasterDyeListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.MasterDyeList"); } TArray& MasterColorTableField() { return *GetNativePointerField*>(this, "UPrimalGameData.MasterColorTable"); } float& EnemyCoreStructureDeathActorRadiusBuildCheckField() { return *GetNativePointerField(this, "UPrimalGameData.EnemyCoreStructureDeathActorRadiusBuildCheck"); } TSubclassOf& DeathDestructionDepositInventoryClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.DeathDestructionDepositInventoryClass"); } - UTexture2D * MateBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.MateBoostIcon"); } - UTexture2D * EggBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.EggBoostIcon"); } - UTexture2D * MatingIconField() { return *GetNativePointerField(this, "UPrimalGameData.MatingIcon"); } - UTexture2D * NearFeedIconField() { return *GetNativePointerField(this, "UPrimalGameData.NearFeedIcon"); } - UTexture2D * BuffedIconField() { return *GetNativePointerField(this, "UPrimalGameData.BuffedIcon"); } - UTexture2D * GamepadFaceButtonTopField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonTop"); } - UTexture2D * GamepadFaceButtonBottomField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonBottom"); } - UTexture2D * GamepadFaceButtonLeftField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonLeft"); } - UTexture2D * GamepadFaceButtonRightField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonRight"); } + UTexture2D* MateBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.MateBoostIcon"); } + UTexture2D* EggBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.EggBoostIcon"); } + UTexture2D* MatingIconField() { return *GetNativePointerField(this, "UPrimalGameData.MatingIcon"); } + UTexture2D* NearFeedIconField() { return *GetNativePointerField(this, "UPrimalGameData.NearFeedIcon"); } + UTexture2D* BuffedIconField() { return *GetNativePointerField(this, "UPrimalGameData.BuffedIcon"); } + UTexture2D* TethererdIconField() { return *GetNativePointerField(this, "UPrimalGameData.TethererdIcon"); } + UTexture2D* GamepadFaceButtonTopField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonTop"); } + UTexture2D* GamepadFaceButtonBottomField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonBottom"); } + UTexture2D* GamepadFaceButtonLeftField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonLeft"); } + UTexture2D* GamepadFaceButtonRightField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonRight"); } + TSubclassOf& FooterTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.FooterTemplate"); } float& TribeXPSharePercentField() { return *GetNativePointerField(this, "UPrimalGameData.TribeXPSharePercent"); } int& OverrideServerPhysXSubstepsField() { return *GetNativePointerField(this, "UPrimalGameData.OverrideServerPhysXSubsteps"); } float& OverrideServerPhysXSubstepsDeltaTimeField() { return *GetNativePointerField(this, "UPrimalGameData.OverrideServerPhysXSubstepsDeltaTime"); } bool& bInitializedField() { return *GetNativePointerField(this, "UPrimalGameData.bInitialized"); } - FieldArray Sound_TamedDinosField() { return { this, "UPrimalGameData.Sound_TamedDinos" }; } - USoundBase * Sound_ItemStartCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartCrafting"); } - USoundBase * Sound_ItemFinishCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishCrafting"); } - USoundBase * Sound_ItemStartRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartRepairing"); } - USoundBase * Sound_ItemFinishRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishRepairing"); } + FieldArray Sound_TamedDinosField() { return { this, "UPrimalGameData.Sound_TamedDinos" }; } + USoundBase* Sound_ItemStartCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartCrafting"); } + USoundBase* Sound_ItemFinishCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishCrafting"); } + USoundBase* Sound_ItemStartRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartRepairing"); } + USoundBase* Sound_ItemFinishRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishRepairing"); } + TSubclassOf& NotifClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.NotifClass"); } + TSubclassOf& StructureDefaultOverlayToolTipWidgetField() { return *GetNativePointerField*>(this, "UPrimalGameData.StructureDefaultOverlayToolTipWidget"); } float& MinPaintDurationConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MinPaintDurationConsumption"); } float& MaxPaintDurationConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MaxPaintDurationConsumption"); } float& MinDinoRadiusForPaintConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MinDinoRadiusForPaintConsumption"); } float& MaxDinoRadiusForPaintConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MaxDinoRadiusForPaintConsumption"); } + TArray& DinoBabySetupsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoBabySetups"); } + TArray& DinoGestationSetupsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoGestationSetups"); } TSubclassOf& SoapItemTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.SoapItemTemplate"); } - UTexture2D * NameTagWildcardAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagWildcardAdmin"); } - UTexture2D * NameTagServerAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagServerAdmin"); } - UTexture2D * NameTagTribeAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagTribeAdmin"); } - TArray BadgeGroupsNameTagField() { return *GetNativePointerField*>(this, "UPrimalGameData.BadgeGroupsNameTag"); } + UTexture2D* NameTagWildcardAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagWildcardAdmin"); } + UTexture2D* NameTagServerAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagServerAdmin"); } + UTexture2D* NameTagTribeAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagTribeAdmin"); } + TArray BadgeGroupsNameTagField() { return *GetNativePointerField*>(this, "UPrimalGameData.BadgeGroupsNameTag"); } TArray& AchievementIDsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AchievementIDs"); } TSet, FDefaultSetAllocator>& AchievementIDSetField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UPrimalGameData.AchievementIDSet"); } TArray& AdditionalEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalEggWeightsToSpawn"); } @@ -1110,65 +1474,106 @@ struct UPrimalGameData : UObject FString& ItemAchievementsNameField() { return *GetNativePointerField(this, "UPrimalGameData.ItemAchievementsName"); } TArray>& ItemAchievementsListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ItemAchievementsList"); } TArray>& GlobalCuddleFoodListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.GlobalCuddleFoodList"); } - USoundBase * DinoIncrementedImprintingSoundField() { return *GetNativePointerField(this, "UPrimalGameData.DinoIncrementedImprintingSound"); } - USoundBase * HitMarkerCharacterSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerCharacterSound"); } - USoundBase * HitMarkerStructureSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerStructureSound"); } - UMaterialInterface * PostProcess_ColorLUTField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_ColorLUT"); } - USoundBase * Sound_DossierUnlockedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DossierUnlocked"); } - USoundBase * Sound_ItemUseOnItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemUseOnItem"); } - USoundBase * Sound_RemoveItemSkinField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemSkin"); } - USoundBase * Sound_RemoveClipAmmoField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveClipAmmo"); } + TArray& MultiAchievementsField() { return *GetNativePointerField*>(this, "UPrimalGameData.MultiAchievements"); } + USoundBase* DinoIncrementedImprintingSoundField() { return *GetNativePointerField(this, "UPrimalGameData.DinoIncrementedImprintingSound"); } + USoundBase* HitMarkerCharacterSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerCharacterSound"); } + USoundBase* HitMarkerStructureSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerStructureSound"); } + TArray& TheNPCSpawnEntriesContainerAdditionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.TheNPCSpawnEntriesContainerAdditions"); } + UMaterialInterface* PostProcess_ColorLUTField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_ColorLUT"); } + TSubclassOf& DefaultStructureSettingsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultStructureSettings"); } + USoundBase* Sound_DossierUnlockedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DossierUnlocked"); } + USoundBase* Sound_ItemUseOnItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemUseOnItem"); } + USoundBase* Sound_RemoveItemSkinField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemSkin"); } + USoundBase* Sound_RemoveClipAmmoField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveClipAmmo"); } + TArray& ExplorerNoteEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteEntries"); } float& ExplorerNoteXPGainField() { return *GetNativePointerField(this, "UPrimalGameData.ExplorerNoteXPGain"); } - FieldArray BuffTypeBackgroundsField() { return { this, "UPrimalGameData.BuffTypeBackgrounds" }; } - FieldArray BuffTypeForegroundsField() { return { this, "UPrimalGameData.BuffTypeForegrounds" }; } + FieldArray BuffTypeBackgroundsField() { return { this, "UPrimalGameData.BuffTypeBackgrounds" }; } + FieldArray BuffTypeForegroundsField() { return { this, "UPrimalGameData.BuffTypeForegrounds" }; } TSubclassOf& ExplorerNoteXPBuffField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteXPBuff"); } TSubclassOf& SpecialExplorerNoteXPBuffField() { return *GetNativePointerField*>(this, "UPrimalGameData.SpecialExplorerNoteXPBuff"); } - UTexture2D * PerMapExplorerNoteLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.PerMapExplorerNoteLockedIcon"); } - UTexture2D * TamedDinoUnlockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoUnlockedIcon"); } - UTexture2D * TamedDinoLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoLockedIcon"); } - UTexture2D * DinoOrderIconField() { return *GetNativePointerField(this, "UPrimalGameData.DinoOrderIcon"); } + UTexture2D* PerMapExplorerNoteLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.PerMapExplorerNoteLockedIcon"); } + UTexture2D* TamedDinoUnlockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoUnlockedIcon"); } + UTexture2D* TamedDinoLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoLockedIcon"); } + TArray& UnlockableEmotesField() { return *GetNativePointerField*>(this, "UPrimalGameData.UnlockableEmotes"); } + TArray& GlobalNPCRandomSpawnClassWeightsField() { return *GetNativePointerField*>(this, "UPrimalGameData.GlobalNPCRandomSpawnClassWeights"); } + UTexture2D* DinoOrderIconField() { return *GetNativePointerField(this, "UPrimalGameData.DinoOrderIcon"); } + TSubclassOf& DinoOrderEffect_MoveToField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoOrderEffect_MoveTo"); } + TSubclassOf& DinoOrderEffect_AttackTargetField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoOrderEffect_AttackTarget"); } + TArray& AdditionalHumanMaleAnimSequenceOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanMaleAnimSequenceOverrides"); } + TArray& AdditionalHumanFemaleAnimSequenceOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanFemaleAnimSequenceOverrides"); } + TArray& AdditionalHumanMaleAnimMontagesOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanMaleAnimMontagesOverrides"); } + TArray& AdditionalHumanFemaleAnimMontagesOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanFemaleAnimMontagesOverrides"); } TArray>& ServerExtraWorldSingletonActorClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ServerExtraWorldSingletonActorClasses"); } bool& bForceServerUseDinoListField() { return *GetNativePointerField(this, "UPrimalGameData.bForceServerUseDinoList"); } TArray>& ExtraStackedGameDataClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ExtraStackedGameDataClasses"); } - TSubclassOf& ExtraEggItemField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraEggItem"); } - USoundBase * GenericWaterPostprocessAmbientSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericWaterPostprocessAmbientSound"); } + TArray& HeadHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.HeadHairStyleDefinitions"); } + TArray& FacialHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.FacialHairStyleDefinitions"); } + TArray& AdditionalHeadHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHeadHairStyleDefinitions"); } + TArray& AdditionalFacialHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalFacialHairStyleDefinitions"); } + USoundBase* GenericWaterPostprocessAmbientSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericWaterPostprocessAmbientSound"); } TSubclassOf& OverridePlayerDataClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.OverridePlayerDataClass"); } TArray& AllDinosAchievementNameTagsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AllDinosAchievementNameTags"); } - USoundBase * GenericArrowPickedUpSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericArrowPickedUpSound"); } - UTexture2D * UnlockIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnlockIcon"); } + USoundBase* GenericArrowPickedUpSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericArrowPickedUpSound"); } + UTexture2D* UnlockIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnlockIcon"); } FColor& WheelFolderColorField() { return *GetNativePointerField(this, "UPrimalGameData.WheelFolderColor"); } FColor& WheelBackColorField() { return *GetNativePointerField(this, "UPrimalGameData.WheelBackColor"); } - UTexture2D * MaxInventoryIconField() { return *GetNativePointerField(this, "UPrimalGameData.MaxInventoryIcon"); } - UTexture2D * ItemSkinIconField() { return *GetNativePointerField(this, "UPrimalGameData.ItemSkinIcon"); } + UTexture2D* MaxInventoryIconField() { return *GetNativePointerField(this, "UPrimalGameData.MaxInventoryIcon"); } + UTexture2D* ItemSkinIconField() { return *GetNativePointerField(this, "UPrimalGameData.ItemSkinIcon"); } TArray>& SkeletalPhysCustomBodyAdditionalIgnoresField() { return *GetNativePointerField>*>(this, "UPrimalGameData.SkeletalPhysCustomBodyAdditionalIgnores"); } - USoundBase * ActionWheelClickSoundField() { return *GetNativePointerField(this, "UPrimalGameData.ActionWheelClickSound"); } - USoundBase * Sound_GenericBoardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericBoardPassenger"); } - USoundBase * Sound_GenericUnboardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericUnboardPassenger"); } - USoundBase * Sound_CraftingTabToggleField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CraftingTabToggle"); } + USoundBase* ActionWheelClickSoundField() { return *GetNativePointerField(this, "UPrimalGameData.ActionWheelClickSound"); } + USoundBase* Sound_GenericBoardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericBoardPassenger"); } + USoundBase* Sound_GenericUnboardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericUnboardPassenger"); } + USoundBase* Sound_CraftingTabToggleField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CraftingTabToggle"); } TSubclassOf& GenericBatteryItemClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericBatteryItemClass"); } - TMap > ItemEngramMapField() { return *GetNativePointerField >*>(this, "UPrimalGameData.ItemEngramMap"); } + TMap > ItemEngramMapField() { return *GetNativePointerField >*>(this, "UPrimalGameData.ItemEngramMap"); } + TArray>& GenesisSeasonPassItemsField() { return *GetNativePointerField>*>(this, "UPrimalGameData.GenesisSeasonPassItems"); } + TArray>& DefaultTradableOptionsField() { return *GetNativePointerField>*>(this, "UPrimalGameData.DefaultTradableOptions"); } + TArray>& AdditionalTradableOptionsField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalTradableOptions"); } + bool& bWantsToRunMissionsField() { return *GetNativePointerField(this, "UPrimalGameData.bWantsToRunMissions"); } // Functions + int GetItemQualityIndex(float ItemRating) { return NativeCall(this, "UPrimalGameData.GetItemQualityIndex", ItemRating); } void Initialize() { NativeCall(this, "UPrimalGameData.Initialize"); } - bool CanTeamTarget(int attackerTeam, int victimTeam, int originalVictimTargetingTeam, AActor * Attacker, AActor * Victim) { return NativeCall(this, "UPrimalGameData.CanTeamTarget", attackerTeam, victimTeam, originalVictimTargetingTeam, Attacker, Victim); } - bool CanTeamDamage(int attackerTeam, int victimTeam, AActor * Attacker) { return NativeCall(this, "UPrimalGameData.CanTeamDamage", attackerTeam, victimTeam, Attacker); } + FLinearColor* GetColorForDefinition(FLinearColor* result, int DefinitionIndex) { return NativeCall(this, "UPrimalGameData.GetColorForDefinition", result, DefinitionIndex); } + int GetDefinitionIndexForColorName(FName ColorName) { return NativeCall(this, "UPrimalGameData.GetDefinitionIndexForColorName", ColorName); } + bool CanTeamTarget(int attackerTeam, int victimTeam, int originalVictimTargetingTeam, AActor* Attacker, AActor* Victim) { return NativeCall(this, "UPrimalGameData.CanTeamTarget", attackerTeam, victimTeam, originalVictimTargetingTeam, Attacker, Victim); } + bool CanTeamDamage(int attackerTeam, int victimTeam, AActor* Attacker) { return NativeCall(this, "UPrimalGameData.CanTeamDamage", attackerTeam, victimTeam, Attacker); } + int GetNamedTargetingTeamIndex(FName TargetingTeamName) { return NativeCall(this, "UPrimalGameData.GetNamedTargetingTeamIndex", TargetingTeamName); } float GetTeamTargetingDesirabilityMultiplier(int attackerTeam, int victimTeam) { return NativeCall(this, "UPrimalGameData.GetTeamTargetingDesirabilityMultiplier", attackerTeam, victimTeam); } - USoundBase * GetGenericCombatMusic_Implementation(APrimalCharacter * forCharacter, APrimalCharacter * forEnemy) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic_Implementation", forCharacter, forEnemy); } - FLevelExperienceRamp * GetLevelExperienceRamp(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetLevelExperienceRamp", levelType); } - TArray * GetPlayerLevelEngramPoints() { return NativeCall *>(this, "UPrimalGameData.GetPlayerLevelEngramPoints"); } - //static TSubclassOf * GetRemappedClass(TSubclassOf * result, TArray * RemappedClasses, TSubclassOf ForClass) { return NativeCall *, TSubclassOf *, TArray *, TSubclassOf>(nullptr, "UPrimalGameData.GetRemappedClass", result, RemappedClasses, ForClass); } - //static void GetClassAdditions(TArray> * TheClassAdditions, TArray * ClassAdditions, TSubclassOf ForClass) { NativeCall> *, TArray *, TSubclassOf>(nullptr, "UPrimalGameData.GetClassAdditions", TheClassAdditions, ClassAdditions, ForClass); } - TArray * GetPlayerSpawnRegions(UWorld * ForWorld) { return NativeCall *, UWorld *>(this, "UPrimalGameData.GetPlayerSpawnRegions", ForWorld); } - bool MergeModData(UPrimalGameData * InMergeCanidate) { return NativeCall(this, "UPrimalGameData.MergeModData", InMergeCanidate); } - TArray * GetGlobalColorTable(TArray * result) { return NativeCall *, TArray *>(this, "UPrimalGameData.GetGlobalColorTable", result); } - //FDinoBabySetup * GetDinoBabySetup(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.GetDinoBabySetup", DinoNameTag); } + TSubclassOf* GetRedirectedClass(TSubclassOf* result, FString* key) { return NativeCall*, TSubclassOf*, FString*>(this, "UPrimalGameData.GetRedirectedClass", result, key); } + USoundBase* GetGenericCombatMusic_Implementation(APrimalCharacter* forCharacter, APrimalCharacter* forEnemy) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic_Implementation", forCharacter, forEnemy); } + FLevelExperienceRamp* GetLevelExperienceRamp(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetLevelExperienceRamp", levelType); } + TArray* GetPlayerLevelEngramPoints() { return NativeCall*>(this, "UPrimalGameData.GetPlayerLevelEngramPoints"); } + static TSubclassOf* GetRemappedClass(TSubclassOf* result, TArray* RemappedClasses, TSubclassOf ForClass) { return NativeCall*, TSubclassOf*, TArray*, TSubclassOf>(nullptr, "UPrimalGameData.GetRemappedClass", result, RemappedClasses, ForClass); } + static void GetClassAdditions(TArray>* TheClassAdditions, TArray* ClassAdditions, TSubclassOf ForClass) { NativeCall>*, TArray*, TSubclassOf>(nullptr, "UPrimalGameData.GetClassAdditions", TheClassAdditions, ClassAdditions, ForClass); } + TArray* GetPlayerSpawnRegions(UWorld* ForWorld) { return NativeCall*, UWorld*>(this, "UPrimalGameData.GetPlayerSpawnRegions", ForWorld); } + bool MergeModData(UPrimalGameData* InMergeCanidate) { return NativeCall(this, "UPrimalGameData.MergeModData", InMergeCanidate); } + TArray* GetGlobalColorTable(TArray* result) { return NativeCall*, TArray*>(this, "UPrimalGameData.GetGlobalColorTable", result); } + FDinoBabySetup* GetDinoBabySetup(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.GetDinoBabySetup", DinoNameTag); } + FDinoBabySetup* GetDinoGestationSetup(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.GetDinoGestationSetup", DinoNameTag); } static bool LocalIsPerMapExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(nullptr, "UPrimalGameData.LocalIsPerMapExplorerNoteUnlocked", ExplorerNoteIndex); } bool LocalIsTamedDinoTagUnlocked(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.LocalIsTamedDinoTagUnlocked", DinoNameTag); } + int GetEngramRequirementLevel(UClass* ItemClass) { return NativeCall(this, "UPrimalGameData.GetEngramRequirementLevel", ItemClass); } static bool LocalIsGlobalExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(nullptr, "UPrimalGameData.LocalIsGlobalExplorerNoteUnlocked", ExplorerNoteIndex); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimalGameData.GetPrivateStaticClass"); } - USoundBase * GetGenericCombatMusic(APrimalCharacter * forCharacter, APrimalCharacter * forEnemy) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic", forCharacter, forEnemy); } - void LoadedWorld(UWorld * TheWorld) { NativeCall(this, "UPrimalGameData.LoadedWorld", TheWorld); } + static UPrimalGameData* BPGetGameData() { return NativeCall(nullptr, "UPrimalGameData.BPGetGameData"); } + int BPGetItemQualityIndex(float ItemRating) { return NativeCall(this, "UPrimalGameData.BPGetItemQualityIndex", ItemRating); } + FString* GetExplorerNoteDescription(FString* result, int ExplorerNoteIndex) { return NativeCall(this, "UPrimalGameData.GetExplorerNoteDescription", result, ExplorerNoteIndex); } + int GetLevelMax(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetLevelMax", levelType); } + float GetXPMax(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetXPMax", levelType); } + float GetLevelXP(ELevelExperienceRampType::Type levelType, int forLevel) { return NativeCall(this, "UPrimalGameData.GetLevelXP", levelType, forLevel); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalGameData.StaticClass"); } + static void StaticRegisterNativesUPrimalGameData() { NativeCall(nullptr, "UPrimalGameData.StaticRegisterNativesUPrimalGameData"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalGameData.GetPrivateStaticClass", Package); } + void BPInitializeGameData() { NativeCall(this, "UPrimalGameData.BPInitializeGameData"); } + void BPMergeModGameData(UPrimalGameData* AnotherGameData) { NativeCall(this, "UPrimalGameData.BPMergeModGameData", AnotherGameData); } + USoundBase* GetGenericCombatMusic(APrimalCharacter* forCharacter, APrimalCharacter* forEnemy) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic", forCharacter, forEnemy); } + void LoadedWorld(UWorld* TheWorld) { NativeCall(this, "UPrimalGameData.LoadedWorld", TheWorld); } + void TickedWorld(UWorld* TheWorld, float DeltaTime) { NativeCall(this, "UPrimalGameData.TickedWorld", TheWorld, DeltaTime); } +}; + +struct ACustomGameMode : AShooterGameMode +{ }; struct UGameInstance : UObject //, FExec @@ -1178,40 +1583,7 @@ struct UGameInstance : UObject //, FExec FString PIEMapName;*/ }; -struct UShooterGameInstance : UGameInstance +struct ACustomActorList : AInfo { - /*FName CurrentState; - bool bCanUseUserGeneratedContent; - bool bHasCommunicationPrivilige; - TBaseDelegate_ThreeParams OnGetUserCommunicationPrivilegeCompleteDelegate; - FString WelcomeScreenMap; - FString MainMenuMap; - FName PendingState; - FShooterPendingMessage PendingMessage; - FShooterPendingInvite PendingInvite; - FString TravelURL; - bool bIsOnline; - bool bPendingEnableSplitscreen; - bool bIsLicensed; - int IgnorePairingChangeForControllerId; - EOnlineServerConnectionStatus::Type CurrentConnectionStatus; - TBaseDelegate_RetVal_OneParam TickDelegate; - TBaseDelegate_TwoParams OnEndSessionCompleteDelegate; - TWeakObjectPtr RagdollKinematicActor; - TWeakObjectPtr DayCycleManager; - TWeakObjectPtr SOTFNotificationManager; - int bOnReturnToMainMenuNotification; - FString OnReturnToMainMenuNotificationMessage; - FString OnReturnToMainMenuNotificationTitle; - FString GlobalMainMenuMessage; - FString GlobalMainMenuTitle; - TBaseDelegate_OneParam GlobalMainMenuDialogDelegate; - bool bHasReceivedNewsMessage; - bool bHasOfficialStatusMessage; - FString NewsMessage; - FString OfficialStatusMessage; - FWindowsCriticalSection TerrainGenerationMutex; - FString TerrainGenerationProgressBarMsg; - float SecondsSpentGeneratingTerrain; - bool TerrainIsGenerating;*/ + TArray ActorList; }; diff --git a/version/Core/Public/API/ARK/GameState.h b/version/Core/Public/API/ARK/GameState.h index 6d803b09..4836b1bf 100644 --- a/version/Core/Public/API/ARK/GameState.h +++ b/version/Core/Public/API/ARK/GameState.h @@ -1,14 +1,17 @@ #pragma once -struct AGameState +#include "API/Base.h" + +struct AGameState : AInfo { TSubclassOf& GameModeClassField() { return *GetNativePointerField*>(this, "AGameState.GameModeClass"); } - AGameMode * AuthorityGameModeField() { return *GetNativePointerField(this, "AGameState.AuthorityGameMode"); } + AGameMode* AuthorityGameModeField() { return *GetNativePointerField(this, "AGameState.AuthorityGameMode"); } + TSubclassOf& SpectatorClassField() { return *GetNativePointerField*>(this, "AGameState.SpectatorClass"); } FName& MatchStateField() { return *GetNativePointerField(this, "AGameState.MatchState"); } FName& PreviousMatchStateField() { return *GetNativePointerField(this, "AGameState.PreviousMatchState"); } int& ElapsedTimeField() { return *GetNativePointerField(this, "AGameState.ElapsedTime"); } - TArray PlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.PlayerArray"); } - TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.InactivePlayerArray"); } + TArray PlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.PlayerArray"); } + TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.InactivePlayerArray"); } // Bit fields @@ -16,28 +19,26 @@ struct AGameState // Functions - bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AGameState.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "AGameState.GetPrivateStaticClass"); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AGameState.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } void DefaultTimer() { NativeCall(this, "AGameState.DefaultTimer"); } void PostInitializeComponents() { NativeCall(this, "AGameState.PostInitializeComponents"); } void OnRep_GameModeClass() { NativeCall(this, "AGameState.OnRep_GameModeClass"); } - void OnRep_SpectatorClass() { NativeCall(this, "AGameState.OnRep_SpectatorClass"); } void ReceivedGameModeClass() { NativeCall(this, "AGameState.ReceivedGameModeClass"); } void ReceivedSpectatorClass() { NativeCall(this, "AGameState.ReceivedSpectatorClass"); } void SeamlessTravelTransitionCheckpoint(bool bToTransitionMap) { NativeCall(this, "AGameState.SeamlessTravelTransitionCheckpoint", bToTransitionMap); } - void AddPlayerState(APlayerState * PlayerState) { NativeCall(this, "AGameState.AddPlayerState", PlayerState); } - void RemovePlayerState(APlayerState * PlayerState) { NativeCall(this, "AGameState.RemovePlayerState", PlayerState); } + void AddPlayerState(APlayerState* PlayerState) { NativeCall(this, "AGameState.AddPlayerState", PlayerState); } + void RemovePlayerState(APlayerState* PlayerState) { NativeCall(this, "AGameState.RemovePlayerState", PlayerState); } void HandleMatchIsWaitingToStart() { NativeCall(this, "AGameState.HandleMatchIsWaitingToStart"); } void HandleMatchHasStarted() { NativeCall(this, "AGameState.HandleMatchHasStarted"); } bool HasMatchStarted() { return NativeCall(this, "AGameState.HasMatchStarted"); } bool IsMatchInProgress() { return NativeCall(this, "AGameState.IsMatchInProgress"); } bool HasMatchEnded() { return NativeCall(this, "AGameState.HasMatchEnded"); } + void InitializedGameState() { NativeCall(this, "AGameState.InitializedGameState"); } void OnRep_MatchState() { NativeCall(this, "AGameState.OnRep_MatchState"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } - void NetSpawnActorAtLocation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, AActor * EffectOwnerToIgnore, float MaxRangeToReplicate, USceneComponent * attachToComponent, int dataIndex, FName attachSocketName, bool bOnlySendToEffectOwner) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, AActor *, float, USceneComponent *, int, FName, bool>(this, "AGameState.NetSpawnActorAtLocation", AnActorClass, AtLocation, AtRotation, EffectOwnerToIgnore, MaxRangeToReplicate, attachToComponent, dataIndex, attachSocketName, bOnlySendToEffectOwner); } - bool Semaphore_TryGrab(FName SemaphoreName, AActor * InObject, float PriorityWeight, int MaxToAllocate) { return NativeCall(this, "AGameState.Semaphore_TryGrab", SemaphoreName, InObject, PriorityWeight, MaxToAllocate); } - bool Semaphore_Release(FName SemaphoreName, AActor * InObject) { return NativeCall(this, "AGameState.Semaphore_Release", SemaphoreName, InObject); } - static void StaticRegisterNativesAGameState() { NativeCall(nullptr, "AGameState.StaticRegisterNativesAGameState"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } + void NetSpawnActorAtLocation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, AActor* EffectOwnerToIgnore, float MaxRangeToReplicate, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName, bool bOnlySendToEffectOwner) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, AActor*, float, USceneComponent*, int, FName, bool>(this, "AGameState.NetSpawnActorAtLocation", AnActorClass, AtLocation, AtRotation, EffectOwnerToIgnore, MaxRangeToReplicate, attachToComponent, dataIndex, attachSocketName, bOnlySendToEffectOwner); } + bool Semaphore_TryGrab(FName SemaphoreName, AActor* InObject, float PriorityWeight, int MaxToAllocate) { return NativeCall(this, "AGameState.Semaphore_TryGrab", SemaphoreName, InObject, PriorityWeight, MaxToAllocate); } + bool Semaphore_Release(FName SemaphoreName, AActor* InObject) { return NativeCall(this, "AGameState.Semaphore_Release", SemaphoreName, InObject); } }; struct AShooterGameState : AGameState @@ -50,9 +51,14 @@ struct AShooterGameState : AGameState int& NumPlayerConnectedField() { return *GetNativePointerField(this, "AShooterGameState.NumPlayerConnected"); } bool& bServerUseLocalizedChatField() { return *GetNativePointerField(this, "AShooterGameState.bServerUseLocalizedChat"); } float& LocalizedChatRadiusField() { return *GetNativePointerField(this, "AShooterGameState.LocalizedChatRadius"); } + float& VoiceSuperRangeRadiusField() { return *GetNativePointerField(this, "AShooterGameState.VoiceSuperRangeRadius"); } + float& VoiceWhisperRangeRadiusField() { return *GetNativePointerField(this, "AShooterGameState.VoiceWhisperRangeRadius"); } float& LocalizedChatRadiusUnconsiousScaleField() { return *GetNativePointerField(this, "AShooterGameState.LocalizedChatRadiusUnconsiousScale"); } + unsigned int& VivoxAttenuationModelField() { return *GetNativePointerField(this, "AShooterGameState.VivoxAttenuationModel"); } + float& VivoxMinDistanceField() { return *GetNativePointerField(this, "AShooterGameState.VivoxMinDistance"); } + float& VivoxRolloffField() { return *GetNativePointerField(this, "AShooterGameState.VivoxRolloff"); } float& ServerFramerateField() { return *GetNativePointerField(this, "AShooterGameState.ServerFramerate"); } - FString& NewStructureDestructionTagField() { return *GetNativePointerField(this, "AShooterGameState.NewStructureDestructionTag"); } + FString & NewStructureDestructionTagField() { return *GetNativePointerField(this, "AShooterGameState.NewStructureDestructionTag"); } int& DayNumberField() { return *GetNativePointerField(this, "AShooterGameState.DayNumber"); } float& DayTimeField() { return *GetNativePointerField(this, "AShooterGameState.DayTime"); } long double& NetworkTimeField() { return *GetNativePointerField(this, "AShooterGameState.NetworkTime"); } @@ -86,6 +92,7 @@ struct AShooterGameState : AGameState bool& bDisableStructureDecayPvEField() { return *GetNativePointerField(this, "AShooterGameState.bDisableStructureDecayPvE"); } bool& bDisableDinoDecayPvEField() { return *GetNativePointerField(this, "AShooterGameState.bDisableDinoDecayPvE"); } bool& bAllowCaveBuildingPvEField() { return *GetNativePointerField(this, "AShooterGameState.bAllowCaveBuildingPvE"); } + bool& bAllowCaveBuildingPvPField() { return *GetNativePointerField(this, "AShooterGameState.bAllowCaveBuildingPvP"); } bool& bPreventDownloadSurvivorsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventDownloadSurvivors"); } bool& bReachedPlatformStructureLimitField() { return *GetNativePointerField(this, "AShooterGameState.bReachedPlatformStructureLimit"); } bool& bAdminLoggingField() { return *GetNativePointerField(this, "AShooterGameState.bAdminLogging"); } @@ -101,34 +108,43 @@ struct AShooterGameState : AGameState bool& bAllowSpawnPointSelectionField() { return *GetNativePointerField(this, "AShooterGameState.bAllowSpawnPointSelection"); } int& MaxTamedDinosField() { return *GetNativePointerField(this, "AShooterGameState.MaxTamedDinos"); } bool& bDisableSpawnAnimationsField() { return *GetNativePointerField(this, "AShooterGameState.bDisableSpawnAnimations"); } - FString& PlayerListStringField() { return *GetNativePointerField(this, "AShooterGameState.PlayerListString"); } + FString & PlayerListStringField() { return *GetNativePointerField(this, "AShooterGameState.PlayerListString"); } float& GlobalSpoilingTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalSpoilingTimeMultiplier"); } float& GlobalItemDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalItemDecompositionTimeMultiplier"); } int& MaxNumberOfPlayersInTribeField() { return *GetNativePointerField(this, "AShooterGameState.MaxNumberOfPlayersInTribe"); } float& TribeSlotReuseCooldownField() { return *GetNativePointerField(this, "AShooterGameState.TribeSlotReuseCooldown"); } float& GlobalCorpseDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalCorpseDecompositionTimeMultiplier"); } float& EggHatchSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.EggHatchSpeedMultiplier"); } - FName& ActiveEventField() { return *GetNativePointerField(this, "AShooterGameState.ActiveEvent"); } + FName & ActiveEventField() { return *GetNativePointerField(this, "AShooterGameState.ActiveEvent"); } bool& bAllowPaintingWithoutResourcesField() { return *GetNativePointerField(this, "AShooterGameState.bAllowPaintingWithoutResources"); } bool& bEnableExtraStructurePreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameState.bEnableExtraStructurePreventionVolumes"); } + TArray & OverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameState.OverrideItemCraftingCosts"); } + TArray & OverrideItemMaxQuantityField() { return *GetNativePointerField*>(this, "AShooterGameState.OverrideItemMaxQuantity"); } long double& LastServerSaveTimeField() { return *GetNativePointerField(this, "AShooterGameState.LastServerSaveTime"); } float& ServerSaveIntervalField() { return *GetNativePointerField(this, "AShooterGameState.ServerSaveInterval"); } float& TribeNameChangeCooldownField() { return *GetNativePointerField(this, "AShooterGameState.TribeNameChangeCooldown"); } + float& PlatformSaddleBuildAreaBoundsMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PlatformSaddleBuildAreaBoundsMultiplier"); } + bool& bAlwaysAllowStructurePickupField() { return *GetNativePointerField(this, "AShooterGameState.bAlwaysAllowStructurePickup"); } + float& StructurePickupTimeAfterPlacementField() { return *GetNativePointerField(this, "AShooterGameState.StructurePickupTimeAfterPlacement"); } + float& StructurePickupHoldDurationField() { return *GetNativePointerField(this, "AShooterGameState.StructurePickupHoldDuration"); } + bool& bAllowIntegratedSPlusStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bAllowIntegratedSPlusStructures"); } bool& bAllowHideDamageSourceFromLogsField() { return *GetNativePointerField(this, "AShooterGameState.bAllowHideDamageSourceFromLogs"); } - UAudioComponent * DynamicMusicAudioComponentField() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent"); } - UAudioComponent * DynamicMusicAudioComponent2Field() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent2"); } + UAudioComponent * DynamicMusicAudioComponentField() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent"); } + UAudioComponent * DynamicMusicAudioComponent2Field() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent2"); } bool& bPlayingDynamicMusicField() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic"); } bool& bPlayingDynamicMusic1Field() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic1"); } bool& bPlayingDynamicMusic2Field() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic2"); } float& LastHadMusicTimeField() { return *GetNativePointerField(this, "AShooterGameState.LastHadMusicTime"); } - TArray& LevelExperienceRampOverridesField() { return *GetNativePointerField*>(this, "AShooterGameState.LevelExperienceRampOverrides"); } - TArray& PreventDinoTameClassNamesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventDinoTameClassNames"); } + TArray & LevelExperienceRampOverridesField() { return *GetNativePointerField*>(this, "AShooterGameState.LevelExperienceRampOverrides"); } + TArray & OverrideEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameState.OverrideEngramEntries"); } + TArray & PreventDinoTameClassNamesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventDinoTameClassNames"); } float& ListenServerTetherDistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.ListenServerTetherDistanceMultiplier"); } - FString& PGMapNameField() { return *GetNativePointerField(this, "AShooterGameState.PGMapName"); } - TArray& SupportedSpawnRegionsField() { return *GetNativePointerField*>(this, "AShooterGameState.SupportedSpawnRegions"); } - USoundBase * StaticOverrideMusicField() { return *GetNativePointerField(this, "AShooterGameState.StaticOverrideMusic"); } + FString & PGMapNameField() { return *GetNativePointerField(this, "AShooterGameState.PGMapName"); } + TArray & SupportedSpawnRegionsField() { return *GetNativePointerField*>(this, "AShooterGameState.SupportedSpawnRegions"); } + UPaintingCache * PaintingCacheField() { return *GetNativePointerField(this, "AShooterGameState.PaintingCache"); } + USoundBase * StaticOverrideMusicField() { return *GetNativePointerField(this, "AShooterGameState.StaticOverrideMusic"); } bool& bEnableDeathTeamSpectatorField() { return *GetNativePointerField(this, "AShooterGameState.bEnableDeathTeamSpectator"); } - FVector& PlayerFloatingHUDOffsetField() { return *GetNativePointerField(this, "AShooterGameState.PlayerFloatingHUDOffset"); } + FVector & PlayerFloatingHUDOffsetField() { return *GetNativePointerField(this, "AShooterGameState.PlayerFloatingHUDOffset"); } float& PlayerFloatingHUDOffsetScreenYField() { return *GetNativePointerField(this, "AShooterGameState.PlayerFloatingHUDOffsetScreenY"); } float& StructureDamageRepairCooldownField() { return *GetNativePointerField(this, "AShooterGameState.StructureDamageRepairCooldown"); } bool& bForceAllStructureLockingField() { return *GetNativePointerField(this, "AShooterGameState.bForceAllStructureLocking"); } @@ -136,8 +152,8 @@ struct AShooterGameState : AGameState bool& bAllowRaidDinoFeedingField() { return *GetNativePointerField(this, "AShooterGameState.bAllowRaidDinoFeeding"); } float& CustomRecipeEffectivenessMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.CustomRecipeEffectivenessMultiplier"); } float& CustomRecipeSkillMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.CustomRecipeSkillMultiplier"); } - USoundBase * OverrideAreaMusicField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusic"); } - FVector& OverrideAreaMusicPositionField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusicPosition"); } + USoundBase * OverrideAreaMusicField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusic"); } + FVector & OverrideAreaMusicPositionField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusicPosition"); } float& OverrideAreaMusicRangeField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusicRange"); } bool& bAllowUnclaimDinosField() { return *GetNativePointerField(this, "AShooterGameState.bAllowUnclaimDinos"); } float& FloatingHUDRangeField() { return *GetNativePointerField(this, "AShooterGameState.FloatingHUDRange"); } @@ -146,29 +162,32 @@ struct AShooterGameState : AGameState float& ExtinctionEventPercentField() { return *GetNativePointerField(this, "AShooterGameState.ExtinctionEventPercent"); } int& ExtinctionEventSecondsRemainingField() { return *GetNativePointerField(this, "AShooterGameState.ExtinctionEventSecondsRemaining"); } bool& bDoExtinctionEventField() { return *GetNativePointerField(this, "AShooterGameState.bDoExtinctionEvent"); } + TArray & InventoryComponentAppendsField() { return *GetNativePointerField*>(this, "AShooterGameState.InventoryComponentAppends"); } bool& bPreventOfflinePvPField() { return *GetNativePointerField(this, "AShooterGameState.bPreventOfflinePvP"); } bool& bPvPDinoDecayField() { return *GetNativePointerField(this, "AShooterGameState.bPvPDinoDecay"); } bool& bAllowUnclaimDinosConfigField() { return *GetNativePointerField(this, "AShooterGameState.bAllowUnclaimDinosConfig"); } bool& bForceUseInventoryAppendsField() { return *GetNativePointerField(this, "AShooterGameState.bForceUseInventoryAppends"); } bool& bOverideStructurePlatformPreventionField() { return *GetNativePointerField(this, "AShooterGameState.bOverideStructurePlatformPrevention"); } - TArray& PreventOfflinePvPLiveTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPLiveTeams"); } - TArray& PreventOfflinePvPExpiringTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTeams"); } - TArray& PreventOfflinePvPExpiringTimesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTimes"); } - TMap >& PreventOfflinePvPLiveTimesField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPLiveTimes"); } - TMap >& PreventOfflinePvPFirstLiveTimeField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPFirstLiveTime"); } + float& ItemStackSizeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.ItemStackSizeMultiplier"); } + TArray & PreventOfflinePvPLiveTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPLiveTeams"); } + TArray & PreventOfflinePvPExpiringTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTeams"); } + TArray & PreventOfflinePvPExpiringTimesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTimes"); } + TMap > & PreventOfflinePvPLiveTimesField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPLiveTimes"); } + TMap > & PreventOfflinePvPFirstLiveTimeField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPFirstLiveTime"); } bool& bAllowAnyoneBabyImprintCuddleField() { return *GetNativePointerField(this, "AShooterGameState.bAllowAnyoneBabyImprintCuddle"); } bool& bDisableImprintDinoBuffField() { return *GetNativePointerField(this, "AShooterGameState.bDisableImprintDinoBuff"); } int& MaxPersonalTamedDinosField() { return *GetNativePointerField(this, "AShooterGameState.MaxPersonalTamedDinos"); } + TArray & FloatingTextEntriesField() { return *GetNativePointerField*>(this, "AShooterGameState.FloatingTextEntries"); } bool& bIsCustomMapField() { return *GetNativePointerField(this, "AShooterGameState.bIsCustomMap"); } bool& bIsClientField() { return *GetNativePointerField(this, "AShooterGameState.bIsClient"); } bool& bIsDedicatedServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsDedicatedServer"); } - FString& ClusterIdField() { return *GetNativePointerField(this, "AShooterGameState.ClusterId"); } - FString& AmazonS3AccessKeyIDField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3AccessKeyID"); } - FString& AmazonS3SecretAccessKeyField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3SecretAccessKey"); } - FString& AmazonS3BucketNameField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3BucketName"); } - FString& ServerSessionNameField() { return *GetNativePointerField(this, "AShooterGameState.ServerSessionName"); } + FString & ClusterIdField() { return *GetNativePointerField(this, "AShooterGameState.ClusterId"); } + FString & AmazonS3AccessKeyIDField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3AccessKeyID"); } + FString & AmazonS3SecretAccessKeyField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3SecretAccessKey"); } + FString & AmazonS3BucketNameField() { return *GetNativePointerField(this, "AShooterGameState.AmazonS3BucketName"); } + FString & ServerSessionNameField() { return *GetNativePointerField(this, "AShooterGameState.ServerSessionName"); } bool& bPreventTribeAlliancesField() { return *GetNativePointerField(this, "AShooterGameState.bPreventTribeAlliances"); } - FString& LoadForceRespawnDinosTagField() { return *GetNativePointerField(this, "AShooterGameState.LoadForceRespawnDinosTag"); } + FString & LoadForceRespawnDinosTagField() { return *GetNativePointerField(this, "AShooterGameState.LoadForceRespawnDinosTag"); } bool& bOnlyDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bOnlyDecayUnsnappedCoreStructures"); } bool& bFastDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bFastDecayUnsnappedCoreStructures"); } bool& bServerUseDinoListField() { return *GetNativePointerField(this, "AShooterGameState.bServerUseDinoList"); } @@ -178,6 +197,8 @@ struct AShooterGameState : AGameState float& HairGrowthSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.HairGrowthSpeedMultiplier"); } float& FastDecayIntervalField() { return *GetNativePointerField(this, "AShooterGameState.FastDecayInterval"); } float& OxygenSwimSpeedStatMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.OxygenSwimSpeedStatMultiplier"); } + FOnHTTPGetProcessed & OnHTTPGetResponseField() { return *GetNativePointerField(this, "AShooterGameState.OnHTTPGetResponse"); } + FOnHTTPPostResponse & OnHTTPPostResponseField() { return *GetNativePointerField(this, "AShooterGameState.OnHTTPPostResponse"); } bool& bAllowMultipleAttachedC4Field() { return *GetNativePointerField(this, "AShooterGameState.bAllowMultipleAttachedC4"); } bool& bCrossARKAllowForeignDinoDownloadsField() { return *GetNativePointerField(this, "AShooterGameState.bCrossARKAllowForeignDinoDownloads"); } long double& LastPlayedDynamicMusic1Field() { return *GetNativePointerField(this, "AShooterGameState.LastPlayedDynamicMusic1"); } @@ -191,7 +212,7 @@ struct AShooterGameState : AGameState int& MaxTribesPerAllianceField() { return *GetNativePointerField(this, "AShooterGameState.MaxTribesPerAlliance"); } bool& bIsLegacyServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsLegacyServer"); } bool& bDisableDinoDecayClaimingField() { return *GetNativePointerField(this, "AShooterGameState.bDisableDinoDecayClaiming"); } - FName& UseStructurePreventionVolumeTagField() { return *GetNativePointerField(this, "AShooterGameState.UseStructurePreventionVolumeTag"); } + FName & UseStructurePreventionVolumeTagField() { return *GetNativePointerField(this, "AShooterGameState.UseStructurePreventionVolumeTag"); } int& MaxStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameState.MaxStructuresInSmallRadius"); } float& RadiusStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameState.RadiusStructuresInSmallRadius"); } bool& bUseTameLimitForStructuresOnlyField() { return *GetNativePointerField(this, "AShooterGameState.bUseTameLimitForStructuresOnly"); } @@ -200,62 +221,97 @@ struct AShooterGameState : AGameState int& LimitTurretsNumField() { return *GetNativePointerField(this, "AShooterGameState.LimitTurretsNum"); } bool& bForceAllowAllStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bForceAllowAllStructures"); } bool& bShowCreativeModeField() { return *GetNativePointerField(this, "AShooterGameState.bShowCreativeMode"); } + TArray & PlayerLocatorEffectMapsField() { return *GetNativePointerField*>(this, "AShooterGameState.PlayerLocatorEffectMaps"); } int& AmbientSoundCheckIncrementField() { return *GetNativePointerField(this, "AShooterGameState.AmbientSoundCheckIncrement"); } + int& ThrottledTicksModField() { return *GetNativePointerField(this, "AShooterGameState.ThrottledTicksMod"); } + int& PerformanceThrottledTicksModField() { return *GetNativePointerField(this, "AShooterGameState.PerformanceThrottledTicksMod"); } float& PreventOfflinePvPConnectionInvincibleIntervalField() { return *GetNativePointerField(this, "AShooterGameState.PreventOfflinePvPConnectionInvincibleInterval"); } float& PassiveTameIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PassiveTameIntervalMultiplier"); } + TArray> & UniqueDinosField() { return *GetNativePointerField>*>(this, "AShooterGameState.UniqueDinos"); } + unsigned int& MinimumUniqueDownloadIntervalField() { return *GetNativePointerField(this, "AShooterGameState.MinimumUniqueDownloadInterval"); } + unsigned int& MaximumUniqueDownloadIntervalField() { return *GetNativePointerField(this, "AShooterGameState.MaximumUniqueDownloadInterval"); } + bool& bIgnoreStructuresPreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameState.bIgnoreStructuresPreventionVolumes"); } + UPrimalWorldSettingsEventOverrides * ActiveEventOverridesField() { return *GetNativePointerField(this, "AShooterGameState.ActiveEventOverrides"); } + bool& bIgnoreLimitMaxStructuresInRangeTypeFlagField() { return *GetNativePointerField(this, "AShooterGameState.bIgnoreLimitMaxStructuresInRangeTypeFlag"); } + TArray & MassTeleportQueueField() { return *GetNativePointerField*>(this, "AShooterGameState.MassTeleportQueue"); } + TArray MassTeleportQueueToRemoveField() { return *GetNativePointerField*>(this, "AShooterGameState.MassTeleportQueueToRemove"); } + TArray & MassTeleportQueueToAddField() { return *GetNativePointerField*>(this, "AShooterGameState.MassTeleportQueueToAdd"); } + bool& bAllowLowGravitySpinField() { return *GetNativePointerField(this, "AShooterGameState.bAllowLowGravitySpin"); } + TArray & BiomeBuffTagsField() { return *GetNativePointerField*>(this, "AShooterGameState.BiomeBuffTags"); } // Functions - UObject * GetUObjectInterfaceHUDInterface() { return NativeCall(this, "AShooterGameState.GetUObjectInterfaceHUDInterface"); } - static APrimalBuff * BaseSpawnBuffAndAttachToCharacter(UClass * Buff, APrimalCharacter * PrimalCharacter, float ExperiencePoints) { return NativeCall(nullptr, "AShooterGameState.BaseSpawnBuffAndAttachToCharacter", Buff, PrimalCharacter, ExperiencePoints); } + static UClass * StaticClass() { return NativeCall(nullptr, "AShooterGameState.StaticClass"); } + UObject * GetUObjectInterfaceHUDInterface() { return NativeCall(this, "AShooterGameState.GetUObjectInterfaceHUDInterface"); } + static void BaseDrawTileOnCanvas(AShooterHUD * HUD, UTexture * Tex, float X, float Y, float XL, float YL, float U, float V, float UL, float VL, FColor DrawColor) { NativeCall(nullptr, "AShooterGameState.BaseDrawTileOnCanvas", HUD, Tex, X, Y, XL, YL, U, V, UL, VL, DrawColor); } + static APrimalBuff * BaseSpawnBuffAndAttachToCharacter(UClass * Buff, APrimalCharacter * PrimalCharacter, float ExperiencePoints) { return NativeCall(nullptr, "AShooterGameState.BaseSpawnBuffAndAttachToCharacter", Buff, PrimalCharacter, ExperiencePoints); } void Destroyed() { NativeCall(this, "AShooterGameState.Destroyed"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool IsClusterServer() { return NativeCall(this, "AShooterGameState.IsClusterServer"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall*>(this, "AShooterGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool GetItemMaxQuantityOverride(TSubclassOf ForClass, FMaxItemQuantityOverride * OutMaxQuantity) { return NativeCall, FMaxItemQuantityOverride*>(this, "AShooterGameState.GetItemMaxQuantityOverride", ForClass, OutMaxQuantity); } void OnRep_SupportedSpawnRegions() { NativeCall(this, "AShooterGameState.OnRep_SupportedSpawnRegions"); } void OnRep_ReplicateLocalizedChatRadius() { NativeCall(this, "AShooterGameState.OnRep_ReplicateLocalizedChatRadius"); } + void RequestFinishAndExitToMainMenu() { NativeCall(this, "AShooterGameState.RequestFinishAndExitToMainMenu"); } void Tick(float DeltaSeconds) { NativeCall(this, "AShooterGameState.Tick", DeltaSeconds); } + FVector * GetLocalPlayerLocation(FVector * result) { return NativeCall(this, "AShooterGameState.GetLocalPlayerLocation", result); } + float GetServerFramerate() { return NativeCall(this, "AShooterGameState.GetServerFramerate"); } void UpdateDynamicMusic(float DeltaSeconds) { NativeCall(this, "AShooterGameState.UpdateDynamicMusic", DeltaSeconds); } - void CreateCustomGameUI(AShooterPlayerController * SceneOwner) { NativeCall(this, "AShooterGameState.CreateCustomGameUI", SceneOwner); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterGameState.DrawHUD", HUD); } + void CreateCustomGameUI(AShooterPlayerController * SceneOwner) { NativeCall(this, "AShooterGameState.CreateCustomGameUI", SceneOwner); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterGameState.DrawHUD", HUD); } void PostInitializeComponents() { NativeCall(this, "AShooterGameState.PostInitializeComponents"); } - float GetClientReplicationRateFor(UNetConnection * InConnection, AActor * InActor) { return NativeCall(this, "AShooterGameState.GetClientReplicationRateFor", InConnection, InActor); } - static long double GetNetworkTimeDelta(AShooterGameState * gameState, long double netTime, bool bTimeUntil) { return NativeCall(nullptr, "AShooterGameState.GetNetworkTimeDelta", gameState, netTime, bTimeUntil); } + void UpdateFunctionExpense(int FunctionType) { NativeCall(this, "AShooterGameState.UpdateFunctionExpense", FunctionType); } + float GetClientReplicationRateFor(UNetConnection * InConnection, AActor * InActor) { return NativeCall(this, "AShooterGameState.GetClientReplicationRateFor", InConnection, InActor); } + static long double GetNetworkTimeDelta(AShooterGameState * gameState, long double netTime, bool bTimeUntil) { return NativeCall(nullptr, "AShooterGameState.GetNetworkTimeDelta", gameState, netTime, bTimeUntil); } void LoadedFromSaveGame() { NativeCall(this, "AShooterGameState.LoadedFromSaveGame"); } + void Serialize(FArchive * Ar) { NativeCall(this, "AShooterGameState.Serialize", Ar); } void BeginPlay() { NativeCall(this, "AShooterGameState.BeginPlay"); } - float GetMatineePlayRate(AActor * forMatineeActor) { return NativeCall(this, "AShooterGameState.GetMatineePlayRate", forMatineeActor); } - void NotifyPlayerDied(AShooterCharacter * theShooterChar, AShooterPlayerController * prevController, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "AShooterGameState.NotifyPlayerDied", theShooterChar, prevController, InstigatingPawn, DamageCauser); } - bool AllowDinoTame(APrimalDinoCharacter * DinoChar, AShooterPlayerController * ForPC) { return NativeCall(this, "AShooterGameState.AllowDinoTame", DinoChar, ForPC); } - bool AllowDinoClassTame(TSubclassOf DinoCharClass, AShooterPlayerController * ForPC) { return NativeCall, AShooterPlayerController *>(this, "AShooterGameState.AllowDinoClassTame", DinoCharClass, ForPC); } - TArray * BaseGetAllShooterControllers(TArray * result) { return NativeCall *, TArray *>(this, "AShooterGameState.BaseGetAllShooterControllers", result); } - TArray * BaseGetAllShooterCharactersOfTeam(TArray * result, int Team) { return NativeCall *, TArray *, int>(this, "AShooterGameState.BaseGetAllShooterCharactersOfTeam", result, Team); } - TArray * BaseGetAllShooterCharacters(TArray * result) { return NativeCall *, TArray *>(this, "AShooterGameState.BaseGetAllShooterCharacters", result); } - TArray * BaseGetAllDinoCharactersOfTeam(TArray * result, int Team) { return NativeCall *, TArray *, int>(this, "AShooterGameState.BaseGetAllDinoCharactersOfTeam", result, Team); } + float GetMatineePlayRate(AActor * forMatineeActor) { return NativeCall(this, "AShooterGameState.GetMatineePlayRate", forMatineeActor); } + void NotifyPlayerDied(AShooterCharacter * theShooterChar, AShooterPlayerController * prevController, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "AShooterGameState.NotifyPlayerDied", theShooterChar, prevController, InstigatingPawn, DamageCauser); } + bool AllowDinoTame(APrimalDinoCharacter * DinoChar, AShooterPlayerController * ForPC) { return NativeCall(this, "AShooterGameState.AllowDinoTame", DinoChar, ForPC); } + bool AllowDinoClassTame(TSubclassOf DinoCharClass, AShooterPlayerController * ForPC) { return NativeCall, AShooterPlayerController*>(this, "AShooterGameState.AllowDinoClassTame", DinoCharClass, ForPC); } + FString * GetDayTimeString(FString * result) { return NativeCall(this, "AShooterGameState.GetDayTimeString", result); } + TArray * BaseGetAllShooterControllers(TArray * result) { return NativeCall*, TArray*>(this, "AShooterGameState.BaseGetAllShooterControllers", result); } + TArray * BaseGetAllShooterCharactersOfTeam(TArray * result, int Team) { return NativeCall*, TArray*, int>(this, "AShooterGameState.BaseGetAllShooterCharactersOfTeam", result, Team); } + TArray * BaseGetAllShooterCharacters(TArray * result) { return NativeCall*, TArray*>(this, "AShooterGameState.BaseGetAllShooterCharacters", result); } + TArray * BaseGetAllDinoCharactersOfTeam(TArray * result, int Team) { return NativeCall*, TArray*, int>(this, "AShooterGameState.BaseGetAllDinoCharactersOfTeam", result, Team); } void InitializedGameState() { NativeCall(this, "AShooterGameState.InitializedGameState"); } bool IsTeamIDInvincible(int TargetingTeamID, bool bInvincibleOnlyWhenOffline) { return NativeCall(this, "AShooterGameState.IsTeamIDInvincible", TargetingTeamID, bInvincibleOnlyWhenOffline); } long double GetOfflineDamagePreventionTime(int TargetingTeamID) { return NativeCall(this, "AShooterGameState.GetOfflineDamagePreventionTime", TargetingTeamID); } - void NetUpdateOfflinePvPLiveTeams_Implementation(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall *>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams_Implementation", NewPreventOfflinePvPLiveTeams); } - void NetUpdateOfflinePvPExpiringTeams_Implementation(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall *, TArray *>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams_Implementation", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } + void NetUpdateOfflinePvPLiveTeams_Implementation(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall*>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams_Implementation", NewPreventOfflinePvPLiveTeams); } + void NetUpdateOfflinePvPExpiringTeams_Implementation(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall*, TArray*>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams_Implementation", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } void UpdatePreventOfflinePvPStatus() { NativeCall(this, "AShooterGameState.UpdatePreventOfflinePvPStatus"); } void AddFloatingText(FVector AtLocation, FString FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime) { NativeCall(this, "AShooterGameState.AddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime); } void AddFloatingDamageText(FVector AtLocation, int DamageAmount, int FromTeamID) { NativeCall(this, "AShooterGameState.AddFloatingDamageText", AtLocation, DamageAmount, FromTeamID); } void NetAddFloatingDamageText(FVector AtLocation, int DamageAmount, int FromTeamID, int OnlySendToTeamID) { NativeCall(this, "AShooterGameState.NetAddFloatingDamageText", AtLocation, DamageAmount, FromTeamID, OnlySendToTeamID); } void NetAddFloatingText(FVector AtLocation, FString FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime, int OnlySendToTeamID) { NativeCall(this, "AShooterGameState.NetAddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime, OnlySendToTeamID); } - FString * GetCleanServerSessionName(FString * result) { return NativeCall(this, "AShooterGameState.GetCleanServerSessionName", result); } - void ForceNetUpdate(bool bDormantDontReplicateProperties) { NativeCall(this, "AShooterGameState.ForceNetUpdate", bDormantDontReplicateProperties); } + FString * GetCleanServerSessionName(FString * result) { return NativeCall(this, "AShooterGameState.GetCleanServerSessionName", result); } + void ForceNetUpdate(bool bDormantDontReplicateProperties, bool bAbsoluteForceNetUpdate, bool bDontUpdateChannel) { NativeCall(this, "AShooterGameState.ForceNetUpdate", bDormantDontReplicateProperties, bAbsoluteForceNetUpdate, bDontUpdateChannel); } void WorldCompositionRescan() { NativeCall(this, "AShooterGameState.WorldCompositionRescan"); } void HTTPGetRequest(FString InURL) { NativeCall(this, "AShooterGameState.HTTPGetRequest", InURL); } - void HTTPGetRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPGetRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } + void HTTPGetRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPGetRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } void HTTPPostRequest(FString InURL, FString Content) { NativeCall(this, "AShooterGameState.HTTPPostRequest", InURL, Content); } - void HTTPPostRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPPostRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } - void LevelAddedToWorld(ULevel * addedLevel) { NativeCall(this, "AShooterGameState.LevelAddedToWorld", addedLevel); } + void HTTPPostRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPPostRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } + void LevelAddedToWorld(ULevel * addedLevel) { NativeCall(this, "AShooterGameState.LevelAddedToWorld", addedLevel); } + TArray * GetIniArray(TArray * result, FString SectionName) { return NativeCall*, TArray*, FString>(this, "AShooterGameState.GetIniArray", result, SectionName); } bool AllowDownloadDino_Implementation(TSubclassOf TheDinoClass) { return NativeCall>(this, "AShooterGameState.AllowDownloadDino_Implementation", TheDinoClass); } + void DinoDownloaded(TSubclassOf TheDinoClass) { NativeCall>(this, "AShooterGameState.DinoDownloaded", TheDinoClass); } bool IsEngramClassHidden(TSubclassOf ForItemClass) { return NativeCall>(this, "AShooterGameState.IsEngramClassHidden", ForItemClass); } + void Multi_SpawnCosmeticActor_Implementation(TSubclassOf SpawnActorOfClass, FVector SpawnAtLocation, FRotator SpawnWithRotation) { NativeCall, FVector, FRotator>(this, "AShooterGameState.Multi_SpawnCosmeticActor_Implementation", SpawnActorOfClass, SpawnAtLocation, SpawnWithRotation); } + bool StartMassTeleport(FMassTeleportData * NewMassTeleportData, FTeleportDestination * TeleportDestination, AActor * InitiatingActor, TArray TeleportActors, TSubclassOf BuffToApply, const float TeleportDuration, const float TeleportRadius, const bool bTeleportingSnapsToGround, const bool bMaintainRotation) { return NativeCall, TSubclassOf, const float, const float, const bool, const bool>(this, "AShooterGameState.StartMassTeleport", NewMassTeleportData, TeleportDestination, InitiatingActor, TeleportActors, BuffToApply, TeleportDuration, TeleportRadius, bTeleportingSnapsToGround, bMaintainRotation); } + bool CancelMassTeleport(AActor * WithInitiatingActor) { return NativeCall(this, "AShooterGameState.CancelMassTeleport", WithInitiatingActor); } + bool ShouldMassTeleportMoveActor(AActor * ForActor, FMassTeleportData * WithMassTeleportData) { return NativeCall(this, "AShooterGameState.ShouldMassTeleportMoveActor", ForActor, WithMassTeleportData); } + void Tick_MassTeleport(float DeltaTime) { NativeCall(this, "AShooterGameState.Tick_MassTeleport", DeltaTime); } + void RemoveIrrelevantBiomeBuffs(APrimalCharacter * PrimalChar) { NativeCall(this, "AShooterGameState.RemoveIrrelevantBiomeBuffs", PrimalChar); } + static bool IsValidMassTeleportData(FMassTeleportData * CheckData) { return NativeCall(nullptr, "AShooterGameState.IsValidMassTeleportData", CheckData); } + void PrepareActorForMassTeleport(AActor * PrepareActor, FMassTeleportData * WithMassTeleportData) { NativeCall(this, "AShooterGameState.PrepareActorForMassTeleport", PrepareActor, WithMassTeleportData); } static void StaticRegisterNativesAShooterGameState() { NativeCall(nullptr, "AShooterGameState.StaticRegisterNativesAShooterGameState"); } + static UClass * GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterGameState.GetPrivateStaticClass", Package); } bool AllowDownloadDino(TSubclassOf TheDinoClass) { return NativeCall>(this, "AShooterGameState.AllowDownloadDino", TheDinoClass); } - void NetUpdateOfflinePvPExpiringTeams(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall *, TArray *>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } - void NetUpdateOfflinePvPLiveTeams(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall *>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams", NewPreventOfflinePvPLiveTeams); } + void NetUpdateOfflinePvPExpiringTeams(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall*, TArray*>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } + void NetUpdateOfflinePvPLiveTeams(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall*>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams", NewPreventOfflinePvPLiveTeams); } }; -struct AGameSession +struct AGameSession { int& MaxSpectatorsField() { return *GetNativePointerField(this, "AGameSession.MaxSpectators"); } int& MaxPlayersField() { return *GetNativePointerField(this, "AGameSession.MaxPlayers"); } @@ -266,16 +322,16 @@ struct AGameSession // Functions bool RequiresPushToTalk() { return NativeCall(this, "AGameSession.RequiresPushToTalk"); } - void InitOptions(FString * Options) { NativeCall(this, "AGameSession.InitOptions", Options); } + void InitOptions(FString* Options) { NativeCall(this, "AGameSession.InitOptions", Options); } bool ProcessAutoLogin() { return NativeCall(this, "AGameSession.ProcessAutoLogin"); } - void OnLoginComplete(int LocalUserNum, bool bWasSuccessful, FUniqueNetId * UserId, FString * Error) { NativeCall(this, "AGameSession.OnLoginComplete", LocalUserNum, bWasSuccessful, UserId, Error); } - FString * ApproveLogin(FString * result, FString * Options, FString * authToken) { return NativeCall(this, "AGameSession.ApproveLogin", result, Options, authToken); } - void RegisterPlayer(APlayerController * NewPlayer, TSharedPtr * UniqueId, bool bWasFromInvite) { NativeCall *, bool>(this, "AGameSession.RegisterPlayer", NewPlayer, UniqueId, bWasFromInvite); } - void UnregisterPlayer(APlayerController * ExitingPlayer) { NativeCall(this, "AGameSession.UnregisterPlayer", ExitingPlayer); } - bool AtCapacity(bool bSpectator, FString * AuthToken) { return NativeCall(this, "AGameSession.AtCapacity", bSpectator, AuthToken); } - void NotifyLogout(APlayerController * PC) { NativeCall(this, "AGameSession.NotifyLogout", PC); } - bool KickPlayer(APlayerController * KickedPlayer, FText * KickReason) { return NativeCall(this, "AGameSession.KickPlayer", KickedPlayer, KickReason); } - bool BanPlayer(APlayerController * BannedPlayer, FText * BanReason) { return NativeCall(this, "AGameSession.BanPlayer", BannedPlayer, BanReason); } + void OnLoginComplete(int LocalUserNum, bool bWasSuccessful, FUniqueNetId* UserId, FString* Error) { NativeCall(this, "AGameSession.OnLoginComplete", LocalUserNum, bWasSuccessful, UserId, Error); } + FString* ApproveLogin(FString* result, FString* Options, FString* authToken) { return NativeCall(this, "AGameSession.ApproveLogin", result, Options, authToken); } + void RegisterPlayer(APlayerController* NewPlayer, TSharedPtr* UniqueId, bool bWasFromInvite) { NativeCall*, bool>(this, "AGameSession.RegisterPlayer", NewPlayer, UniqueId, bWasFromInvite); } + void UnregisterPlayer(APlayerController* ExitingPlayer) { NativeCall(this, "AGameSession.UnregisterPlayer", ExitingPlayer); } + bool AtCapacity(bool bSpectator, FString* AuthToken) { return NativeCall(this, "AGameSession.AtCapacity", bSpectator, AuthToken); } + void NotifyLogout(APlayerController* PC) { NativeCall(this, "AGameSession.NotifyLogout", PC); } + bool KickPlayer(APlayerController* KickedPlayer, FText* KickReason) { return NativeCall(this, "AGameSession.KickPlayer", KickedPlayer, KickReason); } + void BanPlayer() { NativeCall(this, "AGameSession.BanPlayer"); } void ReturnToMainMenuHost() { NativeCall(this, "AGameSession.ReturnToMainMenuHost"); } bool TravelToSession(int ControllerId, FName InSessionName) { return NativeCall(this, "AGameSession.TravelToSession", ControllerId, InSessionName); } void UpdateSessionJoinability(FName InSessionName, bool bPublicSearchable, bool bAllowInvites, bool bJoinViaPresence, bool bJoinViaPresenceFriendsOnly) { NativeCall(this, "AGameSession.UpdateSessionJoinability", InSessionName, bPublicSearchable, bAllowInvites, bJoinViaPresence, bJoinViaPresenceFriendsOnly); } @@ -283,29 +339,39 @@ struct AGameSession struct AShooterGameSession : AGameSession { - TArray FailedAuthTokenClientConnectionsField() { return *GetNativePointerField*>(this, "AShooterGameSession.FailedAuthTokenClientConnections"); } + TArray& CachedModsField() { return *GetNativePointerField*>(this, "AShooterGameSession.CachedMods"); } + TArray& ThreadSafeSearchResultsField() { return *GetNativePointerField*>(this, "AShooterGameSession.ThreadSafeSearchResults"); } + TArray FailedAuthTokenClientConnectionsField() { return *GetNativePointerField*>(this, "AShooterGameSession.FailedAuthTokenClientConnections"); } TArray& FailedAuthTokenClientUniqueIDsField() { return *GetNativePointerField*>(this, "AShooterGameSession.FailedAuthTokenClientUniqueIDs"); } + FShooterGameSessionParams& CurrentSessionParamsField() { return *GetNativePointerField(this, "AShooterGameSession.CurrentSessionParams"); } + TSharedPtr& HostSettingsField() { return *GetNativePointerField*>(this, "AShooterGameSession.HostSettings"); } + TSharedPtr& SearchSettingsField() { return *GetNativePointerField*>(this, "AShooterGameSession.SearchSettings"); } bool& bFoundSessionField() { return *GetNativePointerField(this, "AShooterGameSession.bFoundSession"); } // Functions + static UClass* StaticClass() { return NativeCall(nullptr, "AShooterGameSession.StaticClass"); } void OnStartOnlineGameComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnStartOnlineGameComplete", SessionName, bWasSuccessful); } void HandleMatchHasStarted() { NativeCall(this, "AShooterGameSession.HandleMatchHasStarted"); } void HandleMatchHasEnded() { NativeCall(this, "AShooterGameSession.HandleMatchHasEnded"); } + TArray* GetSearchResults() { return NativeCall*>(this, "AShooterGameSession.GetSearchResults"); } void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnCreateSessionComplete", SessionName, bWasSuccessful); } void OnDestroySessionComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnDestroySessionComplete", SessionName, bWasSuccessful); } void DelayedSessionDelete() { NativeCall(this, "AShooterGameSession.DelayedSessionDelete"); } - void InitOptions(FString * Options) { NativeCall(this, "AShooterGameSession.InitOptions", Options); } + void InitOptions(FString* Options) { NativeCall(this, "AShooterGameSession.InitOptions", Options); } void RegisterServer() { NativeCall(this, "AShooterGameSession.RegisterServer"); } void UpdatePublishedSession() { NativeCall(this, "AShooterGameSession.UpdatePublishedSession"); } - FString * ApproveLogin(FString * result, FString * Options, FString * authToken) { return NativeCall(this, "AShooterGameSession.ApproveLogin", result, Options, authToken); } - void OnCheckAuthTokenComplete(bool bWasSuccessful, FUniqueNetId * UserId) { NativeCall(this, "AShooterGameSession.OnCheckAuthTokenComplete", bWasSuccessful, UserId); } + FString* ApproveLogin(FString* result, FString* Options, FString* authToken) { return NativeCall(this, "AShooterGameSession.ApproveLogin", result, Options, authToken); } + void OnCheckAuthTokenComplete(bool bWasSuccessful, FUniqueNetId* UserId) { NativeCall(this, "AShooterGameSession.OnCheckAuthTokenComplete", bWasSuccessful, UserId); } void OnNumConnectedPlayersChanged(int NewPlayersCount) { NativeCall(this, "AShooterGameSession.OnNumConnectedPlayersChanged", NewPlayersCount); } void Tick(float __formal) { NativeCall(this, "AShooterGameSession.Tick", __formal); } void OnFindSessionsComplete(bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnFindSessionsComplete", bWasSuccessful); } void OnFoundSession() { NativeCall(this, "AShooterGameSession.OnFoundSession"); } + void BroadcastFoundSessionEvent() { NativeCall(this, "AShooterGameSession.BroadcastFoundSessionEvent"); } void CancelFindSessions() { NativeCall(this, "AShooterGameSession.CancelFindSessions"); } bool JoinSession(TSharedPtr UserId, FName SessionName, int SessionIndexInSearchResults) { return NativeCall, FName, int>(this, "AShooterGameSession.JoinSession", UserId, SessionName, SessionIndexInSearchResults); } + bool JoinSession(TSharedPtr UserId, FName SessionName, FOnlineSessionSearchResult* SearchResult) { return NativeCall, FName, FOnlineSessionSearchResult*>(this, "AShooterGameSession.JoinSession", UserId, SessionName, SearchResult); } bool TravelToSession(int ControllerId, FName SessionName) { return NativeCall(this, "AShooterGameSession.TravelToSession", ControllerId, SessionName); } void Restart() { NativeCall(this, "AShooterGameSession.Restart"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterGameSession.GetPrivateStaticClass", Package); } }; diff --git a/version/Core/Public/API/ARK/Inventory.h b/version/Core/Public/API/ARK/Inventory.h index f7cc98fa..59408ca5 100644 --- a/version/Core/Public/API/ARK/Inventory.h +++ b/version/Core/Public/API/ARK/Inventory.h @@ -2,7 +2,9 @@ struct UWorld; -struct FItemCount +struct FSupplyCrateItemSet {}; + +struct FItemCount { FString StringRef; int StackSize; @@ -17,14 +19,31 @@ struct FItemNetID unsigned int ItemID2; }; +struct FCustomItemByteArray +{ + TArray Bytes; +}; + +struct FCustomItemByteArrays +{ + TArray ByteArrays; +}; + +struct FCustomItemDoubles +{ + TArray Doubles; +}; + struct FCustomItemData { FName CustomDataName; - TArray CustomDataStrings; - TArray CustomDataFloats; - TArray CustomDataObjects; - TArray CustomDataClasses; - TArray CustomDataNames; + TArray CustomDataStrings; + TArray CustomDataFloats; + TArray CustomDataObjects; + TArray CustomDataClasses; + TArray CustomDataNames; + FCustomItemByteArrays CustomDataBytes; + FCustomItemDoubles CustomDataDoubles; }; struct FItemCraftQueueEntry @@ -80,10 +99,11 @@ struct UAssetUserData : UObject struct UActorComponent : UObject { TArray& ComponentTagsField() { return *GetNativePointerField*>(this, "UActorComponent.ComponentTags"); } + TArray AssetUserDataField() { return *GetNativePointerField*>(this, "UActorComponent.AssetUserData"); } FName& CustomTagField() { return *GetNativePointerField(this, "UActorComponent.CustomTag"); } int& CustomDataField() { return *GetNativePointerField(this, "UActorComponent.CustomData"); } - AActor * CachedOwnerField() { return *GetNativePointerField(this, "UActorComponent.CachedOwner"); } - UWorld * WorldField() { return *GetNativePointerField(this, "UActorComponent.World"); } + AActor* CachedOwnerField() { return *GetNativePointerField(this, "UActorComponent.CachedOwner"); } + UWorld* WorldField() { return *GetNativePointerField(this, "UActorComponent.World"); } // Bit fields @@ -102,6 +122,9 @@ struct UActorComponent : UObject BitFieldValue bHasBeenCreated() { return { this, "UActorComponent.bHasBeenCreated" }; } BitFieldValue bHasBeenInitialized() { return { this, "UActorComponent.bHasBeenInitialized" }; } BitFieldValue bAlwaysReplicatePropertyConditional() { return { this, "UActorComponent.bAlwaysReplicatePropertyConditional" }; } + BitFieldValue bUseBPOnComponentTick() { return { this, "UActorComponent.bUseBPOnComponentTick" }; } + BitFieldValue bUseBPOnComponentDestroyed() { return { this, "UActorComponent.bUseBPOnComponentDestroyed" }; } + BitFieldValue bOnlyInitialReplication() { return { this, "UActorComponent.bOnlyInitialReplication" }; } BitFieldValue bHasCachedOwner() { return { this, "UActorComponent.bHasCachedOwner" }; } BitFieldValue bRenderStateCreated() { return { this, "UActorComponent.bRenderStateCreated" }; } BitFieldValue bPhysicsStateCreated() { return { this, "UActorComponent.bPhysicsStateCreated" }; } @@ -110,12 +133,14 @@ struct UActorComponent : UObject // Functions + void InvalidateLightingCache() { NativeCall(this, "UActorComponent.InvalidateLightingCache"); } + bool IsPhysicsStateCreated() { return NativeCall(this, "UActorComponent.IsPhysicsStateCreated"); } void PostInitProperties() { NativeCall(this, "UActorComponent.PostInitProperties"); } - void PostRename(UObject * OldOuter, FName OldName) { NativeCall(this, "UActorComponent.PostRename", OldOuter, OldName); } - AActor * GetOwner() { return NativeCall(this, "UActorComponent.GetOwner"); } - UWorld * GetWorld() { return NativeCall(this, "UActorComponent.GetWorld"); } - ULevel * GetComponentLevel() { return NativeCall(this, "UActorComponent.GetComponentLevel"); } - FString * GetReadableName(FString * result) { return NativeCall(this, "UActorComponent.GetReadableName", result); } + void PostRename(UObject* OldOuter, FName OldName) { NativeCall(this, "UActorComponent.PostRename", OldOuter, OldName); } + AActor* GetOwner() { return NativeCall(this, "UActorComponent.GetOwner"); } + UWorld* GetWorld() { return NativeCall(this, "UActorComponent.GetWorld"); } + bool ComponentHasTag(FName Tag) { return NativeCall(this, "UActorComponent.ComponentHasTag", Tag); } + FString* GetReadableName(FString* result) { return NativeCall(this, "UActorComponent.GetReadableName", result); } void BeginDestroy() { NativeCall(this, "UActorComponent.BeginDestroy"); } bool NeedsLoadForClient() { return NativeCall(this, "UActorComponent.NeedsLoadForClient"); } bool NeedsLoadForServer() { return NativeCall(this, "UActorComponent.NeedsLoadForServer"); } @@ -125,7 +150,7 @@ struct UActorComponent : UObject void SetComponentTickEnabled(bool bEnabled) { NativeCall(this, "UActorComponent.SetComponentTickEnabled", bEnabled); } void SetComponentTickEnabledAsync(bool bEnabled) { NativeCall(this, "UActorComponent.SetComponentTickEnabledAsync", bEnabled); } void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UActorComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } - void RegisterComponentWithWorld(UWorld * InWorld) { NativeCall(this, "UActorComponent.RegisterComponentWithWorld", InWorld); } + void RegisterComponentWithWorld(UWorld* InWorld) { NativeCall(this, "UActorComponent.RegisterComponentWithWorld", InWorld); } void RegisterComponent() { NativeCall(this, "UActorComponent.RegisterComponent"); } void UnregisterComponent() { NativeCall(this, "UActorComponent.UnregisterComponent"); } void DestroyComponent() { NativeCall(this, "UActorComponent.DestroyComponent"); } @@ -142,11 +167,12 @@ struct UActorComponent : UObject void ReregisterComponent() { NativeCall(this, "UActorComponent.ReregisterComponent"); } void RecreateRenderState_Concurrent() { NativeCall(this, "UActorComponent.RecreateRenderState_Concurrent"); } void RecreatePhysicsState(bool bRestoreBoneTransforms) { NativeCall(this, "UActorComponent.RecreatePhysicsState", bRestoreBoneTransforms); } - void AddTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "UActorComponent.AddTickPrerequisiteActor", PrerequisiteActor); } - void AddTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "UActorComponent.AddTickPrerequisiteComponent", PrerequisiteComponent); } - void RemoveTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteActor", PrerequisiteActor); } - void RemoveTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } + void AddTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "UActorComponent.AddTickPrerequisiteActor", PrerequisiteActor); } + void AddTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "UActorComponent.AddTickPrerequisiteComponent", PrerequisiteComponent); } + void RemoveTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteActor", PrerequisiteActor); } + void RemoveTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } void DoDeferredRenderUpdates_Concurrent() { NativeCall(this, "UActorComponent.DoDeferredRenderUpdates_Concurrent"); } + void MarkRenderDynamicDataDirty() { NativeCall(this, "UActorComponent.MarkRenderDynamicDataDirty"); } void MarkForNeededEndOfFrameUpdate() { NativeCall(this, "UActorComponent.MarkForNeededEndOfFrameUpdate"); } void MarkForNeededEndOfFrameRecreate() { NativeCall(this, "UActorComponent.MarkForNeededEndOfFrameRecreate"); } void Activate(bool bReset) { NativeCall(this, "UActorComponent.Activate", bReset); } @@ -155,25 +181,41 @@ struct UActorComponent : UObject void SetActive(bool bNewActive, bool bReset) { NativeCall(this, "UActorComponent.SetActive", bNewActive, bReset); } void ToggleActive() { NativeCall(this, "UActorComponent.ToggleActive"); } bool IsActive() { return NativeCall(this, "UActorComponent.IsActive"); } + void AddAssetUserData(UAssetUserData* InUserData) { NativeCall(this, "UActorComponent.AddAssetUserData", InUserData); } + UAssetUserData* GetAssetUserDataOfClass(TSubclassOf InUserDataClass) { return NativeCall>(this, "UActorComponent.GetAssetUserDataOfClass", InUserDataClass); } + void RemoveUserDataOfClass(TSubclassOf InUserDataClass) { NativeCall>(this, "UActorComponent.RemoveUserDataOfClass", InUserDataClass); } + void SetNetAddressable() { NativeCall(this, "UActorComponent.SetNetAddressable"); } bool IsNameStableForNetworking() { return NativeCall(this, "UActorComponent.IsNameStableForNetworking"); } bool IsSupportedForNetworking() { return NativeCall(this, "UActorComponent.IsSupportedForNetworking"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "UActorComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } - bool AlwaysReplicatePropertyConditional(UProperty * forProperty) { return NativeCall(this, "UActorComponent.AlwaysReplicatePropertyConditional", forProperty); } + void SetIsReplicated(bool ShouldReplicate) { NativeCall(this, "UActorComponent.SetIsReplicated", ShouldReplicate); } + bool GetIsReplicated() { return NativeCall(this, "UActorComponent.GetIsReplicated"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "UActorComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool AlwaysReplicatePropertyConditional(UProperty* forProperty) { return NativeCall(this, "UActorComponent.AlwaysReplicatePropertyConditional", forProperty); } + static void StaticRegisterNativesUActorComponent() { NativeCall(nullptr, "UActorComponent.StaticRegisterNativesUActorComponent"); } + void AddedAsPrimalItemAttachment() { NativeCall(this, "UActorComponent.AddedAsPrimalItemAttachment"); } +}; + +struct FServerCustomFolder +{ + int InventoryCompType; + FString FolderName; + TArray CustomFolderItemIds; }; struct UPrimalInventoryComponent : UActorComponent { TArray>& RemoteViewingInventoryPlayerControllersField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteViewingInventoryPlayerControllers"); } - TArray InventoryItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.InventoryItems"); } - TArray EquippedItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EquippedItems"); } - TArray ItemSlotsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSlots"); } - TArray ArkTributeItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ArkTributeItems"); } - TArray AllDyeColorItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.AllDyeColorItems"); } + TArray InventoryItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.InventoryItems"); } + TArray EquippedItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EquippedItems"); } + TArray ItemSlotsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSlots"); } + TArray ArkTributeItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ArkTributeItems"); } + TArray AllDyeColorItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.AllDyeColorItems"); } TArray& ItemCraftQueueEntriesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemCraftQueueEntries"); } int& OverrideInventoryDefaultTabField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideInventoryDefaultTab"); } TArray>& EquippableItemTypesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.EquippableItemTypes"); } float& CraftingItemSpeedField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CraftingItemSpeed"); } TArray& ItemSpoilingTimeMultipliersField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSpoilingTimeMultipliers"); } + UGenericDataListEntry* ExtraItemDisplayField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ExtraItemDisplay"); } int& MaxInventoryItemsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryItems"); } float& MaxInventoryWeightField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryWeight"); } char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.TribeGroupInventoryRank"); } @@ -183,7 +225,7 @@ struct UPrimalInventoryComponent : UActorComponent TSubclassOf& EngramRequirementClassOverrideField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EngramRequirementClassOverride"); } TArray>& RemoteAddItemOnlyAllowItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteAddItemOnlyAllowItemClasses"); } TArray>& RemoteAddItemPreventItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteAddItemPreventItemClasses"); } - //TArray& EventItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EventItems"); } + TArray& EventItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EventItems"); } TArray>& DefaultInventoryItemsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems"); } TArray>& DefaultInventoryItems2Field() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems2"); } TArray>& DefaultInventoryItems3Field() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems3"); } @@ -212,9 +254,9 @@ struct UPrimalInventoryComponent : UActorComponent TArray& ItemCraftingConsumptionReplenishmentsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemCraftingConsumptionReplenishments"); } float& MaxItemCooldownTimeClearField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxItemCooldownTimeClear"); } TArray& MaxItemTemplateQuantitiesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.MaxItemTemplateQuantities"); } - USoundBase * ItemCraftingSoundOverrideField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemCraftingSoundOverride"); } + USoundBase* ItemCraftingSoundOverrideField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemCraftingSoundOverride"); } TArray& WeaponAsEquipmentAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.WeaponAsEquipmentAttachmentInfos"); } - TArray CraftingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.CraftingItems"); } + TArray CraftingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.CraftingItems"); } int& DisplayDefaultItemInventoryCountField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DisplayDefaultItemInventoryCount"); } bool& bHasBeenRegisteredField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.bHasBeenRegistered"); } TArray>& LastUsedItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.LastUsedItemClasses"); } @@ -232,9 +274,9 @@ struct UPrimalInventoryComponent : UActorComponent TSubclassOf& ItemSetsOverrideField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSetsOverride"); } TArray& SetQuantityWeightsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.SetQuantityWeights"); } TArray& SetQuantityValuesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.SetQuantityValues"); } - USoundBase * ItemRemovedBySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemRemovedBySound"); } - USoundBase * OpenInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OpenInventorySound"); } - USoundBase * CloseInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CloseInventorySound"); } + USoundBase* ItemRemovedBySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemRemovedBySound"); } + USoundBase* OpenInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OpenInventorySound"); } + USoundBase* CloseInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CloseInventorySound"); } float& MaxInventoryAccessDistanceField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryAccessDistance"); } TArray& ServerCustomFolderField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ServerCustomFolder"); } TArray>& ForceAllowCraftingForInventoryComponentsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.ForceAllowCraftingForInventoryComponents"); } @@ -243,14 +285,16 @@ struct UPrimalInventoryComponent : UActorComponent float& GenerateItemSetsQualityMultiplierMaxField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.GenerateItemSetsQualityMultiplierMax"); } float& DefaultCraftingRequirementsMultiplierField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DefaultCraftingRequirementsMultiplier"); } int& DefaultCraftingQuantityMultiplierField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DefaultCraftingQuantityMultiplier"); } + int& ActionWheelAccessInventoryPriorityField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ActionWheelAccessInventoryPriority"); } int& SavedForceDefaultInventoryRefreshVersionField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.SavedForceDefaultInventoryRefreshVersion"); } int& ForceDefaultInventoryRefreshVersionField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ForceDefaultInventoryRefreshVersion"); } TArray>& TamedDinoForceConsiderFoodTypesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.TamedDinoForceConsiderFoodTypes"); } - TArray DinoAutoHealingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DinoAutoHealingItems"); } - USoundBase * OverrideCraftingFinishedSoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideCraftingFinishedSound"); } + TArray DinoAutoHealingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DinoAutoHealingItems"); } + USoundBase* OverrideCraftingFinishedSoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideCraftingFinishedSound"); } long double& LastAddToCraftQueueSoundTimeField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.LastAddToCraftQueueSoundTime"); } FString& ForceAddToFolderField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ForceAddToFolder"); } FVector& GroundDropTraceLocationOffsetField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.GroundDropTraceLocationOffset"); } + TArray& CustomFolderItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.CustomFolderItems"); } // Bit fields @@ -282,6 +326,8 @@ struct UPrimalInventoryComponent : UActorComponent BitFieldValue bEquipmentForceIgnoreExplicitOwnerClass() { return { this, "UPrimalInventoryComponent.bEquipmentForceIgnoreExplicitOwnerClass" }; } BitFieldValue bUseBPInventoryRefresh() { return { this, "UPrimalInventoryComponent.bUseBPInventoryRefresh" }; } BitFieldValue bUseBPInitializeInventory() { return { this, "UPrimalInventoryComponent.bUseBPInitializeInventory" }; } + BitFieldValue bUseBPAllowAddInventoryItem() { return { this, "UPrimalInventoryComponent.bUseBPAllowAddInventoryItem" }; } + BitFieldValue bHideSaddleFromInventoryDisplay() { return { this, "UPrimalInventoryComponent.bHideSaddleFromInventoryDisplay" }; } BitFieldValue bCraftingEnabled() { return { this, "UPrimalInventoryComponent.bCraftingEnabled" }; } BitFieldValue bRepairingEnabled() { return { this, "UPrimalInventoryComponent.bRepairingEnabled" }; } BitFieldValue bReplicateComponent() { return { this, "UPrimalInventoryComponent.bReplicateComponent" }; } @@ -299,6 +345,7 @@ struct UPrimalInventoryComponent : UActorComponent BitFieldValue bShowItemDefaultFolders() { return { this, "UPrimalInventoryComponent.bShowItemDefaultFolders" }; } BitFieldValue bDisableDropAllItems() { return { this, "UPrimalInventoryComponent.bDisableDropAllItems" }; } BitFieldValue bIgnoreMaxInventoryItems() { return { this, "UPrimalInventoryComponent.bIgnoreMaxInventoryItems" }; } + BitFieldValue bIsSecondaryInventory() { return { this, "UPrimalInventoryComponent.bIsSecondaryInventory" }; } BitFieldValue bRemoteOnlyAllowBlueprintsOrItemClasses() { return { this, "UPrimalInventoryComponent.bRemoteOnlyAllowBlueprintsOrItemClasses" }; } BitFieldValue bPreventSendingData() { return { this, "UPrimalInventoryComponent.bPreventSendingData" }; } BitFieldValue bSupressInventoryItemNetworking() { return { this, "UPrimalInventoryComponent.bSupressInventoryItemNetworking" }; } @@ -311,6 +358,8 @@ struct UPrimalInventoryComponent : UActorComponent BitFieldValue bGivesAchievementItems() { return { this, "UPrimalInventoryComponent.bGivesAchievementItems" }; } BitFieldValue bBPAllowUseInInventory() { return { this, "UPrimalInventoryComponent.bBPAllowUseInInventory" }; } BitFieldValue bBPRemoteInventoryAllowRemoveItems() { return { this, "UPrimalInventoryComponent.bBPRemoteInventoryAllowRemoveItems" }; } + BitFieldValue bUseBPRemoteInventoryGetMaxVisibleSlots() { return { this, "UPrimalInventoryComponent.bUseBPRemoteInventoryGetMaxVisibleSlots" }; } + BitFieldValue bUseBPGetExtraItemDisplay() { return { this, "UPrimalInventoryComponent.bUseBPGetExtraItemDisplay" }; } BitFieldValue bBPNotifyItemAdded() { return { this, "UPrimalInventoryComponent.bBPNotifyItemAdded" }; } BitFieldValue bBPNotifyItemRemoved() { return { this, "UPrimalInventoryComponent.bBPNotifyItemRemoved" }; } BitFieldValue bBPNotifyItemQuantityUpdated() { return { this, "UPrimalInventoryComponent.bBPNotifyItemQuantityUpdated" }; } @@ -323,6 +372,9 @@ struct UPrimalInventoryComponent : UActorComponent BitFieldValue bOverrideInventoryDepositClassDontForceDrop() { return { this, "UPrimalInventoryComponent.bOverrideInventoryDepositClassDontForceDrop" }; } BitFieldValue bUseBPIsCraftingAllowed() { return { this, "UPrimalInventoryComponent.bUseBPIsCraftingAllowed" }; } BitFieldValue bUseBPRemoteInventoryAllowCrafting() { return { this, "UPrimalInventoryComponent.bUseBPRemoteInventoryAllowCrafting" }; } + BitFieldValue bNotifyAddedOnClientReceive() { return { this, "UPrimalInventoryComponent.bNotifyAddedOnClientReceive" }; } + BitFieldValue bIsTaxidermyBase() { return { this, "UPrimalInventoryComponent.bIsTaxidermyBase" }; } + BitFieldValue bDeferCheckForAutoCraftBlueprintsOnInventoryChange() { return { this, "UPrimalInventoryComponent.bDeferCheckForAutoCraftBlueprintsOnInventoryChange" }; } BitFieldValue bSetsRandomWithoutReplacement() { return { this, "UPrimalInventoryComponent.bSetsRandomWithoutReplacement" }; } BitFieldValue bForceAllowAllUseInInventory() { return { this, "UPrimalInventoryComponent.bForceAllowAllUseInInventory" }; } BitFieldValue bUseBPIsValidCraftingResource() { return { this, "UPrimalInventoryComponent.bUseBPIsValidCraftingResource" }; } @@ -330,206 +382,278 @@ struct UPrimalInventoryComponent : UActorComponent BitFieldValue bSetCraftingEnabledCheckForAutoCraftBlueprints() { return { this, "UPrimalInventoryComponent.bSetCraftingEnabledCheckForAutoCraftBlueprints" }; } BitFieldValue bUseBPRemoteInventoryAllowViewing() { return { this, "UPrimalInventoryComponent.bUseBPRemoteInventoryAllowViewing" }; } BitFieldValue bAllDefaultInventoryIsEngrams() { return { this, "UPrimalInventoryComponent.bAllDefaultInventoryIsEngrams" }; } + BitFieldValue bUseBPCanGrindItems() { return { this, "UPrimalInventoryComponent.bUseBPCanGrindItems" }; } + BitFieldValue bGrinderCanGrindAll() { return { this, "UPrimalInventoryComponent.bGrinderCanGrindAll" }; } BitFieldValue bInitializedDefaultInventory() { return { this, "UPrimalInventoryComponent.bInitializedDefaultInventory" }; } BitFieldValue bGetDataListEntriesOnlyRootItems() { return { this, "UPrimalInventoryComponent.bGetDataListEntriesOnlyRootItems" }; } BitFieldValue bConfigOverriden() { return { this, "UPrimalInventoryComponent.bConfigOverriden" }; } // Functions - static UClass * StaticClass() { return NativeCall(nullptr, "UPrimalInventoryComponent.StaticClass"); } + int GetInventoryUpdatedFrame() { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryUpdatedFrame"); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalInventoryComponent.StaticClass"); } void OnRegister() { NativeCall(this, "UPrimalInventoryComponent.OnRegister"); } + bool CanEquipItems() { return NativeCall(this, "UPrimalInventoryComponent.CanEquipItems"); } bool AllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "UPrimalInventoryComponent.AllowEquippingItemType", equipmentType); } - bool CanEquipItem(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.CanEquipItem", anItem); } - bool AllowAddInventoryItem(UPrimalItem * anItem, int * requestedQuantity, bool OnlyAddAll) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem", anItem, requestedQuantity, OnlyAddAll); } - UPrimalItem * AddItem(FItemNetInfo * theItemInfo, bool bEquipItem, bool AddToSlot, bool bDontStack, FItemNetID * InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter * OwnerPlayer, bool bIgnoreAbsoluteMaxInventory) { return NativeCall(this, "UPrimalInventoryComponent.AddItem", theItemInfo, bEquipItem, AddToSlot, bDontStack, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer, bIgnoreAbsoluteMaxInventory); } + bool CanEquipItem(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.CanEquipItem", anItem); } + bool CanInventoryItems() { return NativeCall(this, "UPrimalInventoryComponent.CanInventoryItems"); } + bool CanInventoryItem(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.CanInventoryItem", anItem); } + bool AllowAddInventoryItem(UPrimalItem* anItem, int* requestedQuantity, bool OnlyAddAll) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem", anItem, requestedQuantity, OnlyAddAll); } + UPrimalItem* AddItem(FItemNetInfo* theItemInfo, bool bEquipItem, bool AddToSlot, bool bDontStack, FItemNetID* InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter* OwnerPlayer, bool bIgnoreAbsoluteMaxInventory) { return NativeCall(this, "UPrimalInventoryComponent.AddItem", theItemInfo, bEquipItem, AddToSlot, bDontStack, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer, bIgnoreAbsoluteMaxInventory); } bool IsLocalInventoryViewer() { return NativeCall(this, "UPrimalInventoryComponent.IsLocalInventoryViewer"); } - void NotifyItemAdded(UPrimalItem * theItem, bool bEquippedItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemAdded", theItem, bEquippedItem); } + void NotifyItemAdded(UPrimalItem* theItem, bool bEquippedItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemAdded", theItem, bEquippedItem); } void NotifyArkItemAdded() { NativeCall(this, "UPrimalInventoryComponent.NotifyArkItemAdded"); } - void NotifyItemRemoved(UPrimalItem * theItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemRemoved", theItem); } - void RemoveItemSpoilingTimer(UPrimalItem * theItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemSpoilingTimer", theItem); } + void NotifyItemRemoved(UPrimalItem* theItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemRemoved", theItem); } + void RemoveItemSpoilingTimer(UPrimalItem* theItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemSpoilingTimer", theItem); } bool LoadAdditionalStructureEngrams() { return NativeCall(this, "UPrimalInventoryComponent.LoadAdditionalStructureEngrams"); } - bool RemoveItem(FItemNetID * itemID, bool bDoDrop, bool bSecondryAction, bool bForceRemoval, bool showHUDMessage) { return NativeCall(this, "UPrimalInventoryComponent.RemoveItem", itemID, bDoDrop, bSecondryAction, bForceRemoval, showHUDMessage); } - bool ServerEquipItem(FItemNetID * itemID) { return NativeCall(this, "UPrimalInventoryComponent.ServerEquipItem", itemID); } - void DropItem(FItemNetInfo * theInfo, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation) { NativeCall(this, "UPrimalInventoryComponent.DropItem", theInfo, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation); } - static ADroppedItem * StaticDropNewItem(AActor * forActor, TSubclassOf AnItemClass, float ItemQuality, bool bForceNoBlueprint, int QuantityOverride, bool bForceBlueprint, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, float, bool, int, bool, TSubclassOf, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItem", forActor, AnItemClass, ItemQuality, bForceNoBlueprint, QuantityOverride, bForceBlueprint, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } - static ADroppedItem * StaticDropNewItemWithInfo(AActor * forActor, FItemNetInfo * ItemInfo, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItemWithInfo", forActor, ItemInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } - static ADroppedItem * StaticDropItem(AActor * forActor, FItemNetInfo * theInfo, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector * DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector *, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropItem", forActor, theInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } - AShooterPlayerController * GetOwnerController() { return NativeCall(this, "UPrimalInventoryComponent.GetOwnerController"); } - void InventoryViewersPlayLocalSound(USoundBase * aSound, bool bAttach) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersPlayLocalSound", aSound, bAttach); } - void InventoryViewersStopLocalSound(USoundBase * aSound) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersStopLocalSound", aSound); } - void UpdateNetWeaponClipAmmo(UPrimalItem * anItem, int ammo) { NativeCall(this, "UPrimalInventoryComponent.UpdateNetWeaponClipAmmo", anItem, ammo); } - void NotifyClientsItemStatus(UPrimalItem * anItem, bool bEquippedItem, bool bRemovedItem, bool bOnlyUpdateQuantity, bool bOnlyUpdateDurability, bool bOnlyNotifyItemSwap, UPrimalItem * anItem2, FItemNetID * InventoryInsertAfterItemID, bool bUsedItem, bool bNotifyCraftQueue, bool ShowHUDNotification) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientsItemStatus", anItem, bEquippedItem, bRemovedItem, bOnlyUpdateQuantity, bOnlyUpdateDurability, bOnlyNotifyItemSwap, anItem2, InventoryInsertAfterItemID, bUsedItem, bNotifyCraftQueue, ShowHUDNotification); } - void NotifyClientItemArkTributeStatusChanged(UPrimalItem * anItem, bool bRemoved, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientItemArkTributeStatusChanged", anItem, bRemoved, bFromLoad); } - void ServerRequestItems(AShooterPlayerController * forPC, bool bEquippedItems, bool bIsFirstSpawn) { NativeCall(this, "UPrimalInventoryComponent.ServerRequestItems", forPC, bEquippedItems, bIsFirstSpawn); } + bool RemoveItem(FItemNetID* itemID, bool bDoDrop, bool bSecondryAction, bool bForceRemoval, bool showHUDMessage) { return NativeCall(this, "UPrimalInventoryComponent.RemoveItem", itemID, bDoDrop, bSecondryAction, bForceRemoval, showHUDMessage); } + ADroppedItem* EjectItem(FItemNetID* itemID, bool bPreventImpule, bool bForceEject, bool bSetItemLocation, FVector* LocationOverride, bool showHUDMessage, TSubclassOf TheDroppedTemplateOverride, bool bAssignToTribeForPickup, int AssignedTribeID) { return NativeCall, bool, int>(this, "UPrimalInventoryComponent.EjectItem", itemID, bPreventImpule, bForceEject, bSetItemLocation, LocationOverride, showHUDMessage, TheDroppedTemplateOverride, bAssignToTribeForPickup, AssignedTribeID); } + bool ServerEquipItem(FItemNetID* itemID) { return NativeCall(this, "UPrimalInventoryComponent.ServerEquipItem", itemID); } + void DropItem(FItemNetInfo* theInfo, bool bOverrideSpawnTransform, FVector* LocationOverride, FRotator* RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation) { NativeCall(this, "UPrimalInventoryComponent.DropItem", theInfo, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation); } + static ADroppedItem* StaticDropNewItem(AActor* forActor, TSubclassOf AnItemClass, float ItemQuality, bool bForceNoBlueprint, int QuantityOverride, bool bForceBlueprint, TSubclassOf TheDroppedTemplateOverride, FRotator* DroppedRotationOffset, bool bOverrideSpawnTransform, FVector* LocationOverride, FRotator* RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh* DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface* DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, float, bool, int, bool, TSubclassOf, FRotator*, bool, FVector*, FRotator*, bool, bool, bool, bool, UStaticMesh*, FVector, UMaterialInterface*, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItem", forActor, AnItemClass, ItemQuality, bForceNoBlueprint, QuantityOverride, bForceBlueprint, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + static ADroppedItem* StaticDropNewItemWithInfo(AActor* forActor, FItemNetInfo* ItemInfo, TSubclassOf TheDroppedTemplateOverride, FRotator* DroppedRotationOffset, bool bOverrideSpawnTransform, FVector* LocationOverride, FRotator* RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh* DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface* DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator*, bool, FVector*, FRotator*, bool, bool, bool, bool, UStaticMesh*, FVector, UMaterialInterface*, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItemWithInfo", forActor, ItemInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + static ADroppedItem* StaticDropItem(AActor* forActor, FItemNetInfo* theInfo, TSubclassOf TheDroppedTemplateOverride, FRotator* DroppedRotationOffset, bool bOverrideSpawnTransform, FVector* LocationOverride, FRotator* RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation, UStaticMesh* DroppedMeshOverride, FVector* DroppedScaleOverride, UMaterialInterface* DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator*, bool, FVector*, FRotator*, bool, bool, bool, bool, UStaticMesh*, FVector*, UMaterialInterface*, float>(nullptr, "UPrimalInventoryComponent.StaticDropItem", forActor, theInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + AShooterPlayerController* GetOwnerController() { return NativeCall(this, "UPrimalInventoryComponent.GetOwnerController"); } + void InventoryViewersPlayLocalSound(USoundBase* aSound, bool bAttach) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersPlayLocalSound", aSound, bAttach); } + void InventoryViewersStopLocalSound(USoundBase* aSound) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersStopLocalSound", aSound); } + void UpdateNetWeaponClipAmmo(UPrimalItem* anItem, int ammo) { NativeCall(this, "UPrimalInventoryComponent.UpdateNetWeaponClipAmmo", anItem, ammo); } + void NotifyClientsItemStatus(UPrimalItem* anItem, bool bEquippedItem, bool bRemovedItem, bool bOnlyUpdateQuantity, bool bOnlyUpdateDurability, bool bOnlyNotifyItemSwap, UPrimalItem* anItem2, FItemNetID* InventoryInsertAfterItemID, bool bUsedItem, bool bNotifyCraftQueue, bool ShowHUDNotification) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientsItemStatus", anItem, bEquippedItem, bRemovedItem, bOnlyUpdateQuantity, bOnlyUpdateDurability, bOnlyNotifyItemSwap, anItem2, InventoryInsertAfterItemID, bUsedItem, bNotifyCraftQueue, ShowHUDNotification); } + void NotifyClientsDurabilityChange(UPrimalItem* anItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientsDurabilityChange", anItem); } + void NotifyClientItemArkTributeStatusChanged(UPrimalItem* anItem, bool bRemoved, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientItemArkTributeStatusChanged", anItem, bRemoved, bFromLoad); } + void ServerRequestItems(AShooterPlayerController* forPC, bool bEquippedItems, bool bIsFirstSpawn) { NativeCall(this, "UPrimalInventoryComponent.ServerRequestItems", forPC, bEquippedItems, bIsFirstSpawn); } void ClientStartReceivingItems(bool bEquippedItems) { NativeCall(this, "UPrimalInventoryComponent.ClientStartReceivingItems", bEquippedItems); } void ClientFinishReceivingItems(bool bEquippedItems) { NativeCall(this, "UPrimalInventoryComponent.ClientFinishReceivingItems", bEquippedItems); } - TArray * FindColorItem(TArray * result, FColor theColor, bool bEquippedItems) { return NativeCall *, TArray *, FColor, bool>(this, "UPrimalInventoryComponent.FindColorItem", result, theColor, bEquippedItems); } - TArray * FindBrushColorItem(TArray * result, __int16 ArchIndex) { return NativeCall *, TArray *, __int16>(this, "UPrimalInventoryComponent.FindBrushColorItem", result, ArchIndex); } - UPrimalItem * FindItem(FItemNetID * ItemID, bool bEquippedItems, bool bAllItems, int * itemIdx) { return NativeCall(this, "UPrimalInventoryComponent.FindItem", ItemID, bEquippedItems, bAllItems, itemIdx); } + TArray* FindColorItem(TArray* result, FColor theColor, bool bEquippedItems) { return NativeCall*, TArray*, FColor, bool>(this, "UPrimalInventoryComponent.FindColorItem", result, theColor, bEquippedItems); } + TArray* FindBrushColorItem(TArray* result, __int16 ArchIndex) { return NativeCall*, TArray*, __int16>(this, "UPrimalInventoryComponent.FindBrushColorItem", result, ArchIndex); } + UPrimalItem* FindItem(FItemNetID* ItemID, bool bEquippedItems, bool bAllItems, int* itemIdx) { return NativeCall(this, "UPrimalInventoryComponent.FindItem", ItemID, bEquippedItems, bAllItems, itemIdx); } void GiveInitialItems(bool SkipEngrams) { NativeCall(this, "UPrimalInventoryComponent.GiveInitialItems", SkipEngrams); } void InitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.InitDefaultInventory"); } + void DeferredDeprecationCheck() { NativeCall(this, "UPrimalInventoryComponent.DeferredDeprecationCheck"); } void InitializeInventory() { NativeCall(this, "UPrimalInventoryComponent.InitializeInventory"); } void CheckRefreshDefaultInventoryItems() { NativeCall(this, "UPrimalInventoryComponent.CheckRefreshDefaultInventoryItems"); } void SetEquippedItemsOwnerNoSee(bool bNewOwnerNoSee, bool bForceHideFirstPerson) { NativeCall(this, "UPrimalInventoryComponent.SetEquippedItemsOwnerNoSee", bNewOwnerNoSee, bForceHideFirstPerson); } - bool RemoteInventoryAllowViewing(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowViewing", PC); } - bool RemoteInventoryAllowAddItems(AShooterPlayerController * PC, UPrimalItem * anItem, int * anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } - bool RemoteInventoryAllowRemoveItems(AShooterPlayerController * PC, UPrimalItem * anItemToTransfer, int * requestedQuantity, bool bRequestedByPlayer, bool bRequestDropping) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer, bRequestDropping); } - bool RemoteInventoryAllowCraftingItems(AShooterPlayerController * PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowCraftingItems", PC, bIgnoreEnabled); } - bool RemoteInventoryAllowRepairingItems(AShooterPlayerController * PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRepairingItems", PC, bIgnoreEnabled); } - void ServerViewRemoteInventory(AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerViewRemoteInventory", ByPC); } - void ServerCloseRemoteInventory(AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCloseRemoteInventory", ByPC); } + bool RemoteInventoryAllowViewing(AShooterPlayerController* PC, float MaxAllowedDistanceOffset) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowViewing", PC, MaxAllowedDistanceOffset); } + bool RemoteInventoryAllowAddItems(AShooterPlayerController* PC, UPrimalItem* anItem, int* anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } + bool RemoteInventoryAllowRemoveItems(AShooterPlayerController* PC, UPrimalItem* anItemToTransfer, int* requestedQuantity, bool bRequestedByPlayer, bool bRequestDropping) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer, bRequestDropping); } + bool RemoteInventoryAllowCraftingItems(AShooterPlayerController* PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowCraftingItems", PC, bIgnoreEnabled); } + bool RemoteInventoryAllowRepairingItems(AShooterPlayerController* PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRepairingItems", PC, bIgnoreEnabled); } + bool AllowAddingToArkTribute() { return NativeCall(this, "UPrimalInventoryComponent.AllowAddingToArkTribute"); } + void ServerViewRemoteInventory(AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerViewRemoteInventory", ByPC); } + void ServerCloseRemoteInventory(AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCloseRemoteInventory", ByPC); } void ClientUpdateFreeCraftingMode_Implementation(bool bNewFreeCraftingModeValue) { NativeCall(this, "UPrimalInventoryComponent.ClientUpdateFreeCraftingMode_Implementation", bNewFreeCraftingModeValue); } void OnComponentDestroyed() { NativeCall(this, "UPrimalInventoryComponent.OnComponentDestroyed"); } void SwapCustomFolder(FString CFolder1, FString CFolder2, int DataListType) { NativeCall(this, "UPrimalInventoryComponent.SwapCustomFolder", CFolder1, CFolder2, DataListType); } - bool AddToFolders(TArray * FoldersFound, UPrimalItem * anItem) { return NativeCall *, UPrimalItem *>(this, "UPrimalInventoryComponent.AddToFolders", FoldersFound, anItem); } - FString * GetInventoryName(FString * result, bool bIsEquipped) { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryName", result, bIsEquipped); } - int GetFirstUnoccupiedSlot(AShooterPlayerState * forPlayerState, UPrimalItem * forItem) { return NativeCall(this, "UPrimalInventoryComponent.GetFirstUnoccupiedSlot", forPlayerState, forItem); } - void ServerMakeRecipeItem_Implementation(APrimalStructureItemContainer * Container, FItemNetID NoteToConsume, TSubclassOf RecipeItemTemplate, FString * CustomName, FString * CustomDescription, TArray * CustomColors, TArray * CustomRequirements) { NativeCall, FString *, FString *, TArray *, TArray *>(this, "UPrimalInventoryComponent.ServerMakeRecipeItem_Implementation", Container, NoteToConsume, RecipeItemTemplate, CustomName, CustomDescription, CustomColors, CustomRequirements); } + bool AddToFolders(TArray* FoldersFound, UPrimalItem* anItem) { return NativeCall*, UPrimalItem*>(this, "UPrimalInventoryComponent.AddToFolders", FoldersFound, anItem); } + UObject* GetObjectW() { return NativeCall(this, "UPrimalInventoryComponent.GetObjectW"); } + FString* GetInventoryName(FString* result, bool bIsEquipped) { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryName", result, bIsEquipped); } + int GetFirstUnoccupiedSlot(AShooterPlayerState* forPlayerState, UPrimalItem* forItem) { return NativeCall(this, "UPrimalInventoryComponent.GetFirstUnoccupiedSlot", forPlayerState, forItem); } + void ServerMakeRecipeItem_Implementation(APrimalStructureItemContainer* Container, FItemNetID NoteToConsume, TSubclassOf RecipeItemTemplate, FString* CustomName, FString* CustomDescription, TArray* CustomColors, TArray* CustomRequirements) { NativeCall, FString*, FString*, TArray*, TArray*>(this, "UPrimalInventoryComponent.ServerMakeRecipeItem_Implementation", Container, NoteToConsume, RecipeItemTemplate, CustomName, CustomDescription, CustomColors, CustomRequirements); } void ServerRemoveItemFromSlot_Implementation(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerRemoveItemFromSlot_Implementation", ItemID); } void ServerAddItemToSlot_Implementation(FItemNetID ItemID, int SlotIndex) { NativeCall(this, "UPrimalInventoryComponent.ServerAddItemToSlot_Implementation", ItemID, SlotIndex); } - UPrimalItem * GetEquippedItemOfType(EPrimalEquipmentType::Type aType) { return NativeCall(this, "UPrimalInventoryComponent.GetEquippedItemOfType", aType); } - UPrimalItem * GetEquippedItemOfClass(TSubclassOf ItemClass) { return NativeCall>(this, "UPrimalInventoryComponent.GetEquippedItemOfClass", ItemClass); } - int IncrementItemTemplateQuantity(TSubclassOf ItemTemplate, int amount, bool bReplicateToClient, bool bIsBlueprint, UPrimalItem ** UseSpecificItem, UPrimalItem ** IncrementedItem, bool bRequireExactClassMatch, bool bIsCraftingResourceConsumption, bool bIsFromUseConsumption, bool bIsArkTributeItem, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bDontExceedMaxItems) { return NativeCall, int, bool, bool, UPrimalItem **, UPrimalItem **, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.IncrementItemTemplateQuantity", ItemTemplate, amount, bReplicateToClient, bIsBlueprint, UseSpecificItem, IncrementedItem, bRequireExactClassMatch, bIsCraftingResourceConsumption, bIsFromUseConsumption, bIsArkTributeItem, ShowHUDNotification, bDontRecalcSpoilingTime, bDontExceedMaxItems); } - bool IncrementArkTributeItemQuantity(UPrimalItem * NewItem, UPrimalItem ** IncrementedItem) { return NativeCall(this, "UPrimalInventoryComponent.IncrementArkTributeItemQuantity", NewItem, IncrementedItem); } - UPrimalItem * GetItemOfTemplate(TSubclassOf ItemTemplate, bool bOnlyInventoryItems, bool bOnlyEquippedItems, bool IgnoreItemsWithFullQuantity, bool bFavorSlotItems, bool bIsBlueprint, UPrimalItem * CheckCanStackWithItem, bool bRequiresExactClassMatch, int * CheckCanStackWithItemQuantityOverride, bool bIgnoreSlotItems, bool bOnlyArkTributeItems, bool bPreferEngram, bool bIsForCraftingConsumption) { return NativeCall, bool, bool, bool, bool, bool, UPrimalItem *, bool, int *, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemOfTemplate", ItemTemplate, bOnlyInventoryItems, bOnlyEquippedItems, IgnoreItemsWithFullQuantity, bFavorSlotItems, bIsBlueprint, CheckCanStackWithItem, bRequiresExactClassMatch, CheckCanStackWithItemQuantityOverride, bIgnoreSlotItems, bOnlyArkTributeItems, bPreferEngram, bIsForCraftingConsumption); } - int GetCraftQueueResourceCost(TSubclassOf ItemTemplate, UPrimalItem * IgnoreFirstItem) { return NativeCall, UPrimalItem *>(this, "UPrimalInventoryComponent.GetCraftQueueResourceCost", ItemTemplate, IgnoreFirstItem); } - int GetItemTemplateQuantity(TSubclassOf ItemTemplate, UPrimalItem * IgnoreItem, bool bIgnoreBlueprints, bool bCheckValidForCrafting, bool bRequireExactClassMatch) { return NativeCall, UPrimalItem *, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemTemplateQuantity", ItemTemplate, IgnoreItem, bIgnoreBlueprints, bCheckValidForCrafting, bRequireExactClassMatch); } + UPrimalItem* GetEquippedItemOfType(EPrimalEquipmentType::Type aType) { return NativeCall(this, "UPrimalInventoryComponent.GetEquippedItemOfType", aType); } + UPrimalItem* GetEquippedItemOfClass(TSubclassOf ItemClass) { return NativeCall>(this, "UPrimalInventoryComponent.GetEquippedItemOfClass", ItemClass); } + int IncrementItemTemplateQuantity(TSubclassOf ItemTemplate, int amount, bool bReplicateToClient, bool bIsBlueprint, UPrimalItem** UseSpecificItem, UPrimalItem** IncrementedItem, bool bRequireExactClassMatch, bool bIsCraftingResourceConsumption, bool bIsFromUseConsumption, bool bIsArkTributeItem, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bDontExceedMaxItems) { return NativeCall, int, bool, bool, UPrimalItem**, UPrimalItem**, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.IncrementItemTemplateQuantity", ItemTemplate, amount, bReplicateToClient, bIsBlueprint, UseSpecificItem, IncrementedItem, bRequireExactClassMatch, bIsCraftingResourceConsumption, bIsFromUseConsumption, bIsArkTributeItem, ShowHUDNotification, bDontRecalcSpoilingTime, bDontExceedMaxItems); } + bool IncrementArkTributeItemQuantity(UPrimalItem* NewItem, UPrimalItem** IncrementedItem) { return NativeCall(this, "UPrimalInventoryComponent.IncrementArkTributeItemQuantity", NewItem, IncrementedItem); } + UPrimalItem* GetItemOfTemplate(TSubclassOf ItemTemplate, bool bOnlyInventoryItems, bool bOnlyEquippedItems, bool IgnoreItemsWithFullQuantity, bool bFavorSlotItems, bool bIsBlueprint, UPrimalItem* CheckCanStackWithItem, bool bRequiresExactClassMatch, int* CheckCanStackWithItemQuantityOverride, bool bIgnoreSlotItems, bool bOnlyArkTributeItems, bool bPreferEngram, bool bIsForCraftingConsumption) { return NativeCall, bool, bool, bool, bool, bool, UPrimalItem*, bool, int*, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemOfTemplate", ItemTemplate, bOnlyInventoryItems, bOnlyEquippedItems, IgnoreItemsWithFullQuantity, bFavorSlotItems, bIsBlueprint, CheckCanStackWithItem, bRequiresExactClassMatch, CheckCanStackWithItemQuantityOverride, bIgnoreSlotItems, bOnlyArkTributeItems, bPreferEngram, bIsForCraftingConsumption); } + TArray* FindAllItemsOfType(TArray* result, TSubclassOf ItemTemplate, bool bRequiresExactClassMatch, bool bIncludeInventoryItems, bool bIncludeEquippedItems, bool bIncludeArkTributeItems, bool bIncludeSlotItems, bool bIncludeBlueprints, bool bIncludeEngrams) { return NativeCall*, TArray*, TSubclassOf, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.FindAllItemsOfType", result, ItemTemplate, bRequiresExactClassMatch, bIncludeInventoryItems, bIncludeEquippedItems, bIncludeArkTributeItems, bIncludeSlotItems, bIncludeBlueprints, bIncludeEngrams); } + int GetCraftQueueResourceCost(TSubclassOf ItemTemplate, UPrimalItem* IgnoreFirstItem) { return NativeCall, UPrimalItem*>(this, "UPrimalInventoryComponent.GetCraftQueueResourceCost", ItemTemplate, IgnoreFirstItem); } + int GetItemTemplateQuantity(TSubclassOf ItemTemplate, UPrimalItem* IgnoreItem, bool bIgnoreBlueprints, bool bCheckValidForCrafting, bool bRequireExactClassMatch, bool bForceCheckForDupes) { return NativeCall, UPrimalItem*, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemTemplateQuantity", ItemTemplate, IgnoreItem, bIgnoreBlueprints, bCheckValidForCrafting, bRequireExactClassMatch, bForceCheckForDupes); } float GetTotalDurabilityOfTemplate(TSubclassOf ItemTemplate) { return NativeCall>(this, "UPrimalInventoryComponent.GetTotalDurabilityOfTemplate", ItemTemplate); } void LocalUseItemSlot(int slotIndex, bool bForceCraft) { NativeCall(this, "UPrimalInventoryComponent.LocalUseItemSlot", slotIndex, bForceCraft); } + void ShowBeforeUsingConfirmationDialog(UPrimalItem* Item) { NativeCall(this, "UPrimalInventoryComponent.ShowBeforeUsingConfirmationDialog", Item); } float GetTotalEquippedItemStat(EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalInventoryComponent.GetTotalEquippedItemStat", statType); } float GetEquippedArmorRating(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "UPrimalInventoryComponent.GetEquippedArmorRating", equipmentType); } void ConsumeArmorDurability(float ConsumptionAmount, bool bAllArmorTypes, EPrimalEquipmentType::Type SpecificArmorType) { NativeCall(this, "UPrimalInventoryComponent.ConsumeArmorDurability", ConsumptionAmount, bAllArmorTypes, SpecificArmorType); } - void ServerCraftItem(FItemNetID * itemID, AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCraftItem", itemID, ByPC); } - void AddToCraftQueue(UPrimalItem * anItem, AShooterPlayerController * ByPC, bool bIsRepair, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.AddToCraftQueue", anItem, ByPC, bIsRepair, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } + void ServerCraftItem(FItemNetID* itemID, AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCraftItem", itemID, ByPC); } + void AddToCraftQueue(UPrimalItem* anItem, AShooterPlayerController* ByPC, bool bIsRepair, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.AddToCraftQueue", anItem, ByPC, bIsRepair, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } void ClearCraftQueue(bool bForceClearActiveCraftRepair) { NativeCall(this, "UPrimalInventoryComponent.ClearCraftQueue", bForceClearActiveCraftRepair); } - void ServerRepairItem(FItemNetID * itemID, AShooterPlayerController * ByPC, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.ServerRepairItem", itemID, ByPC, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } - void ServerUseInventoryItem(FItemNetID * itemID, AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerUseInventoryItem", itemID, ByPC); } - void ServerUseItemWithItem(FItemNetID * itemID1, FItemNetID * itemID2, int AdditionalData) { NativeCall(this, "UPrimalInventoryComponent.ServerUseItemWithItem", itemID1, itemID2, AdditionalData); } - void SwapInventoryItems(FItemNetID * itemID1, FItemNetID * itemID2) { NativeCall(this, "UPrimalInventoryComponent.SwapInventoryItems", itemID1, itemID2); } - void AddItemCrafting(UPrimalItem * craftingItem) { NativeCall(this, "UPrimalInventoryComponent.AddItemCrafting", craftingItem); } - void RemoveItemCrafting(UPrimalItem * craftingItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemCrafting", craftingItem); } + void ServerRepairItem(FItemNetID* itemID, AShooterPlayerController* ByPC, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.ServerRepairItem", itemID, ByPC, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } + void ServerUseInventoryItem(FItemNetID* itemID, AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerUseInventoryItem", itemID, ByPC); } + void ServerUseItemWithItem(FItemNetID* itemID1, FItemNetID* itemID2, int AdditionalData) { NativeCall(this, "UPrimalInventoryComponent.ServerUseItemWithItem", itemID1, itemID2, AdditionalData); } + void SwapInventoryItems(FItemNetID* itemID1, FItemNetID* itemID2) { NativeCall(this, "UPrimalInventoryComponent.SwapInventoryItems", itemID1, itemID2); } + void AddItemCrafting(UPrimalItem* craftingItem) { NativeCall(this, "UPrimalInventoryComponent.AddItemCrafting", craftingItem); } + void RemoveItemCrafting(UPrimalItem* craftingItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemCrafting", craftingItem); } void StopAllCraftingRepairing() { NativeCall(this, "UPrimalInventoryComponent.StopAllCraftingRepairing"); } - void TickCraftQueue(float DeltaTime, AShooterGameState * theGameState) { NativeCall(this, "UPrimalInventoryComponent.TickCraftQueue", DeltaTime, theGameState); } + void TickCraftQueue(float DeltaTime, AShooterGameState* theGameState) { NativeCall(this, "UPrimalInventoryComponent.TickCraftQueue", DeltaTime, theGameState); } float GetCraftingSpeed() { return NativeCall(this, "UPrimalInventoryComponent.GetCraftingSpeed"); } - AShooterHUD * GetLocalOwnerHUD() { return NativeCall(this, "UPrimalInventoryComponent.GetLocalOwnerHUD"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "UPrimalInventoryComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + AShooterHUD* GetLocalOwnerHUD() { return NativeCall(this, "UPrimalInventoryComponent.GetLocalOwnerHUD"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "UPrimalInventoryComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool AllowOwnerStasis() { return NativeCall(this, "UPrimalInventoryComponent.AllowOwnerStasis"); } bool IsLocal() { return NativeCall(this, "UPrimalInventoryComponent.IsLocal"); } - bool IsLocalToPlayer(AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalInventoryComponent.IsLocalToPlayer", ForPC); } + bool IsLocalToPlayer(AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalInventoryComponent.IsLocalToPlayer", ForPC); } + int GetMaxInventoryItems(bool bIgnoreHiddenDefaultInventory) { return NativeCall(this, "UPrimalInventoryComponent.GetMaxInventoryItems", bIgnoreHiddenDefaultInventory); } + int GetCurrentNumInventoryItems() { return NativeCall(this, "UPrimalInventoryComponent.GetCurrentNumInventoryItems"); } void Unstasised() { NativeCall(this, "UPrimalInventoryComponent.Unstasised"); } void CheckForAutoCraftBlueprints() { NativeCall(this, "UPrimalInventoryComponent.CheckForAutoCraftBlueprints"); } - bool IsCraftingAllowed(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.IsCraftingAllowed", anItem); } + bool IsCraftingAllowed(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.IsCraftingAllowed", anItem); } void SetCraftingEnabled(bool bEnable) { NativeCall(this, "UPrimalInventoryComponent.SetCraftingEnabled", bEnable); } + bool IsRepairingAllowed() { return NativeCall(this, "UPrimalInventoryComponent.IsRepairingAllowed"); } float GetInventoryWeight() { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryWeight"); } void ServerSplitItemStack_Implementation(FItemNetID ItemID, int AmountToSplit) { NativeCall(this, "UPrimalInventoryComponent.ServerSplitItemStack_Implementation", ItemID, AmountToSplit); } void ServerMergeItemStack_Implementation(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerMergeItemStack_Implementation", ItemID); } + void GrindItem(FItemNetID ItemID, const bool grindStack, AShooterPlayerController* PC) { NativeCall(this, "UPrimalInventoryComponent.GrindItem", ItemID, grindStack, PC); } + void OnGrindItem() { NativeCall(this, "UPrimalInventoryComponent.OnGrindItem"); } void ServerForceMergeItemStack_Implementation(FItemNetID Item1ID, FItemNetID Item2ID) { NativeCall(this, "UPrimalInventoryComponent.ServerForceMergeItemStack_Implementation", Item1ID, Item2ID); } - void RemoteDeleteCustomFolder(FString * CFolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteCustomFolder", CFolderName, InventoryCompType); } - void RemoteAddItemToCustomFolder(FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteAddItemToCustomFolder", CFolderName, InventoryCompType, ItemId); } - void RemoteDeleteItemFromCustomFolder(AShooterPlayerController * PC, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteItemFromCustomFolder", PC, CFolderName, InventoryCompType, ItemId); } - UPrimalItem * FindInventoryStackableItemCompareQuantity(TSubclassOf ItemClass, bool bFindLeastQuantity, UPrimalItem * StacksWithAndIgnoreItem) { return NativeCall, bool, UPrimalItem *>(this, "UPrimalInventoryComponent.FindInventoryStackableItemCompareQuantity", ItemClass, bFindLeastQuantity, StacksWithAndIgnoreItem); } - UPrimalCharacterStatusComponent * GetCharacterStatusComponent() { return NativeCall(this, "UPrimalInventoryComponent.GetCharacterStatusComponent"); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex, int hitBodyIndex) { NativeCall(this, "UPrimalInventoryComponent.ClientMultiUse", ForPC, UseIndex, hitBodyIndex); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex, int hitBodyIndex) { return NativeCall(this, "UPrimalInventoryComponent.TryMultiUse", ForPC, UseIndex, hitBodyIndex); } + void RemoteDeleteCustomFolder(FString* CFolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteCustomFolder", CFolderName, InventoryCompType); } + void RemoteAddItemToCustomFolder(FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteAddItemToCustomFolder", CFolderName, InventoryCompType, ItemId); } + void RemoteDeleteItemFromCustomFolder(AShooterPlayerController* PC, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteItemFromCustomFolder", PC, CFolderName, InventoryCompType, ItemId); } + UPrimalItem* FindInventoryStackableItemCompareQuantity(TSubclassOf ItemClass, bool bFindLeastQuantity, UPrimalItem* StacksWithAndIgnoreItem) { return NativeCall, bool, UPrimalItem*>(this, "UPrimalInventoryComponent.FindInventoryStackableItemCompareQuantity", ItemClass, bFindLeastQuantity, StacksWithAndIgnoreItem); } + UPrimalCharacterStatusComponent* GetCharacterStatusComponent() { return NativeCall(this, "UPrimalInventoryComponent.GetCharacterStatusComponent"); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex, int hitBodyIndex) { NativeCall(this, "UPrimalInventoryComponent.ClientMultiUse", ForPC, UseIndex, hitBodyIndex); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex, int hitBodyIndex) { return NativeCall(this, "UPrimalInventoryComponent.TryMultiUse", ForPC, UseIndex, hitBodyIndex); } + void GetGrinderSettings_Implementation(int* MaxQuantityToGrind, float* GrindGiveItemsPercent, int* MaxItemsToGivePerGrind) { NativeCall(this, "UPrimalInventoryComponent.GetGrinderSettings_Implementation", MaxQuantityToGrind, GrindGiveItemsPercent, MaxItemsToGivePerGrind); } + bool IsAllowedInventoryAccess(APlayerController* ForPC) { return NativeCall(this, "UPrimalInventoryComponent.IsAllowedInventoryAccess", ForPC); } void ActivePlayerInventoryTick(float DeltaTime) { NativeCall(this, "UPrimalInventoryComponent.ActivePlayerInventoryTick", DeltaTime); } void InventoryRefresh() { NativeCall(this, "UPrimalInventoryComponent.InventoryRefresh"); } void RefreshItemSpoilingTimes() { NativeCall(this, "UPrimalInventoryComponent.RefreshItemSpoilingTimes"); } void NotifyCraftingItemConsumption(TSubclassOf ItemTemplate, int amount) { NativeCall, int>(this, "UPrimalInventoryComponent.NotifyCraftingItemConsumption", ItemTemplate, amount); } - float GetSpoilingTimeMultiplier(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetSpoilingTimeMultiplier", anItem); } - void UsedItem(UPrimalItem * anItem) { NativeCall(this, "UPrimalInventoryComponent.UsedItem", anItem); } + float GetSpoilingTimeMultiplier(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetSpoilingTimeMultiplier", anItem); } + long double GetLatestItemClassUseTime(TSubclassOf ItemClass) { return NativeCall>(this, "UPrimalInventoryComponent.GetLatestItemClassUseTime", ItemClass); } + void UsedItem(UPrimalItem* anItem) { NativeCall(this, "UPrimalInventoryComponent.UsedItem", anItem); } void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UPrimalInventoryComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } void UpdatedCraftQueue() { NativeCall(this, "UPrimalInventoryComponent.UpdatedCraftQueue"); } void LoadedFromSaveGame() { NativeCall(this, "UPrimalInventoryComponent.LoadedFromSaveGame"); } void ClientItemMessageNotification_Implementation(FItemNetID ItemID, EPrimalItemMessage::Type ItemMessageType) { NativeCall(this, "UPrimalInventoryComponent.ClientItemMessageNotification_Implementation", ItemID, ItemMessageType); } bool IsOwnedByPlayer() { return NativeCall(this, "UPrimalInventoryComponent.IsOwnedByPlayer"); } - bool DropInventoryDeposit(long double DestroyAtTime, bool bDoPreventSendingData, bool bIgnorEquippedItems, TSubclassOf OverrideInventoryDepositClass, APrimalStructureItemContainer * CopyStructureValues, APrimalStructureItemContainer ** DepositStructureResult, AActor * GroundIgnoreActor, FString CurrentCustomFolderFilter, FString CurrentNameFilter, unsigned __int64 DeathCacheCharacterID, float DropInventoryOnGroundTraceDistance, bool bForceDrop) { return NativeCall, APrimalStructureItemContainer *, APrimalStructureItemContainer **, AActor *, FString, FString, unsigned __int64, float, bool>(this, "UPrimalInventoryComponent.DropInventoryDeposit", DestroyAtTime, bDoPreventSendingData, bIgnorEquippedItems, OverrideInventoryDepositClass, CopyStructureValues, DepositStructureResult, GroundIgnoreActor, CurrentCustomFolderFilter, CurrentNameFilter, DeathCacheCharacterID, DropInventoryOnGroundTraceDistance, bForceDrop); } + void OwnerDied() { NativeCall(this, "UPrimalInventoryComponent.OwnerDied"); } + bool DropInventoryDeposit(long double DestroyAtTime, bool bDoPreventSendingData, bool bIgnorEquippedItems, TSubclassOf OverrideInventoryDepositClass, APrimalStructureItemContainer* CopyStructureValues, APrimalStructureItemContainer** DepositStructureResult, AActor* GroundIgnoreActor, FString CurrentCustomFolderFilter, FString CurrentNameFilter, unsigned __int64 DeathCacheCharacterID, float DropInventoryOnGroundTraceDistance, bool bForceDrop, int OverrideMaxItemsDropped, bool bOverrideDepositLocation, FVector* DepositLocationOverride, bool bForceLocation) { return NativeCall, APrimalStructureItemContainer*, APrimalStructureItemContainer**, AActor*, FString, FString, unsigned __int64, float, bool, int, bool, FVector*, bool>(this, "UPrimalInventoryComponent.DropInventoryDeposit", DestroyAtTime, bDoPreventSendingData, bIgnorEquippedItems, OverrideInventoryDepositClass, CopyStructureValues, DepositStructureResult, GroundIgnoreActor, CurrentCustomFolderFilter, CurrentNameFilter, DeathCacheCharacterID, DropInventoryOnGroundTraceDistance, bForceDrop, OverrideMaxItemsDropped, bOverrideDepositLocation, DepositLocationOverride, bForceLocation); } bool DropNotReadyInventoryDeposit(long double DestroyAtTime) { return NativeCall(this, "UPrimalInventoryComponent.DropNotReadyInventoryDeposit", DestroyAtTime); } - bool GetGroundLocation(FVector * theGroundLoc, FVector * OffsetUp, FVector * OffsetDown, APrimalStructure ** LandedOnStructure, AActor * IgnoreActor, bool bCheckAnyStationary, UPrimitiveComponent ** LandedOnComponent) { return NativeCall(this, "UPrimalInventoryComponent.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown, LandedOnStructure, IgnoreActor, bCheckAnyStationary, LandedOnComponent); } - AActor * CraftedBlueprintSpawnActor(TSubclassOf ForItemClass, TSubclassOf ActorClassToSpawn) { return NativeCall, TSubclassOf>(this, "UPrimalInventoryComponent.CraftedBlueprintSpawnActor", ForItemClass, ActorClassToSpawn); } + bool GetGroundLocation(FVector* theGroundLoc, FVector* OffsetUp, FVector* OffsetDown, APrimalStructure** LandedOnStructure, AActor* IgnoreActor, bool bCheckAnyStationary, UPrimitiveComponent** LandedOnComponent, bool bUseInputGroundLocAsBase) { return NativeCall(this, "UPrimalInventoryComponent.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown, LandedOnStructure, IgnoreActor, bCheckAnyStationary, LandedOnComponent, bUseInputGroundLocAsBase); } + AActor* CraftedBlueprintSpawnActor(TSubclassOf ForItemClass, TSubclassOf ActorClassToSpawn) { return NativeCall, TSubclassOf>(this, "UPrimalInventoryComponent.CraftedBlueprintSpawnActor", ForItemClass, ActorClassToSpawn); } + void NotifyCraftedItem(UPrimalItem* anItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyCraftedItem", anItem); } bool GenerateCrateItems(float MinQualityMultiplier, float MaxQualityMultiplier, int NumPasses, float QuantityMultiplier, float SetPowerWeight, float MaxItemDifficultyClamp) { return NativeCall(this, "UPrimalInventoryComponent.GenerateCrateItems", MinQualityMultiplier, MaxQualityMultiplier, NumPasses, QuantityMultiplier, SetPowerWeight, MaxItemDifficultyClamp); } - UPrimalItem * FindArkTributeItem(FItemNetID * ItemID) { return NativeCall(this, "UPrimalInventoryComponent.FindArkTributeItem", ItemID); } + bool GenerateCustomCrateItems(TSubclassOf SourceClass, TArray CustomItemSets, float CustomMinItemSets, float CustomMaxItemSets, float CustomNumItemSetsPower, bool bCustomSetsRandomWithoutReplacement, TArray* GeneratedItems, float MinQualityMultiplier, float MaxQualityMultiplier, int NumPasses, float QuantityMultiplier, float SetPowerWeight, float MaxItemDifficultyClamp, bool bIsMissionReward) { return NativeCall, TArray, float, float, float, bool, TArray*, float, float, int, float, float, float, bool>(this, "UPrimalInventoryComponent.GenerateCustomCrateItems", SourceClass, CustomItemSets, CustomMinItemSets, CustomMaxItemSets, CustomNumItemSetsPower, bCustomSetsRandomWithoutReplacement, GeneratedItems, MinQualityMultiplier, MaxQualityMultiplier, NumPasses, QuantityMultiplier, SetPowerWeight, MaxItemDifficultyClamp, bIsMissionReward); } + UPrimalItem* FindArkTributeItem(FItemNetID* ItemID) { return NativeCall(this, "UPrimalInventoryComponent.FindArkTributeItem", ItemID); } void SetNextItemSpoilingID_Implementation(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemSpoilingID_Implementation", NextItemID); } void SetNextItemConsumptionID_Implementation(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemConsumptionID_Implementation", NextItemID); } void CheckReplenishSlotIndex(int slotIndex, TSubclassOf ClassCheckOverride) { NativeCall>(this, "UPrimalInventoryComponent.CheckReplenishSlotIndex", slotIndex, ClassCheckOverride); } - void OnArkTributeItemsRemoved(bool Success, TArray * RemovedItems, TArray * NotFoundItems, int FailureResponseCode, FString * FailureResponseMessage, bool bAllowForcedItemDownload) { NativeCall *, TArray *, int, FString *, bool>(this, "UPrimalInventoryComponent.OnArkTributeItemsRemoved", Success, RemovedItems, NotFoundItems, FailureResponseCode, FailureResponseMessage, bAllowForcedItemDownload); } + void OnArkTributeItemsRemoved(bool Success, TArray* RemovedItems, TArray* NotFoundItems, int FailureResponseCode, FString* FailureResponseMessage, bool bAllowForcedItemDownload) { NativeCall*, TArray*, int, FString*, bool>(this, "UPrimalInventoryComponent.OnArkTributeItemsRemoved", Success, RemovedItems, NotFoundItems, FailureResponseCode, FailureResponseMessage, bAllowForcedItemDownload); } void ClientOnArkTributeItemsAdded_Implementation() { NativeCall(this, "UPrimalInventoryComponent.ClientOnArkTributeItemsAdded_Implementation"); } - void OnArkTributeItemsAdded(bool Success, TArray * AddedItems) { NativeCall *>(this, "UPrimalInventoryComponent.OnArkTributeItemsAdded", Success, AddedItems); } - bool RemoveArkTributeItem(FItemNetID * itemID, unsigned int Quantity) { return NativeCall(this, "UPrimalInventoryComponent.RemoveArkTributeItem", itemID, Quantity); } - bool ServerAddToArkTributeInventory(FItemNetID * itemID, TArray SteamItemUserIds, FItemNetInfo * AlternateItemInfo) { return NativeCall, FItemNetInfo *>(this, "UPrimalInventoryComponent.ServerAddToArkTributeInventory", itemID, SteamItemUserIds, AlternateItemInfo); } - UPrimalItem * AddAfterRemovingFromArkTributeInventory(UPrimalItem * Item, FItemNetInfo * MyItem, bool bAllowForcedItemDownload) { return NativeCall(this, "UPrimalInventoryComponent.AddAfterRemovingFromArkTributeInventory", Item, MyItem, bAllowForcedItemDownload); } - bool ServerAddFromArkTributeInventory(FItemNetID * itemID, int Quantity) { return NativeCall(this, "UPrimalInventoryComponent.ServerAddFromArkTributeInventory", itemID, Quantity); } - void RequestAddArkTributeItem(FItemNetInfo * theItemInfo, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.RequestAddArkTributeItem", theItemInfo, bFromLoad); } - void AddArkTributeItem(FItemNetInfo * theItemInfo, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.AddArkTributeItem", theItemInfo, bFromLoad); } - void LoadArkTriuteItems(TArray * ItemInfos) { NativeCall *>(this, "UPrimalInventoryComponent.LoadArkTriuteItems", ItemInfos); } - void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemQuantityUpdated", anItem, amount); } + void OnArkTributeItemsAdded(bool Success, TArray* AddedItems) { NativeCall*>(this, "UPrimalInventoryComponent.OnArkTributeItemsAdded", Success, AddedItems); } + bool RemoveArkTributeItem(FItemNetID* itemID, unsigned int Quantity) { return NativeCall(this, "UPrimalInventoryComponent.RemoveArkTributeItem", itemID, Quantity); } + bool ServerAddToArkTributeInventory(FItemNetID* itemID, TArray SteamItemUserIds, FItemNetInfo* AlternateItemInfo) { return NativeCall, FItemNetInfo*>(this, "UPrimalInventoryComponent.ServerAddToArkTributeInventory", itemID, SteamItemUserIds, AlternateItemInfo); } + UPrimalItem* AddAfterRemovingFromArkTributeInventory(UPrimalItem* Item, FItemNetInfo* MyItem, bool bAllowForcedItemDownload) { return NativeCall(this, "UPrimalInventoryComponent.AddAfterRemovingFromArkTributeInventory", Item, MyItem, bAllowForcedItemDownload); } + bool ServerAddFromArkTributeInventory(FItemNetID* itemID, int Quantity) { return NativeCall(this, "UPrimalInventoryComponent.ServerAddFromArkTributeInventory", itemID, Quantity); } + void RequestAddArkTributeItem(FItemNetInfo* theItemInfo, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.RequestAddArkTributeItem", theItemInfo, bFromLoad); } + void AddArkTributeItem(FItemNetInfo* theItemInfo, bool bFromLoad) { NativeCall(this, "UPrimalInventoryComponent.AddArkTributeItem", theItemInfo, bFromLoad); } + void LoadArkTriuteItems(TArray* ItemInfos, bool bClear, bool bFinalBatch) { NativeCall*, bool, bool>(this, "UPrimalInventoryComponent.LoadArkTriuteItems", ItemInfos, bClear, bFinalBatch); } + void FinishedLoadingArkItems() { NativeCall(this, "UPrimalInventoryComponent.FinishedLoadingArkItems"); } + void NotifyItemQuantityUpdated(UPrimalItem* anItem, int amount) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemQuantityUpdated", anItem, amount); } bool IsServerCustomFolder(int InventoryCompType) { return NativeCall(this, "UPrimalInventoryComponent.IsServerCustomFolder", InventoryCompType); } void AddCustomFolder(FString CFolder, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.AddCustomFolder", CFolder, InventoryCompType); } - void RemoveCustomFolder(AShooterPlayerController * PC, FString FolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoveCustomFolder", PC, FolderName, InventoryCompType); } - TArray * GetCustomFolders(TArray * result, int InventoryCompType) { return NativeCall *, TArray *, int>(this, "UPrimalInventoryComponent.GetCustomFolders", result, InventoryCompType); } - void DeleteItemFromCustomFolder(AShooterPlayerController * PC, FString CFolder, FItemNetID ItemId, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.DeleteItemFromCustomFolder", PC, CFolder, ItemId, InventoryCompType); } - bool HasItemsEquipped(TArray> * ItemTemplates, bool bRequiresExactClassMatch, bool bOnlyArkItems, bool bEnsureAllItems) { return NativeCall> *, bool, bool, bool>(this, "UPrimalInventoryComponent.HasItemsEquipped", ItemTemplates, bRequiresExactClassMatch, bOnlyArkItems, bEnsureAllItems); } + void RemoveCustomFolder(AShooterPlayerController* PC, FString FolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoveCustomFolder", PC, FolderName, InventoryCompType); } + TArray* GetCustomFolders(TArray* result, int InventoryCompType) { return NativeCall*, TArray*, int>(this, "UPrimalInventoryComponent.GetCustomFolders", result, InventoryCompType); } + void DeleteItemFromCustomFolder(AShooterPlayerController* PC, FString CFolder, FItemNetID ItemId, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.DeleteItemFromCustomFolder", PC, CFolder, ItemId, InventoryCompType); } + int BPIncrementItemTemplateQuantity(TSubclassOf ItemTemplate, int amount, bool bReplicateToClient, bool bIsBlueprint, bool bRequireExactClassMatch, bool bIsCraftingResourceConsumption, bool bIsFromUseConsumption, bool bIsArkTributeItem, UPrimalItem* UseSpecificItem, bool bDontExceedMaxItems) { return NativeCall, int, bool, bool, bool, bool, bool, bool, UPrimalItem*, bool>(this, "UPrimalInventoryComponent.BPIncrementItemTemplateQuantity", ItemTemplate, amount, bReplicateToClient, bIsBlueprint, bRequireExactClassMatch, bIsCraftingResourceConsumption, bIsFromUseConsumption, bIsArkTributeItem, UseSpecificItem, bDontExceedMaxItems); } + UPrimalItem* BPGetItemOfTemplate(TSubclassOf ItemTemplate, bool bOnlyInventoryItems, bool bOnlyEquippedItems, bool IgnoreItemsWithFullQuantity, bool bFavorSlotItems, bool bIsBlueprint, bool bRequiresExactClassMatch, bool bIgnoreSlotItems, bool bOnlyArkItems, bool bPreferEngram, bool bIsForCraftingConsumption) { return NativeCall, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.BPGetItemOfTemplate", ItemTemplate, bOnlyInventoryItems, bOnlyEquippedItems, IgnoreItemsWithFullQuantity, bFavorSlotItems, bIsBlueprint, bRequiresExactClassMatch, bIgnoreSlotItems, bOnlyArkItems, bPreferEngram, bIsForCraftingConsumption); } + bool HasItemsEquipped(TArray>* ItemTemplates, bool bRequiresExactClassMatch, bool bOnlyArkItems, bool bEnsureAllItems) { return NativeCall>*, bool, bool, bool>(this, "UPrimalInventoryComponent.HasItemsEquipped", ItemTemplates, bRequiresExactClassMatch, bOnlyArkItems, bEnsureAllItems); } bool OverrideBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.OverrideBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } + bool AllowBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.AllowBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } bool AllowCraftingResourceConsumption(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.AllowCraftingResourceConsumption", ItemTemplate, ItemQuantity); } float GetDamageTorpidityIncreaseMultiplierScale() { return NativeCall(this, "UPrimalInventoryComponent.GetDamageTorpidityIncreaseMultiplierScale"); } float GetIndirectTorpidityIncreaseMultiplierScale() { return NativeCall(this, "UPrimalInventoryComponent.GetIndirectTorpidityIncreaseMultiplierScale"); } - float GetItemWeightMultiplier(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetItemWeightMultiplier", anItem); } + float GetItemWeightMultiplier(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetItemWeightMultiplier", anItem); } void UpdateTribeGroupInventoryRank_Implementation(char NewRank) { NativeCall(this, "UPrimalInventoryComponent.UpdateTribeGroupInventoryRank_Implementation", NewRank); } - float OverrideItemMinimumUseInterval(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemMinimumUseInterval", theItem); } - UPrimalItem * AddItemObject(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObject", anItem); } - UPrimalItem * AddItemObjectEx(UPrimalItem * anItem, bool bEquipItem, bool AddToSlot, bool bDontStack, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter * OwnerPlayer) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObjectEx", anItem, bEquipItem, AddToSlot, bDontStack, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer); } - UPrimalItem * BPFindItemWithID(int ItemID1, int ItemID2) { return NativeCall(this, "UPrimalInventoryComponent.BPFindItemWithID", ItemID1, ItemID2); } - bool IsValidCraftingResource(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.IsValidCraftingResource", theItem); } + void BPDropInventoryDeposit(long double DestroyAtTime, int OverrideMaxItemsDropped, bool bOverrideCacheLocation, FVector CacheLocationOverride) { NativeCall(this, "UPrimalInventoryComponent.BPDropInventoryDeposit", DestroyAtTime, OverrideMaxItemsDropped, bOverrideCacheLocation, CacheLocationOverride); } + void BPDropForceLocationInventoryDeposit(long double DestroyAtTime, int OverrideMaxItemsDropped, FVector CacheLocationOverride, int DeadPlayerID) { NativeCall(this, "UPrimalInventoryComponent.BPDropForceLocationInventoryDeposit", DestroyAtTime, OverrideMaxItemsDropped, CacheLocationOverride, DeadPlayerID); } + float OverrideItemMinimumUseInterval(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemMinimumUseInterval", theItem); } + UPrimalItem* AddItemObject(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObject", anItem); } + UPrimalItem* AddItemObjectEx(UPrimalItem* anItem, bool bEquipItem, bool AddToSlot, bool bDontStack, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter* OwnerPlayer, bool bClampStats, UPrimalItem* InsertAfterItem, bool bInsertAtItemInstead) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObjectEx", anItem, bEquipItem, AddToSlot, bDontStack, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer, bClampStats, InsertAfterItem, bInsertAtItemInstead); } + UPrimalItem* BPFindItemWithID(int ItemID1, int ItemID2) { return NativeCall(this, "UPrimalInventoryComponent.BPFindItemWithID", ItemID1, ItemID2); } + bool AllowAddInventoryItem_OnlyAddAll(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_OnlyAddAll", anItem); } + bool AllowAddInventoryItem_MaxQuantity(UPrimalItem* anItem, const int* requestedQuantityIn, int* requestedQuantityOut) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_MaxQuantity", anItem, requestedQuantityIn, requestedQuantityOut); } + bool AllowAddInventoryItem_AnyQuantity(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_AnyQuantity", anItem); } + bool BPRemoteInventoryAllowAddItems(AShooterPlayerController* PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItems", PC); } + bool BPRemoteInventoryAllowAddItem(AShooterPlayerController* PC, UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItem", PC, anItem); } + bool BPRemoteInventoryAllowAddItem_SpecificQuantity(AShooterPlayerController* PC, UPrimalItem* anItem, const int* SpecificQuantityIn, int* SpecificQuantityOut) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItem_SpecificQuantity", PC, anItem, SpecificQuantityIn, SpecificQuantityOut); } + bool IsValidCraftingResource(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.IsValidCraftingResource", theItem); } void OnComponentCreated() { NativeCall(this, "UPrimalInventoryComponent.OnComponentCreated"); } + void Serialize(FArchive* Ar) { NativeCall(this, "UPrimalInventoryComponent.Serialize", Ar); } bool IsAtMaxInventoryItems() { return NativeCall(this, "UPrimalInventoryComponent.IsAtMaxInventoryItems"); } - void BPCraftingFinishedNotification(UPrimalItem * itemToBeCrafted) { NativeCall(this, "UPrimalInventoryComponent.BPCraftingFinishedNotification", itemToBeCrafted); } - bool BPCustomRemoteInventoryAllowAddItems(AShooterPlayerController * PC, UPrimalItem * anItem, int anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } - bool BPCustomRemoteInventoryAllowRemoveItems(AShooterPlayerController * PC, UPrimalItem * anItemToTransfer, int requestedQuantity, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer); } - bool BPRemoteInventoryAllowCrafting(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowCrafting", PC); } - void BPRequestedInventoryItems(AShooterPlayerController * forPC) { NativeCall(this, "UPrimalInventoryComponent.BPRequestedInventoryItems", forPC); } + void TransferAllItemsToInventory(UPrimalInventoryComponent* ToInventory) { NativeCall(this, "UPrimalInventoryComponent.TransferAllItemsToInventory", ToInventory); } + static void StaticRegisterNativesUPrimalInventoryComponent() { NativeCall(nullptr, "UPrimalInventoryComponent.StaticRegisterNativesUPrimalInventoryComponent"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalInventoryComponent.GetPrivateStaticClass", Package); } + void BPAccessedInventory(AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalInventoryComponent.BPAccessedInventory", ForPC); } + bool BPAllowAddInventoryItem(UPrimalItem* Item, int RequestedQuantity, bool bOnlyAddAll) { return NativeCall(this, "UPrimalInventoryComponent.BPAllowAddInventoryItem", Item, RequestedQuantity, bOnlyAddAll); } + bool BPAllowUseInInventory(UPrimalItem* theItem, bool bIsRemoteInventory, AShooterPlayerController* ByPC) { return NativeCall(this, "UPrimalInventoryComponent.BPAllowUseInInventory", theItem, bIsRemoteInventory, ByPC); } + void BPCraftingFinishedNotification(UPrimalItem* itemToBeCrafted) { NativeCall(this, "UPrimalInventoryComponent.BPCraftingFinishedNotification", itemToBeCrafted); } + bool BPCustomRemoteInventoryAllowAddItems(AShooterPlayerController* PC, UPrimalItem* anItem, int anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } + bool BPCustomRemoteInventoryAllowRemoveItems(AShooterPlayerController* PC, UPrimalItem* anItemToTransfer, int requestedQuantity, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer); } + void BPGetExtraItemDisplay(bool* bShowExtraItem, FString* Description, FString* CustomString, UTexture2D** EntryIcon, UMaterialInterface** EntryMaterial) { NativeCall(this, "UPrimalInventoryComponent.BPGetExtraItemDisplay", bShowExtraItem, Description, CustomString, EntryIcon, EntryMaterial); } + void BPInitializeInventory() { NativeCall(this, "UPrimalInventoryComponent.BPInitializeInventory"); } + void BPInventoryRefresh() { NativeCall(this, "UPrimalInventoryComponent.BPInventoryRefresh"); } + bool BPIsCraftingAllowed(UPrimalItem* anItem) { return NativeCall(this, "UPrimalInventoryComponent.BPIsCraftingAllowed", anItem); } + bool BPIsValidCraftingResource(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPIsValidCraftingResource", theItem); } + void BPNotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemAdded", anItem, bEquipItem); } + void BPNotifyItemQuantityUpdated(UPrimalItem* anItem, int amount) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemQuantityUpdated", anItem, amount); } + void BPNotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemRemoved", anItem); } + float BPOverrideItemMinimumUseInterval(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPOverrideItemMinimumUseInterval", theItem); } + void BPPostInitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.BPPostInitDefaultInventory"); } + void BPPreInitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.BPPreInitDefaultInventory"); } + bool BPPreventEquipItem(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPPreventEquipItem", theItem); } + bool BPPreventEquipItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "UPrimalInventoryComponent.BPPreventEquipItemType", equipmentType); } + bool BPRemoteInventoryAllowCrafting(AShooterPlayerController* PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowCrafting", PC); } + bool BPRemoteInventoryAllowRemoveItems(AShooterPlayerController* PC, UPrimalItem* anItemToTransfer) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowRemoveItems", PC, anItemToTransfer); } + bool BPRemoteInventoryAllowViewing(AShooterPlayerController* PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowViewing", PC); } + int BPRemoteInventoryGetMaxVisibleSlots(int NumItems, AShooterPlayerController* PC, bool bIsLocal) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryGetMaxVisibleSlots", NumItems, PC, bIsLocal); } + void BPRequestedInventoryItems(AShooterPlayerController* forPC) { NativeCall(this, "UPrimalInventoryComponent.BPRequestedInventoryItems", forPC); } + bool CanGrindItem(UPrimalItem* item) { return NativeCall(this, "UPrimalInventoryComponent.CanGrindItem", item); } + bool CanGrindItems(AShooterPlayerController* PC) { return NativeCall(this, "UPrimalInventoryComponent.CanGrindItems", PC); } void ClientItemMessageNotification(FItemNetID ItemID, EPrimalItemMessage::Type ItemMessageType) { NativeCall(this, "UPrimalInventoryComponent.ClientItemMessageNotification", ItemID, ItemMessageType); } + void ClientOnArkTributeItemsAdded() { NativeCall(this, "UPrimalInventoryComponent.ClientOnArkTributeItemsAdded"); } + void ClientUpdateFreeCraftingMode(bool bNewFreeCraftingModeValue) { NativeCall(this, "UPrimalInventoryComponent.ClientUpdateFreeCraftingMode", bNewFreeCraftingModeValue); } + void GetGrinderSettings(int* MaxQuantityToGrind, float* GrindGiveItemsPercent, int* MaxItemsToGivePerGrind) { NativeCall(this, "UPrimalInventoryComponent.GetGrinderSettings", MaxQuantityToGrind, GrindGiveItemsPercent, MaxItemsToGivePerGrind); } + bool OverrideUseItem(UPrimalItem* theItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideUseItem", theItem); } void ServerAddItemToSlot(FItemNetID ItemID, int SlotIndex) { NativeCall(this, "UPrimalInventoryComponent.ServerAddItemToSlot", ItemID, SlotIndex); } void ServerForceMergeItemStack(FItemNetID Item1ID, FItemNetID Item2ID) { NativeCall(this, "UPrimalInventoryComponent.ServerForceMergeItemStack", Item1ID, Item2ID); } + void ServerMakeRecipeItem(APrimalStructureItemContainer* Container, FItemNetID NoteToConsume, TSubclassOf RecipeItemTemplate, FString* CustomName, FString* CustomDescription, TArray* CustomColors, TArray* CustomRequirements) { NativeCall, FString*, FString*, TArray*, TArray*>(this, "UPrimalInventoryComponent.ServerMakeRecipeItem", Container, NoteToConsume, RecipeItemTemplate, CustomName, CustomDescription, CustomColors, CustomRequirements); } void ServerRemoveItemFromSlot(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerRemoveItemFromSlot", ItemID); } void ServerSplitItemStack(FItemNetID ItemID, int AmountToSplit) { NativeCall(this, "UPrimalInventoryComponent.ServerSplitItemStack", ItemID, AmountToSplit); } + void SetNextItemConsumptionID(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemConsumptionID", NextItemID); } + void SetNextItemSpoilingID(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemSpoilingID", NextItemID); } void UpdateTribeGroupInventoryRank(char NewRank) { NativeCall(this, "UPrimalInventoryComponent.UpdateTribeGroupInventoryRank", NewRank); } }; struct UPrimalItem : UObject { - TArray& UseItemAddCharacterStatusValuesField() { return *GetNativePointerField*>(this, "UPrimalItem.UseItemAddCharacterStatusValues"); } float& DinoAutoHealingThresholdPercentField() { return *GetNativePointerField(this, "UPrimalItem.DinoAutoHealingThresholdPercent"); } float& DinoAutoHealingUseTimeIntervalField() { return *GetNativePointerField(this, "UPrimalItem.DinoAutoHealingUseTimeInterval"); } int& ArkTributeVersionField() { return *GetNativePointerField(this, "UPrimalItem.ArkTributeVersion"); } TArray>& EquipRequiresExplicitOwnerClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.EquipRequiresExplicitOwnerClasses"); } TArray& EquipRequiresExplicitOwnerTagsField() { return *GetNativePointerField*>(this, "UPrimalItem.EquipRequiresExplicitOwnerTags"); } + TSubclassOf& BuffToGiveOwnerWhenEquippedField() { return *GetNativePointerField*>(this, "UPrimalItem.BuffToGiveOwnerWhenEquipped"); } + FString& BuffToGiveOwnerWhenEquipped_BlueprintPathField() { return *GetNativePointerField(this, "UPrimalItem.BuffToGiveOwnerWhenEquipped_BlueprintPath"); } + bool& bBuffToGiveOwnerWhenEquipped_SoftRefCachedField() { return *GetNativePointerField(this, "UPrimalItem.bBuffToGiveOwnerWhenEquipped_SoftRefCached"); } unsigned int& ExpirationTimeUTCField() { return *GetNativePointerField(this, "UPrimalItem.ExpirationTimeUTC"); } int& BlueprintAllowMaxCraftingsField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintAllowMaxCraftings"); } FString& AbstractItemCraftingDescriptionField() { return *GetNativePointerField(this, "UPrimalItem.AbstractItemCraftingDescription"); } TArray>& ItemSkinUseOnItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.ItemSkinUseOnItemClasses"); } TArray>& ItemSkinPreventOnItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.ItemSkinPreventOnItemClasses"); } - USoundBase * ItemBrokenSoundField() { return *GetNativePointerField(this, "UPrimalItem.ItemBrokenSound"); } - USoundCue * UseItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemSound"); } - USoundBase * EquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.EquipSound"); } - USoundBase * UnEquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.UnEquipSound"); } - USoundBase * UsedOnOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UsedOnOtherItemSound"); } - USoundBase * RemovedFromOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.RemovedFromOtherItemSound"); } + USoundBase* ItemBrokenSoundField() { return *GetNativePointerField(this, "UPrimalItem.ItemBrokenSound"); } + USoundCue* UseItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemSound"); } + USoundBase* EquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.EquipSound"); } + USoundBase* UnEquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.UnEquipSound"); } + USoundBase* UsedOnOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UsedOnOtherItemSound"); } + USoundBase* RemovedFromOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.RemovedFromOtherItemSound"); } float& RandomChanceToBeBlueprintField() { return *GetNativePointerField(this, "UPrimalItem.RandomChanceToBeBlueprint"); } TArray& ActorClassAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalItem.ActorClassAttachmentInfos"); } - TArray * ItemAttachmentInfosField() { return *GetNativePointerField **>(this, "UPrimalItem.ItemAttachmentInfos"); } + TArray* ItemAttachmentInfosField() { return *GetNativePointerField**>(this, "UPrimalItem.ItemAttachmentInfos"); } TArray& DynamicItemAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalItem.DynamicItemAttachmentInfos"); } TArray& ItemSkinAddItemAttachmentsField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemSkinAddItemAttachments"); } TEnumAsByte& MyItemTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyItemType"); } TEnumAsByte& MyConsumableTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyConsumableType"); } TEnumAsByte& MyEquipmentTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyEquipmentType"); } int& ExtraItemCategoryFlagsField() { return *GetNativePointerField(this, "UPrimalItem.ExtraItemCategoryFlags"); } + float& ItemIconScaleField() { return *GetNativePointerField(this, "UPrimalItem.ItemIconScale"); } FVector& BlockingShieldFPVTranslationField() { return *GetNativePointerField(this, "UPrimalItem.BlockingShieldFPVTranslation"); } FRotator& BlockingShieldFPVRotationField() { return *GetNativePointerField(this, "UPrimalItem.BlockingShieldFPVRotation"); } float& ShieldBlockDamagePercentageField() { return *GetNativePointerField(this, "UPrimalItem.ShieldBlockDamagePercentage"); } float& ShieldDamageToDurabilityRatioField() { return *GetNativePointerField(this, "UPrimalItem.ShieldDamageToDurabilityRatio"); } - UAnimMontage * PlayAnimationOnUseField() { return *GetNativePointerField(this, "UPrimalItem.PlayAnimationOnUse"); } + UAnimMontage* PlayAnimationOnUseField() { return *GetNativePointerField(this, "UPrimalItem.PlayAnimationOnUse"); } int& CraftingMinLevelRequirementField() { return *GetNativePointerField(this, "UPrimalItem.CraftingMinLevelRequirement"); } float& CraftingCooldownIntervalField() { return *GetNativePointerField(this, "UPrimalItem.CraftingCooldownInterval"); } TSubclassOf& CraftingActorToSpawnField() { return *GetNativePointerField*>(this, "UPrimalItem.CraftingActorToSpawn"); } - UTexture2D * BlueprintBackgroundOverrideTextureField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintBackgroundOverrideTexture"); } + UTexture2D* BlueprintBackgroundOverrideTextureField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintBackgroundOverrideTexture"); } FString& CraftItemButtonStringOverrideField() { return *GetNativePointerField(this, "UPrimalItem.CraftItemButtonStringOverride"); } TSubclassOf& UseSpawnActorClassField() { return *GetNativePointerField*>(this, "UPrimalItem.UseSpawnActorClass"); } FVector& UseSpawnActorLocOffsetField() { return *GetNativePointerField(this, "UPrimalItem.UseSpawnActorLocOffset"); } @@ -552,8 +676,11 @@ struct UPrimalItem : UObject TSubclassOf& SupportDragOntoItemClassField() { return *GetNativePointerField*>(this, "UPrimalItem.SupportDragOntoItemClass"); } TArray>& SupportDragOntoItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.SupportDragOntoItemClasses"); } TArray>& SkinWeaponTemplatesField() { return *GetNativePointerField>*>(this, "UPrimalItem.SkinWeaponTemplates"); } + TArray>& SupportAmmoItemForWeaponSkinField() { return *GetNativePointerField>*>(this, "UPrimalItem.SupportAmmoItemForWeaponSkin"); } + TArray>& SkinWeaponTemplatesForAmmoField() { return *GetNativePointerField>*>(this, "UPrimalItem.SkinWeaponTemplatesForAmmo"); } TSubclassOf& AmmoSupportDragOntoWeaponItemWeaponTemplateField() { return *GetNativePointerField*>(this, "UPrimalItem.AmmoSupportDragOntoWeaponItemWeaponTemplate"); } TArray>& AmmoSupportDragOntoWeaponItemWeaponTemplatesField() { return *GetNativePointerField>*>(this, "UPrimalItem.AmmoSupportDragOntoWeaponItemWeaponTemplates"); } + TArray& UseItemAddCharacterStatusValuesField() { return *GetNativePointerField*>(this, "UPrimalItem.UseItemAddCharacterStatusValues"); } float& Ingredient_WeightIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_WeightIncreasePerQuantity"); } float& Ingredient_FoodIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_FoodIncreasePerQuantity"); } float& Ingredient_HealthIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_HealthIncreasePerQuantity"); } @@ -563,9 +690,10 @@ struct UPrimalItem : UObject FString& ItemDescriptionField() { return *GetNativePointerField(this, "UPrimalItem.ItemDescription"); } FString& DurabilityStringShortField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityStringShort"); } FString& DurabilityStringField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityString"); } + FString& CustomRepairTextField() { return *GetNativePointerField(this, "UPrimalItem.CustomRepairText"); } float& DroppedItemLifeSpanOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedItemLifeSpanOverride"); } - UStaticMesh * DroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshOverride"); } - UMaterialInterface * DroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshMaterialOverride"); } + UStaticMesh* DroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshOverride"); } + UMaterialInterface* DroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshMaterialOverride"); } FVector& DroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshOverrideScale3D"); } TSubclassOf& SpoilingItemField() { return *GetNativePointerField*>(this, "UPrimalItem.SpoilingItem"); } TArray>& UseRequiresOwnerActorClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.UseRequiresOwnerActorClasses"); } @@ -604,14 +732,16 @@ struct UPrimalItem : UObject float& MinItemDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.MinItemDurability"); } float& SavedDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.SavedDurability"); } TSubclassOf& WeaponTemplateField() { return *GetNativePointerField*>(this, "UPrimalItem.WeaponTemplate"); } - UTexture2D * BrokenIconField() { return *GetNativePointerField(this, "UPrimalItem.BrokenIcon"); } - UTexture2D * ItemIconField() { return *GetNativePointerField(this, "UPrimalItem.ItemIcon"); } - UTexture2D * AlternateItemIconBelowDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.AlternateItemIconBelowDurability"); } + UTexture2D* BrokenIconField() { return *GetNativePointerField(this, "UPrimalItem.BrokenIcon"); } + UTexture2D* ItemIconField() { return *GetNativePointerField(this, "UPrimalItem.ItemIcon"); } + UTexture2D* AlternateItemIconBelowDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.AlternateItemIconBelowDurability"); } float& AlternateItemIconBelowDurabilityValueField() { return *GetNativePointerField(this, "UPrimalItem.AlternateItemIconBelowDurabilityValue"); } - UMaterialInterface * ItemIconMaterialParentField() { return *GetNativePointerField(this, "UPrimalItem.ItemIconMaterialParent"); } + float& DurabilityNotifyThresholdValueField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityNotifyThresholdValue"); } + UMaterialInterface* ItemIconMaterialParentField() { return *GetNativePointerField(this, "UPrimalItem.ItemIconMaterialParent"); } FieldArray<__int16, 6> ItemColorIDField() { return { this, "UPrimalItem.ItemColorID" }; } FieldArray<__int16, 6> PreSkinItemColorIDField() { return { this, "UPrimalItem.PreSkinItemColorID" }; } FieldArray bUseItemColorField() { return { this, "UPrimalItem.bUseItemColor" }; } + TSubclassOf& RandomColorSetField() { return *GetNativePointerField*>(this, "UPrimalItem.RandomColorSet"); } int& ItemQuantityField() { return *GetNativePointerField(this, "UPrimalItem.ItemQuantity"); } int& MaxItemQuantityField() { return *GetNativePointerField(this, "UPrimalItem.MaxItemQuantity"); } TArray& SteamItemUserIDsField() { return *GetNativePointerField*>(this, "UPrimalItem.SteamItemUserIDs"); } @@ -627,21 +757,24 @@ struct UPrimalItem : UObject float& PreviewCameraDefaultZoomMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraDefaultZoomMultiplier"); } float& PreviewCameraMaxZoomMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraMaxZoomMultiplier"); } FName& PlayerMeshTextureMaskParamNameField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMaskParamName"); } - UTexture2D * PlayerMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMask"); } - UTexture2D * PlayerMeshNoItemDefaultTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshNoItemDefaultTextureMask"); } + UTexture2D* PlayerMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMask"); } + UTexture2D* PlayerMeshNoItemDefaultTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshNoItemDefaultTextureMask"); } int& PlayerMeshTextureMaskMaterialIndexField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMaskMaterialIndex"); } FName& FPVHandsMeshTextureMaskParamNameField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMaskParamName"); } - UTexture2D * FPVHandsMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMask"); } + UTexture2D* FPVHandsMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMask"); } int& FPVHandsMeshTextureMaskMaterialIndexField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMaskMaterialIndex"); } - UPrimalItem * WeaponAmmoOverrideItemCDOField() { return *GetNativePointerField(this, "UPrimalItem.WeaponAmmoOverrideItemCDO"); } + int& FPVHandsMeshTextureMaskMaterialIndex2Field() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMaskMaterialIndex2"); } + UPrimalItem* WeaponAmmoOverrideItemCDOField() { return *GetNativePointerField(this, "UPrimalItem.WeaponAmmoOverrideItemCDO"); } long double& CreationTimeField() { return *GetNativePointerField(this, "UPrimalItem.CreationTime"); } long double& LastAutoDurabilityDecreaseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastAutoDurabilityDecreaseTime"); } long double& LastUseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastUseTime"); } long double& LastLocalUseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastLocalUseTime"); } + int& MaxCustomItemDescriptionLengthField() { return *GetNativePointerField(this, "UPrimalItem.MaxCustomItemDescriptionLength"); } int& TempSlotIndexField() { return *GetNativePointerField(this, "UPrimalItem.TempSlotIndex"); } TWeakObjectPtr& AssociatedWeaponField() { return *GetNativePointerField*>(this, "UPrimalItem.AssociatedWeapon"); } - UPrimalItem * MyItemSkinField() { return *GetNativePointerField(this, "UPrimalItem.MyItemSkin"); } + UPrimalItem* MyItemSkinField() { return *GetNativePointerField(this, "UPrimalItem.MyItemSkin"); } TWeakObjectPtr& LastOwnerPlayerField() { return *GetNativePointerField*>(this, "UPrimalItem.LastOwnerPlayer"); } + TArray& CropPhasesDataField() { return *GetNativePointerField*>(this, "UPrimalItem.CropPhasesData"); } float& CropGrowingFertilizerConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropGrowingFertilizerConsumptionRate"); } float& CropMaxFruitFertilizerConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropMaxFruitFertilizerConsumptionRate"); } float& CropGrowingWaterConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropGrowingWaterConsumptionRate"); } @@ -674,7 +807,7 @@ struct UPrimalItem : UObject int& WeaponTotalAmmoField() { return *GetNativePointerField(this, "UPrimalItem.WeaponTotalAmmo"); } TSubclassOf& EngramRequirementItemClassOverrideField() { return *GetNativePointerField*>(this, "UPrimalItem.EngramRequirementItemClassOverride"); } TArray& CraftingResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.CraftingResourceRequirements"); } - USoundBase * ExtraThrowItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.ExtraThrowItemSound"); } + USoundBase* ExtraThrowItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.ExtraThrowItemSound"); } FVector& SpawnOnWaterEncroachmentBoxExtentField() { return *GetNativePointerField(this, "UPrimalItem.SpawnOnWaterEncroachmentBoxExtent"); } TArray>& OnlyUsableOnSpecificClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.OnlyUsableOnSpecificClasses"); } TArray& SaddlePassengerSeatsField() { return *GetNativePointerField*>(this, "UPrimalItem.SaddlePassengerSeats"); } @@ -688,12 +821,13 @@ struct UPrimalItem : UObject float& EggMinTemperatureField() { return *GetNativePointerField(this, "UPrimalItem.EggMinTemperature"); } float& EggMaxTemperatureField() { return *GetNativePointerField(this, "UPrimalItem.EggMaxTemperature"); } float& EggDroppedInvalidTempLoseItemRatingSpeedField() { return *GetNativePointerField(this, "UPrimalItem.EggDroppedInvalidTempLoseItemRatingSpeed"); } - USoundBase * ShieldHitSoundField() { return *GetNativePointerField(this, "UPrimalItem.ShieldHitSound"); } + USoundBase* ShieldHitSoundField() { return *GetNativePointerField(this, "UPrimalItem.ShieldHitSound"); } float& RecipeCraftingSkillScaleField() { return *GetNativePointerField(this, "UPrimalItem.RecipeCraftingSkillScale"); } int& CustomItemIDField() { return *GetNativePointerField(this, "UPrimalItem.CustomItemID"); } float& AddDinoTargetingRangeField() { return *GetNativePointerField(this, "UPrimalItem.AddDinoTargetingRange"); } float& DamageTorpidityArmorRatingField() { return *GetNativePointerField(this, "UPrimalItem.DamageTorpidityArmorRating"); } float& IndirectTorpidityArmorRatingField() { return *GetNativePointerField(this, "UPrimalItem.IndirectTorpidityArmorRating"); } + TSubclassOf& UseParticleEffectField() { return *GetNativePointerField*>(this, "UPrimalItem.UseParticleEffect"); } FName& UseParticleEffectSocketNameField() { return *GetNativePointerField(this, "UPrimalItem.UseParticleEffectSocketName"); } float& UseGiveDinoTameAffinityPercentField() { return *GetNativePointerField(this, "UPrimalItem.UseGiveDinoTameAffinityPercent"); } TArray>& CraftingAdditionalItemsToGiveField() { return *GetNativePointerField>*>(this, "UPrimalItem.CraftingAdditionalItemsToGive"); } @@ -701,7 +835,7 @@ struct UPrimalItem : UObject float& GlobalTameAffinityMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.GlobalTameAffinityMultiplier"); } int& CraftingGiveItemCountField() { return *GetNativePointerField(this, "UPrimalItem.CraftingGiveItemCount"); } int& CraftingGivesItemQuantityOverrideField() { return *GetNativePointerField(this, "UPrimalItem.CraftingGivesItemQuantityOverride"); } - USoundBase * UseItemOnItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemOnItemSound"); } + USoundBase* UseItemOnItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemOnItemSound"); } FName& UseUnlocksEmoteNameField() { return *GetNativePointerField(this, "UPrimalItem.UseUnlocksEmoteName"); } long double& ClusterSpoilingTimeUTCField() { return *GetNativePointerField(this, "UPrimalItem.ClusterSpoilingTimeUTC"); } TArray& EggDinoAncestorsField() { return *GetNativePointerField*>(this, "UPrimalItem.EggDinoAncestors"); } @@ -724,23 +858,30 @@ struct UPrimalItem : UObject float& EquippedReduceDurabilityIntervalField() { return *GetNativePointerField(this, "UPrimalItem.EquippedReduceDurabilityInterval"); } long double& LastEquippedReduceDurabilityTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastEquippedReduceDurabilityTime"); } float& EquippedReduceDurabilityPerIntervalField() { return *GetNativePointerField(this, "UPrimalItem.EquippedReduceDurabilityPerInterval"); } + float& ItemStatClampsMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.ItemStatClampsMultiplier"); } float& MaxDurabiltiyOverrideField() { return *GetNativePointerField(this, "UPrimalItem.MaxDurabiltiyOverride"); } long double& LastItemAdditionTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastItemAdditionTime"); } long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "UPrimalItem.UploadEarliestValidTime"); } float& NextRepairPercentageField() { return *GetNativePointerField(this, "UPrimalItem.NextRepairPercentage"); } - UStaticMesh * NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshOverride"); } - UMaterialInterface * NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshMaterialOverride"); } + UStaticMesh* NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshOverride"); } + UMaterialInterface* NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshMaterialOverride"); } FVector& NetDroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshOverrideScale3D"); } + UStaticMesh* DyePreviewMeshOverrideSMField() { return *GetNativePointerField(this, "UPrimalItem.DyePreviewMeshOverrideSM"); } + UTexture2D* AccessoryActivatedIconOverrideField() { return *GetNativePointerField(this, "UPrimalItem.AccessoryActivatedIconOverride"); } // Bit fields BitFieldValue bCanBuildStructures() { return { this, "UPrimalItem.bCanBuildStructures" }; } BitFieldValue bAllowEquppingItem() { return { this, "UPrimalItem.bAllowEquppingItem" }; } + BitFieldValue bPreventEquipOnTaxidermyBase() { return { this, "UPrimalItem.bPreventEquipOnTaxidermyBase" }; } BitFieldValue bAllowInventoryItem() { return { this, "UPrimalItem.bAllowInventoryItem" }; } BitFieldValue bIsRepairing() { return { this, "UPrimalItem.bIsRepairing" }; } BitFieldValue bEquippedItem() { return { this, "UPrimalItem.bEquippedItem" }; } BitFieldValue bCanSlot() { return { this, "UPrimalItem.bCanSlot" }; } BitFieldValue bUseItemColors() { return { this, "UPrimalItem.bUseItemColors" }; } + BitFieldValue bUseBPInitItemColors() { return { this, "UPrimalItem.bUseBPInitItemColors" }; } + BitFieldValue bRefreshOnDyeUsed() { return { this, "UPrimalItem.bRefreshOnDyeUsed" }; } + BitFieldValue bUseBPPostAddBuffToGiveOwnerCharacter() { return { this, "UPrimalItem.bUseBPPostAddBuffToGiveOwnerCharacter" }; } BitFieldValue bForceDediAttachments() { return { this, "UPrimalItem.bForceDediAttachments" }; } BitFieldValue bAllowCustomColors() { return { this, "UPrimalItem.bAllowCustomColors" }; } BitFieldValue bForceAllowRemovalWhenDead() { return { this, "UPrimalItem.bForceAllowRemovalWhenDead" }; } @@ -766,12 +907,19 @@ struct UPrimalItem : UObject BitFieldValue bUseBlueprintEquippedNotifications() { return { this, "UPrimalItem.bUseBlueprintEquippedNotifications" }; } BitFieldValue bUseInWaterRestoreDurability() { return { this, "UPrimalItem.bUseInWaterRestoreDurability" }; } BitFieldValue bValidCraftingResource() { return { this, "UPrimalItem.bValidCraftingResource" }; } + BitFieldValue bUseBPSetupHUDIconMaterial() { return { this, "UPrimalItem.bUseBPSetupHUDIconMaterial" }; } + BitFieldValue bEquipRequiresDLC_ScorchedEarth() { return { this, "UPrimalItem.bEquipRequiresDLC_ScorchedEarth" }; } + BitFieldValue bEquipRequiresDLC_Aberration() { return { this, "UPrimalItem.bEquipRequiresDLC_Aberration" }; } + BitFieldValue bEquipRequiresDLC_Extinction() { return { this, "UPrimalItem.bEquipRequiresDLC_Extinction" }; } + BitFieldValue bEquipRequiresDLC_Genesis() { return { this, "UPrimalItem.bEquipRequiresDLC_Genesis" }; } BitFieldValue bDurabilityRequirementIgnoredInWater() { return { this, "UPrimalItem.bDurabilityRequirementIgnoredInWater" }; } BitFieldValue bAllowRepair() { return { this, "UPrimalItem.bAllowRepair" }; } + BitFieldValue bCustomBrokenIcon() { return { this, "UPrimalItem.bCustomBrokenIcon" }; } BitFieldValue bAllowRemovalFromInventory() { return { this, "UPrimalItem.bAllowRemovalFromInventory" }; } BitFieldValue bFromSteamInventory() { return { this, "UPrimalItem.bFromSteamInventory" }; } BitFieldValue bIsFromAllClustersInventory() { return { this, "UPrimalItem.bIsFromAllClustersInventory" }; } BitFieldValue bConsumeItemOnUse() { return { this, "UPrimalItem.bConsumeItemOnUse" }; } + BitFieldValue bConfirmBeforeUsing() { return { this, "UPrimalItem.bConfirmBeforeUsing" }; } BitFieldValue bOnlyCanUseInWater() { return { this, "UPrimalItem.bOnlyCanUseInWater" }; } BitFieldValue bCanUseSwimming() { return { this, "UPrimalItem.bCanUseSwimming" }; } BitFieldValue bIsDescriptionOnlyItem() { return { this, "UPrimalItem.bIsDescriptionOnlyItem" }; } @@ -789,12 +937,14 @@ struct UPrimalItem : UObject BitFieldValue bUseOnItemSetIndexAsDestinationItemCustomData() { return { this, "UPrimalItem.bUseOnItemSetIndexAsDestinationItemCustomData" }; } BitFieldValue bSupportDragOntoOtherItem() { return { this, "UPrimalItem.bSupportDragOntoOtherItem" }; } BitFieldValue bIsItemSkin() { return { this, "UPrimalItem.bIsItemSkin" }; } + BitFieldValue bDontResetAttachmentIfNotUpdatingItem() { return { this, "UPrimalItem.bDontResetAttachmentIfNotUpdatingItem" }; } BitFieldValue bItemSkinIgnoreSkinIcon() { return { this, "UPrimalItem.bItemSkinIgnoreSkinIcon" }; } BitFieldValue bPickupEggAlertsDinos() { return { this, "UPrimalItem.bPickupEggAlertsDinos" }; } BitFieldValue bHideCustomDescription() { return { this, "UPrimalItem.bHideCustomDescription" }; } BitFieldValue bCopyCustomDescriptionIntoSpoiledItem() { return { this, "UPrimalItem.bCopyCustomDescriptionIntoSpoiledItem" }; } BitFieldValue bCopyDurabilityIntoSpoiledItem() { return { this, "UPrimalItem.bCopyDurabilityIntoSpoiledItem" }; } BitFieldValue bCraftedRequestCustomItemDescription() { return { this, "UPrimalItem.bCraftedRequestCustomItemDescription" }; } + BitFieldValue bForceAllowCustomItemDescription() { return { this, "UPrimalItem.bForceAllowCustomItemDescription" }; } BitFieldValue bInitializedItem() { return { this, "UPrimalItem.bInitializedItem" }; } BitFieldValue bIsDroppedItem() { return { this, "UPrimalItem.bIsDroppedItem" }; } BitFieldValue bEggIsTooCold() { return { this, "UPrimalItem.bEggIsTooCold" }; } @@ -830,6 +980,7 @@ struct UPrimalItem : UObject BitFieldValue bCraftDontActuallyGiveItem() { return { this, "UPrimalItem.bCraftDontActuallyGiveItem" }; } BitFieldValue bPreventUseWhenSleeping() { return { this, "UPrimalItem.bPreventUseWhenSleeping" }; } BitFieldValue bOverrideRepairingRequirements() { return { this, "UPrimalItem.bOverrideRepairingRequirements" }; } + BitFieldValue bScaleOverridenRepairingRequirements() { return { this, "UPrimalItem.bScaleOverridenRepairingRequirements" }; } BitFieldValue bForceUseItemAddCharacterStatsOnDinos() { return { this, "UPrimalItem.bForceUseItemAddCharacterStatsOnDinos" }; } BitFieldValue bOnlyEquipWhenUnconscious() { return { this, "UPrimalItem.bOnlyEquipWhenUnconscious" }; } BitFieldValue bForcePreventConsumableWhileHandcuffed() { return { this, "UPrimalItem.bForcePreventConsumableWhileHandcuffed" }; } @@ -858,8 +1009,13 @@ struct UPrimalItem : UObject BitFieldValue bIsInitialItem() { return { this, "UPrimalItem.bIsInitialItem" }; } BitFieldValue bPickupEggForceAggro() { return { this, "UPrimalItem.bPickupEggForceAggro" }; } BitFieldValue bClearSkinOnInventoryRemoval() { return { this, "UPrimalItem.bClearSkinOnInventoryRemoval" }; } + BitFieldValue bUseBPCustomAutoDecreaseDurabilityPerInterval() { return { this, "UPrimalItem.bUseBPCustomAutoDecreaseDurabilityPerInterval" }; } BitFieldValue bUseBPCustomInventoryWidgetText() { return { this, "UPrimalItem.bUseBPCustomInventoryWidgetText" }; } + BitFieldValue bUseBPCustomInventoryWidgetTextColor() { return { this, "UPrimalItem.bUseBPCustomInventoryWidgetTextColor" }; } + BitFieldValue bUseBPCustomInventoryWidgetTextForBlueprint() { return { this, "UPrimalItem.bUseBPCustomInventoryWidgetTextForBlueprint" }; } BitFieldValue bUseSkinnedBPCustomInventoryWidgetText() { return { this, "UPrimalItem.bUseSkinnedBPCustomInventoryWidgetText" }; } + BitFieldValue bUseBPCustomDurabilityText() { return { this, "UPrimalItem.bUseBPCustomDurabilityText" }; } + BitFieldValue bUseBPCustomDurabilityTextColor() { return { this, "UPrimalItem.bUseBPCustomDurabilityTextColor" }; } BitFieldValue bUseBPInitFromItemNetInfo() { return { this, "UPrimalItem.bUseBPInitFromItemNetInfo" }; } BitFieldValue bUseBPInitializeItem() { return { this, "UPrimalItem.bUseBPInitializeItem" }; } BitFieldValue bUseBPGetItemNetInfo() { return { this, "UPrimalItem.bUseBPGetItemNetInfo" }; } @@ -881,6 +1037,8 @@ struct UPrimalItem : UObject BitFieldValue bUsingRequiresStandingOnSolidGround() { return { this, "UPrimalItem.bUsingRequiresStandingOnSolidGround" }; } BitFieldValue bUseBPAddedAttachments() { return { this, "UPrimalItem.bUseBPAddedAttachments" }; } BitFieldValue bUseBPConsumeProjectileImpact() { return { this, "UPrimalItem.bUseBPConsumeProjectileImpact" }; } + BitFieldValue bUseBPOverrideProjectileType() { return { this, "UPrimalItem.bUseBPOverrideProjectileType" }; } + BitFieldValue bUsableWithTekGrenadeLauncher() { return { this, "UPrimalItem.bUsableWithTekGrenadeLauncher" }; } BitFieldValue bUseBPNotifyDropped() { return { this, "UPrimalItem.bUseBPNotifyDropped" }; } BitFieldValue bThrowUsesSecondaryActionDrop() { return { this, "UPrimalItem.bThrowUsesSecondaryActionDrop" }; } BitFieldValue bUseBPGetItemIcon() { return { this, "UPrimalItem.bUseBPGetItemIcon" }; } @@ -892,205 +1050,317 @@ struct UPrimalItem : UObject BitFieldValue bUseBPOverrideCraftingConsumption() { return { this, "UPrimalItem.bUseBPOverrideCraftingConsumption" }; } BitFieldValue bIgnoreDrawingItemButtonIcon() { return { this, "UPrimalItem.bIgnoreDrawingItemButtonIcon" }; } BitFieldValue bCensoredItemSkin() { return { this, "UPrimalItem.bCensoredItemSkin" }; } + BitFieldValue bUseBPGetItemDurabilityPercentage() { return { this, "UPrimalItem.bUseBPGetItemDurabilityPercentage" }; } + BitFieldValue bUseBPEquippedItemOnXPEarning() { return { this, "UPrimalItem.bUseBPEquippedItemOnXPEarning" }; } + BitFieldValue bAlwaysTriggerTributeDownloaded() { return { this, "UPrimalItem.bAlwaysTriggerTributeDownloaded" }; } + BitFieldValue bDeferWeaponBeginPlayToAssociatedItemSetTime() { return { this, "UPrimalItem.bDeferWeaponBeginPlayToAssociatedItemSetTime" }; } + BitFieldValue bIsSPlusItem() { return { this, "UPrimalItem.bIsSPlusItem" }; } + BitFieldValue bPreventRemovingClipAmmo() { return { this, "UPrimalItem.bPreventRemovingClipAmmo" }; } + BitFieldValue bNonBlockingShield() { return { this, "UPrimalItem.bNonBlockingShield" }; } + BitFieldValue bNetInfoFromClient() { return { this, "UPrimalItem.bNetInfoFromClient" }; } + BitFieldValue bAddedToWorldItemMap() { return { this, "UPrimalItem.bAddedToWorldItemMap" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimalItem.GetPrivateStaticClass"); } - FItemNetInfo * GetItemNetInfo(FItemNetInfo * result, bool bIsForSendingToClient) { return NativeCall(this, "UPrimalItem.GetItemNetInfo", result, bIsForSendingToClient); } - void InitFromNetInfo(FItemNetInfo * theInfo) { NativeCall(this, "UPrimalItem.InitFromNetInfo", theInfo); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimalItem.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalItem.StaticClass"); } + FItemNetInfo* GetItemNetInfo(FItemNetInfo* result, bool bIsForSendingToClient) { return NativeCall(this, "UPrimalItem.GetItemNetInfo", result, bIsForSendingToClient); } + void InitFromNetInfo(FItemNetInfo* theInfo) { NativeCall(this, "UPrimalItem.InitFromNetInfo", theInfo); } + UWorld* GetWorldHelper(UObject* WorldContextObject) { return NativeCall(this, "UPrimalItem.GetWorldHelper", WorldContextObject); } + int GetMaxItemQuantity(UObject* WorldContextObject) { return NativeCall(this, "UPrimalItem.GetMaxItemQuantity", WorldContextObject); } void AddItemDurability(float durabilityToAdd) { NativeCall(this, "UPrimalItem.AddItemDurability", durabilityToAdd); } - void InitNewItem(float ItemQuality, UPrimalInventoryComponent * toInventory, float MaxItemDifficultyClamp) { NativeCall(this, "UPrimalItem.InitNewItem", ItemQuality, toInventory, MaxItemDifficultyClamp); } - bool AllowEquipItem(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.AllowEquipItem", toInventory); } - bool AllowInventoryItem(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.AllowInventoryItem", toInventory); } - void AddToInventory(UPrimalInventoryComponent * toInventory, bool bEquipItem, bool AddToSlotItems, FItemNetID * InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bIgnoreAbsoluteMaxInventory) { NativeCall(this, "UPrimalItem.AddToInventory", toInventory, bEquipItem, AddToSlotItems, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bIgnoreAbsoluteMaxInventory); } + void InitNewItem(float ItemQuality, UPrimalInventoryComponent* toInventory, float MaxItemDifficultyClamp, float MinRandomQuality) { NativeCall(this, "UPrimalItem.InitNewItem", ItemQuality, toInventory, MaxItemDifficultyClamp, MinRandomQuality); } + bool AllowEquipItem(UPrimalInventoryComponent* toInventory) { return NativeCall(this, "UPrimalItem.AllowEquipItem", toInventory); } + bool AllowInventoryItem(UPrimalInventoryComponent* toInventory) { return NativeCall(this, "UPrimalItem.AllowInventoryItem", toInventory); } + void CacheFolderPath() { NativeCall(this, "UPrimalItem.CacheFolderPath"); } + void AddToInventory(UPrimalInventoryComponent* toInventory, bool bEquipItem, bool AddToSlotItems, FItemNetID* InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bIgnoreAbsoluteMaxInventory) { NativeCall(this, "UPrimalItem.AddToInventory", toInventory, bEquipItem, AddToSlotItems, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bIgnoreAbsoluteMaxInventory); } bool RemoveItemFromArkTributeInventory() { return NativeCall(this, "UPrimalItem.RemoveItemFromArkTributeInventory"); } bool RemoveItemFromInventory(bool bForceRemoval, bool showHUDMessage) { return NativeCall(this, "UPrimalItem.RemoveItemFromInventory", bForceRemoval, showHUDMessage); } float GetSpoilingTime() { return NativeCall(this, "UPrimalItem.GetSpoilingTime"); } - static UPrimalItem * AddNewItem(TSubclassOf ItemArchetype, UPrimalInventoryComponent * GiveToInventory, bool bEquipItem, bool bDontStack, float ItemQuality, bool bForceNoBlueprint, int quantityOverride, bool bForceBlueprint, float MaxItemDifficultyClamp, bool CreateOnClient, TSubclassOf ApplyItemSkin) { return NativeCall, UPrimalInventoryComponent *, bool, bool, float, bool, int, bool, float, bool, TSubclassOf>(nullptr, "UPrimalItem.AddNewItem", ItemArchetype, GiveToInventory, bEquipItem, bDontStack, ItemQuality, bForceNoBlueprint, quantityOverride, bForceBlueprint, MaxItemDifficultyClamp, CreateOnClient, ApplyItemSkin); } - static UPrimalItem * CreateItemFromNetInfo(FItemNetInfo * newItemInfo) { return NativeCall(nullptr, "UPrimalItem.CreateItemFromNetInfo", newItemInfo); } - FString * GetItemName(FString * result, bool bIncludeQuantity, bool bShortName, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemName", result, bIncludeQuantity, bShortName, ForPC); } - FLinearColor * GetItemQualityColor(FLinearColor * result) { return NativeCall(this, "UPrimalItem.GetItemQualityColor", result); } - FString * GetItemDescription(FString * result, bool bGetLongDescription, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemDescription", result, bGetLongDescription, ForPC); } - UTexture2D * GetItemIcon(AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemIcon", ForPC); } + void GetItemBytes(TArray* Bytes) { NativeCall*>(this, "UPrimalItem.GetItemBytes", Bytes); } + static UPrimalItem* CreateFromBytes(TArray* Bytes) { return NativeCall*>(nullptr, "UPrimalItem.CreateFromBytes", Bytes); } + static UPrimalItem* AddNewItem(TSubclassOf ItemArchetype, UPrimalInventoryComponent* GiveToInventory, bool bEquipItem, bool bDontStack, float ItemQuality, bool bForceNoBlueprint, int quantityOverride, bool bForceBlueprint, float MaxItemDifficultyClamp, bool CreateOnClient, TSubclassOf ApplyItemSkin, float MinRandomQuality, bool clampStats, bool bIgnoreAbsolueMaxInventory) { return NativeCall, UPrimalInventoryComponent*, bool, bool, float, bool, int, bool, float, bool, TSubclassOf, float, bool, bool>(nullptr, "UPrimalItem.AddNewItem", ItemArchetype, GiveToInventory, bEquipItem, bDontStack, ItemQuality, bForceNoBlueprint, quantityOverride, bForceBlueprint, MaxItemDifficultyClamp, CreateOnClient, ApplyItemSkin, MinRandomQuality, clampStats, bIgnoreAbsolueMaxInventory); } + static UPrimalItem* CreateItemFromNetInfo(FItemNetInfo* newItemInfo) { return NativeCall(nullptr, "UPrimalItem.CreateItemFromNetInfo", newItemInfo); } + FString* GetItemName(FString* result, bool bIncludeQuantity, bool bShortName, AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.GetItemName", result, bIncludeQuantity, bShortName, ForPC); } + FLinearColor* GetItemQualityColor(FLinearColor* result) { return NativeCall(this, "UPrimalItem.GetItemQualityColor", result); } + FString* GetItemDescription(FString* result, bool bGetLongDescription, AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.GetItemDescription", result, bGetLongDescription, ForPC); } + UTexture2D* GetItemIcon(AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.GetItemIcon", ForPC); } void EquippedItem() { NativeCall(this, "UPrimalItem.EquippedItem"); } void UnequippedItem() { NativeCall(this, "UPrimalItem.UnequippedItem"); } - void UpdatedItem() { NativeCall(this, "UPrimalItem.UpdatedItem"); } + void UpdatedItem(bool ResetUploadTime) { NativeCall(this, "UPrimalItem.UpdatedItem", ResetUploadTime); } + FString* GetItemShortName(FString* result) { return NativeCall(this, "UPrimalItem.GetItemShortName", result); } + static bool StaticGetItemNameAndIcon(TSubclassOf ItemType, FString* OutItemName, UTexture2D** OutItemIcon, bool bShortName, AShooterPlayerController* ForPC) { return NativeCall, FString*, UTexture2D**, bool, AShooterPlayerController*>(nullptr, "UPrimalItem.StaticGetItemNameAndIcon", ItemType, OutItemName, OutItemIcon, bShortName, ForPC); } + void RefreshAttachments(bool bRefreshDefaultAttachments, bool isShieldSpecificRefresh, bool bIsFromUpdateItem) { NativeCall(this, "UPrimalItem.RefreshAttachments", bRefreshDefaultAttachments, isShieldSpecificRefresh, bIsFromUpdateItem); } + void ApplyColorsToMesh(UMeshComponent* mComp) { NativeCall(this, "UPrimalItem.ApplyColorsToMesh", mComp); } void SetOwnerNoSee(bool bNoSee, bool bForceHideFirstPerson) { NativeCall(this, "UPrimalItem.SetOwnerNoSee", bNoSee, bForceHideFirstPerson); } - void RemoveAttachments(AActor * UseOtherActor, bool bRefreshDefaultAttachments) { NativeCall(this, "UPrimalItem.RemoveAttachments", UseOtherActor, bRefreshDefaultAttachments); } - UActorComponent * GetAttachedComponent(int attachmentIndex, AActor * UseOtherActor) { return NativeCall(this, "UPrimalItem.GetAttachedComponent", attachmentIndex, UseOtherActor); } - UActorComponent * GetComponentToAttach(int attachmentIndex, AActor * UseOtherActor) { return NativeCall(this, "UPrimalItem.GetComponentToAttach", attachmentIndex, UseOtherActor); } - AActor * GetOwnerActor() { return NativeCall(this, "UPrimalItem.GetOwnerActor"); } - UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIcon", AssociatedDataObject, bIsEnabled); } - FString * GetEntryString(FString * result) { return NativeCall(this, "UPrimalItem.GetEntryString", result); } + void RemoveAttachments(AActor* UseOtherActor, bool bRefreshDefaultAttachments, bool isShieldSpecificRefresh) { NativeCall(this, "UPrimalItem.RemoveAttachments", UseOtherActor, bRefreshDefaultAttachments, isShieldSpecificRefresh); } + int GetAttachedComponentsNum() { return NativeCall(this, "UPrimalItem.GetAttachedComponentsNum"); } + UActorComponent* GetAttachedComponent(int attachmentIndex, AActor* UseOtherActor) { return NativeCall(this, "UPrimalItem.GetAttachedComponent", attachmentIndex, UseOtherActor); } + UActorComponent* GetComponentToAttach(int attachmentIndex, AActor* UseOtherActor) { return NativeCall(this, "UPrimalItem.GetComponentToAttach", attachmentIndex, UseOtherActor); } + AActor* GetOwnerActor() { return NativeCall(this, "UPrimalItem.GetOwnerActor"); } + AShooterCharacter* GetOwnerPlayer() { return NativeCall(this, "UPrimalItem.GetOwnerPlayer"); } + UTexture2D* GetEntryIcon(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + FString* GetEntryString(FString* result) { return NativeCall(this, "UPrimalItem.GetEntryString", result); } float GetItemWeight(bool bJustOneQuantity, bool bForceNotBlueprintWeight) { return NativeCall(this, "UPrimalItem.GetItemWeight", bJustOneQuantity, bForceNotBlueprintWeight); } void AddToSlot(int theSlotIndex, bool bForce) { NativeCall(this, "UPrimalItem.AddToSlot", theSlotIndex, bForce); } void RemoveFromSlot(bool bForce) { NativeCall(this, "UPrimalItem.RemoveFromSlot", bForce); } - bool AllowSlotting(UPrimalInventoryComponent * toInventory, bool bForce) { return NativeCall(this, "UPrimalItem.AllowSlotting", toInventory, bForce); } + bool AllowSlotting(UPrimalInventoryComponent* toInventory, bool bForce) { return NativeCall(this, "UPrimalItem.AllowSlotting", toInventory, bForce); } bool IsBroken() { return NativeCall(this, "UPrimalItem.IsBroken"); } - int GetExplicitEntryIndexType() { return NativeCall(this, "UPrimalItem.GetExplicitEntryIndexType"); } + int GetExplicitEntryIndexType(bool bGetBaseValue) { return NativeCall(this, "UPrimalItem.GetExplicitEntryIndexType", bGetBaseValue); } float GetUseItemAddCharacterStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalItem.GetUseItemAddCharacterStatusValue", valueType); } void Use(bool bOverridePlayerInput) { NativeCall(this, "UPrimalItem.Use", bOverridePlayerInput); } float GetRemainingCooldownTime() { return NativeCall(this, "UPrimalItem.GetRemainingCooldownTime"); } - bool CanSpawnOverWater(AActor * ownerActor, FTransform * SpawnTransform) { return NativeCall(this, "UPrimalItem.CanSpawnOverWater", ownerActor, SpawnTransform); } + bool CanSpawnOverWater(AActor* ownerActor, FTransform* SpawnTransform) { return NativeCall(this, "UPrimalItem.CanSpawnOverWater", ownerActor, SpawnTransform); } bool IsCooldownReadyForUse() { return NativeCall(this, "UPrimalItem.IsCooldownReadyForUse"); } + FString* GetInventoryIconDisplayText_Implementation(FString* result) { return NativeCall(this, "UPrimalItem.GetInventoryIconDisplayText_Implementation", result); } bool CanUse(bool bIgnoreCooldown) { return NativeCall(this, "UPrimalItem.CanUse", bIgnoreCooldown); } - void LocalUse(AShooterPlayerController * ForPC) { NativeCall(this, "UPrimalItem.LocalUse", ForPC); } + void LocalUse(AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalItem.LocalUse", ForPC); } void UnequipWeapon(bool bDelayedUnequip) { NativeCall(this, "UPrimalItem.UnequipWeapon", bDelayedUnequip); } - FString * GetEntryDescription(FString * result) { return NativeCall(this, "UPrimalItem.GetEntryDescription", result); } + FString* GetEntryDescription(FString* result) { return NativeCall(this, "UPrimalItem.GetEntryDescription", result); } void AddedToInventory() { NativeCall(this, "UPrimalItem.AddedToInventory"); } - void InitializeItem(bool bForceReinit, UWorld * OptionalInitWorld) { NativeCall(this, "UPrimalItem.InitializeItem", bForceReinit, OptionalInitWorld); } + void InitializeItem(bool bForceReinit, UWorld* OptionalInitWorld) { NativeCall(this, "UPrimalItem.InitializeItem", bForceReinit, OptionalInitWorld); } + void ClearItemIcon() { NativeCall(this, "UPrimalItem.ClearItemIcon"); } void InitItemIcon() { NativeCall(this, "UPrimalItem.InitItemIcon"); } - FLinearColor * GetColorForItemColorID(FLinearColor * result, int SetNum, int ID) { return NativeCall(this, "UPrimalItem.GetColorForItemColorID", result, SetNum, ID); } - static FLinearColor * StaticGetColorForItemColorID(FLinearColor * result, int ID) { return NativeCall(nullptr, "UPrimalItem.StaticGetColorForItemColorID", result, ID); } - UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + void ApplyColorsFromStructure(APrimalStructure* theStructure) { NativeCall(this, "UPrimalItem.ApplyColorsFromStructure", theStructure); } + void EquippedWeapon() { NativeCall(this, "UPrimalItem.EquippedWeapon"); } + void UnequippedWeapon() { NativeCall(this, "UPrimalItem.UnequippedWeapon"); } + unsigned __int16 calcResourceQuantityRequired(TSubclassOf itemType, const float baseRequiredAmount, UPrimalInventoryComponent* inventory, bool isCrafting) { return NativeCall, const float, UPrimalInventoryComponent*, bool>(this, "UPrimalItem.calcResourceQuantityRequired", itemType, baseRequiredAmount, inventory, isCrafting); } + FLinearColor* GetColorForItemColorID(FLinearColor* result, int SetNum, int ID) { return NativeCall(this, "UPrimalItem.GetColorForItemColorID", result, SetNum, ID); } + static FLinearColor* StaticGetColorForItemColorID(FLinearColor* result, int ID) { return NativeCall(nullptr, "UPrimalItem.StaticGetColorForItemColorID", result, ID); } + static int StaticGetDinoColorSetIndexForItemColorID(int ID) { return NativeCall(nullptr, "UPrimalItem.StaticGetDinoColorSetIndexForItemColorID", ID); } + static int GetItemColorIDFromDyeItemID(int MasterItemListIndex) { return NativeCall(nullptr, "UPrimalItem.GetItemColorIDFromDyeItemID", MasterItemListIndex); } + UMaterialInterface* GetEntryIconMaterial(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } int GetItemQuantity() { return NativeCall(this, "UPrimalItem.GetItemQuantity"); } float GetMiscInfoFontScale() { return NativeCall(this, "UPrimalItem.GetMiscInfoFontScale"); } - FString * GetMiscInfoString(FString * result) { return NativeCall(this, "UPrimalItem.GetMiscInfoString", result); } + FString* GetMiscInfoString(FString* result) { return NativeCall(this, "UPrimalItem.GetMiscInfoString", result); } + FItemStatInfo* GetItemStatInfo(FItemStatInfo* result, int idx) { return NativeCall(this, "UPrimalItem.GetItemStatInfo", result, idx); } + void SetItemStatInfo(int idx, FItemStatInfo* val) { NativeCall(this, "UPrimalItem.SetItemStatInfo", idx, val); } + float BPGetItemStatModifier(int idx, int ItemStatValue) { return NativeCall(this, "UPrimalItem.BPGetItemStatModifier", idx, ItemStatValue); } + int BPGetItemStatRandomValue(float QualityLevel, int idx) { return NativeCall(this, "UPrimalItem.BPGetItemStatRandomValue", QualityLevel, idx); } + int GetItemStatValues(int idx) { return NativeCall(this, "UPrimalItem.GetItemStatValues", idx); } + void SetItemStatValues(int idx, int val) { NativeCall(this, "UPrimalItem.SetItemStatValues", idx, val); } + TEnumAsByte* GetActualEquipmentType(TEnumAsByte* result, bool bGetBaseValue) { return NativeCall*, TEnumAsByte*, bool>(this, "UPrimalItem.GetActualEquipmentType", result, bGetBaseValue); } + UClass* GetBuffToGiveOwnerWhenEquipped(bool bForceResolveSoftRef) { return NativeCall(this, "UPrimalItem.GetBuffToGiveOwnerWhenEquipped", bForceResolveSoftRef); } + bool HasBuffToGiveOwnerWhenEquipped() { return NativeCall(this, "UPrimalItem.HasBuffToGiveOwnerWhenEquipped"); } int IncrementItemQuantity(int amount, bool bReplicateToClient, bool bDontUpdateWeight, bool bIsFromUseConsumption, bool bIsArkTributeItem, bool bIsFromCraftingConsumption) { return NativeCall(this, "UPrimalItem.IncrementItemQuantity", amount, bReplicateToClient, bDontUpdateWeight, bIsFromUseConsumption, bIsArkTributeItem, bIsFromCraftingConsumption); } - FString * GetItemTypeString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemTypeString", result); } - FString * GetItemSubtypeString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemSubtypeString", result); } - FString * GetItemStatsString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemStatsString", result); } - bool MeetBlueprintCraftingRequirements(UPrimalInventoryComponent * compareInventoryComp, int CraftAmountOverride, AShooterPlayerController * ForPlayer, bool bIsForCraftQueueAddition, bool bTestFullQueue) { return NativeCall(this, "UPrimalItem.MeetBlueprintCraftingRequirements", compareInventoryComp, CraftAmountOverride, ForPlayer, bIsForCraftQueueAddition, bTestFullQueue); } - bool TestMeetsCraftingRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent) { return NativeCall(this, "UPrimalItem.TestMeetsCraftingRequirementsPercent", invComp, Percent); } - void ConsumeCraftingRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent) { NativeCall(this, "UPrimalItem.ConsumeCraftingRequirementsPercent", invComp, Percent); } - FString * GetCraftingRequirementsString(FString * result, UPrimalInventoryComponent * compareInventoryComp) { return NativeCall(this, "UPrimalItem.GetCraftingRequirementsString", result, compareInventoryComp); } - bool MeetRepairingRequirements(UPrimalInventoryComponent * compareInventoryComp, bool bIsForCraftQueueAddition) { return NativeCall(this, "UPrimalItem.MeetRepairingRequirements", compareInventoryComp, bIsForCraftQueueAddition); } - FString * GetRepairingRequirementsString(FString * result, UPrimalInventoryComponent * compareInventoryComp, bool bUseBaseRequeriments, float OverrideRepairPercent) { return NativeCall(this, "UPrimalItem.GetRepairingRequirementsString", result, compareInventoryComp, bUseBaseRequeriments, OverrideRepairPercent); } + void OverrideItemRating(float rating) { NativeCall(this, "UPrimalItem.OverrideItemRating", rating); } + FString* GetItemTypeString(FString* result) { return NativeCall(this, "UPrimalItem.GetItemTypeString", result); } + FString* GetItemSubtypeString(FString* result) { return NativeCall(this, "UPrimalItem.GetItemSubtypeString", result); } + FString* GetItemStatsString(FString* result) { return NativeCall(this, "UPrimalItem.GetItemStatsString", result); } + bool MeetBlueprintCraftingRequirements(UPrimalInventoryComponent* compareInventoryComp, int CraftAmountOverride, AShooterPlayerController* ForPlayer, bool bIsForCraftQueueAddition, bool bTestFullQueue) { return NativeCall(this, "UPrimalItem.MeetBlueprintCraftingRequirements", compareInventoryComp, CraftAmountOverride, ForPlayer, bIsForCraftQueueAddition, bTestFullQueue); } + bool TestMeetsCraftingRequirementsPercent(UPrimalInventoryComponent* invComp, float Percent) { return NativeCall(this, "UPrimalItem.TestMeetsCraftingRequirementsPercent", invComp, Percent); } + void ConsumeCraftingRequirementsPercent(UPrimalInventoryComponent* invComp, float Percent) { NativeCall(this, "UPrimalItem.ConsumeCraftingRequirementsPercent", invComp, Percent); } + FString* GetCraftingRequirementsString(FString* result, UPrimalInventoryComponent* compareInventoryComp) { return NativeCall(this, "UPrimalItem.GetCraftingRequirementsString", result, compareInventoryComp); } + bool MeetRepairingRequirements(UPrimalInventoryComponent* compareInventoryComp, bool bIsForCraftQueueAddition) { return NativeCall(this, "UPrimalItem.MeetRepairingRequirements", compareInventoryComp, bIsForCraftQueueAddition); } + FString* GetRepairingRequirementsString(FString* result, UPrimalInventoryComponent* compareInventoryComp, bool bUseBaseRequeriments, float OverrideRepairPercent) { return NativeCall(this, "UPrimalItem.GetRepairingRequirementsString", result, compareInventoryComp, bUseBaseRequeriments, OverrideRepairPercent); } float GetItemStatModifier(EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalItem.GetItemStatModifier", statType); } - FString * GetItemStatString(FString * result, EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalItem.GetItemStatString", result, statType); } + FString* GetItemStatString(FString* result, EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalItem.GetItemStatString", result, statType); } bool UsesDurability() { return NativeCall(this, "UPrimalItem.UsesDurability"); } bool CanRepair(bool bIgnoreInventoryRequirement) { return NativeCall(this, "UPrimalItem.CanRepair", bIgnoreInventoryRequirement); } - bool CanRepairInInventory(UPrimalInventoryComponent * invComp) { return NativeCall(this, "UPrimalItem.CanRepairInInventory", invComp); } + bool CanRepairInInventory(UPrimalInventoryComponent* invComp) { return NativeCall(this, "UPrimalItem.CanRepairInInventory", invComp); } float GetDurabilityPercentage() { return NativeCall(this, "UPrimalItem.GetDurabilityPercentage"); } void CraftBlueprint(bool bConsumeResources) { NativeCall(this, "UPrimalItem.CraftBlueprint", bConsumeResources); } bool CanFullyCraft() { return NativeCall(this, "UPrimalItem.CanFullyCraft"); } void StopCraftingRepairing(bool bCheckIfCraftingOrRepairing) { NativeCall(this, "UPrimalItem.StopCraftingRepairing", bCheckIfCraftingOrRepairing); } - UPrimalItem * FinishCraftingBlueprint() { return NativeCall(this, "UPrimalItem.FinishCraftingBlueprint"); } + UPrimalItem* FinishCraftingBlueprint() { return NativeCall(this, "UPrimalItem.FinishCraftingBlueprint"); } float GetTimeToCraftBlueprint() { return NativeCall(this, "UPrimalItem.GetTimeToCraftBlueprint"); } float GetTimeForFullRepair() { return NativeCall(this, "UPrimalItem.GetTimeForFullRepair"); } - static void GenerateItemID(FItemNetID * TheItemID) { NativeCall(nullptr, "UPrimalItem.GenerateItemID", TheItemID); } - void TickCraftingItem(float DeltaTime, AShooterGameState * theGameState) { NativeCall(this, "UPrimalItem.TickCraftingItem", DeltaTime, theGameState); } + static void GenerateItemID(FItemNetID* TheItemID) { NativeCall(nullptr, "UPrimalItem.GenerateItemID", TheItemID); } + void TickCraftingItem(float DeltaTime, AShooterGameState* theGameState) { NativeCall(this, "UPrimalItem.TickCraftingItem", DeltaTime, theGameState); } float GetCraftingPercent() { return NativeCall(this, "UPrimalItem.GetCraftingPercent"); } float GetRepairingPercent() { return NativeCall(this, "UPrimalItem.GetRepairingPercent"); } void SetQuantity(int NewQuantity, bool ShowHUDNotification) { NativeCall(this, "UPrimalItem.SetQuantity", NewQuantity, ShowHUDNotification); } void RepairItem(bool bIgnoreInventoryRequirement, float UseNextRepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalItem.RepairItem", bIgnoreInventoryRequirement, UseNextRepairPercentage, RepairSpeedMultiplier); } void FinishRepairing() { NativeCall(this, "UPrimalItem.FinishRepairing"); } - void Used(UPrimalItem * DestinationItem, int AdditionalData) { NativeCall(this, "UPrimalItem.Used", DestinationItem, AdditionalData); } + void Used(UPrimalItem* DestinationItem, int AdditionalData) { NativeCall(this, "UPrimalItem.Used", DestinationItem, AdditionalData); } void RemoveWeaponAccessory() { NativeCall(this, "UPrimalItem.RemoveWeaponAccessory"); } void ServerRemoveItemSkin() { NativeCall(this, "UPrimalItem.ServerRemoveItemSkin"); } void ServerRemoveItemSkinOnly() { NativeCall(this, "UPrimalItem.ServerRemoveItemSkinOnly"); } void ServerRemoveWeaponAccessoryOnly() { NativeCall(this, "UPrimalItem.ServerRemoveWeaponAccessoryOnly"); } void RemoveClipAmmo(bool bDontUpdateItem) { NativeCall(this, "UPrimalItem.RemoveClipAmmo", bDontUpdateItem); } - bool CanStackWithItem(UPrimalItem * otherItem, int * QuantityOverride) { return NativeCall(this, "UPrimalItem.CanStackWithItem", otherItem, QuantityOverride); } + bool CanStackWithItem(UPrimalItem* otherItem, int* QuantityOverride) { return NativeCall(this, "UPrimalItem.CanStackWithItem", otherItem, QuantityOverride); } bool CheckAutoCraftBlueprint() { return NativeCall(this, "UPrimalItem.CheckAutoCraftBlueprint"); } bool CanCraft() { return NativeCall(this, "UPrimalItem.CanCraft"); } - bool CanCraftInInventory(UPrimalInventoryComponent * invComp) { return NativeCall(this, "UPrimalItem.CanCraftInInventory", invComp); } - FString * GetCraftRepairInvReqString(FString * result) { return NativeCall(this, "UPrimalItem.GetCraftRepairInvReqString", result); } - bool AllowUseInInventory(bool bIsRemoteInventory, AShooterPlayerController * ByPC, bool DontCheckActor) { return NativeCall(this, "UPrimalItem.AllowUseInInventory", bIsRemoteInventory, ByPC, DontCheckActor); } + bool CanCraftInInventory(UPrimalInventoryComponent* invComp) { return NativeCall(this, "UPrimalItem.CanCraftInInventory", invComp); } + FString* GetCraftRepairInvReqString(FString* result) { return NativeCall(this, "UPrimalItem.GetCraftRepairInvReqString", result); } + bool AllowUseInInventory(bool bIsRemoteInventory, AShooterPlayerController* ByPC, bool DontCheckActor) { return NativeCall(this, "UPrimalItem.AllowUseInInventory", bIsRemoteInventory, ByPC, DontCheckActor); } bool CanBeArkTributeItem() { return NativeCall(this, "UPrimalItem.CanBeArkTributeItem"); } void SetEngramBlueprint() { NativeCall(this, "UPrimalItem.SetEngramBlueprint"); } bool CanSpoil() { return NativeCall(this, "UPrimalItem.CanSpoil"); } - void RecalcSpoilingTime(long double TimeSeconds, float SpoilPercent, UPrimalInventoryComponent * forComp) { NativeCall(this, "UPrimalItem.RecalcSpoilingTime", TimeSeconds, SpoilPercent, forComp); } + void RecalcSpoilingTime(long double TimeSeconds, float SpoilPercent, UPrimalInventoryComponent* forComp) { NativeCall(this, "UPrimalItem.RecalcSpoilingTime", TimeSeconds, SpoilPercent, forComp); } void InventoryRefreshCheckItem() { NativeCall(this, "UPrimalItem.InventoryRefreshCheckItem"); } bool IsValidForCrafting() { return NativeCall(this, "UPrimalItem.IsValidForCrafting"); } bool IsOwnerInWater() { return NativeCall(this, "UPrimalItem.IsOwnerInWater"); } bool IsOwnerInNoPainWater() { return NativeCall(this, "UPrimalItem.IsOwnerInNoPainWater"); } - bool AllowRemoteAddToInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.AllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } + bool AllowRemoteAddToInventory(UPrimalInventoryComponent* invComp, AShooterPlayerController* ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.AllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } bool CanDrop() { return NativeCall(this, "UPrimalItem.CanDrop"); } - void PickupAlertDinos(AActor * groundItem) { NativeCall(this, "UPrimalItem.PickupAlertDinos", groundItem); } - void GetItemAttachmentInfos(AActor * OwnerActor) { NativeCall(this, "UPrimalItem.GetItemAttachmentInfos", OwnerActor); } + void PickupAlertDinos(AActor* groundItem) { NativeCall(this, "UPrimalItem.PickupAlertDinos", groundItem); } + void GetItemAttachmentInfos(AActor* OwnerActor) { NativeCall(this, "UPrimalItem.GetItemAttachmentInfos", OwnerActor); } void SetAttachedMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "UPrimalItem.SetAttachedMeshesMaterialScalarParamValue", ParamName, Value); } - bool CanUseWithItemSource(UPrimalItem * DestinationItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemSource", DestinationItem); } - bool CanUseWithItemDestination(UPrimalItem * SourceItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemDestination", SourceItem); } - bool UseItemOntoItem(UPrimalItem * DestinationItem, int AdditionalData) { return NativeCall(this, "UPrimalItem.UseItemOntoItem", DestinationItem, AdditionalData); } - void LocalUseItemOntoItem(AShooterPlayerController * ForPC, UPrimalItem * DestinationItem) { NativeCall(this, "UPrimalItem.LocalUseItemOntoItem", ForPC, DestinationItem); } - FString * GetPrimaryColorName(FString * result) { return NativeCall(this, "UPrimalItem.GetPrimaryColorName", result); } - bool ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool __formal) { return NativeCall(this, "UPrimalItem.ProcessEditText", ForPC, TextToUse, __formal); } - void NotifyEditText(AShooterPlayerController * PC) { NativeCall(this, "UPrimalItem.NotifyEditText", PC); } - void AddToArkTributeInvenroty(UPrimalInventoryComponent * toInventory, bool bFromLoad) { NativeCall(this, "UPrimalItem.AddToArkTributeInvenroty", toInventory, bFromLoad); } - int GetMaximumAdditionalCrafting(UPrimalInventoryComponent * forComp, AShooterPlayerController * PC) { return NativeCall(this, "UPrimalItem.GetMaximumAdditionalCrafting", forComp, PC); } + bool CanUseWithItemSource(UPrimalItem* DestinationItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemSource", DestinationItem); } + bool IsDyed() { return NativeCall(this, "UPrimalItem.IsDyed"); } + int GetItemColorID(int theRegion) { return NativeCall(this, "UPrimalItem.GetItemColorID", theRegion); } + bool CanUseWithItemDestination(UPrimalItem* SourceItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemDestination", SourceItem); } + bool UseItemOntoItem(UPrimalItem* DestinationItem, int AdditionalData) { return NativeCall(this, "UPrimalItem.UseItemOntoItem", DestinationItem, AdditionalData); } + void LocalUseItemOntoItem(AShooterPlayerController* ForPC, UPrimalItem* DestinationItem) { NativeCall(this, "UPrimalItem.LocalUseItemOntoItem", ForPC, DestinationItem); } + FString* GetPrimaryColorName(FString* result) { return NativeCall(this, "UPrimalItem.GetPrimaryColorName", result); } + void Serialize(FArchive* Ar) { NativeCall(this, "UPrimalItem.Serialize", Ar); } + bool ProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool __formal) { return NativeCall(this, "UPrimalItem.ProcessEditText", ForPC, TextToUse, __formal); } + void NotifyEditText(AShooterPlayerController* PC) { NativeCall(this, "UPrimalItem.NotifyEditText", PC); } + void AddToArkTributeInvenroty(UPrimalInventoryComponent* toInventory, bool bFromLoad) { NativeCall(this, "UPrimalItem.AddToArkTributeInvenroty", toInventory, bFromLoad); } + int GetMaximumAdditionalCrafting(UPrimalInventoryComponent* forComp, AShooterPlayerController* PC) { return NativeCall(this, "UPrimalItem.GetMaximumAdditionalCrafting", forComp, PC); } void EquippedTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.EquippedTick", DeltaSeconds); } float GetWeaponTemplateMeleeDamageAmount() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateMeleeDamageAmount"); } float GetWeaponTemplateDurabilityToConsumePerMeleeHit() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateDurabilityToConsumePerMeleeHit"); } - TSubclassOf * GetWeaponTemplateMeleeDamageType(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetWeaponTemplateMeleeDamageType", result); } - TSubclassOf * GetWeaponTemplateHarvestDamageType(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetWeaponTemplateHarvestDamageType", result); } + TSubclassOf* GetWeaponTemplateMeleeDamageType(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "UPrimalItem.GetWeaponTemplateMeleeDamageType", result); } + TSubclassOf* GetWeaponTemplateHarvestDamageType(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "UPrimalItem.GetWeaponTemplateHarvestDamageType", result); } float GetWeaponTemplateHarvestDamageMultiplier() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateHarvestDamageMultiplier"); } + void InventoryLoadedFromSaveGame() { NativeCall(this, "UPrimalItem.InventoryLoadedFromSaveGame"); } + bool CheckForInventoryDupes() { return NativeCall(this, "UPrimalItem.CheckForInventoryDupes"); } void CalcRecipeStats() { NativeCall(this, "UPrimalItem.CalcRecipeStats"); } + int GetCraftingResourceRequirement(int CraftingResourceIndex) { return NativeCall(this, "UPrimalItem.GetCraftingResourceRequirement", CraftingResourceIndex); } + void BPGetItemID(int* ItemID1, int* ItemID2) { NativeCall(this, "UPrimalItem.BPGetItemID", ItemID1, ItemID2); } + bool BPMatchesItemID(int ItemID1, int ItemID2) { return NativeCall(this, "UPrimalItem.BPMatchesItemID", ItemID1, ItemID2); } bool IsUsableConsumable() { return NativeCall(this, "UPrimalItem.IsUsableConsumable"); } + int GetWeaponClipAmmo() { return NativeCall(this, "UPrimalItem.GetWeaponClipAmmo"); } bool CanEquipWeapon() { return NativeCall(this, "UPrimalItem.CanEquipWeapon"); } + bool HasCustomItemData(FName CustomDataName) { return NativeCall(this, "UPrimalItem.HasCustomItemData", CustomDataName); } void RemoveCustomItemData(FName CustomDataName) { NativeCall(this, "UPrimalItem.RemoveCustomItemData", CustomDataName); } - bool GetCustomItemData(FName CustomDataName, FCustomItemData * OutData) { return NativeCall(this, "UPrimalItem.GetCustomItemData", CustomDataName, OutData); } - void SetCustomItemData(FCustomItemData * InData) { NativeCall(this, "UPrimalItem.SetCustomItemData", InData); } + bool GetCustomItemData(FName CustomDataName, FCustomItemData* OutData) { return NativeCall(this, "UPrimalItem.GetCustomItemData", CustomDataName, OutData); } + void SetCustomItemData(FCustomItemData* InData) { NativeCall(this, "UPrimalItem.SetCustomItemData", InData); } + static FItemNetID BPMakeItemID(int TheItemID1, int TheItemID2) { return NativeCall(nullptr, "UPrimalItem.BPMakeItemID", TheItemID1, TheItemID2); } + UPrimalInventoryComponent* GetInitializeItemOwnerInventory() { return NativeCall(this, "UPrimalItem.GetInitializeItemOwnerInventory"); } int GetEngramRequirementLevel() { return NativeCall(this, "UPrimalItem.GetEngramRequirementLevel"); } void BPSetWeaponClipAmmo(int NewClipAmmo) { NativeCall(this, "UPrimalItem.BPSetWeaponClipAmmo", NewClipAmmo); } + USoundBase* OverrideCrouchingSound_Implementation(USoundBase* InSound, bool bIsProne, int soundState) { return NativeCall(this, "UPrimalItem.OverrideCrouchingSound_Implementation", InSound, bIsProne, soundState); } void Crafted_Implementation(bool bWasCraftedFromEngram) { NativeCall(this, "UPrimalItem.Crafted_Implementation", bWasCraftedFromEngram); } - UMaterialInterface * GetHUDIconMaterial() { return NativeCall(this, "UPrimalItem.GetHUDIconMaterial"); } - float GetEggHatchTimeRemaining(UWorld * theWorld) { return NativeCall(this, "UPrimalItem.GetEggHatchTimeRemaining", theWorld); } - bool IsReadyToUpload(UWorld * theWorld) { return NativeCall(this, "UPrimalItem.IsReadyToUpload", theWorld); } - float GetTimeUntilUploadAllowed(UWorld * theWorld) { return NativeCall(this, "UPrimalItem.GetTimeUntilUploadAllowed", theWorld); } - float HandleShieldDamageBlocking_Implementation(AShooterCharacter * ForShooterCharacter, float DamageIn, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking_Implementation", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } - TArray * GetItemDyeColors(TArray * result) { return NativeCall *, TArray *>(this, "UPrimalItem.GetItemDyeColors", result); } + UMaterialInterface* GetHUDIconMaterial() { return NativeCall(this, "UPrimalItem.GetHUDIconMaterial"); } + bool GetItemCustomColor(int ColorRegion, FLinearColor* outColor) { return NativeCall(this, "UPrimalItem.GetItemCustomColor", ColorRegion, outColor); } + float GetEggHatchTimeRemaining(UWorld* theWorld) { return NativeCall(this, "UPrimalItem.GetEggHatchTimeRemaining", theWorld); } + bool IsReadyToUpload(UWorld* theWorld) { return NativeCall(this, "UPrimalItem.IsReadyToUpload", theWorld); } + float GetTimeUntilUploadAllowed(UWorld* theWorld) { return NativeCall(this, "UPrimalItem.GetTimeUntilUploadAllowed", theWorld); } + float HandleShieldDamageBlocking_Implementation(AShooterCharacter* ForShooterCharacter, float DamageIn, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking_Implementation", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } + TSubclassOf* BPOverrideProjectileType_Implementation(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "UPrimalItem.BPOverrideProjectileType_Implementation", result); } + static TSubclassOf* GetProjectileType(TSubclassOf* result, TSubclassOf ItemType) { return NativeCall*, TSubclassOf*, TSubclassOf>(nullptr, "UPrimalItem.GetProjectileType", result, ItemType); } + TArray* GetItemDyeColors(TArray* result) { return NativeCall*, TArray*>(this, "UPrimalItem.GetItemDyeColors", result); } + bool IsActiveEventItem(UWorld* World) { return NativeCall(this, "UPrimalItem.IsActiveEventItem", World); } + bool IsDeprecated(UWorld* World) { return NativeCall(this, "UPrimalItem.IsDeprecated", World); } + void BeginDestroy() { NativeCall(this, "UPrimalItem.BeginDestroy"); } + void RemoveFromWorldItemMap() { NativeCall(this, "UPrimalItem.RemoveFromWorldItemMap"); } + bool IsBlueprintDeprecated(UWorld* World) { return NativeCall(this, "UPrimalItem.IsBlueprintDeprecated", World); } + void OnVersionChange(bool* doDestroy, UWorld* World, AShooterGameMode* gameMode) { NativeCall(this, "UPrimalItem.OnVersionChange", doDestroy, World, gameMode); } static void StaticRegisterNativesUPrimalItem() { NativeCall(nullptr, "UPrimalItem.StaticRegisterNativesUPrimalItem"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalItem.GetPrivateStaticClass", Package); } + void ApplyingSkinOntoItem(UPrimalItem* ToOwnerItem, bool bIsFirstTime) { NativeCall(this, "UPrimalItem.ApplyingSkinOntoItem", ToOwnerItem, bIsFirstTime); } void BlueprintEquipped(bool bIsFromSaveGame) { NativeCall(this, "UPrimalItem.BlueprintEquipped", bIsFromSaveGame); } - FString * BPAllowCrafting(FString * result, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPAllowCrafting", result, ForPC); } - bool BPAllowRemoteAddToInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } - bool BPAllowRemoteRemoveFromInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteRemoveFromInventory", invComp, ByPC, bRequestedByPlayer); } - bool BPCanAddToInventory(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.BPCanAddToInventory", toInventory); } - FString * BPGetCustomInventoryWidgetText(FString * result) { return NativeCall(this, "UPrimalItem.BPGetCustomInventoryWidgetText", result); } - FString * BPGetItemDescription(FString * result, FString * InDescription, bool bGetLongDescription, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemDescription", result, InDescription, bGetLongDescription, ForPC); } - FString * BPGetItemName(FString * result, FString * ItemNameIn, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemName", result, ItemNameIn, ForPC); } - FString * BPGetSkinnedCustomInventoryWidgetText(FString * result) { return NativeCall(this, "UPrimalItem.BPGetSkinnedCustomInventoryWidgetText", result); } - float HandleShieldDamageBlocking(AShooterCharacter * ForShooterCharacter, float DamageIn, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } - USoundBase * OverrideCrouchingSound(USoundBase * InSound, bool bIsProne, int soundState) { return NativeCall(this, "UPrimalItem.OverrideCrouchingSound", InSound, bIsProne, soundState); } + void BlueprintOwnerPosssessed(AController* PossessedByController) { NativeCall(this, "UPrimalItem.BlueprintOwnerPosssessed", PossessedByController); } + void BlueprintUnequipped() { NativeCall(this, "UPrimalItem.BlueprintUnequipped"); } + void BlueprintUsed() { NativeCall(this, "UPrimalItem.BlueprintUsed"); } + void BPAddedAttachments() { NativeCall(this, "UPrimalItem.BPAddedAttachments"); } + FString* BPAllowCrafting(FString* result, AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.BPAllowCrafting", result, ForPC); } + bool BPAllowRemoteAddToInventory(UPrimalInventoryComponent* invComp, AShooterPlayerController* ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } + bool BPAllowRemoteRemoveFromInventory(UPrimalInventoryComponent* invComp, AShooterPlayerController* ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteRemoveFromInventory", invComp, ByPC, bRequestedByPlayer); } + bool BPCanAddToInventory(UPrimalInventoryComponent* toInventory) { return NativeCall(this, "UPrimalItem.BPCanAddToInventory", toInventory); } + bool BPCanUse(bool bIgnoreCooldown) { return NativeCall(this, "UPrimalItem.BPCanUse", bIgnoreCooldown); } + bool BPConsumeProjectileImpact(AShooterProjectile* theProjectile, FHitResult* HitResult) { return NativeCall(this, "UPrimalItem.BPConsumeProjectileImpact", theProjectile, HitResult); } + void BPCrafted() { NativeCall(this, "UPrimalItem.BPCrafted"); } + void BPEquippedItemOnXPEarning(APrimalCharacter* forChar, float howMuchXP, EXPType::Type TheXPType) { NativeCall(this, "UPrimalItem.BPEquippedItemOnXPEarning", forChar, howMuchXP, TheXPType); } + bool BPForceAllowRemoteAddToInventory(UPrimalInventoryComponent* toInventory) { return NativeCall(this, "UPrimalItem.BPForceAllowRemoteAddToInventory", toInventory); } + float BPGetCustomAutoDecreaseDurabilityPerInterval() { return NativeCall(this, "UPrimalItem.BPGetCustomAutoDecreaseDurabilityPerInterval"); } + FString* BPGetCustomDurabilityText(FString* result) { return NativeCall(this, "UPrimalItem.BPGetCustomDurabilityText", result); } + FColor* BPGetCustomDurabilityTextColor(FColor* result) { return NativeCall(this, "UPrimalItem.BPGetCustomDurabilityTextColor", result); } + UMaterialInterface* BPGetCustomIconMaterialParent() { return NativeCall(this, "UPrimalItem.BPGetCustomIconMaterialParent"); } + FString* BPGetCustomInventoryWidgetText(FString* result) { return NativeCall(this, "UPrimalItem.BPGetCustomInventoryWidgetText", result); } + FColor* BPGetCustomInventoryWidgetTextColor(FColor* result) { return NativeCall(this, "UPrimalItem.BPGetCustomInventoryWidgetTextColor", result); } + USoundBase* BPGetFuelAudioOverride(APrimalStructure* ForStructure) { return NativeCall(this, "UPrimalItem.BPGetFuelAudioOverride", ForStructure); } + FString* BPGetItemDescription(FString* result, FString* InDescription, bool bGetLongDescription, AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemDescription", result, InDescription, bGetLongDescription, ForPC); } + float BPGetItemDurabilityPercentage() { return NativeCall(this, "UPrimalItem.BPGetItemDurabilityPercentage"); } + UTexture2D* BPGetItemIcon(AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemIcon", ForPC); } + FString* BPGetItemName(FString* result, FString* ItemNameIn, AShooterPlayerController* ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemName", result, ItemNameIn, ForPC); } + void BPGetItemNetInfo() { NativeCall(this, "UPrimalItem.BPGetItemNetInfo"); } + FString* BPGetSkinnedCustomInventoryWidgetText(FString* result) { return NativeCall(this, "UPrimalItem.BPGetSkinnedCustomInventoryWidgetText", result); } + void BPInitFromItemNetInfo() { NativeCall(this, "UPrimalItem.BPInitFromItemNetInfo"); } + void BPInitIconMaterial() { NativeCall(this, "UPrimalItem.BPInitIconMaterial"); } + void BPInitItemColors(TArray* ColorIDs) { NativeCall*>(this, "UPrimalItem.BPInitItemColors", ColorIDs); } + bool BPIsValidForCrafting() { return NativeCall(this, "UPrimalItem.BPIsValidForCrafting"); } + void BPItemBelowDurabilityThreshold() { NativeCall(this, "UPrimalItem.BPItemBelowDurabilityThreshold"); } + void BPItemBroken() { NativeCall(this, "UPrimalItem.BPItemBroken"); } + void BPNotifyDropped(APrimalCharacter* FromCharacter, bool bWasThrown) { NativeCall(this, "UPrimalItem.BPNotifyDropped", FromCharacter, bWasThrown); } + void BPOverrideCraftingConsumption(int AmountToConsume) { NativeCall(this, "UPrimalItem.BPOverrideCraftingConsumption", AmountToConsume); } + TSubclassOf* BPOverrideProjectileType(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "UPrimalItem.BPOverrideProjectileType", result); } + void BPPostAddBuffToGiveOwnerCharacter(APrimalCharacter* OwnerCharacter, APrimalBuff* Buff) { NativeCall(this, "UPrimalItem.BPPostAddBuffToGiveOwnerCharacter", OwnerCharacter, Buff); } + void BPPostInitializeItem(UWorld* OptionalInitWorld) { NativeCall(this, "UPrimalItem.BPPostInitializeItem", OptionalInitWorld); } + void BPPreInitializeItem(UWorld* OptionalInitWorld) { NativeCall(this, "UPrimalItem.BPPreInitializeItem", OptionalInitWorld); } + void BPPreUseItem() { NativeCall(this, "UPrimalItem.BPPreUseItem"); } + bool BPPreventEquip(UPrimalInventoryComponent* toInventory) { return NativeCall(this, "UPrimalItem.BPPreventEquip", toInventory); } + bool BPPreventUseOntoItem(UPrimalItem* DestinationItem) { return NativeCall(this, "UPrimalItem.BPPreventUseOntoItem", DestinationItem); } + bool BPPreventWeaponEquip() { return NativeCall(this, "UPrimalItem.BPPreventWeaponEquip"); } + bool BPProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse) { return NativeCall(this, "UPrimalItem.BPProcessEditText", ForPC, TextToUse); } + bool BPSupportUseOntoItem(UPrimalItem* DestinationItem) { return NativeCall(this, "UPrimalItem.BPSupportUseOntoItem", DestinationItem); } + void BPTributeItemDownloaded(UObject* ContextObject) { NativeCall(this, "UPrimalItem.BPTributeItemDownloaded", ContextObject); } + void BPTributeItemUploaded(UObject* ContextObject) { NativeCall(this, "UPrimalItem.BPTributeItemUploaded", ContextObject); } + void BPUsedOntoItem(UPrimalItem* DestinationItem, int AdditionalData) { NativeCall(this, "UPrimalItem.BPUsedOntoItem", DestinationItem, AdditionalData); } + void ClientUpdatedWeaponClipAmmo() { NativeCall(this, "UPrimalItem.ClientUpdatedWeaponClipAmmo"); } + void Crafted(bool bWasCraftedFromEngram) { NativeCall(this, "UPrimalItem.Crafted", bWasCraftedFromEngram); } + void EquippedBlueprintTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.EquippedBlueprintTick", DeltaSeconds); } + FString* GetInventoryIconDisplayText(FString* result) { return NativeCall(this, "UPrimalItem.GetInventoryIconDisplayText", result); } + float HandleShieldDamageBlocking(AShooterCharacter* ForShooterCharacter, float DamageIn, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } + USoundBase* OverrideCrouchingSound(USoundBase* InSound, bool bIsProne, int soundState) { return NativeCall(this, "UPrimalItem.OverrideCrouchingSound", InSound, bIsProne, soundState); } + void RemovedSkinFromItem(UPrimalItem* FromOwnerItem, bool bIsFirstTime) { NativeCall(this, "UPrimalItem.RemovedSkinFromItem", FromOwnerItem, bIsFirstTime); } + void ServerUpdatedWeaponClipAmmo() { NativeCall(this, "UPrimalItem.ServerUpdatedWeaponClipAmmo"); } + void SkinEquippedBlueprintTick(UPrimalItem* OwnerItem, float DeltaSeconds) { NativeCall(this, "UPrimalItem.SkinEquippedBlueprintTick", OwnerItem, DeltaSeconds); } + void SlottedTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.SlottedTick", DeltaSeconds); } }; struct FItemNetInfo { TSubclassOf& ItemArchetypeField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemArchetype"); } FItemNetID& ItemIDField() { return *GetNativePointerField(this, "FItemNetInfo.ItemID"); } - unsigned int& ExpirationTimeUTCField() { return *GetNativePointerField(this, "FItemNetInfo.ExpirationTimeUTC"); } - TArray& CustomItemDatasField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomItemDatas"); } - unsigned __int64& OwnerPlayerDataIdField() { return *GetNativePointerField(this, "FItemNetInfo.OwnerPlayerDataId"); } + unsigned int& ItemQuantityField() { return *GetNativePointerField(this, "FItemNetInfo.ItemQuantity"); } + int& CustomItemIDField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemID"); } int& SlotIndexField() { return *GetNativePointerField(this, "FItemNetInfo.SlotIndex"); } - unsigned int& WeaponClipAmmoField() { return *GetNativePointerField(this, "FItemNetInfo.WeaponClipAmmo"); } long double& CreationTimeField() { return *GetNativePointerField(this, "FItemNetInfo.CreationTime"); } + FString& CustomItemNameField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemName"); } + FString& CustomItemDescriptionField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemDescription"); } + long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "FItemNetInfo.UploadEarliestValidTime"); } + TArray& SteamUserItemIDField() { return *GetNativePointerField*>(this, "FItemNetInfo.SteamUserItemID"); } + unsigned __int16& CraftQueueField() { return *GetNativePointerField(this, "FItemNetInfo.CraftQueue"); } + long double& NextCraftCompletionTimeField() { return *GetNativePointerField(this, "FItemNetInfo.NextCraftCompletionTime"); } + float& CraftingSkillField() { return *GetNativePointerField(this, "FItemNetInfo.CraftingSkill"); } + float& CraftedSkillBonusField() { return *GetNativePointerField(this, "FItemNetInfo.CraftedSkillBonus"); } + FString& CrafterCharacterNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterCharacterName"); } + FString& CrafterTribeNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterTribeName"); } + unsigned int& WeaponClipAmmoField() { return *GetNativePointerField(this, "FItemNetInfo.WeaponClipAmmo"); } float& ItemDurabilityField() { return *GetNativePointerField(this, "FItemNetInfo.ItemDurability"); } float& ItemRatingField() { return *GetNativePointerField(this, "FItemNetInfo.ItemRating"); } + unsigned int& ExpirationTimeUTCField() { return *GetNativePointerField(this, "FItemNetInfo.ExpirationTimeUTC"); } char& ItemQualityIndexField() { return *GetNativePointerField(this, "FItemNetInfo.ItemQualityIndex"); } - unsigned int& ItemQuantityField() { return *GetNativePointerField(this, "FItemNetInfo.ItemQuantity"); } - unsigned __int16& CraftQueueField() { return *GetNativePointerField(this, "FItemNetInfo.CraftQueue"); } - long double& NextCraftCompletionTimeField() { return *GetNativePointerField(this, "FItemNetInfo.NextCraftCompletionTime"); } + TSubclassOf& ItemCustomClassField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemCustomClass"); } FieldArray ItemStatValuesField() { return { this, "FItemNetInfo.ItemStatValues" }; } FieldArray<__int16, 6> ItemColorIDField() { return { this, "FItemNetInfo.ItemColorID" }; } - TSubclassOf& ItemCustomClassField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemCustomClass"); } TSubclassOf& ItemSkinTemplateField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemSkinTemplate"); } - float& CraftingSkillField() { return *GetNativePointerField(this, "FItemNetInfo.CraftingSkill"); } - FString& CustomItemNameField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemName"); } - FString& CustomItemDescriptionField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemDescription"); } + TArray& CustomItemDatasField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomItemDatas"); } TArray& CustomItemColorsField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomItemColors"); } TArray& CustomResourceRequirementsField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomResourceRequirements"); } long double& NextSpoilingTimeField() { return *GetNativePointerField(this, "FItemNetInfo.NextSpoilingTime"); } long double& LastSpoilingTimeField() { return *GetNativePointerField(this, "FItemNetInfo.LastSpoilingTime"); } - long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "FItemNetInfo.UploadEarliestValidTime"); } + unsigned __int64& OwnerPlayerDataIdField() { return *GetNativePointerField(this, "FItemNetInfo.OwnerPlayerDataId"); } TWeakObjectPtr& LastOwnerPlayerField() { return *GetNativePointerField*>(this, "FItemNetInfo.LastOwnerPlayer"); } long double& LastAutoDurabilityDecreaseTimeField() { return *GetNativePointerField(this, "FItemNetInfo.LastAutoDurabilityDecreaseTime"); } + float& ItemStatClampsMultiplierField() { return *GetNativePointerField(this, "FItemNetInfo.ItemStatClampsMultiplier"); } FVector& OriginalItemDropLocationField() { return *GetNativePointerField(this, "FItemNetInfo.OriginalItemDropLocation"); } FieldArray<__int16, 6> PreSkinItemColorIDField() { return { this, "FItemNetInfo.PreSkinItemColorID" }; } FieldArray EggNumberOfLevelUpPointsAppliedField() { return { this, "FItemNetInfo.EggNumberOfLevelUpPointsApplied" }; } float& EggTamedIneffectivenessModifierField() { return *GetNativePointerField(this, "FItemNetInfo.EggTamedIneffectivenessModifier"); } FieldArray EggColorSetIndicesField() { return { this, "FItemNetInfo.EggColorSetIndices" }; } char& ItemVersionField() { return *GetNativePointerField(this, "FItemNetInfo.ItemVersion"); } - int& CustomItemIDField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemID"); } - TArray& SteamUserItemIDField() { return *GetNativePointerField*>(this, "FItemNetInfo.SteamUserItemID"); } long double& ClusterSpoilingTimeUTCField() { return *GetNativePointerField(this, "FItemNetInfo.ClusterSpoilingTimeUTC"); } TArray& EggDinoAncestorsField() { return *GetNativePointerField*>(this, "FItemNetInfo.EggDinoAncestors"); } TArray& EggDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "FItemNetInfo.EggDinoAncestorsMale"); } int& EggRandomMutationsFemaleField() { return *GetNativePointerField(this, "FItemNetInfo.EggRandomMutationsFemale"); } int& EggRandomMutationsMaleField() { return *GetNativePointerField(this, "FItemNetInfo.EggRandomMutationsMale"); } char& ItemProfileVersionField() { return *GetNativePointerField(this, "FItemNetInfo.ItemProfileVersion"); } - FString& CrafterCharacterNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterCharacterName"); } - FString& CrafterTribeNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterTribeName"); } - float& CraftedSkillBonusField() { return *GetNativePointerField(this, "FItemNetInfo.CraftedSkillBonus"); } + bool& bNetInfoFromClientField() { return *GetNativePointerField(this, "FItemNetInfo.bNetInfoFromClient"); } // Bit fields @@ -1100,18 +1370,19 @@ struct FItemNetInfo BitFieldValue bIsFoodRecipe() { return { this, "FItemNetInfo.bIsFoodRecipe" }; } BitFieldValue bIsRepairing() { return { this, "FItemNetInfo.bIsRepairing" }; } BitFieldValue bAllowRemovalFromInventory() { return { this, "FItemNetInfo.bAllowRemovalFromInventory" }; } - BitFieldValue bAllowRemovalFromSteamInventory() { return { this, "FItemNetInfo.bAllowRemovalFromSteamInventory" }; } BitFieldValue bHideFromInventoryDisplay() { return { this, "FItemNetInfo.bHideFromInventoryDisplay" }; } + BitFieldValue bAllowRemovalFromSteamInventory() { return { this, "FItemNetInfo.bAllowRemovalFromSteamInventory" }; } BitFieldValue bFromSteamInventory() { return { this, "FItemNetInfo.bFromSteamInventory" }; } BitFieldValue bIsFromAllClustersInventory() { return { this, "FItemNetInfo.bIsFromAllClustersInventory" }; } + BitFieldValue bForcePreventGrinding() { return { this, "FItemNetInfo.bForcePreventGrinding" }; } BitFieldValue bIsEquipped() { return { this, "FItemNetInfo.bIsEquipped" }; } BitFieldValue bIsSlot() { return { this, "FItemNetInfo.bIsSlot" }; } BitFieldValue bIsInitialItem() { return { this, "FItemNetInfo.bIsInitialItem" }; } // Functions - FItemNetInfo * operator=(FItemNetInfo * __that) { return NativeCall(this, "FItemNetInfo.operator=", __that); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FItemNetInfo.StaticStruct"); } + FItemNetInfo* operator=(FItemNetInfo* __that) { return NativeCall(this, "FItemNetInfo.operator=", __that); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FItemNetInfo.StaticStruct"); } }; struct FItemStatInfo @@ -1137,6 +1408,6 @@ struct FItemStatInfo // Functions float GetItemStatModifier(unsigned __int16 ItemStatValue) { return NativeCall(this, "FItemStatInfo.GetItemStatModifier", ItemStatValue); } - unsigned __int16 GetRandomValue(float QualityLevel, float * outRandonMultiplier) { return NativeCall(this, "FItemStatInfo.GetRandomValue", QualityLevel, outRandonMultiplier); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FItemStatInfo.StaticStruct"); } + unsigned __int16 GetRandomValue(float QualityLevel, float MinRandomQuality, float* outRandonMultiplier) { return NativeCall(this, "FItemStatInfo.GetRandomValue", QualityLevel, MinRandomQuality, outRandonMultiplier); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FItemStatInfo.StaticStruct"); } }; diff --git a/version/Core/Public/API/ARK/Other.h b/version/Core/Public/API/ARK/Other.h index c177e754..633bc724 100644 --- a/version/Core/Public/API/ARK/Other.h +++ b/version/Core/Public/API/ARK/Other.h @@ -1,9 +1,19 @@ #pragma once -#include "API/Enums.h" +struct FAvailableMission +{ + TSubclassOf& MissionClassField() { return *GetNativePointerField*>(this, "FAvailableMission.MissionClass"); } + FVector& DispatcherLocationField() { return *GetNativePointerField(this, "FAvailableMission.DispatcherLocation"); } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FAvailableMission.StaticStruct"); } + void FScriptStruct_ShooterGame_StaticRegisterNativesFAvailableMission() { NativeCall(this, "FAvailableMission.FScriptStruct_ShooterGame_StaticRegisterNativesFAvailableMission"); } +}; struct FDamageEvent { + //FDamageEventVtbl* vfptrField() { return *GetNativePointerField(this, "FDamageEvent.vfptr"); } float& ImpulseField() { return *GetNativePointerField(this, "FDamageEvent.Impulse"); } float& OriginalDamageField() { return *GetNativePointerField(this, "FDamageEvent.OriginalDamage"); } int& InstanceBodyIndexField() { return *GetNativePointerField(this, "FDamageEvent.InstanceBodyIndex"); } @@ -11,8 +21,8 @@ struct FDamageEvent // Functions - void GetBestHitInfo(AActor * HitActor, AActor * HitInstigator, FHitResult * OutHitInfo, FVector * OutImpulseDir) { NativeCall(this, "FDamageEvent.GetBestHitInfo", HitActor, HitInstigator, OutHitInfo, OutImpulseDir); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FDamageEvent.StaticStruct"); } + void GetBestHitInfo(AActor* HitActor, AActor* HitInstigator, FHitResult* OutHitInfo, FVector* OutImpulseDir) { NativeCall(this, "FDamageEvent.GetBestHitInfo", HitActor, HitInstigator, OutHitInfo, OutImpulseDir); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FDamageEvent.StaticStruct"); } }; struct UPhysicalMaterial @@ -22,40 +32,45 @@ struct FBodyInstance { }; -struct __declspec(align(8)) FHitResult +struct FHitResult { - unsigned __int32 bBlockingHit : 1; - unsigned __int32 bStartPenetrating : 1; - unsigned __int32 bVolatileCollision : 1; - float Time; - FVector_NetQuantize Location; - FVector_NetQuantizeNormal Normal; - FVector_NetQuantize ImpactPoint; - FVector_NetQuantizeNormal ImpactNormal; - FVector_NetQuantize TraceStart; - FVector_NetQuantize TraceEnd; - float PenetrationDepth; - int Item; - TWeakObjectPtr PhysMaterial; - TWeakObjectPtr Actor; - TWeakObjectPtr Component; - FBodyInstance *BodyInstance; - FName BoneName; - int FaceIndex; + float& TimeField() { return *GetNativePointerField(this, "FHitResult.Time"); } + FVector_NetQuantize& LocationField() { return *GetNativePointerField(this, "FHitResult.Location"); } + FVector_NetQuantizeNormal& NormalField() { return *GetNativePointerField(this, "FHitResult.Normal"); } + FVector_NetQuantize& ImpactPointField() { return *GetNativePointerField(this, "FHitResult.ImpactPoint"); } + FVector_NetQuantizeNormal& ImpactNormalField() { return *GetNativePointerField(this, "FHitResult.ImpactNormal"); } + FVector_NetQuantize& TraceStartField() { return *GetNativePointerField(this, "FHitResult.TraceStart"); } + FVector_NetQuantize& TraceEndField() { return *GetNativePointerField(this, "FHitResult.TraceEnd"); } + float& PenetrationDepthField() { return *GetNativePointerField(this, "FHitResult.PenetrationDepth"); } + int& ItemField() { return *GetNativePointerField(this, "FHitResult.Item"); } + TWeakObjectPtr& PhysMaterialField() { return *GetNativePointerField*>(this, "FHitResult.PhysMaterial"); } + TWeakObjectPtr& ActorField() { return *GetNativePointerField*>(this, "FHitResult.Actor"); } + TWeakObjectPtr& ComponentField() { return *GetNativePointerField*>(this, "FHitResult.Component"); } + FBodyInstance* BodyInstanceField() { return *GetNativePointerField(this, "FHitResult.BodyInstance"); } + FName& BoneNameField() { return *GetNativePointerField(this, "FHitResult.BoneName"); } + int& FaceIndexField() { return *GetNativePointerField(this, "FHitResult.FaceIndex"); } + + // Bit fields + + BitFieldValue bBlockingHit() { return { this, "FHitResult.bBlockingHit" }; } + BitFieldValue bStartPenetrating() { return { this, "FHitResult.bStartPenetrating" }; } + BitFieldValue bVolatileCollision() { return { this, "FHitResult.bVolatileCollision" }; } // Functions - void operator=(FHitResult * __that) { NativeCall(this, "FHitResult.operator=", __that); } - AActor * GetActor() { return NativeCall(this, "FHitResult.GetActor"); } - UPrimitiveComponent * GetComponent() { return NativeCall(this, "FHitResult.GetComponent"); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FHitResult.StaticStruct"); } + FHitResult* operator=(FHitResult* __that) { return NativeCall(this, "FHitResult.operator=", __that); } + AActor* GetActor() { return NativeCall(this, "FHitResult.GetActor"); } + UPrimitiveComponent* GetComponent() { return NativeCall(this, "FHitResult.GetComponent"); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FHitResult.StaticStruct"); } }; struct FOverlapInfo { - bool bFromSweep; - FHitResult OverlapInfo; - void *CachedCompPtr; + bool& bFromSweepField() { return *GetNativePointerField(this, "FOverlapInfo.bFromSweep"); } + FHitResult& OverlapInfoField() { return *GetNativePointerField(this, "FOverlapInfo.OverlapInfo"); } + void* CachedCompPtrField() { return *GetNativePointerField(this, "FOverlapInfo.CachedCompPtr"); } + + // Functions }; struct FInternetAddr @@ -66,7 +81,44 @@ struct FSocket { ESocketType& SocketTypeField() { return *GetNativePointerField(this, "FSocket.SocketType"); } FString& SocketDescriptionField() { return *GetNativePointerField(this, "FSocket.SocketDescription"); } +}; +struct FMultiUseEntry +{ + UActorComponent* ForComponent; + FString UseString; + int UseIndex; + int Priority; + unsigned __int32 bHideFromUI : 1; + unsigned __int32 bDisableUse : 1; + unsigned __int32 bHideActivationKey : 1; + unsigned __int32 bRepeatMultiUse : 1; + unsigned __int32 bDisplayOnInventoryUI : 1; + unsigned __int32 bDisplayOnInventoryUISecondary : 1; + unsigned __int32 bHarvestable : 1; + unsigned __int32 bIsSecondaryUse : 1; + unsigned __int32 bPersistWheelOnActivation : 1; + unsigned __int32 bOverrideUseTextColor : 1; + unsigned __int32 bDisplayOnInventoryUITertiary : 1; + unsigned __int32 bClientSideOnly : 1; + unsigned __int32 bPersistWheelRequiresDirectActivation : 1; + unsigned __int32 bDrawTooltip : 1; + int WheelCategory; + FColor DisableUseColor; + FColor UseTextColor; + float EntryActivationTimer; + float DefaultEntryActivationTimer; + USoundBase* ActivationSound; + int UseInventoryButtonStyleOverrideIndex; +}; + +struct URCONServer : UObject +{ + FSocket& SocketField() { return *GetNativePointerField(this, "URCONServer.Socket"); } + TSharedPtr& ListenAddrField() { return *GetNativePointerField*>(this, "URCONServer.ListenAddr"); } + TArray& ConnectionsField() { return *GetNativePointerField*>(this, "URCONServer.Connections"); } + UShooterCheatManager& CheatManagerField() { return *GetNativePointerField(this, "URCONServer.CheatManager"); } + FString& ServerPasswordField() { return *GetNativePointerField(this, "URCONServer.ServerPassword"); } }; struct FSocketBSD : FSocket @@ -77,36 +129,36 @@ struct FSocketBSD : FSocket // Functions bool Close() { return NativeCall(this, "FSocketBSD.Close"); } - bool Bind(FInternetAddr * Addr) { return NativeCall(this, "FSocketBSD.Bind", Addr); } - bool Connect(FInternetAddr * Addr) { return NativeCall(this, "FSocketBSD.Connect", Addr); } + bool Bind(FInternetAddr* Addr) { return NativeCall(this, "FSocketBSD.Bind", Addr); } + bool Connect(FInternetAddr* Addr) { return NativeCall(this, "FSocketBSD.Connect", Addr); } bool Listen(int MaxBacklog) { return NativeCall(this, "FSocketBSD.Listen", MaxBacklog); } - bool HasPendingConnection(bool * bHasPendingConnection) { return NativeCall(this, "FSocketBSD.HasPendingConnection", bHasPendingConnection); } - bool HasPendingData(unsigned int * PendingDataSize) { return NativeCall(this, "FSocketBSD.HasPendingData", PendingDataSize); } - FSocket * Accept(FString * SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", SocketDescription); } - FSocket * Accept(FInternetAddr * OutAddr, FString * SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", OutAddr, SocketDescription); } - bool SendTo(const char * Data, int Count, int * BytesSent, FInternetAddr * Destination) { return NativeCall(this, "FSocketBSD.SendTo", Data, Count, BytesSent, Destination); } - bool Send(const char * Data, int Count, int * BytesSent) { return NativeCall(this, "FSocketBSD.Send", Data, Count, BytesSent); } - bool RecvFrom(char * Data, int BufferSize, int * BytesRead, FInternetAddr * Source, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.RecvFrom", Data, BufferSize, BytesRead, Source, Flags); } - bool Recv(char * Data, int BufferSize, int * BytesRead, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.Recv", Data, BufferSize, BytesRead, Flags); } + bool HasPendingConnection(bool* bHasPendingConnection) { return NativeCall(this, "FSocketBSD.HasPendingConnection", bHasPendingConnection); } + bool HasPendingData(unsigned int* PendingDataSize) { return NativeCall(this, "FSocketBSD.HasPendingData", PendingDataSize); } + FSocket* Accept(FString* SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", SocketDescription); } + FSocket* Accept(FInternetAddr* OutAddr, FString* SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", OutAddr, SocketDescription); } + bool SendTo(const char* Data, int Count, int* BytesSent, FInternetAddr* Destination) { return NativeCall(this, "FSocketBSD.SendTo", Data, Count, BytesSent, Destination); } + bool Send(const char* Data, int Count, int* BytesSent) { return NativeCall(this, "FSocketBSD.Send", Data, Count, BytesSent); } + bool RecvFrom(char* Data, int BufferSize, int* BytesRead, FInternetAddr* Source, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.RecvFrom", Data, BufferSize, BytesRead, Source, Flags); } + bool Recv(char* Data, int BufferSize, int* BytesRead, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.Recv", Data, BufferSize, BytesRead, Flags); } ESocketConnectionState GetConnectionState() { return NativeCall(this, "FSocketBSD.GetConnectionState"); } - void GetAddress(FInternetAddr * OutAddr) { NativeCall(this, "FSocketBSD.GetAddress", OutAddr); } + void GetAddress(FInternetAddr* OutAddr) { NativeCall(this, "FSocketBSD.GetAddress", OutAddr); } bool SetNonBlocking(bool bIsNonBlocking) { return NativeCall(this, "FSocketBSD.SetNonBlocking", bIsNonBlocking); } bool SetBroadcast(bool bAllowBroadcast) { return NativeCall(this, "FSocketBSD.SetBroadcast", bAllowBroadcast); } - bool JoinMulticastGroup(FInternetAddr * GroupAddress) { return NativeCall(this, "FSocketBSD.JoinMulticastGroup", GroupAddress); } - bool LeaveMulticastGroup(FInternetAddr * GroupAddress) { return NativeCall(this, "FSocketBSD.LeaveMulticastGroup", GroupAddress); } + bool JoinMulticastGroup(FInternetAddr* GroupAddress) { return NativeCall(this, "FSocketBSD.JoinMulticastGroup", GroupAddress); } + bool LeaveMulticastGroup(FInternetAddr* GroupAddress) { return NativeCall(this, "FSocketBSD.LeaveMulticastGroup", GroupAddress); } bool SetMulticastLoopback(bool bLoopback) { return NativeCall(this, "FSocketBSD.SetMulticastLoopback", bLoopback); } bool SetMulticastTtl(char TimeToLive) { return NativeCall(this, "FSocketBSD.SetMulticastTtl", TimeToLive); } bool SetReuseAddr(bool bAllowReuse) { return NativeCall(this, "FSocketBSD.SetReuseAddr", bAllowReuse); } bool SetLinger(bool bShouldLinger, int Timeout) { return NativeCall(this, "FSocketBSD.SetLinger", bShouldLinger, Timeout); } - bool SetSendBufferSize(int Size, int * NewSize) { return NativeCall(this, "FSocketBSD.SetSendBufferSize", Size, NewSize); } - bool SetReceiveBufferSize(int Size, int * NewSize) { return NativeCall(this, "FSocketBSD.SetReceiveBufferSize", Size, NewSize); } + bool SetSendBufferSize(int Size, int* NewSize) { return NativeCall(this, "FSocketBSD.SetSendBufferSize", Size, NewSize); } + bool SetReceiveBufferSize(int Size, int* NewSize) { return NativeCall(this, "FSocketBSD.SetReceiveBufferSize", Size, NewSize); } int GetPortNo() { return NativeCall(this, "FSocketBSD.GetPortNo"); } }; struct RCONClientConnection { - FSocket * SocketField() { return *GetNativePointerField(this, "RCONClientConnection.Socket"); } - UShooterCheatManager * CheatManagerField() { return *GetNativePointerField(this, "RCONClientConnection.CheatManager"); } + FSocket* SocketField() { return *GetNativePointerField(this, "RCONClientConnection.Socket"); } + UShooterCheatManager* CheatManagerField() { return *GetNativePointerField(this, "RCONClientConnection.CheatManager"); } bool& IsAuthenticatedField() { return *GetNativePointerField(this, "RCONClientConnection.IsAuthenticated"); } bool& IsClosedField() { return *GetNativePointerField(this, "RCONClientConnection.IsClosed"); } TArray& DataBufferField() { return *GetNativePointerField*>(this, "RCONClientConnection.DataBuffer"); } @@ -117,9 +169,9 @@ struct RCONClientConnection // Functions - void Tick(long double WorldTime, UWorld * InWorld) { NativeCall(this, "RCONClientConnection.Tick", WorldTime, InWorld); } - void ProcessRCONPacket(RCONPacket * Packet, UWorld * InWorld) { NativeCall(this, "RCONClientConnection.ProcessRCONPacket", Packet, InWorld); } - void SendMessageW(int Id, int Type, FString * OutGoingMessage) { NativeCall(this, "RCONClientConnection.SendMessageW", Id, Type, OutGoingMessage); } + void Tick(long double WorldTime, UWorld* InWorld) { NativeCall(this, "RCONClientConnection.Tick", WorldTime, InWorld); } + void ProcessRCONPacket(RCONPacket* Packet, UWorld* InWorld) { NativeCall(this, "RCONClientConnection.ProcessRCONPacket", Packet, InWorld); } + void SendMessageW(int Id, int Type, FString* OutGoingMessage) { NativeCall(this, "RCONClientConnection.SendMessageW", Id, Type, OutGoingMessage); } void Close() { NativeCall(this, "RCONClientConnection.Close"); } }; @@ -131,28 +183,47 @@ struct RCONPacket FString Body; }; +struct UGameInstance; + struct UGameplayStatics { - static APlayerController * GetPlayerController(UObject * WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerController", WorldContextObject, PlayerIndex); } - static APlayerController * CreatePlayer(UObject * WorldContextObject, int ControllerId, bool bSpawnPawn) { return NativeCall(nullptr, "UGameplayStatics.CreatePlayer", WorldContextObject, ControllerId, bSpawnPawn); } - static void SetGlobalTimeDilation(UObject * WorldContextObject, float TimeDilation) { NativeCall(nullptr, "UGameplayStatics.SetGlobalTimeDilation", WorldContextObject, TimeDilation); } - static bool SetGamePaused(UObject * WorldContextObject, bool bPaused) { return NativeCall(nullptr, "UGameplayStatics.SetGamePaused", WorldContextObject, bPaused); } - static bool ApplyRadialDamage(UObject * WorldContextObject, float BaseDamage, FVector * Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray * IgnoreActors, AActor * DamageCauser, AController * InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray *, AActor *, AController *, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamage", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } - static bool ApplyRadialDamageIgnoreDamageActors(UObject * WorldContextObject, float BaseDamage, FVector * Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray * IgnoreActors, TArray * IgnoreDamageActors, AActor * DamageCauser, AController * InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray *, TArray *, AActor *, AController *, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamageIgnoreDamageActors", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, IgnoreDamageActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } - static bool ApplyRadialDamageWithFalloff(UObject * WorldContextObject, float BaseDamage, float MinimumDamage, FVector * Origin, float DamageInnerRadius, float DamageOuterRadius, float DamageFalloff, TSubclassOf DamageTypeClass, TArray * IgnoreActors, AActor * DamageCauser, AController * InstigatedByController, ECollisionChannel DamagePreventionChannel, float Impulse, TArray * IgnoreDamageActors, int NumAdditionalAttempts) { return NativeCall, TArray *, AActor *, AController *, ECollisionChannel, float, TArray *, int>(nullptr, "UGameplayStatics.ApplyRadialDamageWithFalloff", WorldContextObject, BaseDamage, MinimumDamage, Origin, DamageInnerRadius, DamageOuterRadius, DamageFalloff, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, DamagePreventionChannel, Impulse, IgnoreDamageActors, NumAdditionalAttempts); } - static void ApplyPointDamage(AActor * DamagedActor, float BaseDamage, FVector * HitFromDirection, FHitResult * HitInfo, AController * EventInstigator, AActor * DamageCauser, TSubclassOf DamageTypeClass, float Impulse, bool bForceCollisionCheck, ECollisionChannel ForceCollisionCheckTraceChannel) { NativeCall, float, bool, ECollisionChannel>(nullptr, "UGameplayStatics.ApplyPointDamage", DamagedActor, BaseDamage, HitFromDirection, HitInfo, EventInstigator, DamageCauser, DamageTypeClass, Impulse, bForceCollisionCheck, ForceCollisionCheckTraceChannel); } - static void ApplyDamage(AActor * DamagedActor, float BaseDamage, AController * EventInstigator, AActor * DamageCauser, TSubclassOf DamageTypeClass, float Impulse) { NativeCall, float>(nullptr, "UGameplayStatics.ApplyDamage", DamagedActor, BaseDamage, EventInstigator, DamageCauser, DamageTypeClass, Impulse); } - static AActor * BeginSpawningActorFromBlueprint(UObject * WorldContextObject, UBlueprint * Blueprint, FTransform * SpawnTransform, bool bNoCollisionFail) { return NativeCall(nullptr, "UGameplayStatics.BeginSpawningActorFromBlueprint", WorldContextObject, Blueprint, SpawnTransform, bNoCollisionFail); } - static AActor * BeginSpawningActorFromClass(UObject * WorldContextObject, TSubclassOf ActorClass, FTransform * SpawnTransform, bool bNoCollisionFail) { return NativeCall, FTransform *, bool>(nullptr, "UGameplayStatics.BeginSpawningActorFromClass", WorldContextObject, ActorClass, SpawnTransform, bNoCollisionFail); } - static void OpenLevel(UObject * WorldContextObject, FName LevelName, bool bAbsolute, FString Options) { NativeCall(nullptr, "UGameplayStatics.OpenLevel", WorldContextObject, LevelName, bAbsolute, Options); } - static FVector * GetActorArrayAverageLocation(FVector * result, TArray * Actors) { return NativeCall *>(nullptr, "UGameplayStatics.GetActorArrayAverageLocation", result, Actors); } - static void GetActorArrayBounds(TArray * Actors, bool bOnlyCollidingComponents, FVector * Center, FVector * BoxExtent) { NativeCall *, bool, FVector *, FVector *>(nullptr, "UGameplayStatics.GetActorArrayBounds", Actors, bOnlyCollidingComponents, Center, BoxExtent); } - static void GetAllActorsOfClass(UObject * WorldContextObject, TSubclassOf ActorClass, TArray * OutActors) { NativeCall, TArray *>(nullptr, "UGameplayStatics.GetAllActorsOfClass", WorldContextObject, ActorClass, OutActors); } - //static void GetAllActorsWithInterface(UObject * WorldContextObject, TSubclassOf Interface, TArray * OutActors) { NativeCall, TArray *>(nullptr, "UGameplayStatics.GetAllActorsWithInterface", WorldContextObject, Interface, OutActors); } - static EPhysicalSurface GetSurfaceType(FHitResult * Hit) { return NativeCall(nullptr, "UGameplayStatics.GetSurfaceType", Hit); } + // Functions + + static APlayerController* GetPlayerController(UObject* WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerController", WorldContextObject, PlayerIndex); } + static APlayerController* CreatePlayer(UObject* WorldContextObject, int ControllerId, bool bSpawnPawn) { return NativeCall(nullptr, "UGameplayStatics.CreatePlayer", WorldContextObject, ControllerId, bSpawnPawn); } + static void SetGlobalTimeDilation(UObject* WorldContextObject, float TimeDilation) { NativeCall(nullptr, "UGameplayStatics.SetGlobalTimeDilation", WorldContextObject, TimeDilation); } + static bool SetGamePaused(UObject* WorldContextObject, bool bPaused) { return NativeCall(nullptr, "UGameplayStatics.SetGamePaused", WorldContextObject, bPaused); } + static bool ApplyRadialDamage(UObject* WorldContextObject, float BaseDamage, FVector* Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray* IgnoreActors, AActor* DamageCauser, AController* InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray*, AActor*, AController*, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamage", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } + static bool ApplyRadialDamageIgnoreDamageActors(UObject* WorldContextObject, float BaseDamage, FVector* Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray* IgnoreActors, TArray* IgnoreDamageActors, AActor* DamageCauser, AController* InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray*, TArray*, AActor*, AController*, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamageIgnoreDamageActors", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, IgnoreDamageActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } + static bool ApplyRadialDamageWithFalloff(UObject* WorldContextObject, float BaseDamage, float MinimumDamage, FVector* Origin, float DamageInnerRadius, float DamageOuterRadius, float DamageFalloff, TSubclassOf DamageTypeClass, TArray* IgnoreActors, AActor* DamageCauser, AController* InstigatedByController, ECollisionChannel DamagePreventionChannel, float Impulse, TArray* IgnoreDamageActors, int NumAdditionalAttempts) { return NativeCall, TArray*, AActor*, AController*, ECollisionChannel, float, TArray*, int>(nullptr, "UGameplayStatics.ApplyRadialDamageWithFalloff", WorldContextObject, BaseDamage, MinimumDamage, Origin, DamageInnerRadius, DamageOuterRadius, DamageFalloff, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, DamagePreventionChannel, Impulse, IgnoreDamageActors, NumAdditionalAttempts); } + static void ApplyPointDamage(AActor* DamagedActor, float BaseDamage, FVector* HitFromDirection, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf DamageTypeClass, float Impulse, bool bForceCollisionCheck, ECollisionChannel ForceCollisionCheckTraceChannel) { NativeCall, float, bool, ECollisionChannel>(nullptr, "UGameplayStatics.ApplyPointDamage", DamagedActor, BaseDamage, HitFromDirection, HitInfo, EventInstigator, DamageCauser, DamageTypeClass, Impulse, bForceCollisionCheck, ForceCollisionCheckTraceChannel); } + //static void ApplyDamage(AActor* DamagedActor, float BaseDamage, AController* EventInstigator, AActor* DamageCauser, TSubclassOf DamageTypeClass, float Impulse) { NativeCall, float>(nullptr, "UGameplayStatics.ApplyDamage", DamagedActor, BaseDamage, EventInstigator, DamageCauser, DamageTypeClass, Impulse); } + static void ApplyDamage(AActor* DamagedActor, float BaseDamage, AController* EventInstigator, AActor* DamageCauser) { NativeCall(nullptr, "UGameplayStatics.ApplyDamage", DamagedActor, BaseDamage, EventInstigator, DamageCauser); } + static AActor* BeginSpawningActorFromBlueprint(UObject* WorldContextObject, UBlueprint* Blueprint, FTransform* SpawnTransform, bool bNoCollisionFail) { return NativeCall(nullptr, "UGameplayStatics.BeginSpawningActorFromBlueprint", WorldContextObject, Blueprint, SpawnTransform, bNoCollisionFail); } + static AActor* BeginSpawningActorFromClass(UObject* WorldContextObject, TSubclassOf ActorClass, FTransform* SpawnTransform, bool bNoCollisionFail) { return NativeCall, FTransform*, bool>(nullptr, "UGameplayStatics.BeginSpawningActorFromClass", WorldContextObject, ActorClass, SpawnTransform, bNoCollisionFail); } + static AActor* FinishSpawningActor(AActor* Actor, FTransform* SpawnTransform) { return NativeCall(nullptr, "UGameplayStatics.FinishSpawningActor", Actor, SpawnTransform); } + static void LoadStreamLevel(UObject* WorldContextObject, FName LevelName, bool bMakeVisibleAfterLoad, bool bShouldBlockOnLoad, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UGameplayStatics.LoadStreamLevel", WorldContextObject, LevelName, bMakeVisibleAfterLoad, bShouldBlockOnLoad, LatentInfo); } + static void UnloadStreamLevel(UObject* WorldContextObject, FName LevelName, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UGameplayStatics.UnloadStreamLevel", WorldContextObject, LevelName, LatentInfo); } + static void OpenLevel(UObject* WorldContextObject, FName LevelName, bool bAbsolute, FString Options) { NativeCall(nullptr, "UGameplayStatics.OpenLevel", WorldContextObject, LevelName, bAbsolute, Options); } + static FVector* GetActorArrayAverageLocation(FVector* result, TArray* Actors) { return NativeCall*>(nullptr, "UGameplayStatics.GetActorArrayAverageLocation", result, Actors); } + static void GetActorArrayBounds(TArray* Actors, bool bOnlyCollidingComponents, FVector* Center, FVector* BoxExtent) { NativeCall*, bool, FVector*, FVector*>(nullptr, "UGameplayStatics.GetActorArrayBounds", Actors, bOnlyCollidingComponents, Center, BoxExtent); } + static void GetAllActorsOfClass(UObject* WorldContextObject, TSubclassOf ActorClass, TArray* OutActors) { NativeCall, TArray*>(nullptr, "UGameplayStatics.GetAllActorsOfClass", WorldContextObject, ActorClass, OutActors); } + static void GetAllActorsWithInterface(UObject* WorldContextObject, TSubclassOf Interface, TArray* OutActors) { NativeCall, TArray*>(nullptr, "UGameplayStatics.GetAllActorsWithInterface", WorldContextObject, Interface, OutActors); } + static void BreakHitResult(FHitResult* Hit, FVector* Location, FVector* Normal, FVector* ImpactPoint, FVector* ImpactNormal, UPhysicalMaterial** PhysMat, AActor** HitActor, UPrimitiveComponent** HitComponent, FName* HitBoneName, int* HitItem, bool* BlockingHit) { NativeCall(nullptr, "UGameplayStatics.BreakHitResult", Hit, Location, Normal, ImpactPoint, ImpactNormal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem, BlockingHit); } + static void BreakHitResult_OLD(FHitResult* Hit, FVector* Location, FVector* Normal, FVector* ImpactPoint, FVector* ImpactNormal, UPhysicalMaterial** PhysMat, AActor** HitActor, UPrimitiveComponent** HitComponent, FName* HitBoneName, int* HitItem) { NativeCall(nullptr, "UGameplayStatics.BreakHitResult_OLD", Hit, Location, Normal, ImpactPoint, ImpactNormal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem); } + static EPhysicalSurface GetSurfaceType(FHitResult* Hit) { return NativeCall(nullptr, "UGameplayStatics.GetSurfaceType", Hit); } static bool AreAnyListenersWithinRange(FVector Location, float MaximumRange) { return NativeCall(nullptr, "UGameplayStatics.AreAnyListenersWithinRange", Location, MaximumRange); } - static void PlaySound(UObject * WorldContextObject, USoundCue * InSoundCue, USceneComponent * AttachComponent, FName AttachName, bool bFollow, float VolumeMultiplier, float PitchMultiplier) { NativeCall(nullptr, "UGameplayStatics.PlaySound", WorldContextObject, InSoundCue, AttachComponent, AttachName, bFollow, VolumeMultiplier, PitchMultiplier); } - static void GetAccurateRealTime(UObject * WorldContextObject, int * Seconds, float * PartialSeconds) { NativeCall(nullptr, "UGameplayStatics.GetAccurateRealTime", WorldContextObject, Seconds, PartialSeconds); } + static void PlayDialogueAtLocation(UObject* WorldContextObject, UDialogueWave* Dialogue, FDialogueContext* Context, FVector Location, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings) { NativeCall(nullptr, "UGameplayStatics.PlayDialogueAtLocation", WorldContextObject, Dialogue, Context, Location, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings); } + static UAudioComponent* PlayDialogueAttached(UDialogueWave* Dialogue, FDialogueContext* Context, USceneComponent* AttachToComponent, FName AttachPointName, FVector Location, EAttachLocation::Type LocationType, bool bStopWhenAttachedToDestroyed, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings) { return NativeCall(nullptr, "UGameplayStatics.PlayDialogueAttached", Dialogue, Context, AttachToComponent, AttachPointName, Location, LocationType, bStopWhenAttachedToDestroyed, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings); } + static void PlaySound(UObject* WorldContextObject, USoundCue* InSoundCue, USceneComponent* AttachComponent, FName AttachName, bool bFollow, float VolumeMultiplier, float PitchMultiplier) { NativeCall(nullptr, "UGameplayStatics.PlaySound", WorldContextObject, InSoundCue, AttachComponent, AttachName, bFollow, VolumeMultiplier, PitchMultiplier); } + //static USaveGame* CreateSaveGameObject(TSubclassOf SaveGameClass) { return NativeCall>(nullptr, "UGameplayStatics.CreateSaveGameObject", SaveGameClass); } + //static USaveGame* CreateSaveGameObjectFromBlueprint(UBlueprint* SaveGameBlueprint) { return NativeCall(nullptr, "UGameplayStatics.CreateSaveGameObjectFromBlueprint", SaveGameBlueprint); } + //static bool SaveGameToSlot(USaveGame* SaveGameObject, FString* SlotName, const int UserIndex) { return NativeCall(nullptr, "UGameplayStatics.SaveGameToSlot", SaveGameObject, SlotName, UserIndex); } + //static USaveGame* LoadGameFromSlot(FString* SlotName, const int UserIndex) { return NativeCall(nullptr, "UGameplayStatics.LoadGameFromSlot", SlotName, UserIndex); } + static void GetAccurateRealTime(UObject* WorldContextObject, int* Seconds, float* PartialSeconds) { NativeCall(nullptr, "UGameplayStatics.GetAccurateRealTime", WorldContextObject, Seconds, PartialSeconds); } + static FString* GetPlatformName(FString* result) { return NativeCall(nullptr, "UGameplayStatics.GetPlatformName", result); } + //static bool SuggestProjectileVelocity(UObject* WorldContextObject, FVector* OutTossVelocity, FVector Start, FVector End, float TossSpeed, bool bFavorHighArc, float CollisionRadius, float OverrideGravityZ, ESuggestProjVelocityTraceOption::Type TraceOption, FCollisionResponseParams* ResponseParam, TArray* ActorsToIgnore, bool bDrawDebug) { return NativeCall*, bool>(nullptr, "UGameplayStatics.SuggestProjectileVelocity", WorldContextObject, OutTossVelocity, Start, End, TossSpeed, bFavorHighArc, CollisionRadius, OverrideGravityZ, TraceOption, ResponseParam, ActorsToIgnore, bDrawDebug); } + static void StaticRegisterNativesUGameplayStatics() { NativeCall(nullptr, "UGameplayStatics.StaticRegisterNativesUGameplayStatics"); } }; struct FItemMultiplier @@ -161,251 +232,13 @@ struct FItemMultiplier float ItemMultiplier; }; -struct APrimalBuff -{ - float& DeactivationLifespanField() { return *GetNativePointerField(this, "APrimalBuff.DeactivationLifespan"); } - FName& InstigatorAttachmentSocketField() { return *GetNativePointerField(this, "APrimalBuff.InstigatorAttachmentSocket"); } - float& RemoteForcedFleeDurationField() { return *GetNativePointerField(this, "APrimalBuff.RemoteForcedFleeDuration"); } - FVector& AoETraceToTargetsStartOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoETraceToTargetsStartOffset"); } - TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalBuff.Target"); } - TWeakObjectPtr& InstigatorItemField() { return *GetNativePointerField*>(this, "APrimalBuff.InstigatorItem"); } - float& SlowInstigatorFallingAddZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingAddZVelocity"); } - float& SlowInstigatorFallingDampenZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingDampenZVelocity"); } - float& DeactivateAfterTimeField() { return *GetNativePointerField(this, "APrimalBuff.DeactivateAfterTime"); } - float& WeaponRecoilMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.WeaponRecoilMultiplier"); } - float& ReceiveDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ReceiveDamageMultiplier"); } - float& MeleeDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.MeleeDamageMultiplier"); } - float& DepleteInstigatorItemDurabilityPerSecondField() { return *GetNativePointerField(this, "APrimalBuff.DepleteInstigatorItemDurabilityPerSecond"); } - FieldArray ValuesToAddPerSecondField() { return { this, "APrimalBuff.ValuesToAddPerSecond" }; } - float& CharacterAdd_DefaultHyperthermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHyperthermicInsulation"); } - float& CharacterAdd_DefaultHypothermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHypothermicInsulation"); } - float& CharacterMultiplier_ExtraWaterConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraWaterConsumptionMultiplier"); } - float& CharacterMultiplier_ExtraFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraFoodConsumptionMultiplier"); } - float& CharacterMultiplier_SubmergedOxygenDecreaseSpeedField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_SubmergedOxygenDecreaseSpeed"); } - float& ViewMinExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMinExposureMultiplier"); } - float& ViewMaxExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMaxExposureMultiplier"); } - float& XPtoAddField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAdd"); } - float& XPtoAddRateField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAddRate"); } - bool& bDeactivateAfterAddingXPField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivateAfterAddingXP"); } - float& SubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.SubmergedMaxSpeedModifier"); } - float& UnsubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.UnsubmergedMaxSpeedModifier"); } - long double& BuffStartTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffStartTime"); } - UMaterialInterface * BuffPostProcessEffectField() { return *GetNativePointerField(this, "APrimalBuff.BuffPostProcessEffect"); } - TArray>& PreventActorClassesTargetingField() { return *GetNativePointerField>*>(this, "APrimalBuff.PreventActorClassesTargeting"); } - TArray& PreventActorClassesTargetingRangesField() { return *GetNativePointerField*>(this, "APrimalBuff.PreventActorClassesTargetingRanges"); } - TSubclassOf& AOEOtherBuffToApplyField() { return *GetNativePointerField*>(this, "APrimalBuff.AOEOtherBuffToApply"); } - float& AOEBuffRangeField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffRange"); } - float& CharacterAOEBuffDamageField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffDamage"); } - float& CharacterAOEBuffResistanceField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffResistance"); } - float& Maximum2DVelocityForStaminaRecoveryField() { return *GetNativePointerField(this, "APrimalBuff.Maximum2DVelocityForStaminaRecovery"); } - TArray PostprocessBlendablesToExcludeField() { return *GetNativePointerField*>(this, "APrimalBuff.PostprocessBlendablesToExclude"); } - TArray>& BuffedCharactersField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffedCharacters"); } - long double& LastItemDurabilityDepletionTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastItemDurabilityDepletionTime"); } - TSubclassOf& BuffToGiveOnDeactivationField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffToGiveOnDeactivation"); } - TArray>& BuffClassesToCancelOnActivationField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffClassesToCancelOnActivation"); } - TArray>& ActivePreventsBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalBuff.ActivePreventsBuffClasses"); } - TArray>& BuffRequiresOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffRequiresOwnerClass"); } - TArray>& BuffPreventsOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffPreventsOwnerClass"); } - float& XPEarningMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.XPEarningMultiplier"); } - bool& bUseBPSetupForInstigatorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPSetupForInstigator"); } - bool& bUseBPDeactivatedField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPDeactivated"); } - bool& bUseBPCustomAllowAddBuffField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPCustomAllowAddBuff"); } - FVector& staticPathingDestinationField() { return *GetNativePointerField(this, "APrimalBuff.staticPathingDestination"); } - long double& TickingDeactivationTimeField() { return *GetNativePointerField(this, "APrimalBuff.TickingDeactivationTime"); } - UPrimalBuffPersistentData * MyBuffPersistentDataField() { return *GetNativePointerField(this, "APrimalBuff.MyBuffPersistentData"); } - TSubclassOf& BuffPersistentDataClassField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffPersistentDataClass"); } - TWeakObjectPtr& DamageCauserField() { return *GetNativePointerField*>(this, "APrimalBuff.DamageCauser"); } - USoundBase * ExtraActivationSoundToPlayField() { return *GetNativePointerField(this, "APrimalBuff.ExtraActivationSoundToPlay"); } - bool& bPersistentBuffSurvivesLevelUpField() { return *GetNativePointerField(this, "APrimalBuff.bPersistentBuffSurvivesLevelUp"); } - float& AoEApplyDamageField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamage"); } - float& AoEApplyDamageIntervalField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamageInterval"); } - TSubclassOf& AoEApplyDamageTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.AoEApplyDamageType"); } - TSubclassOf& ForceNetworkSpatializationMaxLimitBuffTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.ForceNetworkSpatializationMaxLimitBuffType"); } - int& ForceNetworkSpatializationBuffMaxLimitNumField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitNum"); } - float& ForceNetworkSpatializationBuffMaxLimitRangeField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitRange"); } - float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalBuff.InsulationRange"); } - float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HyperThermiaInsulation"); } - float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HypoThermiaInsulation"); } - FVector& AoEBuffLocOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoEBuffLocOffset"); } - TArray>& AoEClassesToIncludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToInclude"); } - TArray>& AoEClassesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToExclude"); } - bool& bUseBPExcludeAoEActorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPExcludeAoEActor"); } - bool& bOverrideBuffDescriptionField() { return *GetNativePointerField(this, "APrimalBuff.bOverrideBuffDescription"); } - bool& bOnlyTickWhenPossessedField() { return *GetNativePointerField(this, "APrimalBuff.bOnlyTickWhenPossessed"); } - bool& bDestroyWhenUnpossessedField() { return *GetNativePointerField(this, "APrimalBuff.bDestroyWhenUnpossessed"); } - long double& LastAoEApplyDamageTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastAoEApplyDamageTime"); } - float& OnlyForInstigatorSoundFadeInTimeField() { return *GetNativePointerField(this, "APrimalBuff.OnlyForInstigatorSoundFadeInTime"); } - bool& bUseBuffTickServerField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickServer"); } - bool& bUseBuffTickClientField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickClient"); } - float& BuffTickServerMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMaxTime"); } - float& BuffTickServerMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMinTime"); } - float& BuffTickClientMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMaxTime"); } - float& BuffTickClientMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMinTime"); } - long double& LastBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeServer"); } - long double& LastBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeClient"); } - long double& NextBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeServer"); } - long double& NextBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeClient"); } - bool& bTickFunctionDisabledField() { return *GetNativePointerField(this, "APrimalBuff.bTickFunctionDisabled"); } - bool& bWasStasisedField() { return *GetNativePointerField(this, "APrimalBuff.bWasStasised"); } - int& AddBuffMaxNumStacksField() { return *GetNativePointerField(this, "APrimalBuff.AddBuffMaxNumStacks"); } - USoundBase * DeactivatedSoundField() { return *GetNativePointerField(this, "APrimalBuff.DeactivatedSound"); } - bool& bDeactivatedSoundOnlyLocalField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivatedSoundOnlyLocal"); } - bool& bDisableBloomField() { return *GetNativePointerField(this, "APrimalBuff.bDisableBloom"); } - bool& bBPOverrideCharacterNewFallVelocityField() { return *GetNativePointerField(this, "APrimalBuff.bBPOverrideCharacterNewFallVelocity"); } - bool& bBPModifyCharacterFOVField() { return *GetNativePointerField(this, "APrimalBuff.bBPModifyCharacterFOV"); } - bool& bDisableLightShaftsField() { return *GetNativePointerField(this, "APrimalBuff.bDisableLightShafts"); } - float& PostProcessInterpSpeedDownField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedDown"); } - float& PostProcessInterpSpeedUpField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedUp"); } - float& TPVCameraSpeedInterpolationMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.TPVCameraSpeedInterpolationMultiplier"); } - bool& bIsCarryBuffField() { return *GetNativePointerField(this, "APrimalBuff.bIsCarryBuff"); } - long double& TimeForNextAOECheckField() { return *GetNativePointerField(this, "APrimalBuff.TimeForNextAOECheck"); } - float& AOEBuffIntervalMinField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMin"); } - float& AOEBuffIntervalMaxField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMax"); } - float& MaximumVelocityZForSlowingFallField() { return *GetNativePointerField(this, "APrimalBuff.MaximumVelocityZForSlowingFall"); } - int& FNameIntField() { return *GetNativePointerField(this, "APrimalBuff.FNameInt"); } - - // Bit fields - - BitFieldValue bSlowInstigatorFalling() { return { this, "APrimalBuff.bSlowInstigatorFalling" }; } - BitFieldValue bDeactivateOnJump() { return { this, "APrimalBuff.bDeactivateOnJump" }; } - BitFieldValue bPreventJump() { return { this, "APrimalBuff.bPreventJump" }; } - BitFieldValue bDeactivated() { return { this, "APrimalBuff.bDeactivated" }; } - BitFieldValue bUsesInstigator() { return { this, "APrimalBuff.bUsesInstigator" }; } - BitFieldValue bFollowTarget() { return { this, "APrimalBuff.bFollowTarget" }; } - BitFieldValue bAddCharacterValues() { return { this, "APrimalBuff.bAddCharacterValues" }; } - BitFieldValue bOnlyAddCharacterValuesUnderwater() { return { this, "APrimalBuff.bOnlyAddCharacterValuesUnderwater" }; } - BitFieldValue bDisableIfCharacterUnderwater() { return { this, "APrimalBuff.bDisableIfCharacterUnderwater" }; } - BitFieldValue bUseInstigatorItem() { return { this, "APrimalBuff.bUseInstigatorItem" }; } - BitFieldValue bDestroyOnTargetStasis() { return { this, "APrimalBuff.bDestroyOnTargetStasis" }; } - BitFieldValue bAoETraceToTargets() { return { this, "APrimalBuff.bAoETraceToTargets" }; } - BitFieldValue bAOEOnlyApplyOtherBuffToWildDinos() { return { this, "APrimalBuff.bAOEOnlyApplyOtherBuffToWildDinos" }; } - BitFieldValue bAoEIgnoreDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEIgnoreDinosTargetingInstigator" }; } - BitFieldValue bAoEOnlyOnDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEOnlyOnDinosTargetingInstigator" }; } - BitFieldValue bBuffForceNoTick() { return { this, "APrimalBuff.bBuffForceNoTick" }; } - BitFieldValue bBuffForceNoTickDedicated() { return { this, "APrimalBuff.bBuffForceNoTickDedicated" }; } - BitFieldValue bCustomDepthStencilIgnoreHealth() { return { this, "APrimalBuff.bCustomDepthStencilIgnoreHealth" }; } - BitFieldValue bUseActivateSoundFadeInDuration() { return { this, "APrimalBuff.bUseActivateSoundFadeInDuration" }; } - BitFieldValue bDinoIgnoreBuffPostprocessEffectWhenRidden() { return { this, "APrimalBuff.bDinoIgnoreBuffPostprocessEffectWhenRidden" }; } - BitFieldValue bPlayerIgnoreBuffPostprocessEffectWhenRidingDino() { return { this, "APrimalBuff.bPlayerIgnoreBuffPostprocessEffectWhenRidingDino" }; } - BitFieldValue bRemoteForcedFlee() { return { this, "APrimalBuff.bRemoteForcedFlee" }; } - BitFieldValue bOnlyActivateSoundForInstigator() { return { this, "APrimalBuff.bOnlyActivateSoundForInstigator" }; } - BitFieldValue bAOEBuffCarnosOnly() { return { this, "APrimalBuff.bAOEBuffCarnosOnly" }; } - BitFieldValue bModifyMaxSpeed() { return { this, "APrimalBuff.bModifyMaxSpeed" }; } - BitFieldValue bDisplayHUDProgressBar() { return { this, "APrimalBuff.bDisplayHUDProgressBar" }; } - BitFieldValue bForceUsePreventTargeting() { return { this, "APrimalBuff.bForceUsePreventTargeting" }; } - BitFieldValue bForceUsePreventTargetingTurret() { return { this, "APrimalBuff.bForceUsePreventTargetingTurret" }; } - BitFieldValue bBPOverrideWeaponBob() { return { this, "APrimalBuff.bBPOverrideWeaponBob" }; } - BitFieldValue bUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bUseBPModifyPlayerBoneModifiers" }; } - BitFieldValue bDediServerUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bDediServerUseBPModifyPlayerBoneModifiers" }; } - BitFieldValue bUseBPNonDedicatedPlayerPostAnimUpdate() { return { this, "APrimalBuff.bUseBPNonDedicatedPlayerPostAnimUpdate" }; } - BitFieldValue bUseBPIsCharacterHardAttached() { return { this, "APrimalBuff.bUseBPIsCharacterHardAttached" }; } - BitFieldValue bDoCharacterDetachment() { return { this, "APrimalBuff.bDoCharacterDetachment" }; } - BitFieldValue bDoCharacterDetachmentIncludeRiding() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeRiding" }; } - BitFieldValue bDoCharacterDetachmentIncludeCarrying() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeCarrying" }; } - BitFieldValue bUseBPInitializedCharacterAnimScriptInstance() { return { this, "APrimalBuff.bUseBPInitializedCharacterAnimScriptInstance" }; } - BitFieldValue bUseBPCanBeCarried() { return { this, "APrimalBuff.bUseBPCanBeCarried" }; } - BitFieldValue bUsePostAdjustDamage() { return { this, "APrimalBuff.bUsePostAdjustDamage" }; } - BitFieldValue bAOEApplyOtherBuffOnPlayers() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnPlayers" }; } - BitFieldValue bAOEApplyOtherBuffOnDinos() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnDinos" }; } - BitFieldValue bAOEApplyOtherBuffIgnoreSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffIgnoreSameTeam" }; } - BitFieldValue bAOEApplyOtherBuffRequireSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffRequireSameTeam" }; } - BitFieldValue bBuffDrawFloatingHUD() { return { this, "APrimalBuff.bBuffDrawFloatingHUD" }; } - BitFieldValue bAddResetsBuffTime() { return { this, "APrimalBuff.bAddResetsBuffTime" }; } - BitFieldValue bAoEBuffAllowIfAlreadyBuffed() { return { this, "APrimalBuff.bAoEBuffAllowIfAlreadyBuffed" }; } - BitFieldValue bNetResetBuffStart() { return { this, "APrimalBuff.bNetResetBuffStart" }; } - BitFieldValue bImmobilizeTarget() { return { this, "APrimalBuff.bImmobilizeTarget" }; } - BitFieldValue bForcePlayerProne() { return { this, "APrimalBuff.bForcePlayerProne" }; } - BitFieldValue bHideBuffFromHUD() { return { this, "APrimalBuff.bHideBuffFromHUD" }; } - BitFieldValue bHideTimerFromHUD() { return { this, "APrimalBuff.bHideTimerFromHUD" }; } - BitFieldValue bBPAddMultiUseEntries() { return { this, "APrimalBuff.bBPAddMultiUseEntries" }; } - BitFieldValue bIsBuffPersistent() { return { this, "APrimalBuff.bIsBuffPersistent" }; } - BitFieldValue bBPUseBumpedByPawn() { return { this, "APrimalBuff.bBPUseBumpedByPawn" }; } - BitFieldValue bBPUseBumpedPawn() { return { this, "APrimalBuff.bBPUseBumpedPawn" }; } - BitFieldValue bAllowBuffWhenInstigatorDead() { return { this, "APrimalBuff.bAllowBuffWhenInstigatorDead" }; } - BitFieldValue bNotifyDamage() { return { this, "APrimalBuff.bNotifyDamage" }; } - BitFieldValue bAllowBuffStasis() { return { this, "APrimalBuff.bAllowBuffStasis" }; } - BitFieldValue bApplyStatModifierToPlayers() { return { this, "APrimalBuff.bApplyStatModifierToPlayers" }; } - BitFieldValue bApplyStatModifierToDinos() { return { this, "APrimalBuff.bApplyStatModifierToDinos" }; } - BitFieldValue bPreventOnWildDino() { return { this, "APrimalBuff.bPreventOnWildDino" }; } - BitFieldValue bPreventOnDino() { return { this, "APrimalBuff.bPreventOnDino" }; } - BitFieldValue bPreventOnPlayer() { return { this, "APrimalBuff.bPreventOnPlayer" }; } - BitFieldValue bPreventOnBigDino() { return { this, "APrimalBuff.bPreventOnBigDino" }; } - BitFieldValue bPreventOnBossDino() { return { this, "APrimalBuff.bPreventOnBossDino" }; } - BitFieldValue bIsDisease() { return { this, "APrimalBuff.bIsDisease" }; } - BitFieldValue bUseBPPreventAddingOtherBuff() { return { this, "APrimalBuff.bUseBPPreventAddingOtherBuff" }; } - BitFieldValue bUseBPPreventRunning() { return { this, "APrimalBuff.bUseBPPreventRunning" }; } - BitFieldValue bAoEApplyDamageAllTargetables() { return { this, "APrimalBuff.bAoEApplyDamageAllTargetables" }; } - BitFieldValue bUseBPActivated() { return { this, "APrimalBuff.bUseBPActivated" }; } - BitFieldValue bUseBPPreventFlight() { return { this, "APrimalBuff.bUseBPPreventFlight" }; } - BitFieldValue bRequireController() { return { this, "APrimalBuff.bRequireController" }; } - BitFieldValue bDontPlayInstigatorActiveSoundOnDino() { return { this, "APrimalBuff.bDontPlayInstigatorActiveSoundOnDino" }; } - BitFieldValue bAddExtendBuffTime() { return { this, "APrimalBuff.bAddExtendBuffTime" }; } - BitFieldValue bUseTickingDeactivation() { return { this, "APrimalBuff.bUseTickingDeactivation" }; } - BitFieldValue bCheckPreventInput() { return { this, "APrimalBuff.bCheckPreventInput" }; } - BitFieldValue bBPDrawBuffStatusHUD() { return { this, "APrimalBuff.bBPDrawBuffStatusHUD" }; } - BitFieldValue bEnableStaticPathing() { return { this, "APrimalBuff.bEnableStaticPathing" }; } - BitFieldValue bHUDFormatTimerAsTimecode() { return { this, "APrimalBuff.bHUDFormatTimerAsTimecode" }; } - BitFieldValue bUseBPPreventThrowingItem() { return { this, "APrimalBuff.bUseBPPreventThrowingItem" }; } - BitFieldValue bPreventInputDoesOffset() { return { this, "APrimalBuff.bPreventInputDoesOffset" }; } - BitFieldValue bNotifyExperienceGained() { return { this, "APrimalBuff.bNotifyExperienceGained" }; } - BitFieldValue bOnlyTickWhenVisible() { return { this, "APrimalBuff.bOnlyTickWhenVisible" }; } - BitFieldValue bBPAdjustStatusValueModification() { return { this, "APrimalBuff.bBPAdjustStatusValueModification" }; } - BitFieldValue bWasDestroyed() { return { this, "APrimalBuff.bWasDestroyed" }; } - BitFieldValue bUseBPNotifyOtherBuffActivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffActivated" }; } - BitFieldValue bUseBPNotifyOtherBuffDeactivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffDeactivated" }; } - BitFieldValue bUseBPPreventFirstPerson() { return { this, "APrimalBuff.bUseBPPreventFirstPerson" }; } - BitFieldValue bForceAddUnderwaterCharacterStatusValues() { return { this, "APrimalBuff.bForceAddUnderwaterCharacterStatusValues" }; } - - // Functions - - bool TemplateAllowActorSpawn(UWorld * World, FVector * AtLocation, FRotator * AtRotation, FActorSpawnParameters * SpawnParameters) { return NativeCall(this, "APrimalBuff.TemplateAllowActorSpawn", World, AtLocation, AtRotation, SpawnParameters); } - void Deactivate() { NativeCall(this, "APrimalBuff.Deactivate"); } - void NetDeactivate_Implementation() { NativeCall(this, "APrimalBuff.NetDeactivate_Implementation"); } - void BeginPlay() { NativeCall(this, "APrimalBuff.BeginPlay"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalBuff.GetLifetimeReplicatedProps", OutLifetimeProps); } - void AddDamageStatusValueModifier(APrimalCharacter * addToCharacter, EPrimalCharacterStatusValue::Type ValueType, bool bSpeedToAddInSeconds, bool bContinueOnUnchangedValue, bool bResetExistingModifierDescriptionIndex, bool bSetValue, bool bSetAdditionalValue, float LimitExistingModifierDescriptionToMaxAmount, float damageMultiplierAmountToAdd, float speedToAdd, int StatusValueModifierDescriptionIndex, bool bUsePercentualDamage, bool bMakeUntameable, float percentualDamage, TSubclassOf ScaleValueByCharacterDamageType) { NativeCall>(this, "APrimalBuff.AddDamageStatusValueModifier", addToCharacter, ValueType, bSpeedToAddInSeconds, bContinueOnUnchangedValue, bResetExistingModifierDescriptionIndex, bSetValue, bSetAdditionalValue, LimitExistingModifierDescriptionToMaxAmount, damageMultiplierAmountToAdd, speedToAdd, StatusValueModifierDescriptionIndex, bUsePercentualDamage, bMakeUntameable, percentualDamage, ScaleValueByCharacterDamageType); } - void SetupForInstigator() { NativeCall(this, "APrimalBuff.SetupForInstigator"); } - void Tick(float DeltaSeconds) { NativeCall(this, "APrimalBuff.Tick", DeltaSeconds); } - void ProcessStaticPathing(bool triggerRunning) { NativeCall(this, "APrimalBuff.ProcessStaticPathing", triggerRunning); } - FVector * UpdateStaticPathingDestination(FVector * result, FVector locOverride, float randomOffsetMultiplier, bool useRandomNegativeXDir, bool orientRandOffsetByRotation, FRotator randOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(this, "APrimalBuff.UpdateStaticPathingDestination", result, locOverride, randomOffsetMultiplier, useRandomNegativeXDir, orientRandOffsetByRotation, randOffsetByRotation, GroundCheckSpreadOverride); } - void EnableTickFunction() { NativeCall(this, "APrimalBuff.EnableTickFunction"); } - bool AOEBuffCanAffect(APrimalCharacter * forChar) { return NativeCall(this, "APrimalBuff.AOEBuffCanAffect", forChar); } - void InstigatorJumped() { NativeCall(this, "APrimalBuff.InstigatorJumped"); } - void Destroyed() { NativeCall(this, "APrimalBuff.Destroyed"); } - void NetResetBuffStart_Implementation() { NativeCall(this, "APrimalBuff.NetResetBuffStart_Implementation"); } - bool ResetBuffStart() { return NativeCall(this, "APrimalBuff.ResetBuffStart"); } - APrimalBuff * AddBuff(APrimalCharacter * ForCharacter, AActor * DamageCauser) { return NativeCall(this, "APrimalBuff.AddBuff", ForCharacter, DamageCauser); } - static APrimalBuff * StaticAddBuff(TSubclassOf BuffClass, APrimalCharacter * ForCharacter, UPrimalItem * AssociatedItem, AActor * DamageCauser, bool bForceOnClient) { return NativeCall, APrimalCharacter *, UPrimalItem *, AActor *, bool>(nullptr, "APrimalBuff.StaticAddBuff", BuffClass, ForCharacter, AssociatedItem, DamageCauser, bForceOnClient); } - bool ExcludePostProcessBlendableMaterial(UMaterialInterface * BlendableMaterialInterface) { return NativeCall(this, "APrimalBuff.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } - bool PreventActorTargeting_Implementation(AActor * ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting_Implementation", ByActor); } - bool PreventRunning() { return NativeCall(this, "APrimalBuff.PreventRunning"); } - bool ExcludeAoEActor(AActor * ActorToConsider) { return NativeCall(this, "APrimalBuff.ExcludeAoEActor", ActorToConsider); } - bool HideBuffFromHUD_Implementation() { return NativeCall(this, "APrimalBuff.HideBuffFromHUD_Implementation"); } - void Stasis() { NativeCall(this, "APrimalBuff.Stasis"); } - void Unstasis() { NativeCall(this, "APrimalBuff.Unstasis"); } - bool ExtendBuffTime(float AmountOfAdditionalTime) { return NativeCall(this, "APrimalBuff.ExtendBuffTime", AmountOfAdditionalTime); } - int GetBuffType_Implementation() { return NativeCall(this, "APrimalBuff.GetBuffType_Implementation"); } - bool ReduceBuffTime(float AmountOfTimeToReduce) { return NativeCall(this, "APrimalBuff.ReduceBuffTime", AmountOfTimeToReduce); } - static UClass * StaticClass() { return NativeCall(nullptr, "APrimalBuff.StaticClass"); } - static void StaticRegisterNativesAPrimalBuff() { NativeCall(nullptr, "APrimalBuff.StaticRegisterNativesAPrimalBuff"); } - void BPDrawBuffStatusHUD(AShooterHUD * HUD, float XPos, float YPos, float ScaleMult) { NativeCall(this, "APrimalBuff.BPDrawBuffStatusHUD", HUD, XPos, YPos, ScaleMult); } - float BuffAdjustDamage(float Damage, FHitResult * HitInfo, AController * EventInstigator, AActor * DamageCauser, TSubclassOf TheDamgeType) { return NativeCall>(this, "APrimalBuff.BuffAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } - void BuffPostAdjustDamage(float Damage, FHitResult * HitInfo, AController * EventInstigator, AActor * DamageCauser, TSubclassOf TheDamgeType) { NativeCall>(this, "APrimalBuff.BuffPostAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } - void BuffTickClient(float DeltaTime) { NativeCall(this, "APrimalBuff.BuffTickClient", DeltaTime); } - void BuffTickServer(float DeltaTime) { NativeCall(this, "APrimalBuff.BuffTickServer", DeltaTime); } - void DrawBuffFloatingHUD(int BuffIndex, AShooterHUD * HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalBuff.DrawBuffFloatingHUD", BuffIndex, HUD, CenterX, CenterY, DrawScale); } - void NotifyDamage(float DamageAmount, TSubclassOf DamageClass, AController * EventInstigator, AActor * TheDamageCauser) { NativeCall, AController *, AActor *>(this, "APrimalBuff.NotifyDamage", DamageAmount, DamageClass, EventInstigator, TheDamageCauser); } - bool PreventActorTargeting(AActor * ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting", ByActor); } - void SetBuffCauser(AActor * CausedBy) { NativeCall(this, "APrimalBuff.SetBuffCauser", CausedBy); } -}; - struct UPrimalEngramEntry : UObject { int& RequiredCharacterLevelField() { return *GetNativePointerField(this, "UPrimalEngramEntry.RequiredCharacterLevel"); } int& RequiredEngramPointsField() { return *GetNativePointerField(this, "UPrimalEngramEntry.RequiredEngramPoints"); } TSubclassOf& BluePrintEntryField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.BluePrintEntry"); } FString& ExtraEngramDescriptionField() { return *GetNativePointerField(this, "UPrimalEngramEntry.ExtraEngramDescription"); } - //TArray& EngramRequirementSetsField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.EngramRequirementSets"); } + TArray& EngramRequirementSetsField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.EngramRequirementSets"); } int& MyEngramIndexField() { return *GetNativePointerField(this, "UPrimalEngramEntry.MyEngramIndex"); } TEnumAsByte& EngramGroupField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.EngramGroup"); } @@ -413,22 +246,23 @@ struct UPrimalEngramEntry : UObject BitFieldValue bGiveBlueprintToPlayerInventory() { return { this, "UPrimalEngramEntry.bGiveBlueprintToPlayerInventory" }; } BitFieldValue bCanBeManuallyUnlocked() { return { this, "UPrimalEngramEntry.bCanBeManuallyUnlocked" }; } + BitFieldValue bIsSPlusEngram() { return { this, "UPrimalEngramEntry.bIsSPlusEngram" }; } // Functions - UObject * GetObjectW() { return NativeCall(this, "UPrimalEngramEntry.GetObjectW"); } - FString * GetEntryString(FString * result) { return NativeCall(this, "UPrimalEngramEntry.GetEntryString", result); } - UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalEngramEntry.GetEntryIcon", AssociatedDataObject, bIsEnabled); } - bool MeetsEngramRequirements(AShooterPlayerState * aPlayerState, bool bOnlyCheckLevel, bool bDontCheckEngramPreRequirements) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramRequirements", aPlayerState, bOnlyCheckLevel, bDontCheckEngramPreRequirements); } - bool MeetsEngramChainRequirements(AShooterPlayerState * aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramChainRequirements", aPlayerState); } - FString * GetEngramDescription(FString * result, AShooterPlayerState * aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.GetEngramDescription", result, aPlayerState); } - FString * GetEngramName(FString * result) { return NativeCall(this, "UPrimalEngramEntry.GetEngramName", result); } + UObject* GetObjectW() { return NativeCall(this, "UPrimalEngramEntry.GetObjectW"); } + FString* GetEntryString(FString* result) { return NativeCall(this, "UPrimalEngramEntry.GetEntryString", result); } + UTexture2D* GetEntryIcon(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalEngramEntry.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + bool MeetsEngramRequirements(AShooterPlayerState* aPlayerState, bool bOnlyCheckLevel, bool bDontCheckEngramPreRequirements) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramRequirements", aPlayerState, bOnlyCheckLevel, bDontCheckEngramPreRequirements); } + bool MeetsEngramChainRequirements(AShooterPlayerState* aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramChainRequirements", aPlayerState); } + FString* GetEngramDescription(FString* result, AShooterPlayerState* aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.GetEngramDescription", result, aPlayerState); } + FString* GetEngramName(FString* result) { return NativeCall(this, "UPrimalEngramEntry.GetEngramName", result); } int GetRequiredEngramPoints() { return NativeCall(this, "UPrimalEngramEntry.GetRequiredEngramPoints"); } int GetRequiredLevel() { return NativeCall(this, "UPrimalEngramEntry.GetRequiredLevel"); } bool UseEngramRequirementSets() { return NativeCall(this, "UPrimalEngramEntry.UseEngramRequirementSets"); } bool IsEngramClassHidden(TSubclassOf ForItemClass) { return NativeCall>(this, "UPrimalEngramEntry.IsEngramClassHidden", ForItemClass); } - void GetAllChainedPreReqs(AShooterPlayerState * aPlayerState, TArray> * TestedEntries) { NativeCall> *>(this, "UPrimalEngramEntry.GetAllChainedPreReqs", aPlayerState, TestedEntries); } - int GetChainRequiredEngramPoints(TArray> * TestedEntries) { return NativeCall> *>(this, "UPrimalEngramEntry.GetChainRequiredEngramPoints", TestedEntries); } + void GetAllChainedPreReqs(AShooterPlayerState* aPlayerState, TArray>* TestedEntries) { NativeCall>*>(this, "UPrimalEngramEntry.GetAllChainedPreReqs", aPlayerState, TestedEntries); } + int GetChainRequiredEngramPoints(TArray>* TestedEntries) { return NativeCall>*>(this, "UPrimalEngramEntry.GetChainRequiredEngramPoints", TestedEntries); } void ClearHiddenEngramRequirements() { NativeCall(this, "UPrimalEngramEntry.ClearHiddenEngramRequirements"); } }; @@ -451,48 +285,66 @@ struct FCraftingResourceRequirement struct UKismetSystemLibrary { - static FString * GetDisplayName(FString * result, UObject * Object) { return NativeCall(nullptr, "UKismetSystemLibrary.GetDisplayName", result, Object); } - static bool IsDedicatedServer(UObject * WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsDedicatedServer", WorldContextObject); } - static void K2_SetTimer(UObject * Object, FString FunctionName, float Time, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimer", Object, FunctionName, Time, bLooping); } - static void K2_SetTimerForNextTick(UObject * Object, FString FunctionName, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerForNextTick", Object, FunctionName, bLooping); } - static void K2_ClearTimer(UObject * Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_ClearTimer", Object, FunctionName); } - static void K2_PauseTimer(UObject * Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_PauseTimer", Object, FunctionName); } - static void K2_UnPauseTimer(UObject * Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_UnPauseTimer", Object, FunctionName); } - static bool K2_IsTimerActive(UObject * Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerActive", Object, FunctionName); } - static bool K2_IsTimerPaused(UObject * Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerPaused", Object, FunctionName); } - static bool K2_TimerExists(UObject * Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_TimerExists", Object, FunctionName); } - static float K2_GetTimerElapsedTime(UObject * Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerElapsedTime", Object, FunctionName); } - static float K2_GetTimerRemainingTime(UObject * Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerRemainingTime", Object, FunctionName); } - static void SetClassPropertyByName(UObject * Object, FName PropertyName, TSubclassOf Value) { NativeCall>(nullptr, "UKismetSystemLibrary.SetClassPropertyByName", Object, PropertyName, Value); } - static void SetVectorPropertyByName(UObject * Object, FName PropertyName, FVector * Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetVectorPropertyByName", Object, PropertyName, Value); } - static void SetRotatorPropertyByName(UObject * Object, FName PropertyName, FRotator * Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetRotatorPropertyByName", Object, PropertyName, Value); } - static void SetLinearColorPropertyByName(UObject * Object, FName PropertyName, FLinearColor * Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetLinearColorPropertyByName", Object, PropertyName, Value); } - static void SetTransformPropertyByName(UObject * Object, FName PropertyName, FTransform * Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetTransformPropertyByName", Object, PropertyName, Value); } - static void GetActorListFromComponentList(TArray * ComponentList, UClass * ActorClassFilter, TArray * OutActorList) { NativeCall *, UClass *, TArray *>(nullptr, "UKismetSystemLibrary.GetActorListFromComponentList", ComponentList, ActorClassFilter, OutActorList); } - static bool SphereOverlapActors_NEW(UObject * WorldContextObject, FVector SpherePos, float SphereRadius, TArray> * ObjectTypes, UClass * ActorClassFilter, TArray * ActorsToIgnore, TArray * OutActors) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.SphereOverlapActors_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } - static bool SphereOverlapActorsSimple(UObject * WorldContextObject, FVector SpherePos, float SphereRadius, TEnumAsByte ObjectType, UClass * ActorClassFilter, TArray * ActorsToIgnore, TArray * OutActors) { return NativeCall, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.SphereOverlapActorsSimple", WorldContextObject, SpherePos, SphereRadius, ObjectType, ActorClassFilter, ActorsToIgnore, OutActors); } - static bool SphereOverlapComponents_NEW(UObject * WorldContextObject, FVector SpherePos, float SphereRadius, TArray> * ObjectTypes, UClass * ComponentClassFilter, TArray * ActorsToIgnore, TArray * OutComponents) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.SphereOverlapComponents_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } - static bool BoxOverlapActors_NEW(UObject * WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray> * ObjectTypes, UClass * ActorClassFilter, TArray * ActorsToIgnore, TArray * OutActors) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.BoxOverlapActors_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } - static bool BoxOverlapComponents_NEW(UObject * WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray> * ObjectTypes, UClass * ComponentClassFilter, TArray * ActorsToIgnore, TArray * OutComponents) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.BoxOverlapComponents_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } - static bool CapsuleOverlapActors_NEW(UObject * WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray> * ObjectTypes, UClass * ActorClassFilter, TArray * ActorsToIgnore, TArray * OutActors) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.CapsuleOverlapActors_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } - static bool CapsuleOverlapComponents_NEW(UObject * WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray> * ObjectTypes, UClass * ComponentClassFilter, TArray * ActorsToIgnore, TArray * OutComponents) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.CapsuleOverlapComponents_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } - static bool ComponentOverlapActors_NEW(UPrimitiveComponent * Component, FTransform * ComponentTransform, TArray> * ObjectTypes, UClass * ActorClassFilter, TArray * ActorsToIgnore, TArray * OutActors) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.ComponentOverlapActors_NEW", Component, ComponentTransform, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } - static bool ComponentOverlapComponents_NEW(UPrimitiveComponent * Component, FTransform * ComponentTransform, TArray> * ObjectTypes, UClass * ComponentClassFilter, TArray * ActorsToIgnore, TArray * OutComponents) { return NativeCall> *, UClass *, TArray *, TArray *>(nullptr, "UKismetSystemLibrary.ComponentOverlapComponents_NEW", Component, ComponentTransform, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } - static bool BoxTraceSingle(UObject * WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult * OutHit, bool bIgnoreSelf) { return NativeCall *, EDrawDebugTrace::Type, FHitResult *, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingle", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } - static bool BoxTraceMulti(UObject * WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray * OutHits, bool bIgnoreSelf) { return NativeCall *, EDrawDebugTrace::Type, TArray *, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMulti", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } - static bool LineTraceSingleForObjects(UObject * WorldContextObject, FVector Start, FVector End, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult * OutHit, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, FHitResult *, bool>(nullptr, "UKismetSystemLibrary.LineTraceSingleForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } - static bool LineTraceMultiForObjects(UObject * WorldContextObject, FVector Start, FVector End, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray * OutHits, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, TArray *, bool>(nullptr, "UKismetSystemLibrary.LineTraceMultiForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } - static bool SphereTraceSingleForObjects(UObject * WorldContextObject, FVector Start, FVector End, float Radius, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult * OutHit, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, FHitResult *, bool>(nullptr, "UKismetSystemLibrary.SphereTraceSingleForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } - static bool SphereTraceMultiForObjects(UObject * WorldContextObject, FVector Start, FVector End, float Radius, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray * OutHits, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, TArray *, bool>(nullptr, "UKismetSystemLibrary.SphereTraceMultiForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } - static bool BoxTraceSingleForObjects(UObject * WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult * OutHit, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, FHitResult *, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingleForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } - static bool BoxTraceMultiForObjects(UObject * WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray * OutHits, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, TArray *, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMultiForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } - static bool CapsuleTraceSingleForObjects(UObject * WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult * OutHit, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, FHitResult *, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceSingleForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } - static bool CapsuleTraceMultiForObjects(UObject * WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray> * ObjectTypes, bool bTraceComplex, TArray * ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray * OutHits, bool bIgnoreSelf) { return NativeCall> *, bool, TArray *, EDrawDebugTrace::Type, TArray *, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceMultiForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } - static void DrawDebugFrustum(UObject * WorldContextObject, FTransform * FrustumTransform, FLinearColor FrustumColor, float Duration) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFrustum", WorldContextObject, FrustumTransform, FrustumColor, Duration); } - static void GetActorBounds(AActor * Actor, FVector * Origin, FVector * BoxExtent) { NativeCall(nullptr, "UKismetSystemLibrary.GetActorBounds", Actor, Origin, BoxExtent); } + // Functions + + static FString* MakeLiteralString(FString* result, FString* Value) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralString", result, Value); } + static FString* GetDisplayName(FString* result, UObject* Object) { return NativeCall(nullptr, "UKismetSystemLibrary.GetDisplayName", result, Object); } + static FString* GetClassDisplayName(FString* result, UClass* Class) { return NativeCall(nullptr, "UKismetSystemLibrary.GetClassDisplayName", result, Class); } + static FString* GetEngineVersion(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetEngineVersion", result); } + static FString* GetGameName(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetGameName", result); } + static FString* GetPlatformUserName(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetPlatformUserName", result); } + static bool DoesImplementInterface(UObject* TestObject, TSubclassOf Interface) { return NativeCall>(nullptr, "UKismetSystemLibrary.DoesImplementInterface", TestObject, Interface); } + static FString* GetUniqueDeviceId(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetUniqueDeviceId", result); } + //static FText* MakeLiteralText(FText* result, FText Value) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralText", result, Value); } + //static void QuitGame(UObject* WorldContextObject, APlayerController* SpecificPlayer, TEnumAsByte QuitPreference) { NativeCall>(nullptr, "UKismetSystemLibrary.QuitGame", WorldContextObject, SpecificPlayer, QuitPreference); } + static void K2_SetTimer(UObject* Object, FString FunctionName, float Time, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimer", Object, FunctionName, Time, bLooping); } + static void K2_SetTimerForNextTick(UObject* Object, FString FunctionName, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerForNextTick", Object, FunctionName, bLooping); } + static void K2_SetTimerDelegate(FBlueprintTimerDynamicDelegate Delegate, float Time, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerDelegate", Delegate, Time, bLooping); } + static void K2_SetTimerForNextTickDelegate(FBlueprintTimerDynamicDelegate Delegate, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerForNextTickDelegate", Delegate, bLooping); } + static void K2_ClearTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_ClearTimer", Object, FunctionName); } + static void K2_PauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_PauseTimer", Object, FunctionName); } + static void K2_UnPauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_UnPauseTimer", Object, FunctionName); } + static bool K2_IsTimerActive(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerActive", Object, FunctionName); } + static bool K2_IsTimerPaused(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerPaused", Object, FunctionName); } + static bool K2_TimerExists(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_TimerExists", Object, FunctionName); } + static float K2_GetTimerElapsedTime(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerElapsedTime", Object, FunctionName); } + static float K2_GetTimerRemainingTime(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerRemainingTime", Object, FunctionName); } + static void SetClassPropertyByName(UObject* Object, FName PropertyName, TSubclassOf Value) { NativeCall>(nullptr, "UKismetSystemLibrary.SetClassPropertyByName", Object, PropertyName, Value); } + static void SetVectorPropertyByName(UObject* Object, FName PropertyName, FVector* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetVectorPropertyByName", Object, PropertyName, Value); } + static void SetRotatorPropertyByName(UObject* Object, FName PropertyName, FRotator* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetRotatorPropertyByName", Object, PropertyName, Value); } + static void SetLinearColorPropertyByName(UObject* Object, FName PropertyName, FLinearColor* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetLinearColorPropertyByName", Object, PropertyName, Value); } + static void SetTransformPropertyByName(UObject* Object, FName PropertyName, FTransform* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetTransformPropertyByName", Object, PropertyName, Value); } + static void GetActorListFromComponentList(TArray* ComponentList, UClass* ActorClassFilter, TArray* OutActorList) { NativeCall*, UClass*, TArray*>(nullptr, "UKismetSystemLibrary.GetActorListFromComponentList", ComponentList, ActorClassFilter, OutActorList); } + static bool SphereOverlapActors_NEW(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapActors_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool SphereOverlapActorsSimple(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TEnumAsByte ObjectType, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapActorsSimple", WorldContextObject, SpherePos, SphereRadius, ObjectType, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool SphereOverlapComponents_NEW(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapComponents_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool BoxOverlapActors_NEW(UObject* WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.BoxOverlapActors_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool BoxOverlapComponents_NEW(UObject* WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.BoxOverlapComponents_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool CapsuleOverlapActors_NEW(UObject* WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.CapsuleOverlapActors_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool CapsuleOverlapComponents_NEW(UObject* WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.CapsuleOverlapComponents_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool ComponentOverlapActors_NEW(UPrimitiveComponent* Component, FTransform* ComponentTransform, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.ComponentOverlapActors_NEW", Component, ComponentTransform, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool ComponentOverlapComponents_NEW(UPrimitiveComponent* Component, FTransform* ComponentTransform, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.ComponentOverlapComponents_NEW", Component, ComponentTransform, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool BoxTraceSingle(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingle", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool BoxTraceMulti(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMulti", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool LineTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.LineTraceSingleForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool LineTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.LineTraceMultiForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool SphereTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceSingleForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool SphereTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceMultiForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool BoxTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingleForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool BoxTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMultiForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool CapsuleTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceSingleForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool CapsuleTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceMultiForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static void DrawDebugFrustum(UObject* WorldContextObject, FTransform* FrustumTransform, FLinearColor FrustumColor, float Duration) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFrustum", WorldContextObject, FrustumTransform, FrustumColor, Duration); } + static void DrawDebugFloatHistoryLocation(UObject* WorldContextObject, FDebugFloatHistory* FloatHistory, FVector DrawLocation, FVector2D DrawSize, FLinearColor DrawColor, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFloatHistoryLocation", WorldContextObject, FloatHistory, DrawLocation, DrawSize, DrawColor, LifeTime); } + static FDebugFloatHistory* AddFloatHistorySample(FDebugFloatHistory* result, float Value, FDebugFloatHistory* FloatHistory) { return NativeCall(nullptr, "UKismetSystemLibrary.AddFloatHistorySample", result, Value, FloatHistory); } + static void GetActorBounds(AActor* Actor, FVector* Origin, FVector* BoxExtent) { NativeCall(nullptr, "UKismetSystemLibrary.GetActorBounds", Actor, Origin, BoxExtent); } + static void Delay(UObject* WorldContextObject, float Duration, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UKismetSystemLibrary.Delay", WorldContextObject, Duration, LatentInfo); } + static void RetriggerableDelay(UObject* WorldContextObject, float Duration, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UKismetSystemLibrary.RetriggerableDelay", WorldContextObject, Duration, LatentInfo); } + //static void MoveComponentTo(USceneComponent* Component, FVector TargetRelativeLocation, FRotator TargetRelativeRotation, bool bEaseOut, bool bEaseIn, float OverTime, TEnumAsByte MoveAction, FLatentActionInfo LatentInfo, bool bSweep) { NativeCall, FLatentActionInfo, bool>(nullptr, "UKismetSystemLibrary.MoveComponentTo", Component, TargetRelativeLocation, TargetRelativeRotation, bEaseOut, bEaseIn, OverTime, MoveAction, LatentInfo, bSweep); } static int GetRenderingDetailMode() { return NativeCall(nullptr, "UKismetSystemLibrary.GetRenderingDetailMode"); } static int GetRenderingMaterialQualityLevel() { return NativeCall(nullptr, "UKismetSystemLibrary.GetRenderingMaterialQualityLevel"); } - static void ShowPlatformSpecificAchievementsScreen(APlayerController * SpecificPlayer) { NativeCall(nullptr, "UKismetSystemLibrary.ShowPlatformSpecificAchievementsScreen", SpecificPlayer); } + static void ShowPlatformSpecificAchievementsScreen(APlayerController* SpecificPlayer) { NativeCall(nullptr, "UKismetSystemLibrary.ShowPlatformSpecificAchievementsScreen", SpecificPlayer); } + static void StaticRegisterNativesUKismetSystemLibrary() { NativeCall(nullptr, "UKismetSystemLibrary.StaticRegisterNativesUKismetSystemLibrary"); } }; struct FOverlapResult @@ -504,70 +356,252 @@ struct FOverlapResult // Functions - AActor * GetActor() { return NativeCall(this, "FOverlapResult.GetActor"); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FOverlapResult.StaticStruct"); } + AActor* GetActor() { return NativeCall(this, "FOverlapResult.GetActor"); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FOverlapResult.StaticStruct"); } +}; + +struct FOverlappedFoliageElement +{ + AActor* HarvestActor; + UInstancedStaticMeshComponent* InstancedStaticMeshComponent; + UPrimalHarvestingComponent* HarvestingComponent; + FVector HarvestLocation; + int HitBodyIndex; + float MaxHarvestHealth; + float CurrentHarvestHealth; + __int8 bIsUnharvestable : 1; + __int8 bIsVisibleAndActive : 1; }; struct UVictoryCore { - static bool OverlappingActors(UWorld * theWorld, TArray * Overlaps, FVector Origin, float Radius, int CollisionGroups, AActor * InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall *, FVector, float, int, AActor *, FName, bool>(nullptr, "UVictoryCore.OverlappingActors", theWorld, Overlaps, Origin, Radius, CollisionGroups, InIgnoreActor, TraceName, bComplexOverlapTest); } - static FRotator * RLerp(FRotator * result, FRotator A, FRotator B, float Alpha, bool bShortestPath) { return NativeCall(nullptr, "UVictoryCore.RLerp", result, A, B, Alpha, bShortestPath); } - static int GetWeightedRandomIndex(TArray * pArray, float ForceRand) { return NativeCall *, float>(nullptr, "UVictoryCore.GetWeightedRandomIndex", pArray, ForceRand); } - static bool OverlappingActorsTrace(UWorld * theWorld, TArray * Overlaps, FVector Origin, float Radius, ECollisionChannel TraceChannel, AActor * InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall *, FVector, float, ECollisionChannel, AActor *, FName, bool>(nullptr, "UVictoryCore.OverlappingActorsTrace", theWorld, Overlaps, Origin, Radius, TraceChannel, InIgnoreActor, TraceName, bComplexOverlapTest); } - static UPhysicalMaterial * TracePhysMaterial(UWorld * theWorld, FVector StartPos, FVector EndPos, AActor * IgnoreActor) { return NativeCall(nullptr, "UVictoryCore.TracePhysMaterial", theWorld, StartPos, EndPos, IgnoreActor); } + // Functions + + static bool OverlappingActors(UWorld* theWorld, TArray* Overlaps, FVector Origin, float Radius, int CollisionGroups, AActor* InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall*, FVector, float, int, AActor*, FName, bool>(nullptr, "UVictoryCore.OverlappingActors", theWorld, Overlaps, Origin, Radius, CollisionGroups, InIgnoreActor, TraceName, bComplexOverlapTest); } + static FRotator* RLerp(FRotator* result, FRotator A, FRotator B, float Alpha, bool bShortestPath) { return NativeCall(nullptr, "UVictoryCore.RLerp", result, A, B, Alpha, bShortestPath); } + static FVector2D* ProjectWorldToScreenPosition(FVector2D* result, FVector* WorldLocation, APlayerController* ThePC) { return NativeCall(nullptr, "UVictoryCore.ProjectWorldToScreenPosition", result, WorldLocation, ThePC); } + static FString* FormatSecondsAsHoursMinutesSeconds(FString* result, unsigned int Seconds) { return NativeCall(nullptr, "UVictoryCore.FormatSecondsAsHoursMinutesSeconds", result, Seconds); } + static bool OverlappingActorsTrace(UWorld* theWorld, TArray* Overlaps, FVector Origin, float Radius, ECollisionChannel TraceChannel, AActor* InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall*, FVector, float, ECollisionChannel, AActor*, FName, bool>(nullptr, "UVictoryCore.OverlappingActorsTrace", theWorld, Overlaps, Origin, Radius, TraceChannel, InIgnoreActor, TraceName, bComplexOverlapTest); } + static int GetWeightedRandomIndex(TArray* pArray, float ForceRand) { return NativeCall*, float>(nullptr, "UVictoryCore.GetWeightedRandomIndex", pArray, ForceRand); } + static FVector2D* ProjectWorldToScreenPositionRaw(FVector2D* result, FVector* WorldLocation, APlayerController* ThePC) { return NativeCall(nullptr, "UVictoryCore.ProjectWorldToScreenPositionRaw", result, WorldLocation, ThePC); } + static FName* GetObjectPath(FName* result, UObject* Obj) { return NativeCall(nullptr, "UVictoryCore.GetObjectPath", result, Obj); } + static UPhysicalMaterial* TracePhysMaterial(UWorld* theWorld, FVector StartPos, FVector EndPos, AActor* IgnoreActor) { return NativeCall(nullptr, "UVictoryCore.TracePhysMaterial", theWorld, StartPos, EndPos, IgnoreActor); } + static FString* GetKeyNameFromActionName(FString* result, FName ActionName) { return NativeCall(nullptr, "UVictoryCore.GetKeyNameFromActionName", result, ActionName); } static float ClampRotAxis(float BaseAxis, float DesiredAxis, float MaxDiff) { return NativeCall(nullptr, "UVictoryCore.ClampRotAxis", BaseAxis, DesiredAxis, MaxDiff); } - static FVector * ClampLocation(FVector * result, FVector BaseLocation, FVector DesiredLocation, float MaxDiff, bool bTraceClampLocation, UWorld * TraceWorld, FVector * TraceFromLocation) { return NativeCall(nullptr, "UVictoryCore.ClampLocation", result, BaseLocation, DesiredLocation, MaxDiff, bTraceClampLocation, TraceWorld, TraceFromLocation); } - static int BPGetWeightedRandomIndex(TArray * pArray, float ForceRand) { return NativeCall *, float>(nullptr, "UVictoryCore.BPGetWeightedRandomIndex", pArray, ForceRand); } - static void MultiTraceProjectSphere(UObject * WorldContextObject, TArray * OutResults, FVector * Origin, ECollisionChannel TraceChannel, int HorizResolution, int VertResolution, float StartDistance, float EndDistance, float NorthConeSubtractAngle, float SouthConeSubtractAngle, int PctChanceToTrace, int MaxTraceCount, bool bDrawDebugLines, float DebugDrawDuration) { NativeCall *, FVector *, ECollisionChannel, int, int, float, float, float, float, int, int, bool, float>(nullptr, "UVictoryCore.MultiTraceProjectSphere", WorldContextObject, OutResults, Origin, TraceChannel, HorizResolution, VertResolution, StartDistance, EndDistance, NorthConeSubtractAngle, SouthConeSubtractAngle, PctChanceToTrace, MaxTraceCount, bDrawDebugLines, DebugDrawDuration); } - static FRotator * BPRotatorLerp(FRotator * result, FRotator * A, FRotator * B, const float * Alpha) { return NativeCall(nullptr, "UVictoryCore.BPRotatorLerp", result, A, B, Alpha); } - static bool BPFastTrace(UWorld * theWorld, FVector TraceEnd, FVector TraceStart, AActor * ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.BPFastTrace", theWorld, TraceEnd, TraceStart, ActorToIgnore); } - static bool VTraceIgnoreFoliage(UWorld * theWorld, FVector * Start, FVector * End, FHitResult * HitOut, AActor * ActorToIgnore, ECollisionChannel Channel, int CollisionGroups, bool bReturnPhysMaterial, bool bTraceComplex, FVector * BoxExtent, FName TraceTag, AActor * OtherActorToIgnore, TArray * OtherActorsToIgnore, FQuat * Rot, AActor * AnotherActorToIgnore, bool bIgnoreFoliage) { return NativeCall *, FQuat *, AActor *, bool>(nullptr, "UVictoryCore.VTraceIgnoreFoliage", theWorld, Start, End, HitOut, ActorToIgnore, Channel, CollisionGroups, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, OtherActorToIgnore, OtherActorsToIgnore, Rot, AnotherActorToIgnore, bIgnoreFoliage); } - static void SetSessionPrefix(FString * InPrefix) { NativeCall(nullptr, "UVictoryCore.SetSessionPrefix", InPrefix); } - static FColor * GetTeamColor(FColor * result, const int TargetingTeam) { return NativeCall(nullptr, "UVictoryCore.GetTeamColor", result, TargetingTeam); } - static FString * FormatAsTime(FString * result, int InTime, bool UseLeadingZero, bool bForceLeadingZeroHour, bool bShowSeconds) { return NativeCall(nullptr, "UVictoryCore.FormatAsTime", result, InTime, UseLeadingZero, bForceLeadingZeroHour, bShowSeconds); } - static bool CalculateInterceptPosition(FVector * StartPosition, FVector * StartVelocity, float ProjectileVelocity, FVector * TargetPosition, FVector * TargetVelocity, FVector * InterceptPosition) { return NativeCall(nullptr, "UVictoryCore.CalculateInterceptPosition", StartPosition, StartVelocity, ProjectileVelocity, TargetPosition, TargetVelocity, InterceptPosition); } + static FVector* ClampLocation(FVector* result, FVector BaseLocation, FVector DesiredLocation, float MaxDiff, bool bTraceClampLocation, UWorld* TraceWorld, FVector* TraceFromLocation) { return NativeCall(nullptr, "UVictoryCore.ClampLocation", result, BaseLocation, DesiredLocation, MaxDiff, bTraceClampLocation, TraceWorld, TraceFromLocation); } + static int BPGetWeightedRandomIndex(TArray* pArray, float ForceRand) { return NativeCall*, float>(nullptr, "UVictoryCore.BPGetWeightedRandomIndex", pArray, ForceRand); } + static bool ComponentBoundsEncompassesPoint(UPrimitiveComponent* Comp, FVector* Point, float BoundsMultiplier) { return NativeCall(nullptr, "UVictoryCore.ComponentBoundsEncompassesPoint", Comp, Point, BoundsMultiplier); } + static bool SphereOverlapFast(UObject* WorldContextObject, FVector* Loc, const float Radius) { return NativeCall(nullptr, "UVictoryCore.SphereOverlapFast", WorldContextObject, Loc, Radius); } + static bool CapsuleOverlapFast(UObject* WorldContextObject, AActor** OutFirstOverlappedActor, FVector* Origin, FRotator* CapsuleRotation, float Radius, float HalfHeight, TEnumAsByte CollisionChannel, bool bTraceComplex, bool bIgnoreSelf, AActor* IgnoreActor, bool bDebugDraw, float DebugDrawDuration, bool bBlockingOnly) { return NativeCall, bool, bool, AActor*, bool, float, bool>(nullptr, "UVictoryCore.CapsuleOverlapFast", WorldContextObject, OutFirstOverlappedActor, Origin, CapsuleRotation, Radius, HalfHeight, CollisionChannel, bTraceComplex, bIgnoreSelf, IgnoreActor, bDebugDraw, DebugDrawDuration, bBlockingOnly); } + static bool CapsuleSweepFast(UObject* WorldContextObject, FHitResult* OutHit, FVector* Start, FVector* End, FRotator* CapsuleRot, float Radius, float HalfHeight, TEnumAsByte CollisionChannel, bool bTraceComplex, bool bIgnoreSelf, TArray* IgnoreActors, bool bDebugDraw, float DebugDrawDuration) { return NativeCall, bool, bool, TArray*, bool, float>(nullptr, "UVictoryCore.CapsuleSweepFast", WorldContextObject, OutHit, Start, End, CapsuleRot, Radius, HalfHeight, CollisionChannel, bTraceComplex, bIgnoreSelf, IgnoreActors, bDebugDraw, DebugDrawDuration); } + static bool CapsuleSweepFast(UObject* WorldContextObject, FHitResult* OutHit, FVector* Start, FVector* End, FRotator* CapsuleRot, float Radius, float HalfHeight, TEnumAsByte CollisionChannel, bool bTraceComplex, bool bIgnoreSelf, AActor* IgnoreActor, bool bDebugDraw, float DebugDrawDuration) { return NativeCall, bool, bool, AActor*, bool, float>(nullptr, "UVictoryCore.CapsuleSweepFast", WorldContextObject, OutHit, Start, End, CapsuleRot, Radius, HalfHeight, CollisionChannel, bTraceComplex, bIgnoreSelf, IgnoreActor, bDebugDraw, DebugDrawDuration); } + static bool CapsuleSweepMulti(UObject* WorldContextObject, TArray* OutHits, FVector* Start, FVector* End, FRotator* CapsuleRot, float Radius, float HalfHeight, TArray* IgnoreActors, bool bIgnoreSelf, TEnumAsByte CollisionChannel, bool bTraceComplex, bool bDebugDraw, float DebugDrawDuration, bool bFindInitialOverlaps) { return NativeCall*, FVector*, FVector*, FRotator*, float, float, TArray*, bool, TEnumAsByte, bool, bool, float, bool>(nullptr, "UVictoryCore.CapsuleSweepMulti", WorldContextObject, OutHits, Start, End, CapsuleRot, Radius, HalfHeight, IgnoreActors, bIgnoreSelf, CollisionChannel, bTraceComplex, bDebugDraw, DebugDrawDuration, bFindInitialOverlaps); } + static void MultiTraceProjectSphere(UObject* WorldContextObject, TArray* OutResults, FVector* Origin, ECollisionChannel TraceChannel, int HorizResolution, int VertResolution, float StartDistance, float EndDistance, float NorthConeSubtractAngle, float SouthConeSubtractAngle, int PctChanceToTrace, int MaxTraceCount, bool bDrawDebugLines, float DebugDrawDuration) { NativeCall*, FVector*, ECollisionChannel, int, int, float, float, float, float, int, int, bool, float>(nullptr, "UVictoryCore.MultiTraceProjectSphere", WorldContextObject, OutResults, Origin, TraceChannel, HorizResolution, VertResolution, StartDistance, EndDistance, NorthConeSubtractAngle, SouthConeSubtractAngle, PctChanceToTrace, MaxTraceCount, bDrawDebugLines, DebugDrawDuration); } + //static float GetProjectileArcPeakTime(UObject* WorldContextObject, FProjectileArc* Arc) { return NativeCall(nullptr, "UVictoryCore.GetProjectileArcPeakTime", WorldContextObject, Arc); } + //static FVector* EvalProjectileArc(FVector* result, UObject* WorldContextObject, FProjectileArc* Arc, float Time) { return NativeCall(nullptr, "UVictoryCore.EvalProjectileArc", result, WorldContextObject, Arc, Time); } + //static void DebugDrawProjectileArc(UObject* WorldContextObject, FProjectileArc* Arc, float MaxArcTime, float ArcTimeStep, FLinearColor LineColor, float LineThickness, float DebugDrawDuration) { NativeCall(nullptr, "UVictoryCore.DebugDrawProjectileArc", WorldContextObject, Arc, MaxArcTime, ArcTimeStep, LineColor, LineThickness, DebugDrawDuration); } + //static bool TraceProjectileArc(UObject* WorldContextObject, FProjectileArc* Arc, FHitResult* OutHitResult, FVector* OutEndLocation, float* OutEndArcTime, FVector* OutArcPeakLocation, float MaxArcLength, TArray* ActorsToIgnore, float ArcTimeStep, ECollisionChannel CollisionChannel, bool bTraceObjectTypeOnly, bool bDrawDebug, float DebugDrawDuration) { return NativeCall*, float, ECollisionChannel, bool, bool, float>(nullptr, "UVictoryCore.TraceProjectileArc", WorldContextObject, Arc, OutHitResult, OutEndLocation, OutEndArcTime, OutArcPeakLocation, MaxArcLength, ActorsToIgnore, ArcTimeStep, CollisionChannel, bTraceObjectTypeOnly, bDrawDebug, DebugDrawDuration); } + //static bool CapsuleSweepProjectileArc(UObject* WorldContextObject, FProjectileArc* Arc, FRotator* CapsuleRotation, float CapsuleRadius, float CapsuleHalfHeight, bool bRotateCapsuleAlongPath, bool bTraceComplex, FHitResult* OutHitResult, FVector* OutEndLocation, float* OutEndArcTime, float MaxArcLength, TArray* ActorsToIgnore, bool bIgnoreSelf, float ArcTimeStep, TEnumAsByte CollisionChannel, bool bDrawDebug, float DebugDrawDuration) { return NativeCall*, bool, float, TEnumAsByte, bool, float>(nullptr, "UVictoryCore.CapsuleSweepProjectileArc", WorldContextObject, Arc, CapsuleRotation, CapsuleRadius, CapsuleHalfHeight, bRotateCapsuleAlongPath, bTraceComplex, OutHitResult, OutEndLocation, OutEndArcTime, MaxArcLength, ActorsToIgnore, bIgnoreSelf, ArcTimeStep, CollisionChannel, bDrawDebug, DebugDrawDuration); } + static void MultiLinePenetrationTraceByChannel(UObject* WorldContextObject, TArray* OutResults, FVector* Start, FVector* End, ECollisionChannel TraceChannel, TArray* ActorsToIgnore, bool bTraceComplex, bool bIgnoreSelf, bool bDrawDebugLines, float DebugDrawDuration) { NativeCall*, FVector*, FVector*, ECollisionChannel, TArray*, bool, bool, bool, float>(nullptr, "UVictoryCore.MultiLinePenetrationTraceByChannel", WorldContextObject, OutResults, Start, End, TraceChannel, ActorsToIgnore, bTraceComplex, bIgnoreSelf, bDrawDebugLines, DebugDrawDuration); } + static bool FindValidLocationNextToTarget(UObject* WorldContextObject, FVector* OutLocation, APrimalCharacter* SourceCharacter, APrimalCharacter* TargetCharacter, float DistanceMargin, int MaxTraceCount, AActor* ActorToIgnore, bool bTraceComplex, bool bDrawDebug, float DebugDrawDuration) { return NativeCall(nullptr, "UVictoryCore.FindValidLocationNextToTarget", WorldContextObject, OutLocation, SourceCharacter, TargetCharacter, DistanceMargin, MaxTraceCount, ActorToIgnore, bTraceComplex, bDrawDebug, DebugDrawDuration); } + static FRotator* BPRotatorLerp(FRotator* result, FRotator* A, FRotator* B, const float* Alpha) { return NativeCall(nullptr, "UVictoryCore.BPRotatorLerp", result, A, B, Alpha); } + //static float SimpleCurveEval(float Value, TEnumAsByte CurveType) { return NativeCall>(nullptr, "UVictoryCore.SimpleCurveEval", Value, CurveType); } + //static FRotator* SimpleCurveInterpClampedRotator(FRotator* result, FRotator A, FRotator B, float Alpha, bool bShortestPath, TEnumAsByte CurveType) { return NativeCall>(nullptr, "UVictoryCore.SimpleCurveInterpClampedRotator", result, A, B, Alpha, bShortestPath, CurveType); } + //static FTransform* SimpleCurveInterpClampedTransform(FTransform* result, FTransform A, FTransform B, float Alpha, TEnumAsByte CurveType) { return NativeCall>(nullptr, "UVictoryCore.SimpleCurveInterpClampedTransform", result, A, B, Alpha, CurveType); } + //static float MapRangeToCurveClamped(float Value, float InRangeA, float InRangeB, float OutRangeA, float OutRangeB, TEnumAsByte CurveType) { return NativeCall>(nullptr, "UVictoryCore.MapRangeToCurveClamped", Value, InRangeA, InRangeB, OutRangeA, OutRangeB, CurveType); } + //static float MapAngleRangeToCurveClamped(float AngleDegrees, float InRangeA, float InRangeB, float OutRangeA, float OutRangeB, TEnumAsByte CurveType) { return NativeCall>(nullptr, "UVictoryCore.MapAngleRangeToCurveClamped", AngleDegrees, InRangeA, InRangeB, OutRangeA, OutRangeB, CurveType); } + static FVector* ViewDirectionAngleOffset(FVector* result, FVector ViewDirection, FVector RightVector, float AngleOffsetDegrees, float MaxAngleDegreesBeforeInterpToUp) { return NativeCall(nullptr, "UVictoryCore.ViewDirectionAngleOffset", result, ViewDirection, RightVector, AngleOffsetDegrees, MaxAngleDegreesBeforeInterpToUp); } + static FVector* FlattenDirectionVector(FVector* result, FVector Direction) { return NativeCall(nullptr, "UVictoryCore.FlattenDirectionVector", result, Direction); } + static FVector* FlattenDirectionVectorInLocalSpace(FVector* result, FVector Direction, FRotator Rotation) { return NativeCall(nullptr, "UVictoryCore.FlattenDirectionVectorInLocalSpace", result, Direction, Rotation); } + static bool BPFastTrace(UWorld* theWorld, FVector TraceEnd, FVector TraceStart, AActor* ActorToIgnore, float DebugDrawDuration) { return NativeCall(nullptr, "UVictoryCore.BPFastTrace", theWorld, TraceEnd, TraceStart, ActorToIgnore, DebugDrawDuration); } + static bool VTraceIgnoreFoliage(UWorld* theWorld, FVector* Start, FVector* End, FHitResult* HitOut, AActor* ActorToIgnore, ECollisionChannel Channel, int CollisionGroups, bool bReturnPhysMaterial, bool bTraceComplex, FVector* BoxExtent, FName TraceTag, AActor* OtherActorToIgnore, TArray* OtherActorsToIgnore, FQuat* Rot, AActor* AnotherActorToIgnore, bool bIgnoreFoliage) { return NativeCall*, FQuat*, AActor*, bool>(nullptr, "UVictoryCore.VTraceIgnoreFoliage", theWorld, Start, End, HitOut, ActorToIgnore, Channel, CollisionGroups, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, OtherActorToIgnore, OtherActorsToIgnore, Rot, AnotherActorToIgnore, bIgnoreFoliage); } + static void SteamOverlayOpenURL(FString* ToURL) { NativeCall(nullptr, "UVictoryCore.SteamOverlayOpenURL", ToURL); } + static void SetSessionPrefix(FString* InPrefix) { NativeCall(nullptr, "UVictoryCore.SetSessionPrefix", InPrefix); } + static FColor* GetTeamColor(FColor* result, const int TargetingTeam) { return NativeCall(nullptr, "UVictoryCore.GetTeamColor", result, TargetingTeam); } + static FString* BPFormatAsTime(FString* result, int InTime, bool UseLeadingZero, bool bForceLeadingZeroHour, bool bShowSeconds) { return NativeCall(nullptr, "UVictoryCore.BPFormatAsTime", result, InTime, UseLeadingZero, bForceLeadingZeroHour, bShowSeconds); } + static FString* FormatAsTime(FString* result, int InTime, bool UseLeadingZero, bool bForceLeadingZeroHour, bool bShowSeconds) { return NativeCall(nullptr, "UVictoryCore.FormatAsTime", result, InTime, UseLeadingZero, bForceLeadingZeroHour, bShowSeconds); } + static FString* BPFormatAsTimeLong(FString* result, int InTime) { return NativeCall(nullptr, "UVictoryCore.BPFormatAsTimeLong", result, InTime); } + static FString* FormatAsTimeLong(FString* result, int InTime) { return NativeCall(nullptr, "UVictoryCore.FormatAsTimeLong", result, InTime); } + static bool CalculateInterceptPosition(FVector* StartPosition, FVector* StartVelocity, float ProjectileVelocity, FVector* TargetPosition, FVector* TargetVelocity, FVector* InterceptPosition) { return NativeCall(nullptr, "UVictoryCore.CalculateInterceptPosition", StartPosition, StartVelocity, ProjectileVelocity, TargetPosition, TargetVelocity, InterceptPosition); } static int GetSecondsIntoDay() { return NativeCall(nullptr, "UVictoryCore.GetSecondsIntoDay"); } + static FString* ConsumeBonusItemCode(FString* result) { return NativeCall(nullptr, "UVictoryCore.ConsumeBonusItemCode", result); } static bool StaticCheckForCommand(FString CommandName) { return NativeCall(nullptr, "UVictoryCore.StaticCheckForCommand", CommandName); } - static bool GetGroundLocation(UWorld * forWorld, FVector * theGroundLoc, FVector * StartLoc, FVector * OffsetUp, FVector * OffsetDown) { return NativeCall(nullptr, "UVictoryCore.GetGroundLocation", forWorld, theGroundLoc, StartLoc, OffsetUp, OffsetDown); } - static void CallGlobalLevelEvent(UWorld * forWorld, FName EventName) { NativeCall(nullptr, "UVictoryCore.CallGlobalLevelEvent", forWorld, EventName); } - static FVector2D * BPProjectWorldToScreenPosition(FVector2D * result, FVector * WorldLocation, APlayerController * ThePC) { return NativeCall(nullptr, "UVictoryCore.BPProjectWorldToScreenPosition", result, WorldLocation, ThePC); } - static TArray * ServerOctreeOverlapActors(TArray * result, UWorld * theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, bool bForceActorLocationDistanceCheck) { return NativeCall *, TArray *, UWorld *, FVector, float, EServerOctreeGroup::Type, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActors", result, theWorld, AtLoc, Radius, OctreeType, bForceActorLocationDistanceCheck); } - static TArray * ServerOctreeOverlapActorsBitMask(TArray * result, UWorld * theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, bool bForceActorLocationDistanceCheck) { return NativeCall *, TArray *, UWorld *, FVector, float, int, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, bForceActorLocationDistanceCheck); } - static TArray * ServerOctreeOverlapActorsClass(TArray * result, UWorld * theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall *, TArray *, UWorld *, FVector, float, EServerOctreeGroup::Type, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClass", result, theWorld, AtLoc, Radius, OctreeType, ActorClass, bForceActorLocationDistanceCheck); } - static TArray * ServerOctreeOverlapActorsClassBitMask(TArray * result, UWorld * theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall *, TArray *, UWorld *, FVector, float, int, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClassBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, ActorClass, bForceActorLocationDistanceCheck); } - static FRotator * BPRTransform(FRotator * result, FRotator * R, FRotator * RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransform", result, R, RBasis); } - static FRotator * BPRTransformInverse(FRotator * result, FRotator * R, FRotator * RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransformInverse", result, R, RBasis); } - static bool FindWorldActors(UWorld * fWorld, TArray * fContainer, TSubclassOf fType, FName fTag) { return NativeCall *, TSubclassOf, FName>(nullptr, "UVictoryCore.FindWorldActors", fWorld, fContainer, fType, fTag); } - static TArray> * RemoveInvalidObjectsInContainer(TArray> * result, TArray> fContainer) { return NativeCall> *, TArray> *, TArray>>(nullptr, "UVictoryCore.RemoveInvalidObjectsInContainer", result, fContainer); } - static void FinishSpawning(AActor * Actor) { NativeCall(nullptr, "UVictoryCore.FinishSpawning", Actor); } + static bool GetGroundLocation(UWorld* forWorld, FVector* theGroundLoc, FVector* StartLoc, FVector* OffsetUp, FVector* OffsetDown) { return NativeCall(nullptr, "UVictoryCore.GetGroundLocation", forWorld, theGroundLoc, StartLoc, OffsetUp, OffsetDown); } + static void CallGlobalLevelEvent(UWorld* forWorld, FName EventName) { NativeCall(nullptr, "UVictoryCore.CallGlobalLevelEvent", forWorld, EventName); } + static FVector2D* BPProjectWorldToScreenPosition(FVector2D* result, FVector* WorldLocation, APlayerController* ThePC) { return NativeCall(nullptr, "UVictoryCore.BPProjectWorldToScreenPosition", result, WorldLocation, ThePC); } + static TArray* ServerOctreeOverlapActors(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, EServerOctreeGroup::Type, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActors", result, theWorld, AtLoc, Radius, OctreeType, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsBitMask(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, int, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsClass(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, EServerOctreeGroup::Type, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClass", result, theWorld, AtLoc, Radius, OctreeType, ActorClass, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsClassBitMask(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, int, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClassBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, ActorClass, bForceActorLocationDistanceCheck); } + static FRotator* BPRTransform(FRotator* result, FRotator* R, FRotator* RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransform", result, R, RBasis); } + static FRotator* BPRTransformInverse(FRotator* result, FRotator* R, FRotator* RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransformInverse", result, R, RBasis); } + static TArray* SortActorsByTag(TArray* result, int tagIndex, TArray* actors) { return NativeCall*, TArray*, int, TArray*>(nullptr, "UVictoryCore.SortActorsByTag", result, tagIndex, actors); } + static TArray* GetArrayIndicesSorted_Float(TArray* result, TArray* Array, bool bSortLowToHigh) { return NativeCall*, TArray*, TArray*, bool>(nullptr, "UVictoryCore.GetArrayIndicesSorted_Float", result, Array, bSortLowToHigh); } + static TArray* GetArrayIndicesSorted_Double(TArray* result, TArray* Array, bool bSortLowToHigh) { return NativeCall*, TArray*, TArray*, bool>(nullptr, "UVictoryCore.GetArrayIndicesSorted_Double", result, Array, bSortLowToHigh); } + static TArray* GetArrayIndicesSorted_Int(TArray* result, TArray* Array, bool bSortLowToHigh) { return NativeCall*, TArray*, TArray*, bool>(nullptr, "UVictoryCore.GetArrayIndicesSorted_Int", result, Array, bSortLowToHigh); } + static bool FindWorldActors(UWorld* fWorld, TArray* fContainer, TSubclassOf fType, FName fTag) { return NativeCall*, TSubclassOf, FName>(nullptr, "UVictoryCore.FindWorldActors", fWorld, fContainer, fType, fTag); } + static TArray>* RemoveInvalidObjectsInContainer(TArray>* result, TArray> fContainer) { return NativeCall>*, TArray>*, TArray>>(nullptr, "UVictoryCore.RemoveInvalidObjectsInContainer", result, fContainer); } + static void FinishSpawning(AActor* Actor) { NativeCall(nullptr, "UVictoryCore.FinishSpawning", Actor); } + static bool KillTargetCharacterOrStructure(AActor* ActorToKill, bool bTryDestroyActor) { return NativeCall(nullptr, "UVictoryCore.KillTargetCharacterOrStructure", ActorToKill, bTryDestroyActor); } static int GetWeightedRandomIndexFromArray(TArray pArray, float ForceRand) { return NativeCall, float>(nullptr, "UVictoryCore.GetWeightedRandomIndexFromArray", pArray, ForceRand); } - static AActor * GetClosestActorArray(FVector ToPoint, TArray * ActorArray) { return NativeCall *>(nullptr, "UVictoryCore.GetClosestActorArray", ToPoint, ActorArray); } - static bool VTraceSingleBP(UWorld * theWorld, FHitResult * OutHit, FVector * Start, FVector * End, ECollisionChannel TraceChannel, int CollisionGroups, FName TraceTag, bool bTraceComplex, AActor * ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.VTraceSingleBP", theWorld, OutHit, Start, End, TraceChannel, CollisionGroups, TraceTag, bTraceComplex, ActorToIgnore); } - static bool VTraceMulti(UWorld * theWorld, TArray * OutHits, FVector * Start, FVector * End, AActor * InIgnoreActor, int CollisionGroups, float SphereRadius, FVector * BoxExtent, bool bReturnPhysMaterial, ECollisionChannel TraceChannel, bool bTraceComplex, FName TraceTag, bool bTraceChannelForceOverlap, bool bDoSort, AActor * AdditionalIgnoreActor, AActor * AnotherIgnoreActor, bool bJustDoSphereOverlapAtStartLoc, TArray * ExtraIgnoreActors) { return NativeCall *, FVector *, FVector *, AActor *, int, float, FVector *, bool, ECollisionChannel, bool, FName, bool, bool, AActor *, AActor *, bool, TArray *>(nullptr, "UVictoryCore.VTraceMulti", theWorld, OutHits, Start, End, InIgnoreActor, CollisionGroups, SphereRadius, BoxExtent, bReturnPhysMaterial, TraceChannel, bTraceComplex, TraceTag, bTraceChannelForceOverlap, bDoSort, AdditionalIgnoreActor, AnotherIgnoreActor, bJustDoSphereOverlapAtStartLoc, ExtraIgnoreActors); } + static AActor* GetClosestActorArray(FVector ToPoint, TArray* ActorArray) { return NativeCall*>(nullptr, "UVictoryCore.GetClosestActorArray", ToPoint, ActorArray); } + static ACustomActorList* GetCustomActorList(UWorld* ForWorld, FName SearchCustomTag) { return NativeCall(nullptr, "UVictoryCore.GetCustomActorList", ForWorld, SearchCustomTag); } + static long double GetNetworkTimeInSeconds(UObject* WorldContextObject) { return NativeCall(nullptr, "UVictoryCore.GetNetworkTimeInSeconds", WorldContextObject); } + static long double GetRealWorldUtcTimeInSeconds() { return NativeCall(nullptr, "UVictoryCore.GetRealWorldUtcTimeInSeconds"); } + static AShooterCharacter* GetShooterCharacterFromPawn(APawn* Pawn) { return NativeCall(nullptr, "UVictoryCore.GetShooterCharacterFromPawn", Pawn); } + static bool VTraceSingleBP(UWorld* theWorld, FHitResult* OutHit, FVector* Start, FVector* End, ECollisionChannel TraceChannel, int CollisionGroups, FName TraceTag, bool bTraceComplex, AActor* ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.VTraceSingleBP", theWorld, OutHit, Start, End, TraceChannel, CollisionGroups, TraceTag, bTraceComplex, ActorToIgnore); } + static bool VTraceSingleBP_IgnoreActorsArray(UWorld* theWorld, FHitResult* OutHit, FVector* Start, FVector* End, TArray* ExtraIgnoreActors, AActor* InIgnoreActor, ECollisionChannel TraceChannel, int CollisionGroups, FName TraceTag, bool bReturnPhysMaterial, bool bTraceComplex, float DebugDrawDuration) { return NativeCall*, AActor*, ECollisionChannel, int, FName, bool, bool, float>(nullptr, "UVictoryCore.VTraceSingleBP_IgnoreActorsArray", theWorld, OutHit, Start, End, ExtraIgnoreActors, InIgnoreActor, TraceChannel, CollisionGroups, TraceTag, bReturnPhysMaterial, bTraceComplex, DebugDrawDuration); } + static bool VTraceSphereBP(UWorld* theWorld, FVector* Start, FVector* End, FHitResult* HitOut, float Radius, AActor* ActorToIgnore, ECollisionChannel Channel, int CollisionGroups, bool bReturnPhysMaterial, bool bTraceComplex, FName TraceTag, AActor* OtherActorToIgnore, AActor* AnotherActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.VTraceSphereBP", theWorld, Start, End, HitOut, Radius, ActorToIgnore, Channel, CollisionGroups, bReturnPhysMaterial, bTraceComplex, TraceTag, OtherActorToIgnore, AnotherActorToIgnore); } + static bool VTraceMulti(UWorld* theWorld, TArray* OutHits, FVector* Start, FVector* End, AActor* InIgnoreActor, int CollisionGroups, float SphereRadius, FVector* BoxExtent, bool bReturnPhysMaterial, ECollisionChannel TraceChannel, bool bTraceComplex, FName TraceTag, bool bTraceChannelForceOverlap, bool bDoSort, AActor* AdditionalIgnoreActor, AActor* AnotherIgnoreActor, bool bJustDoSphereOverlapAtStartLoc, TArray* ExtraIgnoreActors) { return NativeCall*, FVector*, FVector*, AActor*, int, float, FVector*, bool, ECollisionChannel, bool, FName, bool, bool, AActor*, AActor*, bool, TArray*>(nullptr, "UVictoryCore.VTraceMulti", theWorld, OutHits, Start, End, InIgnoreActor, CollisionGroups, SphereRadius, BoxExtent, bReturnPhysMaterial, TraceChannel, bTraceComplex, TraceTag, bTraceChannelForceOverlap, bDoSort, AdditionalIgnoreActor, AnotherIgnoreActor, bJustDoSphereOverlapAtStartLoc, ExtraIgnoreActors); } + static FString* GetKeyName(FString* result, FKey key) { return NativeCall(nullptr, "UVictoryCore.GetKeyName", result, key); } static bool IsGamePadConnected() { return NativeCall(nullptr, "UVictoryCore.IsGamePadConnected"); } - static int IsChildOfClasses(TSubclassOf childClass, TArray> * ParentClassesArray) { return NativeCall, TArray> *>(nullptr, "UVictoryCore.IsChildOfClasses", childClass, ParentClassesArray); } - static FString * GetLastMapPlayed(FString * result) { return NativeCall(nullptr, "UVictoryCore.GetLastMapPlayed", result); } - static void SetLastMapPlayed(FString * NewLastMapPlayed) { NativeCall(nullptr, "UVictoryCore.SetLastMapPlayed", NewLastMapPlayed); } - static void SetLastHostedMapPlayed(FString * NewLastHostedMapPlayed) { NativeCall(nullptr, "UVictoryCore.SetLastHostedMapPlayed", NewLastHostedMapPlayed); } + static int IsChildOfClasses(TSubclassOf childClass, TArray>* ParentClassesArray) { return NativeCall, TArray>*>(nullptr, "UVictoryCore.IsChildOfClasses", childClass, ParentClassesArray); } + static bool IsPVEServer(UObject* WorldContextObject) { return NativeCall(nullptr, "UVictoryCore.IsPVEServer", WorldContextObject); } + static bool IsCooldownComplete(UObject* WorldContextObject, long double CooldownClock, float NumSeconds) { return NativeCall(nullptr, "UVictoryCore.IsCooldownComplete", WorldContextObject, CooldownClock, NumSeconds); } + static float CooldownTimeRemaining(UObject* WorldContextObject, long double CooldownClock, float CooldownDuration) { return NativeCall(nullptr, "UVictoryCore.CooldownTimeRemaining", WorldContextObject, CooldownClock, CooldownDuration); } + static void PauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UVictoryCore.PauseTimer", Object, FunctionName); } + static void UnPauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UVictoryCore.UnPauseTimer", Object, FunctionName); } + static bool IsTimerActive(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UVictoryCore.IsTimerActive", Object, FunctionName); } + static bool IsTimerPaused(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UVictoryCore.IsTimerPaused", Object, FunctionName); } + static FString* GetLastMapPlayed(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetLastMapPlayed", result); } + static FString* GetLastHostedMapPlayed(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetLastHostedMapPlayed", result); } + static void SetLastHostedMapPlayed(FString* NewLastHostedMapPlayed) { NativeCall(nullptr, "UVictoryCore.SetLastHostedMapPlayed", NewLastHostedMapPlayed); } static bool OwnsScorchedEarth() { return NativeCall(nullptr, "UVictoryCore.OwnsScorchedEarth"); } + static bool OwnsAberration() { return NativeCall(nullptr, "UVictoryCore.OwnsAberration"); } + static bool OwnsExtinction() { return NativeCall(nullptr, "UVictoryCore.OwnsExtinction"); } + static bool OwnsGenesisSeasonPass() { return NativeCall(nullptr, "UVictoryCore.OwnsGenesisSeasonPass"); } static bool OwnsDLC(FString DLCName) { return NativeCall(nullptr, "UVictoryCore.OwnsDLC", DLCName); } static bool OwnsSteamAppID(int AppID) { return NativeCall(nullptr, "UVictoryCore.OwnsSteamAppID", AppID); } static void OpenStorePageForDLC(FString DLCName) { NativeCall(nullptr, "UVictoryCore.OpenStorePageForDLC", DLCName); } - static FVector * LeadTargetPosition(FVector * result, FVector * ProjLocation, float ProjSpeed, FVector * TargetLocation, FVector * TargetVelocity) { return NativeCall(nullptr, "UVictoryCore.LeadTargetPosition", result, ProjLocation, ProjSpeed, TargetLocation, TargetVelocity); } - static void AddToActorList(UWorld * ForWorld, int ActorListNum, AActor * ActorRef) { NativeCall(nullptr, "UVictoryCore.AddToActorList", ForWorld, ActorListNum, ActorRef); } - static bool IsWorkshopIDSubscribed(FString * WorkshopID) { return NativeCall(nullptr, "UVictoryCore.IsWorkshopIDSubscribed", WorkshopID); } - static FTransform * InverseTransform(FTransform * result, FTransform * TransformIn) { return NativeCall(nullptr, "UVictoryCore.InverseTransform", result, TransformIn); } - static UClass * BPLoadClass(FString * PathName) { return NativeCall(nullptr, "UVictoryCore.BPLoadClass", PathName); } - static bool VTraceAgainstActorExpensive(UWorld * theWorld, FVector * Start, FVector * End, FHitResult * HitOut, AActor * ActorToTraceAgainst, ECollisionChannel Channel, int CollisionGroups, float SphereRadius, bool bReturnPhysMaterial, bool bTraceComplex, FVector * BoxExtent, FName TraceTag, bool bSort) { return NativeCall(nullptr, "UVictoryCore.VTraceAgainstActorExpensive", theWorld, Start, End, HitOut, ActorToTraceAgainst, Channel, CollisionGroups, SphereRadius, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, bSort); } - static FString * GetClassString(FString * result, UClass * Class) { return NativeCall(nullptr, "UVictoryCore.GetClassString", result, Class); } - static FString * GetClassPathName(FString * result, UObject * ForObject) { return NativeCall(nullptr, "UVictoryCore.GetClassPathName", result, ForObject); } - static FString * GetTotalCoversionIdAsString(FString * result) { return NativeCall(nullptr, "UVictoryCore.GetTotalCoversionIdAsString", result); } - static AActor * SpawnActorInWorld(UWorld * ForWorld, TSubclassOf AnActorClass, FVector AtLocation, FRotator AtRotation, USceneComponent * attachToComponent, int dataIndex, FName attachSocketName, AActor * OwnerActor, APawn * InstigatorPawn) { return NativeCall, FVector, FRotator, USceneComponent *, int, FName, AActor *, APawn *>(nullptr, "UVictoryCore.SpawnActorInWorld", ForWorld, AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName, OwnerActor, InstigatorPawn); } - static bool GetOverlappedHarvestActors(UWorld * ForWorld, FVector * AtLoc, float AtRadius, TArray * OutHarvestActors, TArray * OutHarvestComponents, TArray * OutHarvestLocations, TArray * OutHitBodyIndices) { return NativeCall *, TArray *, TArray *, TArray *>(nullptr, "UVictoryCore.GetOverlappedHarvestActors", ForWorld, AtLoc, AtRadius, OutHarvestActors, OutHarvestComponents, OutHarvestLocations, OutHitBodyIndices); } - static FName * GetHitBoneNameFromDamageEvent(FName * result, APrimalCharacter * Character, AController * HitInstigator, FDamageEvent * DamageEvent, bool bIsPointDamage, FHitResult * PointHitResult, FName MatchCollisionPresetName) { return NativeCall(nullptr, "UVictoryCore.GetHitBoneNameFromDamageEvent", result, Character, HitInstigator, DamageEvent, bIsPointDamage, PointHitResult, MatchCollisionPresetName); } - static FHitResult * MakeHitResult(FHitResult * result, FVector * Location, FVector * Normal, UPhysicalMaterial * PhysMat, AActor * HitActor, UPrimitiveComponent * HitComponent, FName HitBoneName, int HitItem, bool bBlockingHit) { return NativeCall(nullptr, "UVictoryCore.MakeHitResult", result, Location, Normal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem, bBlockingHit); } - static float GetAngleBetweenVectors(FVector * VectorA, FVector * VectorB, FVector * AroundAxis) { return NativeCall(nullptr, "UVictoryCore.GetAngleBetweenVectors", VectorA, VectorB, AroundAxis); } - static bool AreRotatorsNearlyEqual(FRotator * RotatorA, FRotator * RotatorB, float WithinError) { return NativeCall(nullptr, "UVictoryCore.AreRotatorsNearlyEqual", RotatorA, RotatorB, WithinError); } - static void SetBoolArrayElemTrue(TArray * TheArray, int TheIndex) { NativeCall *, int>(nullptr, "UVictoryCore.SetBoolArrayElemTrue", TheArray, TheIndex); } - static void SetBoolArrayElemFalse(TArray * TheArray, int TheIndex) { NativeCall *, int>(nullptr, "UVictoryCore.SetBoolArrayElemFalse", TheArray, TheIndex); } + static FVector* LeadTargetPosition(FVector* result, FVector* ProjLocation, float ProjSpeed, FVector* TargetLocation, FVector* TargetVelocity) { return NativeCall(nullptr, "UVictoryCore.LeadTargetPosition", result, ProjLocation, ProjSpeed, TargetLocation, TargetVelocity); } + static TArray* SortActorsByDistance(TArray* result, FVector* fromLoc, TArray* actors) { return NativeCall*, TArray*, FVector*, TArray*>(nullptr, "UVictoryCore.SortActorsByDistance", result, fromLoc, actors); } + static void AddToActorList(UWorld* ForWorld, int ActorListNum, AActor* ActorRef) { NativeCall(nullptr, "UVictoryCore.AddToActorList", ForWorld, ActorListNum, ActorRef); } + static FLinearColor* ChangeSaturation(FLinearColor* result, FLinearColor* InColor, float NewSaturation) { return NativeCall(nullptr, "UVictoryCore.ChangeSaturation", result, InColor, NewSaturation); } + static FString* SimpleFloatString(FString* result, float inputVal) { return NativeCall(nullptr, "UVictoryCore.SimpleFloatString", result, inputVal); } + static bool IsWorkshopIDSubscribed(FString* WorkshopID) { return NativeCall(nullptr, "UVictoryCore.IsWorkshopIDSubscribed", WorkshopID); } + static FTransform* InverseTransform(FTransform* result, FTransform* TransformIn) { return NativeCall(nullptr, "UVictoryCore.InverseTransform", result, TransformIn); } + static UClass* BPLoadClass(FString* PathName) { return NativeCall(nullptr, "UVictoryCore.BPLoadClass", PathName); } + static UObject* BPLoadObject(FString* PathName) { return NativeCall(nullptr, "UVictoryCore.BPLoadObject", PathName); } + static bool VTraceAgainstActorExpensive(UWorld* theWorld, FVector* Start, FVector* End, FHitResult* HitOut, AActor* ActorToTraceAgainst, ECollisionChannel Channel, int CollisionGroups, float SphereRadius, bool bReturnPhysMaterial, bool bTraceComplex, FVector* BoxExtent, FName TraceTag, bool bSort) { return NativeCall(nullptr, "UVictoryCore.VTraceAgainstActorExpensive", theWorld, Start, End, HitOut, ActorToTraceAgainst, Channel, CollisionGroups, SphereRadius, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, bSort); } + static FString* GetClassString(FString* result, UObject* ForObject) { return NativeCall(nullptr, "UVictoryCore.GetClassString", result, ForObject); } + static FString* GetClassPathName(FString* result, UObject* ForObject) { return NativeCall(nullptr, "UVictoryCore.GetClassPathName", result, ForObject); } + static FString* GetNewlineCharacter(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetNewlineCharacter", result); } + static FString* IntToStringAscii(FString* result, int CharValue) { return NativeCall(nullptr, "UVictoryCore.IntToStringAscii", result, CharValue); } + static int StringToIntAscii(FString SourceString, int Index) { return NativeCall(nullptr, "UVictoryCore.StringToIntAscii", SourceString, Index); } + static FString* JoinStringArrayWithNewlines(FString* result, TArray* SourceArray) { return NativeCall*>(nullptr, "UVictoryCore.JoinStringArrayWithNewlines", result, SourceArray); } + static FString* GetTwoLetterISOLanguageName(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetTwoLetterISOLanguageName", result); } + static FString* GetTotalCoversionIdAsString(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetTotalCoversionIdAsString", result); } + static AActor* SpawnActorInWorld(UWorld* ForWorld, TSubclassOf AnActorClass, FVector AtLocation, FRotator AtRotation, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName, AActor* OwnerActor, APawn* InstigatorPawn) { return NativeCall, FVector, FRotator, USceneComponent*, int, FName, AActor*, APawn*>(nullptr, "UVictoryCore.SpawnActorInWorld", ForWorld, AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName, OwnerActor, InstigatorPawn); } + //static UClass* GetItemClassFromItemSetup(FItemSetup* ItemSetup) { return NativeCall(nullptr, "UVictoryCore.GetItemClassFromItemSetup", ItemSetup); } + static bool GetCharacterCapsuleSize(TSubclassOf CharClass, float* OutCapsuleRadius, float* OutCapsuleHalfHeight) { return NativeCall, float*, float*>(nullptr, "UVictoryCore.GetCharacterCapsuleSize", CharClass, OutCapsuleRadius, OutCapsuleHalfHeight); } + //static UClass* GetDinoStaticClass(FDinoSetup* DinoSetup) { return NativeCall(nullptr, "UVictoryCore.GetDinoStaticClass", DinoSetup); } + //static FVector* GetCustomDinoSpawnLocation(FVector* result, UWorld* World, FVector* SpawnLocation, FRotator* SpawnRotation, FDinoSetup* DinoSetup, float DebugDrawDuration, bool bApplyRotationToSpawnOffset) { return NativeCall(nullptr, "UVictoryCore.GetCustomDinoSpawnLocation", result, World, SpawnLocation, SpawnRotation, DinoSetup, DebugDrawDuration, bApplyRotationToSpawnOffset); } + //static APrimalDinoCharacter* SpawnCustomDino(UWorld* World, FVector* SpawnLocation, FRotator* SpawnRotation, FDinoSetup* DinoSetup, AShooterPlayerController* OwnerPlayerController, float DebugDrawDuration, bool bApplyRotationToSpawnOffset) { return NativeCall(nullptr, "UVictoryCore.SpawnCustomDino", World, SpawnLocation, SpawnRotation, DinoSetup, OwnerPlayerController, DebugDrawDuration, bApplyRotationToSpawnOffset); } + //static bool CanSpawnCustomDino(UWorld* World, FVector* OutCalculatedSpawnLocation, FVector* PlayerLocation, FVector* SpawnLocation, FRotator* SpawnRotation, FDinoSetup* DinoSetup, float DebugDrawDuration) { return NativeCall(nullptr, "UVictoryCore.CanSpawnCustomDino", World, OutCalculatedSpawnLocation, PlayerLocation, SpawnLocation, SpawnRotation, DinoSetup, DebugDrawDuration); } + static void GetObjectsReferencedBy(UObject* ForObject, TArray* OutReferencedObjects, bool bIgnoreTransient) { NativeCall*, bool>(nullptr, "UVictoryCore.GetObjectsReferencedBy", ForObject, OutReferencedObjects, bIgnoreTransient); } + static bool GetOverlappedHarvestActors(UWorld* ForWorld, FVector* AtLoc, float AtRadius, TArray* OutHarvestActors, TArray* OutHarvestComponents, TArray* OutHarvestLocations, TArray* OutHitBodyIndices) { return NativeCall*, TArray*, TArray*, TArray*>(nullptr, "UVictoryCore.GetOverlappedHarvestActors", ForWorld, AtLoc, AtRadius, OutHarvestActors, OutHarvestComponents, OutHarvestLocations, OutHitBodyIndices); } + static FName* GetHitBoneNameFromDamageEvent(FName* result, APrimalCharacter* Character, AController* HitInstigator, FDamageEvent* DamageEvent, bool bIsPointDamage, FHitResult* PointHitResult, FName MatchCollisionPresetName) { return NativeCall(nullptr, "UVictoryCore.GetHitBoneNameFromDamageEvent", result, Character, HitInstigator, DamageEvent, bIsPointDamage, PointHitResult, MatchCollisionPresetName); } + static float GetAngleBetweenVectors(FVector* VectorA, FVector* VectorB, FVector* AroundAxis) { return NativeCall(nullptr, "UVictoryCore.GetAngleBetweenVectors", VectorA, VectorB, AroundAxis); } + static float GetAngleBetweenVectorsPure(FVector VectorA, FVector VectorB, FVector AroundAxis) { return NativeCall(nullptr, "UVictoryCore.GetAngleBetweenVectorsPure", VectorA, VectorB, AroundAxis); } + static bool AreRotatorsNearlyEqual(FRotator* RotatorA, FRotator* RotatorB, float WithinError) { return NativeCall(nullptr, "UVictoryCore.AreRotatorsNearlyEqual", RotatorA, RotatorB, WithinError); } + static void SetBoolArrayElemTrue(TArray* TheArray, int TheIndex) { NativeCall*, int>(nullptr, "UVictoryCore.SetBoolArrayElemTrue", TheArray, TheIndex); } + static void SetBoolArrayElemFalse(TArray* TheArray, int TheIndex) { NativeCall*, int>(nullptr, "UVictoryCore.SetBoolArrayElemFalse", TheArray, TheIndex); } + static void MulticastDrawDebugLine(AActor* ReplicatedActor, FVector LineStart, FVector LineEnd, FLinearColor LineColor, float Duration, float Thickness) { NativeCall(nullptr, "UVictoryCore.MulticastDrawDebugLine", ReplicatedActor, LineStart, LineEnd, LineColor, Duration, Thickness); } + static void MulticastDrawDebugSphere(AActor* ReplicatedActor, FVector Center, float Radius, int Segments, FLinearColor LineColor, float Duration) { NativeCall(nullptr, "UVictoryCore.MulticastDrawDebugSphere", ReplicatedActor, Center, Radius, Segments, LineColor, Duration); } + static AShooterCharacter* GetPlayerCharacterByController(APlayerController* PC) { return NativeCall(nullptr, "UVictoryCore.GetPlayerCharacterByController", PC); } + static APrimalDinoCharacter* GetDinoCharacterByID(UObject* WorldContextObject, const int DinoID1, const int DinoID2, const bool bSearchTamedOnly) { return NativeCall(nullptr, "UVictoryCore.GetDinoCharacterByID", WorldContextObject, DinoID1, DinoID2, bSearchTamedOnly); } + static void GetAllClassesOfType(TArray>* Subclasses, TSubclassOf ParentClass, bool bAllowAbstract, FString Path) { NativeCall>*, TSubclassOf, bool, FString>(nullptr, "UVictoryCore.GetAllClassesOfType", Subclasses, ParentClass, bAllowAbstract, Path); } + static FVector2D* InverseTransformVectorByScreenProjectionGlobalTransform(FVector2D* result, FVector2D vec) { return NativeCall(nullptr, "UVictoryCore.InverseTransformVectorByScreenProjectionGlobalTransform", result, vec); } + static float GetScreenPercentage() { return NativeCall(nullptr, "UVictoryCore.GetScreenPercentage"); } + static bool ProjectWorldLocationToScreenOrScreenEdgePosition(APlayerController* playerController, FVector WorldLocation, FVector2D* ScreenPosition, const float screenMarginPercent, bool widgetSpace, bool* OnScreen) { return NativeCall(nullptr, "UVictoryCore.ProjectWorldLocationToScreenOrScreenEdgePosition", playerController, WorldLocation, ScreenPosition, screenMarginPercent, widgetSpace, OnScreen); } + //static bool GetLocaleSpecificAudio(TArray* LocalizedSoundCues, FLocalizedSoundCueEntry* OutLocalizedAudio, FString* LanguageOverride) { return NativeCall*, FLocalizedSoundCueEntry*, FString*>(nullptr, "UVictoryCore.GetLocaleSpecificAudio", LocalizedSoundCues, OutLocalizedAudio, LanguageOverride); } + static TArray* GetAllLocalPlayerControllers(TArray* result, UObject* WorldContextObject) { return NativeCall*, TArray*, UObject*>(nullptr, "UVictoryCore.GetAllLocalPlayerControllers", result, WorldContextObject); } + static bool IsPointStuckWithinMesh(UWorld* theWorld, FVector TestPoint, int hemisphereSubdivisions, float rayDistance, float percentageConsideredStuck, AActor* ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.IsPointStuckWithinMesh", theWorld, TestPoint, hemisphereSubdivisions, rayDistance, percentageConsideredStuck, ActorToIgnore); } + static bool ServerCheckMeshingOnActor(AActor* OnActor, bool bForceUseActorCenterBounds) { return NativeCall(nullptr, "UVictoryCore.ServerCheckMeshingOnActor", OnActor, bForceUseActorCenterBounds); } + static TArray* GetAllLocalPlayerCharacters(TArray* result, UObject* WorldContextObject) { return NativeCall*, TArray*, UObject*>(nullptr, "UVictoryCore.GetAllLocalPlayerCharacters", result, WorldContextObject); } + static bool IsDinoDuped(UWorld* WorldContext, const unsigned int id1, const unsigned int id2) { return NativeCall(nullptr, "UVictoryCore.IsDinoDuped", WorldContext, id1, id2); } + static bool IsUnderMesh(APrimalCharacter* Character, FVector* CheckSevenHitLocation, bool* bOverlapping, UActorComponent** CheckSevenResult, bool DebugDraw, float DebugDrawSeconds) { return NativeCall(nullptr, "UVictoryCore.IsUnderMesh", Character, CheckSevenHitLocation, bOverlapping, CheckSevenResult, DebugDraw, DebugDrawSeconds); } + static FString* BPGetPrimaryMapName(FString* result, UWorld* WorldContext) { return NativeCall(nullptr, "UVictoryCore.BPGetPrimaryMapName", result, WorldContext); } + static bool OverlappingStationaryObjectsTrace(UWorld* theWorld, APrimalCharacter* SourceCharacter, TArray* Overlaps, FVector Origin, float Radius, ECollisionChannel TraceChannel, AActor* InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall*, FVector, float, ECollisionChannel, AActor*, FName, bool>(nullptr, "UVictoryCore.OverlappingStationaryObjectsTrace", theWorld, SourceCharacter, Overlaps, Origin, Radius, TraceChannel, InIgnoreActor, TraceName, bComplexOverlapTest); } + static void StaticRegisterNativesUVictoryCore() { NativeCall(nullptr, "UVictoryCore.StaticRegisterNativesUVictoryCore"); } + static FString* ClassToStringReference(FString* result, TSubclassOf obj) { return NativeCall>(nullptr, "UVictoryCore.ClassToStringReference", result, obj); } + static TSubclassOf* StringReferenceToClass(TSubclassOf* result, FString* StringReference) { return NativeCall*, TSubclassOf*, FString*>(nullptr, "UVictoryCore.StringReferenceToClass", result, StringReference); } + static void ServerSearchFoliage(UObject* WorldContextObject, FVector* Origin, float Radius, TArray* OutFoliage, bool bVisibleAndActiveOnly, bool bIncludeUsableFoliage, bool bIncludeMeshFoliage, bool bSortByDistance, bool bReverseSort) { NativeCall*, bool, bool, bool, bool, bool>(nullptr, "UVictoryCore.ServerSearchFoliage", WorldContextObject, Origin, Radius, OutFoliage, bVisibleAndActiveOnly, bIncludeUsableFoliage, bIncludeMeshFoliage, bSortByDistance, bReverseSort); } +}; + +struct UDamageType +{ + float& ImpulseMinimumZPercentField() { return *GetNativePointerField(this, "UDamageType.ImpulseMinimumZPercent"); } + float& DestructibleImpulseScaleField() { return *GetNativePointerField(this, "UDamageType.DestructibleImpulseScale"); } + float& ImpulseRagdollScaleField() { return *GetNativePointerField(this, "UDamageType.ImpulseRagdollScale"); } + float& DefaultImpulseField() { return *GetNativePointerField(this, "UDamageType.DefaultImpulse"); } + float& PointDamageArmorEffectivenessField() { return *GetNativePointerField(this, "UDamageType.PointDamageArmorEffectiveness"); } + float& GeneralDamageArmorEffectivenessField() { return *GetNativePointerField(this, "UDamageType.GeneralDamageArmorEffectiveness"); } + float& ArmorDurabilityDegradationMultiplierField() { return *GetNativePointerField(this, "UDamageType.ArmorDurabilityDegradationMultiplier"); } + float& RadialPartiallyObstructedDamagePercentField() { return *GetNativePointerField(this, "UDamageType.RadialPartiallyObstructedDamagePercent"); } + + // Bit fields + + BitFieldValue bIsPhysicalDamage() { return { this, "UDamageType.bIsPhysicalDamage" }; } + BitFieldValue bAllowPerBoneDamageAdjustment() { return { this, "UDamageType.bAllowPerBoneDamageAdjustment" }; } + BitFieldValue bCausedByWorld() { return { this, "UDamageType.bCausedByWorld" }; } + BitFieldValue bScaleMomentumByMass() { return { this, "UDamageType.bScaleMomentumByMass" }; } + BitFieldValue bIsPassiveDamage() { return { this, "UDamageType.bIsPassiveDamage" }; } + BitFieldValue bRadialDamageVelChange() { return { this, "UDamageType.bRadialDamageVelChange" }; } + BitFieldValue bImpulseAffectsLivePawns() { return { this, "UDamageType.bImpulseAffectsLivePawns" }; } + + // Functions + + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UDamageType.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUDamageType() { NativeCall(nullptr, "UDamageType.StaticRegisterNativesUDamageType"); } +}; + +struct FDinoAttackInfo +{ + FName& AttackNameField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackName"); } + float& AttackWeightField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackWeight"); } + float& AttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRange"); } + float& MinAttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.MinAttackRange"); } + float& ActivateAttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.ActivateAttackRange"); } + float& AttackIntervalField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackInterval"); } + TArray& ChildStateIndexesField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.ChildStateIndexes"); } + float& AttackWithJumpChanceField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackWithJumpChance"); } + long double& LastAttackTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.LastAttackTime"); } + long double& RiderLastAttackTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.RiderLastAttackTime"); } + float& AttackSelectionExpirationTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackSelectionExpirationTime"); } + long double& AttackSelectionTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackSelectionTime"); } + float& AttackRotationRangeDegreesField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationRangeDegrees"); } + float& AttackRotationGroundSpeedMultiplierField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationGroundSpeedMultiplier"); } + FRotator& AttackRotationRateField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationRate"); } + TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.MeleeSwingSockets"); } + FName& RangedSocketField() { return *GetNativePointerField(this, "FDinoAttackInfo.RangedSocket"); } + int& MeleeDamageAmountField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeDamageAmount"); } + float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeDamageImpulse"); } + float& MeleeSwingRadiusField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeSwingRadius"); } + TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.MeleeDamageType"); } + float& AttackOffsetField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackOffset"); } + float& StaminaCostField() { return *GetNativePointerField(this, "FDinoAttackInfo.StaminaCost"); } + float& RiderAttackIntervalField() { return *GetNativePointerField(this, "FDinoAttackInfo.RiderAttackInterval"); } + float& DotProductCheckMinField() { return *GetNativePointerField(this, "FDinoAttackInfo.DotProductCheckMin"); } + float& DotProductCheckMaxField() { return *GetNativePointerField(this, "FDinoAttackInfo.DotProductCheckMax"); } + TArray AttackAnimationsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimations"); } + TArray& AttackAnimationWeightsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimationWeights"); } + TArray& AttackAnimationsTimeFromEndToConsiderFinishedField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimationsTimeFromEndToConsiderFinished"); } + float& AttackRunningSpeedModifierField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRunningSpeedModifier"); } + float& SwimmingAttackRunningSpeedModifierField() { return *GetNativePointerField(this, "FDinoAttackInfo.SwimmingAttackRunningSpeedModifier"); } + float& SetAttackTargetTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.SetAttackTargetTime"); } + TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.LastSocketPositions"); } + long double& LastProjectileSpawnTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.LastProjectileSpawnTime"); } + + // Functions + + FDinoAttackInfo* operator=(FDinoAttackInfo* __that) { return NativeCall(this, "FDinoAttackInfo.operator=", __that); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FDinoAttackInfo.StaticStruct"); } +}; + +struct FHordeCrateNPCGroup {}; +struct FHordeCrateWave {}; +struct __declspec(align(8)) FHordeCrateDifficultyLevel +{ + int& DifficultyLevelField() { return *GetNativePointerField(this, "FHordeCrateDifficultyLevel.DifficultyLevel"); } }; diff --git a/version/Core/Public/API/ARK/PrimalStructure.h b/version/Core/Public/API/ARK/PrimalStructure.h index dc713881..895c4c47 100644 --- a/version/Core/Public/API/ARK/PrimalStructure.h +++ b/version/Core/Public/API/ARK/PrimalStructure.h @@ -5,7 +5,7 @@ struct APrimalTargetableActor : AActor float& LowHealthPercentageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LowHealthPercentage"); } TSubclassOf& DestructionActorTemplateField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.DestructionActorTemplate"); } float& LifeSpanAfterDeathField() { return *GetNativePointerField(this, "APrimalTargetableActor.LifeSpanAfterDeath"); } - USoundCue * DeathSoundField() { return *GetNativePointerField(this, "APrimalTargetableActor.DeathSound"); } + USoundCue* DeathSoundField() { return *GetNativePointerField(this, "APrimalTargetableActor.DeathSound"); } float& PassiveDamageHealthReplicationPercentIntervalField() { return *GetNativePointerField(this, "APrimalTargetableActor.PassiveDamageHealthReplicationPercentInterval"); } float& DamageNotifyTeamAggroMultiplierField() { return *GetNativePointerField(this, "APrimalTargetableActor.DamageNotifyTeamAggroMultiplier"); } float& DamageNotifyTeamAggroRangeField() { return *GetNativePointerField(this, "APrimalTargetableActor.DamageNotifyTeamAggroRange"); } @@ -14,12 +14,17 @@ struct APrimalTargetableActor : AActor FVector& DestructibleMeshScaleOverrideField() { return *GetNativePointerField(this, "APrimalTargetableActor.DestructibleMeshScaleOverride"); } FRotator& DestructibleMeshRotationOffsetField() { return *GetNativePointerField(this, "APrimalTargetableActor.DestructibleMeshRotationOffset"); } FString& DescriptiveNameField() { return *GetNativePointerField(this, "APrimalTargetableActor.DescriptiveName"); } + TSubclassOf& DestroyedMeshActorClassField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.DestroyedMeshActorClass"); } float& ReplicatedHealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.ReplicatedHealth"); } float& HealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.Health"); } float& MaxHealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.MaxHealth"); } float& DestructibleMeshDeathImpulseScaleField() { return *GetNativePointerField(this, "APrimalTargetableActor.DestructibleMeshDeathImpulseScale"); } + TArray& BoneDamageAdjustersField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.BoneDamageAdjusters"); } float& LastReplicatedHealthValueField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastReplicatedHealthValue"); } + UPrimalHarvestingComponent* MyHarvestingComponentField() { return *GetNativePointerField(this, "APrimalTargetableActor.MyHarvestingComponent"); } TEnumAsByte& TargetableDamageFXDefaultPhysMaterialField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.TargetableDamageFXDefaultPhysMaterial"); } + TSubclassOf& StructureSettingsClassField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.StructureSettingsClass"); } + UPrimalStructureSettings* MyStructureSettingsCDOField() { return *GetNativePointerField(this, "APrimalTargetableActor.MyStructureSettingsCDO"); } float& LastHealthBeforeTakeDamageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastHealthBeforeTakeDamage"); } long double& NextAllowRepairTimeField() { return *GetNativePointerField(this, "APrimalTargetableActor.NextAllowRepairTime"); } float& LastPreBlueprintAdjustmentActualDamageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastPreBlueprintAdjustmentActualDamage"); } @@ -42,32 +47,35 @@ struct APrimalTargetableActor : AActor BitFieldValue bIgnoreDestructionEffects() { return { this, "APrimalTargetableActor.bIgnoreDestructionEffects" }; } BitFieldValue bIgnoreDamageRepairCooldown() { return { this, "APrimalTargetableActor.bIgnoreDamageRepairCooldown" }; } BitFieldValue bUseHarvestingComponent() { return { this, "APrimalTargetableActor.bUseHarvestingComponent" }; } + BitFieldValue bUseBPDied() { return { this, "APrimalTargetableActor.bUseBPDied" }; } + BitFieldValue BPOverrideDestroyedMeshTextures() { return { this, "APrimalTargetableActor.BPOverrideDestroyedMeshTextures" }; } // Functions - UField * StaticClass() { return NativeCall(this, "APrimalTargetableActor.StaticClass"); } - UObject * GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalTargetableActor.GetUObjectInterfaceTargetableInterface"); } + UObject* GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalTargetableActor.GetUObjectInterfaceTargetableInterface"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalTargetableActor.StaticClass"); } void PostInitializeComponents() { NativeCall(this, "APrimalTargetableActor.PostInitializeComponents"); } void Destroyed() { NativeCall(this, "APrimalTargetableActor.Destroyed"); } void BeginPlay() { NativeCall(this, "APrimalTargetableActor.BeginPlay"); } - void FellOutOfWorld(UDamageType * dmgType) { NativeCall(this, "APrimalTargetableActor.FellOutOfWorld", dmgType); } + void FellOutOfWorld(UDamageType* dmgType) { NativeCall(this, "APrimalTargetableActor.FellOutOfWorld", dmgType); } bool IsDead() { return NativeCall(this, "APrimalTargetableActor.IsDead"); } - void AdjustDamage(float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalTargetableActor.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalTargetableActor.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } - void PlayDyingGeneric_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingGeneric_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void GetDestructionEffectTransform(FVector * OutLocation, FRotator * OutRotation) { NativeCall(this, "APrimalTargetableActor.GetDestructionEffectTransform", OutLocation, OutRotation); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - void PlayHitEffectPoint_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectPoint_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - void PlayHitEffect(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalTargetableActor.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalTargetableActor.DrawHUD", HUD); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalTargetableActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + void AdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + float TakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APrimalTargetableActor.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "APrimalTargetableActor.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void PlayDyingGeneric_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingGeneric_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void GetDestructionEffectTransform(FVector* OutEffectLoc, FRotator* OutEffectRot) { NativeCall(this, "APrimalTargetableActor.GetDestructionEffectTransform", OutEffectLoc, OutEffectRot); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffectPoint_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectPoint_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffect(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalTargetableActor.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalTargetableActor.DrawHUD", HUD); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalTargetableActor.GetLifetimeReplicatedProps", OutLifetimeProps); } float GetMaxHealth() { return NativeCall(this, "APrimalTargetableActor.GetMaxHealth"); } float GetLowHealthPercentage() { return NativeCall(this, "APrimalTargetableActor.GetLowHealthPercentage"); } bool IsAlive() { return NativeCall(this, "APrimalTargetableActor.IsAlive"); } - FString * GetShortName(FString * result) { return NativeCall(this, "APrimalTargetableActor.GetShortName", result); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalTargetableActor.GetDescriptiveName", result); } + FString* GetShortName(FString* result) { return NativeCall(this, "APrimalTargetableActor.GetShortName", result); } float GetHealth() { return NativeCall(this, "APrimalTargetableActor.GetHealth"); } float GetHealthPercentage() { return NativeCall(this, "APrimalTargetableActor.GetHealthPercentage"); } float SetHealth(float newHealth) { return NativeCall(this, "APrimalTargetableActor.SetHealth", newHealth); } @@ -77,22 +85,32 @@ struct APrimalTargetableActor : AActor bool IsTargetableDead() { return NativeCall(this, "APrimalTargetableActor.IsTargetableDead"); } EShooterPhysMaterialType::Type GetTargetableDamageFXDefaultPhysMaterial() { return NativeCall(this, "APrimalTargetableActor.GetTargetableDamageFXDefaultPhysMaterial"); } void Suicide() { NativeCall(this, "APrimalTargetableActor.Suicide"); } - bool NetExecCommand(FName CommandName, FNetExecParams * ExecParams) { return NativeCall(this, "APrimalTargetableActor.NetExecCommand", CommandName, ExecParams); } + bool NetExecCommand(FName CommandName, FNetExecParams* ExecParams) { return NativeCall(this, "APrimalTargetableActor.NetExecCommand", CommandName, ExecParams); } void UpdatedHealth(bool bDoReplication) { NativeCall(this, "APrimalTargetableActor.UpdatedHealth", bDoReplication); } + void OnRep_ReplicatedHealth() { NativeCall(this, "APrimalTargetableActor.OnRep_ReplicatedHealth"); } bool AllowRadialDamageWithoutVisiblityTrace() { return NativeCall(this, "APrimalTargetableActor.AllowRadialDamageWithoutVisiblityTrace"); } bool IsInvincible() { return NativeCall(this, "APrimalTargetableActor.IsInvincible"); } - void PlayHitEffectGeneric(float DamageTaken, FDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectGeneric", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } - bool BPSupressImpactEffects(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath, UPrimitiveComponent * HitComponent) { return NativeCall(this, "APrimalTargetableActor.BPSupressImpactEffects", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, HitComponent); } + void HarvestingDepleted(UPrimalHarvestingComponent* fromComponent) { NativeCall(this, "APrimalTargetableActor.HarvestingDepleted", fromComponent); } + static void StaticRegisterNativesAPrimalTargetableActor() { NativeCall(nullptr, "APrimalTargetableActor.StaticRegisterNativesAPrimalTargetableActor"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalTargetableActor.GetPrivateStaticClass"); } + void BPDied(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.BPDied", KillingDamage, DamageEvent, Killer, DamageCauser); } + void BPHitEffect(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser, bool bIsLocalPath, UPrimitiveComponent* HitComponent, FVector DamageLoc, FRotator HitNormal) { NativeCall(this, "APrimalTargetableActor.BPHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, HitComponent, DamageLoc, HitNormal); } + bool BPSupressImpactEffects(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser, bool bIsLocalPath, UPrimitiveComponent* HitComponent) { return NativeCall(this, "APrimalTargetableActor.BPSupressImpactEffects", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, HitComponent); } + void OverrideDestroyedMeshTextures(UMeshComponent* meshComp) { NativeCall(this, "APrimalTargetableActor.OverrideDestroyedMeshTextures", meshComp); } + void PlayHitEffectGeneric(float DamageTaken, FDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectGeneric", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } }; struct APrimalStructure : APrimalTargetableActor { FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "APrimalStructure.OverlayTooltipPadding"); } FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "APrimalStructure.OverlayTooltipScale"); } + FName& StructureTagField() { return *GetNativePointerField(this, "APrimalStructure.StructureTag"); } TSubclassOf& ConsumesPrimalItemField() { return *GetNativePointerField*>(this, "APrimalStructure.ConsumesPrimalItem"); } float& ScaleFactorField() { return *GetNativePointerField(this, "APrimalStructure.ScaleFactor"); } int& StructureSnapTypeFlagsField() { return *GetNativePointerField(this, "APrimalStructure.StructureSnapTypeFlags"); } - //TArray& SnapPointsField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapPoints"); } + TArray& SnapPointsField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapPoints"); } + TArray& VariantsField() { return *GetNativePointerField*>(this, "APrimalStructure.Variants"); } + int& CurrentVariantField() { return *GetNativePointerField(this, "APrimalStructure.CurrentVariant"); } float& PlacementOffsetForVerticalGroundField() { return *GetNativePointerField(this, "APrimalStructure.PlacementOffsetForVerticalGround"); } float& PlacementInitialTracePointOffsetForVerticalGroundField() { return *GetNativePointerField(this, "APrimalStructure.PlacementInitialTracePointOffsetForVerticalGround"); } TArray>& StructuresAllowedToBeVerticalGroundField() { return *GetNativePointerField>*>(this, "APrimalStructure.StructuresAllowedToBeVerticalGround"); } @@ -147,24 +165,27 @@ struct APrimalStructure : APrimalTargetableActor int& OwningPlayerIDField() { return *GetNativePointerField(this, "APrimalStructure.OwningPlayerID"); } FString& OwningPlayerNameField() { return *GetNativePointerField(this, "APrimalStructure.OwningPlayerName"); } long double& LastInAllyRangeTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastInAllyRangeTime"); } + long double& PickupAllowedBeforeNetworkTimeField() { return *GetNativePointerField(this, "APrimalStructure.PickupAllowedBeforeNetworkTime"); } float& DecayDestructionPeriodMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.DecayDestructionPeriodMultiplier"); } TWeakObjectPtr& SaddleDinoField() { return *GetNativePointerField*>(this, "APrimalStructure.SaddleDino"); } - TArray LatchedDinosField() { return *GetNativePointerField*>(this, "APrimalStructure.LatchedDinos"); } - UMaterialInterface * PreviewMaterialField() { return *GetNativePointerField(this, "APrimalStructure.PreviewMaterial"); } + TArray LatchedDinosField() { return *GetNativePointerField*>(this, "APrimalStructure.LatchedDinos"); } + UMaterialInterface* PreviewMaterialField() { return *GetNativePointerField(this, "APrimalStructure.PreviewMaterial"); } FName& PreviewMaterialColorParamNameField() { return *GetNativePointerField(this, "APrimalStructure.PreviewMaterialColorParamName"); } TArray& PlacementTraceDirectionsField() { return *GetNativePointerField*>(this, "APrimalStructure.PlacementTraceDirections"); } - TArray LinkedStructuresField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedStructures"); } + TArray LinkedStructuresField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedStructures"); } TArray& LinkedStructuresIDField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedStructuresID"); } - TArray StructuresPlacedOnFloorField() { return *GetNativePointerField*>(this, "APrimalStructure.StructuresPlacedOnFloor"); } + TArray& StructuresPlacedOnFloorField() { return *GetNativePointerField*>(this, "APrimalStructure.StructuresPlacedOnFloor"); } TArray>& SnapToStructureTypesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalStructure.SnapToStructureTypesToExclude"); } TArray>& SnapFromStructureTypesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalStructure.SnapFromStructureTypesToExclude"); } - APrimalStructure * PlacedOnFloorStructureField() { return *GetNativePointerField(this, "APrimalStructure.PlacedOnFloorStructure"); } - APrimalStructure * PrimarySnappedStructureChildField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureChild"); } - APrimalStructure * PrimarySnappedStructureParentField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureParent"); } + TArray& SnapToStructureTagsToExcludeField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapToStructureTagsToExclude"); } + TArray& SnapFromStructureTagsToExcludeField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapFromStructureTagsToExclude"); } + APrimalStructure*& PlacedOnFloorStructureField() { return *GetNativePointerField(this, "APrimalStructure.PlacedOnFloorStructure"); } + APrimalStructure* PrimarySnappedStructureChildField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureChild"); } + APrimalStructure* PrimarySnappedStructureParentField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureParent"); } FString& OwnerNameField() { return *GetNativePointerField(this, "APrimalStructure.OwnerName"); } FieldArray<__int16, 6> StructureColorsField() { return { this, "APrimalStructure.StructureColors" }; } - APawn * AttachedToField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTo"); } - APrimalStructureExplosiveTransGPS * AttachedTransponderField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTransponder"); } + APawn* AttachedToField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTo"); } + APrimalStructureExplosiveTransGPS* AttachedTransponderField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTransponder"); } unsigned int& StructureIDField() { return *GetNativePointerField(this, "APrimalStructure.StructureID"); } unsigned int& AttachedToDinoID1Field() { return *GetNativePointerField(this, "APrimalStructure.AttachedToDinoID1"); } TArray>& OnlyAllowStructureClassesToAttachField() { return *GetNativePointerField>*>(this, "APrimalStructure.OnlyAllowStructureClassesToAttach"); } @@ -174,7 +195,9 @@ struct APrimalStructure : APrimalTargetableActor unsigned int& ProcessTreeTagField() { return *GetNativePointerField(this, "APrimalStructure.ProcessTreeTag"); } long double& LastStructureStasisTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastStructureStasisTime"); } long double& LastColorizationTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastColorizationTime"); } - UMaterialInterface * StructureIconMaterialField() { return *GetNativePointerField(this, "APrimalStructure.StructureIconMaterial"); } + UMaterialInterface* StructureIconMaterialField() { return *GetNativePointerField(this, "APrimalStructure.StructureIconMaterial"); } + FVector& AdvancedRotationPlacementOffsetField() { return *GetNativePointerField(this, "APrimalStructure.AdvancedRotationPlacementOffset"); } + TSubclassOf& SpawnEmitterField() { return *GetNativePointerField*>(this, "APrimalStructure.SpawnEmitter"); } FVector& SpawnEmitterLocationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SpawnEmitterLocationOffset"); } FRotator& SpawnEmitterRotationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SpawnEmitterRotationOffset"); } TSubclassOf& PickupGivesItemField() { return *GetNativePointerField*>(this, "APrimalStructure.PickupGivesItem"); } @@ -183,6 +206,8 @@ struct APrimalStructure : APrimalTargetableActor float& LastFadeOpacityField() { return *GetNativePointerField(this, "APrimalStructure.LastFadeOpacity"); } bool& bClientAddedToStructuresArrayField() { return *GetNativePointerField(this, "APrimalStructure.bClientAddedToStructuresArray"); } long double& LastFailedPinTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastFailedPinTime"); } + TWeakObjectPtr& PrimaryMeshComponentField() { return *GetNativePointerField*>(this, "APrimalStructure.PrimaryMeshComponent"); } + UStructurePaintingComponent* PaintingComponentField() { return *GetNativePointerField(this, "APrimalStructure.PaintingComponent"); } TArray& PreventBuildStructureReasonStringOverridesField() { return *GetNativePointerField*>(this, "APrimalStructure.PreventBuildStructureReasonStringOverrides"); } FVector& FloatingHudLocTextOffsetField() { return *GetNativePointerField(this, "APrimalStructure.FloatingHudLocTextOffset"); } float& LastBumpedDamageTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastBumpedDamageTime"); } @@ -190,6 +215,8 @@ struct APrimalStructure : APrimalTargetableActor int& PlacementMaterialForwardDirIndexField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaterialForwardDirIndex"); } float& ForcePreventPlacingInOfflineRaidStructuresRadiusField() { return *GetNativePointerField(this, "APrimalStructure.ForcePreventPlacingInOfflineRaidStructuresRadius"); } FName& AttachToStaticMeshSocketNameBaseField() { return *GetNativePointerField(this, "APrimalStructure.AttachToStaticMeshSocketNameBase"); } + TSubclassOf& StructureHarvestingComponentField() { return *GetNativePointerField*>(this, "APrimalStructure.StructureHarvestingComponent"); } + UPrimalHarvestingComponent* MyStructureHarvestingComponentField() { return *GetNativePointerField(this, "APrimalStructure.MyStructureHarvestingComponent"); } TSubclassOf& ItemsUseAlternateActorClassAttachmentField() { return *GetNativePointerField*>(this, "APrimalStructure.ItemsUseAlternateActorClassAttachment"); } float& UnstasisAutoDestroyAfterTimeField() { return *GetNativePointerField(this, "APrimalStructure.UnstasisAutoDestroyAfterTime"); } char& TribeGroupStructureRankField() { return *GetNativePointerField(this, "APrimalStructure.TribeGroupStructureRank"); } @@ -203,11 +230,15 @@ struct APrimalStructure : APrimalTargetableActor int& StructureMinAllowedVersionField() { return *GetNativePointerField(this, "APrimalStructure.StructureMinAllowedVersion"); } int& SavedStructureMinAllowedVersionField() { return *GetNativePointerField(this, "APrimalStructure.SavedStructureMinAllowedVersion"); } float& OverrideEnemyFoundationPreventionRadiusField() { return *GetNativePointerField(this, "APrimalStructure.OverrideEnemyFoundationPreventionRadius"); } + float& ExpandEnemyFoundationPreventionRadiusField() { return *GetNativePointerField(this, "APrimalStructure.ExpandEnemyFoundationPreventionRadius"); } int& BedIDField() { return *GetNativePointerField(this, "APrimalStructure.BedID"); } TArray>& ForceAllowWallAttachmentClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.ForceAllowWallAttachmentClasses"); } float& LimitMaxStructuresInRangeRadiusField() { return *GetNativePointerField(this, "APrimalStructure.LimitMaxStructuresInRangeRadius"); } TArray>& FastDecayLinkedStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.FastDecayLinkedStructureClasses"); } float& PlacementMaxZAbovePlayerHeightField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaxZAbovePlayerHeight"); } + TArray OverrideTargetComponentsField() { return *GetNativePointerField*>(this, "APrimalStructure.OverrideTargetComponents"); } + float& OverrideApproachRadiusField() { return *GetNativePointerField(this, "APrimalStructure.OverrideApproachRadius"); } + AMissionType* OwnerMissionField() { return *GetNativePointerField(this, "APrimalStructure.OwnerMission"); } // Bit fields @@ -236,12 +267,18 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bRequiresGroundedPlacement() { return { this, "APrimalStructure.bRequiresGroundedPlacement" }; } BitFieldValue bAllowPlacingOnOtherTeamStructuresPvPOnly() { return { this, "APrimalStructure.bAllowPlacingOnOtherTeamStructuresPvPOnly" }; } BitFieldValue bForceUseSkeletalMeshComponent() { return { this, "APrimalStructure.bForceUseSkeletalMeshComponent" }; } + BitFieldValue UseBPOverrideTargetLocation() { return { this, "APrimalStructure.UseBPOverrideTargetLocation" }; } + BitFieldValue bOverrideFoundationSupportDistance() { return { this, "APrimalStructure.bOverrideFoundationSupportDistance" }; } BitFieldValue bForceDisableFootSound() { return { this, "APrimalStructure.bForceDisableFootSound" }; } BitFieldValue bTraceThruEncroachmentPoints() { return { this, "APrimalStructure.bTraceThruEncroachmentPoints" }; } BitFieldValue bDidSpawnEffects() { return { this, "APrimalStructure.bDidSpawnEffects" }; } BitFieldValue bPreventDinoPlacementDistanceIncrease() { return { this, "APrimalStructure.bPreventDinoPlacementDistanceIncrease" }; } BitFieldValue bPendingRemoval() { return { this, "APrimalStructure.bPendingRemoval" }; } BitFieldValue bDontOverrideCollisionProfile() { return { this, "APrimalStructure.bDontOverrideCollisionProfile" }; } + BitFieldValue bUseAdvancedRotationPlacement() { return { this, "APrimalStructure.bUseAdvancedRotationPlacement" }; } + BitFieldValue bIsPlacingPlayerStructure() { return { this, "APrimalStructure.bIsPlacingPlayerStructure" }; } + BitFieldValue bRootFoundationLimitBuildArea() { return { this, "APrimalStructure.bRootFoundationLimitBuildArea" }; } + BitFieldValue bCenterOffscreenFloatingHUDWidgets() { return { this, "APrimalStructure.bCenterOffscreenFloatingHUDWidgets" }; } BitFieldValue bAllowAttachToPawn() { return { this, "APrimalStructure.bAllowAttachToPawn" }; } BitFieldValue bAllowAttachToSaddle() { return { this, "APrimalStructure.bAllowAttachToSaddle" }; } BitFieldValue bPlacementTraceIgnorePawns() { return { this, "APrimalStructure.bPlacementTraceIgnorePawns" }; } @@ -272,12 +309,15 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bSetStaticMobility() { return { this, "APrimalStructure.bSetStaticMobility" }; } BitFieldValue bIsPvE() { return { this, "APrimalStructure.bIsPvE" }; } BitFieldValue bBeginPlayIgnoreApplyScale() { return { this, "APrimalStructure.bBeginPlayIgnoreApplyScale" }; } + BitFieldValue bUseBPOnVariantSwitch() { return { this, "APrimalStructure.bUseBPOnVariantSwitch" }; } BitFieldValue bRequiresPlacementOnStructureFloors() { return { this, "APrimalStructure.bRequiresPlacementOnStructureFloors" }; } BitFieldValue bDisablePlacementOnStructureFloors() { return { this, "APrimalStructure.bDisablePlacementOnStructureFloors" }; } + BitFieldValue bDestroyStructureIfFloorDestroyed() { return { this, "APrimalStructure.bDestroyStructureIfFloorDestroyed" }; } BitFieldValue bUsePlacementCollisionCheck() { return { this, "APrimalStructure.bUsePlacementCollisionCheck" }; } BitFieldValue bRequiresSnapping() { return { this, "APrimalStructure.bRequiresSnapping" }; } BitFieldValue bSnappingRequiresNearbyFoundation() { return { this, "APrimalStructure.bSnappingRequiresNearbyFoundation" }; } BitFieldValue bAllowSnapRotation() { return { this, "APrimalStructure.bAllowSnapRotation" }; } + BitFieldValue bUseBPAllowSnapRotationForStructure() { return { this, "APrimalStructure.bUseBPAllowSnapRotationForStructure" }; } BitFieldValue bPlacementChooseRotation() { return { this, "APrimalStructure.bPlacementChooseRotation" }; } BitFieldValue bRequiresPlacingOnWall() { return { this, "APrimalStructure.bRequiresPlacingOnWall" }; } BitFieldValue bSnapRequiresPlacementOnGround() { return { this, "APrimalStructure.bSnapRequiresPlacementOnGround" }; } @@ -292,6 +332,10 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bDebug() { return { this, "APrimalStructure.bDebug" }; } BitFieldValue bUseFadeInEffect() { return { this, "APrimalStructure.bUseFadeInEffect" }; } BitFieldValue bUsingStructureColors() { return { this, "APrimalStructure.bUsingStructureColors" }; } + BitFieldValue bPreventDefaultVariant() { return { this, "APrimalStructure.bPreventDefaultVariant" }; } + BitFieldValue bIsSPlusStructure() { return { this, "APrimalStructure.bIsSPlusStructure" }; } + BitFieldValue bAllowPickingUpStructureAfterPlacement() { return { this, "APrimalStructure.bAllowPickingUpStructureAfterPlacement" }; } + BitFieldValue bDisablePickingUpStructureAfterPlacementOnTryMultiUse() { return { this, "APrimalStructure.bDisablePickingUpStructureAfterPlacementOnTryMultiUse" }; } BitFieldValue bUsesHealth() { return { this, "APrimalStructure.bUsesHealth" }; } BitFieldValue bIgnoreSnappedToOtherFloorStructures() { return { this, "APrimalStructure.bIgnoreSnappedToOtherFloorStructures" }; } BitFieldValue bEnforceStructureLinkExactRotation() { return { this, "APrimalStructure.bEnforceStructureLinkExactRotation" }; } @@ -317,17 +361,28 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bUseBPGetInfoFromConsumedItemForPlacedStructure() { return { this, "APrimalStructure.bUseBPGetInfoFromConsumedItemForPlacedStructure" }; } BitFieldValue bImmuneToAutoDemolish() { return { this, "APrimalStructure.bImmuneToAutoDemolish" }; } BitFieldValue bIgnoreMaxStructuresInSmallRadius() { return { this, "APrimalStructure.bIgnoreMaxStructuresInSmallRadius" }; } + BitFieldValue bAllowTargetingByCorruptDinos() { return { this, "APrimalStructure.bAllowTargetingByCorruptDinos" }; } + BitFieldValue bUseBPTreatAsFoundationForSnappedStructure() { return { this, "APrimalStructure.bUseBPTreatAsFoundationForSnappedStructure" }; } + BitFieldValue bUseBPOnStructurePickup() { return { this, "APrimalStructure.bUseBPOnStructurePickup" }; } + BitFieldValue bPerInstanceSnapPoints() { return { this, "APrimalStructure.bPerInstanceSnapPoints" }; } + BitFieldValue bSnapToWaterSurface() { return { this, "APrimalStructure.bSnapToWaterSurface" }; } + BitFieldValue bDestroyOnStasisUnlessPrevented() { return { this, "APrimalStructure.bDestroyOnStasisUnlessPrevented" }; } BitFieldValue bPreventAttachToSaddle() { return { this, "APrimalStructure.bPreventAttachToSaddle" }; } BitFieldValue bForcePersonalStructureOwnership() { return { this, "APrimalStructure.bForcePersonalStructureOwnership" }; } BitFieldValue bBPOverrideAllowStructureAccess() { return { this, "APrimalStructure.bBPOverrideAllowStructureAccess" }; } BitFieldValue bBPOverideDemolish() { return { this, "APrimalStructure.bBPOverideDemolish" }; } + BitFieldValue bUseBPOnDemolish() { return { this, "APrimalStructure.bUseBPOnDemolish" }; } BitFieldValue bBPOverrideAllowSnappingWith() { return { this, "APrimalStructure.bBPOverrideAllowSnappingWith" }; } + BitFieldValue bBPOverrideAllowSnappingWithButAlsoCallSuper() { return { this, "APrimalStructure.bBPOverrideAllowSnappingWithButAlsoCallSuper" }; } + BitFieldValue bUseBPOnLinkedStructureDestroyed() { return { this, "APrimalStructure.bUseBPOnLinkedStructureDestroyed" }; } BitFieldValue bUseTribeGroupStructureRank() { return { this, "APrimalStructure.bUseTribeGroupStructureRank" }; } BitFieldValue bForceBlockStationaryTraces() { return { this, "APrimalStructure.bForceBlockStationaryTraces" }; } BitFieldValue bAttachToStaticMeshSocket() { return { this, "APrimalStructure.bAttachToStaticMeshSocket" }; } BitFieldValue bAttachToStaticMeshSocketRotation() { return { this, "APrimalStructure.bAttachToStaticMeshSocketRotation" }; } BitFieldValue bForceGroundForFoundation() { return { this, "APrimalStructure.bForceGroundForFoundation" }; } BitFieldValue bBPOverrideSnappedToTransform() { return { this, "APrimalStructure.bBPOverrideSnappedToTransform" }; } + BitFieldValue bBPOverrideSnappedFromTransform() { return { this, "APrimalStructure.bBPOverrideSnappedFromTransform" }; } + BitFieldValue bBPOverridePlacementRotation() { return { this, "APrimalStructure.bBPOverridePlacementRotation" }; } BitFieldValue bDisableStructureOnElectricStorm() { return { this, "APrimalStructure.bDisableStructureOnElectricStorm" }; } BitFieldValue bNoCollision() { return { this, "APrimalStructure.bNoCollision" }; } BitFieldValue bCreatedDynamicMaterials() { return { this, "APrimalStructure.bCreatedDynamicMaterials" }; } @@ -338,6 +393,7 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bDisableSnapStructure() { return { this, "APrimalStructure.bDisableSnapStructure" }; } BitFieldValue bTriggerBPUnstasis() { return { this, "APrimalStructure.bTriggerBPUnstasis" }; } BitFieldValue bBlueprintDrawHUD() { return { this, "APrimalStructure.bBlueprintDrawHUD" }; } + BitFieldValue bBlueprintDrawPreviewHUD() { return { this, "APrimalStructure.bBlueprintDrawPreviewHUD" }; } BitFieldValue bUsesWorldSpaceMaterial() { return { this, "APrimalStructure.bUsesWorldSpaceMaterial" }; } BitFieldValue bForceIgnoreStationaryObjectTrace() { return { this, "APrimalStructure.bForceIgnoreStationaryObjectTrace" }; } BitFieldValue bForceAllowNearSupplyCrateSpawns() { return { this, "APrimalStructure.bForceAllowNearSupplyCrateSpawns" }; } @@ -347,142 +403,280 @@ struct APrimalStructure : APrimalTargetableActor BitFieldValue bPreventAttachedChildStructures() { return { this, "APrimalStructure.bPreventAttachedChildStructures" }; } BitFieldValue bPreventPreviewIfWeaponPlaced() { return { this, "APrimalStructure.bPreventPreviewIfWeaponPlaced" }; } BitFieldValue bStructuresInRangeTypeFlagUseAltCollisionChannel() { return { this, "APrimalStructure.bStructuresInRangeTypeFlagUseAltCollisionChannel" }; } + BitFieldValue bIsDrawingHUDPickupTimer() { return { this, "APrimalStructure.bIsDrawingHUDPickupTimer" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructure.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructure.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructure.StaticClass"); } + UObject* GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalStructure.GetUObjectInterfaceDataListEntryInterface"); } + FRotator* GetPlayerSpawnRotation(FRotator* result) { return NativeCall(this, "APrimalStructure.GetPlayerSpawnRotation", result); } + void SetBoundsScale(float NewScale) { NativeCall(this, "APrimalStructure.SetBoundsScale", NewScale); } + void SetContainerActive(bool reset) { NativeCall(this, "APrimalStructure.SetContainerActive", reset); } int GetHitPawnCollisionGroup() { return NativeCall(this, "APrimalStructure.GetHitPawnCollisionGroup"); } void PreInitializeComponents() { NativeCall(this, "APrimalStructure.PreInitializeComponents"); } void BeginPlay() { NativeCall(this, "APrimalStructure.BeginPlay"); } + void DestroyByMeshing() { NativeCall(this, "APrimalStructure.DestroyByMeshing"); } + void ApplyPrimalItemSettingsToStructure(UMeshComponent* meshToColorize, UPrimalItem* AssociatedPrimalItem) { NativeCall(this, "APrimalStructure.ApplyPrimalItemSettingsToStructure", meshToColorize, AssociatedPrimalItem); } void SetLinkedIDs() { NativeCall(this, "APrimalStructure.SetLinkedIDs"); } void ApplyLinkedIDs(bool bRelinkParents) { NativeCall(this, "APrimalStructure.ApplyLinkedIDs", bRelinkParents); } - static APrimalStructure * GetFromID(UWorld * World, unsigned int TheStructureID) { return NativeCall(nullptr, "APrimalStructure.GetFromID", World, TheStructureID); } + static APrimalStructure* GetFromID(UWorld* World, unsigned int TheStructureID) { return NativeCall(nullptr, "APrimalStructure.GetFromID", World, TheStructureID); } + static APrimalStructure* BPGetFromID(UWorld* World, int TheStructureID) { return NativeCall(nullptr, "APrimalStructure.BPGetFromID", World, TheStructureID); } + static int BPGetStructureID(APrimalStructure* PrimalStructure) { return NativeCall(nullptr, "APrimalStructure.BPGetStructureID", PrimalStructure); } void OnRep_AttachmentReplication() { NativeCall(this, "APrimalStructure.OnRep_AttachmentReplication"); } - void SetDinoSaddleAttachment(APrimalDinoCharacter * myDino, FName BoneName, FVector RelLoc, FRotator RelRot, bool bMaintainWorldPosition) { NativeCall(this, "APrimalStructure.SetDinoSaddleAttachment", myDino, BoneName, RelLoc, RelRot, bMaintainWorldPosition); } + void SetDinoSaddleAttachment(APrimalDinoCharacter* myDino, FName BoneName, FVector RelLoc, FRotator RelRot, bool bMaintainWorldPosition) { NativeCall(this, "APrimalStructure.SetDinoSaddleAttachment", myDino, BoneName, RelLoc, RelRot, bMaintainWorldPosition); } + void PostSpawnInitialize() { NativeCall(this, "APrimalStructure.PostSpawnInitialize"); } void LoadedFromSaveGame() { NativeCall(this, "APrimalStructure.LoadedFromSaveGame"); } void SetStructureCollisionChannels() { NativeCall(this, "APrimalStructure.SetStructureCollisionChannels"); } void ApplyScale(bool bOnlyInitPhysics) { NativeCall(this, "APrimalStructure.ApplyScale", bOnlyInitPhysics); } - void PostSpawnInitialize(FVector * SpawnLocation, FRotator * SpawnRotation, AActor * InOwner, APawn * InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "APrimalStructure.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } + void PostSpawnInitialize(FVector* SpawnLocation, FRotator* SpawnRotation, AActor* InOwner, APawn* InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "APrimalStructure.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } bool UseDynamicMobility() { return NativeCall(this, "APrimalStructure.UseDynamicMobility"); } void SetStaticMobility() { NativeCall(this, "APrimalStructure.SetStaticMobility"); } + bool IsLinkedToWaterOrPowerSource() { return NativeCall(this, "APrimalStructure.IsLinkedToWaterOrPowerSource"); } void PrepareAsPlacementPreview() { NativeCall(this, "APrimalStructure.PrepareAsPlacementPreview"); } - bool TickPlacingStructure(APrimalStructurePlacer * PlacerActor, float DeltaTime) { return NativeCall(this, "APrimalStructure.TickPlacingStructure", PlacerActor, DeltaTime); } - int IsAllowedToBuild(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FPlacementData * OutPlacementData, bool bDontAdjustForMaxRange, FRotator PlayerViewRotation, bool bFinalPlacement) { return NativeCall(this, "APrimalStructure.IsAllowedToBuild", PC, AtLocation, AtRotation, OutPlacementData, bDontAdjustForMaxRange, PlayerViewRotation, bFinalPlacement); } - static bool IsPointNearSupplyCrateSpawn(UWorld * theWorld, FVector AtPoint) { return NativeCall(nullptr, "APrimalStructure.IsPointNearSupplyCrateSpawn", theWorld, AtPoint); } - TSubclassOf * GetBedFilterClass_Implementation(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "APrimalStructure.GetBedFilterClass_Implementation", result); } + bool TickPlacingStructure(APrimalStructurePlacer* PlacerActor, float DeltaTime) { return NativeCall(this, "APrimalStructure.TickPlacingStructure", PlacerActor, DeltaTime); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "APrimalStructure.GetDebugInfoString", result); } + bool ShouldInstance(UProperty* Property) { return NativeCall(this, "APrimalStructure.ShouldInstance", Property); } + int IsAllowedToBuild(APlayerController* PC, FVector AtLocation, FRotator AtRotation, FPlacementData* OutPlacementData, bool bDontAdjustForMaxRange, FRotator PlayerViewRotation, bool bFinalPlacement) { return NativeCall(this, "APrimalStructure.IsAllowedToBuild", PC, AtLocation, AtRotation, OutPlacementData, bDontAdjustForMaxRange, PlayerViewRotation, bFinalPlacement); } + static bool IsPointNearSupplyCrateSpawn(UWorld* theWorld, FVector AtPoint) { return NativeCall(nullptr, "APrimalStructure.IsPointNearSupplyCrateSpawn", theWorld, AtPoint); } + TSubclassOf* GetBedFilterClass_Implementation(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "APrimalStructure.GetBedFilterClass_Implementation", result); } + FSpawnPointInfo* GetSpawnPointInfo(FSpawnPointInfo* result) { return NativeCall(this, "APrimalStructure.GetSpawnPointInfo", result); } void PostInitializeComponents() { NativeCall(this, "APrimalStructure.PostInitializeComponents"); } - bool AllowSpawnForPlayer(AShooterPlayerController * PC, bool bCheckCooldownTime, APrimalStructure * FromStructure) { return NativeCall(this, "APrimalStructure.AllowSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } - void NetUpdateOriginalOwnerNameAndID_Implementation(int NewOriginalOwnerID, FString * NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID_Implementation", NewOriginalOwnerID, NewOriginalOwnerName); } - void NonPlayerFinalStructurePlacement(int PlacementTargetingTeam, int PlacementOwningPlayerID, FString * PlacementOwningPlayerName, APrimalStructure * ForcePrimaryParent) { NativeCall(this, "APrimalStructure.NonPlayerFinalStructurePlacement", PlacementTargetingTeam, PlacementOwningPlayerID, PlacementOwningPlayerName, ForcePrimaryParent); } - bool FinalStructurePlacement(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bIsFlipped) { return NativeCall(this, "APrimalStructure.FinalStructurePlacement", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bIsFlipped); } - FVector * GetSnapPointLocation(FVector * result, int SnapPointIndex, bool bOverrideTransform, FVector OverrideLoc, FRotator OverrideRot) { return NativeCall(this, "APrimalStructure.GetSnapPointLocation", result, SnapPointIndex, bOverrideTransform, OverrideLoc, OverrideRot); } - bool GetSnapToLocation(FVector * AtLoc, FRotator * AtRotation, FPlacementData * OutPlacementData, APrimalStructure ** OutParentStructure, int * OutSnapToIndex, APlayerController * PC, bool bFinalPlacement, int SnapPointCycle) { return NativeCall(this, "APrimalStructure.GetSnapToLocation", AtLoc, AtRotation, OutPlacementData, OutParentStructure, OutSnapToIndex, PC, bFinalPlacement, SnapPointCycle); } - void GetSnapToParentStructures(FVector AtLocation, FRotator AtRotation, int InitialMySnapIndex, APrimalStructure * InitialParent, TArray * SnapToParentStructures, APlayerController * PC) { NativeCall *, APlayerController *>(this, "APrimalStructure.GetSnapToParentStructures", AtLocation, AtRotation, InitialMySnapIndex, InitialParent, SnapToParentStructures, PC); } - bool GetPlacingGroundLocation(AActor ** OutHitActor, FPlacementData * OutPlacementData, APlayerController * PC, bool bFinalPlacement, int SnapPointCycle) { return NativeCall(this, "APrimalStructure.GetPlacingGroundLocation", OutHitActor, OutPlacementData, PC, bFinalPlacement, SnapPointCycle); } - bool ClampBuildLocation(FVector FromLocation, AActor ** OutHitActor, FPlacementData * OutPlacementData, bool bDontAdjustForMaxRange, APlayerController * PC) { return NativeCall(this, "APrimalStructure.ClampBuildLocation", FromLocation, OutHitActor, OutPlacementData, bDontAdjustForMaxRange, PC); } - bool CheckNotEncroaching(FVector PlacementLocation, FRotator PlacementRotation, AActor * DinoCharacter, APrimalStructure * SnappedToParentStructure, APrimalStructure * ReplacesStructure, bool bUseAlternatePlacementTraceScale) { return NativeCall(this, "APrimalStructure.CheckNotEncroaching", PlacementLocation, PlacementRotation, DinoCharacter, SnappedToParentStructure, ReplacesStructure, bUseAlternatePlacementTraceScale); } - APrimalStructure * GetNearbyFoundation(FPlacementData * PlacementData, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.GetNearbyFoundation", PlacementData, ForPC); } + bool AllowSpawnForPlayer(AShooterPlayerController* PC, bool bCheckCooldownTime, APrimalStructure* FromStructure) { return NativeCall(this, "APrimalStructure.AllowSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + void NetUpdateOriginalOwnerNameAndID_Implementation(int NewOriginalOwnerID, FString* NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID_Implementation", NewOriginalOwnerID, NewOriginalOwnerName); } + void LinkStructure(APrimalStructure* NewLinkedStructure) { NativeCall(this, "APrimalStructure.LinkStructure", NewLinkedStructure); } + void NonPlayerFinalStructurePlacement(int PlacementTargetingTeam, int PlacementOwningPlayerID, FString* PlacementOwningPlayerName, APrimalStructure* ForcePrimaryParent) { NativeCall(this, "APrimalStructure.NonPlayerFinalStructurePlacement", PlacementTargetingTeam, PlacementOwningPlayerID, PlacementOwningPlayerName, ForcePrimaryParent); } + bool FinalStructurePlacement(APlayerController* PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, FName BoneName, bool bIsFlipped) { return NativeCall(this, "APrimalStructure.FinalStructurePlacement", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bIsFlipped); } + FVector* GetSnapPointLocation(FVector* result, int SnapPointIndex, bool bOverrideTransform, FVector OverrideLoc, FRotator OverrideRot) { return NativeCall(this, "APrimalStructure.GetSnapPointLocation", result, SnapPointIndex, bOverrideTransform, OverrideLoc, OverrideRot); } + bool GetSnapToLocation(FVector* AtLoc, FRotator* AtRotation, FPlacementData* OutPlacementData, APrimalStructure** OutParentStructure, int* OutSnapToIndex, APlayerController* PC, bool bFinalPlacement, int SnapPointCycle) { return NativeCall(this, "APrimalStructure.GetSnapToLocation", AtLoc, AtRotation, OutPlacementData, OutParentStructure, OutSnapToIndex, PC, bFinalPlacement, SnapPointCycle); } + void GetSnapToParentStructures(FVector AtLocation, FRotator AtRotation, int InitialMySnapIndex, APrimalStructure* InitialParent, TArray* SnapToParentStructures, APlayerController* PC) { NativeCall*, APlayerController*>(this, "APrimalStructure.GetSnapToParentStructures", AtLocation, AtRotation, InitialMySnapIndex, InitialParent, SnapToParentStructures, PC); } + bool GetPlacingGroundLocation(AActor** OutHitActor, FPlacementData* OutPlacementData, APlayerController* PC, bool bFinalPlacement, int SnapPointCycle, UPrimitiveComponent** OutComponent) { return NativeCall(this, "APrimalStructure.GetPlacingGroundLocation", OutHitActor, OutPlacementData, PC, bFinalPlacement, SnapPointCycle, OutComponent); } + bool ClampBuildLocation(FVector FromLocation, AActor** OutHitActor, FPlacementData* OutPlacementData, bool bDontAdjustForMaxRange, APlayerController* PC) { return NativeCall(this, "APrimalStructure.ClampBuildLocation", FromLocation, OutHitActor, OutPlacementData, bDontAdjustForMaxRange, PC); } + bool CheckNotEncroaching(FVector PlacementLocation, FRotator PlacementRotation, AActor* DinoCharacter, APrimalStructure* SnappedToParentStructure, APrimalStructure* ReplacesStructure, bool bUseAlternatePlacementTraceScale) { return NativeCall(this, "APrimalStructure.CheckNotEncroaching", PlacementLocation, PlacementRotation, DinoCharacter, SnappedToParentStructure, ReplacesStructure, bUseAlternatePlacementTraceScale); } + APrimalStructure* GetNearbyFoundation(FPlacementData* PlacementData, APlayerController* ForPC) { return NativeCall(this, "APrimalStructure.GetNearbyFoundation", PlacementData, ForPC); } void NetSpawnCoreStructureDeathActor_Implementation() { NativeCall(this, "APrimalStructure.NetSpawnCoreStructureDeathActor_Implementation"); } - float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalStructure.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } - bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalStructure.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } - static void ReprocessTree(TArray * StartingStructures, AController * InstigatorController, AActor * DamageCauser) { NativeCall *, AController *, AActor *>(nullptr, "APrimalStructure.ReprocessTree", StartingStructures, InstigatorController, DamageCauser); } - static void FindFoundations(APrimalStructure * StartingStructure, TArray * Foundations) { NativeCall *>(nullptr, "APrimalStructure.FindFoundations", StartingStructure, Foundations); } - static void CullAgainstFoundations(APrimalStructure ** StartingStructure, TArray * Foundations) { NativeCall *>(nullptr, "APrimalStructure.CullAgainstFoundations", StartingStructure, Foundations); } - static void FlagReachable(TArray * Foundations) { NativeCall *>(nullptr, "APrimalStructure.FlagReachable", Foundations); } - static void FlagReachable(APrimalStructure * StartingStructure) { NativeCall(nullptr, "APrimalStructure.FlagReachable", StartingStructure); } - static void CleanUpTree(APrimalStructure * StartingStructure, AController * InstigatorController, AActor * DamageCauser) { NativeCall(nullptr, "APrimalStructure.CleanUpTree", StartingStructure, InstigatorController, DamageCauser); } - void RemoveLinkedStructure(APrimalStructure * Structure, AController * InstigatorController, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.RemoveLinkedStructure", Structure, InstigatorController, DamageCauser); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructure.GetLifetimeReplicatedProps", OutLifetimeProps); } - void RefreshStructureColors() { NativeCall(this, "APrimalStructure.RefreshStructureColors"); } - FLinearColor * GetStructureColorForID(FLinearColor * result, int SetNum, int ID) { return NativeCall(this, "APrimalStructure.GetStructureColorForID", result, SetNum, ID); } - bool Internal_IsInSnapChain(APrimalStructure * theStructure) { return NativeCall(this, "APrimalStructure.Internal_IsInSnapChain", theStructure); } - void GetAllLinkedStructures(TArray * OutLinkedStructures) { NativeCall *>(this, "APrimalStructure.GetAllLinkedStructures", OutLinkedStructures); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructure.TryMultiUse", ForPC, UseIndex); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructure.ClientMultiUse", ForPC, UseIndex); } - void Demolish(APlayerController * ForPC) { NativeCall(this, "APrimalStructure.Demolish", ForPC); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructure.DrawHUD", HUD); } - bool DoAnyTribePermissionsRestrict(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructure.DoAnyTribePermissionsRestrict", ForPC); } - void DrawStructureTooltip(AShooterHUD * HUD, bool bForMultiUseSelector) { NativeCall(this, "APrimalStructure.DrawStructureTooltip", HUD, bForMultiUseSelector); } + float TakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APrimalStructure.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "APrimalStructure.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalStructure.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void DestroyStructuresPlacedOnFloor() { NativeCall(this, "APrimalStructure.DestroyStructuresPlacedOnFloor"); } + static void ReprocessTree(TArray* StartingStructures, AController* InstigatorController, AActor* DamageCauser) { NativeCall*, AController*, AActor*>(nullptr, "APrimalStructure.ReprocessTree", StartingStructures, InstigatorController, DamageCauser); } + static void FindFoundations(TArray* StartingStructures, TArray* Foundations) { NativeCall*, TArray*>(nullptr, "APrimalStructure.FindFoundations", StartingStructures, Foundations); } + static void FindFoundations(APrimalStructure* StartingStructure, TArray* Foundations) { NativeCall*>(nullptr, "APrimalStructure.FindFoundations", StartingStructure, Foundations); } + static void CullAgainstFoundations(TArray* StartingStructures, TArray* Foundations) { NativeCall*, TArray*>(nullptr, "APrimalStructure.CullAgainstFoundations", StartingStructures, Foundations); } + static bool CullAgainstFoundations(APrimalStructure** StartingStructure, TArray* Foundations) { return NativeCall*>(nullptr, "APrimalStructure.CullAgainstFoundations", StartingStructure, Foundations); } + static void FlagConnectionsLessThan(TArray* Structures, int Connections, TArray* StructuresToDestroy) { NativeCall*, int, TArray*>(nullptr, "APrimalStructure.FlagConnectionsLessThan", Structures, Connections, StructuresToDestroy); } + static void FlagConnectionsLessThan(APrimalStructure** StartingStructure, int Connections, TArray* StructuresToDestroy) { NativeCall*>(nullptr, "APrimalStructure.FlagConnectionsLessThan", StartingStructure, Connections, StructuresToDestroy); } + static void FlagReachable(TArray* Foundations) { NativeCall*>(nullptr, "APrimalStructure.FlagReachable", Foundations); } + static void FlagReachable(APrimalStructure* StartingStructure) { NativeCall(nullptr, "APrimalStructure.FlagReachable", StartingStructure); } + static void CleanUpTree(TArray* StartingStructures, AController* InstigatorController, AActor* DamageCauser) { NativeCall*, AController*, AActor*>(nullptr, "APrimalStructure.CleanUpTree", StartingStructures, InstigatorController, DamageCauser); } + static void CleanUpTree(APrimalStructure* StartingStructure, AController* InstigatorController, AActor* DamageCauser) { NativeCall(nullptr, "APrimalStructure.CleanUpTree", StartingStructure, InstigatorController, DamageCauser); } + void RemoveLinkedStructure(APrimalStructure* Structure, AController* InstigatorController, AActor* DamageCauser) { NativeCall(this, "APrimalStructure.RemoveLinkedStructure", Structure, InstigatorController, DamageCauser); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructure.GetLifetimeReplicatedProps", OutLifetimeProps); } + void OnRep_CurrentVariant() { NativeCall(this, "APrimalStructure.OnRep_CurrentVariant"); } + void OnRep_StructureColors() { NativeCall(this, "APrimalStructure.OnRep_StructureColors"); } + void RefreshStructureColors(UMeshComponent* ForceRefreshComponent) { NativeCall(this, "APrimalStructure.RefreshStructureColors", ForceRefreshComponent); } + FLinearColor* GetStructureColorForID(FLinearColor* result, int SetNum, int ID) { return NativeCall(this, "APrimalStructure.GetStructureColorForID", result, SetNum, ID); } + bool Internal_IsInSnapChain(APrimalStructure* theStructure) { return NativeCall(this, "APrimalStructure.Internal_IsInSnapChain", theStructure); } + void GetAllLinkedStructures(TArray* OutLinkedStructures) { NativeCall*>(this, "APrimalStructure.GetAllLinkedStructures", OutLinkedStructures); } + void BPGetAllLinkedStructures(TArray* OutLinkedStructures) { NativeCall*>(this, "APrimalStructure.BPGetAllLinkedStructures", OutLinkedStructures); } + long double GetForceDemolishTime() { return NativeCall(this, "APrimalStructure.GetForceDemolishTime"); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructure.TryMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalStructure.ClientMultiUse", ForPC, UseIndex); } + void Demolish(APlayerController* ForPC, AActor* DamageCauser) { NativeCall(this, "APrimalStructure.Demolish", ForPC, DamageCauser); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructure.DrawHUD", HUD); } + bool DoAnyTribePermissionsRestrict(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructure.DoAnyTribePermissionsRestrict", ForPC); } + void DrawStructureTooltip(AShooterHUD* HUD, bool bForMultiUseSelector) { NativeCall(this, "APrimalStructure.DrawStructureTooltip", HUD, bForMultiUseSelector); } void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalStructure.ChangeActorTeam", NewTeam); } - void NetUpdateTeamAndOwnerName_Implementation(int NewTeam, FString * NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName_Implementation", NewTeam, NewOwnerName); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructure.GetDescriptiveName", result); } + void NetUpdateTeamAndOwnerName_Implementation(int NewTeam, FString* NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName_Implementation", NewTeam, NewOwnerName); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalStructure.GetDescriptiveName", result); } + bool AllowSnapRotationForStructure(int ThisSnapPointIndex, APrimalStructure* OtherStructure, int OtherStructureSnapPointIndex) { return NativeCall(this, "APrimalStructure.AllowSnapRotationForStructure", ThisSnapPointIndex, OtherStructure, OtherStructureSnapPointIndex); } + void PlacedStructure(AShooterPlayerController* PC) { NativeCall(this, "APrimalStructure.PlacedStructure", PC); } void UpdatedHealth(bool bDoReplication) { NativeCall(this, "APrimalStructure.UpdatedHealth", bDoReplication); } + void SetupDynamicMeshMaterials(UMeshComponent* meshComp) { NativeCall(this, "APrimalStructure.SetupDynamicMeshMaterials", meshComp); } void StartRepair() { NativeCall(this, "APrimalStructure.StartRepair"); } void RepairCheckTimer() { NativeCall(this, "APrimalStructure.RepairCheckTimer"); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "APrimalStructure.EndPlay", EndPlayReason); } void Stasis() { NativeCall(this, "APrimalStructure.Stasis"); } void Destroyed() { NativeCall(this, "APrimalStructure.Destroyed"); } void Unstasis() { NativeCall(this, "APrimalStructure.Unstasis"); } - UPrimitiveComponent * GetPrimaryHitComponent() { return NativeCall(this, "APrimalStructure.GetPrimaryHitComponent"); } - static void GetNearbyStructuresOfClass(UWorld * World, TSubclassOf StructureClass, FVector * Location, float Range, TArray * Structures) { NativeCall, FVector *, float, TArray *>(nullptr, "APrimalStructure.GetNearbyStructuresOfClass", World, StructureClass, Location, Range, Structures); } - void ClientUpdateLinkedStructures_Implementation(TArray * NewLinkedStructures) { NativeCall *>(this, "APrimalStructure.ClientUpdateLinkedStructures_Implementation", NewLinkedStructures); } - bool AllowColoringBy(APlayerController * ForPC, UObject * anItem) { return NativeCall(this, "APrimalStructure.AllowColoringBy", ForPC, anItem); } - void ServerRequestUseItemWithActor(APlayerController * ForPC, UObject * anItem, int AdditionalData) { NativeCall(this, "APrimalStructure.ServerRequestUseItemWithActor", ForPC, anItem, AdditionalData); } - void ApplyColorToRegions(__int16 CustomColorID, bool * ApplyToRegions) { NativeCall(this, "APrimalStructure.ApplyColorToRegions", CustomColorID, ApplyToRegions); } - bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "APrimalStructure.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + UPrimitiveComponent* GetPrimaryHitComponent() { return NativeCall(this, "APrimalStructure.GetPrimaryHitComponent"); } + static void GetNearbyStructuresOfClass(UWorld* World, TSubclassOf StructureClass, FVector* Location, float Range, TArray* Structures) { NativeCall, FVector*, float, TArray*>(nullptr, "APrimalStructure.GetNearbyStructuresOfClass", World, StructureClass, Location, Range, Structures); } + void ForceReplicateLinkedStructures() { NativeCall(this, "APrimalStructure.ForceReplicateLinkedStructures"); } + void ClientUpdateLinkedStructures_Implementation(TArray* NewLinkedStructures) { NativeCall*>(this, "APrimalStructure.ClientUpdateLinkedStructures_Implementation", NewLinkedStructures); } + bool AllowColoringBy(APlayerController* ForPC, UObject* anItem) { return NativeCall(this, "APrimalStructure.AllowColoringBy", ForPC, anItem); } + void ServerRequestUseItemWithActor(APlayerController* ForPC, UObject* anItem, int AdditionalData) { NativeCall(this, "APrimalStructure.ServerRequestUseItemWithActor", ForPC, anItem, AdditionalData); } + void ApplyColorToRegions(__int16 CustomColorID, bool* ApplyToRegions) { NativeCall(this, "APrimalStructure.ApplyColorToRegions", CustomColorID, ApplyToRegions); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "APrimalStructure.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } void NetDoSpawnEffects_Implementation() { NativeCall(this, "APrimalStructure.NetDoSpawnEffects_Implementation"); } void FadeInEffectTick() { NativeCall(this, "APrimalStructure.FadeInEffectTick"); } - float AddAggroOnBump(APrimalDinoCharacter * BumpedBy) { return NativeCall(this, "APrimalStructure.AddAggroOnBump", BumpedBy); } + void ProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool bCheckedBox) { NativeCall(this, "APrimalStructure.ProcessEditText", ForPC, TextToUse, bCheckedBox); } + float AddAggroOnBump(APrimalDinoCharacter* BumpedBy) { return NativeCall(this, "APrimalStructure.AddAggroOnBump", BumpedBy); } int GetNumStructuresInRange(FVector AtLocation, float WithinRange) { return NativeCall(this, "APrimalStructure.GetNumStructuresInRange", AtLocation, WithinRange); } - static void GetStructuresInRange(UWorld * theWorld, FVector AtLocation, float WithinRange, TSubclassOf StructureClass, TArray * StructuresOut, bool bUseInternalOctree, APrimalStructure * IgnoreStructure) { NativeCall, TArray *, bool, APrimalStructure *>(nullptr, "APrimalStructure.GetStructuresInRange", theWorld, AtLocation, WithinRange, StructureClass, StructuresOut, bUseInternalOctree, IgnoreStructure); } - static int GetNumStructuresInRangeStructureTypeFlag(UWorld * theWorld, FVector AtLocation, int TypeFlag, float WithinRange, bool bCheckBPCountStructureInRange, bool bUseInternalOctree, APrimalStructure * IgnoreStructure, bool bCheckWithAltCollisionChannel) { return NativeCall(nullptr, "APrimalStructure.GetNumStructuresInRangeStructureTypeFlag", theWorld, AtLocation, TypeFlag, WithinRange, bCheckBPCountStructureInRange, bUseInternalOctree, IgnoreStructure, bCheckWithAltCollisionChannel); } - bool AllowPickupForItem(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowPickupForItem", ForPC); } - bool AllowSnappingWith(APrimalStructure * OtherStructure, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowSnappingWith", OtherStructure, ForPC); } - bool AllowStructureAccess(APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowStructureAccess", ForPC); } - static bool IsPointObstructedByWorldGeometry(UWorld * ForWorld, FVector ThePoint, bool bIgnoreTerrain, bool bOnlyCheckTerrain, bool bIgnoreFoliage, float OBSTRUCTION_CHECK_DIST) { return NativeCall(nullptr, "APrimalStructure.IsPointObstructedByWorldGeometry", ForWorld, ThePoint, bIgnoreTerrain, bOnlyCheckTerrain, bIgnoreFoliage, OBSTRUCTION_CHECK_DIST); } + static void GetStructuresInRange(UWorld* theWorld, FVector AtLocation, float WithinRange, TSubclassOf StructureClass, TArray* StructuresOut, bool bUseInternalOctree, APrimalStructure* IgnoreStructure) { NativeCall, TArray*, bool, APrimalStructure*>(nullptr, "APrimalStructure.GetStructuresInRange", theWorld, AtLocation, WithinRange, StructureClass, StructuresOut, bUseInternalOctree, IgnoreStructure); } + static int GetNumStructuresInRangeStructureTypeFlag(UWorld* theWorld, FVector AtLocation, int TypeFlag, float WithinRange, bool bCheckBPCountStructureInRange, bool bUseInternalOctree, APrimalStructure* IgnoreStructure, bool bCheckWithAltCollisionChannel) { return NativeCall(nullptr, "APrimalStructure.GetNumStructuresInRangeStructureTypeFlag", theWorld, AtLocation, TypeFlag, WithinRange, bCheckBPCountStructureInRange, bUseInternalOctree, IgnoreStructure, bCheckWithAltCollisionChannel); } + bool AllowPickupForItem(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructure.AllowPickupForItem", ForPC); } + bool CanPickupStructureFromRecentPlacement() { return NativeCall(this, "APrimalStructure.CanPickupStructureFromRecentPlacement"); } + void DisableStructurePickup() { NativeCall(this, "APrimalStructure.DisableStructurePickup"); } + void MultiSetPickupAllowedBeforeNetworkTime_Implementation(long double NewTime) { NativeCall(this, "APrimalStructure.MultiSetPickupAllowedBeforeNetworkTime_Implementation", NewTime); } + bool AllowSnappingWith(APrimalStructure* OtherStructure, APlayerController* ForPC) { return NativeCall(this, "APrimalStructure.AllowSnappingWith", OtherStructure, ForPC); } + bool SetVariant(int VariantIndex, bool bForceSet) { return NativeCall(this, "APrimalStructure.SetVariant", VariantIndex, bForceSet); } + void RefreshVariantSettings(int NewVariantIndex) { NativeCall(this, "APrimalStructure.RefreshVariantSettings", NewVariantIndex); } + void MultiRefreshVariantSettings_Implementation(int NewVariantIndex) { NativeCall(this, "APrimalStructure.MultiRefreshVariantSettings_Implementation", NewVariantIndex); } + FStructureVariant* GetDefaultVariant(FStructureVariant* result) { return NativeCall(this, "APrimalStructure.GetDefaultVariant", result); } + bool AllowStructureAccess(APlayerController* ForPC) { return NativeCall(this, "APrimalStructure.AllowStructureAccess", ForPC); } + static bool IsPointObstructedByWorldGeometry(UWorld* ForWorld, FVector ThePoint, bool bIgnoreTerrain, bool bOnlyCheckTerrain, bool bIgnoreFoliage, float OBSTRUCTION_CHECK_DIST) { return NativeCall(nullptr, "APrimalStructure.IsPointObstructedByWorldGeometry", ForWorld, ThePoint, bIgnoreTerrain, bOnlyCheckTerrain, bIgnoreFoliage, OBSTRUCTION_CHECK_DIST); } bool CanBePainted() { return NativeCall(this, "APrimalStructure.CanBePainted"); } - UPaintingTexture * GetPaintingTexture() { return NativeCall(this, "APrimalStructure.GetPaintingTexture"); } - APrimalStructureDoor * GetLinkedDoor() { return NativeCall(this, "APrimalStructure.GetLinkedDoor"); } - FString * GetEntryString(FString * result) { return NativeCall(this, "APrimalStructure.GetEntryString", result); } - UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIcon", AssociatedDataObject, bIsEnabled); } - UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } - UObject * GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalStructure.GetUObjectInterfaceDataListEntryInterface"); } - FString * GetEntryDescription(FString * result) { return NativeCall(this, "APrimalStructure.GetEntryDescription", result); } - bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalStructure.PreventCharacterBasing", OtherActor, BasedOnComponent); } + UPaintingTexture* GetPaintingTexture() { return NativeCall(this, "APrimalStructure.GetPaintingTexture"); } + APrimalStructureDoor* GetLinkedDoor() { return NativeCall(this, "APrimalStructure.GetLinkedDoor"); } + FString* GetEntryString(FString* result) { return NativeCall(this, "APrimalStructure.GetEntryString", result); } + UTexture2D* GetEntryIcon(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + UMaterialInterface* GetEntryIconMaterial(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + bool CanBeBaseForCharacter(APawn* Pawn) { return NativeCall(this, "APrimalStructure.CanBeBaseForCharacter", Pawn); } + UObject* GetObjectW() { return NativeCall(this, "APrimalStructure.GetObjectW"); } + FString* GetEntryDescription(FString* result) { return NativeCall(this, "APrimalStructure.GetEntryDescription", result); } + bool PreventCharacterBasing(AActor* OtherActor, UPrimitiveComponent* BasedOnComponent) { return NativeCall(this, "APrimalStructure.PreventCharacterBasing", OtherActor, BasedOnComponent); } void ClearCustomColors_Implementation() { NativeCall(this, "APrimalStructure.ClearCustomColors_Implementation"); } bool PreventPlacingOnFloorClass(TSubclassOf FloorClass) { return NativeCall>(this, "APrimalStructure.PreventPlacingOnFloorClass", FloorClass); } void UpdateTribeGroupStructureRank_Implementation(char NewRank) { NativeCall(this, "APrimalStructure.UpdateTribeGroupStructureRank_Implementation", NewRank); } - bool AllowPlacingOnSaddleParentClass(APrimalDinoCharacter * theDino, bool bForcePrevent) { return NativeCall(this, "APrimalStructure.AllowPlacingOnSaddleParentClass", theDino, bForcePrevent); } - static APrimalStructure * GetClosestStructureToPoint(UWorld * ForWorld, FVector AtPoint, float OverlapRadius) { return NativeCall(nullptr, "APrimalStructure.GetClosestStructureToPoint", ForWorld, AtPoint, OverlapRadius); } + bool AllowPlacingOnSaddleParentClass(APrimalDinoCharacter* theDino, bool bForcePrevent) { return NativeCall(this, "APrimalStructure.AllowPlacingOnSaddleParentClass", theDino, bForcePrevent); } + static APrimalStructure* GetClosestStructureToPoint(UWorld* ForWorld, FVector AtPoint, float OverlapRadius) { return NativeCall(nullptr, "APrimalStructure.GetClosestStructureToPoint", ForWorld, AtPoint, OverlapRadius); } float GetStructureDemolishTime() { return NativeCall(this, "APrimalStructure.GetStructureDemolishTime"); } bool IsOnlyLinkedToFastDecayStructures() { return NativeCall(this, "APrimalStructure.IsOnlyLinkedToFastDecayStructures"); } - bool IsOnlyLinkedToFastDecayStructuresInternal(TSet, FDefaultSetAllocator> * TestedStructures) { return NativeCall, FDefaultSetAllocator> *>(this, "APrimalStructure.IsOnlyLinkedToFastDecayStructuresInternal", TestedStructures); } + bool IsOnlyLinkedToFastDecayStructuresInternal(TSet, FDefaultSetAllocator>* TestedStructures) { return NativeCall, FDefaultSetAllocator>*>(this, "APrimalStructure.IsOnlyLinkedToFastDecayStructuresInternal", TestedStructures); } bool CanAutoDemolish() { return NativeCall(this, "APrimalStructure.CanAutoDemolish"); } + bool IsValidSnapPointFrom_Implementation(APrimalStructure* ChildStructure, int MySnapPointToIndex) { return NativeCall(this, "APrimalStructure.IsValidSnapPointFrom_Implementation", ChildStructure, MySnapPointToIndex); } + FName* GetSnapPointName(FName* result, int SnapPointIndex) { return NativeCall(this, "APrimalStructure.GetSnapPointName", result, SnapPointIndex); } + ADayCycleManager* GetDayCycleManager() { return NativeCall(this, "APrimalStructure.GetDayCycleManager"); } void DelayedDisableSnapParent() { NativeCall(this, "APrimalStructure.DelayedDisableSnapParent"); } void SetEnabledPrimarySnappedStructureParent_Implementation(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabledPrimarySnappedStructureParent_Implementation", bEnabled); } void SetEnabled(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabled", bEnabled); } bool AllowCreateDynamicMaterials() { return NativeCall(this, "APrimalStructure.AllowCreateDynamicMaterials"); } - void CreateDynamicMaterials() { NativeCall(this, "APrimalStructure.CreateDynamicMaterials"); } + void CreateDynamicMaterials(UMeshComponent* ForceCreateForComponent) { NativeCall(this, "APrimalStructure.CreateDynamicMaterials", ForceCreateForComponent); } + FLinearColor* GetStructureColor(FLinearColor* result, int ColorRegionIndex) { return NativeCall(this, "APrimalStructure.GetStructureColor", result, ColorRegionIndex); } void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalStructure.FinalLoadedFromSaveGame"); } void UpdateStencilValues() { NativeCall(this, "APrimalStructure.UpdateStencilValues"); } - FRotator * GetPlayerSpawnRotation(FRotator * result) { return NativeCall(this, "APrimalStructure.GetPlayerSpawnRotation", result); } - void BPPlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.BPPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + int GetStructureColorValue(int ColorRegionIndex) { return NativeCall(this, "APrimalStructure.GetStructureColorValue", ColorRegionIndex); } + void SetStructureColorValue(int ColorRegionIndex, int SetVal) { NativeCall(this, "APrimalStructure.SetStructureColorValue", ColorRegionIndex, SetVal); } + void StructureHarvestingDepleted(UPrimalHarvestingComponent* fromComponent) { NativeCall(this, "APrimalStructure.StructureHarvestingDepleted", fromComponent); } + void SetHarvestingActive(bool bActive, bool bOverrideBaseHealth, float BaseHarvestHealthMult, bool bAssignToTribe, int AssignedToTribeID) { NativeCall(this, "APrimalStructure.SetHarvestingActive", bActive, bOverrideBaseHealth, BaseHarvestHealthMult, bAssignToTribe, AssignedToTribeID); } + FVector* GetTargetPathfindingLocation(FVector* result, AActor* Attacker) { return NativeCall(this, "APrimalStructure.GetTargetPathfindingLocation", result, Attacker); } + FVector* GetTargetingLocation(FVector* result, AActor* Attacker) { return NativeCall(this, "APrimalStructure.GetTargetingLocation", result, Attacker); } + bool GetClosestTargetOverride(FVector* attackPos, FVector* targetPos) { return NativeCall(this, "APrimalStructure.GetClosestTargetOverride", attackPos, targetPos); } + bool IsDeprecated() { return NativeCall(this, "APrimalStructure.IsDeprecated"); } + bool IsActiveEventStructure() { return NativeCall(this, "APrimalStructure.IsActiveEventStructure"); } + void DeferredDeprecationCheck() { NativeCall(this, "APrimalStructure.DeferredDeprecationCheck"); } static void StaticRegisterNativesAPrimalStructure() { NativeCall(nullptr, "APrimalStructure.StaticRegisterNativesAPrimalStructure"); } - bool BPAllowSnappingWith(APrimalStructure * OtherStructure, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.BPAllowSnappingWith", OtherStructure, ForPC); } - bool BPForceConsideredEnemyFoundation(APlayerController * PC, APrimalStructure * ForNewStructure, FVector * TestAtLocation) { return NativeCall(this, "APrimalStructure.BPForceConsideredEnemyFoundation", PC, ForNewStructure, TestAtLocation); } - bool BPImpactEffect(FHitResult * HitRes, FVector * ShootDirection) { return NativeCall(this, "APrimalStructure.BPImpactEffect", HitRes, ShootDirection); } - int BPIsAllowedToBuild(FPlacementData * OutPlacementData, int CurrentAllowedReason) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuild", OutPlacementData, CurrentAllowedReason); } - int BPIsAllowedToBuildEx(FPlacementData * OutPlacementData, int CurrentAllowedReason, APlayerController * PC, bool bFinalPlacement) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuildEx", OutPlacementData, CurrentAllowedReason, PC, bFinalPlacement); } - FString * BPOverrideCantBuildReasonString(FString * result, int CantBuildReason) { return NativeCall(this, "APrimalStructure.BPOverrideCantBuildReasonString", result, CantBuildReason); } - bool BPPreventPlacingOnFloorStructure(FPlacementData * theOutPlacementData, APrimalStructure * FloorStructure) { return NativeCall(this, "APrimalStructure.BPPreventPlacingOnFloorStructure", theOutPlacementData, FloorStructure); } - bool BPPreventPlacingStructureOntoMe(APlayerController * PC, APrimalStructure * ForNewStructure, FHitResult * ForHitResult) { return NativeCall(this, "APrimalStructure.BPPreventPlacingStructureOntoMe", PC, ForNewStructure, ForHitResult); } - bool BPPreventSpawnForPlayer(AShooterPlayerController * PC, bool bCheckCooldownTime, APrimalStructure * FromStructure) { return NativeCall(this, "APrimalStructure.BPPreventSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } - bool BPPreventUsingAsFloorForStructure(FPlacementData * theOutPlacementData, APrimalStructure * StructureToPlaceOnMe) { return NativeCall(this, "APrimalStructure.BPPreventUsingAsFloorForStructure", theOutPlacementData, StructureToPlaceOnMe); } + void BlueprintDrawHUD(AShooterHUD* HUD, float CenterX, float CenterY) { NativeCall(this, "APrimalStructure.BlueprintDrawHUD", HUD, CenterX, CenterY); } + void BlueprintDrawPreviewHUD(AShooterHUD* HUD, float CenterX, float CenterY) { NativeCall(this, "APrimalStructure.BlueprintDrawPreviewHUD", HUD, CenterX, CenterY); } + bool BPAllowPickupGiveItem(APlayerController* ForPC) { return NativeCall(this, "APrimalStructure.BPAllowPickupGiveItem", ForPC); } + bool BPAllowSnappingWith(APrimalStructure* OtherStructure, APlayerController* ForPC) { return NativeCall(this, "APrimalStructure.BPAllowSnappingWith", OtherStructure, ForPC); } + bool BPAllowSnapRotationForStructure(int ThisSnapPointIndex, FName ThisSnapPointName, APrimalStructure* OtherStructure, int OtherStructureSnapPointIndex, FName OtherStructureSnapPointName) { return NativeCall(this, "APrimalStructure.BPAllowSnapRotationForStructure", ThisSnapPointIndex, ThisSnapPointName, OtherStructure, OtherStructureSnapPointIndex, OtherStructureSnapPointName); } + bool BPAllowSwitchToVariant(int VariantIndex) { return NativeCall(this, "APrimalStructure.BPAllowSwitchToVariant", VariantIndex); } + void BPApplyCustomDurabilityOnPickup(UPrimalItem* pickedup) { NativeCall(this, "APrimalStructure.BPApplyCustomDurabilityOnPickup", pickedup); } + void BPBeginPreview() { NativeCall(this, "APrimalStructure.BPBeginPreview"); } + void BPDefaultProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool checkedBox) { NativeCall(this, "APrimalStructure.BPDefaultProcessEditText", ForPC, TextToUse, checkedBox); } + bool BPForceConsideredEnemyFoundation(APlayerController* PC, APrimalStructure* ForNewStructure, FVector* TestAtLocation) { return NativeCall(this, "APrimalStructure.BPForceConsideredEnemyFoundation", PC, ForNewStructure, TestAtLocation); } + void BPGetInfoFromConsumedItemForPlacedStructure(UPrimalItem* ItemToConsumed) { NativeCall(this, "APrimalStructure.BPGetInfoFromConsumedItemForPlacedStructure", ItemToConsumed); } + bool BPHandleBedFastTravel(AShooterPlayerController* ForPC, APrimalStructure* ToBed) { return NativeCall(this, "APrimalStructure.BPHandleBedFastTravel", ForPC, ToBed); } + void BPHandleStructureEnabled(bool bEnabled) { NativeCall(this, "APrimalStructure.BPHandleStructureEnabled", bEnabled); } + bool BPImpactEffect(FHitResult* HitRes, FVector* ShootDirection) { return NativeCall(this, "APrimalStructure.BPImpactEffect", HitRes, ShootDirection); } + int BPIsAllowedToBuild(FPlacementData* OutPlacementData, int CurrentAllowedReason) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuild", OutPlacementData, CurrentAllowedReason); } + int BPIsAllowedToBuildEx(FPlacementData* OutPlacementData, int CurrentAllowedReason, APlayerController* PC, bool bFinalPlacement, bool bChoosingRotation) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuildEx", OutPlacementData, CurrentAllowedReason, PC, bFinalPlacement, bChoosingRotation); } + void BPOnDemolish(APlayerController* ForPC, AActor* DamageCauser) { NativeCall(this, "APrimalStructure.BPOnDemolish", ForPC, DamageCauser); } + void BPOnStructurePickup(APlayerController* PlayerController, TSubclassOf ItemType, UPrimalItem* NewlyPickedUpItem, bool bIsQuickPickup) { NativeCall, UPrimalItem*, bool>(this, "APrimalStructure.BPOnStructurePickup", PlayerController, ItemType, NewlyPickedUpItem, bIsQuickPickup); } + void BPOnVariantSwitch(int NewVariantIndex) { NativeCall(this, "APrimalStructure.BPOnVariantSwitch", NewVariantIndex); } + bool BPOverrideAllowStructureAccess(AShooterPlayerController* ForPC, bool bIsAccessAllowed) { return NativeCall(this, "APrimalStructure.BPOverrideAllowStructureAccess", ForPC, bIsAccessAllowed); } + FString* BPOverrideCantBuildReasonString(FString* result, int CantBuildReason) { return NativeCall(this, "APrimalStructure.BPOverrideCantBuildReasonString", result, CantBuildReason); } + bool BPOverrideDemolish(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructure.BPOverrideDemolish", ForPC); } + FRotator* BPOverridePlacementRotation(FRotator* result, FVector ViewPos, FRotator ViewRot) { return NativeCall(this, "APrimalStructure.BPOverridePlacementRotation", result, ViewPos, ViewRot); } + bool BPOverrideSnappedFromTransform(APrimalStructure* parentStructure, int ParentSnapFromIndex, FName ParentSnapFromName, FVector UnsnappedPlacementPos, FRotator UnsnappedPlacementRot, FVector SnappedPlacementPos, FRotator SnappedPlacementRot, int SnapToIndex, FName SnapToName, FVector* OutLocation, FRotator* OutRotation, int* bForceInvalidateSnap) { return NativeCall(this, "APrimalStructure.BPOverrideSnappedFromTransform", parentStructure, ParentSnapFromIndex, ParentSnapFromName, UnsnappedPlacementPos, UnsnappedPlacementRot, SnappedPlacementPos, SnappedPlacementRot, SnapToIndex, SnapToName, OutLocation, OutRotation, bForceInvalidateSnap); } + bool BPOverrideSnappedToTransform(APrimalStructure* childStructure, int ChildSnapFromIndex, FName ChildSnapFromName, FVector UnsnappedPlacementPos, FRotator UnsnappedPlacementRot, FVector SnappedPlacementPos, FRotator SnappedPlacementRot, int SnapToIndex, FName SnapToName, FVector* OutLocation, FRotator* OutRotation, int* bForceInvalidateSnap) { return NativeCall(this, "APrimalStructure.BPOverrideSnappedToTransform", childStructure, ChildSnapFromIndex, ChildSnapFromName, UnsnappedPlacementPos, UnsnappedPlacementRot, SnappedPlacementPos, SnappedPlacementRot, SnapToIndex, SnapToName, OutLocation, OutRotation, bForceInvalidateSnap); } + FVector* BPOverrideTargetLocation(FVector* result, FVector* attackPos) { return NativeCall(this, "APrimalStructure.BPOverrideTargetLocation", result, attackPos); } + void BPPlacedStructure(APlayerController* ForPC) { NativeCall(this, "APrimalStructure.BPPlacedStructure", ForPC); } + void BPPlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalStructure.BPPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void BPPostLoadedFromSaveGame() { NativeCall(this, "APrimalStructure.BPPostLoadedFromSaveGame"); } + void BPPostSetStructureCollisionChannels() { NativeCall(this, "APrimalStructure.BPPostSetStructureCollisionChannels"); } + bool BPPreventPlacementOnPawn(APlayerController* PC, APrimalCharacter* ForCharacter, FName ForBone) { return NativeCall(this, "APrimalStructure.BPPreventPlacementOnPawn", PC, ForCharacter, ForBone); } + bool BPPreventPlacingOnFloorStructure(FPlacementData* theOutPlacementData, APrimalStructure* FloorStructure) { return NativeCall(this, "APrimalStructure.BPPreventPlacingOnFloorStructure", theOutPlacementData, FloorStructure); } + bool BPPreventPlacingStructureOntoMe(APlayerController* PC, APrimalStructure* ForNewStructure, FHitResult* ForHitResult) { return NativeCall(this, "APrimalStructure.BPPreventPlacingStructureOntoMe", PC, ForNewStructure, ForHitResult); } + bool BPPreventSpawnForPlayer(AShooterPlayerController* PC, bool bCheckCooldownTime, APrimalStructure* FromStructure) { return NativeCall(this, "APrimalStructure.BPPreventSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + bool BPPreventUsingAsFloorForStructure(FPlacementData* theOutPlacementData, APrimalStructure* StructureToPlaceOnMe) { return NativeCall(this, "APrimalStructure.BPPreventUsingAsFloorForStructure", theOutPlacementData, StructureToPlaceOnMe); } void BPRefreshedStructureColors() { NativeCall(this, "APrimalStructure.BPRefreshedStructureColors"); } + void BPStructurePreGetMultiUseEntries(APlayerController* ForPC) { NativeCall(this, "APrimalStructure.BPStructurePreGetMultiUseEntries", ForPC); } + bool BPTreatAsFoundationForSnappedStructure(APrimalStructure* OtherStructure, FPlacementData* WithPlacementData) { return NativeCall(this, "APrimalStructure.BPTreatAsFoundationForSnappedStructure", OtherStructure, WithPlacementData); } + void BPTriggerStasisEvent() { NativeCall(this, "APrimalStructure.BPTriggerStasisEvent"); } + void BPUnstasis() { NativeCall(this, "APrimalStructure.BPUnstasis"); } bool BPUseCountStructureInRange() { return NativeCall(this, "APrimalStructure.BPUseCountStructureInRange"); } - void ClientUpdateLinkedStructures(TArray * NewLinkedStructures) { NativeCall *>(this, "APrimalStructure.ClientUpdateLinkedStructures", NewLinkedStructures); } - void MultiAddStructuresPlacedOnFloor(APrimalStructure * structure) { NativeCall(this, "APrimalStructure.MultiAddStructuresPlacedOnFloor", structure); } + void ClearCustomColors() { NativeCall(this, "APrimalStructure.ClearCustomColors"); } + void ClientUpdateLinkedStructures(TArray* NewLinkedStructures) { NativeCall*>(this, "APrimalStructure.ClientUpdateLinkedStructures", NewLinkedStructures); } + TSubclassOf* GetBedFilterClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "APrimalStructure.GetBedFilterClass", result); } + bool IsValidForSnappingFrom(APrimalStructure* OtherStructure) { return NativeCall(this, "APrimalStructure.IsValidForSnappingFrom", OtherStructure); } + bool IsValidSnapPointFrom(APrimalStructure* ParentStructure, int MySnapPointFromIndex) { return NativeCall(this, "APrimalStructure.IsValidSnapPointFrom", ParentStructure, MySnapPointFromIndex); } + bool IsValidSnapPointTo(APrimalStructure* ChildStructure, int MySnapPointToIndex) { return NativeCall(this, "APrimalStructure.IsValidSnapPointTo", ChildStructure, MySnapPointToIndex); } + void MultiAddStructuresPlacedOnFloor(APrimalStructure* structure) { NativeCall(this, "APrimalStructure.MultiAddStructuresPlacedOnFloor", structure); } + void MultiRefreshVariantSettings(int NewVariantIndex) { NativeCall(this, "APrimalStructure.MultiRefreshVariantSettings", NewVariantIndex); } + void MultiSetPickupAllowedBeforeNetworkTime(long double NewTime) { NativeCall(this, "APrimalStructure.MultiSetPickupAllowedBeforeNetworkTime", NewTime); } void NetDoSpawnEffects() { NativeCall(this, "APrimalStructure.NetDoSpawnEffects"); } - void NetUpdateOriginalOwnerNameAndID(int NewOriginalOwnerID, FString * NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID", NewOriginalOwnerID, NewOriginalOwnerName); } - void NetUpdateTeamAndOwnerName(int NewTeam, FString * NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName", NewTeam, NewOwnerName); } + void NetSpawnCoreStructureDeathActor() { NativeCall(this, "APrimalStructure.NetSpawnCoreStructureDeathActor"); } + void NetUpdateOriginalOwnerNameAndID(int NewOriginalOwnerID, FString* NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID", NewOriginalOwnerID, NewOriginalOwnerName); } + void NetUpdateTeamAndOwnerName(int NewTeam, FString* NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName", NewTeam, NewOwnerName); } + void SetEnabledPrimarySnappedStructureParent(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabledPrimarySnappedStructureParent", bEnabled); } + void UpdateTribeGroupStructureRank(char NewRank) { NativeCall(this, "APrimalStructure.UpdateTribeGroupStructureRank", NewRank); } + + void GetMultiUseEntries(APlayerController* ForPC, TArray* MultiUseEntries) { NativeCall*>(this, "APrimalStructure.GetMultiUseEntries", ForPC, MultiUseEntries); } +}; + +struct APrimalStructureBed : APrimalStructure +{ + FVector& PlayerSpawnLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureBed.PlayerSpawnLocOffset"); } + FRotator& PlayerSpawnRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureBed.PlayerSpawnRotOffset"); } + unsigned int& LinkedPlayerIDField() { return *GetNativePointerField(this, "APrimalStructureBed.LinkedPlayerID"); } + FString& LinkedPlayerNameField() { return *GetNativePointerField(this, "APrimalStructureBed.LinkedPlayerName"); } + FString& BedNameField() { return *GetNativePointerField(this, "APrimalStructureBed.BedName"); } + float& UseCooldownTimeField() { return *GetNativePointerField(this, "APrimalStructureBed.UseCooldownTime"); } + float& UseCooldownRadiusField() { return *GetNativePointerField(this, "APrimalStructureBed.UseCooldownRadius"); } + float& AttachedToPlatformStructureEnemySpawnPreventionRadiusField() { return *GetNativePointerField(this, "APrimalStructureBed.AttachedToPlatformStructureEnemySpawnPreventionRadius"); } + long double& NextAllowedUseTimeField() { return *GetNativePointerField(this, "APrimalStructureBed.NextAllowedUseTime"); } + long double& LastSignNamingTimeField() { return *GetNativePointerField(this, "APrimalStructureBed.LastSignNamingTime"); } + + // Bit fields + + BitFieldValue bDestroyAfterRespawnUse() { return { this, "APrimalStructureBed.bDestroyAfterRespawnUse" }; } + + // Functions + + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureBed.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructureBed.StaticClass"); } + bool AllowPickupForItem(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructureBed.AllowPickupForItem", ForPC); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureBed.GetLifetimeReplicatedProps", OutLifetimeProps); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureBed.TryMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalStructureBed.ClientMultiUse", ForPC, UseIndex); } + void ProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool __formal) { NativeCall(this, "APrimalStructureBed.ProcessEditText", ForPC, TextToUse, __formal); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructureBed.DrawHUD", HUD); } + void PlacedStructure(AShooterPlayerController* PC) { NativeCall(this, "APrimalStructureBed.PlacedStructure", PC); } + bool AllowSpawnForPlayer(AShooterPlayerController* PC, bool bCheckCooldownTime, APrimalStructure* FromStructure) { return NativeCall(this, "APrimalStructureBed.AllowSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + bool AllowSpawnForDownloadedPlayer(unsigned __int64 PlayerDataID, unsigned __int64 TribeID, bool bCheckCooldownTime) { return NativeCall(this, "APrimalStructureBed.AllowSpawnForDownloadedPlayer", PlayerDataID, TribeID, bCheckCooldownTime); } + bool CheckStructureActivateTribeGroupPermission(unsigned __int64 PlayerDataID, unsigned __int64 TribeID) { return NativeCall(this, "APrimalStructureBed.CheckStructureActivateTribeGroupPermission", PlayerDataID, TribeID); } + void SpawnedPlayerFor_Implementation(AShooterPlayerController* PC, APawn* ForPawn) { NativeCall(this, "APrimalStructureBed.SpawnedPlayerFor_Implementation", PC, ForPawn); } + void Destroyed() { NativeCall(this, "APrimalStructureBed.Destroyed"); } + void BeginPlay() { NativeCall(this, "APrimalStructureBed.BeginPlay"); } + FSpawnPointInfo* GetSpawnPointInfo(FSpawnPointInfo* result) { return NativeCall(this, "APrimalStructureBed.GetSpawnPointInfo", result); } + static APrimalStructure* FindBedWithID(UWorld* forWorld, int theBedID) { return NativeCall(nullptr, "APrimalStructureBed.FindBedWithID", forWorld, theBedID); } + FVector* GetPlayerSpawnLocation(FVector* result) { return NativeCall(this, "APrimalStructureBed.GetPlayerSpawnLocation", result); } + FRotator* GetPlayerSpawnRotation(FRotator* result) { return NativeCall(this, "APrimalStructureBed.GetPlayerSpawnRotation", result); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructureBed.PostInitializeComponents"); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalStructureBed.GetDescriptiveName", result); } + static void StaticRegisterNativesAPrimalStructureBed() { NativeCall(nullptr, "APrimalStructureBed.StaticRegisterNativesAPrimalStructureBed"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureBed.GetPrivateStaticClass", Package); } + void SpawnedPlayerFor(AShooterPlayerController* PC, APawn* ForPawn) { NativeCall(this, "APrimalStructureBed.SpawnedPlayerFor", PC, ForPawn); } }; struct APrimalStructureDoor : APrimalStructure { TSubobjectPtr& MyDoorTransformField() { return *GetNativePointerField*>(this, "APrimalStructureDoor.MyDoorTransform"); } float& RotationSpeedField() { return *GetNativePointerField(this, "APrimalStructureDoor.RotationSpeed"); } - USoundCue * DoorOpenSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorOpenSound"); } - USoundCue * DoorCloseSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorCloseSound"); } + USoundCue* DoorOpenSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorOpenSound"); } + USoundCue* DoorCloseSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorCloseSound"); } unsigned int& CurrentPinCodeField() { return *GetNativePointerField(this, "APrimalStructureDoor.CurrentPinCode"); } float& DoorStateChangeIgnoreEncroachmentIntervalField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorStateChangeIgnoreEncroachmentInterval"); } char& DoorOpenStateField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorOpenState"); } @@ -490,9 +684,9 @@ struct APrimalStructureDoor : APrimalStructure long double& LastLockStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastLockStateChangeTime"); } FRotator& SecondDoorDefaultRotField() { return *GetNativePointerField(this, "APrimalStructureDoor.SecondDoorDefaultRot"); } float& CurrentDoorAngleField() { return *GetNativePointerField(this, "APrimalStructureDoor.CurrentDoorAngle"); } - USoundBase * UnlockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.UnlockDoorSound"); } - USoundBase * LockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockDoorSound"); } - USoundBase * LockedSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockedSound"); } + USoundBase* UnlockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.UnlockDoorSound"); } + USoundBase* LockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockDoorSound"); } + USoundBase* LockedSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockedSound"); } long double& LastPinOpenSuccessTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastPinOpenSuccessTime"); } long double& LastDoorStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastDoorStateChangeTime"); } char& DelayedDoorStateField() { return *GetNativePointerField(this, "APrimalStructureDoor.DelayedDoorState"); } @@ -521,37 +715,51 @@ struct APrimalStructureDoor : APrimalStructure // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureDoor.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureDoor.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructureDoor.StaticClass"); } void BeginPlay() { NativeCall(this, "APrimalStructureDoor.BeginPlay"); } void Tick(float DeltaSeconds) { NativeCall(this, "APrimalStructureDoor.Tick", DeltaSeconds); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureDoor.GetLifetimeReplicatedProps", OutLifetimeProps); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureDoor.DrawHUD", HUD); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureDoor.GetLifetimeReplicatedProps", OutLifetimeProps); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructureDoor.DrawHUD", HUD); } + void OnRep_DoorOpenState(char PrevDoorOpenState) { NativeCall(this, "APrimalStructureDoor.OnRep_DoorOpenState", PrevDoorOpenState); } void GotoDoorState(char DoorState) { NativeCall(this, "APrimalStructureDoor.GotoDoorState", DoorState); } void DelayedGotoDoorState(char DoorState, float DelayTime) { NativeCall(this, "APrimalStructureDoor.DelayedGotoDoorState", DoorState, DelayTime); } void DelayedGotoDoorStateTimer() { NativeCall(this, "APrimalStructureDoor.DelayedGotoDoorStateTimer"); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureDoor.TryMultiUse", ForPC, UseIndex); } - bool CanOpen(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.CanOpen", ForPC); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructureDoor.GetDescriptiveName", result); } - bool ApplyPinCode(AShooterPlayerController * ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureDoor.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + bool HasSamePinCode(APrimalStructureItemContainer* otherContainer) { return NativeCall(this, "APrimalStructureDoor.HasSamePinCode", otherContainer); } + bool IsPinLocked() { return NativeCall(this, "APrimalStructureDoor.IsPinLocked"); } + int GetPinCode() { return NativeCall(this, "APrimalStructureDoor.GetPinCode"); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureDoor.TryMultiUse", ForPC, UseIndex); } + bool CanOpen(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureDoor.CanOpen", ForPC); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalStructureDoor.GetDescriptiveName", result); } + bool ApplyPinCode(AShooterPlayerController* ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureDoor.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } void SetStaticMobility() { NativeCall(this, "APrimalStructureDoor.SetStaticMobility"); } void NetGotoDoorState_Implementation(char DoorState) { NativeCall(this, "APrimalStructureDoor.NetGotoDoorState_Implementation", DoorState); } void PostInitializeComponents() { NativeCall(this, "APrimalStructureDoor.PostInitializeComponents"); } - bool AllowStructureAccess(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowStructureAccess", ForPC); } - bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalStructureDoor.PreventCharacterBasing", OtherActor, BasedOnComponent); } - bool AllowPickupForItem(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowPickupForItem", ForPC); } - bool AllowIgnoreCharacterEncroachment_Implementation(UPrimitiveComponent * HitComponent, AActor * EncroachingCharacter) { return NativeCall(this, "APrimalStructureDoor.AllowIgnoreCharacterEncroachment_Implementation", HitComponent, EncroachingCharacter); } + bool AllowStructureAccess(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowStructureAccess", ForPC); } + bool PreventCharacterBasing(AActor* OtherActor, UPrimitiveComponent* BasedOnComponent) { return NativeCall(this, "APrimalStructureDoor.PreventCharacterBasing", OtherActor, BasedOnComponent); } + bool AllowPickupForItem(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowPickupForItem", ForPC); } + void BPSetDoorState(int DoorState) { NativeCall(this, "APrimalStructureDoor.BPSetDoorState", DoorState); } + bool AllowIgnoreCharacterEncroachment_Implementation(UPrimitiveComponent* HitComponent, AActor* EncroachingCharacter) { return NativeCall(this, "APrimalStructureDoor.AllowIgnoreCharacterEncroachment_Implementation", HitComponent, EncroachingCharacter); } static void StaticRegisterNativesAPrimalStructureDoor() { NativeCall(nullptr, "APrimalStructureDoor.StaticRegisterNativesAPrimalStructureDoor"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureDoor.GetPrivateStaticClass", Package); } + void BPGotoDoorState(int NewDoorState) { NativeCall(this, "APrimalStructureDoor.BPGotoDoorState", NewDoorState); } + void NetGotoDoorState(char DoorState) { NativeCall(this, "APrimalStructureDoor.NetGotoDoorState", DoorState); } }; struct APrimalStructureItemContainer : APrimalStructure { - UPrimalInventoryComponent * MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MyInventoryComponent"); } + UPrimalInventoryComponent* MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MyInventoryComponent"); } + float& SolarRefreshIntervalMinField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.SolarRefreshIntervalMin"); } + float& SolarRefreshIntervalMaxField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.SolarRefreshIntervalMax"); } + float& SolarRefreshIntervalField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.SolarRefreshInterval"); } + long double& LastSolarRefreshTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastSolarRefreshTime"); } TSubclassOf& BatteryClassOverrideField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.BatteryClassOverride"); } int& PoweredOverrideCounterField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.PoweredOverrideCounter"); } float& NotifyNearbyPowerGeneratorDistanceField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NotifyNearbyPowerGeneratorDistance"); } int& NotifyNearbyPowerGeneratorOctreeGroupField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NotifyNearbyPowerGeneratorOctreeGroup"); } - TArray ActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ActivateMaterials"); } - TArray InActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.InActivateMaterials"); } + TArray ActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ActivateMaterials"); } + TArray InActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.InActivateMaterials"); } + UChildActorComponent* MyChildEmitterSpawnableField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MyChildEmitterSpawnable"); } FString& BoxNameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BoxName"); } float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.InsulationRange"); } float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.HyperThermiaInsulation"); } @@ -577,11 +785,12 @@ struct APrimalStructureItemContainer : APrimalStructure long double& LastLockStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastLockStateChangeTime"); } long double& LastActiveStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastActiveStateChangeTime"); } int& LastPowerJunctionLinkIDField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastPowerJunctionLinkID"); } + FPrimalMapMarkerEntryData& MapMarkerLocationInfoField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MapMarkerLocationInfo"); } float& BasedCharacterDamageIntervalField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BasedCharacterDamageInterval"); } float& BasedCharacterDamageAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BasedCharacterDamageAmount"); } TSubclassOf& BasedCharacterDamageTypeField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.BasedCharacterDamageType"); } TSubclassOf& EngramRequirementClassOverrideField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.EngramRequirementClassOverride"); } - AActor * LinkedBlueprintSpawnActorPointField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LinkedBlueprintSpawnActorPoint"); } + AActor* LinkedBlueprintSpawnActorPointField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LinkedBlueprintSpawnActorPoint"); } TSubclassOf& PoweredNearbyStructureTemplateField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.PoweredNearbyStructureTemplate"); } float& PoweredNearbyStructureRangeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.PoweredNearbyStructureRange"); } FString& OpenSceneActionNameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.OpenSceneActionName"); } @@ -593,15 +802,15 @@ struct APrimalStructureItemContainer : APrimalStructure long double& LastSignNamingTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastSignNamingTime"); } FVector& JunctionCableBeamOffsetStartField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.JunctionCableBeamOffsetStart"); } FVector& JunctionCableBeamOffsetEndField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.JunctionCableBeamOffsetEnd"); } - USoundBase * ContainerActivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerActivatedSound"); } - USoundBase * ContainerDeactivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerDeactivatedSound"); } + USoundBase* ContainerActivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerActivatedSound"); } + USoundBase* ContainerDeactivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerDeactivatedSound"); } TSubclassOf& DemolishInventoryDepositClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.DemolishInventoryDepositClass"); } TSubclassOf& FuelItemTrueClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.FuelItemTrueClass"); } TSubclassOf& ReplicatedFuelItemClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ReplicatedFuelItemClass"); } __int16& ReplicatedFuelItemColorIndexField() { return *GetNativePointerField<__int16*>(this, "APrimalStructureItemContainer.ReplicatedFuelItemColorIndex"); } - USoundBase * DefaultAudioTemplateField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DefaultAudioTemplate"); } + USoundBase* DefaultAudioTemplateField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DefaultAudioTemplate"); } TArray>& OverrideParticleTemplateItemClassesField() { return *GetNativePointerField>*>(this, "APrimalStructureItemContainer.OverrideParticleTemplateItemClasses"); } - TArray OverrideAudioTemplatesField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.OverrideAudioTemplates"); } + TArray OverrideAudioTemplatesField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.OverrideAudioTemplates"); } float& MaxActivationDistanceField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MaxActivationDistance"); } FString& BoxNamePrefaceStringField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BoxNamePrefaceString"); } char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.TribeGroupInventoryRank"); } @@ -630,6 +839,7 @@ struct APrimalStructureItemContainer : APrimalStructure BitFieldValue bCraftingSubstractConnectedWater() { return { this, "APrimalStructureItemContainer.bCraftingSubstractConnectedWater" }; } BitFieldValue bForceNoPinLocking() { return { this, "APrimalStructureItemContainer.bForceNoPinLocking" }; } BitFieldValue bServerBPNotifyInventoryItemChanges() { return { this, "APrimalStructureItemContainer.bServerBPNotifyInventoryItemChanges" }; } + BitFieldValue bClientBPNotifyInventoryItemChanges() { return { this, "APrimalStructureItemContainer.bClientBPNotifyInventoryItemChanges" }; } BitFieldValue bDisplayActivationOnInventoryUI() { return { this, "APrimalStructureItemContainer.bDisplayActivationOnInventoryUI" }; } BitFieldValue bUseBPGetFuelConsumptionMultiplier() { return { this, "APrimalStructureItemContainer.bUseBPGetFuelConsumptionMultiplier" }; } BitFieldValue bPreventToggleActivation() { return { this, "APrimalStructureItemContainer.bPreventToggleActivation" }; } @@ -642,11 +852,15 @@ struct APrimalStructureItemContainer : APrimalStructure BitFieldValue bPoweredAllowBattery() { return { this, "APrimalStructureItemContainer.bPoweredAllowBattery" }; } BitFieldValue bPoweredUsingBattery() { return { this, "APrimalStructureItemContainer.bPoweredUsingBattery" }; } BitFieldValue bPoweredHasBattery() { return { this, "APrimalStructureItemContainer.bPoweredHasBattery" }; } + BitFieldValue bPoweredAllowSolar() { return { this, "APrimalStructureItemContainer.bPoweredAllowSolar" }; } + BitFieldValue bPoweredUsingSolar() { return { this, "APrimalStructureItemContainer.bPoweredUsingSolar" }; } + BitFieldValue UseBPApplyPinCode() { return { this, "APrimalStructureItemContainer.UseBPApplyPinCode" }; } BitFieldValue bIsLocked() { return { this, "APrimalStructureItemContainer.bIsLocked" }; } BitFieldValue bIsPinLocked() { return { this, "APrimalStructureItemContainer.bIsPinLocked" }; } BitFieldValue bHasFuel() { return { this, "APrimalStructureItemContainer.bHasFuel" }; } BitFieldValue bIsUnderwater() { return { this, "APrimalStructureItemContainer.bIsUnderwater" }; } BitFieldValue bDisableActivationUnderwater() { return { this, "APrimalStructureItemContainer.bDisableActivationUnderwater" }; } + BitFieldValue bForcePreventAutoActivateWhenConnectedToWater() { return { this, "APrimalStructureItemContainer.bForcePreventAutoActivateWhenConnectedToWater" }; } BitFieldValue bSupportsLocking() { return { this, "APrimalStructureItemContainer.bSupportsLocking" }; } BitFieldValue bSupportsPinLocking() { return { this, "APrimalStructureItemContainer.bSupportsPinLocking" }; } BitFieldValue bDropInventoryOnDestruction() { return { this, "APrimalStructureItemContainer.bDropInventoryOnDestruction" }; } @@ -676,75 +890,111 @@ struct APrimalStructureItemContainer : APrimalStructure BitFieldValue bInventoryForcePreventItemAppends() { return { this, "APrimalStructureItemContainer.bInventoryForcePreventItemAppends" }; } BitFieldValue bDidSetContainerActive() { return { this, "APrimalStructureItemContainer.bDidSetContainerActive" }; } BitFieldValue bUseDeathCacheCharacterID() { return { this, "APrimalStructureItemContainer.bUseDeathCacheCharacterID" }; } + BitFieldValue bHideAutoActivateToggle() { return { this, "APrimalStructureItemContainer.bHideAutoActivateToggle" }; } + BitFieldValue bUseCooldownOnTransferAll() { return { this, "APrimalStructureItemContainer.bUseCooldownOnTransferAll" }; } BitFieldValue bUseBPSetPlayerConstructor() { return { this, "APrimalStructureItemContainer.bUseBPSetPlayerConstructor" }; } BitFieldValue bReplicateLastActivatedTime() { return { this, "APrimalStructureItemContainer.bReplicateLastActivatedTime" }; } // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureItemContainer.GetPrivateStaticClass"); } - void PostSpawnInitialize() { NativeCall(this, "APrimalStructureItemContainer.PostSpawnInitialize"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureItemContainer.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructureItemContainer.StaticClass"); } bool IsPowered() { return NativeCall(this, "APrimalStructureItemContainer.IsPowered"); } bool CanBeActivated() { return NativeCall(this, "APrimalStructureItemContainer.CanBeActivated"); } - bool AllowToggleActivation(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.AllowToggleActivation", ForPC); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureItemContainer.TryMultiUse", ForPC, UseIndex); } + bool AllowToggleActivation(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.AllowToggleActivation", ForPC); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureItemContainer.TryMultiUse", ForPC, UseIndex); } float SubtractWaterFromConnections(float Amount, bool bAllowNetworking) { return NativeCall(this, "APrimalStructureItemContainer.SubtractWaterFromConnections", Amount, bAllowNetworking); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureItemContainer.ClientMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalStructureItemContainer.ClientMultiUse", ForPC, UseIndex); } void PreInitializeComponents() { NativeCall(this, "APrimalStructureItemContainer.PreInitializeComponents"); } void BeginPlay() { NativeCall(this, "APrimalStructureItemContainer.BeginPlay"); } void CheckForDeathCacheEmitter() { NativeCall(this, "APrimalStructureItemContainer.CheckForDeathCacheEmitter"); } void PlacedStructureLocation() { NativeCall(this, "APrimalStructureItemContainer.PlacedStructureLocation"); } void Stasis() { NativeCall(this, "APrimalStructureItemContainer.Stasis"); } void Unstasis() { NativeCall(this, "APrimalStructureItemContainer.Unstasis"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureItemContainer.GetLifetimeReplicatedProps", OutLifetimeProps); } - USoundBase * GetOverrideAudioTemplate() { return NativeCall(this, "APrimalStructureItemContainer.GetOverrideAudioTemplate"); } + void PlacedStructure(AShooterPlayerController* PC) { NativeCall(this, "APrimalStructureItemContainer.PlacedStructure", PC); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureItemContainer.GetLifetimeReplicatedProps", OutLifetimeProps); } + USoundBase* GetOverrideAudioTemplate() { return NativeCall(this, "APrimalStructureItemContainer.GetOverrideAudioTemplate"); } + bool IsValidWaterSourceForPipe(APrimalStructureWaterPipe* ForWaterPipe) { return NativeCall(this, "APrimalStructureItemContainer.IsValidWaterSourceForPipe", ForWaterPipe); } void SetDelayedActivation() { NativeCall(this, "APrimalStructureItemContainer.SetDelayedActivation"); } void TryActivation() { NativeCall(this, "APrimalStructureItemContainer.TryActivation"); } void SetContainerActive(bool bNewActive) { NativeCall(this, "APrimalStructureItemContainer.SetContainerActive", bNewActive); } - bool CanOpen(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.CanOpen", ForPC); } - void ServerCloseRemoteInventory(AShooterPlayerController * ByPC) { NativeCall(this, "APrimalStructureItemContainer.ServerCloseRemoteInventory", ByPC); } - FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructureItemContainer.GetDescriptiveName", result); } - bool ApplyPinCode(AShooterPlayerController * ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureItemContainer.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } - bool RemoteInventoryAllowViewing(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.RemoteInventoryAllowViewing", ForPC); } - bool RemoteInventoryAllowActivation(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.RemoteInventoryAllowActivation", ForPC); } + FString* GetDebugInfoString(FString* result) { return NativeCall(this, "APrimalStructureItemContainer.GetDebugInfoString", result); } + bool CanOpen(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.CanOpen", ForPC); } + void ServerCloseRemoteInventory(AShooterPlayerController* ByPC) { NativeCall(this, "APrimalStructureItemContainer.ServerCloseRemoteInventory", ByPC); } + bool VerifyPinCode(int pinCode) { return NativeCall(this, "APrimalStructureItemContainer.VerifyPinCode", pinCode); } + bool HasSamePinCode(APrimalStructureItemContainer* otherContainer) { return NativeCall(this, "APrimalStructureItemContainer.HasSamePinCode", otherContainer); } + bool IsPinLocked() { return NativeCall(this, "APrimalStructureItemContainer.IsPinLocked"); } + int GetPinCode() { return NativeCall(this, "APrimalStructureItemContainer.GetPinCode"); } + int AddToValidatedByPinCodePlayerControllers(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.AddToValidatedByPinCodePlayerControllers", ForPC); } + bool IsValidatedPinCodePlayerController(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.IsValidatedPinCodePlayerController", ForPC); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalStructureItemContainer.GetDescriptiveName", result); } + bool ApplyPinCode(AShooterPlayerController* ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureItemContainer.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + bool RemoteInventoryAllowViewing(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.RemoteInventoryAllowViewing", ForPC); } + bool RemoteInventoryAllowActivation(AShooterPlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer.RemoteInventoryAllowActivation", ForPC); } void UpdateContainerActiveHealthDecrease() { NativeCall(this, "APrimalStructureItemContainer.UpdateContainerActiveHealthDecrease"); } void CheckAutoReactivate() { NativeCall(this, "APrimalStructureItemContainer.CheckAutoReactivate"); } void ConsumeFuel(bool bGiveItem) { NativeCall(this, "APrimalStructureItemContainer.ConsumeFuel", bGiveItem); } - void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemQuantityUpdated", anItem, amount); } - void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemQuantityUpdated(UPrimalItem* anItem, int amount) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemAdded", anItem, bEquipItem); } + void DeferredNotifyItemAdded() { NativeCall(this, "APrimalStructureItemContainer.DeferredNotifyItemAdded"); } void CheckFuelSetActive() { NativeCall(this, "APrimalStructureItemContainer.CheckFuelSetActive"); } - void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemRemoved", anItem); } + void NotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemRemoved", anItem); } + void ClientNotifyInventoryItemChange(bool bIsItemAdd, UPrimalItem* theItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.ClientNotifyInventoryItemChange", bIsItemAdd, theItem, bEquipItem); } void RefreshFuelState() { NativeCall(this, "APrimalStructureItemContainer.RefreshFuelState"); } bool UseItemSpoilingTimeMultipliers() { return NativeCall(this, "APrimalStructureItemContainer.UseItemSpoilingTimeMultipliers"); } - void CharacterBasedOnUpdate(AActor * characterBasedOnMe, float DeltaSeconds) { NativeCall(this, "APrimalStructureItemContainer.CharacterBasedOnUpdate", characterBasedOnMe, DeltaSeconds); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureItemContainer.DrawHUD", HUD); } - void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool __formal) { NativeCall(this, "APrimalStructureItemContainer.ProcessEditText", ForPC, TextToUse, __formal); } + void UpdateSolarPower() { NativeCall(this, "APrimalStructureItemContainer.UpdateSolarPower"); } + void CharacterBasedOnUpdate(AActor* characterBasedOnMe, float DeltaSeconds) { NativeCall(this, "APrimalStructureItemContainer.CharacterBasedOnUpdate", characterBasedOnMe, DeltaSeconds); } + bool AllowSaving() { return NativeCall(this, "APrimalStructureItemContainer.AllowSaving"); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructureItemContainer.DrawHUD", HUD); } + void ProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool bCheckedBox) { NativeCall(this, "APrimalStructureItemContainer.ProcessEditText", ForPC, TextToUse, bCheckedBox); } void NetUpdateLocation_Implementation(FVector NewLocation) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateLocation_Implementation", NewLocation); } void NetSetContainerActive_Implementation(bool bSetActive, TSubclassOf NetReplicatedFuelItemClass, __int16 NetReplicatedFuelItemColorIndex) { NativeCall, __int16>(this, "APrimalStructureItemContainer.NetSetContainerActive_Implementation", bSetActive, NetReplicatedFuelItemClass, NetReplicatedFuelItemColorIndex); } - void NetUpdateBoxName_Implementation(FString * NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName_Implementation", NewName); } - void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructureItemContainer.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void NetUpdateBoxName_Implementation(FString* NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName_Implementation", NewName); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalStructureItemContainer.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } void SetDisabledTimer(float DisabledTime) { NativeCall(this, "APrimalStructureItemContainer.SetDisabledTimer", DisabledTime); } void EnableActive() { NativeCall(this, "APrimalStructureItemContainer.EnableActive"); } - void GetBlueprintSpawnActorTransform(FVector * spawnLoc, FRotator * spawnRot) { NativeCall(this, "APrimalStructureItemContainer.GetBlueprintSpawnActorTransform", spawnLoc, spawnRot); } + void GetBlueprintSpawnActorTransform(FVector* spawnLoc, FRotator* spawnRot) { NativeCall(this, "APrimalStructureItemContainer.GetBlueprintSpawnActorTransform", spawnLoc, spawnRot); } bool OverrideHasWaterSource() { return NativeCall(this, "APrimalStructureItemContainer.OverrideHasWaterSource"); } - void RefreshPowered(APrimalStructureItemContainer * InDirectPower) { NativeCall(this, "APrimalStructureItemContainer.RefreshPowered", InDirectPower); } + void RefreshPowered(APrimalStructureItemContainer* InDirectPower) { NativeCall(this, "APrimalStructureItemContainer.RefreshPowered", InDirectPower); } void MovePowerJunctionLink() { NativeCall(this, "APrimalStructureItemContainer.MovePowerJunctionLink"); } void RefreshPowerJunctionLink() { NativeCall(this, "APrimalStructureItemContainer.RefreshPowerJunctionLink"); } - void NotifyCraftedItem(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyCraftedItem", anItem); } + void NotifyCraftedItem(UPrimalItem* anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyCraftedItem", anItem); } void LoadedFromSaveGame() { NativeCall(this, "APrimalStructureItemContainer.LoadedFromSaveGame"); } - void CopyStructureValuesFrom(APrimalStructureItemContainer * otherItemContainer) { NativeCall(this, "APrimalStructureItemContainer.CopyStructureValuesFrom", otherItemContainer); } + void CopyStructureValuesFrom(APrimalStructureItemContainer* otherItemContainer) { NativeCall(this, "APrimalStructureItemContainer.CopyStructureValuesFrom", otherItemContainer); } + void PostSpawnInitialize() { NativeCall(this, "APrimalStructureItemContainer.PostSpawnInitialize"); } + void SetPoweredOverrideCounter(int NewPoweredOverrideCounter) { NativeCall(this, "APrimalStructureItemContainer.SetPoweredOverrideCounter", NewPoweredOverrideCounter); } void TargetingTeamChanged() { NativeCall(this, "APrimalStructureItemContainer.TargetingTeamChanged"); } - void SetPlayerConstructor(APlayerController * PC) { NativeCall(this, "APrimalStructureItemContainer.SetPlayerConstructor", PC); } - float GetUsablePriority() { return NativeCall(this, "APrimalStructureItemContainer.GetUsablePriority"); } + FSpawnPointInfo* GetSpawnPointInfo(FSpawnPointInfo* result) { return NativeCall(this, "APrimalStructureItemContainer.GetSpawnPointInfo", result); } + void SetPlayerConstructor(APlayerController* PC) { NativeCall(this, "APrimalStructureItemContainer.SetPlayerConstructor", PC); } + float GetUsablePriority_Implementation() { return NativeCall(this, "APrimalStructureItemContainer.GetUsablePriority_Implementation"); } void RefreshInventoryItemCounts() { NativeCall(this, "APrimalStructureItemContainer.RefreshInventoryItemCounts"); } - void NetUpdateBoxName(FString * NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName", NewName); } + bool IsPlayerControllerInPinCodeValidationList(APlayerController* PlayerController) { return NativeCall(this, "APrimalStructureItemContainer.IsPlayerControllerInPinCodeValidationList", PlayerController); } + int GetDeathCacheCharacterID() { return NativeCall(this, "APrimalStructureItemContainer.GetDeathCacheCharacterID"); } static void StaticRegisterNativesAPrimalStructureItemContainer() { NativeCall(nullptr, "APrimalStructureItemContainer.StaticRegisterNativesAPrimalStructureItemContainer"); } - void PowerGeneratorBuiltNearbyPoweredStructure(APrimalStructureItemContainer * PoweredStructure) { NativeCall(this, "APrimalStructureItemContainer.PowerGeneratorBuiltNearbyPoweredStructure", PoweredStructure); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureItemContainer.GetPrivateStaticClass", Package); } + bool BPApplyPinCode(AShooterPlayerController* ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureItemContainer.BPApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + bool BPCanBeActivated() { return NativeCall(this, "APrimalStructureItemContainer.BPCanBeActivated"); } + bool BPCanBeActivatedByPlayer(AShooterPlayerController* PC) { return NativeCall(this, "APrimalStructureItemContainer.BPCanBeActivatedByPlayer", PC); } + void BPContainerActivated() { NativeCall(this, "APrimalStructureItemContainer.BPContainerActivated"); } + void BPContainerDeactivated() { NativeCall(this, "APrimalStructureItemContainer.BPContainerDeactivated"); } + float BPGetFuelConsumptionMultiplier() { return NativeCall(this, "APrimalStructureItemContainer.BPGetFuelConsumptionMultiplier"); } + bool BPIsValidWaterSourceForPipe(APrimalStructureWaterPipe* ForWaterPipe) { return NativeCall(this, "APrimalStructureItemContainer.BPIsValidWaterSourceForPipe", ForWaterPipe); } + void BPNotifyInventoryItemChange(bool bIsItemAdd, UPrimalItem* theItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.BPNotifyInventoryItemChange", bIsItemAdd, theItem, bEquipItem); } + void BPOnContainerActiveHealthDecrease() { NativeCall(this, "APrimalStructureItemContainer.BPOnContainerActiveHealthDecrease"); } + void BPPreGetMultiUseEntries(APlayerController* ForPC) { NativeCall(this, "APrimalStructureItemContainer.BPPreGetMultiUseEntries", ForPC); } + void BPSetPlayerConstructor(APlayerController* PC) { NativeCall(this, "APrimalStructureItemContainer.BPSetPlayerConstructor", PC); } + bool IsValidForDinoFeedingContainer(APrimalDinoCharacter* ForDino) { return NativeCall(this, "APrimalStructureItemContainer.IsValidForDinoFeedingContainer", ForDino); } + void NetSetContainerActive(bool bSetActive, TSubclassOf NetReplicatedFuelItemClass, __int16 NetReplicatedFuelItemColorIndex) { NativeCall, __int16>(this, "APrimalStructureItemContainer.NetSetContainerActive", bSetActive, NetReplicatedFuelItemClass, NetReplicatedFuelItemColorIndex); } + void NetUpdateBoxName(FString* NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName", NewName); } + void PowerGeneratorBuiltNearbyPoweredStructure(APrimalStructureItemContainer* PoweredStructure) { NativeCall(this, "APrimalStructureItemContainer.PowerGeneratorBuiltNearbyPoweredStructure", PoweredStructure); } + void GetMultiUseEntries(APlayerController* ForPC, TArray* MultiUseEntries) { NativeCall*>(this, "APrimalStructureItemContainer.GetMultiUseEntries", ForPC, MultiUseEntries); } }; struct APrimalStructureTurret : APrimalStructureItemContainer { TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.Target"); } TSubclassOf& AmmoItemTemplateField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.AmmoItemTemplate"); } + TSubclassOf& MuzzleFlashEmitterField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.MuzzleFlashEmitter"); } float& FireIntervalField() { return *GetNativePointerField(this, "APrimalStructureTurret.FireInterval"); } long double& LastFireTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.LastFireTime"); } float& MaxFireYawDeltaField() { return *GetNativePointerField(this, "APrimalStructureTurret.MaxFireYawDelta"); } @@ -765,9 +1015,14 @@ struct APrimalStructureTurret : APrimalStructureItemContainer char& WarningSettingField() { return *GetNativePointerField(this, "APrimalStructureTurret.WarningSetting"); } int& NumBulletsField() { return *GetNativePointerField(this, "APrimalStructureTurret.NumBullets"); } int& NumBulletsPerShotField() { return *GetNativePointerField(this, "APrimalStructureTurret.NumBulletsPerShot"); } + float& AlwaysEnableFastTurretTargetingOverVelocityField() { return *GetNativePointerField(this, "APrimalStructureTurret.AlwaysEnableFastTurretTargetingOverVelocity"); } + TSubclassOf& ProjectileClassField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.ProjectileClass"); } float& WarningExpirationTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.WarningExpirationTime"); } + TSubclassOf& WarningEmitterShortField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.WarningEmitterShort"); } + TSubclassOf& WarningEmitterLongField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.WarningEmitterLong"); } float& BatteryIntervalFromActivationBeforeFiringField() { return *GetNativePointerField(this, "APrimalStructureTurret.BatteryIntervalFromActivationBeforeFiring"); } bool& bWarnedField() { return *GetNativePointerField(this, "APrimalStructureTurret.bWarned"); } + UChildActorComponent* MyChildEmitterTargetingEffectField() { return *GetNativePointerField(this, "APrimalStructureTurret.MyChildEmitterTargetingEffect"); } FRotator& DefaultTurretAimRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.DefaultTurretAimRotOffset"); } FVector& MuzzleLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.MuzzleLocOffset"); } long double& LastWarningTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.LastWarningTime"); } @@ -788,44 +1043,199 @@ struct APrimalStructureTurret : APrimalStructureItemContainer // Functions - static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureTurret.GetPrivateStaticClass"); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureTurret.GetPrivateStaticClass"); } void BeginPlay() { NativeCall(this, "APrimalStructureTurret.BeginPlay"); } - void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureTurret.GetLifetimeReplicatedProps", OutLifetimeProps); } - AActor * FindTarget() { return NativeCall(this, "APrimalStructureTurret.FindTarget"); } - void SetTarget(AActor * aTarget) { NativeCall(this, "APrimalStructureTurret.SetTarget", aTarget); } - void WeaponTraceHits(TArray * HitResults, FVector * StartTrace, FVector * EndTrace) { NativeCall *, FVector *, FVector *>(this, "APrimalStructureTurret.WeaponTraceHits", HitResults, StartTrace, EndTrace); } - bool NetExecCommand(FName CommandName, FNetExecParams * ExecParams) { return NativeCall(this, "APrimalStructureTurret.NetExecCommand", CommandName, ExecParams); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureTurret.GetLifetimeReplicatedProps", OutLifetimeProps); } + AActor* FindTarget() { return NativeCall(this, "APrimalStructureTurret.FindTarget"); } + void SetTarget(AActor* aTarget) { NativeCall(this, "APrimalStructureTurret.SetTarget", aTarget); } + void WeaponTraceHits(TArray* HitResults, FVector* StartTrace, FVector* EndTrace) { NativeCall*, FVector*, FVector*>(this, "APrimalStructureTurret.WeaponTraceHits", HitResults, StartTrace, EndTrace); } + bool NetExecCommand(FName CommandName, FNetExecParams* ExecParams) { return NativeCall(this, "APrimalStructureTurret.NetExecCommand", CommandName, ExecParams); } void DoFire(int RandomSeed) { NativeCall(this, "APrimalStructureTurret.DoFire", RandomSeed); } void DoFireProjectile(FVector Origin, FVector ShootDir) { NativeCall(this, "APrimalStructureTurret.DoFireProjectile", Origin, ShootDir); } void ClientsFireProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "APrimalStructureTurret.ClientsFireProjectile_Implementation", Origin, ShootDir); } - void SpawnImpactEffects(FHitResult * Impact, FVector * ShootDir) { NativeCall(this, "APrimalStructureTurret.SpawnImpactEffects", Impact, ShootDir); } - void SpawnTrailEffect(FVector * EndPoint) { NativeCall(this, "APrimalStructureTurret.SpawnTrailEffect", EndPoint); } - bool ShouldDealDamage(AActor * TestActor) { return NativeCall(this, "APrimalStructureTurret.ShouldDealDamage", TestActor); } - void DealDamage(FHitResult * Impact, FVector * ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "APrimalStructureTurret.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void SpawnImpactEffects(FHitResult* Impact, FVector* ShootDir) { NativeCall(this, "APrimalStructureTurret.SpawnImpactEffects", Impact, ShootDir); } + void SpawnTrailEffect(FVector* EndPoint) { NativeCall(this, "APrimalStructureTurret.SpawnTrailEffect", EndPoint); } + bool ShouldDealDamage(AActor* TestActor) { return NativeCall(this, "APrimalStructureTurret.ShouldDealDamage", TestActor); } + void DealDamage(FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "APrimalStructureTurret.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } void StartWarning() { NativeCall(this, "APrimalStructureTurret.StartWarning"); } void FinishWarning() { NativeCall(this, "APrimalStructureTurret.FinishWarning"); } void Tick(float DeltaSeconds) { NativeCall(this, "APrimalStructureTurret.Tick", DeltaSeconds); } - void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureTurret.DrawHUD", HUD); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructureTurret.DrawHUD", HUD); } bool IsValidToFire() { return NativeCall(this, "APrimalStructureTurret.IsValidToFire"); } - FRotator * GetMuzzleRotation(FRotator * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleRotation", result); } - FVector * GetMuzzleLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleLocation", result); } - FVector * GetAttackingFromLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetAttackingFromLocation", result); } - FVector * GetAimPivotLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetAimPivotLocation", result); } - FName * GetMuzzleFlashSocketName(FName * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleFlashSocketName", result); } - bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureTurret.TryMultiUse", ForPC, UseIndex); } - void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureTurret.ClientMultiUse", ForPC, UseIndex); } - void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemRemoved", anItem); } - void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemAdded", anItem, bEquipItem); } - void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalStructureTurret.NotifyItemQuantityUpdated", anItem, amount); } + FRotator* GetMuzzleRotation(FRotator* result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleRotation", result); } + FVector* GetMuzzleLocation(FVector* result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleLocation", result); } + FVector* GetAttackingFromLocation(FVector* result) { return NativeCall(this, "APrimalStructureTurret.GetAttackingFromLocation", result); } + FVector* GetAimPivotLocation(FVector* result) { return NativeCall(this, "APrimalStructureTurret.GetAimPivotLocation", result); } + FName* GetMuzzleFlashSocketName(FName* result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleFlashSocketName", result); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureTurret.TryMultiUse", ForPC, UseIndex); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalStructureTurret.ClientMultiUse", ForPC, UseIndex); } + void NotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemRemoved", anItem); } + void NotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemQuantityUpdated(UPrimalItem* anItem, int amount) { NativeCall(this, "APrimalStructureTurret.NotifyItemQuantityUpdated", anItem, amount); } void UpdateNumBullets() { NativeCall(this, "APrimalStructureTurret.UpdateNumBullets"); } void PreInitializeComponents() { NativeCall(this, "APrimalStructureTurret.PreInitializeComponents"); } void Stasis() { NativeCall(this, "APrimalStructureTurret.Stasis"); } void Unstasis() { NativeCall(this, "APrimalStructureTurret.Unstasis"); } void UpdatedTargeting() { NativeCall(this, "APrimalStructureTurret.UpdatedTargeting"); } - FVector * GetTargetAimAtLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetTargetAimAtLocation", result); } - FVector * GetTargetFireAtLocation(FVector * result, APrimalCharacter * ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetFireAtLocation", result, ForTarget); } + FVector* GetTargetAimAtLocation(FVector* result) { return NativeCall(this, "APrimalStructureTurret.GetTargetAimAtLocation", result); } + FVector* GetTargetFireAtLocation(FVector* result, APrimalCharacter* ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetFireAtLocation", result, ForTarget); } bool CanFire() { return NativeCall(this, "APrimalStructureTurret.CanFire"); } - FName * GetTargetAltAimSocket(FName * result, APrimalCharacter * ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetAltAimSocket", result, ForTarget); } - bool UseTurretFastTargeting() { return NativeCall(this, "APrimalStructureTurret.UseTurretFastTargeting"); } + FName* GetTargetAltAimSocket(FName* result, APrimalCharacter* ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetAltAimSocket", result, ForTarget); } + bool IsTurretFastTargetingAutoEnabled() { return NativeCall(this, "APrimalStructureTurret.IsTurretFastTargetingAutoEnabled"); } + bool UseTurretFastTargeting(bool bCheckFastTargetingAutoEnabled) { return NativeCall(this, "APrimalStructureTurret.UseTurretFastTargeting", bCheckFastTargetingAutoEnabled); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructureTurret.StaticClass"); } static void StaticRegisterNativesAPrimalStructureTurret() { NativeCall(nullptr, "APrimalStructureTurret.StaticRegisterNativesAPrimalStructureTurret"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureTurret.GetPrivateStaticClass", Package); } + bool BPTurretPreventsTargeting(APrimalCharacter* PotentialTarget) { return NativeCall(this, "APrimalStructureTurret.BPTurretPreventsTargeting", PotentialTarget); } }; + +struct APrimalStructureItemContainer_CropPlot : APrimalStructureItemContainer +{ + //char __padding[0xe8L]; + float& CropRefreshIntervalMinField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropRefreshIntervalMin"); } + float& CropRefreshIntervalMaxField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropRefreshIntervalMax"); } + float& WaterNearbyStructureRangeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.WaterNearbyStructureRange"); } + float& MaxWaterAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.MaxWaterAmount"); } + float& ActiveRainWaterIncreaseSpeedField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.ActiveRainWaterIncreaseSpeed"); } + float& AverageRainWaterIncreaseMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.AverageRainWaterIncreaseMultiplier"); } + float& WaterItemAmountMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.WaterItemAmountMultiplier"); } + FVector& ExtraCropMeshScaleField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.ExtraCropMeshScale"); } + float& CropRefreshIntervalField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropRefreshInterval"); } + float& CropPhaseFertilizerCacheField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropPhaseFertilizerCache"); } + float& CropFruitFertilizerCacheField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropFruitFertilizerCache"); } + //TEnumAsByte& CurrentCropPhaseField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer_CropPlot.CurrentCropPhase"); } + long double& LastCropRefreshTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.LastCropRefreshTime"); } + bool& bDelayCropRefreshField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.bDelayCropRefresh"); } + long double& NextAllowedCropRefreshTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.NextAllowedCropRefreshTime"); } + long double& CropRefreshTimeCacheField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.CropRefreshTimeCache"); } + int& FertilizerAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.FertilizerAmount"); } + float& WaterAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.WaterAmount"); } + char& NumGreenHouseStructuresField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.NumGreenHouseStructures"); } + bool& bIsOpenToSkyField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.bIsOpenToSky"); } + float& FertilizerConsumptionRateMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.FertilizerConsumptionRateMultiplier"); } + float& LastReplicatedWaterAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.LastReplicatedWaterAmount"); } + int& LastReplicatedFertilizerAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.LastReplicatedFertilizerAmount"); } + float& LastWaterAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.LastWaterAmount"); } + float& MinWateredOverridesCraftingField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.MinWateredOverridesCrafting"); } + int& MaxGreenHouseStructuresField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.MaxGreenHouseStructures"); } + float& MaxGreenHouseCropGrowthMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.MaxGreenHouseCropGrowthMultiplier"); } + float& GainWaterRateField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.GainWaterRate"); } + long double& LastForceReplicatedGreenhouseTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_CropPlot.LastForceReplicatedGreenhouseTime"); } + + // Functions + + bool AllowRemoteAddItemToInventory(UPrimalInventoryComponent* invComp, UPrimalItem* anItem) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.AllowRemoteAddItemToInventory", invComp, anItem); } + void RefreshOpenToSky() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.RefreshOpenToSky"); } + void Tick(float DeltaTime) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.Tick", DeltaTime); } + void AutoWaterRefreshCrop() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.AutoWaterRefreshCrop"); } + void DoRefreshCrop() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.DoRefreshCrop"); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.PostInitializeComponents"); } + void Unstasis() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.Unstasis"); } + float AddWater(float Amount, bool bAllowNetworking) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.AddWater", Amount, bAllowNetworking); } + bool RefreshCrop(float DeltaTime) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.RefreshCrop", DeltaTime); } + //int GetPhaseInventoryItemCount(ESeedCropPhase::Type cropPhase) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.GetPhaseInventoryItemCount", cropPhase); } + void RefreshWatered() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.RefreshWatered"); } + void RefreshWaterState() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.RefreshWaterState"); } + void SetWaterState(bool bValue) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.SetWaterState", bValue); } + void RefreshFertilized() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.RefreshFertilized"); } + void NotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.NotifyItemRemoved", anItem); } + void NotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.NotifyItemAdded", anItem, bEquipItem); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.DrawHUD", HUD); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureItemContainer_CropPlot.GetLifetimeReplicatedProps", OutLifetimeProps); } + void BeginPlay() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.BeginPlay"); } + FString* GetCropName(FString* result) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.GetCropName", result); } + bool AreCropRequirementsMet() { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.AreCropRequirementsMet"); } + void RemovePlantedCrop() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.RemovePlantedCrop"); } + //void GetMultiUseEntries(APlayerController* ForPC, TArray* MultiUseEntries) { NativeCall*>(this, "APrimalStructureItemContainer_CropPlot.GetMultiUseEntries", ForPC, MultiUseEntries); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.TryMultiUse", ForPC, UseIndex); } + //void OnRep_CurrentCropPhase(ESeedCropPhase::Type PrevCropPhase) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.OnRep_CurrentCropPhase", PrevCropPhase); } + void OnRep_PlantedCrop(UClass* PrevPlantedCrop) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.OnRep_PlantedCrop", PrevPlantedCrop); } + void UpdateCropVisuals() { NativeCall(this, "APrimalStructureItemContainer_CropPlot.UpdateCropVisuals"); } + void OnRep_HasFruitItems(bool bPreviousHasFruitItems) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.OnRep_HasFruitItems", bPreviousHasFruitItems); } + bool UseItemSpoilingTimeMultipliers() { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.UseItemSpoilingTimeMultipliers"); } + void InventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.InventoryItemUsed", InventoryItemObject); } + bool ForceAllowsInventoryUse(UObject* InventoryItemObject) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.ForceAllowsInventoryUse", InventoryItemObject); } + bool NetExecCommand(FName CommandName, FNetExecParams* ExecParams) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.NetExecCommand", CommandName, ExecParams); } + bool OverrideHasWaterSource() { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.OverrideHasWaterSource"); } + void PlacedStructure(AShooterPlayerController* PC) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.PlacedStructure", PC); } + bool RemoteInventoryAllowViewing(APlayerController* ForPC) { return NativeCall(this, "APrimalStructureItemContainer_CropPlot.RemoteInventoryAllowViewing", ForPC); } + void Demolish(APlayerController* ForPC, AActor* DamageCauser) { NativeCall(this, "APrimalStructureItemContainer_CropPlot.Demolish", ForPC, DamageCauser); } + bool OverrideBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "APrimalStructureItemContainer_CropPlot.OverrideBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } + bool AllowBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "APrimalStructureItemContainer_CropPlot.AllowBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } + bool AllowCraftingResourceConsumption(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "APrimalStructureItemContainer_CropPlot.AllowCraftingResourceConsumption", ItemTemplate, ItemQuantity); } +}; + +struct UPrimalStructureSettings : UObject +{ + float& DecayDestructionPeriodMultiplierField() { return *GetNativePointerField(this, "UPrimalStructureSettings.DecayDestructionPeriodMultiplier"); } +}; + +struct APrimalStructureExplosive : APrimalStructure +{ + char __padding[0xa0L]; + unsigned int& ConstructorPlayerDataIDField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ConstructorPlayerDataID"); } + AShooterCharacter* ConstructorPawnField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ConstructorPawn"); } + int& ConstructorTargetingTeamField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ConstructorTargetingTeam"); } + FVector& ExplosiveLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ExplosiveLocOffset"); } + FRotator& ExplosiveRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ExplosiveRotOffset"); } + float& PlacementInitialSpeedField() { return *GetNativePointerField(this, "APrimalStructureExplosive.PlacementInitialSpeed"); } + float& PlacementMaxSpeedField() { return *GetNativePointerField(this, "APrimalStructureExplosive.PlacementMaxSpeed"); } + float& PlacementAccelField() { return *GetNativePointerField(this, "APrimalStructureExplosive.PlacementAccel"); } + float& ExplosionDamageField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ExplosionDamage"); } + float& ExplosionRadiusField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ExplosionRadius"); } + float& ExplosionImpulseField() { return *GetNativePointerField(this, "APrimalStructureExplosive.ExplosionImpulse"); } + float& AlertDinosRangeField() { return *GetNativePointerField(this, "APrimalStructureExplosive.AlertDinosRange"); } + int& PickUpQuantityField() { return *GetNativePointerField(this, "APrimalStructureExplosive.PickUpQuantity"); } + float& AnimationTargetHeightField() { return *GetNativePointerField(this, "APrimalStructureExplosive.AnimationTargetHeight"); } + float& PlacementInterpSpeedField() { return *GetNativePointerField(this, "APrimalStructureExplosive.PlacementInterpSpeed"); } + bool& bExplosiveReadyField() { return *GetNativePointerField(this, "APrimalStructureExplosive.bExplosiveReady"); } + FVector& OriginalRelativeLocationField() { return *GetNativePointerField(this, "APrimalStructureExplosive.OriginalRelativeLocation"); } + FRotator& OriginalRelativeRotationField() { return *GetNativePointerField(this, "APrimalStructureExplosive.OriginalRelativeRotation"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalStructureExplosive.StaticClass"); } + + // Functions + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalStructureExplosive.GetLifetimeReplicatedProps", OutLifetimeProps); } + void LoadedFromSaveGame() { NativeCall(this, "APrimalStructureExplosive.LoadedFromSaveGame"); } + void PostSpawnInitialize() { NativeCall(this, "APrimalStructureExplosive.PostSpawnInitialize"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalStructureExplosive.Tick", DeltaSeconds); } + void SetPlayerConstructor(APlayerController* PC) { NativeCall(this, "APrimalStructureExplosive.SetPlayerConstructor", PC); } + bool CanDetonateMe(AShooterCharacter* Character, bool bUsingRemote) { return NativeCall(this, "APrimalStructureExplosive.CanDetonateMe", Character, bUsingRemote); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalStructureExplosive.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureExplosive.TryMultiUse", ForPC, UseIndex); } + void PrepareAsPlacementPreview() { NativeCall(this, "APrimalStructureExplosive.PrepareAsPlacementPreview"); } + void ApplyPlacementPreview() { NativeCall(this, "APrimalStructureExplosive.ApplyPlacementPreview"); } + void NetDoSpawnEffects_Implementation() { NativeCall(this, "APrimalStructureExplosive.NetDoSpawnEffects_Implementation"); } +}; + +struct APrimalStructureItemContainer_SupplyCrate : APrimalStructureItemContainer +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureItemContainer_SupplyCrate.GetPrivateStaticClass", Package); } + + float& MinItemSetsField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.MinItemSets"); } + float& MaxItemSetsField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.MaxItemSets"); } + float& NumItemSetsPowerField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.NumItemSetsPower"); } + bool& bSetsRandomWithoutReplacementField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.bSetsRandomWithoutReplacement"); } + float& MinQualityMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.MinQualityMultiplier"); } + float& MaxQualityMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.MaxQualityMultiplier"); } + TArray& ItemSetsField() { return *GetNativePointerField< TArray*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSets"); } + TSubclassOf& ItemSetsOverrideField() { return *GetNativePointerField< TSubclassOf*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetsOverride"); } + TArray& AdditionalItemSetsField() { return *GetNativePointerField< TArray*>(this, "APrimalStructureItemContainer_SupplyCrate.AdditionalItemSets"); } + TSubclassOf& AdditionalItemSetsOverrideField() { return *GetNativePointerField< TSubclassOf*>(this, "APrimalStructureItemContainer_SupplyCrate.AdditionalItemSetsOverride"); } + int& RequiredLevelToAccessField() { return *GetNativePointerField< int*>(this, "APrimalStructureItemContainer_SupplyCrate.RequiredLevelToAccess"); } + int& MaxLevelToAccessField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.MaxLevelToAccess"); } + float& InitialTimeToLoseHealthField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.InitialTimeToLoseHealth"); } + float& IntervalToLoseHealthAfterAccessField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.IntervalToLoseHealthAfterAccess"); } + float& IntervalTimeToLoseHealthField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.IntervalTimeToLoseHealth"); } + float& IntervalPercentHealthToLoseField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.IntervalPercentHealthToLose"); } + TSubclassOf& ItemSetExtraItemClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemClass"); } + float& ItemSetExtraItemQuantityByQualityMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemQuantityByQualityMultiplier"); } + float& ItemSetExtraItemQuantityByQualityPowerField() { return *GetNativePointerField(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemQuantityByQualityPower"); } + + BitFieldValue bIsBonusCrateField() { return { this, "APrimalStructureItemContainer_SupplyCrate.bIsBonusCrateField" }; } +}; + +struct APrimalStructureItemContainer_HordeCrate : APrimalStructureItemContainer_SupplyCrate +{ + UMaterialInterface* ElementPostProcessMaterial; + FVector CrateLoc; +}; \ No newline at end of file diff --git a/version/Core/Public/API/ARK/Tribe.h b/version/Core/Public/API/ARK/Tribe.h index 71e91484..a2cd0723 100644 --- a/version/Core/Public/API/ARK/Tribe.h +++ b/version/Core/Public/API/ARK/Tribe.h @@ -42,81 +42,87 @@ struct FTribeData // Functions - bool IsTribeWarActive(int TribeID, UWorld * ForWorld, bool bIncludeUnstarted) { return NativeCall(this, "FTribeData.IsTribeWarActive", TribeID, ForWorld, bIncludeUnstarted); } - bool HasTribeWarRequest(int TribeID, UWorld * ForWorld) { return NativeCall(this, "FTribeData.HasTribeWarRequest", TribeID, ForWorld); } - void RefreshTribeWars(UWorld * ForWorld) { NativeCall(this, "FTribeData.RefreshTribeWars", ForWorld); } - FTribeAlliance * FindTribeAlliance(unsigned int AllianceID) { return NativeCall(this, "FTribeData.FindTribeAlliance", AllianceID); } + bool IsTribeWarActive(int TribeID, UWorld* ForWorld, bool bIncludeUnstarted) { return NativeCall(this, "FTribeData.IsTribeWarActive", TribeID, ForWorld, bIncludeUnstarted); } + bool HasTribeWarRequest(int TribeID, UWorld* ForWorld) { return NativeCall(this, "FTribeData.HasTribeWarRequest", TribeID, ForWorld); } + void RefreshTribeWars(UWorld* ForWorld) { NativeCall(this, "FTribeData.RefreshTribeWars", ForWorld); } + FTribeAlliance* FindTribeAlliance(unsigned int AllianceID) { return NativeCall(this, "FTribeData.FindTribeAlliance", AllianceID); } bool IsTribeAlliedWith(unsigned int OtherTribeID) { return NativeCall(this, "FTribeData.IsTribeAlliedWith", OtherTribeID); } - bool GetTribeRankGroupForPlayer(unsigned int PlayerDataID, FTribeRankGroup * outRankGroup) { return NativeCall(this, "FTribeData.GetTribeRankGroupForPlayer", PlayerDataID, outRankGroup); } + FString* GetTribeNameWithRankGroup(FString* result, unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetTribeNameWithRankGroup", result, PlayerDataID); } + FString* GetRankNameForPlayerID(FString* result, unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetRankNameForPlayerID", result, PlayerDataID); } + bool GetTribeRankGroupForPlayer(unsigned int PlayerDataID, FTribeRankGroup* outRankGroup) { return NativeCall(this, "FTribeData.GetTribeRankGroupForPlayer", PlayerDataID, outRankGroup); } + int GetTribeRankGroupIndexForPlayer(unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetTribeRankGroupIndexForPlayer", PlayerDataID); } int GetBestRankGroupForRank(int Rank) { return NativeCall(this, "FTribeData.GetBestRankGroupForRank", Rank); } - long double GetSecondsSinceLastNameChange(UObject * WorldContextObject) { return NativeCall(this, "FTribeData.GetSecondsSinceLastNameChange", WorldContextObject); } + void MarkTribeNameChanged(UObject* WorldContextObject) { NativeCall(this, "FTribeData.MarkTribeNameChanged", WorldContextObject); } + long double GetSecondsSinceLastNameChange(UObject* WorldContextObject) { return NativeCall(this, "FTribeData.GetSecondsSinceLastNameChange", WorldContextObject); } + float GetTribeNameChangeCooldownTime(UObject* WorldContextObject) { return NativeCall(this, "FTribeData.GetTribeNameChangeCooldownTime", WorldContextObject); } int GetDefaultRankGroupIndex() { return NativeCall(this, "FTribeData.GetDefaultRankGroupIndex"); } - FTribeData * operator=(FTribeData * __that) { return NativeCall(this, "FTribeData.operator=", __that); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeData.StaticStruct"); } + FTribeData* operator=(FTribeData* __that) { return NativeCall(this, "FTribeData.operator=", __that); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FTribeData.StaticStruct"); } }; struct FTribeWar { - int EnemyTribeID; - int StartDayNumber; - int EndDayNumber; - float StartDayTime; - float EndDayTime; - bool bIsApproved; - int InitiatingTribeID; - FString EnemyTribeName; + int& EnemyTribeIDField() { return *GetNativePointerField(this, "FTribeWar.EnemyTribeID"); } + int& StartDayNumberField() { return *GetNativePointerField(this, "FTribeWar.StartDayNumber"); } + int& EndDayNumberField() { return *GetNativePointerField(this, "FTribeWar.EndDayNumber"); } + float& StartDayTimeField() { return *GetNativePointerField(this, "FTribeWar.StartDayTime"); } + float& EndDayTimeField() { return *GetNativePointerField(this, "FTribeWar.EndDayTime"); } + bool& bIsApprovedField() { return *GetNativePointerField(this, "FTribeWar.bIsApproved"); } + int& InitiatingTribeIDField() { return *GetNativePointerField(this, "FTribeWar.InitiatingTribeID"); } + FString& EnemyTribeNameField() { return *GetNativePointerField(this, "FTribeWar.EnemyTribeName"); } // Functions - bool CanBeRejected(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.CanBeRejected", ForWorld); } - bool IsCurrentlyActive(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.IsCurrentlyActive", ForWorld); } - bool IsTribeWarOn(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.IsTribeWarOn", ForWorld); } - FString * GetWarTimeString(FString * result, int DayNumber, float DayTime) { return NativeCall(this, "FTribeWar.GetWarTimeString", result, DayNumber, DayTime); } - bool operator==(FTribeWar * Other) { return NativeCall(this, "FTribeWar.operator==", Other); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeWar.StaticStruct"); } + bool CanBeRejected(UWorld* ForWorld) { return NativeCall(this, "FTribeWar.CanBeRejected", ForWorld); } + bool IsCurrentlyActive(UWorld* ForWorld) { return NativeCall(this, "FTribeWar.IsCurrentlyActive", ForWorld); } + bool IsTribeWarOn(UWorld* ForWorld) { return NativeCall(this, "FTribeWar.IsTribeWarOn", ForWorld); } + FString* GetWarTimeString(FString* result, int DayNumber, float DayTime) { return NativeCall(this, "FTribeWar.GetWarTimeString", result, DayNumber, DayTime); } + bool operator==(FTribeWar* Other) { return NativeCall(this, "FTribeWar.operator==", Other); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FTribeWar.StaticStruct"); } }; struct FTribeRankGroup { - FString RankGroupName; - char RankGroupRank; - char InventoryRank; - char StructureActivationRank; - char NewStructureActivationRank; - char NewStructureInventoryRank; - char PetOrderRank; - char PetRidingRank; - char InviteToGroupRank; - char MaxPromotionGroupRank; - char MaxDemotionGroupRank; - char MaxBanishmentGroupRank; - char NumInvitesRemaining; - unsigned __int32 bPreventStructureDemolish : 1; - unsigned __int32 bPreventStructureAttachment : 1; - unsigned __int32 bPreventStructureBuildInRange : 1; - unsigned __int32 bPreventUnclaiming : 1; - unsigned __int32 bAllowInvites : 1; - unsigned __int32 bLimitInvites : 1; - unsigned __int32 bAllowDemotions : 1; - unsigned __int32 bAllowPromotions : 1; - unsigned __int32 bAllowBanishments : 1; - unsigned __int32 bDefaultRank : 1; + FString& RankGroupNameField() { return *GetNativePointerField(this, "FTribeRankGroup.RankGroupName"); } + char& RankGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.RankGroupRank"); } + char& InventoryRankField() { return *GetNativePointerField(this, "FTribeRankGroup.InventoryRank"); } + char& StructureActivationRankField() { return *GetNativePointerField(this, "FTribeRankGroup.StructureActivationRank"); } + char& NewStructureActivationRankField() { return *GetNativePointerField(this, "FTribeRankGroup.NewStructureActivationRank"); } + char& NewStructureInventoryRankField() { return *GetNativePointerField(this, "FTribeRankGroup.NewStructureInventoryRank"); } + char& PetOrderRankField() { return *GetNativePointerField(this, "FTribeRankGroup.PetOrderRank"); } + char& PetRidingRankField() { return *GetNativePointerField(this, "FTribeRankGroup.PetRidingRank"); } + char& InviteToGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.InviteToGroupRank"); } + char& MaxPromotionGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxPromotionGroupRank"); } + char& MaxDemotionGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxDemotionGroupRank"); } + char& MaxBanishmentGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxBanishmentGroupRank"); } + char& NumInvitesRemainingField() { return *GetNativePointerField(this, "FTribeRankGroup.NumInvitesRemaining"); } + + // Bit fields + + BitFieldValue bPreventStructureDemolish() { return { this, "FTribeRankGroup.bPreventStructureDemolish" }; } + BitFieldValue bPreventStructureAttachment() { return { this, "FTribeRankGroup.bPreventStructureAttachment" }; } + BitFieldValue bPreventStructureBuildInRange() { return { this, "FTribeRankGroup.bPreventStructureBuildInRange" }; } + BitFieldValue bPreventUnclaiming() { return { this, "FTribeRankGroup.bPreventUnclaiming" }; } + BitFieldValue bAllowInvites() { return { this, "FTribeRankGroup.bAllowInvites" }; } + BitFieldValue bLimitInvites() { return { this, "FTribeRankGroup.bLimitInvites" }; } + BitFieldValue bAllowDemotions() { return { this, "FTribeRankGroup.bAllowDemotions" }; } + BitFieldValue bAllowPromotions() { return { this, "FTribeRankGroup.bAllowPromotions" }; } + BitFieldValue bAllowBanishments() { return { this, "FTribeRankGroup.bAllowBanishments" }; } + BitFieldValue bDefaultRank() { return { this, "FTribeRankGroup.bDefaultRank" }; } // Functions - FTribeRankGroup(FTribeRankGroup * __that) { NativeCall(this, "FTribeRankGroup.FTribeRankGroup", __that); } - FTribeRankGroup * operator=(FTribeRankGroup * __that) { return NativeCall(this, "FTribeRankGroup.operator=", __that); } + FTribeRankGroup* operator=(FTribeRankGroup* __that) { return NativeCall(this, "FTribeRankGroup.operator=", __that); } void ValidateSettings() { NativeCall(this, "FTribeRankGroup.ValidateSettings"); } - bool operator==(FTribeRankGroup * Other) { return NativeCall(this, "FTribeRankGroup.operator==", Other); } - static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeRankGroup.StaticStruct"); } - + bool operator==(FTribeRankGroup* Other) { return NativeCall(this, "FTribeRankGroup.operator==", Other); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FTribeRankGroup.StaticStruct"); } }; struct FTribeAlliance { - FString AllianceName; - unsigned int AllianceID; - TArray MembersTribeName; - TArray MembersTribeID; - TArray AdminsTribeID; + FString AllianceNameField; + unsigned int AllianceIDField; + TArray MembersTribeNameField; + TArray MembersTribeIDField; + TArray AdminsTribeIDField; }; \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/Actor.h b/version/Core/Public/API/Atlas/Actor.h new file mode 100644 index 00000000..491246ff --- /dev/null +++ b/version/Core/Public/API/Atlas/Actor.h @@ -0,0 +1,10025 @@ +#pragma once + +#include "../Base.h" +#include + +struct APrimalStructureBed; + +struct FChatMessage +{ + FString SenderName; + FString SenderSteamName; + FString SenderTribeName; + unsigned int SenderId; + FString Message; + FString Receiver; + int SenderTeamIndex; + long double ReceivedTime; + TEnumAsByte SendMode; + unsigned int RadioFrequency; + TEnumAsByte ChatType; + UTexture2D* SenderIcon; + FString UserId; + + FChatMessage() + : SenderName(""), + SenderSteamName(""), + SenderTribeName(""), + SenderId(0), + Message(""), + Receiver(""), + SenderTeamIndex(0), + ReceivedTime(-1), + SendMode(EChatSendMode::GlobalChat), + RadioFrequency(0), + ChatType(EChatType::GlobalChat), + SenderIcon(nullptr), + UserId("") + { + } + + FChatMessage(FChatMessage* __that) { NativeCall(this, "FChatMessage.FChatMessage", __that); } + FChatMessage* operator=(FChatMessage* __that) { return NativeCall(this, "FChatMessage.operator=", __that); } +}; + +struct UNetConnection +{ + //TArray ChildrenField() { return *GetNativePointerField*>(this, "UNetConnection.Children"); } + //TSharedPtr& NetCacheField() { return *GetNativePointerField*>(this, "UNetConnection.NetCache"); } + TArray SentTemporariesField() { return *GetNativePointerField*>(this, "UNetConnection.SentTemporaries"); } + FVector& LastDormancyLocCheckField() { return *GetNativePointerField(this, "UNetConnection.LastDormancyLocCheck"); } + float& PlayerControllerTimerField() { return *GetNativePointerField(this, "UNetConnection.PlayerControllerTimer"); } + long double& SpatialFrameField() { return *GetNativePointerField(this, "UNetConnection.SpatialFrame"); } + long double& NextSpatialFrameCheckTimeField() { return *GetNativePointerField(this, "UNetConnection.NextSpatialFrameCheckTime"); } + AActor* ViewerField() { return *GetNativePointerField(this, "UNetConnection.Viewer"); } + AActor* OwningActorField() { return *GetNativePointerField(this, "UNetConnection.OwningActor"); } + int& MaxPacketField() { return *GetNativePointerField(this, "UNetConnection.MaxPacket"); } + bool& bDeterminedIfRequiresHandShakeField() { return *GetNativePointerField(this, "UNetConnection.bDeterminedIfRequiresHandShake"); } + bool& bRequiresHandShakeField() { return *GetNativePointerField(this, "UNetConnection.bRequiresHandShake"); } + bool& bDoneHandshakingField() { return *GetNativePointerField(this, "UNetConnection.bDoneHandshaking"); } + //ConnectionSecurity* ConnSecurityField() { return *GetNativePointerField(this, "UNetConnection.ConnSecurity"); } + //EConnectionState& StateField() { return *GetNativePointerField(this, "UNetConnection.State"); } + //EConnectionType::Type& ConnectionTypeField() { return *GetNativePointerField(this, "UNetConnection.ConnectionType"); } + bool& bNeedsByteSwappingField() { return *GetNativePointerField(this, "UNetConnection.bNeedsByteSwapping"); } + TSharedPtr& PlayerIdField() { return *GetNativePointerField*>(this, "UNetConnection.PlayerId"); } + int& ProtocolVersionField() { return *GetNativePointerField(this, "UNetConnection.ProtocolVersion"); } + int& PacketOverheadField() { return *GetNativePointerField(this, "UNetConnection.PacketOverhead"); } + FString& ChallengeField() { return *GetNativePointerField(this, "UNetConnection.Challenge"); } + FString& ClientResponseField() { return *GetNativePointerField(this, "UNetConnection.ClientResponse"); } + int& ResponseIdField() { return *GetNativePointerField(this, "UNetConnection.ResponseId"); } + int& NegotiatedVerField() { return *GetNativePointerField(this, "UNetConnection.NegotiatedVer"); } + FString& RequestURLField() { return *GetNativePointerField(this, "UNetConnection.RequestURL"); } + //EClientLoginState::Type& ClientLoginStateField() { return *GetNativePointerField(this, "UNetConnection.ClientLoginState"); } + char& ExpectedClientLoginMsgTypeField() { return *GetNativePointerField(this, "UNetConnection.ExpectedClientLoginMsgType"); } + FString& CDKeyHashField() { return *GetNativePointerField(this, "UNetConnection.CDKeyHash"); } + FString& CDKeyResponseField() { return *GetNativePointerField(this, "UNetConnection.CDKeyResponse"); } + long double& LastReceiveTimeField() { return *GetNativePointerField(this, "UNetConnection.LastReceiveTime"); } + long double& LastSendTimeField() { return *GetNativePointerField(this, "UNetConnection.LastSendTime"); } + long double& LastTickTimeField() { return *GetNativePointerField(this, "UNetConnection.LastTickTime"); } + int& QueuedBytesField() { return *GetNativePointerField(this, "UNetConnection.QueuedBytes"); } + int& TickCountField() { return *GetNativePointerField(this, "UNetConnection.TickCount"); } + float& LastRecvAckTimeField() { return *GetNativePointerField(this, "UNetConnection.LastRecvAckTime"); } + float& ConnectTimeField() { return *GetNativePointerField(this, "UNetConnection.ConnectTime"); } + //FBitWriterMark& LastStartField() { return *GetNativePointerField(this, "UNetConnection.LastStart"); } + //FBitWriterMark& LastEndField() { return *GetNativePointerField(this, "UNetConnection.LastEnd"); } + bool& AllowMergeField() { return *GetNativePointerField(this, "UNetConnection.AllowMerge"); } + bool& TimeSensitiveField() { return *GetNativePointerField(this, "UNetConnection.TimeSensitive"); } + long double& StatUpdateTimeField() { return *GetNativePointerField(this, "UNetConnection.StatUpdateTime"); } + float& StatPeriodField() { return *GetNativePointerField(this, "UNetConnection.StatPeriod"); } + float& BestLagField() { return *GetNativePointerField(this, "UNetConnection.BestLag"); } + float& AvgLagField() { return *GetNativePointerField(this, "UNetConnection.AvgLag"); } + float& LagAccField() { return *GetNativePointerField(this, "UNetConnection.LagAcc"); } + float& BestLagAccField() { return *GetNativePointerField(this, "UNetConnection.BestLagAcc"); } + int& LagCountField() { return *GetNativePointerField(this, "UNetConnection.LagCount"); } + long double& LastTimeField() { return *GetNativePointerField(this, "UNetConnection.LastTime"); } + long double& FrameTimeField() { return *GetNativePointerField(this, "UNetConnection.FrameTime"); } + long double& CumulativeTimeField() { return *GetNativePointerField(this, "UNetConnection.CumulativeTime"); } + long double& AverageFrameTimeField() { return *GetNativePointerField(this, "UNetConnection.AverageFrameTime"); } + int& CountedFramesField() { return *GetNativePointerField(this, "UNetConnection.CountedFrames"); } + int& InBytesField() { return *GetNativePointerField(this, "UNetConnection.InBytes"); } + int& OutBytesField() { return *GetNativePointerField(this, "UNetConnection.OutBytes"); } + int& InPacketsLostField() { return *GetNativePointerField(this, "UNetConnection.InPacketsLost"); } + int& OutPacketsLostField() { return *GetNativePointerField(this, "UNetConnection.OutPacketsLost"); } + //FBitWriter& SendBufferField() { return *GetNativePointerField(this, "UNetConnection.SendBuffer"); } + FieldArray OutLagTimeField() { return { this, "UNetConnection.OutLagTime" }; } + FieldArray OutLagPacketIdField() { return { this, "UNetConnection.OutLagPacketId" }; } + int& InPacketIdField() { return *GetNativePointerField(this, "UNetConnection.InPacketId"); } + int& OutPacketIdField() { return *GetNativePointerField(this, "UNetConnection.OutPacketId"); } + int& OutAckPacketIdField() { return *GetNativePointerField(this, "UNetConnection.OutAckPacketId"); } + int& PartialPacketIdField() { return *GetNativePointerField(this, "UNetConnection.PartialPacketId"); } + int& LastPartialPacketIdField() { return *GetNativePointerField(this, "UNetConnection.LastPartialPacketId"); } + FieldArray PingAckDataCacheField() { return { this, "UNetConnection.PingAckDataCache" }; } + float& LastPingAckField() { return *GetNativePointerField(this, "UNetConnection.LastPingAck"); } + int& LastPingAckPacketIdField() { return *GetNativePointerField(this, "UNetConnection.LastPingAckPacketId"); } + FieldArray OutReliableField() { return { this, "UNetConnection.OutReliable" }; } + FieldArray InReliableField() { return { this, "UNetConnection.InReliable" }; } + FieldArray PendingOutRecField() { return { this, "UNetConnection.PendingOutRec" }; } + TArray& QueuedAcksField() { return *GetNativePointerField*>(this, "UNetConnection.QueuedAcks"); } + TArray& ResendAcksField() { return *GetNativePointerField*>(this, "UNetConnection.ResendAcks"); } + long double& LogCallLastTimeField() { return *GetNativePointerField(this, "UNetConnection.LogCallLastTime"); } + int& LogCallCountField() { return *GetNativePointerField(this, "UNetConnection.LogCallCount"); } + int& LogSustainedCountField() { return *GetNativePointerField(this, "UNetConnection.LogSustainedCount"); } + //TMap > ActorChannelsField() { return *GetNativePointerField >*>(this, "UNetConnection.ActorChannels"); } + TSet, FDefaultSetAllocator> DormantActorsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.DormantActors"); } + TSet, FDefaultSetAllocator> PendingDormantActorsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.PendingDormantActors"); } + TSet, FDefaultSetAllocator> DormantActorsNoParentField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.DormantActorsNoParent"); } + TSet, FDefaultSetAllocator> PendingDormantActorsNoParentField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.PendingDormantActorsNoParent"); } + float& DormancyRateField() { return *GetNativePointerField(this, "UNetConnection.DormancyRate"); } + TSet, FDefaultSetAllocator> PendingProcessingDormantActor_FarField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.PendingProcessingDormantActor_Far"); } + TSet, FDefaultSetAllocator> PendingProcessingDormantActor_NearField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.PendingProcessingDormantActor_Near"); } + unsigned int& PerPacketTinyTokenToSendField() { return *GetNativePointerField(this, "UNetConnection.PerPacketTinyTokenToSend"); } + unsigned int& PerPacketTinyTokenToRecieveField() { return *GetNativePointerField(this, "UNetConnection.PerPacketTinyTokenToRecieve"); } + FString& ClientGivenIPField() { return *GetNativePointerField(this, "UNetConnection.ClientGivenIP"); } + bool& bSetupFailMessageField() { return *GetNativePointerField(this, "UNetConnection.bSetupFailMessage"); } + bool& bSharedConnectionField() { return *GetNativePointerField(this, "UNetConnection.bSharedConnection"); } + TSet, FDefaultSetAllocator> RecentlyDormantActorsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.RecentlyDormantActors"); } + //TMap, TSharedRef, FDefaultSetAllocator, TDefaultMapKeyFuncs, TSharedRef, 0> >& DormantReplicatorMapField() { return *GetNativePointerField, TSharedRef, FDefaultSetAllocator, TDefaultMapKeyFuncs, TSharedRef, 0> >*>(this, "UNetConnection.DormantReplicatorMap"); } + TSet, FDefaultSetAllocator>& DestroyedStartupOrDormantActorsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UNetConnection.DestroyedStartupOrDormantActors"); } + FName& ClientWorldPackageNameField() { return *GetNativePointerField(this, "UNetConnection.ClientWorldPackageName"); } + TArray& ClientVisibleLevelNamesField() { return *GetNativePointerField*>(this, "UNetConnection.ClientVisibleLevelNames"); } + TArray OwnedConsiderListField() { return *GetNativePointerField*>(this, "UNetConnection.OwnedConsiderList"); } + + // Bit fields + + BitFieldValue InternalAck() { return { this, "UNetConnection.InternalAck" }; } + BitFieldValue bWelcomed() { return { this, "UNetConnection.bWelcomed" }; } + BitFieldValue bFirstActorSent() { return { this, "UNetConnection.bFirstActorSent" }; } + BitFieldValue bDisableFlushNetUntilActuallyReady() { return { this, "UNetConnection.bDisableFlushNetUntilActuallyReady" }; } + BitFieldValue bPendingDestroy() { return { this, "UNetConnection.bPendingDestroy" }; } + + // Functions + + int BattlEye_GetAddrAsInt() { return NativeCall(this, "UNetConnection.BattlEye_GetAddrAsInt"); } + UActorChannel* ActorChannelsFindRef(AActor* InActor, bool bUseWeak) { return NativeCall(this, "UNetConnection.ActorChannelsFindRef", InActor, bUseWeak); } + void CheckFirstActor() { NativeCall(this, "UNetConnection.CheckFirstActor"); } + void CleanUp() { NativeCall(this, "UNetConnection.CleanUp"); } + void CleanupDormantActorState() { NativeCall(this, "UNetConnection.CleanupDormantActorState"); } + bool ClientHasInitializedLevelFor(UObject* TestObject) { return NativeCall(this, "UNetConnection.ClientHasInitializedLevelFor", TestObject); } + void Close() { NativeCall(this, "UNetConnection.Close"); } + void FinishDestroy() { NativeCall(this, "UNetConnection.FinishDestroy"); } + void FlushDormancyForObject(UObject* Object) { NativeCall(this, "UNetConnection.FlushDormancyForObject", Object); } + void FlushNet(bool bIgnoreSimulation) { NativeCall(this, "UNetConnection.FlushNet", bIgnoreSimulation); } + FString* GetAddrAsString(FString* result) { return NativeCall(this, "UNetConnection.GetAddrAsString", result); } + //UBattlEyeChannel* GetBattlEyeChannel() { return NativeCall(this, "UNetConnection.GetBattlEyeChannel"); } + void HandleClientPlayer(APlayerController* PC, UNetConnection* NetConnection) { NativeCall(this, "UNetConnection.HandleClientPlayer", PC, NetConnection); } + void InitSendBuffer() { NativeCall(this, "UNetConnection.InitSendBuffer"); } + bool IsClientMsgTypeValid(const char ClientMsgType) { return NativeCall(this, "UNetConnection.IsClientMsgTypeValid", ClientMsgType); } + int IsNetReady(bool Saturate) { return NativeCall(this, "UNetConnection.IsNetReady", Saturate); } + FString* LowLevelDescribe(FString* result) { return NativeCall(this, "UNetConnection.LowLevelDescribe", result); } + FString* LowLevelGetRemoteAddress(FString* result, bool bAppendPort) { return NativeCall(this, "UNetConnection.LowLevelGetRemoteAddress", result, bAppendPort); } + void LowLevelSend(void* Data, int Count) { NativeCall(this, "UNetConnection.LowLevelSend", Data, Count); } + void PurgeAcks() { NativeCall(this, "UNetConnection.PurgeAcks"); } + void ReceivedNak(int NakPacketId) { NativeCall(this, "UNetConnection.ReceivedNak", NakPacketId); } + void ReceivedNak_Range(int NakPacketStart, int NakPacketEnd) { NativeCall(this, "UNetConnection.ReceivedNak_Range", NakPacketStart, NakPacketEnd); } + //void ReceivedPacket(FBitReader* Reader) { NativeCall(this, "UNetConnection.ReceivedPacket", Reader); } + void ReceivedRawPacket(void* InData, int Count) { NativeCall(this, "UNetConnection.ReceivedRawPacket", InData, Count); } + void ResetGameWorldState() { NativeCall(this, "UNetConnection.ResetGameWorldState"); } + void SendAck(int AckPacketId, bool FirstTime, bool bHavePingAckData, unsigned int PingAckData) { NativeCall(this, "UNetConnection.SendAck", AckPacketId, FirstTime, bHavePingAckData, PingAckData); } + void SendPackageMap() { NativeCall(this, "UNetConnection.SendPackageMap"); } + //void SetClientLoginState(EClientLoginState::Type NewState) { NativeCall(this, "UNetConnection.SetClientLoginState", NewState); } + void SetExpectedClientLoginMsgType(const char NewType) { NativeCall(this, "UNetConnection.SetExpectedClientLoginMsgType", NewType); } + bool ShouldReplicateVoicePacketFrom(FUniqueNetId* Sender, char ShouldUseSuperRange, char* playbackFlags) { return NativeCall(this, "UNetConnection.ShouldReplicateVoicePacketFrom", Sender, ShouldUseSuperRange, playbackFlags); } + void Tick() { NativeCall(this, "UNetConnection.Tick"); } + void ValidateSendBuffer() { NativeCall(this, "UNetConnection.ValidateSendBuffer"); } + int WriteBitsToSendBuffer(const char* Bits, const int SizeInBits, const char* ExtraBits, const int ExtraSizeInBits) { return NativeCall(this, "UNetConnection.WriteBitsToSendBuffer", Bits, SizeInBits, ExtraBits, ExtraSizeInBits); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UNetConnection.GetPrivateStaticClass", Package); } +}; + +struct FUniqueNetIdRepl +{ + TSharedPtr UniqueNetId; + + // Functions + + FUniqueNetIdRepl* operator=(FUniqueNetIdRepl* Other) { return NativeCall(this, "FUniqueNetIdRepl.operator=", Other); } + bool operator==(FUniqueNetIdRepl* Other) { return NativeCall(this, "FUniqueNetIdRepl.operator==", Other); } + void SetUniqueNetId(TSharedPtr * InUniqueNetId) { NativeCall*>(this, "FUniqueNetIdRepl.SetUniqueNetId", InUniqueNetId); } + bool ExportTextItem(FString* ValueStr, FUniqueNetIdRepl* DefaultValue, UObject* Parent, int PortFlags, UObject* ExportRootScope) { return NativeCall(this, "FUniqueNetIdRepl.ExportTextItem", ValueStr, DefaultValue, Parent, PortFlags, ExportRootScope); } + FString* ToString(FString* result) { return NativeCall(this, "FUniqueNetIdRepl.ToString", result); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FUniqueNetIdRepl.StaticStruct"); } +}; + +struct FPrimalPlayerCharacterConfigStructReplicated {}; + +struct FActorSpawnParameters +{ + FActorSpawnParameters() + : Name() + , Template(NULL) + , Owner(NULL) + , Instigator(NULL) + , OverrideLevel(NULL) + , bNoCollisionFail(0) + , bRemoteOwned(false) + , bNoFail(false) + , bDeferruction(false) + , bAllowDuringructionScript(false) + , bDeferBeginPlay(0) + , ExtraSpawnData(0) + , ObjectFlags(EObjectFlags::RF_Transactional) + , AttachToComponent(nullptr) + { + } + + FName Name; + AActor* Template; + AActor* Owner; + APawn* Instigator; + ULevel* OverrideLevel; + unsigned __int32 bNoCollisionFail : 1; + unsigned __int32 bRemoteOwned : 1; + unsigned __int32 bNoFail : 1; + unsigned __int32 bDeferruction : 1; + unsigned __int32 bAllowDuringructionScript : 1; + unsigned __int32 bDeferBeginPlay : 1; + int ExtraSpawnData; + EObjectFlags ObjectFlags; + USceneComponent* AttachToComponent; + FName AttachToBoneName; +}; + +struct FPrimalStats +{ + bool& bUsedField() { return *GetNativePointerField(this, "FPrimalStats.bUsed"); } + long double& StartStatsTimeField() { return *GetNativePointerField(this, "FPrimalStats.StartStatsTime"); } + FieldArray PrimalStatsValuesField() { return { this, "FPrimalStats.PrimalStatsValues" }; } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalStats.StaticStruct"); } +}; + +struct FSpawnPointInfo +{ + unsigned int& EntityIDField() { return *GetNativePointerField(this, "FSpawnPointInfo.EntityID"); } + FString& EntityNameField() { return *GetNativePointerField(this, "FSpawnPointInfo.EntityName"); } + bool& bServerIsFullField() { return *GetNativePointerField(this, "FSpawnPointInfo.bServerIsFull"); } + TEnumAsByte& EntityTypeField() { return *GetNativePointerField*>(this, "FSpawnPointInfo.EntityType"); } + TEnumAsByte& ShipTypeField() { return *GetNativePointerField*>(this, "FSpawnPointInfo.ShipType"); } + unsigned int& ServerIdField() { return *GetNativePointerField(this, "FSpawnPointInfo.ServerId"); } + FVector2D& RelativeLocationInServerField() { return *GetNativePointerField(this, "FSpawnPointInfo.RelativeLocationInServer"); } + unsigned int& NextAllowedUseTimeField() { return *GetNativePointerField(this, "FSpawnPointInfo.NextAllowedUseTime"); } + unsigned int& ParentEntityIDField() { return *GetNativePointerField(this, "FSpawnPointInfo.ParentEntityID"); } + bool& bInLandClaimedFlagRangeField() { return *GetNativePointerField(this, "FSpawnPointInfo.bInLandClaimedFlagRange"); } + bool& bReachedMaxTravelCountField() { return *GetNativePointerField(this, "FSpawnPointInfo.bReachedMaxTravelCount"); } + bool& bIsDeadField() { return *GetNativePointerField(this, "FSpawnPointInfo.bIsDead"); } + + // Functions + + FSpawnPointInfo* operator=(FSpawnPointInfo* __that) { return NativeCall(this, "FSpawnPointInfo.operator=", __that); } + FString* GetDisplayName(FString* result, FVector* FromPos, bool bIncludeDistance) { return NativeCall(this, "FSpawnPointInfo.GetDisplayName", result, FromPos, bIncludeDistance); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FSpawnPointInfo.StaticStruct"); } +}; + +struct FAdminPlayerDataInfo +{ + FString& PlayerNameField() { return *GetNativePointerField(this, "FAdminPlayerDataInfo.PlayerName"); } + FString& PlayerSteamNameField() { return *GetNativePointerField(this, "FAdminPlayerDataInfo.PlayerSteamName"); } + FString& SteamIDField() { return *GetNativePointerField(this, "FAdminPlayerDataInfo.SteamID"); } + __int64& LinkedPlayerIDField() { return *GetNativePointerField<__int64*>(this, "FAdminPlayerDataInfo.LinkedPlayerID"); } + bool& IsHostField() { return *GetNativePointerField(this, "FAdminPlayerDataInfo.IsHost"); } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FAdminPlayerDataInfo.StaticStruct"); } +}; + +struct FPlayerDeathReason +{ + int& PlayerIDField() { return *GetNativePointerField(this, "FPlayerDeathReason.PlayerID"); } + FString& DeathReasonField() { return *GetNativePointerField(this, "FPlayerDeathReason.DeathReason"); } + long double& DiedAtTimeField() { return *GetNativePointerField(this, "FPlayerDeathReason.DiedAtTime"); } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPlayerDeathReason.StaticStruct"); } +}; + +struct FPrimalPlayerCharacterConfigStruct +{ + FieldArray BodyColorsField() { return { this, "FPrimalPlayerCharacterConfigStruct.BodyColors" }; } + FLinearColor& OverrideHeadHairColorField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.OverrideHeadHairColor"); } + FLinearColor& OverrideFacialHairColorField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.OverrideFacialHairColor"); } + char& FacialHairIndexField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.FacialHairIndex"); } + char& HeadHairIndexField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.HeadHairIndex"); } + FString& PlayerCharacterFirstNameField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.PlayerCharacterFirstName"); } + FString& PlayerCharacterLastNameField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.PlayerCharacterLastName"); } + FieldArray BonePresetsField() { return { this, "FPrimalPlayerCharacterConfigStruct.BonePresets" }; } + FieldArray AdvancedBoneModifiersField() { return { this, "FPrimalPlayerCharacterConfigStruct.AdvancedBoneModifiers" }; } + int& PlayerSpawnRegionIndexField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.PlayerSpawnRegionIndex"); } + float& BodyfatField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.Bodyfat"); } + float& AgeField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.Age"); } + float& MuscleToneField() { return *GetNativePointerField(this, "FPrimalPlayerCharacterConfigStruct.MuscleTone"); } + + // Bit fields + + BitFieldValue bIsFemale() { return { this, "FPrimalPlayerCharacterConfigStruct.bIsFemale" }; } + + // Functions + + FPrimalPlayerCharacterConfigStruct* operator=(FPrimalPlayerCharacterConfigStruct* __that) { return NativeCall(this, "FPrimalPlayerCharacterConfigStruct.operator=", __that); } + FString* GetPlayerCharacterName(FString* result) { return NativeCall(this, "FPrimalPlayerCharacterConfigStruct.GetPlayerCharacterName", result); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalPlayerCharacterConfigStruct.StaticStruct"); } +}; + +struct FPrimalCharacterStatusValueModifier +{ + TEnumAsByte& ValueTypeField() { return *GetNativePointerField*>(this, "FPrimalCharacterStatusValueModifier.ValueType"); } + TEnumAsByte& StopOnValueNearMaxField() { return *GetNativePointerField*>(this, "FPrimalCharacterStatusValueModifier.StopOnValueNearMax"); } + float& AmountToAddField() { return *GetNativePointerField(this, "FPrimalCharacterStatusValueModifier.AmountToAdd"); } + float& BaseAmountToAddField() { return *GetNativePointerField(this, "FPrimalCharacterStatusValueModifier.BaseAmountToAdd"); } + float& SpeedToAddField() { return *GetNativePointerField(this, "FPrimalCharacterStatusValueModifier.SpeedToAdd"); } + int& StatusValueModifierDescriptionIndexField() { return *GetNativePointerField(this, "FPrimalCharacterStatusValueModifier.StatusValueModifierDescriptionIndex"); } + + // Bit fields + + BitFieldValue bContinueOnUnchangedValue() { return { this, "FPrimalCharacterStatusValueModifier.bContinueOnUnchangedValue" }; } + BitFieldValue bSetValue() { return { this, "FPrimalCharacterStatusValueModifier.bSetValue" }; } + BitFieldValue bSetAdditionalValue() { return { this, "FPrimalCharacterStatusValueModifier.bSetAdditionalValue" }; } + BitFieldValue bMakeUntameable() { return { this, "FPrimalCharacterStatusValueModifier.bMakeUntameable" }; } + BitFieldValue bMoveTowardsEquilibrium() { return { this, "FPrimalCharacterStatusValueModifier.bMoveTowardsEquilibrium" }; } + BitFieldValue bAddTowardsEquilibrium() { return { this, "FPrimalCharacterStatusValueModifier.bAddTowardsEquilibrium" }; } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalCharacterStatusValueModifier.StaticStruct"); } +}; + +struct FDinoBaseLevelWeightEntry +{ + float& EntryWeightField() { return *GetNativePointerField(this, "FDinoBaseLevelWeightEntry.EntryWeight"); } + float& BaseLevelMinRangeField() { return *GetNativePointerField(this, "FDinoBaseLevelWeightEntry.BaseLevelMinRange"); } + float& BaseLevelMaxRangeField() { return *GetNativePointerField(this, "FDinoBaseLevelWeightEntry.BaseLevelMaxRange"); } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FDinoBaseLevelWeightEntry.StaticStruct"); } +}; + +struct FClassRemappingWeight +{ + TSubclassOf FromClass; + TArray> ToClasses; + TArray Weights; +}; + +struct FClassNameReplacement +{ + FString& FromClassNameField() { return *GetNativePointerField(this, "FClassNameReplacement.FromClassName"); } + FString& ToClassNameField() { return *GetNativePointerField(this, "FClassNameReplacement.ToClassName"); } + + // Functions + + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FClassNameReplacement.StaticStruct"); } +}; + +struct FNPCDifficultyLevelRange +{ + TArray EnemyLevelsMin; + TArray EnemyLevelsMax; + TArray GameDifficulties; +}; + +struct FNPCSpawnEntry +{ + FString AnEntryName; + TArray> NPCsToSpawn; + TArray NPCsToSpawnStrings; + TArray NPCRandomSpawnClassWeights; + TArray NPCsSpawnOffsets; + TArray NPCsToSpawnPercentageChance; + TArray NPCMinLevelOffset; + TArray NPCMaxLevelOffset; + TArray NPCMinLevelMultiplier; + TArray NPCMaxLevelMultiplier; + unsigned __int32 bAddLevelOffsetBeforeMultiplier : 1; + unsigned __int32 bForcePreventSpawnOnOcean : 1; + TArray NPCOverrideLevel; + FVector ExtentCheck; + FVector GroupSpawnOffset; + float EntryWeight; + float ManualSpawnPointSpreadRadius; + float WaterOnlySpawnMinimumWaterHeight; + float MaximumWaterHeight; + TArray NPCDifficultyLevelRanges; + float LevelDifficultyTestOverride; + float SpawnMinDistanceFromStructuresMultiplier; + float SpawnMinDistanceFromPlayersMultiplier; + float SpawnMinDistanceFromTamedDinosMultiplier; + float RandGroupSpawnOffsetZMin; + float RandGroupSpawnOffsetZMax; + float OverrideYaw; +}; + +struct FNPCSpawnLimit +{ + TSubclassOf NPCClass; + FString NPCClassString; + float MaxPercentageOfDesiredNumToAllow; + int CurrentNumberOfNPCTouching; +}; + +struct UNPCSpawnEntriesContainer : UObject +{ + FString& EntriesNameField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.EntriesName"); } + TArray& NPCSpawnEntriesField() { return *GetNativePointerField*>(this, "UNPCSpawnEntriesContainer.NPCSpawnEntries"); } + TArray& NPCSpawnLimitsField() { return *GetNativePointerField*>(this, "UNPCSpawnEntriesContainer.NPCSpawnLimits"); } + float& MaxDesiredNumEnemiesMultiplierField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.MaxDesiredNumEnemiesMultiplier"); } + bool& bForceLinkedVolumesToOnlyCountMyDinoClassesField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.bForceLinkedVolumesToOnlyCountMyDinoClasses"); } + int& bOverrideLinkedVolume_OnlyCountWaterDinosField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.bOverrideLinkedVolume_OnlyCountWaterDinos"); } + int& bOverrideLinkedVolume_OnlyCountLandDinosField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.bOverrideLinkedVolume_OnlyCountLandDinos"); } + int& bOverrideLinkedVolume_CountTamedDinosField() { return *GetNativePointerField(this, "UNPCSpawnEntriesContainer.bOverrideLinkedVolume_CountTamedDinos"); } + + // Functions + + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UNPCSpawnEntriesContainer.GetPrivateStaticClass", Package); } +}; + +struct USceneComponent : UActorComponent +{ + FTransform& ComponentToWorldField() { return *GetNativePointerField(this, "USceneComponent.ComponentToWorld"); } + TEnumAsByte& MobilityField() { return *GetNativePointerField*>(this, "USceneComponent.Mobility"); } + FBoxSphereBounds& BoundsField() { return *GetNativePointerField(this, "USceneComponent.Bounds"); } + USceneComponent* AttachParentField() { return *GetNativePointerField(this, "USceneComponent.AttachParent"); } + FName& AttachSocketNameField() { return *GetNativePointerField(this, "USceneComponent.AttachSocketName"); } + TArray AttachChildrenField() { return *GetNativePointerField*>(this, "USceneComponent.AttachChildren"); } + FVector& RelativeLocationField() { return *GetNativePointerField(this, "USceneComponent.RelativeLocation"); } + FRotator& RelativeRotationField() { return *GetNativePointerField(this, "USceneComponent.RelativeRotation"); } + TEnumAsByte& DetailModeField() { return *GetNativePointerField*>(this, "USceneComponent.DetailMode"); } + int& AttachmentChangedIncrementerField() { return *GetNativePointerField(this, "USceneComponent.AttachmentChangedIncrementer"); } + bool& NetUpdateTransformField() { return *GetNativePointerField(this, "USceneComponent.NetUpdateTransform"); } + USceneComponent* NetOldAttachParentField() { return *GetNativePointerField(this, "USceneComponent.NetOldAttachParent"); } + FName& NetOldAttachSocketNameField() { return *GetNativePointerField(this, "USceneComponent.NetOldAttachSocketName"); } + FVector& RelativeScale3DField() { return *GetNativePointerField(this, "USceneComponent.RelativeScale3D"); } + FVector& ComponentVelocityField() { return *GetNativePointerField(this, "USceneComponent.ComponentVelocity"); } + + // Bit fields + + BitFieldValue bRequiresCustomLocation() { return { this, "USceneComponent.bRequiresCustomLocation" }; } + BitFieldValue bAbsoluteLocation() { return { this, "USceneComponent.bAbsoluteLocation" }; } + BitFieldValue bAllowActorUpdateCallback() { return { this, "USceneComponent.bAllowActorUpdateCallback" }; } + BitFieldValue bAbsoluteTranslation_DEPRECATED() { return { this, "USceneComponent.bAbsoluteTranslation_DEPRECATED" }; } + BitFieldValue bAbsoluteRotation() { return { this, "USceneComponent.bAbsoluteRotation" }; } + BitFieldValue bAbsoluteScale() { return { this, "USceneComponent.bAbsoluteScale" }; } + BitFieldValue bVisible() { return { this, "USceneComponent.bVisible" }; } + BitFieldValue bHiddenInGame() { return { this, "USceneComponent.bHiddenInGame" }; } + BitFieldValue bAttachedSoundsForceHighPriority() { return { this, "USceneComponent.bAttachedSoundsForceHighPriority" }; } + BitFieldValue bShouldUpdatePhysicsVolume() { return { this, "USceneComponent.bShouldUpdatePhysicsVolume" }; } + BitFieldValue bUpdateChildOverlaps() { return { this, "USceneComponent.bUpdateChildOverlaps" }; } + BitFieldValue bBoundsChangeTriggersStreamingDataRebuild() { return { this, "USceneComponent.bBoundsChangeTriggersStreamingDataRebuild" }; } + BitFieldValue bUseAttachParentBound() { return { this, "USceneComponent.bUseAttachParentBound" }; } + BitFieldValue bWorldToComponentUpdated() { return { this, "USceneComponent.bWorldToComponentUpdated" }; } + BitFieldValue bClientSyncAlwaysUpdatePhysicsCollision() { return { this, "USceneComponent.bClientSyncAlwaysUpdatePhysicsCollision" }; } + + // Functions + + FVector* GetCustomLocation(FVector* result) { return NativeCall(this, "USceneComponent.GetCustomLocation", result); } + void OnChildAttached(USceneComponent* ChildComponent) { NativeCall(this, "USceneComponent.OnChildAttached", ChildComponent); } + void AddLocalOffset(FVector DeltaLocation, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalOffset", DeltaLocation, bSweep); } + void AddLocalRotation(FRotator DeltaRotation, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalRotation", DeltaRotation, bSweep); } + void AddLocalTransform(FTransform* DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddLocalTransform", DeltaTransform, bSweep); } + void AddWorldOffset(FVector DeltaLocation, bool bSweep) { NativeCall(this, "USceneComponent.AddWorldOffset", DeltaLocation, bSweep); } + void AddWorldRotation(FRotator DeltaRotation, bool bSweep) { NativeCall(this, "USceneComponent.AddWorldRotation", DeltaRotation, bSweep); } + void AddWorldTransform(FTransform* DeltaTransform, bool bSweep) { NativeCall(this, "USceneComponent.AddWorldTransform", DeltaTransform, bSweep); } + void AppendDescendants(TArray* Children) { NativeCall*>(this, "USceneComponent.AppendDescendants", Children); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "USceneComponent.ApplyWorldOffset", InOffset, bWorldShift); } + void AttachTo(USceneComponent* Parent, FName InSocketName, EAttachLocation::Type AttachType, bool bWeldSimulatedBodies) { NativeCall(this, "USceneComponent.AttachTo", Parent, InSocketName, AttachType, bWeldSimulatedBodies); } + void BeginDestroy() { NativeCall(this, "USceneComponent.BeginDestroy"); } + void CalcBoundingCylinder(float* CylinderRadius, float* CylinderHalfHeight) { NativeCall(this, "USceneComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USceneComponent.CalcBounds", result, LocalToWorld); } + FTransform* CalcNewComponentToWorld(FTransform* result, FTransform* NewRelativeTransform, USceneComponent* Parent) { return NativeCall(this, "USceneComponent.CalcNewComponentToWorld", result, NewRelativeTransform, Parent); } + bool CanEverRender() { return NativeCall(this, "USceneComponent.CanEverRender"); } + void DestroyComponent() { NativeCall(this, "USceneComponent.DestroyComponent"); } + void DetachFromParent(bool bMaintainWorldPosition) { NativeCall(this, "USceneComponent.DetachFromParent", bMaintainWorldPosition); } + unsigned __int64 GetAttachParent() { return NativeCall(this, "USceneComponent.GetAttachParent"); } + USceneComponent* GetAttachmentRoot() { return NativeCall(this, "USceneComponent.GetAttachmentRoot"); } + AActor* GetAttachmentRootActor() { return NativeCall(this, "USceneComponent.GetAttachmentRootActor"); } + USceneComponent* GetChildComponent(int ChildIndex) { return NativeCall(this, "USceneComponent.GetChildComponent", ChildIndex); } + void GetChildrenComponents(bool bIncludeAllDescendants, TArray* Children) { NativeCall*>(this, "USceneComponent.GetChildrenComponents", bIncludeAllDescendants, Children); } + FCollisionResponseContainer* GetCollisionResponseToChannels() { return NativeCall(this, "USceneComponent.GetCollisionResponseToChannels"); } + FVector* GetComponentVelocity(FVector* result) { return NativeCall(this, "USceneComponent.GetComponentVelocity", result); } + FVector* GetForwardVector(FVector* result) { return NativeCall(this, "USceneComponent.GetForwardVector", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "USceneComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + FVector* GetMeshScaleMultiplier(FVector* result) { return NativeCall(this, "USceneComponent.GetMeshScaleMultiplier", result); } + int GetNumChildrenComponents() { return NativeCall(this, "USceneComponent.GetNumChildrenComponents"); } + void GetParentComponents(TArray* Parents) { NativeCall*>(this, "USceneComponent.GetParentComponents", Parents); } + FBoxSphereBounds* GetPlacementExtent(FBoxSphereBounds* result) { return NativeCall(this, "USceneComponent.GetPlacementExtent", result); } + FTransform* GetRelativeTransform(FTransform* result) { return NativeCall(this, "USceneComponent.GetRelativeTransform", result); } + FVector* GetRightVector(FVector* result) { return NativeCall(this, "USceneComponent.GetRightVector", result); } + FVector* GetSocketLocation(FVector* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketLocation", result, SocketName); } + FQuat* GetSocketQuaternion(FQuat* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketQuaternion", result, SocketName); } + FRotator* GetSocketRotation(FRotator* result, FName SocketName) { return NativeCall(this, "USceneComponent.GetSocketRotation", result, SocketName); } + FTransform* GetSocketTransform(FTransform* result, FName SocketName, ERelativeTransformSpace TransformSpace) { return NativeCall(this, "USceneComponent.GetSocketTransform", result, SocketName, TransformSpace); } + void GetSocketWorldLocationAndRotation(FName InSocketName, FVector* OutLocation, FQuat* OutRotation) { NativeCall(this, "USceneComponent.GetSocketWorldLocationAndRotation", InSocketName, OutLocation, OutRotation); } + void GetSocketWorldLocationAndRotation(FName InSocketName, FVector* OutLocation, FRotator* OutRotation) { NativeCall(this, "USceneComponent.GetSocketWorldLocationAndRotation", InSocketName, OutLocation, OutRotation); } + FVector* GetUpVector(FVector* result) { return NativeCall(this, "USceneComponent.GetUpVector", result); } + FVector* GetWorldLocation(FVector* result) { return NativeCall(this, "USceneComponent.GetWorldLocation", result); } + bool InternalSetWorldLocationAndRotation(FVector NewLocation, FQuat* RotationQuat, bool bNoPhysics) { return NativeCall(this, "USceneComponent.InternalSetWorldLocationAndRotation", NewLocation, RotationQuat, bNoPhysics); } + bool IsAnySimulatingPhysics() { return NativeCall(this, "USceneComponent.IsAnySimulatingPhysics"); } + bool IsAttachedTo(USceneComponent* TestComp) { return NativeCall(this, "USceneComponent.IsAttachedTo", TestComp); } + bool IsDeferringMovementUpdates() { return NativeCall(this, "USceneComponent.IsDeferringMovementUpdates"); } + bool IsVisible() { return NativeCall(this, "USceneComponent.IsVisible"); } + bool IsVisibleInEditor() { return NativeCall(this, "USceneComponent.IsVisibleInEditor"); } + void K2_AttachTo(USceneComponent* InParent, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "USceneComponent.K2_AttachTo", InParent, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + FRotator* K2_GetComponentRotation(FRotator* result) { return NativeCall(this, "USceneComponent.K2_GetComponentRotation", result); } + FVector* K2_GetComponentScale(FVector* result) { return NativeCall(this, "USceneComponent.K2_GetComponentScale", result); } + FTransform* K2_GetComponentToWorld(FTransform* result) { return NativeCall(this, "USceneComponent.K2_GetComponentToWorld", result); } + bool MoveComponentImpl(FVector* Delta, FQuat* NewRotation, bool bSweep, FHitResult* OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "USceneComponent.MoveComponentImpl", Delta, NewRotation, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } + void OnRegister() { NativeCall(this, "USceneComponent.OnRegister"); } + void OnRep_Transform() { NativeCall(this, "USceneComponent.OnRep_Transform"); } + void OnRep_Visibility(bool OldValue) { NativeCall(this, "USceneComponent.OnRep_Visibility", OldValue); } + void PostInterpChange(UProperty* PropertyThatChanged) { NativeCall(this, "USceneComponent.PostInterpChange", PropertyThatChanged); } + void PostNetReceive() { NativeCall(this, "USceneComponent.PostNetReceive"); } + void PreNetReceive() { NativeCall(this, "USceneComponent.PreNetReceive"); } + void ResetRelativeTransform() { NativeCall(this, "USceneComponent.ResetRelativeTransform"); } + void SetAbsolute(bool bNewAbsoluteLocation, bool bNewAbsoluteRotation, bool bNewAbsoluteScale) { NativeCall(this, "USceneComponent.SetAbsolute", bNewAbsoluteLocation, bNewAbsoluteRotation, bNewAbsoluteScale); } + void SetHiddenInGame(bool NewHiddenGame, bool bPropagateToChildren) { NativeCall(this, "USceneComponent.SetHiddenInGame", NewHiddenGame, bPropagateToChildren); } + void SetMobility(EComponentMobility::Type NewMobility) { NativeCall(this, "USceneComponent.SetMobility", NewMobility); } + void SetRelativeLocationAndRotation(FVector NewLocation, FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetRelativeScale3D(FVector NewScale3D) { NativeCall(this, "USceneComponent.SetRelativeScale3D", NewScale3D); } + void SetRelativeTransform(FTransform* NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetRelativeTransform", NewTransform, bSweep); } + void SetVisibility(bool bNewVisibility, bool bPropagateToChildren) { NativeCall(this, "USceneComponent.SetVisibility", bNewVisibility, bPropagateToChildren); } + void SetWorldLocation(FVector NewLocation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocation", NewLocation, bSweep); } + void SetWorldLocationAndRotation(FVector NewLocation, FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetWorldLocationAndRotation(FVector NewLocation, FRotator NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetWorldLocationAndRotationNoPhysics(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "USceneComponent.SetWorldLocationAndRotationNoPhysics", NewLocation, NewRotation); } + void SetWorldRotation(FQuat* NewRotation, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldRotation", NewRotation, bSweep); } + void SetWorldScale3D(FVector NewScale) { NativeCall(this, "USceneComponent.SetWorldScale3D", NewScale); } + void SetWorldTransform(FTransform* NewTransform, bool bSweep) { NativeCall(this, "USceneComponent.SetWorldTransform", NewTransform, bSweep); } + bool ShouldComponentAddToScene() { return NativeCall(this, "USceneComponent.ShouldComponentAddToScene"); } + bool ShouldRender() { return NativeCall(this, "USceneComponent.ShouldRender"); } + void SnapTo(USceneComponent* Parent, FName InSocketName) { NativeCall(this, "USceneComponent.SnapTo", Parent, InSocketName); } + void StopSound(USoundBase* SoundToStop, float FadeOutTime) { NativeCall(this, "USceneComponent.StopSound", SoundToStop, FadeOutTime); } + void ToggleVisibility(bool bPropagateToChildren) { NativeCall(this, "USceneComponent.ToggleVisibility", bPropagateToChildren); } + void UpdateBounds() { NativeCall(this, "USceneComponent.UpdateBounds"); } + void UpdateChildTransforms() { NativeCall(this, "USceneComponent.UpdateChildTransforms"); } + void UpdateComponentToWorld(bool bSkipPhysicsMove) { NativeCall(this, "USceneComponent.UpdateComponentToWorld", bSkipPhysicsMove); } + void UpdateComponentToWorldWithParent(USceneComponent* Parent, bool bSkipPhysicsMove, FQuat* RelativeRotationQuat) { NativeCall(this, "USceneComponent.UpdateComponentToWorldWithParent", Parent, bSkipPhysicsMove, RelativeRotationQuat); } + void UpdateNavigationData() { NativeCall(this, "USceneComponent.UpdateNavigationData"); } + void UpdatePhysicsVolume(bool bTriggerNotifiers) { NativeCall(this, "USceneComponent.UpdatePhysicsVolume", bTriggerNotifiers); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "USceneComponent.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUSceneComponent() { NativeCall(nullptr, "USceneComponent.StaticRegisterNativesUSceneComponent"); } +}; + +struct UPrimitiveComponent : USceneComponent +{ + float& MinDrawDistanceField() { return *GetNativePointerField(this, "UPrimitiveComponent.MinDrawDistance"); } + float& MassiveLODSizeOnScreenField() { return *GetNativePointerField(this, "UPrimitiveComponent.MassiveLODSizeOnScreen"); } + float& LDMaxDrawDistanceField() { return *GetNativePointerField(this, "UPrimitiveComponent.LDMaxDrawDistance"); } + float& CachedMaxDrawDistanceField() { return *GetNativePointerField(this, "UPrimitiveComponent.CachedMaxDrawDistance"); } + TEnumAsByte& DepthPriorityGroupField() { return *GetNativePointerField*>(this, "UPrimitiveComponent.DepthPriorityGroup"); } + TEnumAsByte& ViewOwnerDepthPriorityGroupField() { return *GetNativePointerField*>(this, "UPrimitiveComponent.ViewOwnerDepthPriorityGroup"); } + float& InterpRootLocationSpeedField() { return *GetNativePointerField(this, "UPrimitiveComponent.InterpRootLocationSpeed"); } + float& InterpRootRotationSpeedField() { return *GetNativePointerField(this, "UPrimitiveComponent.InterpRootRotationSpeed"); } + float& InterpRootPhysThresholdField() { return *GetNativePointerField(this, "UPrimitiveComponent.InterpRootPhysThreshold"); } + FVector& InterpolatedRootLocationField() { return *GetNativePointerField(this, "UPrimitiveComponent.InterpolatedRootLocation"); } + FRotator& InterpolatedRootRotationField() { return *GetNativePointerField(this, "UPrimitiveComponent.InterpolatedRootRotation"); } + int& CustomDepthStencilValueField() { return *GetNativePointerField(this, "UPrimitiveComponent.CustomDepthStencilValue"); } + int& ObjectLayerField() { return *GetNativePointerField(this, "UPrimitiveComponent.ObjectLayer"); } + TEnumAsByte& IndirectLightingCacheQualityField() { return *GetNativePointerField*>(this, "UPrimitiveComponent.IndirectLightingCacheQuality"); } + FieldArray RBSyncModuloField() { return { this, "UPrimitiveComponent.RBSyncModulo" }; } + FieldArray RBSyncOffsetField() { return { this, "UPrimitiveComponent.RBSyncOffset" }; } + bool& bHasCachedStaticLightingField() { return *GetNativePointerField(this, "UPrimitiveComponent.bHasCachedStaticLighting"); } + bool& bStaticLightingBuildEnqueuedField() { return *GetNativePointerField(this, "UPrimitiveComponent.bStaticLightingBuildEnqueued"); } + int& TranslucencySortPriorityField() { return *GetNativePointerField(this, "UPrimitiveComponent.TranslucencySortPriority"); } + int& VisibilityIdField() { return *GetNativePointerField(this, "UPrimitiveComponent.VisibilityId"); } + float& LastPhysxSleepTimeField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastPhysxSleepTime"); } + unsigned int& GameThread_OverlapIncrementorField() { return *GetNativePointerField(this, "UPrimitiveComponent.GameThread_OverlapIncrementor"); } + unsigned int& GameThread_OverlapIndexMaskField() { return *GetNativePointerField(this, "UPrimitiveComponent.GameThread_OverlapIndexMask"); } + int& InternalOctreeMaskField() { return *GetNativePointerField(this, "UPrimitiveComponent.InternalOctreeMask"); } + float& LpvBiasMultiplierField() { return *GetNativePointerField(this, "UPrimitiveComponent.LpvBiasMultiplier"); } + float& OverrideStepHeightField() { return *GetNativePointerField(this, "UPrimitiveComponent.OverrideStepHeight"); } + FBodyInstance& BodyInstanceField() { return *GetNativePointerField(this, "UPrimitiveComponent.BodyInstance"); } + float& LastCheckedAllCollideableDescendantsTimeField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastCheckedAllCollideableDescendantsTime"); } + long double& LastBasedPhysComponentOnTimeField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastBasedPhysComponentOnTime"); } + float& BoundsScaleField() { return *GetNativePointerField(this, "UPrimitiveComponent.BoundsScale"); } + long double& LastSubmitTimeField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastSubmitTime"); } + long double& LastRenderTimeField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastRenderTime"); } + long double& LastRenderTimeIgnoreShadowField() { return *GetNativePointerField(this, "UPrimitiveComponent.LastRenderTimeIgnoreShadow"); } + TEnumAsByte& CanCharacterStepUpOnField() { return *GetNativePointerField*>(this, "UPrimitiveComponent.CanCharacterStepUpOn"); } + TArray>& MoveIgnoreActorsField() { return *GetNativePointerField>*>(this, "UPrimitiveComponent.MoveIgnoreActors"); } + FComponentBeginOverlapSignature& OnComponentBeginOverlapField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnComponentBeginOverlap"); } + FComponentEndOverlapSignature& OnComponentEndOverlapField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnComponentEndOverlap"); } + FComponentBeginCursorOverSignature& OnBeginCursorOverField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnBeginCursorOver"); } + FComponentEndCursorOverSignature& OnEndCursorOverField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnEndCursorOver"); } + FComponentOnClickedSignature& OnClickedField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnClicked"); } + FComponentOnReleasedSignature& OnReleasedField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnReleased"); } + FComponentOnInputTouchBeginSignature& OnInputTouchBeginField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchBegin"); } + FComponentOnInputTouchEndSignature& OnInputTouchEndField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchEnd"); } + FComponentBeginTouchOverSignature& OnInputTouchEnterField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchEnter"); } + FComponentEndTouchOverSignature& OnInputTouchLeaveField() { return *GetNativePointerField(this, "UPrimitiveComponent.OnInputTouchLeave"); } + unsigned int& ProxyMeshIDField() { return *GetNativePointerField(this, "UPrimitiveComponent.ProxyMeshID"); } + bool& bIsProxyMeshParentField() { return *GetNativePointerField(this, "UPrimitiveComponent.bIsProxyMeshParent"); } + bool& bHasActiveProxyMeshChildrenField() { return *GetNativePointerField(this, "UPrimitiveComponent.bHasActiveProxyMeshChildren"); } + + // Bit fields + + BitFieldValue bUseAbsoluteMaxDrawDisatance() { return { this, "UPrimitiveComponent.bUseAbsoluteMaxDrawDisatance" }; } + BitFieldValue bIncludeBoundsRadiusInDrawDistances() { return { this, "UPrimitiveComponent.bIncludeBoundsRadiusInDrawDistances" }; } + BitFieldValue bExcludeFromLevelBounds() { return { this, "UPrimitiveComponent.bExcludeFromLevelBounds" }; } + BitFieldValue bPreventCharacterBasing() { return { this, "UPrimitiveComponent.bPreventCharacterBasing" }; } + BitFieldValue bAllowBasedCharacters() { return { this, "UPrimitiveComponent.bAllowBasedCharacters" }; } + BitFieldValue bNoEncroachCheck_DEPRECATED() { return { this, "UPrimitiveComponent.bNoEncroachCheck_DEPRECATED" }; } + BitFieldValue bForceExcludeFromGlobalDistanceField() { return { this, "UPrimitiveComponent.bForceExcludeFromGlobalDistanceField" }; } + BitFieldValue bInterpolateRootPhys() { return { this, "UPrimitiveComponent.bInterpolateRootPhys" }; } + BitFieldValue bForcePreventBlockingProjectiles() { return { this, "UPrimitiveComponent.bForcePreventBlockingProjectiles" }; } + BitFieldValue bIsAbstractBasingComponent() { return { this, "UPrimitiveComponent.bIsAbstractBasingComponent" }; } + BitFieldValue bDisableAllRigidBody_DEPRECATED() { return { this, "UPrimitiveComponent.bDisableAllRigidBody_DEPRECATED" }; } + BitFieldValue bForceDynamicPhysics() { return { this, "UPrimitiveComponent.bForceDynamicPhysics" }; } + BitFieldValue bPreventDamage() { return { this, "UPrimitiveComponent.bPreventDamage" }; } + BitFieldValue bAlwaysCreatePhysicsState() { return { this, "UPrimitiveComponent.bAlwaysCreatePhysicsState" }; } + BitFieldValue bGenerateOverlapEvents() { return { this, "UPrimitiveComponent.bGenerateOverlapEvents" }; } + BitFieldValue bForceOverlapEvents() { return { this, "UPrimitiveComponent.bForceOverlapEvents" }; } + BitFieldValue bMultiBodyOverlap() { return { this, "UPrimitiveComponent.bMultiBodyOverlap" }; } + BitFieldValue bCheckAsyncSceneOnMove() { return { this, "UPrimitiveComponent.bCheckAsyncSceneOnMove" }; } + BitFieldValue bTraceComplexOnMove() { return { this, "UPrimitiveComponent.bTraceComplexOnMove" }; } + BitFieldValue bReturnMaterialOnMove() { return { this, "UPrimitiveComponent.bReturnMaterialOnMove" }; } + BitFieldValue bUseViewOwnerDepthPriorityGroup() { return { this, "UPrimitiveComponent.bUseViewOwnerDepthPriorityGroup" }; } + BitFieldValue bAllowCullDistanceVolume() { return { this, "UPrimitiveComponent.bAllowCullDistanceVolume" }; } + BitFieldValue bHasMotionBlurVelocityMeshes() { return { this, "UPrimitiveComponent.bHasMotionBlurVelocityMeshes" }; } + BitFieldValue bRenderCustomDepth() { return { this, "UPrimitiveComponent.bRenderCustomDepth" }; } + BitFieldValue bRenderInMainPass() { return { this, "UPrimitiveComponent.bRenderInMainPass" }; } + BitFieldValue bIsInForeground() { return { this, "UPrimitiveComponent.bIsInForeground" }; } + BitFieldValue HiddenGame_DEPRECATED() { return { this, "UPrimitiveComponent.HiddenGame_DEPRECATED" }; } + BitFieldValue DrawInGame_DEPRECATED() { return { this, "UPrimitiveComponent.DrawInGame_DEPRECATED" }; } + BitFieldValue bReceivesDecals() { return { this, "UPrimitiveComponent.bReceivesDecals" }; } + BitFieldValue bOwnerNoSee() { return { this, "UPrimitiveComponent.bOwnerNoSee" }; } + BitFieldValue bOnlyOwnerSee() { return { this, "UPrimitiveComponent.bOnlyOwnerSee" }; } + BitFieldValue bTreatAsBackgroundForOcclusion() { return { this, "UPrimitiveComponent.bTreatAsBackgroundForOcclusion" }; } + BitFieldValue bUseAsOccluder() { return { this, "UPrimitiveComponent.bUseAsOccluder" }; } + BitFieldValue bSelectable() { return { this, "UPrimitiveComponent.bSelectable" }; } + BitFieldValue bForceMipStreaming() { return { this, "UPrimitiveComponent.bForceMipStreaming" }; } + BitFieldValue bHasPerInstanceHitProxies() { return { this, "UPrimitiveComponent.bHasPerInstanceHitProxies" }; } + BitFieldValue CastShadow() { return { this, "UPrimitiveComponent.CastShadow" }; } + BitFieldValue bAffectDynamicIndirectLighting() { return { this, "UPrimitiveComponent.bAffectDynamicIndirectLighting" }; } + BitFieldValue bAffectDistanceFieldLighting() { return { this, "UPrimitiveComponent.bAffectDistanceFieldLighting" }; } + BitFieldValue bCastDynamicShadow() { return { this, "UPrimitiveComponent.bCastDynamicShadow" }; } + BitFieldValue bCastStaticShadow() { return { this, "UPrimitiveComponent.bCastStaticShadow" }; } + BitFieldValue IgnoreDuringPlanarReflectionPass() { return { this, "UPrimitiveComponent.IgnoreDuringPlanarReflectionPass" }; } + BitFieldValue bCastVolumetricTranslucentShadow() { return { this, "UPrimitiveComponent.bCastVolumetricTranslucentShadow" }; } + BitFieldValue bCastFarShadow() { return { this, "UPrimitiveComponent.bCastFarShadow" }; } + BitFieldValue bCastInsetShadow() { return { this, "UPrimitiveComponent.bCastInsetShadow" }; } + BitFieldValue bCastHiddenShadow() { return { this, "UPrimitiveComponent.bCastHiddenShadow" }; } + BitFieldValue bCastShadowAsTwoSided() { return { this, "UPrimitiveComponent.bCastShadowAsTwoSided" }; } + BitFieldValue bLightAsIfStatic() { return { this, "UPrimitiveComponent.bLightAsIfStatic" }; } + BitFieldValue bLightAttachmentsAsGroup() { return { this, "UPrimitiveComponent.bLightAttachmentsAsGroup" }; } + BitFieldValue bUseInternalOctree() { return { this, "UPrimitiveComponent.bUseInternalOctree" }; } + BitFieldValue bUseInternalOctreeOnClient() { return { this, "UPrimitiveComponent.bUseInternalOctreeOnClient" }; } + BitFieldValue bRegisteredInternalOctree() { return { this, "UPrimitiveComponent.bRegisteredInternalOctree" }; } + BitFieldValue bClimbable() { return { this, "UPrimitiveComponent.bClimbable" }; } + BitFieldValue bUseTimeSlicedRBSyncPhysx() { return { this, "UPrimitiveComponent.bUseTimeSlicedRBSyncPhysx" }; } + BitFieldValue bPreventTimeSlicedRBSyncPhysx() { return { this, "UPrimitiveComponent.bPreventTimeSlicedRBSyncPhysx" }; } + BitFieldValue bIgnoreRadialImpulse() { return { this, "UPrimitiveComponent.bIgnoreRadialImpulse" }; } + BitFieldValue bIgnoreRadialForce() { return { this, "UPrimitiveComponent.bIgnoreRadialForce" }; } + BitFieldValue AlwaysLoadOnClient() { return { this, "UPrimitiveComponent.AlwaysLoadOnClient" }; } + BitFieldValue AlwaysLoadOnServer() { return { this, "UPrimitiveComponent.AlwaysLoadOnServer" }; } + BitFieldValue bUseEditorCompositing() { return { this, "UPrimitiveComponent.bUseEditorCompositing" }; } + BitFieldValue bIgnoredByCharacterEncroachment() { return { this, "UPrimitiveComponent.bIgnoredByCharacterEncroachment" }; } + BitFieldValue bMovableUseDynamicDrawDistance() { return { this, "UPrimitiveComponent.bMovableUseDynamicDrawDistance" }; } + BitFieldValue bCanEverAffectNavigation() { return { this, "UPrimitiveComponent.bCanEverAffectNavigation" }; } + BitFieldValue bNavigationRelevant() { return { this, "UPrimitiveComponent.bNavigationRelevant" }; } + BitFieldValue bCachedAllCollideableDescendantsRelative() { return { this, "UPrimitiveComponent.bCachedAllCollideableDescendantsRelative" }; } + + // Functions + + bool AreSymmetricRotations(FQuat* A, FQuat* B, FVector* Scale3D) { return NativeCall(this, "UPrimitiveComponent.AreSymmetricRotations", A, B, Scale3D); } + bool CanBeBaseForCharacter(APawn* Pawn) { return NativeCall(this, "UPrimitiveComponent.CanBeBaseForCharacter", Pawn); } + char GetStaticDepthPriorityGroup() { return NativeCall(this, "UPrimitiveComponent.GetStaticDepthPriorityGroup"); } + bool HasValidSettingsForStaticLighting() { return NativeCall(this, "UPrimitiveComponent.HasValidSettingsForStaticLighting"); } + void GetLightAndShadowMapMemoryUsage(int* NumInstances, float* BoundsSurfaceArea) { NativeCall(this, "UPrimitiveComponent.GetLightAndShadowMapMemoryUsage", NumInstances, BoundsSurfaceArea); } + bool AreAllCollideableDescendantsRelative(bool bAllowCachedValue) { return NativeCall(this, "UPrimitiveComponent.AreAllCollideableDescendantsRelative", bAllowCachedValue); } + void BeginDestroy() { NativeCall(this, "UPrimitiveComponent.BeginDestroy"); } + bool CanCharacterStepUp(APawn* Pawn) { return NativeCall(this, "UPrimitiveComponent.CanCharacterStepUp", Pawn); } + bool CanEditSimulatePhysics() { return NativeCall(this, "UPrimitiveComponent.CanEditSimulatePhysics"); } + void ClearMoveIgnoreActors() { NativeCall(this, "UPrimitiveComponent.ClearMoveIgnoreActors"); } + bool ComponentOverlapComponentImpl(UPrimitiveComponent* PrimComp, FVector Pos, FQuat* Quat, FCollisionQueryParams* Params) { return NativeCall(this, "UPrimitiveComponent.ComponentOverlapComponentImpl", PrimComp, Pos, Quat, Params); } + void CreatePhysicsState() { NativeCall(this, "UPrimitiveComponent.CreatePhysicsState"); } + void CreateRenderState_Concurrent() { NativeCall(this, "UPrimitiveComponent.CreateRenderState_Concurrent"); } + void DestroyPhysicsState() { NativeCall(this, "UPrimitiveComponent.DestroyPhysicsState"); } + void DestroyRenderState_Concurrent() { NativeCall(this, "UPrimitiveComponent.DestroyRenderState_Concurrent"); } + void DispatchBlockingHit(AActor* Owner, FHitResult* BlockingHit) { NativeCall(this, "UPrimitiveComponent.DispatchBlockingHit", Owner, BlockingHit); } + static void DispatchMouseOverEvents(UPrimitiveComponent* CurrentComponent, UPrimitiveComponent* NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchMouseOverEvents", CurrentComponent, NewComponent); } + void DispatchOnClicked() { NativeCall(this, "UPrimitiveComponent.DispatchOnClicked"); } + void DispatchOnInputTouchBegin(ETouchIndex::Type FingerIndex) { NativeCall(this, "UPrimitiveComponent.DispatchOnInputTouchBegin", FingerIndex); } + void DispatchOnInputTouchEnd(ETouchIndex::Type FingerIndex) { NativeCall(this, "UPrimitiveComponent.DispatchOnInputTouchEnd", FingerIndex); } + void DispatchOnReleased() { NativeCall(this, "UPrimitiveComponent.DispatchOnReleased"); } + static void DispatchTouchOverEvents(ETouchIndex::Type FingerIndex, UPrimitiveComponent* CurrentComponent, UPrimitiveComponent* NewComponent) { NativeCall(nullptr, "UPrimitiveComponent.DispatchTouchOverEvents", FingerIndex, CurrentComponent, NewComponent); } + void EnsurePhysicsStateCreated() { NativeCall(this, "UPrimitiveComponent.EnsurePhysicsStateCreated"); } + void FinishDestroy() { NativeCall(this, "UPrimitiveComponent.FinishDestroy"); } + ECollisionChannel GetCollisionObjectType() { return NativeCall(this, "UPrimitiveComponent.GetCollisionObjectType"); } + TArray>* GetMoveIgnoreActors() { return NativeCall>*>(this, "UPrimitiveComponent.GetMoveIgnoreActors"); } + FBox* GetNavigationBounds(FBox* result) { return NativeCall(this, "UPrimitiveComponent.GetNavigationBounds", result); } + void GetOverlappingActors(TArray* OutOverlappingActors, UClass* ClassFilter) { NativeCall*, UClass*>(this, "UPrimitiveComponent.GetOverlappingActors", OutOverlappingActors, ClassFilter); } + void GetOverlappingComponents(TArray* OutOverlappingComponents) { NativeCall*>(this, "UPrimitiveComponent.GetOverlappingComponents", OutOverlappingComponents); } + static float GetRBSync_StartDistance() { return NativeCall(nullptr, "UPrimitiveComponent.GetRBSync_StartDistance"); } + bool HasStaticLighting() { return NativeCall(this, "UPrimitiveComponent.HasStaticLighting"); } + bool HasValidPhysicsState() { return NativeCall(this, "UPrimitiveComponent.HasValidPhysicsState"); } + void IgnoreActorWhenMoving(AActor* Actor, bool bShouldIgnore) { NativeCall(this, "UPrimitiveComponent.IgnoreActorWhenMoving", Actor, bShouldIgnore); } + void InitSweepCollisionParams(FCollisionQueryParams* OutParams, FCollisionResponseParams* OutResponseParam) { NativeCall(this, "UPrimitiveComponent.InitSweepCollisionParams", OutParams, OutResponseParam); } + void InvalidateLightingCacheDetailed(bool bInvalidateBuildEnqueuedLighting, bool bTranslationOnly) { NativeCall(this, "UPrimitiveComponent.InvalidateLightingCacheDetailed", bInvalidateBuildEnqueuedLighting, bTranslationOnly); } + bool IsEditorOnly() { return NativeCall(this, "UPrimitiveComponent.IsEditorOnly"); } + bool IsIgnoringActorWhileMoving(AActor* ForActor) { return NativeCall(this, "UPrimitiveComponent.IsIgnoringActorWhileMoving", ForActor); } + bool IsNavigationRelevant() { return NativeCall(this, "UPrimitiveComponent.IsNavigationRelevant"); } + bool IsOverlappingActor(AActor* Other) { return NativeCall(this, "UPrimitiveComponent.IsOverlappingActor", Other); } + bool IsReadyForFinishDestroy() { return NativeCall(this, "UPrimitiveComponent.IsReadyForFinishDestroy"); } + bool IsWorldGeometry() { return NativeCall(this, "UPrimitiveComponent.IsWorldGeometry"); } + bool LineTraceComponent(FHitResult* OutHit, FVector Start, FVector End, FCollisionQueryParams* Params) { return NativeCall(this, "UPrimitiveComponent.LineTraceComponent", OutHit, Start, End, Params); } + bool MoveComponentImpl(FVector* Delta, FQuat* NewRotationQuat, bool bSweep, FHitResult* OutHit, EMoveComponentFlags MoveFlags, bool bUpdateOverlaps) { return NativeCall(this, "UPrimitiveComponent.MoveComponentImpl", Delta, NewRotationQuat, bSweep, OutHit, MoveFlags, bUpdateOverlaps); } + bool NeedsLoadForClient() { return NativeCall(this, "UPrimitiveComponent.NeedsLoadForClient"); } + bool NeedsLoadForServer() { return NativeCall(this, "UPrimitiveComponent.NeedsLoadForServer"); } + void OnAttachmentChanged() { NativeCall(this, "UPrimitiveComponent.OnAttachmentChanged"); } + void OnRegister() { NativeCall(this, "UPrimitiveComponent.OnRegister"); } + void OnUnregister() { NativeCall(this, "UPrimitiveComponent.OnUnregister"); } + void OnUpdateTransform(bool bSkipPhysicsMove) { NativeCall(this, "UPrimitiveComponent.OnUpdateTransform", bSkipPhysicsMove); } + void PostDuplicate(bool bDuplicateForPIE) { NativeCall(this, "UPrimitiveComponent.PostDuplicate", bDuplicateForPIE); } + void PostLoad() { NativeCall(this, "UPrimitiveComponent.PostLoad"); } + bool PrimitiveContainsPoint(FVector* Point) { return NativeCall(this, "UPrimitiveComponent.PrimitiveContainsPoint", Point); } + void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UPrimitiveComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } + void SendPhysicsTransform(bool bTeleport) { NativeCall(this, "UPrimitiveComponent.SendPhysicsTransform", bTeleport); } + void SendRenderTransform_Concurrent() { NativeCall(this, "UPrimitiveComponent.SendRenderTransform_Concurrent"); } + void SetAbsoluteMaxDrawScale(bool bInValue) { NativeCall(this, "UPrimitiveComponent.SetAbsoluteMaxDrawScale", bInValue); } + void SetCanEverAffectNavigation(bool bRelevant) { NativeCall(this, "UPrimitiveComponent.SetCanEverAffectNavigation", bRelevant); } + void SetCastShadow(bool NewCastShadow) { NativeCall(this, "UPrimitiveComponent.SetCastShadow", NewCastShadow); } + void SetCullDistance(float NewCullDistance) { NativeCall(this, "UPrimitiveComponent.SetCullDistance", NewCullDistance); } + void SetCustomDepthStencilValue(int Value) { NativeCall(this, "UPrimitiveComponent.SetCustomDepthStencilValue", Value); } + void SetDepthPriorityGroup(ESceneDepthPriorityGroup NewDepthPriorityGroup) { NativeCall(this, "UPrimitiveComponent.SetDepthPriorityGroup", NewDepthPriorityGroup); } + void SetOnlyOwnerSee(bool bNewOnlyOwnerSee) { NativeCall(this, "UPrimitiveComponent.SetOnlyOwnerSee", bNewOnlyOwnerSee); } + void SetOwnerNoSee(bool bNewOwnerNoSee) { NativeCall(this, "UPrimitiveComponent.SetOwnerNoSee", bNewOwnerNoSee); } + void SetRenderCustomDepth(bool bValue) { NativeCall(this, "UPrimitiveComponent.SetRenderCustomDepth", bValue); } + void SetTranslucentSortPriority(int NewTranslucentSortPriority) { NativeCall(this, "UPrimitiveComponent.SetTranslucentSortPriority", NewTranslucentSortPriority); } + bool ShouldComponentAddToScene() { return NativeCall(this, "UPrimitiveComponent.ShouldComponentAddToScene"); } + bool ShouldCreatePhysicsState() { return NativeCall(this, "UPrimitiveComponent.ShouldCreatePhysicsState"); } + bool ShouldRenderSelected() { return NativeCall(this, "UPrimitiveComponent.ShouldRenderSelected"); } + void UpdatePhysicsVolume(bool bTriggerNotifiers) { NativeCall(this, "UPrimitiveComponent.UpdatePhysicsVolume", bTriggerNotifiers); } + void UpdateTimeSlicing() { NativeCall(this, "UPrimitiveComponent.UpdateTimeSlicing"); } + bool WasRecentlyVisible() { return NativeCall(this, "UPrimitiveComponent.WasRecentlyVisible"); } + void AddForce(FVector Force, FName BoneName, bool bAllowSubstepping) { NativeCall(this, "UPrimitiveComponent.AddForce", Force, BoneName, bAllowSubstepping); } + void AddForceAtLocation(FVector Force, FVector Location, FName BoneName, bool bAllowSubstepping) { NativeCall(this, "UPrimitiveComponent.AddForceAtLocation", Force, Location, BoneName, bAllowSubstepping); } + void AddImpulse(FVector Impulse, FName BoneName, bool bVelChange) { NativeCall(this, "UPrimitiveComponent.AddImpulse", Impulse, BoneName, bVelChange); } + void AddImpulseAtLocation(FVector Impulse, FVector Location, FName BoneName) { NativeCall(this, "UPrimitiveComponent.AddImpulseAtLocation", Impulse, Location, BoneName); } + void AddRadialForce(FVector Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "UPrimitiveComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } + void AddRadialImpulse(FVector Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff, bool bVelChange) { NativeCall(this, "UPrimitiveComponent.AddRadialImpulse", Origin, Radius, Strength, Falloff, bVelChange); } + void AddTorque(FVector Torque, FName BoneName, bool bAllowSubstepping) { NativeCall(this, "UPrimitiveComponent.AddTorque", Torque, BoneName, bAllowSubstepping); } + float CalculateMass(FName __formal) { return NativeCall(this, "UPrimitiveComponent.CalculateMass", __formal); } + float GetAngularDamping() { return NativeCall(this, "UPrimitiveComponent.GetAngularDamping"); } + FBodyInstance* GetBodyInstance(FName BoneName, bool bGetWelded) { return NativeCall(this, "UPrimitiveComponent.GetBodyInstance", BoneName, bGetWelded); } + FVector* GetCenterOfMass(FVector* result, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetCenterOfMass", result, BoneName); } + ECollisionEnabled::Type GetCollisionEnabled() { return NativeCall(this, "UPrimitiveComponent.GetCollisionEnabled"); } + FName* GetCollisionProfileName(FName* result) { return NativeCall(this, "UPrimitiveComponent.GetCollisionProfileName", result); } + ECollisionResponse GetCollisionResponseToChannel(ECollisionChannel Channel) { return NativeCall(this, "UPrimitiveComponent.GetCollisionResponseToChannel", Channel); } + FCollisionResponseContainer* GetCollisionResponseToChannels() { return NativeCall(this, "UPrimitiveComponent.GetCollisionResponseToChannels"); } + FVector* GetComponentVelocity(FVector* result) { return NativeCall(this, "UPrimitiveComponent.GetComponentVelocity", result); } + float GetDistanceToCollision(FVector* Point, FVector* ClosestPointOnCollision) { return NativeCall(this, "UPrimitiveComponent.GetDistanceToCollision", Point, ClosestPointOnCollision); } + float GetLinearDamping() { return NativeCall(this, "UPrimitiveComponent.GetLinearDamping"); } + float GetMass() { return NativeCall(this, "UPrimitiveComponent.GetMass"); } + FVector* GetPhysicsAngularVelocity(FVector* result, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetPhysicsAngularVelocity", result, BoneName); } + FVector* GetPhysicsLinearVelocity(FVector* result, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetPhysicsLinearVelocity", result, BoneName); } + FVector* GetPhysicsLinearVelocityAtPoint(FVector* result, FVector Point, FName BoneName) { return NativeCall(this, "UPrimitiveComponent.GetPhysicsLinearVelocityAtPoint", result, Point, BoneName); } + FWalkableSlopeOverride* GetWalkableSlopeOverride() { return NativeCall(this, "UPrimitiveComponent.GetWalkableSlopeOverride"); } + void GetWeldedBodies(TArray* OutWeldedBodies, TArray* OutLabels) { NativeCall*, TArray*>(this, "UPrimitiveComponent.GetWeldedBodies", OutWeldedBodies, OutLabels); } + bool IsAnyRigidBodyAwake() { return NativeCall(this, "UPrimitiveComponent.IsAnyRigidBodyAwake"); } + bool IsGravityEnabled() { return NativeCall(this, "UPrimitiveComponent.IsGravityEnabled"); } + bool IsSimulatingPhysics(FName BoneName) { return NativeCall(this, "UPrimitiveComponent.IsSimulatingPhysics", BoneName); } + bool K2_LineTraceComponent(FVector TraceStart, FVector TraceEnd, bool bTraceComplex, bool bShowTrace, FVector* HitLocation, FVector* HitNormal, FName* BoneName) { return NativeCall(this, "UPrimitiveComponent.K2_LineTraceComponent", TraceStart, TraceEnd, bTraceComplex, bShowTrace, HitLocation, HitNormal, BoneName); } + void OnActorEnableCollisionChanged(bool bCheckRecreatePhysicsState) { NativeCall(this, "UPrimitiveComponent.OnActorEnableCollisionChanged", bCheckRecreatePhysicsState); } + void OnComponentCollisionSettingsChanged() { NativeCall(this, "UPrimitiveComponent.OnComponentCollisionSettingsChanged"); } + void PutAllRigidBodiesToSleep() { NativeCall(this, "UPrimitiveComponent.PutAllRigidBodiesToSleep"); } + void PutRigidBodyToSleep(FName BoneName) { NativeCall(this, "UPrimitiveComponent.PutRigidBodyToSleep", BoneName); } + bool RigidBodyIsAwake(FName BoneName) { return NativeCall(this, "UPrimitiveComponent.RigidBodyIsAwake", BoneName); } + void SetAllPhysicsAngularVelocity(FVector* NewAngVel, bool bAddToCurrent) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsAngularVelocity", NewAngVel, bAddToCurrent); } + void SetAllPhysicsLinearVelocity(FVector NewVel, bool bAddToCurrent) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsLinearVelocity", NewVel, bAddToCurrent); } + void SetAllPhysicsPosition(FVector NewPos) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsPosition", NewPos); } + void SetAllPhysicsRotation(FRotator NewRot) { NativeCall(this, "UPrimitiveComponent.SetAllPhysicsRotation", NewRot); } + void SetAngularDamping(float InDamping) { NativeCall(this, "UPrimitiveComponent.SetAngularDamping", InDamping); } + void SetCenterOfMass(FVector CenterOfMassOffset, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetCenterOfMass", CenterOfMassOffset, BoneName); } + void SetCollisionEnabled(ECollisionEnabled::Type NewType) { NativeCall(this, "UPrimitiveComponent.SetCollisionEnabled", NewType); } + void SetCollisionObjectType(ECollisionChannel Channel) { NativeCall(this, "UPrimitiveComponent.SetCollisionObjectType", Channel); } + void SetCollisionProfileName(FName InCollisionProfileName) { NativeCall(this, "UPrimitiveComponent.SetCollisionProfileName", InCollisionProfileName); } + void SetCollisionResponseToAllChannels(ECollisionResponse NewResponse) { NativeCall(this, "UPrimitiveComponent.SetCollisionResponseToAllChannels", NewResponse); } + void SetCollisionResponseToChannel(ECollisionChannel Channel, ECollisionResponse NewResponse) { NativeCall(this, "UPrimitiveComponent.SetCollisionResponseToChannel", Channel, NewResponse); } + void SetEnableGravity(bool bGravityEnabled) { NativeCall(this, "UPrimitiveComponent.SetEnableGravity", bGravityEnabled); } + void SetLinearDamping(float InDamping) { NativeCall(this, "UPrimitiveComponent.SetLinearDamping", InDamping); } + void SetNotifyRigidBodyCollision(bool bNewNotifyRigidBodyCollision) { NativeCall(this, "UPrimitiveComponent.SetNotifyRigidBodyCollision", bNewNotifyRigidBodyCollision); } + void SetPhysMaterialOverride(UPhysicalMaterial* NewPhysMaterial) { NativeCall(this, "UPrimitiveComponent.SetPhysMaterialOverride", NewPhysMaterial); } + void SetPhysicsAngularVelocity(FVector NewAngVel, bool bAddToCurrent, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetPhysicsAngularVelocity", NewAngVel, bAddToCurrent, BoneName); } + void SetPhysicsLinearVelocity(FVector NewVel, bool bAddToCurrent, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetPhysicsLinearVelocity", NewVel, bAddToCurrent, BoneName); } + void SetPhysicsMaxAngularVelocity(float NewMaxAngVel, bool bAddToCurrent, FName BoneName) { NativeCall(this, "UPrimitiveComponent.SetPhysicsMaxAngularVelocity", NewMaxAngVel, bAddToCurrent, BoneName); } + void SetSimulatePhysics(bool bSimulate) { NativeCall(this, "UPrimitiveComponent.SetSimulatePhysics", bSimulate); } + void SyncComponentToRBPhysics() { NativeCall(this, "UPrimitiveComponent.SyncComponentToRBPhysics"); } + void UnWeldFromParent() { NativeCall(this, "UPrimitiveComponent.UnWeldFromParent"); } + void UpdatePhysicsToRBChannels() { NativeCall(this, "UPrimitiveComponent.UpdatePhysicsToRBChannels"); } + void WakeAllRigidBodies() { NativeCall(this, "UPrimitiveComponent.WakeAllRigidBodies"); } + void WeldTo(USceneComponent* InParent, FName InSocketName) { NativeCall(this, "UPrimitiveComponent.WeldTo", InParent, InSocketName); } + bool WeldToImplementation(USceneComponent* InParent, FName ParentSocketName, bool bWeldSimulatedChild) { return NativeCall(this, "UPrimitiveComponent.WeldToImplementation", InParent, ParentSocketName, bWeldSimulatedChild); } + void SetInternalOctreeMask(int InOctreeMask, bool bReregisterWithTree) { NativeCall(this, "UPrimitiveComponent.SetInternalOctreeMask", InOctreeMask, bReregisterWithTree); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimitiveComponent.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUPrimitiveComponent() { NativeCall(nullptr, "UPrimitiveComponent.StaticRegisterNativesUPrimitiveComponent"); } +}; + +struct UShapeComponent : UPrimitiveComponent +{ + FColor& ShapeColorField() { return *GetNativePointerField(this, "UShapeComponent.ShapeColor"); } + UMaterialInterface* ShapeMaterialField() { return *GetNativePointerField(this, "UShapeComponent.ShapeMaterial"); } + + // Bit fields + + BitFieldValue bDrawOnlyIfSelected() { return { this, "UShapeComponent.bDrawOnlyIfSelected" }; } + BitFieldValue bShouldCollideWhenPlacing() { return { this, "UShapeComponent.bShouldCollideWhenPlacing" }; } + + // Functions + + bool ShouldCollideWhenPlacing() { return NativeCall(this, "UShapeComponent.ShouldCollideWhenPlacing"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UShapeComponent.GetPrivateStaticClass", Package); } +}; + +struct USphereComponent : UShapeComponent +{ + float& SphereRadiusField() { return *GetNativePointerField(this, "USphereComponent.SphereRadius"); } + + // Functions + + bool AreSymmetricRotations(FQuat* A, FQuat* B, FVector* Scale3D) { return NativeCall(this, "USphereComponent.AreSymmetricRotations", A, B, Scale3D); } + void CalcBoundingCylinder(float* CylinderRadius, float* CylinderHalfHeight) { NativeCall(this, "USphereComponent.CalcBoundingCylinder", CylinderRadius, CylinderHalfHeight); } + FBoxSphereBounds* CalcBounds(FBoxSphereBounds* result, FTransform* LocalToWorld) { return NativeCall(this, "USphereComponent.CalcBounds", result, LocalToWorld); } + bool IsZeroExtent() { return NativeCall(this, "USphereComponent.IsZeroExtent"); } + bool PrimitiveContainsPoint(FVector* Point) { return NativeCall(this, "USphereComponent.PrimitiveContainsPoint", Point); } + void SetSphereRadius(float InSphereRadius, bool bUpdateOverlaps) { NativeCall(this, "USphereComponent.SetSphereRadius", InSphereRadius, bUpdateOverlaps); } + void UpdateBodySetup() { NativeCall(this, "USphereComponent.UpdateBodySetup"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "USphereComponent.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUSphereComponent() { NativeCall(nullptr, "USphereComponent.StaticRegisterNativesUSphereComponent"); } +}; + +struct AActor : UObject +{ + float& CustomTimeDilationField() { return *GetNativePointerField(this, "AActor.CustomTimeDilation"); } + float& ClientReplicationSendNowThresholdField() { return *GetNativePointerField(this, "AActor.ClientReplicationSendNowThreshold"); } + TEnumAsByte& RemoteRoleField() { return *GetNativePointerField*>(this, "AActor.RemoteRole"); } + AActor* OwnerField() { return *GetNativePointerField(this, "AActor.Owner"); } + long double& LastReplicatedMovementField() { return *GetNativePointerField(this, "AActor.LastReplicatedMovement"); } + int& LastFrameForceNetUpdateField() { return *GetNativePointerField(this, "AActor.LastFrameForceNetUpdate"); } + TEnumAsByte& RoleField() { return *GetNativePointerField*>(this, "AActor.Role"); } + TEnumAsByte& NetDormancyField() { return *GetNativePointerField*>(this, "AActor.NetDormancy"); } + TArray>& ReplicatedComponentsField() { return *GetNativePointerField>*>(this, "AActor.ReplicatedComponents"); } + TWeakObjectPtr& LastPostProcessVolumeSoundField() { return *GetNativePointerField*>(this, "AActor.LastPostProcessVolumeSound"); } + int& DefaultStasisComponentOctreeFlagsField() { return *GetNativePointerField(this, "AActor.DefaultStasisComponentOctreeFlags"); } + int& DefaultStasisedOctreeFlagsField() { return *GetNativePointerField(this, "AActor.DefaultStasisedOctreeFlags"); } + int& DefaultUnstasisedOctreeFlagsField() { return *GetNativePointerField(this, "AActor.DefaultUnstasisedOctreeFlags"); } + UPrimitiveComponent* StasisCheckComponentField() { return *GetNativePointerField(this, "AActor.StasisCheckComponent"); } + TArray NetworkSpatializationChildrenField() { return *GetNativePointerField*>(this, "AActor.NetworkSpatializationChildren"); } + TArray NetworkSpatializationChildrenDormantField() { return *GetNativePointerField*>(this, "AActor.NetworkSpatializationChildrenDormant"); } + AActor* NetworkSpatializationParentField() { return *GetNativePointerField(this, "AActor.NetworkSpatializationParent"); } + float& NetworkAndStasisRangeMultiplierField() { return *GetNativePointerField(this, "AActor.NetworkAndStasisRangeMultiplier"); } + float& NetworkRangeMultiplierField() { return *GetNativePointerField(this, "AActor.NetworkRangeMultiplier"); } + long double& UnstasisLastInRangeTimeField() { return *GetNativePointerField(this, "AActor.UnstasisLastInRangeTime"); } + long double& LastPreReplicationTimeField() { return *GetNativePointerField(this, "AActor.LastPreReplicationTime"); } + long double& LastEnterStasisTimeField() { return *GetNativePointerField(this, "AActor.LastEnterStasisTime"); } + long double& LastExitStasisTimeField() { return *GetNativePointerField(this, "AActor.LastExitStasisTime"); } + FName& CustomTagField() { return *GetNativePointerField(this, "AActor.CustomTag"); } + int& CustomDataField() { return *GetNativePointerField(this, "AActor.CustomData"); } + float& ReplicationIntervalMultiplierField() { return *GetNativePointerField(this, "AActor.ReplicationIntervalMultiplier"); } + int& ForceImmediateReplicationFrameField() { return *GetNativePointerField(this, "AActor.ForceImmediateReplicationFrame"); } + char& StasisSetIndexField() { return *GetNativePointerField(this, "AActor.StasisSetIndex"); } + char& RandomStartByteField() { return *GetNativePointerField(this, "AActor.RandomStartByte"); } + unsigned __int64& LastFrameUnStasisField() { return *GetNativePointerField(this, "AActor.LastFrameUnStasis"); } + volatile int& LastUnstasisFrameCounterField() { return *GetNativePointerField(this, "AActor.LastUnstasisFrameCounter"); } + TArray>& StasisUnRegisteredComponentsField() { return *GetNativePointerField>*>(this, "AActor.StasisUnRegisteredComponents"); } + float& NetCullDistanceSquaredField() { return *GetNativePointerField(this, "AActor.NetCullDistanceSquared"); } + float& NetCullDistanceSquaredDormantField() { return *GetNativePointerField(this, "AActor.NetCullDistanceSquaredDormant"); } + int& NetTagField() { return *GetNativePointerField(this, "AActor.NetTag"); } + long double& NetUpdateTimeField() { return *GetNativePointerField(this, "AActor.NetUpdateTime"); } + float& NetUpdateFrequencyField() { return *GetNativePointerField(this, "AActor.NetUpdateFrequency"); } + float& NetPriorityField() { return *GetNativePointerField(this, "AActor.NetPriority"); } + long double& LastNetUpdateTimeField() { return *GetNativePointerField(this, "AActor.LastNetUpdateTime"); } + FName& NetDriverNameField() { return *GetNativePointerField(this, "AActor.NetDriverName"); } + unsigned int& UniqueActorIdField() { return *GetNativePointerField(this, "AActor.UniqueActorId"); } + int& TargetingTeamField() { return *GetNativePointerField(this, "AActor.TargetingTeam"); } + float& OverrideStasisComponentRadiusField() { return *GetNativePointerField(this, "AActor.OverrideStasisComponentRadius"); } + APawn* InstigatorField() { return *GetNativePointerField(this, "AActor.Instigator"); } + long double& CreationTimeField() { return *GetNativePointerField(this, "AActor.CreationTime"); } + long double& OriginalCreationTimeField() { return *GetNativePointerField(this, "AActor.OriginalCreationTime"); } + int& CustomActorFlagsField() { return *GetNativePointerField(this, "AActor.CustomActorFlags"); } + TArray ChildrenField() { return *GetNativePointerField*>(this, "AActor.Children"); } + unsigned int& AnimUpdateRateShiftTagField() { return *GetNativePointerField(this, "AActor.AnimUpdateRateShiftTag"); } + unsigned int& AnimUpdateRateFrameCountField() { return *GetNativePointerField(this, "AActor.AnimUpdateRateFrameCount"); } + USceneComponent* RootComponentField() { return *GetNativePointerField(this, "AActor.RootComponent"); } + TArray ControllingMatineeActorsField() { return *GetNativePointerField*>(this, "AActor.ControllingMatineeActors"); } + float& InitialLifeSpanField() { return *GetNativePointerField(this, "AActor.InitialLifeSpan"); } + TArray& LayersField() { return *GetNativePointerField*>(this, "AActor.Layers"); } + TWeakObjectPtr& ParentComponentActorField() { return *GetNativePointerField*>(this, "AActor.ParentComponentActor"); } + long double& LastRenderTimeField() { return *GetNativePointerField(this, "AActor.LastRenderTime"); } + long double& LastRenderTimeIgnoreShadowField() { return *GetNativePointerField(this, "AActor.LastRenderTimeIgnoreShadow"); } + TArray& TagsField() { return *GetNativePointerField*>(this, "AActor.Tags"); } + unsigned __int64& HiddenEditorViewsField() { return *GetNativePointerField(this, "AActor.HiddenEditorViews"); } + FVector& DefaultActorLocationField() { return *GetNativePointerField(this, "AActor.DefaultActorLocation"); } + float& ForceMaximumReplicationRateUntilTimeField() { return *GetNativePointerField(this, "AActor.ForceMaximumReplicationRateUntilTime"); } + long double& LastActorForceReplicationTimeField() { return *GetNativePointerField(this, "AActor.LastActorForceReplicationTime"); } + TArray OwnedComponentsField() { return *GetNativePointerField*>(this, "AActor.OwnedComponents"); } + TArray SerializedComponentsField() { return *GetNativePointerField*>(this, "AActor.SerializedComponents"); } + __int64& LastActorUnstasisedCycleField() { return *GetNativePointerField<__int64*>(this, "AActor.LastActorUnstasisedCycle"); } + int& LastFrameCalculcatedNetworkRangeMultiplierField() { return *GetNativePointerField(this, "AActor.LastFrameCalculcatedNetworkRangeMultiplier"); } + int& NetworkDormantChildrenOpIdxField() { return *GetNativePointerField(this, "AActor.NetworkDormantChildrenOpIdx"); } + bool& bShouldSendPartialBunchesOverThresholdAsReliableField() { return *GetNativePointerField(this, "AActor.bShouldSendPartialBunchesOverThresholdAsReliable"); } + + // Bit fields + + BitFieldValue bHidden() { return { this, "AActor.bHidden" }; } + BitFieldValue bNetTemporary() { return { this, "AActor.bNetTemporary" }; } + BitFieldValue bIsMapActor() { return { this, "AActor.bIsMapActor" }; } + BitFieldValue bHasHighVolumeRPCs() { return { this, "AActor.bHasHighVolumeRPCs" }; } + BitFieldValue bNetStartup() { return { this, "AActor.bNetStartup" }; } + BitFieldValue bPreventCharacterBasing() { return { this, "AActor.bPreventCharacterBasing" }; } + BitFieldValue bPreventCharacterBasingAllowSteppingUp() { return { this, "AActor.bPreventCharacterBasingAllowSteppingUp" }; } + BitFieldValue bOnlyRelevantToOwner() { return { this, "AActor.bOnlyRelevantToOwner" }; } + BitFieldValue bAlwaysRelevant() { return { this, "AActor.bAlwaysRelevant" }; } + BitFieldValue bForceHiddenReplication() { return { this, "AActor.bForceHiddenReplication" }; } + BitFieldValue bUseBPChangedActorTeam() { return { this, "AActor.bUseBPChangedActorTeam" }; } + BitFieldValue bHasExecutedActorConstruction() { return { this, "AActor.bHasExecutedActorConstruction" }; } + BitFieldValue bEverSetTimer() { return { this, "AActor.bEverSetTimer" }; } + BitFieldValue bIgnoredByCharacterEncroachment() { return { this, "AActor.bIgnoredByCharacterEncroachment" }; } + BitFieldValue bClimbable() { return { this, "AActor.bClimbable" }; } + BitFieldValue bAttachmentReplicationUseNetworkParent() { return { this, "AActor.bAttachmentReplicationUseNetworkParent" }; } + BitFieldValue bUnstreamComponentsUseEndOverlap() { return { this, "AActor.bUnstreamComponentsUseEndOverlap" }; } + BitFieldValue bIgnoreNetworkRangeScaling() { return { this, "AActor.bIgnoreNetworkRangeScaling" }; } + BitFieldValue bForcedHudDrawingRequiresSameTeam() { return { this, "AActor.bForcedHudDrawingRequiresSameTeam" }; } + BitFieldValue bPreventNPCSpawnFloor() { return { this, "AActor.bPreventNPCSpawnFloor" }; } + BitFieldValue bSavedWhenStasised() { return { this, "AActor.bSavedWhenStasised" }; } + BitFieldValue bPreventShovel() { return { this, "AActor.bPreventShovel" }; } + BitFieldValue bCollisionImpactPreventShipDamage() { return { this, "AActor.bCollisionImpactPreventShipDamage" }; } + BitFieldValue bNetCritical() { return { this, "AActor.bNetCritical" }; } + BitFieldValue bReplicateInstigator() { return { this, "AActor.bReplicateInstigator" }; } + BitFieldValue bSuppressDestroyedEvent() { return { this, "AActor.bSuppressDestroyedEvent" }; } + BitFieldValue bUseOnlyPointForLevelBounds() { return { this, "AActor.bUseOnlyPointForLevelBounds" }; } + BitFieldValue bReplicateMovement() { return { this, "AActor.bReplicateMovement" }; } + BitFieldValue bTearOff() { return { this, "AActor.bTearOff" }; } + BitFieldValue bExchangedRoles() { return { this, "AActor.bExchangedRoles" }; } + BitFieldValue bStasised() { return { this, "AActor.bStasised" }; } + BitFieldValue bPendingUnstasis() { return { this, "AActor.bPendingUnstasis" }; } + BitFieldValue bPendingNetUpdate() { return { this, "AActor.bPendingNetUpdate" }; } + BitFieldValue bNetLoadOnClient() { return { this, "AActor.bNetLoadOnClient" }; } + BitFieldValue bNetUseOwnerRelevancy() { return { this, "AActor.bNetUseOwnerRelevancy" }; } + BitFieldValue bNetUseClientRelevancy() { return { this, "AActor.bNetUseClientRelevancy" }; } + BitFieldValue bDoNotCook() { return { this, "AActor.bDoNotCook" }; } + BitFieldValue bHibernateChange() { return { this, "AActor.bHibernateChange" }; } + BitFieldValue bBlockInput() { return { this, "AActor.bBlockInput" }; } + BitFieldValue bAutoStasis() { return { this, "AActor.bAutoStasis" }; } + BitFieldValue bBlueprintMultiUseEntries() { return { this, "AActor.bBlueprintMultiUseEntries" }; } + BitFieldValue bEnableMultiUse() { return { this, "AActor.bEnableMultiUse" }; } + BitFieldValue bOverrideMultiUseCenterText() { return { this, "AActor.bOverrideMultiUseCenterText" }; } + BitFieldValue bPreventSaving() { return { this, "AActor.bPreventSaving" }; } + BitFieldValue bMultiUseCenterHUD() { return { this, "AActor.bMultiUseCenterHUD" }; } + BitFieldValue bOnlyInitialReplication() { return { this, "AActor.bOnlyInitialReplication" }; } + BitFieldValue bUseAttachmentReplication() { return { this, "AActor.bUseAttachmentReplication" }; } + BitFieldValue bUseNetworkSpatialization() { return { this, "AActor.bUseNetworkSpatialization" }; } + BitFieldValue bNetworkSpatializationForceRelevancyCheck() { return { this, "AActor.bNetworkSpatializationForceRelevancyCheck" }; } + BitFieldValue bReplicates() { return { this, "AActor.bReplicates" }; } + BitFieldValue bRunningUserConstructionScript() { return { this, "AActor.bRunningUserConstructionScript" }; } + BitFieldValue bHasFinishedSpawning() { return { this, "AActor.bHasFinishedSpawning" }; } + BitFieldValue bDeferredBeginPlay() { return { this, "AActor.bDeferredBeginPlay" }; } + BitFieldValue bHasReplicatedProperties() { return { this, "AActor.bHasReplicatedProperties" }; } + BitFieldValue bActorEnableCollision() { return { this, "AActor.bActorEnableCollision" }; } + BitFieldValue bAutoDestroyWhenFinished() { return { this, "AActor.bAutoDestroyWhenFinished" }; } + BitFieldValue bCanBeDamaged() { return { this, "AActor.bCanBeDamaged" }; } + BitFieldValue bPendingKillPending() { return { this, "AActor.bPendingKillPending" }; } + BitFieldValue bCollideWhenPlacing() { return { this, "AActor.bCollideWhenPlacing" }; } + BitFieldValue bPreventOnDedicatedServer() { return { this, "AActor.bPreventOnDedicatedServer" }; } + BitFieldValue bNetMulticasting() { return { this, "AActor.bNetMulticasting" }; } + BitFieldValue bNetConnectionDidInitialSort() { return { this, "AActor.bNetConnectionDidInitialSort" }; } + BitFieldValue bDormantNetMulticastForceFullReplication() { return { this, "AActor.bDormantNetMulticastForceFullReplication" }; } + BitFieldValue bDoOverrideHiddenShadow() { return { this, "AActor.bDoOverrideHiddenShadow" }; } + BitFieldValue bOverrideHiddenShadowValue() { return { this, "AActor.bOverrideHiddenShadowValue" }; } + BitFieldValue bAllowReceiveTickEventOnDedicatedServer() { return { this, "AActor.bAllowReceiveTickEventOnDedicatedServer" }; } + BitFieldValue bLoadedFromSaveGame() { return { this, "AActor.bLoadedFromSaveGame" }; } + BitFieldValue bPreventLevelBoundsRelevant() { return { this, "AActor.bPreventLevelBoundsRelevant" }; } + BitFieldValue bForceReplicateDormantChildrenWithoutSpatialRelevancy() { return { this, "AActor.bForceReplicateDormantChildrenWithoutSpatialRelevancy" }; } + BitFieldValue bFindCameraComponentWhenViewTarget() { return { this, "AActor.bFindCameraComponentWhenViewTarget" }; } + BitFieldValue bBPPreInitializeComponents() { return { this, "AActor.bBPPreInitializeComponents" }; } + BitFieldValue bBPPostInitializeComponents() { return { this, "AActor.bBPPostInitializeComponents" }; } + BitFieldValue bForceNetworkSpatialization() { return { this, "AActor.bForceNetworkSpatialization" }; } + BitFieldValue bStasisComponentRadiusForceDistanceCheck() { return { this, "AActor.bStasisComponentRadiusForceDistanceCheck" }; } + BitFieldValue bUseBPInventoryItemUsed() { return { this, "AActor.bUseBPInventoryItemUsed" }; } + BitFieldValue bUseBPInventoryItemDropped() { return { this, "AActor.bUseBPInventoryItemDropped" }; } + BitFieldValue bBPInventoryItemUsedHandlesDurability() { return { this, "AActor.bBPInventoryItemUsedHandlesDurability" }; } + BitFieldValue bUseBPForceAllowsInventoryUse() { return { this, "AActor.bUseBPForceAllowsInventoryUse" }; } + BitFieldValue bAlwaysCreatePhysicsState() { return { this, "AActor.bAlwaysCreatePhysicsState" }; } + BitFieldValue bReplicateVelocityHighQuality() { return { this, "AActor.bReplicateVelocityHighQuality" }; } + BitFieldValue bOnlyReplicateOnNetForcedUpdate() { return { this, "AActor.bOnlyReplicateOnNetForcedUpdate" }; } + BitFieldValue bActorInitialized() { return { this, "AActor.bActorInitialized" }; } + BitFieldValue bActorSeamlessTraveled() { return { this, "AActor.bActorSeamlessTraveled" }; } + BitFieldValue bIgnoresOriginShifting() { return { this, "AActor.bIgnoresOriginShifting" }; } + BitFieldValue bReplicateHidden() { return { this, "AActor.bReplicateHidden" }; } + BitFieldValue bPreventActorStasis() { return { this, "AActor.bPreventActorStasis" }; } + BitFieldValue bUseBPPostLoadedFromSeamlessTravel() { return { this, "AActor.bUseBPPostLoadedFromSeamlessTravel" }; } + BitFieldValue bPreventLayerGroupedVisibility() { return { this, "AActor.bPreventLayerGroupedVisibility" }; } + BitFieldValue bSkeletalComponentsForceParallelAnims() { return { this, "AActor.bSkeletalComponentsForceParallelAnims" }; } + BitFieldValue bForceInfiniteDrawDistance() { return { this, "AActor.bForceInfiniteDrawDistance" }; } + BitFieldValue bForcePreventSeamlessTravel() { return { this, "AActor.bForcePreventSeamlessTravel" }; } + BitFieldValue bUseBPClientIsAboutToSeamlessTravel() { return { this, "AActor.bUseBPClientIsAboutToSeamlessTravel" }; } + BitFieldValue bPreventRegularForceNetUpdate() { return { this, "AActor.bPreventRegularForceNetUpdate" }; } + BitFieldValue bUseInitializedSeamlessGridInfo() { return { this, "AActor.bUseInitializedSeamlessGridInfo" }; } + BitFieldValue bForceIgnoreSpatialComponent() { return { this, "AActor.bForceIgnoreSpatialComponent" }; } + BitFieldValue bWasForceIgnoreSpatialComponent() { return { this, "AActor.bWasForceIgnoreSpatialComponent" }; } + BitFieldValue bReplicateUniqueActorId() { return { this, "AActor.bReplicateUniqueActorId" }; } + BitFieldValue bWantsServerThrottledTick() { return { this, "AActor.bWantsServerThrottledTick" }; } + BitFieldValue bAddedServerThrottledTick() { return { this, "AActor.bAddedServerThrottledTick" }; } + BitFieldValue bAlwaysRelevantPrimalStructure() { return { this, "AActor.bAlwaysRelevantPrimalStructure" }; } + BitFieldValue bWantsBeginPlayAfterSingleplayerGridTravel() { return { this, "AActor.bWantsBeginPlayAfterSingleplayerGridTravel" }; } + + // Functions + + bool AllowSeamlessTravel() { return NativeCall(this, "AActor.AllowSeamlessTravel"); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "AActor.GetDescriptiveName", result); } + FVector* GetTargetingLocation(FVector* result) { return NativeCall(this, "AActor.GetTargetingLocation", result); } + bool IsMarkedForSeamlessTravel() { return NativeCall(this, "AActor.IsMarkedForSeamlessTravel"); } + void UnmarkAbortedForSeamlessTravel() { NativeCall(this, "AActor.UnmarkAbortedForSeamlessTravel"); } + bool IsLevelBoundsRelevant() { return NativeCall(this, "AActor.IsLevelBoundsRelevant"); } + static UClass* StaticClass() { return NativeCall(nullptr, "AActor.StaticClass"); } + bool HasAuthority() { return NativeCall(this, "AActor.HasAuthority"); } + bool IsPendingKillPending() { return NativeCall(this, "AActor.IsPendingKillPending"); } + void MarkForSeamlessTravel(unsigned int DestinationServerId, ESeamlessVolumeSide::Side DestinationServerVolumeSide) { NativeCall(this, "AActor.MarkForSeamlessTravel", DestinationServerId, DestinationServerVolumeSide); } + bool ActorHasTag(FName Tag) { return NativeCall(this, "AActor.ActorHasTag", Tag); } + void AddActorLocalOffset(FVector DeltaLocation, bool bSweep) { NativeCall(this, "AActor.AddActorLocalOffset", DeltaLocation, bSweep); } + void AddActorLocalRotation(FRotator DeltaRotation, bool bSweep) { NativeCall(this, "AActor.AddActorLocalRotation", DeltaRotation, bSweep); } + void AddActorLocalTransform(FTransform* NewTransform, bool bSweep) { NativeCall(this, "AActor.AddActorLocalTransform", NewTransform, bSweep); } + void AddActorWorldOffset(FVector DeltaLocation, bool bSweep) { NativeCall(this, "AActor.AddActorWorldOffset", DeltaLocation, bSweep); } + void AddActorWorldRotation(FRotator DeltaRotation, bool bSweep) { NativeCall(this, "AActor.AddActorWorldRotation", DeltaRotation, bSweep); } + void AddActorWorldTransform(FTransform* DeltaTransform, bool bSweep) { NativeCall(this, "AActor.AddActorWorldTransform", DeltaTransform, bSweep); } + UActorComponent* AddComponent(FName TemplateName, bool bManualAttachment, FTransform* RelativeTransform, UObject* ComponentTemplateContext) { return NativeCall(this, "AActor.AddComponent", TemplateName, bManualAttachment, RelativeTransform, ComponentTemplateContext); } + void AddControllingMatineeActor(AMatineeActor* InMatineeActor) { NativeCall(this, "AActor.AddControllingMatineeActor", InMatineeActor); } + void AddOwnedComponent(UActorComponent* Component) { NativeCall(this, "AActor.AddOwnedComponent", Component); } + void AddTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "AActor.AddTickPrerequisiteActor", PrerequisiteActor); } + void AddTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "AActor.AddTickPrerequisiteComponent", PrerequisiteComponent); } + bool AllowSaving() { return NativeCall(this, "AActor.AllowSaving"); } + bool AlwaysReplicatePropertyConditional(UProperty* forProperty) { return NativeCall(this, "AActor.AlwaysReplicatePropertyConditional", forProperty); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "AActor.ApplyWorldOffset", InOffset, bWorldShift); } + void AttachRootComponentTo(USceneComponent* InParent, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentTo", InParent, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + void AttachRootComponentToActor(AActor* InParentActor, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.AttachRootComponentToActor", InParentActor, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + bool BPIsA(TSubclassOf anActorClass) { return NativeCall>(this, "AActor.BPIsA", anActorClass); } + bool BPIsMarkedForSeamlessTravel() { return NativeCall(this, "AActor.BPIsMarkedForSeamlessTravel"); } + float BPOverrideServerMultiUseAcceptRange_Implementation() { return NativeCall(this, "AActor.BPOverrideServerMultiUseAcceptRange_Implementation"); } + void BecomeViewTarget(APlayerController* PC) { NativeCall(this, "AActor.BecomeViewTarget", PC); } + void BeginDestroy() { NativeCall(this, "AActor.BeginDestroy"); } + void BeginPlay() { NativeCall(this, "AActor.BeginPlay"); } + void CalcCamera(float DeltaTime, FMinimalViewInfo* OutResult) { NativeCall(this, "AActor.CalcCamera", DeltaTime, OutResult); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "AActor.ChangeActorTeam", NewTeam); } + bool CheckActorComponents() { return NativeCall(this, "AActor.CheckActorComponents"); } + bool CheckDefaultSubobjectsInternal() { return NativeCall(this, "AActor.CheckDefaultSubobjectsInternal"); } + bool CheckStillInWorld() { return NativeCall(this, "AActor.CheckStillInWorld"); } + void ClearCrossLevelReferences() { NativeCall(this, "AActor.ClearCrossLevelReferences"); } + void ClearNetworkSpatializationParent() { NativeCall(this, "AActor.ClearNetworkSpatializationParent"); } + void ClientIsAboutToSeamlessTravel() { NativeCall(this, "AActor.ClientIsAboutToSeamlessTravel"); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "AActor.ClientMultiUse", ForPC, UseIndex); } + void CopyRemoteRoleFrom(AActor* CopyFromActor) { NativeCall(this, "AActor.CopyRemoteRoleFrom", CopyFromActor); } + void CreateChildActors() { NativeCall(this, "AActor.CreateChildActors"); } + UActorComponent* CreateComponentFromTemplate(UActorComponent* Template, FString* InName) { return NativeCall(this, "AActor.CreateComponentFromTemplate", Template, InName); } + bool Destroy(bool bNetForce, bool bShouldModifyLevel) { return NativeCall(this, "AActor.Destroy", bNetForce, bShouldModifyLevel); } + void DestroyChildActors() { NativeCall(this, "AActor.DestroyChildActors"); } + void DestroyConstructedComponents() { NativeCall(this, "AActor.DestroyConstructedComponents"); } + void DestroyInput(APlayerController* PlayerController) { NativeCall(this, "AActor.DestroyInput", PlayerController); } + void DestroyMeNextFrame() { NativeCall(this, "AActor.DestroyMeNextFrame"); } + void Destroyed() { NativeCall(this, "AActor.Destroyed"); } + void DetachRootComponentFromParent(bool bMaintainWorldPosition) { NativeCall(this, "AActor.DetachRootComponentFromParent", bMaintainWorldPosition); } + void DetachSceneComponentsFromParent(USceneComponent* InParentComponent, bool bMaintainWorldPosition) { NativeCall(this, "AActor.DetachSceneComponentsFromParent", InParentComponent, bMaintainWorldPosition); } + void DisableComponentsSimulatePhysics() { NativeCall(this, "AActor.DisableComponentsSimulatePhysics"); } + void DisableInput(APlayerController* PlayerController) { NativeCall(this, "AActor.DisableInput", PlayerController); } + void DispatchBlockingHit(UPrimitiveComponent* MyComp, UPrimitiveComponent* OtherComp, bool bSelfMoved, FHitResult* Hit) { NativeCall(this, "AActor.DispatchBlockingHit", MyComp, OtherComp, bSelfMoved, Hit); } + void DoExecuteActorConstruction(FTransform* Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } + void EnableInput(APlayerController* PlayerController) { NativeCall(this, "AActor.EnableInput", PlayerController); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.EndPlay", EndPlayReason); } + void EndViewTarget(APlayerController* PC) { NativeCall(this, "AActor.EndViewTarget", PC); } + void ExchangeNetRoles(bool bRemoteOwned) { NativeCall(this, "AActor.ExchangeNetRoles", bRemoteOwned); } + void FellOutOfWorld(UDamageType* dmgType) { NativeCall(this, "AActor.FellOutOfWorld", dmgType); } + void FinalSeamlessTravelled() { NativeCall(this, "AActor.FinalSeamlessTravelled"); } + void FinishAndRegisterComponent(UActorComponent* Component) { NativeCall(this, "AActor.FinishAndRegisterComponent", Component); } + void FinishSpawning(FTransform* Transform, bool bIsDefaultTransform) { NativeCall(this, "AActor.FinishSpawning", Transform, bIsDefaultTransform); } + void FlushNetDormancy() { NativeCall(this, "AActor.FlushNetDormancy"); } + bool ForceAllowsInventoryUse(UObject* InventoryItemObject) { return NativeCall(this, "AActor.ForceAllowsInventoryUse", InventoryItemObject); } + void ForceNetRelevant() { NativeCall(this, "AActor.ForceNetRelevant"); } + void ForceReplicateNowWithChannel() { NativeCall(this, "AActor.ForceReplicateNowWithChannel"); } + void GetActorBounds(bool bOnlyCollidingComponents, FVector* Origin, FVector* BoxExtent) { NativeCall(this, "AActor.GetActorBounds", bOnlyCollidingComponents, Origin, BoxExtent); } + bool GetActorEnableCollision() { return NativeCall(this, "AActor.GetActorEnableCollision"); } + FVector* GetActorForwardVector(FVector* result) { return NativeCall(this, "AActor.GetActorForwardVector", result); } + FVector* GetActorRelativeScale3D(FVector* result) { return NativeCall(this, "AActor.GetActorRelativeScale3D", result); } + FVector* GetActorRightVector(FVector* result) { return NativeCall(this, "AActor.GetActorRightVector", result); } + FVector* GetActorScale3D(FVector* result) { return NativeCall(this, "AActor.GetActorScale3D", result); } + float GetActorTimeDilation() { return NativeCall(this, "AActor.GetActorTimeDilation"); } + FVector* GetActorUpVector(FVector* result) { return NativeCall(this, "AActor.GetActorUpVector", result); } + FString* GetAimedTutorialHintString_Implementation(FString* result) { return NativeCall(this, "AActor.GetAimedTutorialHintString_Implementation", result); } + void GetAllSceneComponents(TArray* OutComponents) { NativeCall*>(this, "AActor.GetAllSceneComponents", OutComponents); } + AActor* GetAttachParentActor() { return NativeCall(this, "AActor.GetAttachParentActor"); } + FName* GetAttachParentSocketName(FName* result) { return NativeCall(this, "AActor.GetAttachParentSocketName", result); } + void GetAttachedActors(TArray* OutActors) { NativeCall*>(this, "AActor.GetAttachedActors", OutActors); } + UActorComponent* GetComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetComponentByClass", ComponentClass); } + UActorComponent* GetComponentByCustomTag(FName TheTag) { return NativeCall(this, "AActor.GetComponentByCustomTag", TheTag); } + void GetComponents(TArray* OutComponents) { NativeCall*>(this, "AActor.GetComponents", OutComponents); } + FBox* GetComponentsBoundingBox(FBox* result, bool bNonColliding) { return NativeCall(this, "AActor.GetComponentsBoundingBox", result, bNonColliding); } + FBox* GetComponentsBoundingBoxForLevelBounds(FBox* result) { return NativeCall(this, "AActor.GetComponentsBoundingBoxForLevelBounds", result); } + void GetComponentsBoundingCylinder(float* OutCollisionRadius, float* OutCollisionHalfHeight, bool bNonColliding) { NativeCall(this, "AActor.GetComponentsBoundingCylinder", OutCollisionRadius, OutCollisionHalfHeight, bNonColliding); } + TArray* GetComponentsByClass(TArray* result, TSubclassOf ComponentClass) { return NativeCall*, TArray*, TSubclassOf>(this, "AActor.GetComponentsByClass", result, ComponentClass); } + TArray* GetComponentsByCustomTag(TArray* result, FName TheTag) { return NativeCall*, TArray*, FName>(this, "AActor.GetComponentsByCustomTag", result, TheTag); } + ECollisionResponse GetComponentsCollisionResponseToChannel(ECollisionChannel Channel) { return NativeCall(this, "AActor.GetComponentsCollisionResponseToChannel", Channel); } + float GetDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetDistanceTo", OtherActor); } + float GetDotProductTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetDotProductTo", OtherActor); } + FString* GetEditTextString_Implementation(FString* result, APlayerController* ForPC, UObject* AssociatedObject1, int ExtraID1, int ExtraID2) { return NativeCall(this, "AActor.GetEditTextString_Implementation", result, ForPC, AssociatedObject1, ExtraID1, ExtraID2); } + float GetHorizontalDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetHorizontalDistanceTo", OtherActor); } + float GetHorizontalDotProductTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetHorizontalDotProductTo", OtherActor); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "AActor.GetHumanReadableName", result); } + float GetInputAxisKeyValue(FKey InputAxisKey) { return NativeCall(this, "AActor.GetInputAxisKeyValue", InputAxisKey); } + float GetInputAxisValue(FName InputAxisName) { return NativeCall(this, "AActor.GetInputAxisValue", InputAxisName); } + FVector* GetInputVectorAxisValue(FVector* result, FKey InputAxisKey) { return NativeCall(this, "AActor.GetInputVectorAxisValue", result, InputAxisKey); } + APawn* GetInstigator() { return NativeCall(this, "AActor.GetInstigator"); } + AController* GetInstigatorController() { return NativeCall(this, "AActor.GetInstigatorController"); } + FVector* GetTargetPathfindingLocation(FVector* result) { return NativeCall(this, "AActor.GetTargetPathfindingLocation", result); } + FVector* GetInterpolatedVelocity(FVector* result) { return NativeCall(this, "AActor.GetInterpolatedVelocity", result); } + bool GetIsMapActor() { return NativeCall(this, "AActor.GetIsMapActor"); } + long double GetLastRenderTime(bool ignoreShadow) { return NativeCall(this, "AActor.GetLastRenderTime", ignoreShadow); } + float GetLifeSpan() { return NativeCall(this, "AActor.GetLifeSpan"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + UNetConnection* GetNetConnection() { return NativeCall(this, "AActor.GetNetConnection"); } + UPlayer* GetNetOwningPlayer() { return NativeCall(this, "AActor.GetNetOwningPlayer"); } + float GetNetPriority(FVector* ViewPos, FVector* ViewDir, APlayerController* Viewer, UActorChannel* InChannel, float Time, bool bLowBandwidth) { return NativeCall(this, "AActor.GetNetPriority", ViewPos, ViewDir, Viewer, InChannel, Time, bLowBandwidth); } + float GetNetStasisAndRangeMultiplier(bool bIsForNetworking) { return NativeCall(this, "AActor.GetNetStasisAndRangeMultiplier", bIsForNetworking); } + void GetOverlappingActors(TArray* OverlappingActors, UClass* ClassFilter) { NativeCall*, UClass*>(this, "AActor.GetOverlappingActors", OverlappingActors, ClassFilter); } + void GetOverlappingComponents(TArray* OutOverlappingComponents) { NativeCall*>(this, "AActor.GetOverlappingComponents", OutOverlappingComponents); } + APlayerController* GetOwnerController() { return NativeCall(this, "AActor.GetOwnerController"); } + ENetRole GetRemoteRole() { return NativeCall(this, "AActor.GetRemoteRole"); } + void GetSimpleCollisionCylinder(float* CollisionRadius, float* CollisionHalfHeight) { NativeCall(this, "AActor.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } + void GetSubobjectsWithStableNamesForNetworking(TArray* ObjList) { NativeCall*>(this, "AActor.GetSubobjectsWithStableNamesForNetworking", ObjList); } + FTransform* GetTransform(FTransform* result) { return NativeCall(this, "AActor.GetTransform", result); } + FVector* GetVelocity(FVector* result, bool bIsForRagdoll) { return NativeCall(this, "AActor.GetVelocity", result, bIsForRagdoll); } + float GetVerticalDistanceTo(AActor* OtherActor) { return NativeCall(this, "AActor.GetVerticalDistanceTo", OtherActor); } + UPrimitiveComponent* GetVisibleComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetVisibleComponentByClass", ComponentClass); } + UPrimitiveComponent* GetVisibleUnhiddenComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "AActor.GetVisibleUnhiddenComponentByClass", ComponentClass); } + UWorld* GetWorld() { return NativeCall(this, "AActor.GetWorld"); } + AWorldSettings* GetWorldSettings() { return NativeCall(this, "AActor.GetWorldSettings"); } + bool HasNetOwner() { return NativeCall(this, "AActor.HasNetOwner"); } + void InitializeComponents() { NativeCall(this, "AActor.InitializeComponents"); } + float InternalTakeRadialDamage(float Damage, FRadialDamageEvent* RadialDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "AActor.InternalTakeRadialDamage", Damage, RadialDamageEvent, EventInstigator, DamageCauser); } + void InvalidateLightingCacheDetailed(bool bTranslationOnly) { NativeCall(this, "AActor.InvalidateLightingCacheDetailed", bTranslationOnly); } + void InventoryItemDropped(UObject* InventoryItemObject) { NativeCall(this, "AActor.InventoryItemDropped", InventoryItemObject); } + void InventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "AActor.InventoryItemUsed", InventoryItemObject); } + bool IsAttachedTo(AActor* Other) { return NativeCall(this, "AActor.IsAttachedTo", Other); } + bool IsBasedOnActor(AActor* Other) { return NativeCall(this, "AActor.IsBasedOnActor", Other); } + bool IsInGameplayWorld() { return NativeCall(this, "AActor.IsInGameplayWorld"); } + bool IsInOrOwnedBy(UObject* SomeOuter) { return NativeCall(this, "AActor.IsInOrOwnedBy", SomeOuter); } + bool IsInPersistentLevel(bool bIncludeLevelStreamingPersistent) { return NativeCall(this, "AActor.IsInPersistentLevel", bIncludeLevelStreamingPersistent); } + bool IsMatineeControlled() { return NativeCall(this, "AActor.IsMatineeControlled"); } + bool IsNameStableForNetworking() { return NativeCall(this, "AActor.IsNameStableForNetworking"); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "AActor.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + bool IsNetStartupActor() { return NativeCall(this, "AActor.IsNetStartupActor"); } + bool IsOwnedOrControlledBy(AActor* TestOwner) { return NativeCall(this, "AActor.IsOwnedOrControlledBy", TestOwner); } + bool IsReadyForFinishDestroy() { return NativeCall(this, "AActor.IsReadyForFinishDestroy"); } + bool IsRelevancyOwnerFor(AActor* ReplicatedActor, AActor* ActorOwner, AActor* ConnectionActor) { return NativeCall(this, "AActor.IsRelevancyOwnerFor", ReplicatedActor, ActorOwner, ConnectionActor); } + bool IsRootComponentCollisionRegistered() { return NativeCall(this, "AActor.IsRootComponentCollisionRegistered"); } + bool IsRootComponentMovable() { return NativeCall(this, "AActor.IsRootComponentMovable"); } + bool IsRootComponentStatic() { return NativeCall(this, "AActor.IsRootComponentStatic"); } + bool IsRootComponentStationary() { return NativeCall(this, "AActor.IsRootComponentStationary"); } + void K2_AttachRootComponentTo(USceneComponent* InParent, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.K2_AttachRootComponentTo", InParent, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + void K2_AttachRootComponentToActor(AActor* InParentActor, FName InSocketName, EAttachLocation::Type AttachLocationType, bool bWeldSimulatedBodies) { NativeCall(this, "AActor.K2_AttachRootComponentToActor", InParentActor, InSocketName, AttachLocationType, bWeldSimulatedBodies); } + void K2_DestroyComponent(UActorComponent* Component) { NativeCall(this, "AActor.K2_DestroyComponent", Component); } + FRotator* K2_GetActorRotation(FRotator* result) { return NativeCall(this, "AActor.K2_GetActorRotation", result); } + USceneComponent* K2_GetRootComponent() { return NativeCall(this, "AActor.K2_GetRootComponent"); } + UWorld* K2_GetWorld() { return NativeCall(this, "AActor.K2_GetWorld"); } + bool K2_SetActorLocation(FVector NewLocation, bool bSweep) { return NativeCall(this, "AActor.K2_SetActorLocation", NewLocation, bSweep); } + bool K2_TeleportTo(FVector DestLocation, FRotator DestRotation, bool bSimpleTeleport) { return NativeCall(this, "AActor.K2_TeleportTo", DestLocation, DestRotation, bSimpleTeleport); } + void OutsideWorldBounds() { NativeCall(this, "AActor.OutsideWorldBounds"); } + void MakeNoise(float Loudness, APawn* NoiseInstigator, FVector NoiseLocation) { NativeCall(this, "AActor.MakeNoise", Loudness, NoiseInstigator, NoiseLocation); } + static void MakeNoiseImpl(AActor* NoiseMaker, float Loudness, APawn* NoiseInstigator, FVector* NoiseLocation) { NativeCall(nullptr, "AActor.MakeNoiseImpl", NoiseMaker, Loudness, NoiseInstigator, NoiseLocation); } + void MarkComponentsAsPendingKill() { NativeCall(this, "AActor.MarkComponentsAsPendingKill"); } + void MarkComponentsRenderStateDirty() { NativeCall(this, "AActor.MarkComponentsRenderStateDirty"); } + void MatineeUpdated() { NativeCall(this, "AActor.MatineeUpdated"); } + bool Modify(bool bAlwaysMarkDirty) { return NativeCall(this, "AActor.Modify", bAlwaysMarkDirty); } + void Multi_DrawDebugCoordinateSystem_Implementation(FVector AxisLoc, FRotator AxisRot, float Scale, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Multi_DrawDebugCoordinateSystem_Implementation", AxisLoc, AxisRot, Scale, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Multi_DrawDebugDirectionalArrow_Implementation(FVector LineStart, FVector LineEnd, float ArrowSize, FColor ArrowColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Multi_DrawDebugDirectionalArrow_Implementation", LineStart, LineEnd, ArrowSize, ArrowColor, bPersistentLines, LifeTime, DepthPriority); } + void Multi_DrawDebugLine_Implementation(FVector LineStart, FVector LineEnd, FColor LineColor, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Multi_DrawDebugLine_Implementation", LineStart, LineEnd, LineColor, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Multi_DrawDebugSphere_Implementation(FVector Center, float Radius, int Segments, FColor SphereColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Multi_DrawDebugSphere_Implementation", Center, Radius, Segments, SphereColor, bPersistentLines, LifeTime, DepthPriority); } + void MulticastProperty(FName PropertyName, bool bUnreliable) { NativeCall(this, "AActor.MulticastProperty", PropertyName, bUnreliable); } + void MulticastPropertyToPlayer(FName PropertyName, APlayerController* PC, bool bUnreliable) { NativeCall(this, "AActor.MulticastPropertyToPlayer", PropertyName, PC, bUnreliable); } + void NetActorSpawnActorUnreliable_Implementation(TSubclassOf ActorClass, FVector AtLoc, FRotator AtRot, bool bIgnoreOnDedicatedServer, USceneComponent* AttachToComponent, FName BoneName, AActor* SpawnOwner) { NativeCall, FVector, FRotator, bool, USceneComponent*, FName, AActor*>(this, "AActor.NetActorSpawnActorUnreliable_Implementation", ActorClass, AtLoc, AtRot, bIgnoreOnDedicatedServer, AttachToComponent, BoneName, SpawnOwner); } + void NetActorSpawnActor_Implementation(TSubclassOf ActorClass, FVector AtLoc, FRotator AtRot, bool bIgnoreOnDedicatedServer, USceneComponent* AttachToComponent, FName BoneName, AActor* SpawnOwner) { NativeCall, FVector, FRotator, bool, USceneComponent*, FName, AActor*>(this, "AActor.NetActorSpawnActor_Implementation", ActorClass, AtLoc, AtRot, bIgnoreOnDedicatedServer, AttachToComponent, BoneName, SpawnOwner); } + void NetAttachRootComponentTo_Implementation(USceneComponent* InParent, FName InSocketName, FVector RelativeLocation, FRotator RelativeRotation) { NativeCall(this, "AActor.NetAttachRootComponentTo_Implementation", InParent, InSocketName, RelativeLocation, RelativeRotation); } + void NetDetachRootComponentFromAny_Implementation() { NativeCall(this, "AActor.NetDetachRootComponentFromAny_Implementation"); } + void Net_DrawDebugBox(FVector* Center, FVector* BoxExtent, FQuat* Rotation, FColor* BoxColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Net_DrawDebugBox", Center, BoxExtent, Rotation, BoxColor, bPersistentLines, LifeTime, DepthPriority); } + void Net_DrawDebugCapsule(FVector* Center, float HalfHeight, float Radius, FQuat* Rotation, FColor* CapsuleColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Net_DrawDebugCapsule", Center, HalfHeight, Radius, Rotation, CapsuleColor, bPersistentLines, LifeTime, DepthPriority); } + void Net_DrawDebugCoordinateSystem(FVector* AxisLoc, FRotator* AxisRot, float Scale, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Net_DrawDebugCoordinateSystem", AxisLoc, AxisRot, Scale, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Net_DrawDebugDirectionalArrow(FVector* LineStart, FVector* LineEnd, float ArrowSize, FColor* ArrowColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Net_DrawDebugDirectionalArrow", LineStart, LineEnd, ArrowSize, ArrowColor, bPersistentLines, LifeTime, DepthPriority); } + void Net_DrawDebugLine(FVector* LineStart, FVector* LineEnd, FColor* LineColor, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Net_DrawDebugLine", LineStart, LineEnd, LineColor, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Net_DrawDebugSphere(FVector* Center, float Radius, int Segments, FColor* SphereColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Net_DrawDebugSphere", Center, Radius, Segments, SphereColor, bPersistentLines, LifeTime, DepthPriority); } + void OnRep_AttachmentReplication() { NativeCall(this, "AActor.OnRep_AttachmentReplication"); } + void OnRep_ReplicatedMovement() { NativeCall(this, "AActor.OnRep_ReplicatedMovement"); } + void OnSubobjectCreatedFromReplication(UObject* NewSubobject) { NativeCall(this, "AActor.OnSubobjectCreatedFromReplication", NewSubobject); } + void OnSubobjectDestroyFromReplication(UObject* NewSubobject) { NativeCall(this, "AActor.OnSubobjectDestroyFromReplication", NewSubobject); } + void PlaySoundAtLocation(USoundCue* InSoundCue, FVector SoundLocation, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundAtLocation", InSoundCue, SoundLocation, VolumeMultiplier, PitchMultiplier); } + void PlaySoundOnActor(USoundCue* InSoundCue, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "AActor.PlaySoundOnActor", InSoundCue, VolumeMultiplier, PitchMultiplier); } + void PostActorConstruction() { NativeCall(this, "AActor.PostActorConstruction"); } + void PostInitProperties() { NativeCall(this, "AActor.PostInitProperties"); } + void PostInitializeComponents() { NativeCall(this, "AActor.PostInitializeComponents"); } + void PostLoad() { NativeCall(this, "AActor.PostLoad"); } + void PostLoadSubobjects(FObjectInstancingGraph* OuterInstanceGraph) { NativeCall(this, "AActor.PostLoadSubobjects", OuterInstanceGraph); } + void PostNetInit() { NativeCall(this, "AActor.PostNetInit"); } + void PostNetReceive() { NativeCall(this, "AActor.PostNetReceive"); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "AActor.PostNetReceiveLocationAndRotation"); } + void PostNetReceivePhysicState() { NativeCall(this, "AActor.PostNetReceivePhysicState"); } + void PostSpawnInitialize(FVector* SpawnLocation, FRotator* SpawnRotation, AActor* InOwner, APawn* InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "AActor.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } + void PreInitializeComponents() { NativeCall(this, "AActor.PreInitializeComponents"); } + void PreNetReceive() { NativeCall(this, "AActor.PreNetReceive"); } + void PrestreamTextures(float Seconds, bool bEnableStreaming, int CinematicTextureGroups) { NativeCall(this, "AActor.PrestreamTextures", Seconds, bEnableStreaming, CinematicTextureGroups); } + bool PreventCharacterBasing(AActor* OtherActor, UPrimitiveComponent* BasedOnComponent) { return NativeCall(this, "AActor.PreventCharacterBasing", OtherActor, BasedOnComponent); } + void ProcessEvent(UFunction* Function, void* Parameters) { NativeCall(this, "AActor.ProcessEvent", Function, Parameters); } + void PropertyServerToClientsUnreliable_Implementation(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClientsUnreliable_Implementation", ActorToRep, PropertyName, ReplicationData); } + void PropertyServerToClients_Implementation(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClients_Implementation", ActorToRep, PropertyName, ReplicationData); } + void REP_ActivateManualDirtyForPlayer(FName* PropertyName, APlayerController* PC) { NativeCall(this, "AActor.REP_ActivateManualDirtyForPlayer", PropertyName, PC); } + void RegisterActorTickFunctions(bool bRegister, bool bSaveAndRestoreTickState) { NativeCall(this, "AActor.RegisterActorTickFunctions", bRegister, bSaveAndRestoreTickState); } + void RegisterAllActorTickFunctions(bool bRegister, bool bDoComponents, bool bSaveAndRestoreTickState) { NativeCall(this, "AActor.RegisterAllActorTickFunctions", bRegister, bDoComponents, bSaveAndRestoreTickState); } + void RegisterAllComponents() { NativeCall(this, "AActor.RegisterAllComponents"); } + void RemoveControllingMatineeActor(AMatineeActor* InMatineeActor) { NativeCall(this, "AActor.RemoveControllingMatineeActor", InMatineeActor); } + void RemoveOwnedComponent(UActorComponent* Component) { NativeCall(this, "AActor.RemoveOwnedComponent", Component); } + void RemoveTickPrerequisiteActor(AActor* PrerequisiteActor) { NativeCall(this, "AActor.RemoveTickPrerequisiteActor", PrerequisiteActor); } + void RemoveTickPrerequisiteComponent(UActorComponent* PrerequisiteComponent) { NativeCall(this, "AActor.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } + bool Rename(const wchar_t* InName, UObject* NewOuter, unsigned int Flags) { return NativeCall(this, "AActor.Rename", InName, NewOuter, Flags); } + void ReregisterAllComponents() { NativeCall(this, "AActor.ReregisterAllComponents"); } + void RerunConstructionScripts() { NativeCall(this, "AActor.RerunConstructionScripts"); } + void ResetOwnedComponents() { NativeCall(this, "AActor.ResetOwnedComponents"); } + void ResetPropertiesForConstruction() { NativeCall(this, "AActor.ResetPropertiesForConstruction"); } + void ResetSpatialComponent() { NativeCall(this, "AActor.ResetSpatialComponent"); } + void RouteEndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.RouteEndPlay", EndPlayReason); } + void SendExecCommand(FName CommandName, FNetExecParams* ExecParams, bool bIsReliable) { NativeCall(this, "AActor.SendExecCommand", CommandName, ExecParams, bIsReliable); } + void ServerSendSimpleExecCommandToEveryone(FName CommandName, bool bIsReliable, bool bForceSendToLocalPlayer, bool bIgnoreRelevancy) { NativeCall(this, "AActor.ServerSendSimpleExecCommandToEveryone", CommandName, bIsReliable, bForceSendToLocalPlayer, bIgnoreRelevancy); } + void SetActorEnableCollision(bool bNewActorEnableCollision, bool bCheckRecreatePhysicsState) { NativeCall(this, "AActor.SetActorEnableCollision", bNewActorEnableCollision, bCheckRecreatePhysicsState); } + void SetActorHiddenInGame(bool bNewHidden) { NativeCall(this, "AActor.SetActorHiddenInGame", bNewHidden); } + bool SetActorLocation(FVector* NewLocation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocation", NewLocation, bSweep); } + bool SetActorLocationAndRotation(FVector* NewLocation, FRotator NewRotation, bool bSweep) { return NativeCall(this, "AActor.SetActorLocationAndRotation", NewLocation, NewRotation, bSweep); } + void SetActorRelativeLocation(FVector NewRelativeLocation, bool bSweep) { NativeCall(this, "AActor.SetActorRelativeLocation", NewRelativeLocation, bSweep); } + void SetActorRelativeRotation(FRotator NewRelativeRotation, bool bSweep) { NativeCall(this, "AActor.SetActorRelativeRotation", NewRelativeRotation, bSweep); } + void SetActorRelativeScale3D(FVector NewRelativeScale) { NativeCall(this, "AActor.SetActorRelativeScale3D", NewRelativeScale); } + void SetActorRelativeTransform(FTransform* NewRelativeTransform, bool bSweep) { NativeCall(this, "AActor.SetActorRelativeTransform", NewRelativeTransform, bSweep); } + bool SetActorRotation(FQuat* NewRotation) { return NativeCall(this, "AActor.SetActorRotation", NewRotation); } + bool SetActorRotation(FRotator NewRotation) { return NativeCall(this, "AActor.SetActorRotation", NewRotation); } + void SetActorScale3D(FVector* NewScale3D) { NativeCall(this, "AActor.SetActorScale3D", NewScale3D); } + void SetActorTickEnabled(bool bEnabled) { NativeCall(this, "AActor.SetActorTickEnabled", bEnabled); } + bool SetActorTransform(FTransform* NewTransform, bool bSweep) { return NativeCall(this, "AActor.SetActorTransform", NewTransform, bSweep); } + void SetAutonomousProxy(bool bInAutonomousProxy) { NativeCall(this, "AActor.SetAutonomousProxy", bInAutonomousProxy); } + void SetLifeSpan(float InLifespan) { NativeCall(this, "AActor.SetLifeSpan", InLifespan); } + void SetNetUpdateTime(long double NewUpdateTime) { NativeCall(this, "AActor.SetNetUpdateTime", NewUpdateTime); } + void SetNetworkSpatializationParent(AActor* NewParent) { NativeCall(this, "AActor.SetNetworkSpatializationParent", NewParent); } + void SetOwner(AActor* NewOwner) { NativeCall(this, "AActor.SetOwner", NewOwner); } + void SetReplicates(bool bInReplicates) { NativeCall(this, "AActor.SetReplicates", bInReplicates); } + bool SetRootComponent(USceneComponent* NewRootComponent) { return NativeCall(this, "AActor.SetRootComponent", NewRootComponent); } + void SetTickFunctionEnabled(bool bEnableTick) { NativeCall(this, "AActor.SetTickFunctionEnabled", bEnableTick); } + void SetTickableWhenPaused(bool bTickableWhenPaused) { NativeCall(this, "AActor.SetTickableWhenPaused", bTickableWhenPaused); } + bool SimpleTeleportTo(FVector* DestLocation, FRotator* DestRotation) { return NativeCall(this, "AActor.SimpleTeleportTo", DestLocation, DestRotation); } + void SnapRootComponentTo(AActor* InParentActor, FName InSocketName) { NativeCall(this, "AActor.SnapRootComponentTo", InParentActor, InSocketName); } + void Stasis() { NativeCall(this, "AActor.Stasis"); } + void StopActorSound(USoundBase* SoundAsset, float FadeOutTime) { NativeCall(this, "AActor.StopActorSound", SoundAsset, FadeOutTime); } + float TakeDamage(float DamageAmount, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "AActor.TakeDamage", DamageAmount, DamageEvent, EventInstigator, DamageCauser); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AActor.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + void Tick(float DeltaSeconds) { NativeCall(this, "AActor.Tick", DeltaSeconds); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "AActor.TryMultiUse", ForPC, UseIndex); } + void UninitializeComponents(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.UninitializeComponents", EndPlayReason); } + void UnregisterAllComponents(bool bDetachFromOtherParent) { NativeCall(this, "AActor.UnregisterAllComponents", bDetachFromOtherParent); } + void Unstasis() { NativeCall(this, "AActor.Unstasis"); } + void UpdateOverlaps(bool bDoNotifies) { NativeCall(this, "AActor.UpdateOverlaps", bDoNotifies); } + void GatherCurrentMovement() { NativeCall(this, "AActor.GatherCurrentMovement"); } + AActor* GetOwner() { return NativeCall(this, "AActor.GetOwner"); } + void ForceNetUpdate(bool bDormantDontReplicateProperties, bool bAbsoluteForceNetUpdate, bool bDontUpdateChannel) { NativeCall(this, "AActor.ForceNetUpdate", bDormantDontReplicateProperties, bAbsoluteForceNetUpdate, bDontUpdateChannel); } + void ForceReplicateNow(bool bForceCreateChannel, bool bForceCreateChannelIfRelevant) { NativeCall(this, "AActor.ForceReplicateNow", bForceCreateChannel, bForceCreateChannelIfRelevant); } + void ActorPlaySound(USoundBase* SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySound", SoundAsset, bAttach, BoneName, LocOffset); } + void ActorPlaySoundUnreliable(USoundBase* SoundAsset, bool bAttach, FName BoneName, FVector LocOffset) { NativeCall(this, "AActor.ActorPlaySoundUnreliable", SoundAsset, bAttach, BoneName, LocOffset); } + bool AllowGrappling() { return NativeCall(this, "AActor.AllowGrappling"); } + bool AllowIgnoreCharacterEncroachment(UPrimitiveComponent* HitComponent, AActor* EncroachingCharacter) { return NativeCall(this, "AActor.AllowIgnoreCharacterEncroachment", HitComponent, EncroachingCharacter); } + bool AllowManualMultiUseActivation(APlayerController* ForPC) { return NativeCall(this, "AActor.AllowManualMultiUseActivation", ForPC); } + void BPAttachedRootComponent() { NativeCall(this, "AActor.BPAttachedRootComponent"); } + void BPChangedActorTeam() { NativeCall(this, "AActor.BPChangedActorTeam"); } + void BPClientDoMultiUse(APlayerController* ForPC, int ClientUseIndex) { NativeCall(this, "AActor.BPClientDoMultiUse", ForPC, ClientUseIndex); } + void BPClientIsAboutToSeamlessTravel() { NativeCall(this, "AActor.BPClientIsAboutToSeamlessTravel"); } + bool BPConsumeSetPinCode(APlayerController* ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "AActor.BPConsumeSetPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + bool BPConsumeUsePinCode(AActor* FromKeypadActor, APlayerController* ForPC, int appledPinCode, bool bIsActivating) { return NativeCall(this, "AActor.BPConsumeUsePinCode", FromKeypadActor, ForPC, appledPinCode, bIsActivating); } + bool BPForceAllowsInventoryUse(UObject* InventoryItemObject) { return NativeCall(this, "AActor.BPForceAllowsInventoryUse", InventoryItemObject); } + void BPInventoryItemDropped(UObject* InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemDropped", InventoryItemObject); } + void BPInventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "AActor.BPInventoryItemUsed", InventoryItemObject); } + FString* BPOverrideMultiUseCenterText(FString* result, APlayerController* ForPC) { return NativeCall(this, "AActor.BPOverrideMultiUseCenterText", result, ForPC); } + float BPOverrideServerMultiUseAcceptRange() { return NativeCall(this, "AActor.BPOverrideServerMultiUseAcceptRange"); } + void BPPostInitializeComponents() { NativeCall(this, "AActor.BPPostInitializeComponents"); } + void BPPostLoadedFromSeamlessTravel() { NativeCall(this, "AActor.BPPostLoadedFromSeamlessTravel"); } + void BPPreInitializeComponents() { NativeCall(this, "AActor.BPPreInitializeComponents"); } + bool BPTryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "AActor.BPTryMultiUse", ForPC, UseIndex); } + void ClientPrepareForSeamlessTravel() { NativeCall(this, "AActor.ClientPrepareForSeamlessTravel"); } + void ClientSeamlessTravelled() { NativeCall(this, "AActor.ClientSeamlessTravelled"); } + void DrawActorFloatingHUD(AHUD* ForHUD) { NativeCall(this, "AActor.DrawActorFloatingHUD", ForHUD); } + void DrawBasicFloatingHUD(AHUD* ForHUD) { NativeCall(this, "AActor.DrawBasicFloatingHUD", ForHUD); } + FString* GetAimedTutorialHintString(FString* result) { return NativeCall(this, "AActor.GetAimedTutorialHintString", result); } + FString* GetEditTextString(FString* result, APlayerController* ForPC, UObject* AssociatedObject1, int ExtraID1, int ExtraID2) { return NativeCall(this, "AActor.GetEditTextString", result, ForPC, AssociatedObject1, ExtraID1, ExtraID2); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AActor.GetPrivateStaticClass", Package); } + void InitializedSeamlessGridInfo() { NativeCall(this, "AActor.InitializedSeamlessGridInfo"); } + bool IsValidLockOnTarget(APawn* AttackerPawn) { return NativeCall(this, "AActor.IsValidLockOnTarget", AttackerPawn); } + void K2_OnBecomeViewTarget(APlayerController* PC) { NativeCall(this, "AActor.K2_OnBecomeViewTarget", PC); } + void K2_OnEndViewTarget(APlayerController* PC) { NativeCall(this, "AActor.K2_OnEndViewTarget", PC); } + void ModifyHudMultiUseLoc(FVector2D* theVec, APlayerController* PC, int index) { NativeCall(this, "AActor.ModifyHudMultiUseLoc", theVec, PC, index); } + void Multi_DrawDebugCoordinateSystem(FVector AxisLoc, FRotator AxisRot, float Scale, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Multi_DrawDebugCoordinateSystem", AxisLoc, AxisRot, Scale, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Multi_DrawDebugDirectionalArrow(FVector LineStart, FVector LineEnd, float ArrowSize, FColor ArrowColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Multi_DrawDebugDirectionalArrow", LineStart, LineEnd, ArrowSize, ArrowColor, bPersistentLines, LifeTime, DepthPriority); } + void Multi_DrawDebugLine(FVector LineStart, FVector LineEnd, FColor LineColor, bool bPersistentLines, float LifeTime, char DepthPriority, float Thickness) { NativeCall(this, "AActor.Multi_DrawDebugLine", LineStart, LineEnd, LineColor, bPersistentLines, LifeTime, DepthPriority, Thickness); } + void Multi_DrawDebugSphere(FVector Center, float Radius, int Segments, FColor SphereColor, bool bPersistentLines, float LifeTime, char DepthPriority) { NativeCall(this, "AActor.Multi_DrawDebugSphere", Center, Radius, Segments, SphereColor, bPersistentLines, LifeTime, DepthPriority); } + void NetActorSpawnActor(TSubclassOf ActorClass, FVector AtLoc, FRotator AtRot, bool bIgnoreOnDedicatedServer, USceneComponent* AttachToComponent, FName BoneName, AActor* SpawnOwner) { NativeCall, FVector, FRotator, bool, USceneComponent*, FName, AActor*>(this, "AActor.NetActorSpawnActor", ActorClass, AtLoc, AtRot, bIgnoreOnDedicatedServer, AttachToComponent, BoneName, SpawnOwner); } + void NetAttachRootComponentTo(USceneComponent* InParent, FName InSocketName, FVector RelativeLocation, FRotator RelativeRotation) { NativeCall(this, "AActor.NetAttachRootComponentTo", InParent, InSocketName, RelativeLocation, RelativeRotation); } + void NetSpawnedActor(AActor* SpawnedActor) { NativeCall(this, "AActor.NetSpawnedActor", SpawnedActor); } + float OffsetHUDFromBottomScreenY(AHUD* ForHUD) { return NativeCall(this, "AActor.OffsetHUDFromBottomScreenY", ForHUD); } + float OffsetHUDFromCenterScreenY(AHUD* ForHUD) { return NativeCall(this, "AActor.OffsetHUDFromCenterScreenY", ForHUD); } + void PrepareClientMapActorForSeamlessTravel() { NativeCall(this, "AActor.PrepareClientMapActorForSeamlessTravel"); } + void PropertyServerToClients(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClients", ActorToRep, PropertyName, ReplicationData); } + void PropertyServerToClientsUnreliable(AActor* ActorToRep, FName PropertyName, TArray* ReplicationData) { NativeCall*>(this, "AActor.PropertyServerToClientsUnreliable", ActorToRep, PropertyName, ReplicationData); } + void ReceiveActorBeginCursorOver() { NativeCall(this, "AActor.ReceiveActorBeginCursorOver"); } + void ReceiveActorBeginOverlap(AActor* OtherActor) { NativeCall(this, "AActor.ReceiveActorBeginOverlap", OtherActor); } + void ReceiveActorEndCursorOver() { NativeCall(this, "AActor.ReceiveActorEndCursorOver"); } + void ReceiveActorEndOverlap(AActor* OtherActor) { NativeCall(this, "AActor.ReceiveActorEndOverlap", OtherActor); } + void ReceiveActorOnClicked() { NativeCall(this, "AActor.ReceiveActorOnClicked"); } + void ReceiveActorOnInputTouchBegin(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchBegin", FingerIndex); } + void ReceiveActorOnInputTouchEnd(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchEnd", FingerIndex); } + void ReceiveActorOnInputTouchEnter(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchEnter", FingerIndex); } + void ReceiveActorOnInputTouchLeave(ETouchIndex::Type FingerIndex) { NativeCall(this, "AActor.ReceiveActorOnInputTouchLeave", FingerIndex); } + void ReceiveActorOnReleased() { NativeCall(this, "AActor.ReceiveActorOnReleased"); } + void ReceiveAnyDamage(float Damage, UDamageType* DamageType, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceiveAnyDamage", Damage, DamageType, InstigatedBy, DamageCauser); } + void ReceiveBeginPlay() { NativeCall(this, "AActor.ReceiveBeginPlay"); } + void ReceiveDestroyed() { NativeCall(this, "AActor.ReceiveDestroyed"); } + void ReceiveEndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AActor.ReceiveEndPlay", EndPlayReason); } + void ReceiveHit(UPrimitiveComponent* MyComp, AActor* Other, UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, FHitResult* Hit) { NativeCall(this, "AActor.ReceiveHit", MyComp, Other, OtherComp, bSelfMoved, HitLocation, HitNormal, NormalImpulse, Hit); } + void ReceiveInput(FString* InputName, float Value, FVector VectorValue, bool bStarted, bool bEnded) { NativeCall(this, "AActor.ReceiveInput", InputName, Value, VectorValue, bStarted, bEnded); } + void ReceivePointDamage(float Damage, UDamageType* DamageType, FVector HitLocation, FVector HitNormal, UPrimitiveComponent* HitComponent, FName BoneName, FVector ShotFromDirection, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceivePointDamage", Damage, DamageType, HitLocation, HitNormal, HitComponent, BoneName, ShotFromDirection, InstigatedBy, DamageCauser); } + void ReceiveRadialDamage(float DamageReceived, UDamageType* DamageType, FVector Origin, FHitResult* HitInfo, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "AActor.ReceiveRadialDamage", DamageReceived, DamageType, Origin, HitInfo, InstigatedBy, DamageCauser); } + void ReceiveTick(float DeltaSeconds) { NativeCall(this, "AActor.ReceiveTick", DeltaSeconds); } + void RecieveMatineeUpdated() { NativeCall(this, "AActor.RecieveMatineeUpdated"); } + void ServerPrepareForSeamlessTravel() { NativeCall(this, "AActor.ServerPrepareForSeamlessTravel"); } + static void StaticRegisterNativesAActor() { NativeCall(nullptr, "AActor.StaticRegisterNativesAActor"); } + void ThrottledTick() { NativeCall(this, "AActor.ThrottledTick"); } + void UserConstructionScript() { NativeCall(this, "AActor.UserConstructionScript"); } +}; + +struct AInfo : AActor +{ + + // Functions + + static UClass* StaticClass() { return NativeCall(nullptr, "AInfo.StaticClass"); } +}; + +struct APawn : AActor +{ + float& BaseEyeHeightField() { return *GetNativePointerField(this, "APawn.BaseEyeHeight"); } + TSubclassOf& AIControllerClassField() { return *GetNativePointerField*>(this, "APawn.AIControllerClass"); } + APlayerState* PlayerStateField() { return *GetNativePointerField(this, "APawn.PlayerState"); } + char& RemoteViewPitchField() { return *GetNativePointerField(this, "APawn.RemoteViewPitch"); } + AController* LastHitByField() { return *GetNativePointerField(this, "APawn.LastHitBy"); } + AController* ControllerField() { return *GetNativePointerField(this, "APawn.Controller"); } + float& AllowedYawErrorField() { return *GetNativePointerField(this, "APawn.AllowedYawError"); } + bool& bClearOnConsumeField() { return *GetNativePointerField(this, "APawn.bClearOnConsume"); } + FVector& ControlInputVectorField() { return *GetNativePointerField(this, "APawn.ControlInputVector"); } + FVector& LastControlInputVectorField() { return *GetNativePointerField(this, "APawn.LastControlInputVector"); } + TWeakObjectPtr& SpawnedForControllerField() { return *GetNativePointerField*>(this, "APawn.SpawnedForController"); } + + // Bit fields + + BitFieldValue bUseControllerRotationPitch() { return { this, "APawn.bUseControllerRotationPitch" }; } + BitFieldValue bUseControllerRotationYaw() { return { this, "APawn.bUseControllerRotationYaw" }; } + BitFieldValue bUseControllerRotationRoll() { return { this, "APawn.bUseControllerRotationRoll" }; } + BitFieldValue bCanAffectNavigationGeneration() { return { this, "APawn.bCanAffectNavigationGeneration" }; } + BitFieldValue bPreventMovementStoppingOnPossess() { return { this, "APawn.bPreventMovementStoppingOnPossess" }; } + BitFieldValue bInputEnabled() { return { this, "APawn.bInputEnabled" }; } + BitFieldValue bProcessingOutsideWorldBounds() { return { this, "APawn.bProcessingOutsideWorldBounds" }; } + + // Functions + + FVector* GetNavAgentLocation(FVector* result) { return NativeCall(this, "APawn.GetNavAgentLocation", result); } + void AddControllerPitchInput(float Val) { NativeCall(this, "APawn.AddControllerPitchInput", Val); } + void AddControllerRollInput(float Val) { NativeCall(this, "APawn.AddControllerRollInput", Val); } + void AddControllerYawInput(float Val) { NativeCall(this, "APawn.AddControllerYawInput", Val); } + void AddMovementInput(FVector WorldDirection, float ScaleValue, bool bForce) { NativeCall(this, "APawn.AddMovementInput", WorldDirection, ScaleValue, bForce); } + void BecomeViewTarget(APlayerController* PC) { NativeCall(this, "APawn.BecomeViewTarget", PC); } + void ClientSetRotation(FRotator NewRotation) { NativeCall(this, "APawn.ClientSetRotation", NewRotation); } + FVector* ConsumeMovementInputVector(FVector* result) { return NativeCall(this, "APawn.ConsumeMovementInputVector", result); } + void DestroyPlayerInputComponent() { NativeCall(this, "APawn.DestroyPlayerInputComponent"); } + void Destroyed() { NativeCall(this, "APawn.Destroyed"); } + void DetachFromControllerPendingDestroy() { NativeCall(this, "APawn.DetachFromControllerPendingDestroy"); } + void DisableInput(APlayerController* PlayerController) { NativeCall(this, "APawn.DisableInput", PlayerController); } + void EnableInput(APlayerController* PlayerController) { NativeCall(this, "APawn.EnableInput", PlayerController); } + void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "APawn.FaceRotation", NewControlRotation, DeltaTime, bFromController); } + void GetActorEyesViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "APawn.GetActorEyesViewPoint", out_Location, out_Rotation); } + FRotator* GetBaseAimRotation(FRotator* result) { return NativeCall(this, "APawn.GetBaseAimRotation", result); } + FRotator* GetControlRotation(FRotator* result) { return NativeCall(this, "APawn.GetControlRotation", result); } + AController* GetDamageInstigator(AController* InstigatedBy, UDamageType* DamageType) { return NativeCall(this, "APawn.GetDamageInstigator", InstigatedBy, DamageType); } + float GetDefaultHalfHeight() { return NativeCall(this, "APawn.GetDefaultHalfHeight"); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "APawn.GetHumanReadableName", result); } + FVector* GetLastMovementInputVector(FVector* result) { return NativeCall(this, "APawn.GetLastMovementInputVector", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APawn.GetLifetimeReplicatedProps", OutLifetimeProps); } + static AActor* GetMovementBaseActor(APawn* Pawn) { return NativeCall(nullptr, "APawn.GetMovementBaseActor", Pawn); } + UNetConnection* GetNetConnection() { return NativeCall(this, "APawn.GetNetConnection"); } + UPlayer* GetNetOwningPlayer() { return NativeCall(this, "APawn.GetNetOwningPlayer"); } + float GetNetPriority(FVector* ViewPos, FVector* ViewDir, APlayerController* Viewer, UActorChannel* InChannel, float Time, bool bLowBandwidth) { return NativeCall(this, "APawn.GetNetPriority", ViewPos, ViewDir, Viewer, InChannel, Time, bLowBandwidth); } + APlayerController* GetOwnerController() { return NativeCall(this, "APawn.GetOwnerController"); } + FVector* GetPawnViewLocation(FVector* result, bool bAllTransforms) { return NativeCall(this, "APawn.GetPawnViewLocation", result, bAllTransforms); } + FVector* GetVelocity(FVector* result, bool bIsForRagdoll) { return NativeCall(this, "APawn.GetVelocity", result, bIsForRagdoll); } + FRotator* GetViewRotation(FRotator* result) { return NativeCall(this, "APawn.GetViewRotation", result); } + bool InFreeCam() { return NativeCall(this, "APawn.InFreeCam"); } + void Internal_AddMovementInput(FVector WorldAccel, bool bForce) { NativeCall(this, "APawn.Internal_AddMovementInput", WorldAccel, bForce); } + FVector* Internal_ConsumeMovementInputVector(FVector* result) { return NativeCall(this, "APawn.Internal_ConsumeMovementInputVector", result); } + bool IsBasedOnActor(AActor* Other) { return NativeCall(this, "APawn.IsBasedOnActor", Other); } + bool IsControlled() { return NativeCall(this, "APawn.IsControlled"); } + bool IsCrouched() { return NativeCall(this, "APawn.IsCrouched"); } + bool IsFalling() { return NativeCall(this, "APawn.IsFalling"); } + bool IsLocallyControlled() { return NativeCall(this, "APawn.IsLocallyControlled"); } + bool IsLocallyControlledByPlayer() { return NativeCall(this, "APawn.IsLocallyControlledByPlayer"); } + bool IsMoveInputIgnored() { return NativeCall(this, "APawn.IsMoveInputIgnored"); } + bool IsNetRelevantFor(APlayerController* RealViewer, AActor* Viewer, FVector* SrcLocation) { return NativeCall(this, "APawn.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + bool IsWalking() { return NativeCall(this, "APawn.IsWalking"); } + FVector* K2_GetMovementInputVector(FVector* result) { return NativeCall(this, "APawn.K2_GetMovementInputVector", result); } + void LaunchPawn(FVector LaunchVelocity, bool bXYOverride, bool bZOverride) { NativeCall(this, "APawn.LaunchPawn", LaunchVelocity, bXYOverride, bZOverride); } + void MoveIgnoreActorAdd(AActor* ActorToIgnore) { NativeCall(this, "APawn.MoveIgnoreActorAdd", ActorToIgnore); } + void OnRep_Controller() { NativeCall(this, "APawn.OnRep_Controller"); } + void OutsideWorldBounds() { NativeCall(this, "APawn.OutsideWorldBounds"); } + void PawnClientRestart() { NativeCall(this, "APawn.PawnClientRestart"); } + void PawnMakeNoise(float Loudness, FVector NoiseLocation, bool bUseNoiseMakerLocation, AActor* NoiseMaker) { NativeCall(this, "APawn.PawnMakeNoise", Loudness, NoiseLocation, bUseNoiseMakerLocation, NoiseMaker); } + void PossessedBy(AController* NewController) { NativeCall(this, "APawn.PossessedBy", NewController); } + void PostInitializeComponents() { NativeCall(this, "APawn.PostInitializeComponents"); } + void PostInputProcessed() { NativeCall(this, "APawn.PostInputProcessed"); } + void PostLoad() { NativeCall(this, "APawn.PostLoad"); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "APawn.PostNetReceiveLocationAndRotation"); } + void PostNetReceiveVelocity(FVector* NewVelocity) { NativeCall(this, "APawn.PostNetReceiveVelocity", NewVelocity); } + void PostRegisterAllComponents() { NativeCall(this, "APawn.PostRegisterAllComponents"); } + void PreInitializeComponents() { NativeCall(this, "APawn.PreInitializeComponents"); } + bool ReachedDesiredRotation() { return NativeCall(this, "APawn.ReachedDesiredRotation"); } + void RecalculateBaseEyeHeight() { NativeCall(this, "APawn.RecalculateBaseEyeHeight"); } + void Reset() { NativeCall(this, "APawn.Reset"); } + void Restart() { NativeCall(this, "APawn.Restart"); } + void SetCanAffectNavigationGeneration(bool bNewValue) { NativeCall(this, "APawn.SetCanAffectNavigationGeneration", bNewValue); } + bool ShouldTakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APawn.ShouldTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool ShouldTickIfViewportsOnly() { return NativeCall(this, "APawn.ShouldTickIfViewportsOnly"); } + void SpawnDefaultController() { NativeCall(this, "APawn.SpawnDefaultController"); } + float TakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APawn.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void Tick(float DeltaSeconds) { NativeCall(this, "APawn.Tick", DeltaSeconds); } + void TickBasedCharacters(float DeltaSeconds) { NativeCall(this, "APawn.TickBasedCharacters", DeltaSeconds); } + void TurnOff() { NativeCall(this, "APawn.TurnOff"); } + void UnPossessed() { NativeCall(this, "APawn.UnPossessed"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APawn.GetPrivateStaticClass", Package); } + void ReceivePossessed(AController* NewController) { NativeCall(this, "APawn.ReceivePossessed", NewController); } + void ReceiveUnpossessed(AController* OldController) { NativeCall(this, "APawn.ReceiveUnpossessed", OldController); } + static void StaticRegisterNativesAPawn() { NativeCall(nullptr, "APawn.StaticRegisterNativesAPawn"); } +}; + +struct UCheatManager +{ + float& DebugTraceDistanceField() { return *GetNativePointerField(this, "UCheatManager.DebugTraceDistance"); } + float& DebugCapsuleHalfHeightField() { return *GetNativePointerField(this, "UCheatManager.DebugCapsuleHalfHeight"); } + float& DebugCapsuleRadiusField() { return *GetNativePointerField(this, "UCheatManager.DebugCapsuleRadius"); } + float& DebugTraceDrawNormalLengthField() { return *GetNativePointerField(this, "UCheatManager.DebugTraceDrawNormalLength"); } + TEnumAsByte& DebugTraceChannelField() { return *GetNativePointerField*>(this, "UCheatManager.DebugTraceChannel"); } + int& CurrentTraceIndexField() { return *GetNativePointerField(this, "UCheatManager.CurrentTraceIndex"); } + int& CurrentTracePawnIndexField() { return *GetNativePointerField(this, "UCheatManager.CurrentTracePawnIndex"); } + float& DumpAILogsIntervalField() { return *GetNativePointerField(this, "UCheatManager.DumpAILogsInterval"); } + + // Bit fields + + BitFieldValue bDebugCapsuleSweep() { return { this, "UCheatManager.bDebugCapsuleSweep" }; } + BitFieldValue bDebugCapsuleSweepPawn() { return { this, "UCheatManager.bDebugCapsuleSweepPawn" }; } + BitFieldValue bDebugCapsuleTraceComplex() { return { this, "UCheatManager.bDebugCapsuleTraceComplex" }; } + BitFieldValue bToggleAILogging() { return { this, "UCheatManager.bToggleAILogging" }; } + + // Functions + + void BugIt(FString* ScreenShotDescription) { NativeCall(this, "UCheatManager.BugIt", ScreenShotDescription); } + void BugItGo(float X, float Y, float Z, float Pitch, float Yaw, float Roll) { NativeCall(this, "UCheatManager.BugItGo", X, Y, Z, Pitch, Yaw, Roll); } + void BugItGoString(FString* TheLocation, FString* TheRotation) { NativeCall(this, "UCheatManager.BugItGoString", TheLocation, TheRotation); } + void BugItStringCreator(FVector ViewLocation, FRotator ViewRotation, FString* GoString, FString* LocString) { NativeCall(this, "UCheatManager.BugItStringCreator", ViewLocation, ViewRotation, GoString, LocString); } + void BugItWorker(FVector TheLocation, FRotator TheRotation) { NativeCall(this, "UCheatManager.BugItWorker", TheLocation, TheRotation); } + void ChangeSize(float F) { NativeCall(this, "UCheatManager.ChangeSize", F); } + void DamageTarget(float DamageAmount) { NativeCall(this, "UCheatManager.DamageTarget", DamageAmount); } + void DebugCapsuleSweep() { NativeCall(this, "UCheatManager.DebugCapsuleSweep"); } + void DebugCapsuleSweepCapture() { NativeCall(this, "UCheatManager.DebugCapsuleSweepCapture"); } + void DebugCapsuleSweepChannel(ECollisionChannel Channel) { NativeCall(this, "UCheatManager.DebugCapsuleSweepChannel", Channel); } + void DebugCapsuleSweepClear() { NativeCall(this, "UCheatManager.DebugCapsuleSweepClear"); } + void DebugCapsuleSweepComplex(bool bTraceComplex) { NativeCall(this, "UCheatManager.DebugCapsuleSweepComplex", bTraceComplex); } + void DebugCapsuleSweepPawn() { NativeCall(this, "UCheatManager.DebugCapsuleSweepPawn"); } + void DebugCapsuleSweepSize(float HalfHeight, float Radius) { NativeCall(this, "UCheatManager.DebugCapsuleSweepSize", HalfHeight, Radius); } + void DestroyAll(TSubclassOf aClass) { NativeCall>(this, "UCheatManager.DestroyAll", aClass); } + void DestroyPawns(TSubclassOf aClass) { NativeCall>(this, "UCheatManager.DestroyPawns", aClass); } + void DestroyTarget() { NativeCall(this, "UCheatManager.DestroyTarget"); } + void DisableDebugCamera() { NativeCall(this, "UCheatManager.DisableDebugCamera"); } + void DumpOnlineSessionState() { NativeCall(this, "UCheatManager.DumpOnlineSessionState"); } + void DumpVoiceMutingState() { NativeCall(this, "UCheatManager.DumpVoiceMutingState"); } + void EnableDebugCamera() { NativeCall(this, "UCheatManager.EnableDebugCamera"); } + void FlushLog() { NativeCall(this, "UCheatManager.FlushLog"); } + void Fly() { NativeCall(this, "UCheatManager.Fly"); } + void FreezeFrame(float delay) { NativeCall(this, "UCheatManager.FreezeFrame", delay); } + UWorld* GetWorld() { return NativeCall(this, "UCheatManager.GetWorld"); } + void Ghost() { NativeCall(this, "UCheatManager.Ghost"); } + void God() { NativeCall(this, "UCheatManager.God"); } + void LogLoc() { NativeCall(this, "UCheatManager.LogLoc"); } + void OnlyLoadLevel(FName PackageName) { NativeCall(this, "UCheatManager.OnlyLoadLevel", PackageName); } + void PlayersOnly() { NativeCall(this, "UCheatManager.PlayersOnly"); } + void RebuildNavigation() { NativeCall(this, "UCheatManager.RebuildNavigation"); } + void SetLevelStreamingStatus(FName PackageName, bool bShouldBeLoaded, bool bShouldBeVisible) { NativeCall(this, "UCheatManager.SetLevelStreamingStatus", PackageName, bShouldBeLoaded, bShouldBeVisible); } + void SetNavDrawDistance(float DrawDistance) { NativeCall(this, "UCheatManager.SetNavDrawDistance", DrawDistance); } + void SetWorldOrigin() { NativeCall(this, "UCheatManager.SetWorldOrigin"); } + void Slomo(float T) { NativeCall(this, "UCheatManager.Slomo", T); } + void StreamLevelIn(FName PackageName) { NativeCall(this, "UCheatManager.StreamLevelIn", PackageName); } + void StreamLevelOut(FName PackageName) { NativeCall(this, "UCheatManager.StreamLevelOut", PackageName); } + void Summon(FString* ClassName) { NativeCall(this, "UCheatManager.Summon", ClassName); } + void Teleport() { NativeCall(this, "UCheatManager.Teleport"); } + void TestCollisionDistance() { NativeCall(this, "UCheatManager.TestCollisionDistance"); } + void ToggleDebugCamera() { NativeCall(this, "UCheatManager.ToggleDebugCamera"); } + void ViewActor(FName ActorName) { NativeCall(this, "UCheatManager.ViewActor", ActorName); } + void ViewClass(TSubclassOf DesiredClass) { NativeCall>(this, "UCheatManager.ViewClass", DesiredClass); } + void ViewPlayer(FString* S) { NativeCall(this, "UCheatManager.ViewPlayer", S); } + void ViewSelf() { NativeCall(this, "UCheatManager.ViewSelf"); } + void Walk() { NativeCall(this, "UCheatManager.Walk"); } + void WidgetReflector() { NativeCall(this, "UCheatManager.WidgetReflector"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UCheatManager.GetPrivateStaticClass", Package); } + void ServerToggleAILogging() { NativeCall(this, "UCheatManager.ServerToggleAILogging"); } + static void StaticRegisterNativesUCheatManager() { NativeCall(nullptr, "UCheatManager.StaticRegisterNativesUCheatManager"); } +}; + +struct UShooterCheatManager : UCheatManager +{ + bool& bIsRCONCheatManagerField() { return *GetNativePointerField(this, "UShooterCheatManager.bIsRCONCheatManager"); } + AShooterPlayerController* MyPCField() { return *GetNativePointerField(this, "UShooterCheatManager.MyPC"); } + + // Functions + + void AddExperience(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.AddExperience", HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void AddShipExperience(float HowMuch) { NativeCall(this, "UShooterCheatManager.AddShipExperience", HowMuch); } + void AllowPlayerToJoinNoCheck(FString* SteamId) { NativeCall(this, "UShooterCheatManager.AllowPlayerToJoinNoCheck", SteamId); } + void BanPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.BanPlayer", PlayerSteamName); } + void BritishEmpire() { NativeCall(this, "UShooterCheatManager.BritishEmpire"); } + void Broadcast(FString* MessageText) { NativeCall(this, "UShooterCheatManager.Broadcast", MessageText); } + void CamZoomIn() { NativeCall(this, "UShooterCheatManager.CamZoomIn"); } + void CamZoomOut() { NativeCall(this, "UShooterCheatManager.CamZoomOut"); } + void ClearAllClaimFlagData() { NativeCall(this, "UShooterCheatManager.ClearAllClaimFlagData"); } + void ClearPlayerInventory(int playerID, bool bClearInventory, bool bClearSlotItems, bool bClearEquippedItems) { NativeCall(this, "UShooterCheatManager.ClearPlayerInventory", playerID, bClearInventory, bClearSlotItems, bClearEquippedItems); } + void ClearTutorials() { NativeCall(this, "UShooterCheatManager.ClearTutorials"); } + void ClusterStatusDump() { NativeCall(this, "UShooterCheatManager.ClusterStatusDump"); } + void CollectNearbyTreasures() { NativeCall(this, "UShooterCheatManager.CollectNearbyTreasures"); } + void CompleteQuest(int QuestID) { NativeCall(this, "UShooterCheatManager.CompleteQuest", QuestID); } + void DestroyActors(FString* ClassName) { NativeCall(this, "UShooterCheatManager.DestroyActors", ClassName); } + void DestroyAllEnemies() { NativeCall(this, "UShooterCheatManager.DestroyAllEnemies"); } + void DestroyAllNonSaddlePlayerStructures() { NativeCall(this, "UShooterCheatManager.DestroyAllNonSaddlePlayerStructures"); } + void DestroyAllStructure() { NativeCall(this, "UShooterCheatManager.DestroyAllStructure"); } + void DestroyAllTames() { NativeCall(this, "UShooterCheatManager.DestroyAllTames"); } + void DestroyMyTarget() { NativeCall(this, "UShooterCheatManager.DestroyMyTarget"); } + void DestroyStructures() { NativeCall(this, "UShooterCheatManager.DestroyStructures"); } + void DestroyTribeDinos() { NativeCall(this, "UShooterCheatManager.DestroyTribeDinos"); } + void DestroyTribeId(int TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeId", TribeTeamID); } + void DestroyTribeIdDinos(unsigned __int64 TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeIdDinos", TribeTeamID); } + void DestroyTribeIdPlayers(__int64 TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeIdPlayers", TribeTeamID); } + void DestroyTribeIdStructures(__int64 TribeTeamID) { NativeCall(this, "UShooterCheatManager.DestroyTribeIdStructures", TribeTeamID); } + void DestroyTribePlayers() { NativeCall(this, "UShooterCheatManager.DestroyTribePlayers"); } + void DestroyTribeStructures() { NativeCall(this, "UShooterCheatManager.DestroyTribeStructures"); } + void DestroyTribeStructuresLessThan(int TribeTeamID, int Connections) { NativeCall(this, "UShooterCheatManager.DestroyTribeStructuresLessThan", TribeTeamID, Connections); } + void DestroyWildDinos() { NativeCall(this, "UShooterCheatManager.DestroyWildDinos"); } + void DetachChar() { NativeCall(this, "UShooterCheatManager.DetachChar"); } + void DisableBeds(bool bDisableBedsOnServer) { NativeCall(this, "UShooterCheatManager.DisableBeds", bDisableBedsOnServer); } + void DisableSpectator() { NativeCall(this, "UShooterCheatManager.DisableSpectator"); } + void DisallowPlayerToJoinNoCheck(FString* SteamId) { NativeCall(this, "UShooterCheatManager.DisallowPlayerToJoinNoCheck", SteamId); } + void DoExit() { NativeCall(this, "UShooterCheatManager.DoExit"); } + void DoLeaveTribe() { NativeCall(this, "UShooterCheatManager.DoLeaveTribe"); } + void DoRestartLevel() { NativeCall(this, "UShooterCheatManager.DoRestartLevel"); } + AActor* DoSummon(FString* ClassName) { return NativeCall(this, "UShooterCheatManager.DoSummon", ClassName); } + void DoTame() { NativeCall(this, "UShooterCheatManager.DoTame"); } + void EnableCheats(FString pass) { NativeCall(this, "UShooterCheatManager.EnableCheats", pass); } + void EnableSpectator() { NativeCall(this, "UShooterCheatManager.EnableSpectator"); } + void EnemyInVisible(bool Invisible) { NativeCall(this, "UShooterCheatManager.EnemyInVisible", Invisible); } + AShooterPlayerController* FindPlayerControllerFromPlayerID(__int64 PlayerID) { return NativeCall(this, "UShooterCheatManager.FindPlayerControllerFromPlayerID", PlayerID); } + void ForcePlayerToJoinTargetTribe(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.ForcePlayerToJoinTargetTribe", PlayerID); } + void ForcePlayerToJoinTribe(__int64 PlayerID, FString TribeName) { NativeCall(this, "UShooterCheatManager.ForcePlayerToJoinTribe", PlayerID, TribeName); } + void ForceRenameMyTribe(FString newTribeName) { NativeCall(this, "UShooterCheatManager.ForceRenameMyTribe", newTribeName); } + void ForceTame() { NativeCall(this, "UShooterCheatManager.ForceTame"); } + void ForceTravelAbort(int nForceAbort) { NativeCall(this, "UShooterCheatManager.ForceTravelAbort", nForceAbort); } + void ForceTribes(FString* PlayerName1, FString* PlayerName2, FString* NewTribeName) { NativeCall(this, "UShooterCheatManager.ForceTribes", PlayerName1, PlayerName2, NewTribeName); } + void GCM() { NativeCall(this, "UShooterCheatManager.GCM"); } + void GCMP(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.GCMP", PlayerID); } + void GCMT() { NativeCall(this, "UShooterCheatManager.GCMT"); } + void GFI(FName* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GFI", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + void GMBuff() { NativeCall(this, "UShooterCheatManager.GMBuff"); } + void GMSummon(FString* ClassName, int Level) { NativeCall(this, "UShooterCheatManager.GMSummon", ClassName, Level); } + void GameCommand(FString* TheCommand) { NativeCall(this, "UShooterCheatManager.GameCommand", TheCommand); } + void GenerateTribePNG(FString tribeID) { NativeCall(this, "UShooterCheatManager.GenerateTribePNG", tribeID); } + void GetChat() { NativeCall(this, "UShooterCheatManager.GetChat"); } + void GetGameLog() { NativeCall(this, "UShooterCheatManager.GetGameLog"); } + void GetNumGlobalShipsForMyTribe() { NativeCall(this, "UShooterCheatManager.GetNumGlobalShipsForMyTribe"); } + void GetPlayerIDForSteamID(int SteamID) { NativeCall(this, "UShooterCheatManager.GetPlayerIDForSteamID", SteamID); } + void GetSteamIDForPlayerID(int PlayerID) { NativeCall(this, "UShooterCheatManager.GetSteamIDForPlayerID", PlayerID); } + void GetTribeIdPlayerList(int TribeID) { NativeCall(this, "UShooterCheatManager.GetTribeIdPlayerList", TribeID); } + void GiveAllDiscoZones() { NativeCall(this, "UShooterCheatManager.GiveAllDiscoZones"); } + void GiveAllStructure() { NativeCall(this, "UShooterCheatManager.GiveAllStructure"); } + void GiveCreativeMode() { NativeCall(this, "UShooterCheatManager.GiveCreativeMode"); } + void GiveCreativeModeToPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.GiveCreativeModeToPlayer", PlayerID); } + void GiveCreativeModeToTarget() { NativeCall(this, "UShooterCheatManager.GiveCreativeModeToTarget"); } + void GiveEngrams() { NativeCall(this, "UShooterCheatManager.GiveEngrams"); } + void GiveExpToPlayer(__int64 PlayerID, float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "UShooterCheatManager.GiveExpToPlayer", PlayerID, HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void GiveFOW() { NativeCall(this, "UShooterCheatManager.GiveFOW"); } + void GiveItem(FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItem", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItemNum(int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemNum", masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItemNumToPlayer(int playerID, int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemNumToPlayer", playerID, masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveItemToPlayer(int playerID, FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { NativeCall(this, "UShooterCheatManager.GiveItemToPlayer", playerID, blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveResources() { NativeCall(this, "UShooterCheatManager.GiveResources"); } + void GiveToMe() { NativeCall(this, "UShooterCheatManager.GiveToMe"); } + void GiveTreasureLoot(float TreasureQuality) { NativeCall(this, "UShooterCheatManager.GiveTreasureLoot", TreasureQuality); } + void GiveTreasureMap(float Quality) { NativeCall(this, "UShooterCheatManager.GiveTreasureMap", Quality); } + void GridTP(FString ServerGrid, float ServerLocalPosX, float ServerLocalPosY, float ServerLocalPosZ) { NativeCall(this, "UShooterCheatManager.GridTP", ServerGrid, ServerLocalPosX, ServerLocalPosY, ServerLocalPosZ); } + void GridTPManual(unsigned __int16 GridX, unsigned __int16 GridY, float ServerLocalPosX, float ServerLocalPosY, float ServerLocalPosZ) { NativeCall(this, "UShooterCheatManager.GridTPManual", GridX, GridY, ServerLocalPosX, ServerLocalPosY, ServerLocalPosZ); } + void GridTravelToGlobalPos(float ToGlobalPosX, float ToGlobalPosY, float ToGlobalPosZ) { NativeCall(this, "UShooterCheatManager.GridTravelToGlobalPos", ToGlobalPosX, ToGlobalPosY, ToGlobalPosZ); } + void GridTravelToLocalPos(unsigned __int16 GridX, unsigned __int16 GridY, float ServerLocalPosX, float ServerLocalPosY, float ServerLocalPosZ) { NativeCall(this, "UShooterCheatManager.GridTravelToLocalPos", GridX, GridY, ServerLocalPosX, ServerLocalPosY, ServerLocalPosZ); } + void GridUTCResetTimeOfDay() { NativeCall(this, "UShooterCheatManager.GridUTCResetTimeOfDay"); } + void HiWarp(FString* ClassName, int Index) { NativeCall(this, "UShooterCheatManager.HiWarp", ClassName, Index); } + void HibernationReport(FString* ClassName) { NativeCall(this, "UShooterCheatManager.HibernationReport", ClassName); } + void HideTutorial(int TutorialInde) { NativeCall(this, "UShooterCheatManager.HideTutorial", TutorialInde); } + void InfiniteAmmo() { NativeCall(this, "UShooterCheatManager.InfiniteAmmo"); } + void InfiniteStats() { NativeCall(this, "UShooterCheatManager.InfiniteStats"); } + void KickPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.KickPlayer", PlayerSteamName); } + void Kill() { NativeCall(this, "UShooterCheatManager.Kill"); } + void KillPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.KillPlayer", PlayerID); } + void LMA() { NativeCall(this, "UShooterCheatManager.LMA"); } + void ListPlayers() { NativeCall(this, "UShooterCheatManager.ListPlayers"); } + void MakeSpooky(FString* ItemsToGive, float SpawnDist, int NumberOfSkeletons) { NativeCall(this, "UShooterCheatManager.MakeSpooky", ItemsToGive, SpawnDist, NumberOfSkeletons); } + void MakeTribeAdmin() { NativeCall(this, "UShooterCheatManager.MakeTribeAdmin"); } + void MakeTribeFounder() { NativeCall(this, "UShooterCheatManager.MakeTribeFounder"); } + void OnToggleInGameMenu() { NativeCall(this, "UShooterCheatManager.OnToggleInGameMenu"); } + void OpenMap(FString* MapName) { NativeCall(this, "UShooterCheatManager.OpenMap", MapName); } + void OutGoingTransfersEnabled(bool bEnabled) { NativeCall(this, "UShooterCheatManager.OutGoingTransfersEnabled", bEnabled); } + void PlayerCommand(FString* TheCommand) { NativeCall(this, "UShooterCheatManager.PlayerCommand", TheCommand); } + void PrintActorLocation(FString* ActorName) { NativeCall(this, "UShooterCheatManager.PrintActorLocation", ActorName); } + void PrintMessageOut(FString* Msg) { NativeCall(this, "UShooterCheatManager.PrintMessageOut", Msg); } + void RefreshTerrityoryUrls() { NativeCall(this, "UShooterCheatManager.RefreshTerrityoryUrls"); } + void ReloadAdminIPs() { NativeCall(this, "UShooterCheatManager.ReloadAdminIPs"); } + void ReloadAdminSteamIDs() { NativeCall(this, "UShooterCheatManager.ReloadAdminSteamIDs"); } + void ReloadTopTribes() { NativeCall(this, "UShooterCheatManager.ReloadTopTribes"); } + void RemoveTribeAdmin() { NativeCall(this, "UShooterCheatManager.RemoveTribeAdmin"); } + void RenamePlayer(FString* PlayerName, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenamePlayer", PlayerName, NewName); } + void RenameTribe(FString* TribeName, FString* NewName) { NativeCall(this, "UShooterCheatManager.RenameTribe", TribeName, NewName); } + void RepopulateServerClaimFlagData() { NativeCall(this, "UShooterCheatManager.RepopulateServerClaimFlagData"); } + void ReportLeastSpawnManagers() { NativeCall(this, "UShooterCheatManager.ReportLeastSpawnManagers"); } + void ReportSpawnManagers() { NativeCall(this, "UShooterCheatManager.ReportSpawnManagers"); } + void RotateTribeLog() { NativeCall(this, "UShooterCheatManager.RotateTribeLog"); } + void RunMoveInChractersOutOfBounds() { NativeCall(this, "UShooterCheatManager.RunMoveInChractersOutOfBounds"); } + void SDF(FName* DinoBlueprintPath, bool bIsTamed) { NativeCall(this, "UShooterCheatManager.SDF", DinoBlueprintPath, bIsTamed); } + void SPI(float X, float Y, float Z, float Yaw, float Pitch) { NativeCall(this, "UShooterCheatManager.SPI", X, Y, Z, Yaw, Pitch); } + void SSF(FString* ShipName) { NativeCall(this, "UShooterCheatManager.SSF", ShipName); } + void SaveWorld() { NativeCall(this, "UShooterCheatManager.SaveWorld"); } + void ScriptCommand(FString* commandString) { NativeCall(this, "UShooterCheatManager.ScriptCommand", commandString); } + void SeamlessSocketTickInterval(float Sec) { NativeCall(this, "UShooterCheatManager.SeamlessSocketTickInterval", Sec); } + void ServerChat(FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChat", MessageText); } + void ServerChatTo(FString* SteamID, FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChatTo", SteamID, MessageText); } + void ServerChatToPlayer(FString* PlayerName, FString* MessageText) { NativeCall(this, "UShooterCheatManager.ServerChatToPlayer", PlayerName, MessageText); } + void SetAdminFastClaiming(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetAdminFastClaiming", bEnable); } + void SetAimMagnetism(float NewMagnetism) { NativeCall(this, "UShooterCheatManager.SetAimMagnetism", NewMagnetism); } + void SetBabyAge(float AgeValue) { NativeCall(this, "UShooterCheatManager.SetBabyAge", AgeValue); } + void SetBodyFat(float BodyFatPercent) { NativeCall(this, "UShooterCheatManager.SetBodyFat", BodyFatPercent); } + void SetCheatXP(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetCheatXP", bEnable); } + bool SetCreativeModeOnPawn(AShooterCharacter* Pawn, bool bCreativeMode) { return NativeCall(this, "UShooterCheatManager.SetCreativeModeOnPawn", Pawn, bCreativeMode); } + void SetDebugMelee(bool Discrete, int DebugMelee) { NativeCall(this, "UShooterCheatManager.SetDebugMelee", Discrete, DebugMelee); } + void SetFacialHairPercent(float thePercent) { NativeCall(this, "UShooterCheatManager.SetFacialHairPercent", thePercent); } + void SetFacialHairstyle(int hairStyleIndex) { NativeCall(this, "UShooterCheatManager.SetFacialHairstyle", hairStyleIndex); } + void SetGlobalPause(bool bIsPaused) { NativeCall(this, "UShooterCheatManager.SetGlobalPause", bIsPaused); } + void SetGodMode(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetGodMode", bEnable); } + void SetGraphicsQuality(int val) { NativeCall(this, "UShooterCheatManager.SetGraphicsQuality", val); } + void SetHeadHairPercent(float thePercent) { NativeCall(this, "UShooterCheatManager.SetHeadHairPercent", thePercent); } + void SetHeadHairstyle(int hairStyleIndex) { NativeCall(this, "UShooterCheatManager.SetHeadHairstyle", hairStyleIndex); } + void SetHomeServer(int PlayerID, unsigned int ServerID) { NativeCall(this, "UShooterCheatManager.SetHomeServer", PlayerID, ServerID); } + void SetIgnoreWind(bool ShouldIgnore) { NativeCall(this, "UShooterCheatManager.SetIgnoreWind", ShouldIgnore); } + void SetImprintQuality(float ImprintQuality) { NativeCall(this, "UShooterCheatManager.SetImprintQuality", ImprintQuality); } + void SetInterpolatedLocation(bool NewValue) { NativeCall(this, "UShooterCheatManager.SetInterpolatedLocation", NewValue); } + void SetMessageOfTheDay(FString* Message) { NativeCall(this, "UShooterCheatManager.SetMessageOfTheDay", Message); } + void SetMyTargetSleeping(bool bIsSleeping) { NativeCall(this, "UShooterCheatManager.SetMyTargetSleeping", bIsSleeping); } + void SetMyTribeAllowRename(bool bAllow) { NativeCall(this, "UShooterCheatManager.SetMyTribeAllowRename", bAllow); } + void SetPlayerNotificationBan(FString AccountID, bool Banned) { NativeCall(this, "UShooterCheatManager.SetPlayerNotificationBan", AccountID, Banned); } + void SetPlayerNotifications(FString AccountID, FString Email, unsigned int EmailCategoryMask, FString Webhook, unsigned int WebhookCategoryMask) { NativeCall(this, "UShooterCheatManager.SetPlayerNotifications", AccountID, Email, EmailCategoryMask, Webhook, WebhookCategoryMask); } + void SetPlayerPos(float X, float Y, float Z) { NativeCall(this, "UShooterCheatManager.SetPlayerPos", X, Y, Z); } + void SetShowAllPlayers(bool bEnable) { NativeCall(this, "UShooterCheatManager.SetShowAllPlayers", bEnable); } + void SetStatusValue(int StatusIndex, float StatusValue) { NativeCall(this, "UShooterCheatManager.SetStatusValue", StatusIndex, StatusValue); } + void SetStepImpulsing(bool NewImpulsing) { NativeCall(this, "UShooterCheatManager.SetStepImpulsing", NewImpulsing); } + void SetTargetDinoColor(int ColorRegion, int ColorID) { NativeCall(this, "UShooterCheatManager.SetTargetDinoColor", ColorRegion, ColorID); } + void SetTargetPlayerColorVal(int ColorValIndex, float ColorVal) { NativeCall(this, "UShooterCheatManager.SetTargetPlayerColorVal", ColorValIndex, ColorVal); } + void SetTimeOfDay(FString* timeString) { NativeCall(this, "UShooterCheatManager.SetTimeOfDay", timeString); } + void SharedLogCleanup(bool bForce) { NativeCall(this, "UShooterCheatManager.SharedLogCleanup", bForce); } + void SharedLogFetch() { NativeCall(this, "UShooterCheatManager.SharedLogFetch"); } + void SharedLogReportLine() { NativeCall(this, "UShooterCheatManager.SharedLogReportLine"); } + void SharedLogSnapshot() { NativeCall(this, "UShooterCheatManager.SharedLogSnapshot"); } + void SharedLogSnapshotAndUpload() { NativeCall(this, "UShooterCheatManager.SharedLogSnapshotAndUpload"); } + void ShowInGameMenu() { NativeCall(this, "UShooterCheatManager.ShowInGameMenu"); } + void ShowMessageOfTheDay() { NativeCall(this, "UShooterCheatManager.ShowMessageOfTheDay"); } + void ShowTutorial(int TutorialIndex, bool bForceDisplay) { NativeCall(this, "UShooterCheatManager.ShowTutorial", TutorialIndex, bForceDisplay); } + void SpawnActor(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnActor", blueprintPath, spawnDistance, spawnYOffset, ZOffset); } + void SpawnActorSpread(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "UShooterCheatManager.SpawnActorSpread", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorSpreadTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "UShooterCheatManager.SpawnActorSpreadTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset) { NativeCall(this, "UShooterCheatManager.SpawnActorTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset); } + void SpawnBrig() { NativeCall(this, "UShooterCheatManager.SpawnBrig"); } + void SpawnDino(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int DinoLevel) { NativeCall(this, "UShooterCheatManager.SpawnDino", blueprintPath, spawnDistance, spawnYOffset, ZOffset, DinoLevel); } + void SpawnFleet(int SpawnCount) { NativeCall(this, "UShooterCheatManager.SpawnFleet", SpawnCount); } + void SpawnFleetEx(FString* ShipName, int SpawnCount, bool bAddDecks, bool bAddSails) { NativeCall(this, "UShooterCheatManager.SpawnFleetEx", ShipName, SpawnCount, bAddDecks, bAddSails); } + void SpawnPathFollowingShip(FString PathName) { NativeCall(this, "UShooterCheatManager.SpawnPathFollowingShip", PathName); } + void SpawnShip(FString* blueprintPathShip, FString* blueprintPathHull, float spawnDist, bool bAddDecks, bool bAddSails, bool bAutoPilotShip) { NativeCall(this, "UShooterCheatManager.SpawnShip", blueprintPathShip, blueprintPathHull, spawnDist, bAddDecks, bAddSails, bAutoPilotShip); } + void SpawnShipFast(FString* ShipName, float SpawnDist, bool bAddDecks, bool bAddSails, bool bAutoPilotShip) { NativeCall(this, "UShooterCheatManager.SpawnShipFast", ShipName, SpawnDist, bAddDecks, bAddSails, bAutoPilotShip); } + void SpawnShipFastEx(FString* ShipBPName, FString* HullBPName, bool bAddDecks, bool bAddSails) { NativeCall(this, "UShooterCheatManager.SpawnShipFastEx", ShipBPName, HullBPName, bAddDecks, bAddSails); } + void SpawnWorldActor(FString* blueprintPath, float x, float y) { NativeCall(this, "UShooterCheatManager.SpawnWorldActor", blueprintPath, x, y); } + void StartSaveBackup() { NativeCall(this, "UShooterCheatManager.StartSaveBackup"); } + void StartWildDinos() { NativeCall(this, "UShooterCheatManager.StartWildDinos"); } + void StopWildDinos() { NativeCall(this, "UShooterCheatManager.StopWildDinos"); } + void StressTestShip(int Ship, int X, int Y, float TimeToLive, float SpeedMultiplier) { NativeCall(this, "UShooterCheatManager.StressTestShip", Ship, X, Y, TimeToLive, SpeedMultiplier); } + void StressTestTravel() { NativeCall(this, "UShooterCheatManager.StressTestTravel"); } + void StressTestTravelStartLoop(float IntervalSec) { NativeCall(this, "UShooterCheatManager.StressTestTravelStartLoop", IntervalSec); } + void Suicide() { NativeCall(this, "UShooterCheatManager.Suicide"); } + void Summon(FString* ClassName) { NativeCall(this, "UShooterCheatManager.Summon", ClassName); } + void SummonTamed(FString* ClassName) { NativeCall(this, "UShooterCheatManager.SummonTamed", ClassName); } + void TP(FString LocationName) { NativeCall(this, "UShooterCheatManager.TP", LocationName); } + void TakeAllDino() { NativeCall(this, "UShooterCheatManager.TakeAllDino"); } + void TakeAllStructure() { NativeCall(this, "UShooterCheatManager.TakeAllStructure"); } + void TeleportPlayerIDToMe(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.TeleportPlayerIDToMe", PlayerID); } + void TeleportPlayerNameToMe(FString* PlayerName) { NativeCall(this, "UShooterCheatManager.TeleportPlayerNameToMe", PlayerName); } + void TeleportToActorLocation(FString* ActorName) { NativeCall(this, "UShooterCheatManager.TeleportToActorLocation", ActorName); } + void TeleportToPlayer(__int64 PlayerID) { NativeCall(this, "UShooterCheatManager.TeleportToPlayer", PlayerID); } + void TeleportToTreasure() { NativeCall(this, "UShooterCheatManager.TeleportToTreasure"); } + void ToggleGun() { NativeCall(this, "UShooterCheatManager.ToggleGun"); } + void ToggleHud() { NativeCall(this, "UShooterCheatManager.ToggleHud"); } + void ToggleLocation() { NativeCall(this, "UShooterCheatManager.ToggleLocation"); } + void TribeMOTD(__int64 TribeTeamID, FString Message) { NativeCall(this, "UShooterCheatManager.TribeMOTD", TribeTeamID, Message); } + void TribeMessage(__int64 TribeTeamID, FString Message) { NativeCall(this, "UShooterCheatManager.TribeMessage", TribeTeamID, Message); } + void TribeMessageNoNotification(__int64 TribeTeamID, FString Message) { NativeCall(this, "UShooterCheatManager.TribeMessageNoNotification", TribeTeamID, Message); } + void TribeStructureAudit(__int64 TribeTeamID) { NativeCall(this, "UShooterCheatManager.TribeStructureAudit", TribeTeamID); } + void UnbanPlayer(FString PlayerSteamName) { NativeCall(this, "UShooterCheatManager.UnbanPlayer", PlayerSteamName); } + void UnlockEngram(FString* ItemClassName) { NativeCall(this, "UShooterCheatManager.UnlockEngram", ItemClassName); } + void VisualizeClass(FString* ClassIn, int MaxTotal) { NativeCall(this, "UShooterCheatManager.VisualizeClass", ClassIn, MaxTotal); } + void psc(FString* command) { NativeCall(this, "UShooterCheatManager.psc", command); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UShooterCheatManager.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUShooterCheatManager() { NativeCall(nullptr, "UShooterCheatManager.StaticRegisterNativesUShooterCheatManager"); } +}; + +struct UPlayer +{ + APlayerController* PlayerControllerField() { return *GetNativePointerField(this, "UPlayer.PlayerController"); } + int& CurrentNetSpeedField() { return *GetNativePointerField(this, "UPlayer.CurrentNetSpeed"); } + int& ConfiguredInternetSpeedField() { return *GetNativePointerField(this, "UPlayer.ConfiguredInternetSpeed"); } + int& ConfiguredLanSpeedField() { return *GetNativePointerField(this, "UPlayer.ConfiguredLanSpeed"); } + unsigned __int64& TransferringPlayerDataIdField() { return *GetNativePointerField(this, "UPlayer.TransferringPlayerDataId"); } + + // Functions + + void SwitchController(APlayerController* PC) { NativeCall(this, "UPlayer.SwitchController", PC); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPlayer.GetPrivateStaticClass", Package); } +}; + +struct APlayerState : AActor +{ + float& ScoreField() { return *GetNativePointerField(this, "APlayerState.Score"); } + char& PingField() { return *GetNativePointerField(this, "APlayerState.Ping"); } + FString& PlayerNameField() { return *GetNativePointerField(this, "APlayerState.PlayerName"); } + FString& OldNameField() { return *GetNativePointerField(this, "APlayerState.OldName"); } + int& PlayerIdField() { return *GetNativePointerField(this, "APlayerState.PlayerId"); } + int& StartTimeField() { return *GetNativePointerField(this, "APlayerState.StartTime"); } + float& ExactPingField() { return *GetNativePointerField(this, "APlayerState.ExactPing"); } + FString& SavedNetworkAddressField() { return *GetNativePointerField(this, "APlayerState.SavedNetworkAddress"); } + FUniqueNetIdRepl& UniqueIdField() { return *GetNativePointerField(this, "APlayerState.UniqueId"); } + FName& SessionNameField() { return *GetNativePointerField(this, "APlayerState.SessionName"); } + char& CurPingBucketField() { return *GetNativePointerField(this, "APlayerState.CurPingBucket"); } + float& CurPingBucketTimestampField() { return *GetNativePointerField(this, "APlayerState.CurPingBucketTimestamp"); } + + // Bit fields + + BitFieldValue bIsSpectator() { return { this, "APlayerState.bIsSpectator" }; } + BitFieldValue bOnlySpectator() { return { this, "APlayerState.bOnlySpectator" }; } + BitFieldValue bIsABot() { return { this, "APlayerState.bIsABot" }; } + BitFieldValue bHasBeenWelcomed() { return { this, "APlayerState.bHasBeenWelcomed" }; } + BitFieldValue bIsInactive() { return { this, "APlayerState.bIsInactive" }; } + BitFieldValue bFromPreviousLevel() { return { this, "APlayerState.bFromPreviousLevel" }; } + + // Functions + + void ClientInitialize(AController* C) { NativeCall(this, "APlayerState.ClientInitialize", C); } + void CopyProperties(APlayerState* PlayerState) { NativeCall(this, "APlayerState.CopyProperties", PlayerState); } + void Destroyed() { NativeCall(this, "APlayerState.Destroyed"); } + APlayerState* Duplicate() { return NativeCall(this, "APlayerState.Duplicate"); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "APlayerState.GetHumanReadableName", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } + void OnRep_PlayerName() { NativeCall(this, "APlayerState.OnRep_PlayerName"); } + void OnRep_UniqueId() { NativeCall(this, "APlayerState.OnRep_UniqueId"); } + void OnRep_bIsInactive() { NativeCall(this, "APlayerState.OnRep_bIsInactive"); } + void OverrideWith(APlayerState* PlayerState) { NativeCall(this, "APlayerState.OverrideWith", PlayerState); } + void PostInitializeComponents() { NativeCall(this, "APlayerState.PostInitializeComponents"); } + void RecalculateAvgPing() { NativeCall(this, "APlayerState.RecalculateAvgPing"); } + void RegisterPlayerWithSession(bool bWasFromInvite) { NativeCall(this, "APlayerState.RegisterPlayerWithSession", bWasFromInvite); } + void Reset() { NativeCall(this, "APlayerState.Reset"); } + void SeamlessTravelTo(APlayerState* NewPlayerState) { NativeCall(this, "APlayerState.SeamlessTravelTo", NewPlayerState); } + void SetPlayerName(FString* S) { NativeCall(this, "APlayerState.SetPlayerName", S); } + void SetUniqueId(TSharedPtr* InUniqueId) { NativeCall*>(this, "APlayerState.SetUniqueId", InUniqueId); } + bool ShouldBroadCastWelcomeMessage(bool bExiting) { return NativeCall(this, "APlayerState.ShouldBroadCastWelcomeMessage", bExiting); } + void UnregisterPlayerWithSession() { NativeCall(this, "APlayerState.UnregisterPlayerWithSession"); } + void UpdatePing(float InPing) { NativeCall(this, "APlayerState.UpdatePing", InPing); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APlayerState.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesAPlayerState() { NativeCall(nullptr, "APlayerState.StaticRegisterNativesAPlayerState"); } +}; + +struct AShooterPlayerState : APlayerState +{ + UPrimalPlayerData* MyPlayerDataField() { return *GetNativePointerField(this, "AShooterPlayerState.MyPlayerData"); } + FPrimalPlayerDataStruct* MyPlayerDataStructField() { return GetNativePointerField(this, "AShooterPlayerState.MyPlayerDataStruct"); } + FieldArray, 10> DefaultItemSlotClassesField() { return { this, "AShooterPlayerState.DefaultItemSlotClasses" }; } + FieldArray, 10> FeatHotkeysField() { return { this, "AShooterPlayerState.FeatHotkeys" }; } + FieldArray DefaultItemSlotEngramsField() { return { this, "AShooterPlayerState.DefaultItemSlotEngrams" }; } + FTribeData& NullTribeDataField() { return *GetNativePointerField(this, "AShooterPlayerState.NullTribeData"); } + FTribeData* CurrentTribeDataPtrField() { return *GetNativePointerField(this, "AShooterPlayerState.CurrentTribeDataPtr"); } + FTribeData* LastTribeInviteDataField() { return GetNativePointerField(this, "AShooterPlayerState.LastTribeInviteData"); } + long double& ReplicatePlayerDataUntilTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.ReplicatePlayerDataUntilTime"); } + long double& ReplicateSkillsUntilTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.ReplicateSkillsUntilTime"); } + int& LastTribeDataChangedFrameField() { return *GetNativePointerField(this, "AShooterPlayerState.LastTribeDataChangedFrame"); } + bool& bSendSpawnPointsField() { return *GetNativePointerField(this, "AShooterPlayerState.bSendSpawnPoints"); } + TArray& CachedSpawnPointInfosField() { return *GetNativePointerField*>(this, "AShooterPlayerState.CachedSpawnPointInfos"); } + TArray DiscoveryZoneEntryObjectsField() { return *GetNativePointerField*>(this, "AShooterPlayerState.DiscoveryZoneEntryObjects"); } + int& TotalEngramPointsField() { return *GetNativePointerField(this, "AShooterPlayerState.TotalEngramPoints"); } + int& FreeEngramPointsField() { return *GetNativePointerField(this, "AShooterPlayerState.FreeEngramPoints"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ServerEngramItemBlueprintsSetField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerState.ServerEngramItemBlueprintsSet"); } + TArray>& UnlockedSkillsField() { return *GetNativePointerField>*>(this, "AShooterPlayerState.UnlockedSkills"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ServerUnlockedSkillsSetField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerState.ServerUnlockedSkillsSet"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& UnlockedFeatsSetField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerState.UnlockedFeatsSet"); } + long double& NextAllowedRespawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.NextAllowedRespawnTime"); } + float& AllowedRespawnIntervalField() { return *GetNativePointerField(this, "AShooterPlayerState.AllowedRespawnInterval"); } + long double& LastTimeDiedToEnemyTeamField() { return *GetNativePointerField(this, "AShooterPlayerState.LastTimeDiedToEnemyTeam"); } + bool& bSuppressEngramNetworkingField() { return *GetNativePointerField(this, "AShooterPlayerState.bSuppressEngramNetworking"); } + int& CurrentlySelectedDinoOrderGroupField() { return *GetNativePointerField(this, "AShooterPlayerState.CurrentlySelectedDinoOrderGroup"); } + FTameUnitCounts& CurrentTameUnitCountsField() { return *GetNativePointerField(this, "AShooterPlayerState.CurrentTameUnitCounts"); } + long double& NextAllowedTerritoryMessageTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.NextAllowedTerritoryMessageTime"); } + long double& NextAllowedTribeJoinTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.NextAllowedTribeJoinTime"); } + FieldArray DinoOrderGroupsField() { return { this, "AShooterPlayerState.DinoOrderGroups" }; } + TArray KnownCraftableItemsField() { return *GetNativePointerField*>(this, "AShooterPlayerState.KnownCraftableItems"); } + bool& bUpdatingClientEntityLocsField() { return *GetNativePointerField(this, "AShooterPlayerState.bUpdatingClientEntityLocs"); } + long double& LastTribeRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerState.LastTribeRequestTime"); } + + // Bit fields + + BitFieldValue bQuitter() { return { this, "AShooterPlayerState.bQuitter" }; } + + // Functions + + void AcceptJoinAlliance(unsigned int AllianceID, unsigned int NewMemberID, FString NewMemberName) { NativeCall(this, "AShooterPlayerState.AcceptJoinAlliance", AllianceID, NewMemberID, NewMemberName); } + void AddEngramBlueprintToPlayerInventory(UPrimalInventoryComponent* invComp, TSubclassOf engramItemBlueprint) { NativeCall>(this, "AShooterPlayerState.AddEngramBlueprintToPlayerInventory", invComp, engramItemBlueprint); } + bool AddToTribe(FTribeData* MyNewTribe, bool bMergeTribe, bool bForce, bool bIsFromInvite, APlayerController* InviterPC) { return NativeCall(this, "AShooterPlayerState.AddToTribe", MyNewTribe, bMergeTribe, bForce, bIsFromInvite, InviterPC); } + bool AllowDinoOrderByGroup(APrimalDinoCharacter* orderDino) { return NativeCall(this, "AShooterPlayerState.AllowDinoOrderByGroup", orderDino); } + bool AllowTribeGroupPermission(ETribeGroupPermission::Type TribeGroupPermission, UObject* OnObject) { return NativeCall(this, "AShooterPlayerState.AllowTribeGroupPermission", TribeGroupPermission, OnObject); } + void ApplyEngramBuffs(AShooterCharacter* myChar, AShooterPlayerController* OverridePC) { NativeCall(this, "AShooterPlayerState.ApplyEngramBuffs", myChar, OverridePC); } + void ApplyEngramStatModifiers(AShooterCharacter* myChar) { NativeCall(this, "AShooterPlayerState.ApplyEngramStatModifiers", myChar); } + void BeginPlay() { NativeCall(this, "AShooterPlayerState.BeginPlay"); } + void BroadcastDeath_Implementation(AShooterPlayerState* KillerPlayerState, UDamageType* KillerDamageType, AShooterPlayerState* KilledPlayerState) { NativeCall(this, "AShooterPlayerState.BroadcastDeath_Implementation", KillerPlayerState, KillerDamageType, KilledPlayerState); } + void ClearKnownCraftables() { NativeCall(this, "AShooterPlayerState.ClearKnownCraftables"); } + void ClearTribe(bool bDontRemoveFromTribe, bool bForce, APlayerController* ForPC) { NativeCall(this, "AShooterPlayerState.ClearTribe", bDontRemoveFromTribe, bForce, ForPC); } + void ClearTribeBasic() { NativeCall(this, "AShooterPlayerState.ClearTribeBasic"); } + void ClientGetPlayerBannedData_Implementation(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerBannedData_Implementation", list); } + void ClientGetPlayerConnectedData_Implementation(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerConnectedData_Implementation", list); } + void ClientGetPlayerWhiteListedData_Implementation(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerWhiteListedData_Implementation", list); } + void ClientGetServerOptions_Implementation(FServerOptions info) { NativeCall(this, "AShooterPlayerState.ClientGetServerOptions_Implementation", info); } + void ClientInitialize(AController* InController) { NativeCall(this, "AShooterPlayerState.ClientInitialize", InController); } + void ClientNotifyLevelUpAvailable_Implementation() { NativeCall(this, "AShooterPlayerState.ClientNotifyLevelUpAvailable_Implementation"); } + void ClientReceiveAvailableEntities_Implementation(TArray* AvailableEntities) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveAvailableEntities_Implementation", AvailableEntities); } + void ClientReceivePartialSpawnPointUpdates_Implementation(TArray* SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceivePartialSpawnPointUpdates_Implementation", SpawnPointsInfos); } + void ClientReceiveSpawnPoints_Implementation(TArray* SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveSpawnPoints_Implementation", SpawnPointsInfos); } + void ClientRefreshDinoOrderGroup_Implementation(int groupIndex, FDinoOrderGroup groupData, int UseCurrentlySelectedGroup) { NativeCall(this, "AShooterPlayerState.ClientRefreshDinoOrderGroup_Implementation", groupIndex, groupData, UseCurrentlySelectedGroup); } + void ClientUnlockedFeat_Implementation(FName FeatName) { NativeCall(this, "AShooterPlayerState.ClientUnlockedFeat_Implementation", FeatName); } + void ClientUpdateTameUnitCounts_Implementation(FTameUnitCounts NewTameUnitCounts) { NativeCall(this, "AShooterPlayerState.ClientUpdateTameUnitCounts_Implementation", NewTameUnitCounts); } + void CompletePointOfInterest(int PointOfInterestID) { NativeCall(this, "AShooterPlayerState.CompletePointOfInterest", PointOfInterestID); } + void CompleteQuest(int QuestID) { NativeCall(this, "AShooterPlayerState.CompleteQuest", QuestID); } + void CopyProperties(APlayerState* PlayerState) { NativeCall(this, "AShooterPlayerState.CopyProperties", PlayerState); } + void Destroyed() { NativeCall(this, "AShooterPlayerState.Destroyed"); } + void DoRespec(UPrimalPlayerData* ForPlayerData, AShooterCharacter* ForCharacter, bool bSetRespecedAtCharacterLevel) { NativeCall(this, "AShooterPlayerState.DoRespec", ForPlayerData, ForCharacter, bSetRespecedAtCharacterLevel); } + int GetCharacterLevel() { return NativeCall(this, "AShooterPlayerState.GetCharacterLevel"); } + FString* GetDinoOrderGroupName(FString* result, int groupIndex) { return NativeCall(this, "AShooterPlayerState.GetDinoOrderGroupName", result, groupIndex); } + int GetGlobalNumOfShipsForTribe() { return NativeCall(this, "AShooterPlayerState.GetGlobalNumOfShipsForTribe"); } + UPrimalItem* GetItemForUnlockedFeat(AShooterCharacter* myChar, TSubclassOf FeatClass) { return NativeCall>(this, "AShooterPlayerState.GetItemForUnlockedFeat", myChar, FeatClass); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterPlayerState.GetLifetimeReplicatedProps", OutLifetimeProps); } + FString* GetLongPlayerName(FString* result) { return NativeCall(this, "AShooterPlayerState.GetLongPlayerName", result); } + int GetNumDiscoveryZonesFound() { return NativeCall(this, "AShooterPlayerState.GetNumDiscoveryZonesFound"); } + int GetNumDiscoveryZonesFoundInServer(const unsigned int* ServerID) { return NativeCall(this, "AShooterPlayerState.GetNumDiscoveryZonesFoundInServer", ServerID); } + int GetNumDiscoveryZonesInServer(const unsigned int* ServerID) { return NativeCall(this, "AShooterPlayerState.GetNumDiscoveryZonesInServer", ServerID); } + int GetNumDiscoveryZonesTotal() { return NativeCall(this, "AShooterPlayerState.GetNumDiscoveryZonesTotal"); } + FString* GetPlayerName(FString* result) { return NativeCall(this, "AShooterPlayerState.GetPlayerName", result); } + FString* GetPlayerOrTribeName(FString* result) { return NativeCall(this, "AShooterPlayerState.GetPlayerOrTribeName", result); } + AShooterPlayerController* GetShooterController() { return NativeCall(this, "AShooterPlayerState.GetShooterController"); } + float GetTameUnitCount(ETameUnitType::Type TheTameUnitType) { return NativeCall(this, "AShooterPlayerState.GetTameUnitCount", TheTameUnitType); } + int GetTribeId() { return NativeCall(this, "AShooterPlayerState.GetTribeId"); } + FTribeWar* GetTribeWar(FTribeWar* result, int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.GetTribeWar", result, EnemyTeam); } + UObject* GetObjectW() { return NativeCall(this, "AShooterPlayerState.GetObjectW"); } + FString* GetUniqueIdString(FString* result) { return NativeCall(this, "AShooterPlayerState.GetUniqueIdString", result); } + bool HasCompletedQuest(int QuestID) { return NativeCall(this, "AShooterPlayerState.HasCompletedQuest", QuestID); } + bool HasCompletedQuestPointOfInterest(int PointOfInterestID) { return NativeCall(this, "AShooterPlayerState.HasCompletedQuestPointOfInterest", PointOfInterestID); } + bool HasDefaultExtraInventoryItem(TSubclassOf ItemClass) { return NativeCall>(this, "AShooterPlayerState.HasDefaultExtraInventoryItem", ItemClass); } + bool HasDiscipline(EEngramDiscipline::Type ForDiscipline) { return NativeCall(this, "AShooterPlayerState.HasDiscipline", ForDiscipline); } + bool HasDiscoveredDiscoveryZone(int ZoneId) { return NativeCall(this, "AShooterPlayerState.HasDiscoveredDiscoveryZone", ZoneId); } + bool HasEngram(TSubclassOf ItemClass) { return NativeCall>(this, "AShooterPlayerState.HasEngram", ItemClass); } + bool HasSkill(TSubclassOf SkillClass) { return NativeCall>(this, "AShooterPlayerState.HasSkill", SkillClass); } + bool HasTribeWarRequest(int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.HasTribeWarRequest", EnemyTeam); } + void InitializeDiscoveryZoneEntryObjects() { NativeCall(this, "AShooterPlayerState.InitializeDiscoveryZoneEntryObjects"); } + void InvitedRankGroupPlayerIntoTribe(AShooterPlayerState* OtherPlayer) { NativeCall(this, "AShooterPlayerState.InvitedRankGroupPlayerIntoTribe", OtherPlayer); } + bool IsAlliedWith(int OtherTeam) { return NativeCall(this, "AShooterPlayerState.IsAlliedWith", OtherTeam); } + bool IsDinoClassInOrderGroup(int groupIndex, TSubclassOf dinoClass) { return NativeCall>(this, "AShooterPlayerState.IsDinoClassInOrderGroup", groupIndex, dinoClass); } + bool IsDinoInOrderGroup(int groupIndex, APrimalDinoCharacter* dinoChar) { return NativeCall(this, "AShooterPlayerState.IsDinoInOrderGroup", groupIndex, dinoChar); } + bool IsInTribe() { return NativeCall(this, "AShooterPlayerState.IsInTribe"); } + bool IsInTribeWar(int EnemyTeam) { return NativeCall(this, "AShooterPlayerState.IsInTribeWar", EnemyTeam); } + bool IsTribeAdmin() { return NativeCall(this, "AShooterPlayerState.IsTribeAdmin"); } + bool IsTribeFounder() { return NativeCall(this, "AShooterPlayerState.IsTribeFounder"); } + bool IsTribeOwner(unsigned int CheckPlayerDataID) { return NativeCall(this, "AShooterPlayerState.IsTribeOwner", CheckPlayerDataID); } + void LocalDoUpdateTribeEntityLocs() { NativeCall(this, "AShooterPlayerState.LocalDoUpdateTribeEntityLocs"); } + void LocalSetSelectedDinoOrderGroup(int newGroup, bool bDontToggle) { NativeCall(this, "AShooterPlayerState.LocalSetSelectedDinoOrderGroup", newGroup, bDontToggle); } + void NotifyPlayerJoinedTribe_Implementation(FString* ThePlayerName, FString* TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe_Implementation", ThePlayerName, TribeName); } + void NotifyPlayerJoined_Implementation(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined_Implementation", ThePlayerName); } + void NotifyPlayerLeftTribe_Implementation(FString* ThePlayerName, FString* TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe_Implementation", ThePlayerName, TribeName); } + void NotifyPlayerLeft_Implementation(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft_Implementation", ThePlayerName); } + void NotifyTribememberJoined_Implementation(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined_Implementation", ThePlayerName); } + void NotifyTribememberLeft_Implementation(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft_Implementation", ThePlayerName); } + void OnRep_MyPlayerDataStruct() { NativeCall(this, "AShooterPlayerState.OnRep_MyPlayerDataStruct"); } + void OnRep_UpdatedSkills() { NativeCall(this, "AShooterPlayerState.OnRep_UpdatedSkills"); } + void PromoteToTribeAdmin(APlayerController* PromoterPC) { NativeCall(this, "AShooterPlayerState.PromoteToTribeAdmin", PromoterPC); } + void ReceivedPlayerCharacter(AShooterCharacter* NewPawn) { NativeCall(this, "AShooterPlayerState.ReceivedPlayerCharacter", NewPawn); } + void RequestCreateNewPlayerWithArkData(UPrimalPlayerData* PlayerArkData) { NativeCall(this, "AShooterPlayerState.RequestCreateNewPlayerWithArkData", PlayerArkData); } + void Reset() { NativeCall(this, "AShooterPlayerState.Reset"); } + void ResetPlayerDataBornAtTime() { NativeCall(this, "AShooterPlayerState.ResetPlayerDataBornAtTime"); } + void SendAvailableEntitiesFromAllServersToClient(TArray* AvailableEntitiesFromOtherServers, int IgnoreBedID) { NativeCall*, int>(this, "AShooterPlayerState.SendAvailableEntitiesFromAllServersToClient", AvailableEntitiesFromOtherServers, IgnoreBedID); } + void SendTribeInviteData_Implementation(FTribeData TribeInviteData) { NativeCall(this, "AShooterPlayerState.SendTribeInviteData_Implementation", TribeInviteData); } + void ServerAcceptTribeWar_Implementation(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerAcceptTribeWar_Implementation", EnemyTeamID); } + void ServerDeclareTribeWar_Implementation(int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime) { NativeCall(this, "AShooterPlayerState.ServerDeclareTribeWar_Implementation", EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime); } + void ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation(int groupIndex, APrimalDinoCharacter* DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter_Implementation", groupIndex, DinoCharacter, bAdd); } + void ServerDinoOrderGroup_AddOrRemoveDinoClass_Implementation(int groupIndex, TSubclassOf DinoClass, bool bAdd) { NativeCall, bool>(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoClass_Implementation", groupIndex, DinoClass, bAdd); } + void ServerDinoOrderGroup_Clear_Implementation(int groupIndex, bool bClearClasses, bool bClearChars) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_Clear_Implementation", groupIndex, bClearClasses, bClearChars); } + void ServerDinoOrderGroup_RemoveEntryByIndex_Implementation(int groupIndex, bool bIsClass, int entryIndex) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_RemoveEntryByIndex_Implementation", groupIndex, bIsClass, entryIndex); } + void ServerGetAlivePlayerConnectedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetAlivePlayerConnectedData_Implementation"); } + void ServerGetAllPlayerNamesAndLocations_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetAllPlayerNamesAndLocations_Implementation"); } + void ServerGetPlayerBannedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerBannedData_Implementation"); } + void ServerGetPlayerConnectedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerConnectedData_Implementation"); } + void ServerGetPlayerWhiteListedData_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerWhiteListedData_Implementation"); } + void ServerGetServerOptions_Implementation() { NativeCall(this, "AShooterPlayerState.ServerGetServerOptions_Implementation"); } + void ServerRejectTribeWar_Implementation(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerRejectTribeWar_Implementation", EnemyTeamID); } + void ServerRequestApplyEngramPoints_Implementation(TSubclassOf forItemEntry, EEngramDiscipline::Type ForDiscipline) { NativeCall, EEngramDiscipline::Type>(this, "AShooterPlayerState.ServerRequestApplyEngramPoints_Implementation", forItemEntry, ForDiscipline); } + void ServerRequestCreateNewTribe_Implementation(FString* TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe_Implementation", TribeName, TribeGovernment); } + void ServerRequestDemotePlayerInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestDemotePlayerInMyTribe_Implementation", PlayerIndexInTribe); } + void ServerRequestDinoOrderGroups_Implementation() { NativeCall(this, "AShooterPlayerState.ServerRequestDinoOrderGroups_Implementation"); } + void ServerRequestLeaveAlliance_Implementation(unsigned int AllianceID) { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveAlliance_Implementation", AllianceID); } + void ServerRequestLeaveTribe_Implementation() { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveTribe_Implementation"); } + void ServerRequestMySpawnPoints_Implementation(unsigned int IgnoreBedID, TSubclassOf FilterClass) { NativeCall>(this, "AShooterPlayerState.ServerRequestMySpawnPoints_Implementation", IgnoreBedID, FilterClass); } + void ServerRequestPartialSpawnPointUpdate_Implementation(unsigned int EntityID) { NativeCall(this, "AShooterPlayerState.ServerRequestPartialSpawnPointUpdate_Implementation", EntityID); } + void ServerRequestPromoteAllianceMember_Implementation(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestPromoteAllianceMember_Implementation", AllianceID, MemberID); } + void ServerRequestPromotePlayerInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestPromotePlayerInMyTribe_Implementation", PlayerIndexInTribe); } + void ServerRequestRemoveAllianceMember_Implementation(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestRemoveAllianceMember_Implementation", AllianceID, MemberID); } + void ServerRequestRemovePlayerIndexFromMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRemovePlayerIndexFromMyTribe_Implementation", PlayerIndexInTribe); } + void ServerRequestRenameTribe_Implementation(FString* newTribeName) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe_Implementation", newTribeName); } + void ServerRequestResetPlayer_Implementation() { NativeCall(this, "AShooterPlayerState.ServerRequestResetPlayer_Implementation"); } + void ServerRequestSetTribeGovernment_Implementation(FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeGovernment_Implementation", TribeGovernment); } + void ServerRequestSetTribeMemberGroupRank_Implementation(int PlayerIndexInTribe, int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeMemberGroupRank_Implementation", PlayerIndexInTribe, RankGroupIndex); } + void ServerRequestTransferOwnershipInMyTribe_Implementation(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestTransferOwnershipInMyTribe_Implementation", PlayerIndexInTribe); } + void ServerSetDefaultItemSlotClass_Implementation(int slotNum, TSubclassOf ItemClass, bool bIsEngram) { NativeCall, bool>(this, "AShooterPlayerState.ServerSetDefaultItemSlotClass_Implementation", slotNum, ItemClass, bIsEngram); } + void ServerSetDinoGroupName_Implementation(int groupIndex, FString* GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName_Implementation", groupIndex, GroupName); } + void ServerSetFeatHotkey_Implementation(int slotNum, TSubclassOf FeatClass) { NativeCall>(this, "AShooterPlayerState.ServerSetFeatHotkey_Implementation", slotNum, FeatClass); } + void ServerSetSelectedDinoOrderGroup_Implementation(int newGroup) { NativeCall(this, "AShooterPlayerState.ServerSetSelectedDinoOrderGroup_Implementation", newGroup); } + void ServerSetTribeMOTD_Implementation(FString* MOTD) { NativeCall(this, "AShooterPlayerState.ServerSetTribeMOTD_Implementation", MOTD); } + void ServerTribeRequestAddRankGroup_Implementation(FString* GroupName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestAddRankGroup_Implementation", GroupName); } + void ServerTribeRequestApplyRankGroupSettings_Implementation(int RankGroupIndex, FTribeRankGroup newGroupSettings) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestApplyRankGroupSettings_Implementation", RankGroupIndex, newGroupSettings); } + void ServerTribeRequestNewAlliance_Implementation(FString* AllianceName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestNewAlliance_Implementation", AllianceName); } + void ServerTribeRequestRemoveRankGroup_Implementation(int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestRemoveRankGroup_Implementation", RankGroupIndex); } + void ServerUnlockEngram(TSubclassOf forItemEntry, bool bNotifyPlayerHUD, bool bForceUnlock, EEngramDiscipline::Type ForDiscipline) { NativeCall, bool, bool, EEngramDiscipline::Type>(this, "AShooterPlayerState.ServerUnlockEngram", forItemEntry, bNotifyPlayerHUD, bForceUnlock, ForDiscipline); } + void SetQuitter(bool bInQuitter) { NativeCall(this, "AShooterPlayerState.SetQuitter", bInQuitter); } + void SetTribeTamingDinoSettings(APrimalDinoCharacter* aDinoChar) { NativeCall(this, "AShooterPlayerState.SetTribeTamingDinoSettings", aDinoChar); } + void TargetingTeamChanged() { NativeCall(this, "AShooterPlayerState.TargetingTeamChanged"); } + void TransferTribalObjects(FTribeData* TribeData, bool bTransferToTribe, bool bDontIncludePlayers) { NativeCall(this, "AShooterPlayerState.TransferTribalObjects", TribeData, bTransferToTribe, bDontIncludePlayers); } + void UnregisterPlayerWithSession() { NativeCall(this, "AShooterPlayerState.UnregisterPlayerWithSession"); } + void UpdateFeatSet(AShooterCharacter* myChar) { NativeCall(this, "AShooterPlayerState.UpdateFeatSet", myChar); } + void UpdateServerFullStatus() { NativeCall(this, "AShooterPlayerState.UpdateServerFullStatus"); } + void UpdateTameCounts() { NativeCall(this, "AShooterPlayerState.UpdateTameCounts"); } + void UpdateTribeData(FTribeData* TribeData) { NativeCall(this, "AShooterPlayerState.UpdateTribeData", TribeData); } + void UpdatedPlayerData() { NativeCall(this, "AShooterPlayerState.UpdatedPlayerData"); } + void UpdatedSkills(AShooterCharacter* myChar, AShooterPlayerController* OverridePC) { NativeCall(this, "AShooterPlayerState.UpdatedSkills", myChar, OverridePC); } + void BroadcastDeath(AShooterPlayerState* KillerPlayerState, UDamageType* KillerDamageType, AShooterPlayerState* KilledPlayerState) { NativeCall(this, "AShooterPlayerState.BroadcastDeath", KillerPlayerState, KillerDamageType, KilledPlayerState); } + void ClientGetPlayerBannedData(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerBannedData", list); } + void ClientGetPlayerConnectedData(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerConnectedData", list); } + void ClientGetPlayerWhiteListedData(TArray* list) { NativeCall*>(this, "AShooterPlayerState.ClientGetPlayerWhiteListedData", list); } + void ClientGetServerOptions(FServerOptions info) { NativeCall(this, "AShooterPlayerState.ClientGetServerOptions", info); } + void ClientNotifyLevelUpAvailable() { NativeCall(this, "AShooterPlayerState.ClientNotifyLevelUpAvailable"); } + void ClientReceiveAvailableEntities(TArray* AvailableEntities) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveAvailableEntities", AvailableEntities); } + void ClientReceivePartialSpawnPointUpdates(TArray* SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceivePartialSpawnPointUpdates", SpawnPointsInfos); } + void ClientReceiveSpawnPoints(TArray* SpawnPointsInfos) { NativeCall*>(this, "AShooterPlayerState.ClientReceiveSpawnPoints", SpawnPointsInfos); } + void ClientRefreshDinoOrderGroup(int groupIndex, FDinoOrderGroup groupData, int UseCurrentlySelectedGroup) { NativeCall(this, "AShooterPlayerState.ClientRefreshDinoOrderGroup", groupIndex, groupData, UseCurrentlySelectedGroup); } + void ClientUnlockedFeat(FName FeatName) { NativeCall(this, "AShooterPlayerState.ClientUnlockedFeat", FeatName); } + void ClientUpdateTameUnitCounts(FTameUnitCounts NewTameUnitCounts) { NativeCall(this, "AShooterPlayerState.ClientUpdateTameUnitCounts", NewTameUnitCounts); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterPlayerState.GetPrivateStaticClass", Package); } + void NotifyPlayerJoined(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoined", ThePlayerName); } + void NotifyPlayerJoinedTribe(FString* ThePlayerName, FString* TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerJoinedTribe", ThePlayerName, TribeName); } + void NotifyPlayerLeft(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeft", ThePlayerName); } + void NotifyPlayerLeftTribe(FString* ThePlayerName, FString* TribeName) { NativeCall(this, "AShooterPlayerState.NotifyPlayerLeftTribe", ThePlayerName, TribeName); } + void NotifyTribememberJoined(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberJoined", ThePlayerName); } + void NotifyTribememberLeft(FString* ThePlayerName) { NativeCall(this, "AShooterPlayerState.NotifyTribememberLeft", ThePlayerName); } + void SendTribeInviteData(FTribeData TribeInviteData) { NativeCall(this, "AShooterPlayerState.SendTribeInviteData", TribeInviteData); } + void ServerAcceptTribeWar(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerAcceptTribeWar", EnemyTeamID); } + void ServerDeclareTribeWar(int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime) { NativeCall(this, "AShooterPlayerState.ServerDeclareTribeWar", EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime); } + void ServerDinoOrderGroup_AddOrRemoveDinoCharacter(int groupIndex, APrimalDinoCharacter* DinoCharacter, bool bAdd) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoCharacter", groupIndex, DinoCharacter, bAdd); } + void ServerDinoOrderGroup_AddOrRemoveDinoClass(int groupIndex, TSubclassOf DinoClass, bool bAdd) { NativeCall, bool>(this, "AShooterPlayerState.ServerDinoOrderGroup_AddOrRemoveDinoClass", groupIndex, DinoClass, bAdd); } + void ServerDinoOrderGroup_Clear(int groupIndex, bool bClearClasses, bool bClearChars) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_Clear", groupIndex, bClearClasses, bClearChars); } + void ServerDinoOrderGroup_RemoveEntryByIndex(int groupIndex, bool bIsClass, int entryIndex) { NativeCall(this, "AShooterPlayerState.ServerDinoOrderGroup_RemoveEntryByIndex", groupIndex, bIsClass, entryIndex); } + void ServerGetAlivePlayerConnectedData() { NativeCall(this, "AShooterPlayerState.ServerGetAlivePlayerConnectedData"); } + void ServerGetAllPlayerNamesAndLocations() { NativeCall(this, "AShooterPlayerState.ServerGetAllPlayerNamesAndLocations"); } + void ServerGetPlayerBannedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerBannedData"); } + void ServerGetPlayerConnectedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerConnectedData"); } + void ServerGetPlayerWhiteListedData() { NativeCall(this, "AShooterPlayerState.ServerGetPlayerWhiteListedData"); } + void ServerGetServerOptions() { NativeCall(this, "AShooterPlayerState.ServerGetServerOptions"); } + void ServerRejectTribeWar(int EnemyTeamID) { NativeCall(this, "AShooterPlayerState.ServerRejectTribeWar", EnemyTeamID); } + void ServerRequestApplyEngramPoints(TSubclassOf forItemEntry, EEngramDiscipline::Type ForDiscipline) { NativeCall, EEngramDiscipline::Type>(this, "AShooterPlayerState.ServerRequestApplyEngramPoints", forItemEntry, ForDiscipline); } + void ServerRequestCreateNewTribe(FString* TribeName, FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestCreateNewTribe", TribeName, TribeGovernment); } + void ServerRequestDemotePlayerInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestDemotePlayerInMyTribe", PlayerIndexInTribe); } + void ServerRequestDinoOrderGroups() { NativeCall(this, "AShooterPlayerState.ServerRequestDinoOrderGroups"); } + void ServerRequestLeaveAlliance(unsigned int AllianceID) { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveAlliance", AllianceID); } + void ServerRequestLeaveTribe() { NativeCall(this, "AShooterPlayerState.ServerRequestLeaveTribe"); } + void ServerRequestMySpawnPoints(unsigned int IgnoreBedID, TSubclassOf FilterClass) { NativeCall>(this, "AShooterPlayerState.ServerRequestMySpawnPoints", IgnoreBedID, FilterClass); } + void ServerRequestPartialSpawnPointUpdate(unsigned int EntityID) { NativeCall(this, "AShooterPlayerState.ServerRequestPartialSpawnPointUpdate", EntityID); } + void ServerRequestPromoteAllianceMember(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestPromoteAllianceMember", AllianceID, MemberID); } + void ServerRequestPromotePlayerInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestPromotePlayerInMyTribe", PlayerIndexInTribe); } + void ServerRequestRemoveAllianceMember(unsigned int AllianceID, unsigned int MemberID) { NativeCall(this, "AShooterPlayerState.ServerRequestRemoveAllianceMember", AllianceID, MemberID); } + void ServerRequestRemovePlayerIndexFromMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRemovePlayerIndexFromMyTribe", PlayerIndexInTribe); } + void ServerRequestRenameTribe(FString* ServerRequestRenameTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestRenameTribe", ServerRequestRenameTribe); } + void ServerRequestResetPlayer() { NativeCall(this, "AShooterPlayerState.ServerRequestResetPlayer"); } + void ServerRequestSetTribeGovernment(FTribeGovernment TribeGovernment) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeGovernment", TribeGovernment); } + void ServerRequestSetTribeMemberGroupRank(int PlayerIndexInTribe, int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerRequestSetTribeMemberGroupRank", PlayerIndexInTribe, RankGroupIndex); } + void ServerRequestTransferOwnershipInMyTribe(int PlayerIndexInTribe) { NativeCall(this, "AShooterPlayerState.ServerRequestTransferOwnershipInMyTribe", PlayerIndexInTribe); } + void ServerSetDefaultItemSlotClass(int slotNum, TSubclassOf ItemClass, bool bIsEngram) { NativeCall, bool>(this, "AShooterPlayerState.ServerSetDefaultItemSlotClass", slotNum, ItemClass, bIsEngram); } + void ServerSetDinoGroupName(int groupIndex, FString* GroupName) { NativeCall(this, "AShooterPlayerState.ServerSetDinoGroupName", groupIndex, GroupName); } + void ServerSetFeatHotkey(int slotNum, TSubclassOf FeatClass) { NativeCall>(this, "AShooterPlayerState.ServerSetFeatHotkey", slotNum, FeatClass); } + void ServerSetSelectedDinoOrderGroup(int newGroup) { NativeCall(this, "AShooterPlayerState.ServerSetSelectedDinoOrderGroup", newGroup); } + void ServerSetTribeMOTD(FString* MOTD) { NativeCall(this, "AShooterPlayerState.ServerSetTribeMOTD", MOTD); } + void ServerTribeRequestAddRankGroup(FString* GroupName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestAddRankGroup", GroupName); } + void ServerTribeRequestApplyRankGroupSettings(int RankGroupIndex, FTribeRankGroup newGroupSettings) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestApplyRankGroupSettings", RankGroupIndex, newGroupSettings); } + void ServerTribeRequestNewAlliance(FString* AllianceName) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestNewAlliance", AllianceName); } + void ServerTribeRequestRemoveRankGroup(int RankGroupIndex) { NativeCall(this, "AShooterPlayerState.ServerTribeRequestRemoveRankGroup", RankGroupIndex); } + static void StaticRegisterNativesAShooterPlayerState() { NativeCall(nullptr, "AShooterPlayerState.StaticRegisterNativesAShooterPlayerState"); } +}; + +struct AController : AActor +{ + TWeakObjectPtr& OldPawnField() { return *GetNativePointerField*>(this, "AController.OldPawn"); } + ACharacter* CharacterField() { return *GetNativePointerField(this, "AController.Character"); } + APlayerState* PlayerStateField() { return *GetNativePointerField(this, "AController.PlayerState"); } + APawn* PawnField() { return *GetNativePointerField(this, "AController.Pawn"); } + FRotator& ControlRotationField() { return *GetNativePointerField(this, "AController.ControlRotation"); } + TWeakObjectPtr& StartSpotField() { return *GetNativePointerField*>(this, "AController.StartSpot"); } + FName& StateNameField() { return *GetNativePointerField(this, "AController.StateName"); } + + // Bit fields + + BitFieldValue bAttachToPawn() { return { this, "AController.bAttachToPawn" }; } + + // Functions + + APawn* K2_GetPawn(AActor* DamageCauser) { return NativeCall(this, "AController.K2_GetPawn", DamageCauser); } + void AddPawnTickDependency(APawn* NewPawn) { NativeCall(this, "AController.AddPawnTickDependency", NewPawn); } + void AttachToPawn(APawn* InPawn) { NativeCall(this, "AController.AttachToPawn", InPawn); } + void ChangeState(FName NewState) { NativeCall(this, "AController.ChangeState", NewState); } + void CleanupPlayerState() { NativeCall(this, "AController.CleanupPlayerState"); } + void ClientSetLocation_Implementation(FVector NewLocation, FRotator NewRotation) { NativeCall(this, "AController.ClientSetLocation_Implementation", NewLocation, NewRotation); } + void ClientSetRotation_Implementation(FRotator NewRotation, bool bResetCamera, bool bAfterSeamlessTravel) { NativeCall(this, "AController.ClientSetRotation_Implementation", NewRotation, bResetCamera, bAfterSeamlessTravel); } + void Destroyed() { NativeCall(this, "AController.Destroyed"); } + void DetachFromPawn() { NativeCall(this, "AController.DetachFromPawn"); } + void FailedToSpawnPawn() { NativeCall(this, "AController.FailedToSpawnPawn"); } + void GetActorEyesViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "AController.GetActorEyesViewPoint", out_Location, out_Rotation); } + FRotator* GetControlRotation(FRotator* result) { return NativeCall(this, "AController.GetControlRotation", result); } + FRotator* GetDesiredRotation(FRotator* result) { return NativeCall(this, "AController.GetDesiredRotation", result); } + FString* GetHumanReadableName(FString* result) { return NativeCall(this, "AController.GetHumanReadableName", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AController.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetMoveGoalReachTest(AActor* MovingActor, FVector* MoveOffset, FVector* GoalOffset, float* GoalRadius, float* GoalHalfHeight) { NativeCall(this, "AController.GetMoveGoalReachTest", MovingActor, MoveOffset, GoalOffset, GoalRadius, GoalHalfHeight); } + FVector* GetNavAgentLocation(FVector* result) { return NativeCall(this, "AController.GetNavAgentLocation", result); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "AController.GetPlayerViewPoint", out_Location, out_Rotation); } + FName* GetStateName(FName* result) { return NativeCall(this, "AController.GetStateName", result); } + AActor* GetViewTarget() { return NativeCall(this, "AController.GetViewTarget"); } + void InitPlayerState() { NativeCall(this, "AController.InitPlayerState"); } + void InstigatedAnyDamage(float Damage, UDamageType* DamageType, AActor* DamagedActor, AActor* DamageCauser) { NativeCall(this, "AController.InstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } + bool IsInState(FName InStateName) { return NativeCall(this, "AController.IsInState", InStateName); } + bool LineOfSightTo(AActor* Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } + void OnRep_Pawn() { NativeCall(this, "AController.OnRep_Pawn"); } + void OnRep_PlayerState() { NativeCall(this, "AController.OnRep_PlayerState"); } + void PawnPendingDestroy(APawn* inPawn) { NativeCall(this, "AController.PawnPendingDestroy", inPawn); } + void Possess(APawn* InPawn) { NativeCall(this, "AController.Possess", InPawn); } + void PostInitializeComponents() { NativeCall(this, "AController.PostInitializeComponents"); } + void RemovePawnTickDependency(APawn* InOldPawn) { NativeCall(this, "AController.RemovePawnTickDependency", InOldPawn); } + void Reset() { NativeCall(this, "AController.Reset"); } + void SetControlRotation(FRotator* NewRotation) { NativeCall(this, "AController.SetControlRotation", NewRotation); } + void SetInitialLocationAndRotation(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "AController.SetInitialLocationAndRotation", NewLocation, NewRotation); } + void SetPawn(APawn* InPawn) { NativeCall(this, "AController.SetPawn", InPawn); } + void SetPawnFromRep(APawn* InPawn) { NativeCall(this, "AController.SetPawnFromRep", InPawn); } + bool ShouldPostponePathUpdates() { return NativeCall(this, "AController.ShouldPostponePathUpdates"); } + void UnPossess() { NativeCall(this, "AController.UnPossess"); } + void UpdateNavigationComponents() { NativeCall(this, "AController.UpdateNavigationComponents"); } + void ClientSetRotation(FRotator NewRotation, bool bResetCamera, bool bAfterSeamlessTravel) { NativeCall(this, "AController.ClientSetRotation", NewRotation, bResetCamera, bAfterSeamlessTravel); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AController.GetPrivateStaticClass", Package); } + void ReceiveInstigatedAnyDamage(float Damage, UDamageType* DamageType, AActor* DamagedActor, AActor* DamageCauser) { NativeCall(this, "AController.ReceiveInstigatedAnyDamage", Damage, DamageType, DamagedActor, DamageCauser); } + static void StaticRegisterNativesAController() { NativeCall(nullptr, "AController.StaticRegisterNativesAController"); } +}; + +struct APlayerController : AController +{ + UPlayer* PlayerField() { return *GetNativePointerField(this, "APlayerController.Player"); } + APawn* AcknowledgedPawnField() { return *GetNativePointerField(this, "APlayerController.AcknowledgedPawn"); } + float& LocalPlayerCachedLODDistanceFactorField() { return *GetNativePointerField(this, "APlayerController.LocalPlayerCachedLODDistanceFactor"); } + AHUD* MyHUDField() { return *GetNativePointerField(this, "APlayerController.MyHUD"); } + APlayerCameraManager* PlayerCameraManagerField() { return *GetNativePointerField(this, "APlayerController.PlayerCameraManager"); } + TSubclassOf& PlayerCameraManagerClassField() { return *GetNativePointerField*>(this, "APlayerController.PlayerCameraManagerClass"); } + bool& bAutoManageActiveCameraTargetField() { return *GetNativePointerField(this, "APlayerController.bAutoManageActiveCameraTarget"); } + FRotator& TargetViewRotationField() { return *GetNativePointerField(this, "APlayerController.TargetViewRotation"); } + FRotator& BlendedTargetViewRotationField() { return *GetNativePointerField(this, "APlayerController.BlendedTargetViewRotation"); } + TArray HiddenActorsField() { return *GetNativePointerField*>(this, "APlayerController.HiddenActors"); } + float& LastSpectatorStateSynchTimeField() { return *GetNativePointerField(this, "APlayerController.LastSpectatorStateSynchTime"); } + int& ClientCapField() { return *GetNativePointerField(this, "APlayerController.ClientCap"); } + long double& ServerLastReceivedSpectatorLocTimeField() { return *GetNativePointerField(this, "APlayerController.ServerLastReceivedSpectatorLocTime"); } + UCheatManager* CheatManagerField() { return *GetNativePointerField(this, "APlayerController.CheatManager"); } + TSubclassOf& CheatClassField() { return *GetNativePointerField*>(this, "APlayerController.CheatClass"); } + TArray& PendingMapChangeLevelNamesField() { return *GetNativePointerField*>(this, "APlayerController.PendingMapChangeLevelNames"); } + char& NetPlayerIndexField() { return *GetNativePointerField(this, "APlayerController.NetPlayerIndex"); } + UNetConnection* PendingSwapConnectionField() { return *GetNativePointerField(this, "APlayerController.PendingSwapConnection"); } + UNetConnection* NetConnectionField() { return *GetNativePointerField(this, "APlayerController.NetConnection"); } + FRotator& RotationInputField() { return *GetNativePointerField(this, "APlayerController.RotationInput"); } + float& InputYawScaleField() { return *GetNativePointerField(this, "APlayerController.InputYawScale"); } + float& InputPitchScaleField() { return *GetNativePointerField(this, "APlayerController.InputPitchScale"); } + float& InputRollScaleField() { return *GetNativePointerField(this, "APlayerController.InputRollScale"); } + TEnumAsByte& DefaultMouseCursorField() { return *GetNativePointerField*>(this, "APlayerController.DefaultMouseCursor"); } + TEnumAsByte& CurrentMouseCursorField() { return *GetNativePointerField*>(this, "APlayerController.CurrentMouseCursor"); } + TEnumAsByte& DefaultClickTraceChannelField() { return *GetNativePointerField*>(this, "APlayerController.DefaultClickTraceChannel"); } + TEnumAsByte& CurrentClickTraceChannelField() { return *GetNativePointerField*>(this, "APlayerController.CurrentClickTraceChannel"); } + bool& bLockedInputUIField() { return *GetNativePointerField(this, "APlayerController.bLockedInputUI"); } + TSubobjectPtr& TransformComponentField() { return *GetNativePointerField*>(this, "APlayerController.TransformComponent"); } + TWeakObjectPtr& CurrentClickablePrimitiveField() { return *GetNativePointerField*>(this, "APlayerController.CurrentClickablePrimitive"); } + FieldArray, 11> CurrentTouchablePrimitivesField() { return { this, "APlayerController.CurrentTouchablePrimitives" }; } + char& IgnoreMoveInputField() { return *GetNativePointerField(this, "APlayerController.IgnoreMoveInput"); } + char& IgnoreLookInputField() { return *GetNativePointerField(this, "APlayerController.IgnoreLookInput"); } + TWeakObjectPtr& AudioListenerComponentField() { return *GetNativePointerField*>(this, "APlayerController.AudioListenerComponent"); } + FVector& AudioListenerLocationOverrideField() { return *GetNativePointerField(this, "APlayerController.AudioListenerLocationOverride"); } + FRotator& AudioListenerRotationOverrideField() { return *GetNativePointerField(this, "APlayerController.AudioListenerRotationOverride"); } + FVector& SpawnLocationField() { return *GetNativePointerField(this, "APlayerController.SpawnLocation"); } + float& LastRetryPlayerTimeField() { return *GetNativePointerField(this, "APlayerController.LastRetryPlayerTime"); } + unsigned __int16& SeamlessTravelCountField() { return *GetNativePointerField(this, "APlayerController.SeamlessTravelCount"); } + unsigned __int16& LastCompletedSeamlessTravelCountField() { return *GetNativePointerField(this, "APlayerController.LastCompletedSeamlessTravelCount"); } + bool& bPossessedAnyPawnField() { return *GetNativePointerField(this, "APlayerController.bPossessedAnyPawn"); } + int& LastValidUnstasisCasterFrameField() { return *GetNativePointerField(this, "APlayerController.LastValidUnstasisCasterFrame"); } + FVector& LastCharacterMovementTeleportUnstasisLocationField() { return *GetNativePointerField(this, "APlayerController.LastCharacterMovementTeleportUnstasisLocation"); } + FVector& LastReplicatedFocalLocField() { return *GetNativePointerField(this, "APlayerController.LastReplicatedFocalLoc"); } + bool& bIsDelayedNetCleanupField() { return *GetNativePointerField(this, "APlayerController.bIsDelayedNetCleanup"); } + float& LastTeleportDistanceField() { return *GetNativePointerField(this, "APlayerController.LastTeleportDistance"); } + + // Bit fields + + BitFieldValue bShortConnectTimeOut() { return { this, "APlayerController.bShortConnectTimeOut" }; } + BitFieldValue bShowExtendedInfoKey() { return { this, "APlayerController.bShowExtendedInfoKey" }; } + BitFieldValue bIsAnselActive() { return { this, "APlayerController.bIsAnselActive" }; } + BitFieldValue bCinematicMode() { return { this, "APlayerController.bCinematicMode" }; } + BitFieldValue bIsUsingStreamingVolumes() { return { this, "APlayerController.bIsUsingStreamingVolumes" }; } + BitFieldValue bPlayerIsWaiting() { return { this, "APlayerController.bPlayerIsWaiting" }; } + BitFieldValue bCheatPlayer() { return { this, "APlayerController.bCheatPlayer" }; } + BitFieldValue bIsAdmin() { return { this, "APlayerController.bIsAdmin" }; } + BitFieldValue bShowMouseCursor() { return { this, "APlayerController.bShowMouseCursor" }; } + BitFieldValue bEnableClickEvents() { return { this, "APlayerController.bEnableClickEvents" }; } + BitFieldValue bEnableTouchEvents() { return { this, "APlayerController.bEnableTouchEvents" }; } + BitFieldValue bEnableMouseOverEvents() { return { this, "APlayerController.bEnableMouseOverEvents" }; } + BitFieldValue bEnableTouchOverEvents() { return { this, "APlayerController.bEnableTouchOverEvents" }; } + BitFieldValue bForceFeedbackEnabled() { return { this, "APlayerController.bForceFeedbackEnabled" }; } + BitFieldValue bCinemaDisableInputMove() { return { this, "APlayerController.bCinemaDisableInputMove" }; } + BitFieldValue bCinemaDisableInputLook() { return { this, "APlayerController.bCinemaDisableInputLook" }; } + BitFieldValue bAcknowledgedClientReceivedActor() { return { this, "APlayerController.bAcknowledgedClientReceivedActor" }; } + BitFieldValue bInputEnabled() { return { this, "APlayerController.bInputEnabled" }; } + BitFieldValue bShouldPerformFullTickWhenPaused() { return { this, "APlayerController.bShouldPerformFullTickWhenPaused" }; } + BitFieldValue bOverrideAudioListener() { return { this, "APlayerController.bOverrideAudioListener" }; } + + // Functions + + AActor* GetAimedUseActor(UActorComponent** UseComponent, int* hitBodyIndex, bool bForceUseActorLocation) { return NativeCall(this, "APlayerController.GetAimedUseActor", UseComponent, hitBodyIndex, bForceUseActorLocation); } + static bool IsNetRelevantFor(FTimespan A, FTimespan B) { return NativeCall(nullptr, "APlayerController.IsNetRelevantFor", A, B); } + void AcknowledgePossession(APawn* P) { NativeCall(this, "APlayerController.AcknowledgePossession", P); } + void AddCheats(bool bForce) { NativeCall(this, "APlayerController.AddCheats", bForce); } + void AddPitchInput(float Val) { NativeCall(this, "APlayerController.AddPitchInput", Val); } + void AddRollInput(float Val) { NativeCall(this, "APlayerController.AddRollInput", Val); } + void AddYawInput(float Val) { NativeCall(this, "APlayerController.AddYawInput", Val); } + void AutoManageActiveCameraTarget(AActor* SuggestedTarget) { NativeCall(this, "APlayerController.AutoManageActiveCameraTarget", SuggestedTarget); } + void BeginInactiveState() { NativeCall(this, "APlayerController.BeginInactiveState"); } + void BeginSpectatingState() { NativeCall(this, "APlayerController.BeginSpectatingState"); } + void CalcCamera(float DeltaTime, FMinimalViewInfo* OutResult) { NativeCall(this, "APlayerController.CalcCamera", DeltaTime, OutResult); } + void Camera(FName NewMode) { NativeCall(this, "APlayerController.Camera", NewMode); } + bool CanRestartPlayer() { return NativeCall(this, "APlayerController.CanRestartPlayer"); } + void ChangeState(FName NewState) { NativeCall(this, "APlayerController.ChangeState", NewState); } + void CleanUpAudioComponents() { NativeCall(this, "APlayerController.CleanUpAudioComponents"); } + void CleanupGameViewport() { NativeCall(this, "APlayerController.CleanupGameViewport"); } + void CleanupPlayerState() { NativeCall(this, "APlayerController.CleanupPlayerState"); } + void ClearAudioListenerOverride() { NativeCall(this, "APlayerController.ClearAudioListenerOverride"); } + void ClientAddTextureStreamingLoc_Implementation(FVector InLoc, float Duration, bool bOverrideLocation) { NativeCall(this, "APlayerController.ClientAddTextureStreamingLoc_Implementation", InLoc, Duration, bOverrideLocation); } + void ClientCancelPendingMapChange_Implementation() { NativeCall(this, "APlayerController.ClientCancelPendingMapChange_Implementation"); } + void ClientCapBandwidth_Implementation(int Cap) { NativeCall(this, "APlayerController.ClientCapBandwidth_Implementation", Cap); } + void ClientClearCameraLensEffects_Implementation() { NativeCall(this, "APlayerController.ClientClearCameraLensEffects_Implementation"); } + void ClientCommitMapChange_Implementation() { NativeCall(this, "APlayerController.ClientCommitMapChange_Implementation"); } + void ClientEnableNetworkVoice_Implementation(bool bEnable) { NativeCall(this, "APlayerController.ClientEnableNetworkVoice_Implementation", bEnable); } + void ClientFlushLevelStreaming_Implementation() { NativeCall(this, "APlayerController.ClientFlushLevelStreaming_Implementation"); } + void ClientForceGarbageCollection_Implementation() { NativeCall(this, "APlayerController.ClientForceGarbageCollection_Implementation"); } + void ClientGameEnded_Implementation(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.ClientGameEnded_Implementation", EndGameFocus, bIsWinner); } + void ClientGotoState_Implementation(FName NewState) { NativeCall(this, "APlayerController.ClientGotoState_Implementation", NewState); } + void ClientIgnoreLookInput_Implementation(bool bIgnore) { NativeCall(this, "APlayerController.ClientIgnoreLookInput_Implementation", bIgnore); } + void ClientIgnoreMoveInput_Implementation(bool bIgnore) { NativeCall(this, "APlayerController.ClientIgnoreMoveInput_Implementation", bIgnore); } + void ClientMessage_Implementation(FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientMessage_Implementation", S, Type, MsgLifeTime); } + void ClientMutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientMutePlayer_Implementation", PlayerId); } + void ClientNetGUIDActorDeletion_Implementation(FNetworkGUID TheNetGUID) { NativeCall(this, "APlayerController.ClientNetGUIDActorDeletion_Implementation", TheNetGUID); } + void ClientPlaySoundAtLocation_Implementation(USoundBase* Sound, FVector Location, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySoundAtLocation_Implementation", Sound, Location, VolumeMultiplier, PitchMultiplier); } + void ClientPlaySound_Implementation(USoundBase* Sound, float VolumeMultiplier, float PitchMultiplier) { NativeCall(this, "APlayerController.ClientPlaySound_Implementation", Sound, VolumeMultiplier, PitchMultiplier); } + void ClientPrepareMapChange_Implementation(FName LevelName, bool bFirst, bool bLast) { NativeCall(this, "APlayerController.ClientPrepareMapChange_Implementation", LevelName, bFirst, bLast); } + void ClientPrestreamTextures_Implementation(AActor* ForcedActor, float ForceDuration, bool bEnableStreaming, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientPrestreamTextures_Implementation", ForcedActor, ForceDuration, bEnableStreaming, CinematicTextureGroups); } + void ClientProcessNetExecCommandUnreliable_Implementation(AActor* ForActor, FName CommandName, FNetExecParams ExecParams) { NativeCall(this, "APlayerController.ClientProcessNetExecCommandUnreliable_Implementation", ForActor, CommandName, ExecParams); } + void ClientProcessSimpleNetExecCommandBP_Implementation(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandBP_Implementation", ForActor, CommandName); } + void ClientProcessSimpleNetExecCommandUnreliableBP_Implementation(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandUnreliableBP_Implementation", ForActor, CommandName); } + void ClientReset_Implementation() { NativeCall(this, "APlayerController.ClientReset_Implementation"); } + void ClientRestart_Implementation(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRestart_Implementation", NewPawn); } + void ClientRetryClientRestart_Implementation(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRetryClientRestart_Implementation", NewPawn); } + void ClientReturnToMainMenu_Implementation(FString* ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu_Implementation", ReturnReason); } + void ClientSetBlockOnAsyncLoading_Implementation() { NativeCall(this, "APlayerController.ClientSetBlockOnAsyncLoading_Implementation"); } + void ClientSetCameraFade_Implementation(bool bEnableFading, FColor FadeColor, FVector2D FadeAlpha, float FadeTime, bool bFadeAudio) { NativeCall(this, "APlayerController.ClientSetCameraFade_Implementation", bEnableFading, FadeColor, FadeAlpha, FadeTime, bFadeAudio); } + void SetCameraMode(FName NewCamMode) { NativeCall(this, "APlayerController.SetCameraMode", NewCamMode); } + void ClientSetCinematicMode_Implementation(bool bInCinematicMode, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsHUD) { NativeCall(this, "APlayerController.ClientSetCinematicMode_Implementation", bInCinematicMode, bAffectsMovement, bAffectsTurning, bAffectsHUD); } + void ClientSetForceMipLevelsToBeResident_Implementation(UMaterialInterface* Material, float ForceDuration, int CinematicTextureGroups) { NativeCall(this, "APlayerController.ClientSetForceMipLevelsToBeResident_Implementation", Material, ForceDuration, CinematicTextureGroups); } + void ClientSetHUD_Implementation(TSubclassOf NewHUDClass) { NativeCall>(this, "APlayerController.ClientSetHUD_Implementation", NewHUDClass); } + void ClientTeamMessage_Implementation(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } + void ClientUnmutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientUnmutePlayer_Implementation", PlayerId); } + void ClientVoiceHandshakeComplete_Implementation() { NativeCall(this, "APlayerController.ClientVoiceHandshakeComplete_Implementation"); } + void ClientWasKicked_Implementation(FText* KickReason) { NativeCall(this, "APlayerController.ClientWasKicked_Implementation", KickReason); } + FString* ConsoleCommand(FString* result, FString* Cmd, bool bWriteToLog) { return NativeCall(this, "APlayerController.ConsoleCommand", result, Cmd, bWriteToLog); } + void CreateTouchInterface() { NativeCall(this, "APlayerController.CreateTouchInterface"); } + bool DefaultCanUnpause() { return NativeCall(this, "APlayerController.DefaultCanUnpause"); } + void DelayedNetCleanup() { NativeCall(this, "APlayerController.DelayedNetCleanup"); } + void DelayedPrepareMapChange() { NativeCall(this, "APlayerController.DelayedPrepareMapChange"); } + bool DeprojectMousePositionToWorld(FVector* WorldLocation, FVector* WorldDirection) { return NativeCall(this, "APlayerController.DeprojectMousePositionToWorld", WorldLocation, WorldDirection); } + bool DeprojectScreenPositionToWorld(float ScreenX, float ScreenY, FVector* WorldLocation, FVector* WorldDirection) { return NativeCall(this, "APlayerController.DeprojectScreenPositionToWorld", ScreenX, ScreenY, WorldLocation, WorldDirection); } + void DestroySpectatorPawn() { NativeCall(this, "APlayerController.DestroySpectatorPawn"); } + void Destroyed() { NativeCall(this, "APlayerController.Destroyed"); } + void DisableInput(APlayerController* PlayerController) { NativeCall(this, "APlayerController.DisableInput", PlayerController); } + void EnableCheats(FString pass) { NativeCall(this, "APlayerController.EnableCheats", pass); } + void EnableInput(APlayerController* PlayerController) { NativeCall(this, "APlayerController.EnableInput", PlayerController); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "APlayerController.EndPlay", EndPlayReason); } + void EndPlayingState() { NativeCall(this, "APlayerController.EndPlayingState"); } + void EndSpectatingState() { NativeCall(this, "APlayerController.EndSpectatingState"); } + void FOV(float F) { NativeCall(this, "APlayerController.FOV", F); } + void FailedToSpawnPawn() { NativeCall(this, "APlayerController.FailedToSpawnPawn"); } + void FlushPressedKeys() { NativeCall(this, "APlayerController.FlushPressedKeys"); } + void ForceSingleNetUpdateFor(AActor* Target) { NativeCall(this, "APlayerController.ForceSingleNetUpdateFor", Target); } + void GameHasEnded(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.GameHasEnded", EndGameFocus, bIsWinner); } + void GetActorEyesViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "APlayerController.GetActorEyesViewPoint", out_Location, out_Rotation); } + void GetAudioListenerPosition(FVector* OutLocation, FVector* OutFrontDir, FVector* OutRightDir) { NativeCall(this, "APlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } + FVector* GetFocalLocation(FVector* result) { return NativeCall(this, "APlayerController.GetFocalLocation", result); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, ObjectTypes, bTraceComplex, HitResult); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultAtScreenPosition(FVector2D ScreenPosition, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultAtScreenPosition", ScreenPosition, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderCursor(ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursor", TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderCursorByChannel(ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderCursorByChannel", TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderCursorForObjects(TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultUnderCursorForObjects", ObjectTypes, bTraceComplex, HitResult); } + bool GetHitResultUnderFinger(ETouchIndex::Type FingerIndex, ECollisionChannel TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFinger", FingerIndex, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderFingerByChannel(ETouchIndex::Type FingerIndex, ETraceTypeQuery TraceChannel, bool bTraceComplex, FHitResult* HitResult) { return NativeCall(this, "APlayerController.GetHitResultUnderFingerByChannel", FingerIndex, TraceChannel, bTraceComplex, HitResult); } + bool GetHitResultUnderFingerForObjects(ETouchIndex::Type FingerIndex, TArray>* ObjectTypes, bool bTraceComplex, FHitResult* HitResult) { return NativeCall>*, bool, FHitResult*>(this, "APlayerController.GetHitResultUnderFingerForObjects", FingerIndex, ObjectTypes, bTraceComplex, HitResult); } + float GetInputAnalogKeyState(FKey Key) { return NativeCall(this, "APlayerController.GetInputAnalogKeyState", Key); } + float GetInputKeyTimeDown(FKey Key) { return NativeCall(this, "APlayerController.GetInputKeyTimeDown", Key); } + void GetInputMotionState(FVector* Tilt, FVector* RotationRate, FVector* Gravity, FVector* Acceleration) { NativeCall(this, "APlayerController.GetInputMotionState", Tilt, RotationRate, Gravity, Acceleration); } + void GetInputMouseDelta(float* DeltaX, float* DeltaY) { NativeCall(this, "APlayerController.GetInputMouseDelta", DeltaX, DeltaY); } + void GetInputTouchState(ETouchIndex::Type FingerIndex, float* LocationX, float* LocationY, bool* bIsCurrentlyPressed) { NativeCall(this, "APlayerController.GetInputTouchState", FingerIndex, LocationX, LocationY, bIsCurrentlyPressed); } + FVector* GetInputVectorKeyState(FVector* result, FKey Key) { return NativeCall(this, "APlayerController.GetInputVectorKeyState", result, Key); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } + EMouseCursor::Type GetMouseCursor() { return NativeCall(this, "APlayerController.GetMouseCursor"); } + bool GetMousePosition(float* LocationX, float* LocationY) { return NativeCall(this, "APlayerController.GetMousePosition", LocationX, LocationY); } + UNetConnection* GetNetConnection() { return NativeCall(this, "APlayerController.GetNetConnection"); } + UPlayer* GetNetOwningPlayer() { return NativeCall(this, "APlayerController.GetNetOwningPlayer"); } + float GetNetPriority(FVector* ViewPos, FVector* ViewDir, APlayerController* Viewer, UActorChannel* InChannel, float Time, bool bLowBandwidth) { return NativeCall(this, "APlayerController.GetNetPriority", ViewPos, ViewDir, Viewer, InChannel, Time, bLowBandwidth); } + APlayerState* GetNextViewablePlayer(int dir) { return NativeCall(this, "APlayerController.GetNextViewablePlayer", dir); } + APawn* GetPawnOrSpectator() { return NativeCall(this, "APlayerController.GetPawnOrSpectator"); } + FString* GetPlayerNetworkAddress(FString* result) { return NativeCall(this, "APlayerController.GetPlayerNetworkAddress", result); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "APlayerController.GetPlayerViewPoint", out_Location, out_Rotation); } + void GetSeamlessTravelActorList(bool bToEntry, TArray* ActorList) { NativeCall*>(this, "APlayerController.GetSeamlessTravelActorList", bToEntry, ActorList); } + int GetSplitscreenPlayerCount() { return NativeCall(this, "APlayerController.GetSplitscreenPlayerCount"); } + AActor* GetViewTarget() { return NativeCall(this, "APlayerController.GetViewTarget"); } + void GetViewportSize(int* SizeX, int* SizeY) { NativeCall(this, "APlayerController.GetViewportSize", SizeX, SizeY); } + bool HasClientLoadedCurrentWorld() { return NativeCall(this, "APlayerController.HasClientLoadedCurrentWorld"); } + void InitInputSystem() { NativeCall(this, "APlayerController.InitInputSystem"); } + bool InputAxis(FKey Key, float Delta, float DeltaTime, int NumSamples, bool bGamepad) { return NativeCall(this, "APlayerController.InputAxis", Key, Delta, DeltaTime, NumSamples, bGamepad); } + bool InputKey(FKey Key, EInputEvent EventType, float AmountDepressed, bool bGamepad) { return NativeCall(this, "APlayerController.InputKey", Key, EventType, AmountDepressed, bGamepad); } + bool InputMotion(FVector* Tilt, FVector* RotationRate, FVector* Gravity, FVector* Acceleration) { return NativeCall(this, "APlayerController.InputMotion", Tilt, RotationRate, Gravity, Acceleration); } + bool InputTouch(unsigned int Handle, ETouchType::Type Type, FVector2D* TouchLocation, FDateTime DeviceTimestamp, unsigned int TouchpadIndex) { return NativeCall(this, "APlayerController.InputTouch", Handle, Type, TouchLocation, DeviceTimestamp, TouchpadIndex); } + bool IsFrozen() { return NativeCall(this, "APlayerController.IsFrozen"); } + bool IsInputKeyDown(FKey Key) { return NativeCall(this, "APlayerController.IsInputKeyDown", Key); } + bool ServerPause_Validate() { return NativeCall(this, "APlayerController.ServerPause_Validate"); } + bool IsLookInputIgnored() { return NativeCall(this, "APlayerController.IsLookInputIgnored"); } + bool IsMoveInputIgnored() { return NativeCall(this, "APlayerController.IsMoveInputIgnored"); } + bool IsPaused() { return NativeCall(this, "APlayerController.IsPaused"); } + bool IsPlayerMuted(FString* VivoxUsername) { return NativeCall(this, "APlayerController.IsPlayerMuted", VivoxUsername); } + bool IsPlayerMuted(FUniqueNetId* PlayerId) { return NativeCall(this, "APlayerController.IsPlayerMuted", PlayerId); } + bool IsPrimaryPlayer() { return NativeCall(this, "APlayerController.IsPrimaryPlayer"); } + bool IsSplitscreenPlayer(int* OutSplitscreenPlayerIndex) { return NativeCall(this, "APlayerController.IsSplitscreenPlayer", OutSplitscreenPlayerIndex); } + void LocalTravel(FString* FURL) { NativeCall(this, "APlayerController.LocalTravel", FURL); } + bool NetConnectionHasActiveActor(AActor* AnActor) { return NativeCall(this, "APlayerController.NetConnectionHasActiveActor", AnActor); } + void NetSpawnActorAtLocation_Implementation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, USceneComponent*, int, FName>(this, "APlayerController.NetSpawnActorAtLocation_Implementation", AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName); } + void NotifyDirectorControl(bool bNowControlling, AMatineeActor* CurrentMatinee) { NativeCall(this, "APlayerController.NotifyDirectorControl", bNowControlling, CurrentMatinee); } + void NotifyLoadedWorld(FName WorldPackageName, bool bFinalDest) { NativeCall(this, "APlayerController.NotifyLoadedWorld", WorldPackageName, bFinalDest); } + bool NotifyServerReceivedClientData(APawn* InPawn, float TimeStamp) { return NativeCall(this, "APlayerController.NotifyServerReceivedClientData", InPawn, TimeStamp); } + void OnNetCleanup(UNetConnection* Connection) { NativeCall(this, "APlayerController.OnNetCleanup", Connection); } + void Pause() { NativeCall(this, "APlayerController.Pause"); } + void PawnLeavingGame() { NativeCall(this, "APlayerController.PawnLeavingGame"); } + void PlayerTick(float DeltaTime) { NativeCall(this, "APlayerController.PlayerTick", DeltaTime); } + void Possess(APawn* PawnToPossess) { NativeCall(this, "APlayerController.Possess", PawnToPossess); } + void PostInitializeComponents() { NativeCall(this, "APlayerController.PostInitializeComponents"); } + void PostLoad() { NativeCall(this, "APlayerController.PostLoad"); } + void PostProcessInput(const float DeltaTime, const bool bGamePaused) { NativeCall(this, "APlayerController.PostProcessInput", DeltaTime, bGamePaused); } + void ProcessForceFeedback(const float DeltaTime, const bool bGamePaused) { NativeCall(this, "APlayerController.ProcessForceFeedback", DeltaTime, bGamePaused); } + void ProcessPlayerInput(const float DeltaTime, const bool bGamePaused) { NativeCall(this, "APlayerController.ProcessPlayerInput", DeltaTime, bGamePaused); } + bool ProjectWorldLocationToScreen(FVector WorldLocation, FVector2D* ScreenLocation) { return NativeCall(this, "APlayerController.ProjectWorldLocationToScreen", WorldLocation, ScreenLocation); } + void ReceivedPlayer() { NativeCall(this, "APlayerController.ReceivedPlayer"); } + void ReceivedSpectatorClass(TSubclassOf SpectatorClass) { NativeCall>(this, "APlayerController.ReceivedSpectatorClass", SpectatorClass); } + void Reset() { NativeCall(this, "APlayerController.Reset"); } + void ResetCameraMode() { NativeCall(this, "APlayerController.ResetCameraMode"); } + void ResetIgnoreInputFlags() { NativeCall(this, "APlayerController.ResetIgnoreInputFlags"); } + void RestartLevel() { NativeCall(this, "APlayerController.RestartLevel"); } + void SafeRetryClientRestart() { NativeCall(this, "APlayerController.SafeRetryClientRestart"); } + void SafeServerCheckClientPossession() { NativeCall(this, "APlayerController.SafeServerCheckClientPossession"); } + void SafeServerUpdateSpectatorState() { NativeCall(this, "APlayerController.SafeServerUpdateSpectatorState"); } + void SeamlessTravelFrom(APlayerController* OldPC) { NativeCall(this, "APlayerController.SeamlessTravelFrom", OldPC); } + void SendClientAdjustment() { NativeCall(this, "APlayerController.SendClientAdjustment"); } + void ServerAcknowledgePossession_Implementation(APawn* P) { NativeCall(this, "APlayerController.ServerAcknowledgePossession_Implementation", P); } + bool ServerAcknowledgePossession_Validate(APawn* P) { return NativeCall(this, "APlayerController.ServerAcknowledgePossession_Validate", P); } + void ServerCamera_Implementation(FName NewMode) { NativeCall(this, "APlayerController.ServerCamera_Implementation", NewMode); } + void ServerChangeName_Implementation(FString* S) { NativeCall(this, "APlayerController.ServerChangeName_Implementation", S); } + bool ServerChangeName_Validate(FString* S) { return NativeCall(this, "APlayerController.ServerChangeName_Validate", S); } + void ServerCheckClientPossession_Implementation() { NativeCall(this, "APlayerController.ServerCheckClientPossession_Implementation"); } + void ServerMutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerMutePlayer_Implementation", PlayerId); } + bool ServerMutePlayer_Validate(FUniqueNetIdRepl PlayerId) { return NativeCall(this, "APlayerController.ServerMutePlayer_Validate", PlayerId); } + void ServerNotifyLoadedWorld_Implementation(FName WorldPackageName) { NativeCall(this, "APlayerController.ServerNotifyLoadedWorld_Implementation", WorldPackageName); } + bool ServerNotifyLoadedWorld_Validate(FName WorldPackageName) { return NativeCall(this, "APlayerController.ServerNotifyLoadedWorld_Validate", WorldPackageName); } + void ServerPause_Implementation() { NativeCall(this, "APlayerController.ServerPause_Implementation"); } + void ServerReceivedPlayerControllerAck_Implementation() { NativeCall(this, "APlayerController.ServerReceivedPlayerControllerAck_Implementation"); } + void ServerRestartPlayer_Implementation() { NativeCall(this, "APlayerController.ServerRestartPlayer_Implementation"); } + void ServerSetSpectatorLocation_Implementation(FVector NewLoc) { NativeCall(this, "APlayerController.ServerSetSpectatorLocation_Implementation", NewLoc); } + void ServerToggleAILogging_Implementation() { NativeCall(this, "APlayerController.ServerToggleAILogging_Implementation"); } + void ServerUnmutePlayer_Implementation(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerUnmutePlayer_Implementation", PlayerId); } + bool ServerUnmutePlayer_Validate(FUniqueNetIdRepl PlayerId) { return NativeCall(this, "APlayerController.ServerUnmutePlayer_Validate", PlayerId); } + void ServerUpdateCamera_Implementation(FVector_NetQuantize CamLoc, int CamPitchAndYaw) { NativeCall(this, "APlayerController.ServerUpdateCamera_Implementation", CamLoc, CamPitchAndYaw); } + void ServerUpdateLevelVisibility_Implementation(FName PackageName, bool bIsVisible) { NativeCall(this, "APlayerController.ServerUpdateLevelVisibility_Implementation", PackageName, bIsVisible); } + bool ServerUpdateLevelVisibility_Validate(FName PackageName, bool bIsVisible) { return NativeCall(this, "APlayerController.ServerUpdateLevelVisibility_Validate", PackageName, bIsVisible); } + void ServerVerifyViewTarget_Implementation() { NativeCall(this, "APlayerController.ServerVerifyViewTarget_Implementation"); } + void ServerViewNextPlayer_Implementation() { NativeCall(this, "APlayerController.ServerViewNextPlayer_Implementation"); } + void ServerViewPrevPlayer_Implementation() { NativeCall(this, "APlayerController.ServerViewPrevPlayer_Implementation"); } + void SetAudioListenerOverride(USceneComponent* AttachedComponent, FVector Location, FRotator Rotation) { NativeCall(this, "APlayerController.SetAudioListenerOverride", AttachedComponent, Location, Rotation); } + void SetCinematicMode(bool bInCinematicMode, bool bHidePlayer, bool bAffectsHUD, bool bAffectsMovement, bool bAffectsTurning) { NativeCall(this, "APlayerController.SetCinematicMode", bInCinematicMode, bHidePlayer, bAffectsHUD, bAffectsMovement, bAffectsTurning); } + void SetCinematicMode(bool bInCinematicMode, bool bAffectsMovement, bool bAffectsTurning) { NativeCall(this, "APlayerController.SetCinematicMode", bInCinematicMode, bAffectsMovement, bAffectsTurning); } + void SetIgnoreLookInput(bool bNewLookInput) { NativeCall(this, "APlayerController.SetIgnoreLookInput", bNewLookInput); } + void SetIgnoreMoveInput(bool bNewMoveInput) { NativeCall(this, "APlayerController.SetIgnoreMoveInput", bNewMoveInput); } + void SetInitialLocationAndRotation(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "APlayerController.SetInitialLocationAndRotation", NewLocation, NewRotation); } + void SetName(FString* S) { NativeCall(this, "APlayerController.SetName", S); } + void SetNetSpeed(int NewSpeed) { NativeCall(this, "APlayerController.SetNetSpeed", NewSpeed); } + void SetPawn(APawn* InPawn) { NativeCall(this, "APlayerController.SetPawn", InPawn); } + void SetPlayer(UPlayer* InPlayer) { NativeCall(this, "APlayerController.SetPlayer", InPlayer); } + void SetSpawnLocation(FVector* NewLocation) { NativeCall(this, "APlayerController.SetSpawnLocation", NewLocation); } + void SetVirtualJoystickVisibility(bool bVisible) { NativeCall(this, "APlayerController.SetVirtualJoystickVisibility", bVisible); } + void SetupInputComponent() { NativeCall(this, "APlayerController.SetupInputComponent"); } + bool ShouldReplicateVoicePacketFrom(FUniqueNetId* Sender, char ShouldUseSuperRange, char* PlaybackFlags) { return NativeCall(this, "APlayerController.ShouldReplicateVoicePacketFrom", Sender, ShouldUseSuperRange, PlaybackFlags); } + bool ShouldShowMouseCursor() { return NativeCall(this, "APlayerController.ShouldShowMouseCursor"); } + void SmoothTargetViewRotation(APawn* TargetPawn, float DeltaSeconds) { NativeCall(this, "APlayerController.SmoothTargetViewRotation", TargetPawn, DeltaSeconds); } + void SpawnDefaultHUD() { NativeCall(this, "APlayerController.SpawnDefaultHUD"); } + void SpawnHUD(TSubclassOf NewHUDClass) { NativeCall>(this, "APlayerController.SpawnHUD", NewHUDClass); } + void SpawnPlayerCameraManager() { NativeCall(this, "APlayerController.SpawnPlayerCameraManager"); } + void StartFire(char FireModeNum) { NativeCall(this, "APlayerController.StartFire", FireModeNum); } + void StartSpectatingOnly() { NativeCall(this, "APlayerController.StartSpectatingOnly"); } + void StartTalking() { NativeCall(this, "APlayerController.StartTalking"); } + void StopTalking() { NativeCall(this, "APlayerController.StopTalking"); } + void SwitchLevel(FString* FURL) { NativeCall(this, "APlayerController.SwitchLevel", FURL); } + void TickPlayerInput(const float DeltaSeconds, const bool bGamePaused) { NativeCall(this, "APlayerController.TickPlayerInput", DeltaSeconds, bGamePaused); } + void ToggleSpeaking(bool bSpeaking, bool bUseSuperRange) { NativeCall(this, "APlayerController.ToggleSpeaking", bSpeaking, bUseSuperRange); } + void UnPossess() { NativeCall(this, "APlayerController.UnPossess"); } + void UpdateCameraManager(float DeltaSeconds) { NativeCall(this, "APlayerController.UpdateCameraManager", DeltaSeconds); } + void UpdatePing(float InPing) { NativeCall(this, "APlayerController.UpdatePing", InPing); } + void UpdateRotation(float DeltaTime) { NativeCall(this, "APlayerController.UpdateRotation", DeltaTime); } + void UpdateStateInputComponents() { NativeCall(this, "APlayerController.UpdateStateInputComponents"); } + void ViewAPlayer(int dir) { NativeCall(this, "APlayerController.ViewAPlayer", dir); } + bool WasInputKeyJustPressed(FKey Key) { return NativeCall(this, "APlayerController.WasInputKeyJustPressed", Key); } + bool WasInputKeyJustReleased(FKey Key) { return NativeCall(this, "APlayerController.WasInputKeyJustReleased", Key); } + void ClientCapBandwidth(int Cap) { NativeCall(this, "APlayerController.ClientCapBandwidth", Cap); } + void ClientClearCameraLensEffects() { NativeCall(this, "APlayerController.ClientClearCameraLensEffects"); } + void ClientCommitMapChange() { NativeCall(this, "APlayerController.ClientCommitMapChange"); } + void ClientEnableNetworkVoice(bool bEnable) { NativeCall(this, "APlayerController.ClientEnableNetworkVoice", bEnable); } + void ClientGameEnded(AActor* EndGameFocus, bool bIsWinner) { NativeCall(this, "APlayerController.ClientGameEnded", EndGameFocus, bIsWinner); } + void ClientGotoState(FName NewState) { NativeCall(this, "APlayerController.ClientGotoState", NewState); } + void ClientMessage(FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientMessage", S, Type, MsgLifeTime); } + void ClientMutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientMutePlayer", PlayerId); } + void ClientNetGUIDActorDeletion(FNetworkGUID TheNetGUID) { NativeCall(this, "APlayerController.ClientNetGUIDActorDeletion", TheNetGUID); } + void ClientNotifyReconnected(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientNotifyReconnected", NewPawn); } + void ClientNotifyRespawned(APawn* NewPawn, bool IsFirstSpawn) { NativeCall(this, "APlayerController.ClientNotifyRespawned", NewPawn, IsFirstSpawn); } + void ClientProcessNetExecCommand(AActor* ForActor, FName CommandName, FNetExecParams ExecParams) { NativeCall(this, "APlayerController.ClientProcessNetExecCommand", ForActor, CommandName, ExecParams); } + void ClientProcessNetExecCommandUnreliable(AActor* ForActor, FName CommandName, FNetExecParams ExecParams) { NativeCall(this, "APlayerController.ClientProcessNetExecCommandUnreliable", ForActor, CommandName, ExecParams); } + void ClientProcessSimpleNetExecCommandBP(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandBP", ForActor, CommandName); } + void ClientProcessSimpleNetExecCommandUnreliableBP(AActor* ForActor, FName CommandName) { NativeCall(this, "APlayerController.ClientProcessSimpleNetExecCommandUnreliableBP", ForActor, CommandName); } + void ClientRepObjRef(UObject* Object) { NativeCall(this, "APlayerController.ClientRepObjRef", Object); } + void ClientReset() { NativeCall(this, "APlayerController.ClientReset"); } + void ClientRestart(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRestart", NewPawn); } + void ClientRetryClientRestart(APawn* NewPawn) { NativeCall(this, "APlayerController.ClientRetryClientRestart", NewPawn); } + void ClientReturnToMainMenu(FString* ReturnReason) { NativeCall(this, "APlayerController.ClientReturnToMainMenu", ReturnReason); } + void ClientSetBlockOnAsyncLoading() { NativeCall(this, "APlayerController.ClientSetBlockOnAsyncLoading"); } + void ClientSetCameraFade(bool bEnableFading, FColor FadeColor, FVector2D FadeAlpha, float FadeTime, bool bFadeAudio) { NativeCall(this, "APlayerController.ClientSetCameraFade", bEnableFading, FadeColor, FadeAlpha, FadeTime, bFadeAudio); } + void ClientSetCinematicMode(bool bInCinematicMode, bool bAffectsMovement, bool bAffectsTurning, bool bAffectsHUD) { NativeCall(this, "APlayerController.ClientSetCinematicMode", bInCinematicMode, bAffectsMovement, bAffectsTurning, bAffectsHUD); } + void ClientSetHUD(TSubclassOf NewHUDClass) { NativeCall>(this, "APlayerController.ClientSetHUD", NewHUDClass); } + void ClientTeamMessage(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "APlayerController.ClientTeamMessage", SenderPlayerState, S, Type, MsgLifeTime); } + void ClientTeleportSucceeded(FVector TeleportLoc, FRotator TeleportRot, bool bSimpleTeleport) { NativeCall(this, "APlayerController.ClientTeleportSucceeded", TeleportLoc, TeleportRot, bSimpleTeleport); } + void ClientUnmutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ClientUnmutePlayer", PlayerId); } + void ClientUpdateLevelStreamingStatus(FName PackageName, bool bNewShouldBeLoaded, bool bNewShouldBeVisible, bool bNewShouldBlockOnLoad, int LODIndex) { NativeCall(this, "APlayerController.ClientUpdateLevelStreamingStatus", PackageName, bNewShouldBeLoaded, bNewShouldBeVisible, bNewShouldBlockOnLoad, LODIndex); } + void ClientVoiceHandshakeComplete() { NativeCall(this, "APlayerController.ClientVoiceHandshakeComplete"); } + void ClientWasKicked(FText* KickReason) { NativeCall(this, "APlayerController.ClientWasKicked", KickReason); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APlayerController.GetPrivateStaticClass", Package); } + void NetSpawnActorAtLocation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, USceneComponent*, int, FName>(this, "APlayerController.NetSpawnActorAtLocation", AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName); } + void ServerAcknowledgePossession(APawn* P) { NativeCall(this, "APlayerController.ServerAcknowledgePossession", P); } + void ServerCamera(FName NewMode) { NativeCall(this, "APlayerController.ServerCamera", NewMode); } + void ServerChangeName(FString* S) { NativeCall(this, "APlayerController.ServerChangeName", S); } + void ServerCheckClientPossession() { NativeCall(this, "APlayerController.ServerCheckClientPossession"); } + void ServerMutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerMutePlayer", PlayerId); } + void ServerNotifyLoadedWorld(FName WorldPackageName) { NativeCall(this, "APlayerController.ServerNotifyLoadedWorld", WorldPackageName); } + void ServerPause() { NativeCall(this, "APlayerController.ServerPause"); } + void ServerReceivedPlayerControllerAck() { NativeCall(this, "APlayerController.ServerReceivedPlayerControllerAck"); } + void ServerRestartPlayer() { NativeCall(this, "APlayerController.ServerRestartPlayer"); } + void ServerSetSpectatorLocation(FVector NewLoc) { NativeCall(this, "APlayerController.ServerSetSpectatorLocation", NewLoc); } + void ServerShortTimeout() { NativeCall(this, "APlayerController.ServerShortTimeout"); } + void ServerUnmutePlayer(FUniqueNetIdRepl PlayerId) { NativeCall(this, "APlayerController.ServerUnmutePlayer", PlayerId); } + void ServerUpdateLevelVisibility(FName PackageName, bool bIsVisible) { NativeCall(this, "APlayerController.ServerUpdateLevelVisibility", PackageName, bIsVisible); } + void ServerVerifyViewTarget() { NativeCall(this, "APlayerController.ServerVerifyViewTarget"); } + void ServerViewNextPlayer() { NativeCall(this, "APlayerController.ServerViewNextPlayer"); } + static void StaticRegisterNativesAPlayerController() { NativeCall(nullptr, "APlayerController.StaticRegisterNativesAPlayerController"); } +}; + +struct AShooterPlayerController : APlayerController +{ + FieldArray HeldFeatKeyField() { return { this, "AShooterPlayerController.HeldFeatKey" }; } + FieldArray HeldFeatKeyTimeField() { return { this, "AShooterPlayerController.HeldFeatKeyTime" }; } + FieldArray HeldItemSlotField() { return { this, "AShooterPlayerController.HeldItemSlot" }; } + FieldArray UsedItemSlotField() { return { this, "AShooterPlayerController.UsedItemSlot" }; } + FieldArray LastRepeatUseConsumableTimeField() { return { this, "AShooterPlayerController.LastRepeatUseConsumableTime" }; } + FieldArray HeldItemSlotTimeField() { return { this, "AShooterPlayerController.HeldItemSlotTime" }; } + FieldArray LastUsedItemSlotTimesField() { return { this, "AShooterPlayerController.LastUsedItemSlotTimes" }; } + int& MaxMapMarkersField() { return *GetNativePointerField(this, "AShooterPlayerController.MaxMapMarkers"); } + bool& bChangeingServerCoordsField() { return *GetNativePointerField(this, "AShooterPlayerController.bChangeingServerCoords"); } + FString& ChangeingServerCoordsMessageField() { return *GetNativePointerField(this, "AShooterPlayerController.ChangeingServerCoordsMessage"); } + TArray>& UnlockedSkillsField() { return *GetNativePointerField>*>(this, "AShooterPlayerController.UnlockedSkills"); } + FPrimalPlayerDataStruct* MyPlayerDataStructField() { return GetNativePointerField(this, "AShooterPlayerController.MyPlayerDataStruct"); } + bool& bGPSZoomOutField() { return *GetNativePointerField(this, "AShooterPlayerController.bGPSZoomOut"); } + bool& bGPSZoomInField() { return *GetNativePointerField(this, "AShooterPlayerController.bGPSZoomIn"); } + FVector& CurrentPlayerCharacterLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentPlayerCharacterLocation"); } + int& ModifedButtonCountField() { return *GetNativePointerField(this, "AShooterPlayerController.ModifedButtonCount"); } + APrimalStructurePlacer* StructurePlacerField() { return *GetNativePointerField(this, "AShooterPlayerController.StructurePlacer"); } + FVector& LastDeathLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeathLocation"); } + long double& LastDeathTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeathTime"); } + TWeakObjectPtr& LastDeathPrimalCharacterField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastDeathPrimalCharacter"); } + bool& bWasDeadField() { return *GetNativePointerField(this, "AShooterPlayerController.bWasDead"); } + long double& LastDeadCharacterDestructionTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDeadCharacterDestructionTime"); } + bool& bShowGameModeHUDField() { return *GetNativePointerField(this, "AShooterPlayerController.bShowGameModeHUD"); } + FVector2D& CurrentRadialDirection1Field() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentRadialDirection1"); } + FVector2D& CurrentRadialDirection2Field() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentRadialDirection2"); } + USoundCue* SelectSlotSoundField() { return *GetNativePointerField(this, "AShooterPlayerController.SelectSlotSound"); } + UPrimalLocalProfile* PrimalLocalProfileField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalLocalProfile"); } + int& CurrentGameModeMaxNumOfRespawnsField() { return *GetNativePointerField(this, "AShooterPlayerController.CurrentGameModeMaxNumOfRespawns"); } + FVector& LastRawInputDirField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRawInputDir"); } + FString& VivoxUsernameField() { return *GetNativePointerField(this, "AShooterPlayerController.VivoxUsername"); } + unsigned __int64& TargetOrbitedPlayerIdField() { return *GetNativePointerField(this, "AShooterPlayerController.TargetOrbitedPlayerId"); } + char& TargetOrbitedTrialCountField() { return *GetNativePointerField(this, "AShooterPlayerController.TargetOrbitedTrialCount"); } + TWeakObjectPtr& LastControlledPlayerCharacterField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastControlledPlayerCharacter"); } + TSubclassOf& StructurePlacerClassField() { return *GetNativePointerField*>(this, "AShooterPlayerController.StructurePlacerClass"); } + float& MaxUseDistanceField() { return *GetNativePointerField(this, "AShooterPlayerController.MaxUseDistance"); } + float& MaxUseCheckRadiusField() { return *GetNativePointerField(this, "AShooterPlayerController.MaxUseCheckRadius"); } + TArray& SavedSurvivorProfileSettingsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SavedSurvivorProfileSettings"); } + bool& bCachedOnlyShowOnlineTribeMembersField() { return *GetNativePointerField(this, "AShooterPlayerController.bCachedOnlyShowOnlineTribeMembers"); } + TArray>& RemoteViewingInventoriesField() { return *GetNativePointerField>*>(this, "AShooterPlayerController.RemoteViewingInventories"); } + TWeakObjectPtr& LastHeldUseActorField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastHeldUseActor"); } + TWeakObjectPtr& LastHeldUseHitComponentField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastHeldUseHitComponent"); } + int& LastHeldUseHitBodyIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.LastHeldUseHitBodyIndex"); } + bool& bUsePressedFromGamepadField() { return *GetNativePointerField(this, "AShooterPlayerController.bUsePressedFromGamepad"); } + TWeakObjectPtr& SpawnAtBedField() { return *GetNativePointerField*>(this, "AShooterPlayerController.SpawnAtBed"); } + APawn* TempLastLostPawnField() { return *GetNativePointerField(this, "AShooterPlayerController.TempLastLostPawn"); } + bool& bLockedInputDontRecenterMouseField() { return *GetNativePointerField(this, "AShooterPlayerController.bLockedInputDontRecenterMouse"); } + long double& LastRespawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRespawnTime"); } + bool& bIsFirstSpawnField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsFirstSpawn"); } + bool& bIsRespawningField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsRespawning"); } + bool& bIsVRPlayerField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsVRPlayer"); } + TSubclassOf& AwaitingHUDClassField() { return *GetNativePointerField*>(this, "AShooterPlayerController.AwaitingHUDClass"); } + FItemNetID& LastEquipedItemNetIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastEquipedItemNetID"); } + FItemNetID& LastUnequippedItemNetIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastUnequippedItemNetID"); } + __int64& LinkedPlayerIDField() { return *GetNativePointerField<__int64*>(this, "AShooterPlayerController.LinkedPlayerID"); } + bool& bDrawLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.bDrawLocation"); } + int& PlayerControllerNumField() { return *GetNativePointerField(this, "AShooterPlayerController.PlayerControllerNum"); } + FVector& LastTurnSpeedField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTurnSpeed"); } + long double& LastMultiUseInteractionTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastMultiUseInteractionTime"); } + float& LastTimeSentCarriedRotationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTimeSentCarriedRotation"); } + long double& LastTimePlayerRotationInputField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTimePlayerRotationInput"); } + FItemNetID& LastSteamItemIDToRemoveField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSteamItemIDToRemove"); } + FItemNetID& LastSteamItemIDToAddField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSteamItemIDToAdd"); } + bool& bConsumeItemSucceededField() { return *GetNativePointerField(this, "AShooterPlayerController.bConsumeItemSucceeded"); } + bool& bRefreshedInvetoryForRemoveField() { return *GetNativePointerField(this, "AShooterPlayerController.bRefreshedInvetoryForRemove"); } + bool& bServerRefreshStatusField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerRefreshStatus"); } + long double& LastRequesteDinoAncestorsTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRequesteDinoAncestorsTime"); } + long double& LastDiedMessageTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastDiedMessageTime"); } + long double& LastNotifiedTorpidityIncreaseTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastNotifiedTorpidityIncreaseTime"); } + long double& LastInvDropRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastInvDropRequestTime"); } + long double& LastHadPawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastHadPawnTime"); } + long double& LastChatMessageTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastChatMessageTime"); } + bool& bServerIsPaintingField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerIsPainting"); } + bool& bServerPaintingSuccessField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerPaintingSuccess"); } + float& TotalTimeOnLandField() { return *GetNativePointerField(this, "AShooterPlayerController.TotalTimeOnLand"); } + long double& LastTimePlayedSetSailMusicField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTimePlayedSetSailMusic"); } + long double& LastPlayedSetSailStingerTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastPlayedSetSailStingerTime"); } + float& LandIntervalForSetSailStingerField() { return *GetNativePointerField(this, "AShooterPlayerController.LandIntervalForSetSailStinger"); } + float& MinimumIntervalBetweenSetSailStingersField() { return *GetNativePointerField(this, "AShooterPlayerController.MinimumIntervalBetweenSetSailStingers"); } + long double& LastListenServerNotifyOutOfRangeTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastListenServerNotifyOutOfRangeTime"); } + int& SpectatorCycleIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.SpectatorCycleIndex"); } + TEnumAsByte& CurrentFastTravelTypeField() { return *GetNativePointerField*>(this, "AShooterPlayerController.CurrentFastTravelType"); } + bool& bSuppressAdminIconField() { return *GetNativePointerField(this, "AShooterPlayerController.bSuppressAdminIcon"); } + long double& WaitingForSpawnUITimeField() { return *GetNativePointerField(this, "AShooterPlayerController.WaitingForSpawnUITime"); } + float& ChatSpamWeightField() { return *GetNativePointerField(this, "AShooterPlayerController.ChatSpamWeight"); } + bool& bChatSpammedField() { return *GetNativePointerField(this, "AShooterPlayerController.bChatSpammed"); } + long double& EnteredSpectatingStateTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.EnteredSpectatingStateTime"); } + bool& bCommunicationPrivilegeFetchedField() { return *GetNativePointerField(this, "AShooterPlayerController.bCommunicationPrivilegeFetched"); } + bool& bPreventPaintingStreamingField() { return *GetNativePointerField(this, "AShooterPlayerController.bPreventPaintingStreaming"); } + long double& LastUsePressTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastUsePressTime"); } + TArray& PlayerAppIDsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.PlayerAppIDs"); } + TArray& NotifiedTribeWarIDsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.NotifiedTribeWarIDs"); } + TArray& NotifiedTribeWarNamesField() { return *GetNativePointerField*>(this, "AShooterPlayerController.NotifiedTribeWarNames"); } + int& ServerTribeLogLastLogIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.ServerTribeLogLastLogIndex"); } + int& ServerTribeLogLastTribeIDField() { return *GetNativePointerField(this, "AShooterPlayerController.ServerTribeLogLastTribeID"); } + bool& bFullyAuthenticatedField() { return *GetNativePointerField(this, "AShooterPlayerController.bFullyAuthenticated"); } + bool& bNotificationSettingsReceivedField() { return *GetNativePointerField(this, "AShooterPlayerController.bNotificationSettingsReceived"); } + FVector& LastViewLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastViewLocation"); } + bool& bHasGottenInitialSpawnLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasGottenInitialSpawnLocation"); } + bool& bClientReceivedTribeLogField() { return *GetNativePointerField(this, "AShooterPlayerController.bClientReceivedTribeLog"); } + TArray& CurrentTribeLogField() { return *GetNativePointerField*>(this, "AShooterPlayerController.CurrentTribeLog"); } + long double& LastTribeLogRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeLogRequestTime"); } + bool& bHasSurvivedOneDayField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasSurvivedOneDay"); } + bool& bHasReachedHighestPeakField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasReachedHighestPeak"); } + bool& bHasReachedLowestDepthField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasReachedLowestDepth"); } + TSet, FDefaultSetAllocator>& ServerCachedAchievementIDsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterPlayerController.ServerCachedAchievementIDs"); } + bool& bZoomingOutField() { return *GetNativePointerField(this, "AShooterPlayerController.bZoomingOut"); } + bool& bZoomingInField() { return *GetNativePointerField(this, "AShooterPlayerController.bZoomingIn"); } + long double& LastRPCStayAliveTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRPCStayAliveTime"); } + int& PlayerBadgeGroupField() { return *GetNativePointerField(this, "AShooterPlayerController.PlayerBadgeGroup"); } + long double& LastMultiUseTraceTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastMultiUseTraceTime"); } + bool& bTraveledSeamlesslyField() { return *GetNativePointerField(this, "AShooterPlayerController.bTraveledSeamlessly"); } + float& LastSeamlessTravelTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSeamlessTravelTime"); } + FVector& LastLargeMoveLocationField() { return *GetNativePointerField(this, "AShooterPlayerController.LastLargeMoveLocation"); } + long double& LastLargeMoveTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastLargeMoveTime"); } + long double& LastNotOnUnriddenDinoTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastNotOnUnriddenDinoTime"); } + long double& LastHitMarkerCharacterTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastHitMarkerCharacterTime"); } + bool& bLastHitMarkerCharacterAllyField() { return *GetNativePointerField(this, "AShooterPlayerController.bLastHitMarkerCharacterAlly"); } + long double& LastHitMarkerStructureTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastHitMarkerStructureTime"); } + bool& bLastHitMarkerStructureAllyField() { return *GetNativePointerField(this, "AShooterPlayerController.bLastHitMarkerStructureAlly"); } + float& HitMarkerScaleMultiplierField() { return *GetNativePointerField(this, "AShooterPlayerController.HitMarkerScaleMultiplier"); } + bool& bHitMarkerWasMeleeHitField() { return *GetNativePointerField(this, "AShooterPlayerController.bHitMarkerWasMeleeHit"); } + float& DoFSettingCurrentTimerField() { return *GetNativePointerField(this, "AShooterPlayerController.DoFSettingCurrentTimer"); } + float& DoFSettingTargetTimerField() { return *GetNativePointerField(this, "AShooterPlayerController.DoFSettingTargetTimer"); } + int& LastSpawnPointIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSpawnPointID"); } + int& LastSpawnRegionIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSpawnRegionIndex"); } + bool& bReceivedSubscribedAppsField() { return *GetNativePointerField(this, "AShooterPlayerController.bReceivedSubscribedApps"); } + long double& PossessedFirstPawnTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.PossessedFirstPawnTime"); } + long double& LastPinRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastPinRequestTime"); } + int& SnapPointCycleField() { return *GetNativePointerField(this, "AShooterPlayerController.SnapPointCycle"); } + FVector& LastSnapPointCyclePositionField() { return *GetNativePointerField(this, "AShooterPlayerController.LastSnapPointCyclePosition"); } + int& ViewingWheelCategoryField() { return *GetNativePointerField(this, "AShooterPlayerController.ViewingWheelCategory"); } + long double& ForceDrawCurrentGroupsUntilTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.ForceDrawCurrentGroupsUntilTime"); } + long double& LastRequestedPlaceStructureTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastRequestedPlaceStructureTime"); } + bool& bNextShowCharacterCreationUIDownloadField() { return *GetNativePointerField(this, "AShooterPlayerController.bNextShowCharacterCreationUIDownload"); } + bool& bForceHideGameplayUIField() { return *GetNativePointerField(this, "AShooterPlayerController.bForceHideGameplayUI"); } + long double& LastGamepadOpenRemoteInventoryTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastGamepadOpenRemoteInventoryTime"); } + bool& bIsGamepadActiveField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsGamepadActive"); } + bool& bClientIsDPCField() { return *GetNativePointerField(this, "AShooterPlayerController.bClientIsDPC"); } + long double& LastClientRequestTribeOnlineListTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastClientRequestTribeOnlineListTime"); } + long double& LastClientModifiedARKInventoryTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastClientModifiedARKInventoryTime"); } + TArray& ClientCachedTribeOnlineListField() { return *GetNativePointerField*>(this, "AShooterPlayerController.ClientCachedTribeOnlineList"); } + bool& bPreventDefaultCharacterItemsField() { return *GetNativePointerField(this, "AShooterPlayerController.bPreventDefaultCharacterItems"); } + float& SFXVolumeMultiplierField() { return *GetNativePointerField(this, "AShooterPlayerController.SFXVolumeMultiplier"); } + long double& LastTeleportedTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTeleportedTime"); } + unsigned __int64& LastConvertedPlayerIDField() { return *GetNativePointerField(this, "AShooterPlayerController.LastConvertedPlayerID"); } + FString& LastConvertedPlayerIDStringField() { return *GetNativePointerField(this, "AShooterPlayerController.LastConvertedPlayerIDString"); } + long double& LastShowExtendedInfoTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastShowExtendedInfoTime"); } + bool& bHasDisplayedSplitScreenMessageField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasDisplayedSplitScreenMessage"); } + UPrimalItem* LastTransferredToRemoteInventoryItemField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTransferredToRemoteInventoryItem"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& PendingResponseEquippedItemsQueueField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerController.PendingResponseEquippedItemsQueue"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& PendingRequestEquippedItemsQueueField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "AShooterPlayerController.PendingRequestEquippedItemsQueue"); } + bool& bIsViewingTributeInventoryField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsViewingTributeInventory"); } + bool& bDrawBlackBackgroundField() { return *GetNativePointerField(this, "AShooterPlayerController.bDrawBlackBackground"); } + TSubclassOf& CreativeModeBuffField() { return *GetNativePointerField*>(this, "AShooterPlayerController.CreativeModeBuff"); } + float& PrimalStatsCacheFlushIntervalField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalStatsCacheFlushInterval"); } + bool& bIsPrimalStatsTimerActiveField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsPrimalStatsTimerActive"); } + FPrimalStats& PrimalStatsCacheField() { return *GetNativePointerField(this, "AShooterPlayerController.PrimalStatsCache"); } + bool& bLocalCameraInVacuumSealedContainerOrRaftField() { return *GetNativePointerField(this, "AShooterPlayerController.bLocalCameraInVacuumSealedContainerOrRaft"); } + FAttachmentPoint& LastCycledSnapPointField() { return *GetNativePointerField(this, "AShooterPlayerController.LastCycledSnapPoint"); } + TArray& LastCycledSnapPointsField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LastCycledSnapPoints"); } + bool& bResetSnapPointField() { return *GetNativePointerField(this, "AShooterPlayerController.bResetSnapPoint"); } + bool& bNetIsCurrentlyFirstPersonField() { return *GetNativePointerField(this, "AShooterPlayerController.bNetIsCurrentlyFirstPerson"); } + bool& bLastSentNetIsCurrentlyFirstPersonField() { return *GetNativePointerField(this, "AShooterPlayerController.bLastSentNetIsCurrentlyFirstPerson"); } + TArray& AllowedBindingsInTransitionField() { return *GetNativePointerField*>(this, "AShooterPlayerController.AllowedBindingsInTransition"); } + bool& bRequestingFirstHomeServerField() { return *GetNativePointerField(this, "AShooterPlayerController.bRequestingFirstHomeServer"); } + FString& LastPlayerFirstHomeServerIdStrField() { return *GetNativePointerField(this, "AShooterPlayerController.LastPlayerFirstHomeServerIdStr"); } + bool& bIsQueryingCurrentServerIdField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsQueryingCurrentServerId"); } + float& DistanceToDisplayTreasureField() { return *GetNativePointerField(this, "AShooterPlayerController.DistanceToDisplayTreasure"); } + float& DistanceToCollectTreasureField() { return *GetNativePointerField(this, "AShooterPlayerController.DistanceToCollectTreasure"); } + bool& bIsAltHeldField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsAltHeld"); } + bool& bIsRightShoulderHeldField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsRightShoulderHeld"); } + TArray& ShownTreasuresField() { return *GetNativePointerField*>(this, "AShooterPlayerController.ShownTreasures"); } + long double& JoinedAtField() { return *GetNativePointerField(this, "AShooterPlayerController.JoinedAt"); } + long double& OverSubscriptionHandingAtField() { return *GetNativePointerField(this, "AShooterPlayerController.OverSubscriptionHandingAt"); } + long double& TimeOfLastMapPressField() { return *GetNativePointerField(this, "AShooterPlayerController.TimeOfLastMapPress"); } + int& LastTutorialHintTextFrameField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTutorialHintTextFrame"); } + FString& LastTutorialHintTextField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTutorialHintText"); } + long double& ClientLastStartedFastTravelTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientLastStartedFastTravelTime"); } + unsigned int& HomeServerIdField() { return *GetNativePointerField(this, "AShooterPlayerController.HomeServerId"); } + UStaticMesh* LightingCheckerMeshField() { return *GetNativePointerField(this, "AShooterPlayerController.LightingCheckerMesh"); } + UMaterial* LightingCheckerMaterialField() { return *GetNativePointerField(this, "AShooterPlayerController.LightingCheckerMaterial"); } + FVector& LightingCheckerScaleField() { return *GetNativePointerField(this, "AShooterPlayerController.LightingCheckerScale"); } + bool& bAdminPreventFastClaimingField() { return *GetNativePointerField(this, "AShooterPlayerController.bAdminPreventFastClaiming"); } + bool& bIsOnlyViewingRemoteInventoryField() { return *GetNativePointerField(this, "AShooterPlayerController.bIsOnlyViewingRemoteInventory"); } + bool& bHasViewOnlyInventoryOpenField() { return *GetNativePointerField(this, "AShooterPlayerController.bHasViewOnlyInventoryOpen"); } + bool& bRemovePlayerDataOnSeamlessTravelField() { return *GetNativePointerField(this, "AShooterPlayerController.bRemovePlayerDataOnSeamlessTravel"); } + int& ClientLastRequestFullMapEntitiesChangeIDField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientLastRequestFullMapEntitiesChangeID"); } + int& ClientLastRequestFullMapEntitiesCountField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientLastRequestFullMapEntitiesCount"); } + int& PreviousTribeEntitiesRequestedTargetingTeamField() { return *GetNativePointerField(this, "AShooterPlayerController.PreviousTribeEntitiesRequestedTargetingTeam"); } + long double& ClientLastRefreshNeedingMapEntitiesTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientLastRefreshNeedingMapEntitiesTime"); } + long double& LastTimeTribeEntitiesRequestedField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTimeTribeEntitiesRequested"); } + bool& bClientIsReceivingMapEntitiesField() { return *GetNativePointerField(this, "AShooterPlayerController.bClientIsReceivingMapEntities"); } + TArray& LocalCachedMapEntitiesField() { return *GetNativePointerField*>(this, "AShooterPlayerController.LocalCachedMapEntities"); } + float& ClientLastRequestedTribeDataTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientLastRequestedTribeDataTime"); } + bool& bClientTribeDataDirtyField() { return *GetNativePointerField(this, "AShooterPlayerController.bClientTribeDataDirty"); } + int& LastTribeDataChangeCountField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeDataChangeCount"); } + int& LastTribeMemberDataChangeCountField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeMemberDataChangeCount"); } + int& LastTribeRankGroupRequestChangeCountField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeRankGroupRequestChangeCount"); } + int& ClientCurrentTribeGroupRankIndexField() { return *GetNativePointerField(this, "AShooterPlayerController.ClientCurrentTribeGroupRankIndex"); } + int& TribeDataChangeCountField() { return *GetNativePointerField(this, "AShooterPlayerController.TribeDataChangeCount"); } + int& LastTribeMembersLastOnlineChangeCountField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeMembersLastOnlineChangeCount"); } + long double& LastTribeMembersPresenceRequestTimeField() { return *GetNativePointerField(this, "AShooterPlayerController.LastTribeMembersPresenceRequestTime"); } + int& LastIslandInfoVersionField() { return *GetNativePointerField(this, "AShooterPlayerController.LastIslandInfoVersion"); } + bool& bForceTeleportClientToHostField() { return *GetNativePointerField(this, "AShooterPlayerController.bForceTeleportClientToHost"); } + TArray MessageQueueField() { return *GetNativePointerField*>(this, "AShooterPlayerController.MessageQueue"); } + bool& bPendingServerCheckField() { return *GetNativePointerField(this, "AShooterPlayerController.bPendingServerCheck"); } + bool& bServerAllowCommunicationField() { return *GetNativePointerField(this, "AShooterPlayerController.bServerAllowCommunication"); } + TMap >& ConnectedVoiceChannelsField() { return *GetNativePointerField >*>(this, "AShooterPlayerController.ConnectedVoiceChannels"); } + long double& LastVivoxPositionalUpdateField() { return *GetNativePointerField(this, "AShooterPlayerController.LastVivoxPositionalUpdate"); } + + // Bit fields + + BitFieldValue bInfiniteAmmo() { return { this, "AShooterPlayerController.bInfiniteAmmo" }; } + BitFieldValue bGodMode() { return { this, "AShooterPlayerController.bGodMode" }; } + BitFieldValue bIsHoldingAltInput() { return { this, "AShooterPlayerController.bIsHoldingAltInput" }; } + BitFieldValue bHideGun() { return { this, "AShooterPlayerController.bHideGun" }; } + BitFieldValue bEnemyInvisible() { return { this, "AShooterPlayerController.bEnemyInvisible" }; } + BitFieldValue bIsAdminPauseUIEnabled() { return { this, "AShooterPlayerController.bIsAdminPauseUIEnabled" }; } + BitFieldValue bUsePressed() { return { this, "AShooterPlayerController.bUsePressed" }; } + BitFieldValue bForceCraftButtonHeld() { return { this, "AShooterPlayerController.bForceCraftButtonHeld" }; } + BitFieldValue bGamepadHotbarModifierPressed() { return { this, "AShooterPlayerController.bGamepadHotbarModifierPressed" }; } + BitFieldValue bGamepadSpecialAttackHeld() { return { this, "AShooterPlayerController.bGamepadSpecialAttackHeld" }; } + BitFieldValue bWasTurnAtRateCalled() { return { this, "AShooterPlayerController.bWasTurnAtRateCalled" }; } + BitFieldValue bIsMapPressed() { return { this, "AShooterPlayerController.bIsMapPressed" }; } + BitFieldValue bCheckForMapSecondPress() { return { this, "AShooterPlayerController.bCheckForMapSecondPress" }; } + BitFieldValue bForceSingleWieldHeld() { return { this, "AShooterPlayerController.bForceSingleWieldHeld" }; } + BitFieldValue bHoldingSkipTutorialButton() { return { this, "AShooterPlayerController.bHoldingSkipTutorialButton" }; } + BitFieldValue bBattlEyePlayerHasGottenInGameFully() { return { this, "AShooterPlayerController.bBattlEyePlayerHasGottenInGameFully" }; } + BitFieldValue bAdminShowAllPlayers() { return { this, "AShooterPlayerController.bAdminShowAllPlayers" }; } + + // Functions + + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterPlayerController.GetPrivateStaticClass"); } + void AcknowledgePossession(APawn* P) { NativeCall(this, "AShooterPlayerController.AcknowledgePossession", P); } + void ActivateMultiUseSelection(bool bIsFromUseRelease) { NativeCall(this, "AShooterPlayerController.ActivateMultiUseSelection", bIsFromUseRelease); } + void AddExperience(float HowMuch, bool fromTribeShare, bool bPreventSharingWithTribe) { NativeCall(this, "AShooterPlayerController.AddExperience", HowMuch, fromTribeShare, bPreventSharingWithTribe); } + void AdminCheat(FString* Msg) { NativeCall(this, "AShooterPlayerController.AdminCheat", Msg); } + void AllowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.AllowPlayerToJoinNoCheck", PlayerId); } + bool AllowTribeGroupPermission(ETribeGroupPermission::Type TribeGroupPermission, UObject* OnObject) { return NativeCall(this, "AShooterPlayerController.AllowTribeGroupPermission", TribeGroupPermission, OnObject); } + void ApplyDepthOfFieldSetting(int Index, float CurrentTimer) { NativeCall(this, "AShooterPlayerController.ApplyDepthOfFieldSetting", Index, CurrentTimer); } + void AsyncQueryAndProcessCurrentServerIdSpawning() { NativeCall(this, "AShooterPlayerController.AsyncQueryAndProcessCurrentServerIdSpawning"); } + void AutoCycle(float Duration) { NativeCall(this, "AShooterPlayerController.AutoCycle", Duration); } + void BPClientNotifyEditText(TSubclassOf ForObjectClass, int ExtraID1, int ExtraID2, UObject* ForObject) { NativeCall, int, int, UObject*>(this, "AShooterPlayerController.BPClientNotifyEditText", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void BPGetAimedUseActor(AActor** AimedUseActor, UActorComponent** AimedUseComponent, int* HitBoxIndex) { NativeCall(this, "AShooterPlayerController.BPGetAimedUseActor", AimedUseActor, AimedUseComponent, HitBoxIndex); } + void BPGetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "AShooterPlayerController.BPGetPlayerViewPoint", out_Location, out_Rotation); } + void BanPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.BanPlayer", PlayerSteamName); } + AActor* BaseGetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.BaseGetPlayerCharacter"); } + void BeginInactiveState() { NativeCall(this, "AShooterPlayerController.BeginInactiveState"); } + void BeginPlay() { NativeCall(this, "AShooterPlayerController.BeginPlay"); } + void BeginSpectatingState() { NativeCall(this, "AShooterPlayerController.BeginSpectatingState"); } + void CCC() { NativeCall(this, "AShooterPlayerController.CCC"); } + bool CanCommunicateVoiceWithRadio(AShooterPlayerController* otherPC) { return NativeCall(this, "AShooterPlayerController.CanCommunicateVoiceWithRadio", otherPC); } + bool CanDispatchInputDelegate(FName BindingName, TEnumAsByte KeyEvent) { return NativeCall>(this, "AShooterPlayerController.CanDispatchInputDelegate", BindingName, KeyEvent); } + bool CanDoPlayerCharacterInput(bool bIgnoreCurrentWeapon, bool bWeaponForcesMountedWeaponry) { return NativeCall(this, "AShooterPlayerController.CanDoPlayerCharacterInput", bIgnoreCurrentWeapon, bWeaponForcesMountedWeaponry); } + bool CanRespec() { return NativeCall(this, "AShooterPlayerController.CanRespec"); } + void CancelMultiUseSelection() { NativeCall(this, "AShooterPlayerController.CancelMultiUseSelection"); } + void ChangeState(FName NewState) { NativeCall(this, "AShooterPlayerController.ChangeState", NewState); } + void Cheat(FString* Msg) { NativeCall(this, "AShooterPlayerController.Cheat", Msg); } + void CheckCheatsPassword_Implementation(FString* Pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword_Implementation", Pass); } + void CheckForPlayerInventory() { NativeCall(this, "AShooterPlayerController.CheckForPlayerInventory"); } + void CheckRequestSpectator_Implementation(FString* InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator_Implementation", InSpectatorPass); } + void CheckToOpenMapAllTimer() { NativeCall(this, "AShooterPlayerController.CheckToOpenMapAllTimer"); } + void CheckToOpenMapOnlyTimer() { NativeCall(this, "AShooterPlayerController.CheckToOpenMapOnlyTimer"); } + void CheckforOrbiting() { NativeCall(this, "AShooterPlayerController.CheckforOrbiting"); } + bool CheckforOrbitingInstantaneously() { return NativeCall(this, "AShooterPlayerController.CheckforOrbitingInstantaneously"); } + void ClearTutorials() { NativeCall(this, "AShooterPlayerController.ClearTutorials"); } + void ClientAbortTravel_Implementation(unsigned int ServerID, unsigned __int64 ServerSteamId) { NativeCall(this, "AShooterPlayerController.ClientAbortTravel_Implementation", ServerID, ServerSteamId); } + void ClientAddActorItemToFolder_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString* ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } + void ClientAddActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem_Implementation", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } + void ClientAddFloatingDamageText_Implementation(FVector_NetQuantize AtLocation, int DamageAmount, int FromTeamID, bool bForceText) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingDamageText_Implementation", AtLocation, DamageAmount, FromTeamID, bForceText); } + void ClientAddFloatingText_Implementation(FVector_NetQuantize AtLocation, FString* FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime, bool bForce) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingText_Implementation", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime, bForce); } + void ClientAddFolderToInventoryComponent_Implementation(UPrimalInventoryComponent* forInventory, FString* NewCustomFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ClientAddFolderToInventoryComponent_Implementation", forInventory, NewCustomFolderName, InventoryCompType); } + void ClientAfterServerChange_Implementation() { NativeCall(this, "AShooterPlayerController.ClientAfterServerChange_Implementation"); } + void ClientBeforeServerChange_Implementation(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientBeforeServerChange_Implementation", Message); } + void ClientChatMessage_Implementation(FChatMessage Chat) { NativeCall(this, "AShooterPlayerController.ClientChatMessage_Implementation", Chat); } + void ClientCollectedAchievementItem_Implementation(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientCollectedAchievementItem_Implementation", ItemClass); } + void ClientDoMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse_Implementation", ForObject, useIndex); } + void ClientDrawDebugSphere_Implementation(TArray* Locs, float Radius, int Segments, FColor DrawColor) { NativeCall*, float, int, FColor>(this, "AShooterPlayerController.ClientDrawDebugSphere_Implementation", Locs, Radius, Segments, DrawColor); } + void ClientEndReceivingTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ClientEndReceivingTribeLog_Implementation"); } + void ClientFailedRemoveSaddle_Implementation() { NativeCall(this, "AShooterPlayerController.ClientFailedRemoveSaddle_Implementation"); } + void ClientFailedToAddItemFromArkInventory_Implementation() { NativeCall(this, "AShooterPlayerController.ClientFailedToAddItemFromArkInventory_Implementation"); } + void ClientFeatActivationResult_Implementation(TSubclassOf FeatClass, int ActivationResult) { NativeCall, int>(this, "AShooterPlayerController.ClientFeatActivationResult_Implementation", FeatClass, ActivationResult); } + void ClientFinishedReceivingActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems_Implementation", forInventory, bEquippedItems); } + void ClientFinishedUseSlotTimeRemaining_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientFinishedUseSlotTimeRemaining_Implementation", forInventory, itemID); } + void ClientForceCacheTattooPainting_Implementation() { NativeCall(this, "AShooterPlayerController.ClientForceCacheTattooPainting_Implementation"); } + void ClientGetMessageOfTheDay_Implementation(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientGetMessageOfTheDay_Implementation", Message); } + void ClientGiveFOW_Implementation() { NativeCall(this, "AShooterPlayerController.ClientGiveFOW_Implementation"); } + void ClientGotoMainMenuListSessions_Implementation() { NativeCall(this, "AShooterPlayerController.ClientGotoMainMenuListSessions_Implementation"); } + void ClientHUDNotificationTypeParams_Implementation(int MessageType, int MessageParam1, int MessageParam2, UObject* ObjectParam1, FString* StringParam1, float floatParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams_Implementation", MessageType, MessageParam1, MessageParam2, ObjectParam1, StringParam1, floatParam1); } + void ClientInformHomeServerFull_Implementation() { NativeCall(this, "AShooterPlayerController.ClientInformHomeServerFull_Implementation"); } + void ClientInformNeedsNewHomeServer_Implementation() { NativeCall(this, "AShooterPlayerController.ClientInformNeedsNewHomeServer_Implementation"); } + void ClientInitHUDScenes_Implementation() { NativeCall(this, "AShooterPlayerController.ClientInitHUDScenes_Implementation"); } + void ClientInsertActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem_Implementation", forInventory, itemInfo, InsertAfterItemID); } + void ClientJoinVivoxChannel_Implementation(FString* JoinChannelVAT, FString* ChannelName, int AtlasVoiceChannelTypeAsInt, int AttenuationModelAsInt32, float MaxDistance, float MinDistance, float Rolloff) { NativeCall(this, "AShooterPlayerController.ClientJoinVivoxChannel_Implementation", JoinChannelVAT, ChannelName, AtlasVoiceChannelTypeAsInt, AttenuationModelAsInt32, MaxDistance, MinDistance, Rolloff); } + void ClientLoginToVivox_Implementation(FString* LoginVAT, FString* VivoxUsername) { NativeCall(this, "AShooterPlayerController.ClientLoginToVivox_Implementation", LoginVAT, VivoxUsername); } + void ClientMarkSeamlessActors_Implementation(TArray* ActorsWhichWillTravelSeamlessly, unsigned int DestServerId, EFastTravelType FastTravelType, float GridTravelToPosX, float GridTravelToPosY, float GridTravelToPosZ) { NativeCall*, unsigned int, EFastTravelType, float, float, float>(this, "AShooterPlayerController.ClientMarkSeamlessActors_Implementation", ActorsWhichWillTravelSeamlessly, DestServerId, FastTravelType, GridTravelToPosX, GridTravelToPosY, GridTravelToPosZ); } + void ClientNetReceiveMapEntities_Implementation(TArray* TribeEntities) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveMapEntities_Implementation", TribeEntities); } + void ClientNetReceiveTribeMembersFinished_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNetReceiveTribeMembersFinished_Implementation"); } + void ClientNetReceiveTribeMembersLastOnlineAt_Implementation(TArray* MembersLastOnlineAt) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersLastOnlineAt_Implementation", MembersLastOnlineAt); } + void ClientNetReceiveTribeMembersPlayerDataID_Implementation(TArray* MembersPlayerDataID) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersPlayerDataID_Implementation", MembersPlayerDataID); } + void ClientNetReceiveTribeMembersPlayerName_Implementation(TArray* MembersPlayerName) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersPlayerName_Implementation", MembersPlayerName); } + void ClientNetReceiveTribeMembersRankGroupId_Implementation(TArray* MembersRankGroupId) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersRankGroupId_Implementation", MembersRankGroupId); } + void ClientNetReceiveTribeTribeAdmins_Implementation(TArray* TribeAdmins) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeTribeAdmins_Implementation", TribeAdmins); } + void ClientNetStartReceivingMapEntities_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNetStartReceivingMapEntities_Implementation"); } + void ClientNetStopReceivingMapEntities_Implementation(int ServerMapEntitiesChangeID) { NativeCall(this, "AShooterPlayerController.ClientNetStopReceivingMapEntities_Implementation", ServerMapEntitiesChangeID); } + void ClientNotifyAdmin_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyAdmin_Implementation"); } + void ClientNotifyCantHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHarvest_Implementation"); } + void ClientNotifyCantHitHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHitHarvest_Implementation"); } + void ClientNotifyDefeatedDino_Implementation(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyDefeatedDino_Implementation", DinoClass); } + void ClientNotifyDinoDeath_Implementation(FString* DinoName, FString* AttackerName, TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyDinoDeath_Implementation", DinoName, AttackerName, DinoClass); } + void ClientNotifyDinoKill_Implementation(APrimalDinoCharacter* InstigatingPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill_Implementation", InstigatingPawn, VictimPawn); } + void ClientNotifyEditText_Implementation(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ClientNotifyEditText_Implementation", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ClientNotifyHitHarvest_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyHitHarvest_Implementation"); } + void ClientNotifyLevelUp_Implementation(APrimalCharacter* ForChar, int NewLevel) { NativeCall(this, "AShooterPlayerController.ClientNotifyLevelUp_Implementation", ForChar, NewLevel); } + void ClientNotifyListenServerOutOfRange_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyListenServerOutOfRange_Implementation"); } + void ClientNotifyMessageOfTheDay_Implementation(FString* Message, float TimeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay_Implementation", Message, TimeToDisplay); } + void ClientNotifyPaintFinished_Implementation(bool bSuccess) { NativeCall(this, "AShooterPlayerController.ClientNotifyPaintFinished_Implementation", bSuccess); } + void ClientNotifyPlayerDeathReason_Implementation(FString* ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason_Implementation", ReasonString); } + void ClientNotifyPlayerDeath_Implementation(APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeath_Implementation", InstigatingPawn, DamageCauser); } + void ClientNotifyPlayerKill_Implementation(AActor* PlayerPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill_Implementation", PlayerPawn, VictimPawn); } + void ClientNotifyReconnected_Implementation(APawn* NewPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyReconnected_Implementation", NewPawn); } + void ClientNotifyRemotePlayerDeath_Implementation(FString* PlayerName, FString* AttackerName) { NativeCall(this, "AShooterPlayerController.ClientNotifyRemotePlayerDeath_Implementation", PlayerName, AttackerName); } + void ClientNotifyRespawned_Implementation(APawn* NewPawn, bool IsFirstSpawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyRespawned_Implementation", NewPawn, IsFirstSpawn); } + void ClientNotifySummonedDino_Implementation(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifySummonedDino_Implementation", DinoClass); } + void ClientNotifyTamedDino_Implementation(TSubclassOf DinoClass, FString* NameOveride, int Level) { NativeCall, FString*, int>(this, "AShooterPlayerController.ClientNotifyTamedDino_Implementation", DinoClass, NameOveride, Level); } + void ClientNotifyTorpidityIncrease_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyTorpidityIncrease_Implementation"); } + void ClientNotifyTribeDataUpdated_Implementation() { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeDataUpdated_Implementation"); } + void ClientNotifyTribeXP_Implementation(float HowMuch) { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeXP_Implementation", HowMuch); } + void ClientNotifyUnlockHairStyleOrEmote_Implementation(FName HairstyleOrEmoteName) { NativeCall(this, "AShooterPlayerController.ClientNotifyUnlockHairStyleOrEmote_Implementation", HairstyleOrEmoteName); } + void ClientNotifyUnlockedEngram_Implementation(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyUnlockedEngram_Implementation", ItemClass); } + void ClientNotifyUpgradedItem_Implementation(UPrimalItem* UpgradedItem) { NativeCall(this, "AShooterPlayerController.ClientNotifyUpgradedItem_Implementation", UpgradedItem); } + void ClientOnFastTravelFailed_Implementation() { NativeCall(this, "AShooterPlayerController.ClientOnFastTravelFailed_Implementation"); } + void ClientOnReceivedCaptainOrder_Implementation(ECaptainOrder::Type ReceivedOrder, FVector TargetLocation, bool bIsFromCaptain) { NativeCall(this, "AShooterPlayerController.ClientOnReceivedCaptainOrder_Implementation", ReceivedOrder, TargetLocation, bIsFromCaptain); } + void ClientPlayLocalSound_Implementation(USoundBase* aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound_Implementation", aSound, bAttach); } + void ClientReceiveDinoAncestors_Implementation(APrimalDinoCharacter* ForDino, TArray* DinoAncestors, TArray* DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall*, TArray*, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors_Implementation", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } + void ClientReceiveMyTribeOnlineList_Implementation(TArray* OnlinePlayerIDs) { NativeCall*>(this, "AShooterPlayerController.ClientReceiveMyTribeOnlineList_Implementation", OnlinePlayerIDs); } + void ClientReceiveOriginalHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterPlayerController.ClientReceiveOriginalHairColor_Implementation", HairColor); } + void ClientReceiveStructureCraftingStatItem_Implementation(APrimalStructure* ForStructure, FItemNetInfo ItemInfo) { NativeCall(this, "AShooterPlayerController.ClientReceiveStructureCraftingStatItem_Implementation", ForStructure, ItemInfo); } + void ClientReceiveTribeRankGroup_Implementation(int GroupRankIndex) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeRankGroup_Implementation", GroupRankIndex); } + void ClientRemoveActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, bool showHUDMessage) { NativeCall(this, "AShooterPlayerController.ClientRemoveActorItem_Implementation", forInventory, itemID, showHUDMessage); } + void ClientRemovedItemFromSlot_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientRemovedItemFromSlot_Implementation", forInventory, itemID); } + void ClientReplicateTravelledObjects_Implementation(TArray* Objects) { NativeCall*>(this, "AShooterPlayerController.ClientReplicateTravelledObjects_Implementation", Objects); } + void ClientResetRespawningFlag_Implementation() { NativeCall(this, "AShooterPlayerController.ClientResetRespawningFlag_Implementation"); } + void ClientReset_Implementation() { NativeCall(this, "AShooterPlayerController.ClientReset_Implementation"); } + void ClientSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ClientSendArkDataPayloadEnd_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, unsigned __int64 PlayerDataID) { NativeCall(this, "AShooterPlayerController.ClientSendArkDataPayloadEnd_Implementation", ID, ArkDataType, PlayerDataID); } + void ClientSendArkDataPayload_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ClientSendArkDataPayload_Implementation", ID, ArkDataType, DataBytes); } + void ClientServerChatDirectMessage_Implementation(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage_Implementation", MessageText, MessageColor, bIsBold); } + void ClientServerChatMessage_Implementation(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatMessage_Implementation", MessageText, MessageColor, bIsBold); } + void ClientServerNotificationSingle_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int MessageTypeID) { NativeCall(this, "AShooterPlayerController.ClientServerNotificationSingle_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, MessageTypeID); } + void ClientServerNotification_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientServerSOTFNotificationCustom_Implementation(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom_Implementation", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientSetCheatStatus_Implementation(bool bEnable) { NativeCall(this, "AShooterPlayerController.ClientSetCheatStatus_Implementation", bEnable); } + void ClientSetControlRotation_Implementation(FRotator NewRotation) { NativeCall(this, "AShooterPlayerController.ClientSetControlRotation_Implementation", NewRotation); } + void ClientSetHUDAndInitUIScenes_Implementation(TSubclassOf NewHUDClass) { NativeCall>(this, "AShooterPlayerController.ClientSetHUDAndInitUIScenes_Implementation", NewHUDClass); } + void ClientSetSpectatorLocation_Implementation(FVector NewLocation) { NativeCall(this, "AShooterPlayerController.ClientSetSpectatorLocation_Implementation", NewLocation); } + void ClientShowCharacterCreationUI_Implementation(bool bShowDownloadCharacter) { NativeCall(this, "AShooterPlayerController.ClientShowCharacterCreationUI_Implementation", bShowDownloadCharacter); } + void ClientShowPaintingUI_Implementation(UObject* ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI_Implementation", ObjectToPaint); } + void ClientShowSpawnUI_Implementation(float Delay) { NativeCall(this, "AShooterPlayerController.ClientShowSpawnUI_Implementation", Delay); } + void ClientStartReceivingActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientStartReceivingActorItems_Implementation", forInventory, bEquippedItems); } + void ClientStartReceivingTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ClientStartReceivingTribeLog_Implementation"); } + void ClientStartSurfaceCameraForPassenger_Implementation(float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "AShooterPlayerController.ClientStartSurfaceCameraForPassenger_Implementation", yaw, pitch, roll, bInvertTurnInput); } + void ClientStartTravelling_Implementation(unsigned int ServerID, unsigned __int64 ServerSteamId, unsigned __int64 TravelLog, bool UsingBattlEye) { NativeCall(this, "AShooterPlayerController.ClientStartTravelling_Implementation", ServerID, ServerSteamId, TravelLog, UsingBattlEye); } + void ClientStartingFastTravel_Implementation() { NativeCall(this, "AShooterPlayerController.ClientStartingFastTravel_Implementation"); } + void ClientStopLocalSound_Implementation(USoundBase* aSound) { NativeCall(this, "AShooterPlayerController.ClientStopLocalSound_Implementation", aSound); } + void ClientSwapActorItems_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ClientSwapActorItems_Implementation", forInventory, itemID1, itemID2); } + void ClientSyncCurrentSublevels_Finish_Implementation() { NativeCall(this, "AShooterPlayerController.ClientSyncCurrentSublevels_Finish_Implementation"); } + void ClientSyncCurrentSublevels_RecieveData_Implementation(TArray* CurrentData) { NativeCall*>(this, "AShooterPlayerController.ClientSyncCurrentSublevels_RecieveData_Implementation", CurrentData); } + void ClientSyncCurrentSublevels_Start_Implementation() { NativeCall(this, "AShooterPlayerController.ClientSyncCurrentSublevels_Start_Implementation"); } + void ClientTeamMessage_Implementation(APlayerState* SenderPlayerState, FString* S, FName Type, float MsgLifeTime) { NativeCall(this, "AShooterPlayerController.ClientTeamMessage_Implementation", SenderPlayerState, S, Type, MsgLifeTime); } + void ClientTeleportSpectator_Implementation(FVector Location, unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ClientTeleportSpectator_Implementation", Location, PlayerID); } + void ClientTeleportSucceeded_Implementation(FVector TeleportLoc, FRotator TeleportRot, bool bSimpleTeleport) { NativeCall(this, "AShooterPlayerController.ClientTeleportSucceeded_Implementation", TeleportLoc, TeleportRot, bSimpleTeleport); } + void ClientUnlockAchievement_Implementation(FString* AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement_Implementation", AchievementID); } + void ClientUnlockExplorerNote_Implementation(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ClientUnlockExplorerNote_Implementation", ExplorerNoteIndex); } + void ClientUnmarkSeamlessActors_Implementation() { NativeCall(this, "AShooterPlayerController.ClientUnmarkSeamlessActors_Implementation"); } + void ClientUpdateGroupInfo_Implementation(TArray* GroupInfos, APrimalRaft* forRaft) { NativeCall*, APrimalRaft*>(this, "AShooterPlayerController.ClientUpdateGroupInfo_Implementation", GroupInfos, forRaft); } + void ClientUpdateInventoryCraftQueue_Implementation(UPrimalInventoryComponent* forInventory, TArray* CraftQueueEntries) { NativeCall*>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue_Implementation", forInventory, CraftQueueEntries); } + void ClientUpdateItemDurability_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, float ItemDurability) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemDurability_Implementation", forInventory, itemID, ItemDurability); } + void ClientUpdateItemQuantity_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int ItemQuantity) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemQuantity_Implementation", forInventory, itemID, ItemQuantity); } + void ClientUpdateItemSpoilingTimes_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, long double NextSpoilingTime, long double LastSpoilingTime) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemSpoilingTimes_Implementation", forInventory, itemID, NextSpoilingTime, LastSpoilingTime); } + void ClientUpdateItemWeaponClipAmmo_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int Ammo) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemWeaponClipAmmo_Implementation", forInventory, itemID, Ammo); } + void ClientUpdateUnlockedSkills_Implementation(TArray>* NetUnlockedSkills) { NativeCall>*>(this, "AShooterPlayerController.ClientUpdateUnlockedSkills_Implementation", NetUnlockedSkills); } + void ClientUsedActorItem_Implementation(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientUsedActorItem_Implementation", forInventory, itemID); } + void Client_CaptainExtraActions_Implementation(ECaptainOtherActions::Type RequestedAction, APrimalStructureSeating_DriverSeat* RequestedFromSeat, int CurrentValue, TSubclassOf SelectedAmmoType) { NativeCall>(this, "AShooterPlayerController.Client_CaptainExtraActions_Implementation", RequestedAction, RequestedFromSeat, CurrentValue, SelectedAmmoType); } + void CloseFeatsSelection() { NativeCall(this, "AShooterPlayerController.CloseFeatsSelection"); } + void CollectNearbyTreasures() { NativeCall(this, "AShooterPlayerController.CollectNearbyTreasures"); } + FString* ConsoleCommand(FString* result, FString* Command, bool bWriteToLog) { return NativeCall(this, "AShooterPlayerController.ConsoleCommand", result, Command, bWriteToLog); } + void CopyCoordsToClipboard() { NativeCall(this, "AShooterPlayerController.CopyCoordsToClipboard"); } + void CreateSpawnUITattooComponent() { NativeCall(this, "AShooterPlayerController.CreateSpawnUITattooComponent"); } + void DebugStructures() { NativeCall(this, "AShooterPlayerController.DebugStructures"); } + void DelayedTeamSpectatorSetup() { NativeCall(this, "AShooterPlayerController.DelayedTeamSpectatorSetup"); } + void Destroyed() { NativeCall(this, "AShooterPlayerController.Destroyed"); } + void DisableLightingChecker() { NativeCall(this, "AShooterPlayerController.DisableLightingChecker"); } + void DisableSpectator() { NativeCall(this, "AShooterPlayerController.DisableSpectator"); } + void DisableSurfaceCameraInterpolation() { NativeCall(this, "AShooterPlayerController.DisableSurfaceCameraInterpolation"); } + void DisableTimeSlicedPhysX() { NativeCall(this, "AShooterPlayerController.DisableTimeSlicedPhysX"); } + void DisableViewOnly() { NativeCall(this, "AShooterPlayerController.DisableViewOnly"); } + void DisallowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.DisallowPlayerToJoinNoCheck", PlayerId); } + void DoClientInformPickNewHomeServer() { NativeCall(this, "AShooterPlayerController.DoClientInformPickNewHomeServer"); } + void DoCrash() { NativeCall(this, "AShooterPlayerController.DoCrash"); } + void DoFastTravel(EFastTravelType FastTravelType, unsigned int ToServerID, FVector GridTravelToPos, unsigned int ToBedID, FVector2D FromRelativeLocInServer) { NativeCall(this, "AShooterPlayerController.DoFastTravel", FastTravelType, ToServerID, GridTravelToPos, ToBedID, FromRelativeLocInServer); } + void DoFastTravelToShipBed(unsigned int FromBedID, unsigned int ToBedID, bool ToBedIDIsServerID, bool bHomeServerRespawn, bool bValidFromBed, FVector2D FromBedLocation) { NativeCall(this, "AShooterPlayerController.DoFastTravelToShipBed", FromBedID, ToBedID, ToBedIDIsServerID, bHomeServerRespawn, bValidFromBed, FromBedLocation); } + void DoFlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.DoFlushLevelStreaming"); } + bool DoMapInput(int Index) { return NativeCall(this, "AShooterPlayerController.DoMapInput", Index); } + void DoOnCaptainOrderPressed(int OrderIndex) { NativeCall(this, "AShooterPlayerController.DoOnCaptainOrderPressed", OrderIndex); } + void DoOnCaptainOrderReleased(int OrderIndex) { NativeCall(this, "AShooterPlayerController.DoOnCaptainOrderReleased", OrderIndex); } + void DoOnReleaseItemSlot(int Index) { NativeCall(this, "AShooterPlayerController.DoOnReleaseItemSlot", Index); } + void DoOnReleaseUseFeat(int Index) { NativeCall(this, "AShooterPlayerController.DoOnReleaseUseFeat", Index); } + void DoOnUseFeat(int Index) { NativeCall(this, "AShooterPlayerController.DoOnUseFeat", Index); } + void DoOnUseItemSlot(int Index) { NativeCall(this, "AShooterPlayerController.DoOnUseItemSlot", Index); } + void DoServerCheckUnfreeze_Implementation() { NativeCall(this, "AShooterPlayerController.DoServerCheckUnfreeze_Implementation"); } + void DoTransferToRemoteInventory(UPrimalInventoryComponent* inventoryComp, UPrimalItem* anItem, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.DoTransferToRemoteInventory", inventoryComp, anItem, bAlsoTryToEqup, requestedQuantity); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterPlayerController.DrawHUD", HUD); } + void EnableCheats(FString Pass) { NativeCall(this, "AShooterPlayerController.EnableCheats", Pass); } + void EnableLightingChecker() { NativeCall(this, "AShooterPlayerController.EnableLightingChecker"); } + void EnableSpectator() { NativeCall(this, "AShooterPlayerController.EnableSpectator"); } + void EnableViewOnly() { NativeCall(this, "AShooterPlayerController.EnableViewOnly"); } + void EndAArkGamepadDpadUp() { NativeCall(this, "AShooterPlayerController.EndAArkGamepadDpadUp"); } + void EndArkGamepadBackButton() { NativeCall(this, "AShooterPlayerController.EndArkGamepadBackButton"); } + void EndArkGamepadDpadDown() { NativeCall(this, "AShooterPlayerController.EndArkGamepadDpadDown"); } + void EndArkGamepadDpadLeft() { NativeCall(this, "AShooterPlayerController.EndArkGamepadDpadLeft"); } + void EndArkGamepadDpadRight() { NativeCall(this, "AShooterPlayerController.EndArkGamepadDpadRight"); } + void EndArkGamepadFaceButtonBottom() { NativeCall(this, "AShooterPlayerController.EndArkGamepadFaceButtonBottom"); } + void EndArkGamepadFaceButtonLeft() { NativeCall(this, "AShooterPlayerController.EndArkGamepadFaceButtonLeft"); } + void EndArkGamepadFaceButtonRight() { NativeCall(this, "AShooterPlayerController.EndArkGamepadFaceButtonRight"); } + void EndArkGamepadFaceButtonTop() { NativeCall(this, "AShooterPlayerController.EndArkGamepadFaceButtonTop"); } + void EndArkGamepadLeftShoulder() { NativeCall(this, "AShooterPlayerController.EndArkGamepadLeftShoulder"); } + void EndArkGamepadRightShoulder() { NativeCall(this, "AShooterPlayerController.EndArkGamepadRightShoulder"); } + void EndEmoteSelection() { NativeCall(this, "AShooterPlayerController.EndEmoteSelection"); } + void EndFeatsSelection() { NativeCall(this, "AShooterPlayerController.EndFeatsSelection"); } + void EndInventoryRadialSelector() { NativeCall(this, "AShooterPlayerController.EndInventoryRadialSelector"); } + void EndPlayerActionRadialSelector() { NativeCall(this, "AShooterPlayerController.EndPlayerActionRadialSelector"); } + void EndSurfaceCamera() { NativeCall(this, "AShooterPlayerController.EndSurfaceCamera"); } + void EndWhistleSelection() { NativeCall(this, "AShooterPlayerController.EndWhistleSelection"); } + void EnemyInVisible(bool Invisible) { NativeCall(this, "AShooterPlayerController.EnemyInVisible", Invisible); } + void FadeOutLoadingMusic() { NativeCall(this, "AShooterPlayerController.FadeOutLoadingMusic"); } + void FailedToSpawnPawn() { NativeCall(this, "AShooterPlayerController.FailedToSpawnPawn"); } + void FinalFlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.FinalFlushLevelStreaming"); } + void FinalStructurePlacement(TSubclassOf theStructureClass, FVector TestBuildLocation, FRotator TestBuildRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, APrimalDinoCharacter* DinoCharacter, FName BoneName, FItemNetID FinalPlacementItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle, bool bIgnoreClassOverride) { NativeCall, FVector, FRotator, FRotator, APawn*, APrimalDinoCharacter*, FName, FItemNetID, bool, bool, bool, int, bool>(this, "AShooterPlayerController.FinalStructurePlacement", theStructureClass, TestBuildLocation, TestBuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, FinalPlacementItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle, bIgnoreClassOverride); } + void FlushLevelStreaming() { NativeCall(this, "AShooterPlayerController.FlushLevelStreaming"); } + void FlushPressedKeys() { NativeCall(this, "AShooterPlayerController.FlushPressedKeys"); } + void FlushPrimalStats() { NativeCall(this, "AShooterPlayerController.FlushPrimalStats"); } + void ForceAddDinoExperience(float Amount) { NativeCall(this, "AShooterPlayerController.ForceAddDinoExperience", Amount); } + void ForceCraftPressed() { NativeCall(this, "AShooterPlayerController.ForceCraftPressed"); } + void ForceCraftReleased() { NativeCall(this, "AShooterPlayerController.ForceCraftReleased"); } + void ForceFlushPressedKeys() { NativeCall(this, "AShooterPlayerController.ForceFlushPressedKeys"); } + void ForceTame(bool bCheatTame) { NativeCall(this, "AShooterPlayerController.ForceTame", bCheatTame); } + void ForceTribes(FString* PlayerName1, FString* PlayerName2, FString* NewTribeName) { NativeCall(this, "AShooterPlayerController.ForceTribes", PlayerName1, PlayerName2, NewTribeName); } + void ForceUnstasisAtLocation(FVector AtLocation) { NativeCall(this, "AShooterPlayerController.ForceUnstasisAtLocation", AtLocation); } + void ForceUpdateCaptures() { NativeCall(this, "AShooterPlayerController.ForceUpdateCaptures"); } + FString* FormatTextWithKeyBindings(FString* result, FString InText, bool bIgnoreMarkup) { return NativeCall(this, "AShooterPlayerController.FormatTextWithKeyBindings", result, InText, bIgnoreMarkup); } + AActor* GetAimedUseActor(UActorComponent** UseComponent, int* hitBodyIndex, bool bForceUseActorLocation) { return NativeCall(this, "AShooterPlayerController.GetAimedUseActor", UseComponent, hitBodyIndex, bForceUseActorLocation); } + bool GetAllAimedHarvestActors(float MaxDistance, TArray* OutHarvestActors, TArray* OutHarvestComponents, TArray* OutHitBodyIndices) { return NativeCall*, TArray*, TArray*>(this, "AShooterPlayerController.GetAllAimedHarvestActors", MaxDistance, OutHarvestActors, OutHarvestComponents, OutHitBodyIndices); } + void GetAudioListenerPosition(FVector* OutLocation, FVector* OutFrontDir, FVector* OutRightDir) { NativeCall(this, "AShooterPlayerController.GetAudioListenerPosition", OutLocation, OutFrontDir, OutRightDir); } + TArray* GetCheatsCommands(TArray* result) { return NativeCall*, TArray*>(this, "AShooterPlayerController.GetCheatsCommands", result); } + int GetCurrentMultiUseWheelCategory() { return NativeCall(this, "AShooterPlayerController.GetCurrentMultiUseWheelCategory"); } + UPrimalItem* GetInventoryUISelectedItemLocal() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemLocal"); } + UPrimalItem* GetInventoryUISelectedItemRemote() { return NativeCall(this, "AShooterPlayerController.GetInventoryUISelectedItemRemote"); } + AActor* GetLastControlledPlayerChar() { return NativeCall(this, "AShooterPlayerController.GetLastControlledPlayerChar"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterPlayerController.GetLifetimeReplicatedProps", OutLifetimeProps); } + unsigned __int64 GetLinkedPlayerID64() { return NativeCall(this, "AShooterPlayerController.GetLinkedPlayerID64"); } + int GetLinkedPlayerID() { return NativeCall(this, "AShooterPlayerController.GetLinkedPlayerID"); } + void GetNearbyTreasures(float DesiredDistance, TArray* OutMapItems) { NativeCall*>(this, "AShooterPlayerController.GetNearbyTreasures", DesiredDistance, OutMapItems); } + UPrimalInventoryComponent* GetPawnInventoryComponent() { return NativeCall(this, "AShooterPlayerController.GetPawnInventoryComponent"); } + FString* GetPersonalTameLimitString(FString* result) { return NativeCall(this, "AShooterPlayerController.GetPersonalTameLimitString", result); } + AShooterCharacter* GetPlayerCharacter() { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacter"); } + FString* GetPlayerCharacterName(FString* result) { return NativeCall(this, "AShooterPlayerController.GetPlayerCharacterName", result); } + AActor* GetPlayerControllerViewerOverride() { return NativeCall(this, "AShooterPlayerController.GetPlayerControllerViewerOverride"); } + UPrimalInventoryComponent* GetPlayerInventory() { return NativeCall(this, "AShooterPlayerController.GetPlayerInventory"); } + UPrimalInventoryComponent* GetPlayerInventoryComponent() { return NativeCall(this, "AShooterPlayerController.GetPlayerInventoryComponent"); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation, bool ForAiming) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPoint", out_Location, out_Rotation, ForAiming); } + void GetPlayerViewPointNoModifiers(FVector* out_Location, FRotator* out_Rotation, bool ForAiming, bool bNoTPVAim) { NativeCall(this, "AShooterPlayerController.GetPlayerViewPointNoModifiers", out_Location, out_Rotation, ForAiming, bNoTPVAim); } + TArray* GetRadioFrequencies(TArray* result) { return NativeCall*, TArray*>(this, "AShooterPlayerController.GetRadioFrequencies", result); } + APawn* GetResponsibleDamager(AActor* DamageCauser) { return NativeCall(this, "AShooterPlayerController.GetResponsibleDamager", DamageCauser); } + static FString* GetSavedPlayerCharactersPath(FString* result) { return NativeCall(nullptr, "AShooterPlayerController.GetSavedPlayerCharactersPath", result); } + int GetSubscribedAppIds() { return NativeCall(this, "AShooterPlayerController.GetSubscribedAppIds"); } + FString* GetUniqueNetIdAsString(FString* result) { return NativeCall(this, "AShooterPlayerController.GetUniqueNetIdAsString", result); } + FVector* GetViewLocation(FVector* result) { return NativeCall(this, "AShooterPlayerController.GetViewLocation", result); } + void GiveActorToMe(AActor* anAct, bool bNotifyNetwork) { NativeCall(this, "AShooterPlayerController.GiveActorToMe", anAct, bNotifyNetwork); } + void GiveColors(int quantity) { NativeCall(this, "AShooterPlayerController.GiveColors", quantity); } + void GiveEngrams(bool ForceAllEngrams) { NativeCall(this, "AShooterPlayerController.GiveEngrams", ForceAllEngrams); } + bool GiveFast(FName* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveFast", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + bool GiveItem(FString* blueprintPath, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveItem", blueprintPath, quantityOverride, qualityOverride, bForceBlueprint); } + bool GiveItemNum(int masterIndexNum, int quantityOverride, float qualityOverride, bool bForceBlueprint) { return NativeCall(this, "AShooterPlayerController.GiveItemNum", masterIndexNum, quantityOverride, qualityOverride, bForceBlueprint); } + void GiveResources() { NativeCall(this, "AShooterPlayerController.GiveResources"); } + bool GiveSlotItem(FString* blueprintPath, int slotNum, int quantityOverride) { return NativeCall(this, "AShooterPlayerController.GiveSlotItem", blueprintPath, slotNum, quantityOverride); } + bool GiveSlotItemNum(int masterIndexNum, int slotNum, int quantityOverride) { return NativeCall(this, "AShooterPlayerController.GiveSlotItemNum", masterIndexNum, slotNum, quantityOverride); } + void GiveToMe() { NativeCall(this, "AShooterPlayerController.GiveToMe"); } + void GlobalCommand(FString* Msg) { NativeCall(this, "AShooterPlayerController.GlobalCommand", Msg); } + void GridTravelToGlobalPos(FVector* ToGlobalPos) { NativeCall(this, "AShooterPlayerController.GridTravelToGlobalPos", ToGlobalPos); } + void GridTravelToLocalPos(unsigned __int16 GridX, unsigned __int16 GridY, FVector* ToLocalPos) { NativeCall(this, "AShooterPlayerController.GridTravelToLocalPos", GridX, GridY, ToLocalPos); } + bool HasEngram(TSubclassOf TheItemClass) { return NativeCall>(this, "AShooterPlayerController.HasEngram", TheItemClass); } + bool HasGodMode() { return NativeCall(this, "AShooterPlayerController.HasGodMode"); } + bool HasRadio(bool allowVoice) { return NativeCall(this, "AShooterPlayerController.HasRadio", allowVoice); } + bool HasSameRadioFrequency(AShooterPlayerController* OtherPC, unsigned int* SharedFrequency) { return NativeCall(this, "AShooterPlayerController.HasSameRadioFrequency", OtherPC, SharedFrequency); } + bool HasSkill(TSubclassOf SkillClass) { return NativeCall>(this, "AShooterPlayerController.HasSkill", SkillClass); } + void HiWarp(FString* ClassName, int Index) { NativeCall(this, "AShooterPlayerController.HiWarp", ClassName, Index); } + void HibernationReport(FString* ClassName) { NativeCall(this, "AShooterPlayerController.HibernationReport", ClassName); } + void HideRiders(bool bDoHide) { NativeCall(this, "AShooterPlayerController.HideRiders", bDoHide); } + void HideTutorial(int TutorialIndex) { NativeCall(this, "AShooterPlayerController.HideTutorial", TutorialIndex); } + void IncrementPrimalStats(EPrimalStatsValueTypes::Type statsValueType) { NativeCall(this, "AShooterPlayerController.IncrementPrimalStats", statsValueType); } + void InfiniteStats() { NativeCall(this, "AShooterPlayerController.InfiniteStats"); } + void InitCharacterPainting_Implementation(APrimalCharacter* Char, bool bForTattoo) { NativeCall(this, "AShooterPlayerController.InitCharacterPainting_Implementation", Char, bForTattoo); } + void InitHUD(bool bForceReinitUI) { NativeCall(this, "AShooterPlayerController.InitHUD", bForceReinitUI); } + void InitInputSystem() { NativeCall(this, "AShooterPlayerController.InitInputSystem"); } + bool IsAlliedWithTeam(int OtherTargetingTeam, bool bIgnoreSameTeam) { return NativeCall(this, "AShooterPlayerController.IsAlliedWithTeam", OtherTargetingTeam, bIgnoreSameTeam); } + bool IsAtPersonalTameLimit(bool bIsForStructure) { return NativeCall(this, "AShooterPlayerController.IsAtPersonalTameLimit", bIsForStructure); } + bool IsEmoteUnlocked(FName EmoteName) { return NativeCall(this, "AShooterPlayerController.IsEmoteUnlocked", EmoteName); } + bool IsFirstLocalPlayer() { return NativeCall(this, "AShooterPlayerController.IsFirstLocalPlayer"); } + bool IsFirstLocalPlayerOrLivingLocalPlayer() { return NativeCall(this, "AShooterPlayerController.IsFirstLocalPlayerOrLivingLocalPlayer"); } + bool IsGameInputAllowed() { return NativeCall(this, "AShooterPlayerController.IsGameInputAllowed"); } + bool IsHeldDownIndexOverriddenFromCaptainsOrders(int index) { return NativeCall(this, "AShooterPlayerController.IsHeldDownIndexOverriddenFromCaptainsOrders", index); } + bool IsHudVisible() { return NativeCall(this, "AShooterPlayerController.IsHudVisible"); } + bool IsInTribe() { return NativeCall(this, "AShooterPlayerController.IsInTribe"); } + bool IsOnSeatingStructure() { return NativeCall(this, "AShooterPlayerController.IsOnSeatingStructure"); } + bool IsOnlyViewingInventory() { return NativeCall(this, "AShooterPlayerController.IsOnlyViewingInventory"); } + bool IsRidingDino() { return NativeCall(this, "AShooterPlayerController.IsRidingDino"); } + bool IsSavingData() { return NativeCall(this, "AShooterPlayerController.IsSavingData"); } + bool IsSpectator() { return NativeCall(this, "AShooterPlayerController.IsSpectator"); } + bool IsTribeAdmin() { return NativeCall(this, "AShooterPlayerController.IsTribeAdmin"); } + bool IsValidUnStasisCaster() { return NativeCall(this, "AShooterPlayerController.IsValidUnStasisCaster"); } + bool IsViewingInventoryUI() { return NativeCall(this, "AShooterPlayerController.IsViewingInventoryUI"); } + void KickPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.KickPlayer", PlayerSteamName); } + void LeaveMeAlone() { NativeCall(this, "AShooterPlayerController.LeaveMeAlone"); } + void LevelView() { NativeCall(this, "AShooterPlayerController.LevelView"); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "AShooterPlayerController.LinkedPlayerIDString", result); } + void LoadLocalPlayerArkData() { NativeCall(this, "AShooterPlayerController.LoadLocalPlayerArkData"); } + void LoadSpectatorPos(int Index) { NativeCall(this, "AShooterPlayerController.LoadSpectatorPos", Index); } + void LockEmote(FName EmoteName) { NativeCall(this, "AShooterPlayerController.LockEmote", EmoteName); } + void LookInput(float Val) { NativeCall(this, "AShooterPlayerController.LookInput", Val); } + void LookUpAtRate(float Val) { NativeCall(this, "AShooterPlayerController.LookUpAtRate", Val); } + void MoveForward(float Val) { NativeCall(this, "AShooterPlayerController.MoveForward", Val); } + void MoveRight(float Val) { NativeCall(this, "AShooterPlayerController.MoveRight", Val); } + void MulticastCharacterVivoxUsername() { NativeCall(this, "AShooterPlayerController.MulticastCharacterVivoxUsername"); } + void NotifyTribeWarStatus_Implementation(FString* EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus_Implementation", EnemyTribeString, StatusType); } + void OnAddSteering(float Val) { NativeCall(this, "AShooterPlayerController.OnAddSteering", Val); } + void OnAddThrottle(float Val) { NativeCall(this, "AShooterPlayerController.OnAddThrottle", Val); } + void OnAltAttackPressed() { NativeCall(this, "AShooterPlayerController.OnAltAttackPressed"); } + void OnAltAttackReleased() { NativeCall(this, "AShooterPlayerController.OnAltAttackReleased"); } + void OnDisableSpectator_Implementation() { NativeCall(this, "AShooterPlayerController.OnDisableSpectator_Implementation"); } + void OnEmoteKey1Press() { NativeCall(this, "AShooterPlayerController.OnEmoteKey1Press"); } + void OnEmoteKey1Release() { NativeCall(this, "AShooterPlayerController.OnEmoteKey1Release"); } + void OnEmoteKey2Press() { NativeCall(this, "AShooterPlayerController.OnEmoteKey2Press"); } + void OnEmoteKey2Release() { NativeCall(this, "AShooterPlayerController.OnEmoteKey2Release"); } + void OnExtendedInfoPress() { NativeCall(this, "AShooterPlayerController.OnExtendedInfoPress"); } + void OnExtendedInfoRelease() { NativeCall(this, "AShooterPlayerController.OnExtendedInfoRelease"); } + void OnFastTravelFailed() { NativeCall(this, "AShooterPlayerController.OnFastTravelFailed"); } + void OnFastTravelFailed_DisableMessage() { NativeCall(this, "AShooterPlayerController.OnFastTravelFailed_DisableMessage"); } + void OnGamepadUsePress() { NativeCall(this, "AShooterPlayerController.OnGamepadUsePress"); } + void OnGamepadUseRelease() { NativeCall(this, "AShooterPlayerController.OnGamepadUseRelease"); } + void OnGetHomeServer(bool bSuccess, FString UserId, unsigned int CurrentSeverId) { NativeCall(this, "AShooterPlayerController.OnGetHomeServer", bSuccess, UserId, CurrentSeverId); } + void OnHideMapTextPressed() { NativeCall(this, "AShooterPlayerController.OnHideMapTextPressed"); } + void OnKeyboardUsePress() { NativeCall(this, "AShooterPlayerController.OnKeyboardUsePress"); } + void OnKeyboardUseRelease() { NativeCall(this, "AShooterPlayerController.OnKeyboardUseRelease"); } + void OnLevelView() { NativeCall(this, "AShooterPlayerController.OnLevelView"); } + void OnPressForceSingleWield() { NativeCall(this, "AShooterPlayerController.OnPressForceSingleWield"); } + void OnPressGroupAddOrRemoveTame() { NativeCall(this, "AShooterPlayerController.OnPressGroupAddOrRemoveTame"); } + void OnPressSkipTutorialButton() { NativeCall(this, "AShooterPlayerController.OnPressSkipTutorialButton"); } + void OnReleaseForceSingleWield() { NativeCall(this, "AShooterPlayerController.OnReleaseForceSingleWield"); } + void OnReleaseSkipTutorialButton() { NativeCall(this, "AShooterPlayerController.OnReleaseSkipTutorialButton"); } + void OnRep_HomeServerId() { NativeCall(this, "AShooterPlayerController.OnRep_HomeServerId"); } + void OnRep_Pawn() { NativeCall(this, "AShooterPlayerController.OnRep_Pawn"); } + void OnRepeatUseHeldTimer() { NativeCall(this, "AShooterPlayerController.OnRepeatUseHeldTimer"); } + void OnShowAllGroupIcons(char IconsToActivate) { NativeCall(this, "AShooterPlayerController.OnShowAllGroupIcons", IconsToActivate); } + void OnStartFire() { NativeCall(this, "AShooterPlayerController.OnStartFire"); } + void OnStartFireQuaternary() { NativeCall(this, "AShooterPlayerController.OnStartFireQuaternary"); } + void OnStartFireSecondary() { NativeCall(this, "AShooterPlayerController.OnStartFireSecondary"); } + void OnStartFireTertiary() { NativeCall(this, "AShooterPlayerController.OnStartFireTertiary"); } + void OnStartGamepadLeftFire() { NativeCall(this, "AShooterPlayerController.OnStartGamepadLeftFire"); } + void OnStartGamepadRightFire() { NativeCall(this, "AShooterPlayerController.OnStartGamepadRightFire"); } + void OnStartTargeting() { NativeCall(this, "AShooterPlayerController.OnStartTargeting"); } + void OnStopFire() { NativeCall(this, "AShooterPlayerController.OnStopFire"); } + void OnStopFireQuaternary() { NativeCall(this, "AShooterPlayerController.OnStopFireQuaternary"); } + void OnStopFireSecondary() { NativeCall(this, "AShooterPlayerController.OnStopFireSecondary"); } + void OnStopFireTertiary() { NativeCall(this, "AShooterPlayerController.OnStopFireTertiary"); } + void OnStopGamepadLeftFire() { NativeCall(this, "AShooterPlayerController.OnStopGamepadLeftFire"); } + void OnStopGamepadRightFire() { NativeCall(this, "AShooterPlayerController.OnStopGamepadRightFire"); } + void OnStopShowAllGroupIcons() { NativeCall(this, "AShooterPlayerController.OnStopShowAllGroupIcons"); } + void OnStopTargeting() { NativeCall(this, "AShooterPlayerController.OnStopTargeting"); } + void OnToggleDoFMenu() { NativeCall(this, "AShooterPlayerController.OnToggleDoFMenu"); } + void OnToggleInGameMenu() { NativeCall(this, "AShooterPlayerController.OnToggleInGameMenu"); } + void OnUseHeldTimer() { NativeCall(this, "AShooterPlayerController.OnUseHeldTimer"); } + void OnUseItemSlotForStructure(int ItemSlotNumber) { NativeCall(this, "AShooterPlayerController.OnUseItemSlotForStructure", ItemSlotNumber); } + void OnUsePress(bool bFromGamepad) { NativeCall(this, "AShooterPlayerController.OnUsePress", bFromGamepad); } + void OnUseRelease(bool bFromGamepad) { NativeCall(this, "AShooterPlayerController.OnUseRelease", bFromGamepad); } + void OnWhistlePress() { NativeCall(this, "AShooterPlayerController.OnWhistlePress"); } + void OnYarkStartGamepadRightFire(APrimalCharacter* PlayerCharacter) { NativeCall(this, "AShooterPlayerController.OnYarkStartGamepadRightFire", PlayerCharacter); } + void PawnLeavingGame() { NativeCall(this, "AShooterPlayerController.PawnLeavingGame"); } + void PawnPendingDestroy(APawn* inPawn) { NativeCall(this, "AShooterPlayerController.PawnPendingDestroy", inPawn); } + void PlaceStructure(int Index) { NativeCall(this, "AShooterPlayerController.PlaceStructure", Index); } + void PlayHitMarkerCharacterAlly_Implementation(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacterAlly_Implementation", InHitMarkerScale, InWasMeleeHit); } + void PlayHitMarkerCharacter_Implementation(float InHitMarkerScale, bool InWasMeleeHit, APrimalCharacter* VictimCharacter) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacter_Implementation", InHitMarkerScale, InWasMeleeHit, VictimCharacter); } + void PlayHitMarkerStructureAlly_Implementation(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructureAlly_Implementation", InHitMarkerScale, InWasMeleeHit); } + void PlayHitMarkerStructure_Implementation(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructure_Implementation", InHitMarkerScale, InWasMeleeHit); } + FString* PlayerCommand_Implementation(FString* result, FString* TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand_Implementation", result, TheCommand); } + void Possess(APawn* inPawn) { NativeCall(this, "AShooterPlayerController.Possess", inPawn); } + void PostInitializeComponents() { NativeCall(this, "AShooterPlayerController.PostInitializeComponents"); } + void PostProcessInput(const float DeltaTime, const bool bGamePaused) { NativeCall(this, "AShooterPlayerController.PostProcessInput", DeltaTime, bGamePaused); } + void PrintColors() { NativeCall(this, "AShooterPlayerController.PrintColors"); } + void ProcessServerMessages() { NativeCall(this, "AShooterPlayerController.ProcessServerMessages"); } + void QueueRequestEquippedItems(UPrimalInventoryComponent* invComp) { NativeCall(this, "AShooterPlayerController.QueueRequestEquippedItems", invComp); } + void QuitToMainMenu() { NativeCall(this, "AShooterPlayerController.QuitToMainMenu"); } + void RPCStayAlive_Implementation() { NativeCall(this, "AShooterPlayerController.RPCStayAlive_Implementation"); } + void ReceivedPlayerState() { NativeCall(this, "AShooterPlayerController.ReceivedPlayerState"); } + void RefreshMapMarkers() { NativeCall(this, "AShooterPlayerController.RefreshMapMarkers"); } + void RefreshNeedingMapEntities() { NativeCall(this, "AShooterPlayerController.RefreshNeedingMapEntities"); } + void ReportLeastSpawnManagers() { NativeCall(this, "AShooterPlayerController.ReportLeastSpawnManagers"); } + void ReportSpawnManagers() { NativeCall(this, "AShooterPlayerController.ReportSpawnManagers"); } + void RequestCreateNewPlayerWithArkData(TArray PlayerArkDataBytes) { NativeCall>(this, "AShooterPlayerController.RequestCreateNewPlayerWithArkData", PlayerArkDataBytes); } + void RequestFastTravelToPoint(unsigned int fromSpawnPointID, unsigned int spawnPointID, FVector2D FromBedLocation, bool bFromBedValid) { NativeCall(this, "AShooterPlayerController.RequestFastTravelToPoint", fromSpawnPointID, spawnPointID, FromBedLocation, bFromBedValid); } + void RequestSpectator(FString InSpectatorPass) { NativeCall(this, "AShooterPlayerController.RequestSpectator", InSpectatorPass); } + void Reset() { NativeCall(this, "AShooterPlayerController.Reset"); } + void ResetSpawnTime() { NativeCall(this, "AShooterPlayerController.ResetSpawnTime"); } + void SCP() { NativeCall(this, "AShooterPlayerController.SCP"); } + void SPI(float X, float Y, float Z, float Yaw, float Pitch) { NativeCall(this, "AShooterPlayerController.SPI", X, Y, Z, Yaw, Pitch); } + bool SameLinkedId(__int64 value) { return NativeCall(this, "AShooterPlayerController.SameLinkedId", value); } + void SaveCharacter() { NativeCall(this, "AShooterPlayerController.SaveCharacter"); } + void SaveProfile() { NativeCall(this, "AShooterPlayerController.SaveProfile"); } + void SaveSpectatorPos(int Index) { NativeCall(this, "AShooterPlayerController.SaveSpectatorPos", Index); } + void ScrollChatDown() { NativeCall(this, "AShooterPlayerController.ScrollChatDown"); } + void ScrollChatUp() { NativeCall(this, "AShooterPlayerController.ScrollChatUp"); } + void SendAlarmNotification(FString SteamID, FString Title, FString Message) { NativeCall(this, "AShooterPlayerController.SendAlarmNotification", SteamID, Title, Message); } + bool SendUseItemSlotToStructure() { return NativeCall(this, "AShooterPlayerController.SendUseItemSlotToStructure"); } + void ServerActorCloseRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory_Implementation", inventoryComp); } + void ServerActorViewRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorViewRemoteInventory_Implementation", inventoryComp); } + void ServerAddAchievementID_Implementation(FString* AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID_Implementation", AchievementID, bIsOnSpawn); } + void ServerAddItemToCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerAddTribeMarker_Implementation(FString* Name, float Coord1, float Coord2, FColor TextColor) { NativeCall(this, "AShooterPlayerController.ServerAddTribeMarker_Implementation", Name, Coord1, Coord2, TextColor); } + void ServerAllowPlayerToJoinNoCheck_Implementation(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck_Implementation", PlayerId); } + void ServerBanPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerChangeHomeServer_Implementation(unsigned int NewHomeServerId) { NativeCall(this, "AShooterPlayerController.ServerChangeHomeServer_Implementation", NewHomeServerId); } + void ServerCheckUnfreeze_Implementation() { NativeCall(this, "AShooterPlayerController.ServerCheckUnfreeze_Implementation"); } + void ServerCraftItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem_Implementation", inventoryComp, itemID); } + void ServerCycleSpectator_Implementation(bool bNext) { NativeCall(this, "AShooterPlayerController.ServerCycleSpectator_Implementation", bNext); } + void ServerDPC_Implementation() { NativeCall(this, "AShooterPlayerController.ServerDPC_Implementation"); } + void ServerDeleteCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType); } + void ServerDeleteItemFromCustomFolder_Implementation(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder_Implementation", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerDisallowPlayerToJoinNoCheck_Implementation(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck_Implementation", PlayerId); } + void ServerDropFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bOnlyIfEquipped) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory_Implementation", inventoryComp, itemID, bOnlyIfEquipped); } + void ServerEquipPawnItem_Implementation(FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipPawnItem_Implementation", itemID); } + void ServerEquipToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory_Implementation", inventoryComp, itemID); } + void ServerGetHomeServerId() { NativeCall(this, "AShooterPlayerController.ServerGetHomeServerId"); } + void ServerGetMessageOfTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerGetMessageOfTheDay_Implementation"); } + void ServerGetNotificationSettings_Implementation() { NativeCall(this, "AShooterPlayerController.ServerGetNotificationSettings_Implementation"); } + void ServerGetOriginalHairColor_Implementation() { NativeCall(this, "AShooterPlayerController.ServerGetOriginalHairColor_Implementation"); } + void ServerGlobalCommand_Implementation(FString* Msg) { NativeCall(this, "AShooterPlayerController.ServerGlobalCommand_Implementation", Msg); } + void ServerInventoryClearCraftQueue_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerInventoryClearCraftQueue_Implementation", inventoryComp); } + void ServerKickPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerListPlayers_Implementation() { NativeCall(this, "AShooterPlayerController.ServerListPlayers_Implementation"); } + void ServerLoginToVivox_Implementation() { NativeCall(this, "AShooterPlayerController.ServerLoginToVivox_Implementation"); } + void ServerMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse_Implementation", ForObject, useIndex); } + void ServerNotifyEditText_Implementation(FString* TextToUse, bool checkedBox, TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ServerNotifyEditText_Implementation", TextToUse, checkedBox, ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ServerReadMessageOFTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerReadMessageOFTheDay_Implementation"); } + void ServerReleaseSeatingStructure_Implementation() { NativeCall(this, "AShooterPlayerController.ServerReleaseSeatingStructure_Implementation"); } + void ServerRemovePassenger_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRemovePassenger_Implementation"); } + void ServerRemovePawnItem_Implementation(FItemNetID itemID, bool bSecondryAction, bool bOnlyIfEquipped) { NativeCall(this, "AShooterPlayerController.ServerRemovePawnItem_Implementation", itemID, bSecondryAction, bOnlyIfEquipped); } + void ServerRemoveTribeMarker_Implementation(unsigned int MarkerID) { NativeCall(this, "AShooterPlayerController.ServerRemoveTribeMarker_Implementation", MarkerID); } + void ServerRepairItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem_Implementation", inventoryComp, itemID); } + void ServerRepeatMultiUse_Implementation(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerRepeatMultiUse_Implementation", ForObject, useIndex); } + void ServerRequestActivateFeat_Implementation(TSubclassOf FeatClass) { NativeCall>(this, "AShooterPlayerController.ServerRequestActivateFeat_Implementation", FeatClass); } + void ServerRequestActivateStationGroup_Implementation(APrimalRaft* forRaft, int GroupIndex, bool bActivateForCaptain, bool bNewValue) { NativeCall(this, "AShooterPlayerController.ServerRequestActivateStationGroup_Implementation", forRaft, GroupIndex, bActivateForCaptain, bNewValue); } + void ServerRequestActorItems_Implementation(UPrimalInventoryComponent* forInventory, bool bInventoryItems, bool bIsFirstSpawn, bool allowLocalController) { NativeCall(this, "AShooterPlayerController.ServerRequestActorItems_Implementation", forInventory, bInventoryItems, bIsFirstSpawn, allowLocalController); } + void ServerRequestCreateNewPlayerWithArkData(TArray* DataBytes, unsigned __int64 TribeID) { NativeCall*, unsigned __int64>(this, "AShooterPlayerController.ServerRequestCreateNewPlayerWithArkData", DataBytes, TribeID); } + void ServerRequestDinoAncestors_Implementation(APrimalDinoCharacter* ForDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoAncestors_Implementation", ForDino); } + void ServerRequestDropAllItems_Implementation(FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestDropAllItems_Implementation", CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestFastTravelToPoint_Implementation(unsigned int fromSpawnPointID, unsigned int spawnPointID) { NativeCall(this, "AShooterPlayerController.ServerRequestFastTravelToPoint_Implementation", fromSpawnPointID, spawnPointID); } + void ServerRequestFastTravelToShipBed_Implementation(unsigned int FromBedID, unsigned int ToBedID) { NativeCall(this, "AShooterPlayerController.ServerRequestFastTravelToShipBed_Implementation", FromBedID, ToBedID); } + void ServerRequestFullMapEntities_Implementation(int ClientFullMapEntitiesChangeID, int ClientFullMapEntitiesCount) { NativeCall(this, "AShooterPlayerController.ServerRequestFullMapEntities_Implementation", ClientFullMapEntitiesChangeID, ClientFullMapEntitiesCount); } + void ServerRequestInitiateSettlementWar_Implementation(int requestIslandId, int requestStartTime, FItemNetID RequestUseItem) { NativeCall(this, "AShooterPlayerController.ServerRequestInitiateSettlementWar_Implementation", requestIslandId, requestStartTime, RequestUseItem); } + void ServerRequestInventorySwapItems_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems_Implementation", inventoryComp, itemID1, itemID2); } + void ServerRequestInventoryUseItemWithActor_Implementation(AActor* anActor, UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor_Implementation", anActor, inventoryComp, itemID1, AdditionalData); } + void ServerRequestInventoryUseItemWithItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem_Implementation", inventoryComp, itemID1, itemID2, AdditionalData); } + void ServerRequestInventoryUseItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem_Implementation", inventoryComp, itemID); } + void ServerRequestLevelUp_Implementation(UPrimalCharacterStatusComponent* forStatusComp, EPrimalCharacterStatusValue::Type ValueType) { NativeCall(this, "AShooterPlayerController.ServerRequestLevelUp_Implementation", forStatusComp, ValueType); } + void ServerRequestMyClientTribeData_Implementation(unsigned int TribeMarkerVersion) { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeData_Implementation", TribeMarkerVersion); } + void ServerRequestMyClientTribeMemberData_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeMemberData_Implementation"); } + void ServerRequestMyClientTribeMembersLastOnlineAt_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeMembersLastOnlineAt_Implementation"); } + void ServerRequestMyClientTribeRankGroup_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeRankGroup_Implementation"); } + void ServerRequestMyTribeOnlineList_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestMyTribeOnlineList_Implementation"); } + void ServerRequestPlaceStructure_Implementation(int StructureIndex, FVector BuildLocation, FRotator BuildRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, APrimalDinoCharacter* DinoCharacter, FName BoneName, FItemNetID PlaceUsingItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle, TSubclassOf DirectStructurePlacementClass) { NativeCall>(this, "AShooterPlayerController.ServerRequestPlaceStructure_Implementation", StructureIndex, BuildLocation, BuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, PlaceUsingItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle, DirectStructurePlacementClass); } + void ServerRequestRemoteDropAllItems_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoteDropAllItems_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestRemoveItemSkinOnly_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkinOnly_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveItemSkin_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkin_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveWeaponAccessoryOnly_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponAccessoryOnly_Implementation", inventoryComp, itemID); } + void ServerRequestRemoveWeaponClipAmmo_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo_Implementation", inventoryComp, itemID); } + void ServerRequestRespawnAtPoint_Implementation(unsigned int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestRespawnAtPoint_Implementation", spawnPointID, spawnRegionIndex); } + void ServerRequestSetPin_Implementation(UObject* forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin_Implementation", forTarget, PinValue, bIsSetting, TheCustomIndex); } + void ServerRequestStructureCraftingStatItem_Implementation(APrimalStructure* ForStructure) { NativeCall(this, "AShooterPlayerController.ServerRequestStructureCraftingStatItem_Implementation", ForStructure); } + void ServerRequestTribeLog_Implementation() { NativeCall(this, "AShooterPlayerController.ServerRequestTribeLog_Implementation"); } + void ServerRequestUpdateGroupInfo_Implementation(APrimalRaft* forRaft) { NativeCall(this, "AShooterPlayerController.ServerRequestUpdateGroupInfo_Implementation", forRaft); } + void ServerSendArkDataPayloadBegin_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin_Implementation", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ServerSendArkDataPayloadEnd_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType) { NativeCall(this, "AShooterPlayerController.ServerSendArkDataPayloadEnd_Implementation", ID, ArkDataType); } + void ServerSendArkDataPayload_Implementation(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ServerSendArkDataPayload_Implementation", ID, ArkDataType, DataBytes); } + void ServerSendChatMessage_Implementation(FString* ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage_Implementation", ChatMessage, SendMode); } + void ServerSendDirectMessage_Implementation(FString* PlayerSteamID, FString* MessageText) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage_Implementation", PlayerSteamID, MessageText); } + void ServerSetAltHeld_Implementation(bool bNewAltHeld) { NativeCall(this, "AShooterPlayerController.ServerSetAltHeld_Implementation", bNewAltHeld); } + void ServerSetForceSingleWield_Implementation(bool doSet) { NativeCall(this, "AShooterPlayerController.ServerSetForceSingleWield_Implementation", doSet); } + void ServerSetMessageOfTheDay_Implementation(FString* Message) { NativeCall(this, "AShooterPlayerController.ServerSetMessageOfTheDay_Implementation", Message); } + void ServerSetNetIsCurrentlyFirstPerson_Implementation(bool bIsCurrentlyFirstPerson) { NativeCall(this, "AShooterPlayerController.ServerSetNetIsCurrentlyFirstPerson_Implementation", bIsCurrentlyFirstPerson); } + void ServerSetPlayerForceSwitchAsPrimaryWeaponOnce_Implementation() { NativeCall(this, "AShooterPlayerController.ServerSetPlayerForceSwitchAsPrimaryWeaponOnce_Implementation"); } + void ServerSetSpectatorLocation_Implementation(FVector NewLoc) { NativeCall(this, "AShooterPlayerController.ServerSetSpectatorLocation_Implementation", NewLoc); } + void ServerSetSubscribedApp_Implementation(int AppID, bool bPreventDefaultItems) { NativeCall(this, "AShooterPlayerController.ServerSetSubscribedApp_Implementation", AppID, bPreventDefaultItems); } + void ServerSetSupressAdminIcon_Implementation(bool bSuppress) { NativeCall(this, "AShooterPlayerController.ServerSetSupressAdminIcon_Implementation", bSuppress); } + void ServerSetThrottleAndControlRotation_Implementation(float Throttle, float Pitch, float Yaw, FVector AimLocation) { NativeCall(this, "AShooterPlayerController.ServerSetThrottleAndControlRotation_Implementation", Throttle, Pitch, Yaw, AimLocation); } + void ServerSetVRPlayer_Implementation(bool bSetVRPlayer) { NativeCall(this, "AShooterPlayerController.ServerSetVRPlayer_Implementation", bSetVRPlayer); } + void ServerShowMessageOfTheDay_Implementation() { NativeCall(this, "AShooterPlayerController.ServerShowMessageOfTheDay_Implementation"); } + void ServerSpectateToPlayerByID_Implementation(unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ServerSpectateToPlayerByID_Implementation", PlayerID); } + void ServerStartWeaponAltFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponAltFire_Implementation", weapon); } + void ServerStartWeaponFire_Implementation(AShooterWeapon* weapon, int attackIndex, bool bIsUsingAltAnim) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponFire_Implementation", weapon, attackIndex, bIsUsingAltAnim); } + void ServerStopSpectating_Implementation() { NativeCall(this, "AShooterPlayerController.ServerStopSpectating_Implementation"); } + void ServerStopWeaponAltFire_Implementation(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponAltFire_Implementation", weapon); } + void ServerStopWeaponFire_Implementation(AShooterWeapon* weapon, int attackIndex, bool bIsUsingAltAnim) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponFire_Implementation", weapon, attackIndex, bIsUsingAltAnim); } + void ServerSuccessfullyLoggedIntoVivox_Implementation(FString* LoginSessionUserUri) { NativeCall(this, "AShooterPlayerController.ServerSuccessfullyLoggedIntoVivox_Implementation", LoginSessionUserUri); } + void ServerSuicide_Implementation() { NativeCall(this, "AShooterPlayerController.ServerSuicide_Implementation"); } + void ServerToggleAllShipLadders_Implementation() { NativeCall(this, "AShooterPlayerController.ServerToggleAllShipLadders_Implementation"); } + void ServerToggleOpenAllActiveGunports_Implementation() { NativeCall(this, "AShooterPlayerController.ServerToggleOpenAllActiveGunports_Implementation"); } + void ServerTransferAllFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferAllToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory_Implementation", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferFromRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory_Implementation", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } + void ServerTransferToRemoteInventory_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory_Implementation", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } + void ServerTryRespec_Implementation() { NativeCall(this, "AShooterPlayerController.ServerTryRespec_Implementation"); } + void ServerTrySettingViewOnlyInventoryStatus_Implementation() { NativeCall(this, "AShooterPlayerController.ServerTrySettingViewOnlyInventoryStatus_Implementation"); } + void ServerUnbanPlayer_Implementation(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer_Implementation", PlayerSteamName, PlayerSteamID); } + void ServerUnlockPerMapExplorerNote_Implementation(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ServerUnlockPerMapExplorerNote_Implementation", ExplorerNoteIndex); } + void ServerUpdateManualFireLocation_Implementation(FVector TargetLocation) { NativeCall(this, "AShooterPlayerController.ServerUpdateManualFireLocation_Implementation", TargetLocation); } + void ServerUpgradeItem_Implementation(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int ItemStatModifierIndexToUpgrade, int ItemStatGroupIndexToUpgrade) { NativeCall(this, "AShooterPlayerController.ServerUpgradeItem_Implementation", inventoryComp, itemID, ItemStatModifierIndexToUpgrade, ItemStatGroupIndexToUpgrade); } + void ServerUploadCharacterDataToArk_Implementation(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCharacterDataToArk_Implementation", inventoryComp); } + void Server_CaptainExtraActions_Implementation(ECaptainOtherActions::Type RequestedAction, APrimalStructureSeating_DriverSeat* RequestedFromSeat, int CurrentValue) { NativeCall(this, "AShooterPlayerController.Server_CaptainExtraActions_Implementation", RequestedAction, RequestedFromSeat, CurrentValue); } + void Server_SetShipSailRotation_Implementation(float InSailRotation) { NativeCall(this, "AShooterPlayerController.Server_SetShipSailRotation_Implementation", InSailRotation); } + void Server_SetShipSteeringInput_Implementation(float InSteering) { NativeCall(this, "AShooterPlayerController.Server_SetShipSteeringInput_Implementation", InSteering); } + void Server_SetShipThrottleTarget_Implementation(float InThrottle) { NativeCall(this, "AShooterPlayerController.Server_SetShipThrottleTarget_Implementation", InThrottle); } + void Server_SetWantsForcedMovement_Implementation(int Direction) { NativeCall(this, "AShooterPlayerController.Server_SetWantsForcedMovement_Implementation", Direction); } + void Server_UpdateRowing_Implementation(float InRowingThrottle, float InRowingSteering, int FromSeatNumber) { NativeCall(this, "AShooterPlayerController.Server_UpdateRowing_Implementation", InRowingThrottle, InRowingSteering, FromSeatNumber); } + void SetAdminIcon(bool bAdminIcon) { NativeCall(this, "AShooterPlayerController.SetAdminIcon", bAdminIcon); } + void ApplyAutoAimSlider(float NewValue) { NativeCall(this, "AShooterPlayerController.ApplyAutoAimSlider", NewValue); } + void SetCheatPlayer(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetCheatPlayer", bEnable); } + void SetCinematicMode(bool bInCinematicMode, bool bHidePlayer, bool bAffectsHUD, bool bAffectsMovement, bool bAffectsTurning) { NativeCall(this, "AShooterPlayerController.SetCinematicMode", bInCinematicMode, bHidePlayer, bAffectsHUD, bAffectsMovement, bAffectsTurning); } + void SetControlRotation(FRotator* NewRotation) { NativeCall(this, "AShooterPlayerController.SetControlRotation", NewRotation); } + void SetControllerGamepadActive(bool bIsActive) { NativeCall(this, "AShooterPlayerController.SetControllerGamepadActive", bIsActive); } + void SetDir(float windDir) { NativeCall(this, "AShooterPlayerController.SetDir", windDir); } + void SetDoFInterpTime(float InterpTime) { NativeCall(this, "AShooterPlayerController.SetDoFInterpTime", InterpTime); } + void SetEquipMap(unsigned int typeIndex) { NativeCall(this, "AShooterPlayerController.SetEquipMap", typeIndex); } + void SetGamma1() { NativeCall(this, "AShooterPlayerController.SetGamma1"); } + void SetGamma2() { NativeCall(this, "AShooterPlayerController.SetGamma2"); } + void SetGodMode(bool bEnable) { NativeCall(this, "AShooterPlayerController.SetGodMode", bEnable); } + void SetGraphicsQuality(int val) { NativeCall(this, "AShooterPlayerController.SetGraphicsQuality", val); } + void SetImprintQuality(float ImprintingQuality) { NativeCall(this, "AShooterPlayerController.SetImprintQuality", ImprintingQuality); } + void SetKickedNotification(FString KickReason) { NativeCall(this, "AShooterPlayerController.SetKickedNotification", KickReason); } + void SetMultiUseWheelCategory(int Category) { NativeCall(this, "AShooterPlayerController.SetMultiUseWheelCategory", Category); } + void SetPawn(APawn* InPawn) { NativeCall(this, "AShooterPlayerController.SetPawn", InPawn); } + void SetPlayer(UPlayer* InPlayer) { NativeCall(this, "AShooterPlayerController.SetPlayer", InPlayer); } + void SetPlayerPos(float X, float Y, float Z) { NativeCall(this, "AShooterPlayerController.SetPlayerPos", X, Y, Z); } + void SetSextantMapZoomLevel(float Zoom) { NativeCall(this, "AShooterPlayerController.SetSextantMapZoomLevel", Zoom); } + void SetTutorialHintText(FString* HintText) { NativeCall(this, "AShooterPlayerController.SetTutorialHintText", HintText); } + void SetWind(float wind) { NativeCall(this, "AShooterPlayerController.SetWind", wind); } + void SetupInputComponent() { NativeCall(this, "AShooterPlayerController.SetupInputComponent"); } + bool ShouldHideGameplayUI() { return NativeCall(this, "AShooterPlayerController.ShouldHideGameplayUI"); } + bool ShouldReplicateVoicePacketFrom(FUniqueNetId* Sender, char ShouldUseSuperRange, char* PlaybackFlags) { return NativeCall(this, "AShooterPlayerController.ShouldReplicateVoicePacketFrom", Sender, ShouldUseSuperRange, PlaybackFlags); } + void ShowAllPlayersListToFollow() { NativeCall(this, "AShooterPlayerController.ShowAllPlayersListToFollow"); } + void ShowAllianceChat() { NativeCall(this, "AShooterPlayerController.ShowAllianceChat"); } + void ShowBattleGameModeHUD() { NativeCall(this, "AShooterPlayerController.ShowBattleGameModeHUD"); } + void ShowGlobalChat() { NativeCall(this, "AShooterPlayerController.ShowGlobalChat"); } + void ShowInGameMenu() { NativeCall(this, "AShooterPlayerController.ShowInGameMenu"); } + void ShowLocalChat() { NativeCall(this, "AShooterPlayerController.ShowLocalChat"); } + void ShowMyAdminManager() { NativeCall(this, "AShooterPlayerController.ShowMyAdminManager"); } + void ShowMyCraftables() { NativeCall(this, "AShooterPlayerController.ShowMyCraftables"); } + void ShowMyInventory() { NativeCall(this, "AShooterPlayerController.ShowMyInventory"); } + void ShowSextantMap(bool bShow) { NativeCall(this, "AShooterPlayerController.ShowSextantMap", bShow); } + void ShowTribeChat() { NativeCall(this, "AShooterPlayerController.ShowTribeChat"); } + void ShowTribeManager() { NativeCall(this, "AShooterPlayerController.ShowTribeManager"); } + void ShowTutorial(int TutorialIndex, bool bForceDisplay) { NativeCall(this, "AShooterPlayerController.ShowTutorial", TutorialIndex, bForceDisplay); } + AActor* SpawnActor(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, bool bDoDeferBeginPlay) { return NativeCall(this, "AShooterPlayerController.SpawnActor", blueprintPath, spawnDistance, spawnYOffset, ZOffset, bDoDeferBeginPlay); } + void SpawnActorSpread(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpread", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnActorSpreadTamed(FString* blueprintPath, float spawnDistance, float spawnYOffset, float ZOffset, int NumberActors, float SpreadAmount) { NativeCall(this, "AShooterPlayerController.SpawnActorSpreadTamed", blueprintPath, spawnDistance, spawnYOffset, ZOffset, NumberActors, SpreadAmount); } + void SpawnHUD(TSubclassOf NewHUDClass) { NativeCall>(this, "AShooterPlayerController.SpawnHUD", NewHUDClass); } + void SpawnPlayerCameraManager() { NativeCall(this, "AShooterPlayerController.SpawnPlayerCameraManager"); } + void SpectatorDetachOrbitCamera() { NativeCall(this, "AShooterPlayerController.SpectatorDetachOrbitCamera"); } + void SpectatorNextPlayer() { NativeCall(this, "AShooterPlayerController.SpectatorNextPlayer"); } + void SpectatorPreviousPlayer() { NativeCall(this, "AShooterPlayerController.SpectatorPreviousPlayer"); } + void SpectatorTurn(float Val) { NativeCall(this, "AShooterPlayerController.SpectatorTurn", Val); } + void SpectatorUseItem(int Index) { NativeCall(this, "AShooterPlayerController.SpectatorUseItem", Index); } + void StartArkGamepadBackButton() { NativeCall(this, "AShooterPlayerController.StartArkGamepadBackButton"); } + void StartArkGamepadDpadDown() { NativeCall(this, "AShooterPlayerController.StartArkGamepadDpadDown"); } + void StartArkGamepadDpadLeft() { NativeCall(this, "AShooterPlayerController.StartArkGamepadDpadLeft"); } + void StartArkGamepadDpadRight() { NativeCall(this, "AShooterPlayerController.StartArkGamepadDpadRight"); } + void StartArkGamepadDpadUp() { NativeCall(this, "AShooterPlayerController.StartArkGamepadDpadUp"); } + void StartArkGamepadFaceButtonBottom() { NativeCall(this, "AShooterPlayerController.StartArkGamepadFaceButtonBottom"); } + void StartArkGamepadFaceButtonLeft() { NativeCall(this, "AShooterPlayerController.StartArkGamepadFaceButtonLeft"); } + void StartArkGamepadFaceButtonRight() { NativeCall(this, "AShooterPlayerController.StartArkGamepadFaceButtonRight"); } + void StartArkGamepadFaceButtonTop() { NativeCall(this, "AShooterPlayerController.StartArkGamepadFaceButtonTop"); } + void StartArkGamepadLeftShoulder() { NativeCall(this, "AShooterPlayerController.StartArkGamepadLeftShoulder"); } + void StartArkGamepadRightShoulder() { NativeCall(this, "AShooterPlayerController.StartArkGamepadRightShoulder"); } + void StartEmoteSelection() { NativeCall(this, "AShooterPlayerController.StartEmoteSelection"); } + void StartFeatsSelection() { NativeCall(this, "AShooterPlayerController.StartFeatsSelection"); } + void StartInventoryRadialSelector() { NativeCall(this, "AShooterPlayerController.StartInventoryRadialSelector"); } + void StartPlayerActionRadialSelector() { NativeCall(this, "AShooterPlayerController.StartPlayerActionRadialSelector"); } + void StartSurfaceCamera(float OnSurfaceTargetYaw, float OnSurfaceTargetPitch, float OnSurfaceTargetRoll, float OnSurfaceCameraInterpolationSpeed, bool UseSurfaceCameraInterpolation, FVector* CameraOffset) { NativeCall(this, "AShooterPlayerController.StartSurfaceCamera", OnSurfaceTargetYaw, OnSurfaceTargetPitch, OnSurfaceTargetRoll, OnSurfaceCameraInterpolationSpeed, UseSurfaceCameraInterpolation, CameraOffset); } + void StartSurfaceCameraForPassenger(float OnSurfaceTargetYaw, float OnSurfaceTargetPitch, float OnSurfaceTargetRoll) { NativeCall(this, "AShooterPlayerController.StartSurfaceCameraForPassenger", OnSurfaceTargetYaw, OnSurfaceTargetPitch, OnSurfaceTargetRoll); } + void StartTalkingWrapper() { NativeCall(this, "AShooterPlayerController.StartTalkingWrapper"); } + void StartWhispering() { NativeCall(this, "AShooterPlayerController.StartWhispering"); } + void StartWhistleSelection() { NativeCall(this, "AShooterPlayerController.StartWhistleSelection"); } + void StartYelling() { NativeCall(this, "AShooterPlayerController.StartYelling"); } + void StopLoadingMusic() { NativeCall(this, "AShooterPlayerController.StopLoadingMusic"); } + void StopSpectating() { NativeCall(this, "AShooterPlayerController.StopSpectating"); } + void StopTalkingWrapper() { NativeCall(this, "AShooterPlayerController.StopTalkingWrapper"); } + void SwitchToNextLoadedWeapon() { NativeCall(this, "AShooterPlayerController.SwitchToNextLoadedWeapon"); } + void TestAlarmNotification(FString Title, FString Message) { NativeCall(this, "AShooterPlayerController.TestAlarmNotification", Title, Message); } + void TestNotification() { NativeCall(this, "AShooterPlayerController.TestNotification"); } + static void TickStasisForCharacter(UWorld* theWorld, AShooterCharacter* Character, FVector ActorLocation) { NativeCall(nullptr, "AShooterPlayerController.TickStasisForCharacter", theWorld, Character, ActorLocation); } + void ToggleAutoChat() { NativeCall(this, "AShooterPlayerController.ToggleAutoChat"); } + void ToggleDinoNameTags() { NativeCall(this, "AShooterPlayerController.ToggleDinoNameTags"); } + void ToggleGun() { NativeCall(this, "AShooterPlayerController.ToggleGun"); } + void ToggleHUDHidden() { NativeCall(this, "AShooterPlayerController.ToggleHUDHidden"); } + void ToggleHud() { NativeCall(this, "AShooterPlayerController.ToggleHud"); } + void ToggleMap() { NativeCall(this, "AShooterPlayerController.ToggleMap"); } + void ToggleMapReleased() { NativeCall(this, "AShooterPlayerController.ToggleMapReleased"); } + void ToggleShowAllPlayersWhenSpectating() { NativeCall(this, "AShooterPlayerController.ToggleShowAllPlayersWhenSpectating"); } + void ToggleShowAllPlayersWhenSpectatingLocal() { NativeCall(this, "AShooterPlayerController.ToggleShowAllPlayersWhenSpectatingLocal"); } + void ToggleSpeaking(bool bSpeaking, bool UseSuperRange) { NativeCall(this, "AShooterPlayerController.ToggleSpeaking", bSpeaking, UseSuperRange); } + void ToggleWeaponAccessory() { NativeCall(this, "AShooterPlayerController.ToggleWeaponAccessory"); } + void TriggerPlayerAction(int ActionIndex) { NativeCall(this, "AShooterPlayerController.TriggerPlayerAction", ActionIndex); } + void TryRespec() { NativeCall(this, "AShooterPlayerController.TryRespec"); } + void TurnAtRate(float Val) { NativeCall(this, "AShooterPlayerController.TurnAtRate", Val); } + void TurnInput(float Val) { NativeCall(this, "AShooterPlayerController.TurnInput", Val); } + void UnFreeze() { NativeCall(this, "AShooterPlayerController.UnFreeze"); } + void UnPossess() { NativeCall(this, "AShooterPlayerController.UnPossess"); } + void UnbanPlayer(FString PlayerSteamName) { NativeCall(this, "AShooterPlayerController.UnbanPlayer", PlayerSteamName); } + void UnlockEmote(FName EmoteName) { NativeCall(this, "AShooterPlayerController.UnlockEmote", EmoteName); } + void UnlockExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.UnlockExplorerNote", ExplorerNoteIndex); } + void UnlockFeat(FName FeatName) { NativeCall(this, "AShooterPlayerController.UnlockFeat", FeatName); } + void UpdateNearbyTreasures(float DeltaTime) { NativeCall(this, "AShooterPlayerController.UpdateNearbyTreasures", DeltaTime); } + void UpdatePostProcessVolumes() { NativeCall(this, "AShooterPlayerController.UpdatePostProcessVolumes"); } + void UpdateRequestEquippedItemsQueue() { NativeCall(this, "AShooterPlayerController.UpdateRequestEquippedItemsQueue"); } + void UpdateRotation(float DeltaTime) { NativeCall(this, "AShooterPlayerController.UpdateRotation", DeltaTime); } + void UploadCharacterPlayerDataToArk(TArray* PlayerDataBytes, FString PlayerName, TArray PlayerStats, unsigned __int64 PlayerDataId, bool WithItems, unsigned int ItemCount) { NativeCall*, FString, TArray, unsigned __int64, bool, unsigned int>(this, "AShooterPlayerController.UploadCharacterPlayerDataToArk", PlayerDataBytes, PlayerName, PlayerStats, PlayerDataId, WithItems, ItemCount); } + bool UseTribeGroupRanks() { return NativeCall(this, "AShooterPlayerController.UseTribeGroupRanks"); } + FString* WritePNTScreenshot(FString* result) { return NativeCall(this, "AShooterPlayerController.WritePNTScreenshot", result); } + void ZoomInGPS() { NativeCall(this, "AShooterPlayerController.ZoomInGPS"); } + void ZoomInGPSStop() { NativeCall(this, "AShooterPlayerController.ZoomInGPSStop"); } + void ZoomOutGPS() { NativeCall(this, "AShooterPlayerController.ZoomOutGPS"); } + void ZoomOutGPSStop() { NativeCall(this, "AShooterPlayerController.ZoomOutGPSStop"); } + void CheckCheatsPassword(FString* pass) { NativeCall(this, "AShooterPlayerController.CheckCheatsPassword", pass); } + void CheckRequestSpectator(FString* InSpectatorPass) { NativeCall(this, "AShooterPlayerController.CheckRequestSpectator", InSpectatorPass); } + void ClientAbortTravel(unsigned int ServerID, unsigned __int64 ServerSteamId) { NativeCall(this, "AShooterPlayerController.ClientAbortTravel", ServerID, ServerSteamId); } + void ClientAddActorItem(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification) { NativeCall(this, "AShooterPlayerController.ClientAddActorItem", forInventory, itemInfo, bEquipItem, ShowHUDNotification); } + void ClientAddActorItemToFolder(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, bool bEquipItem, bool ShowHUDNotification, FString* ToFolder) { NativeCall(this, "AShooterPlayerController.ClientAddActorItemToFolder", forInventory, itemInfo, bEquipItem, ShowHUDNotification, ToFolder); } + void ClientAddFloatingDamageText(FVector_NetQuantize AtLocation, int DamageAmount, int FromTeamID, bool bForceText) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingDamageText", AtLocation, DamageAmount, FromTeamID, bForceText); } + void ClientAddFloatingText(FVector_NetQuantize AtLocation, FString* FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime, bool bForce) { NativeCall(this, "AShooterPlayerController.ClientAddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime, bForce); } + void ClientAddFolderToInventoryComponent(UPrimalInventoryComponent* forInventory, FString* NewCustomFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ClientAddFolderToInventoryComponent", forInventory, NewCustomFolderName, InventoryCompType); } + void ClientAfterServerChange() { NativeCall(this, "AShooterPlayerController.ClientAfterServerChange"); } + void ClientBeforeServerChange(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientBeforeServerChange", Message); } + void ClientChatMessage(FChatMessage Chat) { NativeCall(this, "AShooterPlayerController.ClientChatMessage", Chat); } + void ClientCollectedAchievementItem(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientCollectedAchievementItem", ItemClass); } + void ClientDoMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ClientDoMultiUse", ForObject, useIndex); } + void ClientDrawDebugSphere(TArray* Loc, float Radius, int Segments, FColor DrawColor) { NativeCall*, float, int, FColor>(this, "AShooterPlayerController.ClientDrawDebugSphere", Loc, Radius, Segments, DrawColor); } + void ClientEndReceivingTribeLog() { NativeCall(this, "AShooterPlayerController.ClientEndReceivingTribeLog"); } + void ClientFailedRemoveSaddle() { NativeCall(this, "AShooterPlayerController.ClientFailedRemoveSaddle"); } + void ClientFeatActivationResult(TSubclassOf FeatClass, int ActivationResult) { NativeCall, int>(this, "AShooterPlayerController.ClientFeatActivationResult", FeatClass, ActivationResult); } + void ClientFinishedReceivingActorItems(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientFinishedReceivingActorItems", forInventory, bEquippedItems); } + void ClientFinishedUseSlotTimeRemaining(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientFinishedUseSlotTimeRemaining", forInventory, itemID); } + void ClientForceCacheTattooPainting() { NativeCall(this, "AShooterPlayerController.ClientForceCacheTattooPainting"); } + void ClientGetMessageOfTheDay(FString* Message) { NativeCall(this, "AShooterPlayerController.ClientGetMessageOfTheDay", Message); } + void ClientGiveFOW() { NativeCall(this, "AShooterPlayerController.ClientGiveFOW"); } + void ClientGotoMainMenuListSessions() { NativeCall(this, "AShooterPlayerController.ClientGotoMainMenuListSessions"); } + void ClientHUDNotificationTypeParams(int MessageType, int MessageType1, int MessageParam2, UObject* ObjectParam1, FString* StringParam1, float floatParam1) { NativeCall(this, "AShooterPlayerController.ClientHUDNotificationTypeParams", MessageType, MessageType1, MessageParam2, ObjectParam1, StringParam1, floatParam1); } + void ClientInformHomeServerFull() { NativeCall(this, "AShooterPlayerController.ClientInformHomeServerFull"); } + void ClientInformNeedsNewHomeServer() { NativeCall(this, "AShooterPlayerController.ClientInformNeedsNewHomeServer"); } + void ClientInitHUDScenes() { NativeCall(this, "AShooterPlayerController.ClientInitHUDScenes"); } + void ClientInsertActorItem(UPrimalInventoryComponent* forInventory, FItemNetInfo itemInfo, FItemNetID InsertAfterItemID) { NativeCall(this, "AShooterPlayerController.ClientInsertActorItem", forInventory, itemInfo, InsertAfterItemID); } + void ClientJoinVivoxChannel(FString* JoinChannelVAT, FString* ChannelName, int AtlasChannelTypeAsInt, int AttenuationModelAsInt32, float MaxDistance, float MinDistance, float Rolloff) { NativeCall(this, "AShooterPlayerController.ClientJoinVivoxChannel", JoinChannelVAT, ChannelName, AtlasChannelTypeAsInt, AttenuationModelAsInt32, MaxDistance, MinDistance, Rolloff); } + void ClientLoginToVivox(FString* LoginVAT, FString* VivoxUsername) { NativeCall(this, "AShooterPlayerController.ClientLoginToVivox", LoginVAT, VivoxUsername); } + void ClientMarkSeamlessActors(TArray* ActorsWhichWillTravelSeamlessly, unsigned int DestServerId, EFastTravelType FastTravelType, float GridTravelToPosX, float GridTravelToPosY, float GridTravelToPosZ) { NativeCall*, unsigned int, EFastTravelType, float, float, float>(this, "AShooterPlayerController.ClientMarkSeamlessActors", ActorsWhichWillTravelSeamlessly, DestServerId, FastTravelType, GridTravelToPosX, GridTravelToPosY, GridTravelToPosZ); } + void ClientNetReceiveMapEntities(TArray* TribeEntities) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveMapEntities", TribeEntities); } + void ClientNetReceiveTribeMembersFinished() { NativeCall(this, "AShooterPlayerController.ClientNetReceiveTribeMembersFinished"); } + void ClientNetReceiveTribeMembersLastOnlineAt(TArray* MembersLastOnlineAt) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersLastOnlineAt", MembersLastOnlineAt); } + void ClientNetReceiveTribeMembersPlayerDataID(TArray* MembersPlayerDataID) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersPlayerDataID", MembersPlayerDataID); } + void ClientNetReceiveTribeMembersPlayerName(TArray* MembersPlayerName) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersPlayerName", MembersPlayerName); } + void ClientNetReceiveTribeMembersRankGroupId(TArray* MembersRankGroupId) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeMembersRankGroupId", MembersRankGroupId); } + void ClientNetReceiveTribeTribeAdmins(TArray* TribeAdmins) { NativeCall*>(this, "AShooterPlayerController.ClientNetReceiveTribeTribeAdmins", TribeAdmins); } + void ClientNetStartReceivingMapEntities() { NativeCall(this, "AShooterPlayerController.ClientNetStartReceivingMapEntities"); } + void ClientNetStopReceivingMapEntities(int ServerMapEntitiesChangeID) { NativeCall(this, "AShooterPlayerController.ClientNetStopReceivingMapEntities", ServerMapEntitiesChangeID); } + void ClientNotifyAdmin() { NativeCall(this, "AShooterPlayerController.ClientNotifyAdmin"); } + void ClientNotifyCantHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHarvest"); } + void ClientNotifyCantHitHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyCantHitHarvest"); } + void ClientNotifyDefeatedDino(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyDefeatedDino", DinoClass); } + void ClientNotifyDinoDeath(FString* DinoName, FString* AttackerName, TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyDinoDeath", DinoName, AttackerName, DinoClass); } + void ClientNotifyDinoKill(APrimalDinoCharacter* InstigatingPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyDinoKill", InstigatingPawn, VictimPawn); } + void ClientNotifyEditText(TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ClientNotifyEditText", ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ClientNotifyHitHarvest() { NativeCall(this, "AShooterPlayerController.ClientNotifyHitHarvest"); } + void ClientNotifyLevelUp(APrimalCharacter* ForChar, int NewLevel) { NativeCall(this, "AShooterPlayerController.ClientNotifyLevelUp", ForChar, NewLevel); } + void ClientNotifyListenServerOutOfRange() { NativeCall(this, "AShooterPlayerController.ClientNotifyListenServerOutOfRange"); } + void ClientNotifyMessageOfTheDay(FString* Message, float timeToDisplay) { NativeCall(this, "AShooterPlayerController.ClientNotifyMessageOfTheDay", Message, timeToDisplay); } + void ClientNotifyPaintFinished(bool bSuccess) { NativeCall(this, "AShooterPlayerController.ClientNotifyPaintFinished", bSuccess); } + void ClientNotifyPlayerDeath(APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeath", InstigatingPawn, DamageCauser); } + void ClientNotifyPlayerDeathReason(FString* ReasonString) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerDeathReason", ReasonString); } + void ClientNotifyPlayerKill(AActor* PlayerPawn, APawn* VictimPawn) { NativeCall(this, "AShooterPlayerController.ClientNotifyPlayerKill", PlayerPawn, VictimPawn); } + void ClientNotifyRemotePlayerDeath(FString* PlayerName, FString* AttackerName) { NativeCall(this, "AShooterPlayerController.ClientNotifyRemotePlayerDeath", PlayerName, AttackerName); } + void ClientNotifySummonedDino(TSubclassOf DinoClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifySummonedDino", DinoClass); } + void ClientNotifyTamedDino(TSubclassOf DinoClass, FString* NameOveride, int Level) { NativeCall, FString*, int>(this, "AShooterPlayerController.ClientNotifyTamedDino", DinoClass, NameOveride, Level); } + void ClientNotifyTorpidityIncrease() { NativeCall(this, "AShooterPlayerController.ClientNotifyTorpidityIncrease"); } + void ClientNotifyTribeDataUpdated() { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeDataUpdated"); } + void ClientNotifyTribeXP(float HowMuch) { NativeCall(this, "AShooterPlayerController.ClientNotifyTribeXP", HowMuch); } + void ClientNotifyUnlockHairStyleOrEmote(FName HairstyleOrEmoteName) { NativeCall(this, "AShooterPlayerController.ClientNotifyUnlockHairStyleOrEmote", HairstyleOrEmoteName); } + void ClientNotifyUnlockedEngram(TSubclassOf ItemClass) { NativeCall>(this, "AShooterPlayerController.ClientNotifyUnlockedEngram", ItemClass); } + void ClientNotifyUpgradedItem(UPrimalItem* UpgradedItem) { NativeCall(this, "AShooterPlayerController.ClientNotifyUpgradedItem", UpgradedItem); } + void ClientOnFastTravelFailed() { NativeCall(this, "AShooterPlayerController.ClientOnFastTravelFailed"); } + void ClientOnReceivedCaptainOrder(ECaptainOrder::Type ReceivedOrder, FVector TargetLocation, bool bFromCaptain) { NativeCall(this, "AShooterPlayerController.ClientOnReceivedCaptainOrder", ReceivedOrder, TargetLocation, bFromCaptain); } + void ClientOnTreasureCollected(FVector TreasureLocation) { NativeCall(this, "AShooterPlayerController.ClientOnTreasureCollected", TreasureLocation); } + void ClientPlayLocalSound(USoundBase* aSound, bool bAttach) { NativeCall(this, "AShooterPlayerController.ClientPlayLocalSound", aSound, bAttach); } + void ClientReceiveDinoAncestors(APrimalDinoCharacter* ForDino, TArray* DinoAncestors, TArray* DinoAncestorsMale, int RandomMutationsFemale, int RandomMutationsMale) { NativeCall*, TArray*, int, int>(this, "AShooterPlayerController.ClientReceiveDinoAncestors", ForDino, DinoAncestors, DinoAncestorsMale, RandomMutationsFemale, RandomMutationsMale); } + void ClientReceiveMyTribeOnlineList(TArray* OnlinePlayerIDs) { NativeCall*>(this, "AShooterPlayerController.ClientReceiveMyTribeOnlineList", OnlinePlayerIDs); } + void ClientReceiveOriginalHairColor(FLinearColor HairColor) { NativeCall(this, "AShooterPlayerController.ClientReceiveOriginalHairColor", HairColor); } + void ClientReceiveStructureCraftingStatItem(APrimalStructure* ForStructure, FItemNetInfo ItemInfo) { NativeCall(this, "AShooterPlayerController.ClientReceiveStructureCraftingStatItem", ForStructure, ItemInfo); } + void ClientReceiveTribeRankGroup(int GroupRankIndex) { NativeCall(this, "AShooterPlayerController.ClientReceiveTribeRankGroup", GroupRankIndex); } + void ClientRemoveActorItem(UPrimalInventoryComponent* forInventory, FItemNetID itemID, bool showHUDMessage) { NativeCall(this, "AShooterPlayerController.ClientRemoveActorItem", forInventory, itemID, showHUDMessage); } + void ClientRemovedItemFromSlot(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientRemovedItemFromSlot", forInventory, itemID); } + void ClientReplicateTravelledObjects(TArray* Objects) { NativeCall*>(this, "AShooterPlayerController.ClientReplicateTravelledObjects", Objects); } + void ClientSendArkDataPayload(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ClientSendArkDataPayload", ID, ArkDataType, DataBytes); } + void ClientSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ClientSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ClientSendArkDataPayloadEnd(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, unsigned __int64 PlayerDataID) { NativeCall(this, "AShooterPlayerController.ClientSendArkDataPayloadEnd", ID, ArkDataType, PlayerDataID); } + void ClientServerChatDirectMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatDirectMessage", MessageText, MessageColor, bIsBold); } + void ClientServerChatMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold) { NativeCall(this, "AShooterPlayerController.ClientServerChatMessage", MessageText, MessageColor, bIsBold); } + void ClientServerNotification(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientServerNotificationSingle(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int MessageTypeID) { NativeCall(this, "AShooterPlayerController.ClientServerNotificationSingle", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, MessageTypeID); } + void ClientServerSOTFNotificationCustom(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay) { NativeCall(this, "AShooterPlayerController.ClientServerSOTFNotificationCustom", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay); } + void ClientSetCheatStatus(bool bEnable) { NativeCall(this, "AShooterPlayerController.ClientSetCheatStatus", bEnable); } + void ClientSetControlRotation(FRotator NewRotation) { NativeCall(this, "AShooterPlayerController.ClientSetControlRotation", NewRotation); } + void ClientSetSpectatorLocation(FVector NewLocation) { NativeCall(this, "AShooterPlayerController.ClientSetSpectatorLocation", NewLocation); } + void ClientShowCharacterCreationUI(bool bShowDownloadCharacter) { NativeCall(this, "AShooterPlayerController.ClientShowCharacterCreationUI", bShowDownloadCharacter); } + void ClientShowPaintingUI(UObject* ObjectToPaint) { NativeCall(this, "AShooterPlayerController.ClientShowPaintingUI", ObjectToPaint); } + void ClientShowSpawnUI(float Delay) { NativeCall(this, "AShooterPlayerController.ClientShowSpawnUI", Delay); } + void ClientStartReceivingActorItems(UPrimalInventoryComponent* forInventory, bool bEquippedItems) { NativeCall(this, "AShooterPlayerController.ClientStartReceivingActorItems", forInventory, bEquippedItems); } + void ClientStartReceivingTribeLog() { NativeCall(this, "AShooterPlayerController.ClientStartReceivingTribeLog"); } + void ClientStartSurfaceCameraForPassenger(float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "AShooterPlayerController.ClientStartSurfaceCameraForPassenger", yaw, pitch, roll, bInvertTurnInput); } + void ClientStartTravelling(unsigned int ServerID, unsigned __int64 ServerSteamId, unsigned __int64 TravelLog, bool UsingBattlEye) { NativeCall(this, "AShooterPlayerController.ClientStartTravelling", ServerID, ServerSteamId, TravelLog, UsingBattlEye); } + void ClientStartingFastTravel() { NativeCall(this, "AShooterPlayerController.ClientStartingFastTravel"); } + void ClientStopLocalSound(USoundBase* aSound) { NativeCall(this, "AShooterPlayerController.ClientStopLocalSound", aSound); } + void ClientSwapActorItems(UPrimalInventoryComponent* forInventory, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ClientSwapActorItems", forInventory, itemID1, itemID2); } + void ClientSyncCurrentSublevels_Finish() { NativeCall(this, "AShooterPlayerController.ClientSyncCurrentSublevels_Finish"); } + void ClientSyncCurrentSublevels_RecieveData(TArray* CurrentData) { NativeCall*>(this, "AShooterPlayerController.ClientSyncCurrentSublevels_RecieveData", CurrentData); } + void ClientSyncCurrentSublevels_Start() { NativeCall(this, "AShooterPlayerController.ClientSyncCurrentSublevels_Start"); } + void ClientTeleportSpectator(FVector Location, unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ClientTeleportSpectator", Location, PlayerID); } + void ClientUnlockAchievement(FString* AchievementID) { NativeCall(this, "AShooterPlayerController.ClientUnlockAchievement", AchievementID); } + void ClientUnlockExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ClientUnlockExplorerNote", ExplorerNoteIndex); } + void ClientUpdateGroupInfo(TArray* GroupInfos, APrimalRaft* forRaft) { NativeCall*, APrimalRaft*>(this, "AShooterPlayerController.ClientUpdateGroupInfo", GroupInfos, forRaft); } + void ClientUpdateInventoryCraftQueue(UPrimalInventoryComponent* forInventory, TArray* CraftQueueEntries) { NativeCall*>(this, "AShooterPlayerController.ClientUpdateInventoryCraftQueue", forInventory, CraftQueueEntries); } + void ClientUpdateItemDurability(UPrimalInventoryComponent* forInventory, FItemNetID itemID, float ItemDurability) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemDurability", forInventory, itemID, ItemDurability); } + void ClientUpdateItemQuantity(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int ItemQuantity) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemQuantity", forInventory, itemID, ItemQuantity); } + void ClientUpdateItemSpoilingTimes(UPrimalInventoryComponent* forInventory, FItemNetID itemID, long double NextSpoilingTime, long double LastSpoilingTime) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemSpoilingTimes", forInventory, itemID, NextSpoilingTime, LastSpoilingTime); } + void ClientUpdateItemWeaponClipAmmo(UPrimalInventoryComponent* forInventory, FItemNetID itemID, int Ammo) { NativeCall(this, "AShooterPlayerController.ClientUpdateItemWeaponClipAmmo", forInventory, itemID, Ammo); } + void ClientUpdateUnlockedSkills(TArray>* NetUnlockedSkills) { NativeCall>*>(this, "AShooterPlayerController.ClientUpdateUnlockedSkills", NetUnlockedSkills); } + void ClientUsedActorItem(UPrimalInventoryComponent* forInventory, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ClientUsedActorItem", forInventory, itemID); } + void Client_CaptainExtraActions(ECaptainOtherActions::Type RequestedAction, APrimalStructureSeating_DriverSeat* RequestedFromSeat, int CurrentValue, TSubclassOf SelectedAmmoType) { NativeCall>(this, "AShooterPlayerController.Client_CaptainExtraActions", RequestedAction, RequestedFromSeat, CurrentValue, SelectedAmmoType); } + void ClosingViewOnlyInventory() { NativeCall(this, "AShooterPlayerController.ClosingViewOnlyInventory"); } + void DoServerCheckUnfreeze() { NativeCall(this, "AShooterPlayerController.DoServerCheckUnfreeze"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterPlayerController.GetPrivateStaticClass", Package); } + void InitCharacterPainting(APrimalCharacter* Char, bool bForTattoo) { NativeCall(this, "AShooterPlayerController.InitCharacterPainting", Char, bForTattoo); } + void NotifyTribeWarStatus(FString* EnemyTribeString, int StatusType) { NativeCall(this, "AShooterPlayerController.NotifyTribeWarStatus", EnemyTribeString, StatusType); } + void OnDisableSpectator() { NativeCall(this, "AShooterPlayerController.OnDisableSpectator"); } + void PlayHitMarkerCharacter(float InHitMarkerScale, bool InWasMeleeHit, APrimalCharacter* VictimCharacter) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacter", InHitMarkerScale, InWasMeleeHit, VictimCharacter); } + void PlayHitMarkerCharacterAlly(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerCharacterAlly", InHitMarkerScale, InWasMeleeHit); } + void PlayHitMarkerStructure(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructure", InHitMarkerScale, InWasMeleeHit); } + void PlayHitMarkerStructureAlly(float InHitMarkerScale, bool InWasMeleeHit) { NativeCall(this, "AShooterPlayerController.PlayHitMarkerStructureAlly", InHitMarkerScale, InWasMeleeHit); } + FString* PlayerCommand(FString* result, FString* TheCommand) { return NativeCall(this, "AShooterPlayerController.PlayerCommand", result, TheCommand); } + void RPCStayAlive() { NativeCall(this, "AShooterPlayerController.RPCStayAlive"); } + void ServerActorCloseRemoteInventory(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorCloseRemoteInventory", inventoryComp); } + void ServerActorViewRemoteInventory(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerActorViewRemoteInventory", inventoryComp); } + void ServerAddAchievementID(FString* AchievementID, bool bIsOnSpawn) { NativeCall(this, "AShooterPlayerController.ServerAddAchievementID", AchievementID, bIsOnSpawn); } + void ServerAddItemToCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerAddItemToCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerAddTribeMarker(FString* Name, float Coord1, float Coord2, FColor TextColor) { NativeCall(this, "AShooterPlayerController.ServerAddTribeMarker", Name, Coord1, Coord2, TextColor); } + void ServerAllowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerAllowPlayerToJoinNoCheck", PlayerId); } + void ServerBanPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerBanPlayer", PlayerSteamName, PlayerSteamID); } + void ServerChangeHomeServer(unsigned int NewHomeServerId) { NativeCall(this, "AShooterPlayerController.ServerChangeHomeServer", NewHomeServerId); } + void ServerCheckUnfreeze() { NativeCall(this, "AShooterPlayerController.ServerCheckUnfreeze"); } + void ServerCraftItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerCraftItem", inventoryComp, itemID); } + void ServerCycleSpectator(bool bNext) { NativeCall(this, "AShooterPlayerController.ServerCycleSpectator", bNext); } + void ServerDeleteCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType) { NativeCall(this, "AShooterPlayerController.ServerDeleteCustomFolder", forInventory, CFolderName, InventoryCompType); } + void ServerDeleteItemFromCustomFolder(UPrimalInventoryComponent* forInventory, FString* CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "AShooterPlayerController.ServerDeleteItemFromCustomFolder", forInventory, CFolderName, InventoryCompType, ItemId); } + void ServerDisallowPlayerToJoinNoCheck(FString* PlayerId) { NativeCall(this, "AShooterPlayerController.ServerDisallowPlayerToJoinNoCheck", PlayerId); } + void ServerDropFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bOnlyIfEquipped) { NativeCall(this, "AShooterPlayerController.ServerDropFromRemoteInventory", inventoryComp, itemID, bOnlyIfEquipped); } + void ServerEquipPawnItem(FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipPawnItem", itemID); } + void ServerEquipToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerEquipToRemoteInventory", inventoryComp, itemID); } + void ServerGetMessageOfTheDay() { NativeCall(this, "AShooterPlayerController.ServerGetMessageOfTheDay"); } + void ServerGetNotificationSettings() { NativeCall(this, "AShooterPlayerController.ServerGetNotificationSettings"); } + void ServerGetOriginalHairColor() { NativeCall(this, "AShooterPlayerController.ServerGetOriginalHairColor"); } + void ServerGlobalCommand(FString* Msg) { NativeCall(this, "AShooterPlayerController.ServerGlobalCommand", Msg); } + void ServerInventoryClearCraftQueue(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerInventoryClearCraftQueue", inventoryComp); } + void ServerKickPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerKickPlayer", PlayerSteamName, PlayerSteamID); } + void ServerLoginToVivox() { NativeCall(this, "AShooterPlayerController.ServerLoginToVivox"); } + void ServerMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerMultiUse", ForObject, useIndex); } + void ServerNotifyEditText(FString* TextToUse, bool checkedBox, TSubclassOf ForObjectClass, unsigned int ExtraID1, unsigned int ExtraID2, UObject* ForObject) { NativeCall, unsigned int, unsigned int, UObject*>(this, "AShooterPlayerController.ServerNotifyEditText", TextToUse, checkedBox, ForObjectClass, ExtraID1, ExtraID2, ForObject); } + void ServerReadMessageOFTheDay() { NativeCall(this, "AShooterPlayerController.ServerReadMessageOFTheDay"); } + void ServerReleaseSeatingStructure() { NativeCall(this, "AShooterPlayerController.ServerReleaseSeatingStructure"); } + void ServerRemovePassenger() { NativeCall(this, "AShooterPlayerController.ServerRemovePassenger"); } + void ServerRemovePawnItem(FItemNetID itemID, bool bSecondryAction, bool bOnlyIfEquipped) { NativeCall(this, "AShooterPlayerController.ServerRemovePawnItem", itemID, bSecondryAction, bOnlyIfEquipped); } + void ServerRemoveTribeMarker(unsigned int MarkerID) { NativeCall(this, "AShooterPlayerController.ServerRemoveTribeMarker", MarkerID); } + void ServerRepairItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRepairItem", inventoryComp, itemID); } + void ServerRepeatMultiUse(UObject* ForObject, int useIndex) { NativeCall(this, "AShooterPlayerController.ServerRepeatMultiUse", ForObject, useIndex); } + void ServerRequestActivateFeat(TSubclassOf FeatClass) { NativeCall>(this, "AShooterPlayerController.ServerRequestActivateFeat", FeatClass); } + void ServerRequestActivateStationGroup(APrimalRaft* forRaft, int GroupIndex, bool bActivateForCaptain, bool bNewValue) { NativeCall(this, "AShooterPlayerController.ServerRequestActivateStationGroup", forRaft, GroupIndex, bActivateForCaptain, bNewValue); } + void ServerRequestActorItems(UPrimalInventoryComponent* forInventory, bool bInventoryItems, bool bIsFirstSpawn, bool allowLocalController) { NativeCall(this, "AShooterPlayerController.ServerRequestActorItems", forInventory, bInventoryItems, bIsFirstSpawn, allowLocalController); } + void ServerRequestDinoAncestors(APrimalDinoCharacter* ForDino) { NativeCall(this, "AShooterPlayerController.ServerRequestDinoAncestors", ForDino); } + void ServerRequestDropAllItems(FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestDropAllItems", CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestFastTravelToShipBed(unsigned int FromBedID, unsigned int ToBedID) { NativeCall(this, "AShooterPlayerController.ServerRequestFastTravelToShipBed", FromBedID, ToBedID); } + void ServerRequestFullMapEntities(int ClientFullMapEntitiesChangeID, int ClientFullMapEntitiesCount) { NativeCall(this, "AShooterPlayerController.ServerRequestFullMapEntities", ClientFullMapEntitiesChangeID, ClientFullMapEntitiesCount); } + void ServerRequestInitiateSettlementWar(int requestIslandId, int requestStartTime, FItemNetID RequestUseItem) { NativeCall(this, "AShooterPlayerController.ServerRequestInitiateSettlementWar", requestIslandId, requestStartTime, RequestUseItem); } + void ServerRequestInventorySwapItems(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2) { NativeCall(this, "AShooterPlayerController.ServerRequestInventorySwapItems", inventoryComp, itemID1, itemID2); } + void ServerRequestInventoryUseItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItem", inventoryComp, itemID); } + void ServerRequestInventoryUseItemWithActor(AActor* anActor, UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithActor", anActor, inventoryComp, itemID1, AdditionalData); } + void ServerRequestInventoryUseItemWithItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID1, FItemNetID itemID2, int AdditionalData) { NativeCall(this, "AShooterPlayerController.ServerRequestInventoryUseItemWithItem", inventoryComp, itemID1, itemID2, AdditionalData); } + void ServerRequestLevelUp(UPrimalCharacterStatusComponent* forStatusComp, EPrimalCharacterStatusValue::Type ValueType) { NativeCall(this, "AShooterPlayerController.ServerRequestLevelUp", forStatusComp, ValueType); } + void ServerRequestMyClientTribeData(unsigned int MyTribeMarkerVersion) { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeData", MyTribeMarkerVersion); } + void ServerRequestMyClientTribeMemberData() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeMemberData"); } + void ServerRequestMyClientTribeMembersLastOnlineAt() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeMembersLastOnlineAt"); } + void ServerRequestMyClientTribeRankGroup() { NativeCall(this, "AShooterPlayerController.ServerRequestMyClientTribeRankGroup"); } + void ServerRequestMyTribeOnlineList() { NativeCall(this, "AShooterPlayerController.ServerRequestMyTribeOnlineList"); } + void ServerRequestPlaceStructure(int StructureIndex, FVector BuildLocation, FRotator BuildRotation, FRotator PlayerViewRotation, APawn* AttachToPawn, APrimalDinoCharacter* DinoCharacter, FName BoneName, FItemNetID PlaceUsingItemID, bool bSnapped, bool bIsCheat, bool bIsFlipped, int SnapPointCycle, TSubclassOf DirectStructurePlacementClass) { NativeCall>(this, "AShooterPlayerController.ServerRequestPlaceStructure", StructureIndex, BuildLocation, BuildRotation, PlayerViewRotation, AttachToPawn, DinoCharacter, BoneName, PlaceUsingItemID, bSnapped, bIsCheat, bIsFlipped, SnapPointCycle, DirectStructurePlacementClass); } + void ServerRequestRemoteDropAllItems(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoteDropAllItems", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter); } + void ServerRequestRemoveItemSkin(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkin", inventoryComp, itemID); } + void ServerRequestRemoveItemSkinOnly(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveItemSkinOnly", inventoryComp, itemID); } + void ServerRequestRemoveWeaponAccessoryOnly(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponAccessoryOnly", inventoryComp, itemID); } + void ServerRequestRemoveWeaponClipAmmo(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID) { NativeCall(this, "AShooterPlayerController.ServerRequestRemoveWeaponClipAmmo", inventoryComp, itemID); } + void ServerRequestRespawnAtPoint(unsigned int spawnPointID, int spawnRegionIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestRespawnAtPoint", spawnPointID, spawnRegionIndex); } + void ServerRequestSetPin(UObject* forTarget, int PinValue, bool bIsSetting, int TheCustomIndex) { NativeCall(this, "AShooterPlayerController.ServerRequestSetPin", forTarget, PinValue, bIsSetting, TheCustomIndex); } + void ServerRequestStructureCraftingStatItem(APrimalStructure* ForStructure) { NativeCall(this, "AShooterPlayerController.ServerRequestStructureCraftingStatItem", ForStructure); } + void ServerRequestTribeLog() { NativeCall(this, "AShooterPlayerController.ServerRequestTribeLog"); } + void ServerRequestUpdateGroupInfo(APrimalRaft* forRaft) { NativeCall(this, "AShooterPlayerController.ServerRequestUpdateGroupInfo", forRaft); } + void ServerSendArkDataPayload(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, TArray* DataBytes) { NativeCall*>(this, "AShooterPlayerController.ServerSendArkDataPayload", ID, ArkDataType, DataBytes); } + void ServerSendArkDataPayloadBegin(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType, FString* DataClass, FString* TagName, FString* Name, TArray* DataStats, unsigned int ID1, unsigned int ID2) { NativeCall*, unsigned int, unsigned int>(this, "AShooterPlayerController.ServerSendArkDataPayloadBegin", ID, ArkDataType, DataClass, TagName, Name, DataStats, ID1, ID2); } + void ServerSendArkDataPayloadEnd(FGuid ID, EPrimalARKTributeDataType::Type ArkDataType) { NativeCall(this, "AShooterPlayerController.ServerSendArkDataPayloadEnd", ID, ArkDataType); } + void ServerSendChatMessage(FString* ChatMessage, EChatSendMode::Type SendMode) { NativeCall(this, "AShooterPlayerController.ServerSendChatMessage", ChatMessage, SendMode); } + void ServerSendDirectMessage(FString* PlayerSteamID, FString* Message) { NativeCall(this, "AShooterPlayerController.ServerSendDirectMessage", PlayerSteamID, Message); } + void ServerSetAltHeld(bool bNewAltHeld) { NativeCall(this, "AShooterPlayerController.ServerSetAltHeld", bNewAltHeld); } + void ServerSetForceSingleWield(bool doSet) { NativeCall(this, "AShooterPlayerController.ServerSetForceSingleWield", doSet); } + void ServerSetNetIsCurrentlyFirstPerson(bool bIsCurrentlyFirstPerson) { NativeCall(this, "AShooterPlayerController.ServerSetNetIsCurrentlyFirstPerson", bIsCurrentlyFirstPerson); } + void ServerSetPlayerForceSwitchAsPrimaryWeaponOnce() { NativeCall(this, "AShooterPlayerController.ServerSetPlayerForceSwitchAsPrimaryWeaponOnce"); } + void ServerSetSubscribedApp(int AppID, bool bPreventDefaultItems) { NativeCall(this, "AShooterPlayerController.ServerSetSubscribedApp", AppID, bPreventDefaultItems); } + void ServerSetSupressAdminIcon(bool bSuppress) { NativeCall(this, "AShooterPlayerController.ServerSetSupressAdminIcon", bSuppress); } + void ServerSetVRPlayer(bool bSetVRPlayer) { NativeCall(this, "AShooterPlayerController.ServerSetVRPlayer", bSetVRPlayer); } + void ServerSpectateToPlayerByID(unsigned __int64 PlayerID) { NativeCall(this, "AShooterPlayerController.ServerSpectateToPlayerByID", PlayerID); } + void ServerStartWeaponAltFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponAltFire", weapon); } + void ServerStartWeaponFire(AShooterWeapon* weapon, int attackIndex, bool bIsUsingAltAnim) { NativeCall(this, "AShooterPlayerController.ServerStartWeaponFire", weapon, attackIndex, bIsUsingAltAnim); } + void ServerStayAlive() { NativeCall(this, "AShooterPlayerController.ServerStayAlive"); } + void ServerStopSpectating() { NativeCall(this, "AShooterPlayerController.ServerStopSpectating"); } + void ServerStopWeaponAltFire(AShooterWeapon* weapon) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponAltFire", weapon); } + void ServerStopWeaponFire(AShooterWeapon* weapon, int attackIndex, bool bIsUsingAltAnim) { NativeCall(this, "AShooterPlayerController.ServerStopWeaponFire", weapon, attackIndex, bIsUsingAltAnim); } + void ServerSuccessfullyLoggedIntoVivox(FString* LoginSessionUserUri) { NativeCall(this, "AShooterPlayerController.ServerSuccessfullyLoggedIntoVivox", LoginSessionUserUri); } + void ServerToggleAllShipLadders() { NativeCall(this, "AShooterPlayerController.ServerToggleAllShipLadders"); } + void ServerToggleOpenAllActiveGunports() { NativeCall(this, "AShooterPlayerController.ServerToggleOpenAllActiveGunports"); } + void ServerTransferAllFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllFromRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferAllToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FString* CurrentCustomFolderFilter, FString* CurrentNameFilter, FString* CurrentDestinationFolder, bool bNoFolderView) { NativeCall(this, "AShooterPlayerController.ServerTransferAllToRemoteInventory", inventoryComp, CurrentCustomFolderFilter, CurrentNameFilter, CurrentDestinationFolder, bNoFolderView); } + void ServerTransferFromRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int requestedQuantity, int ToSlotIndex, bool bEquipItem) { NativeCall(this, "AShooterPlayerController.ServerTransferFromRemoteInventory", inventoryComp, itemID, requestedQuantity, ToSlotIndex, bEquipItem); } + void ServerTransferToRemoteInventory(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, bool bAlsoTryToEqup, int requestedQuantity) { NativeCall(this, "AShooterPlayerController.ServerTransferToRemoteInventory", inventoryComp, itemID, bAlsoTryToEqup, requestedQuantity); } + void ServerTryRespec() { NativeCall(this, "AShooterPlayerController.ServerTryRespec"); } + void ServerTrySettingViewOnlyInventoryStatus() { NativeCall(this, "AShooterPlayerController.ServerTrySettingViewOnlyInventoryStatus"); } + void ServerUnbanPlayer(FString* PlayerSteamName, FString* PlayerSteamID) { NativeCall(this, "AShooterPlayerController.ServerUnbanPlayer", PlayerSteamName, PlayerSteamID); } + void ServerUnlockPerMapExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "AShooterPlayerController.ServerUnlockPerMapExplorerNote", ExplorerNoteIndex); } + void ServerUpdateManualFireLocation(FVector TargetLocation) { NativeCall(this, "AShooterPlayerController.ServerUpdateManualFireLocation", TargetLocation); } + void ServerUpgradeItem(UPrimalInventoryComponent* inventoryComp, FItemNetID itemID, int ItemStatModifierIndexToUpgrade, int ItemStatGroupIndexToUpgrade) { NativeCall(this, "AShooterPlayerController.ServerUpgradeItem", inventoryComp, itemID, ItemStatModifierIndexToUpgrade, ItemStatGroupIndexToUpgrade); } + void ServerUploadCharacterDataToArk(UPrimalInventoryComponent* inventoryComp) { NativeCall(this, "AShooterPlayerController.ServerUploadCharacterDataToArk", inventoryComp); } + void Server_CaptainExtraActions(ECaptainOtherActions::Type RequestedAction, APrimalStructureSeating_DriverSeat* RequestedFromSeat, int CurrentValue) { NativeCall(this, "AShooterPlayerController.Server_CaptainExtraActions", RequestedAction, RequestedFromSeat, CurrentValue); } + void Server_SetShipSailRotation(float InSailRotation) { NativeCall(this, "AShooterPlayerController.Server_SetShipSailRotation", InSailRotation); } + void Server_SetShipSteeringInput(float InSteering) { NativeCall(this, "AShooterPlayerController.Server_SetShipSteeringInput", InSteering); } + void Server_SetShipThrottleTarget(float InThrottle) { NativeCall(this, "AShooterPlayerController.Server_SetShipThrottleTarget", InThrottle); } + void Server_SetWantsForcedMovement(int Direction) { NativeCall(this, "AShooterPlayerController.Server_SetWantsForcedMovement", Direction); } + void Server_UpdateRowing(float InRowingThrottle, float InRowingSteering, int FromSeatNumber) { NativeCall(this, "AShooterPlayerController.Server_UpdateRowing", InRowingThrottle, InRowingSteering, FromSeatNumber); } + static void StaticRegisterNativesAShooterPlayerController() { NativeCall(nullptr, "AShooterPlayerController.StaticRegisterNativesAShooterPlayerController"); } + AShooterPlayerState* GetShooterPlayerState() { return NativeCall(this, "AShooterPlayerController.GetShooterPlayerState"); } + AShooterHUD* GetShooterHUD() { return NativeCall(this, "AShooterPlayerController.GetShooterHUD"); } +}; + +struct ACharacter : APawn +{ + TSubobjectPtr& CharacterMovementField() { return *GetNativePointerField*>(this, "ACharacter.CharacterMovement"); } + unsigned __int16& LastMoveOnlyRotationPitchField() { return *GetNativePointerField(this, "ACharacter.LastMoveOnlyRotationPitch"); } + unsigned __int16& LastMoveOnlyRotationYawField() { return *GetNativePointerField(this, "ACharacter.LastMoveOnlyRotationYaw"); } + unsigned __int16& LastReplicatedMoveOnlyRotationPitchField() { return *GetNativePointerField(this, "ACharacter.LastReplicatedMoveOnlyRotationPitch"); } + unsigned __int16& LastReplicatedMoveOnlyRotationYawField() { return *GetNativePointerField(this, "ACharacter.LastReplicatedMoveOnlyRotationYaw"); } + FVector& BaseTranslationOffsetField() { return *GetNativePointerField(this, "ACharacter.BaseTranslationOffset"); } + char& ReplicatedMovementModeField() { return *GetNativePointerField(this, "ACharacter.ReplicatedMovementMode"); } + float& LeftDynamicActorBaseTimeField() { return *GetNativePointerField(this, "ACharacter.LeftDynamicActorBaseTime"); } + float& CrouchedEyeHeightField() { return *GetNativePointerField(this, "ACharacter.CrouchedEyeHeight"); } + float& ProneEyeHeightField() { return *GetNativePointerField(this, "ACharacter.ProneEyeHeight"); } + FDodgeMovementInfo& DodgingMovementInfoField() { return *GetNativePointerField(this, "ACharacter.DodgingMovementInfo"); } + TArray CharacterOverrideSoundFromField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundFrom"); } + TArray CharacterOverrideSoundToField() { return *GetNativePointerField*>(this, "ACharacter.CharacterOverrideSoundTo"); } + bool& bInBaseReplicationField() { return *GetNativePointerField(this, "ACharacter.bInBaseReplication"); } + float& JumpKeyHoldTimeField() { return *GetNativePointerField(this, "ACharacter.JumpKeyHoldTime"); } + float& JumpMaxHoldTimeField() { return *GetNativePointerField(this, "ACharacter.JumpMaxHoldTime"); } + int& LastTeleportedFrameField() { return *GetNativePointerField(this, "ACharacter.LastTeleportedFrame"); } + long double& ForceUnfreezeSkeletalDynamicsUntilTimeField() { return *GetNativePointerField(this, "ACharacter.ForceUnfreezeSkeletalDynamicsUntilTime"); } + + // Bit fields + + BitFieldValue bIsCrouched() { return { this, "ACharacter.bIsCrouched" }; } + BitFieldValue bIsProne() { return { this, "ACharacter.bIsProne" }; } + BitFieldValue bCanEverDodge() { return { this, "ACharacter.bCanEverDodge" }; } + BitFieldValue bCanEverProne() { return { this, "ACharacter.bCanEverProne" }; } + BitFieldValue bCanEverCrouch() { return { this, "ACharacter.bCanEverCrouch" }; } + BitFieldValue bReplicateDesiredRotation() { return { this, "ACharacter.bReplicateDesiredRotation" }; } + BitFieldValue bUseBPOverrideCharacterSound() { return { this, "ACharacter.bUseBPOverrideCharacterSound" }; } + BitFieldValue bUseBPOverrideCharacterParticle() { return { this, "ACharacter.bUseBPOverrideCharacterParticle" }; } + BitFieldValue bPressedJump() { return { this, "ACharacter.bPressedJump" }; } + BitFieldValue bClientUpdating() { return { this, "ACharacter.bClientUpdating" }; } + BitFieldValue bIsPlayingTurningAnim() { return { this, "ACharacter.bIsPlayingTurningAnim" }; } + BitFieldValue bClientWasFalling() { return { this, "ACharacter.bClientWasFalling" }; } + BitFieldValue bClientResimulateRootMotion() { return { this, "ACharacter.bClientResimulateRootMotion" }; } + BitFieldValue bSimGravityDisabled() { return { this, "ACharacter.bSimGravityDisabled" }; } + BitFieldValue bIsBigPusher() { return { this, "ACharacter.bIsBigPusher" }; } + BitFieldValue bCanBePushed() { return { this, "ACharacter.bCanBePushed" }; } + BitFieldValue bCanPushOthers() { return { this, "ACharacter.bCanPushOthers" }; } + BitFieldValue bSetDefaultMovementMode() { return { this, "ACharacter.bSetDefaultMovementMode" }; } + BitFieldValue bOverrideWalkingVelocity() { return { this, "ACharacter.bOverrideWalkingVelocity" }; } + BitFieldValue bOverrideSwimmingVelocity() { return { this, "ACharacter.bOverrideSwimmingVelocity" }; } + BitFieldValue bOverrideNewFallVelocity() { return { this, "ACharacter.bOverrideNewFallVelocity" }; } + BitFieldValue bRelativeBaseUsePitchAndRoll() { return { this, "ACharacter.bRelativeBaseUsePitchAndRoll" }; } + BitFieldValue bStartedJumpingWhileOnABase() { return { this, "ACharacter.bStartedJumpingWhileOnABase" }; } + BitFieldValue bIsBasedOnMesh() { return { this, "ACharacter.bIsBasedOnMesh" }; } + BitFieldValue bIsSettingReplicatedBasedMovement() { return { this, "ACharacter.bIsSettingReplicatedBasedMovement" }; } + BitFieldValue bUseBPPreventMovementMode() { return { this, "ACharacter.bUseBPPreventMovementMode" }; } + + // Functions + + UPrimitiveComponent* GetMovementBase() { return NativeCall(this, "ACharacter.GetMovementBase"); } + bool IsJumping() { return NativeCall(this, "ACharacter.IsJumping"); } + bool NotifyLanded(FHitResult* Hit) { return NativeCall(this, "ACharacter.NotifyLanded", Hit); } + bool ShouldOverrideNewFallVelocity() { return NativeCall(this, "ACharacter.ShouldOverrideNewFallVelocity"); } + bool ShouldOverrideSwimmingVelocity() { return NativeCall(this, "ACharacter.ShouldOverrideSwimmingVelocity"); } + bool ShouldOverrideWalkingVelocity() { return NativeCall(this, "ACharacter.ShouldOverrideWalkingVelocity"); } + void SetLastMovementDesiredRotation(FRotator* InRotation) { NativeCall(this, "ACharacter.SetLastMovementDesiredRotation", InRotation); } + bool AllowMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "ACharacter.AllowMovementMode", NewMovementMode, NewCustomMode); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "ACharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "ACharacter.ApplyWorldOffset", InOffset, bWorldShift); } + USoundBase* BPOverrideCharacterSound_Implementation(USoundBase* SoundIn) { return NativeCall(this, "ACharacter.BPOverrideCharacterSound_Implementation", SoundIn); } + void BaseChange() { NativeCall(this, "ACharacter.BaseChange"); } + bool CanCrouch() { return NativeCall(this, "ACharacter.CanCrouch"); } + bool CanDodge() { return NativeCall(this, "ACharacter.CanDodge"); } + bool CanJump() { return NativeCall(this, "ACharacter.CanJump"); } + bool CanJumpInternal_Implementation() { return NativeCall(this, "ACharacter.CanJumpInternal_Implementation"); } + bool CanProne() { return NativeCall(this, "ACharacter.CanProne"); } + void CheckJumpInput(float DeltaTime) { NativeCall(this, "ACharacter.CheckJumpInput", DeltaTime); } + void ClearCrossLevelReferences() { NativeCall(this, "ACharacter.ClearCrossLevelReferences"); } + void ClearJumpInput() { NativeCall(this, "ACharacter.ClearJumpInput"); } + void ClientCheatFly_Implementation() { NativeCall(this, "ACharacter.ClientCheatFly_Implementation"); } + void ClientCheatGhost_Implementation() { NativeCall(this, "ACharacter.ClientCheatGhost_Implementation"); } + void ClientCheatWalk_Implementation() { NativeCall(this, "ACharacter.ClientCheatWalk_Implementation"); } + void Crouch(bool bClientSimulation) { NativeCall(this, "ACharacter.Crouch", bClientSimulation); } + bool DoJump(bool bReplayingMoves) { return NativeCall(this, "ACharacter.DoJump", bReplayingMoves); } + UActorComponent* FindComponentByClass(TSubclassOf ComponentClass) { return NativeCall>(this, "ACharacter.FindComponentByClass", ComponentClass); } + UAnimMontage* GetCurrentMontage() { return NativeCall(this, "ACharacter.GetCurrentMontage"); } + float GetDefaultHalfHeight() { return NativeCall(this, "ACharacter.GetDefaultHalfHeight"); } + float GetJumpMaxHoldTime() { return NativeCall(this, "ACharacter.GetJumpMaxHoldTime"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "ACharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GetSimpleCollisionCylinder(float* CollisionRadius, float* CollisionHalfHeight) { NativeCall(this, "ACharacter.GetSimpleCollisionCylinder", CollisionRadius, CollisionHalfHeight); } + bool IsBasedOnDynamicActor() { return NativeCall(this, "ACharacter.IsBasedOnDynamicActor"); } + bool IsComponentTickDelegated(UActorComponent* Component) { return NativeCall(this, "ACharacter.IsComponentTickDelegated", Component); } + bool IsGamePlayRelevant() { return NativeCall(this, "ACharacter.IsGamePlayRelevant"); } + void Jump() { NativeCall(this, "ACharacter.Jump"); } + void Landed(FHitResult* Hit) { NativeCall(this, "ACharacter.Landed", Hit); } + void LaunchCharacter(FVector LaunchVelocity, bool bXYOverride, bool bZOverride) { NativeCall(this, "ACharacter.LaunchCharacter", LaunchVelocity, bXYOverride, bZOverride); } + void NetTeleportSucceeded_Implementation(FVector ToLoc, FRotator ToRot) { NativeCall(this, "ACharacter.NetTeleportSucceeded_Implementation", ToLoc, ToRot); } + void OnEndCrouch(float HeightAdjust, float ScaledHeightAdjust) { NativeCall(this, "ACharacter.OnEndCrouch", HeightAdjust, ScaledHeightAdjust); } + void OnMovementModeChanged(EMovementMode PrevMovementMode, char PrevCustomMode) { NativeCall(this, "ACharacter.OnMovementModeChanged", PrevMovementMode, PrevCustomMode); } + void OnRep_DodgingMovementInfo() { NativeCall(this, "ACharacter.OnRep_DodgingMovementInfo"); } + void OnRep_IsCrouched() { NativeCall(this, "ACharacter.OnRep_IsCrouched"); } + void OnRep_IsProne() { NativeCall(this, "ACharacter.OnRep_IsProne"); } + void OnRep_ReplicatedBasedMovement() { NativeCall(this, "ACharacter.OnRep_ReplicatedBasedMovement"); } + void OnRep_ReplicatedMovement() { NativeCall(this, "ACharacter.OnRep_ReplicatedMovement"); } + void OnRep_RootMotion() { NativeCall(this, "ACharacter.OnRep_RootMotion"); } + void OnStartCrouch(float HeightAdjust, float ScaledHeightAdjust) { NativeCall(this, "ACharacter.OnStartCrouch", HeightAdjust, ScaledHeightAdjust); } + void PawnClientRestart() { NativeCall(this, "ACharacter.PawnClientRestart"); } + float PlayAnimMontage(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "ACharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } + void PossessedBy(AController* NewController) { NativeCall(this, "ACharacter.PossessedBy", NewController); } + void PostInitializeComponents() { NativeCall(this, "ACharacter.PostInitializeComponents"); } + void PostNetReceive() { NativeCall(this, "ACharacter.PostNetReceive"); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "ACharacter.PostNetReceiveLocationAndRotation"); } + void PreNetReceive() { NativeCall(this, "ACharacter.PreNetReceive"); } + bool PreventMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "ACharacter.PreventMovementMode", NewMovementMode, NewCustomMode); } + void Prone(bool bClientSimulation) { NativeCall(this, "ACharacter.Prone", bClientSimulation); } + void RecalculateBaseEyeHeight() { NativeCall(this, "ACharacter.RecalculateBaseEyeHeight"); } + void Restart() { NativeCall(this, "ACharacter.Restart"); } + void SetBase(UPrimitiveComponent* NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "ACharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } + bool ShouldNotifyLanded(FHitResult* Hit) { return NativeCall(this, "ACharacter.ShouldNotifyLanded", Hit); } + bool ShouldReplicateRotPitch() { return NativeCall(this, "ACharacter.ShouldReplicateRotPitch"); } + bool ShouldUseWaveLocking(bool bForceCheck) { return NativeCall(this, "ACharacter.ShouldUseWaveLocking", bForceCheck); } + bool SimpleTeleportTo(FVector* DestLocation, FRotator* DestRotation) { return NativeCall(this, "ACharacter.SimpleTeleportTo", DestLocation, DestRotation); } + void StartDodging(FVector InDodgingVelocity, bool bClientSimulation) { NativeCall(this, "ACharacter.StartDodging", InDodgingVelocity, bClientSimulation); } + void StopAnimMontage(UAnimMontage* AnimMontage) { NativeCall(this, "ACharacter.StopAnimMontage", AnimMontage); } + void StopDodging(bool bClientSimulation) { NativeCall(this, "ACharacter.StopDodging", bClientSimulation); } + void StopJumping() { NativeCall(this, "ACharacter.StopJumping"); } + void TeleportSucceeded(bool bIsATest, bool bSimpleTeleport) { NativeCall(this, "ACharacter.TeleportSucceeded", bIsATest, bSimpleTeleport); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "ACharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + void TickFromBaseWhenAttachedToParent() { NativeCall(this, "ACharacter.TickFromBaseWhenAttachedToParent"); } + void TornOff() { NativeCall(this, "ACharacter.TornOff"); } + void TurnOff() { NativeCall(this, "ACharacter.TurnOff"); } + void UnCrouch(bool bClientSimulation) { NativeCall(this, "ACharacter.UnCrouch", bClientSimulation); } + void UnPossessed() { NativeCall(this, "ACharacter.UnPossessed"); } + void UnProne(bool bClientSimulation) { NativeCall(this, "ACharacter.UnProne", bClientSimulation); } + void UpdateSimulatedPosition(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "ACharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } + bool BP_PreventMovementMode(EMovementMode newMovementMode, char newCustomMode) { return NativeCall(this, "ACharacter.BP_PreventMovementMode", newMovementMode, newCustomMode); } + bool CanJumpInternal() { return NativeCall(this, "ACharacter.CanJumpInternal"); } + void ClientCheatFly() { NativeCall(this, "ACharacter.ClientCheatFly"); } + void ClientCheatGhost() { NativeCall(this, "ACharacter.ClientCheatGhost"); } + void ClientCheatWalk() { NativeCall(this, "ACharacter.ClientCheatWalk"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ACharacter.GetPrivateStaticClass", Package); } + void K2_OnEndCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "ACharacter.K2_OnEndCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } + void K2_OnMovementModeChanged(EMovementMode PrevMovementMode, EMovementMode NewMovementMode, char PrevCustomMode, char NewCustomMode) { NativeCall(this, "ACharacter.K2_OnMovementModeChanged", PrevMovementMode, NewMovementMode, PrevCustomMode, NewCustomMode); } + void K2_OnStartCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "ACharacter.K2_OnStartCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } + void K2_UpdateCustomMovement(float DeltaTime) { NativeCall(this, "ACharacter.K2_UpdateCustomMovement", DeltaTime); } + void NetTeleportSucceeded(FVector ToLoc, FRotator ToRot) { NativeCall(this, "ACharacter.NetTeleportSucceeded", ToLoc, ToRot); } + void OnJumped() { NativeCall(this, "ACharacter.OnJumped"); } + void OnLanded(FHitResult* Hit) { NativeCall(this, "ACharacter.OnLanded", Hit); } + void OnLaunched(FVector LaunchVelocity, bool bXYOverride, bool bZOverride) { NativeCall(this, "ACharacter.OnLaunched", LaunchVelocity, bXYOverride, bZOverride); } + void OnWalkingOffLedge() { NativeCall(this, "ACharacter.OnWalkingOffLedge"); } + static void StaticRegisterNativesACharacter() { NativeCall(nullptr, "ACharacter.StaticRegisterNativesACharacter"); } +}; + +struct APrimalCharacter : ACharacter +{ + TSubclassOf& DeathHarvestingComponentField() { return *GetNativePointerField*>(this, "APrimalCharacter.DeathHarvestingComponent"); } + UPrimalHarvestingComponent* MyDeathHarvestingComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyDeathHarvestingComponentField"); } + FVector& OldLocationField() { return *GetNativePointerField(this, "APrimalCharacter.OldLocation"); } + FRotator& OldRotationField() { return *GetNativePointerField(this, "APrimalCharacter.OldRotation"); } + float& EffectorInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.EffectorInterpSpeed"); } + float& HalfLegLengthField() { return *GetNativePointerField(this, "APrimalCharacter.HalfLegLength"); } + float& TwoLeggedVirtualPointDistFactorField() { return *GetNativePointerField(this, "APrimalCharacter.TwoLeggedVirtualPointDistFactor"); } + float& FullIKDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.FullIKDistance"); } + float& SimpleIkRateField() { return *GetNativePointerField(this, "APrimalCharacter.SimpleIkRate"); } + FVector& GroundCheckExtentField() { return *GetNativePointerField(this, "APrimalCharacter.GroundCheckExtent"); } + long double& LastForceAimedCharactersTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceAimedCharactersTime"); } + long double& ForceFootCacheUntilTimeField() { return *GetNativePointerField(this, "APrimalCharacter.ForceFootCacheUntilTime"); } + UAnimMontage* JumpAnimField() { return *GetNativePointerField(this, "APrimalCharacter.JumpAnim"); } + UAnimMontage* LandedAnimField() { return *GetNativePointerField(this, "APrimalCharacter.LandedAnim"); } + UAnimMontage* HurtAnimField() { return *GetNativePointerField(this, "APrimalCharacter.HurtAnim"); } + USoundCue* HurtSoundField() { return *GetNativePointerField(this, "APrimalCharacter.HurtSound"); } + FName& RootBodyBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.RootBodyBoneName"); } + TArray BuffsField() { return *GetNativePointerField*>(this, "APrimalCharacter.Buffs"); } + TArray SeamlessTravelBuffsField() { return *GetNativePointerField*>(this, "APrimalCharacter.SeamlessTravelBuffs"); } + EWeaponAttackInput::Type& LastShieldBlockingInputPressedField() { return *GetNativePointerField(this, "APrimalCharacter.LastShieldBlockingInputPressed"); } + EWeaponAttackInput::Type& LastInputPressedField() { return *GetNativePointerField(this, "APrimalCharacter.LastInputPressed"); } + long double& LastTimePressedInputField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimePressedInput"); } + float& currentStaggeringTimeField() { return *GetNativePointerField(this, "APrimalCharacter.currentStaggeringTime"); } + long double& lastTimeStaggeredField() { return *GetNativePointerField(this, "APrimalCharacter.lastTimeStaggered"); } + FPrimalCharacterNotifyAttackStarted& NotifyAttackStartedField() { return *GetNativePointerField(this, "APrimalCharacter.NotifyAttackStarted"); } + FPrimalCharacterNotifyAttackEnded& NotifyAttackEndedField() { return *GetNativePointerField(this, "APrimalCharacter.NotifyAttackEnded"); } + FString& TribeNameField() { return *GetNativePointerField(this, "APrimalCharacter.TribeName"); } + float& WaterSubmergedDepthThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.WaterSubmergedDepthThreshold"); } + float& ProneWaterSubmergedDepthThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.ProneWaterSubmergedDepthThreshold"); } + TEnumAsByte& SubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.SubmergedWaterMovementMode"); } + TEnumAsByte& UnSubmergedWaterMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.UnSubmergedWaterMovementMode"); } + TSubclassOf& PoopItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopItemClass"); } + FName& DragBoneNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragBoneName"); } + FName& DragSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.DragSocketName"); } + float& MaxDragDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragDistance"); } + float& MaxDragDistanceTimeoutField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragDistanceTimeout"); } + TArray& BonesToIngoreWhileDraggedField() { return *GetNativePointerField*>(this, "APrimalCharacter.BonesToIngoreWhileDragged"); } + float& PreviewCameraMaxZoomMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraMaxZoomMultiplier"); } + float& PreviewCameraDefaultZoomMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraDefaultZoomMultiplier"); } + float& PreviewCameraDistanceScaleFactorField() { return *GetNativePointerField(this, "APrimalCharacter.PreviewCameraDistanceScaleFactor"); } + USoundBase* StartDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.StartDraggedSound"); } + USoundBase* EndDraggedSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EndDraggedSound"); } + APrimalCharacter* DraggedCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggedCharacter"); } + APrimalCharacter* DraggingCharacterField() { return *GetNativePointerField(this, "APrimalCharacter.DraggingCharacter"); } + FTransform& LocalDraggedCharacterTransformField() { return *GetNativePointerField(this, "APrimalCharacter.LocalDraggedCharacterTransform"); } + long double& StartDraggingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.StartDraggingTime"); } + long double& LastDragUpdateTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastDragUpdateTime"); } + AActor* ImmobilizationActorField() { return *GetNativePointerField(this, "APrimalCharacter.ImmobilizationActor"); } + int& CurrentFrameAnimPreventInputField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentFrameAnimPreventInput"); } + float& BPTimerServerMinField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerServerMin"); } + float& BPTimerServerMaxField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerServerMax"); } + float& BPTimerNonDedicatedMinField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerNonDedicatedMin"); } + float& BPTimerNonDedicatedMaxField() { return *GetNativePointerField(this, "APrimalCharacter.BPTimerNonDedicatedMax"); } + long double& NextBPTimerServerField() { return *GetNativePointerField(this, "APrimalCharacter.NextBPTimerServer"); } + long double& NextBPTimerNonDedicatedField() { return *GetNativePointerField(this, "APrimalCharacter.NextBPTimerNonDedicated"); } + TArray>& ImmobilizationTrapsToIgnoreField() { return *GetNativePointerField>*>(this, "APrimalCharacter.ImmobilizationTrapsToIgnore"); } + TWeakObjectPtr& CarryingDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.CarryingDino"); } + FName& DediOverrideCapsuleCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideCapsuleCollisionProfileName"); } + FName& DediOverrideMeshCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.DediOverrideMeshCollisionProfileName"); } + FName& SnaredFromSocketField() { return *GetNativePointerField(this, "APrimalCharacter.SnaredFromSocket"); } + TSubclassOf& DeathDestructionDepositInventoryClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.DeathDestructionDepositInventoryClass"); } + float& DamageNotifyTeamAggroMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroMultiplier"); } + float& DamageNotifyTeamAggroRangeField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroRange"); } + float& DamageNotifyTeamAggroRangeFalloffField() { return *GetNativePointerField(this, "APrimalCharacter.DamageNotifyTeamAggroRangeFalloff"); } + float& ReplicatedCurrentHealthField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedCurrentHealth"); } + float& ReplicatedMaxHealthField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedMaxHealth"); } + float& ReplicatedCurrentTorporField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedCurrentTorpor"); } + float& ReplicatedMaxTorporField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedMaxTorpor"); } + FVector& DragOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DragOffset"); } + AShooterCharacter* LastGrapHookPullingOwnerField() { return *GetNativePointerField(this, "APrimalCharacter.LastGrapHookPullingOwner"); } + long double& LastIkUpdateTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastIkUpdateTime"); } + long double& LastUpdatedAimOffsetsTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastUpdatedAimOffsetsTime"); } + FVector& MeshPreRagdollRelativeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeLocation"); } + FRotator& MeshPreRagdollRelativeRotationField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollRelativeRotation"); } + int& DraggingBodyIndexField() { return *GetNativePointerField(this, "APrimalCharacter.DraggingBodyIndex"); } + int& DraggedBoneIndexField() { return *GetNativePointerField(this, "APrimalCharacter.DraggedBoneIndex"); } + int& customBitFlagsField() { return *GetNativePointerField(this, "APrimalCharacter.customBitFlags"); } + float& RunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalCharacter.RunningSpeedModifier"); } + float& LowHealthPercentageField() { return *GetNativePointerField(this, "APrimalCharacter.LowHealthPercentage"); } + float& BaseTurnRateField() { return *GetNativePointerField(this, "APrimalCharacter.BaseTurnRate"); } + float& BaseLookUpRateField() { return *GetNativePointerField(this, "APrimalCharacter.BaseLookUpRate"); } + UAnimMontage* DeathAnimField() { return *GetNativePointerField(this, "APrimalCharacter.DeathAnim"); } + UAnimMontage* DeathAnimFromBackField() { return *GetNativePointerField(this, "APrimalCharacter.DeathAnimFromBack"); } + USoundCue* DeathSoundField() { return *GetNativePointerField(this, "APrimalCharacter.DeathSound"); } + USoundCue* RunLoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopSound"); } + USoundCue* RunStopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.RunStopSound"); } + TArray FootStepSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.FootStepSoundsPhysMat"); } + TArray LandedSoundsPhysMatField() { return *GetNativePointerField*>(this, "APrimalCharacter.LandedSoundsPhysMat"); } + FName& MeshRootSocketNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshRootSocketName"); } + TWeakObjectPtr& LastVoiceAudioComponentField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastVoiceAudioComponent"); } + float& MaxFallSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.MaxFallSpeed"); } + float& FallDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.FallDamageMultiplier"); } + UAudioComponent* RunLoopACField() { return *GetNativePointerField(this, "APrimalCharacter.RunLoopAC"); } + float& CurrentCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentCarriedYaw"); } + APrimalStructureExplosiveTransGPS* CurrentTransponderField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentTransponder"); } + float& TargetCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.TargetCarriedYaw"); } + float& ServerTargetCarriedYawField() { return *GetNativePointerField(this, "APrimalCharacter.ServerTargetCarriedYaw"); } + USoundBase* NetDynamicMusicSoundField() { return *GetNativePointerField(this, "APrimalCharacter.NetDynamicMusicSound"); } + int& ServerLastFrameCounterChangeField() { return *GetNativePointerField(this, "APrimalCharacter.ServerLastFrameCounterChange"); } + TWeakObjectPtr& MountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.MountedDino"); } + float& MountedDinoTimeField() { return *GetNativePointerField(this, "APrimalCharacter.MountedDinoTime"); } + TWeakObjectPtr& PreviousMountedDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.PreviousMountedDino"); } + FVector& LastForceFallCheckBaseLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceFallCheckBaseLocation"); } + FVector& LastHitWallSweepCheckLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastHitWallSweepCheckLocation"); } + long double& LastTimeBasedMovementHadCurrentActorField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeBasedMovementHadCurrentActor"); } + TWeakObjectPtr& LastBasedMovementActorRefField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastBasedMovementActorRef"); } + float& GrabWeightThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.GrabWeightThreshold"); } + float& DragWeightField() { return *GetNativePointerField(this, "APrimalCharacter.DragWeight"); } + UStaticMesh* BolaStaticMeshOverrideField() { return *GetNativePointerField(this, "APrimalCharacter.BolaStaticMeshOverride"); } + FString& DescriptiveNameField() { return *GetNativePointerField(this, "APrimalCharacter.DescriptiveName"); } + TArray& ReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollPositions"); } + TArray& ReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedRagdollRotations"); } + TArray& LastReplicatedRagdollPositionsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollPositions"); } + TArray& LastReplicatedRagdollRotationsField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastReplicatedRagdollRotations"); } + FRotator& ReplicatedRootRotationField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedRootRotation"); } + TArray& ReplicatedBonesIndiciesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBonesIndicies"); } + float& KillXPBaseField() { return *GetNativePointerField(this, "APrimalCharacter.KillXPBase"); } + TArray& ReplicatedBonesField() { return *GetNativePointerField*>(this, "APrimalCharacter.ReplicatedBones"); } + float& RagdollReplicationIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollReplicationInterval"); } + float& ClientRotationInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.ClientRotationInterpSpeed"); } + float& ClientLocationInterpSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.ClientLocationInterpSpeed"); } + float& MaxDragMovementSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.MaxDragMovementSpeed"); } + FRotator& CurrentAimRotField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentAimRot"); } + FVector& CurrentRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentRootLoc"); } + int& LastYawSpeedWorldFrameCounterField() { return *GetNativePointerField(this, "APrimalCharacter.LastYawSpeedWorldFrameCounter"); } + FName& MeshPreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.MeshPreRagdollCollisionProfileName"); } + FName& CapsulePreRagdollCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.CapsulePreRagdollCollisionProfileName"); } + UPrimalCharacterStatusComponent* MyCharacterStatusComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyCharacterStatusComponent"); } + UPrimalInventoryComponent* MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalCharacter.MyInventoryComponent"); } + long double& LastRunningTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastRunningTime"); } + FVector& TPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffset"); } + FVector& TPVCameraOffsetMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOffsetMultiplier"); } + FVector& TPVCameraOrgOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TPVCameraOrgOffset"); } + float& LandedSoundMaxRangeField() { return *GetNativePointerField(this, "APrimalCharacter.LandedSoundMaxRange"); } + float& FallingDamageHealthScaleBaseField() { return *GetNativePointerField(this, "APrimalCharacter.FallingDamageHealthScaleBase"); } + float& FootstepsMaxRangeField() { return *GetNativePointerField(this, "APrimalCharacter.FootstepsMaxRange"); } + float& MinTimeBetweenFootstepsField() { return *GetNativePointerField(this, "APrimalCharacter.MinTimeBetweenFootsteps"); } + long double& LastPlayedFootstepTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastPlayedFootstepTime"); } + float& MinTimeBetweenFootstepsRunningField() { return *GetNativePointerField(this, "APrimalCharacter.MinTimeBetweenFootstepsRunning"); } + TArray AnimationsPreventInputField() { return *GetNativePointerField*>(this, "APrimalCharacter.AnimationsPreventInput"); } + long double& LastNetDidLandField() { return *GetNativePointerField(this, "APrimalCharacter.LastNetDidLand"); } + TWeakObjectPtr& LastDamageEventInstigatorField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastDamageEventInstigator"); } + int& CachedNumberOfClientRagdollCorrectionAttemptsField() { return *GetNativePointerField(this, "APrimalCharacter.CachedNumberOfClientRagdollCorrectionAttempts"); } + int& NumberOfClientRagdollCorrectionAttemptsField() { return *GetNativePointerField(this, "APrimalCharacter.NumberOfClientRagdollCorrectionAttempts"); } + float& ServerForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.ServerForceSleepRagdollInterval"); } + float& ClientForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.ClientForceSleepRagdollInterval"); } + float& NonRelevantServerForceSleepRagdollIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.NonRelevantServerForceSleepRagdollInterval"); } + FSeamlessIslandInfo* MyIslandInfoField() { return *GetNativePointerField(this, "APrimalCharacter.MyIslandInfo"); } + UAnimMontage* PoopAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.PoopAnimation"); } + long double& CorpseDestructionTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDestructionTime"); } + float& CorpseLifespanField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseLifespan"); } + float& TPVStructurePlacingHeightMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.TPVStructurePlacingHeightMultiplier"); } + float& CorpseFadeAwayTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseFadeAwayTime"); } + float& RagdollDeathImpulseScalerField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollDeathImpulseScaler"); } + USoundCue* PoopSoundField() { return *GetNativePointerField(this, "APrimalCharacter.PoopSound"); } + float& BaseTargetingDesirabilityField() { return *GetNativePointerField(this, "APrimalCharacter.BaseTargetingDesirability"); } + float& DeadBaseTargetingDesirabilityField() { return *GetNativePointerField(this, "APrimalCharacter.DeadBaseTargetingDesirability"); } + FRotator& OrbitCamRotField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamRot"); } + float& OrbitCamZoomField() { return *GetNativePointerField(this, "APrimalCharacter.OrbitCamZoom"); } + FVector& LastSubmergedCheckLocField() { return *GetNativePointerField(this, "APrimalCharacter.LastSubmergedCheckLoc"); } + long double& LastTimeNotInFallingField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeNotInFalling"); } + float& MaxCursorHUDDistanceField() { return *GetNativePointerField(this, "APrimalCharacter.MaxCursorHUDDistance"); } + float& AddForwardVelocityOnJumpField() { return *GetNativePointerField(this, "APrimalCharacter.AddForwardVelocityOnJump"); } + FVector& DeathActorTargetingOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.DeathActorTargetingOffset"); } + FName& SocketOverrideTargetingLocationField() { return *GetNativePointerField(this, "APrimalCharacter.SocketOverrideTargetingLocation"); } + FDamageEvent* CurrentDamageEventField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentDamageEvent"); } + FVector& LastApproximatePhysVolumeLocationField() { return *GetNativePointerField(this, "APrimalCharacter.LastApproximatePhysVolumeLocation"); } + long double& LastTimeSubmergedField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeSubmerged"); } + EPhysicalSurface& LastFootPhysicalSurfaceTypeField() { return *GetNativePointerField(this, "APrimalCharacter.LastFootPhysicalSurfaceType"); } + long double& LastFootPhysicalSurfaceCheckTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastFootPhysicalSurfaceCheckTime"); } + float& FootPhysicalSurfaceCheckIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.FootPhysicalSurfaceCheckInterval"); } + TWeakObjectPtr& LastHurtByNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastHurtByNearbyPlayer"); } + float& LastHurtByNearbyPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastHurtByNearbyPlayerTime"); } + TWeakObjectPtr& LastAttackedNearbyPlayerField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastAttackedNearbyPlayer"); } + float& LastAttackedNearbyPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastAttackedNearbyPlayerTime"); } + long double& LastStartFallingRagdollTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartFallingRagdollTime"); } + FVector& RagdollLastFrameLinearVelocityField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollLastFrameLinearVelocity"); } + float& RagdollImpactDamageVelocityScaleField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollImpactDamageVelocityScale"); } + float& RagdollImpactDamageMinDecelerationSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollImpactDamageMinDecelerationSpeed"); } + float& StartFallingImpactRagdollTimeIntervalField() { return *GetNativePointerField(this, "APrimalCharacter.StartFallingImpactRagdollTimeInterval"); } + long double& LastUnstasisTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastUnstasisTime"); } + FVector& PreviousRagdollLocationField() { return *GetNativePointerField(this, "APrimalCharacter.PreviousRagdollLocation"); } + int& RagdollPenetrationFailuresField() { return *GetNativePointerField(this, "APrimalCharacter.RagdollPenetrationFailures"); } + long double& NextBlinkTimeField() { return *GetNativePointerField(this, "APrimalCharacter.NextBlinkTime"); } + long double& BlinkTimerField() { return *GetNativePointerField(this, "APrimalCharacter.BlinkTimer"); } + long double& LastInSwimmingSoundTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastInSwimmingSoundTime"); } + USoundCue* EnteredSwimmingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSwimmingSound"); } + USoundCue* EnteredSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.EnteredSleepingSound"); } + USoundCue* LeftSleepingSoundField() { return *GetNativePointerField(this, "APrimalCharacter.LeftSleepingSound"); } + long double& LastRelevantToPlayerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastRelevantToPlayerTime"); } + long double& MeshStopForceUpdatingAtTimeField() { return *GetNativePointerField(this, "APrimalCharacter.MeshStopForceUpdatingAtTime"); } + long double& LastWalkingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastWalkingTime"); } + long double& LastSpecialDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastSpecialDamageTime"); } + float& CorpseDraggedDecayRateField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDraggedDecayRate"); } + float& PoopAltItemChanceField() { return *GetNativePointerField(this, "APrimalCharacter.PoopAltItemChance"); } + TSubclassOf& PoopAltItemClassField() { return *GetNativePointerField*>(this, "APrimalCharacter.PoopAltItemClass"); } + TArray>& DefaultBuffsField() { return *GetNativePointerField>*>(this, "APrimalCharacter.DefaultBuffs"); } + TArray>& PossessionBuffsField() { return *GetNativePointerField>*>(this, "APrimalCharacter.PossessionBuffs"); } + UTexture2D* PoopIconField() { return *GetNativePointerField(this, "APrimalCharacter.PoopIcon"); } + float& RunningMaxDesiredRotDeltaField() { return *GetNativePointerField(this, "APrimalCharacter.RunningMaxDesiredRotDelta"); } + long double& CorpseDestructionTimerField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseDestructionTimer"); } + float& OriginalCorpseLifespanField() { return *GetNativePointerField(this, "APrimalCharacter.OriginalCorpseLifespan"); } + float& CorpseHarvestFadeTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CorpseHarvestFadeTime"); } + FVector& CurrentLocalRootLocField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentLocalRootLoc"); } + float& RootYawField() { return *GetNativePointerField(this, "APrimalCharacter.RootYaw"); } + long double& LastTimeInSwimmingField() { return *GetNativePointerField(this, "APrimalCharacter.LastTimeInSwimming"); } + long double& LastListenRangePushTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastListenRangePushTime"); } + float& LastDamageAmountMaterialValueField() { return *GetNativePointerField(this, "APrimalCharacter.LastDamageAmountMaterialValue"); } + float& BuffedDamageMultField() { return *GetNativePointerField(this, "APrimalCharacter.BuffedDamageMult"); } + float& BuffedResistanceMultField() { return *GetNativePointerField(this, "APrimalCharacter.BuffedResistanceMult"); } + float& ExtraMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraMaxSpeedModifier"); } + float& TamedDinoCallOutRangeField() { return *GetNativePointerField(this, "APrimalCharacter.TamedDinoCallOutRange"); } + long double& LastMyRaftTakeDamageFromEnemyTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastMyRaftTakeDamageFromEnemyTime"); } + long double& LastBumpedDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastBumpedDamageTime"); } + FVector& TargetPathfindingLocationOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.TargetPathfindingLocationOffset"); } + long double& LastTookDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastTookDamageTime"); } + float& ExtraReceiveDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraReceiveDamageMultiplier"); } + float& ExtraMeleeDamageMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.ExtraMeleeDamageMultiplier"); } + float& LastFallingZField() { return *GetNativePointerField(this, "APrimalCharacter.LastFallingZ"); } + int& NumFallZFailsField() { return *GetNativePointerField(this, "APrimalCharacter.NumFallZFails"); } + TArray>& CharactersGrappledToMeField() { return *GetNativePointerField>*>(this, "APrimalCharacter.CharactersGrappledToMe"); } + float& DamageTheMeleeDamageCauserPercentField() { return *GetNativePointerField(this, "APrimalCharacter.DamageTheMeleeDamageCauserPercent"); } + float& DurabilityDegrateTheMeleeDamageCauserPercentField() { return *GetNativePointerField(this, "APrimalCharacter.DurabilityDegrateTheMeleeDamageCauserPercent"); } + TSubclassOf& DamageTheMeleeDamageCauserDamageTypeField() { return *GetNativePointerField*>(this, "APrimalCharacter.DamageTheMeleeDamageCauserDamageType"); } + char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "APrimalCharacter.TribeGroupInventoryRank"); } + float& ReplicatedMaxInventoryWeightField() { return *GetNativePointerField(this, "APrimalCharacter.ReplicatedMaxInventoryWeight"); } + float& CharacterDamageImpulseMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.CharacterDamageImpulseMultiplier"); } + float& DefendingInterruptLevelMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.DefendingInterruptLevelMultiplier"); } + long double& ForceCheckPushThroughWallsTimeField() { return *GetNativePointerField(this, "APrimalCharacter.ForceCheckPushThroughWallsTime"); } + long double& LastStartedBasingOnRaftTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartedBasingOnRaftTime"); } + long double& LastStoppedEatAnimationTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStoppedEatAnimationTime"); } + float& ClientRotationInterpSpeedMultiplierGroundField() { return *GetNativePointerField(this, "APrimalCharacter.ClientRotationInterpSpeedMultiplierGround"); } + float& GlideGravityScaleMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.GlideGravityScaleMultiplier"); } + float& GlideMaxCarriedWeightField() { return *GetNativePointerField(this, "APrimalCharacter.GlideMaxCarriedWeight"); } + UAnimMontage* lastPlayedMountAnimField() { return *GetNativePointerField(this, "APrimalCharacter.lastPlayedMountAnim"); } + float& ScaleDeathHarvestHealthyByMaxHealthBaseField() { return *GetNativePointerField(this, "APrimalCharacter.ScaleDeathHarvestHealthyByMaxHealthBase"); } + long double& LastForceMeshRefreshBonesTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastForceMeshRefreshBonesTime"); } + long double& LastStartedBeingCarriedTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastStartedBeingCarriedTime"); } + float& RunMinVelocityRotDotField() { return *GetNativePointerField(this, "APrimalCharacter.RunMinVelocityRotDot"); } + long double& LastHitDamageTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastHitDamageTime"); } + long double& LastLocalHitMarkerTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastLocalHitMarkerTime"); } + TArray>& PreventBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalCharacter.PreventBuffClasses"); } + long double& DisableUnBasingUntilField() { return *GetNativePointerField(this, "APrimalCharacter.DisableUnBasingUntil"); } + long double& TimeStartedTargetingField() { return *GetNativePointerField(this, "APrimalCharacter.TimeStartedTargeting"); } + TWeakObjectPtr& RidingDinoField() { return *GetNativePointerField*>(this, "APrimalCharacter.RidingDino"); } + FName& WeaponAttachPointField() { return *GetNativePointerField(this, "APrimalCharacter.WeaponAttachPoint"); } + float& TargetingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.TargetingTime"); } + float& RecentHurtAmountField() { return *GetNativePointerField(this, "APrimalCharacter.RecentHurtAmount"); } + long double& LocalLastHurtTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LocalLastHurtTime"); } + UAnimMontage* ShieldCoverAnimField() { return *GetNativePointerField(this, "APrimalCharacter.ShieldCoverAnim"); } + UAnimMontage* ShieldCrouchedCoverAnimField() { return *GetNativePointerField(this, "APrimalCharacter.ShieldCrouchedCoverAnim"); } + UAnimSequence* DefaultShieldAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.DefaultShieldAnimation"); } + TWeakObjectPtr& SeatingStructureField() { return *GetNativePointerField*>(this, "APrimalCharacter.SeatingStructure"); } + float& SeatedOnShipDrawDistanceMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.SeatedOnShipDrawDistanceMultiplier"); } + int& SeatingStructureSeatNumberField() { return *GetNativePointerField(this, "APrimalCharacter.SeatingStructureSeatNumber"); } + long double& LastReleaseSeatingStructureTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastReleaseSeatingStructureTime"); } + AShooterWeapon* CurrentWeaponField() { return *GetNativePointerField(this, "APrimalCharacter.CurrentWeapon"); } + long double& StartedRidingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.StartedRidingTime"); } + long double& StopRidingTimeField() { return *GetNativePointerField(this, "APrimalCharacter.StopRidingTime"); } + long double& LocalLastViewingInventoryTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LocalLastViewingInventoryTime"); } + TArray>& ShieldCoverInputsField() { return *GetNativePointerField>*>(this, "APrimalCharacter.ShieldCoverInputs"); } + long double& TimeForNextValidShieldRaiseInField() { return *GetNativePointerField(this, "APrimalCharacter.TimeForNextValidShieldRaiseIn"); } + long double& TimeForNextValidShieldRaiseOutField() { return *GetNativePointerField(this, "APrimalCharacter.TimeForNextValidShieldRaiseOut"); } + float& Teleport_OntoRaft_CheckRadiusField() { return *GetNativePointerField(this, "APrimalCharacter.Teleport_OntoRaft_CheckRadius"); } + float& Teleport_OntoRaft_TraceIntervalDistOverrideField() { return *GetNativePointerField(this, "APrimalCharacter.Teleport_OntoRaft_TraceIntervalDistOverride"); } + int& Teleport_OntoRaft_MaxTraceCountField() { return *GetNativePointerField(this, "APrimalCharacter.Teleport_OntoRaft_MaxTraceCount"); } + float& Teleport_OntoRaft_AllowedTopDeckZDistField() { return *GetNativePointerField(this, "APrimalCharacter.Teleport_OntoRaft_AllowedTopDeckZDist"); } + TSubclassOf& DefaultWeaponField() { return *GetNativePointerField*>(this, "APrimalCharacter.DefaultWeapon"); } + FName& PreviousAwakeCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.PreviousAwakeCollisionProfileName"); } + UAnimSequence* DefaultSeatingAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.DefaultSeatingAnimation"); } + float& ServerSeatedViewRotationYawField() { return *GetNativePointerField(this, "APrimalCharacter.ServerSeatedViewRotationYaw"); } + float& ServerSeatedViewRotationPitchField() { return *GetNativePointerField(this, "APrimalCharacter.ServerSeatedViewRotationPitch"); } + FName& PreAttachToSeatingStructureCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.PreAttachToSeatingStructureCollisionProfileName"); } + UAnimMontage* FireBallistaAnimationField() { return *GetNativePointerField(this, "APrimalCharacter.FireBallistaAnimation"); } + TWeakObjectPtr& LastMovementBaseField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastMovementBase"); } + float& StartWaveLockingThresholdField() { return *GetNativePointerField(this, "APrimalCharacter.StartWaveLockingThreshold"); } + long double& LastBasedOnRaftTimeField() { return *GetNativePointerField(this, "APrimalCharacter.LastBasedOnRaftTime"); } + TWeakObjectPtr& LastBasedOnRaftField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastBasedOnRaft"); } + FVector& MeleeLockOnPointOffsetField() { return *GetNativePointerField(this, "APrimalCharacter.MeleeLockOnPointOffset"); } + TArray& DamageTypeHurtAnimOverridesField() { return *GetNativePointerField*>(this, "APrimalCharacter.DamageTypeHurtAnimOverrides"); } + float& LastBasedOnRaftOpenWaterSpoilingMultField() { return *GetNativePointerField(this, "APrimalCharacter.LastBasedOnRaftOpenWaterSpoilingMult"); } + long double& NextRefreshedIslandInfoTimeField() { return *GetNativePointerField(this, "APrimalCharacter.NextRefreshedIslandInfoTime"); } + FVector2D& LastRefreshedIslandInfoLocField() { return *GetNativePointerField(this, "APrimalCharacter.LastRefreshedIslandInfoLoc"); } + float& LevelForMaxAIDifficultyField() { return *GetNativePointerField(this, "APrimalCharacter.LevelForMaxAIDifficulty"); } + TEnumAsByte& LastServerMovementModeField() { return *GetNativePointerField*>(this, "APrimalCharacter.LastServerMovementMode"); } + FName& WeaponAttachPointSecondaryField() { return *GetNativePointerField(this, "APrimalCharacter.WeaponAttachPointSecondary"); } + FItemNetID& NextWeaponItemIDSecondaryField() { return *GetNativePointerField(this, "APrimalCharacter.NextWeaponItemIDSecondary"); } + FItemNetID& NextWeaponItemIDPrimaryField() { return *GetNativePointerField(this, "APrimalCharacter.NextWeaponItemIDPrimary"); } + long double& CharacterDiedAtTimeField() { return *GetNativePointerField(this, "APrimalCharacter.CharacterDiedAtTime"); } + TSubclassOf& PostFeatStaminaRecoveryCooldownDebuffField() { return *GetNativePointerField*>(this, "APrimalCharacter.PostFeatStaminaRecoveryCooldownDebuff"); } + float& CannonReloadMultiplierField() { return *GetNativePointerField(this, "APrimalCharacter.CannonReloadMultiplier"); } + TArray WeaponBreakClassesField() { return *GetNativePointerField*>(this, "APrimalCharacter.WeaponBreakClasses"); } + TArray& WeaponBreakLifesField() { return *GetNativePointerField*>(this, "APrimalCharacter.WeaponBreakLifes"); } + FName& NonDediOverrideMeshCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.NonDediOverrideMeshCollisionProfileName"); } + FName& NonDediOverrideCapsuleCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalCharacter.NonDediOverrideCapsuleCollisionProfileName"); } + bool& bIgnoreSimulatedRotationField() { return *GetNativePointerField(this, "APrimalCharacter.bIgnoreSimulatedRotation"); } + float& SimulatedInterLocSpeedField() { return *GetNativePointerField(this, "APrimalCharacter.SimulatedInterLocSpeed"); } + FVector& SimulatedInterpToLocField() { return *GetNativePointerField(this, "APrimalCharacter.SimulatedInterpToLoc"); } + + // Bit fields + + BitFieldValue bUseBlueprintJumpInputEvents() { return { this, "APrimalCharacter.bUseBlueprintJumpInputEvents" }; } + BitFieldValue bIsStaggering() { return { this, "APrimalCharacter.bIsStaggering" }; } + BitFieldValue bIsHitStaggering() { return { this, "APrimalCharacter.bIsHitStaggering" }; } + BitFieldValue bIsHoldingAltInput() { return { this, "APrimalCharacter.bIsHoldingAltInput" }; } + BitFieldValue bShieldCoverRequiresAltInput() { return { this, "APrimalCharacter.bShieldCoverRequiresAltInput" }; } + BitFieldValue bWantsToRaiseShield() { return { this, "APrimalCharacter.bWantsToRaiseShield" }; } + BitFieldValue bWantsToLowerShield() { return { this, "APrimalCharacter.bWantsToLowerShield" }; } + BitFieldValue bCanForceSkelUpdate() { return { this, "APrimalCharacter.bCanForceSkelUpdate" }; } + BitFieldValue bIgnoresMeleeStagger() { return { this, "APrimalCharacter.bIgnoresMeleeStagger" }; } + BitFieldValue bIsSleeping() { return { this, "APrimalCharacter.bIsSleeping" }; } + BitFieldValue bWantsToRun() { return { this, "APrimalCharacter.bWantsToRun" }; } + BitFieldValue bActiveRunToggle() { return { this, "APrimalCharacter.bActiveRunToggle" }; } + BitFieldValue bIsBeingDragged() { return { this, "APrimalCharacter.bIsBeingDragged" }; } + BitFieldValue bDisableSpawnDefaultController() { return { this, "APrimalCharacter.bDisableSpawnDefaultController" }; } + BitFieldValue bIsDragging() { return { this, "APrimalCharacter.bIsDragging" }; } + BitFieldValue bIsDraggingWithGrapHook() { return { this, "APrimalCharacter.bIsDraggingWithGrapHook" }; } + BitFieldValue bDeathKeepCapsuleCollision() { return { this, "APrimalCharacter.bDeathKeepCapsuleCollision" }; } + BitFieldValue bRemoteRunning() { return { this, "APrimalCharacter.bRemoteRunning" }; } + BitFieldValue bCanRun() { return { this, "APrimalCharacter.bCanRun" }; } + BitFieldValue bUseHealthDamageMaterialOverlay() { return { this, "APrimalCharacter.bUseHealthDamageMaterialOverlay" }; } + BitFieldValue bIsBlinking() { return { this, "APrimalCharacter.bIsBlinking" }; } + BitFieldValue bSleepedWaterRagdoll() { return { this, "APrimalCharacter.bSleepedWaterRagdoll" }; } + BitFieldValue bCanBeTorpid() { return { this, "APrimalCharacter.bCanBeTorpid" }; } + BitFieldValue bDebugIK() { return { this, "APrimalCharacter.bDebugIK" }; } + BitFieldValue bForceAlwaysUpdateMesh() { return { this, "APrimalCharacter.bForceAlwaysUpdateMesh" }; } + BitFieldValue bRagdollIgnoresPawnCapsules() { return { this, "APrimalCharacter.bRagdollIgnoresPawnCapsules" }; } + BitFieldValue bUsePoopAnimationNotify() { return { this, "APrimalCharacter.bUsePoopAnimationNotify" }; } + BitFieldValue bIsBigDino() { return { this, "APrimalCharacter.bIsBigDino" }; } + BitFieldValue bDeathUseRagdoll() { return { this, "APrimalCharacter.bDeathUseRagdoll" }; } + BitFieldValue bCanBeCarried() { return { this, "APrimalCharacter.bCanBeCarried" }; } + BitFieldValue bUseBPCanNotifyTeamAggroAI() { return { this, "APrimalCharacter.bUseBPCanNotifyTeamAggroAI" }; } + BitFieldValue bDamageNotifyTeamAggroAI() { return { this, "APrimalCharacter.bDamageNotifyTeamAggroAI" }; } + BitFieldValue bRecentlyUpdateIk() { return { this, "APrimalCharacter.bRecentlyUpdateIk" }; } + BitFieldValue bIKEnabled() { return { this, "APrimalCharacter.bIKEnabled" }; } + BitFieldValue bIsCarried() { return { this, "APrimalCharacter.bIsCarried" }; } + BitFieldValue bIsCarriedAsPassenger() { return { this, "APrimalCharacter.bIsCarriedAsPassenger" }; } + BitFieldValue bForceIKOnDedicatedServer() { return { this, "APrimalCharacter.bForceIKOnDedicatedServer" }; } + BitFieldValue bIgnoreAllImmobilizationTraps() { return { this, "APrimalCharacter.bIgnoreAllImmobilizationTraps" }; } + BitFieldValue bForceTriggerIgnoredTraps() { return { this, "APrimalCharacter.bForceTriggerIgnoredTraps" }; } + BitFieldValue bIsImmobilized() { return { this, "APrimalCharacter.bIsImmobilized" }; } + BitFieldValue bCanIgnoreWater() { return { this, "APrimalCharacter.bCanIgnoreWater" }; } + BitFieldValue bIsDead() { return { this, "APrimalCharacter.bIsDead" }; } + BitFieldValue ReplicateAllBones() { return { this, "APrimalCharacter.ReplicateAllBones" }; } + BitFieldValue AutoStopReplicationWhenSleeping() { return { this, "APrimalCharacter.AutoStopReplicationWhenSleeping" }; } + BitFieldValue bCanDrag() { return { this, "APrimalCharacter.bCanDrag" }; } + BitFieldValue bCanBeDragged() { return { this, "APrimalCharacter.bCanBeDragged" }; } + BitFieldValue bUsesRunningAnimation() { return { this, "APrimalCharacter.bUsesRunningAnimation" }; } + BitFieldValue bForceNetDidLand() { return { this, "APrimalCharacter.bForceNetDidLand" }; } + BitFieldValue bPreventSimpleIK() { return { this, "APrimalCharacter.bPreventSimpleIK" }; } + BitFieldValue bOnlyAllowRunningWhileFlying() { return { this, "APrimalCharacter.bOnlyAllowRunningWhileFlying" }; } + BitFieldValue bOrbitCamera() { return { this, "APrimalCharacter.bOrbitCamera" }; } + BitFieldValue bClientSetCurrentAimRot() { return { this, "APrimalCharacter.bClientSetCurrentAimRot" }; } + BitFieldValue bDisablePawnTick() { return { this, "APrimalCharacter.bDisablePawnTick" }; } + BitFieldValue bSetDeath() { return { this, "APrimalCharacter.bSetDeath" }; } + BitFieldValue bTicksOnClient() { return { this, "APrimalCharacter.bTicksOnClient" }; } + BitFieldValue bPlayingRunSound() { return { this, "APrimalCharacter.bPlayingRunSound" }; } + BitFieldValue bIsRespawn() { return { this, "APrimalCharacter.bIsRespawn" }; } + BitFieldValue bCreatedDynamicMaterials() { return { this, "APrimalCharacter.bCreatedDynamicMaterials" }; } + BitFieldValue bCurrentFrameAnimPreventInput() { return { this, "APrimalCharacter.bCurrentFrameAnimPreventInput" }; } + BitFieldValue bDraggedFromExtremitiesOnly() { return { this, "APrimalCharacter.bDraggedFromExtremitiesOnly" }; } + BitFieldValue bEnableIK() { return { this, "APrimalCharacter.bEnableIK" }; } + BitFieldValue bOnlyPlayPoopAnimWhileWalking() { return { this, "APrimalCharacter.bOnlyPlayPoopAnimWhileWalking" }; } + BitFieldValue bUseBlueprintAnimNotifyCustomEvent() { return { this, "APrimalCharacter.bUseBlueprintAnimNotifyCustomEvent" }; } + BitFieldValue bNoDamageImpulse() { return { this, "APrimalCharacter.bNoDamageImpulse" }; } + BitFieldValue bPreventImmobilization() { return { this, "APrimalCharacter.bPreventImmobilization" }; } + BitFieldValue bAllowAirJump() { return { this, "APrimalCharacter.bAllowAirJump" }; } + BitFieldValue bSleepingUseRagdoll() { return { this, "APrimalCharacter.bSleepingUseRagdoll" }; } + BitFieldValue bDediForceUnregisterSKMesh() { return { this, "APrimalCharacter.bDediForceUnregisterSKMesh" }; } + BitFieldValue bReadyToPoop() { return { this, "APrimalCharacter.bReadyToPoop" }; } + BitFieldValue bHasDynamicBase() { return { this, "APrimalCharacter.bHasDynamicBase" }; } + BitFieldValue bIsBeingDraggedByDino() { return { this, "APrimalCharacter.bIsBeingDraggedByDino" }; } + BitFieldValue bIsDraggingDinoStopped() { return { this, "APrimalCharacter.bIsDraggingDinoStopped" }; } + BitFieldValue bMissingDynamicBase() { return { this, "APrimalCharacter.bMissingDynamicBase" }; } + BitFieldValue bClientRagdollUpdateTimerEnabled() { return { this, "APrimalCharacter.bClientRagdollUpdateTimerEnabled" }; } + BitFieldValue bDieIfLeftWater() { return { this, "APrimalCharacter.bDieIfLeftWater" }; } + BitFieldValue bIsAmphibious() { return { this, "APrimalCharacter.bIsAmphibious" }; } + BitFieldValue bUseAmphibiousTargeting() { return { this, "APrimalCharacter.bUseAmphibiousTargeting" }; } + BitFieldValue bIsWaterDino() { return { this, "APrimalCharacter.bIsWaterDino" }; } + BitFieldValue bIsFlyerDino() { return { this, "APrimalCharacter.bIsFlyerDino" }; } + BitFieldValue bIgnoreTargetingCarnivores() { return { this, "APrimalCharacter.bIgnoreTargetingCarnivores" }; } + BitFieldValue bAimGettingCharacterMeshRotation() { return { this, "APrimalCharacter.bAimGettingCharacterMeshRotation" }; } + BitFieldValue bIsRunningCheckIgnoreVelocity() { return { this, "APrimalCharacter.bIsRunningCheckIgnoreVelocity" }; } + BitFieldValue bIsPlayingLowHealthAnim() { return { this, "APrimalCharacter.bIsPlayingLowHealthAnim" }; } + BitFieldValue bAllowCharacterPainting() { return { this, "APrimalCharacter.bAllowCharacterPainting" }; } + BitFieldValue bTickStatusComponent() { return { this, "APrimalCharacter.bTickStatusComponent" }; } + BitFieldValue bReplicateDamageMomentum() { return { this, "APrimalCharacter.bReplicateDamageMomentum" }; } + BitFieldValue bDontActuallyEmitPoop() { return { this, "APrimalCharacter.bDontActuallyEmitPoop" }; } + BitFieldValue bBPHUDOverideBuffProgressBar() { return { this, "APrimalCharacter.bBPHUDOverideBuffProgressBar" }; } + BitFieldValue bAllowRunningWhileSwimming() { return { this, "APrimalCharacter.bAllowRunningWhileSwimming" }; } + BitFieldValue bUseBPNotifyBumpedByPawn() { return { this, "APrimalCharacter.bUseBPNotifyBumpedByPawn" }; } + BitFieldValue bUseBPNotifyBumpedPawn() { return { this, "APrimalCharacter.bUseBPNotifyBumpedPawn" }; } + BitFieldValue bUseBPAdjustDamage() { return { this, "APrimalCharacter.bUseBPAdjustDamage" }; } + BitFieldValue bUseBPTimerServer() { return { this, "APrimalCharacter.bUseBPTimerServer" }; } + BitFieldValue bUseBPTimerNonDedicated() { return { this, "APrimalCharacter.bUseBPTimerNonDedicated" }; } + BitFieldValue bTriggerBPStasis() { return { this, "APrimalCharacter.bTriggerBPStasis" }; } + BitFieldValue bIsMounted() { return { this, "APrimalCharacter.bIsMounted" }; } + BitFieldValue bPreventTargetingByTurrets() { return { this, "APrimalCharacter.bPreventTargetingByTurrets" }; } + BitFieldValue bDelayFootstepsUnderMinInterval() { return { this, "APrimalCharacter.bDelayFootstepsUnderMinInterval" }; } + BitFieldValue bSleepingDisableIK() { return { this, "APrimalCharacter.bSleepingDisableIK" }; } + BitFieldValue bRagdollRetainAnimations() { return { this, "APrimalCharacter.bRagdollRetainAnimations" }; } + BitFieldValue bUseBPAddedAttachments() { return { this, "APrimalCharacter.bUseBPAddedAttachments" }; } + BitFieldValue bCanPlayLandingAnim() { return { this, "APrimalCharacter.bCanPlayLandingAnim" }; } + BitFieldValue bOnlyHasRunningAnimationWhenWalking() { return { this, "APrimalCharacter.bOnlyHasRunningAnimationWhenWalking" }; } + BitFieldValue bIsReflectingDamage() { return { this, "APrimalCharacter.bIsReflectingDamage" }; } + BitFieldValue bPreventTargetingAndMovement() { return { this, "APrimalCharacter.bPreventTargetingAndMovement" }; } + BitFieldValue bPreventMovement() { return { this, "APrimalCharacter.bPreventMovement" }; } + BitFieldValue bIsWhistleTargetingDown() { return { this, "APrimalCharacter.bIsWhistleTargetingDown" }; } + BitFieldValue bBPPreventInputType() { return { this, "APrimalCharacter.bBPPreventInputType" }; } + BitFieldValue bForcePreventAllInput() { return { this, "APrimalCharacter.bForcePreventAllInput" }; } + BitFieldValue bPreventAllBuffs() { return { this, "APrimalCharacter.bPreventAllBuffs" }; } + BitFieldValue LastIsInsideVaccumSealedCube() { return { this, "APrimalCharacter.LastIsInsideVaccumSealedCube" }; } + BitFieldValue bPreventJump() { return { this, "APrimalCharacter.bPreventJump" }; } + BitFieldValue bUseBPPreventStasis() { return { this, "APrimalCharacter.bUseBPPreventStasis" }; } + BitFieldValue bDestroyOnStasis() { return { this, "APrimalCharacter.bDestroyOnStasis" }; } + BitFieldValue bUseBPPostLoadedFromSaveGame() { return { this, "APrimalCharacter.bUseBPPostLoadedFromSaveGame" }; } + BitFieldValue bUseHeavyCombatMusic() { return { this, "APrimalCharacter.bUseHeavyCombatMusic" }; } + BitFieldValue bMarkForDestruction() { return { this, "APrimalCharacter.bMarkForDestruction" }; } + BitFieldValue bBPModifyAllowedViewHitDir() { return { this, "APrimalCharacter.bBPModifyAllowedViewHitDir" }; } + BitFieldValue bBPLimitPlayerRotation() { return { this, "APrimalCharacter.bBPLimitPlayerRotation" }; } + BitFieldValue bBPManagedFPVViewLocation() { return { this, "APrimalCharacter.bBPManagedFPVViewLocation" }; } + BitFieldValue bBPCameraRotationFinal() { return { this, "APrimalCharacter.bBPCameraRotationFinal" }; } + BitFieldValue bServerBPNotifyInventoryItemChangesUseQuantity() { return { this, "APrimalCharacter.bServerBPNotifyInventoryItemChangesUseQuantity" }; } + BitFieldValue bServerBPNotifyInventoryItemChanges() { return { this, "APrimalCharacter.bServerBPNotifyInventoryItemChanges" }; } + BitFieldValue bAllowRun() { return { this, "APrimalCharacter.bAllowRun" }; } + BitFieldValue bIsAtMaxInventoryItems() { return { this, "APrimalCharacter.bIsAtMaxInventoryItems" }; } + BitFieldValue bIsReplicatedRagdoll() { return { this, "APrimalCharacter.bIsReplicatedRagdoll" }; } + BitFieldValue bWasAllBodiesSleeping() { return { this, "APrimalCharacter.bWasAllBodiesSleeping" }; } + BitFieldValue bInRagdoll() { return { this, "APrimalCharacter.bInRagdoll" }; } + BitFieldValue bIsNPC() { return { this, "APrimalCharacter.bIsNPC" }; } + BitFieldValue LastCheckedSubmergedFull() { return { this, "APrimalCharacter.LastCheckedSubmergedFull" }; } + BitFieldValue bAllowFullSubmergedCheck() { return { this, "APrimalCharacter.bAllowFullSubmergedCheck" }; } + BitFieldValue bRagdollWasInWaterVolume() { return { this, "APrimalCharacter.bRagdollWasInWaterVolume" }; } + BitFieldValue bIsBuffed() { return { this, "APrimalCharacter.bIsBuffed" }; } + BitFieldValue bIsDraggingWithOffset() { return { this, "APrimalCharacter.bIsDraggingWithOffset" }; } + BitFieldValue bIsDraggedWithOffset() { return { this, "APrimalCharacter.bIsDraggedWithOffset" }; } + BitFieldValue bPreventRunningWhileWalking() { return { this, "APrimalCharacter.bPreventRunningWhileWalking" }; } + BitFieldValue bCanLandOnWater() { return { this, "APrimalCharacter.bCanLandOnWater" }; } + BitFieldValue bUseBPAdjustMoveForward() { return { this, "APrimalCharacter.bUseBPAdjustMoveForward" }; } + BitFieldValue bUseBPGetGravity() { return { this, "APrimalCharacter.bUseBPGetGravity" }; } + BitFieldValue bAllowDamageWhenMounted() { return { this, "APrimalCharacter.bAllowDamageWhenMounted" }; } + BitFieldValue bUseBPOnAttachmentReplication() { return { this, "APrimalCharacter.bUseBPOnAttachmentReplication" }; } + BitFieldValue bUseBPOnMovementModeChangedNotify() { return { this, "APrimalCharacter.bUseBPOnMovementModeChangedNotify" }; } + BitFieldValue bUseBPOnAnimPlayedNotify() { return { this, "APrimalCharacter.bUseBPOnAnimPlayedNotify" }; } + BitFieldValue bUseBPOverrideCharacterNewFallVelocity() { return { this, "APrimalCharacter.bUseBPOverrideCharacterNewFallVelocity" }; } + BitFieldValue bUseBP_OnSetRunningEvent() { return { this, "APrimalCharacter.bUseBP_OnSetRunningEvent" }; } + BitFieldValue bForceTurretFastTargeting() { return { this, "APrimalCharacter.bForceTurretFastTargeting" }; } + BitFieldValue bFlyingOrWaterDinoPreventBackwardsRun() { return { this, "APrimalCharacter.bFlyingOrWaterDinoPreventBackwardsRun" }; } + BitFieldValue bSleepingDisableRagdoll() { return { this, "APrimalCharacter.bSleepingDisableRagdoll" }; } + BitFieldValue bDestroyOnStasisWhenDead() { return { this, "APrimalCharacter.bDestroyOnStasisWhenDead" }; } + BitFieldValue bPreventLiveBlinking() { return { this, "APrimalCharacter.bPreventLiveBlinking" }; } + BitFieldValue bIgnoreSeatingDetachment() { return { this, "APrimalCharacter.bIgnoreSeatingDetachment" }; } + BitFieldValue bForceAlwaysUpdateMeshAndCollision() { return { this, "APrimalCharacter.bForceAlwaysUpdateMeshAndCollision" }; } + BitFieldValue bPreventHurtAnim() { return { this, "APrimalCharacter.bPreventHurtAnim" }; } + BitFieldValue bNoPhysics() { return { this, "APrimalCharacter.bNoPhysics" }; } + BitFieldValue bIsViewingInventory() { return { this, "APrimalCharacter.bIsViewingInventory" }; } + BitFieldValue bViewingInventory() { return { this, "APrimalCharacter.bViewingInventory" }; } + BitFieldValue bTargetingParry() { return { this, "APrimalCharacter.bTargetingParry" }; } + BitFieldValue bUseWeaponAdjustDamage() { return { this, "APrimalCharacter.bUseWeaponAdjustDamage" }; } + BitFieldValue bIsHoldingPrimaryFire() { return { this, "APrimalCharacter.bIsHoldingPrimaryFire" }; } + BitFieldValue bIsHoldingSecondaryFire() { return { this, "APrimalCharacter.bIsHoldingSecondaryFire" }; } + BitFieldValue bUseBPCanStagger() { return { this, "APrimalCharacter.bUseBPCanStagger" }; } + BitFieldValue bDidDie() { return { this, "APrimalCharacter.bDidDie" }; } + BitFieldValue bLockedToSeatingStructure() { return { this, "APrimalCharacter.bLockedToSeatingStructure" }; } + BitFieldValue bCanUseWeapon() { return { this, "APrimalCharacter.bCanUseWeapon" }; } + BitFieldValue bIsTargeting() { return { this, "APrimalCharacter.bIsTargeting" }; } + BitFieldValue bIsRiding() { return { this, "APrimalCharacter.bIsRiding" }; } + BitFieldValue bIsOnSeatingStructure() { return { this, "APrimalCharacter.bIsOnSeatingStructure" }; } + BitFieldValue bCacheRidingDinoWeapon() { return { this, "APrimalCharacter.bCacheRidingDinoWeapon" }; } + BitFieldValue bWasLocallyControlled() { return { this, "APrimalCharacter.bWasLocallyControlled" }; } + BitFieldValue bIsControllingBallista() { return { this, "APrimalCharacter.bIsControllingBallista" }; } + BitFieldValue bUseBallistaAimOffset() { return { this, "APrimalCharacter.bUseBallistaAimOffset" }; } + BitFieldValue bIsClimbing() { return { this, "APrimalCharacter.bIsClimbing" }; } + BitFieldValue bCanSitOnStructures() { return { this, "APrimalCharacter.bCanSitOnStructures" }; } + BitFieldValue bFirstTicked() { return { this, "APrimalCharacter.bFirstTicked" }; } + BitFieldValue bPlayingShieldCoverAnimation() { return { this, "APrimalCharacter.bPlayingShieldCoverAnimation" }; } + BitFieldValue bPlayingShieldCoverAnimationForCrouch() { return { this, "APrimalCharacter.bPlayingShieldCoverAnimationForCrouch" }; } + BitFieldValue bUseBPOnWeaponEquipped() { return { this, "APrimalCharacter.bUseBPOnWeaponEquipped" }; } + BitFieldValue bForceDefaultHurtFX() { return { this, "APrimalCharacter.bForceDefaultHurtFX" }; } + BitFieldValue bIsEnemyAI() { return { this, "APrimalCharacter.bIsEnemyAI" }; } + BitFieldValue bUseMeleeDamageMultiplierForProjectiles() { return { this, "APrimalCharacter.bUseMeleeDamageMultiplierForProjectiles" }; } + BitFieldValue bUsesDiedFromBack() { return { this, "APrimalCharacter.bUsesDiedFromBack" }; } + BitFieldValue bDiedFromBack() { return { this, "APrimalCharacter.bDiedFromBack" }; } + BitFieldValue bDebugAI_ShipTeleporting() { return { this, "APrimalCharacter.bDebugAI_ShipTeleporting" }; } + BitFieldValue bAllowTeleportingOntoRafts() { return { this, "APrimalCharacter.bAllowTeleportingOntoRafts" }; } + BitFieldValue bAllowTeleportingOntoEnemyRafts() { return { this, "APrimalCharacter.bAllowTeleportingOntoEnemyRafts" }; } + BitFieldValue bDebugAI_ShipMovement() { return { this, "APrimalCharacter.bDebugAI_ShipMovement" }; } + BitFieldValue bPreviousInCombatState() { return { this, "APrimalCharacter.bPreviousInCombatState" }; } + BitFieldValue bUseRecentHurtAmount() { return { this, "APrimalCharacter.bUseRecentHurtAmount" }; } + BitFieldValue bIsUsingShipReducedCharacterDrawDistance() { return { this, "APrimalCharacter.bIsUsingShipReducedCharacterDrawDistance" }; } + BitFieldValue bIsUsingShipReducedCharacterDrawDistance_Seating() { return { this, "APrimalCharacter.bIsUsingShipReducedCharacterDrawDistance_Seating" }; } + BitFieldValue bIsUsingShipReducedCharacterDrawDistance_Based() { return { this, "APrimalCharacter.bIsUsingShipReducedCharacterDrawDistance_Based" }; } + BitFieldValue bForceDefaultHurtFXAndUseDmgTypeSound() { return { this, "APrimalCharacter.bForceDefaultHurtFXAndUseDmgTypeSound" }; } + + // Functions + + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalCharacter.StaticClass"); } + UObject* GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalCharacter.GetUObjectInterfaceTargetableInterface"); } + void AdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool AllowColoringBy(APlayerController* ForPC, UObject* anItem) { return NativeCall(this, "APrimalCharacter.AllowColoringBy", ForPC, anItem); } + bool AllowFirstPerson() { return NativeCall(this, "APrimalCharacter.AllowFirstPerson"); } + bool AllowHurtAnimation() { return NativeCall(this, "APrimalCharacter.AllowHurtAnimation"); } + bool AllowSaving() { return NativeCall(this, "APrimalCharacter.AllowSaving"); } + FVector* AnimGraphGetInterpolatedLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.AnimGraphGetInterpolatedLocation", result); } + bool AnimationPreventsInput(bool bTestingForFirstPerson) { return NativeCall(this, "APrimalCharacter.AnimationPreventsInput", bTestingForFirstPerson); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void AttachGPSTransponder(APrimalStructureExplosiveTransGPS* Transponder) { NativeCall(this, "APrimalCharacter.AttachGPSTransponder", Transponder); } + AActor* BPGetAimedActor(FHitResult* outHitResult, ECollisionChannel CollisionChannel, float MaxDistanceOverride, float CheckRadius, bool bForceUseCameraLocation, bool bForceUpdateAimedActors) { return NativeCall(this, "APrimalCharacter.BPGetAimedActor", outHitResult, CollisionChannel, MaxDistanceOverride, CheckRadius, bForceUseCameraLocation, bForceUpdateAimedActors); } + bool BPIsBasedOnDynamicActor() { return NativeCall(this, "APrimalCharacter.BPIsBasedOnDynamicActor"); } + bool IsGameInputAllowed() { return NativeCall(this, "APrimalCharacter.IsGameInputAllowed"); } + bool BPIsGameplayInputAllowed(bool bCheckForFullBodyAnimations, UAnimMontage* IgnoreFullBodyMontage) { return NativeCall(this, "APrimalCharacter.BPIsGameplayInputAllowed", bCheckForFullBodyAnimations, IgnoreFullBodyMontage); } + float BPModifyFOV_Implementation(float FOVIn) { return NativeCall(this, "APrimalCharacter.BPModifyFOV_Implementation", FOVIn); } + void BPNetAddCharacterMovementImpulse(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ) { NativeCall(this, "APrimalCharacter.BPNetAddCharacterMovementImpulse", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ); } + void BPNetSetCharacterMovementVelocity(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.BPNetSetCharacterMovementVelocity", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } + float BP_GetMaxSpeedModifier() { return NativeCall(this, "APrimalCharacter.BP_GetMaxSpeedModifier"); } + void BeginPlay() { NativeCall(this, "APrimalCharacter.BeginPlay"); } + void BlueprintIsSwitchingWeapons(bool* bIsSwitchingWeapons, bool* bIsUnequipping) { NativeCall(this, "APrimalCharacter.BlueprintIsSwitchingWeapons", bIsSwitchingWeapons, bIsUnequipping); } + bool CanBaseOnActorWhileSwimming(AActor* BaseActor, FHitResult* HitInfo) { return NativeCall(this, "APrimalCharacter.CanBaseOnActorWhileSwimming", BaseActor, HitInfo); } + bool CanBeBaseForCharacter(APawn* Pawn) { return NativeCall(this, "APrimalCharacter.CanBeBaseForCharacter", Pawn); } + bool CanBeCarried(APrimalCharacter* ByCarrier) { return NativeCall(this, "APrimalCharacter.CanBeCarried", ByCarrier); } + bool CanBeDragged() { return NativeCall(this, "APrimalCharacter.CanBeDragged"); } + bool CanBePainted() { return NativeCall(this, "APrimalCharacter.CanBePainted"); } + bool CanBeTargetedBy(ITargetableInterface* Attacker) { return NativeCall(this, "APrimalCharacter.CanBeTargetedBy", Attacker); } + bool CanDodgeInternal() { return NativeCall(this, "APrimalCharacter.CanDodgeInternal"); } + bool CanDragCharacter(APrimalCharacter* Character) { return NativeCall(this, "APrimalCharacter.CanDragCharacter", Character); } + bool CanHitStagger() { return NativeCall(this, "APrimalCharacter.CanHitStagger"); } + bool CanIgnoreImmobilizationTrap(TSubclassOf TrapClass, bool* bForceTrigger) { return NativeCall, bool*>(this, "APrimalCharacter.CanIgnoreImmobilizationTrap", TrapClass, bForceTrigger); } + bool CanJumpInternal_Implementation() { return NativeCall(this, "APrimalCharacter.CanJumpInternal_Implementation"); } + bool CanMountOnMe(APrimalDinoCharacter* dinoCharacter) { return NativeCall(this, "APrimalCharacter.CanMountOnMe", dinoCharacter); } + bool CanMove() { return NativeCall(this, "APrimalCharacter.CanMove"); } + bool CanSetShieldState(bool bLowerShield) { return NativeCall(this, "APrimalCharacter.CanSetShieldState", bLowerShield); } + bool CanTeleportOntoClosestValidRaft(APlayerController* ForPC, FVector* FoundLocation) { return NativeCall(this, "APrimalCharacter.CanTeleportOntoClosestValidRaft", ForPC, FoundLocation); } + bool CanTeleportOntoRaft(APrimalRaft* OnRaft, APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.CanTeleportOntoRaft", OnRaft, ForPC); } + void CaptureCharacterSnapshot(UPrimalItem* Item) { NativeCall(this, "APrimalCharacter.CaptureCharacterSnapshot", Item); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalCharacter.ChangeActorTeam", NewTeam); } + void ChangeAnimBlueprintIfNeeded() { NativeCall(this, "APrimalCharacter.ChangeAnimBlueprintIfNeeded"); } + bool CharacterIsCarriedAsPassenger() { return NativeCall(this, "APrimalCharacter.CharacterIsCarriedAsPassenger"); } + void CheckBlockingAndAdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.CheckBlockingAndAdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void CheckJumpInput(float DeltaTime) { NativeCall(this, "APrimalCharacter.CheckJumpInput", DeltaTime); } + void CheckJumpOutOfWater() { NativeCall(this, "APrimalCharacter.CheckJumpOutOfWater"); } + void CheckRagdollPenetration() { NativeCall(this, "APrimalCharacter.CheckRagdollPenetration"); } + void ClearMountedDino(bool fromMountedDino) { NativeCall(this, "APrimalCharacter.ClearMountedDino", fromMountedDino); } + void ClearRagdollPhysics() { NativeCall(this, "APrimalCharacter.ClearRagdollPhysics"); } + void ClientDidPoop_Implementation() { NativeCall(this, "APrimalCharacter.ClientDidPoop_Implementation"); } + void ClientFailedPoop_Implementation() { NativeCall(this, "APrimalCharacter.ClientFailedPoop_Implementation"); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalCharacter.ClientMultiUse", ForPC, UseIndex); } + void ClientPlayAnimation_Implementation(UAnimMontage* AnimMontage, float PlayRate, FName StartSectionName, bool bPlayOnOwner, bool bForceTickPoseAndServerUpdateMesh) { NativeCall(this, "APrimalCharacter.ClientPlayAnimation_Implementation", AnimMontage, PlayRate, StartSectionName, bPlayOnOwner, bForceTickPoseAndServerUpdateMesh); } + void ClientPrepareForSeamlessTravel_Implementation() { NativeCall(this, "APrimalCharacter.ClientPrepareForSeamlessTravel_Implementation"); } + void ClientStopAnimationFPV_Implementation(UAnimMontage* AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimationFPV_Implementation", AnimMontage, bStopOnOwner, BlendOutTime); } + void ClientStopAnimation_Implementation(UAnimMontage* AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimation_Implementation", AnimMontage, bStopOnOwner, BlendOutTime); } + float ConsumeWeaponBreakLife(UClass* WeaponClass, float BreakWeightToConsume) { return NativeCall(this, "APrimalCharacter.ConsumeWeaponBreakLife", WeaponClass, BreakWeightToConsume); } + void ControllerLeavingGame(AShooterPlayerController* theController) { NativeCall(this, "APrimalCharacter.ControllerLeavingGame", theController); } + static UActorComponent* CreateSnapshotComponent(AActor* For, UObject* Template, FName Tag, FName Name) { return NativeCall(nullptr, "APrimalCharacter.CreateSnapshotComponent", For, Template, Tag, Name); } + void DeactivateBuffs(TSubclassOf ForBuffClass, UPrimalItem* ForInstigatorItem, bool perfectClassMatch) { NativeCall, UPrimalItem*, bool>(this, "APrimalCharacter.DeactivateBuffs", ForBuffClass, ForInstigatorItem, perfectClassMatch); } + void DeathHarvestingFadeOut_Implementation() { NativeCall(this, "APrimalCharacter.DeathHarvestingFadeOut_Implementation"); } + void DestroyInventory() { NativeCall(this, "APrimalCharacter.DestroyInventory"); } + void Destroyed() { NativeCall(this, "APrimalCharacter.Destroyed"); } + void DidLand() { NativeCall(this, "APrimalCharacter.DidLand"); } + void DidTeleport_Implementation(FVector newLoc, FRotator newRot) { NativeCall(this, "APrimalCharacter.DidTeleport_Implementation", newLoc, newRot); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "APrimalCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + bool DinoMountOnMe(APrimalDinoCharacter* dinoCharacter, bool bForce) { return NativeCall(this, "APrimalCharacter.DinoMountOnMe", dinoCharacter, bForce); } + void DisableShipReducedCharacterDrawDistance(bool bIsFromSeatingStructure) { NativeCall(this, "APrimalCharacter.DisableShipReducedCharacterDrawDistance", bIsFromSeatingStructure); } + void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff* BuffToIgnore) { NativeCall(this, "APrimalCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } + void DoExecuteActorConstruction(FTransform* Transform, bool bIsDefaultTransform) { NativeCall(this, "APrimalCharacter.DoExecuteActorConstruction", Transform, bIsDefaultTransform); } + void DoFindGoodSpot(FVector RagdollLoc, bool bClearCollisionSweep) { NativeCall(this, "APrimalCharacter.DoFindGoodSpot", RagdollLoc, bClearCollisionSweep); } + void DoSetRagdollPhysics() { NativeCall(this, "APrimalCharacter.DoSetRagdollPhysics"); } + void DownCallOne() { NativeCall(this, "APrimalCharacter.DownCallOne"); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalCharacter.DrawHUD", HUD); } + void DrawLocalPlayerHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalCharacter.DrawLocalPlayerHUD", HUD); } + void DropAllCarriedAndPassengers() { NativeCall(this, "APrimalCharacter.DropAllCarriedAndPassengers"); } + void DualWieldingSwitchSideWeapon(UPrimalItem* aPrimalItem, bool bIsPrimaryWeapon) { NativeCall(this, "APrimalCharacter.DualWieldingSwitchSideWeapon", aPrimalItem, bIsPrimaryWeapon); } + void EmitPoop() { NativeCall(this, "APrimalCharacter.EmitPoop"); } + void EnableBPTimerNonDedicated(bool bEnable) { NativeCall(this, "APrimalCharacter.EnableBPTimerNonDedicated", bEnable); } + void EnableBPTimerServer(bool bEnable) { NativeCall(this, "APrimalCharacter.EnableBPTimerServer", bEnable); } + void EnableBodiesGravity() { NativeCall(this, "APrimalCharacter.EnableBodiesGravity"); } + void EnableShipReducedCharacterDrawDistance(bool bIsFromSeatingStructure) { NativeCall(this, "APrimalCharacter.EnableShipReducedCharacterDrawDistance", bIsFromSeatingStructure); } + void EndDragCharacter() { NativeCall(this, "APrimalCharacter.EndDragCharacter"); } + void EndForceSkelUpdate() { NativeCall(this, "APrimalCharacter.EndForceSkelUpdate"); } + bool ExcludePostProcessBlendableMaterial(UMaterialInterface* BlendableMaterialInterface) { return NativeCall(this, "APrimalCharacter.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } + void ExecSetPawnSleeping(bool bEnable) { NativeCall(this, "APrimalCharacter.ExecSetPawnSleeping", bEnable); } + void ExecSetSleeping(bool bEnable) { NativeCall(this, "APrimalCharacter.ExecSetSleeping", bEnable); } + void FadeOutLoadingMusic() { NativeCall(this, "APrimalCharacter.FadeOutLoadingMusic"); } + void FellOutOfWorld(UDamageType* dmgType) { NativeCall(this, "APrimalCharacter.FellOutOfWorld", dmgType); } + void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalCharacter.FinalLoadedFromSaveGame"); } + APrimalRaft* FindClosestTeleportRaft(APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.FindClosestTeleportRaft", ForPC); } + bool FindTeleportLocation(FVector* TeleportLoc, APrimalRaft* OnRaft, FVector TargetLoc) { return NativeCall(this, "APrimalCharacter.FindTeleportLocation", TeleportLoc, OnRaft, TargetLoc); } + bool ForceAddUnderwaterCharacterStatusValues() { return NativeCall(this, "APrimalCharacter.ForceAddUnderwaterCharacterStatusValues"); } + bool ForceAllowAddBuffOfClass(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalCharacter.ForceAllowAddBuffOfClass", BuffClass); } + void ForceClearBase(bool bAlsoSetFallingMovementMode) { NativeCall(this, "APrimalCharacter.ForceClearBase", bAlsoSetFallingMovementMode); } + void ForceRefreshBones() { NativeCall(this, "APrimalCharacter.ForceRefreshBones"); } + void ForceSleepRagdoll() { NativeCall(this, "APrimalCharacter.ForceSleepRagdoll"); } + void ForceTickPoseDelta() { NativeCall(this, "APrimalCharacter.ForceTickPoseDelta"); } + static void ForceUpdateAimedCharacters(UWorld* World, FVector* StartLoc, FVector* EndLoc, AActor* IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(nullptr, "APrimalCharacter.ForceUpdateAimedCharacters", World, StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } + static void ForceUpdateCharacter(UWorld* World, APrimalCharacter* primalChar) { NativeCall(nullptr, "APrimalCharacter.ForceUpdateCharacter", World, primalChar); } + float GetAIDifficultyValue() { return NativeCall(this, "APrimalCharacter.GetAIDifficultyValue"); } + FVector* GetAbsoluteDynamicBasedLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetAbsoluteDynamicBasedLocation", result); } + FVector* GetAdjustedMeleeLockOnPointOffset(FVector* result) { return NativeCall(this, "APrimalCharacter.GetAdjustedMeleeLockOnPointOffset", result); } + AActor* GetAimedActor(ECollisionChannel CollisionChannel, UActorComponent** HitComponent, float MaxDistanceOverride, float CheckRadius, int* hitBodyIndex, FHitResult* outHitResult, bool bForceUseCameraLocation, bool bForceUpdateAimedActors, bool bForceUseActorLocation) { return NativeCall(this, "APrimalCharacter.GetAimedActor", CollisionChannel, HitComponent, MaxDistanceOverride, CheckRadius, hitBodyIndex, outHitResult, bForceUseCameraLocation, bForceUpdateAimedActors, bForceUseActorLocation); } + APrimalStructureExplosive* GetAttachedExplosive() { return NativeCall(this, "APrimalCharacter.GetAttachedExplosive"); } + float GetBallistaReloadSpeedMultiplier() { return NativeCall(this, "APrimalCharacter.GetBallistaReloadSpeedMultiplier"); } + FRotator* GetBaseAimRotation(FRotator* result) { return NativeCall(this, "APrimalCharacter.GetBaseAimRotation", result); } + float GetBaseDragWeight() { return NativeCall(this, "APrimalCharacter.GetBaseDragWeight"); } + APrimalDinoCharacter* GetBasedOnDino() { return NativeCall(this, "APrimalCharacter.GetBasedOnDino"); } + APrimalDinoCharacter* GetBasedOnDinoOrRaft() { return NativeCall(this, "APrimalCharacter.GetBasedOnDinoOrRaft"); } + APrimalRaft* GetBasedOnRaft(bool bOnlyCountDirectBase, bool bOnlyCountIndirectBase) { return NativeCall(this, "APrimalCharacter.GetBasedOnRaft", bOnlyCountDirectBase, bOnlyCountIndirectBase); } + TArray* GetBasedPawns(TArray* result) { return NativeCall*, TArray*>(this, "APrimalCharacter.GetBasedPawns", result); } + APrimalBuff* GetBuff(TSubclassOf BuffClass, bool bOnlyReturnSkillBuff, bool bOnlyReturnActivatedBuff, bool bUseExactMatch) { return NativeCall, bool, bool, bool>(this, "APrimalCharacter.GetBuff", BuffClass, bOnlyReturnSkillBuff, bOnlyReturnActivatedBuff, bUseExactMatch); } + APrimalBuff* GetBuffForPostEffect(UMaterialInterface* anEffect) { return NativeCall(this, "APrimalCharacter.GetBuffForPostEffect", anEffect); } + void GetBuffs(TArray* TheBuffs) { NativeCall*>(this, "APrimalCharacter.GetBuffs", TheBuffs); } + FVector* GetCapsuleBottomLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetCapsuleBottomLocation", result); } + FVector* GetCapsuleTopLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetCapsuleTopLocation", result); } + float GetCharacterLevel() { return NativeCall(this, "APrimalCharacter.GetCharacterLevel"); } + UPrimalCharacterStatusComponent* GetCharacterStatusComponent() { return NativeCall(this, "APrimalCharacter.GetCharacterStatusComponent"); } + float GetClientRotationInterpSpeed(FVector* RootLoc) { return NativeCall(this, "APrimalCharacter.GetClientRotationInterpSpeed", RootLoc); } + float GetCorpseDecayRate() { return NativeCall(this, "APrimalCharacter.GetCorpseDecayRate"); } + float GetCorpseLifespan() { return NativeCall(this, "APrimalCharacter.GetCorpseLifespan"); } + float GetCurrentStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetCurrentStatusValue", StatusValueType); } + TArray* GetCurrentlyPlayingAnimations(TArray* result, bool bReturnIfAnyFound, TArray SlotsToInclude, TArray SlotsToExclude, TArray TagsToInclude, TArray TagsToExclude, TArray AnimationsToExclude) { return NativeCall*, TArray*, bool, TArray, TArray, TArray, TArray, TArray>(this, "APrimalCharacter.GetCurrentlyPlayingAnimations", result, bReturnIfAnyFound, SlotsToInclude, SlotsToExclude, TagsToInclude, TagsToExclude, AnimationsToExclude); } + float GetDamageTorpidityIncreaseMultiplierScale() { return NativeCall(this, "APrimalCharacter.GetDamageTorpidityIncreaseMultiplierScale"); } + float GetDefaultMovementSpeed() { return NativeCall(this, "APrimalCharacter.GetDefaultMovementSpeed"); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalCharacter.GetDescriptiveName", result); } + int GetDirectionalIndexByVector(FVector* TestVec, bool isDodgeTest, float Tolerance) { return NativeCall(this, "APrimalCharacter.GetDirectionalIndexByVector", TestVec, isDodgeTest, Tolerance); } + FVector* GetDirectionalVectorByIndex(FVector* result, const int DirIndex) { return NativeCall(this, "APrimalCharacter.GetDirectionalVectorByIndex", result, DirIndex); } + float GetDodgeDurationMultiplier() { return NativeCall(this, "APrimalCharacter.GetDodgeDurationMultiplier"); } + float GetDragWeight(APrimalCharacter* ForDragger) { return NativeCall(this, "APrimalCharacter.GetDragWeight", ForDragger); } + float GetFallAcceleration() { return NativeCall(this, "APrimalCharacter.GetFallAcceleration"); } + EPhysicalSurface GetFootPhysicalSurfaceType(bool bForce) { return NativeCall(this, "APrimalCharacter.GetFootPhysicalSurfaceType", bForce); } + float GetGravityZScale() { return NativeCall(this, "APrimalCharacter.GetGravityZScale"); } + bool GetGroundLocation(FVector* theGroundLoc, FVector* OffsetUp, FVector* OffsetDown, AActor* IgnoredActor) { return NativeCall(this, "APrimalCharacter.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown, IgnoredActor); } + float GetHealth() { return NativeCall(this, "APrimalCharacter.GetHealth"); } + float GetHealthPercentage() { return NativeCall(this, "APrimalCharacter.GetHealthPercentage"); } + float GetImmersionDepth(bool bUseLineTrace) { return NativeCall(this, "APrimalCharacter.GetImmersionDepth", bUseLineTrace); } + float GetIndirectTorpidityIncreaseMultiplierScale() { return NativeCall(this, "APrimalCharacter.GetIndirectTorpidityIncreaseMultiplierScale"); } + FVector* GetInterpolatedLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedLocation", result); } + FRotator* GetInterpolatedRotation(FRotator* result) { return NativeCall(this, "APrimalCharacter.GetInterpolatedRotation", result); } + float GetJumpZModifier() { return NativeCall(this, "APrimalCharacter.GetJumpZModifier"); } + float GetKillXP() { return NativeCall(this, "APrimalCharacter.GetKillXP"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetLowHealthPercentage() { return NativeCall(this, "APrimalCharacter.GetLowHealthPercentage"); } + float GetMaxCursorHUDDistance(AShooterPlayerController* PC) { return NativeCall(this, "APrimalCharacter.GetMaxCursorHUDDistance", PC); } + float GetMaxHealth() { return NativeCall(this, "APrimalCharacter.GetMaxHealth"); } + float GetMaxSpeedModifier() { return NativeCall(this, "APrimalCharacter.GetMaxSpeedModifier"); } + float GetMaxStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetMaxStatusValue", StatusValueType); } + int GetNearestBoneIndexForDrag(APrimalCharacter* Character, FVector HitLocation) { return NativeCall(this, "APrimalCharacter.GetNearestBoneIndexForDrag", Character, HitLocation); } + UTexture2D* GetOverrideDefaultCharacterParamTexture(FName theParamName, UTexture2D* CurrentTexture) { return NativeCall(this, "APrimalCharacter.GetOverrideDefaultCharacterParamTexture", theParamName, CurrentTexture); } + UPaintingTexture* GetPaintingTexture(bool bForTattoo, UPrimalPlayerData* TattooPlayerData) { return NativeCall(this, "APrimalCharacter.GetPaintingTexture", bForTattoo, TattooPlayerData); } + USceneComponent* GetParticleBaseComponent() { return NativeCall(this, "APrimalCharacter.GetParticleBaseComponent"); } + float GetPercentStatusValue(EPrimalCharacterStatusValue::Type StatusValueType) { return NativeCall(this, "APrimalCharacter.GetPercentStatusValue", StatusValueType); } + UPrimitiveComponent* GetPrimaryHitComponent() { return NativeCall(this, "APrimalCharacter.GetPrimaryHitComponent"); } + float GetProjectileDamageMultiplier() { return NativeCall(this, "APrimalCharacter.GetProjectileDamageMultiplier"); } + ENetRole GetRole() { return NativeCall(this, "APrimalCharacter.GetRole"); } + FVector* GetRootBodyBoneLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetRootBodyBoneLocation", result); } + float BPGetAddForwardVelocityOnJump_Implementation() { return NativeCall(this, "APrimalCharacter.BPGetAddForwardVelocityOnJump_Implementation"); } + float GetRunningSpeedModifier(bool bIsForDefaultSpeed) { return NativeCall(this, "APrimalCharacter.GetRunningSpeedModifier", bIsForDefaultSpeed); } + UAnimSequence* GetSeatingAnimation() { return NativeCall(this, "APrimalCharacter.GetSeatingAnimation"); } + UAnimSequence* GetShieldHeldAnimation() { return NativeCall(this, "APrimalCharacter.GetShieldHeldAnimation"); } + UPrimalItem* GetShieldItem() { return NativeCall(this, "APrimalCharacter.GetShieldItem"); } + FString* GetShortName(FString* result) { return NativeCall(this, "APrimalCharacter.GetShortName", result); } + static UActorComponent* GetSnapshotComponent(AActor* From, FName Tag) { return NativeCall(nullptr, "APrimalCharacter.GetSnapshotComponent", From, Tag); } + float GetSpoilingTimeMultiplier(UPrimalItem* anItem) { return NativeCall(this, "APrimalCharacter.GetSpoilingTimeMultiplier", anItem); } + FVector* GetTargetPathfindingLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetTargetPathfindingLocation", result); } + FVector* GetTargetingLocation(FVector* result) { return NativeCall(this, "APrimalCharacter.GetTargetingLocation", result); } + FVector* GetVelocity(FVector* result, bool bIsForRagdoll) { return NativeCall(this, "APrimalCharacter.GetVelocity", result, bIsForRagdoll); } + FRotator* GetViewRotation(FRotator* result) { return NativeCall(this, "APrimalCharacter.GetViewRotation", result); } + float GetWaterSubmergedDepthThreshold() { return NativeCall(this, "APrimalCharacter.GetWaterSubmergedDepthThreshold"); } + FName* GetWeaponAttachPoint(FName* result, bool bSecondaryAttachPoint) { return NativeCall(this, "APrimalCharacter.GetWeaponAttachPoint", result, bSecondaryAttachPoint); } + float GetWeaponBaseSpeedModifier() { return NativeCall(this, "APrimalCharacter.GetWeaponBaseSpeedModifier"); } + float GetWeaponRunSpeed() { return NativeCall(this, "APrimalCharacter.GetWeaponRunSpeed"); } + float GetWeaponSpeedMultiplierByDirection(FVector* CharacterDir, FVector* MovementDir) { return NativeCall(this, "APrimalCharacter.GetWeaponSpeedMultiplierByDirection", CharacterDir, MovementDir); } + UPrimalItem_Shield* GetYarkShieldItem() { return NativeCall(this, "APrimalCharacter.GetYarkShieldItem"); } + void GiveDefaultWeapon(bool bForceGiveDefaultWeapon) { NativeCall(this, "APrimalCharacter.GiveDefaultWeapon", bForceGiveDefaultWeapon); } + void GiveDefaultWeaponTimer() { NativeCall(this, "APrimalCharacter.GiveDefaultWeaponTimer"); } + void GivePrimalItemWeapon(UPrimalItem* aPrimalItem) { NativeCall(this, "APrimalCharacter.GivePrimalItemWeapon", aPrimalItem); } + bool HasBuff(TSubclassOf BuffClass, bool useExactMatch) { return NativeCall, bool>(this, "APrimalCharacter.HasBuff", BuffClass, useExactMatch); } + bool HasShieldAttackForInput(EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "APrimalCharacter.HasShieldAttackForInput", AttackInput); } + void HurtMe(int HowMuch) { NativeCall(this, "APrimalCharacter.HurtMe", HowMuch); } + void Immobilize(bool bImmobilize, AActor* UsingActor, bool bImmobilizeFalling) { NativeCall(this, "APrimalCharacter.Immobilize", bImmobilize, UsingActor, bImmobilizeFalling); } + void InitializedAnimScriptInstance() { NativeCall(this, "APrimalCharacter.InitializedAnimScriptInstance"); } + void InventoryItemUsed(UObject* InventoryItemObject) { NativeCall(this, "APrimalCharacter.InventoryItemUsed", InventoryItemObject); } + bool IsAlive() { return NativeCall(this, "APrimalCharacter.IsAlive"); } + bool IsAlliedWithOtherTeam(int OtherTeamID) { return NativeCall(this, "APrimalCharacter.IsAlliedWithOtherTeam", OtherTeamID); } + bool IsAttachedToSomething() { return NativeCall(this, "APrimalCharacter.IsAttachedToSomething"); } + bool IsBasedOnRaft(APrimalRaft* SpecificRaft) { return NativeCall(this, "APrimalCharacter.IsBasedOnRaft", SpecificRaft); } + bool IsBlockedByShield(FHitResult* HitInfo, FVector* ShotDirection, bool bBlockAllPointDamage, bool bDamageIsFromYarkWeapon) { return NativeCall(this, "APrimalCharacter.IsBlockedByShield", HitInfo, ShotDirection, bBlockAllPointDamage, bDamageIsFromYarkWeapon); } + bool IsBlockingWithShield(bool bCheckActiveBlocking, float TimeFromTransitionEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsBlockingWithShield", bCheckActiveBlocking, TimeFromTransitionEndToConsiderFinished); } + bool IsBlockingWithWeapon() { return NativeCall(this, "APrimalCharacter.IsBlockingWithWeapon"); } + bool IsCarryingSomething(bool bNotForRunning) { return NativeCall(this, "APrimalCharacter.IsCarryingSomething", bNotForRunning); } + bool IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "APrimalCharacter.IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } + bool IsConscious() { return NativeCall(this, "APrimalCharacter.IsConscious"); } + bool IsControllingBallistaTurret() { return NativeCall(this, "APrimalCharacter.IsControllingBallistaTurret"); } + bool IsDead() { return NativeCall(this, "APrimalCharacter.IsDead"); } + bool IsDodgeDirectionAllowed(int DodgeDirection) { return NativeCall(this, "APrimalCharacter.IsDodgeDirectionAllowed", DodgeDirection); } + bool IsDraggingCharacter() { return NativeCall(this, "APrimalCharacter.IsDraggingCharacter"); } + bool IsFiring() { return NativeCall(this, "APrimalCharacter.IsFiring"); } + bool IsIkCurveReversed() { return NativeCall(this, "APrimalCharacter.IsIkCurveReversed"); } + bool IsInOceanWater() { return NativeCall(this, "APrimalCharacter.IsInOceanWater"); } + bool IsInStatusState(EPrimalCharacterStatusState::Type StatusStateType) { return NativeCall(this, "APrimalCharacter.IsInStatusState", StatusStateType); } + bool IsInVacuumSealedSpace() { return NativeCall(this, "APrimalCharacter.IsInVacuumSealedSpace"); } + bool IsInputAllowed() { return NativeCall(this, "APrimalCharacter.IsInputAllowed"); } + bool IsInvincible(int AttackerTeam) { return NativeCall(this, "APrimalCharacter.IsInvincible", AttackerTeam); } + bool IsMeshGameplayRelevant() { return NativeCall(this, "APrimalCharacter.IsMeshGameplayRelevant"); } + bool IsMontagePlaying(UAnimMontage* AnimMontage, float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsMontagePlaying", AnimMontage, TimeFromEndToConsiderFinished); } + bool IsMoving() { return NativeCall(this, "APrimalCharacter.IsMoving"); } + bool IsOfTribe(int ID) { return NativeCall(this, "APrimalCharacter.IsOfTribe", ID); } + bool IsOnSeatingStructure() { return NativeCall(this, "APrimalCharacter.IsOnSeatingStructure"); } + UAnimMontage* IsPlayingAnyFullBodyAnimations(UAnimMontage* IgnoreFullBodyMontage) { return NativeCall(this, "APrimalCharacter.IsPlayingAnyFullBodyAnimations", IgnoreFullBodyMontage); } + bool IsPrimalCharFriendly(APrimalCharacter* primalChar) { return NativeCall(this, "APrimalCharacter.IsPrimalCharFriendly", primalChar); } + bool IsProneOrSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "APrimalCharacter.IsProneOrSitting", bIgnoreLockedToSeat); } + bool IsRagdolled() { return NativeCall(this, "APrimalCharacter.IsRagdolled"); } + bool IsRunning(bool bIncludeFalling, bool bIncludeRunTurning) { return NativeCall(this, "APrimalCharacter.IsRunning", bIncludeFalling, bIncludeRunTurning); } + bool IsShieldTransitioning(float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsShieldTransitioning", TimeFromEndToConsiderFinished); } + bool IsShieldTransitioningIn(float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsShieldTransitioningIn", TimeFromEndToConsiderFinished); } + bool IsShieldTransitioningOut(float TimeFromEndToConsiderFinished) { return NativeCall(this, "APrimalCharacter.IsShieldTransitioningOut", TimeFromEndToConsiderFinished); } + bool IsSimulated() { return NativeCall(this, "APrimalCharacter.IsSimulated"); } + bool IsSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "APrimalCharacter.IsSitting", bIgnoreLockedToSeat); } + bool IsStaggering() { return NativeCall(this, "APrimalCharacter.IsStaggering"); } + bool IsSubmerged(bool bDontCheckSwimming, bool bUseFullThreshold, bool bForceCheck, bool bFromVolumeChange) { return NativeCall(this, "APrimalCharacter.IsSubmerged", bDontCheckSwimming, bUseFullThreshold, bForceCheck, bFromVolumeChange); } + bool IsSwitchingWeapons() { return NativeCall(this, "APrimalCharacter.IsSwitchingWeapons"); } + bool IsTargetableDead() { return NativeCall(this, "APrimalCharacter.IsTargetableDead"); } + bool IsTargeting() { return NativeCall(this, "APrimalCharacter.IsTargeting"); } + bool IsUsingHandIK() { return NativeCall(this, "APrimalCharacter.IsUsingHandIK"); } + bool IsUsingShield() { return NativeCall(this, "APrimalCharacter.IsUsingShield"); } + bool IsUsingYarkShield() { return NativeCall(this, "APrimalCharacter.IsUsingYarkShield"); } + bool IsValidCharacterToDoClaiming(int VictimTeam) { return NativeCall(this, "APrimalCharacter.IsValidCharacterToDoClaiming", VictimTeam); } + bool IsValidCharacterToPreventClaiming(int AttackerTeam) { return NativeCall(this, "APrimalCharacter.IsValidCharacterToPreventClaiming", AttackerTeam); } + bool IsValidForCombatMusic() { return NativeCall(this, "APrimalCharacter.IsValidForCombatMusic"); } + bool IsValidForStatusRecovery() { return NativeCall(this, "APrimalCharacter.IsValidForStatusRecovery"); } + bool IsValidForStatusUpdate() { return NativeCall(this, "APrimalCharacter.IsValidForStatusUpdate"); } + bool IsValidLockOnTarget_Implementation(APawn* AttackerPawn) { return NativeCall(this, "APrimalCharacter.IsValidLockOnTarget_Implementation", AttackerPawn); } + bool IsWatered() { return NativeCall(this, "APrimalCharacter.IsWatered"); } + bool IsWeaponWielder() { return NativeCall(this, "APrimalCharacter.IsWeaponWielder"); } + void LocalPossessedBy(APlayerController* ByController) { NativeCall(this, "APrimalCharacter.LocalPossessedBy", ByController); } + void LocalUnpossessed_Implementation() { NativeCall(this, "APrimalCharacter.LocalUnpossessed_Implementation"); } + void LookInput(float Val) { NativeCall(this, "APrimalCharacter.LookInput", Val); } + void LookUpAtRate(float Val) { NativeCall(this, "APrimalCharacter.LookUpAtRate", Val); } + bool LowerShield() { return NativeCall(this, "APrimalCharacter.LowerShield"); } + void MarkForSeamlessTravel(unsigned int DestinationServerId, ESeamlessVolumeSide::Side DestinationServerVolumeSide) { NativeCall(this, "APrimalCharacter.MarkForSeamlessTravel", DestinationServerId, DestinationServerVolumeSide); } + bool ModifyInputAcceleration(FVector* InputAcceleration) { return NativeCall(this, "APrimalCharacter.ModifyInputAcceleration", InputAcceleration); } + void MoveForward(float Val) { NativeCall(this, "APrimalCharacter.MoveForward", Val); } + void MoveRight(float Val) { NativeCall(this, "APrimalCharacter.MoveRight", Val); } + void MoveUp(float Val) { NativeCall(this, "APrimalCharacter.MoveUp", Val); } + void NativeSimulateHair(TArray* CurrentPos, TArray* LastPos, TArray* RestPos, TArray* PivotPos, TArray* RestDistance, FVector HairSocketLoc, FRotator HairSocketRot, FVector ChestSocketLoc, FRotator ChestSocketRot, float DeltaTime, float Damping, float DampingFrontModifier, float DampingBack, float InWater, float HairWetness, float DragForce, float HairScale, float SpringForce, float SpringForceFrontModifier, float SpringForceBack, float GravityForce, FVector ShoulderLCollisionOffset, float ShoulderLCollisionRadius, FVector ShoulderRCollisionOffset, float ShoulderRCollisionRadius, FVector HeadHairCollisionOffset, float HeadHairCollisionRadius, FVector NeckHairCollisionOffset, float NeckHairCollisionRadius, float MaxDistanceToRestPos, FTransform LastHeadTransform, bool bPosAsPivot, bool bCollideMiddle, bool bCollideWithNeck) { NativeCall*, TArray*, TArray*, TArray*, TArray*, FVector, FRotator, FVector, FRotator, float, float, float, float, float, float, float, float, float, float, float, float, FVector, float, FVector, float, FVector, float, FVector, float, float, FTransform, bool, bool, bool>(this, "APrimalCharacter.NativeSimulateHair", CurrentPos, LastPos, RestPos, PivotPos, RestDistance, HairSocketLoc, HairSocketRot, ChestSocketLoc, ChestSocketRot, DeltaTime, Damping, DampingFrontModifier, DampingBack, InWater, HairWetness, DragForce, HairScale, SpringForce, SpringForceFrontModifier, SpringForceBack, GravityForce, ShoulderLCollisionOffset, ShoulderLCollisionRadius, ShoulderRCollisionOffset, ShoulderRCollisionRadius, HeadHairCollisionOffset, HeadHairCollisionRadius, NeckHairCollisionOffset, NeckHairCollisionRadius, MaxDistanceToRestPos, LastHeadTransform, bPosAsPivot, bCollideMiddle, bCollideWithNeck); } + void NetAddCharacterMovementImpulse_Implementation(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ) { NativeCall(this, "APrimalCharacter.NetAddCharacterMovementImpulse_Implementation", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ); } + void NetDidLand_Implementation() { NativeCall(this, "APrimalCharacter.NetDidLand_Implementation"); } + void NetForceUpdateAimedCharacters_Implementation(FVector StartLoc, FVector EndLoc, AActor* IgnoreActor, bool bForceUpdateIgnoreActor, float TraceRadius) { NativeCall(this, "APrimalCharacter.NetForceUpdateAimedCharacters_Implementation", StartLoc, EndLoc, IgnoreActor, bForceUpdateIgnoreActor, TraceRadius); } + void NetOnJumped_Implementation() { NativeCall(this, "APrimalCharacter.NetOnJumped_Implementation"); } + void NetPlaySoundOnCharacter_Implementation(USoundBase* SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter_Implementation", SoundToPlay, bPlayOnOwner); } + void NetReleaseSeatingStructure_Implementation() { NativeCall(this, "APrimalCharacter.NetReleaseSeatingStructure_Implementation"); } + void NetSetCharacterMovementVelocity_Implementation(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.NetSetCharacterMovementVelocity_Implementation", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } + void NetStopAllAnimMontage_Implementation() { NativeCall(this, "APrimalCharacter.NetStopAllAnimMontage_Implementation"); } + void NetUpdateTribeName_Implementation(FString* NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName_Implementation", NewTribeName); } + void Net_OnIsStaggering_Implementation(bool bNewStaggering, float PlayStaggerAnimAfterDelay, bool bPlayStaggerAnim) { NativeCall(this, "APrimalCharacter.Net_OnIsStaggering_Implementation", bNewStaggering, PlayStaggerAnimAfterDelay, bPlayStaggerAnim); } + void NotifyBumpedByPawn(APrimalCharacter* ByPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedByPawn", ByPawn); } + void NotifyBumpedPawn(APawn* BumpedPawn) { NativeCall(this, "APrimalCharacter.NotifyBumpedPawn", BumpedPawn); } + void NotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "APrimalCharacter.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemQuantityUpdated(UPrimalItem* anItem, int amount) { NativeCall(this, "APrimalCharacter.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "APrimalCharacter.NotifyItemRemoved", anItem); } + void OnAttachedToCharacter() { NativeCall(this, "APrimalCharacter.OnAttachedToCharacter"); } + void OnAttachedToSeatingStructure() { NativeCall(this, "APrimalCharacter.OnAttachedToSeatingStructure"); } + void OnBeginDrag_Implementation(APrimalCharacter* Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } + void OnBeginDragged(APrimalCharacter* Dragger) { NativeCall(this, "APrimalCharacter.OnBeginDragged", Dragger); } + void OnClientPairedNetGUID() { NativeCall(this, "APrimalCharacter.OnClientPairedNetGUID"); } + void OnClientReceivedTransformAfterPairingNetGUID(FVector* Loc, FRotator* Rot) { NativeCall(this, "APrimalCharacter.OnClientReceivedTransformAfterPairingNetGUID", Loc, Rot); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalCharacter.OnDeserializedByGame", DeserializationType); } + void OnDetachedFromCharacter(APrimalCharacter* aCharacter, int OverrideDirection) { NativeCall(this, "APrimalCharacter.OnDetachedFromCharacter", aCharacter, OverrideDirection); } + void OnDetachedFromSeatingStructure(APrimalStructureSeating* InSeatingStructure) { NativeCall(this, "APrimalCharacter.OnDetachedFromSeatingStructure", InSeatingStructure); } + void OnEndDrag_Implementation() { NativeCall(this, "APrimalCharacter.OnEndDrag_Implementation"); } + void OnEndDragged(APrimalCharacter* Dragger) { NativeCall(this, "APrimalCharacter.OnEndDragged", Dragger); } + void OnIgnoredMoveToOrder(APlayerController* FromPC) { NativeCall(this, "APrimalCharacter.OnIgnoredMoveToOrder", FromPC); } + void OnJumped_Implementation() { NativeCall(this, "APrimalCharacter.OnJumped_Implementation"); } + void OnLanded(FHitResult* Hit) { NativeCall(this, "APrimalCharacter.OnLanded", Hit); } + void OnMovementModeChanged(EMovementMode PrevMovementMode, char PreviousCustomMode) { NativeCall(this, "APrimalCharacter.OnMovementModeChanged", PrevMovementMode, PreviousCustomMode); } + void OnPrimalCharacterSleeped() { NativeCall(this, "APrimalCharacter.OnPrimalCharacterSleeped"); } + void OnPrimalCharacterUnsleeped() { NativeCall(this, "APrimalCharacter.OnPrimalCharacterUnsleeped"); } + void OnRep_CurrentWeapon(AShooterWeapon* LastWeapon) { NativeCall(this, "APrimalCharacter.OnRep_CurrentWeapon", LastWeapon); } + void OnRep_IsDead() { NativeCall(this, "APrimalCharacter.OnRep_IsDead"); } + void OnRep_IsSleeping() { NativeCall(this, "APrimalCharacter.OnRep_IsSleeping"); } + void OnRep_MountedDino() { NativeCall(this, "APrimalCharacter.OnRep_MountedDino"); } + void OnRep_PaintingComponent() { NativeCall(this, "APrimalCharacter.OnRep_PaintingComponent"); } + void OnRep_RagdollPositions() { NativeCall(this, "APrimalCharacter.OnRep_RagdollPositions"); } + void OnRunToggle() { NativeCall(this, "APrimalCharacter.OnRunToggle"); } + void OnShieldDefenseBroken(float StaggerTime) { NativeCall(this, "APrimalCharacter.OnShieldDefenseBroken", StaggerTime); } + void OnStartAltFire() { NativeCall(this, "APrimalCharacter.OnStartAltFire"); } + void OnStartBlockingAttack() { NativeCall(this, "APrimalCharacter.OnStartBlockingAttack"); } + void OnStartBreakingAttack() { NativeCall(this, "APrimalCharacter.OnStartBreakingAttack"); } + void OnStartFire(bool bFromGamepadRight, int weaponAttackIndex, bool bDoLeftSide, bool bOverrideCurrentAttack) { NativeCall(this, "APrimalCharacter.OnStartFire", bFromGamepadRight, weaponAttackIndex, bDoLeftSide, bOverrideCurrentAttack); } + void OnStartFireQuinary() { NativeCall(this, "APrimalCharacter.OnStartFireQuinary"); } + void OnStartJump() { NativeCall(this, "APrimalCharacter.OnStartJump"); } + void OnStartRunning() { NativeCall(this, "APrimalCharacter.OnStartRunning"); } + void OnStopAltFire() { NativeCall(this, "APrimalCharacter.OnStopAltFire"); } + void OnStopBlockingAttack() { NativeCall(this, "APrimalCharacter.OnStopBlockingAttack"); } + void OnStopBreakingAttack() { NativeCall(this, "APrimalCharacter.OnStopBreakingAttack"); } + void OnStopFire(bool bFromGamepadRight, int weaponAttackIndex) { NativeCall(this, "APrimalCharacter.OnStopFire", bFromGamepadRight, weaponAttackIndex); } + void OnStopFireQuinary() { NativeCall(this, "APrimalCharacter.OnStopFireQuinary"); } + void OnStopJump() { NativeCall(this, "APrimalCharacter.OnStopJump"); } + void OnStopRunning() { NativeCall(this, "APrimalCharacter.OnStopRunning"); } + void OnTeleportOntoRaft(APrimalRaft* OntoRaft) { NativeCall(this, "APrimalCharacter.OnTeleportOntoRaft", OntoRaft); } + void OrbitCamOff() { NativeCall(this, "APrimalCharacter.OrbitCamOff"); } + void OrbitCamOn() { NativeCall(this, "APrimalCharacter.OrbitCamOn"); } + void OrbitCamToggle() { NativeCall(this, "APrimalCharacter.OrbitCamToggle"); } + FVector* OverrideNewFallVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.OverrideNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } + FVector* OverrideSwimmingVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, const float* FluidFriction, const float* NetBuoyancy, float DeltaTime) { return NativeCall(this, "APrimalCharacter.OverrideSwimmingVelocity", result, InitialVelocity, Gravity, FluidFriction, NetBuoyancy, DeltaTime); } + FVector* OverrideWalkingVelocity(FVector* result, FVector* InitialVelocity, const float* Friction, float DeltaTime) { return NativeCall(this, "APrimalCharacter.OverrideWalkingVelocity", result, InitialVelocity, Friction, DeltaTime); } + float PlayAnimEx(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bReplicate, bool bReplicateToOwner, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "APrimalCharacter.PlayAnimEx", AnimMontage, InPlayRate, StartSectionName, bReplicate, bReplicateToOwner, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } + float PlayAnimMontage(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { return NativeCall(this, "APrimalCharacter.PlayAnimMontage", AnimMontage, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingPoint_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayFootstep() { NativeCall(this, "APrimalCharacter.PlayFootstep"); } + void PlayHitEffect(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalCharacter.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } + void PlayHitEffectGeneric_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectGeneric_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayJumpAnim() { NativeCall(this, "APrimalCharacter.PlayJumpAnim"); } + void PlayLandedAnim() { NativeCall(this, "APrimalCharacter.PlayLandedAnim"); } + void PlayShieldHitResponse(bool bUseHitParticles) { NativeCall(this, "APrimalCharacter.PlayShieldHitResponse", bUseHitParticles); } + void PlayStaggerAnim() { NativeCall(this, "APrimalCharacter.PlayStaggerAnim"); } + FString* PlayerCommand_Implementation(FString* result, FString* TheCommand) { return NativeCall(this, "APrimalCharacter.PlayerCommand_Implementation", result, TheCommand); } + void Poop(bool bForcePoop) { NativeCall(this, "APrimalCharacter.Poop", bForcePoop); } + void PossessedBy(AController* NewController) { NativeCall(this, "APrimalCharacter.PossessedBy", NewController); } + void PostInitializeComponents() { NativeCall(this, "APrimalCharacter.PostInitializeComponents"); } + void PostNetReceiveVelocity(FVector* NewVelocity) { NativeCall(this, "APrimalCharacter.PostNetReceiveVelocity", NewVelocity); } + void PreInitializeComponents() { NativeCall(this, "APrimalCharacter.PreInitializeComponents"); } + void PrepareForSaving() { NativeCall(this, "APrimalCharacter.PrepareForSaving"); } + bool PreventInputDoesOffset() { return NativeCall(this, "APrimalCharacter.PreventInputDoesOffset"); } + bool PreventInputType(EPrimalCharacterInputType::Type inputType) { return NativeCall(this, "APrimalCharacter.PreventInputType", inputType); } + bool PreventsTargeting_Implementation(AActor* ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting_Implementation", ByActor); } + bool ProcessInputAndStartFire(bool bFromGamepadRight, EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "APrimalCharacter.ProcessInputAndStartFire", bFromGamepadRight, AttackInput); } + bool ProcessInputAndStopFire(bool bFromGamepadRight, EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "APrimalCharacter.ProcessInputAndStopFire", bFromGamepadRight, AttackInput); } + void ProcessStaggerForDefender(AActor* DamageCauser, int AttackerAttackIndex, int DefenderAttackIndex, bool bWasAttackBlocked) { NativeCall(this, "APrimalCharacter.ProcessStaggerForDefender", DamageCauser, AttackerAttackIndex, DefenderAttackIndex, bWasAttackBlocked); } + void Prone(bool bClientSimulation) { NativeCall(this, "APrimalCharacter.Prone", bClientSimulation); } + bool RaiseShield(EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "APrimalCharacter.RaiseShield", AttackInput); } + void RefreshBiomeZoneVolumes() { NativeCall(this, "APrimalCharacter.RefreshBiomeZoneVolumes"); } + void RefreshEquippedItemStatGroupModifiers() { NativeCall(this, "APrimalCharacter.RefreshEquippedItemStatGroupModifiers"); } + void RefreshMyIslandInfo() { NativeCall(this, "APrimalCharacter.RefreshMyIslandInfo"); } + void ReleaseSeatingStructure(APrimalStructureSeating* InSeatingStructure) { NativeCall(this, "APrimalCharacter.ReleaseSeatingStructure", InSeatingStructure); } + void ReleasedRunToggle() { NativeCall(this, "APrimalCharacter.ReleasedRunToggle"); } + void RemoveAllJumpDeactivatedBuffs(APrimalBuff* IgnoredBuff) { NativeCall(this, "APrimalCharacter.RemoveAllJumpDeactivatedBuffs", IgnoredBuff); } + void RemoveCharacterSnapshot(UPrimalItem* Item, AActor* From) { NativeCall(this, "APrimalCharacter.RemoveCharacterSnapshot", Item, From); } + void ReplicateRagdoll() { NativeCall(this, "APrimalCharacter.ReplicateRagdoll"); } + void ResetCollisionSweepLocation(FVector* newLocation) { NativeCall(this, "APrimalCharacter.ResetCollisionSweepLocation", newLocation); } + void ServerDinoOrder_Implementation(APrimalDinoCharacter* aDino, EDinoTamedOrder::Type OrderType, AActor* enemyTarget) { NativeCall(this, "APrimalCharacter.ServerDinoOrder_Implementation", aDino, OrderType, enemyTarget); } + void ServerPlayFireBallistaAnimation_Implementation() { NativeCall(this, "APrimalCharacter.ServerPlayFireBallistaAnimation_Implementation"); } + void ServerPrepareForSeamlessTravel_Implementation() { NativeCall(this, "APrimalCharacter.ServerPrepareForSeamlessTravel_Implementation"); } + void ServerSeatingStructureAction_Implementation(char ActionNumber) { NativeCall(this, "APrimalCharacter.ServerSeatingStructureAction_Implementation", ActionNumber); } + void ServerSetRunning_Implementation(bool bNewRunning) { NativeCall(this, "APrimalCharacter.ServerSetRunning_Implementation", bNewRunning); } + void ServerSetTargeting_Implementation(bool bNewTargeting, bool bForceForShield, bool bSkipShieldAnim) { NativeCall(this, "APrimalCharacter.ServerSetTargeting_Implementation", bNewTargeting, bForceForShield, bSkipShieldAnim); } + void ServerToClientsPlayFireBallistaAnimation_Implementation() { NativeCall(this, "APrimalCharacter.ServerToClientsPlayFireBallistaAnimation_Implementation"); } + void ServerTryPoop_Implementation() { NativeCall(this, "APrimalCharacter.ServerTryPoop_Implementation"); } + void SetBase(UPrimitiveComponent* NewBaseComponent, FName BoneName, bool bNotifyPawn) { NativeCall(this, "APrimalCharacter.SetBase", NewBaseComponent, BoneName, bNotifyPawn); } + void SetBasedOntoRaft(APrimalDinoCharacter* theDino) { NativeCall(this, "APrimalCharacter.SetBasedOntoRaft", theDino); } + void SetBoundsScale(float NewScale) { NativeCall(this, "APrimalCharacter.SetBoundsScale", NewScale); } + void SetCharacterMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "APrimalCharacter.SetCharacterMeshesMaterialScalarParamValue", ParamName, Value); } + void SetDeath(bool bForceRagdoll) { NativeCall(this, "APrimalCharacter.SetDeath", bForceRagdoll); } + void SetDynamicMusic(USoundBase* newMusic) { NativeCall(this, "APrimalCharacter.SetDynamicMusic", newMusic); } + void SetEnableIK(bool bEnable, bool bForceOnDedicated) { NativeCall(this, "APrimalCharacter.SetEnableIK", bEnable, bForceOnDedicated); } + float SetHealth(float newHealth) { return NativeCall(this, "APrimalCharacter.SetHealth", newHealth); } + void SetRagdollReplication(bool Enabled) { NativeCall(this, "APrimalCharacter.SetRagdollReplication", Enabled); } + void SetRunning(bool bNewRunning) { NativeCall(this, "APrimalCharacter.SetRunning", bNewRunning); } + void SetShieldState(bool bLowerShield, bool bSkipShieldAnim) { NativeCall(this, "APrimalCharacter.SetShieldState", bLowerShield, bSkipShieldAnim); } + void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "APrimalCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } + void SetTargeting(bool bNewTargeting, bool bForceForShield, bool bSkipShieldAnim) { NativeCall(this, "APrimalCharacter.SetTargeting", bNewTargeting, bForceForShield, bSkipShieldAnim); } + bool ShouldAttackStopMoveCollapsing() { return NativeCall(this, "APrimalCharacter.ShouldAttackStopMoveCollapsing"); } + bool ShouldUseWaveLocking(bool bForceCheck) { return NativeCall(this, "APrimalCharacter.ShouldUseWaveLocking", bForceCheck); } + bool SimulatedPreventBasedPhysics() { return NativeCall(this, "APrimalCharacter.SimulatedPreventBasedPhysics"); } + void SleepBodies() { NativeCall(this, "APrimalCharacter.SleepBodies"); } + TArray* SortActorsByRelativeYaw(TArray* result, TArray* actors) { return NativeCall*, TArray*, TArray*>(this, "APrimalCharacter.SortActorsByRelativeYaw", result, actors); } + void StartForceSkelUpdate(float ForTime, bool bForceUpdateMesh, bool bServerOnly) { NativeCall(this, "APrimalCharacter.StartForceSkelUpdate", ForTime, bForceUpdateMesh, bServerOnly); } + void StartHitStaggering(float staggeringTime) { NativeCall(this, "APrimalCharacter.StartHitStaggering", staggeringTime); } + void StartStaggering(float staggeringTime, float PlayStaggerAnimAfterDelay, bool bPlayStaggerAnim) { NativeCall(this, "APrimalCharacter.StartStaggering", staggeringTime, PlayStaggerAnimAfterDelay, bPlayStaggerAnim); } + void StartedFiringWeapon(bool bPrimaryFire) { NativeCall(this, "APrimalCharacter.StartedFiringWeapon", bPrimaryFire); } + void Stasis() { NativeCall(this, "APrimalCharacter.Stasis"); } + static void StaticRemoveCharacterSnapshot(UPrimalItem* Item, AActor* From) { NativeCall(nullptr, "APrimalCharacter.StaticRemoveCharacterSnapshot", Item, From); } + void StopAllAnimMontages(float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAllAnimMontages", BlendOutTime); } + void StopAnimEx(UAnimMontage* AnimMontage, bool bReplicate, bool bReplicateToOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAnimEx", AnimMontage, bReplicate, bReplicateToOwner, BlendOutTime); } + void StopAnimExFPV(UAnimMontage* AnimMontage, bool bReplicate, bool bReplicateToOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.StopAnimExFPV", AnimMontage, bReplicate, bReplicateToOwner, BlendOutTime); } + void StopAnimMontage(UAnimMontage* AnimMontage) { NativeCall(this, "APrimalCharacter.StopAnimMontage", AnimMontage); } + void StopHitStaggering() { NativeCall(this, "APrimalCharacter.StopHitStaggering"); } + void StopStaggering() { NativeCall(this, "APrimalCharacter.StopStaggering"); } + void Suicide() { NativeCall(this, "APrimalCharacter.Suicide"); } + void TagFriendlyStructures() { NativeCall(this, "APrimalCharacter.TagFriendlyStructures"); } + float TakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APrimalCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void TakeFallingDamage(FHitResult* Hit) { NativeCall(this, "APrimalCharacter.TakeFallingDamage", Hit); } + void TakeSeatingStructure(APrimalStructureSeating* InSeatingStructure, int SeatNumber, bool bLockedToSeat) { NativeCall(this, "APrimalCharacter.TakeSeatingStructure", InSeatingStructure, SeatNumber, bLockedToSeat); } + void TeleportSucceeded(bool bIsATest, bool bSimpleTeleport) { NativeCall(this, "APrimalCharacter.TeleportSucceeded", bIsATest, bSimpleTeleport); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "APrimalCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + void TeleportToTargetLocation(FVector AtLocation, APrimalRaft* OnRaft) { NativeCall(this, "APrimalCharacter.TeleportToTargetLocation", AtLocation, OnRaft); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalCharacter.Tick", DeltaSeconds); } + void TickMovementComponent(float DeltaTime) { NativeCall(this, "APrimalCharacter.TickMovementComponent", DeltaTime); } + void TogglePerspective() { NativeCall(this, "APrimalCharacter.TogglePerspective"); } + bool TraceForOpenTeleportLocation(FVector AtFloorLocation, FVector* OpenLocation, APrimalDinoCharacter* OnDino, bool bSnapToGround, float GroundCheckDistance) { return NativeCall(this, "APrimalCharacter.TraceForOpenTeleportLocation", AtFloorLocation, OpenLocation, OnDino, bSnapToGround, GroundCheckDistance); } + bool TryAccessInventory() { return NativeCall(this, "APrimalCharacter.TryAccessInventory"); } + void TryAccessInventoryWrapper() { NativeCall(this, "APrimalCharacter.TryAccessInventoryWrapper"); } + void TryCallAttackTarget() { NativeCall(this, "APrimalCharacter.TryCallAttackTarget"); } + void TryCallFollowDistanceCycleOne() { NativeCall(this, "APrimalCharacter.TryCallFollowDistanceCycleOne"); } + void TryCallFollowOne() { NativeCall(this, "APrimalCharacter.TryCallFollowOne"); } + void TryCallMoveTo() { NativeCall(this, "APrimalCharacter.TryCallMoveTo"); } + void TryCallStayOne() { NativeCall(this, "APrimalCharacter.TryCallStayOne"); } + void TryCutEnemyGrapplingCable() { NativeCall(this, "APrimalCharacter.TryCutEnemyGrapplingCable"); } + void TryDragCharacter(APrimalCharacter* Character) { NativeCall(this, "APrimalCharacter.TryDragCharacter", Character); } + void TryGiveDefaultWeapon() { NativeCall(this, "APrimalCharacter.TryGiveDefaultWeapon"); } + bool TryLandingOnRaft(APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.TryLandingOnRaft", ForPC); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalCharacter.TryMultiUse", ForPC, UseIndex); } + void TryPoop() { NativeCall(this, "APrimalCharacter.TryPoop"); } + bool TryTeleportToBasedShipDeck(const int* ToDeckIndex, APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.TryTeleportToBasedShipDeck", ToDeckIndex, ForPC); } + bool TryTeleportToTargetLocation(APrimalRaft* OnRaft, FVector TargetLocation, APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.TryTeleportToTargetLocation", OnRaft, TargetLocation, ForPC); } + void TurnAtRate(float Val) { NativeCall(this, "APrimalCharacter.TurnAtRate", Val); } + void TurnInput(float Val) { NativeCall(this, "APrimalCharacter.TurnInput", Val); } + void UnPossessed() { NativeCall(this, "APrimalCharacter.UnPossessed"); } + void UnProne(bool bClientSimulation) { NativeCall(this, "APrimalCharacter.UnProne", bClientSimulation); } + void UnequipPrimalItemSideWeapon(bool bIsPrimaryWeapon, bool bIsSwitch) { NativeCall(this, "APrimalCharacter.UnequipPrimalItemSideWeapon", bIsPrimaryWeapon, bIsSwitch); } + void UnmarkAbortedForSeamlessTravel() { NativeCall(this, "APrimalCharacter.UnmarkAbortedForSeamlessTravel"); } + void Unstasis() { NativeCall(this, "APrimalCharacter.Unstasis"); } + void UpdateBasedOnRaft() { NativeCall(this, "APrimalCharacter.UpdateBasedOnRaft"); } + void UpdateBasedOnRaftInventory(float DeltaSeconds) { NativeCall(this, "APrimalCharacter.UpdateBasedOnRaftInventory", DeltaSeconds); } + void UpdateDragging() { NativeCall(this, "APrimalCharacter.UpdateDragging"); } + void UpdateIK() { NativeCall(this, "APrimalCharacter.UpdateIK"); } + void UpdateNetDynamicMusic() { NativeCall(this, "APrimalCharacter.UpdateNetDynamicMusic"); } + void UpdateRunSounds(bool bNewRunning) { NativeCall(this, "APrimalCharacter.UpdateRunSounds", bNewRunning); } + void UpdateSimulatedPosition(FVector* NewLocation, FRotator* NewRotation) { NativeCall(this, "APrimalCharacter.UpdateSimulatedPosition", NewLocation, NewRotation); } + void UpdateStatusComponent(float DeltaSeconds) { NativeCall(this, "APrimalCharacter.UpdateStatusComponent", DeltaSeconds); } + void UpdateStencilValues() { NativeCall(this, "APrimalCharacter.UpdateStencilValues"); } + void UpdateSwimmingState() { NativeCall(this, "APrimalCharacter.UpdateSwimmingState"); } + void UpdateTribeName(FString NewTribeName) { NativeCall(this, "APrimalCharacter.UpdateTribeName", NewTribeName); } + void UpdateWindedState() { NativeCall(this, "APrimalCharacter.UpdateWindedState"); } + bool UseClearOnConsumeInput() { return NativeCall(this, "APrimalCharacter.UseClearOnConsumeInput"); } + bool UseFastTurretTargeting() { return NativeCall(this, "APrimalCharacter.UseFastTurretTargeting"); } + void ValidatePaintingComponentOctree() { NativeCall(this, "APrimalCharacter.ValidatePaintingComponentOctree"); } + void WeaponClampRotation_Implementation(FRotator* InputRot, FRotator CurrentRot, float InputDeltaTime) { NativeCall(this, "APrimalCharacter.WeaponClampRotation_Implementation", InputRot, CurrentRot, InputDeltaTime); } + void ZoomIn() { NativeCall(this, "APrimalCharacter.ZoomIn"); } + void ZoomOut() { NativeCall(this, "APrimalCharacter.ZoomOut"); } + void ClientHandleNetDestroy() { NativeCall(this, "APrimalCharacter.ClientHandleNetDestroy"); } + bool CanDie(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "APrimalCharacter.CanDie", KillingDamage, DamageEvent, Killer, DamageCauser); } + bool AllowBlockingWithShield() { return NativeCall(this, "APrimalCharacter.AllowBlockingWithShield"); } + void BPAddedAttachmentsForItem(UPrimalItem* anItem) { NativeCall(this, "APrimalCharacter.BPAddedAttachmentsForItem", anItem); } + float BPAdjustDamage(float IncomingDamage, FDamageEvent TheDamageEvent, AController* EventInstigator, AActor* DamageCauser, bool bIsPointDamage, FHitResult PointHitInfo) { return NativeCall(this, "APrimalCharacter.BPAdjustDamage", IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser, bIsPointDamage, PointHitInfo); } + FRotator* BPCameraBaseOrientation(FRotator* result, APrimalCharacter* viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPCameraBaseOrientation", result, viewingCharacter); } + FRotator* BPCameraRotationFinal(FRotator* result, APrimalCharacter* viewingCharacter, FRotator* InCurrentFinalRot) { return NativeCall(this, "APrimalCharacter.BPCameraRotationFinal", result, viewingCharacter, InCurrentFinalRot); } + bool BPCanNotifyTeamAggroAI(APrimalDinoCharacter* Dino) { return NativeCall(this, "APrimalCharacter.BPCanNotifyTeamAggroAI", Dino); } + bool BPCanStagger() { return NativeCall(this, "APrimalCharacter.BPCanStagger"); } + void BPCharacterDetach() { NativeCall(this, "APrimalCharacter.BPCharacterDetach"); } + void BPCharacterSleeped() { NativeCall(this, "APrimalCharacter.BPCharacterSleeped"); } + void BPCharacterUnsleeped() { NativeCall(this, "APrimalCharacter.BPCharacterUnsleeped"); } + float BPGetAddForwardVelocityOnJump() { return NativeCall(this, "APrimalCharacter.BPGetAddForwardVelocityOnJump"); } + float BPGetExtraMeleeDamageModifier() { return NativeCall(this, "APrimalCharacter.BPGetExtraMeleeDamageModifier"); } + FVector* BPGetFPVViewLocation(FVector* result, APrimalCharacter* viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPGetFPVViewLocation", result, viewingCharacter); } + float BPGetGravityZScale() { return NativeCall(this, "APrimalCharacter.BPGetGravityZScale"); } + float BPGetHUDOverrideBuffProgressBarPercent() { return NativeCall(this, "APrimalCharacter.BPGetHUDOverrideBuffProgressBarPercent"); } + bool BPHandlePoop() { return NativeCall(this, "APrimalCharacter.BPHandlePoop"); } + bool BPHandleRightShoulderButton() { return NativeCall(this, "APrimalCharacter.BPHandleRightShoulderButton"); } + void BPInventoryItemRepairedOrBroken(UPrimalItem* TheItem, bool bIsBroken) { NativeCall(this, "APrimalCharacter.BPInventoryItemRepairedOrBroken", TheItem, bIsBroken); } + FRotator* BPLimitPlayerRotation(FRotator* result, APrimalCharacter* viewingCharacter, FRotator InViewRotation) { return NativeCall(this, "APrimalCharacter.BPLimitPlayerRotation", result, viewingCharacter, InViewRotation); } + FVector* BPModifyForwardDirectionInput(FVector* result, FVector* directionInput) { return NativeCall(this, "APrimalCharacter.BPModifyForwardDirectionInput", result, directionInput); } + float BPModifyViewHitDir(APrimalCharacter* viewingCharacter, float InViewHitDir) { return NativeCall(this, "APrimalCharacter.BPModifyViewHitDir", viewingCharacter, InViewHitDir); } + void BPNotifyBumpedByPawn(APrimalCharacter* ByPawn) { NativeCall(this, "APrimalCharacter.BPNotifyBumpedByPawn", ByPawn); } + void BPNotifyBumpedPawn(APrimalCharacter* BumpedPawn) { NativeCall(this, "APrimalCharacter.BPNotifyBumpedPawn", BumpedPawn); } + void BPNotifyDroppedItemPickedUp(ADroppedItem* itemPickedUp, APrimalCharacter* PickedUpBy) { NativeCall(this, "APrimalCharacter.BPNotifyDroppedItemPickedUp", itemPickedUp, PickedUpBy); } + void BPNotifyLevelUp(int ExtraCharacterLevel, EPrimalCharacterStatusValue::Type StatType) { NativeCall(this, "APrimalCharacter.BPNotifyLevelUp", ExtraCharacterLevel, StatType); } + void BPOnAnimPlayedNotify(UAnimMontage* AnimMontage, float InPlayRate, FName StartSectionName, bool bReplicate, bool bReplicateToOwner, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer) { NativeCall(this, "APrimalCharacter.BPOnAnimPlayedNotify", AnimMontage, InPlayRate, StartSectionName, bReplicate, bReplicateToOwner, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer); } + void BPOnMovementModeChangedNotify() { NativeCall(this, "APrimalCharacter.BPOnMovementModeChangedNotify"); } + void BPOnWeaponEquipped() { NativeCall(this, "APrimalCharacter.BPOnWeaponEquipped"); } + void BPOnWeaponStartedAttack(int weaponAttackIndex, bool useAltAnim) { NativeCall(this, "APrimalCharacter.BPOnWeaponStartedAttack", weaponAttackIndex, useAltAnim); } + FVector* BPOverrideCharacterNewFallVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, float DeltaTime) { return NativeCall(this, "APrimalCharacter.BPOverrideCharacterNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } + bool BPOverrideFPVViewLocation(APrimalCharacter* viewingCharacter) { return NativeCall(this, "APrimalCharacter.BPOverrideFPVViewLocation", viewingCharacter); } + bool BPPreventInputType(EPrimalCharacterInputType::Type inputType) { return NativeCall(this, "APrimalCharacter.BPPreventInputType", inputType); } + bool BPPreventStasis() { return NativeCall(this, "APrimalCharacter.BPPreventStasis"); } + void BPRemoveCharacterSnapshot(UPrimalItem* Item, AActor* From) { NativeCall(this, "APrimalCharacter.BPRemoveCharacterSnapshot", Item, From); } + bool BPShouldLimitForwardDirection() { return NativeCall(this, "APrimalCharacter.BPShouldLimitForwardDirection"); } + void BPTimerNonDedicated() { NativeCall(this, "APrimalCharacter.BPTimerNonDedicated"); } + void BPTimerServer() { NativeCall(this, "APrimalCharacter.BPTimerServer"); } + bool BP_CanTeleportOntoRaft(APrimalRaft* OnRaft, APlayerController* ForPC) { return NativeCall(this, "APrimalCharacter.BP_CanTeleportOntoRaft", OnRaft, ForPC); } + APrimalRaft* BP_FindClosestTeleportRaft(APlayerController* ForPC, UPrimitiveComponent* BasedOn) { return NativeCall(this, "APrimalCharacter.BP_FindClosestTeleportRaft", ForPC, BasedOn); } + bool BP_ForceAllowAddBuffOfClass(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalCharacter.BP_ForceAllowAddBuffOfClass", BuffClass); } + bool BP_IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "APrimalCharacter.BP_IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } + void BP_OnIgnoredMoveToOrder(APlayerController* FromPC) { NativeCall(this, "APrimalCharacter.BP_OnIgnoredMoveToOrder", FromPC); } + void BP_OnJumpPressed() { NativeCall(this, "APrimalCharacter.BP_OnJumpPressed"); } + void BP_OnJumpReleased() { NativeCall(this, "APrimalCharacter.BP_OnJumpReleased"); } + void BP_OnSetDeath() { NativeCall(this, "APrimalCharacter.BP_OnSetDeath"); } + void BP_OnSetRunning(bool bNewIsRunning) { NativeCall(this, "APrimalCharacter.BP_OnSetRunning", bNewIsRunning); } + void BP_OnTeleportOntoRaft(APrimalRaft* OntoRaft) { NativeCall(this, "APrimalCharacter.BP_OnTeleportOntoRaft", OntoRaft); } + void BP_OnZoomIn() { NativeCall(this, "APrimalCharacter.BP_OnZoomIn"); } + void BP_OnZoomOut() { NativeCall(this, "APrimalCharacter.BP_OnZoomOut"); } + void ChangedAnimationBlueprint() { NativeCall(this, "APrimalCharacter.ChangedAnimationBlueprint"); } + void ClientDidPoop() { NativeCall(this, "APrimalCharacter.ClientDidPoop"); } + void ClientEndRagdollUpdate() { NativeCall(this, "APrimalCharacter.ClientEndRagdollUpdate"); } + void ClientFailedPoop() { NativeCall(this, "APrimalCharacter.ClientFailedPoop"); } + void ClientNotifyLevelUp() { NativeCall(this, "APrimalCharacter.ClientNotifyLevelUp"); } + void ClientPlayAnimation(UAnimMontage* AnimMontage, float PlayRate, FName StartSectionName, bool bPlayOnOwner, bool bForceTickPoseAndServerUpdateMesh) { NativeCall(this, "APrimalCharacter.ClientPlayAnimation", AnimMontage, PlayRate, StartSectionName, bPlayOnOwner, bForceTickPoseAndServerUpdateMesh); } + void ClientRagdollUpdate(TArray* BoneLocations, FRotator_NetQuantize TargetRootRotation) { NativeCall*, FRotator_NetQuantize>(this, "APrimalCharacter.ClientRagdollUpdate", BoneLocations, TargetRootRotation); } + void ClientStopAnimation(UAnimMontage* AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimation", AnimMontage, bStopOnOwner, BlendOutTime); } + void ClientStopAnimationFPV(UAnimMontage* AnimMontage, bool bStopOnOwner, float BlendOutTime) { NativeCall(this, "APrimalCharacter.ClientStopAnimationFPV", AnimMontage, bStopOnOwner, BlendOutTime); } + void DeathHarvestingFadeOut() { NativeCall(this, "APrimalCharacter.DeathHarvestingFadeOut"); } + void DidTeleport(FVector newLoc, FRotator newRot) { NativeCall(this, "APrimalCharacter.DidTeleport", newLoc, newRot); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalCharacter.GetPrivateStaticClass", Package); } + bool GiveKillExperience() { return NativeCall(this, "APrimalCharacter.GiveKillExperience"); } + void LocalUnpossessed() { NativeCall(this, "APrimalCharacter.LocalUnpossessed"); } + void NetAddCharacterMovementImpulse(FVector Impulse, bool bVelChange, float ImpulseExponent, bool bSetNewMovementMode, EMovementMode NewMovementMode, bool bOverrideMaxImpulseZ) { NativeCall(this, "APrimalCharacter.NetAddCharacterMovementImpulse", Impulse, bVelChange, ImpulseExponent, bSetNewMovementMode, NewMovementMode, bOverrideMaxImpulseZ); } + void NetDidLand() { NativeCall(this, "APrimalCharacter.NetDidLand"); } + void NetOnJumped() { NativeCall(this, "APrimalCharacter.NetOnJumped"); } + void NetPlaySoundOnCharacter(USoundBase* SoundToPlay, bool bPlayOnOwner) { NativeCall(this, "APrimalCharacter.NetPlaySoundOnCharacter", SoundToPlay, bPlayOnOwner); } + void NetReleaseSeatingStructure() { NativeCall(this, "APrimalCharacter.NetReleaseSeatingStructure"); } + void NetSetCharacterMovementVelocity(bool bSetNewVelocity, FVector NewVelocity, bool bSetNewMovementMode, EMovementMode NewMovementMode) { NativeCall(this, "APrimalCharacter.NetSetCharacterMovementVelocity", bSetNewVelocity, NewVelocity, bSetNewMovementMode, NewMovementMode); } + void NetStopAllAnimMontage() { NativeCall(this, "APrimalCharacter.NetStopAllAnimMontage"); } + void NetUpdateTribeName(FString* NewTribeName) { NativeCall(this, "APrimalCharacter.NetUpdateTribeName", NewTribeName); } + void Net_OnIsStaggering(bool bNewStaggering, float PlayAnimAfterDelay, bool bPlayStaggerAnim) { NativeCall(this, "APrimalCharacter.Net_OnIsStaggering", bNewStaggering, PlayAnimAfterDelay, bPlayStaggerAnim); } + void OnActorEnterWater(USceneComponent* Component, FVector OverlapLocation, FVector OverlapVelocity) { NativeCall(this, "APrimalCharacter.OnActorEnterWater", Component, OverlapLocation, OverlapVelocity); } + void OnActorExitWater(USceneComponent* Component, FVector OverlapLocation, FVector OverlapVelocity) { NativeCall(this, "APrimalCharacter.OnActorExitWater", Component, OverlapLocation, OverlapVelocity); } + void OnBeginDrag(APrimalCharacter* Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "APrimalCharacter.OnBeginDrag", Dragged, BoneIndex, bWithGrapHook); } + void OnEndDrag() { NativeCall(this, "APrimalCharacter.OnEndDrag"); } + void PlayDyingGeneric(float KillingDamage, FDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingGeneric", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingPoint(float KillingDamage, FPointDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingPoint", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial(float KillingDamage, FRadialDamageEvent DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayDyingRadial", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffectPoint(float DamageTaken, FPointDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectPoint", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial(float DamageTaken, FRadialDamageEvent DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalCharacter.PlayHitEffectRadial", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + FString* PlayerCommand(FString* result, FString* TheCommand) { return NativeCall(this, "APrimalCharacter.PlayerCommand", result, TheCommand); } + bool PreventsTargeting(AActor* ByActor) { return NativeCall(this, "APrimalCharacter.PreventsTargeting", ByActor); } + void ServerCallAggressive() { NativeCall(this, "APrimalCharacter.ServerCallAggressive"); } + void ServerCallAttackTarget(AActor* TheTarget) { NativeCall(this, "APrimalCharacter.ServerCallAttackTarget", TheTarget); } + void ServerCallFollow() { NativeCall(this, "APrimalCharacter.ServerCallFollow"); } + void ServerCallFollowDistanceCycleOne(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallFollowDistanceCycleOne", ForDinoChar); } + void ServerCallFollowOne(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallFollowOne", ForDinoChar); } + void ServerCallMoveTo(FVector MoveToLoc, AActor* TargetActor) { NativeCall(this, "APrimalCharacter.ServerCallMoveTo", MoveToLoc, TargetActor); } + void ServerCallMoveToRaft(FVector MoveToRelLoc, APrimalRaft* TargetRaft, int ToDeckIndex) { NativeCall(this, "APrimalCharacter.ServerCallMoveToRaft", MoveToRelLoc, TargetRaft, ToDeckIndex); } + void ServerCallNeutral() { NativeCall(this, "APrimalCharacter.ServerCallNeutral"); } + void ServerCallPassive() { NativeCall(this, "APrimalCharacter.ServerCallPassive"); } + void ServerCallSetAggressive() { NativeCall(this, "APrimalCharacter.ServerCallSetAggressive"); } + void ServerCallStay() { NativeCall(this, "APrimalCharacter.ServerCallStay"); } + void ServerCallStayOne(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalCharacter.ServerCallStayOne", ForDinoChar); } + void ServerDinoOrder(APrimalDinoCharacter* aDino, EDinoTamedOrder::Type OrderType, AActor* target) { NativeCall(this, "APrimalCharacter.ServerDinoOrder", aDino, OrderType, target); } + void ServerGiveDefaultWeapon(bool bOnlyGiveDefaultWeapon) { NativeCall(this, "APrimalCharacter.ServerGiveDefaultWeapon", bOnlyGiveDefaultWeapon); } + void ServerPlayFireBallistaAnimation() { NativeCall(this, "APrimalCharacter.ServerPlayFireBallistaAnimation"); } + void ServerSetRunning(bool bNewRunning) { NativeCall(this, "APrimalCharacter.ServerSetRunning", bNewRunning); } + void ServerSetTargeting(bool bNewTargeting, bool bForceForShield, bool bSkipShieldAnim) { NativeCall(this, "APrimalCharacter.ServerSetTargeting", bNewTargeting, bForceForShield, bSkipShieldAnim); } + void ServerToClientsPlayFireBallistaAnimation() { NativeCall(this, "APrimalCharacter.ServerToClientsPlayFireBallistaAnimation"); } + void ServerTryPoop() { NativeCall(this, "APrimalCharacter.ServerTryPoop"); } + static void StaticRegisterNativesAPrimalCharacter() { NativeCall(nullptr, "APrimalCharacter.StaticRegisterNativesAPrimalCharacter"); } + void WeaponClampRotation(FRotator* InputRot, FRotator CurrentRot, float InputDeltaTime) { NativeCall(this, "APrimalCharacter.WeaponClampRotation", InputRot, CurrentRot, InputDeltaTime); } + FRotator* GetAimOffsets(FRotator* result, float DeltaTime, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset) { return NativeCall(this, "APrimalCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } +}; + +struct AShooterCharacter : APrimalCharacter +{ + TArray& ClientTranspondersInfoField() { return *GetNativePointerField*>(this, "AShooterCharacter.ClientTranspondersInfo"); } + FItemNetID& PreviousWeaponToReloadAllField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousWeaponToReloadAll"); } + TArray& WeaponsToReloadAllField() { return *GetNativePointerField*>(this, "AShooterCharacter.WeaponsToReloadAll"); } + long double& ReloadLastAttemptedWeaponSwitchTimeField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadLastAttemptedWeaponSwitchTime"); } + long double& ReloadLastAttemptedWeaponReloadTimeField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadLastAttemptedWeaponReloadTime"); } + UAnimMontage* SpawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnIntroAnim1P"); } + UAnimMontage* RespawnIntroAnim1PField() { return *GetNativePointerField(this, "AShooterCharacter.RespawnIntroAnim1P"); } + UAnimMontage* ProneInAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneInAnim"); } + UAnimMontage* ProneOutAnimField() { return *GetNativePointerField(this, "AShooterCharacter.ProneOutAnim"); } + UAnimMontage* StartRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StartRidingAnim"); } + UAnimMontage* StopRidingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.StopRidingAnim"); } + UAnimMontage* TalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.TalkingAnim"); } + UAnimMontage* VoiceTalkingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceTalkingAnim"); } + UAnimMontage* VoiceYellingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceYellingAnim"); } + TArray EmoteAnimsField() { return *GetNativePointerField*>(this, "AShooterCharacter.EmoteAnims"); } + UAnimMontage* ReloadBallistaAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadBallistaAnimation"); } + UAnimMontage* DraggingCharacterAnimField() { return *GetNativePointerField(this, "AShooterCharacter.DraggingCharacterAnim"); } + FString& VivoxUsernameField() { return *GetNativePointerField(this, "AShooterCharacter.VivoxUsername"); } + unsigned int& CurrentVoiceModeAsUInt32Field() { return *GetNativePointerField(this, "AShooterCharacter.CurrentVoiceModeAsUInt32"); } + unsigned int& VoiceModeForCullingTestsField() { return *GetNativePointerField(this, "AShooterCharacter.VoiceModeForCullingTests"); } + bool& bIsActivelyTalkingField() { return *GetNativePointerField(this, "AShooterCharacter.bIsActivelyTalking"); } + bool& bClientIgnoreCurrentVoiceModeReplicationsField() { return *GetNativePointerField(this, "AShooterCharacter.bClientIgnoreCurrentVoiceModeReplications"); } + bool& bWasAlreadyYellingField() { return *GetNativePointerField(this, "AShooterCharacter.bWasAlreadyYelling"); } + bool& bWasProneField() { return *GetNativePointerField(this, "AShooterCharacter.bWasProne"); } + bool& bIsPreviewCharacterField() { return *GetNativePointerField(this, "AShooterCharacter.bIsPreviewCharacter"); } + long double& LastStartedTalkingTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastStartedTalkingTime"); } + long double& DontTargetUntilTimeField() { return *GetNativePointerField(this, "AShooterCharacter.DontTargetUntilTime"); } + float& OriginalCollisionHeightField() { return *GetNativePointerField(this, "AShooterCharacter.OriginalCollisionHeight"); } + float& WalkBobMagnitudeField() { return *GetNativePointerField(this, "AShooterCharacter.WalkBobMagnitude"); } + float& WalkBobInterpSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WalkBobInterpSpeed"); } + float& bBendArmLengthFactorField() { return *GetNativePointerField(this, "AShooterCharacter.bBendArmLengthFactor"); } + float& BendMinAngleField() { return *GetNativePointerField(this, "AShooterCharacter.BendMinAngle"); } + float& BendMaxAngleField() { return *GetNativePointerField(this, "AShooterCharacter.BendMaxAngle"); } + float& BobMaxMovementSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.BobMaxMovementSpeed"); } + float& WeaponBobMaxMovementSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobMaxMovementSpeed"); } + TSubclassOf& MapWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.MapWeapon"); } + TSubclassOf& GPSWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.GPSWeapon"); } + TSubclassOf& CompassWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.CompassWeapon"); } + FString& PlayerNameField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerName"); } + TArray& LowerBodyPartRootBonesField() { return *GetNativePointerField*>(this, "AShooterCharacter.LowerBodyPartRootBones"); } + UAnimMontage* DropItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DropItemAnimation"); } + UAnimMontage* ThrowItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowItemAnimation"); } + UAnimMontage* PickupItemAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.PickupItemAnimation"); } + UAnimMontage* ActivateInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ActivateInventoryAnimation"); } + FRotator& LastDinoAimRotationOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.LastDinoAimRotationOffset"); } + FRotator& LastAimRotOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.LastAimRotOffset"); } + UAudioComponent* LastGrapHookACField() { return *GetNativePointerField(this, "AShooterCharacter.LastGrapHookAC"); } + int& _GrapHookCableObjectCountField() { return *GetNativePointerField(this, "AShooterCharacter._GrapHookCableObjectCount"); } + FVector& GrapHookDefaultOffsetField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookDefaultOffset"); } + float& GrapHookCableWidthField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookCableWidth"); } + UMaterialInterface* GrapHookMaterialField() { return *GetNativePointerField(this, "AShooterCharacter.GrapHookMaterial"); } + float& LadderLateralJumpVelocityField() { return *GetNativePointerField(this, "AShooterCharacter.LadderLateralJumpVelocity"); } + FString& PlatformProfileNameField() { return *GetNativePointerField(this, "AShooterCharacter.PlatformProfileName"); } + FUniqueNetIdRepl& PlatformProfileIDField() { return *GetNativePointerField(this, "AShooterCharacter.PlatformProfileID"); } + UAudioComponent* CharacterStatusStateSoundComponentField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterStatusStateSoundComponent"); } + long double& LastUncrouchTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUncrouchTime"); } + long double& LastUnproneTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUnproneTime"); } + float& CurrentWeaponBobSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentWeaponBobSpeed"); } + float& WalkBobOldSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WalkBobOldSpeed"); } + float& AppliedBobField() { return *GetNativePointerField(this, "AShooterCharacter.AppliedBob"); } + float& BobTimeField() { return *GetNativePointerField(this, "AShooterCharacter.BobTime"); } + long double& LastPressReloadTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastPressReloadTime"); } + float& TargetingSpeedModifierField() { return *GetNativePointerField(this, "AShooterCharacter.TargetingSpeedModifier"); } + float& LowHealthSoundPercentageField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthSoundPercentage"); } + USoundCue* LowHealthSoundField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthSound"); } + UAnimMontage* CallFollowAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnim"); } + UAnimMontage* CallStayAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnim"); } + UAnimMontage* CallFollowAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallFollowAnimSingle"); } + UAnimMontage* CallStayAnimSingleField() { return *GetNativePointerField(this, "AShooterCharacter.CallStayAnimSingle"); } + UAnimMontage* CallMoveToAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallMoveToAnim"); } + UAnimMontage* CallAttackAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CallAttackAnim"); } + UAudioComponent* LowHealthWarningPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.LowHealthWarningPlayer"); } + USoundMix* BelowDeckMixerField() { return *GetNativePointerField(this, "AShooterCharacter.BelowDeckMixer"); } + FItemNetID& NextWeaponItemIDField() { return *GetNativePointerField(this, "AShooterCharacter.NextWeaponItemID"); } + float& WeaponBobTimeField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobTime"); } + float& CurrentAimBlendingField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentAimBlending"); } + long double& InterpLastCrouchProneStateChangeTimeField() { return *GetNativePointerField(this, "AShooterCharacter.InterpLastCrouchProneStateChangeTime"); } + long double& PressCrouchProneToggleTimeField() { return *GetNativePointerField(this, "AShooterCharacter.PressCrouchProneToggleTime"); } + float& CraftingMovementSpeedModifierField() { return *GetNativePointerField(this, "AShooterCharacter.CraftingMovementSpeedModifier"); } + FVector& WeaponBobMagnitudesField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobMagnitudes"); } + FVector& WeaponBobPeriodsField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobPeriods"); } + FVector& WeaponBobOffsetsField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobOffsets"); } + FVector& WeaponBobMagnitudes_TargetingField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobMagnitudes_Targeting"); } + FVector& WeaponBobPeriods_TargetingField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobPeriods_Targeting"); } + FVector& WeaponBobOffsets_TargetingField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobOffsets_Targeting"); } + float& WeaponBobMinimumSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobMinimumSpeed"); } + float& WeaponBobSpeedBaseField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobSpeedBase"); } + float& WeaponBobSpeedBaseFallingField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobSpeedBaseFalling"); } + float& WeaponBobTargetingBlendField() { return *GetNativePointerField(this, "AShooterCharacter.WeaponBobTargetingBlend"); } + TArray& DefaultAttachmentInfosField() { return *GetNativePointerField*>(this, "AShooterCharacter.DefaultAttachmentInfos"); } + USoundCue* StartCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartCrouchSound"); } + USoundCue* EndCrouchSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndCrouchSound"); } + USoundCue* StartProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.StartProneSound"); } + USoundCue* EndProneSoundField() { return *GetNativePointerField(this, "AShooterCharacter.EndProneSound"); } + TSubclassOf& NextInventoryWeaponField() { return *GetNativePointerField*>(this, "AShooterCharacter.NextInventoryWeapon"); } + FItemNetID& PreMapWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreMapWeaponItemNetID"); } + FItemNetID& PreMapWeaponItemNetIDSecondaryField() { return *GetNativePointerField(this, "AShooterCharacter.PreMapWeaponItemNetIDSecondary"); } + float& PreviousAgeField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousAge"); } + unsigned __int64& LinkedPlayerDataIDField() { return *GetNativePointerField(this, "AShooterCharacter.LinkedPlayerDataID"); } + long double& LastTimeInFallingField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeInFalling"); } + long double& TimeSinceLastControllerField() { return *GetNativePointerField(this, "AShooterCharacter.TimeSinceLastController"); } + TWeakObjectPtr& LastControllerField() { return *GetNativePointerField*>(this, "AShooterCharacter.LastController"); } + UAnimMontage* DrinkingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DrinkingAnimation"); } + long double& LastRequestedTribeTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeTime"); } + unsigned __int64& LastRequestedTribeIDField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeID"); } + FString& LastRequestedTribeNameField() { return *GetNativePointerField(this, "AShooterCharacter.LastRequestedTribeName"); } + TWeakObjectPtr& LastRequestedTribePlayerCharacterField() { return *GetNativePointerField*>(this, "AShooterCharacter.LastRequestedTribePlayerCharacter"); } + float& IndoorsHyperthermiaInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.IndoorsHyperthermiaInsulation"); } + float& IndoorsHypothermiaInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.IndoorsHypothermiaInsulation"); } + float& IndoorCheckIntervalField() { return *GetNativePointerField(this, "AShooterCharacter.IndoorCheckInterval"); } + long double& LastIndoorCheckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastIndoorCheckTime"); } + FItemNetID& PreRidingWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreRidingWeaponItemNetID"); } + FItemNetID& PreRidingWeaponItemNetIDSecondaryField() { return *GetNativePointerField(this, "AShooterCharacter.PreRidingWeaponItemNetIDSecondary"); } + FItemNetID& PreInventoryWeaponItemNetIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreInventoryWeaponItemNetID"); } + FItemNetID& PreInventoryWeaponItemNetIDSecondaryField() { return *GetNativePointerField(this, "AShooterCharacter.PreInventoryWeaponItemNetIDSecondary"); } + UAnimSequence* ViewingInventoryAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.ViewingInventoryAnimation"); } + UAnimSequence* DefaultDinoRidingAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingAnimation"); } + UAnimSequence* DefaultDinoRidingMoveAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.DefaultDinoRidingMoveAnimation"); } + long double& FastTravellingStartTimeField() { return *GetNativePointerField(this, "AShooterCharacter.FastTravellingStartTime"); } + FItemNetID& LastReloadAllItemIDField() { return *GetNativePointerField(this, "AShooterCharacter.LastReloadAllItemID"); } + float& EnemyPlayerMaxCursorHUDDistanceProneField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceProne"); } + float& EnemyPlayerMaxCursorHUDDistanceCrouchedField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceCrouched"); } + float& EnemyPlayerMaxCursorHUDDistanceStandingField() { return *GetNativePointerField(this, "AShooterCharacter.EnemyPlayerMaxCursorHUDDistanceStanding"); } + FSaddlePassengerSeatDefinition& CurrentPassengerSeatDefinitionField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentPassengerSeatDefinition"); } + TArray AnimsOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimsOverrideFrom"); } + TArray AnimOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimOverrideTo"); } + TArray AnimSequencesOverrideFromField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequencesOverrideFrom"); } + TArray AnimSequenceOverrideToField() { return *GetNativePointerField*>(this, "AShooterCharacter.AnimSequenceOverrideTo"); } + float& PreviousRootYawSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousRootYawSpeed"); } + FieldArray BodyColorsField() { return { this, "AShooterCharacter.BodyColors" }; } + char& FacialHairIndexField() { return *GetNativePointerField(this, "AShooterCharacter.FacialHairIndex"); } + char& HeadHairIndexField() { return *GetNativePointerField(this, "AShooterCharacter.HeadHairIndex"); } + float& MuscleToneField() { return *GetNativePointerField(this, "AShooterCharacter.MuscleTone"); } + float& BodyfatField() { return *GetNativePointerField(this, "AShooterCharacter.Bodyfat"); } + long double& BornAtNetworkTimeField() { return *GetNativePointerField(this, "AShooterCharacter.BornAtNetworkTime"); } + long double& PlayerDiedAtNetworkTimeField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerDiedAtNetworkTime"); } + FieldArray BonePresetsField() { return { this, "AShooterCharacter.BonePresets" }; } + float& FullAgeGameTimeIntervalField() { return *GetNativePointerField(this, "AShooterCharacter.FullAgeGameTimeInterval"); } + float& ApplyAgeDeltaThresholdField() { return *GetNativePointerField(this, "AShooterCharacter.ApplyAgeDeltaThreshold"); } + float& AgeMinDisplayYearsField() { return *GetNativePointerField(this, "AShooterCharacter.AgeMinDisplayYears"); } + float& AgeMaxDisplayYearsField() { return *GetNativePointerField(this, "AShooterCharacter.AgeMaxDisplayYears"); } + float& WetnessField() { return *GetNativePointerField(this, "AShooterCharacter.Wetness"); } + float& InterpolatedWetsField() { return *GetNativePointerField(this, "AShooterCharacter.InterpolatedWets"); } + float& WetnessDrySpeedField() { return *GetNativePointerField(this, "AShooterCharacter.WetnessDrySpeed"); } + float& LoggedOutTargetingDesirabilityField() { return *GetNativePointerField(this, "AShooterCharacter.LoggedOutTargetingDesirability"); } + bool& bIsRainWateredField() { return *GetNativePointerField(this, "AShooterCharacter.bIsRainWatered"); } + long double& LastAttackTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastAttackTime"); } + unsigned int& UniqueNetIdTypeHashField() { return *GetNativePointerField(this, "AShooterCharacter.UniqueNetIdTypeHash"); } + FString& UniqueNetIdStrField() { return *GetNativePointerField(this, "AShooterCharacter.UniqueNetIdStr"); } + long double& LastUseHarvestTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUseHarvestTime"); } + UAnimMontage* SpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.SpawnAnim"); } + UAnimMontage* FirstSpawnAnimField() { return *GetNativePointerField(this, "AShooterCharacter.FirstSpawnAnim"); } + FVector& LastStasisCastPositionField() { return *GetNativePointerField(this, "AShooterCharacter.LastStasisCastPosition"); } + bool& bWasHostPlayerField() { return *GetNativePointerField(this, "AShooterCharacter.bWasHostPlayer"); } + long double& LastTimeHadControllerField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeHadController"); } + long double& LastTaggedTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastTaggedTime"); } + long double& LastTaggedTimeExtraField() { return *GetNativePointerField(this, "AShooterCharacter.LastTaggedTimeExtra"); } + long double& LastTaggedTimeThirdField() { return *GetNativePointerField(this, "AShooterCharacter.LastTaggedTimeThird"); } + float& ExtraFloatVarField() { return *GetNativePointerField(this, "AShooterCharacter.ExtraFloatVar"); } + FVector& ExtraVectorVarField() { return *GetNativePointerField(this, "AShooterCharacter.ExtraVectorVar"); } + FVector& ExtraExtraVectorVarField() { return *GetNativePointerField(this, "AShooterCharacter.ExtraExtraVectorVar"); } + FName& ExtraNameVarField() { return *GetNativePointerField(this, "AShooterCharacter.ExtraNameVar"); } + float& CurrentControlledBallistaYawField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentControlledBallistaYaw"); } + bool& bIsServerAdminField() { return *GetNativePointerField(this, "AShooterCharacter.bIsServerAdmin"); } + float& WetMaximumTemperatureReductionField() { return *GetNativePointerField(this, "AShooterCharacter.WetMaximumTemperatureReduction"); } + float& WetMinimumTemperatureReductionField() { return *GetNativePointerField(this, "AShooterCharacter.WetMinimumTemperatureReduction"); } + long double& NextPlayerUndergroundCheckField() { return *GetNativePointerField(this, "AShooterCharacter.NextPlayerUndergroundCheck"); } + int& PlayerNumUnderGroundFailField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerNumUnderGroundFail"); } + float& LastSweepCapsuleHeightField() { return *GetNativePointerField(this, "AShooterCharacter.LastSweepCapsuleHeight"); } + float& LastSweepCapsuleRadiusField() { return *GetNativePointerField(this, "AShooterCharacter.LastSweepCapsuleRadius"); } + USoundBase* ThrowCharacterSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ThrowCharacterSound"); } + float& ClientSeatedViewRotationPitchField() { return *GetNativePointerField(this, "AShooterCharacter.ClientSeatedViewRotationPitch"); } + float& ClientSeatedViewRotationYawField() { return *GetNativePointerField(this, "AShooterCharacter.ClientSeatedViewRotationYaw"); } + char& PlayerBadgeGroupField() { return *GetNativePointerField(this, "AShooterCharacter.PlayerBadgeGroup"); } + bool& bShouldInvertTurnInputField() { return *GetNativePointerField(this, "AShooterCharacter.bShouldInvertTurnInput"); } + TWeakObjectPtr& LastGrappledToCharacterField() { return *GetNativePointerField*>(this, "AShooterCharacter.LastGrappledToCharacter"); } + TWeakObjectPtr& CurrentGrappledToCharacterField() { return *GetNativePointerField*>(this, "AShooterCharacter.CurrentGrappledToCharacter"); } + int& AllianceInviteRequestingTeamField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteRequestingTeam"); } + unsigned int& AllianceInviteIDField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteID"); } + FString& AllianceInviteNameField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteName"); } + long double& AllianceInviteTimeField() { return *GetNativePointerField(this, "AShooterCharacter.AllianceInviteTime"); } + unsigned __int64& TradingInvitePlayerIDField() { return *GetNativePointerField(this, "AShooterCharacter.TradingInvitePlayerID"); } + UAnimMontage* MountedCarryingDinoAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.MountedCarryingDinoAnimation"); } + UAnimMontage* CuddleAnimationField() { return *GetNativePointerField(this, "AShooterCharacter.CuddleAnimation"); } + long double& LastUpdatedAimActorsTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastUpdatedAimActorsTime"); } + FVector& UpdateHyperThermalInsulationPositionField() { return *GetNativePointerField(this, "AShooterCharacter.UpdateHyperThermalInsulationPosition"); } + FVector& UpdateHypoThermalInsulationPositionField() { return *GetNativePointerField(this, "AShooterCharacter.UpdateHypoThermalInsulationPosition"); } + long double& NextUpdateHyperThermalInsulationTimeField() { return *GetNativePointerField(this, "AShooterCharacter.NextUpdateHyperThermalInsulationTime"); } + long double& NextUpdateHypoThermalInsulationTimeField() { return *GetNativePointerField(this, "AShooterCharacter.NextUpdateHypoThermalInsulationTime"); } + float& LastAdditionalHypoThermalInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.LastAdditionalHypoThermalInsulation"); } + float& LastAdditionalHyperThermalInsulationField() { return *GetNativePointerField(this, "AShooterCharacter.LastAdditionalHyperThermalInsulation"); } + float& WaterLossRateMultiplierField() { return *GetNativePointerField(this, "AShooterCharacter.WaterLossRateMultiplier"); } + UAnimSequence* CharacterAdditiveStandingAnimField() { return *GetNativePointerField(this, "AShooterCharacter.CharacterAdditiveStandingAnim"); } + long double& LastTryAccessInventoryFailTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastTryAccessInventoryFailTime"); } + long double& LastEmotePlayTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastEmotePlayTime"); } + float& IntervalForFullHeadHairGrowthField() { return *GetNativePointerField(this, "AShooterCharacter.IntervalForFullHeadHairGrowth"); } + float& IntervalForFullFacialHairGrowthField() { return *GetNativePointerField(this, "AShooterCharacter.IntervalForFullFacialHairGrowth"); } + float& HeadHairGrowthParamQuantizationField() { return *GetNativePointerField(this, "AShooterCharacter.HeadHairGrowthParamQuantization"); } + float& FacialHairGrowthParamQuantizationField() { return *GetNativePointerField(this, "AShooterCharacter.FacialHairGrowthParamQuantization"); } + float& PercentOfFullFacialHairGrowthField() { return *GetNativePointerField(this, "AShooterCharacter.PercentOfFullFacialHairGrowth"); } + float& PercentOfFullHeadHairGrowthField() { return *GetNativePointerField(this, "AShooterCharacter.PercentOfFullHeadHairGrowth"); } + FLinearColor& OriginalHairColorField() { return *GetNativePointerField(this, "AShooterCharacter.OriginalHairColor"); } + float& GlobalWindHairLerpField() { return *GetNativePointerField(this, "AShooterCharacter.GlobalWindHairLerp"); } + float& LastGlobalWindHairLerpField() { return *GetNativePointerField(this, "AShooterCharacter.LastGlobalWindHairLerp"); } + float& GlobalDynamicsHairLerpField() { return *GetNativePointerField(this, "AShooterCharacter.GlobalDynamicsHairLerp"); } + float& LastGlobalDynamicsHairLerpField() { return *GetNativePointerField(this, "AShooterCharacter.LastGlobalDynamicsHairLerp"); } + long double& LastEmoteTryPlayTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastEmoteTryPlayTime"); } + int& IgnoreCollisionSweepUntilFrameNumberField() { return *GetNativePointerField(this, "AShooterCharacter.IgnoreCollisionSweepUntilFrameNumber"); } + float& ReplicatedWeightField() { return *GetNativePointerField(this, "AShooterCharacter.ReplicatedWeight"); } + long double& LocalDiedAtTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LocalDiedAtTime"); } + long double& LastNotStuckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastNotStuckTime"); } + USoundBase* ProneMoveSoundField() { return *GetNativePointerField(this, "AShooterCharacter.ProneMoveSound"); } + long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "AShooterCharacter.UploadEarliestValidTime"); } + long double& LastCollisionStuckTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastCollisionStuckTime"); } + int& SimulatedLastFrameProcessedForceUpdateAimedActorsField() { return *GetNativePointerField(this, "AShooterCharacter.SimulatedLastFrameProcessedForceUpdateAimedActors"); } + FVector& OriginalLastHitWallSweepCheckLocationField() { return *GetNativePointerField(this, "AShooterCharacter.OriginalLastHitWallSweepCheckLocation"); } + int& LastCapsuleAttachmentChangedIncrementField() { return *GetNativePointerField(this, "AShooterCharacter.LastCapsuleAttachmentChangedIncrement"); } + int& LastMeshAttachmentChangedIncrementField() { return *GetNativePointerField(this, "AShooterCharacter.LastMeshAttachmentChangedIncrement"); } + int& LastCameraAttachmentChangedIncrementField() { return *GetNativePointerField(this, "AShooterCharacter.LastCameraAttachmentChangedIncrement"); } + bool& bPreventWeaponMovementAnimsField() { return *GetNativePointerField(this, "AShooterCharacter.bPreventWeaponMovementAnims"); } + bool& bAwaitingSeamlessTravelControllerField() { return *GetNativePointerField(this, "AShooterCharacter.bAwaitingSeamlessTravelController"); } + bool& bModifiedEyeHeightField() { return *GetNativePointerField(this, "AShooterCharacter.bModifiedEyeHeight"); } + bool& bSkipNextLocalPossessedByField() { return *GetNativePointerField(this, "AShooterCharacter.bSkipNextLocalPossessedBy"); } + TEnumAsByte& BestInstantShotResultField() { return *GetNativePointerField*>(this, "AShooterCharacter.BestInstantShotResult"); } + TArray& FeatCooldownsField() { return *GetNativePointerField*>(this, "AShooterCharacter.FeatCooldowns"); } + long double& LastTimeReleasedAllowFPVStructureField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeReleasedAllowFPVStructure"); } + long double& LastGrapHookDetachTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastGrapHookDetachTime"); } + TMap > ShipsRelativePositionMapField() { return *GetNativePointerField >*>(this, "AShooterCharacter.ShipsRelativePositionMap"); } + long double& LastCombatActionTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastCombatActionTime"); } + long double& TimeStartedLockOnField() { return *GetNativePointerField(this, "AShooterCharacter.TimeStartedLockOn"); } + AActor* LockOnTargetField() { return *GetNativePointerField(this, "AShooterCharacter.LockOnTarget"); } + int& ReloadMiniGameSuccessCounterField() { return *GetNativePointerField(this, "AShooterCharacter.ReloadMiniGameSuccessCounter"); } + float& WalkSpeedThresholdField() { return *GetNativePointerField(this, "AShooterCharacter.WalkSpeedThreshold"); } + float& MinRunningSpeedModifierField() { return *GetNativePointerField(this, "AShooterCharacter.MinRunningSpeedModifier"); } + FHandIkTarget& LeftHandIkTargetField() { return *GetNativePointerField(this, "AShooterCharacter.LeftHandIkTarget"); } + FHandIkTarget& RightHandIkTargetField() { return *GetNativePointerField(this, "AShooterCharacter.RightHandIkTarget"); } + FName& RightShoulderBoneNameField() { return *GetNativePointerField(this, "AShooterCharacter.RightShoulderBoneName"); } + FName& RightTipBoneNameField() { return *GetNativePointerField(this, "AShooterCharacter.RightTipBoneName"); } + FName& LeftShoulderBoneNameField() { return *GetNativePointerField(this, "AShooterCharacter.LeftShoulderBoneName"); } + FName& LeftTipBoneNameField() { return *GetNativePointerField(this, "AShooterCharacter.LeftTipBoneName"); } + FName& TorsoBoneNameField() { return *GetNativePointerField(this, "AShooterCharacter.TorsoBoneName"); } + float& ForwardBindingAlphaField() { return *GetNativePointerField(this, "AShooterCharacter.ForwardBindingAlpha"); } + float& ForwardBindingInterpSpeedField() { return *GetNativePointerField(this, "AShooterCharacter.ForwardBindingInterpSpeed"); } + FieldArray DirectionalSpeedMultipliersField() { return { this, "AShooterCharacter.DirectionalSpeedMultipliers" }; } + float& TimeInVitaEqField() { return *GetNativePointerField(this, "AShooterCharacter.TimeInVitaEq"); } + float& TotalTimeForVitaEqField() { return *GetNativePointerField(this, "AShooterCharacter.TotalTimeForVitaEq"); } + float& CurrentForwardBindingAlphaField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentForwardBindingAlpha"); } + FItemNetID& PreviousWeaponItemIDField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousWeaponItemID"); } + APrimalDinoCharacter* TransitionMountedDinoField() { return *GetNativePointerField(this, "AShooterCharacter.TransitionMountedDino"); } + int& CurrentDiscoveryZoneIDField() { return *GetNativePointerField(this, "AShooterCharacter.CurrentDiscoveryZoneID"); } + bool& bCurrentDiscoveryZoneAllowSeaField() { return *GetNativePointerField(this, "AShooterCharacter.bCurrentDiscoveryZoneAllowSea"); } + FieldArray PlayerMeshNoEquipmentShrinkageMasksField() { return { this, "AShooterCharacter.PlayerMeshNoEquipmentShrinkageMasks" }; } + UAnimMontage* FallAsleepAnimField() { return *GetNativePointerField(this, "AShooterCharacter.FallAsleepAnim"); } + UPrimalPlayerData* TravellingPlayerDataField() { return *GetNativePointerField(this, "AShooterCharacter.TravellingPlayerData"); } + FVector2D& ExtendedInfoTooltipPaddingField() { return *GetNativePointerField(this, "AShooterCharacter.ExtendedInfoTooltipPadding"); } + FVector2D& ExtendedInfoTooltipScaleField() { return *GetNativePointerField(this, "AShooterCharacter.ExtendedInfoTooltipScale"); } + float& ExtendedInfoTooltipCheckRangeField() { return *GetNativePointerField(this, "AShooterCharacter.ExtendedInfoTooltipCheckRange"); } + float& LastMaterialAppliedWetnessAmountField() { return *GetNativePointerField(this, "AShooterCharacter.LastMaterialAppliedWetnessAmount"); } + APrimalStructureItemContainer* spawnedTradeStructField() { return *GetNativePointerField(this, "AShooterCharacter.spawnedTradeStruct"); } + long double& LastInvitedToAllianceTimeField() { return *GetNativePointerField(this, "AShooterCharacter.LastInvitedToAllianceTime"); } + USoundBase* JumpSoundField() { return *GetNativePointerField(this, "AShooterCharacter.JumpSound"); } + USoundCue* PreviousCharacterStatusStateSoundField() { return *GetNativePointerField(this, "AShooterCharacter.PreviousCharacterStatusStateSound"); } + float& LastTimeSoundPlayedField() { return *GetNativePointerField(this, "AShooterCharacter.LastTimeSoundPlayed"); } + bool& bControllerLeavingGameField() { return *GetNativePointerField(this, "AShooterCharacter.bControllerLeavingGame"); } + float& TimeBetweenStatusStateSoundsField() { return *GetNativePointerField(this, "AShooterCharacter.TimeBetweenStatusStateSounds"); } + long double& PossessedAtTimeField() { return *GetNativePointerField(this, "AShooterCharacter.PossessedAtTime"); } + bool& bForceTeleportClientToHostField() { return *GetNativePointerField(this, "AShooterCharacter.bForceTeleportClientToHost"); } + __int64& SeenTutorialBitFlagsField() { return *GetNativePointerField<__int64*>(this, "AShooterCharacter.SeenTutorialBitFlags"); } + __int64& CachedTutorialBitFlagsKeyField() { return *GetNativePointerField<__int64*>(this, "AShooterCharacter.CachedTutorialBitFlagsKey"); } + + // Bit fields + + BitFieldValue bIsCrafting() { return { this, "AShooterCharacter.bIsCrafting" }; } + BitFieldValue bIsIndoors() { return { this, "AShooterCharacter.bIsIndoors" }; } + BitFieldValue bUseAlternateFallBlendspace() { return { this, "AShooterCharacter.bUseAlternateFallBlendspace" }; } + BitFieldValue bIsFemale() { return { this, "AShooterCharacter.bIsFemale" }; } + BitFieldValue bPlaySpawnAnim() { return { this, "AShooterCharacter.bPlaySpawnAnim" }; } + BitFieldValue bPlayFirstSpawnAnim() { return { this, "AShooterCharacter.bPlayFirstSpawnAnim" }; } + BitFieldValue bPossessionDontUnsleep() { return { this, "AShooterCharacter.bPossessionDontUnsleep" }; } + BitFieldValue bLastViewingInventory() { return { this, "AShooterCharacter.bLastViewingInventory" }; } + BitFieldValue bPlayedSpawnIntro() { return { this, "AShooterCharacter.bPlayedSpawnIntro" }; } + BitFieldValue bWasSubmerged() { return { this, "AShooterCharacter.bWasSubmerged" }; } + BitFieldValue bCheckPushedThroughWallsWasSeatingStructure() { return { this, "AShooterCharacter.bCheckPushedThroughWallsWasSeatingStructure" }; } + BitFieldValue bGaveInitialItems() { return { this, "AShooterCharacter.bGaveInitialItems" }; } + BitFieldValue bHadGrapHookAttachActor() { return { this, "AShooterCharacter.bHadGrapHookAttachActor" }; } + BitFieldValue bAddedToActivePlayerList() { return { this, "AShooterCharacter.bAddedToActivePlayerList" }; } + BitFieldValue bAddedBelowDeckMixer() { return { this, "AShooterCharacter.bAddedBelowDeckMixer" }; } + BitFieldValue bGaveTutorialFinishedItems() { return { this, "AShooterCharacter.bGaveTutorialFinishedItems" }; } + BitFieldValue bTriggerBPUnstasis() { return { this, "AShooterCharacter.bTriggerBPUnstasis" }; } + BitFieldValue bWasFirstPerson() { return { this, "AShooterCharacter.bWasFirstPerson" }; } + BitFieldValue bWasForceHideCharacter() { return { this, "AShooterCharacter.bWasForceHideCharacter" }; } + BitFieldValue bWasOverrideHiddenShadowValue() { return { this, "AShooterCharacter.bWasOverrideHiddenShadowValue" }; } + BitFieldValue bLastLocInterpProne() { return { this, "AShooterCharacter.bLastLocInterpProne" }; } + BitFieldValue bLastLocInterpCrouched() { return { this, "AShooterCharacter.bLastLocInterpCrouched" }; } + BitFieldValue bHatHidden() { return { this, "AShooterCharacter.bHatHidden" }; } + BitFieldValue bBeganPlay() { return { this, "AShooterCharacter.bBeganPlay" }; } + BitFieldValue bAllowDPC() { return { this, "AShooterCharacter.bAllowDPC" }; } + BitFieldValue bHadWeaponWhenStartedClimbingLadder() { return { this, "AShooterCharacter.bHadWeaponWhenStartedClimbingLadder" }; } + BitFieldValue bIsConnected() { return { this, "AShooterCharacter.bIsConnected" }; } + BitFieldValue bHideAllMultiuseSelectors() { return { this, "AShooterCharacter.bHideAllMultiuseSelectors" }; } + BitFieldValue bRefreshDefaultAttachmentsHadEquippedItems() { return { this, "AShooterCharacter.bRefreshDefaultAttachmentsHadEquippedItems" }; } + BitFieldValue bEquippedPreMapWeapon() { return { this, "AShooterCharacter.bEquippedPreMapWeapon" }; } + BitFieldValue bEquippedPreRidingWeapon() { return { this, "AShooterCharacter.bEquippedPreRidingWeapon" }; } + BitFieldValue bFastTravelled() { return { this, "AShooterCharacter.bFastTravelled" }; } + BitFieldValue bForceSwitchAsPrimaryWeaponOnce() { return { this, "AShooterCharacter.bForceSwitchAsPrimaryWeaponOnce" }; } + BitFieldValue bReloadAllSwitchedToFirstWeapon() { return { this, "AShooterCharacter.bReloadAllSwitchedToFirstWeapon" }; } + BitFieldValue bPendingDiscoveryZoneNotAtSeaUnlock() { return { this, "AShooterCharacter.bPendingDiscoveryZoneNotAtSeaUnlock" }; } + BitFieldValue bIsUpdatingPawnMeshes() { return { this, "AShooterCharacter.bIsUpdatingPawnMeshes" }; } + BitFieldValue bUsingWeaponHandIK() { return { this, "AShooterCharacter.bUsingWeaponHandIK" }; } + BitFieldValue bCreatedFromSeamlessRespawn() { return { this, "AShooterCharacter.bCreatedFromSeamlessRespawn" }; } + BitFieldValue bUseEquipmentShrinkageMasks() { return { this, "AShooterCharacter.bUseEquipmentShrinkageMasks" }; } + BitFieldValue bIsLockedOn() { return { this, "AShooterCharacter.bIsLockedOn" }; } + BitFieldValue bIsSwitchingToYarkMeleeInCombat() { return { this, "AShooterCharacter.bIsSwitchingToYarkMeleeInCombat" }; } + BitFieldValue bLoadedTattooData() { return { this, "AShooterCharacter.bLoadedTattooData" }; } + BitFieldValue bFastTravelling() { return { this, "AShooterCharacter.bFastTravelling" }; } + BitFieldValue bAttachedToHostCharacter() { return { this, "AShooterCharacter.bAttachedToHostCharacter" }; } + + // Functions + + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "AShooterCharacter.GetPrivateStaticClass"); } + bool BuffsPreventFirstPerson() { return NativeCall(this, "AShooterCharacter.BuffsPreventFirstPerson"); } + void AddFeatCooldown(TSubclassOf FeatClass) { NativeCall>(this, "AShooterCharacter.AddFeatCooldown", FeatClass); } + void AdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool AllowDinoTargetingRange(FVector* AtLoc, float TargetingRange, AActor* ForAttacker) { return NativeCall(this, "AShooterCharacter.AllowDinoTargetingRange", AtLoc, TargetingRange, ForAttacker); } + bool AllowFirstPerson() { return NativeCall(this, "AShooterCharacter.AllowFirstPerson"); } + bool AllowGrappling_Implementation() { return NativeCall(this, "AShooterCharacter.AllowGrappling_Implementation"); } + bool AllowSeamlessTravel() { return NativeCall(this, "AShooterCharacter.AllowSeamlessTravel"); } + bool AllowTreadWater() { return NativeCall(this, "AShooterCharacter.AllowTreadWater"); } + bool AnimUseAimOffset() { return NativeCall(this, "AShooterCharacter.AnimUseAimOffset"); } + static void ApplyAge(UMeshComponent* Mesh, float Age) { NativeCall(nullptr, "AShooterCharacter.ApplyAge", Mesh, Age); } + static void ApplyAgeAndBodyfatHelper(UMeshComponent* Mesh, float Age, float Bodyfat, float MuscleTone, float Wetness) { NativeCall(nullptr, "AShooterCharacter.ApplyAgeAndBodyfatHelper", Mesh, Age, Bodyfat, MuscleTone, Wetness); } + void ApplyBodyColors() { NativeCall(this, "AShooterCharacter.ApplyBodyColors"); } + void ApplyBoneModifiers() { NativeCall(this, "AShooterCharacter.ApplyBoneModifiers"); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void ApplyEquipmentShrinkageMasks() { NativeCall(this, "AShooterCharacter.ApplyEquipmentShrinkageMasks"); } + void ApplyFirstPersonBoneModifiers() { NativeCall(this, "AShooterCharacter.ApplyFirstPersonBoneModifiers"); } + static void ApplyWetnessHelper(UMeshComponent* Mesh, float Wetness) { NativeCall(nullptr, "AShooterCharacter.ApplyWetnessHelper", Mesh, Wetness); } + void AttachToHostCharacter(APawn* HostCharacter) { NativeCall(this, "AShooterCharacter.AttachToHostCharacter", HostCharacter); } + void AttachToLadder_Implementation(USceneComponent* Parent) { NativeCall(this, "AShooterCharacter.AttachToLadder_Implementation", Parent); } + void AuthPostSpawnInit() { NativeCall(this, "AShooterCharacter.AuthPostSpawnInit"); } + bool BasedOnDynamicActorUseFallingLateralFriction() { return NativeCall(this, "AShooterCharacter.BasedOnDynamicActorUseFallingLateralFriction"); } + void BeginPlay() { NativeCall(this, "AShooterCharacter.BeginPlay"); } + bool BlueprintInitiateTrade(AShooterCharacter* OtherPlayer) { return NativeCall(this, "AShooterCharacter.BlueprintInitiateTrade", OtherPlayer); } + bool CalcIsIndoors() { return NativeCall(this, "AShooterCharacter.CalcIsIndoors"); } + FRotator* CalculateForwarBendingAngle(FRotator* result) { return NativeCall(this, "AShooterCharacter.CalculateForwarBendingAngle", result); } + FVector* CalculateLookAtHeadLocation(FVector* result) { return NativeCall(this, "AShooterCharacter.CalculateLookAtHeadLocation", result); } + void CallGameStateHandleEvent(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.CallGameStateHandleEvent", NameParam, VecParam); } + bool CanBeCarried(APrimalCharacter* ByCarrier) { return NativeCall(this, "AShooterCharacter.CanBeCarried", ByCarrier); } + bool CanCrouch() { return NativeCall(this, "AShooterCharacter.CanCrouch"); } + bool CanCrouchInternal() { return NativeCall(this, "AShooterCharacter.CanCrouchInternal"); } + bool CanDoUsableHarvesting() { return NativeCall(this, "AShooterCharacter.CanDoUsableHarvesting"); } + bool CanDragCharacter(APrimalCharacter* Character) { return NativeCall(this, "AShooterCharacter.CanDragCharacter", Character); } + bool CanFire() { return NativeCall(this, "AShooterCharacter.CanFire"); } + bool CanGiveCaptainOrders() { return NativeCall(this, "AShooterCharacter.CanGiveCaptainOrders"); } + bool CanJumpInternal_Implementation() { return NativeCall(this, "AShooterCharacter.CanJumpInternal_Implementation"); } + bool CanProne() { return NativeCall(this, "AShooterCharacter.CanProne"); } + bool CanProneInternal() { return NativeCall(this, "AShooterCharacter.CanProneInternal"); } + void CancelTrade() { NativeCall(this, "AShooterCharacter.CancelTrade"); } + void CaptureCharacterSnapshot(UPrimalItem* Item) { NativeCall(this, "AShooterCharacter.CaptureCharacterSnapshot", Item); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "AShooterCharacter.ChangeActorTeam", NewTeam); } + void CheckAndHandleBasedPlayersBeingPushedThroughWalls() { NativeCall(this, "AShooterCharacter.CheckAndHandleBasedPlayersBeingPushedThroughWalls"); } + void CheckNextSecondaryWeapon() { NativeCall(this, "AShooterCharacter.CheckNextSecondaryWeapon"); } + bool CheckShipPenetrations() { return NativeCall(this, "AShooterCharacter.CheckShipPenetrations"); } + void ClearCarryingDino(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "AShooterCharacter.ClearCarryingDino", bFromDino, bCancelAnyCarryBuffs); } + void ClearLadderAttachmentInfo() { NativeCall(this, "AShooterCharacter.ClearLadderAttachmentInfo"); } + void ClearRidingDino(bool bFromDino, int OverrideUnboardDirection) { NativeCall(this, "AShooterCharacter.ClearRidingDino", bFromDino, OverrideUnboardDirection); } + void ClearRidingDinoAsPassenger(bool bFromDino) { NativeCall(this, "AShooterCharacter.ClearRidingDinoAsPassenger", bFromDino); } + void ClearSpawnAnim() { NativeCall(this, "AShooterCharacter.ClearSpawnAnim"); } + void ClientClearTribeRequest_Implementation() { NativeCall(this, "AShooterCharacter.ClientClearTribeRequest_Implementation"); } + void ClientInviteToAlliance_Implementation(int RequestingTeam, unsigned int AllianceID, FString* AllianceName, FString* InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance_Implementation", RequestingTeam, AllianceID, AllianceName, InviteeName); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "AShooterCharacter.ClientMultiUse", ForPC, UseIndex); } + void ClientNetEndClimbingLadder_Implementation() { NativeCall(this, "AShooterCharacter.ClientNetEndClimbingLadder_Implementation"); } + void ClientNotifyLevelUp_Implementation() { NativeCall(this, "AShooterCharacter.ClientNotifyLevelUp_Implementation"); } + void ClientNotifyTribeRequest_Implementation(FString* RequestTribeName, AShooterCharacter* PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest_Implementation", RequestTribeName, PlayerCharacter); } + void ClientOnDiscoveredZone_Implementation(int ZoneId, int NewNumZonesDiscovered) { NativeCall(this, "AShooterCharacter.ClientOnDiscoveredZone_Implementation", ZoneId, NewNumZonesDiscovered); } + void ClientOrderedAttackTarget_Implementation(AActor* attackTarget) { NativeCall(this, "AShooterCharacter.ClientOrderedAttackTarget_Implementation", attackTarget); } + void ClientOrderedMoveToRaft_Implementation(FVector MoveToRelLoc, APrimalRaft* MoveToRaftRef, int ToDeckIndex) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveToRaft_Implementation", MoveToRelLoc, MoveToRaftRef, ToDeckIndex); } + void ClientOrderedMoveTo_Implementation(FVector MoveToLoc, AActor* MoveToActorRef) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveTo_Implementation", MoveToLoc, MoveToActorRef); } + void ClientPlayHarvestAnim_Implementation() { NativeCall(this, "AShooterCharacter.ClientPlayHarvestAnim_Implementation"); } + void ClientPrepareForSeamlessTravel_Implementation() { NativeCall(this, "AShooterCharacter.ClientPrepareForSeamlessTravel_Implementation"); } + void ClientProcessLadderAttachment() { NativeCall(this, "AShooterCharacter.ClientProcessLadderAttachment"); } + void ClientReceiveFeatCooldowns_Implementation(TArray* theFeatCooldowns) { NativeCall*>(this, "AShooterCharacter.ClientReceiveFeatCooldowns_Implementation", theFeatCooldowns); } + void ClientReceiveNextWeaponID_Implementation(FItemNetID theItemID) { NativeCall(this, "AShooterCharacter.ClientReceiveNextWeaponID_Implementation", theItemID); } + void ClientSetRotation(FRotator NewRotation) { NativeCall(this, "AShooterCharacter.ClientSetRotation", NewRotation); } + void ClientTradeNotification_Implementation(AShooterCharacter* OtherPlayer) { NativeCall(this, "AShooterCharacter.ClientTradeNotification_Implementation", OtherPlayer); } + void ClientUpdateReloadAll() { NativeCall(this, "AShooterCharacter.ClientUpdateReloadAll"); } + void ClientUpdateTranspondersInfo_Implementation(TArray* TranspondersInfo, bool bNewData) { NativeCall*, bool>(this, "AShooterCharacter.ClientUpdateTranspondersInfo_Implementation", TranspondersInfo, bNewData); } + void ControllerLeavingGame(AShooterPlayerController* theController) { NativeCall(this, "AShooterCharacter.ControllerLeavingGame", theController); } + void DedicatedServerBoneFixup() { NativeCall(this, "AShooterCharacter.DedicatedServerBoneFixup"); } + void DelayGiveDefaultWeapon(float DelayTime) { NativeCall(this, "AShooterCharacter.DelayGiveDefaultWeapon", DelayTime); } + void DelayedTransitionFixup() { NativeCall(this, "AShooterCharacter.DelayedTransitionFixup"); } + void Destroyed() { NativeCall(this, "AShooterCharacter.Destroyed"); } + void DetachFromHostCharacter(APrimalCharacter* HostCharacter) { NativeCall(this, "AShooterCharacter.DetachFromHostCharacter", HostCharacter); } + void DetachFromLadder_Implementation(bool bIgnoreOnAutonomousProxy) { NativeCall(this, "AShooterCharacter.DetachFromLadder_Implementation", bIgnoreOnAutonomousProxy); } + void DetachGrapHookCable_Implementation(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.DetachGrapHookCable_Implementation", bDoUpwardsJump, UpwardsJumpYaw); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "AShooterCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void DoCharacterDetachment(bool bIncludeRiding, bool bIncludeCarrying, APrimalBuff* BuffToIgnore) { NativeCall(this, "AShooterCharacter.DoCharacterDetachment", bIncludeRiding, bIncludeCarrying, BuffToIgnore); } + void DrawFloatingChatMessage(AShooterHUD* HUD, FString Message, long double receivedChatTime) { NativeCall(this, "AShooterCharacter.DrawFloatingChatMessage", HUD, Message, receivedChatTime); } + void DrawFloatingHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterCharacter.DrawFloatingHUD", HUD); } + void DrawTranspondersInfo(AShooterHUD* HUD) { NativeCall(this, "AShooterCharacter.DrawTranspondersInfo", HUD); } + void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "AShooterCharacter.FaceRotation", NewControlRotation, DeltaTime, bFromController); } + void FinalLoadedFromSaveGame() { NativeCall(this, "AShooterCharacter.FinalLoadedFromSaveGame"); } + static AShooterCharacter* FindForPlayerController(AShooterPlayerController* aPC) { return NativeCall(nullptr, "AShooterCharacter.FindForPlayerController", aPC); } + void FinishSpawnIntro() { NativeCall(this, "AShooterCharacter.FinishSpawnIntro"); } + void FinishWeaponSwitch() { NativeCall(this, "AShooterCharacter.FinishWeaponSwitch"); } + void FiredWeapon() { NativeCall(this, "AShooterCharacter.FiredWeapon"); } + void ForceGiveDefaultWeapon() { NativeCall(this, "AShooterCharacter.ForceGiveDefaultWeapon"); } + void ForceGiveDiscoveryZone(int ZoneId, bool bDontNotifyClient) { NativeCall(this, "AShooterCharacter.ForceGiveDiscoveryZone", ZoneId, bDontNotifyClient); } + void ForceGiveDiscoveryZoneByName(FString ManualZoneName) { NativeCall(this, "AShooterCharacter.ForceGiveDiscoveryZoneByName", ManualZoneName); } + void ForceGiveGlobalDiscoveryZoneByID(int ZoneId, bool bDontNotifyClient) { NativeCall(this, "AShooterCharacter.ForceGiveGlobalDiscoveryZoneByID", ZoneId, bDontNotifyClient); } + void ForceSleep() { NativeCall(this, "AShooterCharacter.ForceSleep"); } + void GameStateHandleEvent_Implementation(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.GameStateHandleEvent_Implementation", NameParam, VecParam); } + USceneComponent* GetActorSoundAttachmentComponentOverride(USceneComponent* ForComponent) { return NativeCall(this, "AShooterCharacter.GetActorSoundAttachmentComponentOverride", ForComponent); } + float GetActualTargetingFOV(float DefaultTargetingFOV) { return NativeCall(this, "AShooterCharacter.GetActualTargetingFOV", DefaultTargetingFOV); } + UAnimSequence* GetAdditiveStandingAnim(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAdditiveStandingAnim", OutBlendInTime, OutBlendOutTime); } + bool GetAdditiveStandingAnimNonAdditive() { return NativeCall(this, "AShooterCharacter.GetAdditiveStandingAnimNonAdditive"); } + float GetAge() { return NativeCall(this, "AShooterCharacter.GetAge"); } + int GetAgeYears() { return NativeCall(this, "AShooterCharacter.GetAgeYears"); } + FRotator* GetAimOffsets(FRotator* result, float DeltaTime, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset) { return NativeCall(this, "AShooterCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + UAnimSequence* GetAlternateStandingAnim(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterCharacter.GetAlternateStandingAnim", OutBlendInTime, OutBlendOutTime); } + APrimalStructureExplosive* GetAttachedExplosive() { return NativeCall(this, "AShooterCharacter.GetAttachedExplosive"); } + float GetBaseTargetingDesire(ITargetableInterface* Attacker) { return NativeCall(this, "AShooterCharacter.GetBaseTargetingDesire", Attacker); } + APrimalDinoCharacter* GetBasedOnDino() { return NativeCall(this, "AShooterCharacter.GetBasedOnDino"); } + bool GetBlockingShieldOffsets(FVector* OutBlockingShieldFPVTranslation, FRotator* OutBlockingShieldFPVRotation) { return NativeCall(this, "AShooterCharacter.GetBlockingShieldOffsets", OutBlockingShieldFPVTranslation, OutBlockingShieldFPVRotation); } + float GetCarryingSocketYaw(bool RefreshBones) { return NativeCall(this, "AShooterCharacter.GetCarryingSocketYaw", RefreshBones); } + float GetCharacterAdditionalHyperthermiaInsulationValue() { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalHyperthermiaInsulationValue"); } + float GetCharacterAdditionalHypothermiaInsulationValue() { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalHypothermiaInsulationValue"); } + float GetCharacterAdditionalInsulationValueFromStructure(UWorld* theWorld, FVector* actorLoc, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetCharacterAdditionalInsulationValueFromStructure", theWorld, actorLoc, TypeInsulation); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "AShooterCharacter.GetDescriptiveName", result); } + UAnimSequence* GetDinoRidingAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingAnimation"); } + UAnimSequence* GetDinoRidingMoveAnimation() { return NativeCall(this, "AShooterCharacter.GetDinoRidingMoveAnimation"); } + FLinearColor* GetFacialHairColor(FLinearColor* result) { return NativeCall(this, "AShooterCharacter.GetFacialHairColor", result); } + int GetFacialHairIndex() { return NativeCall(this, "AShooterCharacter.GetFacialHairIndex"); } + float GetFacialHairMorphTargetValue() { return NativeCall(this, "AShooterCharacter.GetFacialHairMorphTargetValue"); } + FLinearColor* GetHeadHairColor(FLinearColor* result) { return NativeCall(this, "AShooterCharacter.GetHeadHairColor", result); } + int GetHeadHairIndex() { return NativeCall(this, "AShooterCharacter.GetHeadHairIndex"); } + float GetHeadHairMorphTargetValue() { return NativeCall(this, "AShooterCharacter.GetHeadHairMorphTargetValue"); } + float GetInsulationFromItem(FHitResult* HitOut, EPrimalItemStat::Type TypeInsulation) { return NativeCall(this, "AShooterCharacter.GetInsulationFromItem", HitOut, TypeInsulation); } + FTransform* GetLadderComponentToWorld(FTransform* result) { return NativeCall(this, "AShooterCharacter.GetLadderComponentToWorld", result); } + long double GetLastFeatUsedTime(TSubclassOf FeatClass) { return NativeCall>(this, "AShooterCharacter.GetLastFeatUsedTime", FeatClass); } + FVector* GetLastSweepLocation(FVector* result) { return NativeCall(this, "AShooterCharacter.GetLastSweepLocation", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + FString* GetLongDescriptiveName(FString* result) { return NativeCall(this, "AShooterCharacter.GetLongDescriptiveName", result); } + float GetMaxCursorHUDDistance(AShooterPlayerController* PC) { return NativeCall(this, "AShooterCharacter.GetMaxCursorHUDDistance", PC); } + float GetMaxGrapplePullMass() { return NativeCall(this, "AShooterCharacter.GetMaxGrapplePullMass"); } + float GetMaxSpeedModifier() { return NativeCall(this, "AShooterCharacter.GetMaxSpeedModifier"); } + UPrimalPlayerData* GetMyPlayerData() { return NativeCall(this, "AShooterCharacter.GetMyPlayerData"); } + int GetNextWeaponItemID(bool bPrimary) { return NativeCall(this, "AShooterCharacter.GetNextWeaponItemID", bPrimary); } + APrimalDinoCharacter* GetRidingDino() { return NativeCall(this, "AShooterCharacter.GetRidingDino"); } + UAnimSequence* GetOverridenAnimSequence(UAnimSequence* AnimSeq) { return NativeCall(this, "AShooterCharacter.GetOverridenAnimSequence", AnimSeq); } + UAnimMontage* GetOverridenMontage(UAnimMontage* AnimMontage) { return NativeCall(this, "AShooterCharacter.GetOverridenMontage", AnimMontage); } + FRotator* GetPassengerAttachedRotation(FRotator* result) { return NativeCall(this, "AShooterCharacter.GetPassengerAttachedRotation", result); } + FVector* GetPawnViewLocation(FVector* result, bool bAllTransforms) { return NativeCall(this, "AShooterCharacter.GetPawnViewLocation", result, bAllTransforms); } + float GetPercentageOfFacialHairGrowth() { return NativeCall(this, "AShooterCharacter.GetPercentageOfFacialHairGrowth"); } + float GetPercentageOfHeadHairGrowth() { return NativeCall(this, "AShooterCharacter.GetPercentageOfHeadHairGrowth"); } + UPrimalPlayerData* GetPlayerData() { return NativeCall(this, "AShooterCharacter.GetPlayerData"); } + float GetRecoilMultiplier() { return NativeCall(this, "AShooterCharacter.GetRecoilMultiplier"); } + float GetRidingDinoAnimSpeedRatio() { return NativeCall(this, "AShooterCharacter.GetRidingDinoAnimSpeedRatio"); } + float GetRunningSpeedModifier(bool bIsForDefaultSpeed) { return NativeCall(this, "AShooterCharacter.GetRunningSpeedModifier", bIsForDefaultSpeed); } + AActor* GetSecondaryMountedActor() { return NativeCall(this, "AShooterCharacter.GetSecondaryMountedActor"); } + FString* GetShortName(FString* result) { return NativeCall(this, "AShooterCharacter.GetShortName", result); } + AShooterPlayerController* GetSpawnedForController() { return NativeCall(this, "AShooterCharacter.GetSpawnedForController"); } + float GetTargetingDesirability(ITargetableInterface* Attacker) { return NativeCall(this, "AShooterCharacter.GetTargetingDesirability", Attacker); } + float GetTargetingSpeedModifier() { return NativeCall(this, "AShooterCharacter.GetTargetingSpeedModifier"); } + unsigned int GetUniqueNetIdTypeHash() { return NativeCall(this, "AShooterCharacter.GetUniqueNetIdTypeHash"); } + AShooterWeapon* GetWeapon() { return NativeCall(this, "AShooterCharacter.GetWeapon"); } + void GiveMapWeapon(unsigned int typeIndex) { NativeCall(this, "AShooterCharacter.GiveMapWeapon", typeIndex); } + void HideWeapon() { NativeCall(this, "AShooterCharacter.HideWeapon"); } + void InitiateTrade_Implementation(unsigned __int64 OtherPlayerID, bool bAcceptingTrade) { NativeCall(this, "AShooterCharacter.InitiateTrade_Implementation", OtherPlayerID, bAcceptingTrade); } + void InviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString AllianceName, FString InviteeName) { NativeCall(this, "AShooterCharacter.InviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviteeName); } + bool IsAwaitingSeamlessTravelController() { return NativeCall(this, "AShooterCharacter.IsAwaitingSeamlessTravelController"); } + bool IsCharacterHardAttached(bool bIgnoreRiding, bool bIgnoreCarried) { return NativeCall(this, "AShooterCharacter.IsCharacterHardAttached", bIgnoreRiding, bIgnoreCarried); } + bool IsCrafting() { return NativeCall(this, "AShooterCharacter.IsCrafting"); } + bool IsCurrentPassengerLimitCameraYaw() { return NativeCall(this, "AShooterCharacter.IsCurrentPassengerLimitCameraYaw"); } + bool IsFemale() { return NativeCall(this, "AShooterCharacter.IsFemale"); } + bool IsFirstPerson() { return NativeCall(this, "AShooterCharacter.IsFirstPerson"); } + bool IsGameInputAllowed() { return NativeCall(this, "AShooterCharacter.IsGameInputAllowed"); } + bool IsGrapplingHardAttached(bool bHardAttachedOnlyIfImpacted) { return NativeCall(this, "AShooterCharacter.IsGrapplingHardAttached", bHardAttachedOnlyIfImpacted); } + bool IsInCombat() { return NativeCall(this, "AShooterCharacter.IsInCombat"); } + static bool IsIndoorsAtLoc(UWorld* theWorld, FVector* actorLoc) { return NativeCall(nullptr, "AShooterCharacter.IsIndoorsAtLoc", theWorld, actorLoc); } + bool IsNearTopOfLadder() { return NativeCall(this, "AShooterCharacter.IsNearTopOfLadder"); } + bool IsOutside() { return NativeCall(this, "AShooterCharacter.IsOutside"); } + bool IsPlayingUpperBodyCallAnimation_Implementation() { return NativeCall(this, "AShooterCharacter.IsPlayingUpperBodyCallAnimation_Implementation"); } + bool IsProneOrSitting(bool bIgnoreLockedToSeat) { return NativeCall(this, "AShooterCharacter.IsProneOrSitting", bIgnoreLockedToSeat); } + bool IsRunning(bool bIncludeFalling, bool bIncludeRunTurning) { return NativeCall(this, "AShooterCharacter.IsRunning", bIncludeFalling, bIncludeRunTurning); } + bool IsSubmerged(bool bDontCheckSwimming, bool bUseHalfThreshold, bool bForceCheck, bool bFromVolumeChange) { return NativeCall(this, "AShooterCharacter.IsSubmerged", bDontCheckSwimming, bUseHalfThreshold, bForceCheck, bFromVolumeChange); } + bool IsUsingClimbingPick() { return NativeCall(this, "AShooterCharacter.IsUsingClimbingPick"); } + bool IsValidForStatusRecovery() { return NativeCall(this, "AShooterCharacter.IsValidForStatusRecovery"); } + bool IsValidUnStasisCaster() { return NativeCall(this, "AShooterCharacter.IsValidUnStasisCaster"); } + bool IsWatered() { return NativeCall(this, "AShooterCharacter.IsWatered"); } + void LaunchMountedDino() { NativeCall(this, "AShooterCharacter.LaunchMountedDino"); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "AShooterCharacter.LinkedPlayerIDString", result); } + void LocalPossessedBy(APlayerController* ByController) { NativeCall(this, "AShooterCharacter.LocalPossessedBy", ByController); } + void LocalStartCaptainOrder(int OrderIndex) { NativeCall(this, "AShooterCharacter.LocalStartCaptainOrder", OrderIndex); } + void LocalStopCaptainOrder(int OrderIndex) { NativeCall(this, "AShooterCharacter.LocalStopCaptainOrder", OrderIndex); } + float ModifyAirControl(float AirControlIn) { return NativeCall(this, "AShooterCharacter.ModifyAirControl", AirControlIn); } + void ModifyFirstPersonCameraLocation(FVector* Loc, float DeltaTime) { NativeCall(this, "AShooterCharacter.ModifyFirstPersonCameraLocation", Loc, DeltaTime); } + bool MoveToInnerLoop(AActor* TargetToMove, FVector MoveToLoc, AActor* TargetActor) { return NativeCall(this, "AShooterCharacter.MoveToInnerLoop", TargetToMove, MoveToLoc, TargetActor); } + void MultiClearTradeID_Implementation() { NativeCall(this, "AShooterCharacter.MultiClearTradeID_Implementation"); } + void NetSetBodyFatPercent_Implementation(float thePercent) { NativeCall(this, "AShooterCharacter.NetSetBodyFatPercent_Implementation", thePercent); } + void NetSetFacialHairPercent_Implementation(float thePercent, int newFacialHairIndex) { NativeCall(this, "AShooterCharacter.NetSetFacialHairPercent_Implementation", thePercent, newFacialHairIndex); } + void NetSetHeadHairPercent_Implementation(float thePercent, int newHeadHairIndex) { NativeCall(this, "AShooterCharacter.NetSetHeadHairPercent_Implementation", thePercent, newHeadHairIndex); } + void NetSetMaxWetness_Implementation() { NativeCall(this, "AShooterCharacter.NetSetMaxWetness_Implementation"); } + void NetSetOverrideFacialHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterCharacter.NetSetOverrideFacialHairColor_Implementation", HairColor); } + void NetSetOverrideHeadHairColor_Implementation(FLinearColor HairColor) { NativeCall(this, "AShooterCharacter.NetSetOverrideHeadHairColor_Implementation", HairColor); } + void NetSimulatedForceUpdateAimedActors_Implementation(float OverrideMaxDistance) { NativeCall(this, "AShooterCharacter.NetSimulatedForceUpdateAimedActors_Implementation", OverrideMaxDistance); } + void NotifyBumpedPawn(APawn* BumpedPawn) { NativeCall(this, "AShooterCharacter.NotifyBumpedPawn", BumpedPawn); } + void NotifyEquippedItems() { NativeCall(this, "AShooterCharacter.NotifyEquippedItems"); } + void NotifySwitchedCameraPerspective(bool bToFirstPerson) { NativeCall(this, "AShooterCharacter.NotifySwitchedCameraPerspective", bToFirstPerson); } + void OnBeginDrag_Implementation(APrimalCharacter* Dragged, int BoneIndex, bool bWithGrapHook) { NativeCall(this, "AShooterCharacter.OnBeginDrag_Implementation", Dragged, BoneIndex, bWithGrapHook); } + void OnCameraUpdate(FVector* CameraLocation, FRotator* CameraRotation) { NativeCall(this, "AShooterCharacter.OnCameraUpdate", CameraLocation, CameraRotation); } + void OnEndCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "AShooterCharacter.OnEndCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } + void OnEndDrag_Implementation() { NativeCall(this, "AShooterCharacter.OnEndDrag_Implementation"); } + void OnEnteredDiscoveryZone(int ZoneId) { NativeCall(this, "AShooterCharacter.OnEnteredDiscoveryZone", ZoneId); } + void OnExitedDiscoveryZone(int ZoneId) { NativeCall(this, "AShooterCharacter.OnExitedDiscoveryZone", ZoneId); } + void OnFailedJumped() { NativeCall(this, "AShooterCharacter.OnFailedJumped"); } + void OnMovementModeChanged(EMovementMode PrevMovementMode, char PreviousCustomMode) { NativeCall(this, "AShooterCharacter.OnMovementModeChanged", PrevMovementMode, PreviousCustomMode); } + void OnPressCrouch() { NativeCall(this, "AShooterCharacter.OnPressCrouch"); } + void OnPressCrouchProneToggle() { NativeCall(this, "AShooterCharacter.OnPressCrouchProneToggle"); } + void OnPressProne() { NativeCall(this, "AShooterCharacter.OnPressProne"); } + void OnPressReload() { NativeCall(this, "AShooterCharacter.OnPressReload"); } + void OnPressReloadAll() { NativeCall(this, "AShooterCharacter.OnPressReloadAll"); } + void OnPrimalCharacterSleeped() { NativeCall(this, "AShooterCharacter.OnPrimalCharacterSleeped"); } + void OnReleaseCrouchProneToggle() { NativeCall(this, "AShooterCharacter.OnReleaseCrouchProneToggle"); } + void OnReload() { NativeCall(this, "AShooterCharacter.OnReload"); } + void OnRep_BonePresets() { NativeCall(this, "AShooterCharacter.OnRep_BonePresets"); } + void OnRep_CurrentVoiceModeAsUInt32() { NativeCall(this, "AShooterCharacter.OnRep_CurrentVoiceModeAsUInt32"); } + void OnRep_CurrentWeapon(AShooterWeapon* LastWeapon) { NativeCall(this, "AShooterCharacter.OnRep_CurrentWeapon", LastWeapon); } + void OnRep_HatHidden() { NativeCall(this, "AShooterCharacter.OnRep_HatHidden"); } + void OnRep_LadderAttachment() { NativeCall(this, "AShooterCharacter.OnRep_LadderAttachment"); } + void OnRep_PlayerBadgeGroup() { NativeCall(this, "AShooterCharacter.OnRep_PlayerBadgeGroup"); } + void OnRep_TattooPaintingComponent() { NativeCall(this, "AShooterCharacter.OnRep_TattooPaintingComponent"); } + void OnRep_VivoxUsername() { NativeCall(this, "AShooterCharacter.OnRep_VivoxUsername"); } + void OnSpawnPointsRecieved() { NativeCall(this, "AShooterCharacter.OnSpawnPointsRecieved"); } + void OnStartAltFire() { NativeCall(this, "AShooterCharacter.OnStartAltFire"); } + void OnStartCrouch(float HalfHeightAdjust, float ScaledHalfHeightAdjust) { NativeCall(this, "AShooterCharacter.OnStartCrouch", HalfHeightAdjust, ScaledHalfHeightAdjust); } + void OnStartFire(bool bFromGamepadRight, int weaponAttackIndex, bool bDoLeftSide, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterCharacter.OnStartFire", bFromGamepadRight, weaponAttackIndex, bDoLeftSide, bOverrideCurrentAttack); } + void OnStartRunning() { NativeCall(this, "AShooterCharacter.OnStartRunning"); } + void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterCharacter.OnStartTargeting", bFromGamepadLeft); } + void OnStopAltFire() { NativeCall(this, "AShooterCharacter.OnStopAltFire"); } + void OnStopFire(bool bFromGamepadRight, int weaponAttackIndex) { NativeCall(this, "AShooterCharacter.OnStopFire", bFromGamepadRight, weaponAttackIndex); } + void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "AShooterCharacter.OnStopTargeting", bFromGamepadLeft); } + void OnVoiceTalkingStateChanged(bool talking, bool IsUsingSuperRange) { NativeCall(this, "AShooterCharacter.OnVoiceTalkingStateChanged", talking, IsUsingSuperRange); } + void OrbitCamOn() { NativeCall(this, "AShooterCharacter.OrbitCamOn"); } + void OrbitCamToggle() { NativeCall(this, "AShooterCharacter.OrbitCamToggle"); } + FVector* OverrideNewFallVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, float DeltaTime) { return NativeCall(this, "AShooterCharacter.OverrideNewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } + FVector* OverrideSwimmingVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, const float* FluidFriction, const float* NetBuoyancy, float DeltaTime) { return NativeCall(this, "AShooterCharacter.OverrideSwimmingVelocity", result, InitialVelocity, Gravity, FluidFriction, NetBuoyancy, DeltaTime); } + FVector* OverrideWalkingVelocity(FVector* result, FVector* InitialVelocity, const float* Friction, float DeltaTime) { return NativeCall(this, "AShooterCharacter.OverrideWalkingVelocity", result, InitialVelocity, Friction, DeltaTime); } + void PlayDrinkingAnimation() { NativeCall(this, "AShooterCharacter.PlayDrinkingAnimation"); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "AShooterCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayEmoteAnimation_Implementation(char EmoteIndex) { NativeCall(this, "AShooterCharacter.PlayEmoteAnimation_Implementation", EmoteIndex); } + void PlayJumpAnim() { NativeCall(this, "AShooterCharacter.PlayJumpAnim"); } + void PlayLandedAnim() { NativeCall(this, "AShooterCharacter.PlayLandedAnim"); } + void PlaySpawnIntro() { NativeCall(this, "AShooterCharacter.PlaySpawnIntro"); } + void PlayTalkingAnimation() { NativeCall(this, "AShooterCharacter.PlayTalkingAnimation"); } + void Poop(bool bForcePoop) { NativeCall(this, "AShooterCharacter.Poop", bForcePoop); } + void PossessedBy(AController* InController) { NativeCall(this, "AShooterCharacter.PossessedBy", InController); } + void PostInitializeComponents() { NativeCall(this, "AShooterCharacter.PostInitializeComponents"); } + void PreApplyAccumulatedForces(float DeltaSeconds, FVector* PendingImpulseToApply, FVector* PendingForceToApply) { NativeCall(this, "AShooterCharacter.PreApplyAccumulatedForces", DeltaSeconds, PendingImpulseToApply, PendingForceToApply); } + void PreInitializeComponents() { NativeCall(this, "AShooterCharacter.PreInitializeComponents"); } + bool PreventMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "AShooterCharacter.PreventMovementMode", NewMovementMode, NewCustomMode); } + void RecalculateBaseEyeHeight() { NativeCall(this, "AShooterCharacter.RecalculateBaseEyeHeight"); } + void RefreshDefaultAttachments(AActor* UseOtherActor) { NativeCall(this, "AShooterCharacter.RefreshDefaultAttachments", UseOtherActor); } + void RefreshTribeName() { NativeCall(this, "AShooterCharacter.RefreshTribeName"); } + void RegisterActorTickFunctions(bool bRegister, bool bSaveAndRestoreTickState) { NativeCall(this, "AShooterCharacter.RegisterActorTickFunctions", bRegister, bSaveAndRestoreTickState); } + void ReleaseSeatingStructureHandIK() { NativeCall(this, "AShooterCharacter.ReleaseSeatingStructureHandIK"); } + void RemoveAttachments() { NativeCall(this, "AShooterCharacter.RemoveAttachments"); } + void RenamePlayer_Implementation(FString* NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer_Implementation", NewName); } + void ResetBase() { NativeCall(this, "AShooterCharacter.ResetBase"); } + void ServerCallAggressive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallAggressive_Implementation"); } + void ServerCallAttackTarget_Implementation(AActor* TheTarget) { NativeCall(this, "AShooterCharacter.ServerCallAttackTarget_Implementation", TheTarget); } + void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } + void ServerCallFollowOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } + void ServerCallFollow_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallFollow_Implementation"); } + void ServerCallMoveToRaft_Implementation(FVector MoveToRelLoc, APrimalRaft* TargetRaft, int ToDeckIndex) { NativeCall(this, "AShooterCharacter.ServerCallMoveToRaft_Implementation", MoveToRelLoc, TargetRaft, ToDeckIndex); } + void ServerCallMoveTo_Implementation(FVector MoveToLoc, AActor* TargetActor) { NativeCall(this, "AShooterCharacter.ServerCallMoveTo_Implementation", MoveToLoc, TargetActor); } + void ServerCallNeutral_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallNeutral_Implementation"); } + void ServerCallPassive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallPassive_Implementation"); } + void ServerCallSetAggressive_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallSetAggressive_Implementation"); } + void ServerCallStayOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "AShooterCharacter.ServerCallStayOne_Implementation", ForDinoChar); } + void ServerCallStay_Implementation() { NativeCall(this, "AShooterCharacter.ServerCallStay_Implementation"); } + void ServerCheckDrinkingWater_Implementation() { NativeCall(this, "AShooterCharacter.ServerCheckDrinkingWater_Implementation"); } + void ServerClearSwitchingWeapon_Implementation(bool bOnlyIfDefaultWeapon, bool bClientRequestNextWeaponID) { NativeCall(this, "AShooterCharacter.ServerClearSwitchingWeapon_Implementation", bOnlyIfDefaultWeapon, bClientRequestNextWeaponID); } + void ServerDetachGrapHookCable_Implementation(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.ServerDetachGrapHookCable_Implementation", bDoUpwardsJump, UpwardsJumpYaw); } + void ServerFireBallistaProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerFireBallistaProjectile_Implementation", Origin, ShootDir); } + void ServerForceUpdatedAimedActors(float OverrideMaxDistance, bool bReplicateToSimulatedClients) { NativeCall(this, "AShooterCharacter.ServerForceUpdatedAimedActors", OverrideMaxDistance, bReplicateToSimulatedClients); } + void ServerGiveDefaultWeapon_Implementation(bool bOnlyGiveDefaultWeapon) { NativeCall(this, "AShooterCharacter.ServerGiveDefaultWeapon_Implementation", bOnlyGiveDefaultWeapon); } + void ServerLaunchMountedDino_Implementation() { NativeCall(this, "AShooterCharacter.ServerLaunchMountedDino_Implementation"); } + void ServerNetEndClimbingLadder_Implementation(bool bIsClimbOver, FVector ClimbOverLoc, float RightDir) { NativeCall(this, "AShooterCharacter.ServerNetEndClimbingLadder_Implementation", bIsClimbOver, ClimbOverLoc, RightDir); } + void ServerPrepareForSeamlessTravel_Implementation() { NativeCall(this, "AShooterCharacter.ServerPrepareForSeamlessTravel_Implementation"); } + void ServerRequestCaptainOrder_Implementation(int OrderIndex, TArray* GroupsIndex) { NativeCall*>(this, "AShooterCharacter.ServerRequestCaptainOrder_Implementation", OrderIndex, GroupsIndex); } + void ServerRequestFeatCooldowns_Implementation() { NativeCall(this, "AShooterCharacter.ServerRequestFeatCooldowns_Implementation"); } + void ServerRequestStopCaptainOrder_Implementation(int OrderIndex, TArray* GroupsIndex, TArray* StationsToFire, AActor* OrderTarget) { NativeCall*, TArray*, AActor*>(this, "AShooterCharacter.ServerRequestStopCaptainOrder_Implementation", OrderIndex, GroupsIndex, StationsToFire, OrderTarget); } + void ServerResyncNameToClients() { NativeCall(this, "AShooterCharacter.ServerResyncNameToClients"); } + void ServerSailRiderSetRotationInput_Implementation(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetRotationInput_Implementation", Val); } + void ServerSailRiderSetThrottleInput_Implementation(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetThrottleInput_Implementation", Val); } + void ServerSailRiderSetThrottleValue_Implementation(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetThrottleValue_Implementation", Val); } + void ServerSetBallistaNewRotation_Implementation(float Pitch, float Yaw) { NativeCall(this, "AShooterCharacter.ServerSetBallistaNewRotation_Implementation", Pitch, Yaw); } + void ServerSetCaptainsOrderToLastPassive_Implementation(ECaptainOrder::Type OrderIndexToCancelFrom, TArray* GroupsIndex) { NativeCall*>(this, "AShooterCharacter.ServerSetCaptainsOrderToLastPassive_Implementation", OrderIndexToCancelFrom, GroupsIndex); } + void ServerSetIsVoiceActive_Implementation(bool IsActive) { NativeCall(this, "AShooterCharacter.ServerSetIsVoiceActive_Implementation", IsActive); } + void ServerSetViewingInventory_Implementation(bool bIsViewing) { NativeCall(this, "AShooterCharacter.ServerSetViewingInventory_Implementation", bIsViewing); } + void ServerStartSurfaceCameraForPassenger_Implementation(float yaw, float roll, float pitch, bool bShouldInvertInput) { NativeCall(this, "AShooterCharacter.ServerStartSurfaceCameraForPassenger_Implementation", yaw, roll, pitch, bShouldInvertInput); } + void ServerStopFireBallista_Implementation() { NativeCall(this, "AShooterCharacter.ServerStopFireBallista_Implementation"); } + void ServerSwitchMap_Implementation(unsigned int typeIndex) { NativeCall(this, "AShooterCharacter.ServerSwitchMap_Implementation", typeIndex); } + void ServerTellNPCCaptainSailFacingDirection_Implementation(float YawDir) { NativeCall(this, "AShooterCharacter.ServerTellNPCCaptainSailFacingDirection_Implementation", YawDir); } + void ServerTryToCycleBallistaAmmoType_Implementation() { NativeCall(this, "AShooterCharacter.ServerTryToCycleBallistaAmmoType_Implementation"); } + void ServerTryToReloadBallista_Implementation() { NativeCall(this, "AShooterCharacter.ServerTryToReloadBallista_Implementation"); } + void ServerUpdateCurrentVoiceModeAsUInt32_Implementation(unsigned int NewValue) { NativeCall(this, "AShooterCharacter.ServerUpdateCurrentVoiceModeAsUInt32_Implementation", NewValue); } + void ServerWhistleCloseSails_Implementation() { NativeCall(this, "AShooterCharacter.ServerWhistleCloseSails_Implementation"); } + void ServerWhistleOpenSails_Implementation() { NativeCall(this, "AShooterCharacter.ServerWhistleOpenSails_Implementation"); } + void SetActorHiddenInGame(bool bNewHidden) { NativeCall(this, "AShooterCharacter.SetActorHiddenInGame", bNewHidden); } + void SetCameraMode(bool bFirstperson, bool bIgnoreSettingFirstPersonRiding) { NativeCall(this, "AShooterCharacter.SetCameraMode", bFirstperson, bIgnoreSettingFirstPersonRiding); } + void SetCarriedPitchYaw_Implementation(float NewCarriedPitch, float NewCarriedYaw) { NativeCall(this, "AShooterCharacter.SetCarriedPitchYaw_Implementation", NewCarriedPitch, NewCarriedYaw); } + void SetCarryingDino(APrimalDinoCharacter* aDino) { NativeCall(this, "AShooterCharacter.SetCarryingDino", aDino); } + void SetCharacterMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "AShooterCharacter.SetCharacterMeshesMaterialScalarParamValue", ParamName, Value); } + void SetCurrentWeapon(AShooterWeapon* NewWeapon, AShooterWeapon* LastWeapon) { NativeCall(this, "AShooterCharacter.SetCurrentWeapon", NewWeapon, LastWeapon); } + void SetEnableHandIK(bool bLeft, bool bRight, bool bBindForwad) { NativeCall(this, "AShooterCharacter.SetEnableHandIK", bLeft, bRight, bBindForwad); } + void SetMiniGameReloadCounter(int NewValue) { NativeCall(this, "AShooterCharacter.SetMiniGameReloadCounter", NewValue); } + void SetRidingDino(APrimalDinoCharacter* aDino) { NativeCall(this, "AShooterCharacter.SetRidingDino", aDino); } + void SetRidingDinoAsPassenger(APrimalDinoCharacter* aDino, FSaddlePassengerSeatDefinition* SeatDefinition) { NativeCall(this, "AShooterCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } + void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "AShooterCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } + bool ShouldIKBeForceDisabled() { return NativeCall(this, "AShooterCharacter.ShouldIKBeForceDisabled"); } + bool ShouldOverrideNewFallVelocity() { return NativeCall(this, "AShooterCharacter.ShouldOverrideNewFallVelocity"); } + bool ShouldOverrideSwimmingVelocity() { return NativeCall(this, "AShooterCharacter.ShouldOverrideSwimmingVelocity"); } + bool ShouldOverrideWalkingVelocity() { return NativeCall(this, "AShooterCharacter.ShouldOverrideWalkingVelocity"); } + bool ShouldReplicateRotPitch() { return NativeCall(this, "AShooterCharacter.ShouldReplicateRotPitch"); } + bool ShouldStoreSecondaryItemID(UPrimalItem* SecondaryItem) { return NativeCall(this, "AShooterCharacter.ShouldStoreSecondaryItemID", SecondaryItem); } + bool ShouldTempDisableMultiFabrik() { return NativeCall(this, "AShooterCharacter.ShouldTempDisableMultiFabrik"); } + void ShowDiscoveryExplorerNoteOnDelay(int ExplorerNoteIndex) { NativeCall(this, "AShooterCharacter.ShowDiscoveryExplorerNoteOnDelay", ExplorerNoteIndex); } + void ShowWeapon() { NativeCall(this, "AShooterCharacter.ShowWeapon"); } + void StartCameraTransition(float Duration) { NativeCall(this, "AShooterCharacter.StartCameraTransition", Duration); } + void StartWeaponSwitch(UPrimalItem* aPrimalItem, bool bDontClearLastWeapon) { NativeCall(this, "AShooterCharacter.StartWeaponSwitch", aPrimalItem, bDontClearLastWeapon); } + void StasisingCharacter() { NativeCall(this, "AShooterCharacter.StasisingCharacter"); } + AActor* StructurePlacementUseAlternateOriginActor() { return NativeCall(this, "AShooterCharacter.StructurePlacementUseAlternateOriginActor"); } + void SwitchMap(unsigned int typeIndex) { NativeCall(this, "AShooterCharacter.SwitchMap", typeIndex); } + void TakeSeatingStructureHandIK() { NativeCall(this, "AShooterCharacter.TakeSeatingStructureHandIK"); } + void TargetingTeamChanged() { NativeCall(this, "AShooterCharacter.TargetingTeamChanged"); } + bool TeleportTo(FVector* DestLocation, FRotator* DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AShooterCharacter.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + void TempDampenInputAcceleration() { NativeCall(this, "AShooterCharacter.TempDampenInputAcceleration"); } + void Tick(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.Tick", DeltaSeconds); } + void TickUpdateHandIK(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.TickUpdateHandIK", DeltaSeconds); } + void TogglePerspective() { NativeCall(this, "AShooterCharacter.TogglePerspective"); } + bool TryAccessInventory() { return NativeCall(this, "AShooterCharacter.TryAccessInventory"); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "AShooterCharacter.TryMultiUse", ForPC, UseIndex); } + void Unstasis() { NativeCall(this, "AShooterCharacter.Unstasis"); } + void UpdateCarriedLocationAndRotation(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.UpdateCarriedLocationAndRotation", DeltaSeconds); } + void UpdateGrapHook(float DeltaSeconds) { NativeCall(this, "AShooterCharacter.UpdateGrapHook", DeltaSeconds); } + void UpdateHair() { NativeCall(this, "AShooterCharacter.UpdateHair"); } + void UpdatePawnMeshes(bool bForceThirdPerson, bool bForceFlush) { NativeCall(this, "AShooterCharacter.UpdatePawnMeshes", bForceThirdPerson, bForceFlush); } + void UpdateSeatingStructureHandIK() { NativeCall(this, "AShooterCharacter.UpdateSeatingStructureHandIK"); } + void UpdateSwimmingState() { NativeCall(this, "AShooterCharacter.UpdateSwimmingState"); } + void UpdateTopTribesGroup() { NativeCall(this, "AShooterCharacter.UpdateTopTribesGroup"); } + void UpdateTransponders() { NativeCall(this, "AShooterCharacter.UpdateTransponders"); } + void UpdateWeaponHandIK() { NativeCall(this, "AShooterCharacter.UpdateWeaponHandIK"); } + bool UseAdditiveStandingAnim() { return NativeCall(this, "AShooterCharacter.UseAdditiveStandingAnim"); } + bool UseAltAimOffsetAnim() { return NativeCall(this, "AShooterCharacter.UseAltAimOffsetAnim"); } + bool UseAlternateStandingAnim() { return NativeCall(this, "AShooterCharacter.UseAlternateStandingAnim"); } + bool UseSwimmingTPVAimOffset() { return NativeCall(this, "AShooterCharacter.UseSwimmingTPVAimOffset"); } + bool ValidToRestoreForPC(AShooterPlayerController* aPC) { return NativeCall(this, "AShooterCharacter.ValidToRestoreForPC", aPC); } + void WasPushed(ACharacter* ByOtherCharacter) { NativeCall(this, "AShooterCharacter.WasPushed", ByOtherCharacter); } + void ZoomIn() { NativeCall(this, "AShooterCharacter.ZoomIn"); } + void ZoomOut() { NativeCall(this, "AShooterCharacter.ZoomOut"); } + void AttachToLadder(USceneComponent* Parent) { NativeCall(this, "AShooterCharacter.AttachToLadder", Parent); } + void ClientClearTribeRequest() { NativeCall(this, "AShooterCharacter.ClientClearTribeRequest"); } + void ClientInviteToAlliance(int RequestingTeam, unsigned int AllianceID, FString* AllianceName, FString* InviteeName) { NativeCall(this, "AShooterCharacter.ClientInviteToAlliance", RequestingTeam, AllianceID, AllianceName, InviteeName); } + void ClientNetEndClimbingLadder() { NativeCall(this, "AShooterCharacter.ClientNetEndClimbingLadder"); } + void ClientNotifyTribeRequest(FString* RequestTribeName, AShooterCharacter* PlayerCharacter) { NativeCall(this, "AShooterCharacter.ClientNotifyTribeRequest", RequestTribeName, PlayerCharacter); } + void ClientOnDiscoveredZone(int ZoneId, int NewNumZonesDiscovered) { NativeCall(this, "AShooterCharacter.ClientOnDiscoveredZone", ZoneId, NewNumZonesDiscovered); } + void ClientOrderedAttackTarget(AActor* attackTarget) { NativeCall(this, "AShooterCharacter.ClientOrderedAttackTarget", attackTarget); } + void ClientOrderedMoveTo(FVector MoveToLoc, AActor* MoveToActorRef) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveTo", MoveToLoc, MoveToActorRef); } + void ClientOrderedMoveToRaft(FVector MoveToRelLoc, APrimalRaft* MoveToRaftRef, int ToDeckIndex) { NativeCall(this, "AShooterCharacter.ClientOrderedMoveToRaft", MoveToRelLoc, MoveToRaftRef, ToDeckIndex); } + void ClientPlayHarvestAnim() { NativeCall(this, "AShooterCharacter.ClientPlayHarvestAnim"); } + void ClientReceiveFeatCooldowns(TArray* theFeatCooldowns) { NativeCall*>(this, "AShooterCharacter.ClientReceiveFeatCooldowns", theFeatCooldowns); } + void ClientReceiveNextWeaponID(FItemNetID theItemID) { NativeCall(this, "AShooterCharacter.ClientReceiveNextWeaponID", theItemID); } + void ClientTradeNotification(AShooterCharacter* OtherPlayer) { NativeCall(this, "AShooterCharacter.ClientTradeNotification", OtherPlayer); } + void ClientUpdateTranspondersInfo(TArray* TranspondersInfo, bool bNewData) { NativeCall*, bool>(this, "AShooterCharacter.ClientUpdateTranspondersInfo", TranspondersInfo, bNewData); } + void DetachFromLadder(bool bIgnoreOnAutonomousProxy) { NativeCall(this, "AShooterCharacter.DetachFromLadder", bIgnoreOnAutonomousProxy); } + void DetachGrapHookCable(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.DetachGrapHookCable", bDoUpwardsJump, UpwardsJumpYaw); } + void GameStateHandleEvent(FName NameParam, FVector VecParam) { NativeCall(this, "AShooterCharacter.GameStateHandleEvent", NameParam, VecParam); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterCharacter.GetPrivateStaticClass", Package); } + void InitiateTrade(unsigned __int64 OtherPlayerID, bool bAcceptingTrade) { NativeCall(this, "AShooterCharacter.InitiateTrade", OtherPlayerID, bAcceptingTrade); } + bool IsPlayingUpperBodyCallAnimation() { return NativeCall(this, "AShooterCharacter.IsPlayingUpperBodyCallAnimation"); } + void MultiClearTradeID() { NativeCall(this, "AShooterCharacter.MultiClearTradeID"); } + void NetSetBodyFatPercent(float thePercent) { NativeCall(this, "AShooterCharacter.NetSetBodyFatPercent", thePercent); } + void NetSetFacialHairPercent(float thePercent, int newFacialHairIndex) { NativeCall(this, "AShooterCharacter.NetSetFacialHairPercent", thePercent, newFacialHairIndex); } + void NetSetHeadHairPercent(float thePercent, int newHeadHairIndex) { NativeCall(this, "AShooterCharacter.NetSetHeadHairPercent", thePercent, newHeadHairIndex); } + void NetSetMaxWetness() { NativeCall(this, "AShooterCharacter.NetSetMaxWetness"); } + void NetSimulatedForceUpdateAimedActors(float OverrideMaxDistance) { NativeCall(this, "AShooterCharacter.NetSimulatedForceUpdateAimedActors", OverrideMaxDistance); } + void PlayEmoteAnimation(char EmoteIndex) { NativeCall(this, "AShooterCharacter.PlayEmoteAnimation", EmoteIndex); } + void RenamePlayer(FString* NewName) { NativeCall(this, "AShooterCharacter.RenamePlayer", NewName); } + void ServerCheckDrinkingWater() { NativeCall(this, "AShooterCharacter.ServerCheckDrinkingWater"); } + void ServerDetachGrapHookCable(bool bDoUpwardsJump, float UpwardsJumpYaw) { NativeCall(this, "AShooterCharacter.ServerDetachGrapHookCable", bDoUpwardsJump, UpwardsJumpYaw); } + void ServerFireBallistaProjectile(FVector Origin, FVector_NetQuantizeNormal ShootDir) { NativeCall(this, "AShooterCharacter.ServerFireBallistaProjectile", Origin, ShootDir); } + void ServerLaunchMountedDino() { NativeCall(this, "AShooterCharacter.ServerLaunchMountedDino"); } + void ServerNetEndClimbingLadder(bool bIsClimbOver, FVector ClimbOverLoc, float RightDir) { NativeCall(this, "AShooterCharacter.ServerNetEndClimbingLadder", bIsClimbOver, ClimbOverLoc, RightDir); } + void ServerRequestCaptainOrder(int OrderIndex, TArray* GroupsIndex) { NativeCall*>(this, "AShooterCharacter.ServerRequestCaptainOrder", OrderIndex, GroupsIndex); } + void ServerRequestFeatCooldowns() { NativeCall(this, "AShooterCharacter.ServerRequestFeatCooldowns"); } + void ServerRequestStopCaptainOrder(int OrderIndex, TArray* GroupsIndex, TArray* StationsToFire, AActor* OrderTarget) { NativeCall*, TArray*, AActor*>(this, "AShooterCharacter.ServerRequestStopCaptainOrder", OrderIndex, GroupsIndex, StationsToFire, OrderTarget); } + void ServerSailRiderSetRotationInput(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetRotationInput", Val); } + void ServerSailRiderSetThrottleInput(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetThrottleInput", Val); } + void ServerSailRiderSetThrottleValue(float Val) { NativeCall(this, "AShooterCharacter.ServerSailRiderSetThrottleValue", Val); } + void ServerSetBallistaNewRotation(float Pitch, float Yaw) { NativeCall(this, "AShooterCharacter.ServerSetBallistaNewRotation", Pitch, Yaw); } + void ServerSetCaptainsOrderToLastPassive(ECaptainOrder::Type OrderIndexToCancelFrom, TArray* GroupsIndex) { NativeCall*>(this, "AShooterCharacter.ServerSetCaptainsOrderToLastPassive", OrderIndexToCancelFrom, GroupsIndex); } + void ServerSetViewingInventory(bool bIsViewing) { NativeCall(this, "AShooterCharacter.ServerSetViewingInventory", bIsViewing); } + void ServerStartSurfaceCameraForPassenger(float yaw, float pitch, float roll, bool bShouldInvertInput) { NativeCall(this, "AShooterCharacter.ServerStartSurfaceCameraForPassenger", yaw, pitch, roll, bShouldInvertInput); } + void ServerStopFireBallista() { NativeCall(this, "AShooterCharacter.ServerStopFireBallista"); } + void ServerSwitchMap(unsigned int typeIndex) { NativeCall(this, "AShooterCharacter.ServerSwitchMap", typeIndex); } + void ServerTellNPCCaptainSailFacingDirection(float YawDir) { NativeCall(this, "AShooterCharacter.ServerTellNPCCaptainSailFacingDirection", YawDir); } + void ServerTryToCycleBallistaAmmoType() { NativeCall(this, "AShooterCharacter.ServerTryToCycleBallistaAmmoType"); } + void ServerTryToReloadBallista() { NativeCall(this, "AShooterCharacter.ServerTryToReloadBallista"); } + void ServerUpdateCurrentVoiceModeAsUInt32(unsigned int NewValue) { NativeCall(this, "AShooterCharacter.ServerUpdateCurrentVoiceModeAsUInt32", NewValue); } + void ServerWhistleCloseSails() { NativeCall(this, "AShooterCharacter.ServerWhistleCloseSails"); } + void ServerWhistleOpenSails() { NativeCall(this, "AShooterCharacter.ServerWhistleOpenSails"); } + void SetCarriedPitchYaw(float NewCarriedPitch, float NewCarriedYaw) { NativeCall(this, "AShooterCharacter.SetCarriedPitchYaw", NewCarriedPitch, NewCarriedYaw); } + static void StaticRegisterNativesAShooterCharacter() { NativeCall(nullptr, "AShooterCharacter.StaticRegisterNativesAShooterCharacter"); } + AShooterPlayerController* GetShooterPC() { return NativeCall(this, "AShooterCharacter.GetShooterPC"); } +}; + +struct FPrimalPersistentCharacterStatsStruct +{ + unsigned __int16& CharacterStatusComponent_ExtraCharacterLevelField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_ExtraCharacterLevel"); } + float& CharacterStatusComponent_ExperiencePointsField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_ExperiencePoints"); } + int& PlayerState_TotalEngramPointsField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.PlayerState_TotalEngramPoints"); } + int& CharacterStatusComponent_HighestExtraCharacterLevelField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_HighestExtraCharacterLevel"); } + int& CharacterStatusComponent_LastRespecAtExtraCharacterLevelField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_LastRespecAtExtraCharacterLevel"); } + TArray& PerMapExplorerNoteUnlocksField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.PerMapExplorerNoteUnlocks"); } + TArray& EmoteUnlocksField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.EmoteUnlocks"); } + TArray& FeatUnlocksField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.FeatUnlocks"); } + TArray& ExtraDefaultItemsField() { return *GetNativePointerField*>(this, "FPrimalPersistentCharacterStatsStruct.ExtraDefaultItems"); } + TArray>& PlayerState_UnlockedSkillsField() { return *GetNativePointerField>*>(this, "FPrimalPersistentCharacterStatsStruct.PlayerState_UnlockedSkills"); } + FieldArray CharacterStatusComponent_NumberOfLevelUpPointsAppliedField() { return { this, "FPrimalPersistentCharacterStatsStruct.CharacterStatusComponent_NumberOfLevelUpPointsApplied" }; } + FieldArray, 10> PlayerState_DefaultItemSlotClassesField() { return { this, "FPrimalPersistentCharacterStatsStruct.PlayerState_DefaultItemSlotClasses" }; } + FieldArray PlayerState_DefaultItemSlotEngramsField() { return { this, "FPrimalPersistentCharacterStatsStruct.PlayerState_DefaultItemSlotEngrams" }; } + FieldArray, 10> PlayerState_FeatHotkeysField() { return { this, "FPrimalPersistentCharacterStatsStruct.PlayerState_FeatHotkeys" }; } + FieldArray DinoOrderGroupsField() { return { this, "FPrimalPersistentCharacterStatsStruct.DinoOrderGroups" }; } + int& CurrentlySelectedDinoOrderGroupField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.CurrentlySelectedDinoOrderGroup"); } + float& PercentageOfHeadHairGrowthField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.PercentageOfHeadHairGrowth"); } + float& PercentageOfFacialHairGrowthField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.PercentageOfFacialHairGrowth"); } + char& FacialHairIndexField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.FacialHairIndex"); } + char& HeadHairIndexField() { return *GetNativePointerField(this, "FPrimalPersistentCharacterStatsStruct.HeadHairIndex"); } + + // Functions + + FPrimalPersistentCharacterStatsStruct* operator=(FPrimalPersistentCharacterStatsStruct* __that) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.operator=", __that); } + bool IsPerMapExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(this, "FPrimalPersistentCharacterStatsStruct.IsPerMapExplorerNoteUnlocked", ExplorerNoteIndex); } + void ApplyToPrimalCharacter(APrimalCharacter* aChar, AShooterPlayerController* forPC, bool bIgnoreStats, bool bSetCurrentStatsToMax) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.ApplyToPrimalCharacter", aChar, forPC, bIgnoreStats, bSetCurrentStatsToMax); } + void GiveEngramsToPlayerState(APrimalCharacter* aChar, AShooterPlayerController* forPC) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.GiveEngramsToPlayerState", aChar, forPC); } + void UnlockEmote(FName EmoteName) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.UnlockEmote", EmoteName); } + void UnlockFeat(FName FeatName) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.UnlockFeat", FeatName); } + void UnlockPerMapExplorerNote(int ExplorerNoteIndex) { NativeCall(this, "FPrimalPersistentCharacterStatsStruct.UnlockPerMapExplorerNote", ExplorerNoteIndex); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalPersistentCharacterStatsStruct.StaticStruct"); } +}; + +struct FPrimalPlayerDataStruct +{ + unsigned __int64& PlayerDataIDField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.PlayerDataID"); } + FUniqueNetIdRepl& UniqueIDField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.UniqueID"); } + FString& SavedNetworkAddressField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.SavedNetworkAddress"); } + FString& PlayerNameField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.PlayerName"); } + unsigned int& LocalPlayerIndexField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LocalPlayerIndex"); } + FPrimalPlayerCharacterConfigStruct& MyPlayerCharacterConfigField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.MyPlayerCharacterConfig"); } + int& LastPinCodeUsedField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LastPinCodeUsed"); } + FPrimalPersistentCharacterStatsStruct* MyPersistentCharacterStatsField() { return GetNativePointerField(this, "FPrimalPlayerDataStruct.MyPersistentCharacterStats"); } + int& TribeIDField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.TribeID"); } + TArray& AppIDSetField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.AppIDSet"); } + int& PlayerDataVersionField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.PlayerDataVersion"); } + unsigned int& NextAllowedTerritoryMessageTimeUTCField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NextAllowedTerritoryMessageTimeUTC"); } + unsigned int& NextAllowedTribeJoinTimeUTCField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NextAllowedTribeJoinTimeUTC"); } + unsigned int& BornAtUTCField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.BornAtUTC"); } + long double& NextAllowedRespawnTimeField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NextAllowedRespawnTime"); } + long double& LastTimeDiedToEnemyTeamField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LastTimeDiedToEnemyTeam"); } + float& AllowedRespawnIntervalField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.AllowedRespawnInterval"); } + TArray& FeatCooldownsField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.FeatCooldowns"); } + float& NumOfDeathsField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.NumOfDeaths"); } + int& SpawnDayNumberField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.SpawnDayNumber"); } + float& SpawnDayTimeField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.SpawnDayTime"); } + int& LastUniquePaintingIdField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.LastUniquePaintingId"); } + TArray& CompletedQuestPointOfInterestIDsField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.CompletedQuestPointOfInterestIDs"); } + TArray& CompletedQuestIDsField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.CompletedQuestIDs"); } + TArray& DiscoveredZonesNewField() { return *GetNativePointerField*>(this, "FPrimalPlayerDataStruct.DiscoveredZonesNew"); } + int& TotalDiscoveryZonePointsField() { return *GetNativePointerField(this, "FPrimalPlayerDataStruct.TotalDiscoveryZonePoints"); } + + // Bit fields + + BitFieldValue bFirstSpawned() { return { this, "FPrimalPlayerDataStruct.bFirstSpawned" }; } + BitFieldValue bUseSpectator() { return { this, "FPrimalPlayerDataStruct.bUseSpectator" }; } + + // Functions + + FPrimalPlayerDataStruct* operator=(FPrimalPlayerDataStruct* __that) { return NativeCall(this, "FPrimalPlayerDataStruct.operator=", __that); } + bool HasDiscoveredZone(int ZoneId) { return NativeCall(this, "FPrimalPlayerDataStruct.HasDiscoveredZone", ZoneId); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FPrimalPlayerDataStruct.StaticStruct"); } +}; + +struct UPrimalPlayerData +{ + FPrimalPlayerDataStruct* MyDataField() { return GetNativePointerField(this, "UPrimalPlayerData.MyData"); } + TArray MyPersistentBuffDatasField() { return *GetNativePointerField*>(this, "UPrimalPlayerData.MyPersistentBuffDatas"); } + bool& bIsLocalPlayerField() { return *GetNativePointerField(this, "UPrimalPlayerData.bIsLocalPlayer"); } + float& LastXPWritePercentField() { return *GetNativePointerField(this, "UPrimalPlayerData.LastXPWritePercent"); } + bool& bWaitingForTribeDataLoadField() { return *GetNativePointerField(this, "UPrimalPlayerData.bWaitingForTribeDataLoad"); } + + // Functions + + void ApplyToPlayerCharacter(AShooterPlayerState* ForPlayerState, AShooterCharacter* NewPawn) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerCharacter", ForPlayerState, NewPawn); } + void ApplyToPlayerState(AShooterPlayerState* aPlayerState) { NativeCall(this, "UPrimalPlayerData.ApplyToPlayerState", aPlayerState); } + void CreatedNewPlayerData(UWorld* ForWorld) { NativeCall(this, "UPrimalPlayerData.CreatedNewPlayerData", ForWorld); } + AShooterCharacter* FindCharacterForPlayer(UWorld* inWorld) { return NativeCall(this, "UPrimalPlayerData.FindCharacterForPlayer", inWorld); } + static UPrimalPlayerData* GetDataForID(unsigned __int64 PlayerDataID) { return NativeCall(nullptr, "UPrimalPlayerData.GetDataForID", PlayerDataID); } + AShooterPlayerState* GetPlayerState(AShooterPlayerState* ignorePlayerState, bool bOnlyCheckExistingPlayers) { return NativeCall(this, "UPrimalPlayerData.GetPlayerState", ignorePlayerState, bOnlyCheckExistingPlayers); } + int GetTribeTeamID() { return NativeCall(this, "UPrimalPlayerData.GetTribeTeamID"); } + FString* GetUniqueIdString(FString* result) { return NativeCall(this, "UPrimalPlayerData.GetUniqueIdString", result); } + void GiveInitialItems(int AppID, AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalPlayerData.GiveInitialItems", AppID, ForPC); } + void InitForPlayer(AShooterPlayerState* aPlayerState, bool bDontSaveData) { NativeCall(this, "UPrimalPlayerData.InitForPlayer", aPlayerState, bDontSaveData); } + FString* LinkedPlayerIDString(FString* result) { return NativeCall(this, "UPrimalPlayerData.LinkedPlayerIDString", result); } + bool MatchesPlayer(AShooterPlayerState* aPlayerState, bool bCheckForExistingPlayer) { return NativeCall(this, "UPrimalPlayerData.MatchesPlayer", aPlayerState, bCheckForExistingPlayer); } + void OnTribeDataLoaded(FTribeData* LoadedTribeData) { NativeCall(this, "UPrimalPlayerData.OnTribeDataLoaded", LoadedTribeData); } + void RefreshPersistentBuffs(AShooterCharacter* theChar) { NativeCall(this, "UPrimalPlayerData.RefreshPersistentBuffs", theChar); } + void SavePlayerData(UWorld* ForWorld) { NativeCall(this, "UPrimalPlayerData.SavePlayerData", ForWorld); } + void SetCharacterExperiencePoints(float NewXP) { NativeCall(this, "UPrimalPlayerData.SetCharacterExperiencePoints", NewXP); } + void SetSubscribedApp(int AppID, AShooterPlayerController* ForPC) { NativeCall(this, "UPrimalPlayerData.SetSubscribedApp", AppID, ForPC); } + void SetTotalDiscoveryZonePoints(int newPoints) { NativeCall(this, "UPrimalPlayerData.SetTotalDiscoveryZonePoints", newPoints); } + void BPAppliedToPlayerState(AShooterPlayerState* ForPlayerState) { NativeCall(this, "UPrimalPlayerData.BPAppliedToPlayerState", ForPlayerState); } + void BPApplyToPlayerCharacter(AShooterPlayerState* ForPlayerState, AShooterCharacter* NewPlayerCharacter) { NativeCall(this, "UPrimalPlayerData.BPApplyToPlayerCharacter", ForPlayerState, NewPlayerCharacter); } + void BPCreatedNewPlayerData(UWorld* ForWorld) { NativeCall(this, "UPrimalPlayerData.BPCreatedNewPlayerData", ForWorld); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalPlayerData.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUPrimalPlayerData() { NativeCall(nullptr, "UPrimalPlayerData.StaticRegisterNativesUPrimalPlayerData"); } +}; + +struct UPrimalCharacterStatusComponent +{ + FieldArray MaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.MaxStatusValues" }; } + FieldArray BaseLevelMaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.BaseLevelMaxStatusValues" }; } + FieldArray NumberOfLevelUpPointsAppliedField() { return { this, "UPrimalCharacterStatusComponent.NumberOfLevelUpPointsApplied" }; } + FieldArray NumberOfLevelUpPointsAppliedTamedField() { return { this, "UPrimalCharacterStatusComponent.NumberOfLevelUpPointsAppliedTamed" }; } + float& TamedIneffectivenessModifierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TamedIneffectivenessModifier"); } + float& MovingStaminaRecoveryRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MovingStaminaRecoveryRateMultiplier"); } + FieldArray RecoveryRateStatusValueField() { return { this, "UPrimalCharacterStatusComponent.RecoveryRateStatusValue" }; } + FieldArray TimeToRecoverAfterDepletionStatusValueField() { return { this, "UPrimalCharacterStatusComponent.TimeToRecoverAfterDepletionStatusValue" }; } + FieldArray TimeToRecoverAfterDecreaseStatusValueField() { return { this, "UPrimalCharacterStatusComponent.TimeToRecoverAfterDecreaseStatusValue" }; } + FieldArray AmountMaxGainedPerLevelUpValueField() { return { this, "UPrimalCharacterStatusComponent.AmountMaxGainedPerLevelUpValue" }; } + FieldArray AmountMaxGainedPerLevelUpValueTamedField() { return { this, "UPrimalCharacterStatusComponent.AmountMaxGainedPerLevelUpValueTamed" }; } + FieldArray MaxGainedPerLevelUpValueIsPercentField() { return { this, "UPrimalCharacterStatusComponent.MaxGainedPerLevelUpValueIsPercent" }; } + FieldArray RecoveryRateIsPercentField() { return { this, "UPrimalCharacterStatusComponent.RecoveryRateIsPercent" }; } + FieldArray TamingMaxStatMultipliersField() { return { this, "UPrimalCharacterStatusComponent.TamingMaxStatMultipliers" }; } + FieldArray TamingMaxStatAdditionsField() { return { this, "UPrimalCharacterStatusComponent.TamingMaxStatAdditions" }; } + FieldArray MaxLevelUpMultiplierField() { return { this, "UPrimalCharacterStatusComponent.MaxLevelUpMultiplier" }; } + FieldArray ExtraStatusValueRateDecreaseModifiersField() { return { this, "UPrimalCharacterStatusComponent.ExtraStatusValueRateDecreaseModifiers" }; } + float& TamedLandDinoSwimSpeedLevelUpEffectivenessField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TamedLandDinoSwimSpeedLevelUpEffectiveness"); } + float& TamingIneffectivenessMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TamingIneffectivenessMultiplier"); } + float& DinoRiderWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoRiderWeightMultiplier"); } + FieldArray CanLevelUpValueField() { return { this, "UPrimalCharacterStatusComponent.CanLevelUpValue" }; } + FieldArray DontUseValueField() { return { this, "UPrimalCharacterStatusComponent.DontUseValue" }; } + FieldArray HideValueField() { return { this, "UPrimalCharacterStatusComponent.HideValue" }; } + float& ExperienceAutomaticConsciousIncreaseSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExperienceAutomaticConsciousIncreaseSpeed"); } + float& CheatMaxWeightField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CheatMaxWeight"); } + int& CharacterStatusComponentPriorityField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CharacterStatusComponentPriority"); } + float& SuffocationHealthPercentDecreaseSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SuffocationHealthPercentDecreaseSpeed"); } + float& UnsubmergedOxygenIncreaseSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.UnsubmergedOxygenIncreaseSpeed"); } + float& SubmergedOxygenDecreaseSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SubmergedOxygenDecreaseSpeed"); } + float& RunningStaminaConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.RunningStaminaConsumptionRate"); } + float& WalkingStaminaConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WalkingStaminaConsumptionRate"); } + float& SwimmingOrFlyingStaminaConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SwimmingOrFlyingStaminaConsumptionRate"); } + float& JumpStaminaConsumptionField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.JumpStaminaConsumption"); } + float& WindedSpeedModifierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WindedSpeedModifier"); } + float& WindedSpeedModifierSwimmingOrFlyingField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WindedSpeedModifierSwimmingOrFlying"); } + float& InjuredSpeedModifierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InjuredSpeedModifier"); } + float& HypothermicHealthDecreaseRateBaseField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermicHealthDecreaseRateBase"); } + float& HypothermicHealthDecreaseRatePerDegreeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermicHealthDecreaseRatePerDegree"); } + float& HyperthermicHealthDecreaseRateBaseField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermicHealthDecreaseRateBase"); } + float& HyperthermicHealthDecreaseRatePerDegreeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermicHealthDecreaseRatePerDegree"); } + float& XPEarnedPerStaminaConsumedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.XPEarnedPerStaminaConsumed"); } + float& KillXPMultiplierPerCharacterLevelField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.KillXPMultiplierPerCharacterLevel"); } + float& ShareXPWithTribeRangeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ShareXPWithTribeRange"); } + int& BaseCharacterLevelField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BaseCharacterLevel"); } + unsigned __int16& ExtraCharacterLevelField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraCharacterLevel"); } + float& ExperiencePointsField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExperiencePoints"); } + float& ReplicatedExperiencePointsField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ReplicatedExperiencePoints"); } + TEnumAsByte& LevelExperienceRampTypeField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.LevelExperienceRampType"); } + float& IncreaseDamageByLevelMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.IncreaseDamageByLevelMultiplier"); } + float& MaxExperiencePointsField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MaxExperiencePoints"); } + float& BaseFoodConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BaseFoodConsumptionRate"); } + float& BaseWaterConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BaseWaterConsumptionRate"); } + float& FortitudeTorpidityDecreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeTorpidityDecreaseMultiplier"); } + float& FortitudeTorpidityIncreaseResistanceField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeTorpidityIncreaseResistance"); } + float& SubmergedWaterIncreaseRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SubmergedWaterIncreaseRate"); } + float& CrouchedWaterFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CrouchedWaterFoodConsumptionMultiplier"); } + float& ProneWaterFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ProneWaterFoodConsumptionMultiplier"); } + float& StaminaRecoveryDecreaseFoodMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaRecoveryDecreaseFoodMultiplier"); } + float& StaminaRecoveryDecreaseWaterMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaRecoveryDecreaseWaterMultiplier"); } + float& HealthRecoveryDecreaseFoodMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HealthRecoveryDecreaseFoodMultiplier"); } + float& BabyDinoConsumingFoodRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BabyDinoConsumingFoodRateMultiplier"); } + float& DinoTamedAdultConsumingFoodRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoTamedAdultConsumingFoodRateMultiplier"); } + float& BabyGestationConsumingFoodRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BabyGestationConsumingFoodRateMultiplier"); } + float& BabyDinoStarvationHealthDecreaseRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BabyDinoStarvationHealthDecreaseRateMultiplier"); } + float& FortitudeInsulationMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeInsulationMultiplier"); } + float& HypothermalInsulationMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermalInsulationMultiplier"); } + float& HyperthermalInsulationMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermalInsulationMultiplier"); } + float& BabyMaxHealthPercentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.BabyMaxHealthPercent"); } + float& CrouchedStaminaConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CrouchedStaminaConsumptionMultiplier"); } + float& ProneStaminaConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ProneStaminaConsumptionMultiplier"); } + float& StarvationHealthConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StarvationHealthConsumptionRate"); } + float& DehyrdationHealthConsumptionRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DehyrdationHealthConsumptionRate"); } + float& StaminaConsumptionDecreaseWaterMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaConsumptionDecreaseWaterMultiplier"); } + float& StaminaConsumptionDecreaseFoodMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaConsumptionDecreaseFoodMultiplier"); } + float& HypothermiaDecreaseFoodMultiplierBaseField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermiaDecreaseFoodMultiplierBase"); } + float& HypothermiaDecreaseFoodMultiplierPerDegreeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermiaDecreaseFoodMultiplierPerDegree"); } + float& HyperthermiaDecreaseWaterMultiplierBaseField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermiaDecreaseWaterMultiplierBase"); } + float& HyperthermiaDecreaseWaterMultiplierPerDegreeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermiaDecreaseWaterMultiplierPerDegree"); } + float& HyperthermiaTemperatureThresholdField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperthermiaTemperatureThreshold"); } + float& HypothermiaTemperatureThresholdField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypothermiaTemperatureThreshold"); } + float& TorporExitPercentThresholdField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TorporExitPercentThreshold"); } + float& KnockedOutTorpidityRecoveryRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.KnockedOutTorpidityRecoveryRateMultiplier"); } + float& DehydrationTorpidityMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DehydrationTorpidityMultiplier"); } + float& StarvationTorpidityMultuplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StarvationTorpidityMultuplier"); } + float& StarvationTorpidityIncreaseRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StarvationTorpidityIncreaseRate"); } + float& DehyrdationTorpidityIncreaseRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DehyrdationTorpidityIncreaseRate"); } + float& InjuredTorpidityIncreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InjuredTorpidityIncreaseMultiplier"); } + float& WeightSpeedDecreasePowerField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightSpeedDecreasePower"); } + float& WeightJumpDecreasePowerField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightJumpDecreasePower"); } + float& PoopItemMinFoodConsumptionIntervalField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.PoopItemMinFoodConsumptionInterval"); } + float& PoopItemMaxFoodConsumptionIntervalField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.PoopItemMaxFoodConsumptionInterval"); } + float& TheMaxTorporIncreasePerBaseLevelField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TheMaxTorporIncreasePerBaseLevel"); } + float& CurrentStatusValuesReplicationIntervalField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CurrentStatusValuesReplicationInterval"); } + float& InsulationHyperthermiaOffsetExponentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InsulationHyperthermiaOffsetExponent"); } + float& InsulationHyperthermiaOffsetScalerField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InsulationHyperthermiaOffsetScaler"); } + float& InsulationHypothermiaOffsetExponentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InsulationHypothermiaOffsetExponent"); } + float& InsulationHypothermiaOffsetScalerField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.InsulationHypothermiaOffsetScaler"); } + float& HypoCharacterInsulationValueField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HypoCharacterInsulationValue"); } + float& HyperCharacterInsulationValueField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HyperCharacterInsulationValue"); } + float& PoopItemFoodConsumptionCacheField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.PoopItemFoodConsumptionCache"); } + float& LastHypothermalCharacterInsulationValueField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastHypothermalCharacterInsulationValue"); } + float& LastHyperthermalCharacterInsulationValueField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastHyperthermalCharacterInsulationValue"); } + TEnumAsByte& MaxStatusValueToAutoUpdateField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.MaxStatusValueToAutoUpdate"); } + float& GenericXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.GenericXPMultiplier"); } + float& CraftEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.CraftEarnXPMultiplier"); } + float& KillEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.KillEarnXPMultiplier"); } + float& GenericEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.GenericEarnXPMultiplier"); } + float& SpecialEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SpecialEarnXPMultiplier"); } + float& HarvestEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.HarvestEarnXPMultiplier"); } + float& ShipKillEarnXPMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ShipKillEarnXPMultiplier"); } + float& DefaultHyperthermicInsulationField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DefaultHyperthermicInsulation"); } + float& DefaultHypothermicInsulationField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DefaultHypothermicInsulation"); } + float& MaxTamingEffectivenessBaseLevelMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MaxTamingEffectivenessBaseLevelMultiplier"); } + TArray& StatusValueModifiersField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusValueModifiers"); } + TArray& StatusValueModifierDescriptionIndicesField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusValueModifierDescriptionIndices"); } + FieldArray CurrentStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.CurrentStatusValues" }; } + FieldArray AdditionalStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.AdditionalStatusValues" }; } + FieldArray ReplicatedCurrentStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.ReplicatedCurrentStatusValues" }; } + FieldArray ReplicatedGlobalMaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.ReplicatedGlobalMaxStatusValues" }; } + FieldArray ReplicatedBaseLevelMaxStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.ReplicatedBaseLevelMaxStatusValues" }; } + FieldArray ReplicatedGlobalCurrentStatusValuesField() { return { this, "UPrimalCharacterStatusComponent.ReplicatedGlobalCurrentStatusValues" }; } + FieldArray CurrentStatusStatesField() { return { this, "UPrimalCharacterStatusComponent.CurrentStatusStates" }; } + FieldArray LastDecreasedStatusValuesTimesField() { return { this, "UPrimalCharacterStatusComponent.LastDecreasedStatusValuesTimes" }; } + FieldArray LastIncreasedStatusValuesTimesField() { return { this, "UPrimalCharacterStatusComponent.LastIncreasedStatusValuesTimes" }; } + FieldArray LastMaxedStatusValuesTimesField() { return { this, "UPrimalCharacterStatusComponent.LastMaxedStatusValuesTimes" }; } + FieldArray LastDepletedStatusValuesTimesField() { return { this, "UPrimalCharacterStatusComponent.LastDepletedStatusValuesTimes" }; } + float& StaminaRecoveryExtraResourceDecreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaRecoveryExtraResourceDecreaseMultiplier"); } + float& DehydrationStaminaRecoveryRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DehydrationStaminaRecoveryRate"); } + float& WaterConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WaterConsumptionMultiplier"); } + float& FoodConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodConsumptionMultiplier"); } + TArray EnteredStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.EnteredStatusStateSounds"); } + TArray ExitStatusStateSoundsField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.ExitStatusStateSounds"); } + float& ExtraOxygenSpeedStatMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraOxygenSpeedStatMultiplier"); } + float& ExtraTamedHealthMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraTamedHealthMultiplier"); } + float& WakingTameFoodConsumptionRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WakingTameFoodConsumptionRateMultiplier"); } + float& SwimmingStaminaRecoveryRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.SwimmingStaminaRecoveryRateMultiplier"); } + float& ExtraWaterConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraWaterConsumptionMultiplier"); } + float& ExtraFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraFoodConsumptionMultiplier"); } + float& DefaultMaxOxygenField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DefaultMaxOxygen"); } + long double& LastReplicatedCurrentStatusValuesTimeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastReplicatedCurrentStatusValuesTime"); } + float& OriginalMaxTorporField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OriginalMaxTorpor"); } + float& MountedDinoDinoWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MountedDinoDinoWeightMultiplier"); } + float& ExtraWildDinoDamageMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraWildDinoDamageMultiplier"); } + float& ExtraTamedDinoDamageMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraTamedDinoDamageMultiplier"); } + float& WeightMultiplierForCarriedPassengersField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightMultiplierForCarriedPassengers"); } + float& WeightMultiplierForPlatformPassengersInventoryField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WeightMultiplierForPlatformPassengersInventory"); } + FieldArray DinoMaxStatAddMultiplierImprintingField() { return { this, "UPrimalCharacterStatusComponent.DinoMaxStatAddMultiplierImprinting" }; } + float& DinoImprintingQualityField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoImprintingQuality"); } + float& StaminaToTorporMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaToTorporMultiplier"); } + float& StaminaToHealthMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaToHealthMultiplier"); } + float& StaminaToHealthMaxPercentPerConversionField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.StaminaToHealthMaxPercentPerConversion"); } + float& TamedBaseHealthMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TamedBaseHealthMultiplier"); } + float& MinHealthFromExhaustionField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MinHealthFromExhaustion"); } + long double& LastTimeEnteredExhaustedStateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastTimeEnteredExhaustedState"); } + float& TimeBeforeDecreasingTorporAfterExhaustedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TimeBeforeDecreasingTorporAfterExhausted"); } + float& ExtraBabyDinoConsumingFoodRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.ExtraBabyDinoConsumingFoodRateMultiplier"); } + TArray& StatusValueNameOverridesField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusValueNameOverrides"); } + TArray& StatusDescriptionOverridesField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatusDescriptionOverrides"); } + TSubclassOf& RegainOxygenDamageTypeField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.RegainOxygenDamageType"); } + TMap >& SkillStatModifiersField() { return *GetNativePointerField >*>(this, "UPrimalCharacterStatusComponent.SkillStatModifiers"); } + TMap >& ItemSkillStatModifiersField() { return *GetNativePointerField >*>(this, "UPrimalCharacterStatusComponent.ItemSkillStatModifiers"); } + TMap >& BuffStatModifiersField() { return *GetNativePointerField >*>(this, "UPrimalCharacterStatusComponent.BuffStatModifiers"); } + float& DistanceTraveledField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DistanceTraveled"); } + FVector& LastRecordedLocationField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastRecordedLocation"); } + float& TravelXPIntervalField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TravelXPInterval"); } + float& TravelXPPerIntervalField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.TravelXPPerInterval"); } + float& OverEatFoodDamageMaxPercentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverEatFoodDamageMaxPercent"); } + float& OverEatFoodDecreaseHealthRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverEatFoodDecreaseHealthRate"); } + float& OverEatFoodScaleDecreaseHealthRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverEatFoodScaleDecreaseHealthRate"); } + float& OverEatFoodAbsoluteMaximumClampField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverEatFoodAbsoluteMaximumClamp"); } + float& FoodOverMaxDecreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FoodOverMaxDecreaseMultiplier"); } + float& OverDrinkWaterDamageMaxPercentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverDrinkWaterDamageMaxPercent"); } + float& OverDrinkWaterDecreaseHealthRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverDrinkWaterDecreaseHealthRate"); } + float& OverDrinkWaterScaleDecreaseHealthRateField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverDrinkWaterScaleDecreaseHealthRate"); } + float& OverDrinkWaterAbsoluteMaximumClampField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverDrinkWaterAbsoluteMaximumClamp"); } + float& WaterOverMaxDecreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.WaterOverMaxDecreaseMultiplier"); } + FieldArray BaseVitaminsConsumptionRateField() { return { this, "UPrimalCharacterStatusComponent.BaseVitaminsConsumptionRate" }; } + FieldArray OverEquilibriumVitaminsConsumptionMultiplierField() { return { this, "UPrimalCharacterStatusComponent.OverEquilibriumVitaminsConsumptionMultiplier" }; } + FieldArray OverEquilibriumVitaminsAdditionMultiplierField() { return { this, "UPrimalCharacterStatusComponent.OverEquilibriumVitaminsAdditionMultiplier" }; } + float& VitaminEquilibriumValueField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.VitaminEquilibriumValue"); } + float& OverweightMinSpeedField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.OverweightMinSpeed"); } + float& MinSpeedModifierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.MinSpeedModifier"); } + TArray StatIconOverridesField() { return *GetNativePointerField*>(this, "UPrimalCharacterStatusComponent.StatIconOverrides"); } + float& VitaminEquilibriumThresholdPercentField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.VitaminEquilibriumThresholdPercent"); } + float& FortitudeOxygenReductionResistanceField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeOxygenReductionResistance"); } + float& FortitudeOffshoreVitalsReductionResistanceField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeOffshoreVitalsReductionResistance"); } + float& FortitudeFoodReductionResistanceField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeFoodReductionResistance"); } + float& FortitudeWaterReductionResistanceField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FortitudeWaterReductionResistance"); } + float& DinoTamedLevelUpsConstantField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoTamedLevelUpsConstant"); } + float& DinoTamedLevelUpsBaseMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.DinoTamedLevelUpsBaseMultiplier"); } + float& FlyingStaminaRecoveryRateMultiplierField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.FlyingStaminaRecoveryRateMultiplier"); } + bool& bInWeightLockField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.bInWeightLock"); } + long double& LastReplicatedXPTimeField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.LastReplicatedXPTime"); } + bool& bHasUnlockedMaxPlayerLevelAchievementThisSessionField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.bHasUnlockedMaxPlayerLevelAchievementThisSession"); } + bool& bHasUnlockedMaxDinoLevelAchievementThisSessionField() { return *GetNativePointerField(this, "UPrimalCharacterStatusComponent.bHasUnlockedMaxDinoLevelAchievementThisSession"); } + + // Bit fields + + BitFieldValue bCanSuffocate() { return { this, "UPrimalCharacterStatusComponent.bCanSuffocate" }; } + BitFieldValue bCanSuffocateIfTamed() { return { this, "UPrimalCharacterStatusComponent.bCanSuffocateIfTamed" }; } + BitFieldValue bCanGetHungry() { return { this, "UPrimalCharacterStatusComponent.bCanGetHungry" }; } + BitFieldValue bUseStamina() { return { this, "UPrimalCharacterStatusComponent.bUseStamina" }; } + BitFieldValue bWalkingConsumesStamina() { return { this, "UPrimalCharacterStatusComponent.bWalkingConsumesStamina" }; } + BitFieldValue bRunningConsumesStamina() { return { this, "UPrimalCharacterStatusComponent.bRunningConsumesStamina" }; } + BitFieldValue bConsumeFoodAutomatically() { return { this, "UPrimalCharacterStatusComponent.bConsumeFoodAutomatically" }; } + BitFieldValue bAddExperienceAutomatically() { return { this, "UPrimalCharacterStatusComponent.bAddExperienceAutomatically" }; } + BitFieldValue bConsumeWaterAutomatically() { return { this, "UPrimalCharacterStatusComponent.bConsumeWaterAutomatically" }; } + BitFieldValue bAutomaticallyUpdateTemperature() { return { this, "UPrimalCharacterStatusComponent.bAutomaticallyUpdateTemperature" }; } + BitFieldValue bReplicateGlobalStatusValues() { return { this, "UPrimalCharacterStatusComponent.bReplicateGlobalStatusValues" }; } + BitFieldValue bAllowLevelUps() { return { this, "UPrimalCharacterStatusComponent.bAllowLevelUps" }; } + BitFieldValue bInfiniteStats() { return { this, "UPrimalCharacterStatusComponent.bInfiniteStats" }; } + BitFieldValue bAllowSharingXPWithTribe() { return { this, "UPrimalCharacterStatusComponent.bAllowSharingXPWithTribe" }; } + BitFieldValue bUseStatusSpeedModifiers() { return { this, "UPrimalCharacterStatusComponent.bUseStatusSpeedModifiers" }; } + BitFieldValue bStatusSpeedModifierOnlyFullOrNone() { return { this, "UPrimalCharacterStatusComponent.bStatusSpeedModifierOnlyFullOrNone" }; } + BitFieldValue bIgnoreStatusSpeedModifierIfSwimming() { return { this, "UPrimalCharacterStatusComponent.bIgnoreStatusSpeedModifierIfSwimming" }; } + BitFieldValue bPreventJump() { return { this, "UPrimalCharacterStatusComponent.bPreventJump" }; } + BitFieldValue bInitializedBaseLevelMaxStatusValues() { return { this, "UPrimalCharacterStatusComponent.bInitializedBaseLevelMaxStatusValues" }; } + BitFieldValue bInitializedMe() { return { this, "UPrimalCharacterStatusComponent.bInitializedMe" }; } + BitFieldValue bServerFirstInitialized() { return { this, "UPrimalCharacterStatusComponent.bServerFirstInitialized" }; } + BitFieldValue bRunningUseDefaultSpeed() { return { this, "UPrimalCharacterStatusComponent.bRunningUseDefaultSpeed" }; } + BitFieldValue bNeverAllowXP() { return { this, "UPrimalCharacterStatusComponent.bNeverAllowXP" }; } + BitFieldValue bPreventTamedStatReplication() { return { this, "UPrimalCharacterStatusComponent.bPreventTamedStatReplication" }; } + BitFieldValue bUseBPAdjustStatusValueModification() { return { this, "UPrimalCharacterStatusComponent.bUseBPAdjustStatusValueModification" }; } + BitFieldValue bForceDefaultSpeed() { return { this, "UPrimalCharacterStatusComponent.bForceDefaultSpeed" }; } + BitFieldValue bCheatStatus() { return { this, "UPrimalCharacterStatusComponent.bCheatStatus" }; } + BitFieldValue bForceRefreshWeight() { return { this, "UPrimalCharacterStatusComponent.bForceRefreshWeight" }; } + BitFieldValue bForceGainOxygen() { return { this, "UPrimalCharacterStatusComponent.bForceGainOxygen" }; } + BitFieldValue bFreezeStatusValues() { return { this, "UPrimalCharacterStatusComponent.bFreezeStatusValues" }; } + BitFieldValue bTicked() { return { this, "UPrimalCharacterStatusComponent.bTicked" }; } + BitFieldValue bUseBPModifyMaxLevel() { return { this, "UPrimalCharacterStatusComponent.bUseBPModifyMaxLevel" }; } + BitFieldValue bNoStaminaRecoveryWhenStarving() { return { this, "UPrimalCharacterStatusComponent.bNoStaminaRecoveryWhenStarving" }; } + BitFieldValue bApplyingStatusValueModifiers() { return { this, "UPrimalCharacterStatusComponent.bApplyingStatusValueModifiers" }; } + BitFieldValue bDontScaleMeleeDamage() { return { this, "UPrimalCharacterStatusComponent.bDontScaleMeleeDamage" }; } + BitFieldValue bInfiniteWeight() { return { this, "UPrimalCharacterStatusComponent.bInfiniteWeight" }; } + BitFieldValue bGainExperienceForTravel() { return { this, "UPrimalCharacterStatusComponent.bGainExperienceForTravel" }; } + BitFieldValue bCanGetExhausted() { return { this, "UPrimalCharacterStatusComponent.bCanGetExhausted" }; } + BitFieldValue bStaminaToHealthConverstionIsPercentOfMaxHealth() { return { this, "UPrimalCharacterStatusComponent.bStaminaToHealthConverstionIsPercentOfMaxHealth" }; } + + // Functions + + void AddExperience(float HowMuch, bool bShareWithTribe, EXPType::Type XPType, bool bShareWithShip) { NativeCall(this, "UPrimalCharacterStatusComponent.AddExperience", HowMuch, bShareWithTribe, XPType, bShareWithShip); } + void AddShipExperience(float HowMuch, EXPType::Type XPType, float SharedXPMulti, bool bShareWithBasedPlayers, bool bShareWithBasedNPCCrew, bool bShareWithBasedCreatures, bool bOnlyAddToBasedPawns, APrimalCharacter* FromKillerChar) { NativeCall(this, "UPrimalCharacterStatusComponent.AddShipExperience", HowMuch, XPType, SharedXPMulti, bShareWithBasedPlayers, bShareWithBasedNPCCrew, bShareWithBasedCreatures, bOnlyAddToBasedPawns, FromKillerChar); } + void AddStatusValueModifier(EPrimalCharacterStatusValue::Type ValueType, float Amount, float Speed, bool bContinueOnUnchangedValue, bool bSetValue, int StatusValueModifierDescriptionIndex, bool bResetExistingModifierDescriptionIndex, float LimitExistingModifierDescriptionToMaxAmount, bool bSetAdditionalValue, EPrimalCharacterStatusValue::Type StopAtValueNearMax, bool bMakeUntameable, TSubclassOf ScaleValueByCharacterDamageType, bool bMoveTowardsEquilibrium, bool bAddTowardsEquilibrium) { NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.AddStatusValueModifier", ValueType, Amount, Speed, bContinueOnUnchangedValue, bSetValue, StatusValueModifierDescriptionIndex, bResetExistingModifierDescriptionIndex, LimitExistingModifierDescriptionToMaxAmount, bSetAdditionalValue, StopAtValueNearMax, bMakeUntameable, ScaleValueByCharacterDamageType, bMoveTowardsEquilibrium, bAddTowardsEquilibrium); } + void AdjustStatusValueModification(EPrimalCharacterStatusValue::Type valueType, float* Amount, TSubclassOf DamageTypeClass, bool bManualModification) { NativeCall, bool>(this, "UPrimalCharacterStatusComponent.AdjustStatusValueModification", valueType, Amount, DamageTypeClass, bManualModification); } + bool AllowTaming() { return NativeCall(this, "UPrimalCharacterStatusComponent.AllowTaming"); } + void ApplyStatusValueModifiers(float DeltaTime) { NativeCall(this, "UPrimalCharacterStatusComponent.ApplyStatusValueModifiers", DeltaTime); } + void ApplyTamingStatModifiers(float TameIneffectivenessModifier) { NativeCall(this, "UPrimalCharacterStatusComponent.ApplyTamingStatModifiers", TameIneffectivenessModifier); } + bool AreAllVitaminsAtEquilibrium() { return NativeCall(this, "UPrimalCharacterStatusComponent.AreAllVitaminsAtEquilibrium"); } + void BPDirectSetCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPDirectSetCurrentStatusValue", valueType, newValue); } + void BPDirectSetMaxStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPDirectSetMaxStatusValue", valueType, newValue); } + float BPGetAmountGainedPerLevelUpValue(EPrimalCharacterStatusValue::Type valueType, bool bGetTamed) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetAmountGainedPerLevelUpValue", valueType, bGetTamed); } + float BPGetCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetCurrentStatusValue", valueType); } + float BPGetMaxStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetMaxStatusValue", valueType); } + float BPGetPercentStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetPercentStatusValue", valueType); } + float BPGetRecoveryRateStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPGetRecoveryRateStatusValue", valueType); } + float BPModifyMaxExperiencePoints_Implementation(float InMaxExperiencePoints, bool bCheckingTrueMaximum) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxExperiencePoints_Implementation", InMaxExperiencePoints, bCheckingTrueMaximum); } + int BPModifyMaxLevel_Implementation(int InMaxLevel) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxLevel_Implementation", InMaxLevel); } + void BPSetRecoveryRateStatusValue(EPrimalCharacterStatusValue::Type valueType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.BPSetRecoveryRateStatusValue", valueType, newValue); } + bool CanLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.CanLevelUp", LevelUpValueType); } + void ChangedStatusState(EPrimalCharacterStatusState::Type valueType, bool bEnteredState) { NativeCall(this, "UPrimalCharacterStatusComponent.ChangedStatusState", valueType, bEnteredState); } + void CharacterUpdatedInventory(bool bEquippedOrUneqippedItem) { NativeCall(this, "UPrimalCharacterStatusComponent.CharacterUpdatedInventory", bEquippedOrUneqippedItem); } + void ClearAllLevelUpPoints(bool bTamedPoints) { NativeCall(this, "UPrimalCharacterStatusComponent.ClearAllLevelUpPoints", bTamedPoints); } + void ClientSyncMaxStatusValues_Implementation(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.ClientSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } + void DrawLocalPlayerHUD(AShooterHUD* HUD, float ScaleMult, bool bFromBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUD", HUD, ScaleMult, bFromBottomRight); } + void DrawLocalPlayerHUDDescriptions(AShooterHUD* HUD, long double TheTimeSeconds, float ScaleMult, bool bDrawBottomRight) { NativeCall(this, "UPrimalCharacterStatusComponent.DrawLocalPlayerHUDDescriptions", HUD, TheTimeSeconds, ScaleMult, bDrawBottomRight); } + int GetCharacterLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetCharacterLevel"); } + float GetConsciousPercentage() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetConsciousPercentage"); } + float GetCraftingSpeedModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetCraftingSpeedModifier"); } + UPrimalCharacterStatusComponent* GetDefaultCharacterStatusComponent() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetDefaultCharacterStatusComponent"); } + void GetDinoFoodConsumptionRateMultiplier(float* Amount) { NativeCall(this, "UPrimalCharacterStatusComponent.GetDinoFoodConsumptionRateMultiplier", Amount); } + float GetDiscoveryZoneMaxXP(int NumDiscoveredZones) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetDiscoveryZoneMaxXP", NumDiscoveredZones); } + float GetExperiencePercent() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExperiencePercent"); } + float GetExperienceRequiredForNextLevelUp() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExperienceRequiredForNextLevelUp"); } + float GetExperienceRequiredForPreviousLevelUp() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExperienceRequiredForPreviousLevelUp"); } + int GetExtraCharacterLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetExtraCharacterLevel"); } + float GetJumpZModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetJumpZModifier"); } + int GetLevelUpPoints(EPrimalCharacterStatusValue::Type valueType, bool bTamedPoints) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetLevelUpPoints", valueType, bTamedPoints); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "UPrimalCharacterStatusComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetMaxStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMaxStatusValue", valueType); } + float GetMeleeDamageModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMeleeDamageModifier"); } + float GetMovementSpeedModifier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMovementSpeedModifier"); } + int GetMyCurrentDiscoveryZoneMaxLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMyCurrentDiscoveryZoneMaxLevel"); } + float GetMyCurrentDiscoveryZoneMaxXP() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMyCurrentDiscoveryZoneMaxXP"); } + float GetMyMaxAllowedXP(bool bCheckingTrueMaximum) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetMyMaxAllowedXP", bCheckingTrueMaximum); } + int GetNumLevelUpsAvailable() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetNumLevelUpsAvailable"); } + float GetOffshoreVitalsDecreaseMultiplier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetOffshoreVitalsDecreaseMultiplier"); } + APrimalCharacter* GetPrimalCharacter() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetPrimalCharacter"); } + float GetSkillStatModifier(FName SkillStatModifierName) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetSkillStatModifier", SkillStatModifierName); } + float GetSkillStatMultiplier(FName SkillStatModifierName) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetSkillStatMultiplier", SkillStatModifierName); } + FString* GetStatGroupModifiersString(FString* result) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatGroupModifiersString", result); } + FString* GetStatusMaxValueString(FString* result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusMaxValueString", result, ValueType, bValueOnly); } + FString* GetStatusNameString(FString* result, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusNameString", result, ValueType); } + FString* GetStatusStatusDescription(FString* result, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusStatusDescription", result, ValueType); } + float GetStatusValueRecoveryRate(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusValueRecoveryRate", valueType); } + FString* GetStatusValueString(FString* result, EPrimalCharacterStatusValue::Type ValueType, bool bValueOnly) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetStatusValueString", result, ValueType, bValueOnly); } + float GetSwimmingTemperatureFortitudeMultiplier() { return NativeCall(this, "UPrimalCharacterStatusComponent.GetSwimmingTemperatureFortitudeMultiplier"); } + float GetThresholdValueForState(EPrimalCharacterStatusValue::Type valueType, char StateIndex, bool bHighThreshold) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetThresholdValueForState", valueType, StateIndex, bHighThreshold); } + float GetTotalStatusModifierDescriptionIndex(int StatusValueModifierDescriptionIndex) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetTotalStatusModifierDescriptionIndex", StatusValueModifierDescriptionIndex); } + float GetUpgradedMaxStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetUpgradedMaxStatusValue", valueType); } + FString* GetUpgradedStatusValueString(FString* result, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalCharacterStatusComponent.GetUpgradedStatusValueString", result, ValueType); } + bool HasExperienceForLevelUp() { return NativeCall(this, "UPrimalCharacterStatusComponent.HasExperienceForLevelUp"); } + void InitializeComponent() { NativeCall(this, "UPrimalCharacterStatusComponent.InitializeComponent"); } + bool IsAlignedWithTeam(int TargetingTeam) { return NativeCall(this, "UPrimalCharacterStatusComponent.IsAlignedWithTeam", TargetingTeam); } + bool IsAtMaxLevel() { return NativeCall(this, "UPrimalCharacterStatusComponent.IsAtMaxLevel"); } + bool IsInStatusState(EPrimalCharacterStatusState::Type StateType) { return NativeCall(this, "UPrimalCharacterStatusComponent.IsInStatusState", StateType); } + bool IsVitaminAtEquilibrium(EPrimalCharacterStatusValue::Type VitaminType) { return NativeCall(this, "UPrimalCharacterStatusComponent.IsVitaminAtEquilibrium", VitaminType); } + float ModifyCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float Amount, bool bPercentOfMax, bool bPercentOfCurrent, bool bManualModification, bool bSetValue, TSubclassOf DamageTypeClass, bool bDamageDontKill, bool bForceSetValue) { return NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.ModifyCurrentStatusValue", valueType, Amount, bPercentOfMax, bPercentOfCurrent, bManualModification, bSetValue, DamageTypeClass, bDamageDontKill, bForceSetValue); } + void NetSyncMaxStatusValues_Implementation(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.NetSyncMaxStatusValues_Implementation", NetMaxStatusValues, NetBaseMaxStatusValues); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "UPrimalCharacterStatusComponent.OnDeserializedByGame", DeserializationType); } + void OnJumped() { NativeCall(this, "UPrimalCharacterStatusComponent.OnJumped"); } + void OnRep_CurrentStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_CurrentStatusValues"); } + void OnRep_GlobalBaseLevelMaxStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalBaseLevelMaxStatusValues"); } + void OnRep_GlobalCurrentStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalCurrentStatusValues"); } + void OnRep_GlobalMaxStatusValues() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_GlobalMaxStatusValues"); } + void OnRep_ReplicatedExperiencePoints() { NativeCall(this, "UPrimalCharacterStatusComponent.OnRep_ReplicatedExperiencePoints"); } + void RefreshBuffStatGroupModifiers() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshBuffStatGroupModifiers"); } + void RefreshEquippedItemStatGroupModifiers() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshEquippedItemStatGroupModifiers"); } + void RefreshInsulation() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshInsulation"); } + void RefreshTemperature() { NativeCall(this, "UPrimalCharacterStatusComponent.RefreshTemperature"); } + void RescaleAllStats() { NativeCall(this, "UPrimalCharacterStatusComponent.RescaleAllStats"); } + void RescaleMaxStat(EPrimalCharacterStatusValue::Type LevelUpValueType, float TargetValue, bool bIsPercentOfTrueValue) { NativeCall(this, "UPrimalCharacterStatusComponent.RescaleMaxStat", LevelUpValueType, TargetValue, bIsPercentOfTrueValue); } + void ServerApplyLevelUp(EPrimalCharacterStatusValue::Type LevelUpValueType, AShooterPlayerController* ByPC) { NativeCall(this, "UPrimalCharacterStatusComponent.ServerApplyLevelUp", LevelUpValueType, ByPC); } + void ServerSyncReplicatedValues() { NativeCall(this, "UPrimalCharacterStatusComponent.ServerSyncReplicatedValues"); } + void SetBaseLevel(int Level, bool bDontCurrentSetToMax) { NativeCall(this, "UPrimalCharacterStatusComponent.SetBaseLevel", Level, bDontCurrentSetToMax); } + void SetExtraCharacterLevel(int NewExtraCharacterLevel) { NativeCall(this, "UPrimalCharacterStatusComponent.SetExtraCharacterLevel", NewExtraCharacterLevel); } + void SetLevelUpPoints(EPrimalCharacterStatusValue::Type valueType, bool bTamedPoints, int newPoints) { NativeCall(this, "UPrimalCharacterStatusComponent.SetLevelUpPoints", valueType, bTamedPoints, newPoints); } + void SetMaxStatusValue(EPrimalCharacterStatusValue::Type StatType, float newValue) { NativeCall(this, "UPrimalCharacterStatusComponent.SetMaxStatusValue", StatType, newValue); } + void SetTameable(bool bTameable) { NativeCall(this, "UPrimalCharacterStatusComponent.SetTameable", bTameable); } + void SetTamed(float TameIneffectivenessModifier) { NativeCall(this, "UPrimalCharacterStatusComponent.SetTamed", TameIneffectivenessModifier); } + void TickStatus(float DeltaTime, bool bForceStatusUpdate) { NativeCall(this, "UPrimalCharacterStatusComponent.TickStatus", DeltaTime, bForceStatusUpdate); } + void TransferStatusAmountIfNeeded(EPrimalCharacterStatusValue::Type valueType, float* Amount, bool bPercentOfMax, bool bPercentOfCurrent, bool bManualModification, bool bSetValue, TSubclassOf DamageTypeClass, bool bDamageDontKill, bool bForceSetValue) { NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.TransferStatusAmountIfNeeded", valueType, Amount, bPercentOfMax, bPercentOfCurrent, bManualModification, bSetValue, DamageTypeClass, bDamageDontKill, bForceSetValue); } + void UpdateStatusValue(EPrimalCharacterStatusValue::Type valueType, float DeltaTime, bool bManualUpdate) { NativeCall(this, "UPrimalCharacterStatusComponent.UpdateStatusValue", valueType, DeltaTime, bManualUpdate); } + void UpdateWeightStat(bool bForceSetValue) { NativeCall(this, "UPrimalCharacterStatusComponent.UpdateWeightStat", bForceSetValue); } + void UpdatedCurrentStatusValue(EPrimalCharacterStatusValue::Type valueType, float Amount, bool bManualModification, TSubclassOf DamageTypeClass, bool bDamageDontKill, bool bDontAdjustOtherStats) { NativeCall, bool, bool>(this, "UPrimalCharacterStatusComponent.UpdatedCurrentStatusValue", valueType, Amount, bManualModification, DamageTypeClass, bDamageDontKill, bDontAdjustOtherStats); } + void UpdatedStatModifiers() { NativeCall(this, "UPrimalCharacterStatusComponent.UpdatedStatModifiers"); } + float BPAdjustStatusValueModification(EPrimalCharacterStatusValue::Type valueType, float Amount, TSubclassOf DamageTypeClass, bool bManualModification) { return NativeCall, bool>(this, "UPrimalCharacterStatusComponent.BPAdjustStatusValueModification", valueType, Amount, DamageTypeClass, bManualModification); } + float BPModifyMaxExperiencePoints(float InMaxExperiencePoints, bool bCheckingTrueMaximum) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxExperiencePoints", InMaxExperiencePoints, bCheckingTrueMaximum); } + int BPModifyMaxLevel(int InMaxLevel) { return NativeCall(this, "UPrimalCharacterStatusComponent.BPModifyMaxLevel", InMaxLevel); } + void ClientSyncMaxStatusValues(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.ClientSyncMaxStatusValues", NetMaxStatusValues, NetBaseMaxStatusValues); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalCharacterStatusComponent.GetPrivateStaticClass", Package); } + void NetSyncMaxStatusValues(TArray* NetMaxStatusValues, TArray* NetBaseMaxStatusValues) { NativeCall*, TArray*>(this, "UPrimalCharacterStatusComponent.NetSyncMaxStatusValues", NetMaxStatusValues, NetBaseMaxStatusValues); } + static void StaticRegisterNativesUPrimalCharacterStatusComponent() { NativeCall(nullptr, "UPrimalCharacterStatusComponent.StaticRegisterNativesUPrimalCharacterStatusComponent"); } +}; + +struct FDamageHarvestingEntry +{ + float DamageMultiplier; + float HarvestQuantityMultiplier; + float DamageHarvestAdditionalEffectiveness; + float DamageDurabilityConsumptionMultiplier; + __int8 bAllowUnderwaterHarvesting : 1; + TSubclassOf DamageTypeParent; + TSubclassOf HarvestDamageFXOverride; +}; + +struct FOverrideDamageHarvestingEntry +{ + TArray, FDefaultAllocator> ForHarvestingComponents; + FDamageHarvestingEntry HarvestEntryOverride; + TArray HarvestResourceEntriesOverride; +}; + +struct UShooterDamageType : UDamageType +{ + //TSubclassOf& HitTargetableActorImpactEffectsField() { return *GetNativePointerField*>(this, "UShooterDamageType.HitTargetableActorImpactEffects"); } + float& DamageTorpidityIncreaseMultiplierField() { return *GetNativePointerField(this, "UShooterDamageType.DamageTorpidityIncreaseMultiplier"); } + TArray& DamageCharacterStatusValueModifiersField() { return *GetNativePointerField*>(this, "UShooterDamageType.DamageCharacterStatusValueModifiers"); } + float& DamageInstigatorPercentageField() { return *GetNativePointerField(this, "UShooterDamageType.DamageInstigatorPercentage"); } + float& UseSpecialDamageIntervalField() { return *GetNativePointerField(this, "UShooterDamageType.UseSpecialDamageInterval"); } + TSubclassOf& BuffToGiveVictimCharacterField() { return *GetNativePointerField*>(this, "UShooterDamageType.BuffToGiveVictimCharacter"); } + float& MassScaleDamageImpulseExponentField() { return *GetNativePointerField(this, "UShooterDamageType.MassScaleDamageImpulseExponent"); } + float& MythicalCreatureDamageMultiplierField() { return *GetNativePointerField(this, "UShooterDamageType.MythicalCreatureDamageMultiplier"); } + TArray>& DamageIgnoreActorClassesField() { return *GetNativePointerField>*>(this, "UShooterDamageType.DamageIgnoreActorClasses"); } + TArray>& DamageOnlyActorClassesField() { return *GetNativePointerField>*>(this, "UShooterDamageType.DamageOnlyActorClasses"); } + TArray& OverrideDamageHarvestEntriesField() { return *GetNativePointerField*>(this, "UShooterDamageType.OverrideDamageHarvestEntries"); } + TSubclassOf& InvalidHarvestOverrideDamageTypeField() { return *GetNativePointerField*>(this, "UShooterDamageType.InvalidHarvestOverrideDamageType"); } + //TArray& TargetClassDamageScalersField() { return *GetNativePointerField*>(this, "UShooterDamageType.TargetClassDamageScalers"); } + TArray>& OverrideDamageForResourceHarvestingItemsField() { return *GetNativePointerField>*>(this, "UShooterDamageType.OverrideDamageForResourceHarvestingItems"); } + TArray>& OverrideDamageForResourceHarvestingDamageTypesField() { return *GetNativePointerField>*>(this, "UShooterDamageType.OverrideDamageForResourceHarvestingDamageTypes"); } + float& HitMarkerScaleMultiplierField() { return *GetNativePointerField(this, "UShooterDamageType.HitMarkerScaleMultiplier"); } + float& PostShieldDefenseBrokenAttackValueField() { return *GetNativePointerField(this, "UShooterDamageType.PostShieldDefenseBrokenAttackValue"); } + float& PostShieldDefenseBrokenDamageScaleMinField() { return *GetNativePointerField(this, "UShooterDamageType.PostShieldDefenseBrokenDamageScaleMin"); } + float& PostShieldDefenseBrokenDamageScaleMaxField() { return *GetNativePointerField(this, "UShooterDamageType.PostShieldDefenseBrokenDamageScaleMax"); } + float& NonAttackDataShieldDefenseBreakingPowerField() { return *GetNativePointerField(this, "UShooterDamageType.NonAttackDataShieldDefenseBreakingPower"); } + TSubclassOf& NonAttackDataBuffToGiveAgainstShieldField() { return *GetNativePointerField*>(this, "UShooterDamageType.NonAttackDataBuffToGiveAgainstShield"); } + TSubclassOf& NonAttackDataBuffToGivePostShieldDefenseBrokenField() { return *GetNativePointerField*>(this, "UShooterDamageType.NonAttackDataBuffToGivePostShieldDefenseBroken"); } + + // Bit fields + + BitFieldValue bIsMeleeDamage() { return { this, "UShooterDamageType.bIsMeleeDamage" }; } + BitFieldValue bDontActuallyDealDamage() { return { this, "UShooterDamageType.bDontActuallyDealDamage" }; } + BitFieldValue bPreventMeleeHarvesting() { return { this, "UShooterDamageType.bPreventMeleeHarvesting" }; } + BitFieldValue bHarvestDamageWithNoResourceGrab() { return { this, "UShooterDamageType.bHarvestDamageWithNoResourceGrab" }; } + BitFieldValue bPreventMomentumWhenFalling() { return { this, "UShooterDamageType.bPreventMomentumWhenFalling" }; } + BitFieldValue bOnlyGiveBuffToPlayerOrTamed() { return { this, "UShooterDamageType.bOnlyGiveBuffToPlayerOrTamed" }; } + BitFieldValue bDamageProjectiles() { return { this, "UShooterDamageType.bDamageProjectiles" }; } + BitFieldValue bOnlyGiveBuffToPlayer() { return { this, "UShooterDamageType.bOnlyGiveBuffToPlayer" }; } + BitFieldValue bOnlyGiveBuffToDino() { return { this, "UShooterDamageType.bOnlyGiveBuffToDino" }; } + BitFieldValue bHasRiderIgnoreDamage() { return { this, "UShooterDamageType.bHasRiderIgnoreDamage" }; } + BitFieldValue bAllowShieldBlockAllPointDamage() { return { this, "UShooterDamageType.bAllowShieldBlockAllPointDamage" }; } + BitFieldValue bPreventDefaultTargetHurtEffect() { return { this, "UShooterDamageType.bPreventDefaultTargetHurtEffect" }; } + BitFieldValue bDamageInstigator() { return { this, "UShooterDamageType.bDamageInstigator" }; } + BitFieldValue bDontDamageInstigatorIfPawn() { return { this, "UShooterDamageType.bDontDamageInstigatorIfPawn" }; } + BitFieldValue bApplyMomentumToBigPawns() { return { this, "UShooterDamageType.bApplyMomentumToBigPawns" }; } + BitFieldValue bAutoDragDeadDino() { return { this, "UShooterDamageType.bAutoDragDeadDino" }; } + BitFieldValue bImpulseResetsDinoVelocity() { return { this, "UShooterDamageType.bImpulseResetsDinoVelocity" }; } + BitFieldValue bPreventHitPawnEffectsFromLocalInstigator() { return { this, "UShooterDamageType.bPreventHitPawnEffectsFromLocalInstigator" }; } + BitFieldValue bRiderIgnoreDamage() { return { this, "UShooterDamageType.bRiderIgnoreDamage" }; } + BitFieldValue bNoFriendlyDamage() { return { this, "UShooterDamageType.bNoFriendlyDamage" }; } + BitFieldValue bIsTurretDamage() { return { this, "UShooterDamageType.bIsTurretDamage" }; } + BitFieldValue bForceGeneralArmorUsage() { return { this, "UShooterDamageType.bForceGeneralArmorUsage" }; } + BitFieldValue bDamageImpulseOnly() { return { this, "UShooterDamageType.bDamageImpulseOnly" }; } + BitFieldValue bDamageImpulseOnlyForFriendlies() { return { this, "UShooterDamageType.bDamageImpulseOnlyForFriendlies" }; } + BitFieldValue bIgnoreDinoFlyers() { return { this, "UShooterDamageType.bIgnoreDinoFlyers" }; } + BitFieldValue bUseBPAdjustDamage() { return { this, "UShooterDamageType.bUseBPAdjustDamage" }; } + BitFieldValue bUseBPAdjustHarvestingDamage() { return { this, "UShooterDamageType.bUseBPAdjustHarvestingDamage" }; } + BitFieldValue bDisplayHitMarker() { return { this, "UShooterDamageType.bDisplayHitMarker" }; } + BitFieldValue bDinoDamageCauserAllowSameTeam() { return { this, "UShooterDamageType.bDinoDamageCauserAllowSameTeam" }; } + BitFieldValue bOnlyApplyDamageTorpidityToPlayersAndTames() { return { this, "UShooterDamageType.bOnlyApplyDamageTorpidityToPlayersAndTames" }; } + BitFieldValue bDinoOnDinoDamageCauserAllowSameTeam() { return { this, "UShooterDamageType.bDinoOnDinoDamageCauserAllowSameTeam" }; } + BitFieldValue bForceRespawnCooldown() { return { this, "UShooterDamageType.bForceRespawnCooldown" }; } + BitFieldValue bAllowDamageCorpses() { return { this, "UShooterDamageType.bAllowDamageCorpses" }; } + BitFieldValue bForceAllowFriendlyFire() { return { this, "UShooterDamageType.bForceAllowFriendlyFire" }; } + BitFieldValue bForceAllowPvEDamage() { return { this, "UShooterDamageType.bForceAllowPvEDamage" }; } + BitFieldValue bDestroyOnKill() { return { this, "UShooterDamageType.bDestroyOnKill" }; } + BitFieldValue bPreventDinoKillVictimItemCollection() { return { this, "UShooterDamageType.bPreventDinoKillVictimItemCollection" }; } + BitFieldValue bIsInstantDamage() { return { this, "UShooterDamageType.bIsInstantDamage" }; } + BitFieldValue bPreventSameTeamSettingNextRepairTime() { return { this, "UShooterDamageType.bPreventSameTeamSettingNextRepairTime" }; } + + // Functions + + float BPAdjustDamage(AActor* Victim, float IncomingDamage, FDamageEvent* TheDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "UShooterDamageType.BPAdjustDamage", Victim, IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser); } + float BPAdjustHarvestingDamage(AActor* Victim, float IncomingDamage, FDamageEvent* TheDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "UShooterDamageType.BPAdjustHarvestingDamage", Victim, IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser); } + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "UShooterDamageType.GetPrivateStaticClass"); } + TSubclassOf* OverrideBuffToGiveVictimCharacter(TSubclassOf* result, APrimalCharacter* Victim, float IncomingDamage, FDamageEvent* TheDamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall*, TSubclassOf*, APrimalCharacter*, float, FDamageEvent*, AController*, AActor*>(this, "UShooterDamageType.OverrideBuffToGiveVictimCharacter", result, Victim, IncomingDamage, TheDamageEvent, EventInstigator, DamageCauser); } + static void StaticRegisterNativesUShooterDamageType() { NativeCall(nullptr, "UShooterDamageType.StaticRegisterNativesUShooterDamageType"); } +}; + +struct FDinoFoodEffectivenessMultipliers +{ + float FoodEffectivenessMultiplier; + float HealthEffectivenessMultiplier; + float TorpidityEffectivenessMultiplier; + float AffinityEffectivenessMultiplier; + float AffinityOverride; + float StaminaEffectivenessMultiplier; + int FoodItemCategory; + TSubclassOf FoodItemParent; + float UntamedFoodConsumptionPriority; +}; + +struct UPrimalDinoSettings : UObject +{ + TArray& FoodEffectivenessMultipliersField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.FoodEffectivenessMultipliers"); } + TArray& ExtraFoodEffectivenessMultipliersField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.ExtraFoodEffectivenessMultipliers"); } + float& TamingAffinityNoFoodDecreasePercentageSpeedField() { return *GetNativePointerField(this, "UPrimalDinoSettings.TamingAffinityNoFoodDecreasePercentageSpeed"); } + float& TamingIneffectivenessNoFoodIncreasePercentageSpeedMultiplierField() { return *GetNativePointerField(this, "UPrimalDinoSettings.TamingIneffectivenessNoFoodIncreasePercentageSpeedMultiplier"); } + int& DinoTierNumField() { return *GetNativePointerField(this, "UPrimalDinoSettings.DinoTierNum"); } + TSubclassOf& RequiresSkillToTameField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.RequiresSkillToTame"); } + TSubclassOf& RequiresSkillToRideField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.RequiresSkillToRide"); } + TSubclassOf& RequiresSkillToCommandField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.RequiresSkillToCommand"); } + TSubclassOf& RequiresSkillToImprintField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.RequiresSkillToImprint"); } + UTexture2D* DinoFoodTypeImageField() { return *GetNativePointerField(this, "UPrimalDinoSettings.DinoFoodTypeImage"); } + FString& DinoFoodTypeNameField() { return *GetNativePointerField(this, "UPrimalDinoSettings.DinoFoodTypeName"); } + FString& FeedToTameStringField() { return *GetNativePointerField(this, "UPrimalDinoSettings.FeedToTameString"); } + FString& FeedItemInLastSlotStringField() { return *GetNativePointerField(this, "UPrimalDinoSettings.FeedItemInLastSlotString"); } + FString& FeedInLastSlotStringField() { return *GetNativePointerField(this, "UPrimalDinoSettings.FeedInLastSlotString"); } + FString& MinLevelForFeedingStringField() { return *GetNativePointerField(this, "UPrimalDinoSettings.MinLevelForFeedingString"); } + //TArray& SpecialDeathLootEntriesField() { return *GetNativePointerField*>(this, "UPrimalDinoSettings.SpecialDeathLootEntries"); } + bool& bWakingTameDisplayItemNameField() { return *GetNativePointerField(this, "UPrimalDinoSettings.bWakingTameDisplayItemName"); } + FString& WakingTameDisplayItemNameOverrideField() { return *GetNativePointerField(this, "UPrimalDinoSettings.WakingTameDisplayItemNameOverride"); } + + // Functions + + void SpawnWildDinoSpecialDeathLoot_Implementation(APrimalDinoCharacter* ForDino, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "UPrimalDinoSettings.SpawnWildDinoSpecialDeathLoot_Implementation", ForDino, InstigatingPawn, DamageCauser); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalDinoSettings.GetPrivateStaticClass", Package); } + void SpawnWildDinoSpecialDeathLoot(APrimalDinoCharacter* ForDino, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "UPrimalDinoSettings.SpawnWildDinoSpecialDeathLoot", ForDino, InstigatingPawn, DamageCauser); } + static void StaticRegisterNativesUPrimalDinoSettings() { NativeCall(nullptr, "UPrimalDinoSettings.StaticRegisterNativesUPrimalDinoSettings"); } +}; + +struct FWeightedObjectList +{ + TArray Weights; + TArray AssociatedObjects; +}; + +struct APrimalDinoCharacter : APrimalCharacter +{ + FWeightedObjectList& DeathInventoryTemplatesField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathInventoryTemplates"); } + + TWeakObjectPtr& ForcedMasterTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ForcedMasterTarget"); } + FName& MountCharacterSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterSocketName"); } + TWeakObjectPtr& MountCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MountCharacter"); } + ECollisionChannel& MeshOriginalCollisionChannelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeshOriginalCollisionChannel"); } + float& ColorizationIntensityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ColorizationIntensity"); } + FVector& RidingAttackExtraVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAttackExtraVelocity"); } + UAnimMontage* StartChargeAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartChargeAnimation"); } + TArray AttackAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimations"); } + TArray& AttackAnimationWeightsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationWeights"); } + TArray& AttackAnimationsTimeFromEndToConsiderFinishedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackAnimationsTimeFromEndToConsiderFinished"); } + TArray FemaleMaterialOverridesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FemaleMaterialOverrides"); } + float& PaintConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PaintConsumptionMultiplier"); } + float& ChargingBlockedStopTimeThresholdField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingBlockedStopTimeThreshold"); } + TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeSwingSockets"); } + int& MeleeDamageAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeDamageAmount"); } + float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeDamageImpulse"); } + float& MeleeSwingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeSwingRadius"); } + TArray& AttackInfosField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AttackInfos"); } + char& CurrentAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentAttackIndex"); } + char& LastAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackIndex"); } + TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MeleeDamageType"); } + TSubclassOf& StepActorDamageTypeOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepActorDamageTypeOverride"); } + float& AttackOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackOffset"); } + float& FleeHealthPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FleeHealthPercentage"); } + float& BreakFleeHealthPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BreakFleeHealthPercentage"); } + FString& TamerStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamerString"); } + FString& TamedNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedName"); } + FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipPadding"); } + FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverlayTooltipScale"); } + FVector& RiderFPVCameraOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraOffset"); } + FVector& LandingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LandingLocation"); } + long double& StartLandingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartLandingTime"); } + long double& LastAxisStartPressTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAxisStartPressTime"); } + long double& LastMoveForwardTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastMoveForwardTime"); } + float& LandingTraceMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LandingTraceMaxDistance"); } + float& FlyingWanderFixedDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingWanderFixedDistanceAmount"); } + float& FlyingWanderRandomDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingWanderRandomDistanceAmount"); } + float& AcceptableLandingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AcceptableLandingRadius"); } + float& MaxLandingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxLandingTime"); } + FieldArray GenderSpeedMultipliersField() { return { this, "APrimalDinoCharacter.GenderSpeedMultipliers" }; } + float& ChargeSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeSpeedMultiplier"); } + UAnimMontage* ChargingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingAnim"); } + float& ChargingStaminaPerSecondDrainField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStaminaPerSecondDrain"); } + float& ChargingStopDotTresholdField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStopDotTreshold"); } + FVector& LastChargeLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastChargeLocation"); } + long double& LastStartChargingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastStartChargingTime"); } + TWeakObjectPtr& RiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Rider"); } + TWeakObjectPtr& PreviousRiderField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousRider"); } + TSubclassOf& SaddleItemClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddleItemClass"); } + TArray& NoSaddlePassengerSeatsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NoSaddlePassengerSeats"); } + TWeakObjectPtr& CarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.CarriedCharacter"); } + TWeakObjectPtr& PreviousCarriedCharacterField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.PreviousCarriedCharacter"); } + UAnimMontage* DinoWithPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithPassengerAnim"); } + UAnimMontage* DinoWithDinoPassengerAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoWithDinoPassengerAnim"); } + TArray>& PassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PassengerPerSeat"); } + TArray SavedPassengerPerSeatField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SavedPassengerPerSeat"); } + TArray>& PrevPassengerPerSeatField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.PrevPassengerPerSeat"); } + long double& LastClientCameraRotationServerUpdateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastClientCameraRotationServerUpdate"); } + int& LastPlayedAttackAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastPlayedAttackAnimation"); } + char& AttackIndexOfPlayedAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackIndexOfPlayedAnimation"); } + TArray& DinoBaseLevelWeightEntriesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoBaseLevelWeightEntries"); } + float& OriginalCapsuleHalfHeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalCapsuleHalfHeight"); } + TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LastSocketPositions"); } + TSet, FDefaultSetAllocator> MeleeSwingHurtListField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "APrimalDinoCharacter.MeleeSwingHurtList"); } + long double& EndAttackTargetTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EndAttackTargetTime"); } + FVector& RidingFirstPersonViewLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingFirstPersonViewLocationOffset"); } + float& BabyChanceOfTwinsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyChanceOfTwins"); } + float& BabyGestationSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyGestationSpeed"); } + float& ExtraBabyGestationSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraBabyGestationSpeedMultiplier"); } + long double& LastEggBoostedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastEggBoostedTime"); } + float& WildPercentageChanceOfBabyField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildPercentageChanceOfBaby"); } + float& WildBabyAgeWeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildBabyAgeWeight"); } + float& BabyGestationProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyGestationProgress"); } + float& LastBabyAgeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastBabyAge"); } + float& LastBabyGestationProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastBabyGestationProgress"); } + float& BabyChanceOfTripletsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyChanceOfTriplets"); } + float& BabyAgeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyAge"); } + float& MaxPercentOfCapsulHeightAllowedForIKField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxPercentOfCapsulHeightAllowedForIK"); } + float& SlopeBiasForMaxCapsulePercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlopeBiasForMaxCapsulePercent"); } + float& AutoFadeOutAfterTameTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AutoFadeOutAfterTameTime"); } + float& FlyingForceRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingForceRotationRateModifier"); } + TArray& HideBoneNamesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.HideBoneNames"); } + FString& HideBonesStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HideBonesString"); } + FVector& WaterSurfaceExtraJumpVectorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WaterSurfaceExtraJumpVector"); } + FVector& FlyerTakeOffAdditionalVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerTakeOffAdditionalVelocity"); } + float& OpenDoorDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OpenDoorDelay"); } + float& TamedWanderHarvestIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestInterval"); } + float& TamedWanderHarvestSearchRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestSearchRange"); } + float& TamedWanderHarvestCollectRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestCollectRadius"); } + FVector& TamedWanderHarvestCollectOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWanderHarvestCollectOffset"); } + float& RootLocSwimOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RootLocSwimOffset"); } + float& PlayAnimBelowHealthPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayAnimBelowHealthPercent"); } + float& LeavePlayAnimBelowHealthPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LeavePlayAnimBelowHealthPercent"); } + float& PlatformSaddleMaxStructureBuildDistance2DField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlatformSaddleMaxStructureBuildDistance2D"); } + UAnimMontage* PlayAnimBelowHealthField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayAnimBelowHealth"); } + USoundBase* LowHealthExitSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthExitSound"); } + USoundBase* LowHealthEnterSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LowHealthEnterSound"); } + TSubclassOf& LowHealthDinoSettingsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LowHealthDinoSettings"); } + float& SwimOffsetInterpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimOffsetInterpSpeed"); } + float& CurrentRootLocSwimOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentRootLocSwimOffset"); } + float& AIRangeMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AIRangeMultiplier"); } + FieldArray PreventColorizationRegionsField() { return { this, "APrimalDinoCharacter.PreventColorizationRegions" }; } + FieldArray ColorSetIndicesField() { return { this, "APrimalDinoCharacter.ColorSetIndices" }; } + FieldArray ColorSetIntensityMultipliersField() { return { this, "APrimalDinoCharacter.ColorSetIntensityMultipliers" }; } + float& MeleeAttackStaminaCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeAttackStaminaCost"); } + UAnimMontage* WakingTameAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAnimation"); } + TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.Target"); } + TWeakObjectPtr& TamedFollowTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedFollowTarget"); } + float& PercentChanceFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PercentChanceFemale"); } + TArray>& DeathGiveItemClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveItemClasses"); } + TArray& DeathGiveItemChanceToBeBlueprintField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DeathGiveItemChanceToBeBlueprint"); } + float& DeathGiveItemQualityMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemQualityMin"); } + float& DeathGiveItemQualityMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemQualityMax"); } + float& DeathGiveItemRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveItemRange"); } + FString& DeathGiveAchievementField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGiveAchievement"); } + USoundBase* OverrideAreaMusicField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideAreaMusic"); } + FVector& UnboardLocationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationOffset"); } + float& LastTimeWhileHeadingToGoalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTimeWhileHeadingToGoal"); } + float& RidingNetUpdateFequencyField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingNetUpdateFequency"); } + float& RiderMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxSpeedModifier"); } + float& RiderExtraMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderExtraMaxSpeedModifier"); } + float& RiderMaxRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxRunSpeedModifier"); } + float& RiderRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderRotationRateModifier"); } + float& SwimmingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimmingRotationRateModifier"); } + float& chargingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.chargingRotationRateModifier"); } + UAnimMontage* EnterFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EnterFlightAnim"); } + UAnimMontage* ExitFlightAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExitFlightAnim"); } + UAnimMontage* SleepConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SleepConsumeFoodAnim"); } + UAnimMontage* WakingConsumeFoodAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingConsumeFoodAnim"); } + UAnimMontage* FallAsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FallAsleepAnim"); } + UAnimMontage* TamedUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedUnsleepAnim"); } + UAnimMontage* WildUnsleepAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildUnsleepAnim"); } + UAnimMontage* OpenDoorAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OpenDoorAnim"); } + float& ControlFacePitchInterpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ControlFacePitchInterpSpeed"); } + float& TamedWalkableFloorZField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWalkableFloorZ"); } + float& CurrentMovementAnimRateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentMovementAnimRate"); } + int& MinPlayerLevelForWakingTameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinPlayerLevelForWakingTame"); } + float& ForceNextAttackIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForceNextAttackIndex"); } + TSubclassOf& TamedInventoryComponentTemplateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedInventoryComponentTemplate"); } + float& DeathInventoryChanceToUseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathInventoryChanceToUse"); } + float& WakingTameFeedIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFeedInterval"); } + long double& LastWakingTameFedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastWakingTameFedTime"); } + float& DeathInventoryQualityPerLevelMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathInventoryQualityPerLevelMultiplier"); } + float& RequiredTameAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RequiredTameAffinity"); } + float& RequiredTameAffinityPerBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RequiredTameAffinityPerBaseLevel"); } + char& TamedAITargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAITargetingRange"); } + FName& PassengerBoneNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerBoneNameOverride"); } + float& CurrentTameAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentTameAffinity"); } + float& TameIneffectivenessModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TameIneffectivenessModifier"); } + float& TameIneffectivenessByAffinityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TameIneffectivenessByAffinity"); } + int& LastFrameUseLowQualityAnimationTickField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameUseLowQualityAnimationTick"); } + int& MaxSaddleStructuresHeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxSaddleStructuresHeight"); } + int& SaddlePivotOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddlePivotOffset"); } + int& MaxSaddleStructuresNumField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxSaddleStructuresNum"); } + float& OverTameLimitDamagePercentPerIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverTameLimitDamagePercentPerInterval"); } + float& OverTameLimitDamageIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverTameLimitDamageInterval"); } + long double& LastOverTameLimitDamageTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastOverTameLimitDamageTime"); } + TSubclassOf& DinoSettingsClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoSettingsClass"); } + float& TamingFoodConsumeIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingFoodConsumeInterval"); } + float& DediForceAttackAnimTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DediForceAttackAnimTime"); } + float& DediForceStartAttackAfterAnimTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DediForceStartAttackAfterAnimTime"); } + float& WakingTameFoodIncreaseMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFoodIncreaseMultiplier"); } + int& TamingTeamIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingTeamID"); } + int& OwningPlayerIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwningPlayerID"); } + FString& OwningPlayerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OwningPlayerName"); } + long double& TamingLastFoodConsumptionTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingLastFoodConsumptionTime"); } + unsigned int& DinoID1Field() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoID1"); } + unsigned int& DinoID2Field() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoID2"); } + FRotator& PreviousAimRotField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousAimRot"); } + int& TamedAggressionLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAggressionLevel"); } + float& TamingIneffectivenessModifierIncreaseByDamagePercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamingIneffectivenessModifierIncreaseByDamagePercent"); } + int& NPCSpawnerExtraLevelOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCSpawnerExtraLevelOffset"); } + float& NPCSpawnerLevelMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCSpawnerLevelMultiplier"); } + TWeakObjectPtr& LinkedSupplyCrateField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LinkedSupplyCrate"); } + float& UntamedPoopTimeMinIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeMinInterval"); } + float& UntamedPoopTimeMaxIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeMaxInterval"); } + float& MeleeHarvestDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MeleeHarvestDamageMultiplier"); } + float& AllowRidingMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AllowRidingMaxDistance"); } + float& UntamedPoopTimeCacheField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedPoopTimeCache"); } + TSubclassOf& BaseEggClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BaseEggClass"); } + TArray>& EggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.EggItemsToSpawn"); } + TArray& EggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.EggWeightsToSpawn"); } + TArray>& FertilizedEggItemsToSpawnField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.FertilizedEggItemsToSpawn"); } + TArray& FertilizedEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FertilizedEggWeightsToSpawn"); } + float& EggChanceToSpawnUnstasisField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggChanceToSpawnUnstasis"); } + float& EggIntervalBetweenUnstasisChancesField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggIntervalBetweenUnstasisChances"); } + float& EggRangeMaximumNumberFromSameDinoTypeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggRangeMaximumNumberFromSameDinoType"); } + int& EggMaximumNumberFromSameDinoTypeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggMaximumNumberFromSameDinoType"); } + float& EggRangeMaximumNumberField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggRangeMaximumNumber"); } + int& EggMaximumNumberField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EggMaximumNumber"); } + float& UntamedWalkingSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedWalkingSpeedModifier"); } + float& TamedWalkingSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedWalkingSpeedModifier"); } + float& UntamedRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UntamedRunningSpeedModifier"); } + float& TamedRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedRunningSpeedModifier"); } + TSubclassOf& RandomColorSetsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RandomColorSetsMale"); } + TSubclassOf& RandomColorSetsFemaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RandomColorSetsFemale"); } + UAnimSequence* RiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAnimOverride"); } + UAnimSequence* TurningRightRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningRightRiderAnimOverride"); } + UAnimSequence* TurningLeftRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TurningLeftRiderAnimOverride"); } + UAnimSequence* LatchedRiderAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchedRiderAnimOverride"); } + UAnimSequence* RiderMoveAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMoveAnimOverride"); } + float& RidingAnimSpeedFactorField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAnimSpeedFactor"); } + UAnimMontage* StartRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartRidingAnimOverride"); } + UAnimMontage* StopRidingAnimOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StopRidingAnimOverride"); } + FName& TargetingTeamNameOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TargetingTeamNameOverride"); } + float& ExtraTamedSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraTamedSpeedMultiplier"); } + float& ExtraUnTamedSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraUnTamedSpeedMultiplier"); } + long double& LastEggSpawnChanceTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastEggSpawnChanceTime"); } + FName& OriginalNPCVolumeNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalNPCVolumeName"); } + float& OutsideOriginalNPCVolumeStasisDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OutsideOriginalNPCVolumeStasisDestroyInterval"); } + float& StasisedDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StasisedDestroyInterval"); } + FVector& FirstSpawnLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FirstSpawnLocation"); } + float& TamedAllowNamingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAllowNamingTime"); } + float& MovementSpeedScalingRotationRatePowerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MovementSpeedScalingRotationRatePower"); } + float& AttackNoStaminaTorpidityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackNoStaminaTorpidityMultiplier"); } + float& DecayDestructionPeriodField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DecayDestructionPeriod"); } + long double& TamedAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedAtTime"); } + long double& LastInAllyRangeTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastInAllyRangeTime"); } + int& LastInAllyRangeTimeSerializedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastInAllyRangeTimeSerialized"); } + TArray LatchedOnStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.LatchedOnStructures"); } + UPrimalDinoSettings* MyDinoSettingsCDOField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MyDinoSettingsCDO"); } + int& OriginalTargetingTeamField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OriginalTargetingTeam"); } + float& PreviousRootYawSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousRootYawSpeed"); } + long double& LastTimeFallingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTimeFalling"); } + float& FloatingHUDTextScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FloatingHUDTextScale"); } + float& FloatingHUDTextScaleMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FloatingHUDTextScaleMin"); } + float& TamedCorpseLifespanField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedCorpseLifespan"); } + float& MateBoostDamageReceiveMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostDamageReceiveMultiplier"); } + float& MateBoostDamageGiveMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostDamageGiveMultiplier"); } + float& MateBoostRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MateBoostRange"); } + FName& DinoNameTagField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoNameTag"); } + AShooterPlayerController* AttackMyTargetForPlayerControllerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackMyTargetForPlayerController"); } + float& RidingAttackExtraVelocityDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingAttackExtraVelocityDelay"); } + float& StepDamageRadialDamageIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageInterval"); } + float& StepDamageRadialDamageExtraRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageExtraRadius"); } + float& StepDamageRadialDamageAmountGeneralField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageAmountGeneral"); } + float& StepDamageRadialDamageAmountHarvestableField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageRadialDamageAmountHarvestable"); } + long double& LastRadialStepDamageTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRadialStepDamageTime"); } + TSubclassOf& StepHarvestableDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepHarvestableDamageType"); } + float& StepDamageFootDamageIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageInterval"); } + float& StepDamageFootDamageRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageRadius"); } + float& StepDamageFootDamageAmountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageAmount"); } + TArray& StepDamageFootDamageSocketsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StepDamageFootDamageSockets"); } + float& DurationBeforeMovingStuckPawnField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DurationBeforeMovingStuckPawn"); } + FVector& LastCheckedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastCheckedLocation"); } + long double& LastValidNotStuckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastValidNotStuckTime"); } + UAnimMontage* StartledAnimationRightDefaultField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationRightDefault"); } + UAnimMontage* StartledAnimationLeftField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationLeft"); } + TArray StartledAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.StartledAnimations"); } + UAnimMontage* FlyingStartledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingStartledAnimation"); } + float& RandomPlayStartledAnimIntervalMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomPlayStartledAnimIntervalMin"); } + float& RandomPlayStartledAnimIntervalMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomPlayStartledAnimIntervalMax"); } + float& StartledAnimationCooldownField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StartledAnimationCooldown"); } + float& DefaultActivateAttackRangeOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DefaultActivateAttackRangeOffset"); } + float& CorpseTargetingMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CorpseTargetingMultiplier"); } + long double& LastFootStepDamageTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFootStepDamageTime"); } + long double& LastStartledTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastStartledTime"); } + float& CorpseLifespanNonRelevantField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CorpseLifespanNonRelevant"); } + float& MinStaminaForRiderField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinStaminaForRider"); } + float& LoseStaminaWithRiderRateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LoseStaminaWithRiderRate"); } + float& FollowingRunDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FollowingRunDistance"); } + float& MaxDinoKillerTransferWeightPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxDinoKillerTransferWeightPercent"); } + float& NPCZoneVolumeCountWeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCZoneVolumeCountWeight"); } + float& NPCLerpToMaxRandomBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCLerpToMaxRandomBaseLevel"); } + FVector& FloatingHUDTextWorldOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FloatingHUDTextWorldOffset"); } + long double& LastAttackedTargetTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackedTargetTime"); } + long double& LastForcedLandingCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastForcedLandingCheckTime"); } + long double& LastAllyTargetLookTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAllyTargetLookTime"); } + long double& LastAttackedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAttackedTime"); } + long double& LastPlayerDinoOverlapRelevantTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastPlayerDinoOverlapRelevantTime"); } + FRotator& DinoAimRotationOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoAimRotationOffset"); } + long double& LastDinoAllyLookInterpTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastDinoAllyLookInterpTime"); } + FVector& LastRiderOverlappedPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderOverlappedPosition"); } + TWeakObjectPtr& AutoDragByPawnField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AutoDragByPawn"); } + long double& NextRidingFlyerUndergroundCheckField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextRidingFlyerUndergroundCheck"); } + long double& LastSetRiderTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastSetRiderTime"); } + TSubclassOf& RepairRequirementsItemField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RepairRequirementsItem"); } + float& RepairAmountRemainingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairAmountRemaining"); } + float& RepairCheckIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairCheckInterval"); } + float& RepairPercentPerIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepairPercentPerInterval"); } + FVector& RiderCheckTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderCheckTraceOffset"); } + FVector& RiderEjectionImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderEjectionImpulse"); } + float& WakingTameAffinityDecreaseFoodPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAffinityDecreaseFoodPercentage"); } + float& WakingTameAllowFeedingFoodPercentageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAllowFeedingFoodPercentage"); } + float& WakingTameFoodAffinityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameFoodAffinityMultiplier"); } + float& CheckForWildAmbientHarvestingIntervalMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CheckForWildAmbientHarvestingIntervalMin"); } + float& CheckForWildAmbientHarvestingIntervalMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CheckForWildAmbientHarvestingIntervalMax"); } + float& WildAmbientHarvestingTimerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingTimer"); } + UAnimMontage* WildAmbientHarvestingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimation"); } + TArray WildAmbientHarvestingAnimationsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WildAmbientHarvestingAnimations"); } + float& WildAmbientHarvestingRadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildAmbientHarvestingRadius"); } + int& FlyerNumUnderGroundFailField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerNumUnderGroundFail"); } + int& AbsoluteBaseLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AbsoluteBaseLevel"); } + TSubclassOf& TamedHarvestDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedHarvestDamageType"); } + FDinoSaddleStruct& SaddleStructField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleStruct"); } + TArray DraggedRagdollsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DraggedRagdolls"); } + FVector& LastOverrodeRandomWanderLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastOverrodeRandomWanderLocation"); } + float& ChargeBumpDamageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeBumpDamage"); } + TSubclassOf& ChargeBumpDamageTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.ChargeBumpDamageType"); } + float& ChargeBumpImpulseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargeBumpImpulse"); } + float& MinChargeIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinChargeInterval"); } + float& PlayerMountedLaunchFowardSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedLaunchFowardSpeed"); } + float& PlayerMountedLaunchUpSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedLaunchUpSpeed"); } + float& AttackOnLaunchMaximumTargetDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackOnLaunchMaximumTargetDistance"); } + float& KeepFlightRemainingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.KeepFlightRemainingTime"); } + UAnimMontage* MountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MountCharacterAnimation"); } + UAnimMontage* UnmountCharacterAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnmountCharacterAnimation"); } + UAnimMontage* EndChargingAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EndChargingAnimation"); } + float& FlyingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyingRunSpeedModifier"); } + float& ChargingAnimDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingAnimDelay"); } + FName& RiderSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderSocketName"); } + float& ChargingActivationRequiresStaminaField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingActivationRequiresStamina"); } + float& ChargingActivationConsumesStaminaField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingActivationConsumesStamina"); } + float& FlyerHardBreakingOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerHardBreakingOverride"); } + float& BabyScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyScale"); } + float& BabySpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabySpeedMultiplier"); } + float& BabyPitchMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyPitchMultiplier"); } + float& BabyVolumeMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyVolumeMultiplier"); } + float& BabyWrongTemperatureHealthPercentDecreaseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyWrongTemperatureHealthPercentDecrease"); } + TWeakObjectPtr& WanderAroundActorField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.WanderAroundActor"); } + float& WanderAroundActorMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WanderAroundActorMaxDistance"); } + long double& ChargingStartBlockedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ChargingStartBlockedTime"); } + long double& LastChargeEndTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastChargeEndTime"); } + TArray SaddledStructuresField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddledStructures"); } + long double& LastTamedFlyerNearbyAllyCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTamedFlyerNearbyAllyCheckTime"); } + TSet, FDefaultSetAllocator>& MatingRequiresBiomeTagsSetField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "APrimalDinoCharacter.MatingRequiresBiomeTagsSet"); } + long double& LastUpdatedBabyAgeAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastUpdatedBabyAgeAtTime"); } + long double& LastUpdatedGestationAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastUpdatedGestationAtTime"); } + long double& LastUpdatedMatingAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastUpdatedMatingAtTime"); } + float& BabyAgeSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyAgeSpeed"); } + float& ExtraBabyAgeSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraBabyAgeSpeedMultiplier"); } + float& XPEarnMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.XPEarnMultiplier"); } + TArray& MatingRequiresBiomeTagsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MatingRequiresBiomeTags"); } + float& FemaleMatingRangeAdditionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FemaleMatingRangeAddition"); } + float& FemaleMatingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FemaleMatingTime"); } + FName& SaddledRiderSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddledRiderSocketName"); } + long double& NextAllowedMatingTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextAllowedMatingTime"); } + float& MatingProgressField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingProgress"); } + long double& LastMatingNotificationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastMatingNotificationTime"); } + long double& LastMatingWrongTemperatureNotificationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastMatingWrongTemperatureNotificationTime"); } + APrimalDinoCharacter* MatingWithDinoField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingWithDino"); } + UAnimMontage* MatingAnimationMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MatingAnimationMale"); } + long double& LastAmbientHarvestingAttackTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAmbientHarvestingAttackTime"); } + long double& PreviousAmbientTemperatureTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousAmbientTemperatureTime"); } + float& HypoThermalInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HypoThermalInsulation"); } + float& HyperThermalInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HyperThermalInsulation"); } + float& CachedAmbientTemperatureField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CachedAmbientTemperature"); } + float& GlobalSpawnEntryWeightMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GlobalSpawnEntryWeightMultiplier"); } + FieldArray GestationEggNumberOfLevelUpPointsAppliedField() { return { this, "APrimalDinoCharacter.GestationEggNumberOfLevelUpPointsApplied" }; } + float& GestationEggTamedIneffectivenessModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggTamedIneffectivenessModifier"); } + FieldArray GestationEggColorSetIndicesField() { return { this, "APrimalDinoCharacter.GestationEggColorSetIndices" }; } + float& NewFemaleMinTimeBetweenMatingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NewFemaleMinTimeBetweenMating"); } + float& NewFemaleMaxTimeBetweenMatingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NewFemaleMaxTimeBetweenMating"); } + TArray>& DefaultTamedBuffsField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DefaultTamedBuffs"); } + FVector& InterpolatedVelocityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.InterpolatedVelocity"); } + FVector& OldInterpolatedLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OldInterpolatedLocation"); } + float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HyperThermiaInsulation"); } + float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HypoThermiaInsulation"); } + float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.InsulationRange"); } + float& GangOverlapRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GangOverlapRange"); } + float& GangDamageResistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GangDamageResistance"); } + float& GangDamageField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GangDamage"); } + int& MaxGangCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxGangCount"); } + int& GangCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GangCount"); } + USoundBase* StingerKilledMineField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StingerKilledMine"); } + USoundBase* StingerKilledTheirsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StingerKilledTheirs"); } + long double& LastGangCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGangCheckTime"); } + FVector& LastGangCheckPositionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGangCheckPosition"); } + int& PreviousTargetingTeamField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousTargetingTeam"); } + int& LastRiderExitFrameCounterField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderExitFrameCounter"); } + float& WildRandomScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildRandomScale"); } + float& HeldJumpSlowFallingGravityZScaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HeldJumpSlowFallingGravityZScale"); } + UAnimMontage* SlowFallingAnimField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlowFallingAnim"); } + float& SlowFallingStaminaCostPerSecondField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SlowFallingStaminaCostPerSecond"); } + float& NoRiderRotationModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NoRiderRotationModifier"); } + FName& RiderFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFPVCameraUseSocketName"); } + FName& RiderLatchedFPVCameraUseSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderLatchedFPVCameraUseSocketName"); } + FName& PassengerFPVCameraRootSocketField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PassengerFPVCameraRootSocket"); } + TArray& FPVRiderBoneNamesToHideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.FPVRiderBoneNamesToHide"); } + float& ExtraRunningSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraRunningSpeedModifier"); } + float& ScaleExtraRunningSpeedModifierMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ScaleExtraRunningSpeedModifierMin"); } + float& ScaleExtraRunningSpeedModifierMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ScaleExtraRunningSpeedModifierMax"); } + float& ScaleExtraRunningSpeedModifierSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ScaleExtraRunningSpeedModifierSpeed"); } + float& LastHigherScaleExtraRunningSpeedValueField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastHigherScaleExtraRunningSpeedValue"); } + long double& LastHigherScaleExtraRunningSpeedTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastHigherScaleExtraRunningSpeedTime"); } + float& RiderMovementSpeedScalingRotationRatePowerMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMovementSpeedScalingRotationRatePowerMultiplier"); } + int& LoadDestroyWildDinosUnderVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LoadDestroyWildDinosUnderVersion"); } + int& SaveDestroyWildDinosUnderVersionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaveDestroyWildDinosUnderVersion"); } + float& AllowWaterSurfaceExtraJumpStaminaCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AllowWaterSurfaceExtraJumpStaminaCost"); } + USoundBase* PlayKillLocalSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayKillLocalSound"); } + TWeakObjectPtr& RiderAttackTargetField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RiderAttackTarget"); } + FVector& RiderAttackLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderAttackLocation"); } + char& TribeGroupPetOrderingRankField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TribeGroupPetOrderingRank"); } + char& TribeGroupPetRidingRankField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TribeGroupPetRidingRank"); } + char& FollowStoppingDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FollowStoppingDistance"); } + FString& ImprinterNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ImprinterName"); } + unsigned __int64& ImprinterPlayerDataIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ImprinterPlayerDataID"); } + float& BabyMinCuddleIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyMinCuddleInterval"); } + float& BabyMaxCuddleIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyMaxCuddleInterval"); } + float& BabyCuddleGracePeriodField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleGracePeriod"); } + float& BabyCuddleLoseImpringQualityPerSecondField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleLoseImpringQualityPerSecond"); } + float& BabyCuddleWalkDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleWalkDistance"); } + FVector& BabyCuddleWalkStartingLocationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddleWalkStartingLocation"); } + long double& BabyNextCuddleTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyNextCuddleTime"); } + TEnumAsByte& BabyCuddleTypeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleType"); } + TSubclassOf& BabyCuddleFoodField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.BabyCuddleFood"); } + UAnimMontage* BabyCuddledAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyCuddledAnimation"); } + TArray>& MyBabyCuddleFoodTypesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.MyBabyCuddleFoodTypes"); } + float& RiderMaxImprintingQualityDamageReductionField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxImprintingQualityDamageReduction"); } + float& RiderMaxImprintingQualityDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderMaxImprintingQualityDamageMultiplier"); } + float& BabyImprintingQualityTotalMaturationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.BabyImprintingQualityTotalMaturationTime"); } + float& WakingTameMaxDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameMaxDistance"); } + FString& TutorialHintStringField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TutorialHintString"); } + float& TimeBetweenTamedWakingEatAnimationsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TimeBetweenTamedWakingEatAnimations"); } + long double& LastEatAnimationTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastEatAnimationTime"); } + float& StepDamageFootDamageRunningMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepDamageFootDamageRunningMultiplier"); } + float& maxRangeForWeaponTriggeredTooltipField() { return *GetNativePointerField(this, "APrimalDinoCharacter.maxRangeForWeaponTriggeredTooltip"); } + float& StepRadialDamageOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StepRadialDamageOffset"); } + float& ForcePawnBigPushingForTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForcePawnBigPushingForTime"); } + float& RemainingXPPerHitField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RemainingXPPerHit"); } + TSubclassOf& AlphaDinoBuffField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.AlphaDinoBuff"); } + float& AlphaXPMultiplierMinLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaXPMultiplierMinLevel"); } + float& AlphaXPMultiplierMaxLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaXPMultiplierMaxLevel"); } + float& AlphaHarvestComponentHealthMultiplierMinLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaHarvestComponentHealthMultiplierMinLevel"); } + float& AlphaHarvestComponentHealthMultiplierMaxLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaHarvestComponentHealthMultiplierMaxLevel"); } + float& AlphaLeveledDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaLeveledDamageMultiplier"); } + float& WildLeveledDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildLeveledDamageMultiplier"); } + float& TamedLeveledDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedLeveledDamageMultiplier"); } + float& AlphaResistanceMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaResistanceMultiplier"); } + float& AlphaPercentageChanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaPercentageChance"); } + float& AlphaLevelMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaLevelMin"); } + float& AlphaLevelMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AlphaLevelMax"); } + int& ReplicateHighlightTagTeamField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ReplicateHighlightTagTeam"); } + float& EnemyDrawFloatingHUDLimitDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.EnemyDrawFloatingHUDLimitDistance"); } + float& AIDinoForceActiveUntasisingRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AIDinoForceActiveUntasisingRange"); } + float& WildRunningRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildRunningRotationRateModifier"); } + float& TamedRunningRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedRunningRotationRateModifier"); } + float& TamedSwimmingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedSwimmingRotationRateModifier"); } + float& WildSwimmingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildSwimmingRotationRateModifier"); } + float& RiderFlyingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RiderFlyingRotationRateModifier"); } + float& NoRiderFlyingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NoRiderFlyingRotationRateModifier"); } + float& AICombatRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AICombatRotationRateModifier"); } + float& WalkingRotationRateModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WalkingRotationRateModifier"); } + float& SetAttackTargetTraceDistanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SetAttackTargetTraceDistance"); } + float& SetAttackTargetTraceWidthField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SetAttackTargetTraceWidth"); } + float& WanderRadiusMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WanderRadiusMultiplier"); } + long double& RepeatPrimaryAttackLastSendTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RepeatPrimaryAttackLastSendTime"); } + long double& NextTamedDinoCharacterStatusTickTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextTamedDinoCharacterStatusTickTime"); } + long double& LastTamedDinoCharacterStatusTickTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTamedDinoCharacterStatusTickTime"); } + UAnimMontage* PlayerMountedCarryAnimationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PlayerMountedCarryAnimation"); } + float& HealthBarOffsetYField() { return *GetNativePointerField(this, "APrimalDinoCharacter.HealthBarOffsetY"); } + float& LimitRiderYawOnLatchedRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LimitRiderYawOnLatchedRange"); } + float& LatchingDistanceLimitField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingDistanceLimit"); } + float& LatchingInitialYawField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingInitialYaw"); } + float& LatchingInitialPitchField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingInitialPitch"); } + float& LatchingInterpolatedPitchField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingInterpolatedPitch"); } + float& LatchedFirstPersonViewAngleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchedFirstPersonViewAngle"); } + float& LatchingCameraInterpolationSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatchingCameraInterpolationSpeed"); } + float& TargetLatchingInitialYawField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TargetLatchingInitialYaw"); } + float& CurrentStrafeMagnitudeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentStrafeMagnitude"); } + float& GainStaminaWhenLatchedRateField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GainStaminaWhenLatchedRate"); } + int& LastFrameMoveRightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameMoveRight"); } + int& LastFrameMoveLeftField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastFrameMoveLeft"); } + FRotator& LastRiderMountedWeaponRotationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderMountedWeaponRotation"); } + long double& LastRiderMountedWeaponRotationSentTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastRiderMountedWeaponRotationSentTime"); } + int& DeathGivesDossierIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGivesDossierIndex"); } + float& DeathGivesDossierDelayField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathGivesDossierDelay"); } + FName& SaddleRiderMovementTraceThruSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SaddleRiderMovementTraceThruSocketName"); } + float& SwimmingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimmingRunSpeedModifier"); } + float& RidingSwimmingRunSpeedModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RidingSwimmingRunSpeedModifier"); } + long double& DinoDownloadedAtTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoDownloadedAtTime"); } + FString& UploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UploadedFromServerName"); } + FString& LatestUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LatestUploadedFromServerName"); } + FString& PreviousUploadedFromServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PreviousUploadedFromServerName"); } + FString& TamedOnServerNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedOnServerName"); } + TArray& DinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestors"); } + TArray& DinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoAncestorsMale"); } + TArray& NextBabyDinoAncestorsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestors"); } + TArray& NextBabyDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NextBabyDinoAncestorsMale"); } + int& MaxAllowedRandomMutationsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxAllowedRandomMutations"); } + int& RandomMutationRollsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationRolls"); } + float& RandomMutationChanceField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationChance"); } + float& RandomMutationGivePointsField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationGivePoints"); } + int& RandomMutationsMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationsMale"); } + int& RandomMutationsFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.RandomMutationsFemale"); } + int& GestationEggRandomMutationsFemaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggRandomMutationsFemale"); } + int& GestationEggRandomMutationsMaleField() { return *GetNativePointerField(this, "APrimalDinoCharacter.GestationEggRandomMutationsMale"); } + FName& WakingTameDistanceSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameDistanceSocketName"); } + int& WakingTameConsumeEntireStackMaxQuantityField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameConsumeEntireStackMaxQuantity"); } + float& AttackPlayerDesirabilityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackPlayerDesirabilityMultiplier"); } + long double& LastAutoHealingItemUseField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastAutoHealingItemUse"); } + long double& LastStartedCarryingCharacterTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastStartedCarryingCharacterTime"); } + float& FlyerAttachedExplosiveSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.FlyerAttachedExplosiveSpeedMultiplier"); } + TArray& DinoExtraDefaultInventoryItemsField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoExtraDefaultInventoryItems"); } + TArray>& DeathGiveEngramClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DeathGiveEngramClasses"); } + float& SinglePlayerOutgoingDamageModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SinglePlayerOutgoingDamageModifier"); } + float& SinglePlayerIncomingDamageModifierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SinglePlayerIncomingDamageModifier"); } + int& LastTickDelayFrameCountField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTickDelayFrameCount"); } + long double& NextTickDelayAllowTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NextTickDelayAllowTime"); } + long double& IgnoreZeroVelocityNoPreFrameTickingTillField() { return *GetNativePointerField(this, "APrimalDinoCharacter.IgnoreZeroVelocityNoPreFrameTickingTill"); } + float& TickStatusTimeAccumulationField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TickStatusTimeAccumulation"); } + long double& LastServerTamedTickField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastServerTamedTick"); } + int& LastTempDampenMovementInputAccelerationFrameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTempDampenMovementInputAccelerationFrame"); } + UAnimMontage* DinoLevelUpAnimationOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DinoLevelUpAnimationOverride"); } + TArray>& DamageVictimClassesIgnoreBlockingGeomtryTraceField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.DamageVictimClassesIgnoreBlockingGeomtryTrace"); } + long double& LastVacuumSpaceCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastVacuumSpaceCheckTime"); } + long double& LastGrappledTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastGrappledTime"); } + float& CloneBaseElementCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CloneBaseElementCost"); } + float& CloneElementCostPerLevelField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CloneElementCostPerLevel"); } + FName& NonDedicatedFreezeWildDinoPhysicsIfLevelUnloadedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NonDedicatedFreezeWildDinoPhysicsIfLevelUnloaded"); } + TArray& NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloadedField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloaded"); } + FVector& UnboardLocationTraceOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UnboardLocationTraceOffset"); } + FName& AttackLineOfSightMeshSocketNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackLineOfSightMeshSocketName"); } + float& AttackForceWalkDistanceMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackForceWalkDistanceMultiplier"); } + float& AttackForceWalkRotationRateMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackForceWalkRotationRateMultiplier"); } + int& OverrideDinoTameSoundIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideDinoTameSoundIndex"); } + USoundBase* SwimSoundField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSound"); } + float& SwimSoundIntervalPerHundredSpeedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSoundIntervalPerHundredSpeed"); } + float& SwimSoundTimeCacheField() { return *GetNativePointerField(this, "APrimalDinoCharacter.SwimSoundTimeCache"); } + TSubclassOf& TamedAIControllerOverrideField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.TamedAIControllerOverride"); } + int& PersonalTamedDinoCostField() { return *GetNativePointerField(this, "APrimalDinoCharacter.PersonalTamedDinoCost"); } + long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.UploadEarliestValidTime"); } + TArray& SaddlePassengerSeatOverridesField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.SaddlePassengerSeatOverrides"); } + UAnimSequence* OverrideSaddleDinoRiderAnimationOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideSaddleDinoRiderAnimationOverride"); } + UAnimSequence* OverrideSaddleDinoRiderMoveAnimationOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.OverrideSaddleDinoRiderMoveAnimationOverride"); } + float& StasisAutoDestroyIntervalField() { return *GetNativePointerField(this, "APrimalDinoCharacter.StasisAutoDestroyInterval"); } + float& CarryCameraYawOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CarryCameraYawOffset"); } + float& ExtraDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraDamageMultiplier"); } + float& ExtraTamedBaseHealthMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraTamedBaseHealthMultiplier"); } + float& AttackRangeOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.AttackRangeOffset"); } + char& CurrentPassengerSeatIndexField() { return *GetNativePointerField(this, "APrimalDinoCharacter.CurrentPassengerSeatIndex"); } + float& ExtraUntamedNetworkAndStasisRangeMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraUntamedNetworkAndStasisRangeMultiplier"); } + TArray>& AbsoluteVehicleBasedCharactersField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.AbsoluteVehicleBasedCharacters"); } + TArray>& AbsoluteVehicleBasedCharactersBasesField() { return *GetNativePointerField>*>(this, "APrimalDinoCharacter.AbsoluteVehicleBasedCharactersBases"); } + long double& LastTimeSwimSuffocatingField() { return *GetNativePointerField(this, "APrimalDinoCharacter.LastTimeSwimSuffocating"); } + float& NPC_UsableStructureCheck_RadiusField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPC_UsableStructureCheck_Radius"); } + ANPCZoneManager* DirectLinkedNPCZoneManagerField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DirectLinkedNPCZoneManager"); } + float& DirectLinkedNPCZoneManagerSpawnWeightField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DirectLinkedNPCZoneManagerSpawnWeight"); } + float& TheMaxHealthPercentageForBolaField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TheMaxHealthPercentageForBola"); } + float& WildDinoBolaTrapTimeOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildDinoBolaTrapTimeOverride"); } + float& TamedDinoBolaTrapTimeOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TamedDinoBolaTrapTimeOverride"); } + float& WildDinoBolaEscapeSetHealthToMinPercentField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildDinoBolaEscapeSetHealthToMinPercent"); } + float& MinTemperatureToBreedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MinTemperatureToBreed"); } + float& MaxTemperatureToBreedField() { return *GetNativePointerField(this, "APrimalDinoCharacter.MaxTemperatureToBreed"); } + float& TemperatureToBreedInsulationMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.TemperatureToBreedInsulationMultiplier"); } + float& WakingTameAffinityDecreaseGracePeriodField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WakingTameAffinityDecreaseGracePeriod"); } + float& ShipImpactDamageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ShipImpactDamageMultiplier"); } + float& ShipImpactImpulseMultiplierField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ShipImpactImpulseMultiplier"); } + TSubclassOf& DinoFeedingContainerClassField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DinoFeedingContainerClass"); } + UTexture2D* ReplicatedTeamHighlightTagTextureField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ReplicatedTeamHighlightTagTexture"); } + FItemNetID& DeathIncrementClipAmmoItemIDField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DeathIncrementClipAmmoItemID"); } + TWeakObjectPtr& DeathIncrementClipAmmoInventoryField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DeathIncrementClipAmmoInventory"); } + TArray DroppedItemsOnMeField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.DroppedItemsOnMe"); } + FString& DemolishStringOverrideField() { return *GetNativePointerField(this, "APrimalDinoCharacter.DemolishStringOverride"); } + float& WildPostSeamlessTravelStasisAutoDestroyIntervalMinField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildPostSeamlessTravelStasisAutoDestroyIntervalMin"); } + float& WildPostSeamlessTravelStasisAutoDestroyIntervalMaxField() { return *GetNativePointerField(this, "APrimalDinoCharacter.WildPostSeamlessTravelStasisAutoDestroyIntervalMax"); } + FVector& NPCSpawnLocOffsetField() { return *GetNativePointerField(this, "APrimalDinoCharacter.NPCSpawnLocOffset"); } + TSubclassOf& RiderBuffField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.RiderBuff"); } + float& Teleport_OnRaft_AllowedWithinRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.Teleport_OnRaft_AllowedWithinRange"); } + float& Teleport_OffRaft_AllowedWithinRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.Teleport_OffRaft_AllowedWithinRange"); } + float& Teleport_BetweenRafts_AllowedWithinRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.Teleport_BetweenRafts_AllowedWithinRange"); } + float& Teleport_OffRaft_MaxDistField() { return *GetNativePointerField(this, "APrimalDinoCharacter.Teleport_OffRaft_MaxDist"); } + float& ExtraStasisComponentCollisionPlayerRelevantRangeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ExtraStasisComponentCollisionPlayerRelevantRange"); } + FString& ForceUnlockDiscoveryZoneNameField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForceUnlockDiscoveryZoneName"); } + long double& ForceClearMoveIgnoreActorsTimeField() { return *GetNativePointerField(this, "APrimalDinoCharacter.ForceClearMoveIgnoreActorsTime"); } + TSubclassOf& MountedBuffField() { return *GetNativePointerField*>(this, "APrimalDinoCharacter.MountedBuff"); } + + // Bit fields + + BitFieldValue bAttackStopsMovement() { return { this, "APrimalDinoCharacter.bAttackStopsMovement" }; } + BitFieldValue bLocationBasedAttack() { return { this, "APrimalDinoCharacter.bLocationBasedAttack" }; } + BitFieldValue bTamedWanderHarvestAllowUsableHarvestingAsWell() { return { this, "APrimalDinoCharacter.bTamedWanderHarvestAllowUsableHarvestingAsWell" }; } + BitFieldValue bUseBPKilledSomethingEvent() { return { this, "APrimalDinoCharacter.bUseBPKilledSomethingEvent" }; } + BitFieldValue bPreventDinoResetAffinityOnUnsleep() { return { this, "APrimalDinoCharacter.bPreventDinoResetAffinityOnUnsleep" }; } + BitFieldValue bKeepInventoryForWakingTame() { return { this, "APrimalDinoCharacter.bKeepInventoryForWakingTame" }; } + BitFieldValue bForceReachedDestination() { return { this, "APrimalDinoCharacter.bForceReachedDestination" }; } + BitFieldValue bHadLinkedSupplyCrate() { return { this, "APrimalDinoCharacter.bHadLinkedSupplyCrate" }; } + BitFieldValue bRemovingStructuresOnDeath() { return { this, "APrimalDinoCharacter.bRemovingStructuresOnDeath" }; } + BitFieldValue bResetUseAccelerationForRequestedMove() { return { this, "APrimalDinoCharacter.bResetUseAccelerationForRequestedMove" }; } + BitFieldValue bHiddenForLocalPassenger() { return { this, "APrimalDinoCharacter.bHiddenForLocalPassenger" }; } + BitFieldValue bRunCheckCarriedTrace() { return { this, "APrimalDinoCharacter.bRunCheckCarriedTrace" }; } + BitFieldValue CanElevate() { return { this, "APrimalDinoCharacter.CanElevate" }; } + BitFieldValue bIsElevating() { return { this, "APrimalDinoCharacter.bIsElevating" }; } + BitFieldValue bIsBraking() { return { this, "APrimalDinoCharacter.bIsBraking" }; } + BitFieldValue MovingForward() { return { this, "APrimalDinoCharacter.MovingForward" }; } + BitFieldValue bTamedWanderCorpseHarvesting() { return { this, "APrimalDinoCharacter.bTamedWanderCorpseHarvesting" }; } + BitFieldValue bUseBPNotifyStructurePlacedNearby() { return { this, "APrimalDinoCharacter.bUseBPNotifyStructurePlacedNearby" }; } + BitFieldValue bUseBPCanTargetCorpse() { return { this, "APrimalDinoCharacter.bUseBPCanTargetCorpse" }; } + BitFieldValue bUseBPShouldForceFlee() { return { this, "APrimalDinoCharacter.bUseBPShouldForceFlee" }; } + BitFieldValue bReceivedDinoAncestors() { return { this, "APrimalDinoCharacter.bReceivedDinoAncestors" }; } + BitFieldValue bForceWanderOverrideNPCZoneManager() { return { this, "APrimalDinoCharacter.bForceWanderOverrideNPCZoneManager" }; } + BitFieldValue bDeprecateDino() { return { this, "APrimalDinoCharacter.bDeprecateDino" }; } + BitFieldValue bForceFoodItemAutoConsume() { return { this, "APrimalDinoCharacter.bForceFoodItemAutoConsume" }; } + BitFieldValue bFlyerAllowFlyingWithExplosive() { return { this, "APrimalDinoCharacter.bFlyerAllowFlyingWithExplosive" }; } + BitFieldValue bForceUseDediAttackTiming() { return { this, "APrimalDinoCharacter.bForceUseDediAttackTiming" }; } + BitFieldValue bForcePreventExitingWater() { return { this, "APrimalDinoCharacter.bForcePreventExitingWater" }; } + BitFieldValue bWakingTameConsumeEntireStack() { return { this, "APrimalDinoCharacter.bWakingTameConsumeEntireStack" }; } + BitFieldValue bAllowCarryCharacterWithoutRider() { return { this, "APrimalDinoCharacter.bAllowCarryCharacterWithoutRider" }; } + BitFieldValue bWildDinoPreventWeight() { return { this, "APrimalDinoCharacter.bWildDinoPreventWeight" }; } + BitFieldValue bRetainCarriedCharacterOnDismount() { return { this, "APrimalDinoCharacter.bRetainCarriedCharacterOnDismount" }; } + BitFieldValue bUseBPOnTamedProcessOrder() { return { this, "APrimalDinoCharacter.bUseBPOnTamedProcessOrder" }; } + BitFieldValue bIsMythicalCreature() { return { this, "APrimalDinoCharacter.bIsMythicalCreature" }; } + BitFieldValue bIsLanding() { return { this, "APrimalDinoCharacter.bIsLanding" }; } + BitFieldValue bCanCharge() { return { this, "APrimalDinoCharacter.bCanCharge" }; } + BitFieldValue bCancelInterpolation() { return { this, "APrimalDinoCharacter.bCancelInterpolation" }; } + BitFieldValue bIsCharging() { return { this, "APrimalDinoCharacter.bIsCharging" }; } + BitFieldValue bChargeDamageStructures() { return { this, "APrimalDinoCharacter.bChargeDamageStructures" }; } + BitFieldValue bReplicatePitchWhileSwimming() { return { this, "APrimalDinoCharacter.bReplicatePitchWhileSwimming" }; } + BitFieldValue bIsFlying() { return { this, "APrimalDinoCharacter.bIsFlying" }; } + BitFieldValue bIsWakingTame() { return { this, "APrimalDinoCharacter.bIsWakingTame" }; } + BitFieldValue bAllowRiding() { return { this, "APrimalDinoCharacter.bAllowRiding" }; } + BitFieldValue bForceAutoTame() { return { this, "APrimalDinoCharacter.bForceAutoTame" }; } + BitFieldValue bRiderJumpTogglesFlight() { return { this, "APrimalDinoCharacter.bRiderJumpTogglesFlight" }; } + BitFieldValue bHasRider() { return { this, "APrimalDinoCharacter.bHasRider" }; } + BitFieldValue bAllowCarryFlyerDinos() { return { this, "APrimalDinoCharacter.bAllowCarryFlyerDinos" }; } + BitFieldValue bForcedLanding() { return { this, "APrimalDinoCharacter.bForcedLanding" }; } + BitFieldValue bFlyerForceNoPitch() { return { this, "APrimalDinoCharacter.bFlyerForceNoPitch" }; } + BitFieldValue bPreventStasis() { return { this, "APrimalDinoCharacter.bPreventStasis" }; } + BitFieldValue bAutoTameable() { return { this, "APrimalDinoCharacter.bAutoTameable" }; } + BitFieldValue bAlwaysSetTamingTeamOnItemAdd() { return { this, "APrimalDinoCharacter.bAlwaysSetTamingTeamOnItemAdd" }; } + BitFieldValue bDinoLoadedFromSaveGame() { return { this, "APrimalDinoCharacter.bDinoLoadedFromSaveGame" }; } + BitFieldValue bCheatForceTameRide() { return { this, "APrimalDinoCharacter.bCheatForceTameRide" }; } + BitFieldValue bIsFemale() { return { this, "APrimalDinoCharacter.bIsFemale" }; } + BitFieldValue bRiderUseDirectionalAttackIndex() { return { this, "APrimalDinoCharacter.bRiderUseDirectionalAttackIndex" }; } + BitFieldValue bCanBeTamed() { return { this, "APrimalDinoCharacter.bCanBeTamed" }; } + BitFieldValue bTargetingIgnoredByWildDinos() { return { this, "APrimalDinoCharacter.bTargetingIgnoredByWildDinos" }; } + BitFieldValue bTargetingIgnoreWildDinos() { return { this, "APrimalDinoCharacter.bTargetingIgnoreWildDinos" }; } + BitFieldValue bCanMountOnHumans() { return { this, "APrimalDinoCharacter.bCanMountOnHumans" }; } + BitFieldValue bIKIgnoreSaddleStructures() { return { this, "APrimalDinoCharacter.bIKIgnoreSaddleStructures" }; } + BitFieldValue bAttackTargetWhenLaunched() { return { this, "APrimalDinoCharacter.bAttackTargetWhenLaunched" }; } + BitFieldValue bCanOpenLockedDoors() { return { this, "APrimalDinoCharacter.bCanOpenLockedDoors" }; } + BitFieldValue bUseColorization() { return { this, "APrimalDinoCharacter.bUseColorization" }; } + BitFieldValue bMeleeSwingDamageBlockedByStrutures() { return { this, "APrimalDinoCharacter.bMeleeSwingDamageBlockedByStrutures" }; } + BitFieldValue bAllowTargetingCorpses() { return { this, "APrimalDinoCharacter.bAllowTargetingCorpses" }; } + BitFieldValue bRiderDontRequireSaddle() { return { this, "APrimalDinoCharacter.bRiderDontRequireSaddle" }; } + BitFieldValue bAllowsFishingOnSaddle() { return { this, "APrimalDinoCharacter.bAllowsFishingOnSaddle" }; } + BitFieldValue bCanBeOrdered() { return { this, "APrimalDinoCharacter.bCanBeOrdered" }; } + BitFieldValue bOverridePlatformStructureLimit() { return { this, "APrimalDinoCharacter.bOverridePlatformStructureLimit" }; } + BitFieldValue bMeleeAttackHarvetUsableComponents() { return { this, "APrimalDinoCharacter.bMeleeAttackHarvetUsableComponents" }; } + BitFieldValue bPlatformSaddleIgnoreRotDotCheck() { return { this, "APrimalDinoCharacter.bPlatformSaddleIgnoreRotDotCheck" }; } + BitFieldValue bUseInteprolatedVelocity() { return { this, "APrimalDinoCharacter.bUseInteprolatedVelocity" }; } + BitFieldValue bIsCarnivore() { return { this, "APrimalDinoCharacter.bIsCarnivore" }; } + BitFieldValue bAllowRidingInWater() { return { this, "APrimalDinoCharacter.bAllowRidingInWater" }; } + BitFieldValue bUsesGender() { return { this, "APrimalDinoCharacter.bUsesGender" }; } + BitFieldValue bTargetEverything() { return { this, "APrimalDinoCharacter.bTargetEverything" }; } + BitFieldValue bTamedWanderHarvestNonUsableHarvesting() { return { this, "APrimalDinoCharacter.bTamedWanderHarvestNonUsableHarvesting" }; } + BitFieldValue bEnableTamedWandering() { return { this, "APrimalDinoCharacter.bEnableTamedWandering" }; } + BitFieldValue bCollectVictimItems() { return { this, "APrimalDinoCharacter.bCollectVictimItems" }; } + BitFieldValue bServerInitializedDino() { return { this, "APrimalDinoCharacter.bServerInitializedDino" }; } + BitFieldValue bNPCSpawnerOverrideLevel() { return { this, "APrimalDinoCharacter.bNPCSpawnerOverrideLevel" }; } + BitFieldValue bHasMateBoost() { return { this, "APrimalDinoCharacter.bHasMateBoost" }; } + BitFieldValue NPCSpawnerAddLevelOffsetBeforeMultiplier() { return { this, "APrimalDinoCharacter.NPCSpawnerAddLevelOffsetBeforeMultiplier" }; } + BitFieldValue bTamingHasFood() { return { this, "APrimalDinoCharacter.bTamingHasFood" }; } + BitFieldValue bDontWander() { return { this, "APrimalDinoCharacter.bDontWander" }; } + BitFieldValue bAnimIsMoving() { return { this, "APrimalDinoCharacter.bAnimIsMoving" }; } + BitFieldValue bDoStepDamage() { return { this, "APrimalDinoCharacter.bDoStepDamage" }; } + BitFieldValue bPreventBasingWhenUntamed() { return { this, "APrimalDinoCharacter.bPreventBasingWhenUntamed" }; } + BitFieldValue bChargingRequiresWalking() { return { this, "APrimalDinoCharacter.bChargingRequiresWalking" }; } + BitFieldValue bUseRootLocSwimOffset() { return { this, "APrimalDinoCharacter.bUseRootLocSwimOffset" }; } + BitFieldValue bUseLowQualityAnimationTick() { return { this, "APrimalDinoCharacter.bUseLowQualityAnimationTick" }; } + BitFieldValue bDisplaySummonedNotification() { return { this, "APrimalDinoCharacter.bDisplaySummonedNotification" }; } + BitFieldValue bDisplayKilledNotification() { return { this, "APrimalDinoCharacter.bDisplayKilledNotification" }; } + BitFieldValue bUseBPGetAttackWeight() { return { this, "APrimalDinoCharacter.bUseBPGetAttackWeight" }; } + BitFieldValue bServerForceUpdateDinoGameplayMeshNearPlayer() { return { this, "APrimalDinoCharacter.bServerForceUpdateDinoGameplayMeshNearPlayer" }; } + BitFieldValue bPreventAllRiderWeapons() { return { this, "APrimalDinoCharacter.bPreventAllRiderWeapons" }; } + BitFieldValue bAllowDeathAutoGrab() { return { this, "APrimalDinoCharacter.bAllowDeathAutoGrab" }; } + BitFieldValue bSupportWakingTame() { return { this, "APrimalDinoCharacter.bSupportWakingTame" }; } + BitFieldValue bAllowAutoUnstasisDestroy() { return { this, "APrimalDinoCharacter.bAllowAutoUnstasisDestroy" }; } + BitFieldValue bDebugBaby() { return { this, "APrimalDinoCharacter.bDebugBaby" }; } + BitFieldValue bAlwaysUpdateAimOffsetInterpolation() { return { this, "APrimalDinoCharacter.bAlwaysUpdateAimOffsetInterpolation" }; } + BitFieldValue WildAmbientHarvestingAnimationServerTickPose() { return { this, "APrimalDinoCharacter.WildAmbientHarvestingAnimationServerTickPose" }; } + BitFieldValue bPreventSleepingTame() { return { this, "APrimalDinoCharacter.bPreventSleepingTame" }; } + BitFieldValue bTamedWanderHarvest() { return { this, "APrimalDinoCharacter.bTamedWanderHarvest" }; } + BitFieldValue bSimulatedNetLandCheckFloor() { return { this, "APrimalDinoCharacter.bSimulatedNetLandCheckFloor" }; } + BitFieldValue bRefreshedColorization() { return { this, "APrimalDinoCharacter.bRefreshedColorization" }; } + BitFieldValue bPoopIsEgg() { return { this, "APrimalDinoCharacter.bPoopIsEgg" }; } + BitFieldValue bPoopIsDud() { return { this, "APrimalDinoCharacter.bPoopIsDud" }; } + BitFieldValue bWasChargingBlocked() { return { this, "APrimalDinoCharacter.bWasChargingBlocked" }; } + BitFieldValue bWasRidingFalling() { return { this, "APrimalDinoCharacter.bWasRidingFalling" }; } + BitFieldValue bInitializedForReplicatedBasing() { return { this, "APrimalDinoCharacter.bInitializedForReplicatedBasing" }; } + BitFieldValue bClientWasTamed() { return { this, "APrimalDinoCharacter.bClientWasTamed" }; } + BitFieldValue bFlyerPreventRiderAutoFly() { return { this, "APrimalDinoCharacter.bFlyerPreventRiderAutoFly" }; } + BitFieldValue bAllowFlyerLandedRider() { return { this, "APrimalDinoCharacter.bAllowFlyerLandedRider" }; } + BitFieldValue bPreventFlyerFlyingRider() { return { this, "APrimalDinoCharacter.bPreventFlyerFlyingRider" }; } + BitFieldValue bPreventFlyerCapsuleExpansion() { return { this, "APrimalDinoCharacter.bPreventFlyerCapsuleExpansion" }; } + BitFieldValue bIncludeCarryWeightOfBasedPawns() { return { this, "APrimalDinoCharacter.bIncludeCarryWeightOfBasedPawns" }; } + BitFieldValue bForceRiderNetworkParent() { return { this, "APrimalDinoCharacter.bForceRiderNetworkParent" }; } + BitFieldValue bForcePerfectTame() { return { this, "APrimalDinoCharacter.bForcePerfectTame" }; } + BitFieldValue bCanHaveBaby() { return { this, "APrimalDinoCharacter.bCanHaveBaby" }; } + BitFieldValue bUseBabyGestation() { return { this, "APrimalDinoCharacter.bUseBabyGestation" }; } + BitFieldValue bPreventUnalignedDinoBasing() { return { this, "APrimalDinoCharacter.bPreventUnalignedDinoBasing" }; } + BitFieldValue bOverrideLevelMusicIfTamed() { return { this, "APrimalDinoCharacter.bOverrideLevelMusicIfTamed" }; } + BitFieldValue bSupportsSaddleStructures() { return { this, "APrimalDinoCharacter.bSupportsSaddleStructures" }; } + BitFieldValue bBonesHidden() { return { this, "APrimalDinoCharacter.bBonesHidden" }; } + BitFieldValue bDelayedAttachement() { return { this, "APrimalDinoCharacter.bDelayedAttachement" }; } + BitFieldValue bCanBeRepaired() { return { this, "APrimalDinoCharacter.bCanBeRepaired" }; } + BitFieldValue bFlyerDontAutoLandOnDismount() { return { this, "APrimalDinoCharacter.bFlyerDontAutoLandOnDismount" }; } + BitFieldValue bIsRepairing() { return { this, "APrimalDinoCharacter.bIsRepairing" }; } + BitFieldValue bIsBaby() { return { this, "APrimalDinoCharacter.bIsBaby" }; } + BitFieldValue bWasBaby() { return { this, "APrimalDinoCharacter.bWasBaby" }; } + BitFieldValue bCanUnclaimTame() { return { this, "APrimalDinoCharacter.bCanUnclaimTame" }; } + BitFieldValue bAllowWildDinoEquipment() { return { this, "APrimalDinoCharacter.bAllowWildDinoEquipment" }; } + BitFieldValue bUseTamedVisibleComponents() { return { this, "APrimalDinoCharacter.bUseTamedVisibleComponents" }; } + BitFieldValue bAllowDemolish() { return { this, "APrimalDinoCharacter.bAllowDemolish" }; } + BitFieldValue bUseGang() { return { this, "APrimalDinoCharacter.bUseGang" }; } + BitFieldValue bBlueprintDrawFloatingHUD() { return { this, "APrimalDinoCharacter.bBlueprintDrawFloatingHUD" }; } + BitFieldValue bEggBoosted() { return { this, "APrimalDinoCharacter.bEggBoosted" }; } + BitFieldValue bUseBPTamedTick() { return { this, "APrimalDinoCharacter.bUseBPTamedTick" }; } + BitFieldValue bUseBPOverrideWantsToRun() { return { this, "APrimalDinoCharacter.bUseBPOverrideWantsToRun" }; } + BitFieldValue bUseBPPlayDying() { return { this, "APrimalDinoCharacter.bUseBPPlayDying" }; } + BitFieldValue bSupportsPassengerSeats() { return { this, "APrimalDinoCharacter.bSupportsPassengerSeats" }; } + BitFieldValue bScaleInsulationByMeleeDamage() { return { this, "APrimalDinoCharacter.bScaleInsulationByMeleeDamage" }; } + BitFieldValue bInventoryOnlyAllowCraftingWhenWandering() { return { this, "APrimalDinoCharacter.bInventoryOnlyAllowCraftingWhenWandering" }; } + BitFieldValue bUseWildRandomScale() { return { this, "APrimalDinoCharacter.bUseWildRandomScale" }; } + BitFieldValue bHeldJumpSlowFalling() { return { this, "APrimalDinoCharacter.bHeldJumpSlowFalling" }; } + BitFieldValue bIsHeldJumpSlowFalling() { return { this, "APrimalDinoCharacter.bIsHeldJumpSlowFalling" }; } + BitFieldValue bPlayingSlowFallingAnim() { return { this, "APrimalDinoCharacter.bPlayingSlowFallingAnim" }; } + BitFieldValue bTriggerBPUnstasis() { return { this, "APrimalDinoCharacter.bTriggerBPUnstasis" }; } + BitFieldValue bWildProduceEggDynamically() { return { this, "APrimalDinoCharacter.bWildProduceEggDynamically" }; } + BitFieldValue bPreventWakingTameFeeding() { return { this, "APrimalDinoCharacter.bPreventWakingTameFeeding" }; } + BitFieldValue bForceDisablingTaming() { return { this, "APrimalDinoCharacter.bForceDisablingTaming" }; } + BitFieldValue bFlyerAllowRidingInCaves() { return { this, "APrimalDinoCharacter.bFlyerAllowRidingInCaves" }; } + BitFieldValue bScaleExtraRunningSpeedModifier() { return { this, "APrimalDinoCharacter.bScaleExtraRunningSpeedModifier" }; } + BitFieldValue bMeleeSwingDamageBlockedByAllStationaryObjects() { return { this, "APrimalDinoCharacter.bMeleeSwingDamageBlockedByAllStationaryObjects" }; } + BitFieldValue bUseBPChargingModifyInputAcceleration() { return { this, "APrimalDinoCharacter.bUseBPChargingModifyInputAcceleration" }; } + BitFieldValue bUseBPOnRepIsCharging() { return { this, "APrimalDinoCharacter.bUseBPOnRepIsCharging" }; } + BitFieldValue bUseBPPreventOrderAllowed() { return { this, "APrimalDinoCharacter.bUseBPPreventOrderAllowed" }; } + BitFieldValue bPassengerDinosUsePassengerAnim() { return { this, "APrimalDinoCharacter.bPassengerDinosUsePassengerAnim" }; } + BitFieldValue bUsesPassengerAnimOnDinos() { return { this, "APrimalDinoCharacter.bUsesPassengerAnimOnDinos" }; } + BitFieldValue bIgnoreServerTamedTick() { return { this, "APrimalDinoCharacter.bIgnoreServerTamedTick" }; } + BitFieldValue LastPlayedAttackAnimationWasAlt() { return { this, "APrimalDinoCharacter.LastPlayedAttackAnimationWasAlt" }; } + BitFieldValue bApplyRootBoneTranslationsWhenPainting() { return { this, "APrimalDinoCharacter.bApplyRootBoneTranslationsWhenPainting" }; } + BitFieldValue bDoNotMirrorPaintUVs() { return { this, "APrimalDinoCharacter.bDoNotMirrorPaintUVs" }; } + BitFieldValue bWaitingForFirstIKTraceOrBasedMovement() { return { this, "APrimalDinoCharacter.bWaitingForFirstIKTraceOrBasedMovement" }; } + BitFieldValue bOnlyDoStepDamageWhenRunning() { return { this, "APrimalDinoCharacter.bOnlyDoStepDamageWhenRunning" }; } + BitFieldValue bShouldNotifyClientWhenLanded() { return { this, "APrimalDinoCharacter.bShouldNotifyClientWhenLanded" }; } + BitFieldValue bPreventPlatformSaddleMultiFloors() { return { this, "APrimalDinoCharacter.bPreventPlatformSaddleMultiFloors" }; } + BitFieldValue bPreventMountedDinoMeshHiding() { return { this, "APrimalDinoCharacter.bPreventMountedDinoMeshHiding" }; } + BitFieldValue bUsePlayerMountedCarryingDinoAnimation() { return { this, "APrimalDinoCharacter.bUsePlayerMountedCarryingDinoAnimation" }; } + BitFieldValue bPreventRotationRateModifier() { return { this, "APrimalDinoCharacter.bPreventRotationRateModifier" }; } + BitFieldValue bStepDamageFoliageOnly() { return { this, "APrimalDinoCharacter.bStepDamageFoliageOnly" }; } + BitFieldValue bPreventUntamedRun() { return { this, "APrimalDinoCharacter.bPreventUntamedRun" }; } + BitFieldValue bAllowTogglingPublicSeating() { return { this, "APrimalDinoCharacter.bAllowTogglingPublicSeating" }; } + BitFieldValue bAllowPublicSeating() { return { this, "APrimalDinoCharacter.bAllowPublicSeating" }; } + BitFieldValue bAllowWaterSurfaceExtraJump() { return { this, "APrimalDinoCharacter.bAllowWaterSurfaceExtraJump" }; } + BitFieldValue bUseVelocityForRequestedMoveIfStuck() { return { this, "APrimalDinoCharacter.bUseVelocityForRequestedMoveIfStuck" }; } + BitFieldValue bUseBPDoAttack() { return { this, "APrimalDinoCharacter.bUseBPDoAttack" }; } + BitFieldValue bStepDamageNonFoliageWithoutRunning() { return { this, "APrimalDinoCharacter.bStepDamageNonFoliageWithoutRunning" }; } + BitFieldValue bStepDamageAllTargetables() { return { this, "APrimalDinoCharacter.bStepDamageAllTargetables" }; } + BitFieldValue bDamageNonFoliageFeetSocketsOnly() { return { this, "APrimalDinoCharacter.bDamageNonFoliageFeetSocketsOnly" }; } + BitFieldValue bRiderDontBeBlockedByPawnMesh() { return { this, "APrimalDinoCharacter.bRiderDontBeBlockedByPawnMesh" }; } + BitFieldValue bUseExtendedUnstasisCheck() { return { this, "APrimalDinoCharacter.bUseExtendedUnstasisCheck" }; } + BitFieldValue bTickedStasis() { return { this, "APrimalDinoCharacter.bTickedStasis" }; } + BitFieldValue bAllowDinoAutoConsumeInventoryFood() { return { this, "APrimalDinoCharacter.bAllowDinoAutoConsumeInventoryFood" }; } + BitFieldValue bForceNoCharacterStatusComponentTick() { return { this, "APrimalDinoCharacter.bForceNoCharacterStatusComponentTick" }; } + BitFieldValue bIsRaidDino() { return { this, "APrimalDinoCharacter.bIsRaidDino" }; } + BitFieldValue bWildIgnoredByAutoTurrets() { return { this, "APrimalDinoCharacter.bWildIgnoredByAutoTurrets" }; } + BitFieldValue bWildAllowTargetingNeutralStructures() { return { this, "APrimalDinoCharacter.bWildAllowTargetingNeutralStructures" }; } + BitFieldValue bDoStepDamageTamedOnly() { return { this, "APrimalDinoCharacter.bDoStepDamageTamedOnly" }; } + BitFieldValue bStepDamageNonFoliageTamedOnly() { return { this, "APrimalDinoCharacter.bStepDamageNonFoliageTamedOnly" }; } + BitFieldValue bDroppedInventoryDeposit() { return { this, "APrimalDinoCharacter.bDroppedInventoryDeposit" }; } + BitFieldValue bForceWildDeathInventoryDeposit() { return { this, "APrimalDinoCharacter.bForceWildDeathInventoryDeposit" }; } + BitFieldValue bIsCarryingCharacter() { return { this, "APrimalDinoCharacter.bIsCarryingCharacter" }; } + BitFieldValue bIsCarryingPassenger() { return { this, "APrimalDinoCharacter.bIsCarryingPassenger" }; } + BitFieldValue bIsManualFoodEat() { return { this, "APrimalDinoCharacter.bIsManualFoodEat" }; } + BitFieldValue bDontPlayAttackingMusic() { return { this, "APrimalDinoCharacter.bDontPlayAttackingMusic" }; } + BitFieldValue bForceIgnoreRagdollHarvesting() { return { this, "APrimalDinoCharacter.bForceIgnoreRagdollHarvesting" }; } + BitFieldValue bBPModifyAimOffsetTargetLocation() { return { this, "APrimalDinoCharacter.bBPModifyAimOffsetTargetLocation" }; } + BitFieldValue bIsVehicle() { return { this, "APrimalDinoCharacter.bIsVehicle" }; } + BitFieldValue bDisallowPostNetReplication() { return { this, "APrimalDinoCharacter.bDisallowPostNetReplication" }; } + BitFieldValue bTakingOff() { return { this, "APrimalDinoCharacter.bTakingOff" }; } + BitFieldValue bPreventMating() { return { this, "APrimalDinoCharacter.bPreventMating" }; } + BitFieldValue bAttackStopsRotation() { return { this, "APrimalDinoCharacter.bAttackStopsRotation" }; } + BitFieldValue bFlyerDinoAllowBackwardsFlight() { return { this, "APrimalDinoCharacter.bFlyerDinoAllowBackwardsFlight" }; } + BitFieldValue bFlyerDinoAllowStrafing() { return { this, "APrimalDinoCharacter.bFlyerDinoAllowStrafing" }; } + BitFieldValue bIgnoreTargetingLiveUnriddenDinos() { return { this, "APrimalDinoCharacter.bIgnoreTargetingLiveUnriddenDinos" }; } + BitFieldValue bSleepedForceCreateInventory() { return { this, "APrimalDinoCharacter.bSleepedForceCreateInventory" }; } + BitFieldValue bLocalForceNearbySkelMeshUpdate() { return { this, "APrimalDinoCharacter.bLocalForceNearbySkelMeshUpdate" }; } + BitFieldValue bFlyerDisableEnemyTargetingMaxDeltaZ() { return { this, "APrimalDinoCharacter.bFlyerDisableEnemyTargetingMaxDeltaZ" }; } + BitFieldValue bIsBossDino() { return { this, "APrimalDinoCharacter.bIsBossDino" }; } + BitFieldValue bTamedAIAllowSpecialAttacks() { return { this, "APrimalDinoCharacter.bTamedAIAllowSpecialAttacks" }; } + BitFieldValue bTamedAIToggleSpecialAttacks() { return { this, "APrimalDinoCharacter.bTamedAIToggleSpecialAttacks" }; } + BitFieldValue bLocalPrimaryAttackPressed() { return { this, "APrimalDinoCharacter.bLocalPrimaryAttackPressed" }; } + BitFieldValue bRepeatPrimaryAttack() { return { this, "APrimalDinoCharacter.bRepeatPrimaryAttack" }; } + BitFieldValue bPreventUploading() { return { this, "APrimalDinoCharacter.bPreventUploading" }; } + BitFieldValue bPreventHibernation() { return { this, "APrimalDinoCharacter.bPreventHibernation" }; } + BitFieldValue bRiderMovementLocked() { return { this, "APrimalDinoCharacter.bRiderMovementLocked" }; } + BitFieldValue bTameTimerSet() { return { this, "APrimalDinoCharacter.bTameTimerSet" }; } + BitFieldValue bNeutered() { return { this, "APrimalDinoCharacter.bNeutered" }; } + BitFieldValue bIgnoreAllWhistles() { return { this, "APrimalDinoCharacter.bIgnoreAllWhistles" }; } + BitFieldValue bUseBPDoHarvestAttack() { return { this, "APrimalDinoCharacter.bUseBPDoHarvestAttack" }; } + BitFieldValue bUseBPModifyHarvestingQuantity() { return { this, "APrimalDinoCharacter.bUseBPModifyHarvestingQuantity" }; } + BitFieldValue bUseBPModifyHarvestingWeightsArray() { return { this, "APrimalDinoCharacter.bUseBPModifyHarvestingWeightsArray" }; } + BitFieldValue bUseBPModifyHarvestDamage() { return { this, "APrimalDinoCharacter.bUseBPModifyHarvestDamage" }; } + BitFieldValue bHideFloatingHUD() { return { this, "APrimalDinoCharacter.bHideFloatingHUD" }; } + BitFieldValue bDisableHarvesting() { return { this, "APrimalDinoCharacter.bDisableHarvesting" }; } + BitFieldValue bUseBPDinoPostBeginPlay() { return { this, "APrimalDinoCharacter.bUseBPDinoPostBeginPlay" }; } + BitFieldValue bForceAllowTickingThisFrame() { return { this, "APrimalDinoCharacter.bForceAllowTickingThisFrame" }; } + BitFieldValue bDrawHealthBar() { return { this, "APrimalDinoCharacter.bDrawHealthBar" }; } + BitFieldValue bUseShoulderMountedLaunch() { return { this, "APrimalDinoCharacter.bUseShoulderMountedLaunch" }; } + BitFieldValue bDidSetupTamed() { return { this, "APrimalDinoCharacter.bDidSetupTamed" }; } + BitFieldValue bIncrementedNumDinos() { return { this, "APrimalDinoCharacter.bIncrementedNumDinos" }; } + BitFieldValue bForceAllowPvECarry() { return { this, "APrimalDinoCharacter.bForceAllowPvECarry" }; } + BitFieldValue bUnderwaterMating() { return { this, "APrimalDinoCharacter.bUnderwaterMating" }; } + BitFieldValue bBabyPreventExitingWater() { return { this, "APrimalDinoCharacter.bBabyPreventExitingWater" }; } + BitFieldValue bFlyerDontGainImpulseOnSubmerged() { return { this, "APrimalDinoCharacter.bFlyerDontGainImpulseOnSubmerged" }; } + BitFieldValue bUseBPCanAutodrag() { return { this, "APrimalDinoCharacter.bUseBPCanAutodrag" }; } + BitFieldValue bUseBPCanDragCharacter() { return { this, "APrimalDinoCharacter.bUseBPCanDragCharacter" }; } + BitFieldValue bAllowDraggingWhileFalling() { return { this, "APrimalDinoCharacter.bAllowDraggingWhileFalling" }; } + BitFieldValue bSingleplayerFreezePhysicsWhenNoTarget() { return { this, "APrimalDinoCharacter.bSingleplayerFreezePhysicsWhenNoTarget" }; } + BitFieldValue bIsSingleplayer() { return { this, "APrimalDinoCharacter.bIsSingleplayer" }; } + BitFieldValue bIsCloneDino() { return { this, "APrimalDinoCharacter.bIsCloneDino" }; } + BitFieldValue bUseAdvancedAnimLerp() { return { this, "APrimalDinoCharacter.bUseAdvancedAnimLerp" }; } + BitFieldValue bPreventWanderingUnderWater() { return { this, "APrimalDinoCharacter.bPreventWanderingUnderWater" }; } + BitFieldValue bWildAllowFollowTamedTarget() { return { this, "APrimalDinoCharacter.bWildAllowFollowTamedTarget" }; } + BitFieldValue bAllowDamageSameTeamAndClass() { return { this, "APrimalDinoCharacter.bAllowDamageSameTeamAndClass" }; } + BitFieldValue bAllowsTurretMode() { return { this, "APrimalDinoCharacter.bAllowsTurretMode" }; } + BitFieldValue bIsInTurretMode() { return { this, "APrimalDinoCharacter.bIsInTurretMode" }; } + BitFieldValue bUseBPShouldCancelDoAttack() { return { this, "APrimalDinoCharacter.bUseBPShouldCancelDoAttack" }; } + BitFieldValue bUseBPModifyDesiredRotation() { return { this, "APrimalDinoCharacter.bUseBPModifyDesiredRotation" }; } + BitFieldValue bUseLocalSpaceDesiredRotationWithRider() { return { this, "APrimalDinoCharacter.bUseLocalSpaceDesiredRotationWithRider" }; } + BitFieldValue bUseBPDesiredRotationIsLocalSpace() { return { this, "APrimalDinoCharacter.bUseBPDesiredRotationIsLocalSpace" }; } + BitFieldValue bForcedLandingClearRider() { return { this, "APrimalDinoCharacter.bForcedLandingClearRider" }; } + BitFieldValue bUseBP_CustomModifier_RotationRate() { return { this, "APrimalDinoCharacter.bUseBP_CustomModifier_RotationRate" }; } + BitFieldValue bUseBP_CustomModifier_MaxSpeed() { return { this, "APrimalDinoCharacter.bUseBP_CustomModifier_MaxSpeed" }; } + BitFieldValue bUseBP_OnStartLandingNotify() { return { this, "APrimalDinoCharacter.bUseBP_OnStartLandingNotify" }; } + BitFieldValue bIsClearingRider() { return { this, "APrimalDinoCharacter.bIsClearingRider" }; } + BitFieldValue bUseAttackForceWalkDistanceMultiplier() { return { this, "APrimalDinoCharacter.bUseAttackForceWalkDistanceMultiplier" }; } + BitFieldValue bForcePerFrameTicking() { return { this, "APrimalDinoCharacter.bForcePerFrameTicking" }; } + BitFieldValue bHadStaticBase() { return { this, "APrimalDinoCharacter.bHadStaticBase" }; } + BitFieldValue bNoKillXP() { return { this, "APrimalDinoCharacter.bNoKillXP" }; } + BitFieldValue bIgnoreAllyLook() { return { this, "APrimalDinoCharacter.bIgnoreAllyLook" }; } + BitFieldValue bBabyInitiallyUnclaimed() { return { this, "APrimalDinoCharacter.bBabyInitiallyUnclaimed" }; } + BitFieldValue bUseBPForceTurretFastTargeting() { return { this, "APrimalDinoCharacter.bUseBPForceTurretFastTargeting" }; } + BitFieldValue bLastAnyLegOnGround() { return { this, "APrimalDinoCharacter.bLastAnyLegOnGround" }; } + BitFieldValue bSuppressWakingTameMessage() { return { this, "APrimalDinoCharacter.bSuppressWakingTameMessage" }; } + BitFieldValue bPreventFlyerLanding() { return { this, "APrimalDinoCharacter.bPreventFlyerLanding" }; } + BitFieldValue bHasDied() { return { this, "APrimalDinoCharacter.bHasDied" }; } + BitFieldValue bHasPlayDying() { return { this, "APrimalDinoCharacter.bHasPlayDying" }; } + BitFieldValue bDisableCollisionWithDinosWhenFlying() { return { this, "APrimalDinoCharacter.bDisableCollisionWithDinosWhenFlying" }; } + BitFieldValue bAllowTrapping() { return { this, "APrimalDinoCharacter.bAllowTrapping" }; } + BitFieldValue bPreventWildTrapping() { return { this, "APrimalDinoCharacter.bPreventWildTrapping" }; } + BitFieldValue bIsTrapTamed() { return { this, "APrimalDinoCharacter.bIsTrapTamed" }; } + BitFieldValue bIgnoreDestroyOnRapidDeath() { return { this, "APrimalDinoCharacter.bIgnoreDestroyOnRapidDeath" }; } + BitFieldValue bPreventFallingBumpCheck() { return { this, "APrimalDinoCharacter.bPreventFallingBumpCheck" }; } + BitFieldValue bIsDestroyingDino() { return { this, "APrimalDinoCharacter.bIsDestroyingDino" }; } + BitFieldValue bCheckBPAllowClaiming() { return { this, "APrimalDinoCharacter.bCheckBPAllowClaiming" }; } + BitFieldValue bUseBlueprintExtraBabyScale() { return { this, "APrimalDinoCharacter.bUseBlueprintExtraBabyScale" }; } + BitFieldValue bPreventNeuter() { return { this, "APrimalDinoCharacter.bPreventNeuter" }; } + BitFieldValue bUseBPGetDragSocketDinoName() { return { this, "APrimalDinoCharacter.bUseBPGetDragSocketDinoName" }; } + BitFieldValue bTargetEverythingIncludingSameTeamInPVE() { return { this, "APrimalDinoCharacter.bTargetEverythingIncludingSameTeamInPVE" }; } + BitFieldValue bForceUsePhysicalFootSurfaceTrace() { return { this, "APrimalDinoCharacter.bForceUsePhysicalFootSurfaceTrace" }; } + BitFieldValue bUseBP_OnPostNetReplication() { return { this, "APrimalDinoCharacter.bUseBP_OnPostNetReplication" }; } + BitFieldValue bPassiveFlee() { return { this, "APrimalDinoCharacter.bPassiveFlee" }; } + BitFieldValue bOnlyTargetConscious() { return { this, "APrimalDinoCharacter.bOnlyTargetConscious" }; } + BitFieldValue bIsShip() { return { this, "APrimalDinoCharacter.bIsShip" }; } + BitFieldValue bIsOceanManagerDino() { return { this, "APrimalDinoCharacter.bIsOceanManagerDino" }; } + BitFieldValue bIsUniqueGlobalOceanManagerDino() { return { this, "APrimalDinoCharacter.bIsUniqueGlobalOceanManagerDino" }; } + BitFieldValue bSaddleStructuresPreventCharacterBasing() { return { this, "APrimalDinoCharacter.bSaddleStructuresPreventCharacterBasing" }; } + BitFieldValue bOceanManagerDinoStasisPreventReUse() { return { this, "APrimalDinoCharacter.bOceanManagerDinoStasisPreventReUse" }; } + BitFieldValue bPreventForcedOffsetFromOceanSurface() { return { this, "APrimalDinoCharacter.bPreventForcedOffsetFromOceanSurface" }; } + BitFieldValue bDinoPreventsUnclaiming() { return { this, "APrimalDinoCharacter.bDinoPreventsUnclaiming" }; } + BitFieldValue bUseCreationTimeDestroyInterval() { return { this, "APrimalDinoCharacter.bUseCreationTimeDestroyInterval" }; } + BitFieldValue bPreventTameNameChange() { return { this, "APrimalDinoCharacter.bPreventTameNameChange" }; } + BitFieldValue bRequireWakingTameMinItemQuanityToFeed() { return { this, "APrimalDinoCharacter.bRequireWakingTameMinItemQuanityToFeed" }; } + BitFieldValue bUnclaimResetToOriginalTeam() { return { this, "APrimalDinoCharacter.bUnclaimResetToOriginalTeam" }; } + BitFieldValue bAddedToStructureDinosArray() { return { this, "APrimalDinoCharacter.bAddedToStructureDinosArray" }; } + BitFieldValue bForcePreventWakingTame() { return { this, "APrimalDinoCharacter.bForcePreventWakingTame" }; } + BitFieldValue bUseBolaSleepingAnimations() { return { this, "APrimalDinoCharacter.bUseBolaSleepingAnimations" }; } + BitFieldValue bForceRefreshBasedPawns() { return { this, "APrimalDinoCharacter.bForceRefreshBasedPawns" }; } + BitFieldValue bReplicateHighlightTagTeam() { return { this, "APrimalDinoCharacter.bReplicateHighlightTagTeam" }; } + BitFieldValue bPreventMateBoost() { return { this, "APrimalDinoCharacter.bPreventMateBoost" }; } + BitFieldValue bStaticGender() { return { this, "APrimalDinoCharacter.bStaticGender" }; } + BitFieldValue bForceDrawHealthbarIfUntamedIsTargetingTamed() { return { this, "APrimalDinoCharacter.bForceDrawHealthbarIfUntamedIsTargetingTamed" }; } + BitFieldValue bAddedToStasisAutoDestroyArray() { return { this, "APrimalDinoCharacter.bAddedToStasisAutoDestroyArray" }; } + BitFieldValue bDinoSimpleDescriptiveName() { return { this, "APrimalDinoCharacter.bDinoSimpleDescriptiveName" }; } + BitFieldValue bGiveXPPerHit() { return { this, "APrimalDinoCharacter.bGiveXPPerHit" }; } + BitFieldValue bDidAllowTickingTickingThisFrame() { return { this, "APrimalDinoCharacter.bDidAllowTickingTickingThisFrame" }; } + BitFieldValue bMoveToLocationDontRun() { return { this, "APrimalDinoCharacter.bMoveToLocationDontRun" }; } + BitFieldValue bAlwaysCheckForFloor() { return { this, "APrimalDinoCharacter.bAlwaysCheckForFloor" }; } + BitFieldValue bAlwaysCheckForFalling() { return { this, "APrimalDinoCharacter.bAlwaysCheckForFalling" }; } + BitFieldValue bOnlyAllowTameRenameOnce() { return { this, "APrimalDinoCharacter.bOnlyAllowTameRenameOnce" }; } + BitFieldValue bWasTameRenamed() { return { this, "APrimalDinoCharacter.bWasTameRenamed" }; } + BitFieldValue bForcePreventDinoSeamlessTravel() { return { this, "APrimalDinoCharacter.bForcePreventDinoSeamlessTravel" }; } + BitFieldValue bForceDrawFloatingHUDLimitDistance() { return { this, "APrimalDinoCharacter.bForceDrawFloatingHUDLimitDistance" }; } + BitFieldValue bUseBPNotifyMateBoostChanged() { return { this, "APrimalDinoCharacter.bUseBPNotifyMateBoostChanged" }; } + BitFieldValue bForceUniqueControllerAttackInputs() { return { this, "APrimalDinoCharacter.bForceUniqueControllerAttackInputs" }; } + BitFieldValue bUseBPPreventAIAttackSelection() { return { this, "APrimalDinoCharacter.bUseBPPreventAIAttackSelection" }; } + BitFieldValue bAlwaysForcedAggro() { return { this, "APrimalDinoCharacter.bAlwaysForcedAggro" }; } + BitFieldValue bForceAIUseOverlapTargetCheck() { return { this, "APrimalDinoCharacter.bForceAIUseOverlapTargetCheck" }; } + BitFieldValue bWildTargetEverything() { return { this, "APrimalDinoCharacter.bWildTargetEverything" }; } + BitFieldValue bCanSkipProjectileSpawnWallCheck() { return { this, "APrimalDinoCharacter.bCanSkipProjectileSpawnWallCheck" }; } + BitFieldValue bAllowedToBeAlpha() { return { this, "APrimalDinoCharacter.bAllowedToBeAlpha" }; } + BitFieldValue bIsAlpha() { return { this, "APrimalDinoCharacter.bIsAlpha" }; } + BitFieldValue bAllowRandomMutationColor() { return { this, "APrimalDinoCharacter.bAllowRandomMutationColor" }; } + BitFieldValue bEquippedItemsForceUseFirstPlayerAttachment() { return { this, "APrimalDinoCharacter.bEquippedItemsForceUseFirstPlayerAttachment" }; } + BitFieldValue bDrawBlueprintFloatingHUDWhenRidden() { return { this, "APrimalDinoCharacter.bDrawBlueprintFloatingHUDWhenRidden" }; } + BitFieldValue bUseBPOnMountStateChanged() { return { this, "APrimalDinoCharacter.bUseBPOnMountStateChanged" }; } + BitFieldValue bHandleUseButtonPressBP() { return { this, "APrimalDinoCharacter.bHandleUseButtonPressBP" }; } + BitFieldValue bGlideWhenFalling() { return { this, "APrimalDinoCharacter.bGlideWhenFalling" }; } + BitFieldValue bGlideWhenMounted() { return { this, "APrimalDinoCharacter.bGlideWhenMounted" }; } + BitFieldValue bForceAllowBackwardsMovement() { return { this, "APrimalDinoCharacter.bForceAllowBackwardsMovement" }; } + BitFieldValue bPreventBackwardsWalking() { return { this, "APrimalDinoCharacter.bPreventBackwardsWalking" }; } + BitFieldValue bSupplyPlayerMountedCarryAnimation() { return { this, "APrimalDinoCharacter.bSupplyPlayerMountedCarryAnimation" }; } + BitFieldValue bForceAllowMountedCarryRunning() { return { this, "APrimalDinoCharacter.bForceAllowMountedCarryRunning" }; } + BitFieldValue bCanLatch() { return { this, "APrimalDinoCharacter.bCanLatch" }; } + BitFieldValue bIsLatched() { return { this, "APrimalDinoCharacter.bIsLatched" }; } + BitFieldValue bIsLatchedDownward() { return { this, "APrimalDinoCharacter.bIsLatchedDownward" }; } + BitFieldValue bIsLatching() { return { this, "APrimalDinoCharacter.bIsLatching" }; } + BitFieldValue bRotateToFaceLatchingObject() { return { this, "APrimalDinoCharacter.bRotateToFaceLatchingObject" }; } + BitFieldValue bLimitRiderYawOnLatched() { return { this, "APrimalDinoCharacter.bLimitRiderYawOnLatched" }; } + BitFieldValue bAllowMountedWeaponry() { return { this, "APrimalDinoCharacter.bAllowMountedWeaponry" }; } + BitFieldValue bKeepAffinityOnDamageRecievedWakingTame() { return { this, "APrimalDinoCharacter.bKeepAffinityOnDamageRecievedWakingTame" }; } + BitFieldValue bUseBPFedWakingTameEvent() { return { this, "APrimalDinoCharacter.bUseBPFedWakingTameEvent" }; } + BitFieldValue bForceRiderDrawCrosshair() { return { this, "APrimalDinoCharacter.bForceRiderDrawCrosshair" }; } + BitFieldValue bForceDrawHUD() { return { this, "APrimalDinoCharacter.bForceDrawHUD" }; } + BitFieldValue bForceDrawHUDWithoutRecentlyRendered() { return { this, "APrimalDinoCharacter.bForceDrawHUDWithoutRecentlyRendered" }; } + BitFieldValue bHideFloatingName() { return { this, "APrimalDinoCharacter.bHideFloatingName" }; } + BitFieldValue bCanTargetVehicles() { return { this, "APrimalDinoCharacter.bCanTargetVehicles" }; } + BitFieldValue bRidingRequiresTamed() { return { this, "APrimalDinoCharacter.bRidingRequiresTamed" }; } + BitFieldValue bSuppressDeathNotification() { return { this, "APrimalDinoCharacter.bSuppressDeathNotification" }; } + BitFieldValue bUseCustomHealthBarColor() { return { this, "APrimalDinoCharacter.bUseCustomHealthBarColor" }; } + BitFieldValue bUseOnUpdateMountedDinoMeshHiding() { return { this, "APrimalDinoCharacter.bUseOnUpdateMountedDinoMeshHiding" }; } + BitFieldValue bUseBPInterceptMoveInputEvents() { return { this, "APrimalDinoCharacter.bUseBPInterceptMoveInputEvents" }; } + BitFieldValue bUseBPAdjustAttackIndex() { return { this, "APrimalDinoCharacter.bUseBPAdjustAttackIndex" }; } + BitFieldValue bCheckBPAllowCarryCharacter() { return { this, "APrimalDinoCharacter.bCheckBPAllowCarryCharacter" }; } + BitFieldValue bUseBPOnEndCharging() { return { this, "APrimalDinoCharacter.bUseBPOnEndCharging" }; } + BitFieldValue bUseBPOnStartCharging() { return { this, "APrimalDinoCharacter.bUseBPOnStartCharging" }; } + + // Functions + + static UClass* GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalDinoCharacter.GetPrivateStaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalDinoCharacter.StaticClass"); } + bool AllowPushOthers() { return NativeCall(this, "APrimalDinoCharacter.AllowPushOthers"); } + float GetXPMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetXPMultiplier"); } + bool IsVehicle() { return NativeCall(this, "APrimalDinoCharacter.IsVehicle"); } + void AddBasedPawn(AActor* anPawn) { NativeCall(this, "APrimalDinoCharacter.AddBasedPawn", anPawn); } + void AddDinoReferenceInLatchingStructure(APrimalStructure* Structure) { NativeCall(this, "APrimalDinoCharacter.AddDinoReferenceInLatchingStructure", Structure); } + void AddFlyerTakeOffImpulse() { NativeCall(this, "APrimalDinoCharacter.AddFlyerTakeOffImpulse"); } + bool AddPassenger(APrimalCharacter* Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos) { return NativeCall(this, "APrimalDinoCharacter.AddPassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos); } + void AddStructure(APrimalStructure* Structure, FVector RelLoc, FRotator RelRot, FName BoneName) { NativeCall(this, "APrimalDinoCharacter.AddStructure", Structure, RelLoc, RelRot, BoneName); } + bool AddToMeleeSwingHurtList(AActor* AnActor) { return NativeCall(this, "APrimalDinoCharacter.AddToMeleeSwingHurtList", AnActor); } + void AddedImprintingQuality_Implementation(float Amount) { NativeCall(this, "APrimalDinoCharacter.AddedImprintingQuality_Implementation", Amount); } + void AdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalDinoCharacter.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + int AllowBolaBuffBy_Implementation(TSubclassOf BuffClass, AActor* DamageCauser) { return NativeCall, AActor*>(this, "APrimalDinoCharacter.AllowBolaBuffBy_Implementation", BuffClass, DamageCauser); } + bool AllowCarryCharacter(APrimalCharacter* CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.AllowCarryCharacter", CanCarryPawn); } + bool AllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "APrimalDinoCharacter.AllowEquippingItemType", equipmentType); } + bool AllowExtendedCraftingFunctionality() { return NativeCall(this, "APrimalDinoCharacter.AllowExtendedCraftingFunctionality"); } + bool AllowFallDamage() { return NativeCall(this, "APrimalDinoCharacter.AllowFallDamage"); } + bool AllowHurtAnimation() { return NativeCall(this, "APrimalDinoCharacter.AllowHurtAnimation"); } + bool AllowIKFreeze() { return NativeCall(this, "APrimalDinoCharacter.AllowIKFreeze"); } + bool AllowMountedWeaponry(bool bIgnoreCurrentWeapon, bool bWeaponForcesMountedWeaponry) { return NativeCall(this, "APrimalDinoCharacter.AllowMountedWeaponry", bIgnoreCurrentWeapon, bWeaponForcesMountedWeaponry); } + bool AllowMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { return NativeCall(this, "APrimalDinoCharacter.AllowMovementMode", NewMovementMode, NewCustomMode); } + bool AllowNewEggAtLocation(FVector* AtLocation) { return NativeCall(this, "APrimalDinoCharacter.AllowNewEggAtLocation", AtLocation); } + bool AllowPenetrationCheck(AActor* OtherActor) { return NativeCall(this, "APrimalDinoCharacter.AllowPenetrationCheck", OtherActor); } + bool AllowSeamlessTravel() { return NativeCall(this, "APrimalDinoCharacter.AllowSeamlessTravel"); } + bool AllowTickPhysics() { return NativeCall(this, "APrimalDinoCharacter.AllowTickPhysics"); } + bool AllowWakingTame_Implementation(APlayerController* ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame_Implementation", ForPC); } + bool AllowZoneAutoKill() { return NativeCall(this, "APrimalDinoCharacter.AllowZoneAutoKill"); } + void ApplyBoneModifiers(bool bForce) { NativeCall(this, "APrimalDinoCharacter.ApplyBoneModifiers", bForce); } + void ApplyDamageMomentum(float DamageTaken, FDamageEvent* DamageEvent, APawn* PawnInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalDinoCharacter.ApplyDamageMomentum", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void ApplyGestationBoneModifiers() { NativeCall(this, "APrimalDinoCharacter.ApplyGestationBoneModifiers"); } + void ApplyRidingAttackExtraVelocity() { NativeCall(this, "APrimalDinoCharacter.ApplyRidingAttackExtraVelocity"); } + bool AreSpawnerSublevelsLoaded() { return NativeCall(this, "APrimalDinoCharacter.AreSpawnerSublevelsLoaded"); } + void AutoDrag() { NativeCall(this, "APrimalDinoCharacter.AutoDrag"); } + void AutoTame() { NativeCall(this, "APrimalDinoCharacter.AutoTame"); } + AShooterCharacter* BPConsumeInventoryFoodItem(UPrimalItem* foodItem, bool bConsumeEntireStack) { return NativeCall(this, "APrimalDinoCharacter.BPConsumeInventoryFoodItem", foodItem, bConsumeEntireStack); } + bool BPIsTamed() { return NativeCall(this, "APrimalDinoCharacter.BPIsTamed"); } + void BPNotifyNameEditText(AShooterPlayerController* ForPC) { NativeCall(this, "APrimalDinoCharacter.BPNotifyNameEditText", ForPC); } + static APrimalDinoCharacter* BPStaticCreateBabyDino(UWorld* TheWorld, TSubclassOf EggDinoClassToSpawn, FVector* theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, TArray EggDinoAncestors, TArray EggDinoAncestorsMale, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, TArray, TArray, float, TArray, TArray, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDino", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, EggDinoAncestors, EggDinoAncestorsMale, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } + static APrimalDinoCharacter* BPStaticCreateBabyDinoNoAncestors(UWorld* TheWorld, TSubclassOf EggDinoClassToSpawn, FVector* theGroundLoc, float actorRotationYaw, TArray EggColorSetIndices, TArray EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, TArray, TArray, float, int, int, int>(nullptr, "APrimalDinoCharacter.BPStaticCreateBabyDinoNoAncestors", TheWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggRandomMutationsFemale, EggRandomMutationsMale); } + void BeginPlay() { NativeCall(this, "APrimalDinoCharacter.BeginPlay"); } + TSubclassOf* BlueprintOverrideHarvestDamageType_Implementation(TSubclassOf* result, float* OutHarvestDamageMultiplier) { return NativeCall*, TSubclassOf*, float*>(this, "APrimalDinoCharacter.BlueprintOverrideHarvestDamageType_Implementation", result, OutHarvestDamageMultiplier); } + void BrakeDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.BrakeDinoBP", Val); } + void CalcCapsuleHalfHeight() { NativeCall(this, "APrimalDinoCharacter.CalcCapsuleHalfHeight"); } + bool CanAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.CanAttack", AttackIndex); } + bool CanBeCarried(APrimalCharacter* ByCarrier) { return NativeCall(this, "APrimalDinoCharacter.CanBeCarried", ByCarrier); } + bool CanCarryCharacter(APrimalCharacter* CanCarryPawn) { return NativeCall(this, "APrimalDinoCharacter.CanCarryCharacter", CanCarryPawn); } + bool CanDragCharacter(APrimalCharacter* Character) { return NativeCall(this, "APrimalDinoCharacter.CanDragCharacter", Character); } + bool CanFly() { return NativeCall(this, "APrimalDinoCharacter.CanFly"); } + bool CanMount(APrimalCharacter* aCharacter) { return NativeCall(this, "APrimalDinoCharacter.CanMount", aCharacter); } + bool CanOrder(APrimalCharacter* FromCharacter, bool bBuildingStructures) { return NativeCall(this, "APrimalDinoCharacter.CanOrder", FromCharacter, bBuildingStructures); } + bool CanReceiveMoveToCommands(AShooterCharacter* FromPlayer) { return NativeCall(this, "APrimalDinoCharacter.CanReceiveMoveToCommands", FromPlayer); } + bool CanRide(AShooterCharacter* byPawn, char* bOutHasSaddle, char* bOutCanRideOtherThanSaddle, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.CanRide", byPawn, bOutHasSaddle, bOutCanRideOtherThanSaddle, bDontCheckDistance); } + bool CanTakePassenger(APrimalCharacter* Character, int PassengerSeatIndex, bool bForcePassenger, bool bAllowFlyersAndWaterDinos) { return NativeCall(this, "APrimalDinoCharacter.CanTakePassenger", Character, PassengerSeatIndex, bForcePassenger, bAllowFlyersAndWaterDinos); } + bool CanTame(AShooterPlayerController* ForPC, bool bIgnoreMaxTamedDinos, bool bAbsoluteForceTame) { return NativeCall(this, "APrimalDinoCharacter.CanTame", ForPC, bIgnoreMaxTamedDinos, bAbsoluteForceTame); } + bool CanTarget(ITargetableInterface* Victim) { return NativeCall(this, "APrimalDinoCharacter.CanTarget", Victim); } + bool CarryCharacter(APrimalCharacter* character, bool byPassCanCarryCheck) { return NativeCall(this, "APrimalDinoCharacter.CarryCharacter", character, byPassCanCarryCheck); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalDinoCharacter.ChangeActorTeam", NewTeam); } + void CheckAndHandleBasedPlayersBeingPushedThroughWalls() { NativeCall(this, "APrimalDinoCharacter.CheckAndHandleBasedPlayersBeingPushedThroughWalls"); } + void CheckForTamedFoodConsumption() { NativeCall(this, "APrimalDinoCharacter.CheckForTamedFoodConsumption"); } + void CheckForWildAmbientHarvesting() { NativeCall(this, "APrimalDinoCharacter.CheckForWildAmbientHarvesting"); } + bool CheckLocalPassengers() { return NativeCall(this, "APrimalDinoCharacter.CheckLocalPassengers"); } + void ClearAllSaddleStructures() { NativeCall(this, "APrimalDinoCharacter.ClearAllSaddleStructures"); } + void ClearCarriedCharacter(bool fromCarriedCharacter, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalDinoCharacter.ClearCarriedCharacter", fromCarriedCharacter, bCancelAnyCarryBuffs); } + void ClearCarryingDino(bool bFromDino, bool bCancelAnyCarryBuffs) { NativeCall(this, "APrimalDinoCharacter.ClearCarryingDino", bFromDino, bCancelAnyCarryBuffs); } + void ClearCharacterAIMovement() { NativeCall(this, "APrimalDinoCharacter.ClearCharacterAIMovement"); } + void ClearMountCharacter(bool bFromMountCharacter) { NativeCall(this, "APrimalDinoCharacter.ClearMountCharacter", bFromMountCharacter); } + void ClearPassengers() { NativeCall(this, "APrimalDinoCharacter.ClearPassengers"); } + void ClearRider(bool FromRider, bool bCancelForceLand, bool SpawnDinoDefaultController, int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ClearRider", FromRider, bCancelForceLand, SpawnDinoDefaultController, OverrideUnboardDirection); } + void ClearRidingDinoAsPassenger(bool bFromDino) { NativeCall(this, "APrimalDinoCharacter.ClearRidingDinoAsPassenger", bFromDino); } + void ClientInterruptLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ClientInterruptLanding_Implementation"); } + void ClientMultiUse(APlayerController* ForPC, int UseIndex) { NativeCall(this, "APrimalDinoCharacter.ClientMultiUse", ForPC, UseIndex); } + void ClientShouldNotifyLanded_Implementation() { NativeCall(this, "APrimalDinoCharacter.ClientShouldNotifyLanded_Implementation"); } + void ClientStartLanding_Implementation(FVector loc) { NativeCall(this, "APrimalDinoCharacter.ClientStartLanding_Implementation", loc); } + AShooterCharacter* ConsumeInventoryFoodItem(UPrimalItem* foodItem, float* AffinityIncrease, bool bDontDecrementItem, float* FoodIncrease, float FoodAmountMultiplier, bool bConsumeEntireStack, int FoodItemQuantity) { return NativeCall(this, "APrimalDinoCharacter.ConsumeInventoryFoodItem", foodItem, AffinityIncrease, bDontDecrementItem, FoodIncrease, FoodAmountMultiplier, bConsumeEntireStack, FoodItemQuantity); } + void ControllerLeavingGame(AShooterPlayerController* theController) { NativeCall(this, "APrimalDinoCharacter.ControllerLeavingGame", theController); } + ADroppedItem* CreateCloneFertilizedEgg(FVector AtLoc, FRotator AtRot, TSubclassOf DroppedItemTemplateOverride) { return NativeCall>(this, "APrimalDinoCharacter.CreateCloneFertilizedEgg", AtLoc, AtRot, DroppedItemTemplateOverride); } + void CycleAttackWeightsForAttackAtIndex(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.CycleAttackWeightsForAttackAtIndex", attackIndex); } + void DealDamage(FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { NativeCall, float>(this, "APrimalDinoCharacter.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void DeathHarvestingFadeOut_Implementation() { NativeCall(this, "APrimalDinoCharacter.DeathHarvestingFadeOut_Implementation"); } + void DestroyController() { NativeCall(this, "APrimalDinoCharacter.DestroyController"); } + void Destroyed() { NativeCall(this, "APrimalDinoCharacter.Destroyed"); } + void DidLand() { NativeCall(this, "APrimalDinoCharacter.DidLand"); } + bool Die(float KillingDamage, FDamageEvent* DamageEvent, AController* Killer, AActor* DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void DinoKillerTransferItemsToInventory(UPrimalInventoryComponent* FromInventory) { NativeCall(this, "APrimalDinoCharacter.DinoKillerTransferItemsToInventory", FromInventory); } + bool DisableHarvesting() { return NativeCall(this, "APrimalDinoCharacter.DisableHarvesting"); } + bool DoAttack(int AttackIndex, bool bSetCurrentAttack) { return NativeCall(this, "APrimalDinoCharacter.DoAttack", AttackIndex, bSetCurrentAttack); } + void DoMate(APrimalDinoCharacter* WithMate) { NativeCall(this, "APrimalDinoCharacter.DoMate", WithMate); } + void DoNeuter_Implementation() { NativeCall(this, "APrimalDinoCharacter.DoNeuter_Implementation"); } + bool DoesDinoHaveBasedPawns(bool bRequireActivePawns) { return NativeCall(this, "APrimalDinoCharacter.DoesDinoHaveBasedPawns", bRequireActivePawns); } + void DrawDinoFloatingHUD(AShooterHUD* HUD, bool bDrawDinoOrderIcon) { NativeCall(this, "APrimalDinoCharacter.DrawDinoFloatingHUD", HUD, bDrawDinoOrderIcon); } + void DrawFloatingHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalDinoCharacter.DrawFloatingHUD", HUD); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalDinoCharacter.DrawHUD", HUD); } + void ElevateDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.ElevateDinoBP", Val); } + void EmitPoop() { NativeCall(this, "APrimalDinoCharacter.EmitPoop"); } + void EndCharging(bool bForce) { NativeCall(this, "APrimalDinoCharacter.EndCharging", bForce); } + void FaceRotation(FRotator NewControlRotation, float DeltaTime, bool bFromController) { NativeCall(this, "APrimalDinoCharacter.FaceRotation", NewControlRotation, DeltaTime, bFromController); } + void FedWakingTameDino_Implementation() { NativeCall(this, "APrimalDinoCharacter.FedWakingTameDino_Implementation"); } + void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalDinoCharacter.FinalLoadedFromSaveGame"); } + static APrimalDinoCharacter* FindDinoWithID(UWorld* aWorld, unsigned int DinoID1, unsigned int DinoID2) { return NativeCall(nullptr, "APrimalDinoCharacter.FindDinoWithID", aWorld, DinoID1, DinoID2); } + AShooterCharacter* FindFirstFoodItemPlayerCharacter() { return NativeCall(this, "APrimalDinoCharacter.FindFirstFoodItemPlayerCharacter"); } + void FinishedLanding() { NativeCall(this, "APrimalDinoCharacter.FinishedLanding"); } + void FireMultipleProjectiles_Implementation(TArray* Locations, TArray* Directions, bool bScaleProjectileDamageByDinoDamage) { NativeCall*, TArray*, bool>(this, "APrimalDinoCharacter.FireMultipleProjectiles_Implementation", Locations, Directions, bScaleProjectileDamageByDinoDamage); } + void FireProjectileLocal(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectileLocal", Origin, ShootDir, bScaleProjDamageByDinoDamage); } + void FireProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectile_Implementation", Origin, ShootDir, bScaleProjDamageByDinoDamage); } + bool ForceAllowAccelerationRotationWhenFalling() { return NativeCall(this, "APrimalDinoCharacter.ForceAllowAccelerationRotationWhenFalling"); } + bool ForceAllowBackwardsMovement() { return NativeCall(this, "APrimalDinoCharacter.ForceAllowBackwardsMovement"); } + void ForceClearRider() { NativeCall(this, "APrimalDinoCharacter.ForceClearRider"); } + void ForceRefreshTransform() { NativeCall(this, "APrimalDinoCharacter.ForceRefreshTransform"); } + void ForceUpdateColorSets_Implementation(int ColorRegion, int ColorSet) { NativeCall(this, "APrimalDinoCharacter.ForceUpdateColorSets_Implementation", ColorRegion, ColorSet); } + float GetAIFollowStoppingDistanceMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAIFollowStoppingDistanceMultiplier"); } + float GetAIFollowStoppingDistanceOffset() { return NativeCall(this, "APrimalDinoCharacter.GetAIFollowStoppingDistanceOffset"); } + float GetAffinityIncreaseForFoodItem(UPrimalItem* foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetAffinityIncreaseForFoodItem", foodItem); } + FRotator* GetAimOffsets(FRotator* result, float DeltaTime, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsets", result, DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FRotator* GetAimOffsetsForTarget(FRotator* result, AActor* AimTarget, float DeltaTime, bool bOverrideYawLimits, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset, FName SocketOverrideName) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsetsForTarget", result, AimTarget, DeltaTime, bOverrideYawLimits, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset, SocketOverrideName); } + FRotator* GetAimOffsetsTransform(FRotator* result, float DeltaTime, FTransform* RootRotOffsetTransform, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset) { return NativeCall(this, "APrimalDinoCharacter.GetAimOffsetsTransform", result, DeltaTime, RootRotOffsetTransform, RootYawSpeed, MaxYawAimClamp, RootLocOffset); } + FString* GetAimedTutorialHintString_Implementation(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetAimedTutorialHintString_Implementation", result); } + APrimalStructureExplosive* GetAttachedExplosive() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedExplosive"); } + float GetAttachedSoundPitchMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedSoundPitchMultiplier"); } + float GetAttachedSoundVolumeMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetAttachedSoundVolumeMultiplier"); } + float GetAttackRangeOffset() { return NativeCall(this, "APrimalDinoCharacter.GetAttackRangeOffset"); } + void GetAttackTargets(AActor** attackActor, FVector* attackLoc) { NativeCall(this, "APrimalDinoCharacter.GetAttackTargets", attackActor, attackLoc); } + TSubclassOf* GetBabyCuddleFood(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "APrimalDinoCharacter.GetBabyCuddleFood", result); } + float GetBaseDragWeight() { return NativeCall(this, "APrimalDinoCharacter.GetBaseDragWeight"); } + float GetBaseTargetingDesire(ITargetableInterface* Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetBaseTargetingDesire", Attacker); } + UPrimalItem* GetBestInventoryFoodItem(float* FoodIncrease, bool bLookForAffinity, bool bFoodItemRequiresLivePlayerCharacter, UPrimalItem** foundFoodItem, bool bLookForWorstFood) { return NativeCall(this, "APrimalDinoCharacter.GetBestInventoryFoodItem", FoodIncrease, bLookForAffinity, bFoodItemRequiresLivePlayerCharacter, foundFoodItem, bLookForWorstFood); } + float GetCarryingSocketYaw(bool RefreshBones) { return NativeCall(this, "APrimalDinoCharacter.GetCarryingSocketYaw", RefreshBones); } + float GetCorpseLifespan() { return NativeCall(this, "APrimalDinoCharacter.GetCorpseLifespan"); } + float GetCorpseTargetingMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetCorpseTargetingMultiplier"); } + TArray* GetCurrentBiomeTags(TArray* result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetCurrentBiomeTags", result); } + FString* GetDescriptiveName(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetDescriptiveName", result); } + TArray* GetDinoBasedPawns(TArray* result, USceneComponent* OnComponent, bool bOnlyActivePawns) { return NativeCall*, TArray*, USceneComponent*, bool>(this, "APrimalDinoCharacter.GetDinoBasedPawns", result, OnComponent, bOnlyActivePawns); } + FLinearColor* GetDinoColor(FLinearColor* result, int ColorRegionIndex) { return NativeCall(this, "APrimalDinoCharacter.GetDinoColor", result, ColorRegionIndex); } + long double GetDinoDeathTime() { return NativeCall(this, "APrimalDinoCharacter.GetDinoDeathTime"); } + FString* GetDinoDescriptiveName(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetDinoDescriptiveName", result); } + UAnimMontage* GetDinoLevelUpAnimation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoLevelUpAnimation"); } + TArray* GetDinoPlatformCollisionIgnoreActors(TArray* result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetDinoPlatformCollisionIgnoreActors", result); } + USoundBase* GetDinoTameSound_Implementation() { return NativeCall(this, "APrimalDinoCharacter.GetDinoTameSound_Implementation"); } + FVector* GetDinoVelocity(FVector* result) { return NativeCall(this, "APrimalDinoCharacter.GetDinoVelocity", result); } + FString* GetEntryDescription(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryDescription", result); } + UTexture2D* GetEntryIcon(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + UMaterialInterface* GetEntryIconMaterial(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalDinoCharacter.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + FString* GetEntryString(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetEntryString", result); } + int GetExtraFoodItemEffectivenessMultipliersIndex(UPrimalItem* foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetExtraFoodItemEffectivenessMultipliersIndex", foodItem); } + TSubclassOf* GetFirstAffinityFoodItemClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "APrimalDinoCharacter.GetFirstAffinityFoodItemClass", result); } + FVector* GetFloatingHUDLocation(FVector* result) { return NativeCall(this, "APrimalDinoCharacter.GetFloatingHUDLocation", result); } + int GetFoodItemEffectivenessMultipliersIndex(UPrimalItem* foodItem) { return NativeCall(this, "APrimalDinoCharacter.GetFoodItemEffectivenessMultipliersIndex", foodItem); } + long double GetForceClaimTime() { return NativeCall(this, "APrimalDinoCharacter.GetForceClaimTime"); } + bool GetForceTickPose() { return NativeCall(this, "APrimalDinoCharacter.GetForceTickPose"); } + float GetGestationTimeRemaining() { return NativeCall(this, "APrimalDinoCharacter.GetGestationTimeRemaining"); } + float GetGravityZScale() { return NativeCall(this, "APrimalDinoCharacter.GetGravityZScale"); } + float GetHealthPercentage() { return NativeCall(this, "APrimalDinoCharacter.GetHealthPercentage"); } + FVector* GetInterpolatedLocation(FVector* result) { return NativeCall(this, "APrimalDinoCharacter.GetInterpolatedLocation", result); } + FVector* GetLandingLocation(FVector* result) { return NativeCall(this, "APrimalDinoCharacter.GetLandingLocation", result); } + float GetLeveledDamageMultiplier() { return NativeCall(this, "APrimalDinoCharacter.GetLeveledDamageMultiplier"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalDinoCharacter.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetMaxFloatingHUDRange() { return NativeCall(this, "APrimalDinoCharacter.GetMaxFloatingHUDRange"); } + float GetMaxSpeedModifier() { return NativeCall(this, "APrimalDinoCharacter.GetMaxSpeedModifier"); } + float GetMyCurrentAmbientTemperature() { return NativeCall(this, "APrimalDinoCharacter.GetMyCurrentAmbientTemperature"); } + float GetNetStasisAndRangeMultiplier(bool bIsForNetworking) { return NativeCall(this, "APrimalDinoCharacter.GetNetStasisAndRangeMultiplier", bIsForNetworking); } + int GetNumPassengerSeats(bool bOnlyManualPassengerSeats) { return NativeCall(this, "APrimalDinoCharacter.GetNumPassengerSeats", bOnlyManualPassengerSeats); } + UObject* GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalDinoCharacter.GetUObjectInterfaceDataListEntryInterface"); } + int GetOriginalTargetingTeam() { return NativeCall(this, "APrimalDinoCharacter.GetOriginalTargetingTeam"); } + AActor* GetOtherActorToIgnore() { return NativeCall(this, "APrimalDinoCharacter.GetOtherActorToIgnore"); } + APrimalCharacter* GetPassengerPerSeat(int SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerPerSeat", SeatIndex); } + FSaddlePassengerSeatDefinition* GetPassengerSeatDefinition(char SeatIndex) { return NativeCall(this, "APrimalDinoCharacter.GetPassengerSeatDefinition", SeatIndex); } + TArray* GetPassengers(TArray* result) { return NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetPassengers", result); } + void GetPassengersAndSeatIndexes(TArray* Passengers, TArray* Indexes) { NativeCall*, TArray*>(this, "APrimalDinoCharacter.GetPassengersAndSeatIndexes", Passengers, Indexes); } + int GetRandomBaseLevel() { return NativeCall(this, "APrimalDinoCharacter.GetRandomBaseLevel"); } + int GetRequiredWakingTameFoodItemQuanity(UPrimalItem* FoodItem) { return NativeCall(this, "APrimalDinoCharacter.GetRequiredWakingTameFoodItemQuanity", FoodItem); } + void GetRidingCarryingIgnoreList(TArray* IgnoreList) { NativeCall*>(this, "APrimalDinoCharacter.GetRidingCarryingIgnoreList", IgnoreList); } + float GetRotationRateModifier() { return NativeCall(this, "APrimalDinoCharacter.GetRotationRateModifier"); } + float GetRunningSpeedModifier(bool bIsForDefaultSpeed) { return NativeCall(this, "APrimalDinoCharacter.GetRunningSpeedModifier", bIsForDefaultSpeed); } + float GetSaddleStructureMaximumFoundationSupport2DBuildDistance(APrimalStructure* theStructure) { return NativeCall(this, "APrimalDinoCharacter.GetSaddleStructureMaximumFoundationSupport2DBuildDistance", theStructure); } + int GetSeatIndexForPassenger(APrimalCharacter* PassengerChar) { return NativeCall(this, "APrimalDinoCharacter.GetSeatIndexForPassenger", PassengerChar); } + FString* GetShortName(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetShortName", result); } + FVector* GetSocketLocationTemp(FVector* result, FName SocketName) { return NativeCall(this, "APrimalDinoCharacter.GetSocketLocationTemp", result, SocketName); } + float GetSpeedModifier() { return NativeCall(this, "APrimalDinoCharacter.GetSpeedModifier"); } + int GetTamedDinoCountCost() { return NativeCall(this, "APrimalDinoCharacter.GetTamedDinoCountCost"); } + AActor* GetTamedFollowTarget() { return NativeCall(this, "APrimalDinoCharacter.GetTamedFollowTarget"); } + float GetTargetingDesirability(ITargetableInterface* Attacker) { return NativeCall(this, "APrimalDinoCharacter.GetTargetingDesirability", Attacker); } + AActor* GetTargetingPlayer() { return NativeCall(this, "APrimalDinoCharacter.GetTargetingPlayer"); } + TArray* GetTracingIgnoreActors() { return NativeCall*>(this, "APrimalDinoCharacter.GetTracingIgnoreActors"); } + FString* GetTutorialHintString_Implementation(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetTutorialHintString_Implementation", result); } + char GetWiegthedAttack(float distance, float attackRangeOffset, AActor* OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.GetWiegthedAttack", distance, attackRangeOffset, OtherTarget); } + void GiveDeathDossier() { NativeCall(this, "APrimalDinoCharacter.GiveDeathDossier"); } + void HandleUnstasised(bool bWasFromHibernation) { NativeCall(this, "APrimalDinoCharacter.HandleUnstasised", bWasFromHibernation); } + bool HasReachedDestination(FVector* Goal) { return NativeCall(this, "APrimalDinoCharacter.HasReachedDestination", Goal); } + void ImprintOnPlayerTarget(AShooterPlayerController* ForPC, bool bIgnoreMaxTameLimit) { NativeCall(this, "APrimalDinoCharacter.ImprintOnPlayerTarget", ForPC, bIgnoreMaxTameLimit); } + void IncrementImprintingQuality() { NativeCall(this, "APrimalDinoCharacter.IncrementImprintingQuality"); } + void IncrementNumTamedDinos() { NativeCall(this, "APrimalDinoCharacter.IncrementNumTamedDinos"); } + void InitDownloadedTamedDino(AShooterPlayerController* TamerController, int AltTeam) { NativeCall(this, "APrimalDinoCharacter.InitDownloadedTamedDino", TamerController, AltTeam); } + bool InitializeForReplicatedBasing() { return NativeCall(this, "APrimalDinoCharacter.InitializeForReplicatedBasing"); } + void InterruptLanding() { NativeCall(this, "APrimalDinoCharacter.InterruptLanding"); } + int IsActorTickAllowed() { return NativeCall(this, "APrimalDinoCharacter.IsActorTickAllowed"); } + bool IsAttacking() { return NativeCall(this, "APrimalDinoCharacter.IsAttacking"); } + bool IsCurrentAttackStopsMovement() { return NativeCall(this, "APrimalDinoCharacter.IsCurrentAttackStopsMovement"); } + bool IsCurrentlyPlayingAttackAnimation() { return NativeCall(this, "APrimalDinoCharacter.IsCurrentlyPlayingAttackAnimation"); } + bool IsDamageOccludedByStructures(AActor* DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.IsDamageOccludedByStructures", DamageCauser); } + bool IsFemale() { return NativeCall(this, "APrimalDinoCharacter.IsFemale"); } + bool IsFleeing() { return NativeCall(this, "APrimalDinoCharacter.IsFleeing"); } + bool IsImprintPlayer(AShooterCharacter* ForChar) { return NativeCall(this, "APrimalDinoCharacter.IsImprintPlayer", ForChar); } + bool IsInMatingBiome() { return NativeCall(this, "APrimalDinoCharacter.IsInMatingBiome"); } + bool IsNearFeed(AShooterPlayerState* ForPlayer) { return NativeCall(this, "APrimalDinoCharacter.IsNearFeed", ForPlayer); } + bool IsPrimalCharFriendly(APrimalCharacter* primalChar) { return NativeCall(this, "APrimalDinoCharacter.IsPrimalCharFriendly", primalChar); } + bool IsShip() { return NativeCall(this, "APrimalDinoCharacter.IsShip"); } + bool IsTaming() { return NativeCall(this, "APrimalDinoCharacter.IsTaming"); } + bool IsUpdatingComponentTransforms(USceneComponent* InSceneComponent) { return NativeCall(this, "APrimalDinoCharacter.IsUpdatingComponentTransforms", InSceneComponent); } + bool IsUsingBolaSleepingAnimations() { return NativeCall(this, "APrimalDinoCharacter.IsUsingBolaSleepingAnimations"); } + bool IsValidForStatusUpdate() { return NativeCall(this, "APrimalDinoCharacter.IsValidForStatusUpdate"); } + int IsWithinBreedingTemperature() { return NativeCall(this, "APrimalDinoCharacter.IsWithinBreedingTemperature"); } + void KeepFlight(float ForDuration) { NativeCall(this, "APrimalDinoCharacter.KeepFlight", ForDuration); } + void KeepFlightTimer() { NativeCall(this, "APrimalDinoCharacter.KeepFlightTimer"); } + void LinkedSupplyCrateDestroyed(APrimalStructureItemContainer_SupplyCrate* aCrate) { NativeCall(this, "APrimalDinoCharacter.LinkedSupplyCrateDestroyed", aCrate); } + void LowerDinoBP(float Val) { NativeCall(this, "APrimalDinoCharacter.LowerDinoBP", Val); } + void ModifyDesiredRotation(FRotator* InDesiredRotation) { NativeCall(this, "APrimalDinoCharacter.ModifyDesiredRotation", InDesiredRotation); } + bool ModifyInputAcceleration(FVector* InputAcceleration) { return NativeCall(this, "APrimalDinoCharacter.ModifyInputAcceleration", InputAcceleration); } + void MoveBlockedBy(FHitResult* Impact) { NativeCall(this, "APrimalDinoCharacter.MoveBlockedBy", Impact); } + void MoveForward(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveForward", Val); } + void MoveRight(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveRight", Val); } + void MoveUp(float Val) { NativeCall(this, "APrimalDinoCharacter.MoveUp", Val); } + bool NPC_FindNearbyUsableStructures(TArray* FoundStructures) { return NativeCall*>(this, "APrimalDinoCharacter.NPC_FindNearbyUsableStructures", FoundStructures); } + APrimalStructure* NPC_GetClosestUsableStructure() { return NativeCall(this, "APrimalDinoCharacter.NPC_GetClosestUsableStructure"); } + void NetUpdateDinoNameStrings_Implementation(FString* NewTamerString, FString* NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings_Implementation", NewTamerString, NewTamedName); } + void NetUpdateDinoOwnerData_Implementation(FString* NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData_Implementation", NewOwningPlayerName, NewOwningPlayerID); } + void NotifyBumpedPawn(APawn* BumpedPawn) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedPawn", BumpedPawn); } + void NotifyBumpedStructure(AActor* BumpedStructure) { NativeCall(this, "APrimalDinoCharacter.NotifyBumpedStructure", BumpedStructure); } + void NotifyItemAdded(UPrimalItem* anItem, bool bEquipItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemRemoved(UPrimalItem* anItem) { NativeCall(this, "APrimalDinoCharacter.NotifyItemRemoved", anItem); } + void OffBrake() { NativeCall(this, "APrimalDinoCharacter.OffBrake"); } + void OnBrake() { NativeCall(this, "APrimalDinoCharacter.OnBrake"); } + void OnClientReceivedTransformAfterPairingNetGUID(FVector* Loc, FRotator* Rot) { NativeCall(this, "APrimalDinoCharacter.OnClientReceivedTransformAfterPairingNetGUID", Loc, Rot); } + void OnControllerInitiatedAttack(int AttackIndex) { NativeCall(this, "APrimalDinoCharacter.OnControllerInitiatedAttack", AttackIndex); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalDinoCharacter.OnDeserializedByGame", DeserializationType); } + void OnElevateDino(float Val) { NativeCall(this, "APrimalDinoCharacter.OnElevateDino", Val); } + void OnLowerDino(float Val) { NativeCall(this, "APrimalDinoCharacter.OnLowerDino", Val); } + void OnNPCStartedAttack_Implementation(int AttackIndex, int AnimationIndex, bool bIsAltAnim, AActor* MyTarget) { NativeCall(this, "APrimalDinoCharacter.OnNPCStartedAttack_Implementation", AttackIndex, AnimationIndex, bIsAltAnim, MyTarget); } + void OnPressCrouch() { NativeCall(this, "APrimalDinoCharacter.OnPressCrouch"); } + void OnPressDrag() { NativeCall(this, "APrimalDinoCharacter.OnPressDrag"); } + void OnPressProne() { NativeCall(this, "APrimalDinoCharacter.OnPressProne"); } + void OnPressReload() { NativeCall(this, "APrimalDinoCharacter.OnPressReload"); } + void OnPrimalCharacterSleeped() { NativeCall(this, "APrimalDinoCharacter.OnPrimalCharacterSleeped"); } + void OnPrimalCharacterUnsleeped() { NativeCall(this, "APrimalDinoCharacter.OnPrimalCharacterUnsleeped"); } + void OnRep_CarriedCharacter() { NativeCall(this, "APrimalDinoCharacter.OnRep_CarriedCharacter"); } + void OnRep_PassengerPerSeat() { NativeCall(this, "APrimalDinoCharacter.OnRep_PassengerPerSeat"); } + void OnRep_Rider() { NativeCall(this, "APrimalDinoCharacter.OnRep_Rider"); } + void OnRep_Saddle() { NativeCall(this, "APrimalDinoCharacter.OnRep_Saddle"); } + void OnRep_bBonesHidden() { NativeCall(this, "APrimalDinoCharacter.OnRep_bBonesHidden"); } + void OnRep_bIsCharging() { NativeCall(this, "APrimalDinoCharacter.OnRep_bIsCharging"); } + void OnRep_bIsFlying() { NativeCall(this, "APrimalDinoCharacter.OnRep_bIsFlying"); } + void OnSaddleStructuresUpdated(APrimalStructure* SaddleStructure, bool bWasRemoved) { NativeCall(this, "APrimalDinoCharacter.OnSaddleStructuresUpdated", SaddleStructure, bWasRemoved); } + void OnStartFire(bool bFromGamepadRight, int weaponAttackIndex, bool bDoLeftSide, bool bOverrideCurrentAttack) { NativeCall(this, "APrimalDinoCharacter.OnStartFire", bFromGamepadRight, weaponAttackIndex, bDoLeftSide, bOverrideCurrentAttack); } + void OnStartJump() { NativeCall(this, "APrimalDinoCharacter.OnStartJump"); } + void OnStartTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalDinoCharacter.OnStartTargeting", bFromGamepadLeft); } + void OnStopFire(bool bFromGamepadRight, int weaponAttackIndex) { NativeCall(this, "APrimalDinoCharacter.OnStopFire", bFromGamepadRight, weaponAttackIndex); } + void OnStopTargeting(bool bFromGamepadLeft) { NativeCall(this, "APrimalDinoCharacter.OnStopTargeting", bFromGamepadLeft); } + bool OverrideForcePreventExitingWater() { return NativeCall(this, "APrimalDinoCharacter.OverrideForcePreventExitingWater"); } + void OverrideRandomWanderLocation_Implementation(FVector* originalDestination, FVector* inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation_Implementation", originalDestination, inVec); } + void PlayAttackAnimationOfAnimationArray(int AnimationIndex, TArray attackAnimations) { NativeCall>(this, "APrimalDinoCharacter.PlayAttackAnimationOfAnimationArray", AnimationIndex, attackAnimations); } + void PlayChargingAnim() { NativeCall(this, "APrimalDinoCharacter.PlayChargingAnim"); } + void PlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalDinoCharacter.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHardEndChargingShake_Implementation() { NativeCall(this, "APrimalDinoCharacter.PlayHardEndChargingShake_Implementation"); } + void PlayWeightedAttackAnimation() { NativeCall(this, "APrimalDinoCharacter.PlayWeightedAttackAnimation"); } + bool PlayedAnimationHasAttack() { return NativeCall(this, "APrimalDinoCharacter.PlayedAnimationHasAttack"); } + void Poop(bool bForcePoop) { NativeCall(this, "APrimalDinoCharacter.Poop", bForcePoop); } + void PostInitializeComponents() { NativeCall(this, "APrimalDinoCharacter.PostInitializeComponents"); } + void PostNetInit() { NativeCall(this, "APrimalDinoCharacter.PostNetInit"); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "APrimalDinoCharacter.PostNetReceiveLocationAndRotation"); } + void PrepareForSaving() { NativeCall(this, "APrimalDinoCharacter.PrepareForSaving"); } + bool PreventCharacterBasing(AActor* OtherActor, UPrimitiveComponent* BasedOnComponent) { return NativeCall(this, "APrimalDinoCharacter.PreventCharacterBasing", OtherActor, BasedOnComponent); } + void ProcessEditText(AShooterPlayerController* ForPC, FString* TextToUse, bool checkedBox, unsigned int ExtraID1, unsigned int ExtraID2) { NativeCall(this, "APrimalDinoCharacter.ProcessEditText", ForPC, TextToUse, checkedBox, ExtraID1, ExtraID2); } + FRotator* ProcessRootRotAndLoc(FRotator* result, float DeltaTime, FVector* RootLocOffset, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, float CurrentAimBlending, FRotator* TargetAimRot, float* RootRot) { return NativeCall(this, "APrimalDinoCharacter.ProcessRootRotAndLoc", result, DeltaTime, RootLocOffset, RootRotOffset, RootYawSpeed, MaxYawAimClamp, CurrentAimBlending, TargetAimRot, RootRot); } + void ReceiveAnyDamage_Implementation(float Damage, UDamageType* DamageType, AController* InstigatedBy, AActor* DamageCauser) { NativeCall(this, "APrimalDinoCharacter.ReceiveAnyDamage_Implementation", Damage, DamageType, InstigatedBy, DamageCauser); } + void RefreshBabyScaling() { NativeCall(this, "APrimalDinoCharacter.RefreshBabyScaling"); } + void RefreshColorization() { NativeCall(this, "APrimalDinoCharacter.RefreshColorization"); } + void RegisterAllComponents() { NativeCall(this, "APrimalDinoCharacter.RegisterAllComponents"); } + void RemoveBasedPawn(AActor* anPawn) { NativeCall(this, "APrimalDinoCharacter.RemoveBasedPawn", anPawn); } + void RemoveDinoReferenceFromLatchingStructure() { NativeCall(this, "APrimalDinoCharacter.RemoveDinoReferenceFromLatchingStructure"); } + void RemoveFromMeleeSwingHurtList(AActor* AnActor) { NativeCall(this, "APrimalDinoCharacter.RemoveFromMeleeSwingHurtList", AnActor); } + bool RemoveInventoryAllowViewing(APlayerController* ForPC) { return NativeCall(this, "APrimalDinoCharacter.RemoveInventoryAllowViewing", ForPC); } + void RemovePassenger(APrimalCharacter* Character, bool bFromCharacter, bool bFromPlayerController) { NativeCall(this, "APrimalDinoCharacter.RemovePassenger", Character, bFromCharacter, bFromPlayerController); } + void RemoveSaddleAttachment(FItemNetID Id) { NativeCall(this, "APrimalDinoCharacter.RemoveSaddleAttachment", Id); } + void RemoveStructure(APrimalStructure* Structure) { NativeCall(this, "APrimalDinoCharacter.RemoveStructure", Structure); } + void RepairCheckTimer() { NativeCall(this, "APrimalDinoCharacter.RepairCheckTimer"); } + void ResetCurrentAttackIndex() { NativeCall(this, "APrimalDinoCharacter.ResetCurrentAttackIndex"); } + void ResetTakingOff() { NativeCall(this, "APrimalDinoCharacter.ResetTakingOff"); } + void Restart() { NativeCall(this, "APrimalDinoCharacter.Restart"); } + bool SaddleDinoHasAnyDemolishableStructures() { return NativeCall(this, "APrimalDinoCharacter.SaddleDinoHasAnyDemolishableStructures"); } + void SaddledStructureDestroyed(APrimalStructure* theStructure) { NativeCall(this, "APrimalDinoCharacter.SaddledStructureDestroyed", theStructure); } + void ServerCallAggressive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallAggressive_Implementation"); } + void ServerCallAttackTarget_Implementation(AActor* TheTarget) { NativeCall(this, "APrimalDinoCharacter.ServerCallAttackTarget_Implementation", TheTarget); } + void ServerCallFollowDistanceCycleOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowDistanceCycleOne_Implementation", ForDinoChar); } + void ServerCallFollowOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallFollowOne_Implementation", ForDinoChar); } + void ServerCallFollow_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallFollow_Implementation"); } + void ServerCallMoveTo_Implementation(FVector MoveToLoc, AActor* TargetActor) { NativeCall(this, "APrimalDinoCharacter.ServerCallMoveTo_Implementation", MoveToLoc, TargetActor); } + void ServerCallNeutral_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallNeutral_Implementation"); } + void ServerCallPassive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallPassive_Implementation"); } + void ServerCallSetAggressive_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallSetAggressive_Implementation"); } + void ServerCallStayOne_Implementation(APrimalDinoCharacter* ForDinoChar) { NativeCall(this, "APrimalDinoCharacter.ServerCallStayOne_Implementation", ForDinoChar); } + void ServerCallStay_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerCallStay_Implementation"); } + void ServerClearRider_Implementation(int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ServerClearRider_Implementation", OverrideUnboardDirection); } + void ServerFinishedLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerFinishedLanding_Implementation"); } + void ServerGiveDefaultWeapon_Implementation(bool bOnlyGiveDefaultWeapon) { NativeCall(this, "APrimalDinoCharacter.ServerGiveDefaultWeapon_Implementation", bOnlyGiveDefaultWeapon); } + void ServerInterruptLanding_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerInterruptLanding_Implementation"); } + void ServerRequestAttack_Implementation(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.ServerRequestAttack_Implementation", attackIndex); } + void ServerRequestBraking_Implementation(bool bWantsToBrake) { NativeCall(this, "APrimalDinoCharacter.ServerRequestBraking_Implementation", bWantsToBrake); } + void ServerRequestToggleFlight_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerRequestToggleFlight_Implementation"); } + void ServerRequestWaterSurfaceJump_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerRequestWaterSurfaceJump_Implementation"); } + void ServerSetRiderMountedWeaponRotation_Implementation(FRotator InVal) { NativeCall(this, "APrimalDinoCharacter.ServerSetRiderMountedWeaponRotation_Implementation", InVal); } + void ServerSleepingTick() { NativeCall(this, "APrimalDinoCharacter.ServerSleepingTick"); } + void ServerTamedTick() { NativeCall(this, "APrimalDinoCharacter.ServerTamedTick"); } + void ServerToClientsPlayAttackAnimation_Implementation(char AttackinfoIndex, char AnimationIndex, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, AActor* MyTarget) { NativeCall(this, "APrimalDinoCharacter.ServerToClientsPlayAttackAnimation_Implementation", AttackinfoIndex, AnimationIndex, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, MyTarget); } + void ServerToggleCharging_Implementation() { NativeCall(this, "APrimalDinoCharacter.ServerToggleCharging_Implementation"); } + void ServerUpdateAttackTargets_Implementation(AActor* AttackTarget, FVector AttackLocation) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateAttackTargets_Implementation", AttackTarget, AttackLocation); } + void ServerUpdateBabyAge(float overrideAgePercent) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateBabyAge", overrideAgePercent); } + void ServerUpdateGestation() { NativeCall(this, "APrimalDinoCharacter.ServerUpdateGestation"); } + void SetAlwaysForcedAggro(bool bEnable) { NativeCall(this, "APrimalDinoCharacter.SetAlwaysForcedAggro", bEnable); } + void SetAnimWeightsForAttackAtIndex(int attackIndex, TArray newWeights) { NativeCall>(this, "APrimalDinoCharacter.SetAnimWeightsForAttackAtIndex", attackIndex, newWeights); } + void SetBabyAge(float TheAge) { NativeCall(this, "APrimalDinoCharacter.SetBabyAge", TheAge); } + void SetCarryingDino(APrimalDinoCharacter* aDino) { NativeCall(this, "APrimalDinoCharacter.SetCarryingDino", aDino); } + void SetCharacterStatusTameable(bool bSetTameable, bool bCreateInventory, bool keepInventoryForWakingTame) { NativeCall(this, "APrimalDinoCharacter.SetCharacterStatusTameable", bSetTameable, bCreateInventory, keepInventoryForWakingTame); } + void SetCurrentAttackIndex(char index) { NativeCall(this, "APrimalDinoCharacter.SetCurrentAttackIndex", index); } + void SetCurrentWeapon(AShooterWeapon* NewWeapon, AShooterWeapon* LastWeapon) { NativeCall(this, "APrimalDinoCharacter.SetCurrentWeapon", NewWeapon, LastWeapon); } + void SetDynamicMusic(USoundBase* newMusic) { NativeCall(this, "APrimalDinoCharacter.SetDynamicMusic", newMusic); } + void SetFlight(bool bFly, bool bCancelForceLand) { NativeCall(this, "APrimalDinoCharacter.SetFlight", bFly, bCancelForceLand); } + void SetForcedAggro(ITargetableInterface* Targetable, float AggroAmount, float ForcedAggroTime) { NativeCall(this, "APrimalDinoCharacter.SetForcedAggro", Targetable, AggroAmount, ForcedAggroTime); } + void SetImprintPlayer(AShooterCharacter* ForChar) { NativeCall(this, "APrimalDinoCharacter.SetImprintPlayer", ForChar); } + void SetLastAttackTimeForAttack(int AttackIndex, long double NewTime) { NativeCall(this, "APrimalDinoCharacter.SetLastAttackTimeForAttack", AttackIndex, NewTime); } + void SetLastMovementDesiredRotation(FRotator* InRotation) { NativeCall(this, "APrimalDinoCharacter.SetLastMovementDesiredRotation", InRotation); } + void SetMountCharacter(APrimalCharacter* aCharacter) { NativeCall(this, "APrimalDinoCharacter.SetMountCharacter", aCharacter); } + void SetMovementAccelerationVector(FVector fVector) { NativeCall(this, "APrimalDinoCharacter.SetMovementAccelerationVector", fVector); } + void SetNewStasisAutoDestroyInterval(float NewInterval) { NativeCall(this, "APrimalDinoCharacter.SetNewStasisAutoDestroyInterval", NewInterval); } + void SetPreventSaving(bool fPreventSaving) { NativeCall(this, "APrimalDinoCharacter.SetPreventSaving", fPreventSaving); } + void SetRider(AShooterCharacter* aRider) { NativeCall(this, "APrimalDinoCharacter.SetRider", aRider); } + void SetRidingDinoAsPassenger(APrimalDinoCharacter* aDino, FSaddlePassengerSeatDefinition* SeatDefinition) { NativeCall(this, "APrimalDinoCharacter.SetRidingDinoAsPassenger", aDino, SeatDefinition); } + void SetSleeping(bool bSleeping, bool bUseRagdollLocationOffset) { NativeCall(this, "APrimalDinoCharacter.SetSleeping", bSleeping, bUseRagdollLocationOffset); } + void SetStasisComponentRadius(float StasisOverrideRadius) { NativeCall(this, "APrimalDinoCharacter.SetStasisComponentRadius", StasisOverrideRadius); } + bool SetTurretMode_Implementation(bool enabled) { return NativeCall(this, "APrimalDinoCharacter.SetTurretMode_Implementation", enabled); } + void SetupColorization() { NativeCall(this, "APrimalDinoCharacter.SetupColorization"); } + void SetupTamed(bool bWasJustTamed) { NativeCall(this, "APrimalDinoCharacter.SetupTamed", bWasJustTamed); } + bool ShouldAttackOfPlayedAnimationStopMovement() { return NativeCall(this, "APrimalDinoCharacter.ShouldAttackOfPlayedAnimationStopMovement"); } + bool ShouldDealDamage(AActor* TestActor) { return NativeCall(this, "APrimalDinoCharacter.ShouldDealDamage", TestActor); } + bool ShouldDisableControllerDesiredRotation() { return NativeCall(this, "APrimalDinoCharacter.ShouldDisableControllerDesiredRotation"); } + bool ShouldForceFlee() { return NativeCall(this, "APrimalDinoCharacter.ShouldForceFlee"); } + bool ShouldIgnoreHitResult(UWorld* InWorld, FHitResult* TestHit, FVector* MovementDirDenormalized) { return NativeCall(this, "APrimalDinoCharacter.ShouldIgnoreHitResult", InWorld, TestHit, MovementDirDenormalized); } + bool ShouldIgnoreMoveCombiningOverlap() { return NativeCall(this, "APrimalDinoCharacter.ShouldIgnoreMoveCombiningOverlap"); } + bool ShouldReplicateRotPitch() { return NativeCall(this, "APrimalDinoCharacter.ShouldReplicateRotPitch"); } + bool ShouldStillAllowRequestedMoveAcceleration() { return NativeCall(this, "APrimalDinoCharacter.ShouldStillAllowRequestedMoveAcceleration"); } + bool SkipDuringPartialWorldSave() { return NativeCall(this, "APrimalDinoCharacter.SkipDuringPartialWorldSave"); } + void SpawnDefaultController() { NativeCall(this, "APrimalDinoCharacter.SpawnDefaultController"); } + static APrimalDinoCharacter* SpawnDino(UWorld* World, TSubclassOf DinoClass, FVector SpawnLoc, FRotator SpawnRot, float LevelMultiplier, int ExtraLevelOffset, bool AddLevelOffsetBeforeMultiplier, bool bOverrideBaseNPCLevel, int BaseLevelOverrideValue, bool bNPCDontWander, float NPCAIRangeMultiplier, int NPCAbsoluteBaseLevel, bool bSpawnWithoutCapsuleOffset) { return NativeCall, FVector, FRotator, float, int, bool, bool, int, bool, float, int, bool>(nullptr, "APrimalDinoCharacter.SpawnDino", World, DinoClass, SpawnLoc, SpawnRot, LevelMultiplier, ExtraLevelOffset, AddLevelOffsetBeforeMultiplier, bOverrideBaseNPCLevel, BaseLevelOverrideValue, bNPCDontWander, NPCAIRangeMultiplier, NPCAbsoluteBaseLevel, bSpawnWithoutCapsuleOffset); } + void SpawnEgg() { NativeCall(this, "APrimalDinoCharacter.SpawnEgg"); } + void SpawnNewAIController(TSubclassOf NewAIController) { NativeCall>(this, "APrimalDinoCharacter.SpawnNewAIController", NewAIController); } + bool SpecialActorWantsPerFrameTicking() { return NativeCall(this, "APrimalDinoCharacter.SpecialActorWantsPerFrameTicking"); } + void StartCharging(bool bForce) { NativeCall(this, "APrimalDinoCharacter.StartCharging", bForce); } + void StartForceSkelUpdate(float ForTime, bool bForceUpdateMesh, bool bServerOnly) { NativeCall(this, "APrimalDinoCharacter.StartForceSkelUpdate", ForTime, bForceUpdateMesh, bServerOnly); } + void StartLanding(FVector OverrideLandingLocation) { NativeCall(this, "APrimalDinoCharacter.StartLanding", OverrideLandingLocation); } + void StartRepair() { NativeCall(this, "APrimalDinoCharacter.StartRepair"); } + void StartSurfaceCameraForPassenger(AShooterCharacter* Passenger, float yaw, float pitch, float roll, bool bInvertTurnInput) { NativeCall(this, "APrimalDinoCharacter.StartSurfaceCameraForPassenger", Passenger, yaw, pitch, roll, bInvertTurnInput); } + void StartSurfaceCameraForPassengers(float yaw, float pitch, float roll) { NativeCall(this, "APrimalDinoCharacter.StartSurfaceCameraForPassengers", yaw, pitch, roll); } + void Stasis() { NativeCall(this, "APrimalDinoCharacter.Stasis"); } + static APrimalDinoCharacter* StaticCreateBabyDino(UWorld* theWorld, TSubclassOf EggDinoClassToSpawn, FVector* theGroundLoc, float actorRotationYaw, char* EggColorSetIndices, char* EggNumberOfLevelUpPointsApplied, float EggTamedIneffectivenessModifier, int NotifyTeamOverride, TArray* EggDinoAncestors, TArray* EggDinoAncestorsMale, int EggRandomMutationsFemale, int EggRandomMutationsMale) { return NativeCall, FVector*, float, char*, char*, float, int, TArray*, TArray*, int, int>(nullptr, "APrimalDinoCharacter.StaticCreateBabyDino", theWorld, EggDinoClassToSpawn, theGroundLoc, actorRotationYaw, EggColorSetIndices, EggNumberOfLevelUpPointsApplied, EggTamedIneffectivenessModifier, NotifyTeamOverride, EggDinoAncestors, EggDinoAncestorsMale, EggRandomMutationsFemale, EggRandomMutationsMale); } + void StealDino(AShooterPlayerController* ForPC, int TargetingTeamOverride) { NativeCall(this, "APrimalDinoCharacter.StealDino", ForPC, TargetingTeamOverride); } + void StopActiveState(bool bShouldResetAttackIndex) { NativeCall(this, "APrimalDinoCharacter.StopActiveState", bShouldResetAttackIndex); } + float TakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { return NativeCall(this, "APrimalDinoCharacter.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void TameDino(AShooterPlayerController* ForPC, bool bIgnoreMaxTameLimit, int OverrideTamingTeamID) { NativeCall(this, "APrimalDinoCharacter.TameDino", ForPC, bIgnoreMaxTameLimit, OverrideTamingTeamID); } + void TamedDinoUnstasisConsumeFood(long double ForceTimeSinceStasis) { NativeCall(this, "APrimalDinoCharacter.TamedDinoUnstasisConsumeFood", ForceTimeSinceStasis); } + bool TamedProcessOrder(APrimalCharacter* FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor* enemyTarget) { return NativeCall(this, "APrimalDinoCharacter.TamedProcessOrder", FromCharacter, OrderType, bForce, enemyTarget); } + void TargetingTeamChanged() { NativeCall(this, "APrimalDinoCharacter.TargetingTeamChanged"); } + void TempDampenInputAcceleration() { NativeCall(this, "APrimalDinoCharacter.TempDampenInputAcceleration"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.Tick", DeltaSeconds); } + void TickBasedCharacters(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.TickBasedCharacters", DeltaSeconds); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "APrimalDinoCharacter.TryMultiUse", ForPC, UseIndex); } + void UnPossessed() { NativeCall(this, "APrimalDinoCharacter.UnPossessed"); } + void UnclaimDino(bool bDestroyAI) { NativeCall(this, "APrimalDinoCharacter.UnclaimDino", bDestroyAI); } + void Unstasis() { NativeCall(this, "APrimalDinoCharacter.Unstasis"); } + void UpdateAttackTargets() { NativeCall(this, "APrimalDinoCharacter.UpdateAttackTargets"); } + void UpdateBabyCuddling_Implementation(long double NewBabyNextCuddleTime, char NewBabyCuddleType, TSubclassOf NewBabyCuddleFood) { NativeCall>(this, "APrimalDinoCharacter.UpdateBabyCuddling_Implementation", NewBabyNextCuddleTime, NewBabyCuddleType, NewBabyCuddleFood); } + void UpdateCarriedLocationAndRotation(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.UpdateCarriedLocationAndRotation", DeltaSeconds); } + void UpdateGang() { NativeCall(this, "APrimalDinoCharacter.UpdateGang"); } + void UpdateIK() { NativeCall(this, "APrimalDinoCharacter.UpdateIK"); } + void UpdateImprintingDetails_Implementation(FString* NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails_Implementation", NewImprinterName, NewImprinterPlayerDataID); } + void UpdateImprintingQuality_Implementation(float NewImprintingQuality) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingQuality_Implementation", NewImprintingQuality); } + void UpdateMateBoost() { NativeCall(this, "APrimalDinoCharacter.UpdateMateBoost"); } + void UpdateMating() { NativeCall(this, "APrimalDinoCharacter.UpdateMating"); } + void UpdateStatusComponent(float DeltaSeconds) { NativeCall(this, "APrimalDinoCharacter.UpdateStatusComponent", DeltaSeconds); } + void UpdateTribeGroupRanks_Implementation(char NewTribeGroupPetOrderingRank, char NewTribeGroupPetRidingRank) { NativeCall(this, "APrimalDinoCharacter.UpdateTribeGroupRanks_Implementation", NewTribeGroupPetOrderingRank, NewTribeGroupPetRidingRank); } + void UpdateWakingTame(float DeltaTime) { NativeCall(this, "APrimalDinoCharacter.UpdateWakingTame", DeltaTime); } + bool UseLowQualityAnimationTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityAnimationTick"); } + bool UseLowQualityBehaviorTreeTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityBehaviorTreeTick"); } + bool UseLowQualityMovementTick() { return NativeCall(this, "APrimalDinoCharacter.UseLowQualityMovementTick"); } + bool FlyingUseHighQualityCollision() { return NativeCall(this, "APrimalDinoCharacter.FlyingUseHighQualityCollision"); } + bool WalkingAllowCheckFall(FVector* DeltaWalk) { return NativeCall(this, "APrimalDinoCharacter.WalkingAllowCheckFall", DeltaWalk); } + bool WalkingAllowCheckFloor(FVector* DeltaWalk) { return NativeCall(this, "APrimalDinoCharacter.WalkingAllowCheckFloor", DeltaWalk); } + bool WantsPerFrameSkeletalAnimationTicking() { return NativeCall(this, "APrimalDinoCharacter.WantsPerFrameSkeletalAnimationTicking"); } + int WasAllowedToTickThisFrame() { return NativeCall(this, "APrimalDinoCharacter.WasAllowedToTickThisFrame"); } + void WasPushed(ACharacter* ByOtherCharacter) { NativeCall(this, "APrimalDinoCharacter.WasPushed", ByOtherCharacter); } + void AddedImprintingQuality(float Amount) { NativeCall(this, "APrimalDinoCharacter.AddedImprintingQuality", Amount); } + bool AllowWakingTame(APlayerController* ForPC) { return NativeCall(this, "APrimalDinoCharacter.AllowWakingTame", ForPC); } + void AnimNotifyMountedDino() { NativeCall(this, "APrimalDinoCharacter.AnimNotifyMountedDino"); } + int BPAdjustAttackIndex(int attackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPAdjustAttackIndex", attackIndex); } + bool BPAllowCarryCharacter(APrimalCharacter* checkCharacter) { return NativeCall(this, "APrimalDinoCharacter.BPAllowCarryCharacter", checkCharacter); } + bool BPAllowClaiming(AShooterPlayerController* forPlayer) { return NativeCall(this, "APrimalDinoCharacter.BPAllowClaiming", forPlayer); } + bool BPAllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "APrimalDinoCharacter.BPAllowEquippingItemType", equipmentType); } + void BPBecomeAdult() { NativeCall(this, "APrimalDinoCharacter.BPBecomeAdult"); } + void BPBecomeBaby() { NativeCall(this, "APrimalDinoCharacter.BPBecomeBaby"); } + bool BPCanAutodrag(APrimalCharacter* characterToDrag) { return NativeCall(this, "APrimalDinoCharacter.BPCanAutodrag", characterToDrag); } + bool BPCanDragCharacter(APrimalCharacter* Character) { return NativeCall(this, "APrimalDinoCharacter.BPCanDragCharacter", Character); } + bool BPCanIgnoreImmobilizationTrap(TSubclassOf TrapClass, bool bForceTrigger) { return NativeCall, bool>(this, "APrimalDinoCharacter.BPCanIgnoreImmobilizationTrap", TrapClass, bForceTrigger); } + bool BPCanTargetCorpse() { return NativeCall(this, "APrimalDinoCharacter.BPCanTargetCorpse"); } + FVector* BPChargingModifyInputAcceleration(FVector* result, FVector inputAcceleration) { return NativeCall(this, "APrimalDinoCharacter.BPChargingModifyInputAcceleration", result, inputAcceleration); } + bool BPDesiredRotationIsLocalSpace() { return NativeCall(this, "APrimalDinoCharacter.BPDesiredRotationIsLocalSpace"); } + void BPDidClearCarriedCharacter(APrimalCharacter* PreviousCarriedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPDidClearCarriedCharacter", PreviousCarriedCharacter); } + void BPDidSetCarriedCharacter(APrimalCharacter* PreviousCarriedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPDidSetCarriedCharacter", PreviousCarriedCharacter); } + void BPDinoARKDownloadedBegin() { NativeCall(this, "APrimalDinoCharacter.BPDinoARKDownloadedBegin"); } + void BPDinoARKDownloadedEnd() { NativeCall(this, "APrimalDinoCharacter.BPDinoARKDownloadedEnd"); } + void BPDinoPostBeginPlay() { NativeCall(this, "APrimalDinoCharacter.BPDinoPostBeginPlay"); } + void BPDoAttack(int AttackIndex) { NativeCall(this, "APrimalDinoCharacter.BPDoAttack", AttackIndex); } + void BPDoHarvestAttack(int harvestIndex) { NativeCall(this, "APrimalDinoCharacter.BPDoHarvestAttack", harvestIndex); } + void BPDrawToRiderHUD(AShooterHUD* HUD) { NativeCall(this, "APrimalDinoCharacter.BPDrawToRiderHUD", HUD); } + void BPFedWakingTameEvent(APlayerController* ForPC) { NativeCall(this, "APrimalDinoCharacter.BPFedWakingTameEvent", ForPC); } + bool BPForceTurretFastTargeting() { return NativeCall(this, "APrimalDinoCharacter.BPForceTurretFastTargeting"); } + FName* BPGetDragSocketDinoName(FName* result, APrimalDinoCharacter* aGrabbedDino) { return NativeCall(this, "APrimalDinoCharacter.BPGetDragSocketDinoName", result, aGrabbedDino); } + FVector* BPGetHealthBarColor(FVector* result) { return NativeCall(this, "APrimalDinoCharacter.BPGetHealthBarColor", result); } + bool BPHandleControllerInitiatedAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPHandleControllerInitiatedAttack", AttackIndex); } + bool BPHandleOnStopFire() { return NativeCall(this, "APrimalDinoCharacter.BPHandleOnStopFire"); } + bool BPHandleOnStopTargeting() { return NativeCall(this, "APrimalDinoCharacter.BPHandleOnStopTargeting"); } + bool BPHandleUseButtonPress(AShooterPlayerController* RiderController) { return NativeCall(this, "APrimalDinoCharacter.BPHandleUseButtonPress", RiderController); } + void BPKilledSomethingEvent(APrimalCharacter* killedTarget) { NativeCall(this, "APrimalDinoCharacter.BPKilledSomethingEvent", killedTarget); } + FVector* BPModifyAimOffsetTargetLocation(FVector* result, FVector* AimTargetLocation) { return NativeCall(this, "APrimalDinoCharacter.BPModifyAimOffsetTargetLocation", result, AimTargetLocation); } + bool BPModifyDesiredRotation(FRotator* InDesiredRotation, FRotator* OutDesiredRotation) { return NativeCall(this, "APrimalDinoCharacter.BPModifyDesiredRotation", InDesiredRotation, OutDesiredRotation); } + float BPModifyHarvestingQuantity(float originalQuantity, TSubclassOf resourceSelected) { return NativeCall>(this, "APrimalDinoCharacter.BPModifyHarvestingQuantity", originalQuantity, resourceSelected); } + void BPModifyHarvestingWeightsArray(TArray* resourceWeightsIn, TArray* resourceItems, TArray* resourceWeightsOut) { NativeCall*, TArray*, TArray*>(this, "APrimalDinoCharacter.BPModifyHarvestingWeightsArray", resourceWeightsIn, resourceItems, resourceWeightsOut); } + void BPNotifyAddPassenger(APrimalCharacter* PassengerChar, int SeatIndex) { NativeCall(this, "APrimalDinoCharacter.BPNotifyAddPassenger", PassengerChar, SeatIndex); } + void BPNotifyBabyAgeIncrement(float PreviousAge, float NewAge) { NativeCall(this, "APrimalDinoCharacter.BPNotifyBabyAgeIncrement", PreviousAge, NewAge); } + void BPNotifyCarriedDinoBabyAgeIncrement(APrimalDinoCharacter* AgingCarriedDino, float PreviousAge, float NewAge) { NativeCall(this, "APrimalDinoCharacter.BPNotifyCarriedDinoBabyAgeIncrement", AgingCarriedDino, PreviousAge, NewAge); } + void BPNotifyClaimed() { NativeCall(this, "APrimalDinoCharacter.BPNotifyClaimed"); } + void BPNotifyClearPassenger(APrimalCharacter* PassengerChar, int SeatIndex) { NativeCall(this, "APrimalDinoCharacter.BPNotifyClearPassenger", PassengerChar, SeatIndex); } + void BPNotifyClearRider(AShooterCharacter* RiderClearing) { NativeCall(this, "APrimalDinoCharacter.BPNotifyClearRider", RiderClearing); } + void BPNotifyIfPassengerLaunchShoulderMount(APrimalCharacter* launchedCharacter) { NativeCall(this, "APrimalDinoCharacter.BPNotifyIfPassengerLaunchShoulderMount", launchedCharacter); } + void BPNotifyMateBoostChanged() { NativeCall(this, "APrimalDinoCharacter.BPNotifyMateBoostChanged"); } + void BPNotifySetRider(AShooterCharacter* RiderSetting) { NativeCall(this, "APrimalDinoCharacter.BPNotifySetRider", RiderSetting); } + void BPNotifyStructurePlacedNearby(APrimalStructure* NewStructure) { NativeCall(this, "APrimalDinoCharacter.BPNotifyStructurePlacedNearby", NewStructure); } + void BPOnClearMountedDino() { NativeCall(this, "APrimalDinoCharacter.BPOnClearMountedDino"); } + void BPOnEndCharging() { NativeCall(this, "APrimalDinoCharacter.BPOnEndCharging"); } + void BPOnRepIsCharging() { NativeCall(this, "APrimalDinoCharacter.BPOnRepIsCharging"); } + void BPOnSaddleStructuresUpdated(APrimalStructure* SaddleStructure, bool bWasRemoved) { NativeCall(this, "APrimalDinoCharacter.BPOnSaddleStructuresUpdated", SaddleStructure, bWasRemoved); } + void BPOnSetFlight(bool bFly) { NativeCall(this, "APrimalDinoCharacter.BPOnSetFlight", bFly); } + void BPOnSetMountedDino() { NativeCall(this, "APrimalDinoCharacter.BPOnSetMountedDino"); } + void BPOnStartCharging() { NativeCall(this, "APrimalDinoCharacter.BPOnStartCharging"); } + bool BPOnStartJump() { return NativeCall(this, "APrimalDinoCharacter.BPOnStartJump"); } + void BPOnTamedProcessOrder(APrimalCharacter* FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor* enemyTarget, bool orderNotExecuted) { NativeCall(this, "APrimalDinoCharacter.BPOnTamedProcessOrder", FromCharacter, OrderType, bForce, enemyTarget, orderNotExecuted); } + void BPOrderedMoveToLoc(FVector* DestLoc, AActor* DestActor) { NativeCall(this, "APrimalDinoCharacter.BPOrderedMoveToLoc", DestLoc, DestActor); } + bool BPOverrideMoveToOrder(FVector MoveToLocation, AShooterCharacter* OrderingPlayer, AActor* TargetActor) { return NativeCall(this, "APrimalDinoCharacter.BPOverrideMoveToOrder", MoveToLocation, OrderingPlayer, TargetActor); } + void BPPreOnSaddleStructuresAdded(APrimalStructure* SaddleStructure) { NativeCall(this, "APrimalDinoCharacter.BPPreOnSaddleStructuresAdded", SaddleStructure); } + bool BPPreventAIAttackSelection() { return NativeCall(this, "APrimalDinoCharacter.BPPreventAIAttackSelection"); } + bool BPPreventOrderAllowed(APrimalCharacter* FromCharacter, EDinoTamedOrder::Type OrderType, bool bForce, AActor* enemyTarget, bool orderNotExecuted) { return NativeCall(this, "APrimalDinoCharacter.BPPreventOrderAllowed", FromCharacter, OrderType, bForce, enemyTarget, orderNotExecuted); } + bool BPPreventRiding(AShooterCharacter* byPawn, bool bDontCheckDistance) { return NativeCall(this, "APrimalDinoCharacter.BPPreventRiding", byPawn, bDontCheckDistance); } + void BPSentKilledNotification(AShooterPlayerController* ToPC) { NativeCall(this, "APrimalDinoCharacter.BPSentKilledNotification", ToPC); } + void BPSetupTamed(bool bWasJustTamed) { NativeCall(this, "APrimalDinoCharacter.BPSetupTamed", bWasJustTamed); } + bool BPShouldCancelDoAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BPShouldCancelDoAttack", AttackIndex); } + bool BPShouldForceFlee() { return NativeCall(this, "APrimalDinoCharacter.BPShouldForceFlee"); } + void BPTamedConsumeFoodItem(UPrimalItem* foodItem) { NativeCall(this, "APrimalDinoCharacter.BPTamedConsumeFoodItem", foodItem); } + void BPUnsetupDinoTameable() { NativeCall(this, "APrimalDinoCharacter.BPUnsetupDinoTameable"); } + void BPUntamedConsumeFoodItem(UPrimalItem* foodItem) { NativeCall(this, "APrimalDinoCharacter.BPUntamedConsumeFoodItem", foodItem); } + float BP_GetCustomModifier_MaxSpeed() { return NativeCall(this, "APrimalDinoCharacter.BP_GetCustomModifier_MaxSpeed"); } + float BP_GetCustomModifier_RotationRate() { return NativeCall(this, "APrimalDinoCharacter.BP_GetCustomModifier_RotationRate"); } + bool BP_InterceptMoveForward(float axisValue) { return NativeCall(this, "APrimalDinoCharacter.BP_InterceptMoveForward", axisValue); } + bool BP_InterceptMoveRight(float axisValue) { return NativeCall(this, "APrimalDinoCharacter.BP_InterceptMoveRight", axisValue); } + void BP_OnPostNetReplication(FVector ReplicatedLoc, FRotator ReplicatedRot) { NativeCall(this, "APrimalDinoCharacter.BP_OnPostNetReplication", ReplicatedLoc, ReplicatedRot); } + void BP_OnRiderChangeWeapons(AShooterCharacter* theRider, UPrimalItem* newWeapon) { NativeCall(this, "APrimalDinoCharacter.BP_OnRiderChangeWeapons", theRider, newWeapon); } + void BP_OnStartLandingNotify() { NativeCall(this, "APrimalDinoCharacter.BP_OnStartLandingNotify"); } + void BP_OnTargetedByTamedOrder(APrimalCharacter* OrderingCharacter, APrimalDinoCharacter* AttackingDino, bool bForced) { NativeCall(this, "APrimalDinoCharacter.BP_OnTargetedByTamedOrder", OrderingCharacter, AttackingDino, bForced); } + FVector* BP_OverrideClosestShipEdgeTeleportLocation(FVector* result, FVector CurrentShipEdgeLocation, APrimalRaft* ForShip) { return NativeCall(this, "APrimalDinoCharacter.BP_OverrideClosestShipEdgeTeleportLocation", result, CurrentShipEdgeLocation, ForShip); } + bool BP_PreventCarrying() { return NativeCall(this, "APrimalDinoCharacter.BP_PreventCarrying"); } + void BSetupDinoTameable() { NativeCall(this, "APrimalDinoCharacter.BSetupDinoTameable"); } + float BlueprintAdjustOutputDamage(int AttackIndex, float OriginalDamageAmount, AActor* HitActor, TSubclassOf* OutDamageType, float* OutDamageImpulse) { return NativeCall*, float*>(this, "APrimalDinoCharacter.BlueprintAdjustOutputDamage", AttackIndex, OriginalDamageAmount, HitActor, OutDamageType, OutDamageImpulse); } + bool BlueprintCanAttack(int AttackIndex, float distance, float attackRangeOffset, AActor* OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.BlueprintCanAttack", AttackIndex, distance, attackRangeOffset, OtherTarget); } + bool BlueprintCanRiderAttack(int AttackIndex) { return NativeCall(this, "APrimalDinoCharacter.BlueprintCanRiderAttack", AttackIndex); } + void BlueprintDrawFloatingHUD(AShooterHUD* HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalDinoCharacter.BlueprintDrawFloatingHUD", HUD, CenterX, CenterY, DrawScale); } + float BlueprintExtraBabyScaling() { return NativeCall(this, "APrimalDinoCharacter.BlueprintExtraBabyScaling"); } + float BlueprintGetAttackWeight(int AttackIndex, float inputWeight, float distance, float attackRangeOffset, AActor* OtherTarget) { return NativeCall(this, "APrimalDinoCharacter.BlueprintGetAttackWeight", AttackIndex, inputWeight, distance, attackRangeOffset, OtherTarget); } + TSubclassOf* BlueprintOverrideHarvestDamageType(TSubclassOf* result, float* OutHarvestDamageMultiplier) { return NativeCall*, TSubclassOf*, float*>(this, "APrimalDinoCharacter.BlueprintOverrideHarvestDamageType", result, OutHarvestDamageMultiplier); } + bool BlueprintOverrideWantsToRun(bool bInputWantsToRun) { return NativeCall(this, "APrimalDinoCharacter.BlueprintOverrideWantsToRun", bInputWantsToRun); } + void BlueprintPlayDying(float KillingDamage, FDamageEvent* DamageEvent, APawn* InstigatingPawn, AActor* DamageCauser) { NativeCall(this, "APrimalDinoCharacter.BlueprintPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void BlueprintTamedTick() { NativeCall(this, "APrimalDinoCharacter.BlueprintTamedTick"); } + void CheckStructurePlacementOnMe(int* AllowReturnValue, APrimalStructure* PlacingStructure, AShooterPlayerController* PC, FVector* AtLocation, FRotator* AtRotation, FPlacementData* PlacementData) { NativeCall(this, "APrimalDinoCharacter.CheckStructurePlacementOnMe", AllowReturnValue, PlacingStructure, PC, AtLocation, AtRotation, PlacementData); } + void ClientInterruptLanding() { NativeCall(this, "APrimalDinoCharacter.ClientInterruptLanding"); } + void ClientShouldNotifyLanded() { NativeCall(this, "APrimalDinoCharacter.ClientShouldNotifyLanded"); } + void ClientStartLanding(FVector landingLoc) { NativeCall(this, "APrimalDinoCharacter.ClientStartLanding", landingLoc); } + void DinoShoulderMountedLaunch(FVector launchDir, AShooterCharacter* throwingCharacter) { NativeCall(this, "APrimalDinoCharacter.DinoShoulderMountedLaunch", launchDir, throwingCharacter); } + void DoNeuter() { NativeCall(this, "APrimalDinoCharacter.DoNeuter"); } + float DoOverrideMountedAirControl(float AirControlIn) { return NativeCall(this, "APrimalDinoCharacter.DoOverrideMountedAirControl", AirControlIn); } + void FedWakingTameDino() { NativeCall(this, "APrimalDinoCharacter.FedWakingTameDino"); } + void FireMultipleProjectiles(TArray* Locations, TArray* Directions, bool bScaleProjectileDamageByDinoDamage) { NativeCall*, TArray*, bool>(this, "APrimalDinoCharacter.FireMultipleProjectiles", Locations, Directions, bScaleProjectileDamageByDinoDamage); } + void FireProjectile(FVector Origin, FVector_NetQuantizeNormal ShootDir, bool bScaleProjDamageByDinoDamage) { NativeCall(this, "APrimalDinoCharacter.FireProjectile", Origin, ShootDir, bScaleProjDamageByDinoDamage); } + void ForceUpdateColorSets(int ColorRegion, int ColorSet) { NativeCall(this, "APrimalDinoCharacter.ForceUpdateColorSets", ColorRegion, ColorSet); } + USoundBase* GetDinoTameSound() { return NativeCall(this, "APrimalDinoCharacter.GetDinoTameSound"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalDinoCharacter.GetPrivateStaticClass", Package); } + FString* GetTutorialHintString(FString* result) { return NativeCall(this, "APrimalDinoCharacter.GetTutorialHintString", result); } + void HandleMountedDinoAction(AShooterPlayerController* PC) { NativeCall(this, "APrimalDinoCharacter.HandleMountedDinoAction", PC); } + void InterruptLatching() { NativeCall(this, "APrimalDinoCharacter.InterruptLatching"); } + void NetUpdateDinoNameStrings(FString* NewTamerString, FString* NewTamedName) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoNameStrings", NewTamerString, NewTamedName); } + void NetUpdateDinoOwnerData(FString* NewOwningPlayerName, int NewOwningPlayerID) { NativeCall(this, "APrimalDinoCharacter.NetUpdateDinoOwnerData", NewOwningPlayerName, NewOwningPlayerID); } + void OnNPCStartedAttack(int AttackIndex, int AnimationIndex, bool bIsAltAnim, AActor* MyTarget) { NativeCall(this, "APrimalDinoCharacter.OnNPCStartedAttack", AttackIndex, AnimationIndex, bIsAltAnim, MyTarget); } + void OnUpdateMountedDinoMeshHiding(bool bshouldBeVisible) { NativeCall(this, "APrimalDinoCharacter.OnUpdateMountedDinoMeshHiding", bshouldBeVisible); } + bool OverrideFinalWanderLocation(FVector* outVec) { return NativeCall(this, "APrimalDinoCharacter.OverrideFinalWanderLocation", outVec); } + void OverrideRandomWanderLocation(FVector* originalDestination, FVector* inVec) { NativeCall(this, "APrimalDinoCharacter.OverrideRandomWanderLocation", originalDestination, inVec); } + void PlayHardEndChargingShake() { NativeCall(this, "APrimalDinoCharacter.PlayHardEndChargingShake"); } + void RidingTick() { NativeCall(this, "APrimalDinoCharacter.RidingTick"); } + void ServerClearRider(int OverrideUnboardDirection) { NativeCall(this, "APrimalDinoCharacter.ServerClearRider", OverrideUnboardDirection); } + void ServerFinishedLanding() { NativeCall(this, "APrimalDinoCharacter.ServerFinishedLanding"); } + void ServerInterruptLanding() { NativeCall(this, "APrimalDinoCharacter.ServerInterruptLanding"); } + void ServerRequestAttack(int attackIndex) { NativeCall(this, "APrimalDinoCharacter.ServerRequestAttack", attackIndex); } + void ServerRequestBraking(bool bWantsToBrake) { NativeCall(this, "APrimalDinoCharacter.ServerRequestBraking", bWantsToBrake); } + void ServerRequestToggleFlight() { NativeCall(this, "APrimalDinoCharacter.ServerRequestToggleFlight"); } + void ServerRequestWaterSurfaceJump() { NativeCall(this, "APrimalDinoCharacter.ServerRequestWaterSurfaceJump"); } + void ServerSetRiderMountedWeaponRotation(FRotator InVal) { NativeCall(this, "APrimalDinoCharacter.ServerSetRiderMountedWeaponRotation", InVal); } + void ServerToClientsPlayAttackAnimation(char AttackinfoIndex, char animationIndex, float InPlayRate, FName StartSectionName, bool bForceTickPoseAndServerUpdateMesh, bool bForceTickPoseOnServer, AActor* MyTarget) { NativeCall(this, "APrimalDinoCharacter.ServerToClientsPlayAttackAnimation", AttackinfoIndex, animationIndex, InPlayRate, StartSectionName, bForceTickPoseAndServerUpdateMesh, bForceTickPoseOnServer, MyTarget); } + void ServerToggleCharging() { NativeCall(this, "APrimalDinoCharacter.ServerToggleCharging"); } + void ServerUpdateAttackTargets(AActor* AttackTarget, FVector AttackLocation) { NativeCall(this, "APrimalDinoCharacter.ServerUpdateAttackTargets", AttackTarget, AttackLocation); } + bool SetTurretMode(bool enabled) { return NativeCall(this, "APrimalDinoCharacter.SetTurretMode", enabled); } + static void StaticRegisterNativesAPrimalDinoCharacter() { NativeCall(nullptr, "APrimalDinoCharacter.StaticRegisterNativesAPrimalDinoCharacter"); } + void UpdateBabyCuddling(long double NewBabyNextCuddleTime, char NewBabyCuddleType, TSubclassOf NewBabyCuddleFood) { NativeCall>(this, "APrimalDinoCharacter.UpdateBabyCuddling", NewBabyNextCuddleTime, NewBabyCuddleType, NewBabyCuddleFood); } + void UpdateImprintingDetails(FString* NewImprinterName, unsigned __int64 NewImprinterPlayerDataID) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingDetails", NewImprinterName, NewImprinterPlayerDataID); } + void UpdateImprintingQuality(float NewImprintingQuality) { NativeCall(this, "APrimalDinoCharacter.UpdateImprintingQuality", NewImprintingQuality); } + void UpdateTribeGroupRanks(char NewTribeGroupPetOrderingRank, char NewTribeGroupPetRidingRank) { NativeCall(this, "APrimalDinoCharacter.UpdateTribeGroupRanks", NewTribeGroupPetOrderingRank, NewTribeGroupPetRidingRank); } +}; + +struct AShooterWeapon : AActor +{ + float& EquipTimeField() { return *GetNativePointerField(this, "AShooterWeapon.EquipTime"); } + long double& LastTimeInReloadingField() { return *GetNativePointerField(this, "AShooterWeapon.LastTimeInReloading"); } + TEnumAsByte& MyWeaponTypeField() { return *GetNativePointerField*>(this, "AShooterWeapon.MyWeaponType"); } + UAnimMontage* OverrideProneInAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideProneInAnim"); } + UAnimMontage* NewOverrideProneOutAnimField() { return *GetNativePointerField(this, "AShooterWeapon.NewOverrideProneOutAnim"); } + UAnimMontage* OverrideJumpAnimField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideJumpAnim"); } + UAnimMontage* OverrideJumpAnimDualWieldingField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideJumpAnimDualWielding"); } + UAnimMontage* NewOverrideLandedAnimField() { return *GetNativePointerField(this, "AShooterWeapon.NewOverrideLandedAnim"); } + UAnimMontage* NewOverrideLandedAnimDualWieldingField() { return *GetNativePointerField(this, "AShooterWeapon.NewOverrideLandedAnimDualWielding"); } + UAnimMontage* OverrideJumpAnim_RunningModeField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideJumpAnim_RunningMode"); } + UAnimMontage* NewOverrideLandedAnim_RunningModeField() { return *GetNativePointerField(this, "AShooterWeapon.NewOverrideLandedAnim_RunningMode"); } + TArray OverrideRiderAnimSequenceFromField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceFrom"); } + TArray OverrideRiderAnimSequenceToField() { return *GetNativePointerField*>(this, "AShooterWeapon.OverrideRiderAnimSequenceTo"); } + float& ItemDurabilityToConsumePerMeleeHitField() { return *GetNativePointerField(this, "AShooterWeapon.ItemDurabilityToConsumePerMeleeHit"); } + float& AmmoIconsCountField() { return *GetNativePointerField(this, "AShooterWeapon.AmmoIconsCount"); } + float& TargetingTooltipCheckRangeField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingTooltipCheckRange"); } + float& TargetingForceTraceFloatingHUDRangeField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingForceTraceFloatingHUDRange"); } + long double& LastTimePlayedSwitchAnimField() { return *GetNativePointerField(this, "AShooterWeapon.LastTimePlayedSwitchAnim"); } + float& GlobalAttackAutoAimMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.GlobalAttackAutoAimMultiplier"); } + float& AttackAutoAimSliderField() { return *GetNativePointerField(this, "AShooterWeapon.AttackAutoAimSlider"); } + float& AttackAutoAimSliderMaxMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.AttackAutoAimSliderMaxMultiplier"); } + float& AttackAutoAimSliderMinMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.AttackAutoAimSliderMinMultiplier"); } + long double& TimeStartedAutoAimField() { return *GetNativePointerField(this, "AShooterWeapon.TimeStartedAutoAim"); } + FVector& AutoAimViewOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.AutoAimViewOffset"); } + int& PrimaryClipIconOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.PrimaryClipIconOffset"); } + int& SecondaryClipIconOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.SecondaryClipIconOffset"); } + FVector2D& TargetingInfoTooltipPaddingField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingInfoTooltipPadding"); } + FVector2D& TargetingInfoTooltipScaleField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingInfoTooltipScale"); } + bool& bOnlyPassiveDurabilityWhenAccessoryActiveField() { return *GetNativePointerField(this, "AShooterWeapon.bOnlyPassiveDurabilityWhenAccessoryActive"); } + bool& bDisableShooterOnElectricStormField() { return *GetNativePointerField(this, "AShooterWeapon.bDisableShooterOnElectricStorm"); } + FName& OverrideAttachPointField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideAttachPoint"); } + FVector& FPVRelativeLocationField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeLocation"); } + FRotator& FPVRelativeRotationField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeRotation"); } + FVector& FPVRelativeLocation_TargetingField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeLocation_Targeting"); } + FRotator& FPVRelativeRotation_TargetingField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeRotation_Targeting"); } + float& FPVEnterTargetingInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVEnterTargetingInterpSpeed"); } + float& FPVExitTargetingInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVExitTargetingInterpSpeed"); } + float& EndDoMeleeSwingTimeField() { return *GetNativePointerField(this, "AShooterWeapon.EndDoMeleeSwingTime"); } + FRotator& FPVLookAtMaximumOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtMaximumOffset"); } + FRotator& FPVLookAtSpeedBaseField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtSpeedBase"); } + FRotator& FPVLookAtInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtInterpSpeed"); } + FRotator& FPVLookAtMaximumOffset_TargetingField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtMaximumOffset_Targeting"); } + FRotator& FPVLookAtSpeedBase_TargetingField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtSpeedBase_Targeting"); } + FRotator& FPVLookAtInterpSpeed_TargetingField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLookAtInterpSpeed_Targeting"); } + FVector& FPVImmobilizedLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVImmobilizedLocationOffset"); } + FRotator& FPVImmobilizedRotationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVImmobilizedRotationOffset"); } + float& FPVImmobilizedInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVImmobilizedInterpSpeed"); } + bool& bUseBlueprintAnimNotificationsField() { return *GetNativePointerField(this, "AShooterWeapon.bUseBlueprintAnimNotifications"); } + FTransform& LastDiscreteMeleeSwingTransformField() { return *GetNativePointerField(this, "AShooterWeapon.LastDiscreteMeleeSwingTransform"); } + TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeSwingSockets"); } + float& AllowMeleeTimeBeforeAnimationEndField() { return *GetNativePointerField(this, "AShooterWeapon.AllowMeleeTimeBeforeAnimationEnd"); } + UPrimalItem* AssociatedPrimalItemField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedPrimalItem"); } + bool& bCanBeUsedAsEquipmentField() { return *GetNativePointerField(this, "AShooterWeapon.bCanBeUsedAsEquipment"); } + FItemNetInfo& AssociatedItemNetInfoField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedItemNetInfo"); } + FWeaponData& WeaponConfigField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponConfig"); } + TSubclassOf& WeaponAmmoItemTemplateField() { return *GetNativePointerField*>(this, "AShooterWeapon.WeaponAmmoItemTemplate"); } + long double& NextAllowedMeleeTimeField() { return *GetNativePointerField(this, "AShooterWeapon.NextAllowedMeleeTime"); } + TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "AShooterWeapon.LastSocketPositions"); } + TArray MeleeSwingHurtListField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeSwingHurtList"); } + long double& LastFPVRenderTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastFPVRenderTime"); } + FRotator& LastCameraRotationField() { return *GetNativePointerField(this, "AShooterWeapon.LastCameraRotation"); } + FRotator& FPVAdditionalLookRotOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVAdditionalLookRotOffset"); } + FVector& FPVLastLocOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLastLocOffset"); } + FVector& FPVLastVROffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLastVROffset"); } + FVector& FPVRelativeLocationOffscreenOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVRelativeLocationOffscreenOffset"); } + FRotator& FPVLastRotOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVLastRotOffset"); } + APrimalCharacter* MyPawnField() { return *GetNativePointerField(this, "AShooterWeapon.MyPawn"); } + UAudioComponent* FireACField() { return *GetNativePointerField(this, "AShooterWeapon.FireAC"); } + FName& MuzzleAttachPointField() { return *GetNativePointerField(this, "AShooterWeapon.MuzzleAttachPoint"); } + FName& MuzzleAttachPointSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.MuzzleAttachPointSecondary"); } + FName& FastAttackFXSocketField() { return *GetNativePointerField(this, "AShooterWeapon.FastAttackFXSocket"); } + FName& FastAttackLeftFXSocketField() { return *GetNativePointerField(this, "AShooterWeapon.FastAttackLeftFXSocket"); } + FName& MeleeStunFXSocketField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeStunFXSocket"); } + USoundCue* FireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireSound"); } + USoundCue* AltFireSoundField() { return *GetNativePointerField(this, "AShooterWeapon.AltFireSound"); } + USoundCue* FireFinishSoundField() { return *GetNativePointerField(this, "AShooterWeapon.FireFinishSound"); } + USoundCue* OutOfAmmoSoundField() { return *GetNativePointerField(this, "AShooterWeapon.OutOfAmmoSound"); } + int& MeleeDamageAmountField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeDamageAmount"); } + float& TheMeleeSwingRadiusField() { return *GetNativePointerField(this, "AShooterWeapon.TheMeleeSwingRadius"); } + float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeDamageImpulse"); } + UAnimMontage* WeaponMesh3PReloadAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PReloadAnim"); } + USoundCue* EquipSoundField() { return *GetNativePointerField(this, "AShooterWeapon.EquipSound"); } + USoundCue* UnequipSoundField() { return *GetNativePointerField(this, "AShooterWeapon.UnequipSound"); } + UAnimMontage* WeaponMesh3PFireAnimField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponMesh3PFireAnim"); } + TSubclassOf& WeaponAttackDataClassField() { return *GetNativePointerField*>(this, "AShooterWeapon.WeaponAttackDataClass"); } + TSubclassOf& AIWeaponAttackDataClassField() { return *GetNativePointerField*>(this, "AShooterWeapon.AIWeaponAttackDataClass"); } + UWeaponAttackData* CurrentWeaponAttackDataField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentWeaponAttackData"); } + UWeaponAttackData* CurrentShieldAttackDataField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentShieldAttackData"); } + TArray>& WeaponAttackTypeOverrideField() { return *GetNativePointerField>*>(this, "AShooterWeapon.WeaponAttackTypeOverride"); } + TArray& WeaponAttackIndexOverrideField() { return *GetNativePointerField*>(this, "AShooterWeapon.WeaponAttackIndexOverride"); } + float& FPVMoveOffscreenWhenTurningMaxMoveWeaponSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMaxMoveWeaponSpeed"); } + float& FPVMoveOffscreenWhenTurningMinMoveWeaponSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMinMoveWeaponSpeed"); } + float& FPVMoveOffscreenWhenTurningMinViewRotSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMinViewRotSpeed"); } + float& FPVMoveOffscreenWhenTurningMaxViewRotSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMaxViewRotSpeed"); } + float& FPVMoveOffscreenIdleRestoreIntervalField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenIdleRestoreInterval"); } + float& FPVMoveOffscreenIdleInCombatRestoreIntervalField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenIdleInCombatRestoreInterval"); } + float& FPVMoveOffscreenIdleRestoreSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenIdleRestoreSpeed"); } + float& FPVMoveOffscreenWhenTurningMaxOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningMaxOffset"); } + float& FPVMoveOffscreenWhenTurningInCombatMaxOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMoveOffscreenWhenTurningInCombatMaxOffset"); } + long double& FPVStoppedTurningTimeField() { return *GetNativePointerField(this, "AShooterWeapon.FPVStoppedTurningTime"); } + float& ItemDestructionUnequipWeaponDelayField() { return *GetNativePointerField(this, "AShooterWeapon.ItemDestructionUnequipWeaponDelay"); } + EWeaponState::Type& CurrentStateField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentState"); } + long double& LastFireTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastFireTime"); } + int& CurrentAmmoField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentAmmo"); } + int& CurrentAmmoInClipField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentAmmoInClip"); } + bool& bReplicateCurrentAmmoInClipToNonOwnersField() { return *GetNativePointerField(this, "AShooterWeapon.bReplicateCurrentAmmoInClipToNonOwners"); } + bool& bUseBPAdjustAmmoPerShotField() { return *GetNativePointerField(this, "AShooterWeapon.bUseBPAdjustAmmoPerShot"); } + FName& FPVAccessoryToggleComponentField() { return *GetNativePointerField(this, "AShooterWeapon.FPVAccessoryToggleComponent"); } + FName& TPVAccessoryToggleComponentField() { return *GetNativePointerField(this, "AShooterWeapon.TPVAccessoryToggleComponent"); } + float& TimeToAutoReloadField() { return *GetNativePointerField(this, "AShooterWeapon.TimeToAutoReload"); } + USoundBase* ToggleAccessorySoundField() { return *GetNativePointerField(this, "AShooterWeapon.ToggleAccessorySound"); } + float& AutoAimRangeField() { return *GetNativePointerField(this, "AShooterWeapon.AutoAimRange"); } + float& MaxAngleToActivateAutoAimField() { return *GetNativePointerField(this, "AShooterWeapon.MaxAngleToActivateAutoAim"); } + float& LookForAutoAimTargetDurationField() { return *GetNativePointerField(this, "AShooterWeapon.LookForAutoAimTargetDuration"); } + float& DodgeAutoAimMinSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimMinSpeed"); } + float& DodgeAutoAimMaxSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimMaxSpeed"); } + float& DodgeAutoAimDurationField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimDuration"); } + float& DodgeAutoAimMaxDistanceForSpeedAdjustementField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimMaxDistanceForSpeedAdjustement"); } + float& DodgeAutoAimMinDistanceForSpeedAdjustementField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimMinDistanceForSpeedAdjustement"); } + float& DodgeAutoAimRangeField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeAutoAimRange"); } + float& TimeBeforeDodgingEndsToStartNextAttackField() { return *GetNativePointerField(this, "AShooterWeapon.TimeBeforeDodgingEndsToStartNextAttack"); } + float& TimeBeforeDodgingEndsToStoreNextAttackField() { return *GetNativePointerField(this, "AShooterWeapon.TimeBeforeDodgingEndsToStoreNextAttack"); } + float& TimeBeforeAttackEndsToStoreDodgingField() { return *GetNativePointerField(this, "AShooterWeapon.TimeBeforeAttackEndsToStoreDodging"); } + AActor* AutoAimTargetField() { return *GetNativePointerField(this, "AShooterWeapon.AutoAimTarget"); } + float& LockOnAimMinSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnAimMinSpeed"); } + float& LockOnAimMaxSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnAimMaxSpeed"); } + float& LockOnAimMaxDistanceForSpeedAdjustementField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnAimMaxDistanceForSpeedAdjustement"); } + float& LockOnAimMinDistanceForSpeedAdjustementField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnAimMinDistanceForSpeedAdjustement"); } + long double& LastTimeStartedLookingForAimTargetField() { return *GetNativePointerField(this, "AShooterWeapon.LastTimeStartedLookingForAimTarget"); } + float& DodgeMeleeDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeMeleeDamageMultiplier"); } + float& DodgeMeleeImpulseMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeMeleeImpulseMultiplier"); } + long double& LastAttackTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastAttackTime"); } + int& FiredLastNoAmmoShotField() { return *GetNativePointerField(this, "AShooterWeapon.FiredLastNoAmmoShot"); } + long double& LastNotifyShotTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastNotifyShotTime"); } + TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeDamageType"); } + int& CurrentWeaponAttackIndexField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentWeaponAttackIndex"); } + int& LastWeaponAttackIndexField() { return *GetNativePointerField(this, "AShooterWeapon.LastWeaponAttackIndex"); } + int& NextWeaponAttackIndexField() { return *GetNativePointerField(this, "AShooterWeapon.NextWeaponAttackIndex"); } + FVector& StoredDodgeDirectionField() { return *GetNativePointerField(this, "AShooterWeapon.StoredDodgeDirection"); } + FVector& VRTargetingModelOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.VRTargetingModelOffset"); } + FVector& VRTargetingAimOriginOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.VRTargetingAimOriginOffset"); } + UMaterialInterface* ScopeOverlayMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeOverlayMI"); } + UMaterialInterface* ScopeCrosshairMIField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairMI"); } + float& ScopeCrosshairSizeField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairSize"); } + FName& ScopeCrosshairColorParameterField() { return *GetNativePointerField(this, "AShooterWeapon.ScopeCrosshairColorParameter"); } + float& MinItemDurabilityPercentageForShotField() { return *GetNativePointerField(this, "AShooterWeapon.MinItemDurabilityPercentageForShot"); } + float& OverrideTargetingFOVField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideTargetingFOV"); } + float& TargetingDelayTimeField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingDelayTime"); } + float& TargetingFOVInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingFOVInterpSpeed"); } + float& AimDriftYawAngleField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftYawAngle"); } + float& AimDriftPitchAngleField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftPitchAngle"); } + float& AimDriftYawFrequencyField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftYawFrequency"); } + float& AimDriftPitchFrequencyField() { return *GetNativePointerField(this, "AShooterWeapon.AimDriftPitchFrequency"); } + float& AttackSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.AttackSpeedMultiplier"); } + float& MeleeHitItemDestroyWeightMinField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeHitItemDestroyWeightMin"); } + float& MeleeHitItemDestroyWeightMaxField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeHitItemDestroyWeightMax"); } + float& GlobalFireCameraShakeScaleField() { return *GetNativePointerField(this, "AShooterWeapon.GlobalFireCameraShakeScale"); } + float& DurabilityCostToEquipField() { return *GetNativePointerField(this, "AShooterWeapon.DurabilityCostToEquip"); } + float& PassiveDurabilityCostPerIntervalField() { return *GetNativePointerField(this, "AShooterWeapon.PassiveDurabilityCostPerInterval"); } + float& PassiveDurabilityCostIntervalField() { return *GetNativePointerField(this, "AShooterWeapon.PassiveDurabilityCostInterval"); } + float& GlobalFireCameraShakeScaleTargetingField() { return *GetNativePointerField(this, "AShooterWeapon.GlobalFireCameraShakeScaleTargeting"); } + float& MeleeCameraShakeSpeedScaleField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeCameraShakeSpeedScale"); } + float& ReloadCameraShakeSpeedScaleField() { return *GetNativePointerField(this, "AShooterWeapon.ReloadCameraShakeSpeedScale"); } + float& MeleeConsumesStaminaField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeConsumesStamina"); } + float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "AShooterWeapon.HypoThermiaInsulation"); } + float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "AShooterWeapon.HyperThermiaInsulation"); } + float& InsulationRangeField() { return *GetNativePointerField(this, "AShooterWeapon.InsulationRange"); } + long double& LastDurabilityConsumptionTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastDurabilityConsumptionTime"); } + bool& bLastMeleeHitField() { return *GetNativePointerField(this, "AShooterWeapon.bLastMeleeHit"); } + bool& bLastMeleeHitStationaryField() { return *GetNativePointerField(this, "AShooterWeapon.bLastMeleeHitStationary"); } + bool& bClientAlreadyReloadedField() { return *GetNativePointerField(this, "AShooterWeapon.bClientAlreadyReloaded"); } + float& AutoReloadTimerField() { return *GetNativePointerField(this, "AShooterWeapon.AutoReloadTimer"); } + bool& bConsumedDurabilityForThisMeleeHitField() { return *GetNativePointerField(this, "AShooterWeapon.bConsumedDurabilityForThisMeleeHit"); } + USoundCue* TargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.TargetingSound"); } + USoundCue* UntargetingSoundField() { return *GetNativePointerField(this, "AShooterWeapon.UntargetingSound"); } + float& FPVMeleeTraceFXRangeField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMeleeTraceFXRange"); } + TSubclassOf& MeleeAttackUsableHarvestDamageTypeField() { return *GetNativePointerField*>(this, "AShooterWeapon.MeleeAttackUsableHarvestDamageType"); } + float& MeleeAttackHarvetUsableComponentsRadiusField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeAttackHarvetUsableComponentsRadius"); } + float& MeleeAttackUsableHarvestDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeAttackUsableHarvestDamageMultiplier"); } + FieldArray bColorizeRegionsField() { return { this, "AShooterWeapon.bColorizeRegions" }; } + UAnimMontage* TPVForcePlayAnimField() { return *GetNativePointerField(this, "AShooterWeapon.TPVForcePlayAnim"); } + bool& bPreventOpeningInventoryField() { return *GetNativePointerField(this, "AShooterWeapon.bPreventOpeningInventory"); } + bool& bAllowUseOnSeatingStructureField() { return *GetNativePointerField(this, "AShooterWeapon.bAllowUseOnSeatingStructure"); } + bool& bOnlyUseOnSeatingStructureField() { return *GetNativePointerField(this, "AShooterWeapon.bOnlyUseOnSeatingStructure"); } + bool& bBPDoClientCheckCanFireField() { return *GetNativePointerField(this, "AShooterWeapon.bBPDoClientCheckCanFire"); } + bool& bRestrictTPVCameraYawField() { return *GetNativePointerField(this, "AShooterWeapon.bRestrictTPVCameraYaw"); } + bool& bForceRestrictSeatedTPVCameraYawField() { return *GetNativePointerField(this, "AShooterWeapon.bForceRestrictSeatedTPVCameraYaw"); } + float& TPVCameraYawRangeField() { return *GetNativePointerField(this, "AShooterWeapon.TPVCameraYawRange"); } + bool& bFoceSimulatedTickField() { return *GetNativePointerField(this, "AShooterWeapon.bFoceSimulatedTick"); } + bool& bWasLastFireFromGamePadField() { return *GetNativePointerField(this, "AShooterWeapon.bWasLastFireFromGamePad"); } + bool& bDisableWeaponCrosshairField() { return *GetNativePointerField(this, "AShooterWeapon.bDisableWeaponCrosshair"); } + UStaticMesh* DyePreviewMeshOverrideSMField() { return *GetNativePointerField(this, "AShooterWeapon.DyePreviewMeshOverrideSM"); } + bool& bBPOverrideAspectRatioField() { return *GetNativePointerField(this, "AShooterWeapon.bBPOverrideAspectRatio"); } + bool& bForceAllowMountedWeaponryField() { return *GetNativePointerField(this, "AShooterWeapon.bForceAllowMountedWeaponry"); } + float& FireCameraShakeSpreadScaleExponentField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleExponent"); } + float& FireCameraShakeSpreadScaleExponentLessThanField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleExponentLessThan"); } + float& FireCameraShakeSpreadScaleMultiplierLessThanField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleMultiplierLessThan"); } + float& FireCameraShakeSpreadScaleMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.FireCameraShakeSpreadScaleMultiplier"); } + bool& bUseFireCameraShakeScaleField() { return *GetNativePointerField(this, "AShooterWeapon.bUseFireCameraShakeScale"); } + bool& bForceTickWithNoControllerField() { return *GetNativePointerField(this, "AShooterWeapon.bForceTickWithNoController"); } + float& CurrentFiringSpreadField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentFiringSpread"); } + TSubclassOf& ScopedBuffField() { return *GetNativePointerField*>(this, "AShooterWeapon.ScopedBuff"); } + TWeakObjectPtr& MyScopedBuffField() { return *GetNativePointerField*>(this, "AShooterWeapon.MyScopedBuff"); } + UAnimSequence* OverrideTPVShieldHeldAnimationField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideTPVShieldHeldAnimation"); } + UAnimSequence* OverrideTPVShieldAnimationField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideTPVShieldAnimation"); } + bool& bAllowTargetingDuringMeleeSwingField() { return *GetNativePointerField(this, "AShooterWeapon.bAllowTargetingDuringMeleeSwing"); } + FVector& FPVMuzzleLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.FPVMuzzleLocationOffset"); } + FVector& TPVMuzzleLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.TPVMuzzleLocationOffset"); } + bool& bForceTPV_EquippedWhileRidingField() { return *GetNativePointerField(this, "AShooterWeapon.bForceTPV_EquippedWhileRiding"); } + bool& bCutsEnemyGrapplingCableField() { return *GetNativePointerField(this, "AShooterWeapon.bCutsEnemyGrapplingCable"); } + float& DraggingOffsetInterpField() { return *GetNativePointerField(this, "AShooterWeapon.DraggingOffsetInterp"); } + bool& bForceTPVCameraOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.bForceTPVCameraOffset"); } + TArray& CurrentMeleeHitsField() { return *GetNativePointerField*>(this, "AShooterWeapon.CurrentMeleeHits"); } + TArray& CharacterHitsFromClientField() { return *GetNativePointerField*>(this, "AShooterWeapon.CharacterHitsFromClient"); } + float& timeToRecoverAfterHittingBlockField() { return *GetNativePointerField(this, "AShooterWeapon.timeToRecoverAfterHittingBlock"); } + float& timeToRecoverAfterReceivingBreakAttackField() { return *GetNativePointerField(this, "AShooterWeapon.timeToRecoverAfterReceivingBreakAttack"); } + float& StandardBlockingMaxAngleField() { return *GetNativePointerField(this, "AShooterWeapon.StandardBlockingMaxAngle"); } + float& SideBlockingMaxAngleField() { return *GetNativePointerField(this, "AShooterWeapon.SideBlockingMaxAngle"); } + float& BaseShieldBreakingPowerField() { return *GetNativePointerField(this, "AShooterWeapon.BaseShieldBreakingPower"); } + float& DefaultStaggerTimeWhenBreakingShieldDefenseField() { return *GetNativePointerField(this, "AShooterWeapon.DefaultStaggerTimeWhenBreakingShieldDefense"); } + float& WeaponBlockingAttackPowerField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponBlockingAttackPower"); } + float& WeaponBlockingDefensePowerField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponBlockingDefensePower"); } + float& NPCBaseBlockDurationField() { return *GetNativePointerField(this, "AShooterWeapon.NPCBaseBlockDuration"); } + TArray& AIAttackInfosField() { return *GetNativePointerField*>(this, "AShooterWeapon.AIAttackInfos"); } + float& AIDestinationOffsetOverrideField() { return *GetNativePointerField(this, "AShooterWeapon.AIDestinationOffsetOverride"); } + float& AIOrbitTargetRangeMinOverrideField() { return *GetNativePointerField(this, "AShooterWeapon.AIOrbitTargetRangeMinOverride"); } + float& AIOrbitTargetSpreadOverrideField() { return *GetNativePointerField(this, "AShooterWeapon.AIOrbitTargetSpreadOverride"); } + float& AIReloadMinPlayrateField() { return *GetNativePointerField(this, "AShooterWeapon.AIReloadMinPlayrate"); } + float& AIReloadMaxPlayrateField() { return *GetNativePointerField(this, "AShooterWeapon.AIReloadMaxPlayrate"); } + long double& LastMoveForwardInputTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastMoveForwardInputTime"); } + long double& LastMoveRightInputTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastMoveRightInputTime"); } + long double& LastMoveForwardInputZeroTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastMoveForwardInputZeroTime"); } + long double& LastMoveRightInputZeroTimeField() { return *GetNativePointerField(this, "AShooterWeapon.LastMoveRightInputZeroTime"); } + long double& DodgeStartTimeField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeStartTime"); } + FVector& DodgeDirectionField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeDirection"); } + float& DodgeVelocityField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeVelocity"); } + float& DoubleTapToDodgeTimeWindowField() { return *GetNativePointerField(this, "AShooterWeapon.DoubleTapToDodgeTimeWindow"); } + float& DodgeDurationField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeDuration"); } + float& DodgeCooldownField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeCooldown"); } + float& DodgeStaminaCostField() { return *GetNativePointerField(this, "AShooterWeapon.DodgeStaminaCost"); } + float& FastAttackWindowField() { return *GetNativePointerField(this, "AShooterWeapon.FastAttackWindow"); } + int& ControlLimitedBuffCounterField() { return *GetNativePointerField(this, "AShooterWeapon.ControlLimitedBuffCounter"); } + TSubclassOf& ControlLimitedBuffField() { return *GetNativePointerField*>(this, "AShooterWeapon.ControlLimitedBuff"); } + APrimalBuff* MyControlLimitedBuffField() { return *GetNativePointerField(this, "AShooterWeapon.MyControlLimitedBuff"); } + long double& MeleeStepImpulseStartTimeField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeStepImpulseStartTime"); } + FVector& MeleeStepImpulseDirectionField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeStepImpulseDirection"); } + int& DebugMeleeHitsField() { return *GetNativePointerField(this, "AShooterWeapon.DebugMeleeHits"); } + float& MeleeStepImpulseCollisionCheckDistanceField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeStepImpulseCollisionCheckDistance"); } + FieldArray DirectionalSpeedMultipliersField() { return { this, "AShooterWeapon.DirectionalSpeedMultipliers" }; } + float& NPCSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.NPCSpeedMultiplier"); } + float& WeaponRunSpeedModifierField() { return *GetNativePointerField(this, "AShooterWeapon.WeaponRunSpeedModifier"); } + FVector& MeleeStepImpulseStartLocationField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeStepImpulseStartLocation"); } + float& BlockedAttackerRunSpeedModifierField() { return *GetNativePointerField(this, "AShooterWeapon.BlockedAttackerRunSpeedModifier"); } + float& RecoilRunSpeedModifierField() { return *GetNativePointerField(this, "AShooterWeapon.RecoilRunSpeedModifier"); } + float& BaseSpeedModifierField() { return *GetNativePointerField(this, "AShooterWeapon.BaseSpeedModifier"); } + float& TimeBeforeRecoilEndsToAllowNormalSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.TimeBeforeRecoilEndsToAllowNormalSpeed"); } + TArray& DirectionalDodgeAllowedField() { return *GetNativePointerField*>(this, "AShooterWeapon.DirectionalDodgeAllowed"); } + float& BackStabDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.BackStabDamageMultiplier"); } + int& successiveHitsCounterField() { return *GetNativePointerField(this, "AShooterWeapon.successiveHitsCounter"); } + float& SuccessiveHitsDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.SuccessiveHitsDamageMultiplier"); } + FVector& RibbonTrailScaleField() { return *GetNativePointerField(this, "AShooterWeapon.RibbonTrailScale"); } + long double& TimeForNextValidAttackField() { return *GetNativePointerField(this, "AShooterWeapon.TimeForNextValidAttack"); } + float& MeleeHitSphereTraceRadiusMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeHitSphereTraceRadiusMultiplier"); } + int& LastAttemptedMeleeAttackField() { return *GetNativePointerField(this, "AShooterWeapon.LastAttemptedMeleeAttack"); } + float& TimeSinceChargeRunningStartedField() { return *GetNativePointerField(this, "AShooterWeapon.TimeSinceChargeRunningStarted"); } + float& AllowChargeRunInTimeField() { return *GetNativePointerField(this, "AShooterWeapon.AllowChargeRunInTime"); } + long double& TimeRunningStartedField() { return *GetNativePointerField(this, "AShooterWeapon.TimeRunningStarted"); } + float& ChargeRunningSpeedMinField() { return *GetNativePointerField(this, "AShooterWeapon.ChargeRunningSpeedMin"); } + float& ChargeRunningSpeedMaxField() { return *GetNativePointerField(this, "AShooterWeapon.ChargeRunningSpeedMax"); } + float& ChargeRunningAccelerationTimeField() { return *GetNativePointerField(this, "AShooterWeapon.ChargeRunningAccelerationTime"); } + float& ChargeRunningSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.ChargeRunningSpeed"); } + float& TimeToCancelChargeRunWithoutCancellingRunningField() { return *GetNativePointerField(this, "AShooterWeapon.TimeToCancelChargeRunWithoutCancellingRunning"); } + float& ChargeRunningRotationSpeedModifierField() { return *GetNativePointerField(this, "AShooterWeapon.ChargeRunningRotationSpeedModifier"); } + float& InputRotationLimitDeltaTimeMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.InputRotationLimitDeltaTimeMultiplier"); } + float& HitStaggerDurationField() { return *GetNativePointerField(this, "AShooterWeapon.HitStaggerDuration"); } + TArray& RecoveryRateValuesOverrideField() { return *GetNativePointerField*>(this, "AShooterWeapon.RecoveryRateValuesOverride"); } + FVector& Mesh1PSecondaryLocationOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.Mesh1PSecondaryLocationOffset"); } + float& InCombatFOVIncreaseField() { return *GetNativePointerField(this, "AShooterWeapon.InCombatFOVIncrease"); } + float& NonStepImpulsingCameraShakeScaleField() { return *GetNativePointerField(this, "AShooterWeapon.NonStepImpulsingCameraShakeScale"); } + long double& TimeForNextValidAttackLeftField() { return *GetNativePointerField(this, "AShooterWeapon.TimeForNextValidAttackLeft"); } + UPrimalItem* AssociatedPrimalItemSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedPrimalItemSecondary"); } + FName& OverrideAttachPointSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.OverrideAttachPointSecondary"); } + FItemNetInfo& AssociatedItemNetInfoSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.AssociatedItemNetInfoSecondary"); } + int& CurrentAmmoSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentAmmoSecondary"); } + int& CurrentAmmoInClipSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentAmmoInClipSecondary"); } + int& BurstAttackIndexField() { return *GetNativePointerField(this, "AShooterWeapon.BurstAttackIndex"); } + long double& LastFireTimeSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.LastFireTimeSecondary"); } + EWeaponState::Type& CurrentStateSecondaryField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentStateSecondary"); } + float& TimeBeforeEquipEndsToAllowShootingField() { return *GetNativePointerField(this, "AShooterWeapon.TimeBeforeEquipEndsToAllowShooting"); } + long double& LastTimeSwitchedToNextLoadedWeaponField() { return *GetNativePointerField(this, "AShooterWeapon.LastTimeSwitchedToNextLoadedWeapon"); } + long double& LastTimeStartedCustomFPVOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.LastTimeStartedCustomFPVOffset"); } + FVector& CurrentCustomFPVOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.CurrentCustomFPVOffset"); } + FVector& CustomFPVTargetOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.CustomFPVTargetOffset"); } + float& CustomFPVOffsetInterpDurationField() { return *GetNativePointerField(this, "AShooterWeapon.CustomFPVOffsetInterpDuration"); } + float& CustomFPVOffsetInterpSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.CustomFPVOffsetInterpSpeed"); } + FVector& CanceledReloadFPVOffsetField() { return *GetNativePointerField(this, "AShooterWeapon.CanceledReloadFPVOffset"); } + FString& TutorialHintStringField() { return *GetNativePointerField(this, "AShooterWeapon.TutorialHintString"); } + float& SwitchToNextLoadedWeaponCooldownField() { return *GetNativePointerField(this, "AShooterWeapon.SwitchToNextLoadedWeaponCooldown"); } + float& AIMinLevelProjectileAimErrorField() { return *GetNativePointerField(this, "AShooterWeapon.AIMinLevelProjectileAimError"); } + float& AIMaxLevelProjectileAimErrorField() { return *GetNativePointerField(this, "AShooterWeapon.AIMaxLevelProjectileAimError"); } + float& NPCBasicAttackAOEDistanceMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.NPCBasicAttackAOEDistanceMultiplier"); } + float& NPCNonAimingAttackAOEDistanceMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.NPCNonAimingAttackAOEDistanceMultiplier"); } + float& NPCStepImpulseLeadingVelocityMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.NPCStepImpulseLeadingVelocityMultiplier"); } + float& NPCStepImpulseLeadingVelocityMaxExtraSpeedField() { return *GetNativePointerField(this, "AShooterWeapon.NPCStepImpulseLeadingVelocityMaxExtraSpeed"); } + float& NPCWeaponAttackRangeMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.NPCWeaponAttackRangeMultiplier"); } + float& MeleeComboHarvestingDamageMultiplierField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeComboHarvestingDamageMultiplier"); } + float& MeleeComboHarvestingDamageMultiplierMaxField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeComboHarvestingDamageMultiplierMax"); } + float& MeleeComboHarvestingDamageMultiplierGainPerHitField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeComboHarvestingDamageMultiplierGainPerHit"); } + float& MeleeComboHarvestingDamageMultiplierTimeUntilResetField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeComboHarvestingDamageMultiplierTimeUntilReset"); } + APrimalCharacter* FastAttackCounterTargetField() { return *GetNativePointerField(this, "AShooterWeapon.FastAttackCounterTarget"); } + USoundCue* MeleeComboHarvestingDamageMultiplierSoundField() { return *GetNativePointerField(this, "AShooterWeapon.MeleeComboHarvestingDamageMultiplierSound"); } + TArray& StoredExtraAttacksField() { return *GetNativePointerField*>(this, "AShooterWeapon.StoredExtraAttacks"); } + TArray AnimsOverrideFromField() { return *GetNativePointerField*>(this, "AShooterWeapon.AnimsOverrideFrom"); } + TArray AnimOverrideToField() { return *GetNativePointerField*>(this, "AShooterWeapon.AnimOverrideTo"); } + FName& LeftHandIkSkeletalMeshSocketNameField() { return *GetNativePointerField(this, "AShooterWeapon.LeftHandIkSkeletalMeshSocketName"); } + FName& RightHandIkSkeletalMeshSocketNameField() { return *GetNativePointerField(this, "AShooterWeapon.RightHandIkSkeletalMeshSocketName"); } + TArray>& WeaponDamageTypesWhichThisWeaponBlocksField() { return *GetNativePointerField>*>(this, "AShooterWeapon.WeaponDamageTypesWhichThisWeaponBlocks"); } + float& LockOnCheckRangeField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnCheckRange"); } + float& LockOnTraceRadiusField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnTraceRadius"); } + float& LockOnSwitchSensitivityField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnSwitchSensitivity"); } + float& LockOnAttackAutoLockRangeField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnAttackAutoLockRange"); } + UTexture2D* LockOnIconField() { return *GetNativePointerField(this, "AShooterWeapon.LockOnIcon"); } + float& FPVCameraMinPitchField() { return *GetNativePointerField(this, "AShooterWeapon.FPVCameraMinPitch"); } + float& FPVCameraMaxPitchField() { return *GetNativePointerField(this, "AShooterWeapon.FPVCameraMaxPitch"); } + ECombatChangeReason::Type& CombatChangedForReasonField() { return *GetNativePointerField(this, "AShooterWeapon.CombatChangedForReason"); } + + // Bit fields + + BitFieldValue bUseDinoRangeForTooltip() { return { this, "AShooterWeapon.bUseDinoRangeForTooltip" }; } + BitFieldValue bIsPerformingAttack() { return { this, "AShooterWeapon.bIsPerformingAttack" }; } + BitFieldValue bIsPerformingAttackSwing() { return { this, "AShooterWeapon.bIsPerformingAttackSwing" }; } + BitFieldValue bIsProcessingInput() { return { this, "AShooterWeapon.bIsProcessingInput" }; } + BitFieldValue bUseBPCanStartAttack() { return { this, "AShooterWeapon.bUseBPCanStartAttack" }; } + BitFieldValue bAllowAutoAim() { return { this, "AShooterWeapon.bAllowAutoAim" }; } + BitFieldValue bIsAutoAimActive() { return { this, "AShooterWeapon.bIsAutoAimActive" }; } + BitFieldValue bWeaponUsesAttackData() { return { this, "AShooterWeapon.bWeaponUsesAttackData" }; } + BitFieldValue bWeaponUsesShieldAttackData() { return { this, "AShooterWeapon.bWeaponUsesShieldAttackData" }; } + BitFieldValue bAllowFastAttack() { return { this, "AShooterWeapon.bAllowFastAttack" }; } + BitFieldValue bAllowFastAttackForBothSides() { return { this, "AShooterWeapon.bAllowFastAttackForBothSides" }; } + BitFieldValue bRotationInputDisablesAutoAim() { return { this, "AShooterWeapon.bRotationInputDisablesAutoAim" }; } + BitFieldValue bTimeForNextAttackIsAbsolute() { return { this, "AShooterWeapon.bTimeForNextAttackIsAbsolute" }; } + BitFieldValue bDodgeRequiresWalking() { return { this, "AShooterWeapon.bDodgeRequiresWalking" }; } + BitFieldValue bUseInterpolatedLocation() { return { this, "AShooterWeapon.bUseInterpolatedLocation" }; } + BitFieldValue bHasStartedChargeRunning() { return { this, "AShooterWeapon.bHasStartedChargeRunning" }; } + BitFieldValue bAllowJumpWhileRunning() { return { this, "AShooterWeapon.bAllowJumpWhileRunning" }; } + BitFieldValue bUseBPGetAimOffsets() { return { this, "AShooterWeapon.bUseBPGetAimOffsets" }; } + BitFieldValue bUseBPModifyAimOffset() { return { this, "AShooterWeapon.bUseBPModifyAimOffset" }; } + BitFieldValue bPendingSwitchPrimary() { return { this, "AShooterWeapon.bPendingSwitchPrimary" }; } + BitFieldValue bPendingSwitchSecondary() { return { this, "AShooterWeapon.bPendingSwitchSecondary" }; } + BitFieldValue bHideCrosshairWhileReloading() { return { this, "AShooterWeapon.bHideCrosshairWhileReloading" }; } + BitFieldValue bAllowShipSteering() { return { this, "AShooterWeapon.bAllowShipSteering" }; } + BitFieldValue bAllowEquippedOnSteeringWheel() { return { this, "AShooterWeapon.bAllowEquippedOnSteeringWheel" }; } + BitFieldValue bFPVUsingImmobilizedTransform() { return { this, "AShooterWeapon.bFPVUsingImmobilizedTransform" }; } + BitFieldValue bOnlyUseFirstMeleeAnimWithShield() { return { this, "AShooterWeapon.bOnlyUseFirstMeleeAnimWithShield" }; } + BitFieldValue bForceShowCrosshairWhileFiring() { return { this, "AShooterWeapon.bForceShowCrosshairWhileFiring" }; } + BitFieldValue bIsFireActivelyHeld() { return { this, "AShooterWeapon.bIsFireActivelyHeld" }; } + BitFieldValue bCheckCanTargetToStartTargeting() { return { this, "AShooterWeapon.bCheckCanTargetToStartTargeting" }; } + BitFieldValue bAllowSubmergedFiring() { return { this, "AShooterWeapon.bAllowSubmergedFiring" }; } + BitFieldValue bIsInMeleeSwing() { return { this, "AShooterWeapon.bIsInMeleeSwing" }; } + BitFieldValue bDoMeleeSwing() { return { this, "AShooterWeapon.bDoMeleeSwing" }; } + BitFieldValue bPlayingCameraAnimFPV() { return { this, "AShooterWeapon.bPlayingCameraAnimFPV" }; } + BitFieldValue bIsWeaponBreaking() { return { this, "AShooterWeapon.bIsWeaponBreaking" }; } + BitFieldValue bHideFPVMesh() { return { this, "AShooterWeapon.bHideFPVMesh" }; } + BitFieldValue bForceTargeting() { return { this, "AShooterWeapon.bForceTargeting" }; } + BitFieldValue bCanAltFire() { return { this, "AShooterWeapon.bCanAltFire" }; } + BitFieldValue bAltFireDoesMeleeAttack() { return { this, "AShooterWeapon.bAltFireDoesMeleeAttack" }; } + BitFieldValue bAltFireDoesNotStopFire() { return { this, "AShooterWeapon.bAltFireDoesNotStopFire" }; } + BitFieldValue bHideDamageSourceFromLogs() { return { this, "AShooterWeapon.bHideDamageSourceFromLogs" }; } + BitFieldValue bUseTargetingFireAnim() { return { this, "AShooterWeapon.bUseTargetingFireAnim" }; } + BitFieldValue bUseTargetingReloadAnim() { return { this, "AShooterWeapon.bUseTargetingReloadAnim" }; } + BitFieldValue bUsePartialReloadAnim() { return { this, "AShooterWeapon.bUsePartialReloadAnim" }; } + BitFieldValue bUseEquipNoAmmoClipAnim() { return { this, "AShooterWeapon.bUseEquipNoAmmoClipAnim" }; } + BitFieldValue bUseUnequipNoAmmoClipAnim() { return { this, "AShooterWeapon.bUseUnequipNoAmmoClipAnim" }; } + BitFieldValue bUseMeleeNoAmmoClipAnim() { return { this, "AShooterWeapon.bUseMeleeNoAmmoClipAnim" }; } + BitFieldValue bHideLeftArmFPV() { return { this, "AShooterWeapon.bHideLeftArmFPV" }; } + BitFieldValue bLoopedMuzzleFX() { return { this, "AShooterWeapon.bLoopedMuzzleFX" }; } + BitFieldValue bMeleeHitUseMuzzleFX() { return { this, "AShooterWeapon.bMeleeHitUseMuzzleFX" }; } + BitFieldValue bUsePostUpdateTickForFPVParticles() { return { this, "AShooterWeapon.bUsePostUpdateTickForFPVParticles" }; } + BitFieldValue bFPVMoveOffscreenWhenTurning() { return { this, "AShooterWeapon.bFPVMoveOffscreenWhenTurning" }; } + BitFieldValue bReloadAnimForceTickPoseOnServer() { return { this, "AShooterWeapon.bReloadAnimForceTickPoseOnServer" }; } + BitFieldValue bLoopedFireSound() { return { this, "AShooterWeapon.bLoopedFireSound" }; } + BitFieldValue bAllowTargetingWhileReloading() { return { this, "AShooterWeapon.bAllowTargetingWhileReloading" }; } + BitFieldValue bMeleeHitColorizesStructures() { return { this, "AShooterWeapon.bMeleeHitColorizesStructures" }; } + BitFieldValue bLoopedFireAnim() { return { this, "AShooterWeapon.bLoopedFireAnim" }; } + BitFieldValue bPlayingFireAnim() { return { this, "AShooterWeapon.bPlayingFireAnim" }; } + BitFieldValue bFPVWasTurning() { return { this, "AShooterWeapon.bFPVWasTurning" }; } + BitFieldValue bAutoRefire() { return { this, "AShooterWeapon.bAutoRefire" }; } + BitFieldValue bConsumeAmmoOnUseAmmo() { return { this, "AShooterWeapon.bConsumeAmmoOnUseAmmo" }; } + BitFieldValue bTargetUnTargetWithClick() { return { this, "AShooterWeapon.bTargetUnTargetWithClick" }; } + BitFieldValue bDontActuallyConsumeItemAmmo() { return { this, "AShooterWeapon.bDontActuallyConsumeItemAmmo" }; } + BitFieldValue bBPUseWeaponCanFire() { return { this, "AShooterWeapon.bBPUseWeaponCanFire" }; } + BitFieldValue bIsEquipped() { return { this, "AShooterWeapon.bIsEquipped" }; } + BitFieldValue bWantsToFire() { return { this, "AShooterWeapon.bWantsToFire" }; } + BitFieldValue bWantsToAltFire() { return { this, "AShooterWeapon.bWantsToAltFire" }; } + BitFieldValue bPendingReload() { return { this, "AShooterWeapon.bPendingReload" }; } + BitFieldValue bPendingEquip() { return { this, "AShooterWeapon.bPendingEquip" }; } + BitFieldValue bPendingEquipSecondary() { return { this, "AShooterWeapon.bPendingEquipSecondary" }; } + BitFieldValue bUnequipping() { return { this, "AShooterWeapon.bUnequipping" }; } + BitFieldValue bNotifiedOutOfAmmo() { return { this, "AShooterWeapon.bNotifiedOutOfAmmo" }; } + BitFieldValue bPlayedTargetingSound() { return { this, "AShooterWeapon.bPlayedTargetingSound" }; } + BitFieldValue bUseMeleeRibbonTrailFX() { return { this, "AShooterWeapon.bUseMeleeRibbonTrailFX" }; } + BitFieldValue bUseAmmoOnFiring() { return { this, "AShooterWeapon.bUseAmmoOnFiring" }; } + BitFieldValue bUseAmmoServerOnly() { return { this, "AShooterWeapon.bUseAmmoServerOnly" }; } + BitFieldValue bListenToAppliedForeces() { return { this, "AShooterWeapon.bListenToAppliedForeces" }; } + BitFieldValue bOverrideAimOffsets() { return { this, "AShooterWeapon.bOverrideAimOffsets" }; } + BitFieldValue bHasToggleableAccessory() { return { this, "AShooterWeapon.bHasToggleableAccessory" }; } + BitFieldValue bToggleAccessoryUseAltMuzzleFX() { return { this, "AShooterWeapon.bToggleAccessoryUseAltMuzzleFX" }; } + BitFieldValue bToggleAccessoryUseAltFireSound() { return { this, "AShooterWeapon.bToggleAccessoryUseAltFireSound" }; } + BitFieldValue bUseBPCanToggleAccessory() { return { this, "AShooterWeapon.bUseBPCanToggleAccessory" }; } + BitFieldValue bUseBPOnScoped() { return { this, "AShooterWeapon.bUseBPOnScoped" }; } + BitFieldValue bIsDefaultWeapon() { return { this, "AShooterWeapon.bIsDefaultWeapon" }; } + BitFieldValue bOnlyAllowUseWhenRidingDino() { return { this, "AShooterWeapon.bOnlyAllowUseWhenRidingDino" }; } + BitFieldValue bPrimaryFireDoesMeleeAttack() { return { this, "AShooterWeapon.bPrimaryFireDoesMeleeAttack" }; } + BitFieldValue bIsAccessoryActive() { return { this, "AShooterWeapon.bIsAccessoryActive" }; } + BitFieldValue bCanAccessoryBeSetOn() { return { this, "AShooterWeapon.bCanAccessoryBeSetOn" }; } + BitFieldValue bConsumeAmmoItemOnReload() { return { this, "AShooterWeapon.bConsumeAmmoItemOnReload" }; } + BitFieldValue bUseAutoReload() { return { this, "AShooterWeapon.bUseAutoReload" }; } + BitFieldValue bWantsToAutoReload() { return { this, "AShooterWeapon.bWantsToAutoReload" }; } + BitFieldValue bHasPlayedReload() { return { this, "AShooterWeapon.bHasPlayedReload" }; } + BitFieldValue bNetLoopedSimulatingWeaponFire() { return { this, "AShooterWeapon.bNetLoopedSimulatingWeaponFire" }; } + BitFieldValue bClientLoopingSimulateWeaponFire() { return { this, "AShooterWeapon.bClientLoopingSimulateWeaponFire" }; } + BitFieldValue bBPHandleMeleeAttack() { return { this, "AShooterWeapon.bBPHandleMeleeAttack" }; } + BitFieldValue bUseBPShouldDealDamage() { return { this, "AShooterWeapon.bUseBPShouldDealDamage" }; } + BitFieldValue bDoesntUsePrimalItem() { return { this, "AShooterWeapon.bDoesntUsePrimalItem" }; } + BitFieldValue bUseCanAccessoryBeSetOn() { return { this, "AShooterWeapon.bUseCanAccessoryBeSetOn" }; } + BitFieldValue bLoopingSimulateWeaponFire() { return { this, "AShooterWeapon.bLoopingSimulateWeaponFire" }; } + BitFieldValue bFiredFirstBurstShot() { return { this, "AShooterWeapon.bFiredFirstBurstShot" }; } + BitFieldValue bAllowAutoAimOnDodgingTarget() { return { this, "AShooterWeapon.bAllowAutoAimOnDodgingTarget" }; } + BitFieldValue bUnequipRestorePreviousWeaponItem() { return { this, "AShooterWeapon.bUnequipRestorePreviousWeaponItem" }; } + BitFieldValue bClientTriggersHandleFiring() { return { this, "AShooterWeapon.bClientTriggersHandleFiring" }; } + BitFieldValue bAllowUseHarvesting() { return { this, "AShooterWeapon.bAllowUseHarvesting" }; } + BitFieldValue bPreventItemColors() { return { this, "AShooterWeapon.bPreventItemColors" }; } + BitFieldValue bUseBPGetSelectedMeleeAttackAnim() { return { this, "AShooterWeapon.bUseBPGetSelectedMeleeAttackAnim" }; } + BitFieldValue bUseBPWeaponDealDamage() { return { this, "AShooterWeapon.bUseBPWeaponDealDamage" }; } + BitFieldValue bForceOverrideLandedAnimations() { return { this, "AShooterWeapon.bForceOverrideLandedAnimations" }; } + BitFieldValue bIsUsingAltAttack() { return { this, "AShooterWeapon.bIsUsingAltAttack" }; } + BitFieldValue bUseBPOnWeaponAnimPlayedNotify() { return { this, "AShooterWeapon.bUseBPOnWeaponAnimPlayedNotify" }; } + BitFieldValue bUseBPOnBreakingAttackConnects() { return { this, "AShooterWeapon.bUseBPOnBreakingAttackConnects" }; } + BitFieldValue bLastAttackWasAlt() { return { this, "AShooterWeapon.bLastAttackWasAlt" }; } + BitFieldValue bNextAttackIsAlt() { return { this, "AShooterWeapon.bNextAttackIsAlt" }; } + BitFieldValue bNextAttackIsShield() { return { this, "AShooterWeapon.bNextAttackIsShield" }; } + BitFieldValue bWantsToDodgeAfterAttack() { return { this, "AShooterWeapon.bWantsToDodgeAfterAttack" }; } + BitFieldValue bColorCrosshairBasedOnTarget() { return { this, "AShooterWeapon.bColorCrosshairBasedOnTarget" }; } + BitFieldValue bAllowTargeting() { return { this, "AShooterWeapon.bAllowTargeting" }; } + BitFieldValue bAllowDropAndPickup() { return { this, "AShooterWeapon.bAllowDropAndPickup" }; } + BitFieldValue bApplyAimDriftWhenTargeting() { return { this, "AShooterWeapon.bApplyAimDriftWhenTargeting" }; } + BitFieldValue bUseScopeOverlay() { return { this, "AShooterWeapon.bUseScopeOverlay" }; } + BitFieldValue bHideFPVMeshWhileTargeting() { return { this, "AShooterWeapon.bHideFPVMeshWhileTargeting" }; } + BitFieldValue bGamepadRightIsSecondaryAction() { return { this, "AShooterWeapon.bGamepadRightIsSecondaryAction" }; } + BitFieldValue bGamepadLeftIsPrimaryFire() { return { this, "AShooterWeapon.bGamepadLeftIsPrimaryFire" }; } + BitFieldValue bDirectPrimaryFireToAltFire() { return { this, "AShooterWeapon.bDirectPrimaryFireToAltFire" }; } + BitFieldValue bCanFire() { return { this, "AShooterWeapon.bCanFire" }; } + BitFieldValue bForceTargetingOnDino() { return { this, "AShooterWeapon.bForceTargetingOnDino" }; } + BitFieldValue bDirectTargetingToPrimaryFire() { return { this, "AShooterWeapon.bDirectTargetingToPrimaryFire" }; } + BitFieldValue bDirectTargetingToAltFire() { return { this, "AShooterWeapon.bDirectTargetingToAltFire" }; } + BitFieldValue bDirectTargetingToSecondaryAction() { return { this, "AShooterWeapon.bDirectTargetingToSecondaryAction" }; } + BitFieldValue bPreventEquippingUnderwater() { return { this, "AShooterWeapon.bPreventEquippingUnderwater" }; } + BitFieldValue bUseTPVWeaponMeshMeleeSockets() { return { this, "AShooterWeapon.bUseTPVWeaponMeshMeleeSockets" }; } + BitFieldValue bTargetingForceTraceFloatingHUD() { return { this, "AShooterWeapon.bTargetingForceTraceFloatingHUD" }; } + BitFieldValue bAllowRunning() { return { this, "AShooterWeapon.bAllowRunning" }; } + BitFieldValue bAllowUseWhileRidingDino() { return { this, "AShooterWeapon.bAllowUseWhileRidingDino" }; } + BitFieldValue bSupportsOffhandShield() { return { this, "AShooterWeapon.bSupportsOffhandShield" }; } + BitFieldValue bMeleeAttackHarvetUsableComponents() { return { this, "AShooterWeapon.bMeleeAttackHarvetUsableComponents" }; } + BitFieldValue bAllowSettingColorizeRegions() { return { this, "AShooterWeapon.bAllowSettingColorizeRegions" }; } + BitFieldValue bAttemptToDyeWithMeleeAttack() { return { this, "AShooterWeapon.bAttemptToDyeWithMeleeAttack" }; } + BitFieldValue bOnlyDamagePawns() { return { this, "AShooterWeapon.bOnlyDamagePawns" }; } + BitFieldValue bUseCharacterMeleeDamageModifier() { return { this, "AShooterWeapon.bUseCharacterMeleeDamageModifier" }; } + BitFieldValue bConsumeZoomInOut() { return { this, "AShooterWeapon.bConsumeZoomInOut" }; } + BitFieldValue bClipScopeInY() { return { this, "AShooterWeapon.bClipScopeInY" }; } + BitFieldValue bScopeFullscreen() { return { this, "AShooterWeapon.bScopeFullscreen" }; } + BitFieldValue bAllowRunningWhileFiring() { return { this, "AShooterWeapon.bAllowRunningWhileFiring" }; } + BitFieldValue bAllowRunningWhileReloading() { return { this, "AShooterWeapon.bAllowRunningWhileReloading" }; } + BitFieldValue bAllowRunningWhileMeleeAttacking() { return { this, "AShooterWeapon.bAllowRunningWhileMeleeAttacking" }; } + BitFieldValue bColorizeMuzzleFX() { return { this, "AShooterWeapon.bColorizeMuzzleFX" }; } + BitFieldValue bForceFirstPersonWhileTargeting() { return { this, "AShooterWeapon.bForceFirstPersonWhileTargeting" }; } + BitFieldValue bUseBPStartEquippedNotify() { return { this, "AShooterWeapon.bUseBPStartEquippedNotify" }; } + BitFieldValue bDirectPrimaryFireToSecondaryAction() { return { this, "AShooterWeapon.bDirectPrimaryFireToSecondaryAction" }; } + BitFieldValue bWeaponUsesCombatState() { return { this, "AShooterWeapon.bWeaponUsesCombatState" }; } + BitFieldValue bOnlyUseShieldInCombatState() { return { this, "AShooterWeapon.bOnlyUseShieldInCombatState" }; } + BitFieldValue bEquipRequiresConscious() { return { this, "AShooterWeapon.bEquipRequiresConscious" }; } + BitFieldValue bOverrideStandingAnim() { return { this, "AShooterWeapon.bOverrideStandingAnim" }; } + BitFieldValue bUseCustomSeatedAnim() { return { this, "AShooterWeapon.bUseCustomSeatedAnim" }; } + BitFieldValue bUseBPForceTPVTargetingAnimation() { return { this, "AShooterWeapon.bUseBPForceTPVTargetingAnimation" }; } + BitFieldValue bForcePreventUseWhileRidingDino() { return { this, "AShooterWeapon.bForcePreventUseWhileRidingDino" }; } + BitFieldValue bUseBPPreventSwitchingWeapon() { return { this, "AShooterWeapon.bUseBPPreventSwitchingWeapon" }; } + BitFieldValue bUseBPCanEquip() { return { this, "AShooterWeapon.bUseBPCanEquip" }; } + BitFieldValue bUseBPRemainEquipped() { return { this, "AShooterWeapon.bUseBPRemainEquipped" }; } + BitFieldValue bIsInDestruction() { return { this, "AShooterWeapon.bIsInDestruction" }; } + BitFieldValue bForceReloadOnDestruction() { return { this, "AShooterWeapon.bForceReloadOnDestruction" }; } + BitFieldValue bUseBPModifyFOV() { return { this, "AShooterWeapon.bUseBPModifyFOV" }; } + BitFieldValue bServerIgnoreCheckCanFire() { return { this, "AShooterWeapon.bServerIgnoreCheckCanFire" }; } + BitFieldValue bPreventEquippingWhileSwimming() { return { this, "AShooterWeapon.bPreventEquippingWhileSwimming" }; } + BitFieldValue bEquippingRequiresWalking() { return { this, "AShooterWeapon.bEquippingRequiresWalking" }; } + BitFieldValue bForceAlwaysPlayEquipAnim() { return { this, "AShooterWeapon.bForceAlwaysPlayEquipAnim" }; } + BitFieldValue bLastMeleeAttacked() { return { this, "AShooterWeapon.bLastMeleeAttacked" }; } + BitFieldValue bPreventReloadingWhileEquipping() { return { this, "AShooterWeapon.bPreventReloadingWhileEquipping" }; } + BitFieldValue bIsWeaponBlockingActive() { return { this, "AShooterWeapon.bIsWeaponBlockingActive" }; } + BitFieldValue bWeaponAllowsBlocking() { return { this, "AShooterWeapon.bWeaponAllowsBlocking" }; } + BitFieldValue bIsInRunningMode() { return { this, "AShooterWeapon.bIsInRunningMode" }; } + BitFieldValue bForceThirdPerson() { return { this, "AShooterWeapon.bForceThirdPerson" }; } + BitFieldValue bWeaponUsesDodge() { return { this, "AShooterWeapon.bWeaponUsesDodge" }; } + BitFieldValue bHadMovingForwardInput() { return { this, "AShooterWeapon.bHadMovingForwardInput" }; } + BitFieldValue bHadMovingRightInput() { return { this, "AShooterWeapon.bHadMovingRightInput" }; } + BitFieldValue bWasLastForwardInputPositive() { return { this, "AShooterWeapon.bWasLastForwardInputPositive" }; } + BitFieldValue bWasLastRightInputPositive() { return { this, "AShooterWeapon.bWasLastRightInputPositive" }; } + BitFieldValue bUseBPDodgeNotifies() { return { this, "AShooterWeapon.bUseBPDodgeNotifies" }; } + BitFieldValue bAllowSwitchBlockingSide() { return { this, "AShooterWeapon.bAllowSwitchBlockingSide" }; } + BitFieldValue bAllowAttackEarlyOuts() { return { this, "AShooterWeapon.bAllowAttackEarlyOuts" }; } + BitFieldValue bProcessedBlock() { return { this, "AShooterWeapon.bProcessedBlock" }; } + BitFieldValue bCancelReloadWhenSwimming() { return { this, "AShooterWeapon.bCancelReloadWhenSwimming" }; } + BitFieldValue bDontUseAttackDataForAltFire() { return { this, "AShooterWeapon.bDontUseAttackDataForAltFire" }; } + BitFieldValue bReloadKeyCancelsReloading() { return { this, "AShooterWeapon.bReloadKeyCancelsReloading" }; } + BitFieldValue bWeaponUsesMeleeStepImpulse() { return { this, "AShooterWeapon.bWeaponUsesMeleeStepImpulse" }; } + BitFieldValue bIsMeleeStepImpulsing() { return { this, "AShooterWeapon.bIsMeleeStepImpulsing" }; } + BitFieldValue bIsMeleeFeetPlanted() { return { this, "AShooterWeapon.bIsMeleeFeetPlanted" }; } + BitFieldValue bUseSuccessiveHitsDamageMultiplier() { return { this, "AShooterWeapon.bUseSuccessiveHitsDamageMultiplier" }; } + BitFieldValue bWeaponUsesChargeRunning() { return { this, "AShooterWeapon.bWeaponUsesChargeRunning" }; } + BitFieldValue bIsChargeRunning() { return { this, "AShooterWeapon.bIsChargeRunning" }; } + BitFieldValue bWeaponUsesDamageMomentum() { return { this, "AShooterWeapon.bWeaponUsesDamageMomentum" }; } + BitFieldValue bPreventTargetPrimalCharacterMultiuseEntries() { return { this, "AShooterWeapon.bPreventTargetPrimalCharacterMultiuseEntries" }; } + BitFieldValue bFoundConsciousCharacter() { return { this, "AShooterWeapon.bFoundConsciousCharacter" }; } + BitFieldValue bDebugDiscreteMeleeHits() { return { this, "AShooterWeapon.bDebugDiscreteMeleeHits" }; } + BitFieldValue bHasStartedDiscreteMeleeHitSweep() { return { this, "AShooterWeapon.bHasStartedDiscreteMeleeHitSweep" }; } + BitFieldValue bMeleeArraysInitialized() { return { this, "AShooterWeapon.bMeleeArraysInitialized" }; } + BitFieldValue bWeaponUsesRunningMode() { return { this, "AShooterWeapon.bWeaponUsesRunningMode" }; } + BitFieldValue bForceFirstPerson() { return { this, "AShooterWeapon.bForceFirstPerson" }; } + BitFieldValue bCanDownBlock() { return { this, "AShooterWeapon.bCanDownBlock" }; } + BitFieldValue bDodgeRequiresShift() { return { this, "AShooterWeapon.bDodgeRequiresShift" }; } + BitFieldValue bStepImpulsingRequiresTarget() { return { this, "AShooterWeapon.bStepImpulsingRequiresTarget" }; } + BitFieldValue bUseInCombatFOV() { return { this, "AShooterWeapon.bUseInCombatFOV" }; } + BitFieldValue bAllowOnLadder() { return { this, "AShooterWeapon.bAllowOnLadder" }; } + BitFieldValue bRestrictFPVCameraPitch() { return { this, "AShooterWeapon.bRestrictFPVCameraPitch" }; } + BitFieldValue bWeaponUsesMeleeComboHarvesting() { return { this, "AShooterWeapon.bWeaponUsesMeleeComboHarvesting" }; } + BitFieldValue bWeaponUsesDualWielding() { return { this, "AShooterWeapon.bWeaponUsesDualWielding" }; } + BitFieldValue bIsPrimaryWeaponEquipped() { return { this, "AShooterWeapon.bIsPrimaryWeaponEquipped" }; } + BitFieldValue bIsSecondaryWeaponEquipped() { return { this, "AShooterWeapon.bIsSecondaryWeaponEquipped" }; } + BitFieldValue bUseBPPlayReloadAnimAndContinueReload() { return { this, "AShooterWeapon.bUseBPPlayReloadAnimAndContinueReload" }; } + BitFieldValue bUseAutoReloadOnEquip() { return { this, "AShooterWeapon.bUseAutoReloadOnEquip" }; } + BitFieldValue bPendingReloadSecondary() { return { this, "AShooterWeapon.bPendingReloadSecondary" }; } + BitFieldValue bClientAlreadyReloadedSecondary() { return { this, "AShooterWeapon.bClientAlreadyReloadedSecondary" }; } + BitFieldValue bPendingUnequipSecondary() { return { this, "AShooterWeapon.bPendingUnequipSecondary" }; } + BitFieldValue bPendingSecondaryEquipCheckAfterMap() { return { this, "AShooterWeapon.bPendingSecondaryEquipCheckAfterMap" }; } + BitFieldValue bPendingSecondaryEquipCheckAfterRiding() { return { this, "AShooterWeapon.bPendingSecondaryEquipCheckAfterRiding" }; } + BitFieldValue bUseBPWeaponAllowJump() { return { this, "AShooterWeapon.bUseBPWeaponAllowJump" }; } + BitFieldValue bUseBPOnMovementModeChangedNotify() { return { this, "AShooterWeapon.bUseBPOnMovementModeChangedNotify" }; } + BitFieldValue bUseBPHandleAttackType() { return { this, "AShooterWeapon.bUseBPHandleAttackType" }; } + BitFieldValue bForcePlayReloadFPV() { return { this, "AShooterWeapon.bForcePlayReloadFPV" }; } + BitFieldValue bBurstUsesAltAttack() { return { this, "AShooterWeapon.bBurstUsesAltAttack" }; } + BitFieldValue bUseBPCanReload() { return { this, "AShooterWeapon.bUseBPCanReload" }; } + BitFieldValue bUseBPWeaponAllowProne() { return { this, "AShooterWeapon.bUseBPWeaponAllowProne" }; } + BitFieldValue bUseBPWeaponAllowCrouch() { return { this, "AShooterWeapon.bUseBPWeaponAllowCrouch" }; } + BitFieldValue bUseChainedReload() { return { this, "AShooterWeapon.bUseChainedReload" }; } + BitFieldValue bCurrentReloadIsChained() { return { this, "AShooterWeapon.bCurrentReloadIsChained" }; } + BitFieldValue bWeaponUsesSmartSwitching() { return { this, "AShooterWeapon.bWeaponUsesSmartSwitching" }; } + BitFieldValue bSmartSwitchingKeepsWieldingMode() { return { this, "AShooterWeapon.bSmartSwitchingKeepsWieldingMode" }; } + BitFieldValue bWantsToFireSecondary() { return { this, "AShooterWeapon.bWantsToFireSecondary" }; } + BitFieldValue bAllowCombatStateToggle() { return { this, "AShooterWeapon.bAllowCombatStateToggle" }; } + BitFieldValue bCanDoNonImpulsingHarvestAttack() { return { this, "AShooterWeapon.bCanDoNonImpulsingHarvestAttack" }; } + BitFieldValue bDidLastAttackHarvest() { return { this, "AShooterWeapon.bDidLastAttackHarvest" }; } + BitFieldValue bOnlyAllowStunningRibbonTrail() { return { this, "AShooterWeapon.bOnlyAllowStunningRibbonTrail" }; } + BitFieldValue bFacingEnemyStructure() { return { this, "AShooterWeapon.bFacingEnemyStructure" }; } + BitFieldValue bWeaponPreventLockOn() { return { this, "AShooterWeapon.bWeaponPreventLockOn" }; } + BitFieldValue bWeaponAllowsLockOn() { return { this, "AShooterWeapon.bWeaponAllowsLockOn" }; } + BitFieldValue bUseBPPreventLockingOn() { return { this, "AShooterWeapon.bUseBPPreventLockingOn" }; } + BitFieldValue bUseBPSetFPVRootLocAndRotation() { return { this, "AShooterWeapon.bUseBPSetFPVRootLocAndRotation" }; } + BitFieldValue bUseHandIk() { return { this, "AShooterWeapon.bUseHandIk" }; } + BitFieldValue bInversedIkCurve() { return { this, "AShooterWeapon.bInversedIkCurve" }; } + BitFieldValue bWeaponAllowsUsingRepairBoxResources() { return { this, "AShooterWeapon.bWeaponAllowsUsingRepairBoxResources" }; } + BitFieldValue bUseBPCanSetCombatState() { return { this, "AShooterWeapon.bUseBPCanSetCombatState" }; } + BitFieldValue bOnlyStepImpulseBasicVsHuman() { return { this, "AShooterWeapon.bOnlyStepImpulseBasicVsHuman" }; } + BitFieldValue bNPCResponseShouldDodge() { return { this, "AShooterWeapon.bNPCResponseShouldDodge" }; } + + // Functions + + void ZoomIn() { NativeCall(this, "AShooterWeapon.ZoomIn"); } + void ZoomOut() { NativeCall(this, "AShooterWeapon.ZoomOut"); } + bool AddToMeleeSwingHurtList(AActor* AnActor) { return NativeCall(this, "AShooterWeapon.AddToMeleeSwingHurtList", AnActor); } + void AllowFastAttackForTime(float time, bool bWasLeftAttack, bool bShouldAllowBothSides) { NativeCall(this, "AShooterWeapon.AllowFastAttackForTime", time, bWasLeftAttack, bShouldAllowBothSides); } + bool AllowFiring(bool bIsLeftFire) { return NativeCall(this, "AShooterWeapon.AllowFiring", bIsLeftFire); } + void ApplyFPVCustomOffset(FVector TargetOffset, float Duration, float InterpSpeed) { NativeCall(this, "AShooterWeapon.ApplyFPVCustomOffset", TargetOffset, Duration, InterpSpeed); } + void ApplyPrimalItemSettingsToWeapon(bool bShallowUpdate, bool bIsSecondaryItem, bool bAllowIDZero) { NativeCall(this, "AShooterWeapon.ApplyPrimalItemSettingsToWeapon", bShallowUpdate, bIsSecondaryItem, bAllowIDZero); } + void AttachMeshToPawn() { NativeCall(this, "AShooterWeapon.AttachMeshToPawn"); } + void AttachMeshToPawnSecondary() { NativeCall(this, "AShooterWeapon.AttachMeshToPawnSecondary"); } + EWeaponState::Type BPGetCurrentState(bool bLeftWeaponState) { return NativeCall(this, "AShooterWeapon.BPGetCurrentState", bLeftWeaponState); } + FWeaponAttack* BPGetCurrentWeaponAttack(FWeaponAttack* result, bool* bFoundAttack) { return NativeCall(this, "AShooterWeapon.BPGetCurrentWeaponAttack", result, bFoundAttack); } + FWeaponAttack* BPGetWeaponAttack(FWeaponAttack* result, int AttackIndex, bool* bFoundAttack) { return NativeCall(this, "AShooterWeapon.BPGetWeaponAttack", result, AttackIndex, bFoundAttack); } + void BeginPlay() { NativeCall(this, "AShooterWeapon.BeginPlay"); } + bool CanDodge() { return NativeCall(this, "AShooterWeapon.CanDodge"); } + bool CanFire(bool bForceAllowSubmergedFiring, bool bIsLeftFire) { return NativeCall(this, "AShooterWeapon.CanFire", bForceAllowSubmergedFiring, bIsLeftFire); } + bool CanMeleeAttack() { return NativeCall(this, "AShooterWeapon.CanMeleeAttack"); } + bool CanRegisterInputForNextAttack(int attackIndex, bool bIsLeftAttack) { return NativeCall(this, "AShooterWeapon.CanRegisterInputForNextAttack", attackIndex, bIsLeftAttack); } + bool CanReload() { return NativeCall(this, "AShooterWeapon.CanReload"); } + bool CanReload(bool bLeftReload) { return NativeCall(this, "AShooterWeapon.CanReload", bLeftReload); } + bool CanRun() { return NativeCall(this, "AShooterWeapon.CanRun"); } + bool CanSetCombatState(bool bNewCombatState) { return NativeCall(this, "AShooterWeapon.CanSetCombatState", bNewCombatState); } + bool CanStartAttack(int attackIndex, bool bCanInterruptCurrentAttack, bool bIsLeftAttack, bool bSkipAttackDataChecks) { return NativeCall(this, "AShooterWeapon.CanStartAttack", attackIndex, bCanInterruptCurrentAttack, bIsLeftAttack, bSkipAttackDataChecks); } + bool CanStartBlocking(int attackIndex) { return NativeCall(this, "AShooterWeapon.CanStartBlocking", attackIndex); } + bool CanStartChargeRunning() { return NativeCall(this, "AShooterWeapon.CanStartChargeRunning"); } + bool CanStartRunning() { return NativeCall(this, "AShooterWeapon.CanStartRunning"); } + bool CanStartSideUnequip(bool bIsPrimaryWeapon) { return NativeCall(this, "AShooterWeapon.CanStartSideUnequip", bIsPrimaryWeapon); } + bool CanStartWeaponSwitch(bool bIsPrimaryWeapon) { return NativeCall(this, "AShooterWeapon.CanStartWeaponSwitch", bIsPrimaryWeapon); } + bool CanSwitchWeaponTo_Implementation(UPrimalItem* ForItem, APrimalCharacter* OwnerCharacter) { return NativeCall(this, "AShooterWeapon.CanSwitchWeaponTo_Implementation", ForItem, OwnerCharacter); } + bool CanTarget() { return NativeCall(this, "AShooterWeapon.CanTarget"); } + bool CanUseAttackData() { return NativeCall(this, "AShooterWeapon.CanUseAttackData"); } + bool CanUseItemForDualWielding(UPrimalItem* PrimalItem) { return NativeCall(this, "AShooterWeapon.CanUseItemForDualWielding", PrimalItem); } + void CancelCurrentWeaponAttack(float NextAttackTime, bool bOverrideCurrentTime, bool bIsAbsoluteTime) { NativeCall(this, "AShooterWeapon.CancelCurrentWeaponAttack", NextAttackTime, bOverrideCurrentTime, bIsAbsoluteTime); } + void CancelCurrentWeaponAttack_FromClient(float NextAttackTime, bool bOverrideCurrentTime, bool bIsAbsoluteTime) { NativeCall(this, "AShooterWeapon.CancelCurrentWeaponAttack_FromClient", NextAttackTime, bOverrideCurrentTime, bIsAbsoluteTime); } + void CancelReload() { NativeCall(this, "AShooterWeapon.CancelReload"); } + void CheckForEarlyAttack() { NativeCall(this, "AShooterWeapon.CheckForEarlyAttack"); } + void CheckForMeleeAttack() { NativeCall(this, "AShooterWeapon.CheckForMeleeAttack"); } + bool CheckForMeleeStepImpulseCollision(FVector* MyVec, bool isInitialTrace) { return NativeCall(this, "AShooterWeapon.CheckForMeleeStepImpulseCollision", MyVec, isInitialTrace); } + void CheckItemAssocation() { NativeCall(this, "AShooterWeapon.CheckItemAssocation"); } + void CheckItemAssociationSecondary() { NativeCall(this, "AShooterWeapon.CheckItemAssociationSecondary"); } + bool CheckShieldBlocking(APrimalCharacter* DamageCauser, APrimalCharacter* Defender, FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.CheckShieldBlocking", DamageCauser, Defender, Impact, ShootDir, DamageAmount, DamageType, Impulse); } + bool CheckWeaponBlocking(APrimalCharacter* DamageCauser, APrimalCharacter* Defender, FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.CheckWeaponBlocking", DamageCauser, Defender, Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void ClearClientReload() { NativeCall(this, "AShooterWeapon.ClearClientReload"); } + void ClearClientReloadSecondary() { NativeCall(this, "AShooterWeapon.ClearClientReloadSecondary"); } + void ClearControlLimitedBuff() { NativeCall(this, "AShooterWeapon.ClearControlLimitedBuff"); } + void ClearStoredDodge() { NativeCall(this, "AShooterWeapon.ClearStoredDodge"); } + void ClientBeginMeleeStepImpulsing_Implementation(FVector MyVec) { NativeCall(this, "AShooterWeapon.ClientBeginMeleeStepImpulsing_Implementation", MyVec); } + void ClientEndDodging_Implementation() { NativeCall(this, "AShooterWeapon.ClientEndDodging_Implementation"); } + void ClientPlayShieldHitAnim_Implementation() { NativeCall(this, "AShooterWeapon.ClientPlayShieldHitAnim_Implementation"); } + void ClientProcessHitResult(FHitResult* HitInfo, float AttackDamageAmount, float AttackDamageImpulse, TSubclassOf AttackDamageType) { NativeCall>(this, "AShooterWeapon.ClientProcessHitResult", HitInfo, AttackDamageAmount, AttackDamageImpulse, AttackDamageType); } + void ClientSetChargeRunning_Implementation(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ClientSetChargeRunning_Implementation", newChargeRunning); } + void ClientSetClipAmmo_Implementation(int newClipAmmo, bool bOnlyUpdateItem, bool bIsLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientSetClipAmmo_Implementation", newClipAmmo, bOnlyUpdateItem, bIsLeftWeapon); } + void ClientSimulateWeaponFire_Implementation(bool bSimulateOnLeftWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.ClientSimulateWeaponFire_Implementation", bSimulateOnLeftWeapon, AttackIndex); } + void ClientSpawnMeleeComboHarvestingHitEffects_Implementation(FVector ImpactLocation, FVector ImpactNormal) { NativeCall(this, "AShooterWeapon.ClientSpawnMeleeComboHarvestingHitEffects_Implementation", ImpactLocation, ImpactNormal); } + void ClientStartChargeRunning(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ClientStartChargeRunning", newChargeRunning); } + void ClientStartMuzzleFX_Implementation(bool bLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientStartMuzzleFX_Implementation", bLeftWeapon); } + void ClientStartReload_Implementation(bool bReloadLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientStartReload_Implementation", bReloadLeftWeapon); } + void ClientStopSimulatingWeaponFire_Implementation() { NativeCall(this, "AShooterWeapon.ClientStopSimulatingWeaponFire_Implementation"); } + void ClientYarkTickMeleeSwing(float DeltaTime) { NativeCall(this, "AShooterWeapon.ClientYarkTickMeleeSwing", DeltaTime); } + float CompareBlockingPower(AShooterWeapon* AttackerWeapon, int AttackerAttackIndex) { return NativeCall(this, "AShooterWeapon.CompareBlockingPower", AttackerWeapon, AttackerAttackIndex); } + void ConsumeAmmoItem(int Quantity) { NativeCall(this, "AShooterWeapon.ConsumeAmmoItem", Quantity); } + void CosumeMeleeHitDurability(float DurabilityConsumptionMultiplier) { NativeCall(this, "AShooterWeapon.CosumeMeleeHitDurability", DurabilityConsumptionMultiplier); } + void CreateControlLimitedBuff() { NativeCall(this, "AShooterWeapon.CreateControlLimitedBuff"); } + void DealDamage(FHitResult* Impact, FVector* ShootDir, float DamageAmount, TSubclassOf DamageType, float Impulse, bool bIsFromSecondaryWeapon) { NativeCall, float, bool>(this, "AShooterWeapon.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse, bIsFromSecondaryWeapon); } + void Destroyed() { NativeCall(this, "AShooterWeapon.Destroyed"); } + void DetachMeshFromPawn(bool bOnlyDetachSecondaryMesh, bool bOnlyDetachPrimaryMesh) { NativeCall(this, "AShooterWeapon.DetachMeshFromPawn", bOnlyDetachSecondaryMesh, bOnlyDetachPrimaryMesh); } + void DetermineWeaponState(int AttackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.DetermineWeaponState", AttackIndex, bUseAltAnim); } + void DetermineWeaponState() { NativeCall(this, "AShooterWeapon.DetermineWeaponState"); } + void DoHandleFiring() { NativeCall(this, "AShooterWeapon.DoHandleFiring"); } + void DoMeleeAttack() { NativeCall(this, "AShooterWeapon.DoMeleeAttack"); } + void DoReregisterAllComponents() { NativeCall(this, "AShooterWeapon.DoReregisterAllComponents"); } + void DodgeAfterTimer() { NativeCall(this, "AShooterWeapon.DodgeAfterTimer"); } + void Dodge_Implementation(FVector* MoveDir) { NativeCall(this, "AShooterWeapon.Dodge_Implementation", MoveDir); } + void DrawDebugLineClient_Implementation(FVector StartLine, FVector EndLine, FColor lineColor) { NativeCall(this, "AShooterWeapon.DrawDebugLineClient_Implementation", StartLine, EndLine, lineColor); } + void DrawDebugSphereClient_Implementation(FVector StartLine, FVector EndLine, FColor lineColor, float radius) { NativeCall(this, "AShooterWeapon.DrawDebugSphereClient_Implementation", StartLine, EndLine, lineColor, radius); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "AShooterWeapon.DrawHUD", HUD); } + void EndDoMeleeSwing() { NativeCall(this, "AShooterWeapon.EndDoMeleeSwing"); } + void EndDodging_Implementation() { NativeCall(this, "AShooterWeapon.EndDodging_Implementation"); } + void EndMeleeFeetPlanted() { NativeCall(this, "AShooterWeapon.EndMeleeFeetPlanted"); } + void EndMeleeStepImpulse_Implementation() { NativeCall(this, "AShooterWeapon.EndMeleeStepImpulse_Implementation"); } + void EndMeleeSwing() { NativeCall(this, "AShooterWeapon.EndMeleeSwing"); } + AActor* FindAutoAimTarget(FVector CurrentViewLocation, float MaxDistance, float MaxAngle) { return NativeCall(this, "AShooterWeapon.FindAutoAimTarget", CurrentViewLocation, MaxDistance, MaxAngle); } + USceneComponent* FindComponentByName(FName ComponentName) { return NativeCall(this, "AShooterWeapon.FindComponentByName", ComponentName); } + bool FindHarvestableOrEnemy() { return NativeCall(this, "AShooterWeapon.FindHarvestableOrEnemy"); } + AActor* FindLockOnTarget(bool bFindNewTarget, FRotator rotationDirection, float TraceDistanceOverride, float TraceSphereRadiusOverride, bool bUseActorDistanceSort, bool bConsiderNeutralTargets, bool bConsiderOnlyHumanCharacters) { return NativeCall(this, "AShooterWeapon.FindLockOnTarget", bFindNewTarget, rotationDirection, TraceDistanceOverride, TraceSphereRadiusOverride, bUseActorDistanceSort, bConsiderNeutralTargets, bConsiderOnlyHumanCharacters); } + void FinishSideUnequipSecondary() { NativeCall(this, "AShooterWeapon.FinishSideUnequipSecondary"); } + void FinishSideWeaponSwitch(bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.FinishSideWeaponSwitch", bIsPrimaryWeapon); } + void FinishWeaponSwitchPrimary() { NativeCall(this, "AShooterWeapon.FinishWeaponSwitchPrimary"); } + void FinishWeaponSwitchSecondary() { NativeCall(this, "AShooterWeapon.FinishWeaponSwitchSecondary"); } + void FireWeapon() { NativeCall(this, "AShooterWeapon.FireWeapon"); } + bool ForceFirstPerson_Implementation() { return NativeCall(this, "AShooterWeapon.ForceFirstPerson_Implementation"); } + void ForceStopReloadAnimation() { NativeCall(this, "AShooterWeapon.ForceStopReloadAnimation"); } + bool ForceTPVTargetingAnimation() { return NativeCall(this, "AShooterWeapon.ForceTPVTargetingAnimation"); } + bool ForcesTPVCameraOffset_Implementation() { return NativeCall(this, "AShooterWeapon.ForcesTPVCameraOffset_Implementation"); } + static void GetActorOffsetFromScreenCenter(AActor* ActorTarget, AShooterPlayerController* MyPC, FVector2D* OffsetFromCenter, FVector2D* ScreenCenter) { NativeCall(nullptr, "AShooterWeapon.GetActorOffsetFromScreenCenter", ActorTarget, MyPC, OffsetFromCenter, ScreenCenter); } + FVector* GetAdjustedAim(FVector* result) { return NativeCall(this, "AShooterWeapon.GetAdjustedAim", result); } + bool GetAimOffsets(float DeltaTime, FRotator* RootRotOffset, float* RootYawSpeed, float MaxYawAimClamp, FVector* RootLocOffset, FRotator* CurrentAimRot, FVector* CurrentRootLoc, FVector* TargetRootLoc, FRotator* TargetAimRot) { return NativeCall(this, "AShooterWeapon.GetAimOffsets", DeltaTime, RootRotOffset, RootYawSpeed, MaxYawAimClamp, RootLocOffset, CurrentAimRot, CurrentRootLoc, TargetRootLoc, TargetAimRot); } + TSubclassOf* GetAttackDamageType(TSubclassOf* result, int AttackIndex) { return NativeCall*, TSubclassOf*, int>(this, "AShooterWeapon.GetAttackDamageType", result, AttackIndex); } + static void GetAttackDirectionToBreakBlock(AShooterWeapon* DefenderWeapon, AShooterWeapon* DamageCauserWeapon, FVector* ShotDirection, int damageCauserAttackIndex, bool* RegularDirection, bool* AltDirection) { NativeCall(nullptr, "AShooterWeapon.GetAttackDirectionToBreakBlock", DefenderWeapon, DamageCauserWeapon, ShotDirection, damageCauserAttackIndex, RegularDirection, AltDirection); } + int GetAttackIndex(EWeaponAttackType::Type AttackType) { return NativeCall(this, "AShooterWeapon.GetAttackIndex", AttackType); } + EWeaponAttackType::Type GetAttackTypeForIndex(int AttackIndex) { return NativeCall(this, "AShooterWeapon.GetAttackTypeForIndex", AttackIndex); } + EWeaponAttackType::Type GetAttackTypeFromInput(EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "AShooterWeapon.GetAttackTypeFromInput", AttackInput); } + float GetAutoAimMultiplier(int AttackIndex) { return NativeCall(this, "AShooterWeapon.GetAutoAimMultiplier", AttackIndex); } + static bool GetBestBlockingDirection(AShooterWeapon* DefenderWeapon, AShooterWeapon* DamageCauserWeapon, FVector* ShotDirection, int defenderAttackIndex, bool* RegularDirection, bool* AltDirection, bool* RequiresDownBlock) { return NativeCall(nullptr, "AShooterWeapon.GetBestBlockingDirection", DefenderWeapon, DamageCauserWeapon, ShotDirection, defenderAttackIndex, RegularDirection, AltDirection, RequiresDownBlock); } + FVector* GetCameraDamageStartLocation(FVector* result, FVector* AimDir) { return NativeCall(this, "AShooterWeapon.GetCameraDamageStartLocation", result, AimDir); } + float GetChargeRunningSpeedProgress() { return NativeCall(this, "AShooterWeapon.GetChargeRunningSpeedProgress"); } + float GetConsumeDurabilityPerShot() { return NativeCall(this, "AShooterWeapon.GetConsumeDurabilityPerShot"); } + FColor* GetCrosshairColor_Implementation(FColor* result) { return NativeCall(this, "AShooterWeapon.GetCrosshairColor_Implementation", result); } + int GetCurrentAmmoInClip(bool bLeftWeaponAmmo) { return NativeCall(this, "AShooterWeapon.GetCurrentAmmoInClip", bLeftWeaponAmmo); } + TSubclassOf* GetCurrentAttackDamageType(TSubclassOf* result, bool bCanUseLastAttack) { return NativeCall*, TSubclassOf*, bool>(this, "AShooterWeapon.GetCurrentAttackDamageType", result, bCanUseLastAttack); } + int GetCurrentWeaponAttackIndex(bool bGetLastIfNotCurrent) { return NativeCall(this, "AShooterWeapon.GetCurrentWeaponAttackIndex", bGetLastIfNotCurrent); } + float GetFireCameraShakeScale() { return NativeCall(this, "AShooterWeapon.GetFireCameraShakeScale"); } + void GetHandsSocketsTransforms(FTransform* Left, FTransform* Right) { NativeCall(this, "AShooterWeapon.GetHandsSocketsTransforms", Left, Right); } + FRotator* GetInputRotationLimits_Implementation(FRotator* result) { return NativeCall(this, "AShooterWeapon.GetInputRotationLimits_Implementation", result); } + int GetLastSocketPositionsNum() { return NativeCall(this, "AShooterWeapon.GetLastSocketPositionsNum"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AShooterWeapon.GetLifetimeReplicatedProps", OutLifetimeProps); } + FVector* GetMuzzleDirection(FVector* result, bool bFromSecondaryWeapon) { return NativeCall(this, "AShooterWeapon.GetMuzzleDirection", result, bFromSecondaryWeapon); } + FVector* GetMuzzleLocation(FVector* result, bool bFromSecondaryWeapon) { return NativeCall(this, "AShooterWeapon.GetMuzzleLocation", result, bFromSecondaryWeapon); } + long double GetNextValidAttackTime(bool bGetTimeForLeftAttack) { return NativeCall(this, "AShooterWeapon.GetNextValidAttackTime", bGetTimeForLeftAttack); } + USceneComponent* GetParticleBaseComponent() { return NativeCall(this, "AShooterWeapon.GetParticleBaseComponent"); } + APrimalCharacter* GetPawnOwner() { return NativeCall(this, "AShooterWeapon.GetPawnOwner"); } + FVector* GetProperLocation(FVector* result, AActor* CharacterActor) { return NativeCall(this, "AShooterWeapon.GetProperLocation", result, CharacterActor); } + int GetShieldAttackIndex(EWeaponAttackType::Type AttackType) { return NativeCall(this, "AShooterWeapon.GetShieldAttackIndex", AttackType); } + FVector* GetShootingCameraLocation(FVector* result) { return NativeCall(this, "AShooterWeapon.GetShootingCameraLocation", result); } + float GetSuccessiveHitsDamageMultiplier() { return NativeCall(this, "AShooterWeapon.GetSuccessiveHitsDamageMultiplier"); } + FString* GetTutorialHintString_Implementation(FString* result) { return NativeCall(this, "AShooterWeapon.GetTutorialHintString_Implementation", result); } + FWeaponAttack* GetWeaponAttack(int attackIndex) { return NativeCall(this, "AShooterWeapon.GetWeaponAttack", attackIndex); } + float GetWeaponDamageMultiplier(bool bIsFromSecondaryWeapon) { return NativeCall(this, "AShooterWeapon.GetWeaponDamageMultiplier", bIsFromSecondaryWeapon); } + float GetYarkMeleeSwingRadius() { return NativeCall(this, "AShooterWeapon.GetYarkMeleeSwingRadius"); } + void GiveSidePrimalItemWeapon(UPrimalItem* aPrimalItem, bool bIsPrimaryWeapon, bool bIsSwitch) { NativeCall(this, "AShooterWeapon.GiveSidePrimalItemWeapon", aPrimalItem, bIsPrimaryWeapon, bIsSwitch); } + void HandleFiring(bool bSentFromClient, bool bIsLeftFiring, int AttackIndex) { NativeCall(this, "AShooterWeapon.HandleFiring", bSentFromClient, bIsLeftFiring, AttackIndex); } + bool HasInfiniteAmmo() { return NativeCall(this, "AShooterWeapon.HasInfiniteAmmo"); } + bool HasRightMovementModeForAttack(int AttackIndex) { return NativeCall(this, "AShooterWeapon.HasRightMovementModeForAttack", AttackIndex); } + void IncreaseReloadSpeed(float PlayRateMultiplier) { NativeCall(this, "AShooterWeapon.IncreaseReloadSpeed", PlayRateMultiplier); } + void InitializeLastSocketPositionsArray() { NativeCall(this, "AShooterWeapon.InitializeLastSocketPositionsArray"); } + void InitializeMeleeArrays() { NativeCall(this, "AShooterWeapon.InitializeMeleeArrays"); } + bool IsActivelyBlocking() { return NativeCall(this, "AShooterWeapon.IsActivelyBlocking"); } + bool IsAttackImplemented(EWeaponAttackType::Type AttackType) { return NativeCall(this, "AShooterWeapon.IsAttackImplemented", AttackType); } + bool IsAutoAimActive() { return NativeCall(this, "AShooterWeapon.IsAutoAimActive"); } + bool IsBlockingAttack(int attackIndex) { return NativeCall(this, "AShooterWeapon.IsBlockingAttack", attackIndex); } + bool IsDodgeDirectionAllowed(int DodgeDirection) { return NativeCall(this, "AShooterWeapon.IsDodgeDirectionAllowed", DodgeDirection); } + bool IsDodgingNotImpulsing() { return NativeCall(this, "AShooterWeapon.IsDodgingNotImpulsing"); } + bool IsDualWielding() { return NativeCall(this, "AShooterWeapon.IsDualWielding"); } + bool IsFiring(bool bLeftWeapon) { return NativeCall(this, "AShooterWeapon.IsFiring", bLeftWeapon); } + bool IsFirstPersonMeshVisible() { return NativeCall(this, "AShooterWeapon.IsFirstPersonMeshVisible"); } + bool IsLocallyOwned() { return NativeCall(this, "AShooterWeapon.IsLocallyOwned"); } + bool IsLockedOn(bool bTestForValidTarget) { return NativeCall(this, "AShooterWeapon.IsLockedOn", bTestForValidTarget); } + bool IsPerformingAttack() { return NativeCall(this, "AShooterWeapon.IsPerformingAttack"); } + bool IsPrimalDodging() { return NativeCall(this, "AShooterWeapon.IsPrimalDodging"); } + bool IsRecoveringAfterBlocking() { return NativeCall(this, "AShooterWeapon.IsRecoveringAfterBlocking"); } + bool IsRecoveringAfterGettingBlocked() { return NativeCall(this, "AShooterWeapon.IsRecoveringAfterGettingBlocked"); } + bool IsReloading(bool bOnlyCheckLeftSide, bool bOnlyCheckRightSide) { return NativeCall(this, "AShooterWeapon.IsReloading", bOnlyCheckLeftSide, bOnlyCheckRightSide); } + bool IsShieldAttack(int attackIndex) { return NativeCall(this, "AShooterWeapon.IsShieldAttack", attackIndex); } + bool IsSimulated() { return NativeCall(this, "AShooterWeapon.IsSimulated"); } + bool IsUsingBlockingAttack() { return NativeCall(this, "AShooterWeapon.IsUsingBlockingAttack"); } + bool IsUsingDownBlockingAttack() { return NativeCall(this, "AShooterWeapon.IsUsingDownBlockingAttack"); } + bool IsValidAttackIndex(int AttackIndex) { return NativeCall(this, "AShooterWeapon.IsValidAttackIndex", AttackIndex); } + bool IsValidAutoAimTarget(AActor* PotentialTarget) { return NativeCall(this, "AShooterWeapon.IsValidAutoAimTarget", PotentialTarget); } + bool IsValidExtraAttack(int attackIndex, bool bTestIndexOnly) { return NativeCall(this, "AShooterWeapon.IsValidExtraAttack", attackIndex, bTestIndexOnly); } + bool IsValidShieldAttackIndex(int AttackIndex) { return NativeCall(this, "AShooterWeapon.IsValidShieldAttackIndex", AttackIndex); } + bool IsWithinView(float Angle, AActor* OtherActor, FVector CurrentViewPoint) { return NativeCall(this, "AShooterWeapon.IsWithinView", Angle, OtherActor, CurrentViewPoint); } + bool LocalAimUseLocalSpace(FVector* AimOrigin, FVector* AimDir) { return NativeCall(this, "AShooterWeapon.LocalAimUseLocalSpace", AimOrigin, AimDir); } + bool LocalCheckShieldBlocking(APrimalCharacter* DamageCauser, FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.LocalCheckShieldBlocking", DamageCauser, Impact, ShootDir, DamageAmount, DamageType, Impulse); } + bool LocalCheckWeaponBlocking(APrimalCharacter* DamageCauser, FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.LocalCheckWeaponBlocking", DamageCauser, Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void LocalOnAttackBlockedByShield(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.LocalOnAttackBlockedByShield", CauserWeapon, AttackIndex); } + void LocalOnAttackBlockedByWeapon(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.LocalOnAttackBlockedByWeapon", CauserWeapon, AttackIndex); } + void LocalOnHit() { NativeCall(this, "AShooterWeapon.LocalOnHit"); } + void LocalOnHitReceived(AShooterWeapon* CauserWeapon, bool bWasDodging) { NativeCall(this, "AShooterWeapon.LocalOnHitReceived", CauserWeapon, bWasDodging); } + void LocalPossessed() { NativeCall(this, "AShooterWeapon.LocalPossessed"); } + void LocalPossessedSecondary() { NativeCall(this, "AShooterWeapon.LocalPossessedSecondary"); } + void MeleeHitAttemptToColorizeStructure(APrimalStructure* aStructure) { NativeCall(this, "AShooterWeapon.MeleeHitAttemptToColorizeStructure", aStructure); } + void MulticastAssociatedItemNetInfo_Implementation(FItemNetInfo AssociatedNetInfo, bool bIsPrimaryItem) { NativeCall(this, "AShooterWeapon.MulticastAssociatedItemNetInfo_Implementation", AssociatedNetInfo, bIsPrimaryItem); } + void ServerCancelCurrentWeaponAttack_Implementation(float NextAttackTime, bool bOverrideCurrentTime, bool bIsAbsoluteTime) { NativeCall(this, "AShooterWeapon.ServerCancelCurrentWeaponAttack_Implementation", NextAttackTime, bOverrideCurrentTime, bIsAbsoluteTime); } + void NetSetAimMagnetism_Implementation(float NewMagnetism) { NativeCall(this, "AShooterWeapon.NetSetAimMagnetism_Implementation", NewMagnetism); } + void NetSetDebugMelee_Implementation(bool Discrete, int DebugMelee) { NativeCall(this, "AShooterWeapon.NetSetDebugMelee_Implementation", Discrete, DebugMelee); } + void NetSetStepImpulsing_Implementation(bool NewImpulsing) { NativeCall(this, "AShooterWeapon.NetSetStepImpulsing_Implementation", NewImpulsing); } + void NetSetUseInterpolatedLocation_Implementation(bool NewValue) { NativeCall(this, "AShooterWeapon.NetSetUseInterpolatedLocation_Implementation", NewValue); } + void NetWeaponStartAttack_Implementation(int weaponAttackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.NetWeaponStartAttack_Implementation", weaponAttackIndex, bUseAltAnim); } + void Net_CancelReload_Implementation() { NativeCall(this, "AShooterWeapon.Net_CancelReload_Implementation"); } + void OnAttackBlockedByShield(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.OnAttackBlockedByShield", CauserWeapon, AttackIndex); } + void Net_OnEquipSecondaryWeapon_Implementation(bool bWeaponHasAmmo, bool bSkipAnimation) { NativeCall(this, "AShooterWeapon.Net_OnEquipSecondaryWeapon_Implementation", bWeaponHasAmmo, bSkipAnimation); } + void Net_OnSwitchSideWeapon_Implementation(bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.Net_OnSwitchSideWeapon_Implementation", bIsPrimaryWeapon); } + void Net_PlayEquipAnimAndFinishSwitch_Implementation(bool bIsPrimary, bool bHasNoAmmo) { NativeCall(this, "AShooterWeapon.Net_PlayEquipAnimAndFinishSwitch_Implementation", bIsPrimary, bHasNoAmmo); } + void Net_SetCombatState_Implementation(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd) { NativeCall(this, "AShooterWeapon.Net_SetCombatState_Implementation", bNewCombatState, bUseAnimation, overrideTimeUntilEnd); } + void Net_SetExtraWeaponAttack_Implementation(TArray* newStoredAttacks) { NativeCall*>(this, "AShooterWeapon.Net_SetExtraWeaponAttack_Implementation", newStoredAttacks); } + void Net_SetLockOnState_Implementation(bool bNewState) { NativeCall(this, "AShooterWeapon.Net_SetLockOnState_Implementation", bNewState); } + void Net_SetLockOnTarget_Implementation(AActor* newLockOnTarget) { NativeCall(this, "AShooterWeapon.Net_SetLockOnTarget_Implementation", newLockOnTarget); } + void Net_StartSideUnequip_Implementation(bool bIsPrimaryWeapon, bool bSkipAnimation, bool bIsSwitch) { NativeCall(this, "AShooterWeapon.Net_StartSideUnequip_Implementation", bIsPrimaryWeapon, bSkipAnimation, bIsSwitch); } + void Net_SwitchSideWeapon_Implementation(UPrimalItem* aPrimalItem, bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.Net_SwitchSideWeapon_Implementation", aPrimalItem, bIsPrimaryWeapon); } + void Net_UpdateWeaponAttackIndex_Implementation(int WeaponAttackIndex) { NativeCall(this, "AShooterWeapon.Net_UpdateWeaponAttackIndex_Implementation", WeaponAttackIndex); } + void OnAttackAnimationPlayed(int AttackIndex, float attackDurationVal, float attackMinDurationVal, bool bOverrideNextAttackTime, bool bIsLeftAttack) { NativeCall(this, "AShooterWeapon.OnAttackAnimationPlayed", AttackIndex, attackDurationVal, attackMinDurationVal, bOverrideNextAttackTime, bIsLeftAttack); } + void OnAttackBlocked(AShooterWeapon* CauserWeapon, int AttackIndex, bool bBlockedByShield) { NativeCall(this, "AShooterWeapon.OnAttackBlocked", CauserWeapon, AttackIndex, bBlockedByShield); } + void OnAttackBlockedByWeapon(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.OnAttackBlockedByWeapon", CauserWeapon, AttackIndex); } + void OnBurstFinished() { NativeCall(this, "AShooterWeapon.OnBurstFinished"); } + void OnBurstStarted(int AttackIndex, bool bIsLeftFiring) { NativeCall(this, "AShooterWeapon.OnBurstStarted", AttackIndex, bIsLeftFiring); } + void OnBurstStarted() { NativeCall(this, "AShooterWeapon.OnBurstStarted"); } + void OnCameraUpdate(FVector* CameraLocation, FRotator* CameraRotation, FVector* WeaponBob) { NativeCall(this, "AShooterWeapon.OnCameraUpdate", CameraLocation, CameraRotation, WeaponBob); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "AShooterWeapon.OnDeserializedByGame", DeserializationType); } + void OnEndActivelyBlocking() { NativeCall(this, "AShooterWeapon.OnEndActivelyBlocking"); } + void OnEndAttack() { NativeCall(this, "AShooterWeapon.OnEndAttack"); } + void OnEndAttackSwing() { NativeCall(this, "AShooterWeapon.OnEndAttackSwing"); } + void OnEndBlockingAttack(int attackIndex, bool bFromGamepad, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.OnEndBlockingAttack", attackIndex, bFromGamepad, bUseAltAnim); } + void OnEndProcessingInput() { NativeCall(this, "AShooterWeapon.OnEndProcessingInput"); } + void OnEquip() { NativeCall(this, "AShooterWeapon.OnEquip"); } + void OnEquipFinished() { NativeCall(this, "AShooterWeapon.OnEquipFinished"); } + void OnEquipFinishedPrimary() { NativeCall(this, "AShooterWeapon.OnEquipFinishedPrimary"); } + void OnEquipFinishedSecondary() { NativeCall(this, "AShooterWeapon.OnEquipFinishedSecondary"); } + void OnEquipSecondaryWeapon(bool bWeaponHasAmmo, bool bSkipAnimation) { NativeCall(this, "AShooterWeapon.OnEquipSecondaryWeapon", bWeaponHasAmmo, bSkipAnimation); } + void OnMovementModeChanged() { NativeCall(this, "AShooterWeapon.OnMovementModeChanged"); } + void OnPawnSetRunning(bool NewRunValue, bool bSkipAnim) { NativeCall(this, "AShooterWeapon.OnPawnSetRunning", NewRunValue, bSkipAnim); } + void OnRep_AccessoryToggle() { NativeCall(this, "AShooterWeapon.OnRep_AccessoryToggle"); } + void OnRep_AssociatedItemNetInfo() { NativeCall(this, "AShooterWeapon.OnRep_AssociatedItemNetInfo"); } + void OnRep_AssociatedItemNetInfoSecondary() { NativeCall(this, "AShooterWeapon.OnRep_AssociatedItemNetInfoSecondary"); } + void OnRep_CurrentAmmoInClip() { NativeCall(this, "AShooterWeapon.OnRep_CurrentAmmoInClip"); } + void OnRep_CurrentAmmoInClipSecondary() { NativeCall(this, "AShooterWeapon.OnRep_CurrentAmmoInClipSecondary"); } + void OnRep_MyPawn() { NativeCall(this, "AShooterWeapon.OnRep_MyPawn"); } + void OnRep_NetLoopedWeaponFire() { NativeCall(this, "AShooterWeapon.OnRep_NetLoopedWeaponFire"); } + void OnStartActivelyBlocking() { NativeCall(this, "AShooterWeapon.OnStartActivelyBlocking"); } + void OnStartAttack() { NativeCall(this, "AShooterWeapon.OnStartAttack"); } + void OnStartAttackSwing() { NativeCall(this, "AShooterWeapon.OnStartAttackSwing"); } + void OnSwitchSideWeapon(bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.OnSwitchSideWeapon", bIsPrimaryWeapon); } + bool OnWeaponItemUsed(UPrimalItem* anItem) { return NativeCall(this, "AShooterWeapon.OnWeaponItemUsed", anItem); } + void OwnerDied() { NativeCall(this, "AShooterWeapon.OwnerDied"); } + float PlayEquipAnimation(bool bIsLeftWeapon, bool bHasNoAmmo, bool bPlayBothFirstAndThirdPerson, bool bReplicate, bool bReplicateToInstigator, bool bStopOnFinish) { return NativeCall(this, "AShooterWeapon.PlayEquipAnimation", bIsLeftWeapon, bHasNoAmmo, bPlayBothFirstAndThirdPerson, bReplicate, bReplicateToInstigator, bStopOnFinish); } + void PlayFireAnimation() { NativeCall(this, "AShooterWeapon.PlayFireAnimation"); } + void PlayReloadAnimAndContinueReload() { NativeCall(this, "AShooterWeapon.PlayReloadAnimAndContinueReload"); } + float PlayReloadAnimation() { return NativeCall(this, "AShooterWeapon.PlayReloadAnimation"); } + void PlayTargetingAnimation() { NativeCall(this, "AShooterWeapon.PlayTargetingAnimation"); } + float PlayUnequipAnimation(bool bIsLeftWeapon, bool bStopOnFinish, bool bPlayBothFirstAndThirdPerson) { return NativeCall(this, "AShooterWeapon.PlayUnequipAnimation", bIsLeftWeapon, bStopOnFinish, bPlayBothFirstAndThirdPerson); } + void PlayUseHarvestAnimation_Implementation() { NativeCall(this, "AShooterWeapon.PlayUseHarvestAnimation_Implementation"); } + void PlayWeaponBreakAnimation_Implementation() { NativeCall(this, "AShooterWeapon.PlayWeaponBreakAnimation_Implementation"); } + UAudioComponent* PlayWeaponSound(USoundCue* Sound) { return NativeCall(this, "AShooterWeapon.PlayWeaponSound", Sound); } + void PostInitializeComponents() { NativeCall(this, "AShooterWeapon.PostInitializeComponents"); } + bool PreventSwitchingWeapon(TSubclassOf WeaponClass) { return NativeCall>(this, "AShooterWeapon.PreventSwitchingWeapon", WeaponClass); } + void ProcessActorAsYarkHit(AActor* InActor) { NativeCall(this, "AShooterWeapon.ProcessActorAsYarkHit", InActor); } + void ProcessIndexAndStartFire(int weaponAttackIndex, bool bFromGamepad, bool useAltAnim, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterWeapon.ProcessIndexAndStartFire", weaponAttackIndex, bFromGamepad, useAltAnim, bOverrideCurrentAttack); } + FRotator* ProcessRotationInputDuringAttack(FRotator* result, FRotator rotInput) { return NativeCall(this, "AShooterWeapon.ProcessRotationInputDuringAttack", result, rotInput); } + FRotator* ProcessRotationInputMultipliers_Implementation(FRotator* result, FRotator rotInput) { return NativeCall(this, "AShooterWeapon.ProcessRotationInputMultipliers_Implementation", result, rotInput); } + void ProcessServerHit(FHitResult* HitInfo) { NativeCall(this, "AShooterWeapon.ProcessServerHit", HitInfo); } + void RefreshAmmoItemQuantity() { NativeCall(this, "AShooterWeapon.RefreshAmmoItemQuantity"); } + void RefreshToggleAccessory() { NativeCall(this, "AShooterWeapon.RefreshToggleAccessory"); } + void ReloadWeapon() { NativeCall(this, "AShooterWeapon.ReloadWeapon"); } + void ReloadWeaponSecondary() { NativeCall(this, "AShooterWeapon.ReloadWeaponSecondary"); } + void ResetMeleeComboHarvestingDamage() { NativeCall(this, "AShooterWeapon.ResetMeleeComboHarvestingDamage"); } + bool RespondToMoveInput_Implementation(FVector* MoveDir) { return NativeCall(this, "AShooterWeapon.RespondToMoveInput_Implementation", MoveDir); } + bool RespondToMoveStop_Implementation(bool bIsForwardMovement) { return NativeCall(this, "AShooterWeapon.RespondToMoveStop_Implementation", bIsForwardMovement); } + void ServerCancelReload_Implementation() { NativeCall(this, "AShooterWeapon.ServerCancelReload_Implementation"); } + void ServerCheckNextSecondaryWeapon_Implementation() { NativeCall(this, "AShooterWeapon.ServerCheckNextSecondaryWeapon_Implementation"); } + void ServerEndMeleeStepImpulse_Implementation() { NativeCall(this, "AShooterWeapon.ServerEndMeleeStepImpulse_Implementation"); } + void ServerOnAttackBlocked_Implementation(AShooterWeapon* CauserWeapon, int AttackIndex, bool bBlockedByShield, bool bCharacterWasDodging) { NativeCall(this, "AShooterWeapon.ServerOnAttackBlocked_Implementation", CauserWeapon, AttackIndex, bBlockedByShield, bCharacterWasDodging); } + void ServerOnHitReceived_Implementation(AShooterWeapon* CauserWeapon, bool bWasDodging, float ShieldDefenseBrokenPowerDifference) { NativeCall(this, "AShooterWeapon.ServerOnHitReceived_Implementation", CauserWeapon, bWasDodging, ShieldDefenseBrokenPowerDifference); } + void ServerOnPawnSetRunning_Implementation(bool NewRunValue, bool bSkipAnim) { NativeCall(this, "AShooterWeapon.ServerOnPawnSetRunning_Implementation", NewRunValue, bSkipAnim); } + void ServerProcessAllMeleeHits() { NativeCall(this, "AShooterWeapon.ServerProcessAllMeleeHits"); } + void ServerProcessMeleeHit(FHitResult* HitInfo, bool bWasDodging, float ShieldDefenseBrokenPowerDifference) { NativeCall(this, "AShooterWeapon.ServerProcessMeleeHit", HitInfo, bWasDodging, ShieldDefenseBrokenPowerDifference); } + void ServerSetChargeRunning_Implementation(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ServerSetChargeRunning_Implementation", newChargeRunning); } + void ServerSetColorizeRegion_Implementation(int theRegion, bool bValToUse) { NativeCall(this, "AShooterWeapon.ServerSetColorizeRegion_Implementation", theRegion, bValToUse); } + void ServerStartAltFire_Implementation() { NativeCall(this, "AShooterWeapon.ServerStartAltFire_Implementation"); } + void ServerStartChargeRunning_Implementation(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ServerStartChargeRunning_Implementation", newChargeRunning); } + void ServerStartDodge_Implementation(int dodgeDirIndex) { NativeCall(this, "AShooterWeapon.ServerStartDodge_Implementation", dodgeDirIndex); } + void ServerStartFire_Implementation(int attackIndex, bool bUseAltAnim, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterWeapon.ServerStartFire_Implementation", attackIndex, bUseAltAnim, bOverrideCurrentAttack); } + void ServerStartMeleeStepImpulse_Implementation(FVector MyVec) { NativeCall(this, "AShooterWeapon.ServerStartMeleeStepImpulse_Implementation", MyVec); } + void ServerStartReload_Implementation(bool bReloadLeftWeapon, bool bIsChainedReload) { NativeCall(this, "AShooterWeapon.ServerStartReload_Implementation", bReloadLeftWeapon, bIsChainedReload); } + void ServerStartSecondaryAction_Implementation() { NativeCall(this, "AShooterWeapon.ServerStartSecondaryAction_Implementation"); } + void ServerStopAltFire_Implementation() { NativeCall(this, "AShooterWeapon.ServerStopAltFire_Implementation"); } + void ServerStopFire_Implementation(int attackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.ServerStopFire_Implementation", attackIndex, bUseAltAnim); } + void ServerStopSecondaryAction_Implementation() { NativeCall(this, "AShooterWeapon.ServerStopSecondaryAction_Implementation"); } + void ServerSwitchToNextLoadedWeapon_Implementation() { NativeCall(this, "AShooterWeapon.ServerSwitchToNextLoadedWeapon_Implementation"); } + void ServerToggleAccessory_Implementation() { NativeCall(this, "AShooterWeapon.ServerToggleAccessory_Implementation"); } + void Server_SetCombatState_Implementation(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd, ECombatChangeReason::Type Reason) { NativeCall(this, "AShooterWeapon.Server_SetCombatState_Implementation", bNewCombatState, bUseAnimation, overrideTimeUntilEnd, Reason); } + void Server_SetExtraWeaponAttack_Implementation(APrimalBuff* WeaponAttackBuff, int BuffAttackIndex) { NativeCall(this, "AShooterWeapon.Server_SetExtraWeaponAttack_Implementation", WeaponAttackBuff, BuffAttackIndex); } + void Server_SetLockOnState_Implementation(bool bNewState) { NativeCall(this, "AShooterWeapon.Server_SetLockOnState_Implementation", bNewState); } + void Server_SetLockOnTarget_Implementation(AActor* newLockOnTarget) { NativeCall(this, "AShooterWeapon.Server_SetLockOnTarget_Implementation", newLockOnTarget); } + void SetAccessoryEnabled(bool bEnabled) { NativeCall(this, "AShooterWeapon.SetAccessoryEnabled", bEnabled); } + void SetAmmoInClip(int newAmmo, bool bSecondaryWeapon) { NativeCall(this, "AShooterWeapon.SetAmmoInClip", newAmmo, bSecondaryWeapon); } + void SetAutoAim(bool bEnable) { NativeCall(this, "AShooterWeapon.SetAutoAim", bEnable); } + void SetAutoAimSlider(float NewValue) { NativeCall(this, "AShooterWeapon.SetAutoAimSlider", NewValue); } + void SetAutoReload() { NativeCall(this, "AShooterWeapon.SetAutoReload"); } + void SetCombatState(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd) { NativeCall(this, "AShooterWeapon.SetCombatState", bNewCombatState, bUseAnimation, overrideTimeUntilEnd); } + void SetLockOnTarget(AActor* newLockOnTarget) { NativeCall(this, "AShooterWeapon.SetLockOnTarget", newLockOnTarget); } + void SetOwningPawn(APrimalCharacter* theCharacter) { NativeCall(this, "AShooterWeapon.SetOwningPawn", theCharacter); } + void SetTimeForNextAttack(float TimeAmount, bool OverrideCurrentTime, bool bIsAbsoluteTime, bool bIsLeftAttack, bool bSetTimeForBothSides) { NativeCall(this, "AShooterWeapon.SetTimeForNextAttack", TimeAmount, OverrideCurrentTime, bIsAbsoluteTime, bIsLeftAttack, bSetTimeForBothSides); } + void SetWeaponState(EWeaponState::Type NewState) { NativeCall(this, "AShooterWeapon.SetWeaponState", NewState); } + void SetWeaponState(EWeaponState::Type NewState, int AttackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.SetWeaponState", NewState, AttackIndex, bUseAltAnim); } + bool ShouldActivateAutoAim() { return NativeCall(this, "AShooterWeapon.ShouldActivateAutoAim"); } + bool ShouldBlockAttack_Implementation(FHitResult* HitInfo, FVector* ShotDirection, bool bBlockAllPointDamage, AActor* DamageCauser, bool bOnlyCheckDirection) { return NativeCall(this, "AShooterWeapon.ShouldBlockAttack_Implementation", HitInfo, ShotDirection, bBlockAllPointDamage, DamageCauser, bOnlyCheckDirection); } + bool ShouldCancelAutoAimOnTarget(AActor* CurrentAutoAimTarget) { return NativeCall(this, "AShooterWeapon.ShouldCancelAutoAimOnTarget", CurrentAutoAimTarget); } + bool ShouldDealDamage(AActor* TestActor) { return NativeCall(this, "AShooterWeapon.ShouldDealDamage", TestActor); } + bool ShouldProcessRotationInputMultipliers() { return NativeCall(this, "AShooterWeapon.ShouldProcessRotationInputMultipliers"); } + bool ShouldSwitchPrimaryWeapon() { return NativeCall(this, "AShooterWeapon.ShouldSwitchPrimaryWeapon"); } + bool ShouldUseStepImpulsing() { return NativeCall(this, "AShooterWeapon.ShouldUseStepImpulsing"); } + void SimulateWeaponFire() { NativeCall(this, "AShooterWeapon.SimulateWeaponFire"); } + void SimulateWeaponFire(bool bSimulateOnLeftWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.SimulateWeaponFire", bSimulateOnLeftWeapon, AttackIndex); } + TArray* SortActorsByDistanceFromScreenCenter(TArray* result, TArray* actors) { return NativeCall*, TArray*, TArray*>(this, "AShooterWeapon.SortActorsByDistanceFromScreenCenter", result, actors); } + void StaggerCharacter(APrimalCharacter* Character, float StaggerTime, int FromAttackIndex) { NativeCall(this, "AShooterWeapon.StaggerCharacter", Character, StaggerTime, FromAttackIndex); } + void StartAltFire() { NativeCall(this, "AShooterWeapon.StartAltFire"); } + void StartChargeRunning() { NativeCall(this, "AShooterWeapon.StartChargeRunning"); } + void StartExtraWeaponAttack(UObject* attackInstigator, APrimalBuff* WeaponAttackBuff, int BuffAttackIndex, bool useAltAnim, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterWeapon.StartExtraWeaponAttack", attackInstigator, WeaponAttackBuff, BuffAttackIndex, useAltAnim, bOverrideCurrentAttack); } + void StartFire(int weaponAttackIndex, bool bFromGamepad, bool useAltAnim, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterWeapon.StartFire", weaponAttackIndex, bFromGamepad, useAltAnim, bOverrideCurrentAttack); } + void StartFire(bool bFromGamepad) { NativeCall(this, "AShooterWeapon.StartFire", bFromGamepad); } + void StartMeleeFeetPlanted() { NativeCall(this, "AShooterWeapon.StartMeleeFeetPlanted"); } + void StartMeleeStepImpulse_Implementation(FVector* MoveDir) { NativeCall(this, "AShooterWeapon.StartMeleeStepImpulse_Implementation", MoveDir); } + void StartMeleeSwing() { NativeCall(this, "AShooterWeapon.StartMeleeSwing"); } + void StartMuzzleFX(bool bLeftWeapon) { NativeCall(this, "AShooterWeapon.StartMuzzleFX", bLeftWeapon); } + void StartNextAttack() { NativeCall(this, "AShooterWeapon.StartNextAttack"); } + void StartReload(bool bFromReplication, bool bReloadLeftWeapon, bool bIsChainedReload) { NativeCall(this, "AShooterWeapon.StartReload", bFromReplication, bReloadLeftWeapon, bIsChainedReload); } + void StartReloadAfterTimer() { NativeCall(this, "AShooterWeapon.StartReloadAfterTimer"); } + void StartReloadAfterTimerSecondary() { NativeCall(this, "AShooterWeapon.StartReloadAfterTimerSecondary"); } + void StartRibbonTrailFX() { NativeCall(this, "AShooterWeapon.StartRibbonTrailFX"); } + void StartSecondaryAction() { NativeCall(this, "AShooterWeapon.StartSecondaryAction"); } + void StartSideUnequip(bool bIsPrimaryWeapon, bool bSkipAnimation, bool bIsSwitch) { NativeCall(this, "AShooterWeapon.StartSideUnequip", bIsPrimaryWeapon, bSkipAnimation, bIsSwitch); } + void StartUnequip_Implementation() { NativeCall(this, "AShooterWeapon.StartUnequip_Implementation"); } + void StopAllowFastAttack() { NativeCall(this, "AShooterWeapon.StopAllowFastAttack"); } + void StopAltFire() { NativeCall(this, "AShooterWeapon.StopAltFire"); } + void StopCameraAnimationFPV() { NativeCall(this, "AShooterWeapon.StopCameraAnimationFPV"); } + void StopCheckForMeleeAttack() { NativeCall(this, "AShooterWeapon.StopCheckForMeleeAttack"); } + void StopFire(int weaponAttackIndex) { NativeCall(this, "AShooterWeapon.StopFire", weaponAttackIndex); } + void StopFire() { NativeCall(this, "AShooterWeapon.StopFire"); } + void StopMuzzleFX() { NativeCall(this, "AShooterWeapon.StopMuzzleFX"); } + void StopReloadAnimation() { NativeCall(this, "AShooterWeapon.StopReloadAnimation"); } + void StopReloadAnimation(bool bForceStopFPVAnim) { NativeCall(this, "AShooterWeapon.StopReloadAnimation", bForceStopFPVAnim); } + void StopRibbonTrailFX() { NativeCall(this, "AShooterWeapon.StopRibbonTrailFX"); } + void StopSimulatingWeaponFire() { NativeCall(this, "AShooterWeapon.StopSimulatingWeaponFire"); } + bool SupportsOffhandShield() { return NativeCall(this, "AShooterWeapon.SupportsOffhandShield"); } + void SwitchSideWeapon(UPrimalItem* aPrimalItem, bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.SwitchSideWeapon", aPrimalItem, bIsPrimaryWeapon); } + void SwitchToNextLoadedWeapon() { NativeCall(this, "AShooterWeapon.SwitchToNextLoadedWeapon"); } + void Tick(float DeltaSeconds) { NativeCall(this, "AShooterWeapon.Tick", DeltaSeconds); } + void TickAutoAim() { NativeCall(this, "AShooterWeapon.TickAutoAim"); } + void TickLockOnAim() { NativeCall(this, "AShooterWeapon.TickLockOnAim"); } + void TickMeleeStepImpulse_Implementation() { NativeCall(this, "AShooterWeapon.TickMeleeStepImpulse_Implementation"); } + void TickMeleeSwing(float DeltaTime) { NativeCall(this, "AShooterWeapon.TickMeleeSwing", DeltaTime); } + void ToggleAccessory() { NativeCall(this, "AShooterWeapon.ToggleAccessory"); } + void TryApplyPrimalItemSettingsToPrimaryWeapon() { NativeCall(this, "AShooterWeapon.TryApplyPrimalItemSettingsToPrimaryWeapon"); } + void TryApplyPrimalItemSettingsToSecondaryWeapon() { NativeCall(this, "AShooterWeapon.TryApplyPrimalItemSettingsToSecondaryWeapon"); } + void TryApplyPrimalItemSettingsToWeapon(bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.TryApplyPrimalItemSettingsToWeapon", bIsPrimaryWeapon); } + AActor* TryFindAutoAimTarget(bool bNoTimeLimit, float MaxDistance, float MaxAngle) { return NativeCall(this, "AShooterWeapon.TryFindAutoAimTarget", bNoTimeLimit, MaxDistance, MaxAngle); } + bool TryFireWeapon() { return NativeCall(this, "AShooterWeapon.TryFireWeapon"); } + void UpdateChargeRunning_Implementation(float DeltaSeconds) { NativeCall(this, "AShooterWeapon.UpdateChargeRunning_Implementation", DeltaSeconds); } + void UpdateFirstPersonMeshes(bool bIsFirstPerson) { NativeCall(this, "AShooterWeapon.UpdateFirstPersonMeshes", bIsFirstPerson); } + void UpdateLastCombatActionTime(float AddititionalTimeOffset) { NativeCall(this, "AShooterWeapon.UpdateLastCombatActionTime", AddititionalTimeOffset); } + int UpdateToNextExtraAttack() { return NativeCall(this, "AShooterWeapon.UpdateToNextExtraAttack"); } + void UseAmmo(int UseAmmoAmountOverride, bool bUseAmmoFromLeftWeapon) { NativeCall(this, "AShooterWeapon.UseAmmo", UseAmmoAmountOverride, bUseAmmoFromLeftWeapon); } + void WeaponAdjustDamage(float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, APrimalCharacter* Defender) { NativeCall(this, "AShooterWeapon.WeaponAdjustDamage", Damage, DamageEvent, EventInstigator, Defender); } + bool WeaponAllowCrouch() { return NativeCall(this, "AShooterWeapon.WeaponAllowCrouch"); } + bool WeaponAllowJump() { return NativeCall(this, "AShooterWeapon.WeaponAllowJump"); } + bool WeaponAllowProne() { return NativeCall(this, "AShooterWeapon.WeaponAllowProne"); } + bool WeaponHasBeenBlockedResponse(int WeaponAttackIndex) { return NativeCall(this, "AShooterWeapon.WeaponHasBeenBlockedResponse", WeaponAttackIndex); } + void WeaponHasBlockedAttackResponse(AShooterWeapon* CauserWeapon, int AttackIndex, bool bShouldAllowFastAttack) { NativeCall(this, "AShooterWeapon.WeaponHasBlockedAttackResponse", CauserWeapon, AttackIndex, bShouldAllowFastAttack); } + void WeaponStartAttack(int weaponAttackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.WeaponStartAttack", weaponAttackIndex, bUseAltAnim); } + FHitResult* WeaponTrace(FHitResult* result, FVector* StartTrace, FVector* EndTrace) { return NativeCall(this, "AShooterWeapon.WeaponTrace", result, StartTrace, EndTrace); } + void WeaponTraceHits(TArray* HitResults, FVector* StartTrace, FVector* EndTrace) { NativeCall*, FVector*, FVector*>(this, "AShooterWeapon.WeaponTraceHits", HitResults, StartTrace, EndTrace); } + void YarkDiscreteMeleeSwingSweep_Implementation(float DeltaTime, int StartPoint, int EndPoint) { NativeCall(this, "AShooterWeapon.YarkDiscreteMeleeSwingSweep_Implementation", DeltaTime, StartPoint, EndPoint); } + void YarkEndMeleeSwing(bool bProcessMeleeHits) { NativeCall(this, "AShooterWeapon.YarkEndMeleeSwing", bProcessMeleeHits); } + void YarkTickMeleeSwing(float DeltaTime) { NativeCall(this, "AShooterWeapon.YarkTickMeleeSwing", DeltaTime); } + bool AllowTargeting() { return NativeCall(this, "AShooterWeapon.AllowTargeting"); } + bool AllowUnequip() { return NativeCall(this, "AShooterWeapon.AllowUnequip"); } + void AttachedToPawn() { NativeCall(this, "AShooterWeapon.AttachedToPawn"); } + int BPAdjustAmmoPerShot() { return NativeCall(this, "AShooterWeapon.BPAdjustAmmoPerShot"); } + bool BPAllowNativeFireWeapon() { return NativeCall(this, "AShooterWeapon.BPAllowNativeFireWeapon"); } + void BPAppliedPrimalItemToWeapon() { NativeCall(this, "AShooterWeapon.BPAppliedPrimalItemToWeapon"); } + bool BPCanEquip(APrimalCharacter* ByCharacter) { return NativeCall(this, "AShooterWeapon.BPCanEquip", ByCharacter); } + bool BPCanReload(bool bLeftReload) { return NativeCall(this, "AShooterWeapon.BPCanReload", bLeftReload); } + bool BPCanSetCombatState(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd) { return NativeCall(this, "AShooterWeapon.BPCanSetCombatState", bNewCombatState, bUseAnimation, overrideTimeUntilEnd); } + bool BPCanStartAttack(int attackIndex, bool bCanInterruptCurrentAttack, bool bIsLeftAttack) { return NativeCall(this, "AShooterWeapon.BPCanStartAttack", attackIndex, bCanInterruptCurrentAttack, bIsLeftAttack); } + bool BPCanToggleAccessory() { return NativeCall(this, "AShooterWeapon.BPCanToggleAccessory"); } + bool BPConstrainAspectRatio(float* OutAspectRatio) { return NativeCall(this, "AShooterWeapon.BPConstrainAspectRatio", OutAspectRatio); } + void BPDrawDebugSphereClient(FVector StartLine, FVector EndLine, FColor lineColor, float radius) { NativeCall(this, "AShooterWeapon.BPDrawDebugSphereClient", StartLine, EndLine, lineColor, radius); } + void BPDrawHud(AShooterHUD* HUD) { NativeCall(this, "AShooterWeapon.BPDrawHud", HUD); } + void BPFireWeapon() { NativeCall(this, "AShooterWeapon.BPFireWeapon"); } + void BPFiredWeapon() { NativeCall(this, "AShooterWeapon.BPFiredWeapon"); } + bool BPForceTPVTargetingAnimation() { return NativeCall(this, "AShooterWeapon.BPForceTPVTargetingAnimation"); } + bool BPGetAimOffsets(float DeltaTime, float MaxYawAimClamp, FRotator* RootRotOffsetIn, const float* RootYawSpeedIn, FVector* RootLocOffsetIn, FRotator* CurrentAimRotIn, FVector* CurrentRootLocIn, FVector* TargetRootLocIn, FRotator* TargetAimRotIn, FRotator* RootRotOffset, float* RootYawSpeed, FVector* RootLocOffset, FRotator* CurrentAimRot, FVector* CurrentRootLoc, FVector* TargetRootLoc, FRotator* TargetAimRot) { return NativeCall(this, "AShooterWeapon.BPGetAimOffsets", DeltaTime, MaxYawAimClamp, RootRotOffsetIn, RootYawSpeedIn, RootLocOffsetIn, CurrentAimRotIn, CurrentRootLocIn, TargetRootLocIn, TargetAimRotIn, RootRotOffset, RootYawSpeed, RootLocOffset, CurrentAimRot, CurrentRootLoc, TargetRootLoc, TargetAimRot); } + UAnimSequence* BPGetSeatingAnimation() { return NativeCall(this, "AShooterWeapon.BPGetSeatingAnimation"); } + void BPGlobalFireWeapon() { NativeCall(this, "AShooterWeapon.BPGlobalFireWeapon"); } + bool BPHandleAttackType(EWeaponAttackInput::Type AttackInput, EWeaponAttackType::Type AttackType, bool bIsAltAttack) { return NativeCall(this, "AShooterWeapon.BPHandleAttackType", AttackInput, AttackType, bIsAltAttack); } + void BPHandleMeleeAttack() { NativeCall(this, "AShooterWeapon.BPHandleMeleeAttack"); } + void BPLostController() { NativeCall(this, "AShooterWeapon.BPLostController"); } + void BPMeleeTickDebug() { NativeCall(this, "AShooterWeapon.BPMeleeTickDebug"); } + void BPModifyAimOffset(float DeltaTime, FRotator* AimOffsetIn, FRotator* AimOffsetOut) { NativeCall(this, "AShooterWeapon.BPModifyAimOffset", DeltaTime, AimOffsetIn, AimOffsetOut); } + float BPModifyFOV(float inFOV) { return NativeCall(this, "AShooterWeapon.BPModifyFOV", inFOV); } + bool BPNPCShouldUseAltAttack(int weaponAttackIndex) { return NativeCall(this, "AShooterWeapon.BPNPCShouldUseAltAttack", weaponAttackIndex); } + void BPOnAttackBlocked(AShooterWeapon* AttackingWeapon) { NativeCall(this, "AShooterWeapon.BPOnAttackBlocked", AttackingWeapon); } + void BPOnClientEndDodgeNotify() { NativeCall(this, "AShooterWeapon.BPOnClientEndDodgeNotify"); } + void BPOnClientStartDodgeNotify() { NativeCall(this, "AShooterWeapon.BPOnClientStartDodgeNotify"); } + void BPOnEndAttack() { NativeCall(this, "AShooterWeapon.BPOnEndAttack"); } + void BPOnFinishedReload(bool bWasPrimaryReload, bool bReloadWasSuccessful) { NativeCall(this, "AShooterWeapon.BPOnFinishedReload", bWasPrimaryReload, bReloadWasSuccessful); } + void BPOnScoped() { NativeCall(this, "AShooterWeapon.BPOnScoped"); } + void BPOnServerEndDodgeNotify() { NativeCall(this, "AShooterWeapon.BPOnServerEndDodgeNotify"); } + void BPOnStaggered(float ForTime) { NativeCall(this, "AShooterWeapon.BPOnStaggered", ForTime); } + bool BPOnWeaponItemUsedDuringReload(UPrimalItem* anItem) { return NativeCall(this, "AShooterWeapon.BPOnWeaponItemUsedDuringReload", anItem); } + void BPOnWeaponStartedAttack() { NativeCall(this, "AShooterWeapon.BPOnWeaponStartedAttack"); } + float BPPlayReloadAnimAndContinueReload(bool bIsLeftReload) { return NativeCall(this, "AShooterWeapon.BPPlayReloadAnimAndContinueReload", bIsLeftReload); } + bool BPPreventLockingOn() { return NativeCall(this, "AShooterWeapon.BPPreventLockingOn"); } + bool BPRemainEquipped() { return NativeCall(this, "AShooterWeapon.BPRemainEquipped"); } + void BPSetFPVRootLocAndRotation(FRotator FPVRotation_In, FVector RootLoc_In, FRotator* FPVRotation_Out, FVector* RootLoc_Out) { NativeCall(this, "AShooterWeapon.BPSetFPVRootLocAndRotation", FPVRotation_In, RootLoc_In, FPVRotation_Out, RootLoc_Out); } + bool BPShouldDealDamage(AActor* TestActor) { return NativeCall(this, "AShooterWeapon.BPShouldDealDamage", TestActor); } + bool BPShouldSkipAttackInput(EWeaponAttackInput::Type AttackInput, bool bIsStopFire) { return NativeCall(this, "AShooterWeapon.BPShouldSkipAttackInput", AttackInput, bIsStopFire); } + bool BPSkipAttackPreventedInput(EWeaponAttackInput::Type AttackInput) { return NativeCall(this, "AShooterWeapon.BPSkipAttackPreventedInput", AttackInput); } + bool BPSkipSetCombatStateOnInput(EWeaponAttackInput::Type inputType) { return NativeCall(this, "AShooterWeapon.BPSkipSetCombatStateOnInput", inputType); } + void BPStaggerCharacter(APrimalCharacter* ToCharacter, float StaggerTime, int FromAttackIndex) { NativeCall(this, "AShooterWeapon.BPStaggerCharacter", ToCharacter, StaggerTime, FromAttackIndex); } + void BPStartEquippedNotify() { NativeCall(this, "AShooterWeapon.BPStartEquippedNotify"); } + void BPStopFireWeapon() { NativeCall(this, "AShooterWeapon.BPStopFireWeapon"); } + void BPStopMeleeAttack() { NativeCall(this, "AShooterWeapon.BPStopMeleeAttack"); } + void BPToggleAccessory() { NativeCall(this, "AShooterWeapon.BPToggleAccessory"); } + void BPToggleAccessoryFailed() { NativeCall(this, "AShooterWeapon.BPToggleAccessoryFailed"); } + bool BPTryFireWeapon() { return NativeCall(this, "AShooterWeapon.BPTryFireWeapon"); } + bool BPWeaponAllowCrouch() { return NativeCall(this, "AShooterWeapon.BPWeaponAllowCrouch"); } + bool BPWeaponAllowJump() { return NativeCall(this, "AShooterWeapon.BPWeaponAllowJump"); } + bool BPWeaponAllowProne() { return NativeCall(this, "AShooterWeapon.BPWeaponAllowProne"); } + bool BPWeaponCanFire() { return NativeCall(this, "AShooterWeapon.BPWeaponCanFire"); } + int BPWeaponDealDamage(FHitResult* Impact, FVector* ShootDir, int DamageAmount, TSubclassOf DamageType, float Impulse) { return NativeCall, float>(this, "AShooterWeapon.BPWeaponDealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse); } + void BPWeaponZoom(bool bZoomingIn) { NativeCall(this, "AShooterWeapon.BPWeaponZoom", bZoomingIn); } + void BP_OnReloadNotify() { NativeCall(this, "AShooterWeapon.BP_OnReloadNotify"); } + bool BlueprintStartFireOverride(int weaponAttackIndex, bool useAltAnim, bool bOverrideCurrentAttack) { return NativeCall(this, "AShooterWeapon.BlueprintStartFireOverride", weaponAttackIndex, useAltAnim, bOverrideCurrentAttack); } + bool CanSwitchWeaponTo(UPrimalItem* ForItem, APrimalCharacter* OwnerCharacter) { return NativeCall(this, "AShooterWeapon.CanSwitchWeaponTo", ForItem, OwnerCharacter); } + void ClientEndDodging() { NativeCall(this, "AShooterWeapon.ClientEndDodging"); } + void ClientPlayShieldHitAnim() { NativeCall(this, "AShooterWeapon.ClientPlayShieldHitAnim"); } + void ClientSetChargeRunning(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ClientSetChargeRunning", newChargeRunning); } + void ClientSetClipAmmo(int newClipAmmo, bool bOnlyUpdateItem, bool bIsLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientSetClipAmmo", newClipAmmo, bOnlyUpdateItem, bIsLeftWeapon); } + void ClientSimulateWeaponFire(bool bSimulateOnLeftWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.ClientSimulateWeaponFire", bSimulateOnLeftWeapon, AttackIndex); } + void ClientSpawnMeleeComboHarvestingHitEffects(FVector ImpactLocation, FVector ImpactNormal) { NativeCall(this, "AShooterWeapon.ClientSpawnMeleeComboHarvestingHitEffects", ImpactLocation, ImpactNormal); } + void ClientStartMuzzleFX(bool bLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientStartMuzzleFX", bLeftWeapon); } + void ClientStartReload(bool bReloadLeftWeapon) { NativeCall(this, "AShooterWeapon.ClientStartReload", bReloadLeftWeapon); } + void ClientStopSimulatingWeaponFire() { NativeCall(this, "AShooterWeapon.ClientStopSimulatingWeaponFire"); } + void Dodge(FVector* DodgeDir) { NativeCall(this, "AShooterWeapon.Dodge", DodgeDir); } + void DrawDebugLineClient(FVector StartLine, FVector EndLine, FColor lineColor) { NativeCall(this, "AShooterWeapon.DrawDebugLineClient", StartLine, EndLine, lineColor); } + void DrawDebugSphereClient(FVector StartLine, FVector EndLine, FColor lineColor, float radius) { NativeCall(this, "AShooterWeapon.DrawDebugSphereClient", StartLine, EndLine, lineColor, radius); } + void EndDodging() { NativeCall(this, "AShooterWeapon.EndDodging"); } + void EndMeleeStepImpulse() { NativeCall(this, "AShooterWeapon.EndMeleeStepImpulse"); } + bool ForcesTPVCameraOffset() { return NativeCall(this, "AShooterWeapon.ForcesTPVCameraOffset"); } + FColor* GetCrosshairColor(FColor* result) { return NativeCall(this, "AShooterWeapon.GetCrosshairColor", result); } + FRotator* GetInputRotationLimits(FRotator* result) { return NativeCall(this, "AShooterWeapon.GetInputRotationLimits", result); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterWeapon.GetPrivateStaticClass", Package); } + UAnimSequence* GetStandingAnimation(float* OutBlendInTime, float* OutBlendOutTime) { return NativeCall(this, "AShooterWeapon.GetStandingAnimation", OutBlendInTime, OutBlendOutTime); } + FString* GetTutorialHintString(FString* result) { return NativeCall(this, "AShooterWeapon.GetTutorialHintString", result); } + void MulticastAssociatedItemNetInfo(FItemNetInfo AssociatedNetInfo, bool bIsPrimaryItem) { NativeCall(this, "AShooterWeapon.MulticastAssociatedItemNetInfo", AssociatedNetInfo, bIsPrimaryItem); } + void NetCancelCurrentWeaponAttack(float NextAttackTime, bool bOverrideCurrentTime, bool bIsAbsoluteTime) { NativeCall(this, "AShooterWeapon.NetCancelCurrentWeaponAttack", NextAttackTime, bOverrideCurrentTime, bIsAbsoluteTime); } + void NetSetAimMagnetism(float NewMagnetism) { NativeCall(this, "AShooterWeapon.NetSetAimMagnetism", NewMagnetism); } + void NetSetDebugMelee(bool Discrete, int DebugMelee) { NativeCall(this, "AShooterWeapon.NetSetDebugMelee", Discrete, DebugMelee); } + void NetSetStepImpulsing(bool NewImpulsing) { NativeCall(this, "AShooterWeapon.NetSetStepImpulsing", NewImpulsing); } + void NetSetUseInterpolatedLocation(bool NewValue) { NativeCall(this, "AShooterWeapon.NetSetUseInterpolatedLocation", NewValue); } + void NetWeaponStartAttack(int weaponAttackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.NetWeaponStartAttack", weaponAttackIndex, bUseAltAnim); } + void Net_CancelReload() { NativeCall(this, "AShooterWeapon.Net_CancelReload"); } + void Net_OnAttackBlockedByShield(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.Net_OnAttackBlockedByShield", CauserWeapon, AttackIndex); } + void Net_OnAttackBlockedByWeapon(AShooterWeapon* CauserWeapon, int AttackIndex) { NativeCall(this, "AShooterWeapon.Net_OnAttackBlockedByWeapon", CauserWeapon, AttackIndex); } + void Net_OnEquipSecondaryWeapon(bool bWeaponHasAmmo, bool bSkipAnimation) { NativeCall(this, "AShooterWeapon.Net_OnEquipSecondaryWeapon", bWeaponHasAmmo, bSkipAnimation); } + void Net_OnSwitchSideWeapon(bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.Net_OnSwitchSideWeapon", bIsPrimaryWeapon); } + void Net_PlayEquipAnimAndFinishSwitch(bool bIsPrimary, bool bHasNoAmmo) { NativeCall(this, "AShooterWeapon.Net_PlayEquipAnimAndFinishSwitch", bIsPrimary, bHasNoAmmo); } + void Net_SetCombatState(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd) { NativeCall(this, "AShooterWeapon.Net_SetCombatState", bNewCombatState, bUseAnimation, overrideTimeUntilEnd); } + void Net_SetExtraWeaponAttack(TArray* newStoredAttacks) { NativeCall*>(this, "AShooterWeapon.Net_SetExtraWeaponAttack", newStoredAttacks); } + void Net_SetLockOnState(bool bNewState) { NativeCall(this, "AShooterWeapon.Net_SetLockOnState", bNewState); } + void Net_SetLockOnTarget(AActor* newLockOnTarget) { NativeCall(this, "AShooterWeapon.Net_SetLockOnTarget", newLockOnTarget); } + void Net_StartSideUnequip(bool bIsPrimaryUnequip, bool bSkipAnimation, bool bIsSwitch) { NativeCall(this, "AShooterWeapon.Net_StartSideUnequip", bIsPrimaryUnequip, bSkipAnimation, bIsSwitch); } + void Net_SwitchSideWeapon(UPrimalItem* aPrimalItem, bool bIsPrimaryWeapon) { NativeCall(this, "AShooterWeapon.Net_SwitchSideWeapon", aPrimalItem, bIsPrimaryWeapon); } + void Net_UpdateWeaponAttackIndex(int WeaponAttackIndex) { NativeCall(this, "AShooterWeapon.Net_UpdateWeaponAttackIndex", WeaponAttackIndex); } + void OnInstigatorPlayDyingEvent() { NativeCall(this, "AShooterWeapon.OnInstigatorPlayDyingEvent"); } + void PlayUseHarvestAnimation() { NativeCall(this, "AShooterWeapon.PlayUseHarvestAnimation"); } + void PlayWeaponBreakAnimation() { NativeCall(this, "AShooterWeapon.PlayWeaponBreakAnimation"); } + FRotator* ProcessRotationInputMultipliers(FRotator* result, FRotator rotInput) { return NativeCall(this, "AShooterWeapon.ProcessRotationInputMultipliers", result, rotInput); } + bool RespondToMoveInput(FVector* MoveDir) { return NativeCall(this, "AShooterWeapon.RespondToMoveInput", MoveDir); } + bool RespondToMoveStop(bool bIsForwardMovement) { return NativeCall(this, "AShooterWeapon.RespondToMoveStop", bIsForwardMovement); } + void ServerCancelCurrentWeaponAttack(float NextAttackTime, bool bOverrideCurrentTime, bool bIsAbsoluteTime) { NativeCall(this, "AShooterWeapon.ServerCancelCurrentWeaponAttack", NextAttackTime, bOverrideCurrentTime, bIsAbsoluteTime); } + void ServerCancelReload() { NativeCall(this, "AShooterWeapon.ServerCancelReload"); } + void ServerCheckNextSecondaryWeapon() { NativeCall(this, "AShooterWeapon.ServerCheckNextSecondaryWeapon"); } + void ServerEndMeleeStepImpulse() { NativeCall(this, "AShooterWeapon.ServerEndMeleeStepImpulse"); } + void ServerOnAttackBlocked(AShooterWeapon* CauserWeapon, int AttackIndex, bool bBlockedByShield, bool bCharacterWasDodging) { NativeCall(this, "AShooterWeapon.ServerOnAttackBlocked", CauserWeapon, AttackIndex, bBlockedByShield, bCharacterWasDodging); } + void ServerOnHitReceived(AShooterWeapon* CauserWeapon, bool bWasDodging, float ShieldDefenseBrokenPowerDifference) { NativeCall(this, "AShooterWeapon.ServerOnHitReceived", CauserWeapon, bWasDodging, ShieldDefenseBrokenPowerDifference); } + void ServerOnPawnSetRunning(bool NewRunValue, bool bSkipAnim) { NativeCall(this, "AShooterWeapon.ServerOnPawnSetRunning", NewRunValue, bSkipAnim); } + void ServerSetChargeRunning(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ServerSetChargeRunning", newChargeRunning); } + void ServerSetColorizeRegion(int theRegion, bool bValToUse) { NativeCall(this, "AShooterWeapon.ServerSetColorizeRegion", theRegion, bValToUse); } + void ServerStartAltFire() { NativeCall(this, "AShooterWeapon.ServerStartAltFire"); } + void ServerStartChargeRunning(bool newChargeRunning) { NativeCall(this, "AShooterWeapon.ServerStartChargeRunning", newChargeRunning); } + void ServerStartDodge(int dodgeDirIndex) { NativeCall(this, "AShooterWeapon.ServerStartDodge", dodgeDirIndex); } + void ServerStartFire(int attackIndex, bool bUseAltAnim, bool bOverrideCurrentAttack) { NativeCall(this, "AShooterWeapon.ServerStartFire", attackIndex, bUseAltAnim, bOverrideCurrentAttack); } + void ServerStartMeleeStepImpulse(FVector MyVec) { NativeCall(this, "AShooterWeapon.ServerStartMeleeStepImpulse", MyVec); } + void ServerStartReload(bool bReloadLeftWeapon, bool bIsChainedReload) { NativeCall(this, "AShooterWeapon.ServerStartReload", bReloadLeftWeapon, bIsChainedReload); } + void ServerStartSecondaryAction() { NativeCall(this, "AShooterWeapon.ServerStartSecondaryAction"); } + void ServerStopAltFire() { NativeCall(this, "AShooterWeapon.ServerStopAltFire"); } + void ServerStopFire(int attackIndex, bool bUseAltAnim) { NativeCall(this, "AShooterWeapon.ServerStopFire", attackIndex, bUseAltAnim); } + void ServerSwitchToNextLoadedWeapon() { NativeCall(this, "AShooterWeapon.ServerSwitchToNextLoadedWeapon"); } + void ServerToggleAccessory() { NativeCall(this, "AShooterWeapon.ServerToggleAccessory"); } + void Server_SetCombatState(bool bNewCombatState, bool bUseAnimation, float overrideTimeUntilEnd, ECombatChangeReason::Type Reason) { NativeCall(this, "AShooterWeapon.Server_SetCombatState", bNewCombatState, bUseAnimation, overrideTimeUntilEnd, Reason); } + void Server_SetExtraWeaponAttack(APrimalBuff* WeaponAttackBuff, int BuffAttackIndex) { NativeCall(this, "AShooterWeapon.Server_SetExtraWeaponAttack", WeaponAttackBuff, BuffAttackIndex); } + void Server_SetLockOnTarget(AActor* newLockOnTarget) { NativeCall(this, "AShooterWeapon.Server_SetLockOnTarget", newLockOnTarget); } + bool ShouldBlockAttack(FHitResult* HitInfo, FVector* ShotDirection, bool bBlockAllPointDamage, AActor* DamageCauser, bool bOnlyCheckDirection) { return NativeCall(this, "AShooterWeapon.ShouldBlockAttack", HitInfo, ShotDirection, bBlockAllPointDamage, DamageCauser, bOnlyCheckDirection); } + void StartMeleeStepImpulse(FVector* DodgeDir) { NativeCall(this, "AShooterWeapon.StartMeleeStepImpulse", DodgeDir); } + void StartSecondaryActionEvent() { NativeCall(this, "AShooterWeapon.StartSecondaryActionEvent"); } + void StartUnequip() { NativeCall(this, "AShooterWeapon.StartUnequip"); } + void StartUnequipEvent() { NativeCall(this, "AShooterWeapon.StartUnequipEvent"); } + static void StaticRegisterNativesAShooterWeapon() { NativeCall(nullptr, "AShooterWeapon.StaticRegisterNativesAShooterWeapon"); } + void TickMeleeStepImpulse() { NativeCall(this, "AShooterWeapon.TickMeleeStepImpulse"); } + void UpdateChargeRunning(float DeltaSeconds) { NativeCall(this, "AShooterWeapon.UpdateChargeRunning", DeltaSeconds); } + void YarkDiscreteMeleeSwingSweep(float DeltaTime, int StartPoint, int EndPoint) { NativeCall(this, "AShooterWeapon.YarkDiscreteMeleeSwingSweep", DeltaTime, StartPoint, EndPoint); } +}; + +struct AAIController : AController +{ + FVector& MoveTowardTargetOffsetField() { return *GetNativePointerField(this, "AAIController.MoveTowardTargetOffset"); } + FVector& TargetFocalPositionOffsetField() { return *GetNativePointerField(this, "AAIController.TargetFocalPositionOffset"); } + float& ReachedDestinationThresholdOffsetField() { return *GetNativePointerField(this, "AAIController.ReachedDestinationThresholdOffset"); } + float& MovementGoalHeightField() { return *GetNativePointerField(this, "AAIController.MovementGoalHeight"); } + unsigned int& RequestMoveIDField() { return *GetNativePointerField(this, "AAIController.RequestMoveID"); } + TWeakObjectPtr& CurrentGoalField() { return *GetNativePointerField*>(this, "AAIController.CurrentGoal"); } + FVector& MoveSegmentDirectionField() { return *GetNativePointerField(this, "AAIController.MoveSegmentDirection"); } + int& MoveSegmentStartIndexField() { return *GetNativePointerField(this, "AAIController.MoveSegmentStartIndex"); } + int& MoveSegmentEndIndexField() { return *GetNativePointerField(this, "AAIController.MoveSegmentEndIndex"); } + float& CurrentAcceptanceRadiusField() { return *GetNativePointerField(this, "AAIController.CurrentAcceptanceRadius"); } + + // Bit fields + + BitFieldValue bLOSflag() { return { this, "AAIController.bLOSflag" }; } + BitFieldValue bSkipExtraLOSChecks() { return { this, "AAIController.bSkipExtraLOSChecks" }; } + BitFieldValue bAllowStrafe() { return { this, "AAIController.bAllowStrafe" }; } + BitFieldValue bWantsPlayerState() { return { this, "AAIController.bWantsPlayerState" }; } + BitFieldValue bUse3DGoalRadius() { return { this, "AAIController.bUse3DGoalRadius" }; } + BitFieldValue bCurrentStopOnOverlap() { return { this, "AAIController.bCurrentStopOnOverlap" }; } + BitFieldValue bLastMoveReachedGoal() { return { this, "AAIController.bLastMoveReachedGoal" }; } + BitFieldValue bLastRequestedMoveToLocationWasPlayerCommand() { return { this, "AAIController.bLastRequestedMoveToLocationWasPlayerCommand" }; } + BitFieldValue bDebugPathing() { return { this, "AAIController.bDebugPathing" }; } + + // Functions + + UObject* GetUObjectInterfaceAIPerceptionListenerInterface() { return NativeCall(this, "AAIController.GetUObjectInterfaceAIPerceptionListenerInterface"); } + void AbortMove(FString* Reason, FAIRequestID RequestID, bool bResetVelocity, bool bSilent, char MessageFlags) { NativeCall(this, "AAIController.AbortMove", Reason, RequestID, bResetVelocity, bSilent, MessageFlags); } + void ClearFocus(char InPriority) { NativeCall(this, "AAIController.ClearFocus", InPriority); } + void FollowPathSegment(float DeltaTime) { NativeCall(this, "AAIController.FollowPathSegment", DeltaTime); } + FVector* GetFocalPoint(FVector* result) { return NativeCall(this, "AAIController.GetFocalPoint", result); } + AActor* GetFocusActor() { return NativeCall(this, "AAIController.GetFocusActor"); } + FVector* GetImmediateMoveDestination(FVector* result) { return NativeCall(this, "AAIController.GetImmediateMoveDestination", result); } + FVector* GetMoveFocus(FVector* result) { return NativeCall(this, "AAIController.GetMoveFocus", result); } + void GetPlayerViewPoint(FVector* out_Location, FRotator* out_Rotation) { NativeCall(this, "AAIController.GetPlayerViewPoint", out_Location, out_Rotation); } + bool HasPartialPath() { return NativeCall(this, "AAIController.HasPartialPath"); } + bool HasReached(FVector* TestPoint, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestPoint, InAcceptanceRadius, bExactSpot); } + bool HasReached(AActor* TestGoal, float InAcceptanceRadius, bool bExactSpot) { return NativeCall(this, "AAIController.HasReached", TestGoal, InAcceptanceRadius, bExactSpot); } + bool HasReachedCurrentTarget(FVector* CurrentLocation) { return NativeCall(this, "AAIController.HasReachedCurrentTarget", CurrentLocation); } + bool HasReachedDestination(FVector* CurrentLocation) { return NativeCall(this, "AAIController.HasReachedDestination", CurrentLocation); } + bool HasReachedInternal(FVector* Goal, float GoalRadius, float GoalHalfHeight, FVector* AgentLocation, float RadiusThreshold, bool bUseAgentRadius) { return NativeCall(this, "AAIController.HasReachedInternal", Goal, GoalRadius, GoalHalfHeight, AgentLocation, RadiusThreshold, bUseAgentRadius); } + void K2_ClearFocus() { NativeCall(this, "AAIController.K2_ClearFocus"); } + void K2_SetFocalPoint(FVector FP, bool bOffsetFromBase) { NativeCall(this, "AAIController.K2_SetFocalPoint", FP, bOffsetFromBase); } + void K2_SetFocus(AActor* NewFocus) { NativeCall(this, "AAIController.K2_SetFocus", NewFocus); } + bool LineOfSightTo(AActor* Other, FVector ViewPoint, bool bAlternateChecks) { return NativeCall(this, "AAIController.LineOfSightTo", Other, ViewPoint, bAlternateChecks); } + EPathFollowingRequestResult::Type MoveToActor(AActor* Goal, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bCanStrafe, TSubclassOf FilterClass) { return NativeCall>(this, "AAIController.MoveToActor", Goal, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bCanStrafe, FilterClass); } + EPathFollowingRequestResult::Type MoveToLocation(FVector* Dest, float AcceptanceRadius, bool bStopOnOverlap, bool bUsePathfinding, bool bProjectDestinationToNavigation, bool bCanStrafe, TSubclassOf FilterClass, bool WasPlayerCommand) { return NativeCall, bool>(this, "AAIController.MoveToLocation", Dest, AcceptanceRadius, bStopOnOverlap, bUsePathfinding, bProjectDestinationToNavigation, bCanStrafe, FilterClass, WasPlayerCommand); } + void OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result) { NativeCall(this, "AAIController.OnMoveCompleted", RequestID, Result); } + void OnPathFinished(EPathFollowingResult::Type Result) { NativeCall(this, "AAIController.OnPathFinished", Result); } + void Possess(APawn* InPawn) { NativeCall(this, "AAIController.Possess", InPawn); } + void PostInitializeComponents() { NativeCall(this, "AAIController.PostInitializeComponents"); } + void PostRegisterAllComponents() { NativeCall(this, "AAIController.PostRegisterAllComponents"); } + void Reset() { NativeCall(this, "AAIController.Reset"); } + void ResetMovement() { NativeCall(this, "AAIController.ResetMovement"); } + void SetFocalPoint(FVector FP, bool bOffsetFromBase, char InPriority) { NativeCall(this, "AAIController.SetFocalPoint", FP, bOffsetFromBase, InPriority); } + void SetFocus(AActor* NewFocus, char InPriority) { NativeCall(this, "AAIController.SetFocus", NewFocus, InPriority); } + void SetMoveSegment(int SegmentStartIndex) { NativeCall(this, "AAIController.SetMoveSegment", SegmentStartIndex); } + void StopMovement() { NativeCall(this, "AAIController.StopMovement"); } + void Tick(float DeltaTime) { NativeCall(this, "AAIController.Tick", DeltaTime); } + void UnPossess() { NativeCall(this, "AAIController.UnPossess"); } + void UpdateControlRotation(float DeltaTime, bool bUpdatePawn) { NativeCall(this, "AAIController.UpdateControlRotation", DeltaTime, bUpdatePawn); } + void UpdateMoveFocus() { NativeCall(this, "AAIController.UpdateMoveFocus"); } + void UpdatePathSegment() { NativeCall(this, "AAIController.UpdatePathSegment"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AAIController.GetPrivateStaticClass", Package); } + void OnPossess(APawn* PossessedPawn) { NativeCall(this, "AAIController.OnPossess", PossessedPawn); } + static void StaticRegisterNativesAAIController() { NativeCall(nullptr, "AAIController.StaticRegisterNativesAAIController"); } +}; + +struct APrimalDinoAIController : AAIController +{ + float& DieIfLeftWaterAbsoluteMinimumWaterDestinationHeightMultiField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterAbsoluteMinimumWaterDestinationHeightMulti"); } + float& DieIfLeftWaterAbsoluteMinimumWaterDestinationExtraHeightField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterAbsoluteMinimumWaterDestinationExtraHeight"); } + float& DieIfLeftWaterWanderMinimumWaterHeightMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterWanderMinimumWaterHeightMultiplier"); } + float& DieIfLeftWaterReachedRadiusDistanceCheckMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterReachedRadiusDistanceCheckMultiplier"); } + float& DieIfLeftWaterTargetUnsubmergedTimeoutField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterTargetUnsubmergedTimeout"); } + float& LandDinoMaxWaterTargetDepthCapsuleMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.LandDinoMaxWaterTargetDepthCapsuleMultiplier"); } + float& ExtraCorpseTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.ExtraCorpseTargetingRange"); } + float& FleeFromAttackCoolDownTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.FleeFromAttackCoolDownTime"); } + float& FleeFromAttackTimeLimitField() { return *GetNativePointerField(this, "APrimalDinoAIController.FleeFromAttackTimeLimit"); } + float& ForceFleeUnderHealthPercentageField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForceFleeUnderHealthPercentage"); } + bool& bFleeOnCriticalHealthField() { return *GetNativePointerField(this, "APrimalDinoAIController.bFleeOnCriticalHealth"); } + float& DieIfLeftWaterTargetingRequiresFreeDepthField() { return *GetNativePointerField(this, "APrimalDinoAIController.DieIfLeftWaterTargetingRequiresFreeDepth"); } + long double& LastBlockadeCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeCheckTime"); } + long double& LastMovingAroundBlockadeTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastMovingAroundBlockadeTime"); } + float& MovingAroundBlockadeDirectionField() { return *GetNativePointerField(this, "APrimalDinoAIController.MovingAroundBlockadeDirection"); } + FVector& MovingAroundBlockadePointField() { return *GetNativePointerField(this, "APrimalDinoAIController.MovingAroundBlockadePoint"); } + float& LastBlockadeWidthField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeWidth"); } + FVector& LastBlockadeHitNormalField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeHitNormal"); } + FVector& LastBlockadeHitLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastBlockadeHitLocation"); } + FVector& StartMovingAroundBlockadeLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.StartMovingAroundBlockadeLocation"); } + AActor* LastMovingAroundBlockadeActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastMovingAroundBlockadeActor"); } + AActor* TargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.Target"); } + float& AttackDestinationOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackDestinationOffset"); } + bool& bUseOverlapTargetCheckField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseOverlapTargetCheck"); } + bool& bNotifyNeighborsWithoutDamageField() { return *GetNativePointerField(this, "APrimalDinoAIController.bNotifyNeighborsWithoutDamage"); } + bool& bUseBPShouldNotifyNeighborField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseBPShouldNotifyNeighbor"); } + bool& bRequireAbsoluteDamageForNeighborNotificationField() { return *GetNativePointerField(this, "APrimalDinoAIController.bRequireAbsoluteDamageForNeighborNotification"); } + float& AboveDeltaZAttackRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.AboveDeltaZAttackRange"); } + float& BelowDeltaZAttackRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.BelowDeltaZAttackRange"); } + float& WildAboveDeltaZTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.WildAboveDeltaZTargetingRange"); } + float& WildBelowDeltaZTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.WildBelowDeltaZTargetingRange"); } + bool& bWildUseDeltaZTargetingForFlyerPawnOrBigDinoField() { return *GetNativePointerField(this, "APrimalDinoAIController.bWildUseDeltaZTargetingForFlyerPawnOrBigDino"); } + bool& bDontWanderField() { return *GetNativePointerField(this, "APrimalDinoAIController.bDontWander"); } + bool& bOnlyOverlapTargetCorpsesUnlessHasTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.bOnlyOverlapTargetCorpsesUnlessHasTarget"); } + float& NaturalTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.NaturalTargetingRange"); } + float& TamedTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedTargetingRange"); } + float& TamedCorpseFoodTargetingRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedCorpseFoodTargetingRange"); } + float& WanderRandomDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderRandomDistanceAmount"); } + float& FlyingWanderFixedDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoAIController.FlyingWanderFixedDistanceAmount"); } + float& FlyingWanderRandomDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoAIController.FlyingWanderRandomDistanceAmount"); } + float& MaxFlyingTargetDeltaZField() { return *GetNativePointerField(this, "APrimalDinoAIController.MaxFlyingTargetDeltaZ"); } + float& WanderFlyingZScalerField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderFlyingZScaler"); } + float& WanderFlyingClampZHeightAboveGroundField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderFlyingClampZHeightAboveGround"); } + float& WanderFlyingMinZHeightAboveGroundField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderFlyingMinZHeightAboveGround"); } + float& WanderFixedDistanceAmountField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderFixedDistanceAmount"); } + bool& bUseAggroField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseAggro"); } + float& MinAggroValueField() { return *GetNativePointerField(this, "APrimalDinoAIController.MinAggroValue"); } + float& AggroToAddUponRemovingTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroToAddUponRemovingTarget"); } + float& AggroToAddUponAcquiringTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroToAddUponAcquiringTarget"); } + float& AggroFactorDecreaseSpeedField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroFactorDecreaseSpeed"); } + float& AggroFactorDecreaseGracePeriodField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroFactorDecreaseGracePeriod"); } + float& AggroFactorDamagePercentageMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroFactorDamagePercentageMultiplier"); } + float& AggroNotifyNeighborsMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroNotifyNeighborsMultiplier"); } + float& AggroNotifyNeighborsRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroNotifyNeighborsRange"); } + float& AggroNotifyNeighborsRangeFalloffField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroNotifyNeighborsRangeFalloff"); } + float& TargetingDistanceReductionFactorLinearField() { return *GetNativePointerField(this, "APrimalDinoAIController.TargetingDistanceReductionFactorLinear"); } + float& TargetingDistanceReductionFactorExponentField() { return *GetNativePointerField(this, "APrimalDinoAIController.TargetingDistanceReductionFactorExponent"); } + float& BeyondTargetingRangeAggroAdditionField() { return *GetNativePointerField(this, "APrimalDinoAIController.BeyondTargetingRangeAggroAddition"); } + float& AggroFactorDesirabilityMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.AggroFactorDesirabilityMultiplier"); } + float& AttackRangeField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackRange"); } + float& OrbitTargetRangeMinField() { return *GetNativePointerField(this, "APrimalDinoAIController.OrbitTargetRangeMin"); } + float& OrbitTargetSpreadField() { return *GetNativePointerField(this, "APrimalDinoAIController.OrbitTargetSpread"); } + float& AttackIntervalField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackInterval"); } + float& AttackRotationRangeDegreesField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackRotationRangeDegrees"); } + float& AttackRotationGroundSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackRotationGroundSpeedMultiplier"); } + float& RangeTargetWildDinosMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.RangeTargetWildDinosMultiplier"); } + FRotator& AttackRotationRateField() { return *GetNativePointerField(this, "APrimalDinoAIController.AttackRotationRate"); } + bool& bFocusOnTargetDuringAttackField() { return *GetNativePointerField(this, "APrimalDinoAIController.bFocusOnTargetDuringAttack"); } + FVector& FlyingMoveTowardsTargetOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.FlyingMoveTowardsTargetOffset"); } + FVector& CombatFlyingMoveTowardsTargetOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.CombatFlyingMoveTowardsTargetOffset"); } + FVector& FlyingTargetFocalPositionOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.FlyingTargetFocalPositionOffset"); } + float& FlyingReachedDestinationThresholdOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.FlyingReachedDestinationThresholdOffset"); } + float& SeekingIntervalCheckToFlyField() { return *GetNativePointerField(this, "APrimalDinoAIController.SeekingIntervalCheckToFly"); } + float& SeekingPercentChanceToFlyField() { return *GetNativePointerField(this, "APrimalDinoAIController.SeekingPercentChanceToFly"); } + float& SeekingIntervalCheckToLandField() { return *GetNativePointerField(this, "APrimalDinoAIController.SeekingIntervalCheckToLand"); } + float& SeekingPercentChanceToLandField() { return *GetNativePointerField(this, "APrimalDinoAIController.SeekingPercentChanceToLand"); } + float& SwimmingReachedDestinationThresholdZOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.SwimmingReachedDestinationThresholdZOffset"); } + float& MinimumWanderGroundNormalZField() { return *GetNativePointerField(this, "APrimalDinoAIController.MinimumWanderGroundNormalZ"); } + float& FollowStoppingDistanceField() { return *GetNativePointerField(this, "APrimalDinoAIController.FollowStoppingDistance"); } + bool& bUseOverlapTargetCheckTracesField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseOverlapTargetCheckTraces"); } + bool& bUseAlternateMovePointField() { return *GetNativePointerField(this, "APrimalDinoAIController.bUseAlternateMovePoint"); } + bool& bTotallyIgnoreWaterTargetsField() { return *GetNativePointerField(this, "APrimalDinoAIController.bTotallyIgnoreWaterTargets"); } + bool& bWaterDinoAllowUnsubmergedTargetsField() { return *GetNativePointerField(this, "APrimalDinoAIController.bWaterDinoAllowUnsubmergedTargets"); } + bool& bAICanTargetRaftsField() { return *GetNativePointerField(this, "APrimalDinoAIController.bAICanTargetRafts"); } + FVector& LastCheckAttackRangePawnLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangePawnLocation"); } + FVector& LastCheckAttackRangeClosestPointField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeClosestPoint"); } + FVector& LastCheckAttackRangeTargetLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeTargetLocation"); } + AActor* LastCheckAttackRangeTargetField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCheckAttackRangeTarget"); } + TArray& TamedAITargetingRangeMultipliersField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.TamedAITargetingRangeMultipliers"); } + float& MateBoostAggroNotifyNeighborsMultiplierField() { return *GetNativePointerField(this, "APrimalDinoAIController.MateBoostAggroNotifyNeighborsMultiplier"); } + TArray>& AggroNotifyNeighborsClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoAIController.AggroNotifyNeighborsClasses"); } + float& MoveAroundBlockadeAdditionalWidthField() { return *GetNativePointerField(this, "APrimalDinoAIController.MoveAroundBlockadeAdditionalWidth"); } + float& MoveAroundObjectMaxVelocityField() { return *GetNativePointerField(this, "APrimalDinoAIController.MoveAroundObjectMaxVelocity"); } + float& ForcedAggroTimeCounterField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForcedAggroTimeCounter"); } + float& TamedMaxFollowDistanceField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedMaxFollowDistance"); } + float& LandDinoMaxFlyerTargetDeltaZField() { return *GetNativePointerField(this, "APrimalDinoAIController.LandDinoMaxFlyerTargetDeltaZ"); } + float& NaturalMinDepthZField() { return *GetNativePointerField(this, "APrimalDinoAIController.NaturalMinDepthZ"); } + float& NaturalMaxDepthZField() { return *GetNativePointerField(this, "APrimalDinoAIController.NaturalMaxDepthZ"); } + float& TargetsRequireMinimumDistanceFromShoreField() { return *GetNativePointerField(this, "APrimalDinoAIController.TargetsRequireMinimumDistanceFromShore"); } + float& WanderRequireMinimumDistanceFromShoreField() { return *GetNativePointerField(this, "APrimalDinoAIController.WanderRequireMinimumDistanceFromShore"); } + TWeakObjectPtr& ForcedAttackTargetField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.ForcedAttackTarget"); } + int& ForcedAttackEnemyTeamField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForcedAttackEnemyTeam"); } + long double& LastForcedAttackEnemyTeamTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastForcedAttackEnemyTeamTime"); } + int& LastCharacterTargetTeamField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastCharacterTargetTeam"); } + float& ForcedFleeDurationField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForcedFleeDuration"); } + float& MinAttackIntervalForFleeingField() { return *GetNativePointerField(this, "APrimalDinoAIController.MinAttackIntervalForFleeing"); } + float& MinLocChangeIntervalForFleeingField() { return *GetNativePointerField(this, "APrimalDinoAIController.MinLocChangeIntervalForFleeing"); } + float& PercentageTorporForFleeingField() { return *GetNativePointerField(this, "APrimalDinoAIController.PercentageTorporForFleeing"); } + float& DamagedForceAggroIntervalField() { return *GetNativePointerField(this, "APrimalDinoAIController.DamagedForceAggroInterval"); } + long double& ForceAggroUntilTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForceAggroUntilTime"); } + long double& LastExecutedAttackTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastExecutedAttackTime"); } + long double& LastForcedFleeTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastForcedFleeTime"); } + long double& LastFleeLocCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastFleeLocCheckTime"); } + FVector& LastFleeLocCheckField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastFleeLocCheck"); } + int& NumAlliesToAttackField() { return *GetNativePointerField(this, "APrimalDinoAIController.NumAlliesToAttack"); } + float& FindLandingPositionZOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.FindLandingPositionZOffset"); } + float& TamedFollowAcceptanceRadiusOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedFollowAcceptanceRadiusOffset"); } + float& TamedFollowAcceptanceHeightOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.TamedFollowAcceptanceHeightOffset"); } + float& AIFlightMaxLandingZDistanceField() { return *GetNativePointerField(this, "APrimalDinoAIController.AIFlightMaxLandingZDistance"); } + long double& ForcedMoveToUntilTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForcedMoveToUntilTime"); } + long double& LastHadAggroEntriesTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastHadAggroEntriesTime"); } + TArray>& WildTargetingDesireMultiplierClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoAIController.WildTargetingDesireMultiplierClasses"); } + TArray& WildTargetingDesireMultiplierValuesField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.WildTargetingDesireMultiplierValues"); } + TArray>& TamedTargetingDesireMultiplierClassesField() { return *GetNativePointerField>*>(this, "APrimalDinoAIController.TamedTargetingDesireMultiplierClasses"); } + TArray& TamedTargetingDesireMultiplierValuesField() { return *GetNativePointerField*>(this, "APrimalDinoAIController.TamedTargetingDesireMultiplierValues"); } + float& OceanAdditionalUseRadiusField() { return *GetNativePointerField(this, "APrimalDinoAIController.OceanAdditionalUseRadius"); } + float& Teleport_CheckInterval_MINField() { return *GetNativePointerField(this, "APrimalDinoAIController.Teleport_CheckInterval_MIN"); } + float& Teleport_CheckInterval_MAXField() { return *GetNativePointerField(this, "APrimalDinoAIController.Teleport_CheckInterval_MAX"); } + float& Teleport_CheckInterval_CurrentField() { return *GetNativePointerField(this, "APrimalDinoAIController.Teleport_CheckInterval_Current"); } + long double& LastTeleportCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastTeleportCheckTime"); } + AActor* CurrentMoveToActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.CurrentMoveToActor"); } + AActor* LastValidMoveToActorField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastValidMoveToActor"); } + FVector& DynamicTargetActor_RelLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.DynamicTargetActor_RelLocation"); } + FVector& DynamicTargetActor_RelLocation_RandOffsetField() { return *GetNativePointerField(this, "APrimalDinoAIController.DynamicTargetActor_RelLocation_RandOffset"); } + int& RaftMoveToMaxNumRetriesField() { return *GetNativePointerField(this, "APrimalDinoAIController.RaftMoveToMaxNumRetries"); } + FVector& LastConfirmedMoveLocationField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastConfirmedMoveLocation"); } + long double& LastConfirmedMoveTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastConfirmedMoveTime"); } + float& RequiredConfirmMoveDistanceField() { return *GetNativePointerField(this, "APrimalDinoAIController.RequiredConfirmMoveDistance"); } + float& ForceAbortAfterUnconfirmedMoveTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.ForceAbortAfterUnconfirmedMoveTime"); } + float& AbortMoveCheckInterval_MINField() { return *GetNativePointerField(this, "APrimalDinoAIController.AbortMoveCheckInterval_MIN"); } + float& AbortMoveCheckInterval_MAXField() { return *GetNativePointerField(this, "APrimalDinoAIController.AbortMoveCheckInterval_MAX"); } + float& AbortMoveCheckInterval_CurrentField() { return *GetNativePointerField(this, "APrimalDinoAIController.AbortMoveCheckInterval_Current"); } + long double& LastAbortMoveCheckTimeField() { return *GetNativePointerField(this, "APrimalDinoAIController.LastAbortMoveCheckTime"); } + + // Bit fields + + BitFieldValue bForcedAggro() { return { this, "APrimalDinoAIController.bForcedAggro" }; } + BitFieldValue bIgnoreMoveAroundBlockade() { return { this, "APrimalDinoAIController.bIgnoreMoveAroundBlockade" }; } + BitFieldValue bFlyingUseMoveAroundBlockade() { return { this, "APrimalDinoAIController.bFlyingUseMoveAroundBlockade" }; } + BitFieldValue bUseGeometryInsteadOfStationObjForFreeDepthTest() { return { this, "APrimalDinoAIController.bUseGeometryInsteadOfStationObjForFreeDepthTest" }; } + BitFieldValue bNotifyBPTargetSet() { return { this, "APrimalDinoAIController.bNotifyBPTargetSet" }; } + BitFieldValue bUseBPSetupFindTarget() { return { this, "APrimalDinoAIController.bUseBPSetupFindTarget" }; } + BitFieldValue bNotAllowedToFindTargets() { return { this, "APrimalDinoAIController.bNotAllowedToFindTargets" }; } + BitFieldValue bAllowForceFleeToSameTargetingTeam() { return { this, "APrimalDinoAIController.bAllowForceFleeToSameTargetingTeam" }; } + BitFieldValue bUseBPUpdateBestTarget() { return { this, "APrimalDinoAIController.bUseBPUpdateBestTarget" }; } + BitFieldValue bTargetChanged() { return { this, "APrimalDinoAIController.bTargetChanged" }; } + BitFieldValue bAttackForcesRunning() { return { this, "APrimalDinoAIController.bAttackForcesRunning" }; } + BitFieldValue bUseFlyingTargetOffsets() { return { this, "APrimalDinoAIController.bUseFlyingTargetOffsets" }; } + BitFieldValue bUseSwimmingTargetOffsets() { return { this, "APrimalDinoAIController.bUseSwimmingTargetOffsets" }; } + BitFieldValue bRidingDinoTargetPlayer() { return { this, "APrimalDinoAIController.bRidingDinoTargetPlayer" }; } + BitFieldValue bRidingPlayerTargetDino() { return { this, "APrimalDinoAIController.bRidingPlayerTargetDino" }; } + BitFieldValue bIgnoreWaterOrAmphibiousTargets() { return { this, "APrimalDinoAIController.bIgnoreWaterOrAmphibiousTargets" }; } + BitFieldValue bUseBPTargetingDesire() { return { this, "APrimalDinoAIController.bUseBPTargetingDesire" }; } + BitFieldValue bDisableForceFlee() { return { this, "APrimalDinoAIController.bDisableForceFlee" }; } + BitFieldValue bUseCombatMoveTowardsTargetOffset() { return { this, "APrimalDinoAIController.bUseCombatMoveTowardsTargetOffset" }; } + BitFieldValue bUseBPOverrideIgnoredByWildDino() { return { this, "APrimalDinoAIController.bUseBPOverrideIgnoredByWildDino" }; } + BitFieldValue bCanUseAttackStateOnTargetChange() { return { this, "APrimalDinoAIController.bCanUseAttackStateOnTargetChange" }; } + BitFieldValue bModifiedWanderRadius() { return { this, "APrimalDinoAIController.bModifiedWanderRadius" }; } + BitFieldValue bForceOnlyTargetingPlayerOrTamed() { return { this, "APrimalDinoAIController.bForceOnlyTargetingPlayerOrTamed" }; } + BitFieldValue bForceTargetingAllStructures() { return { this, "APrimalDinoAIController.bForceTargetingAllStructures" }; } + BitFieldValue bForceTargetDinoRider() { return { this, "APrimalDinoAIController.bForceTargetDinoRider" }; } + BitFieldValue bFlyerAllowWaterTargeting() { return { this, "APrimalDinoAIController.bFlyerAllowWaterTargeting" }; } + BitFieldValue bUseBPForceTargetDinoRider() { return { this, "APrimalDinoAIController.bUseBPForceTargetDinoRider" }; } + BitFieldValue bAlwaysStartledWhenAggroedByNeighbor() { return { this, "APrimalDinoAIController.bAlwaysStartledWhenAggroedByNeighbor" }; } + BitFieldValue bForceOnlyTargetingPlayers() { return { this, "APrimalDinoAIController.bForceOnlyTargetingPlayers" }; } + BitFieldValue bDinoAIForceOnlyTargetingShips() { return { this, "APrimalDinoAIController.bDinoAIForceOnlyTargetingShips" }; } + BitFieldValue bRestrictWanderingToSeamlessWorldGridExtents() { return { this, "APrimalDinoAIController.bRestrictWanderingToSeamlessWorldGridExtents" }; } + BitFieldValue bEndForceFleeResetAggro() { return { this, "APrimalDinoAIController.bEndForceFleeResetAggro" }; } + BitFieldValue bWasForceFleeing() { return { this, "APrimalDinoAIController.bWasForceFleeing" }; } + BitFieldValue bIgnoreDockedShips() { return { this, "APrimalDinoAIController.bIgnoreDockedShips" }; } + BitFieldValue bUseBP_TamedOverrideHorizontalLandingRange() { return { this, "APrimalDinoAIController.bUseBP_TamedOverrideHorizontalLandingRange" }; } + BitFieldValue bFlyerWanderDefaultToOrigin() { return { this, "APrimalDinoAIController.bFlyerWanderDefaultToOrigin" }; } + BitFieldValue bUseTargetingDesireMultiWithTamedTargets() { return { this, "APrimalDinoAIController.bUseTargetingDesireMultiWithTamedTargets" }; } + BitFieldValue bUseOnRaftAbortMoveToChecks() { return { this, "APrimalDinoAIController.bUseOnRaftAbortMoveToChecks" }; } + BitFieldValue bPlayerTargetRequiresController() { return { this, "APrimalDinoAIController.bPlayerTargetRequiresController" }; } + + // Functions + + void AddToAggro(AActor* Attacker, float DamagePercent, bool bNotifyNeighbors, bool SetValue, bool bIsFromDamage, bool skipTeamCheck) { NativeCall(this, "APrimalDinoAIController.AddToAggro", Attacker, DamagePercent, bNotifyNeighbors, SetValue, bIsFromDamage, skipTeamCheck); } + bool AllowToReachGoal(FVector* GoalLoc) { return NativeCall(this, "APrimalDinoAIController.AllowToReachGoal", GoalLoc); } + void ApplyWeaponRangeOverrides(AShooterWeapon* Weapon) { NativeCall(this, "APrimalDinoAIController.ApplyWeaponRangeOverrides", Weapon); } + void AvoidOutOfWater() { NativeCall(this, "APrimalDinoAIController.AvoidOutOfWater"); } + bool CalculateAndSetWonderingAIState(bool* StateChanged) { return NativeCall(this, "APrimalDinoAIController.CalculateAndSetWonderingAIState", StateChanged); } + bool CanLand() { return NativeCall(this, "APrimalDinoAIController.CanLand"); } + bool CheckForForceAbortMove(FVector* GoalLoc) { return NativeCall(this, "APrimalDinoAIController.CheckForForceAbortMove", GoalLoc); } + bool CheckForTeleport(FVector TargetLocation) { return NativeCall(this, "APrimalDinoAIController.CheckForTeleport", TargetLocation); } + bool CheckMoveAroundBlockadePoint(FVector moveToPoint) { return NativeCall(this, "APrimalDinoAIController.CheckMoveAroundBlockadePoint", moveToPoint); } + void ClearAggroEntries() { NativeCall(this, "APrimalDinoAIController.ClearAggroEntries"); } + void Destroyed() { NativeCall(this, "APrimalDinoAIController.Destroyed"); } + void EndForceFleed_Implementation() { NativeCall(this, "APrimalDinoAIController.EndForceFleed_Implementation"); } + AActor* FindNewTarget(bool bDontSet) { return NativeCall(this, "APrimalDinoAIController.FindNewTarget", bDontSet); } + AActor* FindTarget(bool bDontSet) { return NativeCall(this, "APrimalDinoAIController.FindTarget", bDontSet); } + void FindTargets(int NumTargets, TArray* KnownTargets, TArray* FoundTargets, bool bDontSet) { NativeCall*, TArray*, bool>(this, "APrimalDinoAIController.FindTargets", NumTargets, KnownTargets, FoundTargets, bDontSet); } + void ForceLand() { NativeCall(this, "APrimalDinoAIController.ForceLand"); } + float GetAcceptanceHeightOffset() { return NativeCall(this, "APrimalDinoAIController.GetAcceptanceHeightOffset"); } + float GetAcceptanceRadiusOffset() { return NativeCall(this, "APrimalDinoAIController.GetAcceptanceRadiusOffset"); } + float GetAggroDesirability(AActor* InTarget) { return NativeCall(this, "APrimalDinoAIController.GetAggroDesirability", InTarget); } + AActor* GetAggroEntriesAttackerAtIndex(int Index) { return NativeCall(this, "APrimalDinoAIController.GetAggroEntriesAttackerAtIndex", Index); } + int GetAggroEntriesCount() { return NativeCall(this, "APrimalDinoAIController.GetAggroEntriesCount"); } + float GetAggroNotifyNeighborsRange_Implementation() { return NativeCall(this, "APrimalDinoAIController.GetAggroNotifyNeighborsRange_Implementation"); } + float GetAttackInterval() { return NativeCall(this, "APrimalDinoAIController.GetAttackInterval"); } + float GetAttackRange() { return NativeCall(this, "APrimalDinoAIController.GetAttackRange"); } + float GetAttackRotationGroundSpeedMultiplier() { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationGroundSpeedMultiplier"); } + float GetAttackRotationRangeDegrees() { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationRangeDegrees"); } + FRotator* GetAttackRotationRate(FRotator* result) { return NativeCall(this, "APrimalDinoAIController.GetAttackRotationRate", result); } + AActor* GetCorpseFoodTarget() { return NativeCall(this, "APrimalDinoAIController.GetCorpseFoodTarget"); } + char GetCurrentAttackIndex() { return NativeCall(this, "APrimalDinoAIController.GetCurrentAttackIndex"); } + FVector* GetLandingLocation(FVector* result) { return NativeCall(this, "APrimalDinoAIController.GetLandingLocation", result); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalDinoAIController.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetMinAttackRange() { return NativeCall(this, "APrimalDinoAIController.GetMinAttackRange"); } + FVector* GetRandomBiasedDestination(FVector* result, FVector LocOverride, float MinDistanceAmount, float RandomDistanceAmount, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(this, "APrimalDinoAIController.GetRandomBiasedDestination", result, LocOverride, MinDistanceAmount, RandomDistanceAmount, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation, GroundCheckSpreadOverride); } + FVector* GetRandomWanderDestination(FVector* result, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation) { return NativeCall(this, "APrimalDinoAIController.GetRandomWanderDestination", result, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation); } + AActor* GetTarget() { return NativeCall(this, "APrimalDinoAIController.GetTarget"); } + float GetTargetingDesire(AActor* InTarget) { return NativeCall(this, "APrimalDinoAIController.GetTargetingDesire", InTarget); } + FVector* GetWanderAroundActorDestination(FVector* result, APrimalDinoCharacter* dinoCharacter, FVector originalDestination) { return NativeCall(this, "APrimalDinoAIController.GetWanderAroundActorDestination", result, dinoCharacter, originalDestination); } + bool HumanIsWithinAttackRangeAndCalculateBestAttack(AActor* Other, bool* bAttackChanged) { return NativeCall(this, "APrimalDinoAIController.HumanIsWithinAttackRangeAndCalculateBestAttack", Other, bAttackChanged); } + bool IsForceTargetDinoRider(AShooterCharacter* playerTarget) { return NativeCall(this, "APrimalDinoAIController.IsForceTargetDinoRider", playerTarget); } + bool IsLogicPaused() { return NativeCall(this, "APrimalDinoAIController.IsLogicPaused"); } + bool IsPawnSwimmingTowardsOceanGoal() { return NativeCall(this, "APrimalDinoAIController.IsPawnSwimmingTowardsOceanGoal"); } + bool IsWithinAttackRange(AActor* Other, bool bForceUseLastAttackIndex) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRange", Other, bForceUseLastAttackIndex); } + bool IsWithinAttackRangeAndCalculateBestAttack(AActor* Other, bool* bAttackChanged) { return NativeCall(this, "APrimalDinoAIController.IsWithinAttackRangeAndCalculateBestAttack", Other, bAttackChanged); } + FVector* ModifyGoalLocation(FVector* result, FVector* GoalLoc) { return NativeCall(this, "APrimalDinoAIController.ModifyGoalLocation", result, GoalLoc); } + float ModifyReachedGoalRadius() { return NativeCall(this, "APrimalDinoAIController.ModifyReachedGoalRadius"); } + bool MoveAroundBlockade(FVector PreBumpLocation, AActor* BlockadeActor, UPrimitiveComponent* OtherComp, float BlockadeWidth, FVector HitNormal, FVector HitLocation, bool SkipBlockingCheck) { return NativeCall(this, "APrimalDinoAIController.MoveAroundBlockade", PreBumpLocation, BlockadeActor, OtherComp, BlockadeWidth, HitNormal, HitLocation, SkipBlockingCheck); } + void NotifyBump(FVector PreBumpLocation, AActor* Other, UPrimitiveComponent* OtherComp, FVector* HitNormal, FVector* HitLocation) { NativeCall(this, "APrimalDinoAIController.NotifyBump", PreBumpLocation, Other, OtherComp, HitNormal, HitLocation); } + void NotifyTakeDamage(float Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "APrimalDinoAIController.NotifyTakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void OnMoveCompleted(FAIRequestID RequestID, EPathFollowingResult::Type Result) { NativeCall(this, "APrimalDinoAIController.OnMoveCompleted", RequestID, Result); } + void OnReachedMoveToActor() { NativeCall(this, "APrimalDinoAIController.OnReachedMoveToActor"); } + void OnRep_CurrentMoveToActor() { NativeCall(this, "APrimalDinoAIController.OnRep_CurrentMoveToActor"); } + bool OverrideHasReachedGoalWithUseHeight(FVector* GoalLoc, float UseRadius, float UseHeight, float ZDelta) { return NativeCall(this, "APrimalDinoAIController.OverrideHasReachedGoalWithUseHeight", GoalLoc, UseRadius, UseHeight, ZDelta); } + void PauseBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.PauseBrainComponent", reason); } + void PlayStartledAnim() { NativeCall(this, "APrimalDinoAIController.PlayStartledAnim"); } + void Possess(APawn* InPawn) { NativeCall(this, "APrimalDinoAIController.Possess", InPawn); } + void RebootBrainComponent() { NativeCall(this, "APrimalDinoAIController.RebootBrainComponent"); } + void RecoverMovement() { NativeCall(this, "APrimalDinoAIController.RecoverMovement"); } + void ResetAccelerationFollowsRotation() { NativeCall(this, "APrimalDinoAIController.ResetAccelerationFollowsRotation"); } + void ResetGroundSpeed() { NativeCall(this, "APrimalDinoAIController.ResetGroundSpeed"); } + void ResetRotationRate() { NativeCall(this, "APrimalDinoAIController.ResetRotationRate"); } + void ResetRotationUseAcceleration() { NativeCall(this, "APrimalDinoAIController.ResetRotationUseAcceleration"); } + void RestartBrainComponent() { NativeCall(this, "APrimalDinoAIController.RestartBrainComponent"); } + void ResumeBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.ResumeBrainComponent", reason); } + void SetAttackGroundSpeed() { NativeCall(this, "APrimalDinoAIController.SetAttackGroundSpeed"); } + void SetAttackRotationRate() { NativeCall(this, "APrimalDinoAIController.SetAttackRotationRate"); } + void SetTarget(AActor* InTarget, bool bDontAddAggro, bool bOverlapFoundTarget) { NativeCall(this, "APrimalDinoAIController.SetTarget", InTarget, bDontAddAggro, bOverlapFoundTarget); } + void SetUpMoveToTargetActor(FVector* NewMoveToLoc, FVector* RandOffset, AActor* ToActor) { NativeCall(this, "APrimalDinoAIController.SetUpMoveToTargetActor", NewMoveToLoc, RandOffset, ToActor); } + bool ShouldAttackTarget(AActor* NewTarget, bool bPassedBasedOnRaft, AActor* MyBasedOnRaft) { return NativeCall(this, "APrimalDinoAIController.ShouldAttackTarget", NewTarget, bPassedBasedOnRaft, MyBasedOnRaft); } + bool ShouldForceFlee() { return NativeCall(this, "APrimalDinoAIController.ShouldForceFlee"); } + bool ShouldForceRunWhenAttacking() { return NativeCall(this, "APrimalDinoAIController.ShouldForceRunWhenAttacking"); } + static FVector* StaticGetRandomWanderDestination(FVector* result, APrimalDinoCharacter* TargetCharacter, APrimalDinoAIController* TargetAIController, FVector LocOverride, float RandomOffsetMultiplier, bool bUseRandomNegativeXDir, bool bOrientRandOffsetByRotation, FRotator OrientRandOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(nullptr, "APrimalDinoAIController.StaticGetRandomWanderDestination", result, TargetCharacter, TargetAIController, LocOverride, RandomOffsetMultiplier, bUseRandomNegativeXDir, bOrientRandOffsetByRotation, OrientRandOffsetByRotation, GroundCheckSpreadOverride); } + void StopBrainComponent(FString reason) { NativeCall(this, "APrimalDinoAIController.StopBrainComponent", reason); } + void Unstasis() { NativeCall(this, "APrimalDinoAIController.Unstasis"); } + void UpdateAggro() { NativeCall(this, "APrimalDinoAIController.UpdateAggro"); } + void UpdateMoveToTargetActorRef(AActor* NewTargetActorRef) { NativeCall(this, "APrimalDinoAIController.UpdateMoveToTargetActorRef", NewTargetActorRef); } + bool UseLowQualityBehaviorTreeTick() { return NativeCall(this, "APrimalDinoAIController.UseLowQualityBehaviorTreeTick"); } + bool BPForceTargetDinoRider(AShooterCharacter* playerTarget) { return NativeCall(this, "APrimalDinoAIController.BPForceTargetDinoRider", playerTarget); } + float BPGetTargetingDesire(AActor* ForTarget, float ForTargetingDesireValue) { return NativeCall(this, "APrimalDinoAIController.BPGetTargetingDesire", ForTarget, ForTargetingDesireValue); } + void BPNotifyTargetSet() { NativeCall(this, "APrimalDinoAIController.BPNotifyTargetSet"); } + void BPOnFleeEvent() { NativeCall(this, "APrimalDinoAIController.BPOnFleeEvent"); } + bool BPOverrideIgnoredByWildDino(AActor* wildDinoToIgnore) { return NativeCall(this, "APrimalDinoAIController.BPOverrideIgnoredByWildDino", wildDinoToIgnore); } + void BPSetupFindTarget() { NativeCall(this, "APrimalDinoAIController.BPSetupFindTarget"); } + bool BPShouldNotifyNeighbor(APrimalDinoCharacter* neighbor) { return NativeCall(this, "APrimalDinoAIController.BPShouldNotifyNeighbor", neighbor); } + AActor* BPUpdateBestTarget(AActor* bestTarget, bool dontSetIn, bool* dontSetOut) { return NativeCall(this, "APrimalDinoAIController.BPUpdateBestTarget", bestTarget, dontSetIn, dontSetOut); } + FVector2D* BP_TamedOverrideHorizontalLandingRange(FVector2D* result) { return NativeCall(this, "APrimalDinoAIController.BP_TamedOverrideHorizontalLandingRange", result); } + bool CalculateAndSetWonderingAIStateEvent(bool StateChanged) { return NativeCall(this, "APrimalDinoAIController.CalculateAndSetWonderingAIStateEvent", StateChanged); } + void ChangedAITarget() { NativeCall(this, "APrimalDinoAIController.ChangedAITarget"); } + void EndForceFleed() { NativeCall(this, "APrimalDinoAIController.EndForceFleed"); } + float GetAggroNotifyNeighborsRange() { return NativeCall(this, "APrimalDinoAIController.GetAggroNotifyNeighborsRange"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalDinoAIController.GetPrivateStaticClass", Package); } + void OnLosingTargetEvent() { NativeCall(this, "APrimalDinoAIController.OnLosingTargetEvent"); } + static void StaticRegisterNativesAPrimalDinoAIController() { NativeCall(nullptr, "APrimalDinoAIController.StaticRegisterNativesAPrimalDinoAIController"); } +}; + +struct ADroppedItem : AActor +{ + FItemNetInfo& MyItemInfoField() { return *GetNativePointerField(this, "ADroppedItem.MyItemInfo"); } + UPrimalItem* MyItemField() { return *GetNativePointerField(this, "ADroppedItem.MyItem"); } + float& ImpulseMagnitudeField() { return *GetNativePointerField(this, "ADroppedItem.ImpulseMagnitude"); } + float& ForceSleepTimerField() { return *GetNativePointerField(this, "ADroppedItem.ForceSleepTimer"); } + FVector& DroppedItemScaleField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemScale"); } + FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipPadding"); } + FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "ADroppedItem.OverlayTooltipScale"); } + FString& DroppedByNameField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByName"); } + unsigned __int64& DroppedByPlayerIDField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByPlayerID"); } + long double& DroppedItemDestructionTimeField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemDestructionTime"); } + bool& bClientDisablePhysicsField() { return *GetNativePointerField(this, "ADroppedItem.bClientDisablePhysics"); } + UStaticMesh* NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverride"); } + UMaterialInterface* NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshMaterialOverride"); } + FVector& NetDroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "ADroppedItem.NetDroppedMeshOverrideScale3D"); } + FVector& DroppedItemVelocityField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemVelocity"); } + bool& bThrownFromShipField() { return *GetNativePointerField(this, "ADroppedItem.bThrownFromShip"); } + float& DroppedItemAccelerationGravityField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemAccelerationGravity"); } + float& DroppedItemMaxFallSpeedField() { return *GetNativePointerField(this, "ADroppedItem.DroppedItemMaxFallSpeed"); } + float& MaxPickUpDistanceField() { return *GetNativePointerField(this, "ADroppedItem.MaxPickUpDistance"); } + float& PrevLinearDampingField() { return *GetNativePointerField(this, "ADroppedItem.PrevLinearDamping"); } + float& PrevAngularDampingField() { return *GetNativePointerField(this, "ADroppedItem.PrevAngularDamping"); } + long double& SpawnDropSoundTimeField() { return *GetNativePointerField(this, "ADroppedItem.SpawnDropSoundTime"); } + FVector& PreviousLocationField() { return *GetNativePointerField(this, "ADroppedItem.PreviousLocation"); } + AActor* DroppedByActorField() { return *GetNativePointerField(this, "ADroppedItem.DroppedByActor"); } + APrimalCharacter* BasedTransformCharacterField() { return *GetNativePointerField(this, "ADroppedItem.BasedTransformCharacter"); } + FVector& BasedTransformLocationField() { return *GetNativePointerField(this, "ADroppedItem.BasedTransformLocation"); } + FVector& BasedTransformVelocityField() { return *GetNativePointerField(this, "ADroppedItem.BasedTransformVelocity"); } + APrimalDinoCharacter* DroppedOntoDinoCharacterField() { return *GetNativePointerField(this, "ADroppedItem.DroppedOntoDinoCharacter"); } + float& DroppedLifeSpanOverrideField() { return *GetNativePointerField(this, "ADroppedItem.DroppedLifeSpanOverride"); } + bool& bHasTickedField() { return *GetNativePointerField(this, "ADroppedItem.bHasTicked"); } + + // Bit fields + + BitFieldValue bApplyImpulseOnSpawn() { return { this, "ADroppedItem.bApplyImpulseOnSpawn" }; } + BitFieldValue bDestroyOnStasis() { return { this, "ADroppedItem.bDestroyOnStasis" }; } + BitFieldValue bUseCollisionTrace() { return { this, "ADroppedItem.bUseCollisionTrace" }; } + BitFieldValue bPreventPickup() { return { this, "ADroppedItem.bPreventPickup" }; } + BitFieldValue bDestroyOutOfWater() { return { this, "ADroppedItem.bDestroyOutOfWater" }; } + BitFieldValue bIsUnderwater() { return { this, "ADroppedItem.bIsUnderwater" }; } + BitFieldValue bNotifyPreviousOwnerOfPickup() { return { this, "ADroppedItem.bNotifyPreviousOwnerOfPickup" }; } + + // Functions + + void BeginPlay() { NativeCall(this, "ADroppedItem.BeginPlay"); } + void Destroyed() { NativeCall(this, "ADroppedItem.Destroyed"); } + void DrawHUD(AShooterHUD* HUD) { NativeCall(this, "ADroppedItem.DrawHUD", HUD); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "ADroppedItem.GetLifetimeReplicatedProps", OutLifetimeProps); } + void PostNetReceiveLocationAndRotation() { NativeCall(this, "ADroppedItem.PostNetReceiveLocationAndRotation"); } + void PreInitializeComponents() { NativeCall(this, "ADroppedItem.PreInitializeComponents"); } + void SetupVisuals() { NativeCall(this, "ADroppedItem.SetupVisuals"); } + void Stasis() { NativeCall(this, "ADroppedItem.Stasis"); } + void Tick(float DeltaSeconds) { NativeCall(this, "ADroppedItem.Tick", DeltaSeconds); } + bool TryMultiUse(APlayerController* ForPC, int UseIndex) { return NativeCall(this, "ADroppedItem.TryMultiUse", ForPC, UseIndex); } + float GetDroppedItemLifeTime() { return NativeCall(this, "ADroppedItem.GetDroppedItemLifeTime"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ADroppedItem.GetPrivateStaticClass", Package); } +}; + +struct ADroppedItemEgg : ADroppedItem +{ + float& IndoorsHypoThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.IndoorsHypoThermalInsulation"); } + float& IndoorsHyperThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.IndoorsHyperThermalInsulation"); } + float& EggThermalInsulationTemperatureMultiplierField() { return *GetNativePointerField(this, "ADroppedItemEgg.EggThermalInsulationTemperatureMultiplier"); } + double& LastInsulationCalcTimeField() { return *GetNativePointerField(this, "ADroppedItemEgg.LastInsulationCalcTime"); } + float& HyperThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.HyperThermalInsulation"); } + float& HypoThermalInsulationField() { return *GetNativePointerField(this, "ADroppedItemEgg.HypoThermalInsulation"); } + + // Bit fields + + BitFieldValue bIsEggTooHot() { return { this, "ADroppedItemEgg.bIsEggTooHot" }; } + BitFieldValue bIsEggTooCold() { return { this, "ADroppedItemEgg.bIsEggTooCold" }; } +}; + +struct AMatineeActor : AActor +{ + FName& MatineeControllerNameField() { return *GetNativePointerField(this, "AMatineeActor.MatineeControllerName"); } + float& PlayRateField() { return *GetNativePointerField(this, "AMatineeActor.PlayRate"); } + float& ForceStartPositionField() { return *GetNativePointerField(this, "AMatineeActor.ForceStartPosition"); } + int& MatineeManagerPriorityField() { return *GetNativePointerField(this, "AMatineeActor.MatineeManagerPriority"); } + int& PreferredSplitScreenNumField() { return *GetNativePointerField(this, "AMatineeActor.PreferredSplitScreenNum"); } + float& InterpPositionField() { return *GetNativePointerField(this, "AMatineeActor.InterpPosition"); } + float& ClientSidePositionErrorToleranceField() { return *GetNativePointerField(this, "AMatineeActor.ClientSidePositionErrorTolerance"); } + char& ReplicationForceIsPlayingField() { return *GetNativePointerField(this, "AMatineeActor.ReplicationForceIsPlaying"); } + FMatineeActorFinished& OnMatineeFinishedField() { return *GetNativePointerField(this, "AMatineeActor.OnMatineeFinished"); } + FMatineeActorStopped& OnMatineeStoppedField() { return *GetNativePointerField(this, "AMatineeActor.OnMatineeStopped"); } + + // Functions + + void AddActorToGroup(FName GroupName, AActor* TheGroupActor) { NativeCall(this, "AMatineeActor.AddActorToGroup", GroupName, TheGroupActor); } + void AddPlayerToDirectorTracks(APlayerController* PC) { NativeCall(this, "AMatineeActor.AddPlayerToDirectorTracks", PC); } + void ApplyWorldOffset(FVector* InOffset, bool bWorldShift) { NativeCall(this, "AMatineeActor.ApplyWorldOffset", InOffset, bWorldShift); } + void BeginPlay() { NativeCall(this, "AMatineeActor.BeginPlay"); } + void ChangePlaybackDirection() { NativeCall(this, "AMatineeActor.ChangePlaybackDirection"); } + void CheckPriorityRefresh() { NativeCall(this, "AMatineeActor.CheckPriorityRefresh"); } + void EnableCinematicMode(bool bEnable) { NativeCall(this, "AMatineeActor.EnableCinematicMode", bEnable); } + FName* GetFunctionNameForEvent(FName* result, FName EventName) { return NativeCall(this, "AMatineeActor.GetFunctionNameForEvent", result, EventName); } + float GetInterpLength() { return NativeCall(this, "AMatineeActor.GetInterpLength"); } + void InitInterp() { NativeCall(this, "AMatineeActor.InitInterp"); } + bool IsMatineeCompatibleWithPlayer(APlayerController* InPC) { return NativeCall(this, "AMatineeActor.IsMatineeCompatibleWithPlayer", InPC); } + void NotifyEventTriggered(FName EventName, float EventTime) { NativeCall(this, "AMatineeActor.NotifyEventTriggered", EventName, EventTime); } + void Pause() { NativeCall(this, "AMatineeActor.Pause"); } + void Play(float OverrideSetPosition, bool bOverridePositionJump) { NativeCall(this, "AMatineeActor.Play", OverrideSetPosition, bOverridePositionJump); } + void PostInitializeComponents() { NativeCall(this, "AMatineeActor.PostInitializeComponents"); } + void PostLoadSubobjects(FObjectInstancingGraph* OuterInstanceGraph) { NativeCall(this, "AMatineeActor.PostLoadSubobjects", OuterInstanceGraph); } + void ResetMatinee() { NativeCall(this, "AMatineeActor.ResetMatinee"); } + void Reverse() { NativeCall(this, "AMatineeActor.Reverse"); } + void SetLoopingState(bool bNewLooping) { NativeCall(this, "AMatineeActor.SetLoopingState", bNewLooping); } + void SetPosition(float NewPosition, bool bJump, bool bForceJumpFromBeginningForEvents, bool bSkipMatineeUpdate) { NativeCall(this, "AMatineeActor.SetPosition", NewPosition, bJump, bForceJumpFromBeginningForEvents, bSkipMatineeUpdate); } + void SetupCameraCuts() { NativeCall(this, "AMatineeActor.SetupCameraCuts"); } + void StepInterp(float DeltaTime, bool bPreview) { NativeCall(this, "AMatineeActor.StepInterp", DeltaTime, bPreview); } + void Stop() { NativeCall(this, "AMatineeActor.Stop"); } + void TermInterp() { NativeCall(this, "AMatineeActor.TermInterp"); } + void Tick(float DeltaTime) { NativeCall(this, "AMatineeActor.Tick", DeltaTime); } + void UpdateInterp(float NewPosition, bool bPreview, bool bJump, bool bSkipMatineeUpdate) { NativeCall(this, "AMatineeActor.UpdateInterp", NewPosition, bPreview, bJump, bSkipMatineeUpdate); } + void UpdateReplicatedData(bool bIsBeginningPlay) { NativeCall(this, "AMatineeActor.UpdateReplicatedData", bIsBeginningPlay); } + void UpdateStreamingForCameraCuts(float CurrentTime, bool bPreview) { NativeCall(this, "AMatineeActor.UpdateStreamingForCameraCuts", CurrentTime, bPreview); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "AMatineeActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetNetPriority(FVector* ViewPos, FVector* ViewDir, APlayerController* Viewer, UActorChannel* InChannel, float Time, bool bLowBandwidth) { return NativeCall(this, "AMatineeActor.GetNetPriority", ViewPos, ViewDir, Viewer, InChannel, Time, bLowBandwidth); } + void InitClientMatinee() { NativeCall(this, "AMatineeActor.InitClientMatinee"); } + void PostNetReceive() { NativeCall(this, "AMatineeActor.PostNetReceive"); } + void PreNetReceive() { NativeCall(this, "AMatineeActor.PreNetReceive"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AMatineeActor.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesAMatineeActor() { NativeCall(nullptr, "AMatineeActor.StaticRegisterNativesAMatineeActor"); } +}; + +struct UCharacterMovementComponent +{ + ACharacter* CharacterOwnerField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CharacterOwner"); } + float& MaxStepHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxStepHeight"); } + float& JumpZVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpZVelocity"); } + float& JumpOffJumpZFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpOffJumpZFactor"); } + float& SwimFloorTraceLengthField() { return *GetNativePointerField(this, "UCharacterMovementComponent.SwimFloorTraceLength"); } + bool& bSlipOffLedgesField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bSlipOffLedges"); } + float& LedgeSlipCapsuleRadiusMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeSlipCapsuleRadiusMultiplier"); } + float& LedgeSlipPushVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeSlipPushVelocity"); } + float& LedgeSlipVelocityBuildUpMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeSlipVelocityBuildUpMultiplier"); } + float& WalkableFloorAngleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WalkableFloorAngle"); } + float& WalkableFloorZField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WalkableFloorZ"); } + TEnumAsByte& MovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.MovementMode"); } + char& CustomMovementModeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CustomMovementMode"); } + FVector& OldBaseLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseLocation"); } + FQuat& OldBaseQuatField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OldBaseQuat"); } + long double& LastNonZeroAccelField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastNonZeroAccel"); } + float& CurrentLedgeSlipPushVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CurrentLedgeSlipPushVelocity"); } + int& LastFrameDisabledFloorBasingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastFrameDisabledFloorBasing"); } + long double& ForceBigPushingTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ForceBigPushingTime"); } + float& GravityScaleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.GravityScale"); } + float& GroundFrictionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.GroundFriction"); } + float& MaxWalkSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxWalkSpeed"); } + float& MaxWalkSpeedCrouchedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxWalkSpeedCrouched"); } + float& MaxWalkSpeedProneField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxWalkSpeedProne"); } + float& MaxCustomMovementSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxCustomMovementSpeed"); } + float& MaxSwimSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxSwimSpeed"); } + float& MaxFlySpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxFlySpeed"); } + float& LandedPreventRequestedMoveIntervalField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LandedPreventRequestedMoveInterval"); } + float& LandedPreventRequestedMoveMinVelocityMagnitudeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LandedPreventRequestedMoveMinVelocityMagnitude"); } + float& MinimumImpulseToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MinimumImpulseToApply"); } + long double& LastLandedTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastLandedTime"); } + float& MaxAccelerationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxAcceleration"); } + float& MaxImpulseVelocityMagnitudeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxImpulseVelocityMagnitude"); } + float& MaxImpulseVelocityZField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxImpulseVelocityZ"); } + float& BrakingDecelerationWalkingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BrakingDecelerationWalking"); } + float& BrakingDecelerationFallingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BrakingDecelerationFalling"); } + float& BrakingDecelerationSwimmingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BrakingDecelerationSwimming"); } + float& BrakingDecelerationFlyingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BrakingDecelerationFlying"); } + float& AirControlField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AirControl"); } + float& AirControlBoostMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AirControlBoostMultiplier"); } + float& AirControlBoostVelocityThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AirControlBoostVelocityThreshold"); } + float& FallingLateralFrictionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.FallingLateralFriction"); } + float& CrouchedHalfHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CrouchedHalfHeight"); } + float& ProneHalfHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ProneHalfHeight"); } + float& BuoyancyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Buoyancy"); } + float& PerchRadiusThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PerchRadiusThreshold"); } + float& PerchAdditionalHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PerchAdditionalHeight"); } + FRotator& RotationRateField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RotationRate"); } + UPrimitiveComponent* DeferredUpdatedMoveComponentField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DeferredUpdatedMoveComponent"); } + float& MaxOutOfWaterStepHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxOutOfWaterStepHeight"); } + float& OutofWaterZField() { return *GetNativePointerField(this, "UCharacterMovementComponent.OutofWaterZ"); } + float& MassField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Mass"); } + float& DinoClientPositionErrorToleranceStoppedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DinoClientPositionErrorToleranceStopped"); } + float& DinoClientPositionErrorToleranceMovingFlyingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DinoClientPositionErrorToleranceMovingFlying"); } + float& PlayerClientPositionErrorToleranceOverrideField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PlayerClientPositionErrorToleranceOverride"); } + float& SimulatedTickSkipDistanceSQField() { return *GetNativePointerField(this, "UCharacterMovementComponent.SimulatedTickSkipDistanceSQ"); } + bool& bEnablePhysicsInteractionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bEnablePhysicsInteraction"); } + bool& bTouchForceScaledToMassField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bTouchForceScaledToMass"); } + bool& bPushForceScaledToMassField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bPushForceScaledToMass"); } + bool& bScalePushForceToVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bScalePushForceToVelocity"); } + float& StandingDownwardForceScaleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.StandingDownwardForceScale"); } + float& InitialPushForceFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.InitialPushForceFactor"); } + float& PushForceFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PushForceFactor"); } + float& PushForcePointZOffsetFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PushForcePointZOffsetFactor"); } + float& TouchForceFactorField() { return *GetNativePointerField(this, "UCharacterMovementComponent.TouchForceFactor"); } + float& MinTouchForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MinTouchForce"); } + float& MaxTouchForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxTouchForce"); } + float& RepulsionForceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RepulsionForce"); } + FVector& LastUpdateLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastUpdateLocation"); } + FVector& MoveStartLocationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MoveStartLocation"); } + float& AnalogInputModifierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AnalogInputModifier"); } + float& BackwardsMaxSpeedMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BackwardsMaxSpeedMultiplier"); } + float& BackwardsMovementDotThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BackwardsMovementDotThreshold"); } + FVector& PendingForceToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingForceToApply"); } + FVector& PendingImpulseToApplyField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingImpulseToApply"); } + FVector& AccelerationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.Acceleration"); } + float& MaxSimulationTimeStepField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxSimulationTimeStep"); } + int& MaxSimulationIterationsField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MaxSimulationIterations"); } + float& LedgeCheckThresholdField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LedgeCheckThreshold"); } + float& JumpOutOfWaterPitchField() { return *GetNativePointerField(this, "UCharacterMovementComponent.JumpOutOfWaterPitch"); } + float& UpperImpactNormalScaleField() { return *GetNativePointerField(this, "UCharacterMovementComponent.UpperImpactNormalScale"); } + TEnumAsByte& DefaultLandMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultLandMovementMode"); } + TEnumAsByte& DefaultWaterMovementModeField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.DefaultWaterMovementMode"); } + FVector& WantsToDodgeVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WantsToDodgeVelocity"); } + float& PreventWaterHoppingPlaneOffsetField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PreventWaterHoppingPlaneOffset"); } + long double& PreventWaterHopping_LastTimeAtSurfaceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PreventWaterHopping_LastTimeAtSurface"); } + float& AccelerationFollowsRotationMinDotField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AccelerationFollowsRotationMinDot"); } + float& AccelerationFollowsRotationStopDistanceField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AccelerationFollowsRotationStopDistance"); } + float& RotationAccelerationField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RotationAcceleration"); } + float& RotationBrakingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RotationBraking"); } + float& AngleToStartRotationBrakingField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AngleToStartRotationBraking"); } + float& SwimmingAccelZMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.SwimmingAccelZMultiplier"); } + float& TamedSwimmingAccelZMultiplierField() { return *GetNativePointerField(this, "UCharacterMovementComponent.TamedSwimmingAccelZMultiplier"); } + float& WaveLockingMaxZOffsetField() { return *GetNativePointerField(this, "UCharacterMovementComponent.WaveLockingMaxZOffset"); } + bool& bHACKTickedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bHACKTicked"); } + bool& bHackTestDisableRotationCodeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bHackTestDisableRotationCode"); } + long double& CharacterInterpolationAndStopsUseHighPrecisionVelocityUntilTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CharacterInterpolationAndStopsUseHighPrecisionVelocityUntilTime"); } + FVector& LastForcedNetVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastForcedNetVelocity"); } + long double& LastStepUpTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastStepUpTime"); } + int& BadFloorPenetrationCountField() { return *GetNativePointerField(this, "UCharacterMovementComponent.BadFloorPenetrationCount"); } + FVector& AvoidanceLockVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceLockVelocity"); } + float& AvoidanceLockTimerField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceLockTimer"); } + long double& LastSkippedMoveTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastSkippedMoveTime"); } + long double& LastDodgeStartedTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastDodgeStartedTime"); } + long double& LastSwimTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastSwimTime"); } + FRotator& CurrentRotationSpeedField() { return *GetNativePointerField(this, "UCharacterMovementComponent.CurrentRotationSpeed"); } + FVector& RequestedVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.RequestedVelocity"); } + long double& DisableMovementPhysicsUntilTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.DisableMovementPhysicsUntilTime"); } + float& LostDeltaTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LostDeltaTime"); } + float& LastLostDeltaTimeField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastLostDeltaTime"); } + int& AvoidanceUIDField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceUID"); } + float& AvoidanceWeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.AvoidanceWeight"); } + FVector& PendingLaunchVelocityField() { return *GetNativePointerField(this, "UCharacterMovementComponent.PendingLaunchVelocity"); } + FNetworkPredictionData_Client_Character* ClientPredictionDataField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ClientPredictionData"); } + FNetworkPredictionData_Server_Character* ServerPredictionDataField() { return *GetNativePointerField(this, "UCharacterMovementComponent.ServerPredictionData"); } + TArray& PendingAsyncTracesField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.PendingAsyncTraces"); } + float& MinTimeBetweenTimeStampResetsField() { return *GetNativePointerField(this, "UCharacterMovementComponent.MinTimeBetweenTimeStampResets"); } + TArray& ClientMovedDataField() { return *GetNativePointerField*>(this, "UCharacterMovementComponent.ClientMovedData"); } + bool& bWasSimulatingRootMotionField() { return *GetNativePointerField(this, "UCharacterMovementComponent.bWasSimulatingRootMotion"); } + FVector& LastCheckedFloorAtRelativeLocField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastCheckedFloorAtRelativeLoc"); } + float& LastClientWaveHeightField() { return *GetNativePointerField(this, "UCharacterMovementComponent.LastClientWaveHeight"); } + + // Bit fields + + BitFieldValue bReplicateRelativeToAttachedParent() { return { this, "UCharacterMovementComponent.bReplicateRelativeToAttachedParent" }; } + BitFieldValue bFindFloorOnce() { return { this, "UCharacterMovementComponent.bFindFloorOnce" }; } + BitFieldValue bPreventExitingWaterForceExtraOverlap() { return { this, "UCharacterMovementComponent.bPreventExitingWaterForceExtraOverlap" }; } + BitFieldValue bUseControllerDesiredRotation() { return { this, "UCharacterMovementComponent.bUseControllerDesiredRotation" }; } + BitFieldValue bRequireAccelerationForUseControllerDesiredRotation() { return { this, "UCharacterMovementComponent.bRequireAccelerationForUseControllerDesiredRotation" }; } + BitFieldValue bForceDontAllowDesiredRotationWhenFalling() { return { this, "UCharacterMovementComponent.bForceDontAllowDesiredRotationWhenFalling" }; } + BitFieldValue bUseCharacterInterpolationAndStops() { return { this, "UCharacterMovementComponent.bUseCharacterInterpolationAndStops" }; } + BitFieldValue bOnlyForwardsInputAcceleration() { return { this, "UCharacterMovementComponent.bOnlyForwardsInputAcceleration" }; } + BitFieldValue bOnlyForwardsInputAccelerationWalking() { return { this, "UCharacterMovementComponent.bOnlyForwardsInputAccelerationWalking" }; } + BitFieldValue bReduceBackwardsMovement() { return { this, "UCharacterMovementComponent.bReduceBackwardsMovement" }; } + BitFieldValue bUseWeaponSpeedMultiplierByDirection() { return { this, "UCharacterMovementComponent.bUseWeaponSpeedMultiplierByDirection" }; } + BitFieldValue bUseAsyncWalking() { return { this, "UCharacterMovementComponent.bUseAsyncWalking" }; } + BitFieldValue bAllowSimulatedTickDistanceSkip() { return { this, "UCharacterMovementComponent.bAllowSimulatedTickDistanceSkip" }; } + BitFieldValue bAllowImpactDeflection() { return { this, "UCharacterMovementComponent.bAllowImpactDeflection" }; } + BitFieldValue bDisableSimulatedMovement() { return { this, "UCharacterMovementComponent.bDisableSimulatedMovement" }; } + BitFieldValue bLastAllowSimulate() { return { this, "UCharacterMovementComponent.bLastAllowSimulate" }; } + BitFieldValue bZeroPitchWhenNoAcceleration() { return { this, "UCharacterMovementComponent.bZeroPitchWhenNoAcceleration" }; } + BitFieldValue bPreventSlidingWhileFalling() { return { this, "UCharacterMovementComponent.bPreventSlidingWhileFalling" }; } + BitFieldValue bPreventAddingImpulse() { return { this, "UCharacterMovementComponent.bPreventAddingImpulse" }; } + BitFieldValue bPreventZeroPitchAndRollWhileFalling() { return { this, "UCharacterMovementComponent.bPreventZeroPitchAndRollWhileFalling" }; } + BitFieldValue bOrientRotationToMovement() { return { this, "UCharacterMovementComponent.bOrientRotationToMovement" }; } + BitFieldValue bAssumeSymmetricalRotation() { return { this, "UCharacterMovementComponent.bAssumeSymmetricalRotation" }; } + BitFieldValue bMovementInProgress() { return { this, "UCharacterMovementComponent.bMovementInProgress" }; } + BitFieldValue bEnableScopedMovementUpdates() { return { this, "UCharacterMovementComponent.bEnableScopedMovementUpdates" }; } + BitFieldValue bForceMaxAccel() { return { this, "UCharacterMovementComponent.bForceMaxAccel" }; } + BitFieldValue bRunPhysicsWithNoController() { return { this, "UCharacterMovementComponent.bRunPhysicsWithNoController" }; } + BitFieldValue bForceNextFloorCheck() { return { this, "UCharacterMovementComponent.bForceNextFloorCheck" }; } + BitFieldValue bShrinkProxyCapsule() { return { this, "UCharacterMovementComponent.bShrinkProxyCapsule" }; } + BitFieldValue bCanWalkOffLedges() { return { this, "UCharacterMovementComponent.bCanWalkOffLedges" }; } + BitFieldValue bCanWalkOffLedgesWhenCrouching() { return { this, "UCharacterMovementComponent.bCanWalkOffLedgesWhenCrouching" }; } + BitFieldValue bDeferUpdateMoveComponent() { return { this, "UCharacterMovementComponent.bDeferUpdateMoveComponent" }; } + BitFieldValue bForceBraking_DEPRECATED() { return { this, "UCharacterMovementComponent.bForceBraking_DEPRECATED" }; } + BitFieldValue bMaintainHorizontalGroundVelocity() { return { this, "UCharacterMovementComponent.bMaintainHorizontalGroundVelocity" }; } + BitFieldValue bImpartBaseVelocityX() { return { this, "UCharacterMovementComponent.bImpartBaseVelocityX" }; } + BitFieldValue bImpartBaseVelocityY() { return { this, "UCharacterMovementComponent.bImpartBaseVelocityY" }; } + BitFieldValue bImpartBaseVelocityZ() { return { this, "UCharacterMovementComponent.bImpartBaseVelocityZ" }; } + BitFieldValue bImpartBaseAngularVelocity() { return { this, "UCharacterMovementComponent.bImpartBaseAngularVelocity" }; } + BitFieldValue bCanSlide() { return { this, "UCharacterMovementComponent.bCanSlide" }; } + BitFieldValue bJustTeleported() { return { this, "UCharacterMovementComponent.bJustTeleported" }; } + BitFieldValue bNetworkUpdateReceived() { return { this, "UCharacterMovementComponent.bNetworkUpdateReceived" }; } + BitFieldValue bNetworkMovementModeChanged() { return { this, "UCharacterMovementComponent.bNetworkMovementModeChanged" }; } + BitFieldValue bNotifyApex() { return { this, "UCharacterMovementComponent.bNotifyApex" }; } + BitFieldValue bCheatFlying() { return { this, "UCharacterMovementComponent.bCheatFlying" }; } + BitFieldValue bWantsToCrouch() { return { this, "UCharacterMovementComponent.bWantsToCrouch" }; } + BitFieldValue bWantsToProne() { return { this, "UCharacterMovementComponent.bWantsToProne" }; } + BitFieldValue bWantsToDodge() { return { this, "UCharacterMovementComponent.bWantsToDodge" }; } + BitFieldValue bCrouchMaintainsBaseLocation() { return { this, "UCharacterMovementComponent.bCrouchMaintainsBaseLocation" }; } + BitFieldValue bIgnoreBaseRotation() { return { this, "UCharacterMovementComponent.bIgnoreBaseRotation" }; } + BitFieldValue bFastAttachedMove() { return { this, "UCharacterMovementComponent.bFastAttachedMove" }; } + BitFieldValue bAlwaysCheckFloor() { return { this, "UCharacterMovementComponent.bAlwaysCheckFloor" }; } + BitFieldValue bUseFlatBaseForFloorChecks() { return { this, "UCharacterMovementComponent.bUseFlatBaseForFloorChecks" }; } + BitFieldValue bPerformingJumpOff() { return { this, "UCharacterMovementComponent.bPerformingJumpOff" }; } + BitFieldValue bRequestedMoveUseAcceleration() { return { this, "UCharacterMovementComponent.bRequestedMoveUseAcceleration" }; } + BitFieldValue bAccelerationFollowsRotation() { return { this, "UCharacterMovementComponent.bAccelerationFollowsRotation" }; } + BitFieldValue bPreventWaterSurfaceHopping() { return { this, "UCharacterMovementComponent.bPreventWaterSurfaceHopping" }; } + BitFieldValue bCheckFallingAITempIgnoreDinoRiderMesh() { return { this, "UCharacterMovementComponent.bCheckFallingAITempIgnoreDinoRiderMesh" }; } + BitFieldValue bFallingAITempIgnoreDinoRiderMesh() { return { this, "UCharacterMovementComponent.bFallingAITempIgnoreDinoRiderMesh" }; } + BitFieldValue bForceAccelerationFollowsRotationInSwimming() { return { this, "UCharacterMovementComponent.bForceAccelerationFollowsRotationInSwimming" }; } + BitFieldValue bUseRotationAcceleration() { return { this, "UCharacterMovementComponent.bUseRotationAcceleration" }; } + BitFieldValue bIgnoreRotationAccelerationWhenSwimming() { return { this, "UCharacterMovementComponent.bIgnoreRotationAccelerationWhenSwimming" }; } + BitFieldValue bPreventPhysicsModeChange() { return { this, "UCharacterMovementComponent.bPreventPhysicsModeChange" }; } + BitFieldValue bUseWaveLocking() { return { this, "UCharacterMovementComponent.bUseWaveLocking" }; } + BitFieldValue bLastHasRequestedVelocity() { return { this, "UCharacterMovementComponent.bLastHasRequestedVelocity" }; } + BitFieldValue bHasRequestedVelocity() { return { this, "UCharacterMovementComponent.bHasRequestedVelocity" }; } + BitFieldValue bRequestedMoveWithMaxSpeed() { return { this, "UCharacterMovementComponent.bRequestedMoveWithMaxSpeed" }; } + BitFieldValue bWasAvoidanceUpdated() { return { this, "UCharacterMovementComponent.bWasAvoidanceUpdated" }; } + BitFieldValue bUseRVOPostProcess() { return { this, "UCharacterMovementComponent.bUseRVOPostProcess" }; } + BitFieldValue bDeferUpdateBasedMovement() { return { this, "UCharacterMovementComponent.bDeferUpdateBasedMovement" }; } + BitFieldValue bPreventExitingWater() { return { this, "UCharacterMovementComponent.bPreventExitingWater" }; } + BitFieldValue bForcePreventExitingWater() { return { this, "UCharacterMovementComponent.bForcePreventExitingWater" }; } + BitFieldValue bPreventEnteringWater() { return { this, "UCharacterMovementComponent.bPreventEnteringWater" }; } + BitFieldValue bPendingLaunchNoLowerVelocity() { return { this, "UCharacterMovementComponent.bPendingLaunchNoLowerVelocity" }; } + BitFieldValue bForceNextTickUpdate() { return { this, "UCharacterMovementComponent.bForceNextTickUpdate" }; } + + // Functions + + UObject* GetUObjectInterfaceNetworkPredictionInterface() { return NativeCall(this, "UCharacterMovementComponent.GetUObjectInterfaceNetworkPredictionInterface"); } + bool HasPredictionData_Client() { return NativeCall(this, "UCharacterMovementComponent.HasPredictionData_Client"); } + bool HasPredictionData_Server() { return NativeCall(this, "UCharacterMovementComponent.HasPredictionData_Server"); } + void AddForce(FVector Force) { NativeCall(this, "UCharacterMovementComponent.AddForce", Force); } + void AddImpulse(FVector Impulse, bool bVelocityChange, float MassScaleImpulseExponent, bool bOverrideMaxImpulseZ) { NativeCall(this, "UCharacterMovementComponent.AddImpulse", Impulse, bVelocityChange, MassScaleImpulseExponent, bOverrideMaxImpulseZ); } + void AddRadialForce(FVector* Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff) { NativeCall(this, "UCharacterMovementComponent.AddRadialForce", Origin, Radius, Strength, Falloff); } + void AddRadialImpulse(FVector* Origin, float Radius, float Strength, ERadialImpulseFalloff Falloff, bool bVelChange) { NativeCall(this, "UCharacterMovementComponent.AddRadialImpulse", Origin, Radius, Strength, Falloff, bVelChange); } + void AdjustFloorHeight() { NativeCall(this, "UCharacterMovementComponent.AdjustFloorHeight"); } + void AdjustProxyCapsuleSize() { NativeCall(this, "UCharacterMovementComponent.AdjustProxyCapsuleSize"); } + FVector* AdjustUpperHemisphereImpact(FVector* result, FVector* Delta, FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.AdjustUpperHemisphereImpact", result, Delta, Hit); } + void ApplyAccumulatedForces(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.ApplyAccumulatedForces", DeltaSeconds); } + void ApplyImpactPhysicsForces(FHitResult* Impact, FVector* ImpactAcceleration, FVector* ImpactVelocity) { NativeCall(this, "UCharacterMovementComponent.ApplyImpactPhysicsForces", Impact, ImpactAcceleration, ImpactVelocity); } + void ApplyNetworkMovementMode(const char ReceivedMode) { NativeCall(this, "UCharacterMovementComponent.ApplyNetworkMovementMode", ReceivedMode); } + void ApplyRepulsionForce(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.ApplyRepulsionForce", DeltaSeconds); } + bool ApplyRequestedMove(float DeltaTime, float MaxAccel, float MaxSpeed, float Friction, float BrakingDeceleration, FVector* OutAcceleration, float* OutRequestedSpeed) { return NativeCall(this, "UCharacterMovementComponent.ApplyRequestedMove", DeltaTime, MaxAccel, MaxSpeed, Friction, BrakingDeceleration, OutAcceleration, OutRequestedSpeed); } + void ApplyVelocityBraking(float DeltaTime, float Friction, float BrakingDeceleration) { NativeCall(this, "UCharacterMovementComponent.ApplyVelocityBraking", DeltaTime, Friction, BrakingDeceleration); } + void BeginDestroy() { NativeCall(this, "UCharacterMovementComponent.BeginDestroy"); } + float BoostAirControl(float DeltaTime, float TickAirControl, FVector* FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.BoostAirControl", DeltaTime, TickAirControl, FallAcceleration); } + void CalcVelocity(float DeltaTime, float Friction, bool bFluid, float BrakingDeceleration) { NativeCall(this, "UCharacterMovementComponent.CalcVelocity", DeltaTime, Friction, bFluid, BrakingDeceleration); } + void CallMovementUpdateDelegate(float DeltaTime, FVector* OldLocation, FVector* OldVelocity) { NativeCall(this, "UCharacterMovementComponent.CallMovementUpdateDelegate", DeltaTime, OldLocation, OldVelocity); } + bool CanCrouchInCurrentState() { return NativeCall(this, "UCharacterMovementComponent.CanCrouchInCurrentState"); } + bool CanStepUp(FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.CanStepUp", Hit); } + bool CanStopPathFollowing() { return NativeCall(this, "UCharacterMovementComponent.CanStopPathFollowing"); } + bool CanWalkOffLedges() { return NativeCall(this, "UCharacterMovementComponent.CanWalkOffLedges"); } + void CapsuleTouched(AActor* Other, UPrimitiveComponent* OtherComp, int OtherBodyIndex, bool bFromSweep, FHitResult* SweepResult) { NativeCall(this, "UCharacterMovementComponent.CapsuleTouched", Other, OtherComp, OtherBodyIndex, bFromSweep, SweepResult); } + bool CheckLedgeDirection(FVector* OldLocation, FVector* SideStep, FVector* GravDir) { return NativeCall(this, "UCharacterMovementComponent.CheckLedgeDirection", OldLocation, SideStep, GravDir); } + bool CheckWaterJump(FVector CheckPoint, FVector* WallNormal) { return NativeCall(this, "UCharacterMovementComponent.CheckWaterJump", CheckPoint, WallNormal); } + void ClientAckGoodMove_Implementation(float TimeStamp) { NativeCall(this, "UCharacterMovementComponent.ClientAckGoodMove_Implementation", TimeStamp); } + void ClientAdjustPosition_Implementation(float TimeStamp, FVector NewLocation, FVector NewVelocity, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition_Implementation", TimeStamp, NewLocation, NewVelocity, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientAdjustRootMotionPosition_Implementation(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustRootMotionPosition_Implementation", TimeStamp, ServerMontageTrackPosition, ServerLoc, ServerRotation, ServerVelZ, ServerBase, ServerBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + bool ClientUpdatePositionAfterServerUpdate() { return NativeCall(this, "UCharacterMovementComponent.ClientUpdatePositionAfterServerUpdate"); } + void ClientVeryShortAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition_Implementation", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + float ComputeAnalogInputModifier() { return NativeCall(this, "UCharacterMovementComponent.ComputeAnalogInputModifier"); } + FVector* ComputeGroundMovementDelta(FVector* result, FVector* Delta, FHitResult* RampHit, const bool bHitFromLineTrace) { return NativeCall(this, "UCharacterMovementComponent.ComputeGroundMovementDelta", result, Delta, RampHit, bHitFromLineTrace); } + FRotator* ComputeOrientToMovementRotation(FRotator* result, FRotator* CurrentRotation, float DeltaTime, FRotator* DeltaRotation) { return NativeCall(this, "UCharacterMovementComponent.ComputeOrientToMovementRotation", result, CurrentRotation, DeltaTime, DeltaRotation); } + FVector* ComputeSlideVector(FVector* result, FVector* InDelta, const float Time, FVector* Normal, FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.ComputeSlideVector", result, InDelta, Time, Normal, Hit); } + FVector* ConstrainInputAcceleration(FVector* result, FVector* InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ConstrainInputAcceleration", result, InputAcceleration); } + void Crouch(bool bClientSimulation) { NativeCall(this, "UCharacterMovementComponent.Crouch", bClientSimulation); } + void DisableMovement() { NativeCall(this, "UCharacterMovementComponent.DisableMovement"); } + bool DoJump(bool bReplayingMoves) { return NativeCall(this, "UCharacterMovementComponent.DoJump", bReplayingMoves); } + void ExecuteStoredMoves() { NativeCall(this, "UCharacterMovementComponent.ExecuteStoredMoves"); } + bool FindAirControlImpact(float DeltaTime, float TickAirControl, FVector* FallAcceleration, FHitResult* OutHitResult) { return NativeCall(this, "UCharacterMovementComponent.FindAirControlImpact", DeltaTime, TickAirControl, FallAcceleration, OutHitResult); } + FVector* FindWaterLine(FVector* result, FVector InWater, FVector OutofWater) { return NativeCall(this, "UCharacterMovementComponent.FindWaterLine", result, InWater, OutofWater); } + void ForcePositionUpdate(float DeltaTime) { NativeCall(this, "UCharacterMovementComponent.ForcePositionUpdate", DeltaTime); } + void ForceReplicationUpdate() { NativeCall(this, "UCharacterMovementComponent.ForceReplicationUpdate"); } + float GetAirControl(float DeltaTime, float TickAirControl, FVector* FallAcceleration) { return NativeCall(this, "UCharacterMovementComponent.GetAirControl", DeltaTime, TickAirControl, FallAcceleration); } + float GetAnalogInputModifier() { return NativeCall(this, "UCharacterMovementComponent.GetAnalogInputModifier"); } + FVector* GetBestDirectionOffActor(FVector* result, AActor* BaseActor) { return NativeCall(this, "UCharacterMovementComponent.GetBestDirectionOffActor", result, BaseActor); } + ACharacter* GetCharacterOwner() { return NativeCall(this, "UCharacterMovementComponent.GetCharacterOwner"); } + FVector* GetCurrentAcceleration(FVector* result) { return NativeCall(this, "UCharacterMovementComponent.GetCurrentAcceleration", result); } + FRotator* GetDeltaRotation(FRotator* result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetDeltaRotation", result, DeltaTime); } + FVector* GetFallingLateralAcceleration(FVector* result, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.GetFallingLateralAcceleration", result, DeltaTime); } + FVector* GetFootLocation(FVector* result) { return NativeCall(this, "UCharacterMovementComponent.GetFootLocation", result); } + float GetGravityZ() { return NativeCall(this, "UCharacterMovementComponent.GetGravityZ"); } + FVector* GetImpartedMovementBaseVelocity(FVector* result) { return NativeCall(this, "UCharacterMovementComponent.GetImpartedMovementBaseVelocity", result); } + float GetMaxAcceleration() { return NativeCall(this, "UCharacterMovementComponent.GetMaxAcceleration"); } + float GetMaxJumpHeight() { return NativeCall(this, "UCharacterMovementComponent.GetMaxJumpHeight"); } + float GetMaxSpeed() { return NativeCall(this, "UCharacterMovementComponent.GetMaxSpeed"); } + float GetModifiedMaxAcceleration() { return NativeCall(this, "UCharacterMovementComponent.GetModifiedMaxAcceleration"); } + UPrimitiveComponent* GetMovementBase() { return NativeCall(this, "UCharacterMovementComponent.GetMovementBase"); } + FString* GetMovementName(FString* result) { return NativeCall(this, "UCharacterMovementComponent.GetMovementName", result); } + float GetNetworkSafeRandomAngleDegrees() { return NativeCall(this, "UCharacterMovementComponent.GetNetworkSafeRandomAngleDegrees"); } + float GetPerchRadiusThreshold() { return NativeCall(this, "UCharacterMovementComponent.GetPerchRadiusThreshold"); } + FNetworkPredictionData_Client* GetPredictionData_Client() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Client"); } + FNetworkPredictionData_Client_Character* GetPredictionData_Client_Character() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Client_Character"); } + FNetworkPredictionData_Server* GetPredictionData_Server() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Server"); } + FNetworkPredictionData_Server_Character* GetPredictionData_Server_Character() { return NativeCall(this, "UCharacterMovementComponent.GetPredictionData_Server_Character"); } + float GetValidPerchRadius() { return NativeCall(this, "UCharacterMovementComponent.GetValidPerchRadius"); } + void HandleImpact(FHitResult* Impact, float TimeSlice, FVector* MoveDelta) { NativeCall(this, "UCharacterMovementComponent.HandleImpact", Impact, TimeSlice, MoveDelta); } + bool HandlePendingLaunch() { return NativeCall(this, "UCharacterMovementComponent.HandlePendingLaunch"); } + FVector* HandleSlopeBoosting(FVector* result, FVector* SlideResult, FVector* Delta, const float Time, FVector* Normal, FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.HandleSlopeBoosting", result, SlideResult, Delta, Time, Normal, Hit); } + bool HasValidData() { return NativeCall(this, "UCharacterMovementComponent.HasValidData"); } + float ImmersionDepth(bool bUseLineTrace) { return NativeCall(this, "UCharacterMovementComponent.ImmersionDepth", bUseLineTrace); } + bool IsCrouching() { return NativeCall(this, "UCharacterMovementComponent.IsCrouching"); } + bool IsDodging() { return NativeCall(this, "UCharacterMovementComponent.IsDodging"); } + bool IsFalling() { return NativeCall(this, "UCharacterMovementComponent.IsFalling"); } + bool IsFlying() { return NativeCall(this, "UCharacterMovementComponent.IsFlying"); } + bool IsMovingOnGround() { return NativeCall(this, "UCharacterMovementComponent.IsMovingOnGround"); } + bool IsOnWalkableFloor() { return NativeCall(this, "UCharacterMovementComponent.IsOnWalkableFloor"); } + bool IsProne() { return NativeCall(this, "UCharacterMovementComponent.IsProne"); } + bool IsSwimming() { return NativeCall(this, "UCharacterMovementComponent.IsSwimming"); } + bool IsValidLandingSpot(FVector* CapsuleLocation, FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.IsValidLandingSpot", CapsuleLocation, Hit); } + bool IsWalkable(FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.IsWalkable", Hit); } + bool IsWalking() { return NativeCall(this, "UCharacterMovementComponent.IsWalking"); } + bool IsWithinEdgeTolerance(FVector* CapsuleLocation, FVector* TestImpactPoint, const float CapsuleRadius) { return NativeCall(this, "UCharacterMovementComponent.IsWithinEdgeTolerance", CapsuleLocation, TestImpactPoint, CapsuleRadius); } + void JumpOff(AActor* MovementBaseActor) { NativeCall(this, "UCharacterMovementComponent.JumpOff", MovementBaseActor); } + float K2_GetModifiedMaxAcceleration() { return NativeCall(this, "UCharacterMovementComponent.K2_GetModifiedMaxAcceleration"); } + float K2_GetWalkableFloorAngle() { return NativeCall(this, "UCharacterMovementComponent.K2_GetWalkableFloorAngle"); } + float K2_GetWalkableFloorZ() { return NativeCall(this, "UCharacterMovementComponent.K2_GetWalkableFloorZ"); } + void Launch(FVector* LaunchVel, bool bNoLowerVelocity) { NativeCall(this, "UCharacterMovementComponent.Launch", LaunchVel, bNoLowerVelocity); } + float LimitAirControl(float DeltaTime, float TickAirControl, FVector* FallAcceleration, FHitResult* HitResult) { return NativeCall(this, "UCharacterMovementComponent.LimitAirControl", DeltaTime, TickAirControl, FallAcceleration, HitResult); } + void MaintainHorizontalGroundVelocity() { NativeCall(this, "UCharacterMovementComponent.MaintainHorizontalGroundVelocity"); } + void MaybeSaveBaseLocation() { NativeCall(this, "UCharacterMovementComponent.MaybeSaveBaseLocation"); } + void MaybeUpdateBasedMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.MaybeUpdateBasedMovement", DeltaSeconds); } + void MoveAutonomous(float ClientTimeStamp, float DeltaTime, char CompressedFlags, FVector* NewAccel, float* ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.MoveAutonomous", ClientTimeStamp, DeltaTime, CompressedFlags, NewAccel, ClientMoveWaveHeight); } + FVector* NewFallVelocity(FVector* result, FVector* InitialVelocity, FVector* Gravity, float DeltaTime) { return NativeCall(this, "UCharacterMovementComponent.NewFallVelocity", result, InitialVelocity, Gravity, DeltaTime); } + void NotifyBumpedPawn(APawn* BumpedPawn) { NativeCall(this, "UCharacterMovementComponent.NotifyBumpedPawn", BumpedPawn); } + void NotifyJumpApex() { NativeCall(this, "UCharacterMovementComponent.NotifyJumpApex"); } + void OnMovementModeChanged(EMovementMode PreviousMovementMode, char PreviousCustomMode) { NativeCall(this, "UCharacterMovementComponent.OnMovementModeChanged", PreviousMovementMode, PreviousCustomMode); } + void OnRegister() { NativeCall(this, "UCharacterMovementComponent.OnRegister"); } + void OnTeleported() { NativeCall(this, "UCharacterMovementComponent.OnTeleported"); } + void PerformAirControl(FVector Direction, float ZDiff) { NativeCall(this, "UCharacterMovementComponent.PerformAirControl", Direction, ZDiff); } + void PerformAirControlForPathFollowing(FVector Direction, float ZDiff) { NativeCall(this, "UCharacterMovementComponent.PerformAirControlForPathFollowing", Direction, ZDiff); } + void PerformMovement(float DeltaSeconds, float* NewMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.PerformMovement", DeltaSeconds, NewMoveWaveHeight); } + void PhysCustom(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysCustom", deltaTime, Iterations); } + void PhysFalling(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysFalling", deltaTime, Iterations); } + void PhysFlying(float deltaTime, int Iterations, float* NewMoveWaveHeight, float friction, float brakingDeceleration) { NativeCall(this, "UCharacterMovementComponent.PhysFlying", deltaTime, Iterations, NewMoveWaveHeight, friction, brakingDeceleration); } + bool PhysFlyingAsync(float deltaTime, int Iterations, float friction, float brakingDeceleration) { return NativeCall(this, "UCharacterMovementComponent.PhysFlyingAsync", deltaTime, Iterations, friction, brakingDeceleration); } + void PhysSwimming(float deltaTime, int Iterations, float* NewMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.PhysSwimming", deltaTime, Iterations, NewMoveWaveHeight); } + void PhysWalking(float deltaTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.PhysWalking", deltaTime, Iterations); } + bool PhysWalkingAsync(float deltaTime, int Iterations) { return NativeCall(this, "UCharacterMovementComponent.PhysWalkingAsync", deltaTime, Iterations); } + void PhysicsRotation(float DeltaTime) { NativeCall(this, "UCharacterMovementComponent.PhysicsRotation", DeltaTime); } + void PostLoad() { NativeCall(this, "UCharacterMovementComponent.PostLoad"); } + bool ProcessClientTimeStamp(float TimeStamp, FNetworkPredictionData_Server_Character* ServerData) { return NativeCall(this, "UCharacterMovementComponent.ProcessClientTimeStamp", TimeStamp, ServerData); } + void ProcessLanded(FHitResult* Hit, float remainingTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.ProcessLanded", Hit, remainingTime, Iterations); } + void Prone(bool bClientSimulation) { NativeCall(this, "UCharacterMovementComponent.Prone", bClientSimulation); } + void ReadjustClientPositionToCurrent(float TimeStamp, FNetworkPredictionData_Server_Character* ServerData) { NativeCall(this, "UCharacterMovementComponent.ReadjustClientPositionToCurrent", TimeStamp, ServerData); } + void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UCharacterMovementComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } + void ReplicateMoveToServer(float DeltaTime, FVector* NewAcceleration) { NativeCall(this, "UCharacterMovementComponent.ReplicateMoveToServer", DeltaTime, NewAcceleration); } + void RequestDirectMove(FVector* MoveVelocity, bool bForceMaxSpeed) { NativeCall(this, "UCharacterMovementComponent.RequestDirectMove", MoveVelocity, bForceMaxSpeed); } + void ResetPredictionData_Client() { NativeCall(this, "UCharacterMovementComponent.ResetPredictionData_Client"); } + void ResetPredictionData_Server() { NativeCall(this, "UCharacterMovementComponent.ResetPredictionData_Server"); } + bool ResolvePenetrationImpl(FVector* Adjustment, FHitResult* Hit, FQuat* NewRotation) { return NativeCall(this, "UCharacterMovementComponent.ResolvePenetrationImpl", Adjustment, Hit, NewRotation); } + void SaveBaseLocation(bool bForce) { NativeCall(this, "UCharacterMovementComponent.SaveBaseLocation", bForce); } + FVector* ScaleInputAcceleration(FVector* result, FVector* InputAcceleration) { return NativeCall(this, "UCharacterMovementComponent.ScaleInputAcceleration", result, InputAcceleration); } + void SendClientAdjustment() { NativeCall(this, "UCharacterMovementComponent.SendClientAdjustment"); } + void ServerJumpOutOfWater_Implementation(FVector_NetQuantize100 WallNormal, char JumpFlag) { NativeCall(this, "UCharacterMovementComponent.ServerJumpOutOfWater_Implementation", WallNormal, JumpFlag); } + void ServerMoveDualOnlyRotationWWH_Implementation(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotationWWH_Implementation", TimeStamp0, View0, TimeStamp, ClientRoll, View, ClientMoveWaveHeight); } + void ServerMoveDualOnlyRotation_Implementation(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotation_Implementation", TimeStamp0, View0, TimeStamp, ClientRoll, View); } + void ServerMoveDualWWH_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBone, char ClientMovementMode, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWWH_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode, ClientMoveWaveHeight); } + void ServerMoveDualWithRotationWWH_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBone, char ClientMovementMode, FRotator InRotation0, FRotator InRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotationWWH_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode, InRotation0, InRotation, ClientMoveWaveHeight); } + void ServerMoveDualWithRotation_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBone, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode, InRotation0, InRotation); } + void ServerMoveDual_Implementation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBone, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual_Implementation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBone, ClientMovementMode); } + void ServerMoveHandleClientError(float TimeStamp, float DeltaTime, FVector* Accel, FVector* RelativeClientLoc, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientError", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveHandleClientErrorForDinos(float TimeStamp, float DeltaTime, FVector* Accel, FVector* RelativeClientLoc, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator* InClientRot) { NativeCall(this, "UCharacterMovementComponent.ServerMoveHandleClientErrorForDinos", TimeStamp, DeltaTime, Accel, RelativeClientLoc, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InClientRot); } + void ServerMoveOldWWH_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWWH_Implementation", OldTimeStamp, OldAccel, OldMoveFlags, ClientMoveWaveHeight); } + void ServerMoveOldWithRotationWWH_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotationWWH_Implementation", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation, ClientMoveWaveHeight); } + void ServerMoveOldWithRotation_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotation_Implementation", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation); } + void ServerMoveOld_Implementation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOld_Implementation", OldTimeStamp, OldAccel, OldMoveFlags); } + void ServerMoveOnlyRotationWWH_Implementation(float TimeStamp, char ClientRoll, unsigned int View, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotationWWH_Implementation", TimeStamp, ClientRoll, View, ClientMoveWaveHeight); } + void ServerMoveOnlyRotation_Implementation(float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotation_Implementation", TimeStamp, ClientRoll, View); } + void ServerMoveWWH_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWWH_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientMoveWaveHeight); } + void ServerMoveWithRotationWWH_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotationWWH_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation, ClientMoveWaveHeight); } + void ServerMoveWithRotation_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } + void ServerMove_Implementation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char MoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove_Implementation", TimeStamp, InAccel, ClientLoc, MoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void SetBase(UPrimitiveComponent* NewBase, FName BoneName, bool bNotifyActor) { NativeCall(this, "UCharacterMovementComponent.SetBase", NewBase, BoneName, bNotifyActor); } + void SetDefaultMovementMode() { NativeCall(this, "UCharacterMovementComponent.SetDefaultMovementMode"); } + void SetMovementMode(EMovementMode NewMovementMode, char NewCustomMode) { NativeCall(this, "UCharacterMovementComponent.SetMovementMode", NewMovementMode, NewCustomMode); } + void SetPostLandedPhysics(FHitResult* Hit) { NativeCall(this, "UCharacterMovementComponent.SetPostLandedPhysics", Hit); } + void SetUpdatedComponent(UPrimitiveComponent* NewUpdatedComponent) { NativeCall(this, "UCharacterMovementComponent.SetUpdatedComponent", NewUpdatedComponent); } + void SetWalkableFloorAngle(float InWalkableFloorAngle) { NativeCall(this, "UCharacterMovementComponent.SetWalkableFloorAngle", InWalkableFloorAngle); } + void SetWalkableFloorZ(float InWalkableFloorZ) { NativeCall(this, "UCharacterMovementComponent.SetWalkableFloorZ", InWalkableFloorZ); } + bool ShouldCheckForValidLandingSpot(float DeltaTime, FVector* Delta, FHitResult* Hit) { return NativeCall(this, "UCharacterMovementComponent.ShouldCheckForValidLandingSpot", DeltaTime, Delta, Hit); } + bool ShouldComputePerchResult(FHitResult* InHit, bool bCheckRadius) { return NativeCall(this, "UCharacterMovementComponent.ShouldComputePerchResult", InHit, bCheckRadius); } + bool ShouldJumpOutOfWater(FVector* JumpDir) { return NativeCall(this, "UCharacterMovementComponent.ShouldJumpOutOfWater", JumpDir); } + bool ShouldTreadWater(FVector* InputVector) { return NativeCall(this, "UCharacterMovementComponent.ShouldTreadWater", InputVector); } + bool ShouldUseWaveLocking(bool bForceCheck) { return NativeCall(this, "UCharacterMovementComponent.ShouldUseWaveLocking", bForceCheck); } + void SimulateMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.SimulateMovement", DeltaSeconds); } + void SimulatedTick(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.SimulatedTick", DeltaSeconds); } + float SlideAlongSurface(FVector* Delta, float Time, FVector* InNormal, FHitResult* Hit, bool bHandleImpact) { return NativeCall(this, "UCharacterMovementComponent.SlideAlongSurface", Delta, Time, InNormal, Hit, bHandleImpact); } + void StartDodging(FVector* InDodgingVelocity, bool bClientSimulation) { NativeCall(this, "UCharacterMovementComponent.StartDodging", InDodgingVelocity, bClientSimulation); } + void StartFalling(int Iterations, float remainingTime, float timeTick, FVector* Delta, FVector* subLoc) { NativeCall(this, "UCharacterMovementComponent.StartFalling", Iterations, remainingTime, timeTick, Delta, subLoc); } + void StartNewPhysics(float deltaTime, int Iterations, float* NewMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.StartNewPhysics", deltaTime, Iterations, NewMoveWaveHeight); } + void StartSwimming(FVector OldLocation, FVector OldVelocity, float timeTick, float remainingTime, int Iterations) { NativeCall(this, "UCharacterMovementComponent.StartSwimming", OldLocation, OldVelocity, timeTick, remainingTime, Iterations); } + void StopActiveMovement() { NativeCall(this, "UCharacterMovementComponent.StopActiveMovement"); } + void StopDodging(bool bClientSimulation, bool bForce) { NativeCall(this, "UCharacterMovementComponent.StopDodging", bClientSimulation, bForce); } + float Swim(FVector Delta, FHitResult* Hit, bool* bClippedToWaterSurface, float* NewMoveWaveHeight) { return NativeCall(this, "UCharacterMovementComponent.Swim", Delta, Hit, bClippedToWaterSurface, NewMoveWaveHeight); } + void TwoWallAdjust(FVector* Delta, FHitResult* Hit, FVector* OldHitNormal) { NativeCall(this, "UCharacterMovementComponent.TwoWallAdjust", Delta, Hit, OldHitNormal); } + void UnCrouch(bool bClientSimulation, bool bForce) { NativeCall(this, "UCharacterMovementComponent.UnCrouch", bClientSimulation, bForce); } + void UnProne(bool bClientSimulation, bool bForce) { NativeCall(this, "UCharacterMovementComponent.UnProne", bClientSimulation, bForce); } + void UpdateBasedMovement(float DeltaSeconds) { NativeCall(this, "UCharacterMovementComponent.UpdateBasedMovement", DeltaSeconds); } + void UpdateBasedRotation(FRotator* FinalRotation, FRotator* ReducedRotation) { NativeCall(this, "UCharacterMovementComponent.UpdateBasedRotation", FinalRotation, ReducedRotation); } + void UpdateFloorFromAdjustment() { NativeCall(this, "UCharacterMovementComponent.UpdateFloorFromAdjustment"); } + void UpdateFromCompressedFlags(char Flags) { NativeCall(this, "UCharacterMovementComponent.UpdateFromCompressedFlags", Flags); } + bool VerifyClientTimeStamp(float TimeStamp, FNetworkPredictionData_Server_Character* ServerData) { return NativeCall(this, "UCharacterMovementComponent.VerifyClientTimeStamp", TimeStamp, ServerData); } + void OnUnregister() { NativeCall(this, "UCharacterMovementComponent.OnUnregister"); } + void ClientAckGoodMove(float TimeStamp) { NativeCall(this, "UCharacterMovementComponent.ClientAckGoodMove", TimeStamp); } + void ClientAdjustPosition(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientAdjustPosition", TimeStamp, NewLoc, NewVel, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + void ClientVeryShortAdjustPosition(float TimeStamp, FVector NewLoc, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, char ServerMovementMode) { NativeCall(this, "UCharacterMovementComponent.ClientVeryShortAdjustPosition", TimeStamp, NewLoc, NewBase, NewBaseBoneName, bHasBase, bBaseRelativePosition, ServerMovementMode); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UCharacterMovementComponent.GetPrivateStaticClass", Package); } + void ServerJumpOutOfWater(FVector_NetQuantize100 WallNormal, char JumpFlag) { NativeCall(this, "UCharacterMovementComponent.ServerJumpOutOfWater", WallNormal, JumpFlag); } + void ServerMove(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMove", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveDual(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDual", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode); } + void ServerMoveDualOnlyRotation(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotation", TimeStamp0, View0, TimeStamp, ClientRoll, View); } + void ServerMoveDualOnlyRotationWWH(float TimeStamp0, unsigned int View0, float TimeStamp, char ClientRoll, unsigned int View, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualOnlyRotationWWH", TimeStamp0, View0, TimeStamp, ClientRoll, View, ClientMoveWaveHeight); } + void ServerMoveDualWWH(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWWH", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientMoveWaveHeight); } + void ServerMoveDualWithRotation(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator InRotation0, FRotator InRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotation", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InRotation0, InRotation); } + void ServerMoveDualWithRotationWWH(float TimeStamp0, FVector_NetQuantize100 InAccel0, char PendingFlags, unsigned int View0, float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char NewFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator InRotation0, FRotator InRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveDualWithRotationWWH", TimeStamp0, InAccel0, PendingFlags, View0, TimeStamp, InAccel, ClientLoc, NewFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, InRotation0, InRotation, ClientMoveWaveHeight); } + void ServerMoveOld(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOld", OldTimeStamp, OldAccel, OldMoveFlags); } + void ServerMoveOldWWH(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWWH", OldTimeStamp, OldAccel, OldMoveFlags, ClientMoveWaveHeight); } + void ServerMoveOldWithRotation(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotation", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation); } + void ServerMoveOldWithRotationWWH(float OldTimeStamp, FVector_NetQuantize100 OldAccel, char OldMoveFlags, FRotator OldRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOldWithRotationWWH", OldTimeStamp, OldAccel, OldMoveFlags, OldRotation, ClientMoveWaveHeight); } + void ServerMoveOnlyRotation(float TimeStamp, char ClientRoll, unsigned int View) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotation", TimeStamp, ClientRoll, View); } + void ServerMoveOnlyRotationWWH(float TimeStamp, char ClientRoll, unsigned int View, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveOnlyRotationWWH", TimeStamp, ClientRoll, View, ClientMoveWaveHeight); } + void ServerMoveWWH(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWWH", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientMoveWaveHeight); } + void ServerMoveWithRotation(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotation", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation); } + void ServerMoveWithRotationWWH(float TimeStamp, FVector_NetQuantize100 InAccel, FVector_NetQuantize100 ClientLoc, char CompressedMoveFlags, char ClientRoll, unsigned int View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, char ClientMovementMode, FRotator ClientRotation, float ClientMoveWaveHeight) { NativeCall(this, "UCharacterMovementComponent.ServerMoveWithRotationWWH", TimeStamp, InAccel, ClientLoc, CompressedMoveFlags, ClientRoll, View, ClientMovementBase, ClientBaseBoneName, ClientMovementMode, ClientRotation, ClientMoveWaveHeight); } + static void StaticRegisterNativesUCharacterMovementComponent() { NativeCall(nullptr, "UCharacterMovementComponent.StaticRegisterNativesUCharacterMovementComponent"); } +}; + +struct FHarvestResourceEntry +{ + int OverrideQuantityMax; + int OverrideQuantityMin; + float OverrideQuantityRandomPower; + float EntryWeight; + float EffectivenessQuantityMultiplier; + float EffectivenessQualityMultiplier; + TSubclassOf ResourceItem; + float QualityMin; + float QualityMax; + float XPGainMax; + float XPGainMin; + TArray, FDefaultAllocator> DamageTypeEntryValuesOverrides; + TArray DamageTypeEntryWeightOverrides; + TArray DamageTypeEntryMinQuantityOverrides; + TArray DamageTypeEntryMaxQuantityOverrides; + __int8 bScaleWithDinoBabyAge : 1; +}; + +struct UStaticMesh : UObject +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UStaticMesh.GetPrivateStaticClass", Package); } + + unsigned __int32& bRequiresCPUAccessField() { return *GetNativePointerField(this, "UStaticMesh.bRequiresCPUAccess"); } + unsigned __int32& bRequiresRenderDataOnServerField() { return *GetNativePointerField(this, "UStaticMesh.bRequiresRenderDataOnServer"); } + unsigned __int32& bReallyDoesWantLightMapUVsField() { return *GetNativePointerField(this, "UStaticMesh.bReallyDoesWantLightMapUVs"); } + TArray& MaterialsField() { return *GetNativePointerField*>(this, "UStaticMesh.Materials"); } + unsigned __int32& bIgnoreTriReductionsField() { return *GetNativePointerField(this, "UStaticMesh.bIgnoreTriReductions"); } + int& LightMapResolutionField() { return *GetNativePointerField(this, "UStaticMesh.LightMapResolution"); } + int& LightMapCoordinateIndexField() { return *GetNativePointerField(this, "UStaticMesh.LightMapCoordinateIndex"); } + unsigned __int32& UseFullPrecisionUVs_DEPRECATEDField() { return *GetNativePointerField(this, "UStaticMesh.UseFullPrecisionUVs_DEPRECATED"); } + unsigned __int32& bUseMaximumStreamingTexelRatioField() { return *GetNativePointerField(this, "UStaticMesh.bUseMaximumStreamingTexelRatio"); } + unsigned __int32& bStripComplexCollisionForConsole_DEPRECATEDField() { return *GetNativePointerField(this, "UStaticMesh.bStripComplexCollisionForConsole_DEPRECATED"); } + unsigned __int32& bHasNavigationDataField() { return *GetNativePointerField(this, "UStaticMesh.bHasNavigationData"); } + unsigned __int32& bUseDistanceFieldTextureField() { return *GetNativePointerField(this, "UStaticMesh.bUseDistanceFieldTexture"); } + unsigned __int32& bOnlyLoadDistanceFieldsOnInteriorLightingMapsField() { return *GetNativePointerField(this, "UStaticMesh.bOnlyLoadDistanceFieldsOnInteriorLightingMaps"); } + unsigned __int32& IgnoreDistanceFieldChecksForUnderwaterPixelDetectionField() { return *GetNativePointerField(this, "UStaticMesh.IgnoreDistanceFieldChecksForUnderwaterPixelDetection"); } + unsigned __int32& OptOutFromDistanceFieldShadowsField() { return *GetNativePointerField(this, "UStaticMesh.OptOutFromDistanceFieldShadows"); } + unsigned __int32& bForceAllowMeshStreamingField() { return *GetNativePointerField(this, "UStaticMesh.bForceAllowMeshStreaming"); } + unsigned __int32& bAllowDistanceFieldOnLowEndField() { return *GetNativePointerField(this, "UStaticMesh.bAllowDistanceFieldOnLowEnd"); } + unsigned __int32& bHighQualityDistanceFieldField() { return *GetNativePointerField(this, "UStaticMesh.bHighQualityDistanceField"); } + unsigned __int32& bForceUseDistanceFieldResolutionField() { return *GetNativePointerField(this, "UStaticMesh.bForceUseDistanceFieldResolution"); } + TEnumAsByte& DistanceFieldTwoSidedOverrideField() { return *GetNativePointerField*>(this, "UStaticMesh.DistanceFieldTwoSidedOverride"); } + unsigned __int32& bAllowLODStreamingTransientField() { return *GetNativePointerField(this, "UStaticMesh.bAllowLODStreamingTransient"); } + unsigned __int32& bCastFarShadowField() { return *GetNativePointerField(this, "UStaticMesh.bCastFarShadow"); } + unsigned __int32& bAllowLODStreamingField() { return *GetNativePointerField(this, "UStaticMesh.bAllowLODStreaming"); } + unsigned __int32& bStructureStaticMeshOverride_LocationField() { return *GetNativePointerField(this, "UStaticMesh.bStructureStaticMeshOverride_Location"); } + unsigned __int32& bStructureStaticMeshOverride_ScaleField() { return *GetNativePointerField(this, "UStaticMesh.bStructureStaticMeshOverride_Scale"); } + FVector& StructureStaticMeshOverride_LocationField() { return *GetNativePointerField(this, "UStaticMesh.StructureStaticMeshOverride_Location"); } + FVector& StructureStaticMeshOverride_ScaleField() { return *GetNativePointerField(this, "UStaticMesh.StructureStaticMeshOverride_Scale"); } + FVector& StructureStaticMeshFlipped_LocationField() { return *GetNativePointerField(this, "UStaticMesh.StructureStaticMeshFlipped_Location"); } + float& DistanceFieldRuntimeQualityField() { return *GetNativePointerField(this, "UStaticMesh.DistanceFieldRuntimeQuality"); } + unsigned __int32& bForceForStructureDestroyedMeshField() { return *GetNativePointerField(this, "UStaticMesh.bForceForStructureDestroyedMesh"); } + int& CurrentStreamedInSizeField() { return *GetNativePointerField(this, "UStaticMesh.CurrentStreamedInSize"); } + bool& bStreamInStateField() { return *GetNativePointerField(this, "UStaticMesh.bStreamInState"); } + bool& bStreamInRequestField() { return *GetNativePointerField(this, "UStaticMesh.bStreamInRequest"); } + unsigned __int64& RequestLoadField() { return *GetNativePointerField(this, "UStaticMesh.RequestLoad"); } + long double& LastStreamChangeCallField() { return *GetNativePointerField(this, "UStaticMesh.LastStreamChangeCall"); } + bool& bBuiltSocketMapField() { return *GetNativePointerField(this, "UStaticMesh.bBuiltSocketMap"); } + float& StreamingDistanceMultiplierField() { return *GetNativePointerField(this, "UStaticMesh.StreamingDistanceMultiplier"); } + float& LpvBiasMultiplierField() { return *GetNativePointerField(this, "UStaticMesh.LpvBiasMultiplier"); } + FString& HighResSourceMeshNameField() { return *GetNativePointerField(this, "UStaticMesh.HighResSourceMeshName"); } + unsigned int& HighResSourceMeshCRCField() { return *GetNativePointerField(this, "UStaticMesh.HighResSourceMeshCRC"); } + FGuid& LightingGuidField() { return *GetNativePointerField(this, "UStaticMesh.LightingGuid"); } + long double& LastRenderTimeField() { return *GetNativePointerField(this, "UStaticMesh.LastRenderTime"); } + float& ClosestDistanceField() { return *GetNativePointerField(this, "UStaticMesh.ClosestDistance"); } + unsigned int& StreamDistanceFrameField() { return *GetNativePointerField(this, "UStaticMesh.StreamDistanceFrame"); } + int& ElementToIgnoreForTexFactorField() { return *GetNativePointerField(this, "UStaticMesh.ElementToIgnoreForTexFactor"); } + FName& CustomTagField() { return *GetNativePointerField(this, "UStaticMesh.CustomTag"); } +}; + +struct UMeshComponent : UPrimitiveComponent +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UMeshComponent.GetPrivateStaticClass", Package); } + TArray& MaterialsField() { return *GetNativePointerField*>(this, "UMeshComponent.Materials"); } + TArray& DefaultMaterialsOverrideField() { return *GetNativePointerField*>(this, "UMeshComponent.DefaultMaterialsOverride"); } + TSubclassOf& DamageFXActorToSpawnField() { return *GetNativePointerField*>(this, "UMeshComponent.DamageFXActorToSpawn"); } +}; + +struct UStaticMeshComponent : UMeshComponent +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UStaticMeshComponent.GetPrivateStaticClass", Package); } + UStaticMesh* StaticMeshField() { return *GetNativePointerField(this, "UStaticMeshComponent.StaticMesh"); } + bool& bOverrideWireframeColorField() { return *GetNativePointerField(this, "UStaticMeshComponent.bOverrideWireframeColor"); } + FColor& WireframeColorOverrideField() { return *GetNativePointerField(this, "UStaticMeshComponent.WireframeColorOverride"); } + unsigned __int32& bIgnoreInstanceForTextureStreamingField() { return *GetNativePointerField(this, "UStaticMeshComponent.bIgnoreInstanceForTextureStreaming"); } + unsigned __int32& bOverrideLightMapResField() { return *GetNativePointerField(this, "UStaticMeshComponent.bOverrideLightMapRes"); } + unsigned __int32& bRenderLandscapeInfoField() { return *GetNativePointerField(this, "UStaticMeshComponent.bRenderLandscapeInfo"); } + unsigned __int32& bForcedAllowInstancedVertexColorField() { return *GetNativePointerField(this, "UStaticMeshComponent.bForcedAllowInstancedVertexColor"); } + int& LandscapeInfoMaskField() { return *GetNativePointerField(this, "UStaticMeshComponent.LandscapeInfoMask"); } + int& OverriddenLightMapResField() { return *GetNativePointerField(this, "UStaticMeshComponent.OverriddenLightMapRes"); } + float& StreamingDistanceMultiplierField() { return *GetNativePointerField(this, "UStaticMeshComponent.StreamingDistanceMultiplier"); } + int& SubDivisionStepSizeField() { return *GetNativePointerField(this, "UStaticMeshComponent.SubDivisionStepSize"); } + unsigned __int32& bUseSubDivisionsField() { return *GetNativePointerField(this, "UStaticMeshComponent.bUseSubDivisions"); } + TArray& IrrelevantLightsField() { return *GetNativePointerField*>(this, "UStaticMeshComponent.IrrelevantLights"); } +}; + + +struct UFoliageType : UObject +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UFoliageType.GetPrivateStaticClass", Package); } + float& Radius() { return *GetNativePointerField(this, "UFoliageType.Radius"); } + + // Functions + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "UFoliageType.StaticStruct"); } +}; + +struct FAttachedInstancedVtbl +{ +}; + +struct FAttachedInstanced +{ + FAttachedInstancedVtbl* vfptr; +}; + + +struct FAttachedInstancedHarvestingElement +{ + UMeshComponent* BaseMeshComponent; + int OriginalIndexIntoBase; + float MaxHarvestHealth; + float CurrentHarvestHealth; + float HarvestDamageCache; + float HarvestEffectivenessCache; + UPrimalHarvestingComponent* ParentHarvestingComponent; + FVector Position; + __int8 bIsUnharvestable : 1; + __int8 bUseInternalActorComponentOctree : 1; + __int8 bRegisteredInternalActorComponentOctree : 1; + __int8 bHarvestingComponentHidden : 1; + __int8 bDontRegisterWithOctree : 1; + long double LastDepletionTime; + long double LastReplenishTime; + float DepletionExhaustionEffect; + float NextReplenishInterval; + TArray AdditionalComponentAttachments; +}; + +struct FComponentAttachmentEntry +{ + TSubclassOf ActorComponentClass; + FVector ComponentLocationOffset; + FRotator ComponentRotationOffset; +}; + +struct UInstancedStaticMeshComponent : UStaticMeshComponent +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UInstancedStaticMeshComponent.GetPrivateStaticClass", Package); } + __int64 GetInstanceCount() { return NativeCall<__int64>(this, "UInstancedStaticMeshComponent.GetInstanceCount"); } + FVector* GetPositionOfInstance(FVector *result, int index) { return NativeCall(this, "UInstancedStaticMeshComponent.GetPositionOfInstance", result, index); } + + int& InstancingRandomSeedField() { return *GetNativePointerField< int*>(this, "UInstancedStaticMeshComponent.InstancingRandomSeed"); } + int& InstanceStartCullDistanceField() { return *GetNativePointerField< int*>(this, "UInstancedStaticMeshComponent.InstanceStartCullDistance"); } + int& InstanceEndCullDistanceField() { return *GetNativePointerField< int*>(this, "UInstancedStaticMeshComponent.InstanceEndCullDistance"); } + TArray& InstanceReorderTableField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.InstanceReorderTable"); } + TArray& InstanceReorderTableBulkField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.InstanceReorderTableBulk"); } + TArray& RemovedInstancesField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.RemovedInstances"); } + float& LargestSingleBoundsField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.LargestSingleBounds"); } + TSubclassOf& AttachedComponentClassField() { return *GetNativePointerField< TSubclassOf*>(this, "UInstancedStaticMeshComponent.AttachedComponentClass"); } + float& OverrideWalkableFloorZField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.OverrideWalkableFloorZ"); } + float& PlayerOverrideWalkableFloorZField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.PlayerOverrideWalkableFloorZ"); } + unsigned __int32& bReplicateThisComponentField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bReplicateThisComponent"); } + unsigned __int32& bIsFallingTreeField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bIsFallingTree"); } + unsigned __int32& bInstanceRequiresPhysXCollisionField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bInstanceRequiresPhysXCollision"); } + unsigned __int32& bIgnoreVisibilityCheckField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bIgnoreVisibilityCheck"); } + USoundBase* DestroyedSoundField() { return *GetNativePointerField(this, "UInstancedStaticMeshComponent.DestroyedSound"); } + unsigned __int32& bPostNetReceiveHideField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bPostNetReceiveHide"); } + unsigned __int32& bDidFirstPostNetReceiveField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bDidFirstPostNetReceive"); } + unsigned __int32& bFromNonCriticalLevelField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bFromNonCriticalLevel"); } + unsigned __int32& bTickOnlyCheckFoliageClippingField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bTickOnlyCheckFoliageClipping"); } + unsigned __int32& bWasBlockLoadField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bWasBlockLoad"); } + unsigned __int32& bDontScaleAttachedComponentField() { return *GetNativePointerField< unsigned __int32*>(this, "UInstancedStaticMeshComponent.bDontScaleAttachedComponent"); } + float& ScaleMaxXField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.ScaleMaxX"); } + float& ScaleMinXField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.ScaleMinX"); } + float& AttachedComponentScaleFactorField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.AttachedComponentScaleFactor"); } + float& MaxScaleForAttachedComponentField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.MaxScaleForAttachedComponent"); } + float& MinScaleForAttachedComponentField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.MinScaleForAttachedComponent"); } + UFoliageType* FoliageTypeReferenceField() { return *GetNativePointerField(this, "UInstancedStaticMeshComponent.FoliageTypeReference"); } + float& MeshUnscaledBoundsField() { return *GetNativePointerField< float*>(this, "UInstancedStaticMeshComponent.MeshUnscaledBounds"); } + TArray& OverrideDestructionMaterialsField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.OverrideDestructionMaterials"); } + TArray& InstanceBodiesField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.InstanceBodies"); } + TIndirectArray& InstanceAttachedComponentsField() { return *GetNativePointerField< TIndirectArray*>(this, "UInstancedStaticMeshComponent.InstanceAttachedComponents"); } + TArray& ReferencedAttachedComponentObjectsField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.ReferencedAttachedComponentObjects"); } + int& CurrentAttachedIndexField() { return *GetNativePointerField< int*>(this, "UInstancedStaticMeshComponent.CurrentAttachedIndex"); } + TArray& InstancesVisibilityField() { return *GetNativePointerField< TArray*>(this, "UInstancedStaticMeshComponent.InstancesVisibility"); } + + +}; + +struct UPrimalHarvestingComponent : UActorComponent { + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalHarvestingComponent.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUPrimalHarvestingComponent() { NativeCall(nullptr, "UPrimalHarvestingComponent.StaticRegisterNativesUPrimalHarvestingComponent"); } + bool TemplateCheckForHarvestRepopulation(bool bForceReinit, UWorld* world, FVector* where) { NativeCall(this, "UPrimalHarvestingComponent.TemplateCheckForHarvestRepopulation", world, where); } + TArray& HarvestResourceEntriesField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.HarvestResourceEntries"); } + TArray& BaseHarvestResourceEntriesField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.BaseHarvestResourceEntries"); } + TArray& HarvestDamageTypeEntriesField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.HarvestDamageTypeEntries"); } + float& MaxHarvestHealthField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.MaxHarvestHealth"); } + float& ExtraHarvestingXPMultiplierField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ExtraHarvestingXPMultiplier"); } + float& HarvestHealthGiveResourceIntervalField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.HarvestHealthGiveResourceInterval"); } + float& CurrentHarvestHealthField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.CurrentHarvestHealth"); } + bool& bIsUnharvestableField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bIsUnharvestable"); } + unsigned __int32& bSetOwnerHealthToHarvestHealthField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bSetOwnerHealthToHarvestHealth"); } + unsigned __int32& bUsableHarvestingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bUsableHarvesting"); } + unsigned __int32& bAllowForcedRepopulationField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bAllowForcedRepopulation"); } + unsigned __int32& bAllowHarvestHealthScalingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bAllowHarvestHealthScaling"); } + unsigned __int32& bUsableAllowHarvestHealthScalingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bUsableAllowHarvestHealthScaling"); } + unsigned __int32& bNonBlockingUsableHarvestingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bNonBlockingUsableHarvesting"); } + unsigned __int32& bClampResourceHarvestDamageField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bClampResourceHarvestDamage"); } + unsigned __int32& bIsDefaultHarvestingComponentField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bIsDefaultHarvestingComponent"); } + unsigned __int32& bIsSingleUnitHarvestField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bIsSingleUnitHarvest"); } + unsigned __int32& bUseBPAdjustHarvestDamageField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.bUseBPAdjustHarvestDamage"); } + float& UseHarvestDamageAmountField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UseHarvestDamageAmount"); } + TSubclassOf& UseHarvestDamageTypeField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.UseHarvestDamageType"); } + TSubclassOf& HarvestToolDamageTypeField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.HarvestToolDamageType"); } + TSubclassOf& SickleDamageTypeField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.SickleDamageType"); } + FString& DescriptiveNameField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DescriptiveName"); } + FString& UseHarvestStringField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UseHarvestString"); } + FString& UnequipWeaponToUseHarvestStringField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UnequipWeaponToUseHarvestString"); } + float& UsableHarvestSphereRadiusField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UsableHarvestSphereRadius"); } + bool& ShouldReplenishField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ShouldReplenish"); } + float& MinPlayerDistanceReplenishingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.MinPlayerDistanceReplenishing"); } + float& MinStructureDistanceReplenishingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.MinStructureDistanceReplenishing"); } + float& MinNonCoreStructureDistanceReplenishingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.MinNonCoreStructureDistanceReplenishing"); } + float& BaseMinTimeAfterDepletionReplenishingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.BaseMinTimeAfterDepletionReplenishing"); } + float& BaseMaxTimeAfterDepletionReplenishingField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.BaseMaxTimeAfterDepletionReplenishing"); } + float& ExhaustedDepletionTimeIntervalField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ExhaustedDepletionTimeInterval"); } + float& ExhaustedDepletionPowerField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ExhaustedDepletionPower"); } + float& ExhaustedDepletionEffectScaleField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ExhaustedDepletionEffectScale"); } + float& ReduceExhaustedDepletionSpeedField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ReduceExhaustedDepletionSpeed"); } + float& AutoReplenishIntervalField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.AutoReplenishInterval"); } + float& AutoReplenishPercentField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.AutoReplenishPercent"); } + float& DamageInstigatorAmountField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DamageInstigatorAmount"); } + int& GiveItemEntriesMinField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.GiveItemEntriesMin"); } + int& GiveItemEntriesMaxField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.GiveItemEntriesMax"); } + float& TamedDinoHarvestGiveHealthMultiplierField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.TamedDinoHarvestGiveHealthMultiplier"); } + FString& HarvestableFriendlyNameField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.HarvestableFriendlyName"); } + FString& UIStringIMeleeHitToHarvestField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UIStringIMeleeHitToHarvest"); } + FString& UIStringHarvestRequiresToolField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UIStringHarvestRequiresTool"); } + FString& UIStringCantHarvestUnderwaterField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.UIStringCantHarvestUnderwater"); } + float& DinoHarvestGiveHealthAmountField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DinoHarvestGiveHealthAmount"); } + float& DinoHarvestGiveHealthSpeedField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DinoHarvestGiveHealthSpeed"); } + int& DinoHarvestGiveHealthDescriptionIndexField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.DinoHarvestGiveHealthDescriptionIndex"); } + FAttachedInstancedHarvestingElement* ActiveInstancedElementField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.ActiveInstancedElement"); } + TArray>& ForceAllowMeleeHarvestingOverridesField() { return *GetNativePointerField>*>(this, "UPrimalHarvestingComponent.ForceAllowMeleeHarvestingOverrides"); } + float& HarvestingPriorityField() { return *GetNativePointerField(this, "UPrimalHarvestingComponent.HarvestingPriority"); } + TArray& AdditionalComponentAttachmentsField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.AdditionalComponentAttachments"); } + TArray& AdditionalComponentAttachmentsDedicatedField() { return *GetNativePointerField*>(this, "UPrimalHarvestingComponent.AdditionalComponentAttachmentsDedicated"); } + +}; + +struct UHierarchicalInstancedStaticMeshComponent : UInstancedStaticMeshComponent +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UHierarchicalInstancedStaticMeshComponent.GetPrivateStaticClass", Package); } + +}; + +struct FOceanHarvestedEntry +{ + long double ReplenishAtTime; + int HarvestIndex; + TSubclassOf HarvestTemplate; + FVector AtLocation; +}; + +struct FOceanHarvestEntry +{ + TSubclassOf RenderComponent; + TSubclassOf HarvestComponent; + float Weight; + float RandomOffsetPercentageOfPlacementInterval; +}; + +struct AOceanHarvestManager : AActor { + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AOceanHarvestManager.GetPrivateStaticClass", Package); } + TArray& HiddenHarvestedOceanEntries() { return *GetNativePointerField*>(this, "AOceanHarvestManager.HiddenHarvestedOceanEntries"); }; + TArray& OceanHarvestEntries() { return *GetNativePointerField*>(this, "AOceanHarvestManager.OceanHarvestEntries"); }; +}; + +struct AInstancedFoliageActor : AActor +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AInstancedFoliageActor.GetPrivateStaticClass", Package); } + TArray& FoliageTypes() { return *GetNativePointerField*>(this, "AInstancedFoliageActor.FoliageTypes"); } + TArray& BaseMeshLookup() { return *GetNativePointerField*>(this, "AInstancedFoliageActor.BaseMeshLookup"); } + TArray& StaticMeshRefs() { return *GetNativePointerField*>(this, "AInstancedFoliageActor.StaticMeshRefs"); } + + UFoliageType* SelectedMesh() { return *GetNativePointerField(this, "AInstancedFoliageActor.SelectedMesh"); } +}; + +struct UBoxComponent : UShapeComponent +{ + FVector& BoxExtent() { return *GetNativePointerField(this, "UBoxComponent.BoxExtent"); } +}; + +struct ADiscoveryZone : AActor +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ADiscoveryZone.GetPrivateStaticClass", Package); } + + TSubobjectPtr BoxExtent() { return *GetNativePointerField*>(this, "ADiscoveryZone.CollisionComponent"); } + FVector& WorldLoc() { return *GetNativePointerField(this, "ADiscoveryZone.WorldLoc"); } + FString& ZoneName() { return *GetNativePointerField(this, "ADiscoveryZone.ZoneName"); } + int& ZoneId() { return *GetNativePointerField(this, "ADiscoveryZone.ZoneId"); } + bool& bIsManuallyPlacedActor() { return *GetNativePointerField(this, "ADiscoveryZone.bIsManuallyPlacedActor"); } + FString& VolumeName() { return *GetNativePointerField(this, "ADiscoveryZone.VolumeName"); } +}; + +struct ABrush : AActor +{ +}; + +struct AVolume : ABrush +{ +}; + +struct ATreasureSpawnVolume : AVolume +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ATreasureSpawnVolume.GetPrivateStaticClass", Package); } + float& MinQuality() { return *GetNativePointerField(this, "ATreasureSpawnVolume.MinQuality"); } + float& MaxQuality() { return *GetNativePointerField(this, "ATreasureSpawnVolume.MaxQuality"); } + float& SpawnWeight() { return *GetNativePointerField(this, "ATreasureSpawnVolume.SpawnWeight"); } + float& QualityMultiplier() { return *GetNativePointerField(this, "ATreasureSpawnVolume.QualityMultiplier"); } +}; + +struct ABiomeZoneVolume : AVolume +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ABiomeZoneVolume.GetPrivateStaticClass", Package); } + FString& BiomeZoneName() { return *GetNativePointerField(this, "ABiomeZoneVolume.BiomeZoneName"); } + FString& BiomeZoneNameAltDistanceName() { return *GetNativePointerField(this, "ABiomeZoneVolume.BiomeZoneNameAltDistanceName"); } + + TArray& BiomeZoneTags() { return *GetNativePointerField*>(this, "ABiomeZoneVolume.BiomeZoneTags"); } + float& AbsoluteMaxTemperature() { return *GetNativePointerField(this, "ABiomeZoneVolume.AbsoluteMaxTemperature"); } + float& AbsoluteMinTemperature() { return *GetNativePointerField(this, "ABiomeZoneVolume.AbsoluteMinTemperature"); } + + float& FinalTemperatureMultiplier() { return *GetNativePointerField(this, "ABiomeZoneVolume.FinalTemperatureMultiplier"); } + float& FinalTemperatureExponent() { return *GetNativePointerField(this, "ABiomeZoneVolume.FinalTemperatureExponent"); } + float& FinalTemperatureAddition() { return *GetNativePointerField(this, "ABiomeZoneVolume.FinalTemperatureAddition"); } + + FString* GetBiomeZoneName(FString* result, APrimalCharacter* ForCharacter) { return NativeCall(this, "ABiomeZoneVolume.GetBiomeZoneName", result, ForCharacter); } + +}; + +struct FFoliageAttachmentOverride +{ + FName ForFoliageTypeName; + TSubclassOf OverrideActorComponent; +}; + + +struct AFoliageAttachmentOverrideVolume : AInfo +{ + void BeginPlay(float a2) { return NativeCall(this, "AFoliageAttachmentOverrideVolume.BeginPlay", a2); } + TArray& FoliageAttachmentOverrides() { return *GetNativePointerField*>(this, "AFoliageAttachmentOverrideVolume.FoliageAttachmentOverrides"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & FoliageOverrideMap() { return *GetNativePointerField< TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "AFoliageAttachmentOverrideVolume.FoliageOverrideMap"); } + unsigned __int32& bAddedToArrayField() { return *GetNativePointerField(this, "AFoliageAttachmentOverrideVolume.bAddedToArray"); } + unsigned __int32& bExportToCSVField() { return *GetNativePointerField(this, "AFoliageAttachmentOverrideVolume.bExportToCSV"); } +}; + +struct APrimalStructureItemContainer_SupplyCrate +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "APrimalStructureItemContainer_SupplyCrate.GetPrivateStaticClass", Package); } + + float& MinItemSetsField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.MinItemSets"); } + float& MaxItemSetsField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.MaxItemSets"); } + float& NumItemSetsPowerField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.NumItemSetsPower"); } + bool& bSetsRandomWithoutReplacementField() { return *GetNativePointerField< bool*>(this, "APrimalStructureItemContainer_SupplyCrate.bSetsRandomWithoutReplacement"); } + float& MinQualityMultiplierField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.MinQualityMultiplier"); } + float& MaxQualityMultiplierField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.MaxQualityMultiplier"); } + TArray& ItemSetsField() { return *GetNativePointerField< TArray*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSets"); } + TSubclassOf& ItemSetsOverrideField() { return *GetNativePointerField< TSubclassOf*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetsOverride"); } + TArray& AdditionalItemSetsField() { return *GetNativePointerField< TArray*>(this, "APrimalStructureItemContainer_SupplyCrate.AdditionalItemSets"); } + TSubclassOf& AdditionalItemSetsOverrideField() { return *GetNativePointerField< TSubclassOf*>(this, "APrimalStructureItemContainer_SupplyCrate.AdditionalItemSetsOverride"); } + int& RequiredLevelToAccessField() { return *GetNativePointerField< int*>(this, "APrimalStructureItemContainer_SupplyCrate.RequiredLevelToAccess"); } + int& MaxLevelToAccessField() { return *GetNativePointerField< int*>(this, "APrimalStructureItemContainer_SupplyCrate.MaxLevelToAccess"); } + float& InitialTimeToLoseHealthField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.InitialTimeToLoseHealth"); } + float& IntervalToLoseHealthAfterAccessField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.IntervalToLoseHealthAfterAccess"); } + float& IntervalTimeToLoseHealthField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.IntervalTimeToLoseHealth"); } + float& IntervalPercentHealthToLoseField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.IntervalPercentHealthToLose"); } + TSubclassOf& ItemSetExtraItemClassField() { return *GetNativePointerField< TSubclassOf*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemClass"); } + float& ItemSetExtraItemQuantityByQualityMultiplierField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemQuantityByQualityMultiplier"); } + float& ItemSetExtraItemQuantityByQualityPowerField() { return *GetNativePointerField< float*>(this, "APrimalStructureItemContainer_SupplyCrate.ItemSetExtraItemQuantityByQualityPower"); } + + BitFieldValue bIsBonusCrateField() { return { this, "APrimalStructureItemContainer_SupplyCrate.bIsBonusCrateField" }; } +}; + +struct FSupplyCrateValuesOverride +{ + FName LootTableName; + float MinItemSets; + float MaxItemSets; + float NumItemSetsPower; + bool bSetsRandomWithoutReplacement; + float MinQualityMultiplier; + float MaxQualityMultiplier; + TArray ItemSets; + TSubclassOf ItemSetsOverride; + TArray AdditionalItemSets; + TSubclassOf AdditionalItemSetsOverride; + int RequiredLevelToAccess; + int MaxLevelToAccess; + bool bRandomizeMinAndMaxQualityMultiplier; + float RandomQualityMultiplierMin; + float RandomQualityMultiplierMax; + float RandomQualityMultiplierPower; + TSubclassOf ItemSetExtraItemClass; + float ItemSetExtraItemQuantityByQualityMultiplier; + float ItemSetExtraItemQuantityByQualityPower; +}; + +struct FSupplyCrateSpawnEntry +{ + float EntryWeight; + TSubclassOf CrateTemplate; + bool bOverrideCrateValues; + FSupplyCrateValuesOverride OverrideCrateValues; + TSubclassOf CrateEnemySpawnEntries; +}; + +struct FSupplyCrateSpawnPointEntry +{ + AActor* LinkedSpawnPoint; + ANPCZoneManager* LinkedEnemySpawnZoneManager; + FName LinkedEnemySpawnZoneManagerTag; + unsigned __int32 bTraceGroundPoint : 1; + FVector TraceGroundPointDownOffset; + FVector TraceGroundPointUpOffset; + float SpawnPointWeight; + TArray OverrideSupplyCrateEntries; + long double LastTimeSpawned; +}; + + + +struct ASupplyCrateSpawningVolume : AVolume +{ + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "ASupplyCrateSpawningVolume.GetPrivateStaticClass", Package); } + void SpawnCratesFromAllPoints() { return NativeCall(this, "ASupplyCrateSpawningVolume.SpawnCratesFromAllPoints"); } + void CheckCrateSpawn() { return NativeCall(this, "ASupplyCrateSpawningVolume.CheckCrateSpawn"); } + void BeginPlay(float a2) { return NativeCall(this, "ASupplyCrateSpawningVolume.BeginPlay", a2); } + + + TArray& LinkedSupplyCrateEntriesField() { return *GetNativePointerField< TArray*>(this, "ASupplyCrateSpawningVolume.LinkedSupplyCrateEntries"); } + TArray& OriginalSupplyCrateEntriesField() { return *GetNativePointerField< TArray*>(this, "ASupplyCrateSpawningVolume.OriginalSupplyCrateEntries"); } + TArray& LinkedSpawnPointEntriesField() { return *GetNativePointerField< TArray*>(this, "ASupplyCrateSpawningVolume.LinkedSpawnPointEntries"); } + TArray& SupplyCrateClassRemappingsField() { return *GetNativePointerField< TArray*>(this, "ASupplyCrateSpawningVolume.SupplyCrateClassRemappings"); } + float& CrateSpawnDensityPerAreaField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.CrateSpawnDensityPerArea"); } + float& CreateSpawnDensityMultiplierField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.CreateSpawnDensityMultiplier"); } + float& RandomSpawnPointsExtentsOffsetFromSeamlessGridSizeField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsExtentsOffsetFromSeamlessGridSize"); } + int& MaxNumCratesField() { return *GetNativePointerField< int*>(this, "ASupplyCrateSpawningVolume.MaxNumCrates"); } + float& RandomSpawnPointsExtentsOverrideField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsExtentsOverride"); } + float& RandomSpawnPointsMinDistanceFromShoreField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsMinDistanceFromShore"); } + float& RandomSpawnPointsMaxDistanceFromShoreField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsMaxDistanceFromShore"); } + FVector& RandomSpawnPointsHitLocOffsetField() { return *GetNativePointerField< FVector*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsHitLocOffset"); } + float& RandomSpawnPointsMaxZField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsMaxZ"); } + float& RandomSpawnPointsMinZField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.RandomSpawnPointsMinZ"); } + float& DelayBeforeFirstCrateField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.DelayBeforeFirstCrate"); } + float& MaxDelayBeforeFirstCrateField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MaxDelayBeforeFirstCrate"); } + int& ZoneVolumeMaxNumberOfNPCBufferField() { return *GetNativePointerField< int*>(this, "ASupplyCrateSpawningVolume.ZoneVolumeMaxNumberOfNPCBuffer"); } + float& FirstStartupTimePeriodField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.FirstStartupTimePeriod"); } + float& FirstStartupIntervalBetweenCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.FirstStartupIntervalBetweenCrateSpawns"); } + float& IntervalBetweenCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.IntervalBetweenCrateSpawns"); } + float& MaxIntervalBetweenCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MaxIntervalBetweenCrateSpawns"); } + float& ExtraCrateQualityMultiplierField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.ExtraCrateQualityMultiplier"); } + float& IntervalBetweenMaxedCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.IntervalBetweenMaxedCrateSpawns"); } + float& MaxIntervalBetweenMaxedCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MaxIntervalBetweenMaxedCrateSpawns"); } + float& SP_IntervalBetweenCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_IntervalBetweenCrateSpawns"); } + float& SP_MaxIntervalBetweenCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_MaxIntervalBetweenCrateSpawns"); } + float& SP_IntervalBetweenMaxedCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_IntervalBetweenMaxedCrateSpawns"); } + float& SP_MaxIntervalBetweenMaxedCrateSpawnsField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_MaxIntervalBetweenMaxedCrateSpawns"); } + float& SP_NoValidSpawnRecheckIntervalField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_NoValidSpawnRecheckInterval"); } + float& SP_DelayBeforeFirstCrateField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_DelayBeforeFirstCrate"); } + float& SP_MaxDelayBeforeFirstCrateField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.SP_MaxDelayBeforeFirstCrate"); } + float& MinCrateDistanceFromPlayerField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MinCrateDistanceFromPlayer"); } + float& MinCrateDistanceFromStructureField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MinCrateDistanceFromStructure"); } + float& NoValidSpawnReCheckIntervalField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.NoValidSpawnReCheckInterval"); } + float& MinTimeBetweenCrateSpawnsAtSamePointField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MinTimeBetweenCrateSpawnsAtSamePoint"); } + float& MinDistanceFromOtherCrateField() { return *GetNativePointerField< float*>(this, "ASupplyCrateSpawningVolume.MinDistanceFromOtherCrate"); } + FName& CrateSpawningRequiresLoadedSublevelField() { return *GetNativePointerField< FName*>(this, "ASupplyCrateSpawningVolume.CrateSpawningRequiresLoadedSublevel"); } + TArray& MyCratesField() { return *GetNativePointerField< TArray*>(this, "ASupplyCrateSpawningVolume.MyCrates"); } +}; + +struct ANPCZoneSpawnVolume : AVolume +{ +}; + +struct FLinkedZoneSpawnVolumeEntry +{ + // Fields + ANPCZoneSpawnVolume* LinkedZoneSpawnVolume; + TArray ZoneSpawnVolumeFloors; + TArray ZoneSpawnVolumeFloorTags; + float EntryWeight; +}; + +struct ANPCZoneManager : AInfo +{ + TArray& LinkedZoneSpawnVolumeEntriesField() { return *GetNativePointerField*>(this, "ANPCZoneManager.LinkedZoneSpawnVolumeEntries"); } + TSubclassOf& NPCSpawnEntriesContainerObjectField() { return *GetNativePointerField*>(this, "ANPCZoneManager.NPCSpawnEntriesContainerObject"); } + TArray& NPCSpawnEntriesField() { return *GetNativePointerField*>(this, "ANPCZoneManager.NPCSpawnEntries"); } + TArray& NPCSpawnLimitsField() { return *GetNativePointerField*>(this, "ANPCZoneManager.NPCSpawnLimits"); } + static void StaticRegisterNativesANPCZoneManager() { NativeCall(nullptr, "ANPCZoneManager.StaticRegisterNativesANPCZoneManager"); } + UField* GetPrivateStaticClass() { return NativeCall(this, "ANPCZoneManager.GetPrivateStaticClass"); } + + bool& bEnabledField() { return *GetNativePointerField(this, "ANPCZoneManager.bEnabled"); } + bool& bForceInEditorField() { return *GetNativePointerField(this, "ANPCZoneManager.bForceInEditor"); } + bool& bNewAbsoluteForceInEditorField() { return *GetNativePointerField(this, "ANPCZoneManager.bNewAbsoluteForceInEditor"); } + bool& bNeverSpawnInWaterField() { return *GetNativePointerField(this, "ANPCZoneManager.bNeverSpawnInWater"); } + bool& bOnlySpawnInWaterField() { return *GetNativePointerField(this, "ANPCZoneManager.bOnlySpawnInWater"); } + bool& bSpawnOnOceanField() { return *GetNativePointerField(this, "ANPCZoneManager.bSpawnOnOcean"); } + bool& bAllowLandSpawnOnNonIKBlockerField() { return *GetNativePointerField(this, "ANPCZoneManager.bAllowLandSpawnOnNonIKBlocker"); } + float& SpawnPointsExtentsOffsetFromSeamlessGridSizeField() { return *GetNativePointerField(this, "ANPCZoneManager.SpawnPointsExtentsOffsetFromSeamlessGridSize"); } + float& SpawnMinDistanceFromShoreField() { return *GetNativePointerField(this, "ANPCZoneManager.SpawnMinDistanceFromShore"); } + float& ConsoleDesiredNumberOfNPCMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.ConsoleDesiredNumberOfNPCMultiplier"); } + TArray& OnlyAllowSpawningOnActorTagsField() { return *GetNativePointerField*>(this, "ANPCZoneManager.OnlyAllowSpawningOnActorTags"); } + bool& bAllowExtentTestField() { return *GetNativePointerField(this, "ANPCZoneManager.bAllowExtentTest"); } + bool& bOnlyCheckMySublevelWaterField() { return *GetNativePointerField(this, "ANPCZoneManager.bOnlyCheckMySublevelWater"); } + int& MinDesiredNumberOfNPCField() { return *GetNativePointerField(this, "ANPCZoneManager.MinDesiredNumberOfNPC"); } + int& SP_MinDesiredNumberOfNPCField() { return *GetNativePointerField(this, "ANPCZoneManager.SP_MinDesiredNumberOfNPC"); } + float& Override_SP_StasisAutoDestoryIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.Override_SP_StasisAutoDestoryInterval"); } + int& AbsoluteMaxNumberOfNPCField() { return *GetNativePointerField(this, "ANPCZoneManager.AbsoluteMaxNumberOfNPC"); } + int& ExtraNPCLevelOffsetField() { return *GetNativePointerField(this, "ANPCZoneManager.ExtraNPCLevelOffset"); } + float& DesiredNumberOfNPCMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.DesiredNumberOfNPCMultiplier"); } + float& TheSpawnPointMinimumFloorNormalField() { return *GetNativePointerField(this, "ANPCZoneManager.TheSpawnPointMinimumFloorNormal"); } + float& TheNewNewEditorNumberOfNPCMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.TheNewNewEditorNumberOfNPCMultiplier"); } + float& KillOffOverweightNPCStasisTimeField() { return *GetNativePointerField(this, "ANPCZoneManager.KillOffOverweightNPCStasisTime"); } + float& TheMaximumWorldTimeForFullIncreaseField() { return *GetNativePointerField(this, "ANPCZoneManager.TheMaximumWorldTimeForFullIncrease"); } + float& TheMinimumPlayerDistanceFromSpawnPointField() { return *GetNativePointerField(this, "ANPCZoneManager.TheMinimumPlayerDistanceFromSpawnPoint"); } + float& TheIncreaseNPCIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.TheIncreaseNPCInterval"); } + float& SP_TheIncreaseNPCIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.SP_TheIncreaseNPCInterval"); } + float& SP_TheMaximumWorldTimeForFullIncreaseField() { return *GetNativePointerField(this, "ANPCZoneManager.SP_TheMaximumWorldTimeForFullIncrease"); } + float& TheIncreaseNPCIntervalMaxField() { return *GetNativePointerField(this, "ANPCZoneManager.TheIncreaseNPCIntervalMax"); } + float& TheDecreaseNPCIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.TheDecreaseNPCInterval"); } + float& NPCAIRangeMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.NPCAIRangeMultiplier"); } + bool& bNPCDontWanderField() { return *GetNativePointerField(this, "ANPCZoneManager.bNPCDontWander"); } + bool& bForcePreventDinoSeamlessTravelField() { return *GetNativePointerField(this, "ANPCZoneManager.bForcePreventDinoSeamlessTravel"); } + bool& bNPCWildIgnoreWildField() { return *GetNativePointerField(this, "ANPCZoneManager.bNPCWildIgnoreWild"); } + bool& bNPCNoKillXPField() { return *GetNativePointerField(this, "ANPCZoneManager.bNPCNoKillXP"); } + bool& bNPCPreventSavingField() { return *GetNativePointerField(this, "ANPCZoneManager.bNPCPreventSaving"); } + bool& bForceUntameableField() { return *GetNativePointerField(this, "ANPCZoneManager.bForceUntameable"); } + bool& bUsesManualSpawningField() { return *GetNativePointerField(this, "ANPCZoneManager.bUsesManualSpawning"); } + bool& bIgnoreVolumeEcompassingCheckField() { return *GetNativePointerField(this, "ANPCZoneManager.bIgnoreVolumeEcompassingCheck"); } + bool& bSpawnAllNPCEntriesField() { return *GetNativePointerField(this, "ANPCZoneManager.bSpawnAllNPCEntries"); } + bool& bOnlyUseInSingleplayerField() { return *GetNativePointerField(this, "ANPCZoneManager.bOnlyUseInSingleplayer"); } + bool& bSinglePlayerSpawnAroundPlayerViewField() { return *GetNativePointerField(this, "ANPCZoneManager.bSinglePlayerSpawnAroundPlayerView"); } + float& SinglePlayerSpawnAroundPlayerViewRadiusMinField() { return *GetNativePointerField(this, "ANPCZoneManager.SinglePlayerSpawnAroundPlayerViewRadiusMin"); } + float& SinglePlayerSpawnAroundPlayerViewRadiusMaxField() { return *GetNativePointerField(this, "ANPCZoneManager.SinglePlayerSpawnAroundPlayerViewRadiusMax"); } + bool& bOnlyUseInDedicatedServerField() { return *GetNativePointerField(this, "ANPCZoneManager.bOnlyUseInDedicatedServer"); } + float& NPCWanderRadiusMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.NPCWanderRadiusMultiplier"); } + int& MaxNumberSpawnZoneRandomPointChecksField() { return *GetNativePointerField(this, "ANPCZoneManager.MaxNumberSpawnZoneRandomPointChecks"); } + int& TheNPCFullIncreaseMaximumIterationsField() { return *GetNativePointerField(this, "ANPCZoneManager.TheNPCFullIncreaseMaximumIterations"); } + float& TheMinimumTamedDinoDistanceFromSpawnPointField() { return *GetNativePointerField(this, "ANPCZoneManager.TheMinimumTamedDinoDistanceFromSpawnPoint"); } + float& TheMinimumStructureDistanceFromSpawnPointField() { return *GetNativePointerField(this, "ANPCZoneManager.TheMinimumStructureDistanceFromSpawnPoint"); } + float& NPCLerpToMaxRandomBaseLevelField() { return *GetNativePointerField(this, "ANPCZoneManager.NPCLerpToMaxRandomBaseLevel"); } + float& ManualSpawningNPCLerpToMaxRandomBaseLevelField() { return *GetNativePointerField(this, "ANPCZoneManager.ManualSpawningNPCLerpToMaxRandomBaseLevel"); } + float& SpawnOnOceanZOffsetField() { return *GetNativePointerField(this, "ANPCZoneManager.SpawnOnOceanZOffset"); } + int& MaximumNumberNearbyCoreStructuresField() { return *GetNativePointerField(this, "ANPCZoneManager.MaximumNumberNearbyCoreStructures"); } + int& AbsoluteMaximumNumberNearbyCoreStructuresField() { return *GetNativePointerField(this, "ANPCZoneManager.AbsoluteMaximumNumberNearbyCoreStructures"); } + bool& bAutoKillUseGlobalStasisArrayField() { return *GetNativePointerField(this, "ANPCZoneManager.bAutoKillUseGlobalStasisArray"); } + bool& bTraceForSpawnAgainstWaterField() { return *GetNativePointerField(this, "ANPCZoneManager.bTraceForSpawnAgainstWater"); } + bool& bNPCForcePreventExitingWaterField() { return *GetNativePointerField(this, "ANPCZoneManager.bNPCForcePreventExitingWater"); } + bool& bDisableOnSeamlessHomeServersField() { return *GetNativePointerField(this, "ANPCZoneManager.bDisableOnSeamlessHomeServers"); } + bool& bUseSpawnPointOverrideRotationField() { return *GetNativePointerField(this, "ANPCZoneManager.bUseSpawnPointOverrideRotation"); } + bool& bWasOriginallyEnabledField() { return *GetNativePointerField(this, "ANPCZoneManager.bWasOriginallyEnabled"); } + float& NPCLevelMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.NPCLevelMultiplier"); } + int& ForceOverrideNPCBaseLevelField() { return *GetNativePointerField(this, "ANPCZoneManager.ForceOverrideNPCBaseLevel"); } + float& IncreaseNPCIntervalMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.IncreaseNPCIntervalMultiplier"); } + int& UseDesiredNumberOfNPCField() { return *GetNativePointerField(this, "ANPCZoneManager.UseDesiredNumberOfNPC"); } + int& NumNPCSpawnedField() { return *GetNativePointerField(this, "ANPCZoneManager.NumNPCSpawned"); } + int& NumSpawnFailuresField() { return *GetNativePointerField(this, "ANPCZoneManager.NumSpawnFailures"); } + bool& bForceRespawnDinosField() { return *GetNativePointerField(this, "ANPCZoneManager.bForceRespawnDinos"); } + bool& bTriedFullIncreaseField() { return *GetNativePointerField(this, "ANPCZoneManager.bTriedFullIncrease"); } + bool& bSpawnsWaterDinosField() { return *GetNativePointerField(this, "ANPCZoneManager.bSpawnsWaterDinos"); } + bool& bSpawnsAmphibiousDinosField() { return *GetNativePointerField(this, "ANPCZoneManager.bSpawnsAmphibiousDinos"); } + float& TheNextIncreaseNPCIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.TheNextIncreaseNPCInterval"); } + float& CloseStructureDistanceFromSpawnPointField() { return *GetNativePointerField(this, "ANPCZoneManager.CloseStructureDistanceFromSpawnPoint"); } + FName& NonDedicatedFreezeWildDinoPhysicsIfLevelUnloadedField() { return *GetNativePointerField(this, "ANPCZoneManager.NonDedicatedFreezeWildDinoPhysicsIfLevelUnloaded"); } + TArray& NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloadedField() { return *GetNativePointerField*>(this, "ANPCZoneManager.NonDedicatedFreezeWildDinoPhysicsIfLevelsUnloaded"); } + float& MinimumManualSpawnIntervalField() { return *GetNativePointerField(this, "ANPCZoneManager.MinimumManualSpawnInterval"); } + bool& bIgnoreNPCRandomClassReplacementsField() { return *GetNativePointerField(this, "ANPCZoneManager.bIgnoreNPCRandomClassReplacements"); } + bool& bDirectLinkDinosWithZoneManagerField() { return *GetNativePointerField(this, "ANPCZoneManager.bDirectLinkDinosWithZoneManager"); } + bool& bUseSeamlessServerNPCShipSpawnEntriesOverrideField() { return *GetNativePointerField(this, "ANPCZoneManager.bUseSeamlessServerNPCShipSpawnEntriesOverride"); } + bool& bUseSeamlessServerOceanEpicSpawnEntriesOverrideField() { return *GetNativePointerField(this, "ANPCZoneManager.bUseSeamlessServerOceanEpicSpawnEntriesOverride"); } + float& NPCZoneLinkedDinoWeightsField() { return *GetNativePointerField(this, "ANPCZoneManager.NPCZoneLinkedDinoWeights"); } + int& TheNPCDynamicIncreaseMaximumIterationsField() { return *GetNativePointerField(this, "ANPCZoneManager.TheNPCDynamicIncreaseMaximumIterations"); } + float& IslandFinalNPCLevelMultiplierField() { return *GetNativePointerField(this, "ANPCZoneManager.IslandFinalNPCLevelMultiplier"); } + int& IslandFinalNPCLevelOffsetField() { return *GetNativePointerField(this, "ANPCZoneManager.IslandFinalNPCLevelOffset"); } + float& SingleplayerDeleteCreaturesAwayFromViewDistField() { return *GetNativePointerField(this, "ANPCZoneManager.SingleplayerDeleteCreaturesAwayFromViewDist"); } + float& SingleplayerDeleteCreaturesAwayFromViewTimeOutField() { return *GetNativePointerField(this, "ANPCZoneManager.SingleplayerDeleteCreaturesAwayFromViewTimeOut"); } + int& MySublevelUniqueIDField() { return *GetNativePointerField(this, "ANPCZoneManager.MySublevelUniqueID"); } +}; + diff --git a/version/Core/Public/API/Atlas/Atlas.h b/version/Core/Public/API/Atlas/Atlas.h new file mode 100644 index 00000000..3eff6a79 --- /dev/null +++ b/version/Core/Public/API/Atlas/Atlas.h @@ -0,0 +1,28 @@ +#pragma once + +#define _CRT_SECURE_NO_WARNINGS + +#ifndef ATLAS_GAME +#define ATLAS_GAME +#endif + +#include "../Base.h" + +#include "../UE/Math/Vector.h" +#include "../UE/Math/Rotator.h" +#include "../UE/NetSerialization.h" +#include "../UE/Math/ColorList.h" +#include "../UE/UE.h" +#include "Enums.h" +#include "Inventory.h" +#include "Other.h" +#include "Tribe.h" +#include "Actor.h" +#include "GameMode.h" +#include "GameState.h" +#include "PrimalStructure.h" + +#include "../../IApiUtils.h" +#include "../../ICommands.h" +#include "IHooks.h" +#include "Tools.h" diff --git a/version/Core/Public/API/Atlas/Enums.h b/version/Core/Public/API/Atlas/Enums.h new file mode 100644 index 00000000..c92aeca7 --- /dev/null +++ b/version/Core/Public/API/Atlas/Enums.h @@ -0,0 +1,828 @@ +#pragma once + +enum EFullyLoadPackageType; +enum ExpensiveFunctionRegister; + +namespace EInventoryDataListType +{ + enum Type + { + LocalEquipment = 1, + LocalQuickSlots = 1 << 2, + LocalItems = 1 << 3, + LocalCraftables = 1 << 4, + RemoteItems = 1 << 8, + RemoteCraftables = 1 << 9, + RemoteEquipment = 1 << 10, + ArkInventory = 1 << 16, + Droppable = 1 << 17, + DroppableMinusEquipped = 1 << 18, + Colors = 1 << 19, + Brushes = 1 << 20, + Dyes = 1 << 21, + Ingredients = 1 << 22, + Mask_Local = 0xFF, + Mask_Remote = 0xFF00, + Mask_LocalInventory = LocalItems | LocalCraftables, + Mask_RemoteInventory = RemoteItems | RemoteCraftables, + Mask_LocalDataList = LocalEquipment | Mask_LocalInventory, + Mask_RemoteDataList = RemoteEquipment | Mask_RemoteInventory, + Mask_Inventories = Mask_LocalInventory | Mask_RemoteInventory | ArkInventory, + Mask_Items = LocalItems | RemoteItems, + Mask_Craftables = LocalCraftables | RemoteCraftables, + Mask_Equipment = LocalEquipment | RemoteEquipment, + }; +} +namespace EInventorySortType +{ + enum Type + { + Default, + Alphabetical_Asc, + Alphabetical_Dsc, + Weight_Asc, + Weight_Dsc, + Type_Asc, + Type_Dsc, + SpoilTimer_Asc, + SpoilTimer_Dsc, + }; +} + +namespace EXPType +{ + enum Type + { + XP_GENERIC = 0x0, + XP_KILL = 0x1, + XP_HARVEST = 0x2, + XP_CRAFT = 0x3, + XP_SPECIAL = 0x4, + XP_SHIPKILL = 0x5, + XP_DISCOVERY = 0x6, + MAX = 0x7 + }; +} + +namespace EBabyCuddleType +{ + enum Type + { + PET = 0x0, + FOOD = 0x1, + WALK = 0x2, + MAX = 0x3 + }; +} + +namespace EAttachLocation +{ + enum Type + { + KeepRelativeOffset = 0x0, + KeepWorldPosition = 0x1, + SnapToTarget = 0x2 + }; +} + +namespace EEndPlayReason +{ + enum Type + { + ActorDestroyed = 0x0, + LevelTransition = 0x1, + EndPlayInEditor = 0x2, + RemovedFromWorld = 0x3, + Quit = 0x4 + }; +} + +namespace EPrimalARKTributeDataType +{ + enum Type + { + Items = 0x0, + TamedDinos = 0x1, + CharacterData = 0x2, + MAX = 0x3 + }; +} + +namespace ESTOFNotificationType +{ + enum Type + { + Death = 0x0, + TribeEliminated = 0x1, + MatchVictory = 0x2, + MatchDraw = 0x3, + MAX = 0x4 + }; +} + +namespace EDinoTamedOrder +{ + enum Type + { + SetAggressionPassive = 0x0, + SetAggressionNeutral = 0x1, + SetAggressionAggressive = 0x2, + SetAggressionAttackTarget = 0x3, + ToggleFollowMe = 0x4, + FollowMe = 0x5, + StopFollowing = 0x6, + CycleFollowDistance = 0x7, + SetAggressionPassiveFlee = 0x8, + MAX = 0x9 + }; +} + +namespace EPrimalCharacterInputType +{ + enum Type + { + PrimaryFire = 0x0, + Targeting = 0x1, + AltFire = 0x2, + SwitchWeapon = 0x3, + Reload = 0x4, + Crouch = 0x5, + Prone = 0x6, + CrouchProneToggle = 0x7, + SwitchMap = 0x8, + DinoAttack = 0x9, + Feat = 0xA, + MAX = 0xB + }; +} + +namespace EWeaponState +{ + enum Type + { + Idle = 0x0, + Firing = 0x1, + Reloading = 0x2, + Equipping = 0x3, + Switching = 0x4, + UnEquipping = 0x5 + }; +} + +namespace EPathFollowingRequestResult +{ + enum Type + { + Failed = 0x0, + AlreadyAtGoal = 0x1, + RequestSuccessful = 0x2 + }; +} + +namespace EPathFollowingResult +{ + enum Type + { + Success = 0x0, + Blocked = 0x1, + OffPath = 0x2, + Aborted = 0x3, + Skipped = 0x4, + Invalid = 0x5 + }; +} + +namespace EComponentMobility +{ + enum Type + { + Static = 0x0, + Stationary = 0x1, + Movable = 0x2 + }; +} + +enum class ERelativeTransformSpace +{ + RTS_World, + RTS_Actor, + RTS_Component +}; + +enum class EMoveComponentFlags +{ + MOVECOMP_NoFlags, + MOVECOMP_IgnoreBases, + MOVECOMP_SkipPhysicsMove, + MOVECOMP_NeverIgnoreBlockingOverlaps, + MOVECOMP_DoCenterOfMassCheck +}; + +namespace EOnDesrializationType +{ + enum Type + { + SaveGame = 0x0, + OnePersonTravel = 0x1, + TopVolumeTravel = 0x2, + RightVolumeTravel = 0x3, + BottomVolumeTravel = 0x4, + LeftVolumeTravel = 0x5, + MAX = 0x6 + }; +} + +namespace EPrimalItemStat +{ + enum Type + { + GenericQuality = 0x0, + Armor = 0x1, + MaxDurability = 0x2, + WeaponDamagePercent = 0x3, + WeaponClipAmmo = 0x4, + HypothermalInsulation = 0x5, + Weight = 0x6, + HyperthermalInsulation = 0x7, + MAX = 0x8 + }; +} + +namespace EPrimalEquipmentType +{ + enum Type + { + Hat = 0x0, + Shirt = 0x1, + Pants = 0x2, + Boots = 0x3, + Gloves = 0x4, + DinoSaddle = 0x5, + Trophy = 0x6, + Costume = 0x7, + Shield = 0x8, + MAX = 0x9 + }; +} + +namespace EPrimalItemMessage +{ + enum Type + { + Broken = 0x0, + Repaired = 0x1, + MAX = 0x2 + }; +} + +namespace EMatineeCaptureType +{ + enum Type + { + AVI = 0x0, + BMP = 0x1, + PNG = 0x2, + JPEG = 0x3 + }; +} + +namespace ETravelFailure +{ + enum Type + { + NoLevel = 0x0, + LoadMapFailure = 0x1, + InvalidURL = 0x2, + PackageMissing = 0x3, + PackageVersion = 0x4, + NoDownload = 0x5, + TravelFailure = 0x6, + CheatCommands = 0x7, + PendingNetGameCreateFailure = 0x8, + CloudSaveFailure = 0x9, + ServerTravelFailure = 0xA, + ClientTravelFailure = 0xB + }; +} + +namespace ETameUnitType +{ + enum Type + { + DINOS = 0x0, + ANCHOREDSHIPS = 0x1, + UNANCHOREDSHIPS = 0x2, + MAX = 0x3 + }; +} + +namespace ESeamlessVolumeSide +{ + enum Side + { + Top = 0x0, + Bottom = 0x1, + Left = 0x2, + Right = 0x3, + TopLeft = 0x4, + TopRight = 0x5, + BottomRight = 0x6, + BottomLeft = 0x7, + Side_MAX = 0x8 + }; +} + +namespace ESaveWorldType +{ + enum Type + { + Normal = 0x0, + Checkpoint = 0x1 + }; +} + +namespace EEngramDiscipline +{ + enum Type + { + SURVIVALISM = 0x0, + CONSTRUCTION_MERCANTILISM = 0x1, + BEASTMASTERY = 0x2, + HAND_TO_HAND_COMBAT = 0x3, + SWORDSMANSHIP = 0x4, + ARCHERY_THROWING_WEAPONS = 0x5, + PISTOLS_RIFLES = 0x6, + ARMORY = 0x7, + MEDICINE = 0x8, + ARTILLERY = 0x9, + SEAMANSHIP = 0xA, + CAPTAINEERING = 0xB, + COOKING_FARMING = 0xC, + MUSIC_DANCE = 0xD, + PIRACY = 0xE, + TAROT = 0xF, + MAX = 0x10 + }; +} + +namespace ELevelExperienceRampType +{ + enum Type + { + Player = 0x0, + DinoEasy = 0x1, + DinoMedium = 0x2, + DinoHard = 0x3, + MAX = 0x4 + }; +} + +namespace EPrimalItemType +{ + enum Type + { + MiscConsumable = 0x0, + Equipment = 0x1, + Weapon = 0x2, + Ammo = 0x3, + Structure = 0x4, + Resource = 0x5, + Skin = 0x6, + WeaponAttachment = 0x7, + Artifact = 0x8, + MAX = 0x9 + }; +} + +namespace EPrimalConsumableType +{ + enum Type + { + Food = 0x0, + Water = 0x1, + Medicine = 0x2, + Other = 0x3, + MAX = 0x4 + }; +} + +namespace EPrimalCharacterStatusValue +{ + enum Type + { + Health = 0x0, + Stamina = 0x1, + Torpidity = 0x2, + Oxygen = 0x3, + Food = 0x4, + Water = 0x5, + Temperature = 0x6, + Weight = 0x7, + MeleeDamageMultiplier = 0x8, + SpeedMultiplier = 0x9, + TemperatureFortitude = 0xA, + CraftingSpeedMultiplier = 0xB, + VitaminA = 0xC, + VitaminB = 0xD, + VitaminC = 0xE, + VitaminD = 0xF, + MAX = 0x10 + }; +} + +namespace EShipSize +{ + enum Type + { + SHIP_Personal = 0x0, + SHIP_Mini = 0x1, + SHIP_Small = 0x2, + SHIP_Medium = 0x3, + SHIP_Large = 0x4, + SHIP_Massive = 0x5, + SHIP_MAX = 0x6 + }; +} + +namespace ECaptainOtherActions +{ + enum Type + { + ToggleActivationGroup1 = 0x0, + SwitchAmmoTypeGroup1 = 0x1, + SwitchAmmoTypeGroup2 = 0x2, + None = 0x3 + }; +} + +namespace ETribeGroupPermission +{ + enum Type + { + STRUCTUREACTIVATE = 0x0, + INVENTORYACCESS = 0x1, + PET_ORDER = 0x2, + PET_RIDE = 0x3, + GENERAL_STRUCTUREDEMOLISH = 0x4, + GENERAL_STRUCTUREATTACHMENT = 0x5, + GENERAL_BUILDSTRUCTUREINRANGE = 0x6, + INVITEMEMBER = 0x7, + PROMOTEMEMBER = 0x8, + DEMOTEMEMBER = 0x9, + BANISHMEMBER = 0xA, + PET_UNCLAIM = 0xB + }; +} + +namespace EWeaponAttackInput +{ + enum Type + { + PrimaryInput = 0x0, + SecondaryInput = 0x1, + TertiaryInput = 0x2, + QuaternaryInput = 0x3, + QuinaryInput = 0x4, + AltInput = 0x5, + None = 0x6 + }; +} + +namespace EPrimalCharacterStatusState +{ + enum Type + { + Dead = 0x0, + Winded = 0x1, + Starvation = 0x2, + Dehydration = 0x3, + Suffocation = 0x4, + Encumbered = 0x5, + Hypothermia = 0x6, + Hyperthermia = 0x7, + Injured = 0x8, + KnockedOut = 0x9, + Sleeping = 0xA, + Cold = 0xB, + Hot = 0xC, + Crafting = 0xD, + VitaminALowest = 0xE, + VitaminALow = 0xF, + VitaminAHigh = 0x10, + VitaminAHighest = 0x11, + VitaminBLowest = 0x12, + VitaminBLow = 0x13, + VitaminBHigh = 0x14, + VitaminBHighest = 0x15, + VitaminCLowest = 0x16, + VitaminCLow = 0x17, + VitaminCHigh = 0x18, + VitaminCHighest = 0x19, + VitaminDLowest = 0x1A, + VitaminDLow = 0x1B, + VitaminDHigh = 0x1C, + VitaminDHighest = 0x1D, + Overeat = 0x1E, + Exhausted = 0x1F, + LowStamina = 0x20, + CombatState = 0x21, + Crouching = 0x22, + Proning = 0x23, + Overdrink = 0x24, + Yelling = 0x25, + MAX = 0x26 + }; +} + +namespace EPrimalStatsValueTypes +{ + enum Type + { + TotalShots = 0x0, + Misses = 0x1, + HitsStructure = 0x2, + HitsDinoBody = 0x3, + HitsDinoCritical = 0x4, + HitsPlayerBody = 0x5, + HitsPlayerCritical = 0x6, + MAX = 0x7 + }; +} + +namespace ECaptainOrder +{ + enum Type + { + StandDown = 0x0, + FreeFire = 0x1, + AttackMyTarget = 0x2, + ManualFire = 0x3, + None = 0x4, + RedAlert = 0x5, + UnRedAlert = 0x6 + }; +} + +namespace EWeaponType +{ + enum Type + { + Fist = 0x0, + OneHanded = 0x1, + TwoHanded = 0x2, + Pistol = 0x3, + MAX = 0x4 + }; +} + +namespace EWeaponAttackType +{ + enum Type + { + FirstAttack = 0x0, + SecondAttack = 0x1, + ThirdAttack = 0x2, + BlockingAttack = 0x3, + BreakingAttack = 0x4, + ChargeRun = 0x5, + PreChargeRun = 0x6, + FastAttack = 0x7, + Targeting = 0x8, + DownBlockingAttack = 0x9, + ExtraAttack = 0xA, + None = 0xB + }; +} + +namespace ECombatChangeReason +{ + enum Type + { + FromInput = 0x0, + MovementMode = 0x1, + ForcedChange = 0x2, + MAX = 0x3 + }; +} + +namespace EEngramGroup +{ + enum Type + { + ARK_PRIME = 0x2, + ARK_SCORCHEDEARTH = 0x4, + ARK_TEK = 0x8, + ARK_UNLEARNED = 0x10, + ARK_ABERRATION = 0x20, + MAX = 0x21 + }; +} + +namespace EMoveComponentAction +{ + enum Type + { + Move = 0x0, + Stop = 0x1, + Return = 0x2 + }; +} + +namespace EQuitPreference +{ + enum Type + { + }; +} + +namespace EActorListsBP +{ + enum Type + { + }; +} + +namespace ESuggestProjVelocityTraceOption +{ + enum Type + { + }; +} + +namespace EOnlineAsyncTaskState +{ + enum Type + { + }; +} + +namespace EListSessionStatus +{ + enum Type + { + SearchingOfficial = 0x0, + SearchingUnofficial = 0x1, + SearchingHistory = 0x2, + SearchingFavorites = 0x3, + SearchingFriends = 0x4, + SearchingLAN = 0x5, + SearchingListenServers = 0x6, + SearchingUnOfficialPCServer = 0x7, + SearchingOfficialLegacy = 0x8, + MAX = 0x9 + }; +} + +namespace ESocketWaitConditions +{ + enum Type + { + WaitForRead = 0x0, + WaitForWrite = 0x1, + WaitForReadOrWrite = 0x2 + }; +} + +enum ESoilType +{ + SoilType_None = 0x0, + SoilType_1 = 0x1, + SoilType_2 = 0x2, + SoilType_3 = 0x3, + SoilType_4 = 0x4, + SoilType_5 = 0x5, + SoilType_6 = 0x6, + SoilType_7 = 0x7, + SoilType_8 = 0x8, + SoilType_9 = 0x9, + SoilType_10 = 0xA, + SoilType_11 = 0xB, + SoilType_12 = 0xC, + SoilType_13 = 0xD, + SoilType_14 = 0xE, + SoilType_15 = 0xF, + SoilType_16 = 0x10, + SoilType_17 = 0x11, + SoilType_18 = 0x12, + SoilType_19 = 0x13, + SoilType_20 = 0x14, + SoilType_21 = 0x15, + SoilType_22 = 0x16, + SoilType_23 = 0x17, + SoilType_24 = 0x18, + SoilType_25 = 0x19, + SoilType_26 = 0x1A, + SoilType_27 = 0x1B, + SoilType_28 = 0x1C, + SoilType_29 = 0x1D, + SoilType_30 = 0x1E, + SoilType_31 = 0x1F, + SoilType_32 = 0x20, + SoilType_33 = 0x21, + SoilType_34 = 0x22, + SoilType_35 = 0x23, + SoilType_36 = 0x24, + SoilType_37 = 0x25, + SoilType_38 = 0x26, + SoilType_39 = 0x27, + SoilType_40 = 0x28, + SoilType_41 = 0x29, + SoilType_42 = 0x2A, + SoilType_43 = 0x2B, + SoilType_44 = 0x2C, + SoilType_45 = 0x2D, + SoilType_46 = 0x2E, + SoilType_47 = 0x2F, + SoilType_48 = 0x30, + SoilType_49 = 0x31, + SoilType_50 = 0x32, + SoilType_51 = 0x33, + SoilType_52 = 0x34, + SoilType_53 = 0x35, + SoilType_54 = 0x36, + SoilType_55 = 0x37, + SoilType_56 = 0x38, + SoilType_57 = 0x39, + SoilType_58 = 0x3A, + SoilType_59 = 0x3B, + SoilType_60 = 0x3C, + SoilType_61 = 0x3D, + SoilType_62 = 0x3E, + SoilType_63 = 0x3F, + SoilType_64 = 0x40, + SoilType_Max = 0x41 +}; + +namespace EChatSendMode +{ + enum Type + { + GlobalChat = 0x0, + ProximityChat = 0x1, + RadioChat = 0x2, + GlobalTribeChat = 0x3, + AllianceChat = 0x4, + MAX = 0x5 + }; +} + +namespace EChatType +{ + enum Type + { + GlobalChat = 0x0, + ProximityChat = 0x1, + RadioChat = 0x2, + GlobalTribeChat = 0x3, + AllianceChat = 0x4, + MAX = 0x5, + }; +} + +namespace EShipType +{ + enum Type + { + Default = 0x0, + Brigantine = 0x1, + Raft = 0x2, + Dinghy = 0x3, + Sloop = 0x4, + Schooner = 0x5, + Galleon = 0x6, + MAX = 0x7 + }; +} + +namespace ETribeEntityType +{ + enum Type + { + }; +} + +namespace EServerOctreeGroup +{ + enum Type + { + STASISCOMPONENTS = 0x0, + PLAYERPAWNS = 0x1, + DINOPAWNS = 0x2, + PAWNS = 0x3, + STRUCTURES = 0x4, + TARGETABLEACTORS = 0x5, + SPATIALNETWORKEDACTORS = 0x6, + SPATIALNETWORKEDACTORS_DORMANT = 0x7, + ALL_SPATIAL = 0x8, + THERMALSTRUCTURES = 0x9, + STRUCTURES_CORE = 0xA, + DINOPAWNS_TAMED = 0xB, + PLAYERS_AND_TAMED_DINOS = 0xC, + DINOFOODCONTAINER = 0xD, + GRENADES = 0xE, + TREESAPTAPS = 0xF, + LARGEUNSTASISRANGE = 0x10, + TRAPS = 0x11, + MAX = 0x12, + }; +} \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/GameMode.h b/version/Core/Public/API/Atlas/GameMode.h new file mode 100644 index 00000000..5e60fd9d --- /dev/null +++ b/version/Core/Public/API/Atlas/GameMode.h @@ -0,0 +1,2025 @@ +#pragma once + +#include "API/UE/UE.h" +#include "API/UE/Containers/Map.h" + +struct FSocket; + +struct FIslandInfoGameplayValues +{ + int IslandId; + FString SettlementOwnerName; + FString SettlementFlagName; + int CombatPhaseStartTime; + int LastUTCTimeAdjustedCombatPhase; + int NextWarTeam; + int NextWarUTCTimeStart; + int NextWarUTCTimeEnd; + int SettledByTeam; + float TaxRate; + bool bIsContested; + __int8 bIsSettlementCombat : 1; + __int8 bIsWar : 1; +}; + +struct FSeamlessIslandInfo +{ + int& IslandIdField() { return *GetNativePointerField< int*>(this, "FSeamlessServerInfo.IslandId"); } + TMap > & SpawnerOverridesField() { return *GetNativePointerField< TMap >*>(this, "FSeamlessServerInfo.SpawnerOverrides"); } + FString& IslandTreasureBottleSupplyCrateOverridesField() { return *GetNativePointerField< FString*>(this, "FSeamlessServerInfo.IslandTreasureBottleSupplyCrateOverrides"); } + unsigned int& ParentServerIdField() { return *GetNativePointerField< unsigned int*>(this, "FSeamlessServerInfo.ParentServerId"); } + FVector& GlobalLocationField() { return *GetNativePointerField< FVector*>(this, "FSeamlessServerInfo.GlobalLocation"); } + FVector2D& ServerLocalLocationField() { return *GetNativePointerField< FVector2D*>(this, "FSeamlessServerInfo.ServerLocalLocation"); } + float& minTreasureQualityField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.minTreasureQuality"); } + float& maxTreasureQualityField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.maxTreasureQuality"); } + float& TreasureQualityMultiplierField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.TreasureQualityMultiplier"); } + float& TreasureQualityAdditionField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.TreasureQualityAddition"); } + float& FinalNPCLevelMultiplierField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.FinalNPCLevelMultiplier"); } + int& FinalNPCLevelOffsetField() { return *GetNativePointerField< int*>(this, "FSeamlessServerInfo.FinalNPCLevelOffset"); } + bool& bUseNpcVolumesForTreasuresField() { return *GetNativePointerField< bool*>(this, "FSeamlessServerInfo.bUseNpcVolumesForTreasures"); } + bool& bUseLevelBoundsForTreasuresField() { return *GetNativePointerField< bool*>(this, "FSeamlessServerInfo.bUseLevelBoundsForTreasures"); } + bool& bPrioritizeVolumesForTreasuresField() { return *GetNativePointerField< bool*>(this, "FSeamlessServerInfo.bPrioritizeVolumesForTreasures"); } + int& spawnPointRegionOverrideField() { return *GetNativePointerField< int*>(this, "FSeamlessServerInfo.spawnPointRegionOverride"); } + TArray& IslandCustomDatas1Field() { return *GetNativePointerField< TArray*>(this, "FSeamlessServerInfo.IslandCustomDatas1"); } + TArray& IslandCustomDatas2Field() { return *GetNativePointerField< TArray*>(this, "FSeamlessServerInfo.IslandCustomDatas2"); } + TArray& IslandClientCustomDatas1Field() { return *GetNativePointerField< TArray*>(this, "FSeamlessServerInfo.IslandClientCustomDatas1"); } + TArray& IslandClientCustomDatas2Field() { return *GetNativePointerField< TArray*>(this, "FSeamlessServerInfo.IslandClientCustomDatas2"); } + FVector& SinglePlayerSpawnPointField() { return *GetNativePointerField< FVector*>(this, "FSeamlessServerInfo.SinglePlayerSpawnPoint"); } + TArray& SinglePlayerTreasureSpawnPointsField() { return *GetNativePointerField< TArray*>(this, "FSeamlessServerInfo.SinglePlayerTreasureSpawnPoints"); } + float& WidthField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.Width"); } + float& HeightField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.Height"); } + float& RotationField() { return *GetNativePointerField< float*>(this, "FSeamlessServerInfo.Rotation"); } + int& IslandPointsField() { return *GetNativePointerField< int*>(this, "FSeamlessServerInfo.IslandPoints"); } + FIslandInfoGameplayValues& ReplicatedGameplayValuesField() { return *GetNativePointerField< FIslandInfoGameplayValues*>(this, "FSeamlessServerInfo.ReplicatedGameplayValues"); } +}; + +struct FSeamlessServerInfo +{ + unsigned __int16& gridXField() { return *GetNativePointerField(this, "FSeamlessServerInfo.gridX"); } + unsigned __int16& gridYField() { return *GetNativePointerField(this, "FSeamlessServerInfo.gridY"); } + FString& _IpField() { return *GetNativePointerField(this, "FSeamlessServerInfo._Ip"); } + int& PortField() { return *GetNativePointerField(this, "FSeamlessServerInfo.Port"); } + int& GamePortField() { return *GetNativePointerField(this, "FSeamlessServerInfo.GamePort"); } + int& SeamlessDataPortField() { return *GetNativePointerField(this, "FSeamlessServerInfo.SeamlessDataPort"); } + int& SkyStyleIndexField() { return *GetNativePointerField(this, "FSeamlessServerInfo.SkyStyleIndex"); } + FVector& WaterColorOverrideField() { return *GetNativePointerField(this, "FSeamlessServerInfo.WaterColorOverride"); } + TArray& SubLevelsNamesField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.SubLevelsNames"); } + TArray& SubLevelsAdditionalTransformsField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.SubLevelsAdditionalTransforms"); } + TArray& SubLevelsUniqueIdsField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.SubLevelsUniqueIds"); } + TArray& SubLevelsLandscapeMaterialOverrideField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.SubLevelsLandscapeMaterialOverride"); } + TSet, FDefaultSetAllocator>& ExtraSubLevelsNamesField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "FSeamlessServerInfo.ExtraSubLevelsNames"); } + float& OrientationField() { return *GetNativePointerField(this, "FSeamlessServerInfo.Orientation"); } + FVector& OffsetField() { return *GetNativePointerField(this, "FSeamlessServerInfo.Offset"); } + bool& bIsHomeServerField() { return *GetNativePointerField(this, "FSeamlessServerInfo.bIsHomeServer"); } + FString& NameField() { return *GetNativePointerField(this, "FSeamlessServerInfo.Name"); } + float& TransitionMinZField() { return *GetNativePointerField(this, "FSeamlessServerInfo.TransitionMinZ"); } + int& UTCOffSetField() { return *GetNativePointerField(this, "FSeamlessServerInfo.UTCOffSet"); } + float& FloorDistFromOceanSurfaceField() { return *GetNativePointerField(this, "FSeamlessServerInfo.FloorDistFromOceanSurface"); } + FString& OceanDinoDepthEntriesOverrideField() { return *GetNativePointerField(this, "FSeamlessServerInfo.OceanDinoDepthEntriesOverride"); } + FString& TreasureMapLootTablesOverrideField() { return *GetNativePointerField(this, "FSeamlessServerInfo.TreasureMapLootTablesOverride"); } + FString& RegionOverridesField() { return *GetNativePointerField(this, "FSeamlessServerInfo.RegionOverrides"); } + FString& OceanFloatsamCratesOverrideField() { return *GetNativePointerField(this, "FSeamlessServerInfo.OceanFloatsamCratesOverride"); } + FString& NPCShipSpawnEntriesOverrideTemplateNameField() { return *GetNativePointerField(this, "FSeamlessServerInfo.NPCShipSpawnEntriesOverrideTemplateName"); } + FString& OceanEpicSpawnEntriesOverrideValuesField() { return *GetNativePointerField(this, "FSeamlessServerInfo.OceanEpicSpawnEntriesOverrideValues"); } + FString& GlobalBiomeSeamlessServerGridPreOffsetValuesField() { return *GetNativePointerField(this, "FSeamlessServerInfo.GlobalBiomeSeamlessServerGridPreOffsetValues"); } + FString& GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWaterField() { return *GetNativePointerField(this, "FSeamlessServerInfo.GlobalBiomeSeamlessServerGridPreOffsetValuesOceanWater"); } + FString& AdditionalCmdLineParamsField() { return *GetNativePointerField(this, "FSeamlessServerInfo.AdditionalCmdLineParams"); } + TArray& ServerCustomDatas1Field() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.ServerCustomDatas1"); } + TArray& ServerCustomDatas2Field() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.ServerCustomDatas2"); } + TArray& ClientCustomDatas1Field() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.ClientCustomDatas1"); } + TArray& ClientCustomDatas2Field() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.ClientCustomDatas2"); } + TArray& IslandInstancesField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.IslandInstances"); } + unsigned __int64& SteamServerIdField() { return *GetNativePointerField(this, "FSeamlessServerInfo.SteamServerId"); } + //TArray& DiscoveryZonesField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.DiscoveryZones"); } + //TArray& SpawnRegionsField() { return *GetNativePointerField*>(this, "FSeamlessServerInfo.SpawnRegions"); } + + // Functions + + unsigned int GetServerId() { return NativeCall(this, "FSeamlessServerInfo.GetServerId"); } + static unsigned int GetServerId(unsigned __int16 x, unsigned __int16 y) { return NativeCall(nullptr, "FSeamlessServerInfo.GetServerId", x, y); } + static void GetServerCoords(unsigned int id, unsigned __int16* OutX, unsigned __int16* OutY) { NativeCall(nullptr, "FSeamlessServerInfo.GetServerCoords", id, OutX, OutY); } + //FDiscoveryZone * GetDiscoveryZonesById(int ZoneId) { return NativeCall(this, "FSeamlessServerInfo.GetDiscoveryZonesById", ZoneId); } + //FDiscoveryZone * GetDiscoveryZonesByManualName(FString ManualName) { return NativeCall(this, "FSeamlessServerInfo.GetDiscoveryZonesByManualName", ManualName); } +}; + +struct FSeamlessGridInfo +{ + TMap >, FDefaultSetAllocator, TDefaultMapKeyFuncs >, 0> >& + HarvestOverridesField() { + return *GetNativePointerField >, FDefaultSetAllocator, TDefaultMapKeyFuncs >, 0> >*> + (this, "FSeamlessGridInfo.HarvestOverrides"); + } + + //TArray& ShipPathsField() { return *GetNativePointerField*>(this, "FSeamlessGridInfo.ShipPaths"); } + FString& QuestDataField() { return *GetNativePointerField(this, "FSeamlessGridInfo.QuestData"); } + FString& AtlasPasswordField() { return *GetNativePointerField(this, "FSeamlessGridInfo.AtlasPassword"); } + int& columnUTCOffsetField() { return *GetNativePointerField(this, "FSeamlessGridInfo.columnUTCOffset"); } + int& TotalGridsXField() { return *GetNativePointerField(this, "FSeamlessGridInfo.TotalGridsX"); } + int& TotalGridsYField() { return *GetNativePointerField(this, "FSeamlessGridInfo.TotalGridsY"); } + __int16& MinXField() { return *GetNativePointerField<__int16*>(this, "FSeamlessGridInfo.MinX"); } + __int16& MaxXField() { return *GetNativePointerField<__int16*>(this, "FSeamlessGridInfo.MaxX"); } + __int16& MinYField() { return *GetNativePointerField<__int16*>(this, "FSeamlessGridInfo.MinY"); } + __int16& MaxYField() { return *GetNativePointerField<__int16*>(this, "FSeamlessGridInfo.MaxY"); } + //TSharedPtr& ServerConfigJsonObjectField() { return *GetNativePointerField*>(this, "FSeamlessGridInfo.ServerConfigJsonObject"); } + //TSharedPtr& CurrentServerJsonObjectField() { return *GetNativePointerField*>(this, "FSeamlessGridInfo.CurrentServerJsonObject"); } + unsigned int& CurrentServerIdField() { return *GetNativePointerField(this, "FSeamlessGridInfo.CurrentServerId"); } + TMap > & ServersInfoField() { return *GetNativePointerField >*>(this, "FSeamlessGridInfo.ServersInfo"); } + int& TotalDiscoveryZonesXPField() { return *GetNativePointerField(this, "FSeamlessGridInfo.TotalDiscoveryZonesXP"); } + float& GridSizeField() { return *GetNativePointerField(this, "FSeamlessGridInfo.GridSize"); } + float& GlobalTransitionMinZField() { return *GetNativePointerField(this, "FSeamlessGridInfo.GlobalTransitionMinZ"); } + bool& bUseUTCTimeField() { return *GetNativePointerField(this, "FSeamlessGridInfo.bUseUTCTime"); } + FString& Day0Field() { return *GetNativePointerField(this, "FSeamlessGridInfo.Day0"); } + FString& MetaWorldURLField() { return *GetNativePointerField(this, "FSeamlessGridInfo.MetaWorldURL"); } + FString& WorldFriendlyNameField() { return *GetNativePointerField(this, "FSeamlessGridInfo.WorldFriendlyName"); } + FString& WorldAtlasIdField() { return *GetNativePointerField(this, "FSeamlessGridInfo.WorldAtlasId"); } + FString& MapImageURLField() { return *GetNativePointerField(this, "FSeamlessGridInfo.MapImageURL"); } + FString& AuthListURLField() { return *GetNativePointerField(this, "FSeamlessGridInfo.AuthListURL"); } + //TArray& CachedIslandsListField() { return *GetNativePointerField*>(this, "FSeamlessGridInfo.CachedIslandsList"); } + TArray& CachedServersInfoField() { return *GetNativePointerField*>(this, "FSeamlessGridInfo.CachedServersInfo"); } + + // Functions + + FSeamlessServerInfo* GetCurrentServerInfo() { return NativeCall(this, "FSeamlessGridInfo.GetCurrentServerInfo"); } + void GetAllServersInfo(TArray* OutServersList) { NativeCall*>(this, "FSeamlessGridInfo.GetAllServersInfo", OutServersList); } + unsigned int GetCurrentServerId() { return NativeCall(this, "FSeamlessGridInfo.GetCurrentServerId"); } + FString* GetWorldAtlasId(FString* result) { return NativeCall(this, "FSeamlessGridInfo.GetWorldAtlasId", result); } + FSeamlessServerInfo* GetServerInfo(unsigned int ServerId) { return NativeCall(this, "FSeamlessGridInfo.GetServerInfo", ServerId); } + FSeamlessServerInfo* GetServerContainingGPSLocation(FVector2D GPSLocation) { return NativeCall(this, "FSeamlessGridInfo.GetServerContainingGPSLocation", GPSLocation); } + FSeamlessServerInfo* GetServerContainingGlobalLocation(FVector GlobalLocation) { return NativeCall(this, "FSeamlessGridInfo.GetServerContainingGlobalLocation", GlobalLocation); } + FVector2D* GetWorldSize(FVector2D* result) { return NativeCall(this, "FSeamlessGridInfo.GetWorldSize", result); } + bool IsCurrentServerInvalid() { return NativeCall(this, "FSeamlessGridInfo.IsCurrentServerInvalid"); } + //TArray * GetServerSpawnRegions(TArray * result, unsigned int ServerId) { return NativeCall *, TArray *, unsigned int>(this, "FSeamlessGridInfo.GetServerSpawnRegions", result, ServerId); } + FVector* GPSLocationToGlobalLocation(FVector* result, FVector2D GPSLocation) { return NativeCall(this, "FSeamlessGridInfo.GPSLocationToGlobalLocation", result, GPSLocation); } + FVector* GPSLocationToServerLocation(FVector* result, FVector2D GPSLocation) { return NativeCall(this, "FSeamlessGridInfo.GPSLocationToServerLocation", result, GPSLocation); } + FVector* GetAbsolutePostionFromRelativePositionInServer(FVector* result, unsigned int ServerId, FVector2D* RelativePos) { return NativeCall(this, "FSeamlessGridInfo.GetAbsolutePostionFromRelativePositionInServer", result, ServerId, RelativePos); } + //void GetAllIslandsInfo(TArray * OutIslandsList) { NativeCall *>(this, "FSeamlessGridInfo.GetAllIslandsInfo", OutIslandsList); } + bool GetCurrentServerIPAndPort(FString* IP, int* Port) { return NativeCall(this, "FSeamlessGridInfo.GetCurrentServerIPAndPort", IP, Port); } + int GetCurrentServerSeamlessDataPort() { return NativeCall(this, "FSeamlessGridInfo.GetCurrentServerSeamlessDataPort"); } + FVector* GetGlobalMapSize(FVector* result) { return NativeCall(this, "FSeamlessGridInfo.GetGlobalMapSize", result); } + char GetMinimumHopsBetweenGridServers(unsigned int FromGridServerId, unsigned int ToGridServerId, ESeamlessVolumeSide::Side* OutFromSide, ESeamlessVolumeSide::Side* OutToSide) { return NativeCall(this, "FSeamlessGridInfo.GetMinimumHopsBetweenGridServers", FromGridServerId, ToGridServerId, OutFromSide, OutToSide); } + FVector2D* GetRelativePostionInServerFromAbsolutePosition(FVector2D* result, unsigned int ServerId, FVector* AbsPos) { return NativeCall(this, "FSeamlessGridInfo.GetRelativePostionInServerFromAbsolutePosition", result, ServerId, AbsPos); } + bool GetServerIPAndPort(unsigned int InServerId, FString* IP, int* Port) { return NativeCall(this, "FSeamlessGridInfo.GetServerIPAndPort", InServerId, IP, Port); } + unsigned int GetServerToSide(unsigned int InServerId, ESeamlessVolumeSide::Side InDesiredSide) { return NativeCall(this, "FSeamlessGridInfo.GetServerToSide", InServerId, InDesiredSide); } + FVector2D* GlobalLocationToGPSLocation(FVector2D* result, FVector GlobalLocation) { return NativeCall(this, "FSeamlessGridInfo.GlobalLocationToGPSLocation", result, GlobalLocation); } + FVector* GlobalLocationToServerLocation(FVector* result, FVector GlobalLocation) { return NativeCall(this, "FSeamlessGridInfo.GlobalLocationToServerLocation", result, GlobalLocation); } + FVector* GlobalLocationToServerLocation(FVector* result, FVector GlobalLocation, FSeamlessServerInfo* ServerInfo) { return NativeCall(this, "FSeamlessGridInfo.GlobalLocationToServerLocation", result, GlobalLocation, ServerInfo); } + FVector* GlobalLocationToServerLocation(FVector* result, FVector GlobalLocation, unsigned int ServerId) { return NativeCall(this, "FSeamlessGridInfo.GlobalLocationToServerLocation", result, GlobalLocation, ServerId); } + void LoadFromFile(FString FileName, unsigned __int16 InServerX, unsigned __int16 InServerY) { NativeCall(this, "FSeamlessGridInfo.LoadFromFile", FileName, InServerX, InServerY); } + void ParseJsonFromString(FString ServerGridJSON, unsigned __int16 InServerX, unsigned __int16 InServerY) { NativeCall(this, "FSeamlessGridInfo.ParseJsonFromString", ServerGridJSON, InServerX, InServerY); } + FVector2D* ServerLocationToGPSLocation(FVector2D* result, unsigned int ServerId, FVector ServerLocation) { return NativeCall(this, "FSeamlessGridInfo.ServerLocationToGPSLocation", result, ServerId, ServerLocation); } + FVector* ServerLocationToGlobalLocation(FVector* result, unsigned int ServerId, FVector ServerLocation) { return NativeCall(this, "FSeamlessGridInfo.ServerLocationToGlobalLocation", result, ServerId, ServerLocation); } + void SetServerId(unsigned int ServerId, FString* Ip, int Port, int GamePort) { NativeCall(this, "FSeamlessGridInfo.SetServerId", ServerId, Ip, Port, GamePort); } + void SetServerInfoSteamId(unsigned int ServerId, unsigned __int64 SteamServerId) { NativeCall(this, "FSeamlessGridInfo.SetServerInfoSteamId", ServerId, SteamServerId); } + //FDiscoveryZone * GetGlobalDiscoveryZonesById(int ZoneID) { return NativeCall(this, "FSeamlessGridInfo.GetGlobalDiscoveryZonesById", ZoneID); } + //FDiscoveryZone * GetGlobalDiscoveryZonesByManualName(FString ManualName) { return NativeCall(this, "FSeamlessGridInfo.GetGlobalDiscoveryZonesByManualName", ManualName); } + TArray* GetSeamlessSublevelsAdditionalTransforms(TArray* result) { return NativeCall*, TArray*>(this, "FSeamlessGridInfo.GetSeamlessSublevelsAdditionalTransforms", result); } + TArray* GetSeamlessSublevelsUniqueIds(TArray* result) { return NativeCall*, TArray*>(this, "FSeamlessGridInfo.GetSeamlessSublevelsUniqueIds", result); } + TArray* GetSublevelsNames(TArray* result) { return NativeCall*, TArray*>(this, "FSeamlessGridInfo.GetSublevelsNames", result); } + FString* GetDay0(FString* result) { return NativeCall(this, "FSeamlessGridInfo.GetDay0", result); } + FString* GetAuthListURL(FString* result) { return NativeCall(this, "FSeamlessGridInfo.GetAuthListURL", result); } + FString* GetMapImageURL(FString* result) { return NativeCall(this, "FSeamlessGridInfo.GetMapImageURL", result); } + FString* GetWorldFriendlyName(FString* result) { return NativeCall(this, "FSeamlessGridInfo.GetWorldFriendlyName", result); } + FSeamlessServerInfo* FindServerInfo(unsigned int ServerId) { return NativeCall(this, "FSeamlessGridInfo.FindServerInfo", ServerId); } + static void GetServerInfo() { NativeCall(nullptr, "FSeamlessGridInfo.GetServerInfo"); } +}; + +struct UGameInstance +{ + FWorldContext* WorldContextField() { return *GetNativePointerField(this, "UGameInstance.WorldContext"); } + TArray LocalPlayersField() { return *GetNativePointerField*>(this, "UGameInstance.LocalPlayers"); } + FString& PIEMapNameField() { return *GetNativePointerField(this, "UGameInstance.PIEMapName"); } + TArray ObjectsPendingTimeShiftField() { return *GetNativePointerField*>(this, "UGameInstance.ObjectsPendingTimeShift"); } +}; + +struct UShooterGameInstance : UGameInstance +{ + FName& CurrentStateField() { return *GetNativePointerField(this, "UShooterGameInstance.CurrentState"); } + bool& bCanUseUserGeneratedContentField() { return *GetNativePointerField(this, "UShooterGameInstance.bCanUseUserGeneratedContent"); } + bool& bHasCommunicationPriviligeField() { return *GetNativePointerField(this, "UShooterGameInstance.bHasCommunicationPrivilige"); } + long double& CachedLastServerTimestampField() { return *GetNativePointerField(this, "UShooterGameInstance.CachedLastServerTimestamp"); } + bool& bAwaitingTravelTimestampField() { return *GetNativePointerField(this, "UShooterGameInstance.bAwaitingTravelTimestamp"); } + long double& LastTravelShiftField() { return *GetNativePointerField(this, "UShooterGameInstance.LastTravelShift"); } + TWeakObjectPtr& SeamlessTravelPlayerCameraField() { return *GetNativePointerField*>(this, "UShooterGameInstance.SeamlessTravelPlayerCamera"); } + FRotator& SeamlessTravelControlRotationField() { return *GetNativePointerField(this, "UShooterGameInstance.SeamlessTravelControlRotation"); } + TWeakObjectPtr& SeamlessTravelHUDField() { return *GetNativePointerField*>(this, "UShooterGameInstance.SeamlessTravelHUD"); } + unsigned int& DestinationServerIdField() { return *GetNativePointerField(this, "UShooterGameInstance.DestinationServerId"); } + TArray& LastLoadedSubLevelsField() { return *GetNativePointerField*>(this, "UShooterGameInstance.LastLoadedSubLevels"); } + FSeamlessGridInfo* GridInfoField() { return *GetNativePointerField(this, "UShooterGameInstance.GridInfo"); } + bool& ShouldInitSpectatorPosField() { return *GetNativePointerField(this, "UShooterGameInstance.ShouldInitSpectatorPos"); } + FVector& SpectatorInitialPosField() { return *GetNativePointerField(this, "UShooterGameInstance.SpectatorInitialPos"); } + //UDatabase_ClusterInfo * Database_ClusterInfo_RefField() { return *GetNativePointerField(this, "UShooterGameInstance.Database_ClusterInfo_Ref"); } + TArray>& SeamlessTravelActorsField() { return *GetNativePointerField>*>(this, "UShooterGameInstance.SeamlessTravelActors"); } + TWeakObjectPtr& LastControlledCharacterField() { return *GetNativePointerField*>(this, "UShooterGameInstance.LastControlledCharacter"); } + long double& LastSeamlesslyTravelledAtField() { return *GetNativePointerField(this, "UShooterGameInstance.LastSeamlesslyTravelledAt"); } + FString& WelcomeScreenMapField() { return *GetNativePointerField(this, "UShooterGameInstance.WelcomeScreenMap"); } + FString& MainMenuMapField() { return *GetNativePointerField(this, "UShooterGameInstance.MainMenuMap"); } + FName& PendingStateField() { return *GetNativePointerField(this, "UShooterGameInstance.PendingState"); } + FString& TravelURLField() { return *GetNativePointerField(this, "UShooterGameInstance.TravelURL"); } + bool& bIsOnlineField() { return *GetNativePointerField(this, "UShooterGameInstance.bIsOnline"); } + bool& bPendingEnableSplitscreenField() { return *GetNativePointerField(this, "UShooterGameInstance.bPendingEnableSplitscreen"); } + bool& bIsLicensedField() { return *GetNativePointerField(this, "UShooterGameInstance.bIsLicensed"); } + bool& bIsTravellingSeamlesslyField() { return *GetNativePointerField(this, "UShooterGameInstance.bIsTravellingSeamlessly"); } + int& IgnorePairingChangeForControllerIdField() { return *GetNativePointerField(this, "UShooterGameInstance.IgnorePairingChangeForControllerId"); } + TWeakObjectPtr& DayCycleManagerField() { return *GetNativePointerField*>(this, "UShooterGameInstance.DayCycleManager"); } + TWeakObjectPtr& SOTFNotificationManagerField() { return *GetNativePointerField*>(this, "UShooterGameInstance.SOTFNotificationManager"); } + int& bOnReturnToMainMenuNotificationField() { return *GetNativePointerField(this, "UShooterGameInstance.bOnReturnToMainMenuNotification"); } + FString& OnReturnToMainMenuNotificationMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.OnReturnToMainMenuNotificationMessage"); } + FString& OnReturnToMainMenuNotificationTitleField() { return *GetNativePointerField(this, "UShooterGameInstance.OnReturnToMainMenuNotificationTitle"); } + FString& GlobalMainMenuMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.GlobalMainMenuMessage"); } + FString& GlobalMainMenuTitleField() { return *GetNativePointerField(this, "UShooterGameInstance.GlobalMainMenuTitle"); } + bool& bHasReceivedNewsMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.bHasReceivedNewsMessage"); } + bool& bHasOfficialStatusMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.bHasOfficialStatusMessage"); } + FString& NewsMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.NewsMessage"); } + FString& OfficialStatusMessageField() { return *GetNativePointerField(this, "UShooterGameInstance.OfficialStatusMessage"); } + FString& TerrainGenerationProgressBarMsgField() { return *GetNativePointerField(this, "UShooterGameInstance.TerrainGenerationProgressBarMsg"); } + float& SecondsSpentGeneratingTerrainField() { return *GetNativePointerField(this, "UShooterGameInstance.SecondsSpentGeneratingTerrain"); } + bool& TerrainIsGeneratingField() { return *GetNativePointerField(this, "UShooterGameInstance.TerrainIsGenerating"); } + bool& bFindingLastCurrServerField() { return *GetNativePointerField(this, "UShooterGameInstance.bFindingLastCurrServer"); } + bool& bRedirectingToLastServerField() { return *GetNativePointerField(this, "UShooterGameInstance.bRedirectingToLastServer"); } + FString& LastServerIdField() { return *GetNativePointerField(this, "UShooterGameInstance.LastServerId"); } + FString& LastAtlasIdField() { return *GetNativePointerField(this, "UShooterGameInstance.LastAtlasId"); } + FString& LastConnectURLField() { return *GetNativePointerField(this, "UShooterGameInstance.LastConnectURL"); } + FString& LastAtlasPasswordField() { return *GetNativePointerField(this, "UShooterGameInstance.LastAtlasPassword"); } + FString& LastAtlasNameField() { return *GetNativePointerField(this, "UShooterGameInstance.LastAtlasName"); } + FString& LastRegionNameField() { return *GetNativePointerField(this, "UShooterGameInstance.LastRegionName"); } + EListSessionStatus::Type& LastSessionSearchTypeField() { return *GetNativePointerField(this, "UShooterGameInstance.LastSessionSearchType"); } + bool& bGotoListSessionsOnMainMenuLoadField() { return *GetNativePointerField(this, "UShooterGameInstance.bGotoListSessionsOnMainMenuLoad"); } + bool& bSelectingNewHomeServerField() { return *GetNativePointerField(this, "UShooterGameInstance.bSelectingNewHomeServer"); } + UTexture2D* InfrastructureImageField() { return *GetNativePointerField(this, "UShooterGameInstance.InfrastructureImage"); } + FString& MainMenuLoadListSessionAtlasIdField() { return *GetNativePointerField(this, "UShooterGameInstance.MainMenuLoadListSessionAtlasId"); } + + // Functions + + void AddNetworkFailureHandlers() { NativeCall(this, "UShooterGameInstance.AddNetworkFailureHandlers"); } + void AttemptJoinLastServer() { NativeCall(this, "UShooterGameInstance.AttemptJoinLastServer"); } + TSubclassOf* GetOverridenFoliageAttachment(TSubclassOf* result, ULevel* TheLevel, UFoliageType* FoliageTypeReference) { return NativeCall*, TSubclassOf*, ULevel*, UFoliageType*>(this, "UShooterGameInstance.GetOverridenFoliageAttachment", result, TheLevel, FoliageTypeReference); } + + FVector* BP_GPSLocationToGlobalLocation(FVector* result, FVector2D GPSLocation) { return NativeCall(this, "UShooterGameInstance.BP_GPSLocationToGlobalLocation", result, GPSLocation); } + FVector* BP_GPSLocationToLocalLocation(FVector* result, FVector2D GPSLocation) { return NativeCall(this, "UShooterGameInstance.BP_GPSLocationToLocalLocation", result, GPSLocation); } + FVector2D* BP_GlobalLocationToGPSLocation(FVector2D* result, FVector GlobalLocation) { return NativeCall(this, "UShooterGameInstance.BP_GlobalLocationToGPSLocation", result, GlobalLocation); } + FVector* BP_GlobalLocationToLocalLocation(FVector* result, FVector GlobalLocation) { return NativeCall(this, "UShooterGameInstance.BP_GlobalLocationToLocalLocation", result, GlobalLocation); } + FVector2D* BP_LocalLocationToGPSLocation(FVector2D* result, FVector LocalLocation) { return NativeCall(this, "UShooterGameInstance.BP_LocalLocationToGPSLocation", result, LocalLocation); } + FVector* BP_LocalLocationToGlobalLocation(FVector* result, FVector LocalLocation) { return NativeCall(this, "UShooterGameInstance.BP_LocalLocationToGlobalLocation", result, LocalLocation); } + void BeginMainMenuState() { NativeCall(this, "UShooterGameInstance.BeginMainMenuState"); } + void BeginMessageMenuState() { NativeCall(this, "UShooterGameInstance.BeginMessageMenuState"); } + void BeginNewState(FName NewState, FName PrevState) { NativeCall(this, "UShooterGameInstance.BeginNewState", NewState, PrevState); } + void BeginPlayingState() { NativeCall(this, "UShooterGameInstance.BeginPlayingState"); } + void BeginWelcomeScreenState() { NativeCall(this, "UShooterGameInstance.BeginWelcomeScreenState"); } + void CheckConnectString(FString ConnectStr, bool FromRedirection) { NativeCall(this, "UShooterGameInstance.CheckConnectString", ConnectStr, FromRedirection); } + void CleanupSessionOnReturnToMenu() { NativeCall(this, "UShooterGameInstance.CleanupSessionOnReturnToMenu"); } + void ClientOnCancelSeamlessTravel() { NativeCall(this, "UShooterGameInstance.ClientOnCancelSeamlessTravel"); } + void ClientOnDoTravelSeamless(FString* Url, FString AtlasId, FString ServerId) { NativeCall(this, "UShooterGameInstance.ClientOnDoTravelSeamless", Url, AtlasId, ServerId); } + void ClientOnEndSeamlessTravel() { NativeCall(this, "UShooterGameInstance.ClientOnEndSeamlessTravel"); } + void ClientReceiveNewServerTime(long double NewServerTime) { NativeCall(this, "UShooterGameInstance.ClientReceiveNewServerTime", NewServerTime); } + void ClusterStatusDump() { NativeCall(this, "UShooterGameInstance.ClusterStatusDump"); } + TArray* CompressGridInfo(TArray* result) { return NativeCall*, TArray*>(this, "UShooterGameInstance.CompressGridInfo", result); } + void ConditionalGoToMenuAndDisplayFailureNotification() { NativeCall(this, "UShooterGameInstance.ConditionalGoToMenuAndDisplayFailureNotification"); } + void ConstructMapImagesManager() { NativeCall(this, "UShooterGameInstance.ConstructMapImagesManager"); } + void DeCompressGridInfo(TArray ByteArray, bool bSaveToFile) { NativeCall, bool>(this, "UShooterGameInstance.DeCompressGridInfo", ByteArray, bSaveToFile); } + void DisplayGlobalMainMenuNotification() { NativeCall(this, "UShooterGameInstance.DisplayGlobalMainMenuNotification"); } + void DoPostLoadMap(bool bForceReinitUI) { NativeCall(this, "UShooterGameInstance.DoPostLoadMap", bForceReinitUI); } + void EndCurrentState(FName NextState) { NativeCall(this, "UShooterGameInstance.EndCurrentState", NextState); } + void EndPlayingState() { NativeCall(this, "UShooterGameInstance.EndPlayingState"); } + TSubclassOf* GetDefaultGameModeClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "UShooterGameInstance.GetDefaultGameModeClass", result); } + AShooterGameSession* GetGameSession() { return NativeCall(this, "UShooterGameInstance.GetGameSession"); } + bool GetLastCachedServerConnectString(FString* ConnectURL, FString* AtlasId, FString* ServerId, FString* AtlasPassword, FString* AtlasName, FString* RegionName) { return NativeCall(this, "UShooterGameInstance.GetLastCachedServerConnectString", ConnectURL, AtlasId, ServerId, AtlasPassword, AtlasName, RegionName); } + void GetLoginThrottle() { NativeCall(this, "UShooterGameInstance.GetLoginThrottle"); } + TSubclassOf* GetRemappedResourceClass(TSubclassOf* result, TSubclassOf ForClass) { return NativeCall*, TSubclassOf*, TSubclassOf>(this, "UShooterGameInstance.GetRemappedResourceClass", result, ForClass); } + TArray>* GetSkeletalPhysCustomBodyAdditionalIgnores() { return NativeCall>*>(this, "UShooterGameInstance.GetSkeletalPhysCustomBodyAdditionalIgnores"); } + void GotoInitialState() { NativeCall(this, "UShooterGameInstance.GotoInitialState"); } + void GotoState(FName NewState) { NativeCall(this, "UShooterGameInstance.GotoState", NewState); } + void HandleAppLicenseUpdate() { NativeCall(this, "UShooterGameInstance.HandleAppLicenseUpdate"); } + void HandleAppResume() { NativeCall(this, "UShooterGameInstance.HandleAppResume"); } + void HandleAppSuspend() { NativeCall(this, "UShooterGameInstance.HandleAppSuspend"); } + void HandleAppWillDeactivate() { NativeCall(this, "UShooterGameInstance.HandleAppWillDeactivate"); } + void HandleControllerConnectionChange(bool bIsConnection, int Unused, int GameUserIndex) { NativeCall(this, "UShooterGameInstance.HandleControllerConnectionChange", bIsConnection, Unused, GameUserIndex); } + void HandleSafeFrameChanged() { NativeCall(this, "UShooterGameInstance.HandleSafeFrameChanged"); } + void HandleSessionUserInviteAccepted(const bool bWasSuccess, const int ControllerId, TSharedPtr UserId, FOnlineSessionSearchResult* InviteResult) { NativeCall, FOnlineSessionSearchResult*>(this, "UShooterGameInstance.HandleSessionUserInviteAccepted", bWasSuccess, ControllerId, UserId, InviteResult); } + bool HasExtraSublevel(FString* SublevelName) { return NativeCall(this, "UShooterGameInstance.HasExtraSublevel", SublevelName); } + void HttpGetLoginThrottleRequestComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "UShooterGameInstance.HttpGetLoginThrottleRequestComplete", HttpRequest, HttpResponse, bSucceeded); } + void Init() { NativeCall(this, "UShooterGameInstance.Init"); } + void InternalTravelToSession(FName* SessionName) { NativeCall(this, "UShooterGameInstance.InternalTravelToSession", SessionName); } + bool IsCurrentServerInvalid() { return NativeCall(this, "UShooterGameInstance.IsCurrentServerInvalid"); } + bool IsLocalPlayerOnline(ULocalPlayer* LocalPlayer) { return NativeCall(this, "UShooterGameInstance.IsLocalPlayerOnline", LocalPlayer); } + bool IsLoginAllowed(FString* AtlasId, FString* UserId, FString* ReasonMsg) { return NativeCall(this, "UShooterGameInstance.IsLoginAllowed", AtlasId, UserId, ReasonMsg); } + bool IsTravellingSeamlessly() { return NativeCall(this, "UShooterGameInstance.IsTravellingSeamlessly"); } + bool JoinSession(ULocalPlayer* LocalPlayer, FOnlineSessionSearchResult* SearchResult) { return NativeCall(this, "UShooterGameInstance.JoinSession", LocalPlayer, SearchResult); } + bool JoinSession(ULocalPlayer* LocalPlayer, int SessionIndexInSearchResults) { return NativeCall(this, "UShooterGameInstance.JoinSession", LocalPlayer, SessionIndexInSearchResults); } + bool JustSeamlesslyTravelledToServer() { return NativeCall(this, "UShooterGameInstance.JustSeamlesslyTravelledToServer"); } + void LabelPlayerAsQuitter(ULocalPlayer* LocalPlayer) { NativeCall(this, "UShooterGameInstance.LabelPlayerAsQuitter", LocalPlayer); } + void LoadDynamicSublevels(UWorld* PlayWorld, bool bForceLoadLevels) { NativeCall(this, "UShooterGameInstance.LoadDynamicSublevels", PlayWorld, bForceLoadLevels); } + void LoadFrontEndMap(FString* MapName) { NativeCall(this, "UShooterGameInstance.LoadFrontEndMap", MapName); } + void LoadGameMedia() { NativeCall(this, "UShooterGameInstance.LoadGameMedia"); } + void LoadTheGameMedia() { NativeCall(this, "UShooterGameInstance.LoadTheGameMedia"); } + void MaybeChangeState() { NativeCall(this, "UShooterGameInstance.MaybeChangeState"); } + void OnCurrentServerFindCompleted(bool bSuccess) { NativeCall(this, "UShooterGameInstance.OnCurrentServerFindCompleted", bSuccess); } + void OnEndSessionComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "UShooterGameInstance.OnEndSessionComplete", SessionName, bWasSuccessful); } + void OnGenerateTerrainBegin() { NativeCall(this, "UShooterGameInstance.OnGenerateTerrainBegin"); } + void OnGenerateTerrainEnd() { NativeCall(this, "UShooterGameInstance.OnGenerateTerrainEnd"); } + void OnPostLoadMap() { NativeCall(this, "UShooterGameInstance.OnPostLoadMap"); } + void OnPreLoadMap() { NativeCall(this, "UShooterGameInstance.OnPreLoadMap"); } + void OnRedirectToURLReceived(FString* ToURL, FString* ToAtlasId, FString* ToServerId) { NativeCall(this, "UShooterGameInstance.OnRedirectToURLReceived", ToURL, ToAtlasId, ToServerId); } + void ProcessSeamlessTravelActorsOnClient() { NativeCall(this, "UShooterGameInstance.ProcessSeamlessTravelActorsOnClient"); } + void RefreshSpawnPoints(unsigned int HomeServerId) { NativeCall(this, "UShooterGameInstance.RefreshSpawnPoints", HomeServerId); } + void RemoveExistingLocalPlayer(ULocalPlayer* ExistingPlayer) { NativeCall(this, "UShooterGameInstance.RemoveExistingLocalPlayer", ExistingPlayer); } + void RemoveNetworkFailureHandlers() { NativeCall(this, "UShooterGameInstance.RemoveNetworkFailureHandlers"); } + void RemovePlayersFromParty() { NativeCall(this, "UShooterGameInstance.RemovePlayersFromParty"); } + void RemoveSplitScreenPlayers() { NativeCall(this, "UShooterGameInstance.RemoveSplitScreenPlayers"); } + void SetGenerateTerrainProgressMsg(FString Msg) { NativeCall(this, "UShooterGameInstance.SetGenerateTerrainProgressMsg", Msg); } + void SetIsOnline(bool bInIsOnline) { NativeCall(this, "UShooterGameInstance.SetIsOnline", bInIsOnline); } + void SetLastServerConnectStringCache(FString* ConnectURL, FString AtlasId, FString ServerId, FString AtlasPassword, FString AtlasName, FString RegionName) { NativeCall(this, "UShooterGameInstance.SetLastServerConnectStringCache", ConnectURL, AtlasId, ServerId, AtlasPassword, AtlasName, RegionName); } + void ShowLoadingScreen() { NativeCall(this, "UShooterGameInstance.ShowLoadingScreen"); } + void ShowMessageThenGotoState(FString* Message, FString* OKButtonString, FString* CancelButtonString, FName* NewState, const bool OverrideExisting, TWeakObjectPtr PlayerOwner) { NativeCall>(this, "UShooterGameInstance.ShowMessageThenGotoState", Message, OKButtonString, CancelButtonString, NewState, OverrideExisting, PlayerOwner); } + void Shutdown() { NativeCall(this, "UShooterGameInstance.Shutdown"); } + void StartGameInstance() { NativeCall(this, "UShooterGameInstance.StartGameInstance"); } + void StartPlayerCurrentServerDownloader() { NativeCall(this, "UShooterGameInstance.StartPlayerCurrentServerDownloader"); } + bool Tick(float DeltaSeconds) { return NativeCall(this, "UShooterGameInstance.Tick", DeltaSeconds); } + void TravelLocalSessionFailure(UWorld* World, ETravelFailure::Type FailureType, FString* ReasonString) { NativeCall(this, "UShooterGameInstance.TravelLocalSessionFailure", World, FailureType, ReasonString); } + void UpdateTerrainGenerationProgressBar(float DeltaSeconds) { NativeCall(this, "UShooterGameInstance.UpdateTerrainGenerationProgressBar", DeltaSeconds); } + void WorldLoaded() { NativeCall(this, "UShooterGameInstance.WorldLoaded"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UShooterGameInstance.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUShooterGameInstance() { NativeCall(nullptr, "UShooterGameInstance.StaticRegisterNativesUShooterGameInstance"); } +}; + +struct UWorld : UObject +{ + struct InitializationValues + { + }; + TArray>& ActorsClassesAllowedToSaveField() { return *GetNativePointerField>*>(this, "UWorld.ActorsClassesAllowedToSave"); } + bool& bIsIdleField() { return *GetNativePointerField(this, "UWorld.bIsIdle"); } + bool& bEverHadGameStateField() { return *GetNativePointerField(this, "UWorld.bEverHadGameState"); } + bool& bClientReceivedSeamlessMapImagesField() { return *GetNativePointerField(this, "UWorld.bClientReceivedSeamlessMapImages"); } + TArray>& LocalStasisActorsField() { return *GetNativePointerField>*>(this, "UWorld.LocalStasisActors"); } + TSet, FDefaultSetAllocator>& LevelNameHashField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UWorld.LevelNameHash"); } + ULevel* PersistentLevelField() { return *GetNativePointerField(this, "UWorld.PersistentLevel"); } + AGameState* GameStateField() { return *GetNativePointerField(this, "UWorld.GameState"); } + TArray ExtraReferencedObjectsField() { return *GetNativePointerField*>(this, "UWorld.ExtraReferencedObjects"); } + FString& StreamingLevelsPrefixField() { return *GetNativePointerField(this, "UWorld.StreamingLevelsPrefix"); } + ULevel* CurrentLevelPendingVisibilityField() { return *GetNativePointerField(this, "UWorld.CurrentLevelPendingVisibility"); } + TArray& ViewLocationsRenderedLastFrameField() { return *GetNativePointerField*>(this, "UWorld.ViewLocationsRenderedLastFrame"); } + AGameMode* AuthorityGameModeField() { return *GetNativePointerField(this, "UWorld.AuthorityGameMode"); } + TArray LevelsField() { return *GetNativePointerField*>(this, "UWorld.Levels"); } + TArray NetworkActorsField() { return *GetNativePointerField*>(this, "UWorld.NetworkActors"); } + ULevel* CurrentLevelField() { return *GetNativePointerField(this, "UWorld.CurrentLevel"); } + UGameInstance* OwningGameInstanceField() { return *GetNativePointerField(this, "UWorld.OwningGameInstance"); } + int& FrameCounterField() { return *GetNativePointerField(this, "UWorld.FrameCounter"); } + bool& GamePreviewField() { return *GetNativePointerField(this, "UWorld.GamePreview"); } + TMap>>, FDefaultSetAllocator, TDefaultMapKeyFuncs>>, 0> > & LocalInstancedStaticMeshComponentInstancesVisibilityStateField() { return *GetNativePointerField>>, FDefaultSetAllocator, TDefaultMapKeyFuncs>>, 0> >*>(this, "UWorld.LocalInstancedStaticMeshComponentInstancesVisibilityState"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & PrioritizedObjectMapField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "UWorld.PrioritizedObjectMap"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & UniqueActorIdsField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "UWorld.UniqueActorIds"); } + TArray>& ControllerListField() { return *GetNativePointerField>*>(this, "UWorld.ControllerList"); } + TArray>& PlayerControllerListField() { return *GetNativePointerField>*>(this, "UWorld.PlayerControllerList"); } + TArray>& PawnListField() { return *GetNativePointerField>*>(this, "UWorld.PawnList"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ComponentsThatNeedEndOfFrameUpdateField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate"); } + TSet, DefaultKeyFuncs, 0>, FDefaultSetAllocator>& ComponentsThatNeedEndOfFrameUpdate_OnGameThreadField() { return *GetNativePointerField, DefaultKeyFuncs, 0>, FDefaultSetAllocator>*>(this, "UWorld.ComponentsThatNeedEndOfFrameUpdate_OnGameThread"); } + TMap, TWeakObjectPtr, FDefaultSetAllocator, TDefaultMapKeyFuncs, TWeakObjectPtr, 0> > & BlueprintObjectsBeingDebuggedField() { return *GetNativePointerField, TWeakObjectPtr, FDefaultSetAllocator, TDefaultMapKeyFuncs, TWeakObjectPtr, 0> >*>(this, "UWorld.BlueprintObjectsBeingDebugged"); } + bool& bRequiresHitProxiesField() { return *GetNativePointerField(this, "UWorld.bRequiresHitProxies"); } + long double& BuildStreamingDataTimerField() { return *GetNativePointerField(this, "UWorld.BuildStreamingDataTimer"); } + bool& bInTickField() { return *GetNativePointerField(this, "UWorld.bInTick"); } + bool& bIsBuiltField() { return *GetNativePointerField(this, "UWorld.bIsBuilt"); } + bool& bTickNewlySpawnedField() { return *GetNativePointerField(this, "UWorld.bTickNewlySpawned"); } + bool& bPostTickComponentUpdateField() { return *GetNativePointerField(this, "UWorld.bPostTickComponentUpdate"); } + int& PlayerNumField() { return *GetNativePointerField(this, "UWorld.PlayerNum"); } + float& TimeSinceLastPendingKillPurgeField() { return *GetNativePointerField(this, "UWorld.TimeSinceLastPendingKillPurge"); } + bool& FullPurgeTriggeredField() { return *GetNativePointerField(this, "UWorld.FullPurgeTriggered"); } + bool& bShouldDelayGarbageCollectField() { return *GetNativePointerField(this, "UWorld.bShouldDelayGarbageCollect"); } + bool& bIsWorldInitializedField() { return *GetNativePointerField(this, "UWorld.bIsWorldInitialized"); } + int& AllowLevelLoadOverrideField() { return *GetNativePointerField(this, "UWorld.AllowLevelLoadOverride"); } + int& StreamingVolumeUpdateDelayField() { return *GetNativePointerField(this, "UWorld.StreamingVolumeUpdateDelay"); } + bool& bIsLevelStreamingFrozenField() { return *GetNativePointerField(this, "UWorld.bIsLevelStreamingFrozen"); } + bool& bShouldForceUnloadStreamingLevelsField() { return *GetNativePointerField(this, "UWorld.bShouldForceUnloadStreamingLevels"); } + bool& bShouldForceVisibleStreamingLevelsField() { return *GetNativePointerField(this, "UWorld.bShouldForceVisibleStreamingLevels"); } + bool& bDoDelayedUpdateCullDistanceVolumesField() { return *GetNativePointerField(this, "UWorld.bDoDelayedUpdateCullDistanceVolumes"); } + TEnumAsByte& WorldTypeField() { return *GetNativePointerField*>(this, "UWorld.WorldType"); } + bool& bIsRunningConstructionScriptField() { return *GetNativePointerField(this, "UWorld.bIsRunningConstructionScript"); } + bool& bShouldSimulatePhysicsField() { return *GetNativePointerField(this, "UWorld.bShouldSimulatePhysics"); } + FName& DebugDrawTraceTagField() { return *GetNativePointerField(this, "UWorld.DebugDrawTraceTag"); } + long double& LastTimeUnbuiltLightingWasEncounteredField() { return *GetNativePointerField(this, "UWorld.LastTimeUnbuiltLightingWasEncountered"); } + long double& TimeSecondsField() { return *GetNativePointerField(this, "UWorld.TimeSeconds"); } + long double& LoadedAtTimeSecondsField() { return *GetNativePointerField(this, "UWorld.LoadedAtTimeSeconds"); } + long double& RealTimeSecondsField() { return *GetNativePointerField(this, "UWorld.RealTimeSeconds"); } + long double& AudioTimeSecondsField() { return *GetNativePointerField(this, "UWorld.AudioTimeSeconds"); } + float& DeltaTimeSecondsField() { return *GetNativePointerField(this, "UWorld.DeltaTimeSeconds"); } + float& PreviousDeltaTimeSecondsField() { return *GetNativePointerField(this, "UWorld.PreviousDeltaTimeSeconds"); } + float& PauseDelayField() { return *GetNativePointerField(this, "UWorld.PauseDelay"); } + unsigned int& StasisThisFrameField() { return *GetNativePointerField(this, "UWorld.StasisThisFrame"); } + unsigned int& UnStasisThisFrameField() { return *GetNativePointerField(this, "UWorld.UnStasisThisFrame"); } + unsigned int& StasisOssilationThisFrameField() { return *GetNativePointerField(this, "UWorld.StasisOssilationThisFrame"); } + unsigned int& StasisThisFrameMaxField() { return *GetNativePointerField(this, "UWorld.StasisThisFrameMax"); } + unsigned int& UnStasisThisFrameMaxField() { return *GetNativePointerField(this, "UWorld.UnStasisThisFrameMax"); } + unsigned int& StasisOssilationThisFrameMaxField() { return *GetNativePointerField(this, "UWorld.StasisOssilationThisFrameMax"); } + float& StasisThisFrameAvgField() { return *GetNativePointerField(this, "UWorld.StasisThisFrameAvg"); } + float& UnStasisThisFrameAvgField() { return *GetNativePointerField(this, "UWorld.UnStasisThisFrameAvg"); } + float& StasisOssilationThisFrameAvgField() { return *GetNativePointerField(this, "UWorld.StasisOssilationThisFrameAvg"); } + float& StasisMaxResetTimerField() { return *GetNativePointerField(this, "UWorld.StasisMaxResetTimer"); } + unsigned int& LastUnstasisCountField() { return *GetNativePointerField(this, "UWorld.LastUnstasisCount"); } + unsigned int& LoadedSaveIncrementorField() { return *GetNativePointerField(this, "UWorld.LoadedSaveIncrementor"); } + unsigned int& CurrentSaveIncrementorField() { return *GetNativePointerField(this, "UWorld.CurrentSaveIncrementor"); } + bool& bBlockAllOnNextLevelStreamingProcessField() { return *GetNativePointerField(this, "UWorld.bBlockAllOnNextLevelStreamingProcess"); } + FIntVector& OriginLocationField() { return *GetNativePointerField(this, "UWorld.OriginLocation"); } + FIntVector& RequestedOriginLocationField() { return *GetNativePointerField(this, "UWorld.RequestedOriginLocation"); } + bool& bOriginOffsetThisFrameField() { return *GetNativePointerField(this, "UWorld.bOriginOffsetThisFrame"); } + bool& bFlushingLevelStreamingField() { return *GetNativePointerField(this, "UWorld.bFlushingLevelStreaming"); } + long double& ForceBlockLoadTimeoutField() { return *GetNativePointerField(this, "UWorld.ForceBlockLoadTimeout"); } + FString& NextURLField() { return *GetNativePointerField(this, "UWorld.NextURL"); } + float& NextSwitchCountdownField() { return *GetNativePointerField(this, "UWorld.NextSwitchCountdown"); } + TArray& PreparingLevelNamesField() { return *GetNativePointerField*>(this, "UWorld.PreparingLevelNames"); } + FName& CommittedPersistentLevelNameField() { return *GetNativePointerField(this, "UWorld.CommittedPersistentLevelName"); } + FString& CurrentDayTimeField() { return *GetNativePointerField(this, "UWorld.CurrentDayTime"); } + unsigned int& NumLightingUnbuiltObjectsField() { return *GetNativePointerField(this, "UWorld.NumLightingUnbuiltObjects"); } + UWaveWorksComponent* WaveWorksComponentField() { return *GetNativePointerField(this, "UWorld.WaveWorksComponent"); } + bool& bHasCheckedForWaveWorksField() { return *GetNativePointerField(this, "UWorld.bHasCheckedForWaveWorks"); } + FShorelineProps& WorldShorelinePropsField() { return *GetNativePointerField(this, "UWorld.WorldShorelineProps"); } + TArray& WorldShorelineMapField() { return *GetNativePointerField*>(this, "UWorld.WorldShorelineMap"); } + UTexture2D* ShorelineMapsTextureField() { return *GetNativePointerField(this, "UWorld.ShorelineMapsTexture"); } + + // Functions + + void CleanupActors() { NativeCall(this, "UWorld.CleanupActors"); } + bool DestroyActor(AActor* ThisActor, bool bNetForce, bool bShouldModifyLevel) { return NativeCall(this, "UWorld.DestroyActor", ThisActor, bNetForce, bShouldModifyLevel); } + bool EncroachingBlockingGeometry(AActor* TestActor, FVector TestLocation, FRotator TestRotation, FVector* ProposedAdjustment, FVector* TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.EncroachingBlockingGeometry", TestActor, TestLocation, TestRotation, ProposedAdjustment, TraceWorldGeometryFromLocation); } + bool FindTeleportSpot(AActor* TestActor, FVector* TestLocation, FRotator TestRotation, FVector* TraceWorldGeometryFromLocation) { return NativeCall(this, "UWorld.FindTeleportSpot", TestActor, TestLocation, TestRotation, TraceWorldGeometryFromLocation); } + void ForceGarbageCollection(bool bForcePurge) { NativeCall(this, "UWorld.ForceGarbageCollection", bForcePurge); } + bool IsPaused() { return NativeCall(this, "UWorld.IsPaused"); } + void MarkActorComponentForNeededEndOfFrameUpdate(UActorComponent* Component, bool bForceGameThread) { NativeCall(this, "UWorld.MarkActorComponentForNeededEndOfFrameUpdate", Component, bForceGameThread); } + void ProcessLevelStreamingVolumes(FVector* OverrideViewLocation) { NativeCall(this, "UWorld.ProcessLevelStreamingVolumes", OverrideViewLocation); } + void SetMapNeedsLightingFullyRebuilt(int InNumLightingUnbuiltObjects) { NativeCall(this, "UWorld.SetMapNeedsLightingFullyRebuilt", InNumLightingUnbuiltObjects); } + AActor* SpawnActor(UClass* Class, FVector* Location, FRotator* Rotation, FActorSpawnParameters* SpawnParameters) { return NativeCall(this, "UWorld.SpawnActor", Class, Location, Rotation, SpawnParameters); } + void TickNetClient(float DeltaSeconds) { NativeCall(this, "UWorld.TickNetClient", DeltaSeconds); } + void UpdateAllReflectionCaptures() { NativeCall(this, "UWorld.UpdateAllReflectionCaptures"); } + void AddController(AController* Controller) { NativeCall(this, "UWorld.AddController", Controller); } + bool AddLevel(ULevel* InLevel) { return NativeCall(this, "UWorld.AddLevel", InLevel); } + void AddNetworkActor(AActor* Actor) { NativeCall(this, "UWorld.AddNetworkActor", Actor); } + void AddToWorld(ULevel* Level, FTransform* LevelTransform, bool bAlwaysConsiderTimeLimit, bool bIsInFarthestTileLayer, bool bIgnoreGroupedLevelHiding) { NativeCall(this, "UWorld.AddToWorld", Level, LevelTransform, bAlwaysConsiderTimeLimit, bIsInFarthestTileLayer, bIgnoreGroupedLevelHiding); } + bool AllowAudioPlayback() { return NativeCall(this, "UWorld.AllowAudioPlayback"); } + bool AreActorsInitialized() { return NativeCall(this, "UWorld.AreActorsInitialized"); } + bool AreAlwaysLoadedLevelsLoaded() { return NativeCall(this, "UWorld.AreAlwaysLoadedLevelsLoaded"); } + void BeginPlay() { NativeCall(this, "UWorld.BeginPlay"); } + void BroadcastLevelsChanged() { NativeCall(this, "UWorld.BroadcastLevelsChanged"); } + static FString* BuildPIEPackagePrefix(FString* result, int PIEInstanceID) { return NativeCall(nullptr, "UWorld.BuildPIEPackagePrefix", result, PIEInstanceID); } + void CancelPendingMapChange() { NativeCall(this, "UWorld.CancelPendingMapChange"); } + void CleanupWorld(bool bSessionEnded, bool bCleanupResources, UWorld* NewWorld) { NativeCall(this, "UWorld.CleanupWorld", bSessionEnded, bCleanupResources, NewWorld); } + void ClearWorldComponents() { NativeCall(this, "UWorld.ClearWorldComponents"); } + void CommitMapChange() { NativeCall(this, "UWorld.CommitMapChange"); } + void CompositeShorelineIntoWorld(FShorelineMetadata* Shoreline, FTransform* Transform) { NativeCall(this, "UWorld.CompositeShorelineIntoWorld", Shoreline, Transform); } + bool CompositeShorelineIntoWorldInternal(FShorelineMetadata* Shoreline, FTransform* Transform) { return NativeCall(this, "UWorld.CompositeShorelineIntoWorldInternal", Shoreline, Transform); } + bool ContainsActor(AActor* Actor) { return NativeCall(this, "UWorld.ContainsActor", Actor); } + bool ContainsLevel(ULevel* InLevel) { return NativeCall(this, "UWorld.ContainsLevel", InLevel); } + static FString* ConvertToPIEPackageName(FString* result, FString* PackageName, int PIEInstanceID) { return NativeCall(nullptr, "UWorld.ConvertToPIEPackageName", result, PackageName, PIEInstanceID); } + void CreatePhysicsScene() { NativeCall(this, "UWorld.CreatePhysicsScene"); } + bool DestroySwappedPC(UNetConnection* Connection) { return NativeCall(this, "UWorld.DestroySwappedPC", Connection); } + static UWorld* DuplicateWorldForPIE(FString* PackageName, UWorld* OwningWorld) { return NativeCall(nullptr, "UWorld.DuplicateWorldForPIE", PackageName, OwningWorld); } + void EnsureCollisionTreeIsBuilt() { NativeCall(this, "UWorld.EnsureCollisionTreeIsBuilt"); } + void FindOrCreateSerializedObject(FAtlasSaveObjectData* SavedObject, TArray* Levels, FName Name, TArray* ActorsToBeginPlay, UWorld* World) { NativeCall*, FName, TArray*, UWorld*>(this, "UWorld.FindOrCreateSerializedObject", SavedObject, Levels, Name, ActorsToBeginPlay, World); } + void FinishDestroy() { NativeCall(this, "UWorld.FinishDestroy"); } + int GetActorCount() { return NativeCall(this, "UWorld.GetActorCount"); } + FString* GetAddressURL(FString* result) { return NativeCall(this, "UWorld.GetAddressURL", result); } + long double GetAudioTimeSeconds() { return NativeCall(this, "UWorld.GetAudioTimeSeconds"); } + TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* GetControllerIterator(TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* result) { return NativeCall> const, TAutoWeakObjectPtr const, int>*, TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>*>(this, "UWorld.GetControllerIterator", result); } + ULevel* GetCurrentLevel() { return NativeCall(this, "UWorld.GetCurrentLevel"); } + float GetDefaultGravityZ() { return NativeCall(this, "UWorld.GetDefaultGravityZ"); } + float GetDeltaSeconds() { return NativeCall(this, "UWorld.GetDeltaSeconds"); } + float GetDistanceToShore(FVector2D* Position) { return NativeCall(this, "UWorld.GetDistanceToShore", Position); } + ULocalPlayer* GetFirstLocalPlayerFromController() { return NativeCall(this, "UWorld.GetFirstLocalPlayerFromController"); } + APlayerController* GetFirstPlayerController() { return NativeCall(this, "UWorld.GetFirstPlayerController"); } + float GetGravityZ() { return NativeCall(this, "UWorld.GetGravityZ"); } + ULevel* GetLevel(int InLevelIndex) { return NativeCall(this, "UWorld.GetLevel", InLevelIndex); } + ALevelScriptActor* GetLevelScriptActor(ULevel* OwnerLevel) { return NativeCall(this, "UWorld.GetLevelScriptActor", OwnerLevel); } + TArray* GetLevels() { return NativeCall*>(this, "UWorld.GetLevels"); } + FString* GetLocalURL(FString* result) { return NativeCall(this, "UWorld.GetLocalURL", result); } + FString* GetMapName(FString* result) { return NativeCall(this, "UWorld.GetMapName", result); } + void GetMatineeActors(TArray* OutMatineeActors) { NativeCall*>(this, "UWorld.GetMatineeActors", OutMatineeActors); } + UClass* GetModPrioritizedClass(FName* NameIn) { return NativeCall(this, "UWorld.GetModPrioritizedClass", NameIn); } + int GetNetRelevantActorCount() { return NativeCall(this, "UWorld.GetNetRelevantActorCount"); } + TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* GetPawnIterator(TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* result) { return NativeCall> const, TAutoWeakObjectPtr const, int>*, TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>*>(this, "UWorld.GetPawnIterator", result); } + TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* GetPlayerControllerIterator(TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>* result) { return NativeCall> const, TAutoWeakObjectPtr const, int>*, TIndexedContainerIterator> const, TAutoWeakObjectPtr const, int>*>(this, "UWorld.GetPlayerControllerIterator", result); } + long double GetRealTimeSeconds() { return NativeCall(this, "UWorld.GetRealTimeSeconds"); } + float GetShoreDepth(FVector2D* Position) { return NativeCall(this, "UWorld.GetShoreDepth", Position); } + FVector* GetShorelineDampeningFactors(FVector* result, FVector2D* Position, float WindSpeed) { return NativeCall(this, "UWorld.GetShorelineDampeningFactors", result, Position, WindSpeed); } + long double GetTimeSeconds() { return NativeCall(this, "UWorld.GetTimeSeconds"); } + UWaveWorksComponent* GetWaveWorksComponent() { return NativeCall(this, "UWorld.GetWaveWorksComponent"); } + static FVector4* GetWindSpeedDampeningInfluence(FVector4* result, float WindSpeed) { return NativeCall(nullptr, "UWorld.GetWindSpeedDampeningInfluence", result, WindSpeed); } + AWorldSettings* GetWorldSettings(bool bCheckStreamingPesistent, bool bChecked) { return NativeCall(this, "UWorld.GetWorldSettings", bCheckStreamingPesistent, bChecked); } + bool HasBegunPlay() { return NativeCall(this, "UWorld.HasBegunPlay"); } + void InitWorld(UWorld::InitializationValues IVS) { NativeCall(this, "UWorld.InitWorld", IVS); } + void InitializeNewWorld(UWorld::InitializationValues IVS) { NativeCall(this, "UWorld.InitializeNewWorld", IVS); } + void InitializeShorelineToDefault() { NativeCall(this, "UWorld.InitializeShorelineToDefault"); } + bool IsClient() { return NativeCall(this, "UWorld.IsClient"); } + bool IsGameWorld() { return NativeCall(this, "UWorld.IsGameWorld"); } + bool IsInSeamlessTravel() { return NativeCall(this, "UWorld.IsInSeamlessTravel"); } + bool IsLevelLoadedByName(FName* LevelName) { return NativeCall(this, "UWorld.IsLevelLoadedByName", LevelName); } + bool IsPlayInEditor() { return NativeCall(this, "UWorld.IsPlayInEditor"); } + bool IsPreparingMapChange() { return NativeCall(this, "UWorld.IsPreparingMapChange"); } + bool IsServer() { return NativeCall(this, "UWorld.IsServer"); } + bool IsStreamingLevelLoaded(FName* LevelName, unsigned int UniqueID) { return NativeCall(this, "UWorld.IsStreamingLevelLoaded", LevelName, UniqueID); } + bool IsVisibilityRequestPending() { return NativeCall(this, "UWorld.IsVisibilityRequestPending"); } + bool LoadFromFile(FString* filename) { return NativeCall(this, "UWorld.LoadFromFile", filename); } + void ModifyLevel(ULevel* Level) { NativeCall(this, "UWorld.ModifyLevel", Level); } + void PostDuplicate(bool bDuplicateForPIE) { NativeCall(this, "UWorld.PostDuplicate", bDuplicateForPIE); } + void PostLoad() { NativeCall(this, "UWorld.PostLoad"); } + void PostSaveRoot(bool bCleanupIsRequired) { NativeCall(this, "UWorld.PostSaveRoot", bCleanupIsRequired); } + bool PreSaveRoot(const wchar_t* Filename, TArray* AdditionalPackagesToCook) { return NativeCall*>(this, "UWorld.PreSaveRoot", Filename, AdditionalPackagesToCook); } + void PrepareMapChange(TArray* LevelNames) { NativeCall*>(this, "UWorld.PrepareMapChange", LevelNames); } + void RebuildShoreline() { NativeCall(this, "UWorld.RebuildShoreline"); } + void RemoveActor(AActor* Actor, bool bShouldModifyLevel) { NativeCall(this, "UWorld.RemoveActor", Actor, bShouldModifyLevel); } + void RemoveController(AController* Controller) { NativeCall(this, "UWorld.RemoveController", Controller); } + void RemoveFromInternalOctree(UPrimitiveComponent* InComponent) { NativeCall(this, "UWorld.RemoveFromInternalOctree", InComponent); } + void RemoveFromInternalSimpleOctree(FOctreeElementSimple* InElement) { NativeCall(this, "UWorld.RemoveFromInternalSimpleOctree", InElement); } + void RemoveFromWorld(ULevel* Level) { NativeCall(this, "UWorld.RemoveFromWorld", Level); } + void RemoveNetworkActor(AActor* Actor) { NativeCall(this, "UWorld.RemoveNetworkActor", Actor); } + static FString* RemovePIEPrefix(FString* result, FString* Source) { return NativeCall(nullptr, "UWorld.RemovePIEPrefix", result, Source); } + void RequestNewWorldOrigin(FIntVector InNewOriginLocation) { NativeCall(this, "UWorld.RequestNewWorldOrigin", InNewOriginLocation); } + void SeamlessTravel(FString* SeamlessTravelURL, bool bAbsolute, FGuid MapPackageGuid) { NativeCall(this, "UWorld.SeamlessTravel", SeamlessTravelURL, bAbsolute, MapPackageGuid); } + void ServerTravel(FString* FURL, bool bAbsolute, bool bShouldSkipGameNotify) { NativeCall(this, "UWorld.ServerTravel", FURL, bAbsolute, bShouldSkipGameNotify); } + bool SetNewWorldOrigin(FIntVector InNewOriginLocation) { return NativeCall(this, "UWorld.SetNewWorldOrigin", InNewOriginLocation); } + void SetWaveWorksComponent(UUI_HostSession* SessionUI) { NativeCall(this, "UWorld.SetWaveWorksComponent", SessionUI); } + void SetupParameterCollectionInstances() { NativeCall(this, "UWorld.SetupParameterCollectionInstances"); } + static FString* StripPIEPrefixFromPackageName(FString* result, FString* PrefixedName, FString* Prefix) { return NativeCall(nullptr, "UWorld.StripPIEPrefixFromPackageName", result, PrefixedName, Prefix); } + long double TimeSince(long double Time) { return NativeCall(this, "UWorld.TimeSince", Time); } + void UpdateConstraintActors() { NativeCall(this, "UWorld.UpdateConstraintActors"); } + void UpdateCullDistanceVolumes() { NativeCall(this, "UWorld.UpdateCullDistanceVolumes"); } + void UpdateInternalOctreeTransform(UPrimitiveComponent* InComponent) { NativeCall(this, "UWorld.UpdateInternalOctreeTransform", InComponent); } + void UpdateInternalSimpleOctreeTransform(FOctreeElementSimple* InElement) { NativeCall(this, "UWorld.UpdateInternalSimpleOctreeTransform", InElement); } + void UpdateParameterCollectionInstances(bool bUpdateInstanceUniformBuffers) { NativeCall(this, "UWorld.UpdateParameterCollectionInstances", bUpdateInstanceUniformBuffers); } + void UpdateWorldComponents(bool bRerunConstructionScripts, bool bCurrentLevelOnly) { NativeCall(this, "UWorld.UpdateWorldComponents", bRerunConstructionScripts, bCurrentLevelOnly); } + void WelcomePlayer(UNetConnection* Connection) { NativeCall(this, "UWorld.WelcomePlayer", Connection); } + void FinishAsyncTrace() { NativeCall(this, "UWorld.FinishAsyncTrace"); } + bool LineTraceMulti(TArray* OutHits, FVector* Start, FVector* End, FCollisionQueryParams* Params, FCollisionObjectQueryParams* ObjectQueryParams, bool bDoSort, bool bCullBackfaces, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall*, FVector*, FVector*, FCollisionQueryParams*, FCollisionObjectQueryParams*, bool, bool, bool, float>(this, "UWorld.LineTraceMulti", OutHits, Start, End, Params, ObjectQueryParams, bDoSort, bCullBackfaces, bUsePostFilter, NegativeDistanceTolerance); } + bool LineTraceMulti(TArray* OutHits, FVector* Start, FVector* End, ECollisionChannel TraceChannel, FCollisionQueryParams* Params, FCollisionResponseParams* ResponseParam, bool bDoSort, bool bCullBackfaces, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall*, FVector*, FVector*, ECollisionChannel, FCollisionQueryParams*, FCollisionResponseParams*, bool, bool, bool, float>(this, "UWorld.LineTraceMulti", OutHits, Start, End, TraceChannel, Params, ResponseParam, bDoSort, bCullBackfaces, bUsePostFilter, NegativeDistanceTolerance); } + bool LineTraceSingle(FHitResult* OutHit, FVector* Start, FVector* End, FCollisionQueryParams* Params, FCollisionObjectQueryParams* ObjectQueryParams, bool bUsePostFilter, float NegativeDistanceTolerance) { return NativeCall(this, "UWorld.LineTraceSingle", OutHit, Start, End, Params, ObjectQueryParams, bUsePostFilter, NegativeDistanceTolerance); } + bool LineTraceSingle(FHitResult* OutHit, FVector* Start, FVector* End, ECollisionChannel TraceChannel, FCollisionQueryParams* Params, FCollisionResponseParams* ResponseParam, bool bUsePostfilter, float NegativeDistanceTolerance) { return NativeCall(this, "UWorld.LineTraceSingle", OutHit, Start, End, TraceChannel, Params, ResponseParam, bUsePostfilter, NegativeDistanceTolerance); } + bool LineTraceTest(FVector* Start, FVector* End, ECollisionChannel TraceChannel, FCollisionQueryParams* Params, FCollisionResponseParams* ResponseParam) { return NativeCall(this, "UWorld.LineTraceTest", Start, End, TraceChannel, Params, ResponseParam); } + bool QueryTraceData(FTraceHandle* Handle, int FrameOffset, FTraceDatum* OutData) { return NativeCall(this, "UWorld.QueryTraceData", Handle, FrameOffset, OutData); } + void ResetAsyncTrace() { NativeCall(this, "UWorld.ResetAsyncTrace"); } + void StartAsyncTrace() { NativeCall(this, "UWorld.StartAsyncTrace"); } + void FinishPhysicsSim() { NativeCall(this, "UWorld.FinishPhysicsSim"); } + void StartPhysicsSim() { NativeCall(this, "UWorld.StartPhysicsSim"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UWorld.GetPrivateStaticClass", Package); } +}; + +struct UEngine : UObject +{ + struct FOnTravelFailure; + struct FOnNetworkFailure; + struct FWorldAddedEvent; + struct FWorldDestroyedEvent; + struct FCopyPropertiesForUnrelatedObjectsParams {}; + TWeakObjectPtr& ActiveMatineeField() { return *GetNativePointerField*>(this, "UEngine.ActiveMatinee"); } + TArray& AdditionalFontNamesField() { return *GetNativePointerField*>(this, "UEngine.AdditionalFontNames"); } + TSubclassOf& ConsoleClassField() { return *GetNativePointerField*>(this, "UEngine.ConsoleClass"); } + TSubclassOf& LocalPlayerClassField() { return *GetNativePointerField*>(this, "UEngine.LocalPlayerClass"); } + TSubclassOf& WorldSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.WorldSettingsClass"); } + TSubclassOf& GameUserSettingsClassField() { return *GetNativePointerField*>(this, "UEngine.GameUserSettingsClass"); } + UGameUserSettings* GameUserSettingsField() { return *GetNativePointerField(this, "UEngine.GameUserSettings"); } + TSubclassOf& LevelScriptActorClassField() { return *GetNativePointerField*>(this, "UEngine.LevelScriptActorClass"); } + UPrimalGlobals* GameSingletonField() { return *GetNativePointerField(this, "UEngine.GameSingleton"); } + UTireType* DefaultTireTypeField() { return *GetNativePointerField(this, "UEngine.DefaultTireType"); } + TSubclassOf& DefaultPreviewPawnClassField() { return *GetNativePointerField*>(this, "UEngine.DefaultPreviewPawnClass"); } + FString& PlayOnConsoleSaveDirField() { return *GetNativePointerField(this, "UEngine.PlayOnConsoleSaveDir"); } + UTexture2D* DefaultTextureField() { return *GetNativePointerField(this, "UEngine.DefaultTexture"); } + UTexture* DefaultDiffuseTextureField() { return *GetNativePointerField(this, "UEngine.DefaultDiffuseTexture"); } + UTexture2D* DefaultBSPVertexTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBSPVertexTexture"); } + UTexture2D* HighFrequencyNoiseTextureField() { return *GetNativePointerField(this, "UEngine.HighFrequencyNoiseTexture"); } + UTexture2D* DefaultBokehTextureField() { return *GetNativePointerField(this, "UEngine.DefaultBokehTexture"); } + UMaterial* WireframeMaterialField() { return *GetNativePointerField(this, "UEngine.WireframeMaterial"); } + UMaterial* DebugMeshMaterialField() { return *GetNativePointerField(this, "UEngine.DebugMeshMaterial"); } + UMaterial* LevelColorationLitMaterialField() { return *GetNativePointerField(this, "UEngine.LevelColorationLitMaterial"); } + UMaterial* LevelColorationUnlitMaterialField() { return *GetNativePointerField(this, "UEngine.LevelColorationUnlitMaterial"); } + UMaterial* LightingTexelDensityMaterialField() { return *GetNativePointerField(this, "UEngine.LightingTexelDensityMaterial"); } + UMaterial* ShadedLevelColorationLitMaterialField() { return *GetNativePointerField(this, "UEngine.ShadedLevelColorationLitMaterial"); } + UMaterial* ShadedLevelColorationUnlitMaterialField() { return *GetNativePointerField(this, "UEngine.ShadedLevelColorationUnlitMaterial"); } + UMaterial* RemoveSurfaceMaterialField() { return *GetNativePointerField(this, "UEngine.RemoveSurfaceMaterial"); } + UMaterial* VertexColorMaterialField() { return *GetNativePointerField(this, "UEngine.VertexColorMaterial"); } + UMaterial* VertexColorViewModeMaterial_ColorOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_ColorOnly"); } + UMaterial* VertexColorViewModeMaterial_AlphaAsColorField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_AlphaAsColor"); } + UMaterial* VertexColorViewModeMaterial_RedOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_RedOnly"); } + UMaterial* VertexColorViewModeMaterial_GreenOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_GreenOnly"); } + UMaterial* VertexColorViewModeMaterial_BlueOnlyField() { return *GetNativePointerField(this, "UEngine.VertexColorViewModeMaterial_BlueOnly"); } + UMaterial* ConstraintLimitMaterialField() { return *GetNativePointerField(this, "UEngine.ConstraintLimitMaterial"); } + UMaterial* InvalidLightmapSettingsMaterialField() { return *GetNativePointerField(this, "UEngine.InvalidLightmapSettingsMaterial"); } + UMaterial* PreviewShadowsIndicatorMaterialField() { return *GetNativePointerField(this, "UEngine.PreviewShadowsIndicatorMaterial"); } + UMaterial* ArrowMaterialField() { return *GetNativePointerField(this, "UEngine.ArrowMaterial"); } + FLinearColor& LightingOnlyBrightnessField() { return *GetNativePointerField(this, "UEngine.LightingOnlyBrightness"); } + TArray& LightComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.LightComplexityColors"); } + TArray& ShaderComplexityColorsField() { return *GetNativePointerField*>(this, "UEngine.ShaderComplexityColors"); } + TArray& StationaryLightOverlapColorsField() { return *GetNativePointerField*>(this, "UEngine.StationaryLightOverlapColors"); } + float& MaxPixelShaderAdditiveComplexityCountField() { return *GetNativePointerField(this, "UEngine.MaxPixelShaderAdditiveComplexityCount"); } + float& MaxES2PixelShaderAdditiveComplexityCountField() { return *GetNativePointerField(this, "UEngine.MaxES2PixelShaderAdditiveComplexityCount"); } + float& MinLightMapDensityField() { return *GetNativePointerField(this, "UEngine.MinLightMapDensity"); } + float& IdealLightMapDensityField() { return *GetNativePointerField(this, "UEngine.IdealLightMapDensity"); } + float& MaxLightMapDensityField() { return *GetNativePointerField(this, "UEngine.MaxLightMapDensity"); } + float& RenderLightMapDensityGrayscaleScaleField() { return *GetNativePointerField(this, "UEngine.RenderLightMapDensityGrayscaleScale"); } + float& RenderLightMapDensityColorScaleField() { return *GetNativePointerField(this, "UEngine.RenderLightMapDensityColorScale"); } + FLinearColor& LightMapDensityVertexMappedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensityVertexMappedColor"); } + FLinearColor& LightMapDensitySelectedColorField() { return *GetNativePointerField(this, "UEngine.LightMapDensitySelectedColor"); } + TArray& StatColorMappingsField() { return *GetNativePointerField*>(this, "UEngine.StatColorMappings"); } + UPhysicalMaterial* DefaultPhysMaterialField() { return *GetNativePointerField(this, "UEngine.DefaultPhysMaterial"); } + TArray& ActiveGameNameRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveGameNameRedirects"); } + TArray& ActiveClassRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveClassRedirects"); } + TArray& ActivePluginRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActivePluginRedirects"); } + TArray& ActiveStructRedirectsField() { return *GetNativePointerField*>(this, "UEngine.ActiveStructRedirects"); } + UTexture2D* PreIntegratedSkinBRDFTextureField() { return *GetNativePointerField(this, "UEngine.PreIntegratedSkinBRDFTexture"); } + UTexture2D* MiniFontTextureField() { return *GetNativePointerField(this, "UEngine.MiniFontTexture"); } + UTexture* WeightMapPlaceholderTextureField() { return *GetNativePointerField(this, "UEngine.WeightMapPlaceholderTexture"); } + UTexture2D* LightMapDensityTextureField() { return *GetNativePointerField(this, "UEngine.LightMapDensityTexture"); } + IEngineLoop* EngineLoopField() { return *GetNativePointerField(this, "UEngine.EngineLoop"); } + TArray& DeferredCommandsField() { return *GetNativePointerField*>(this, "UEngine.DeferredCommands"); } + int& TickCyclesField() { return *GetNativePointerField(this, "UEngine.TickCycles"); } + int& GameCyclesField() { return *GetNativePointerField(this, "UEngine.GameCycles"); } + int& ClientCyclesField() { return *GetNativePointerField(this, "UEngine.ClientCycles"); } + float& NearClipPlaneField() { return *GetNativePointerField(this, "UEngine.NearClipPlane"); } + float& TimeBetweenPurgingPendingKillObjectsField() { return *GetNativePointerField(this, "UEngine.TimeBetweenPurgingPendingKillObjects"); } + float& AsyncLoadingTimeLimitField() { return *GetNativePointerField(this, "UEngine.AsyncLoadingTimeLimit"); } + float& PriorityAsyncLoadingExtraTimeField() { return *GetNativePointerField(this, "UEngine.PriorityAsyncLoadingExtraTime"); } + float& LevelStreamingActorsUpdateTimeLimitField() { return *GetNativePointerField(this, "UEngine.LevelStreamingActorsUpdateTimeLimit"); } + int& LevelStreamingComponentsRegistrationGranularityField() { return *GetNativePointerField(this, "UEngine.LevelStreamingComponentsRegistrationGranularity"); } + int& MaximumLoopIterationCountField() { return *GetNativePointerField(this, "UEngine.MaximumLoopIterationCount"); } + //TRange& SmoothedFrameRateRangeField() { return *GetNativePointerField*>(this, "UEngine.SmoothedFrameRateRange"); } + int& NumPawnsAllowedToBeSpawnedInAFrameField() { return *GetNativePointerField(this, "UEngine.NumPawnsAllowedToBeSpawnedInAFrame"); } + FColor& C_WorldBoxField() { return *GetNativePointerField(this, "UEngine.C_WorldBox"); } + FColor& C_BrushWireField() { return *GetNativePointerField(this, "UEngine.C_BrushWire"); } + FColor& C_AddWireField() { return *GetNativePointerField(this, "UEngine.C_AddWire"); } + FColor& C_SubtractWireField() { return *GetNativePointerField(this, "UEngine.C_SubtractWire"); } + FColor& C_SemiSolidWireField() { return *GetNativePointerField(this, "UEngine.C_SemiSolidWire"); } + FColor& C_NonSolidWireField() { return *GetNativePointerField(this, "UEngine.C_NonSolidWire"); } + FColor& C_WireBackgroundField() { return *GetNativePointerField(this, "UEngine.C_WireBackground"); } + FColor& C_ScaleBoxHiField() { return *GetNativePointerField(this, "UEngine.C_ScaleBoxHi"); } + FColor& C_VolumeCollisionField() { return *GetNativePointerField(this, "UEngine.C_VolumeCollision"); } + FColor& C_BSPCollisionField() { return *GetNativePointerField(this, "UEngine.C_BSPCollision"); } + FColor& C_OrthoBackgroundField() { return *GetNativePointerField(this, "UEngine.C_OrthoBackground"); } + FColor& C_VolumeField() { return *GetNativePointerField(this, "UEngine.C_Volume"); } + FColor& C_BrushShapeField() { return *GetNativePointerField(this, "UEngine.C_BrushShape"); } + float& StreamingDistanceFactorField() { return *GetNativePointerField(this, "UEngine.StreamingDistanceFactor"); } + TEnumAsByte& TransitionTypeField() { return *GetNativePointerField*>(this, "UEngine.TransitionType"); } + FString& TransitionDescriptionField() { return *GetNativePointerField(this, "UEngine.TransitionDescription"); } + FString& TransitionGameModeField() { return *GetNativePointerField(this, "UEngine.TransitionGameMode"); } + float& MeshLODRangeField() { return *GetNativePointerField(this, "UEngine.MeshLODRange"); } + float& CameraRotationThresholdField() { return *GetNativePointerField(this, "UEngine.CameraRotationThreshold"); } + float& CameraTranslationThresholdField() { return *GetNativePointerField(this, "UEngine.CameraTranslationThreshold"); } + float& PrimitiveProbablyVisibleTimeField() { return *GetNativePointerField(this, "UEngine.PrimitiveProbablyVisibleTime"); } + float& MaxOcclusionPixelsFractionField() { return *GetNativePointerField(this, "UEngine.MaxOcclusionPixelsFraction"); } + int& MaxParticleResizeField() { return *GetNativePointerField(this, "UEngine.MaxParticleResize"); } + int& MaxParticleResizeWarnField() { return *GetNativePointerField(this, "UEngine.MaxParticleResizeWarn"); } + TArray& PendingDroppedNotesField() { return *GetNativePointerField*>(this, "UEngine.PendingDroppedNotes"); } + FRigidBodyErrorCorrection& PhysicErrorCorrectionField() { return *GetNativePointerField(this, "UEngine.PhysicErrorCorrection"); } + float& NetClientTicksPerSecondField() { return *GetNativePointerField(this, "UEngine.NetClientTicksPerSecond"); } + float& DisplayGammaField() { return *GetNativePointerField(this, "UEngine.DisplayGamma"); } + float& MinDesiredFrameRateField() { return *GetNativePointerField(this, "UEngine.MinDesiredFrameRate"); } + FLinearColor& DefaultSelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.DefaultSelectedMaterialColor"); } + FLinearColor& SelectedMaterialColorField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColor"); } + FLinearColor& SelectionOutlineColorField() { return *GetNativePointerField(this, "UEngine.SelectionOutlineColor"); } + FLinearColor& SelectedMaterialColorOverrideField() { return *GetNativePointerField(this, "UEngine.SelectedMaterialColorOverride"); } + bool& bIsOverridingSelectedColorField() { return *GetNativePointerField(this, "UEngine.bIsOverridingSelectedColor"); } + unsigned int& bEnableVisualLogRecordingOnStartField() { return *GetNativePointerField(this, "UEngine.bEnableVisualLogRecordingOnStart"); } + UDeviceProfileManager* DeviceProfileManagerField() { return *GetNativePointerField(this, "UEngine.DeviceProfileManager"); } + int& ScreenSaverInhibitorSemaphoreField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitorSemaphore"); } + FString& MatineeCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineeCaptureName"); } + FString& MatineePackageCaptureNameField() { return *GetNativePointerField(this, "UEngine.MatineePackageCaptureName"); } + int& MatineeCaptureFPSField() { return *GetNativePointerField(this, "UEngine.MatineeCaptureFPS"); } + TEnumAsByte& MatineeCaptureTypeField() { return *GetNativePointerField*>(this, "UEngine.MatineeCaptureType"); } + bool& bNoTextureStreamingField() { return *GetNativePointerField(this, "UEngine.bNoTextureStreaming"); } + FString& ParticleEventManagerClassPathField() { return *GetNativePointerField(this, "UEngine.ParticleEventManagerClassPath"); } + TArray& PriorityScreenMessagesField() { return *GetNativePointerField*>(this, "UEngine.PriorityScreenMessages"); } + float& SelectionHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.SelectionHighlightIntensity"); } + float& BSPSelectionHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.BSPSelectionHighlightIntensity"); } + float& HoverHighlightIntensityField() { return *GetNativePointerField(this, "UEngine.HoverHighlightIntensity"); } + float& SelectionHighlightIntensityBillboardsField() { return *GetNativePointerField(this, "UEngine.SelectionHighlightIntensityBillboards"); } + FString& LastModDownloadTextField() { return *GetNativePointerField(this, "UEngine.LastModDownloadText"); } + FString& PrimalNetAuth_MyIPStrField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_MyIPStr"); } + FString& PrimalNetAuth_TokenField() { return *GetNativePointerField(this, "UEngine.PrimalNetAuth_Token"); } + UEngine::FOnTravelFailure& TravelFailureEventField() { return *GetNativePointerField(this, "UEngine.TravelFailureEvent"); } + UEngine::FOnNetworkFailure& NetworkFailureEventField() { return *GetNativePointerField(this, "UEngine.NetworkFailureEvent"); } + bool& bIsInitializedField() { return *GetNativePointerField(this, "UEngine.bIsInitialized"); } + TMap > & ScreenMessagesField() { return *GetNativePointerField >*>(this, "UEngine.ScreenMessages"); } + FAudioDevice* AudioDeviceField() { return *GetNativePointerField(this, "UEngine.AudioDevice"); } + TSharedPtr & StereoRenderingDeviceField() { return *GetNativePointerField*>(this, "UEngine.StereoRenderingDevice"); } + TSharedPtr & HMDDeviceField() { return *GetNativePointerField*>(this, "UEngine.HMDDevice"); } + UEngine::FWorldAddedEvent& WorldAddedEventField() { return *GetNativePointerField(this, "UEngine.WorldAddedEvent"); } + UEngine::FWorldDestroyedEvent& WorldDestroyedEventField() { return *GetNativePointerField(this, "UEngine.WorldDestroyedEvent"); } + FRunnableThread* ScreenSaverInhibitorField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitor"); } + FScreenSaverInhibitor* ScreenSaverInhibitorRunnableField() { return *GetNativePointerField(this, "UEngine.ScreenSaverInhibitorRunnable"); } + bool& bPendingHardwareSurveyResultsField() { return *GetNativePointerField(this, "UEngine.bPendingHardwareSurveyResults"); } + TArray& NetDriverDefinitionsField() { return *GetNativePointerField*>(this, "UEngine.NetDriverDefinitions"); } + TArray& ServerActorsField() { return *GetNativePointerField*>(this, "UEngine.ServerActors"); } + TArray& WorldListField() { return *GetNativePointerField*>(this, "UEngine.WorldList"); } + int& NextWorldContextHandleField() { return *GetNativePointerField(this, "UEngine.NextWorldContextHandle"); } + //TArray& EngineStatsField() { return *GetNativePointerField*>(this, "UEngine.EngineStats"); } + + // Functions + + FAudioDevice* GetAudioDevice() { return NativeCall(this, "UEngine.GetAudioDevice"); } + FString* GetLastModDownloadText(FString* result) { return NativeCall(this, "UEngine.GetLastModDownloadText", result); } + bool IsInitialized() { return NativeCall(this, "UEngine.IsInitialized"); } + void FEngineStatFuncs() { NativeCall(this, "UEngine.FEngineStatFuncs"); } + void DumpFPSChart(FString* InMapName, bool bForceDump) { NativeCall(this, "UEngine.DumpFPSChart", InMapName, bForceDump); } + void DumpFPSChartToLog(float TotalTime, float DeltaTime, int NumFrames, FString* InMapName) { NativeCall(this, "UEngine.DumpFPSChartToLog", TotalTime, DeltaTime, NumFrames, InMapName); } + void StartFPSChart() { NativeCall(this, "UEngine.StartFPSChart"); } + void StopFPSChart() { NativeCall(this, "UEngine.StopFPSChart"); } + void TickFPSChart(float DeltaSeconds) { NativeCall(this, "UEngine.TickFPSChart", DeltaSeconds); } + FString* GetCurrentModPath(FString* result) { return NativeCall(this, "UEngine.GetCurrentModPath", result); } + void Tick(float DeltaSeconds, bool bIdleMode) { NativeCall(this, "UEngine.Tick", DeltaSeconds, bIdleMode); } + void BrowseToDefaultMap(FWorldContext* Context) { NativeCall(this, "UEngine.BrowseToDefaultMap", Context); } + void CancelAllPending() { NativeCall(this, "UEngine.CancelAllPending"); } + void CancelPending(FWorldContext* Context) { NativeCall(this, "UEngine.CancelPending", Context); } + void CancelPending(UWorld* InWorld, UPendingNetGame* NewPendingNetGame) { NativeCall(this, "UEngine.CancelPending", InWorld, NewPendingNetGame); } + void CancelPendingMapChange(FWorldContext* Context) { NativeCall(this, "UEngine.CancelPendingMapChange", Context); } + void CleanupPackagesToFullyLoad(FWorldContext* Context, EFullyLoadPackageType FullyLoadType, FString* Tag) { NativeCall(this, "UEngine.CleanupPackagesToFullyLoad", Context, FullyLoadType, Tag); } + void ClearDebugDisplayProperties() { NativeCall(this, "UEngine.ClearDebugDisplayProperties"); } + bool CommitMapChange(FWorldContext* Context) { return NativeCall(this, "UEngine.CommitMapChange", Context); } + void ConditionalCommitMapChange(FWorldContext* Context) { NativeCall(this, "UEngine.ConditionalCommitMapChange", Context); } + static void CopyPropertiesForUnrelatedObjects(UObject* OldObject, UObject* NewObject, UEngine::FCopyPropertiesForUnrelatedObjectsParams Params) { NativeCall(nullptr, "UEngine.CopyPropertiesForUnrelatedObjects", OldObject, NewObject, Params); } + void CreateGameUserSettings() { NativeCall(this, "UEngine.CreateGameUserSettings"); } + bool CreateNamedNetDriver(UPendingNetGame* PendingNetGame, FName NetDriverName, FName NetDriverDefinition) { return NativeCall(this, "UEngine.CreateNamedNetDriver", PendingNetGame, NetDriverName, NetDriverDefinition); } + bool CreateNamedNetDriver(UWorld* InWorld, FName NetDriverName, FName NetDriverDefinition) { return NativeCall(this, "UEngine.CreateNamedNetDriver", InWorld, NetDriverName, NetDriverDefinition); } + FWorldContext* CreateNewWorldContext(EWorldType::Type WorldType) { return NativeCall(this, "UEngine.CreateNewWorldContext", WorldType); } + void DestroyNamedNetDriver(UPendingNetGame* PendingNetGame, FName NetDriverName) { NativeCall(this, "UEngine.DestroyNamedNetDriver", PendingNetGame, NetDriverName); } + void DestroyNamedNetDriver(UWorld* InWorld, FName NetDriverName) { NativeCall(this, "UEngine.DestroyNamedNetDriver", InWorld, NetDriverName); } + void DestroyWorldContext(UWorld* InWorld) { NativeCall(this, "UEngine.DestroyWorldContext", InWorld); } + void EnableScreenSaver(bool bEnable) { NativeCall(this, "UEngine.EnableScreenSaver", bEnable); } + ULocalPlayer* FindFirstLocalPlayerFromControllerId(int ControllerId) { return NativeCall(this, "UEngine.FindFirstLocalPlayerFromControllerId", ControllerId); } + void FinishDestroy() { NativeCall(this, "UEngine.FinishDestroy"); } + void GetAllLocalPlayerControllers(TArray* PlayerList) { NativeCall*>(this, "UEngine.GetAllLocalPlayerControllers", PlayerList); } + ULocalPlayer* GetFirstGamePlayer(UPendingNetGame* PendingNetGame) { return NativeCall(this, "UEngine.GetFirstGamePlayer", PendingNetGame); } + ULocalPlayer* GetFirstGamePlayer(UWorld* InWorld) { return NativeCall(this, "UEngine.GetFirstGamePlayer", InWorld); } + APlayerController* GetFirstLocalPlayerController(UWorld* InWorld) { return NativeCall(this, "UEngine.GetFirstLocalPlayerController", InWorld); } + TArray* GetGamePlayers(UWorld* World) { return NativeCall*, UWorld*>(this, "UEngine.GetGamePlayers", World); } + UGameUserSettings* GetGameUserSettings() { return NativeCall(this, "UEngine.GetGameUserSettings"); } + ULocalPlayer* GetLocalPlayerFromControllerId(UWorld* InWorld, int ControllerId) { return NativeCall(this, "UEngine.GetLocalPlayerFromControllerId", InWorld, ControllerId); } + TIndexedContainerIterator const, ULocalPlayer* const, int>* GetLocalPlayerIterator(TIndexedContainerIterator const, ULocalPlayer* const, int>* result, UWorld* World) { return NativeCall const, ULocalPlayer* const, int>*, TIndexedContainerIterator const, ULocalPlayer* const, int>*, UWorld*>(this, "UEngine.GetLocalPlayerIterator", result, World); } + float GetMaxTickRate(float DeltaTime, bool bAllowFrameRateSmoothing) { return NativeCall(this, "UEngine.GetMaxTickRate", DeltaTime, bAllowFrameRateSmoothing); } + int GetNumGamePlayers(UWorld* InWorld) { return NativeCall(this, "UEngine.GetNumGamePlayers", InWorld); } + static FGuid* GetPackageGuid(FGuid* result, FName PackageName) { return NativeCall(nullptr, "UEngine.GetPackageGuid", result, PackageName); } + FWorldContext* GetWorldContextFromHandleChecked(FName WorldContextHandle) { return NativeCall(this, "UEngine.GetWorldContextFromHandleChecked", WorldContextHandle); } + FWorldContext* GetWorldContextFromWorld(UWorld* InWorld) { return NativeCall(this, "UEngine.GetWorldContextFromWorld", InWorld); } + FWorldContext* GetWorldContextFromWorldChecked(UWorld* InWorld) { return NativeCall(this, "UEngine.GetWorldContextFromWorldChecked", InWorld); } + UWorld* GetWorldFromContextObject(UObject* Object, bool bChecked) { return NativeCall(this, "UEngine.GetWorldFromContextObject", Object, bChecked); } + void HandleTravelFailure(UWorld* InWorld, ETravelFailure::Type FailureType, FString* ErrorString) { NativeCall(this, "UEngine.HandleTravelFailure", InWorld, FailureType, ErrorString); } + static FString* HardwareSurveyBucketRAM(FString* result, unsigned int MemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketRAM", result, MemoryMB); } + static FString* HardwareSurveyBucketResolution(FString* result, unsigned int DisplayWidth, unsigned int DisplayHeight) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketResolution", result, DisplayWidth, DisplayHeight); } + static FString* HardwareSurveyBucketVRAM(FString* result, unsigned int VidMemoryMB) { return NativeCall(nullptr, "UEngine.HardwareSurveyBucketVRAM", result, VidMemoryMB); } + void Init(IEngineLoop* InEngineLoop) { NativeCall(this, "UEngine.Init", InEngineLoop); } + void InitHardwareSurvey() { NativeCall(this, "UEngine.InitHardwareSurvey"); } + bool InitializeAudioDevice() { return NativeCall(this, "UEngine.InitializeAudioDevice"); } + bool InitializeHMDDevice() { return NativeCall(this, "UEngine.InitializeHMDDevice"); } + void InitializeObjectReferences() { NativeCall(this, "UEngine.InitializeObjectReferences"); } + bool IsEngineStat(FString* InName) { return NativeCall(this, "UEngine.IsEngineStat", InName); } + bool IsPreparingMapChange(FWorldContext* Context) { return NativeCall(this, "UEngine.IsPreparingMapChange", Context); } + bool IsSplitScreen(UWorld* InWorld) { return NativeCall(this, "UEngine.IsSplitScreen", InWorld); } + bool IsStereoscopic3D(FViewport* InViewport) { return NativeCall(this, "UEngine.IsStereoscopic3D", InViewport); } + void LoadPackagesFully(UWorld* InWorld, EFullyLoadPackageType FullyLoadType, FString* Tag) { NativeCall(this, "UEngine.LoadPackagesFully", InWorld, FullyLoadType, Tag); } + bool MakeSureMapNameIsValid(FString* InOutMapName) { return NativeCall(this, "UEngine.MakeSureMapNameIsValid", InOutMapName); } + void MovePendingLevel(FWorldContext* Context) { NativeCall(this, "UEngine.MovePendingLevel", Context); } + void OnExternalUIChange(bool bInIsOpening) { NativeCall(this, "UEngine.OnExternalUIChange", bInIsOpening); } + void OnHardwareSurveyComplete(FHardwareSurveyResults* SurveyResults) { NativeCall(this, "UEngine.OnHardwareSurveyComplete", SurveyResults); } + void OnLostFocusPause(bool EnablePause) { NativeCall(this, "UEngine.OnLostFocusPause", EnablePause); } + void ParseCommandline() { NativeCall(this, "UEngine.ParseCommandline"); } + UPendingNetGame* PendingNetGameFromWorld(UWorld* InWorld) { return NativeCall(this, "UEngine.PendingNetGameFromWorld", InWorld); } + void PerformanceCapture(FString* CaptureName) { NativeCall(this, "UEngine.PerformanceCapture", CaptureName); } + void PreExit() { NativeCall(this, "UEngine.PreExit"); } + bool PrepareMapChange(FWorldContext* Context, TArray* LevelNames) { return NativeCall*>(this, "UEngine.PrepareMapChange", Context, LevelNames); } + void RecordHMDAnalytics() { NativeCall(this, "UEngine.RecordHMDAnalytics"); } + void RenderEngineStats(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int LHSX, int* InOutLHSY, int RHSX, int* InOutRHSY, FVector* ViewLocation, FRotator* ViewRotation) { NativeCall(this, "UEngine.RenderEngineStats", World, Viewport, Canvas, LHSX, InOutLHSY, RHSX, InOutRHSY, ViewLocation, ViewRotation); } + int RenderStatAI(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatAI", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatColorList(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatColorList", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatFPS(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatFPS", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatHitches(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatHitches", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatLevels(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatLevels", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatNamedEvents(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatNamedEvents", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatSounds(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatSounds", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatSummary(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatSummary", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatTexture(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatTexture", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + int RenderStatUnit(UWorld* World, FViewport* Viewport, FCanvas* Canvas, int X, int Y, FVector* ViewLocation, FRotator* ViewRotation) { return NativeCall(this, "UEngine.RenderStatUnit", World, Viewport, Canvas, X, Y, ViewLocation, ViewRotation); } + void RequestAuthTokenThenNotifyPendingNetGame(UPendingNetGame* PendingNetGameToNotify) { NativeCall(this, "UEngine.RequestAuthTokenThenNotifyPendingNetGame", PendingNetGameToNotify); } + FSeamlessTravelHandler* SeamlessTravelHandlerForWorld(UWorld* World) { return NativeCall(this, "UEngine.SeamlessTravelHandlerForWorld", World); } + void SetShouldCommitPendingMapChange(UWorld* InWorld, bool NewShouldCommitPendingMapChange) { NativeCall(this, "UEngine.SetShouldCommitPendingMapChange", InWorld, NewShouldCommitPendingMapChange); } + bool ShouldAbsorbAuthorityOnlyEvent() { return NativeCall(this, "UEngine.ShouldAbsorbAuthorityOnlyEvent"); } + bool ShouldAbsorbCosmeticOnlyEvent() { return NativeCall(this, "UEngine.ShouldAbsorbCosmeticOnlyEvent"); } + bool ShouldCommitPendingMapChange(UWorld* InWorld) { return NativeCall(this, "UEngine.ShouldCommitPendingMapChange", InWorld); } + void ShutdownAudioDevice() { NativeCall(this, "UEngine.ShutdownAudioDevice"); } + void ShutdownWorldNetDriver(UWorld* World) { NativeCall(this, "UEngine.ShutdownWorldNetDriver", World); } + void SpawnServerActors(UWorld* World) { NativeCall(this, "UEngine.SpawnServerActors", World); } + void SwapControllerId(ULocalPlayer* NewPlayer, int CurrentControllerId, int NewControllerID) { NativeCall(this, "UEngine.SwapControllerId", NewPlayer, CurrentControllerId, NewControllerID); } + void TickDeferredCommands() { NativeCall(this, "UEngine.TickDeferredCommands"); } + void TickHardwareSurvey() { NativeCall(this, "UEngine.TickHardwareSurvey"); } + bool TickWorldTravel(FWorldContext* Context, float DeltaSeconds) { return NativeCall(this, "UEngine.TickWorldTravel", Context, DeltaSeconds); } + void TriggerPostLoadMapEvents() { NativeCall(this, "UEngine.TriggerPostLoadMapEvents"); } + void UpdateTimeAndHandleMaxTickRate() { NativeCall(this, "UEngine.UpdateTimeAndHandleMaxTickRate"); } + void UpdateTransitionType(UWorld* CurrentWorld) { NativeCall(this, "UEngine.UpdateTransitionType", CurrentWorld); } + bool UseSound() { return NativeCall(this, "UEngine.UseSound"); } + void VerifyLoadMapWorldCleanup() { NativeCall(this, "UEngine.VerifyLoadMapWorldCleanup"); } + void WorldAdded(UWorld* InWorld) { NativeCall(this, "UEngine.WorldAdded", InWorld); } + void WorldDestroyed(UWorld* InWorld) { NativeCall(this, "UEngine.WorldDestroyed", InWorld); } + bool IsHardwareSurveyRequired() { return NativeCall(this, "UEngine.IsHardwareSurveyRequired"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UEngine.GetPrivateStaticClass", Package); } +}; + +struct UGameEngine : UEngine +{ + +}; + +struct UPrimalGlobals +{ + UPrimalGameData* PrimalGameDataField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameData"); } + UPrimalGameData* PrimalGameDataOverrideField() { return *GetNativePointerField(this, "UPrimalGlobals.PrimalGameDataOverride"); } + TSubclassOf& GlobalGenericConfirmationDialogField() { return *GetNativePointerField*>(this, "UPrimalGlobals.GlobalGenericConfirmationDialog"); } + bool& bAllowSingleplayerField() { return *GetNativePointerField(this, "UPrimalGlobals.bAllowSingleplayer"); } + bool& bAllowNonDedicatedHostField() { return *GetNativePointerField(this, "UPrimalGlobals.bAllowNonDedicatedHost"); } + TArray& UIOnlyShowMapFileNamesField() { return *GetNativePointerField*>(this, "UPrimalGlobals.UIOnlyShowMapFileNames"); } + TArray& UIOnlyShowModIDsField() { return *GetNativePointerField*>(this, "UPrimalGlobals.UIOnlyShowModIDs"); } + TArray CoreSoundClassesField() { return *GetNativePointerField*>(this, "UPrimalGlobals.CoreSoundClasses"); } + bool& bTotalConversionShowUnofficialServersField() { return *GetNativePointerField(this, "UPrimalGlobals.bTotalConversionShowUnofficialServers"); } + FString& CreditStringField() { return *GetNativePointerField(this, "UPrimalGlobals.CreditString"); } + bool& bGameMediaLoadedField() { return *GetNativePointerField(this, "UPrimalGlobals.bGameMediaLoaded"); } + bool& bStartedAsyncLoadField() { return *GetNativePointerField(this, "UPrimalGlobals.bStartedAsyncLoad"); } + FStreamableManager& StreamableManagerField() { return *GetNativePointerField(this, "UPrimalGlobals.StreamableManager"); } + + // Functions + + void AsyncLoadGameMedia() { NativeCall(this, "UPrimalGlobals.AsyncLoadGameMedia"); } + static UPrimalGlobals FinishLoadGameMedia() { return NativeCall(nullptr, "UPrimalGlobals.FinishLoadGameMedia"); } + static UPrimalGlobals FinishedLoadingGameMedia() { return NativeCall(nullptr, "UPrimalGlobals.FinishedLoadingGameMedia"); } + static ADayCycleManager* GetDayCycleManager(UWorld* World) { return NativeCall(nullptr, "UPrimalGlobals.GetDayCycleManager", World); } + static ASOTFNotification* GetSOTFNotificationManager(UWorld* World) { return NativeCall(nullptr, "UPrimalGlobals.GetSOTFNotificationManager", World); } + void LoadNextTick(UWorld* ForWorld) { NativeCall(this, "UPrimalGlobals.LoadNextTick", ForWorld); } + void OnConfirmationDialogClosed(bool bAccept) { NativeCall(this, "UPrimalGlobals.OnConfirmationDialogClosed", bAccept); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalGlobals.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUPrimalGlobals() { NativeCall(nullptr, "UPrimalGlobals.StaticRegisterNativesUPrimalGlobals"); } +}; +// Level + +struct ULevelBase : UObject +{ + TArray GetActorsField() const { return GetNativeField>(this, "ULevelBase.Actors"); } +}; + +struct ULevel : ULevelBase +{ +}; + +struct AGameMode : AInfo +{ + FName& MatchStateField() { return *GetNativePointerField(this, "AGameMode.MatchState"); } + FString& OptionsStringField() { return *GetNativePointerField(this, "AGameMode.OptionsString"); } + TSubclassOf& DefaultPawnClassField() { return *GetNativePointerField*>(this, "AGameMode.DefaultPawnClass"); } + TSubclassOf& HUDClassField() { return *GetNativePointerField*>(this, "AGameMode.HUDClass"); } + int& NumSpectatorsField() { return *GetNativePointerField(this, "AGameMode.NumSpectators"); } + int& NumPlayersField() { return *GetNativePointerField(this, "AGameMode.NumPlayers"); } + int& NumBotsField() { return *GetNativePointerField(this, "AGameMode.NumBots"); } + float& MinRespawnDelayField() { return *GetNativePointerField(this, "AGameMode.MinRespawnDelay"); } + AGameSession* GameSessionField() { return *GetNativePointerField(this, "AGameMode.GameSession"); } + int& NumTravellingPlayersField() { return *GetNativePointerField(this, "AGameMode.NumTravellingPlayers"); } + int& CurrentIDField() { return *GetNativePointerField(this, "AGameMode.CurrentID"); } + FString& DefaultPlayerNameField() { return *GetNativePointerField(this, "AGameMode.DefaultPlayerName"); } + TArray PlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.PlayerStarts"); } + TSubclassOf& PlayerControllerClassField() { return *GetNativePointerField*>(this, "AGameMode.PlayerControllerClass"); } + TSubclassOf& PlayerStateClassField() { return *GetNativePointerField*>(this, "AGameMode.PlayerStateClass"); } + TSubclassOf& GameStateClassField() { return *GetNativePointerField*>(this, "AGameMode.GameStateClass"); } + AGameState* GameStateField() { return *GetNativePointerField(this, "AGameMode.GameState"); } + TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameMode.InactivePlayerArray"); } + float& InactivePlayerStateLifeSpanField() { return *GetNativePointerField(this, "AGameMode.InactivePlayerStateLifeSpan"); } + TArray UsedPlayerStartsField() { return *GetNativePointerField*>(this, "AGameMode.UsedPlayerStarts"); } + + // Bit fields + + BitFieldValue bUseSeamlessTravel() { return { this, "AGameMode.bUseSeamlessTravel" }; } + BitFieldValue bPauseable() { return { this, "AGameMode.bPauseable" }; } + BitFieldValue bStartPlayersAsSpectators() { return { this, "AGameMode.bStartPlayersAsSpectators" }; } + BitFieldValue bDelayedStart() { return { this, "AGameMode.bDelayedStart" }; } + + // Functions + + void AbortMatch() { NativeCall(this, "AGameMode.AbortMatch"); } + void AddInactivePlayer(APlayerState* PlayerState, APlayerController* PC) { NativeCall(this, "AGameMode.AddInactivePlayer", PlayerState, PC); } + void AddPlayerStart(APlayerStart* NewPlayerStart) { NativeCall(this, "AGameMode.AddPlayerStart", NewPlayerStart); } + bool AllowCheats(APlayerController* P) { return NativeCall(this, "AGameMode.AllowCheats", P); } + bool AllowPausing(APlayerController* PC) { return NativeCall(this, "AGameMode.AllowPausing", PC); } + void Broadcast(AActor* Sender, FString* Msg, FName Type) { NativeCall(this, "AGameMode.Broadcast", Sender, Msg, Type); } + void ChangeName(AController* Other, FString* S, bool bNameChange) { NativeCall(this, "AGameMode.ChangeName", Other, S, bNameChange); } + AActor* ChoosePlayerStart_Implementation(AController* Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart_Implementation", Player); } + void ClearPause() { NativeCall(this, "AGameMode.ClearPause"); } + void EndMatch() { NativeCall(this, "AGameMode.EndMatch"); } + bool FindInactivePlayer(APlayerController* PC) { return NativeCall(this, "AGameMode.FindInactivePlayer", PC); } + AActor* FindPlayerStart(AController* Player, FString* IncomingName) { return NativeCall(this, "AGameMode.FindPlayerStart", Player, IncomingName); } + void ForceClearUnpauseDelegates(AActor* PauseActor) { NativeCall(this, "AGameMode.ForceClearUnpauseDelegates", PauseActor); } + void GenericPlayerInitialization(AController* C) { NativeCall(this, "AGameMode.GenericPlayerInitialization", C); } + FString* GetDefaultGameClassPath(FString* result, FString* MapName, FString* Options, FString* Portal) { return NativeCall(this, "AGameMode.GetDefaultGameClassPath", result, MapName, Options, Portal); } + TSubclassOf* GetDefaultPawnClassForController_Implementation(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } + TSubclassOf* GetGameSessionClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "AGameMode.GetGameSessionClass", result); } + int GetIntOption(FString* Options, FString* ParseString, int CurrentValue) { return NativeCall(this, "AGameMode.GetIntOption", Options, ParseString, CurrentValue); } + void GetKeyValue(FString* Pair, FString* Key, FString* Value) { NativeCall(this, "AGameMode.GetKeyValue", Pair, Key, Value); } + FString* GetNetworkNumber(FString* result) { return NativeCall(this, "AGameMode.GetNetworkNumber", result); } + int GetNumPlayers() { return NativeCall(this, "AGameMode.GetNumPlayers"); } + void GetSeamlessTravelActorList(bool bToEntry, TArray* ActorList) { NativeCall*>(this, "AGameMode.GetSeamlessTravelActorList", bToEntry, ActorList); } + bool GrabOption(FString* Options, FString* Result) { return NativeCall(this, "AGameMode.GrabOption", Options, Result); } + void HandleMatchHasEnded() { NativeCall(this, "AGameMode.HandleMatchHasEnded"); } + void HandleMatchHasStarted() { NativeCall(this, "AGameMode.HandleMatchHasStarted"); } + void HandleMatchIsWaitingToStart() { NativeCall(this, "AGameMode.HandleMatchIsWaitingToStart"); } + void HandleSeamlessTravelPlayer(AController** C) { NativeCall(this, "AGameMode.HandleSeamlessTravelPlayer", C); } + bool HasMatchEnded() { return NativeCall(this, "AGameMode.HasMatchEnded"); } + bool HasMatchStarted() { return NativeCall(this, "AGameMode.HasMatchStarted"); } + bool HasOption(FString* Options, FString* InKey) { return NativeCall(this, "AGameMode.HasOption", Options, InKey); } + void InitGame(FString* MapName, FString* Options, FString* ErrorMessage) { NativeCall(this, "AGameMode.InitGame", MapName, Options, ErrorMessage); } + void InitGameState() { NativeCall(this, "AGameMode.InitGameState"); } + FString* InitNewPlayer(FString* result, APlayerController* NewPlayerController, TSharedPtr * UniqueId, FString* Options, FString* Portal) { return NativeCall*, FString*, FString*>(this, "AGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } + bool IsMatchInProgress() { return NativeCall(this, "AGameMode.IsMatchInProgress"); } + APlayerController* Login(UPlayer* NewPlayer, FString* Portal, FString* Options, TSharedPtr * UniqueId, FString* ErrorMessage) { return NativeCall*, FString*>(this, "AGameMode.Login", NewPlayer, Portal, Options, UniqueId, ErrorMessage); } + void Logout(AController* Exiting) { NativeCall(this, "AGameMode.Logout", Exiting); } + bool MustSpectate(APlayerController* NewPlayerController) { return NativeCall(this, "AGameMode.MustSpectate", NewPlayerController); } + void OverridePlayerState(APlayerController* PC, APlayerState* OldPlayerState) { NativeCall(this, "AGameMode.OverridePlayerState", PC, OldPlayerState); } + FString* ParseOption(FString* result, FString* Options, FString* InKey) { return NativeCall(this, "AGameMode.ParseOption", result, Options, InKey); } + bool PlayerCanRestart(APlayerController* Player) { return NativeCall(this, "AGameMode.PlayerCanRestart", Player); } + void PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.PostLogin", NewPlayer); } + void PostSeamlessTravel() { NativeCall(this, "AGameMode.PostSeamlessTravel"); } + void PreInitializeComponents() { NativeCall(this, "AGameMode.PreInitializeComponents"); } + void PreLogin(FString* Options, FString* Address, TSharedPtr * UniqueId, FString* authToken, FString* ErrorMessage, unsigned int* NewHomeServerId) { NativeCall*, FString*, FString*, unsigned int*>(this, "AGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage, NewHomeServerId); } + APlayerController* ProcessClientTravel(FString* FURL, FGuid NextMapGuid, bool bSeamless, bool bAbsolute) { return NativeCall(this, "AGameMode.ProcessClientTravel", FURL, NextMapGuid, bSeamless, bAbsolute); } + void ProcessServerTravel(FString* URL, bool bAbsolute) { NativeCall(this, "AGameMode.ProcessServerTravel", URL, bAbsolute); } + bool ReadyToStartMatch() { return NativeCall(this, "AGameMode.ReadyToStartMatch"); } + void RemoveConnectedPlayer(TSharedPtr * UniqueNetId) { NativeCall*>(this, "AGameMode.RemoveConnectedPlayer", UniqueNetId); } + void RemovePlayerControllerFromPlayerCount(APlayerController* PC) { NativeCall(this, "AGameMode.RemovePlayerControllerFromPlayerCount", PC); } + void RemovePlayerStart(APlayerStart* RemovedPlayerStart) { NativeCall(this, "AGameMode.RemovePlayerStart", RemovedPlayerStart); } + void Reset() { NativeCall(this, "AGameMode.Reset"); } + void ResetLevel() { NativeCall(this, "AGameMode.ResetLevel"); } + void RestartGame() { NativeCall(this, "AGameMode.RestartGame"); } + void RestartPlayer(AController* NewPlayer) { NativeCall(this, "AGameMode.RestartPlayer", NewPlayer); } + void ReturnToMainMenuHost() { NativeCall(this, "AGameMode.ReturnToMainMenuHost"); } + void SendPlayer(APlayerController* aPlayer, FString* FURL) { NativeCall(this, "AGameMode.SendPlayer", aPlayer, FURL); } + void SetBandwidthLimit(float AsyncIOBandwidthLimit) { NativeCall(this, "AGameMode.SetBandwidthLimit", AsyncIOBandwidthLimit); } + void SetMatchState(FName NewState) { NativeCall(this, "AGameMode.SetMatchState", NewState); } + void SetPlayerDefaults(APawn* PlayerPawn) { NativeCall(this, "AGameMode.SetPlayerDefaults", PlayerPawn); } + void SetSeamlessTravelViewTarget(APlayerController* PC) { NativeCall(this, "AGameMode.SetSeamlessTravelViewTarget", PC); } + bool ShouldSpawnAtStartSpot_Implementation(AController* Player) { return NativeCall(this, "AGameMode.ShouldSpawnAtStartSpot_Implementation", Player); } + APawn* SpawnDefaultPawnFor(AController* NewPlayer, AActor* StartSpot) { return NativeCall(this, "AGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } + APlayerController* SpawnPlayerController(FVector* SpawnLocation, FRotator* SpawnRotation) { return NativeCall(this, "AGameMode.SpawnPlayerController", SpawnLocation, SpawnRotation); } + void StartMatch() { NativeCall(this, "AGameMode.StartMatch"); } + void StartNewPlayer(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.StartNewPlayer", NewPlayer); } + void StartPlay() { NativeCall(this, "AGameMode.StartPlay"); } + void StartToLeaveMap() { NativeCall(this, "AGameMode.StartToLeaveMap"); } + static FString* StaticGetFullGameClassName(FString* result, FString* Str) { return NativeCall(nullptr, "AGameMode.StaticGetFullGameClassName", result, Str); } + void SwapPlayerControllers(APlayerController* OldPC, APlayerController* NewPC) { NativeCall(this, "AGameMode.SwapPlayerControllers", OldPC, NewPC); } + void Tick(float DeltaSeconds) { NativeCall(this, "AGameMode.Tick", DeltaSeconds); } + void UpdateGameplayMuteList(APlayerController* aPlayer) { NativeCall(this, "AGameMode.UpdateGameplayMuteList", aPlayer); } + AActor* ChoosePlayerStart(AController* Player) { return NativeCall(this, "AGameMode.ChoosePlayerStart", Player); } + TSubclassOf* GetDefaultPawnClassForController(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AGameMode.GetDefaultPawnClassForController", result, InController); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AGameMode.GetPrivateStaticClass", Package); } + void K2_PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AGameMode.K2_PostLogin", NewPlayer); } + bool ShouldSpawnAtStartSpot(AController* Player) { return NativeCall(this, "AGameMode.ShouldSpawnAtStartSpot", Player); } +}; + +struct AShooterGameMode : AGameMode +{ + struct SeamlessTravelLogEntry; + int& LastRepopulationIndexToCheckField() { return *GetNativePointerField(this, "AShooterGameMode.LastRepopulationIndexToCheck"); } + FString& AlarmNotificationKeyField() { return *GetNativePointerField(this, "AShooterGameMode.AlarmNotificationKey"); } + FString& AlarmNotificationURLField() { return *GetNativePointerField(this, "AShooterGameMode.AlarmNotificationURL"); } + FString& BanFileNameField() { return *GetNativePointerField(this, "AShooterGameMode.BanFileName"); } + TMap > & BannedMapField() { return *GetNativePointerField >*>(this, "AShooterGameMode.BannedMap"); } + long double& LastTimeCheckedForSaveBackupField() { return *GetNativePointerField(this, "AShooterGameMode.LastTimeCheckedForSaveBackup"); } + int& LastDayOfYearBackedUpField() { return *GetNativePointerField(this, "AShooterGameMode.LastDayOfYearBackedUp"); } + long double& TimeLastStartedDoingRemoteBackupField() { return *GetNativePointerField(this, "AShooterGameMode.TimeLastStartedDoingRemoteBackup"); } + ATreasureMapManager* TreasureMapManagerField() { return *GetNativePointerField(this, "AShooterGameMode.TreasureMapManager"); } + AShipPathManager* ShipPathManagerField() { return *GetNativePointerField(this, "AShooterGameMode.ShipPathManager"); } + unsigned int& MetricLoginRedirectsField() { return *GetNativePointerField(this, "AShooterGameMode.MetricLoginRedirects"); } + TArray& SeamlessTravelLogField() { return *GetNativePointerField*>(this, "AShooterGameMode.SeamlessTravelLog"); } + TMap > & PlayersCorrectCurrentServersField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PlayersCorrectCurrentServers"); } + bool& InitialLogProcessingDoneField() { return *GetNativePointerField(this, "AShooterGameMode.InitialLogProcessingDone"); } + //FAsyncTask * AsyncSharedLogCleanupField() { return *GetNativePointerField **>(this, "AShooterGameMode.AsyncSharedLogCleanup"); } + FEvent* PendingSharedLogEntriesReadyField() { return *GetNativePointerField(this, "AShooterGameMode.PendingSharedLogEntriesReady"); } + int& PendingFetchOperationsField() { return *GetNativePointerField(this, "AShooterGameMode.PendingFetchOperations"); } + TArray>& LogSentinelCallbacksActiveField() { return *GetNativePointerField>*>(this, "AShooterGameMode.LogSentinelCallbacksActive"); } + TArray>& LogSentinelCallbacksQueuedField() { return *GetNativePointerField>*>(this, "AShooterGameMode.LogSentinelCallbacksQueued"); } + FString& PendingSharedLogEntries_Debug_CurrentEntryInfoField() { return *GetNativePointerField(this, "AShooterGameMode.PendingSharedLogEntries_Debug_CurrentEntryInfo"); } + long double& PendingSharedLogEntries_StartedProcessingTimeField() { return *GetNativePointerField(this, "AShooterGameMode.PendingSharedLogEntries_StartedProcessingTime"); } + //TQueue,0>& PendingSharedLogEntriesField() { return *GetNativePointerField,0>*>(this, "AShooterGameMode.PendingSharedLogEntries"); } + TMap, 0>, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0>, 0> > & TravelDataCacheField() { return *GetNativePointerField, 0>, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0>, 0> >*>(this, "AShooterGameMode.TravelDataCache"); } + unsigned int& SharedLogReplayFailsField() { return *GetNativePointerField(this, "AShooterGameMode.SharedLogReplayFails"); } + URCONServer* RCONSocketField() { return *GetNativePointerField(this, "AShooterGameMode.RCONSocket"); } + FString& PlayersJoinNoCheckFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.PlayersJoinNoCheckFilename"); } + FString& PlayersExclusiveCheckFilenameField() { return *GetNativePointerField(this, "AShooterGameMode.PlayersExclusiveCheckFilename"); } + AOceanDinoManager* TheOceanDinoManagerField() { return *GetNativePointerField(this, "AShooterGameMode.TheOceanDinoManager"); } + AOceanVolume* TheOceanVolumeField() { return *GetNativePointerField(this, "AShooterGameMode.TheOceanVolume"); } + bool& bCheckedForOceanDinoManagerField() { return *GetNativePointerField(this, "AShooterGameMode.bCheckedForOceanDinoManager"); } + bool& bCheckedForOceanVolumeField() { return *GetNativePointerField(this, "AShooterGameMode.bCheckedForOceanVolume"); } + int& TerrainGeneratorVersionField() { return *GetNativePointerField(this, "AShooterGameMode.TerrainGeneratorVersion"); } + TArray& PlayersJoinNoCheckField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayersJoinNoCheck"); } + TArray& PlayersExclusiveListField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayersExclusiveList"); } + UDatabase_TribeDataManager* Database_TribeDataManagerRefField() { return *GetNativePointerField(this, "AShooterGameMode.Database_TribeDataManagerRef"); } + UDatabase_TerritoryMap* Database_TerritoryMapRefField() { return *GetNativePointerField(this, "AShooterGameMode.Database_TerritoryMapRef"); } + UPubSub_TribeNotifications* PubSub_TribeNotificationsRefField() { return *GetNativePointerField(this, "AShooterGameMode.PubSub_TribeNotificationsRef"); } + UPubSub_GeneralNotifications* PubSub_GeneralNotificationsRefField() { return *GetNativePointerField(this, "AShooterGameMode.PubSub_GeneralNotificationsRef"); } + UDatabase_SharedLog* Database_SharedLogRefField() { return *GetNativePointerField(this, "AShooterGameMode.Database_SharedLogRef"); } + unsigned __int64& LastSharedLogLineProcessedField() { return *GetNativePointerField(this, "AShooterGameMode.LastSharedLogLineProcessed"); } + UDatabase_TravelData* Database_TravelDataRefField() { return *GetNativePointerField(this, "AShooterGameMode.Database_TravelDataRef"); } + UDatabase_RemoteFileManager* Database_RemoteFileManagerRefField() { return *GetNativePointerField(this, "AShooterGameMode.Database_RemoteFileManagerRef"); } + UShooterCheatManager* GlobalCommandsCheatManagerField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalCommandsCheatManager"); } + void* GameBackupPipeReadField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeRead"); } + void* GameBackupPipeWriteField() { return *GetNativePointerField(this, "AShooterGameMode.GameBackupPipeWrite"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & PendingTribeNotificationsField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "AShooterGameMode.PendingTribeNotifications"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & PendingAllianceNotificationsField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "AShooterGameMode.PendingAllianceNotifications"); } + bool& bFirstTickedField() { return *GetNativePointerField(this, "AShooterGameMode.bFirstTicked"); } + TSet, FDefaultSetAllocator>& TribesIdsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.TribesIds"); } + TMap > & PlayersIdsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PlayersIds"); } + TMap > & SteamIdsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.SteamIds"); } + FString& LaunchOptionsField() { return *GetNativePointerField(this, "AShooterGameMode.LaunchOptions"); } + TMap > & TribesDataField() { return *GetNativePointerField >*>(this, "AShooterGameMode.TribesData"); } + FQueuedThreadPool* FullPoolField() { return *GetNativePointerField(this, "AShooterGameMode.FullPool"); } + FString& PGMapNameField() { return *GetNativePointerField(this, "AShooterGameMode.PGMapName"); } + FString& PGTerrainPropertiesStringField() { return *GetNativePointerField(this, "AShooterGameMode.PGTerrainPropertiesString"); } + TMap > & PGTerrainPropertiesField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PGTerrainProperties"); } + + bool& bAutoCreateNewPlayerDataField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoCreateNewPlayerData"); } + bool& bUseNewStructureFoundationSupportChecksField() { return *GetNativePointerField(this, "AShooterGameMode.bUseNewStructureFoundationSupportChecks"); } + bool& bDisableFogOfWarField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableFogOfWar"); } + float& MaximumCraftingSkillBonusField() { return *GetNativePointerField(this, "AShooterGameMode.MaximumCraftingSkillBonus"); } + + bool& bIsRestartingField() { return *GetNativePointerField(this, "AShooterGameMode.bIsRestarting"); } + bool& bProximityVoiceChatField() { return *GetNativePointerField(this, "AShooterGameMode.bProximityVoiceChat"); } + bool& bProximityChatField() { return *GetNativePointerField(this, "AShooterGameMode.bProximityChat"); } + bool& bAutoRestoreBackupsField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoRestoreBackups"); } + float& DifficultyValueField() { return *GetNativePointerField(this, "AShooterGameMode.DifficultyValue"); } + float& DifficultyValueMinField() { return *GetNativePointerField(this, "AShooterGameMode.DifficultyValueMin"); } + float& DifficultyValueMaxField() { return *GetNativePointerField(this, "AShooterGameMode.DifficultyValueMax"); } + float& ProximityRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.ProximityRadius"); } + float& ProximityRadiusUnconsiousScaleField() { return *GetNativePointerField(this, "AShooterGameMode.ProximityRadiusUnconsiousScale"); } + float& YellingRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.YellingRadius"); } + TSubclassOf& CheatClassField() { return *GetNativePointerField*>(this, "AShooterGameMode.CheatClass"); } + bool& bIsOfficialServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsOfficialServer"); } + bool& bIsCurrentlySavingWorldField() { return *GetNativePointerField(this, "AShooterGameMode.bIsCurrentlySavingWorld"); } + bool& bServerAllowArkDownloadField() { return *GetNativePointerField(this, "AShooterGameMode.bServerAllowArkDownload"); } + bool& bServerAllowThirdPersonPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.bServerAllowThirdPersonPlayer"); } + bool& bUseExclusiveListField() { return *GetNativePointerField(this, "AShooterGameMode.bUseExclusiveList"); } + bool& bAlwaysNotifyPlayerLeftField() { return *GetNativePointerField(this, "AShooterGameMode.bAlwaysNotifyPlayerLeft"); } + bool& bAlwaysNotifyPlayerJoinedField() { return *GetNativePointerField(this, "AShooterGameMode.bAlwaysNotifyPlayerJoined"); } + bool& bServerHardcoreField() { return *GetNativePointerField(this, "AShooterGameMode.bServerHardcore"); } + bool& bServerPVEField() { return *GetNativePointerField(this, "AShooterGameMode.bServerPVE"); } + bool& bServerCrosshairField() { return *GetNativePointerField(this, "AShooterGameMode.bServerCrosshair"); } + bool& bEnableHealthbarsField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableHealthbars"); } + bool& bServerForceNoHUDField() { return *GetNativePointerField(this, "AShooterGameMode.bServerForceNoHUD"); } + bool& bMapPlayerLocationField() { return *GetNativePointerField(this, "AShooterGameMode.bMapPlayerLocation"); } + bool& bAllowFlyerCarryPvEField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowFlyerCarryPvE"); } + bool& bDisableStructureDecayPvEField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableStructureDecayPvE"); } + bool& bDisableDinoDecayPvEField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableDinoDecayPvE"); } + bool& bEnablePvPGammaField() { return *GetNativePointerField(this, "AShooterGameMode.bEnablePvPGamma"); } + bool& bDisablePvEGammaField() { return *GetNativePointerField(this, "AShooterGameMode.bDisablePvEGamma"); } + bool& bClampResourceHarvestDamageField() { return *GetNativePointerField(this, "AShooterGameMode.bClampResourceHarvestDamage"); } + bool& bPreventStructurePaintingField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventStructurePainting"); } + bool& bAllowCaveBuildingPvEField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCaveBuildingPvE"); } + bool& bAdminLoggingField() { return *GetNativePointerField(this, "AShooterGameMode.bAdminLogging"); } + bool& bPvPStructureDecayField() { return *GetNativePointerField(this, "AShooterGameMode.bPvPStructureDecay"); } + bool& bAutoDestroyStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoDestroyStructures"); } + bool& bForceAllStructureLockingField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllStructureLocking"); } + bool& bAllowDeprecatedStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowDeprecatedStructures"); } + bool& bPreventTribeAlliancesField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventTribeAlliances"); } + bool& bAllowHitMarkersField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowHitMarkers"); } + bool& bOnlyAutoDestroyCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bOnlyAutoDestroyCoreStructures"); } + bool& bPreventMateBoostField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventMateBoost"); } + bool& bTribeLogDestroyedEnemyStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bTribeLogDestroyedEnemyStructures"); } + bool& bPvEAllowStructuresAtSupplyDropsField() { return *GetNativePointerField(this, "AShooterGameMode.bPvEAllowStructuresAtSupplyDrops"); } + bool& bServerGameLogIncludeTribeLogsField() { return *GetNativePointerField(this, "AShooterGameMode.bServerGameLogIncludeTribeLogs"); } + bool& bServerRCONOutputTribeLogsField() { return *GetNativePointerField(this, "AShooterGameMode.bServerRCONOutputTribeLogs"); } + bool& bUseOptimizedHarvestingHealthField() { return *GetNativePointerField(this, "AShooterGameMode.bUseOptimizedHarvestingHealth"); } + bool& bClampItemSpoilingTimesField() { return *GetNativePointerField(this, "AShooterGameMode.bClampItemSpoilingTimes"); } + bool& bClampItemStatsField() { return *GetNativePointerField(this, "AShooterGameMode.bClampItemStats"); } + bool& bAutoDestroyDecayedDinosField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoDestroyDecayedDinos"); } + bool& bAllowMultipleAttachedC4Field() { return *GetNativePointerField(this, "AShooterGameMode.bAllowMultipleAttachedC4"); } + bool& bAllowFlyingStaminaRecoveryField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowFlyingStaminaRecovery"); } + bool& bCrossARKAllowForeignDinoDownloadsField() { return *GetNativePointerField(this, "AShooterGameMode.bCrossARKAllowForeignDinoDownloads"); } + bool& bPreventSpawnAnimationsField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventSpawnAnimations"); } + bool& bIsLegacyServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsLegacyServer"); } + bool& bIdlePlayerKickAllowedField() { return *GetNativePointerField(this, "AShooterGameMode.bIdlePlayerKickAllowed"); } + bool& bAllowStructureDecayInLandClaimField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowStructureDecayInLandClaim"); } + bool& bOfficialAtlasServerPvPField() { return *GetNativePointerField(this, "AShooterGameMode.bOfficialAtlasServerPvP"); } + int& TheMaxStructuresInRangeField() { return *GetNativePointerField(this, "AShooterGameMode.TheMaxStructuresInRange"); } + int& MaxStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.MaxStructuresInSmallRadius"); } + int& RCONPortField() { return *GetNativePointerField(this, "AShooterGameMode.RCONPort"); } + float& DayCycleSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameMode.DayCycleSpeedScale"); } + float& NightTimeSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameMode.NightTimeSpeedScale"); } + float& DayTimeSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameMode.DayTimeSpeedScale"); } + float& PvEStructureDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PvEStructureDecayPeriodMultiplier"); } + float& StructurePreventResourceRadiusMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.StructurePreventResourceRadiusMultiplier"); } + float& PvEDinoDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PvEDinoDecayPeriodMultiplier"); } + float& ResourcesRespawnPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.ResourcesRespawnPeriodMultiplier"); } + float& MaxTamedDinosField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTamedDinos"); } + float& ListenServerTetherDistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.ListenServerTetherDistanceMultiplier"); } + float& PerPlatformMaxStructuresMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PerPlatformMaxStructuresMultiplier"); } + float& AutoDestroyOldStructuresMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.AutoDestroyOldStructuresMultiplier"); } + float& RCONServerGameLogBufferField() { return *GetNativePointerField(this, "AShooterGameMode.RCONServerGameLogBuffer"); } + float& OxygenSwimSpeedStatMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.OxygenSwimSpeedStatMultiplier"); } + float& ServerAutoForceRespawnWildDinosIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.ServerAutoForceRespawnWildDinosInterval"); } + float& RadiusStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameMode.RadiusStructuresInSmallRadius"); } + float& EnableAFKKickPlayerCountPercentField() { return *GetNativePointerField(this, "AShooterGameMode.EnableAFKKickPlayerCountPercent"); } + float& KickIdlePlayersPeriodField() { return *GetNativePointerField(this, "AShooterGameMode.KickIdlePlayersPeriod"); } + float& MateBoostEffectMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.MateBoostEffectMultiplier"); } + float& AutoSavePeriodMinutesField() { return *GetNativePointerField(this, "AShooterGameMode.AutoSavePeriodMinutes"); } + float& XPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.XPMultiplier"); } + float& TribeNameChangeCooldownField() { return *GetNativePointerField(this, "AShooterGameMode.TribeNameChangeCooldown"); } + bool& bAllowHideDamageSourceFromLogsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowHideDamageSourceFromLogs"); } + float& KillXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.KillXPMultiplier"); } + float& HarvestXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HarvestXPMultiplier"); } + float& CraftXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CraftXPMultiplier"); } + float& GenericXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.GenericXPMultiplier"); } + float& SpecialXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.SpecialXPMultiplier"); } + float& ShipKillXPMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.ShipKillXPMultiplier"); } + float& SafeSpawnPointMaxDistanceFromShoreField() { return *GetNativePointerField(this, "AShooterGameMode.SafeSpawnPointMaxDistanceFromShore"); } + long double& LastSeamlessSocketTickTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastSeamlessSocketTickTime"); } + long double& SeamlessSocketTickIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.SeamlessSocketTickInterval"); } + TWeakObjectPtr& SeamlessVolumeManagerField() { return *GetNativePointerField*>(this, "AShooterGameMode.SeamlessVolumeManager"); } + float& RandomAutoSaveSpreadField() { return *GetNativePointerField(this, "AShooterGameMode.RandomAutoSaveSpread"); } + FString& SteamAPIKeyField() { return *GetNativePointerField(this, "AShooterGameMode.SteamAPIKey"); } + FString& LastServerNotificationMessageField() { return *GetNativePointerField(this, "AShooterGameMode.LastServerNotificationMessage"); } + long double& LastServerNotificationRecievedAtField() { return *GetNativePointerField(this, "AShooterGameMode.LastServerNotificationRecievedAt"); } + long double& LastExecSaveTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastExecSaveTime"); } + long double& LastTimeSavedWorldField() { return *GetNativePointerField(this, "AShooterGameMode.LastTimeSavedWorld"); } + FString& SaveDirectoryNameField() { return *GetNativePointerField(this, "AShooterGameMode.SaveDirectoryName"); } + TArray PlayerDatasField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDatas"); } + int& NPCZoneManagerModField() { return *GetNativePointerField(this, "AShooterGameMode.NPCZoneManagerMod"); } + bool& bPopulatingSpawnZonesField() { return *GetNativePointerField(this, "AShooterGameMode.bPopulatingSpawnZones"); } + bool& bRestartedAPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.bRestartedAPlayer"); } + bool& bForceRespawnDinosField() { return *GetNativePointerField(this, "AShooterGameMode.bForceRespawnDinos"); } + bool& bFirstSaveWorldField() { return *GetNativePointerField(this, "AShooterGameMode.bFirstSaveWorld"); } + bool& bAllowRaidDinoFeedingField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowRaidDinoFeeding"); } + FDateTime& LastBackupTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastBackupTime"); } + FDateTime& LastSaveWorldTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastSaveWorldTime"); } + float& TamedDinoDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoDamageMultiplier"); } + float& DinoDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoDamageMultiplier"); } + float& PlayerDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerDamageMultiplier"); } + float& StructureDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.StructureDamageMultiplier"); } + float& PlayerResistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerResistanceMultiplier"); } + float& DinoResistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoResistanceMultiplier"); } + float& TamedDinoResistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoResistanceMultiplier"); } + float& StructureResistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.StructureResistanceMultiplier"); } + bool& bJoinInProgressGamesAsSpectatorField() { return *GetNativePointerField(this, "AShooterGameMode.bJoinInProgressGamesAsSpectator"); } + float& TamingSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamingSpeedMultiplier"); } + float& HarvestAmountMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HarvestAmountMultiplier"); } + float& HarvestHealthMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HarvestHealthMultiplier"); } + float& PlayerCharacterWaterDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerCharacterWaterDrainMultiplier"); } + float& PlayerCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerCharacterFoodDrainMultiplier"); } + float& DinoCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCharacterFoodDrainMultiplier"); } + float& RaidDinoCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.RaidDinoCharacterFoodDrainMultiplier"); } + float& PlayerCharacterStaminaDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerCharacterStaminaDrainMultiplier"); } + float& DinoCharacterStaminaDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCharacterStaminaDrainMultiplier"); } + float& PlayerCharacterHealthRecoveryMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerCharacterHealthRecoveryMultiplier"); } + float& DinoCharacterHealthRecoveryMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCharacterHealthRecoveryMultiplier"); } + float& CarnivoreNaturalTargetingRangeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CarnivoreNaturalTargetingRangeMultiplier"); } + float& CarnivorePlayerAggroMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CarnivorePlayerAggroMultiplier"); } + float& HerbivoreNaturalTargetingRangeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HerbivoreNaturalTargetingRangeMultiplier"); } + float& HerbivorePlayerAggroMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HerbivorePlayerAggroMultiplier"); } + bool& AIForceTargetPlayersField() { return *GetNativePointerField(this, "AShooterGameMode.AIForceTargetPlayers"); } + bool& AIForceOverlapCheckField() { return *GetNativePointerField(this, "AShooterGameMode.AIForceOverlapCheck"); } + float& DinoCountMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCountMultiplier"); } + bool& bDisableSaveLoadField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableSaveLoad"); } + bool& bDisableXPField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableXP"); } + bool& bDisableDynamicMusicField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableDynamicMusic"); } + TArray& PlayerDeathReasonsField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDeathReasons"); } + TArray& LevelExperienceRampOverridesField() { return *GetNativePointerField*>(this, "AShooterGameMode.LevelExperienceRampOverrides"); } + TArray& OverridePlayerLevelEngramPointsField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverridePlayerLevelEngramPoints"); } + TArray& ExcludeItemIndicesField() { return *GetNativePointerField*>(this, "AShooterGameMode.ExcludeItemIndices"); } + TArray& OverrideEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideEngramEntries"); } + TArray& OverrideNamedEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideNamedEngramEntries"); } + TArray& EngramEntryAutoUnlocksField() { return *GetNativePointerField*>(this, "AShooterGameMode.EngramEntryAutoUnlocks"); } + TArray& PreventDinoTameClassNamesField() { return *GetNativePointerField*>(this, "AShooterGameMode.PreventDinoTameClassNames"); } + TArray& DinoSpawnWeightMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoSpawnWeightMultipliers"); } + TArray& DinoClassResistanceMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoClassResistanceMultipliers"); } + TArray& TamedDinoClassResistanceMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.TamedDinoClassResistanceMultipliers"); } + TArray& DinoClassDamageMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.DinoClassDamageMultipliers"); } + TArray& TamedDinoClassDamageMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.TamedDinoClassDamageMultipliers"); } + TArray& HarvestResourceItemAmountClassMultipliersField() { return *GetNativePointerField*>(this, "AShooterGameMode.HarvestResourceItemAmountClassMultipliers"); } + TArray& NPCReplacementsField() { return *GetNativePointerField*>(this, "AShooterGameMode.NPCReplacements"); } + float& PvPZoneStructureDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PvPZoneStructureDamageMultiplier"); } + bool& bOnlyAllowSpecifiedEngramsField() { return *GetNativePointerField(this, "AShooterGameMode.bOnlyAllowSpecifiedEngrams"); } + int& OverrideMaxExperiencePointsPlayerField() { return *GetNativePointerField(this, "AShooterGameMode.OverrideMaxExperiencePointsPlayer"); } + int& OverrideMaxExperiencePointsDinoField() { return *GetNativePointerField(this, "AShooterGameMode.OverrideMaxExperiencePointsDino"); } + float& GlobalSpoilingTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalSpoilingTimeMultiplier"); } + float& GlobalItemDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalItemDecompositionTimeMultiplier"); } + float& GlobalCorpseDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalCorpseDecompositionTimeMultiplier"); } + float& MaxFallSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.MaxFallSpeedMultiplier"); } + bool& bAutoPvETimerField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoPvETimer"); } + bool& bAutoPvEUseSystemTimeField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoPvEUseSystemTime"); } + bool& bUsingStructureDestructionTagField() { return *GetNativePointerField(this, "AShooterGameMode.bUsingStructureDestructionTag"); } + FName& StructureDestructionTagField() { return *GetNativePointerField(this, "AShooterGameMode.StructureDestructionTag"); } + float& AutoPvEStartTimeSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.AutoPvEStartTimeSeconds"); } + float& AutoPvEStopTimeSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.AutoPvEStopTimeSeconds"); } + int& TributeItemExpirationSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.TributeItemExpirationSeconds"); } + int& TributeDinoExpirationSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.TributeDinoExpirationSeconds"); } + int& TributeCharacterExpirationSecondsField() { return *GetNativePointerField(this, "AShooterGameMode.TributeCharacterExpirationSeconds"); } + bool& PreventDownloadSurvivorsField() { return *GetNativePointerField(this, "AShooterGameMode.PreventDownloadSurvivors"); } + bool& PreventDownloadItemsField() { return *GetNativePointerField(this, "AShooterGameMode.PreventDownloadItems"); } + bool& PreventDownloadDinosField() { return *GetNativePointerField(this, "AShooterGameMode.PreventDownloadDinos"); } + bool& bPreventUploadSurvivorsField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventUploadSurvivors"); } + bool& bPreventUploadItemsField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventUploadItems"); } + bool& bPreventUploadDinosField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventUploadDinos"); } + int& MaxTributeItemsField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTributeItems"); } + int& MaxTributeDinosField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTributeDinos"); } + int& MaxTributeCharactersField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTributeCharacters"); } + bool& bIncreasePvPRespawnIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.bIncreasePvPRespawnInterval"); } + float& IncreasePvPRespawnIntervalCheckPeriodField() { return *GetNativePointerField(this, "AShooterGameMode.IncreasePvPRespawnIntervalCheckPeriod"); } + float& IncreasePvPRespawnIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.IncreasePvPRespawnIntervalMultiplier"); } + float& IncreasePvPRespawnIntervalBaseAmountField() { return *GetNativePointerField(this, "AShooterGameMode.IncreasePvPRespawnIntervalBaseAmount"); } + float& ResourceNoReplenishRadiusStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.ResourceNoReplenishRadiusStructures"); } + float& ResourceNoReplenishRadiusPlayersField() { return *GetNativePointerField(this, "AShooterGameMode.ResourceNoReplenishRadiusPlayers"); } + float& CropGrowthSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CropGrowthSpeedMultiplier"); } + float& LayEggIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.LayEggIntervalMultiplier"); } + float& PoopIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PoopIntervalMultiplier"); } + float& CropDecaySpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CropDecaySpeedMultiplier"); } + bool& bAllowChatFromDeadNonAdminsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowChatFromDeadNonAdmins"); } + bool& bAllowDisablingSpectatorField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowDisablingSpectator"); } + bool& bPvEDisableFriendlyFireField() { return *GetNativePointerField(this, "AShooterGameMode.bPvEDisableFriendlyFire"); } + bool& bFlyerPlatformAllowUnalignedDinoBasingField() { return *GetNativePointerField(this, "AShooterGameMode.bFlyerPlatformAllowUnalignedDinoBasing"); } + int& MaxPerTribePlatformSaddleStructureLimitField() { return *GetNativePointerField(this, "AShooterGameMode.MaxPerTribePlatformSaddleStructureLimit"); } + int& MaxPlatformSaddleStructureLimitField() { return *GetNativePointerField(this, "AShooterGameMode.MaxPlatformSaddleStructureLimit"); } + int& MaxDinoBaseLevelField() { return *GetNativePointerField(this, "AShooterGameMode.MaxDinoBaseLevel"); } + int& MaxNumberOfPlayersInTribeField() { return *GetNativePointerField(this, "AShooterGameMode.MaxNumberOfPlayersInTribe"); } + float& MatingIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.MatingIntervalMultiplier"); } + float& EggHatchSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.EggHatchSpeedMultiplier"); } + float& BabyMatureSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyMatureSpeedMultiplier"); } + float& BabyFoodConsumptionSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyFoodConsumptionSpeedMultiplier"); } + int& CurrentPlatformSaddleStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentPlatformSaddleStructures"); } + FieldArray PerLevelStatsMultiplier_PlayerField() { return { this, "AShooterGameMode.PerLevelStatsMultiplier_Player" }; } + FieldArray PerLevelStatsMultiplier_DinoTamedField() { return { this, "AShooterGameMode.PerLevelStatsMultiplier_DinoTamed" }; } + FieldArray PerLevelStatsMultiplier_DinoTamed_AddField() { return { this, "AShooterGameMode.PerLevelStatsMultiplier_DinoTamed_Add" }; } + FieldArray PerLevelStatsMultiplier_DinoTamed_AffinityField() { return { this, "AShooterGameMode.PerLevelStatsMultiplier_DinoTamed_Affinity" }; } + FieldArray PerLevelStatsMultiplier_DinoWildField() { return { this, "AShooterGameMode.PerLevelStatsMultiplier_DinoWild" }; } + FieldArray ItemStatClampsField() { return { this, "AShooterGameMode.ItemStatClamps" }; } + bool& bCustomGameModeAllowSpectatorJoinAfterMatchStartField() { return *GetNativePointerField(this, "AShooterGameMode.bCustomGameModeAllowSpectatorJoinAfterMatchStart"); } + bool& bGameplayLogEnabledField() { return *GetNativePointerField(this, "AShooterGameMode.bGameplayLogEnabled"); } + bool& bServerGameLogEnabledField() { return *GetNativePointerField(this, "AShooterGameMode.bServerGameLogEnabled"); } + TSubclassOf& BonusSupplyCrateItemClassField() { return *GetNativePointerField*>(this, "AShooterGameMode.BonusSupplyCrateItemClass"); } + float& BonusSupplyCrateItemGiveIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.BonusSupplyCrateItemGiveInterval"); } + float& StructureDamageRepairCooldownField() { return *GetNativePointerField(this, "AShooterGameMode.StructureDamageRepairCooldown"); } + float& CustomRecipeEffectivenessMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CustomRecipeEffectivenessMultiplier"); } + float& CustomRecipeSkillMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CustomRecipeSkillMultiplier"); } + FString& BonusSupplyCrateItemStringField() { return *GetNativePointerField(this, "AShooterGameMode.BonusSupplyCrateItemString"); } + bool& bPvEAllowTribeWarField() { return *GetNativePointerField(this, "AShooterGameMode.bPvEAllowTribeWar"); } + bool& bPvEAllowTribeWarCancelField() { return *GetNativePointerField(this, "AShooterGameMode.bPvEAllowTribeWarCancel"); } + bool& bAllowCustomRecipesField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCustomRecipes"); } + bool& bPassiveDefensesDamageRiderlessDinosField() { return *GetNativePointerField(this, "AShooterGameMode.bPassiveDefensesDamageRiderlessDinos"); } + long double& LastBonusSupplyCrateItemGiveTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastBonusSupplyCrateItemGiveTime"); } + bool& bEnableDeathTeamSpectatorField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableDeathTeamSpectator"); } + bool& bTribeStoreCharacterConfigurationField() { return *GetNativePointerField(this, "AShooterGameMode.bTribeStoreCharacterConfiguration"); } + TMap, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> > & PvEActiveTribeWarsField() { return *GetNativePointerField, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >*>(this, "AShooterGameMode.PvEActiveTribeWars"); } + TMap, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> > & TribeAlliesField() { return *GetNativePointerField, FDefaultSetAllocator>, FDefaultSetAllocator, TDefaultMapKeyFuncs, FDefaultSetAllocator>, 0> >*>(this, "AShooterGameMode.TribeAllies"); } + TMap > IDtoPlayerDatasField() { return *GetNativePointerField >*>(this, "AShooterGameMode.IDtoPlayerDatas"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & PlayersEntitiesField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "AShooterGameMode.PlayersEntities"); } + TMap > & PendingTribeLoadsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PendingTribeLoads"); } + TSet, FDefaultSetAllocator>& PendingAllianceLoadsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.PendingAllianceLoads"); } + TSet, FDefaultSetAllocator>& PendingAllianceDeletesField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.PendingAllianceDeletes"); } + TMap > & AlliancesField() { return *GetNativePointerField >*>(this, "AShooterGameMode.Alliances"); } + int& MaxTribeLogsField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTribeLogs"); } + TArray& CachedGameLogField() { return *GetNativePointerField*>(this, "AShooterGameMode.CachedGameLog"); } + int& PersonalTamedDinosSaddleStructureCostField() { return *GetNativePointerField(this, "AShooterGameMode.PersonalTamedDinosSaddleStructureCost"); } + bool& bDisableFriendlyFireField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableFriendlyFire"); } + bool& bAllowInactiveTribesField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowInactiveTribes"); } + bool& bForceMapPlayerLocationField() { return *GetNativePointerField(this, "AShooterGameMode.bForceMapPlayerLocation"); } + float& DinoHarvestingDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoHarvestingDamageMultiplier"); } + float& PlayerHarvestingDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerHarvestingDamageMultiplier"); } + float& DinoTurretDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoTurretDamageMultiplier"); } + bool& bDisableLootCratesField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableLootCrates"); } + float& ExtinctionEventTimeIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.ExtinctionEventTimeInterval"); } + bool& bEnableExtraStructurePreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameMode.bEnableExtraStructurePreventionVolumes"); } + unsigned int& NextExtinctionEventUTCField() { return *GetNativePointerField(this, "AShooterGameMode.NextExtinctionEventUTC"); } + bool& bForceAllowCaveFlyersField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllowCaveFlyers"); } + bool& bDoExtinctionEventField() { return *GetNativePointerField(this, "AShooterGameMode.bDoExtinctionEvent"); } + bool& bPreventOfflinePvPField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventOfflinePvP"); } + bool& bPvPDinoDecayField() { return *GetNativePointerField(this, "AShooterGameMode.bPvPDinoDecay"); } + bool& bOverideStructurePlatformPreventionField() { return *GetNativePointerField(this, "AShooterGameMode.bOverideStructurePlatformPrevention"); } + bool& bAllowAnyoneBabyImprintCuddleField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowAnyoneBabyImprintCuddle"); } + bool& bDisableImprintDinoBuffField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableImprintDinoBuff"); } + bool& bShowFloatingDamageTextField() { return *GetNativePointerField(this, "AShooterGameMode.bShowFloatingDamageText"); } + bool& bOnlyDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bOnlyDecayUnsnappedCoreStructures"); } + bool& bFastDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bFastDecayUnsnappedCoreStructures"); } + bool& bDestroyUnconnectedWaterPipesField() { return *GetNativePointerField(this, "AShooterGameMode.bDestroyUnconnectedWaterPipes"); } + bool& bAllowCrateSpawnsOnTopOfStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowCrateSpawnsOnTopOfStructures"); } + bool& bNotifyAdminCommandsInChatField() { return *GetNativePointerField(this, "AShooterGameMode.bNotifyAdminCommandsInChat"); } + bool& bRandomSupplyCratePointsField() { return *GetNativePointerField(this, "AShooterGameMode.bRandomSupplyCratePoints"); } + float& PreventOfflinePvPIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.PreventOfflinePvPInterval"); } + FString& CurrentMerticsURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentMerticsURL"); } + FString& CurrentMetricEventsURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentMetricEventsURL"); } + FString& CurrentMetricCharacterLocationsURLField() { return *GetNativePointerField(this, "AShooterGameMode.CurrentMetricCharacterLocationsURL"); } + TArray& OverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameMode.OverrideItemCraftingCosts"); } + TArray& ConfigOverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideItemCraftingCosts"); } + TArray& ConfigOverrideSupplyCrateItemsField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideSupplyCrateItems"); } + TArray& ConfigOverrideNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigOverrideNPCSpawnEntriesContainer"); } + TArray& ConfigAddNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigAddNPCSpawnEntriesContainer"); } + TArray& ConfigSubtractNPCSpawnEntriesContainerField() { return *GetNativePointerField*>(this, "AShooterGameMode.ConfigSubtractNPCSpawnEntriesContainer"); } + float& BabyImprintingStatScaleMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyImprintingStatScaleMultiplier"); } + float& BabyCuddleIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyCuddleIntervalMultiplier"); } + float& BabyCuddleGracePeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyCuddleGracePeriodMultiplier"); } + float& BabyCuddleLoseImprintQualitySpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BabyCuddleLoseImprintQualitySpeedMultiplier"); } + float& HairGrowthSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.HairGrowthSpeedMultiplier"); } + bool& bPreventDiseasesField() { return *GetNativePointerField(this, "AShooterGameMode.bPreventDiseases"); } + bool& bNonPermanentDiseasesField() { return *GetNativePointerField(this, "AShooterGameMode.bNonPermanentDiseases"); } + int& SaveForceRespawnDinosVersionField() { return *GetNativePointerField(this, "AShooterGameMode.SaveForceRespawnDinosVersion"); } + unsigned __int64& ServerIDField() { return *GetNativePointerField(this, "AShooterGameMode.ServerID"); } + int& LoadForceRespawnDinosVersionField() { return *GetNativePointerField(this, "AShooterGameMode.LoadForceRespawnDinosVersion"); } + bool& bIsLoadedServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsLoadedServer"); } + TMap > & TributePlayerTribeInfosField() { return *GetNativePointerField >*>(this, "AShooterGameMode.TributePlayerTribeInfos"); } + TArray& SupportedSpawnRegionsField() { return *GetNativePointerField*>(this, "AShooterGameMode.SupportedSpawnRegions"); } + bool& bServerUseDinoListField() { return *GetNativePointerField(this, "AShooterGameMode.bServerUseDinoList"); } + float& MaxAllowedRespawnIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.MaxAllowedRespawnInterval"); } + float& TribeJoinIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.TribeJoinInterval"); } + bool& bUseDinoLevelUpAnimationsField() { return *GetNativePointerField(this, "AShooterGameMode.bUseDinoLevelUpAnimations"); } + bool& bDisableDinoTamingField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableDinoTaming"); } + bool& bDisableDinoRidingField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableDinoRiding"); } + float& MinimumDinoReuploadIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.MinimumDinoReuploadInterval"); } + int& SaveGameCustomVersionField() { return *GetNativePointerField(this, "AShooterGameMode.SaveGameCustomVersion"); } + float& OverrideOfficialDifficultyField() { return *GetNativePointerField(this, "AShooterGameMode.OverrideOfficialDifficulty"); } + FieldArray PlayerBaseStatMultipliersField() { return { this, "AShooterGameMode.PlayerBaseStatMultipliers" }; } + int& NPCActiveCountTamedField() { return *GetNativePointerField(this, "AShooterGameMode.NPCActiveCountTamed"); } + int& NPCActiveCountField() { return *GetNativePointerField(this, "AShooterGameMode.NPCActiveCount"); } + int& NPCCountField() { return *GetNativePointerField(this, "AShooterGameMode.NPCCount"); } + float& MatingSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.MatingSpeedMultiplier"); } + float& FastDecayIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.FastDecayInterval"); } + bool& bUseSingleplayerSettingsField() { return *GetNativePointerField(this, "AShooterGameMode.bUseSingleplayerSettings"); } + bool& bUseCorpseLocatorField() { return *GetNativePointerField(this, "AShooterGameMode.bUseCorpseLocator"); } + bool& bDisableStructurePlacementCollisionField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableStructurePlacementCollision"); } + bool& bForceUseInventoryAppendsField() { return *GetNativePointerField(this, "AShooterGameMode.bForceUseInventoryAppends"); } + float& SupplyCrateLootQualityMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.SupplyCrateLootQualityMultiplier"); } + float& FishingLootQualityMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.FishingLootQualityMultiplier"); } + float& CraftingSkillBonusMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.CraftingSkillBonusMultiplier"); } + bool& bAllowPlatformSaddleMultiFloorsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowPlatformSaddleMultiFloors"); } + bool& bAllowUnlimitedRespecsField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowUnlimitedRespecs"); } + float& FuelConsumptionIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.FuelConsumptionIntervalMultiplier"); } + int& DestroyTamesOverLevelClampField() { return *GetNativePointerField(this, "AShooterGameMode.DestroyTamesOverLevelClamp"); } + int& MaxAlliancesPerTribeField() { return *GetNativePointerField(this, "AShooterGameMode.MaxAlliancesPerTribe"); } + int& MaxTribesPerAllianceField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTribesPerAlliance"); } + bool& bDisableDinoDecayClaimingField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableDinoDecayClaiming"); } + bool& bUseTameLimitForStructuresOnlyField() { return *GetNativePointerField(this, "AShooterGameMode.bUseTameLimitForStructuresOnly"); } + bool& bLimitTurretsInRangeField() { return *GetNativePointerField(this, "AShooterGameMode.bLimitTurretsInRange"); } + float& LimitTurretsRangeField() { return *GetNativePointerField(this, "AShooterGameMode.LimitTurretsRange"); } + int& LimitTurretsNumField() { return *GetNativePointerField(this, "AShooterGameMode.LimitTurretsNum"); } + bool& bHardLimitTurretsInRangeField() { return *GetNativePointerField(this, "AShooterGameMode.bHardLimitTurretsInRange"); } + bool& bAutoUnlockAllEngramsField() { return *GetNativePointerField(this, "AShooterGameMode.bAutoUnlockAllEngrams"); } + long double& ServerLastForceRespawnWildDinosTimeField() { return *GetNativePointerField(this, "AShooterGameMode.ServerLastForceRespawnWildDinosTime"); } + FString& UseStructurePreventionVolumeTagStringField() { return *GetNativePointerField(this, "AShooterGameMode.UseStructurePreventionVolumeTagString"); } + float& BaseTemperatureMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.BaseTemperatureMultiplier"); } + bool& bForceAllowAllStructuresField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllowAllStructures"); } + bool& bForceAllowAscensionItemDownloadsField() { return *GetNativePointerField(this, "AShooterGameMode.bForceAllowAscensionItemDownloads"); } + bool& bShowCreativeModeField() { return *GetNativePointerField(this, "AShooterGameMode.bShowCreativeMode"); } + float& GlobalPoweredBatteryDurabilityDecreasePerSecondField() { return *GetNativePointerField(this, "AShooterGameMode.GlobalPoweredBatteryDurabilityDecreasePerSecond"); } + float& SingleplayerSettingsCorpseLifespanMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.SingleplayerSettingsCorpseLifespanMultiplier"); } + bool& bUseStaticCharacterAgeField() { return *GetNativePointerField(this, "AShooterGameMode.bUseStaticCharacterAge"); } + float& UseCorpseLifeSpanMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.UseCorpseLifeSpanMultiplier"); } + bool& bUseBPPreSpawnedDinoField() { return *GetNativePointerField(this, "AShooterGameMode.bUseBPPreSpawnedDino"); } + float& PreventOfflinePvPConnectionInvincibleIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.PreventOfflinePvPConnectionInvincibleInterval"); } + float& TamedDinoCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoCharacterFoodDrainMultiplier"); } + float& WildDinoCharacterFoodDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.WildDinoCharacterFoodDrainMultiplier"); } + float& WildDinoTorporDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.WildDinoTorporDrainMultiplier"); } + float& PassiveTameIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.PassiveTameIntervalMultiplier"); } + float& TamedDinoTorporDrainMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.TamedDinoTorporDrainMultiplier"); } + float& DinoCreatureDamageMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCreatureDamageMultiplier"); } + float& DinoCreatureResistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.DinoCreatureResistanceMultiplier"); } + FieldArray MaxTameUnitsField() { return { this, "AShooterGameMode.MaxTameUnits" }; } + int& MaxGlobalShipsField() { return *GetNativePointerField(this, "AShooterGameMode.MaxGlobalShips"); } + bool& bDontUseClaimFlagsField() { return *GetNativePointerField(this, "AShooterGameMode.bDontUseClaimFlags"); } + float& NoClaimFlagDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameMode.NoClaimFlagDecayPeriodMultiplier"); } + bool& bDisableWeatherFogField() { return *GetNativePointerField(this, "AShooterGameMode.bDisableWeatherFog"); } + int& PlayerDefaultNoDiscoveriesMaxLevelUpsField() { return *GetNativePointerField(this, "AShooterGameMode.PlayerDefaultNoDiscoveriesMaxLevelUps"); } + bool& bClampHomeServerXPField() { return *GetNativePointerField(this, "AShooterGameMode.bClampHomeServerXP"); } + int& ClampHomeServerXPLevelField() { return *GetNativePointerField(this, "AShooterGameMode.ClampHomeServerXPLevel"); } + TMap > & TeamTameUnitCountsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.TeamTameUnitCounts"); } + FTameUnitCounts& EmptyTameUnitsField() { return *GetNativePointerField(this, "AShooterGameMode.EmptyTameUnits"); } + FName& UseStructurePreventionVolumeTagField() { return *GetNativePointerField(this, "AShooterGameMode.UseStructurePreventionVolumeTag"); } + bool& bHasCovertedToStoreField() { return *GetNativePointerField(this, "AShooterGameMode.bHasCovertedToStore"); } + bool& bAllowStoredDatasField() { return *GetNativePointerField(this, "AShooterGameMode.bAllowStoredDatas"); } + //FDataStore& TribeDataStoreField() { return *GetNativePointerField*>(this, "AShooterGameMode.TribeDataStore"); } + //FDataStore& PlayerDataStoreField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDataStore"); } + //FSocket * SeamlessServerSocketField() { return *GetNativePointerField(this, "AShooterGameMode.SeamlessServerSocket"); } + TArray& SeamlessTravelPlayersDataField() { return *GetNativePointerField*>(this, "AShooterGameMode.SeamlessTravelPlayersData"); } + //TSet,FDefaultSetAllocator>& CurrentPendingTribeLoadsField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "AShooterGameMode.CurrentPendingTribeLoads"); } + TArray& PlayerDataIDsWaitingForTribeDataField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerDataIDsWaitingForTribeData"); } + //TMap>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >& TribesEntitiesPendingAddField() { return *GetNativePointerField>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >*>(this, "AShooterGameMode.TribesEntitiesPendingAdd"); } + //TMap>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >& AssignedTribesEntitiesFromPlayerField() { return *GetNativePointerField>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >*>(this, "AShooterGameMode.AssignedTribesEntitiesFromPlayer"); } + //TSet,FDefaultSetAllocator>& TribesToLoadField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "AShooterGameMode.TribesToLoad"); } + //TMap>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >& TribeCallbacksPendingLoadField() { return *GetNativePointerField>,FDefaultSetAllocator,TDefaultMapKeyFuncs>,0> >*>(this, "AShooterGameMode.TribeCallbacksPendingLoad"); } + //TSet,FDefaultSetAllocator>& LoadPlayerEntitiesOperationsField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "AShooterGameMode.LoadPlayerEntitiesOperations"); } + long double& LastUpdatedTribeOnlinePresenceField() { return *GetNativePointerField(this, "AShooterGameMode.LastUpdatedTribeOnlinePresence"); } + bool& bHasLoadedSaveGameField() { return *GetNativePointerField(this, "AShooterGameMode.bHasLoadedSaveGame"); } + long double& StartedBeingOverSubscribedAtField() { return *GetNativePointerField(this, "AShooterGameMode.StartedBeingOverSubscribedAt"); } + FTickCallbacks& TickCallbacksField() { return *GetNativePointerField(this, "AShooterGameMode.TickCallbacks"); } + TMap > & GridServersInfosField() { return *GetNativePointerField >*>(this, "AShooterGameMode.GridServersInfos"); } + USeamlessDataServer* SeamlessDataServerField() { return *GetNativePointerField(this, "AShooterGameMode.SeamlessDataServer"); } + bool& bIsHomeServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsHomeServer"); } + bool& bNoDinoTamingField() { return *GetNativePointerField(this, "AShooterGameMode.bNoDinoTaming"); } + bool& bNoAnchoringField() { return *GetNativePointerField(this, "AShooterGameMode.bNoAnchoring"); } + bool& bIsLawlessHomeServerField() { return *GetNativePointerField(this, "AShooterGameMode.bIsLawlessHomeServer"); } + bool& bHomeServerDontReplicateLoggedOutPlayersField() { return *GetNativePointerField(this, "AShooterGameMode.bHomeServerDontReplicateLoggedOutPlayers"); } + float& ShipDecayRateField() { return *GetNativePointerField(this, "AShooterGameMode.ShipDecayRate"); } + TArray& PlayerFlagDatasField() { return *GetNativePointerField*>(this, "AShooterGameMode.PlayerFlagDatas"); } + TMap > & PendingTribesClaimFlagNotifsField() { return *GetNativePointerField >*>(this, "AShooterGameMode.PendingTribesClaimFlagNotifs"); } + TArray& TribesTravelCountField() { return *GetNativePointerField*>(this, "AShooterGameMode.TribesTravelCount"); } + TMap > & MapServerAtMaxField() { return *GetNativePointerField >*>(this, "AShooterGameMode.MapServerAtMax"); } + int& NextTribeTravelResetTimeUTCField() { return *GetNativePointerField(this, "AShooterGameMode.NextTribeTravelResetTimeUTC"); } + float& LastTribeTravelResetTimeField() { return *GetNativePointerField(this, "AShooterGameMode.LastTribeTravelResetTime"); } + float& LastTribeTravelFailsafeCheckField() { return *GetNativePointerField(this, "AShooterGameMode.LastTribeTravelFailsafeCheck"); } + float& MaxTribeTravelResetIntervalField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTribeTravelResetInterval"); } + unsigned int& MaxTribeTravelCountField() { return *GetNativePointerField(this, "AShooterGameMode.MaxTribeTravelCount"); } + FRegionGeneralOverrides& RegionOverridesField() { return *GetNativePointerField(this, "AShooterGameMode.RegionOverrides"); } + TSet, FDefaultSetAllocator>& SeenPlayerAndTribeIdsField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "AShooterGameMode.SeenPlayerAndTribeIds"); } + bool& bOutGoingTransfersEnabledField() { return *GetNativePointerField(this, "AShooterGameMode.bOutGoingTransfersEnabled"); } + TArray& HiddenHarvestingComponentsField() { return *GetNativePointerField*>(this, "AShooterGameMode.HiddenHarvestingComponents"); } + + + + // Functions + + bool AllowAddXP(UPrimalCharacterStatusComponent* forComp) { return NativeCall(this, "AShooterGameMode.AllowAddXP", forComp); } + void AddPendingTribeToLoad(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.AddPendingTribeToLoad", TribeID); } + static AShooterGameMode SharedLogFetchPending() { return NativeCall(nullptr, "AShooterGameMode.SharedLogFetchPending"); } + //FSetElementId * TickOverSubscription(FSetElementId * result, TPairInitializer * Args, bool * bIsAlreadyInSetPtr) { return NativeCall *, bool *>(this, "AShooterGameMode.TickOverSubscription", result, Args, bIsAlreadyInSetPtr); } + void TickOverSubscription() { NativeCall(this, "AShooterGameMode.TickOverSubscription"); } + void AddAndSaveTribeEntity(unsigned int TribeID, TArray* Entities, FTribeEntity* TribeEntity) { NativeCall*, FTribeEntity*>(this, "AShooterGameMode.AddAndSaveTribeEntity", TribeID, Entities, TribeEntity); } + void AddClaimFlag(APrimalStructureClaimFlag* Flag, unsigned __int64 TribeOrOwnerId) { NativeCall(this, "AShooterGameMode.AddClaimFlag", Flag, TribeOrOwnerId); } + unsigned __int64 AddNewTribe(AShooterPlayerState* PlayerOwner, FString* TribeName, FTribeGovernment* TribeGovernment) { return NativeCall(this, "AShooterGameMode.AddNewTribe", PlayerOwner, TribeName, TribeGovernment); } + void AddPlayerID(int playerDataID, unsigned __int64 netUniqueID) { NativeCall(this, "AShooterGameMode.AddPlayerID", playerDataID, netUniqueID); } + void AddTameUnits(int ToTeam, int AddUnits, ETameUnitType::Type TheTameUnitType, bool bIgnoreNetworking) { NativeCall(this, "AShooterGameMode.AddTameUnits", ToTeam, AddUnits, TheTameUnitType, bIgnoreNetworking); } + void AddToTribeLog(int TribeId, FString* NewLog) { NativeCall(this, "AShooterGameMode.AddToTribeLog", TribeId, NewLog); } + bool AddTribeEntity(unsigned int TribeID, FTribeEntity* TribeEntity) { return NativeCall(this, "AShooterGameMode.AddTribeEntity", TribeID, TribeEntity); } + bool AddTribeEntity(AActor* Entity) { return NativeCall(this, "AShooterGameMode.AddTribeEntity", Entity); } + bool AddTribeShip(APrimalRaft* Ship) { return NativeCall(this, "AShooterGameMode.AddTribeShip", Ship); } + void AddTribeTravelCount(unsigned int TribeId) { NativeCall(this, "AShooterGameMode.AddTribeTravelCount", TribeId); } + void AddTribeWar(int MyTribeID, int EnemyTeamID, int StartDayNum, int EndDayNumber, float WarStartTime, float WarEndTime, bool bForceApprove) { NativeCall(this, "AShooterGameMode.AddTribeWar", MyTribeID, EnemyTeamID, StartDayNum, EndDayNumber, WarStartTime, WarEndTime, bForceApprove); } + void AdjustDamage(AActor* Victim, float* Damage, FDamageEvent* DamageEvent, AController* EventInstigator, AActor* DamageCauser) { NativeCall(this, "AShooterGameMode.AdjustDamage", Victim, Damage, DamageEvent, EventInstigator, DamageCauser); } + static bool AllowDamage(UWorld* ForWorld, int TargetingTeam1, int TargetingTeam2, bool bIgnoreDamageIfAllied) { return NativeCall(nullptr, "AShooterGameMode.AllowDamage", ForWorld, TargetingTeam1, TargetingTeam2, bIgnoreDamageIfAllied); } + void AllowPlayerToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { NativeCall(this, "AShooterGameMode.AllowPlayerToJoinNoCheck", PlayerId); } + bool AllowRenameTribe(AShooterPlayerState* ForPlayerState, FString* TribeName) { return NativeCall(this, "AShooterGameMode.AllowRenameTribe", ForPlayerState, TribeName); } + bool AllowTaming(int ForTeam) { return NativeCall(this, "AShooterGameMode.AllowTaming", ForTeam); } + bool AreTribesAllied(int TribeID1, int TribeID2) { return NativeCall(this, "AShooterGameMode.AreTribesAllied", TribeID1, TribeID2); } + void AsyncSetAndUpdateClaimFlagBytesForTribe(unsigned int TribeId, int PaintingId, int PaintingRevision, TArray* CompressedBytes, TArray* StructureColors) { NativeCall*, TArray*>(this, "AShooterGameMode.AsyncSetAndUpdateClaimFlagBytesForTribe", TribeId, PaintingId, PaintingRevision, CompressedBytes, StructureColors); } + void AtlasGlobalCommand(FString Command) { NativeCall(this, "AShooterGameMode.AtlasGlobalCommand", Command); } + bool BanPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.BanPlayer", PlayerSteamName, PlayerSteamID); } + void BeginPlay() { NativeCall(this, "AShooterGameMode.BeginPlay"); } + void BeginUnloadingWorld() { NativeCall(this, "AShooterGameMode.BeginUnloadingWorld"); } + void ChangeClaimFlag(APrimalStructureClaimFlag* Flag, unsigned __int64 OLDTribeOrOwnerId, unsigned __int64 NEWTribeOrOwnerId) { NativeCall(this, "AShooterGameMode.ChangeClaimFlag", Flag, OLDTribeOrOwnerId, NEWTribeOrOwnerId); } + bool ChangeTribeGovernment(unsigned int TribeID, FTribeGovernment* TribeGovernment) { return NativeCall(this, "AShooterGameMode.ChangeTribeGovernment", TribeID, TribeGovernment); } + bool ChangeTribeName(unsigned int TribeID, FString* NewTribeName) { return NativeCall(this, "AShooterGameMode.ChangeTribeName", TribeID, NewTribeName); } + void CheckForRepopulation() { NativeCall(this, "AShooterGameMode.CheckForRepopulation"); } + void CheckIsOfficialServer() { NativeCall(this, "AShooterGameMode.CheckIsOfficialServer"); } + void CheckTribeTravelFailsafe() { NativeCall(this, "AShooterGameMode.CheckTribeTravelFailsafe"); } + AActor* ChoosePlayerStart_Implementation(AController* Player) { return NativeCall(this, "AShooterGameMode.ChoosePlayerStart_Implementation", Player); } + void ClearSavesAndRestart() { NativeCall(this, "AShooterGameMode.ClearSavesAndRestart"); } + float ConvertTribeResetUTCToLastGameTime(int ResetUTC) { return NativeCall(this, "AShooterGameMode.ConvertTribeResetUTCToLastGameTime", ResetUTC); } + int CountOverlappingDinoCharactersOfTeamAndClass(FVector* AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall, int, bool, bool>(this, "AShooterGameMode.CountOverlappingDinoCharactersOfTeamAndClass", AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } + void CreateAlliance(unsigned __int64 TribeId, FString* AllianceName) { NativeCall(this, "AShooterGameMode.CreateAlliance", TribeId, AllianceName); } + void DDoSDetected() { NativeCall(this, "AShooterGameMode.DDoSDetected"); } + void DeletePlayerData(FString* UniqueNetId) { NativeCall(this, "AShooterGameMode.DeletePlayerData", UniqueNetId); } + void DeletePlayerData(AShooterPlayerState* PlayerState) { NativeCall(this, "AShooterGameMode.DeletePlayerData", PlayerState); } + bool DemoteFromTribeAdmin(unsigned int TribeID, unsigned int PlayerDataID) { return NativeCall(this, "AShooterGameMode.DemoteFromTribeAdmin", TribeID, PlayerDataID); } + void DisallowPlayerToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { NativeCall(this, "AShooterGameMode.DisallowPlayerToJoinNoCheck", PlayerId); } + FString* DoGameCommand(FString* result, FString* TheCommand) { return NativeCall(this, "AShooterGameMode.DoGameCommand", result, TheCommand); } + void EndPlay(EEndPlayReason::Type EndPlayReason) { NativeCall(this, "AShooterGameMode.EndPlay", EndPlayReason); } + void FinishTribeClaimFlagPainting(unsigned int TribeId, int PaintingUniqueId, int PaintingRevision, TArray* StructureColors) { NativeCall*>(this, "AShooterGameMode.FinishTribeClaimFlagPainting", TribeId, PaintingUniqueId, PaintingRevision, StructureColors); } + bool FinshProcessingEntry(TSharedPtr Entry) { return NativeCall>(this, "AShooterGameMode.FinshProcessingEntry", Entry); } + void FlushPrimalStats(AShooterPlayerController* ForPC) { NativeCall(this, "AShooterGameMode.FlushPrimalStats", ForPC); } + int ForceAddPlayerToTribe(AShooterPlayerState* ForPlayerState, FString* TribeName) { return NativeCall(this, "AShooterGameMode.ForceAddPlayerToTribe", ForPlayerState, TribeName); } + int ForceCreateTribe(FString* TribeName, int TeamOverride) { return NativeCall(this, "AShooterGameMode.ForceCreateTribe", TribeName, TeamOverride); } + void ForceRotateTribeLog(unsigned __int64 TribeId) { NativeCall(this, "AShooterGameMode.ForceRotateTribeLog", TribeId); } + unsigned int GeneratePlayerDataId(unsigned __int64 NetUniqueID) { return NativeCall(this, "AShooterGameMode.GeneratePlayerDataId", NetUniqueID); } + FString* GenerateProfileFileName(FString* result, FString* UniqueId, FString* NetworkAddresss, FString* PlayerName) { return NativeCall(this, "AShooterGameMode.GenerateProfileFileName", result, UniqueId, NetworkAddresss, PlayerName); } + unsigned int GenerateTribeId() { return NativeCall(this, "AShooterGameMode.GenerateTribeId"); } + void GenerateTribePNG(unsigned __int64 TribeId) { NativeCall(this, "AShooterGameMode.GenerateTribePNG", TribeId); } + void GetActorSaveGameTypes(TArray>* saveGameTypes) { NativeCall>*>(this, "AShooterGameMode.GetActorSaveGameTypes", saveGameTypes); } + TMap > * GetBannedMap(TMap > * result) { return NativeCall >*, TMap >*>(this, "AShooterGameMode.GetBannedMap", result); } + bool GetBoolOption(FString* Options, FString* ParseString, bool CurrentValue) { return NativeCall(this, "AShooterGameMode.GetBoolOption", Options, ParseString, CurrentValue); } + bool GetBoolOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetBoolOptionIni", Section, OptionName); } + TArray* GetClaimFlagBytes(TArray* result, int PaintingId) { return NativeCall*, TArray*, int>(this, "AShooterGameMode.GetClaimFlagBytes", result, PaintingId); } + bool GetClaimFlagBytes(int PaintingId, TArray* ClaimFlagBytes) { return NativeCall*>(this, "AShooterGameMode.GetClaimFlagBytes", PaintingId, ClaimFlagBytes); } + FString* GetCurrentServerConnectionString(FString* result) { return NativeCall(this, "AShooterGameMode.GetCurrentServerConnectionString", result); } + unsigned int GetCurrentServerId() { return NativeCall(this, "AShooterGameMode.GetCurrentServerId"); } + TSubclassOf* GetDefaultPawnClassForController_Implementation(TSubclassOf* result, AController* InController) { return NativeCall*, TSubclassOf*, AController*>(this, "AShooterGameMode.GetDefaultPawnClassForController_Implementation", result, InController); } + float GetDinoDamageMultiplier(APrimalDinoCharacter* ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoDamageMultiplier", ForDino); } + float GetDinoResistanceMultiplier(APrimalDinoCharacter* ForDino) { return NativeCall(this, "AShooterGameMode.GetDinoResistanceMultiplier", ForDino); } + float GetExtraDinoSpawnWeight(FName DinoNameTag) { return NativeCall(this, "AShooterGameMode.GetExtraDinoSpawnWeight", DinoNameTag); } + float GetFloatOption(FString* Options, FString* ParseString, float CurrentValue) { return NativeCall(this, "AShooterGameMode.GetFloatOption", Options, ParseString, CurrentValue); } + float GetFloatOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetFloatOptionIni", Section, OptionName); } + TSubclassOf* GetGameSessionClass(TSubclassOf* result) { return NativeCall*, TSubclassOf*>(this, "AShooterGameMode.GetGameSessionClass", result); } + int GetGlobalNumOfShipsForTribe(int TribeId) { return NativeCall(this, "AShooterGameMode.GetGlobalNumOfShipsForTribe", TribeId); } + float GetHarvestResourceItemAmountMultiplier(TSubclassOf HarvestItemClass) { return NativeCall>(this, "AShooterGameMode.GetHarvestResourceItemAmountMultiplier", HarvestItemClass); } + int GetIntOptionIni(FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetIntOptionIni", Section, OptionName); } + bool GetLaunchOptionFloat(FString* LaunchOptionKey, float* ReturnVal) { return NativeCall(this, "AShooterGameMode.GetLaunchOptionFloat", LaunchOptionKey, ReturnVal); } + FString* GetMapName(FString* result) { return NativeCall(this, "AShooterGameMode.GetMapName", result); } + int GetNumDeaths(FString* PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetNumDeaths", PlayerDataID); } + int GetNumberOfLivePlayersOnTribe(FString* TribeName) { return NativeCall(this, "AShooterGameMode.GetNumberOfLivePlayersOnTribe", TribeName); } + AOceanDinoManager* GetOceanDinoManager() { return NativeCall(this, "AShooterGameMode.GetOceanDinoManager"); } + AOceanVolume* GetOceanVolume() { return NativeCall(this, "AShooterGameMode.GetOceanVolume"); } + bool GetOrLoadTribeData(int TribeID, FTribeData* LoadedTribeData) { return NativeCall(this, "AShooterGameMode.GetOrLoadTribeData", TribeID, LoadedTribeData); } + TArray* GetOverlappingDinoCharactersOfTeamAndClass(TArray* result, FVector* AtLocation, float OverlapRange, TSubclassOf DinoClass, int DinoTeam, bool bExactClassMatch, bool bIgnoreClass) { return NativeCall*, TArray*, FVector*, float, TSubclassOf, int, bool, bool>(this, "AShooterGameMode.GetOverlappingDinoCharactersOfTeamAndClass", result, AtLocation, OverlapRange, DinoClass, DinoTeam, bExactClassMatch, bIgnoreClass); } + UPrimalPlayerData* GetPlayerData(FString* PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetPlayerData", PlayerDataID); } + UPrimalPlayerData* GetPlayerData(unsigned int PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetPlayerData", PlayerDataID); } + UPrimalPlayerData* GetPlayerDataFor(AShooterPlayerController* PC, bool* bCreatedNewPlayerData, bool bForceCreateNewPlayerData, FPrimalPlayerCharacterConfigStruct* charConfig, bool bAutoCreateNewData, bool bDontSaveNewData) { return NativeCall(this, "AShooterGameMode.GetPlayerDataFor", PC, bCreatedNewPlayerData, bForceCreateNewPlayerData, charConfig, bAutoCreateNewData, bDontSaveNewData); } + UPrimalPlayerData* GetPlayerDataForInternal(AShooterPlayerController* PC, bool* bCreatedNewPlayerData, bool bForceCreateNewPlayerData, FPrimalPlayerCharacterConfigStruct* charConfig, bool bAutoCreateNewData, bool bDontSaveNewData) { return NativeCall(this, "AShooterGameMode.GetPlayerDataForInternal", PC, bCreatedNewPlayerData, bForceCreateNewPlayerData, charConfig, bAutoCreateNewData, bDontSaveNewData); } + UPrimalPlayerData* GetPlayerDataForUniqueNetId(FString* UniqueNetId, FString* PlayerName) { return NativeCall(this, "AShooterGameMode.GetPlayerDataForUniqueNetId", UniqueNetId, PlayerName); } + int GetPlayerIDForSteamID(unsigned __int64 steamID) { return NativeCall(this, "AShooterGameMode.GetPlayerIDForSteamID", steamID); } + FString* GetSaveDirectoryName(FString* result, ESaveType::Type SaveType) { return NativeCall(this, "AShooterGameMode.GetSaveDirectoryName", result, SaveType); } + FNetworkGUID* GetSeamlessObjectOldGuidForPlayer(FNetworkGUID* result, FString* PlayerId, UObject* Object) { return NativeCall(this, "AShooterGameMode.GetSeamlessObjectOldGuidForPlayer", result, PlayerId, Object); } + TArray* GetSeamlessSublevelsAdditionalTransforms(TArray* result) { return NativeCall*, TArray*>(this, "AShooterGameMode.GetSeamlessSublevelsAdditionalTransforms", result); } + TArray* GetSeamlessSublevelsNames(TArray* result) { return NativeCall*, TArray*>(this, "AShooterGameMode.GetSeamlessSublevelsNames", result); } + TArray* GetSeamlessSublevelsUniqueIds(TArray* result) { return NativeCall*, TArray*>(this, "AShooterGameMode.GetSeamlessSublevelsUniqueIds", result); } + bool GetServerSettingsFloat(FString* Keyvalue, float* OutFloat) { return NativeCall(this, "AShooterGameMode.GetServerSettingsFloat", Keyvalue, OutFloat); } + FString* GetSessionTimeString_Implementation(FString* result) { return NativeCall(this, "AShooterGameMode.GetSessionTimeString_Implementation", result); } + unsigned __int64 GetSteamIDForPlayerID(int playerDataID) { return NativeCall(this, "AShooterGameMode.GetSteamIDForPlayerID", playerDataID); } + FString* GetStringOption(FString* result, FString Section, FString OptionName) { return NativeCall(this, "AShooterGameMode.GetStringOption", result, Section, OptionName); } + int GetTameUnitCount(int ToTeam, ETameUnitType::Type TheTameUnitType) { return NativeCall(this, "AShooterGameMode.GetTameUnitCount", ToTeam, TheTameUnitType); } + FTameUnitCounts* GetTameUnitCounts(FTameUnitCounts* result, int ForTeam) { return NativeCall(this, "AShooterGameMode.GetTameUnitCounts", result, ForTeam); } + FVector* GetTracedSpawnLocation(FVector* result, FVector* SpawnLoc, float CharHalfHeight) { return NativeCall(this, "AShooterGameMode.GetTracedSpawnLocation", result, SpawnLoc, CharHalfHeight); } + int GetTribeClaimFlagPaintingIdAndRevision(unsigned int TribeId, int* PaintingRevision, TArray* OutStructureColors) { return NativeCall*>(this, "AShooterGameMode.GetTribeClaimFlagPaintingIdAndRevision", TribeId, PaintingRevision, OutStructureColors); } + FTribeData* GetTribeData(unsigned __int64 TribeID) { return NativeCall(this, "AShooterGameMode.GetTribeData", TribeID); } + FTribeData* GetTribeDataBlueprint(FTribeData* result, int TribeID) { return NativeCall(this, "AShooterGameMode.GetTribeDataBlueprint", result, TribeID); } + bool GetTribeEntityFromDBResultAndUpdateIfNeeded(unsigned __int64 TribeId, FDatabase_TribeEntities* DBResult, FTribeEntity* OutTribeEntity) { return NativeCall(this, "AShooterGameMode.GetTribeEntityFromDBResultAndUpdateIfNeeded", TribeId, DBResult, OutTribeEntity); } + int GetTribeIDOfPlayerID(unsigned __int64 PlayerDataID) { return NativeCall(this, "AShooterGameMode.GetTribeIDOfPlayerID", PlayerDataID); } + TArray* GetWhiteListedMap(TArray* result) { return NativeCall*, TArray*>(this, "AShooterGameMode.GetWhiteListedMap", result); } + void GiveNewTreasureMapToCharacter(AShooterCharacter* ShooterChar, float Quality) { NativeCall(this, "AShooterGameMode.GiveNewTreasureMapToCharacter", ShooterChar, Quality); } + void HandleLeavingMap() { NativeCall(this, "AShooterGameMode.HandleLeavingMap"); } + void HandleMatchHasStarted() { NativeCall(this, "AShooterGameMode.HandleMatchHasStarted"); } + bool HandleNewPlayer_Implementation(AShooterPlayerController* NewPlayer, UPrimalPlayerData* PlayerData, AShooterCharacter* PlayerCharacter, bool bIsFromLogin) { return NativeCall(this, "AShooterGameMode.HandleNewPlayer_Implementation", NewPlayer, PlayerData, PlayerCharacter, bIsFromLogin); } + bool HasSeenPlayerOrTribeID(unsigned __int64 id) { return NativeCall(this, "AShooterGameMode.HasSeenPlayerOrTribeID", id); } + void IncrementNumDeaths(FString* PlayerDataID) { NativeCall(this, "AShooterGameMode.IncrementNumDeaths", PlayerDataID); } + void IncrementNumDinos(int ForTeam, int ByAmount) { NativeCall(this, "AShooterGameMode.IncrementNumDinos", ForTeam, ByAmount); } + static AShooterGameMode InitDiscoveryZones() { return NativeCall(nullptr, "AShooterGameMode.InitDiscoveryZones"); } + void InitGame(FString* MapName, FString* Options, FString* ErrorMessage) { NativeCall(this, "AShooterGameMode.InitGame", MapName, Options, ErrorMessage); } + void InitGameState() { NativeCall(this, "AShooterGameMode.InitGameState"); } + FString* InitNewPlayer(FString* result, APlayerController* NewPlayerController, TSharedPtr * UniqueId, FString* Options, FString* Portal) { return NativeCall*, FString*, FString*>(this, "AShooterGameMode.InitNewPlayer", result, NewPlayerController, UniqueId, Options, Portal); } + void InitOptionBool(FString Commandline, FString Section, FString Option, bool bDefaultValue) { NativeCall(this, "AShooterGameMode.InitOptionBool", Commandline, Section, Option, bDefaultValue); } + void InitOptionFloat(FString Commandline, FString Section, FString Option, float CurrentValue) { NativeCall(this, "AShooterGameMode.InitOptionFloat", Commandline, Section, Option, CurrentValue); } + void InitOptionInteger(FString Commandline, FString Section, FString Option, int CurrentValue) { NativeCall(this, "AShooterGameMode.InitOptionInteger", Commandline, Section, Option, CurrentValue); } + void InitOptionString(FString Commandline, FString Section, FString Option) { NativeCall(this, "AShooterGameMode.InitOptionString", Commandline, Section, Option); } + void InitOptions(FString Options) { NativeCall(this, "AShooterGameMode.InitOptions", Options); } + void InitSeamlessDataServer() { NativeCall(this, "AShooterGameMode.InitSeamlessDataServer"); } + void InitSeamlessSocket() { NativeCall(this, "AShooterGameMode.InitSeamlessSocket"); } + void InitSpawnPoints() { NativeCall(this, "AShooterGameMode.InitSpawnPoints"); } + void InitStartSpot(AActor* StartSpot, AController* NewPlayer) { NativeCall(this, "AShooterGameMode.InitStartSpot", StartSpot, NewPlayer); } + void InitTameUnitCounts() { NativeCall(this, "AShooterGameMode.InitTameUnitCounts"); } + void InitializeDatabaseRefs() { NativeCall(this, "AShooterGameMode.InitializeDatabaseRefs"); } + bool IsAtTameUnitLimit(int ToTeam, ETameUnitType::Type TheTameUnitType, int TameLimitOffset, bool bIgnoreGlobalCheck) { return NativeCall(this, "AShooterGameMode.IsAtTameUnitLimit", ToTeam, TheTameUnitType, TameLimitOffset, bIgnoreGlobalCheck); } + bool IsFirstPlayerSpawn(APlayerController* NewPlayer) { return NativeCall(this, "AShooterGameMode.IsFirstPlayerSpawn", NewPlayer); } + bool IsPlayerAllowedToCheat(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToCheat", ForPlayer); } + bool IsPlayerAllowedToJoinNoCheck(FUniqueNetIdUInt64* PlayerId) { return NativeCall(this, "AShooterGameMode.IsPlayerAllowedToJoinNoCheck", PlayerId); } + bool IsPlayerControllerAllowedToExclusiveJoin(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToExclusiveJoin", ForPlayer); } + bool IsPlayerControllerAllowedToJoinNoCheck(AShooterPlayerController* ForPlayer) { return NativeCall(this, "AShooterGameMode.IsPlayerControllerAllowedToJoinNoCheck", ForPlayer); } + bool IsSpawnpointPreferred(APlayerStart* SpawnPoint, AController* Player) { return NativeCall(this, "AShooterGameMode.IsSpawnpointPreferred", SpawnPoint, Player); } + bool IsTribeAtMax(unsigned int ServerId, unsigned __int64 TribeID) { return NativeCall(this, "AShooterGameMode.IsTribeAtMax", ServerId, TribeID); } + bool IsTribeWar(int TribeID1, int TribeID2) { return NativeCall(this, "AShooterGameMode.IsTribeWar", TribeID1, TribeID2); } + void JoinAlliance(unsigned __int64 AdminTribeId, unsigned __int64 AddTribeId, FString* AddTribeName, unsigned __int64 AllianceId, bool bAuthority) { NativeCall(this, "AShooterGameMode.JoinAlliance", AdminTribeId, AddTribeId, AddTribeName, AllianceId, bAuthority); } + void KickAllPlayersAndReload() { NativeCall(this, "AShooterGameMode.KickAllPlayersAndReload"); } + bool KickPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.KickPlayer", PlayerSteamName, PlayerSteamID); } + void KickPlayerController(APlayerController* thePC, FString* KickMessage) { NativeCall(this, "AShooterGameMode.KickPlayerController", thePC, KickMessage); } + void Killed(AController* Killer, AController* KilledPlayer, APawn* KilledPawn, UDamageType* DamageType) { NativeCall(this, "AShooterGameMode.Killed", Killer, KilledPlayer, KilledPawn, DamageType); } + void LeaveAlliance(unsigned __int64 AdminTribeId, unsigned __int64 RemoveTribeId, unsigned __int64 AllianceId, bool bAuthority) { NativeCall(this, "AShooterGameMode.LeaveAlliance", AdminTribeId, RemoveTribeId, AllianceId, bAuthority); } + void ListenServerClampPlayerLocations() { NativeCall(this, "AShooterGameMode.ListenServerClampPlayerLocations"); } + void LoadBannedList() { NativeCall(this, "AShooterGameMode.LoadBannedList"); } + void LoadPendingTribesToLoad() { NativeCall(this, "AShooterGameMode.LoadPendingTribesToLoad"); } + UPrimalPlayerData* LoadPlayerData(FString* UniqueNetId, FString* PlayerName, FString* SavedNetworkAddress, bool IsLocalController, bool bIsLoadingBackup) { return NativeCall(this, "AShooterGameMode.LoadPlayerData", UniqueNetId, PlayerName, SavedNetworkAddress, IsLocalController, bIsLoadingBackup); } + UPrimalPlayerData* LoadPlayerData(AShooterPlayerState* PlayerState, bool bIsLoadingBackup) { return NativeCall(this, "AShooterGameMode.LoadPlayerData", PlayerState, bIsLoadingBackup); } + void LoadPlayerDataIds() { NativeCall(this, "AShooterGameMode.LoadPlayerDataIds"); } + void LoadPlayerIds_Process(unsigned __int64 InPlayerID, TArray* ReadBytes) { NativeCall*>(this, "AShooterGameMode.LoadPlayerIds_Process", InPlayerID, ReadBytes); } + void LoadPlayersJoinNoCheckList() { NativeCall(this, "AShooterGameMode.LoadPlayersJoinNoCheckList"); } + bool LoadTribeData(int TribeID, FTribeData* LoadedTribeData, bool bIsLoadingBackup, bool bDontCheckDirtyTribeWar) { return NativeCall(this, "AShooterGameMode.LoadTribeData", TribeID, LoadedTribeData, bIsLoadingBackup, bDontCheckDirtyTribeWar); } + void LoadTribeIds() { NativeCall(this, "AShooterGameMode.LoadTribeIds"); } + void LoadTribeIds_Process(unsigned int theTribeID) { NativeCall(this, "AShooterGameMode.LoadTribeIds_Process", theTribeID); } + void LoadTributePlayerDatas(FString UniqueID) { NativeCall(this, "AShooterGameMode.LoadTributePlayerDatas", UniqueID); } + bool LoadWorld() { return NativeCall(this, "AShooterGameMode.LoadWorld"); } + void Logout(AController* Exiting) { NativeCall(this, "AShooterGameMode.Logout", Exiting); } + void MarkTribeEntitiesAtMaxForServer(unsigned int ServerId, unsigned __int64 TribeID, unsigned int NextResetUTC) { NativeCall(this, "AShooterGameMode.MarkTribeEntitiesAtMaxForServer", ServerId, TribeID, NextResetUTC); } + float ModifyNPCSpawnLimits(FName DinoNameTag, float CurrentLimit) { return NativeCall(this, "AShooterGameMode.ModifyNPCSpawnLimits", DinoNameTag, CurrentLimit); } + void MoveInChractersOutOfBounds() { NativeCall(this, "AShooterGameMode.MoveInChractersOutOfBounds"); } + void NetUpdateTameUnits(int ToTeam, FTameUnitCounts* NewTameUnits) { NativeCall(this, "AShooterGameMode.NetUpdateTameUnits", ToTeam, NewTameUnits); } + void NotifyTribeMembersInSameServerOfTribeChange(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.NotifyTribeMembersInSameServerOfTribeChange", TribeID); } + void OnAddPlayerToTribe(FDatabase_PlayerJoinedTribe* pAddPlayer) { NativeCall(this, "AShooterGameMode.OnAddPlayerToTribe", pAddPlayer); } + void OnAllianceLoaded(bool bFullTribeAndAllianceLoad, bool bSuccess, unsigned __int64 AllianceId, FDatabase_AllianceWrapper* InResult) { NativeCall(this, "AShooterGameMode.OnAllianceLoaded", bFullTribeAndAllianceLoad, bSuccess, AllianceId, InResult); } + void OnCompleteTribeLoadedFromCache(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.OnCompleteTribeLoadedFromCache", TribeID); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "AShooterGameMode.OnDeserializedByGame", DeserializationType); } + void OnGridServerChanged(unsigned int ServerId, bool bAlive, FDatabase_ClusterInfo_Server* ServerInfo) { NativeCall(this, "AShooterGameMode.OnGridServerChanged", ServerId, bAlive, ServerInfo); } + void OnReceivedAllianceNotifcation(FTribeAlliance* Alliance, TArray* Notifications) { NativeCall*>(this, "AShooterGameMode.OnReceivedAllianceNotifcation", Alliance, Notifications); } + void OnReceivedTribeNotifcation(FTribeData* TribeData, TArray* Notifications) { NativeCall*>(this, "AShooterGameMode.OnReceivedTribeNotifcation", TribeData, Notifications); } + void OnRemovePlayerFromTribe(FDatabase_PlayerRemovedFromTribe* pRemovePlayer) { NativeCall(this, "AShooterGameMode.OnRemovePlayerFromTribe", pRemovePlayer); } + void OnTribeEntityJoinedServer(AActor* Entity) { NativeCall(this, "AShooterGameMode.OnTribeEntityJoinedServer", Entity); } + void OnTribeEntityJoinedServerHelper(AActor* Entity, FTribeData* CachedTribeData) { NativeCall(this, "AShooterGameMode.OnTribeEntityJoinedServerHelper", Entity, CachedTribeData); } + void OnTribeEntityLeftServer(AActor* Entity, unsigned int DestinationServerId, ESeamlessVolumeSide::Side DestinationServerVolumeSide) { NativeCall(this, "AShooterGameMode.OnTribeEntityLeftServer", Entity, DestinationServerId, DestinationServerVolumeSide); } + void OnTribeLoaded(bool bSuccess, unsigned __int64 TribeId, FDatabase_TribeWrapper* InResult) { NativeCall(this, "AShooterGameMode.OnTribeLoaded", bSuccess, TribeId, InResult); } + void OnTribeSettingsChanged(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.OnTribeSettingsChanged", TribeID); } + static AShooterGameMode PeriodicMoveOutofBoundsActorsInCheck() { return NativeCall(nullptr, "AShooterGameMode.PeriodicMoveOutofBoundsActorsInCheck"); } + void PlayEnded() { NativeCall(this, "AShooterGameMode.PlayEnded"); } + bool PlayerCanRestart(APlayerController* Player) { return NativeCall(this, "AShooterGameMode.PlayerCanRestart", Player); } + void PostAlarmNotification(FUniqueNetId* SteamID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } + void PostAlarmNotification(FString SteamID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotification", SteamID, Title, Message); } + void PostAlarmNotificationPlayerID(int PlayerID, FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotificationPlayerID", PlayerID, Title, Message); } + void PostAlarmNotificationTribe(int TribeID, FString Title, FString Message) { NativeCall(this, "AShooterGameMode.PostAlarmNotificationTribe", TribeID, Title, Message); } + static AShooterGameMode PostCharacterLocationMetrics() { return NativeCall(nullptr, "AShooterGameMode.PostCharacterLocationMetrics"); } + void PostLogFailEvent(unsigned __int64 FailedLogLine) { NativeCall(this, "AShooterGameMode.PostLogFailEvent", FailedLogLine); } + void PostLogin(APlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.PostLogin", NewPlayer); } + static AShooterGameMode PostServerMetrics() { return NativeCall(nullptr, "AShooterGameMode.PostServerMetrics"); } + void PreInitializeComponents() { NativeCall(this, "AShooterGameMode.PreInitializeComponents"); } + void PreLogin(FString* Options, FString* Address, TSharedPtr * UniqueId, FString* authToken, FString* ErrorMessage, unsigned int* NewHomeServerId) { NativeCall*, FString*, FString*, unsigned int*>(this, "AShooterGameMode.PreLogin", Options, Address, UniqueId, authToken, ErrorMessage, NewHomeServerId); } + void PrintToGameplayLog(FString* InString) { NativeCall(this, "AShooterGameMode.PrintToGameplayLog", InString); } + void PrintToServerGameLog(FString* InString, bool bSendChatToAllAdmins) { NativeCall(this, "AShooterGameMode.PrintToServerGameLog", InString, bSendChatToAllAdmins); } + static AShooterGameMode ProcessActorPlayersAwaitingSeamlessTravelController() { return NativeCall(nullptr, "AShooterGameMode.ProcessActorPlayersAwaitingSeamlessTravelController"); } + void ProcessChat(bool bFromTribeNotification, FPubSub_TribeNotification_Chat* InChat) { NativeCall(this, "AShooterGameMode.ProcessChat", bFromTribeNotification, InChat); } + bool ProcessCreateCheckpointEntry(TSharedPtr Entry, FDatabase_CreateShapshot* pCreateCheckpoint) { return NativeCall, FDatabase_CreateShapshot*>(this, "AShooterGameMode.ProcessCreateCheckpointEntry", Entry, pCreateCheckpoint); } + bool ProcessPlayerJoinedTribe(TSharedPtr Entry, FDatabase_PlayerJoinedTribe* pPlayerJoinedTribe) { return NativeCall, FDatabase_PlayerJoinedTribe*>(this, "AShooterGameMode.ProcessPlayerJoinedTribe", Entry, pPlayerJoinedTribe); } + bool ProcessPlayerRemovedFromTribe(TSharedPtr Entry, FDatabase_PlayerRemovedFromTribe* pPlayerRemovedFromTribe) { return NativeCall, FDatabase_PlayerRemovedFromTribe*>(this, "AShooterGameMode.ProcessPlayerRemovedFromTribe", Entry, pPlayerRemovedFromTribe); } + bool ProcessTravelEntry(TSharedPtr Entry, FDatabase_TravelEntry* Travel) { return NativeCall, FDatabase_TravelEntry*>(this, "AShooterGameMode.ProcessTravelEntry", Entry, Travel); } + void ProcessTribeAndAllianceLoadResults(unsigned __int64 TribeId) { NativeCall(this, "AShooterGameMode.ProcessTribeAndAllianceLoadResults", TribeId); } + void PromoteToAdminAlliance(unsigned __int64 AdminTribeId, unsigned __int64 AddTribeId, unsigned __int64 AllianceId, bool bAuthority) { NativeCall(this, "AShooterGameMode.PromoteToAdminAlliance", AdminTribeId, AddTribeId, AllianceId, bAuthority); } + bool PromoteToTribeAdmin(unsigned int TribeID, unsigned int PlayerDataID, APlayerController* PromoterPC) { return NativeCall(this, "AShooterGameMode.PromoteToTribeAdmin", TribeID, PlayerDataID, PromoterPC); } + void RefreshLandBedsClaimFlagCheck() { NativeCall(this, "AShooterGameMode.RefreshLandBedsClaimFlagCheck"); } + void RefreshTerrityoryUrls() { NativeCall(this, "AShooterGameMode.RefreshTerrityoryUrls"); } + void RemoveActorPlayerAwaitingSeamlessTravelController(FString* PlayerUniqueId) { NativeCall(this, "AShooterGameMode.RemoveActorPlayerAwaitingSeamlessTravelController", PlayerUniqueId); } + void RemoveClaimFlag(APrimalStructureClaimFlag* Flag) { NativeCall(this, "AShooterGameMode.RemoveClaimFlag", Flag); } + void RemoveInactivePlayersAndTribes() { NativeCall(this, "AShooterGameMode.RemoveInactivePlayersAndTribes"); } + void RemovePlayerData(AShooterPlayerState* PlayerState, bool bDeleteStored, bool bDontClearTribe) { NativeCall(this, "AShooterGameMode.RemovePlayerData", PlayerState, bDeleteStored, bDontClearTribe); } + void RemovePlayerStructuresFromTribe(FString* PlayerName, bool bChangeDinos, bool bChangeStructures, unsigned int NewPlayerId) { NativeCall(this, "AShooterGameMode.RemovePlayerStructuresFromTribe", PlayerName, bChangeDinos, bChangeStructures, NewPlayerId); } + void RemoveTameUnits(int ToTeam, int RemoveUnits, ETameUnitType::Type TheTameUnitType, bool bIgnoreNetworking) { NativeCall(this, "AShooterGameMode.RemoveTameUnits", ToTeam, RemoveUnits, TheTameUnitType, bIgnoreNetworking); } + void RemoveTribe(unsigned __int64 TribeID) { NativeCall(this, "AShooterGameMode.RemoveTribe", TribeID); } + bool RemoveTribeEntity(unsigned int TribeID, FTribeEntity* TribeEntity) { return NativeCall(this, "AShooterGameMode.RemoveTribeEntity", TribeID, TribeEntity); } + bool RemoveTribeEntity(AActor* Entity) { return NativeCall(this, "AShooterGameMode.RemoveTribeEntity", Entity); } + void RequestFinishAndExitToMainMenu() { NativeCall(this, "AShooterGameMode.RequestFinishAndExitToMainMenu"); } + void ResetTribeEntitiesAtMaxForServer(unsigned int ServerId, unsigned int NextResetUTC) { NativeCall(this, "AShooterGameMode.ResetTribeEntitiesAtMaxForServer", ServerId, NextResetUTC); } + void ResetTribeEntityToAnotherServer(unsigned int TribeID, unsigned int EntityID, TArray* TribeEntities, unsigned int DestinationServerId, ESeamlessVolumeSide::Side DestinationServerVolumeSide) { NativeCall*, unsigned int, ESeamlessVolumeSide::Side>(this, "AShooterGameMode.ResetTribeEntityToAnotherServer", TribeID, EntityID, TribeEntities, DestinationServerId, DestinationServerVolumeSide); } + void ResetTribeTravelCounts() { NativeCall(this, "AShooterGameMode.ResetTribeTravelCounts"); } + void RestartServer() { NativeCall(this, "AShooterGameMode.RestartServer"); } + void SaveBannedList() { NativeCall(this, "AShooterGameMode.SaveBannedList"); } + void SavePlayersJoinNoCheckList() { NativeCall(this, "AShooterGameMode.SavePlayersJoinNoCheckList"); } + void SaveWorld(ESaveWorldType::Type SaveType, bool bDoPartialSave) { NativeCall(this, "AShooterGameMode.SaveWorld", SaveType, bDoPartialSave); } + void SendAllianceChat(unsigned __int64 AllianceID, FPubSub_TribeNotification_Chat* Chat) { NativeCall(this, "AShooterGameMode.SendAllianceChat", AllianceID, Chat); } + void SendDatadogMetricEvent(FString* Title, FString* Message) { NativeCall(this, "AShooterGameMode.SendDatadogMetricEvent", Title, Message); } + void SendServerChatMessage(FString* MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID, bool bSendToAllServers) { NativeCall(this, "AShooterGameMode.SendServerChatMessage", MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID, bSendToAllServers); } + void SendServerDirectMessage(FString* PlayerSteamID, FString* MessageText, FLinearColor MessageColor, bool bIsBold, int ReceiverTeamId, int ReceiverPlayerID, FString* PlayerName) { NativeCall(this, "AShooterGameMode.SendServerDirectMessage", PlayerSteamID, MessageText, MessageColor, bIsBold, ReceiverTeamId, ReceiverPlayerID, PlayerName); } + void SendServerNotification(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int ReceiverTeamId, int ReceiverPlayerID, bool bDoBillboard, bool bSaveToTribeLog, bool bSendToAllServers) { NativeCall(this, "AShooterGameMode.SendServerNotification", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, ReceiverTeamId, ReceiverPlayerID, bDoBillboard, bSaveToTribeLog, bSendToAllServers); } + bool SendServerNotificationInternal(FString* MessageText, FLinearColor MessageColor, float DisplayScale, float DisplayTime, UTexture2D* MessageIcon, USoundBase* SoundToPlay, int ReceiverTeamId, int ReceiverPlayerID, bool bDoBillboard, bool bSaveToTribeLog) { return NativeCall(this, "AShooterGameMode.SendServerNotificationInternal", MessageText, MessageColor, DisplayScale, DisplayTime, MessageIcon, SoundToPlay, ReceiverTeamId, ReceiverPlayerID, bDoBillboard, bSaveToTribeLog); } + void SendServerNotificationTypeParam(int MessageType, int ReceiverTeamId, int ReceiverPlayerID, bool bSendToAllServers, int MessageType1, int MessageParam2, UObject* ObjectParam1, FString* StringParam1) { NativeCall(this, "AShooterGameMode.SendServerNotificationTypeParam", MessageType, ReceiverTeamId, ReceiverPlayerID, bSendToAllServers, MessageType1, MessageParam2, ObjectParam1, StringParam1); } + void SendTribeChat(unsigned int TribeID, FPubSub_TribeNotification_Chat* Chat) { NativeCall(this, "AShooterGameMode.SendTribeChat", TribeID, Chat); } + void SetClaimFlagBytesForTribe(int PaintingId, TArray* CompressedBytes) { NativeCall*>(this, "AShooterGameMode.SetClaimFlagBytesForTribe", PaintingId, CompressedBytes); } + void SetMessageOfTheDay(FString* Message) { NativeCall(this, "AShooterGameMode.SetMessageOfTheDay", Message); } + void SetTimeOfDay(FString* timeString) { NativeCall(this, "AShooterGameMode.SetTimeOfDay", timeString); } + void SetTribeClaimFlagPainting(unsigned int TribeId, int PaintingUniqueId, int PaintingRevision, TArray* StructureColors) { NativeCall*>(this, "AShooterGameMode.SetTribeClaimFlagPainting", TribeId, PaintingUniqueId, PaintingRevision, StructureColors); } + static AShooterGameMode SharedLogBackgroundCleanup() { return NativeCall(nullptr, "AShooterGameMode.SharedLogBackgroundCleanup"); } + static AShooterGameMode SharedLogCreateSnapshot() { return NativeCall(nullptr, "AShooterGameMode.SharedLogCreateSnapshot"); } + //void SharedLogFetchPending(TFunction TFunction>(this, "AShooterGameMode.SharedLogFetchPending", TFunction(this, "AShooterGameMode.SharedLogRollback", RollbackTarget); } + void SharedLogTravelNotification(unsigned __int64 LogLine, TSharedPtr, 0> TravelData) { NativeCall, 0>>(this, "AShooterGameMode.SharedLogTravelNotification", LogLine, TravelData); } + void ShowMessageOfTheDay() { NativeCall(this, "AShooterGameMode.ShowMessageOfTheDay"); } + void SingleplayerSetupValues() { NativeCall(this, "AShooterGameMode.SingleplayerSetupValues"); } + APawn* SpawnDefaultPawnFor(AController* NewPlayer, AActor* StartSpot) { return NativeCall(this, "AShooterGameMode.SpawnDefaultPawnFor", NewPlayer, StartSpot); } + void SpawnedPawnFor(AController* PC, APawn* SpawnedPawn) { NativeCall(this, "AShooterGameMode.SpawnedPawnFor", PC, SpawnedPawn); } + void StartAddPlayerToTribe(unsigned int PlayerId, unsigned __int64 FromTribeId, unsigned __int64 ToTribeId, bool bMergeTribes, FString* PlayerRequesting) { NativeCall(this, "AShooterGameMode.StartAddPlayerToTribe", PlayerId, FromTribeId, ToTribeId, bMergeTribes, PlayerRequesting); } + void StartLoadingPlayerEntities(unsigned int PlayerDataID, unsigned int IgnoreBedId) { NativeCall(this, "AShooterGameMode.StartLoadingPlayerEntities", PlayerDataID, IgnoreBedId); } + void StartLoadingTribeData(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.StartLoadingTribeData", TribeID); } + void StartLoadingTribeIDForPlayerDataID(unsigned int PlayerDataID) { NativeCall(this, "AShooterGameMode.StartLoadingTribeIDForPlayerDataID", PlayerDataID); } + void StartNewPlayer(APlayerController* NewPlayer) { NativeCall(this, "AShooterGameMode.StartNewPlayer", NewPlayer); } + void StartNewShooterPlayer(APlayerController* NewPlayer, bool bForceCreateNewPlayerData, bool bIsFromLogin, FPrimalPlayerCharacterConfigStruct* charConfig, UPrimalPlayerData* ArkPlayerData) { NativeCall(this, "AShooterGameMode.StartNewShooterPlayer", NewPlayer, bForceCreateNewPlayerData, bIsFromLogin, charConfig, ArkPlayerData); } + void StartRemovePlayerFromTribe(unsigned int PlayerId, unsigned __int64 TribeId, FString* PlayerRequesting) { NativeCall(this, "AShooterGameMode.StartRemovePlayerFromTribe", PlayerId, TribeId, PlayerRequesting); } + bool StartSaveBackup() { return NativeCall(this, "AShooterGameMode.StartSaveBackup"); } + void StartSavingTribeData(unsigned int TribeID, bool bIncludeClaimData) { NativeCall(this, "AShooterGameMode.StartSavingTribeData", TribeID, bIncludeClaimData); } + void StartSavingTribeEntity(unsigned int TribeID, FTribeEntity* TribeEntity) { NativeCall(this, "AShooterGameMode.StartSavingTribeEntity", TribeID, TribeEntity); } + void StartSavingTribeMember(unsigned int PlayerDataID) { NativeCall(this, "AShooterGameMode.StartSavingTribeMember", PlayerDataID); } + void StartSubscribingToAllianceTopic(unsigned __int64 AllianceID) { NativeCall(this, "AShooterGameMode.StartSubscribingToAllianceTopic", AllianceID); } + void StartSubscribingToTribeTopic(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.StartSubscribingToTribeTopic", TribeID); } + void StressTestTravelStartLoop(float IntervalSec) { NativeCall(this, "AShooterGameMode.StressTestTravelStartLoop", IntervalSec); } + static AShooterGameMode StressTestTravelTimer() { return NativeCall(nullptr, "AShooterGameMode.StressTestTravelTimer"); } + void SyncToUTCTime() { NativeCall(this, "AShooterGameMode.SyncToUTCTime"); } + void Tick(float DeltaSeconds) { NativeCall(this, "AShooterGameMode.Tick", DeltaSeconds); } + //void TickOverSubscription() { NativeCall(this, "AShooterGameMode.TickOverSubscription"); } + void TickPendingSharedLog() { NativeCall(this, "AShooterGameMode.TickPendingSharedLog"); } + void TickPendingTribeFlagNotifs() { NativeCall(this, "AShooterGameMode.TickPendingTribeFlagNotifs"); } + void TickSaveBackup() { NativeCall(this, "AShooterGameMode.TickSaveBackup"); } + void TickSeamlessSocket() { NativeCall(this, "AShooterGameMode.TickSeamlessSocket"); } + void TickTribeCloudNotifications() { NativeCall(this, "AShooterGameMode.TickTribeCloudNotifications"); } + void TransferTribalObjects(unsigned int FromTeam, unsigned int ToTeam, bool bDontIncludePlayers) { NativeCall(this, "AShooterGameMode.TransferTribalObjects", FromTeam, ToTeam, bDontIncludePlayers); } + bool TransferTribeOwnershipTo(unsigned int TribeID, unsigned int PlayerDataID) { return NativeCall(this, "AShooterGameMode.TransferTribeOwnershipTo", TribeID, PlayerDataID); } + static bool TriggerLevelCustomEvents(UWorld* InWorld, FString* EventName) { return NativeCall(nullptr, "AShooterGameMode.TriggerLevelCustomEvents", InWorld, EventName); } + void TryUpdateTribesEntitiesServerAndLocation() { NativeCall(this, "AShooterGameMode.TryUpdateTribesEntitiesServerAndLocation"); } + bool UnbanPlayer(FString PlayerSteamName, FString PlayerSteamID) { return NativeCall(this, "AShooterGameMode.UnbanPlayer", PlayerSteamName, PlayerSteamID); } + void UnloadAllianceData(unsigned __int64 AllianceID) { NativeCall(this, "AShooterGameMode.UnloadAllianceData", AllianceID); } + void UnloadTribeData(unsigned int TribeID) { NativeCall(this, "AShooterGameMode.UnloadTribeData", TribeID); } + void UnloadTribeDataIfNoLongerNeeded(unsigned int TribeID, AController* Exiting) { NativeCall(this, "AShooterGameMode.UnloadTribeDataIfNoLongerNeeded", TribeID, Exiting); } + void UpdateAlliancesTribes(FTribeAlliance* Alliance) { NativeCall(this, "AShooterGameMode.UpdateAlliancesTribes", Alliance); } + void UpdateClaimFlagPaintingsForTribe(unsigned int TribeId, int PaintingUniqueId, int PaintingRevision, TArray* StructureColors) { NativeCall*>(this, "AShooterGameMode.UpdateClaimFlagPaintingsForTribe", TribeId, PaintingUniqueId, PaintingRevision, StructureColors); } + void UpdateGridCellServer() { NativeCall(this, "AShooterGameMode.UpdateGridCellServer"); } + void UpdateSaveBackupFiles() { NativeCall(this, "AShooterGameMode.UpdateSaveBackupFiles"); } + void UpdateTerritoryUrlsInPlayerState() { NativeCall(this, "AShooterGameMode.UpdateTerritoryUrlsInPlayerState"); } + void UpdateTribeData(FTribeData* NewTribeData) { NativeCall(this, "AShooterGameMode.UpdateTribeData", NewTribeData); } + bool UpdateTribeEntity(AActor* Entity) { return NativeCall(this, "AShooterGameMode.UpdateTribeEntity", Entity); } + bool UpdateTribeMemberPresence(unsigned int TribeID, AShooterPlayerState* PlayerState) { return NativeCall(this, "AShooterGameMode.UpdateTribeMemberPresence", TribeID, PlayerState); } + void UpdateTribeNameInAlliances(FTribeData* TribeData) { NativeCall(this, "AShooterGameMode.UpdateTribeNameInAlliances", TribeData); } + void UpdateTribeWars() { NativeCall(this, "AShooterGameMode.UpdateTribeWars"); } + FPrimalPlayerCharacterConfigStruct* ValidateCharacterConfig(FPrimalPlayerCharacterConfigStruct* result, FPrimalPlayerCharacterConfigStruct* charConfig, AShooterPlayerController* ForPC) { return NativeCall(this, "AShooterGameMode.ValidateCharacterConfig", result, charConfig, ForPC); } + FString* ValidateTribeName(FString* result, FString theTribeName) { return NativeCall(this, "AShooterGameMode.ValidateTribeName", result, theTribeName); } + void BPPreSpawnedDino(APrimalDinoCharacter* theDino) { NativeCall(this, "AShooterGameMode.BPPreSpawnedDino", theDino); } + bool CheckJoinInProgress(bool bIsFromLogin, APlayerController* NewPlayer) { return NativeCall(this, "AShooterGameMode.CheckJoinInProgress", bIsFromLogin, NewPlayer); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "AShooterGameMode.GetPrivateStaticClass", Package); } + bool HandleNewPlayer(AShooterPlayerController* NewPlayer, UPrimalPlayerData* PlayerData, AShooterCharacter* PlayerCharacter, bool bIsFromLogin) { return NativeCall(this, "AShooterGameMode.HandleNewPlayer", NewPlayer, PlayerData, PlayerCharacter, bIsFromLogin); } + void OnLogout(AController* Exiting) { NativeCall(this, "AShooterGameMode.OnLogout", Exiting); } + static void StaticRegisterNativesAShooterGameMode() { NativeCall(nullptr, "AShooterGameMode.StaticRegisterNativesAShooterGameMode"); } + //bool TickOverSubscription() { return NativeCall(this, "AShooterGameMode.TickOverSubscription"); } +}; + +struct UPrimalGameData : UObject +{ + FString& ModNameField() { return *GetNativePointerField(this, "UPrimalGameData.ModName"); } + FString& ModDescriptionField() { return *GetNativePointerField(this, "UPrimalGameData.ModDescription"); } + FieldArray StatusValueDefinitionsField() { return { this, "UPrimalGameData.StatusValueDefinitions" }; } + FieldArray StatusStateDefinitionsField() { return { this, "UPrimalGameData.StatusStateDefinitions" }; } + FieldArray ItemStatDefinitionsField() { return { this, "UPrimalGameData.ItemStatDefinitions" }; } + FieldArray ItemTypeDefinitionsField() { return { this, "UPrimalGameData.ItemTypeDefinitions" }; } + FieldArray EquipmentTypeDefinitionsField() { return { this, "UPrimalGameData.EquipmentTypeDefinitions" }; } + FieldArray EngramDisciplineDefinitionsField() { return { this, "UPrimalGameData.EngramDisciplineDefinitions" }; } + FieldArray ShipTypeDisplayInformationsField() { return { this, "UPrimalGameData.ShipTypeDisplayInformations" }; } + TArray>& DefaultUnlockedDisciplinesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.DefaultUnlockedDisciplines"); } + TArray>& MasterItemListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.MasterItemList"); } + TArray& ItemQualityDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ItemQualityDefinitions"); } + TArray>& EngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.EngramBlueprintClasses"); } + TArray>& HiddenEngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.HiddenEngramBlueprintClasses"); } + TArray>& AdditionalEngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalEngramBlueprintClasses"); } + TArray>& RemoveEngramBlueprintClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.RemoveEngramBlueprintClasses"); } + TArray& StatusValueModifierDescriptionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.StatusValueModifierDescriptions"); } + TArray& PlayerSpawnRegionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerSpawnRegions"); } + USoundBase* TutorialDisplaySoundField() { return *GetNativePointerField(this, "UPrimalGameData.TutorialDisplaySound"); } + USoundBase* Sound_StartItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartItemDrag"); } + USoundBase* Sound_StopItemDragField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StopItemDrag"); } + USoundBase* Sound_CancelPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CancelPlacingStructure"); } + USoundBase* Sound_ChooseStructureRotationField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ChooseStructureRotation"); } + USoundBase* Sound_FailPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_FailPlacingStructure"); } + USoundBase* Sound_ConfirmPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ConfirmPlacingStructure"); } + USoundBase* Sound_StartPlacingStructureField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_StartPlacingStructure"); } + USoundBase* Sound_CorpseDecomposeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CorpseDecompose"); } + USoundBase* Sound_ApplyLevelUpField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelUp"); } + USoundBase* Sound_ApplyLevelPointField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyLevelPoint"); } + USoundBase* Sound_LearnedEngramField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_LearnedEngram"); } + USoundBase* Sound_ReconnectToCharacterField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ReconnectToCharacter"); } + USoundBase* Sound_CreateNewCharacterField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CreateNewCharacter"); } + USoundBase* Sound_RespawnField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_Respawn"); } + USoundBase* Sound_DropAllItemsField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropAllItems"); } + USoundBase* Sound_TransferAllItemsToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsToRemote"); } + USoundBase* Sound_TransferAllItemsFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferAllItemsFromRemote"); } + USoundBase* Sound_TransferItemToRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemToRemote"); } + USoundBase* Sound_TransferItemFromRemoteField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TransferItemFromRemote"); } + USoundBase* Sound_AddItemToSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddItemToSlot"); } + USoundBase* Sound_RemoveItemFromSlotField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemFromSlot"); } + USoundBase* Sound_ClearCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ClearCraftQueue"); } + USoundBase* Sound_AddToCraftQueueField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddToCraftQueue"); } + USoundBase* Sound_SetRadioFrequencyField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetRadioFrequency"); } + USoundBase* Sound_AddPinToMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_AddPinToMap"); } + USoundBase* Sound_RemovePinFromMapField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemovePinFromMap"); } + USoundBase* Sound_ApplyDyeField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyDye"); } + USoundBase* Sound_ApplyPaintField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ApplyPaint"); } + USoundBase* Sound_SetTextGenericField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SetTextGeneric"); } + USoundBase* Sound_SplitItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SplitItemStack"); } + USoundBase* Sound_MergeItemStackField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_MergeItemStack"); } + USoundBase* Sound_InputPinDigitField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_InputPinDigit"); } + USoundBase* Sound_PinValidatedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinValidated"); } + USoundBase* Sound_PinRejectedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PinRejected"); } + USoundBase* Sound_TribeWarBeginField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarBegin"); } + USoundBase* Sound_TribeWarEndField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_TribeWarEnd"); } + USoundBase* Sound_DropInventoryItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DropInventoryItem"); } + USoundBase* Sound_RefillWaterContainerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RefillWaterContainer"); } + TArray& CoreAppIDItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.CoreAppIDItems"); } + TArray& AppIDItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AppIDItems"); } + TArray EngramBlueprintEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.EngramBlueprintEntries"); } + TArray ExplorerNoteEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteEntriesObjects"); } + TArray HeadHairStylesEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.HeadHairStylesEntriesObjects"); } + TArray FacialHairStylesEntriesObjectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.FacialHairStylesEntriesObjects"); } + TSubclassOf& DefaultToolTipWidgetField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultToolTipWidget"); } + TSubclassOf& StarterNoteItemField() { return *GetNativePointerField*>(this, "UPrimalGameData.StarterNoteItem"); } + TArray>& PrimaryResourcesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.PrimaryResources"); } + TSubclassOf& GenericDroppedItemTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericDroppedItemTemplate"); } + UMaterialInterface* PostProcess_KnockoutBlurField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_KnockoutBlur"); } + TArray BuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.BuffPostProcessEffects"); } + TArray AdditionalBuffPostProcessEffectsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalBuffPostProcessEffects"); } + TSubclassOf& GenericDroppedItemTemplateLowQualityField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericDroppedItemTemplateLowQuality"); } + FieldArray PlayerMeshEquipmentShrinkageMaskParamNamesField() { return { this, "UPrimalGameData.PlayerMeshEquipmentShrinkageMaskParamNames" }; } + UTexture2D* PlayerMeshEquipmentDefaultClothingShrinkageMaskField() { return *GetNativePointerField(this, "UPrimalGameData.PlayerMeshEquipmentDefaultClothingShrinkageMask"); } + TArray& TutorialDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.TutorialDefinitions"); } + UTexture2D* UnknownIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownIcon"); } + UMaterialInterface* UnknownMaterialField() { return *GetNativePointerField(this, "UPrimalGameData.UnknownMaterial"); } + UTexture2D* WhiteTextureField() { return *GetNativePointerField(this, "UPrimalGameData.WhiteTexture"); } + UTexture2D* BlueprintBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.BlueprintBackground"); } + UTexture2D* BabyCuddleIconField() { return *GetNativePointerField(this, "UPrimalGameData.BabyCuddleIcon"); } + UTexture2D* ImprintedRiderIconField() { return *GetNativePointerField(this, "UPrimalGameData.ImprintedRiderIcon"); } + UTexture2D* WeaponAccessoryActivatedIconField() { return *GetNativePointerField(this, "UPrimalGameData.WeaponAccessoryActivatedIcon"); } + UTexture2D* EngramBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.EngramBackground"); } + UTexture2D* VoiceChatIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatIcon"); } + UTexture2D* VoiceChatYellingIconField() { return *GetNativePointerField(this, "UPrimalGameData.VoiceChatYellingIcon"); } + UTexture2D* ItemButtonRecentlySelectedBackgroundField() { return *GetNativePointerField(this, "UPrimalGameData.ItemButtonRecentlySelectedBackground"); } + float& GlobalGeneralArmorDegradationMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalGeneralArmorDegradationMultiplier"); } + float& GlobalSpecificArmorDegradationMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalSpecificArmorDegradationMultiplier"); } + float& GlobalSpecificArmorRatingMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalSpecificArmorRatingMultiplier"); } + float& GlobalGeneralArmorRatingMultiplierField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalGeneralArmorRatingMultiplier"); } + float& EnemyFoundationPreventionRadiusField() { return *GetNativePointerField(this, "UPrimalGameData.EnemyFoundationPreventionRadius"); } + TArray& ColorDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ColorDefinitions"); } + TArray ExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraResources"); } + TArray BaseExtraResourcesField() { return *GetNativePointerField*>(this, "UPrimalGameData.BaseExtraResources"); } + TSubclassOf& BaseExtraResourcesContainerField() { return *GetNativePointerField*>(this, "UPrimalGameData.BaseExtraResourcesContainer"); } + USoundBase* NavalCombatMusicDayField() { return *GetNativePointerField(this, "UPrimalGameData.NavalCombatMusicDay"); } + USoundBase* NavalCombatMusicNightField() { return *GetNativePointerField(this, "UPrimalGameData.NavalCombatMusicNight"); } + USoundBase* CombatMusicDayField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay"); } + USoundBase* CombatMusicNightField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight"); } + USoundBase* CombatMusicDay_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicDay_Heavy"); } + USoundBase* CombatMusicNight_HeavyField() { return *GetNativePointerField(this, "UPrimalGameData.CombatMusicNight_Heavy"); } + USoundBase* LevelUpStingerSoundField() { return *GetNativePointerField(this, "UPrimalGameData.LevelUpStingerSound"); } + FieldArray PlayerCharacterGenderDefinitionsField() { return { this, "UPrimalGameData.PlayerCharacterGenderDefinitions" }; } + TSubclassOf& DefaultGameModeField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultGameMode"); } + FieldArray LevelExperienceRampsField() { return { this, "UPrimalGameData.LevelExperienceRamps" }; } + FieldArray SinglePlayerLevelExperienceRampsField() { return { this, "UPrimalGameData.SinglePlayerLevelExperienceRamps" }; } + TArray& NamedTeamDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.NamedTeamDefinitions"); } + TArray& PlayerLevelEngramPointsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerLevelEngramPoints"); } + TArray& PlayerLevelEngramPointsSPField() { return *GetNativePointerField*>(this, "UPrimalGameData.PlayerLevelEngramPointsSP"); } + TArray& PreventBuildStructureReasonStringsField() { return *GetNativePointerField*>(this, "UPrimalGameData.PreventBuildStructureReasonStrings"); } + TArray& ExplorerNoteAchievementsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteAchievements"); } + TArray& Remap_NPCField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_NPC"); } + TArray& Remap_SupplyCratesField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_SupplyCrates"); } + TArray& Remap_ResourceComponentsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_ResourceComponents"); } + TArray& Remap_NPCSpawnEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_NPCSpawnEntries"); } + TArray& Remap_EngramsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_Engrams"); } + TArray& Remap_ItemsField() { return *GetNativePointerField*>(this, "UPrimalGameData.Remap_Items"); } + TArray& AdditionalStructureEngramsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalStructureEngrams"); } + TArray& AdditionalDefaultBuffsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalDefaultBuffs"); } + TSubclassOf& ActorToSpawnUponEnemyCoreStructureDeathField() { return *GetNativePointerField*>(this, "UPrimalGameData.ActorToSpawnUponEnemyCoreStructureDeath"); } + TArray>& AdditionalStructuresToPlaceField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalStructuresToPlace"); } + TArray>& MasterDyeListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.MasterDyeList"); } + TArray& MasterColorTableField() { return *GetNativePointerField*>(this, "UPrimalGameData.MasterColorTable"); } + float& EnemyCoreStructureDeathActorRadiusBuildCheckField() { return *GetNativePointerField(this, "UPrimalGameData.EnemyCoreStructureDeathActorRadiusBuildCheck"); } + TSubclassOf& DeathDestructionDepositInventoryClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.DeathDestructionDepositInventoryClass"); } + TSubclassOf& GenericSimpleFadingDestructionMeshClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericSimpleFadingDestructionMeshClass"); } + UTexture2D* MateBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.MateBoostIcon"); } + UTexture2D* EggBoostIconField() { return *GetNativePointerField(this, "UPrimalGameData.EggBoostIcon"); } + UTexture2D* MatingIconField() { return *GetNativePointerField(this, "UPrimalGameData.MatingIcon"); } + UTexture2D* MatingWrongTemperatureIconLowField() { return *GetNativePointerField(this, "UPrimalGameData.MatingWrongTemperatureIconLow"); } + UTexture2D* MatingWrongTemperatureIconHighField() { return *GetNativePointerField(this, "UPrimalGameData.MatingWrongTemperatureIconHigh"); } + UTexture2D* NearFeedIconField() { return *GetNativePointerField(this, "UPrimalGameData.NearFeedIcon"); } + UTexture2D* BuffedIconField() { return *GetNativePointerField(this, "UPrimalGameData.BuffedIcon"); } + UTexture2D* GamepadFaceButtonTopField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonTop"); } + UTexture2D* GamepadFaceButtonBottomField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonBottom"); } + UTexture2D* GamepadFaceButtonLeftField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonLeft"); } + UTexture2D* GamepadFaceButtonRightField() { return *GetNativePointerField(this, "UPrimalGameData.GamepadFaceButtonRight"); } + TSubclassOf& FooterTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.FooterTemplate"); } + float& TribeXPSharePercentField() { return *GetNativePointerField(this, "UPrimalGameData.TribeXPSharePercent"); } + int& OverrideServerPhysXSubstepsField() { return *GetNativePointerField(this, "UPrimalGameData.OverrideServerPhysXSubsteps"); } + float& OverrideServerPhysXSubstepsDeltaTimeField() { return *GetNativePointerField(this, "UPrimalGameData.OverrideServerPhysXSubstepsDeltaTime"); } + bool& bInitializedField() { return *GetNativePointerField(this, "UPrimalGameData.bInitialized"); } + FieldArray Sound_TamedDinosField() { return { this, "UPrimalGameData.Sound_TamedDinos" }; } + USoundBase* Sound_ItemStartCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartCrafting"); } + USoundBase* Sound_ItemFinishCraftingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishCrafting"); } + USoundBase* Sound_ItemStartRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemStartRepairing"); } + USoundBase* Sound_ItemFinishRepairingField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemFinishRepairing"); } + TSubclassOf& NotifClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.NotifClass"); } + TSubclassOf& StructureDefaultOverlayToolTipWidgetField() { return *GetNativePointerField*>(this, "UPrimalGameData.StructureDefaultOverlayToolTipWidget"); } + float& MinPaintDurationConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MinPaintDurationConsumption"); } + float& MaxPaintDurationConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MaxPaintDurationConsumption"); } + float& MinDinoRadiusForPaintConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MinDinoRadiusForPaintConsumption"); } + float& MaxDinoRadiusForPaintConsumptionField() { return *GetNativePointerField(this, "UPrimalGameData.MaxDinoRadiusForPaintConsumption"); } + TArray& DinoBabySetupsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoBabySetups"); } + TArray& DinoGestationSetupsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DinoGestationSetups"); } + TSubclassOf& SoapItemTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.SoapItemTemplate"); } + UTexture2D* NameTagWildcardAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagWildcardAdmin"); } + UTexture2D* NameTagServerAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagServerAdmin"); } + UTexture2D* NameTagTribeAdminField() { return *GetNativePointerField(this, "UPrimalGameData.NameTagTribeAdmin"); } + UTexture2D* TreasureIconField() { return *GetNativePointerField(this, "UPrimalGameData.TreasureIcon"); } + TArray BadgeGroupsNameTagField() { return *GetNativePointerField*>(this, "UPrimalGameData.BadgeGroupsNameTag"); } + TArray& AchievementIDsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AchievementIDs"); } + TSet, FDefaultSetAllocator>& AchievementIDSetField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "UPrimalGameData.AchievementIDSet"); } + TArray& AdditionalEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalEggWeightsToSpawn"); } + TArray>& AdditionalEggItemsToSpawnField() { return *GetNativePointerField>*>(this, "UPrimalGameData.AdditionalEggItemsToSpawn"); } + TArray& FertilizedAdditionalEggWeightsToSpawnField() { return *GetNativePointerField*>(this, "UPrimalGameData.FertilizedAdditionalEggWeightsToSpawn"); } + TArray>& FertilizedAdditionalEggItemsToSpawnField() { return *GetNativePointerField>*>(this, "UPrimalGameData.FertilizedAdditionalEggItemsToSpawn"); } + FString& ItemAchievementsNameField() { return *GetNativePointerField(this, "UPrimalGameData.ItemAchievementsName"); } + TArray>& ItemAchievementsListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ItemAchievementsList"); } + TArray>& GlobalCuddleFoodListField() { return *GetNativePointerField>*>(this, "UPrimalGameData.GlobalCuddleFoodList"); } + TArray& MultiAchievementsField() { return *GetNativePointerField*>(this, "UPrimalGameData.MultiAchievements"); } + USoundBase* DinoIncrementedImprintingSoundField() { return *GetNativePointerField(this, "UPrimalGameData.DinoIncrementedImprintingSound"); } + USoundBase* HitMarkerCharacterSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerCharacterSound"); } + USoundBase* HitMarkerCharacterMeleeSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerCharacterMeleeSound"); } + USoundBase* HitMarkerStructureSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerStructureSound"); } + USoundBase* HitMarkerStructureMeleeSoundField() { return *GetNativePointerField(this, "UPrimalGameData.HitMarkerStructureMeleeSound"); } + TArray& TheNPCSpawnEntriesContainerAdditionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.TheNPCSpawnEntriesContainerAdditions"); } + UMaterialInterface* PostProcess_ColorLUTField() { return *GetNativePointerField(this, "UPrimalGameData.PostProcess_ColorLUT"); } + TSubclassOf& DefaultStructureSettingsField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultStructureSettings"); } + USoundBase* Sound_DossierUnlockedField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DossierUnlocked"); } + USoundBase* Sound_ItemUseOnItemField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ItemUseOnItem"); } + USoundBase* Sound_RemoveItemSkinField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveItemSkin"); } + USoundBase* Sound_RemoveClipAmmoField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_RemoveClipAmmo"); } + TArray& ExplorerNoteEntriesField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteEntries"); } + float& ExplorerNoteXPGainField() { return *GetNativePointerField(this, "UPrimalGameData.ExplorerNoteXPGain"); } + FieldArray BuffTypeBackgroundsField() { return { this, "UPrimalGameData.BuffTypeBackgrounds" }; } + FieldArray BuffTypeForegroundsField() { return { this, "UPrimalGameData.BuffTypeForegrounds" }; } + TSubclassOf& ExplorerNoteXPBuffField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExplorerNoteXPBuff"); } + UTexture2D* PerMapExplorerNoteLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.PerMapExplorerNoteLockedIcon"); } + UTexture2D* TamedDinoUnlockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoUnlockedIcon"); } + UTexture2D* TamedDinoLockedIconField() { return *GetNativePointerField(this, "UPrimalGameData.TamedDinoLockedIcon"); } + TArray& UnlockableEmotesField() { return *GetNativePointerField*>(this, "UPrimalGameData.UnlockableEmotes"); } + TArray& GlobalNPCRandomSpawnClassWeightsField() { return *GetNativePointerField*>(this, "UPrimalGameData.GlobalNPCRandomSpawnClassWeights"); } + UTexture2D* DinoOrderIconField() { return *GetNativePointerField(this, "UPrimalGameData.DinoOrderIcon"); } + TArray& AdditionalHumanMaleAnimSequenceOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanMaleAnimSequenceOverrides"); } + TArray& AdditionalHumanFemaleAnimSequenceOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanFemaleAnimSequenceOverrides"); } + TArray& AdditionalHumanMaleAnimMontagesOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanMaleAnimMontagesOverrides"); } + TArray& AdditionalHumanFemaleAnimMontagesOverridesField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHumanFemaleAnimMontagesOverrides"); } + TArray>& ServerExtraWorldSingletonActorClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ServerExtraWorldSingletonActorClasses"); } + bool& bForceServerUseDinoListField() { return *GetNativePointerField(this, "UPrimalGameData.bForceServerUseDinoList"); } + TArray>& ExtraStackedGameDataClassesField() { return *GetNativePointerField>*>(this, "UPrimalGameData.ExtraStackedGameDataClasses"); } + TArray& HeadHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.HeadHairStyleDefinitions"); } + TArray& FacialHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.FacialHairStyleDefinitions"); } + TArray& AdditionalHeadHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalHeadHairStyleDefinitions"); } + TArray& AdditionalFacialHairStyleDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdditionalFacialHairStyleDefinitions"); } + TSubclassOf& ExtraEggItemField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraEggItem"); } + USoundBase* GenericWaterPostprocessAmbientSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericWaterPostprocessAmbientSound"); } + TSubclassOf& OverridePlayerDataClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.OverridePlayerDataClass"); } + TArray& AllDinosAchievementNameTagsField() { return *GetNativePointerField*>(this, "UPrimalGameData.AllDinosAchievementNameTags"); } + USoundBase* GenericArrowPickedUpSoundField() { return *GetNativePointerField(this, "UPrimalGameData.GenericArrowPickedUpSound"); } + UTexture2D* UnlockIconField() { return *GetNativePointerField(this, "UPrimalGameData.UnlockIcon"); } + FColor& WheelFolderColorField() { return *GetNativePointerField(this, "UPrimalGameData.WheelFolderColor"); } + FColor& WheelBackColorField() { return *GetNativePointerField(this, "UPrimalGameData.WheelBackColor"); } + UTexture2D* MaxInventoryIconField() { return *GetNativePointerField(this, "UPrimalGameData.MaxInventoryIcon"); } + UTexture2D* ItemSkinIconField() { return *GetNativePointerField(this, "UPrimalGameData.ItemSkinIcon"); } + UTexture2D* TinyBlueprintIconField() { return *GetNativePointerField(this, "UPrimalGameData.TinyBlueprintIcon"); } + UMaterialInterface* TerritoryMapOverlayMaterialField() { return *GetNativePointerField(this, "UPrimalGameData.TerritoryMapOverlayMaterial"); } + TArray>& SkeletalPhysCustomBodyAdditionalIgnoresField() { return *GetNativePointerField>*>(this, "UPrimalGameData.SkeletalPhysCustomBodyAdditionalIgnores"); } + USoundBase* ActionWheelClickSoundField() { return *GetNativePointerField(this, "UPrimalGameData.ActionWheelClickSound"); } + USoundBase* Sound_GenericBoardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericBoardPassenger"); } + USoundBase* Sound_GenericUnboardPassengerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_GenericUnboardPassenger"); } + USoundBase* Sound_CraftingTabToggleField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CraftingTabToggle"); } + USoundBase* Sound_PlayerDeathStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_PlayerDeathStinger"); } + USoundBase* Sound_QuestCompletedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_QuestCompletedStinger"); } + USoundBase* Sound_ClaimedTerritoryStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ClaimedTerritoryStinger"); } + USoundBase* Sound_DisciplineUnlockedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DisciplineUnlockedStinger"); } + USoundBase* Sound_SkillUnlockedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_SkillUnlockedStinger"); } + USoundBase* Sound_DiscoveryLowStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DiscoveryLowStinger"); } + USoundBase* Sound_DiscoveryMedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DiscoveryMedStinger"); } + USoundBase* Sound_DiscoveryHighStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_DiscoveryHighStinger"); } + USoundBase* Sound_EnemyShipDestroyedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_EnemyShipDestroyedStinger"); } + USoundBase* Sound_CrewMemberRecruitedStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CrewMemberRecruitedStinger"); } + USoundBase* Sound_ShipLevelledUpStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ShipLevelledUpStinger"); } + USoundBase* Sound_CharacterLevelledUpStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_CharacterLevelledUpStinger"); } + USoundBase* Sound_ShipLevelUpAvailableStingerField() { return *GetNativePointerField(this, "UPrimalGameData.Sound_ShipLevelUpAvailableStinger"); } + TSubclassOf& GenericBatteryItemClassField() { return *GetNativePointerField*>(this, "UPrimalGameData.GenericBatteryItemClass"); } + UStaticMesh* PreviewGizmoMeshField() { return *GetNativePointerField(this, "UPrimalGameData.PreviewGizmoMesh"); } + TMap > ItemEngramMapField() { return *GetNativePointerField >*>(this, "UPrimalGameData.ItemEngramMap"); } + TMap > & StatGroupDefinitionsMapField() { return *GetNativePointerField >*>(this, "UPrimalGameData.StatGroupDefinitionsMap"); } + TArray& DefaultItemStatGroupModifierInfosField() { return *GetNativePointerField*>(this, "UPrimalGameData.DefaultItemStatGroupModifierInfos"); } + TArray& StatGroupDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.StatGroupDefinitions"); } + TArray>& DefaultFeatsField() { return *GetNativePointerField>*>(this, "UPrimalGameData.DefaultFeats"); } + TArray>& DefaultPossessedPlayerBuffsField() { return *GetNativePointerField>*>(this, "UPrimalGameData.DefaultPossessedPlayerBuffs"); } + TSubclassOf& TreasureMapItemTemplateField() { return *GetNativePointerField*>(this, "UPrimalGameData.TreasureMapItemTemplate"); } + TArray& ItemSlotTypeDefinitionsField() { return *GetNativePointerField*>(this, "UPrimalGameData.ItemSlotTypeDefinitions"); } + TArray& BonePresetSlidersField() { return *GetNativePointerField*>(this, "UPrimalGameData.BonePresetSliders"); } + float& GlobalGeneralArmorRatingPowerField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalGeneralArmorRatingPower"); } + float& GlobalSpecificArmorRatingPowerField() { return *GetNativePointerField(this, "UPrimalGameData.GlobalSpecificArmorRatingPower"); } + TArray& AdvancedBoneModifierSlidersField() { return *GetNativePointerField*>(this, "UPrimalGameData.AdvancedBoneModifierSliders"); } + FieldArray SoilTypeDescriptionsField() { return { this, "UPrimalGameData.SoilTypeDescriptions" }; } + FieldArray VitaminColorsField() { return { this, "UPrimalGameData.VitaminColors" }; } + UTexture2D* VitaminIconAddField() { return *GetNativePointerField(this, "UPrimalGameData.VitaminIconAdd"); } + TSubclassOf& DiscoveryZoneLocalClientBuffToGiveField() { return *GetNativePointerField*>(this, "UPrimalGameData.DiscoveryZoneLocalClientBuffToGive"); } + UTexture2D* VitaminIconSubtractField() { return *GetNativePointerField(this, "UPrimalGameData.VitaminIconSubtract"); } + UTexture2D* VitaminIconAddTowardsEqField() { return *GetNativePointerField(this, "UPrimalGameData.VitaminIconAddTowardsEq"); } + UTexture2D* VitaminIconMoveTowardsEqField() { return *GetNativePointerField(this, "UPrimalGameData.VitaminIconMoveTowardsEq"); } + TArray& GlobalItemQualityTierExtraCraftingResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalGameData.GlobalItemQualityTierExtraCraftingResourceRequirements"); } + TSubclassOf& ExtraResourceItemClassToUpgradeField() { return *GetNativePointerField*>(this, "UPrimalGameData.ExtraResourceItemClassToUpgrade"); } + TArray& LockedFeatsField() { return *GetNativePointerField*>(this, "UPrimalGameData.LockedFeats"); } + TSubclassOf& AlphaDinoBuffField() { return *GetNativePointerField*>(this, "UPrimalGameData.AlphaDinoBuff"); } + FLinearColor& PlacementPreviewColor_InvalidField() { return *GetNativePointerField(this, "UPrimalGameData.PlacementPreviewColor_Invalid"); } + FLinearColor& PlacementPreviewColor_ValidField() { return *GetNativePointerField(this, "UPrimalGameData.PlacementPreviewColor_Valid"); } + FLinearColor& PlacementPreviewColor_AltLocationsField() { return *GetNativePointerField(this, "UPrimalGameData.PlacementPreviewColor_AltLocations"); } + TArray& RegionSoilTypeRegionRemappingsField() { return *GetNativePointerField*>(this, "UPrimalGameData.RegionSoilTypeRegionRemappings"); } + TMap, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> > & ItemSlotTypeSocketNamesField() { return *GetNativePointerField, FDefaultSetAllocator, TDefaultMapKeyFuncs, 0> >*>(this, "UPrimalGameData.ItemSlotTypeSocketNames"); } + + // Functions + + static UPrimalGameData* BPGetGameData() { return NativeCall(nullptr, "UPrimalGameData.BPGetGameData"); } + bool CanTeamDamage(int attackerTeam, int victimTeam, AActor* Attacker) { return NativeCall(this, "UPrimalGameData.CanTeamDamage", attackerTeam, victimTeam, Attacker); } + bool CanTeamTarget(int attackerTeam, int victimTeam, int originalVictimTargetingTeam, AActor* Attacker, AActor* Victim) { return NativeCall(this, "UPrimalGameData.CanTeamTarget", attackerTeam, victimTeam, originalVictimTargetingTeam, Attacker, Victim); } + static void GetClassAdditions(TArray>* TheClassAdditions, TArray* ClassAdditions, TSubclassOf ForClass) { NativeCall>*, TArray*, TSubclassOf>(nullptr, "UPrimalGameData.GetClassAdditions", TheClassAdditions, ClassAdditions, ForClass); } + int GetDefinitionIndexForColorName(FName ColorName) { return NativeCall(this, "UPrimalGameData.GetDefinitionIndexForColorName", ColorName); } + FDinoBabySetup* GetDinoBabySetup(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.GetDinoBabySetup", DinoNameTag); } + FDinoBabySetup* GetDinoGestationSetup(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.GetDinoGestationSetup", DinoNameTag); } + int GetEngramRequirementLevel(UClass* ItemClass) { return NativeCall(this, "UPrimalGameData.GetEngramRequirementLevel", ItemClass); } + FString* GetExplorerNoteDescription(FString* result, int ExplorerNoteIndex) { return NativeCall(this, "UPrimalGameData.GetExplorerNoteDescription", result, ExplorerNoteIndex); } + USoundBase* GetGenericCombatMusic_Implementation(APrimalCharacter* forCharacter, APrimalCharacter* forEnemy, bool bIsNavalCombat) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic_Implementation", forCharacter, forEnemy, bIsNavalCombat); } + TArray* GetGlobalColorTable(TArray* result) { return NativeCall*, TArray*>(this, "UPrimalGameData.GetGlobalColorTable", result); } + int GetItemQualityIndex(float ItemRating) { return NativeCall(this, "UPrimalGameData.GetItemQualityIndex", ItemRating); } + FName* GetItemSlotTypeSocketName(FName* result, FName slotTypeName, int index) { return NativeCall(this, "UPrimalGameData.GetItemSlotTypeSocketName", result, slotTypeName, index); } + FLevelExperienceRamp* GetLevelExperienceRamp(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetLevelExperienceRamp", levelType); } + int GetLevelMax(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetLevelMax", levelType); } + float GetLevelXP(ELevelExperienceRampType::Type levelType, int forLevel) { return NativeCall(this, "UPrimalGameData.GetLevelXP", levelType, forLevel); } + float GetMaxExtraLevelPercentsForTotalDiscoveryZones(int NumDiscoveryZonePoints, int TotalDiscoveryZonePoints, int PlayerDefaultNoDiscoveriesMaxLevelUps) { return NativeCall(this, "UPrimalGameData.GetMaxExtraLevelPercentsForTotalDiscoveryZones", NumDiscoveryZonePoints, TotalDiscoveryZonePoints, PlayerDefaultNoDiscoveriesMaxLevelUps); } + int GetNamedTargetingTeamIndex(FName TargetingTeamName) { return NativeCall(this, "UPrimalGameData.GetNamedTargetingTeamIndex", TargetingTeamName); } + TArray* GetPlayerLevelEngramPoints() { return NativeCall*>(this, "UPrimalGameData.GetPlayerLevelEngramPoints"); } + TArray* GetPlayerSpawnRegions(TArray* result, UWorld* ForWorld, unsigned int ServerId) { return NativeCall*, TArray*, UWorld*, unsigned int>(this, "UPrimalGameData.GetPlayerSpawnRegions", result, ForWorld, ServerId); } + TArray* GetPlayerSpawnRegions(UWorld* ForWorld) { return NativeCall*, UWorld*>(this, "UPrimalGameData.GetPlayerSpawnRegions", ForWorld); } + static TSubclassOf* GetRemappedClass(TSubclassOf* result, TArray* RemappedClasses, TSubclassOf ForClass) { return NativeCall*, TSubclassOf*, TArray*, TSubclassOf>(nullptr, "UPrimalGameData.GetRemappedClass", result, RemappedClasses, ForClass); } + FString* GetSoilTypeName(FString* result, ESoilType soilType) { return NativeCall(this, "UPrimalGameData.GetSoilTypeName", result, soilType); } + FPrimalStatGroupDefinition* GetStatGroupDescription(FName StatGroupName) { return NativeCall(this, "UPrimalGameData.GetStatGroupDescription", StatGroupName); } + float GetTeamTargetingDesirabilityMultiplier(int attackerTeam, int victimTeam) { return NativeCall(this, "UPrimalGameData.GetTeamTargetingDesirabilityMultiplier", attackerTeam, victimTeam); } + float GetXPMax(ELevelExperienceRampType::Type levelType) { return NativeCall(this, "UPrimalGameData.GetXPMax", levelType); } + void Initialize() { NativeCall(this, "UPrimalGameData.Initialize"); } + static bool LocalIsGlobalExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(nullptr, "UPrimalGameData.LocalIsGlobalExplorerNoteUnlocked", ExplorerNoteIndex); } + static bool LocalIsPerMapExplorerNoteUnlocked(int ExplorerNoteIndex) { return NativeCall(nullptr, "UPrimalGameData.LocalIsPerMapExplorerNoteUnlocked", ExplorerNoteIndex); } + bool LocalIsTamedDinoTagUnlocked(FName DinoNameTag) { return NativeCall(this, "UPrimalGameData.LocalIsTamedDinoTagUnlocked", DinoNameTag); } + bool MergeModData(UPrimalGameData* InMergeCanidate) { return NativeCall(this, "UPrimalGameData.MergeModData", InMergeCanidate); } + static UClass* StaticClass() { return NativeCall(nullptr, "UPrimalGameData.StaticClass"); } + void BPInitializeGameData() { NativeCall(this, "UPrimalGameData.BPInitializeGameData"); } + void BPMergeModGameData(UPrimalGameData* AnotherGameData) { NativeCall(this, "UPrimalGameData.BPMergeModGameData", AnotherGameData); } + USoundBase* GetGenericCombatMusic(APrimalCharacter* forCharacter, APrimalCharacter* forEnemy, bool bIsNavalCombat) { return NativeCall(this, "UPrimalGameData.GetGenericCombatMusic", forCharacter, forEnemy, bIsNavalCombat); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalGameData.GetPrivateStaticClass", Package); } + void LoadedWorld(UWorld* TheWorld) { NativeCall(this, "UPrimalGameData.LoadedWorld", TheWorld); } + static void StaticRegisterNativesUPrimalGameData() { NativeCall(nullptr, "UPrimalGameData.StaticRegisterNativesUPrimalGameData"); } + void TickedWorld(UWorld* TheWorld, float DeltaTime) { NativeCall(this, "UPrimalGameData.TickedWorld", TheWorld, DeltaTime); } +}; \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/GameState.h b/version/Core/Public/API/Atlas/GameState.h new file mode 100644 index 00000000..01266277 --- /dev/null +++ b/version/Core/Public/API/Atlas/GameState.h @@ -0,0 +1,454 @@ +#pragma once + +struct AGameState : AInfo +{ + TSubclassOf& GameModeClassField() { return *GetNativePointerField*>(this, "AGameState.GameModeClass"); } + AGameMode * AuthorityGameModeField() { return *GetNativePointerField(this, "AGameState.AuthorityGameMode"); } + bool& bUnloadingLastLoadedSubLevelsField() { return *GetNativePointerField(this, "AGameState.bUnloadingLastLoadedSubLevels"); } + FName& MatchStateField() { return *GetNativePointerField(this, "AGameState.MatchState"); } + FName& PreviousMatchStateField() { return *GetNativePointerField(this, "AGameState.PreviousMatchState"); } + int& ElapsedTimeField() { return *GetNativePointerField(this, "AGameState.ElapsedTime"); } + TArray PlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.PlayerArray"); } + TArray InactivePlayerArrayField() { return *GetNativePointerField*>(this, "AGameState.InactivePlayerArray"); } + TArray& ReplicatedFoliageOverridesField() { return *GetNativePointerField*>(this, "AGameState.ReplicatedFoliageOverrides"); } + + // Bit fields + + BitFieldValue bServerAllowsAnsel() { return { this, "AGameState.bServerAllowsAnsel" }; } + + // Functions + + bool TeleportTo(FVector * DestLocation, FRotator * DestRotation, bool bIsATest, bool bNoCheck) { return NativeCall(this, "AGameState.TeleportTo", DestLocation, DestRotation, bIsATest, bNoCheck); } + //void `vcall'{2848,{flat}}(FHitResult * , FVector *) { NativeCall(this, "AGameState.`vcall'{2848,{flat}}", ,); } + void AddPlayerState(APlayerState * PlayerState) { NativeCall(this, "AGameState.AddPlayerState", PlayerState); } + void BPNetSpawnActorAtLocation(TSubclassOf AnActorClass, FVector AtLocation, FRotator AtRotation, AActor * EffectOwnerToIgnore, float MaxRangeToReplicate, USceneComponent * attachToComponent, int dataIndex, FName attachSocketName, bool bOnlySendToEffectOwner) { NativeCall, FVector, FRotator, AActor *, float, USceneComponent *, int, FName, bool>(this, "AGameState.BPNetSpawnActorAtLocation", AnActorClass, AtLocation, AtRotation, EffectOwnerToIgnore, MaxRangeToReplicate, attachToComponent, dataIndex, attachSocketName, bOnlySendToEffectOwner); } + void BeginPlay() { NativeCall(this, "AGameState.BeginPlay"); } + void DefaultTimer() { NativeCall(this, "AGameState.DefaultTimer"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } + void HandleMatchHasStarted() { NativeCall(this, "AGameState.HandleMatchHasStarted"); } + void HandleMatchIsWaitingToStart() { NativeCall(this, "AGameState.HandleMatchIsWaitingToStart"); } + bool HasMatchEnded() { return NativeCall(this, "AGameState.HasMatchEnded"); } + bool HasMatchStarted() { return NativeCall(this, "AGameState.HasMatchStarted"); } + bool IsMatchInProgress() { return NativeCall(this, "AGameState.IsMatchInProgress"); } + void NetSpawnActorAtLocation(TSubclassOf AnActorClass, FVector_NetQuantize AtLocation, FRotator_NetQuantize AtRotation, AActor * EffectOwnerToIgnore, float MaxRangeToReplicate, USceneComponent * attachToComponent, int dataIndex, FName attachSocketName, bool bOnlySendToEffectOwner) { NativeCall, FVector_NetQuantize, FRotator_NetQuantize, AActor *, float, USceneComponent *, int, FName, bool>(this, "AGameState.NetSpawnActorAtLocation", AnActorClass, AtLocation, AtRotation, EffectOwnerToIgnore, MaxRangeToReplicate, attachToComponent, dataIndex, attachSocketName, bOnlySendToEffectOwner); } + void OnRep_GameModeClass() { NativeCall(this, "AGameState.OnRep_GameModeClass"); } + void OnRep_MatchState() { NativeCall(this, "AGameState.OnRep_MatchState"); } + void OnRep_SpectatorClass() { NativeCall(this, "AGameState.OnRep_SpectatorClass"); } + void PostInitializeComponents() { NativeCall(this, "AGameState.PostInitializeComponents"); } + void ReceivedGameModeClass() { NativeCall(this, "AGameState.ReceivedGameModeClass"); } + void ReceivedSpectatorClass() { NativeCall(this, "AGameState.ReceivedSpectatorClass"); } + void RemovePlayerState(APlayerState * PlayerState) { NativeCall(this, "AGameState.RemovePlayerState", PlayerState); } + void SeamlessTravelTransitionCheckpoint(bool bToTransitionMap) { NativeCall(this, "AGameState.SeamlessTravelTransitionCheckpoint", bToTransitionMap); } + bool Semaphore_Release(FName SemaphoreName, AActor * InObject) { return NativeCall(this, "AGameState.Semaphore_Release", SemaphoreName, InObject); } + bool Semaphore_TryGrab(FName SemaphoreName, AActor * InObject, float PriorityWeight, int MaxToAllocate) { return NativeCall(this, "AGameState.Semaphore_TryGrab", SemaphoreName, InObject, PriorityWeight, MaxToAllocate); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "AGameState.GetPrivateStaticClass", Package); } +}; + +struct AShooterGameState : AGameState +{ + enum EMapImagesSource; + int& NumNPCField() { return *GetNativePointerField(this, "AShooterGameState.NumNPC"); } + int& NumHibernatedNPCField() { return *GetNativePointerField(this, "AShooterGameState.NumHibernatedNPC"); } + int& NumActiveNPCField() { return *GetNativePointerField(this, "AShooterGameState.NumActiveNPC"); } + int& NumDeadNPCField() { return *GetNativePointerField(this, "AShooterGameState.NumDeadNPC"); } + int& NumPlayerActorsField() { return *GetNativePointerField(this, "AShooterGameState.NumPlayerActors"); } + int& NumPlayerConnectedField() { return *GetNativePointerField(this, "AShooterGameState.NumPlayerConnected"); } + bool& bServerUseLocalizedChatField() { return *GetNativePointerField(this, "AShooterGameState.bServerUseLocalizedChat"); } + float& LocalizedChatRadiusField() { return *GetNativePointerField(this, "AShooterGameState.LocalizedChatRadius"); } + float& VoiceSuperRangeRadiusField() { return *GetNativePointerField(this, "AShooterGameState.VoiceSuperRangeRadius"); } + float& LocalizedChatRadiusUnconsiousScaleField() { return *GetNativePointerField(this, "AShooterGameState.LocalizedChatRadiusUnconsiousScale"); } + FieldArray PerLevelStatsMultiplier_PlayerField() { return {this, "AShooterGameState.PerLevelStatsMultiplier_Player"}; } + FieldArray PerLevelStatsMultiplier_DinoTamedField() { return {this, "AShooterGameState.PerLevelStatsMultiplier_DinoTamed"}; } + float& ServerFramerateField() { return *GetNativePointerField(this, "AShooterGameState.ServerFramerate"); } + bool& bAllowStructureDecayInLandClaimField() { return *GetNativePointerField(this, "AShooterGameState.bAllowStructureDecayInLandClaim"); } + FString& NewStructureDestructionTagField() { return *GetNativePointerField(this, "AShooterGameState.NewStructureDestructionTag"); } + int& DayNumberField() { return *GetNativePointerField(this, "AShooterGameState.DayNumber"); } + float& DayTimeField() { return *GetNativePointerField(this, "AShooterGameState.DayTime"); } + long double& NetworkTimeField() { return *GetNativePointerField(this, "AShooterGameState.NetworkTime"); } + int& NetUTCField() { return *GetNativePointerField(this, "AShooterGameState.NetUTC"); } + bool& bIsOfficialServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsOfficialServer"); } + bool& bIsListenServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsListenServer"); } + bool& bIsDediServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsDediServer"); } + bool& bIsArkTributeAvailableField() { return *GetNativePointerField(this, "AShooterGameState.bIsArkTributeAvailable"); } + bool& bIsArkDownloadsAllowedField() { return *GetNativePointerField(this, "AShooterGameState.bIsArkDownloadsAllowed"); } + bool& bAllowThirdPersonPlayerField() { return *GetNativePointerField(this, "AShooterGameState.bAllowThirdPersonPlayer"); } + bool& bServerHardcoreField() { return *GetNativePointerField(this, "AShooterGameState.bServerHardcore"); } + bool& bServerPVEField() { return *GetNativePointerField(this, "AShooterGameState.bServerPVE"); } + bool& bAutoPvEField() { return *GetNativePointerField(this, "AShooterGameState.bAutoPvE"); } + bool& bServerCrosshairField() { return *GetNativePointerField(this, "AShooterGameState.bServerCrosshair"); } + bool& bEnableHealthbarsField() { return *GetNativePointerField(this, "AShooterGameState.bEnableHealthbars"); } + bool& bServerForceNoHUDField() { return *GetNativePointerField(this, "AShooterGameState.bServerForceNoHUD"); } + bool& bFlyerPlatformAllowUnalignedDinoBasingField() { return *GetNativePointerField(this, "AShooterGameState.bFlyerPlatformAllowUnalignedDinoBasing"); } + bool& bMapPlayerLocationField() { return *GetNativePointerField(this, "AShooterGameState.bMapPlayerLocation"); } + bool& bPvEDisableFriendlyFireField() { return *GetNativePointerField(this, "AShooterGameState.bPvEDisableFriendlyFire"); } + bool& bPvEAllowTribeWarField() { return *GetNativePointerField(this, "AShooterGameState.bPvEAllowTribeWar"); } + bool& bPvEAllowTribeWarCancelField() { return *GetNativePointerField(this, "AShooterGameState.bPvEAllowTribeWarCancel"); } + bool& bEnablePvPGammaField() { return *GetNativePointerField(this, "AShooterGameState.bEnablePvPGamma"); } + bool& bDisablePvEGammaField() { return *GetNativePointerField(this, "AShooterGameState.bDisablePvEGamma"); } + int& NumTamedDinosField() { return *GetNativePointerField(this, "AShooterGameState.NumTamedDinos"); } + int& MaxStructuresInRangeField() { return *GetNativePointerField(this, "AShooterGameState.MaxStructuresInRange"); } + float& DayCycleSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameState.DayCycleSpeedScale"); } + float& DayTimeSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameState.DayTimeSpeedScale"); } + float& NightTimeSpeedScaleField() { return *GetNativePointerField(this, "AShooterGameState.NightTimeSpeedScale"); } + float& PvEStructureDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PvEStructureDecayPeriodMultiplier"); } + float& PvEDinoDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PvEDinoDecayPeriodMultiplier"); } + float& PerPlatformMaxStructuresMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PerPlatformMaxStructuresMultiplier"); } + bool& bDisableStructureDecayPvEField() { return *GetNativePointerField(this, "AShooterGameState.bDisableStructureDecayPvE"); } + bool& bDisableDinoDecayPvEField() { return *GetNativePointerField(this, "AShooterGameState.bDisableDinoDecayPvE"); } + bool& bAllowCaveBuildingPvEField() { return *GetNativePointerField(this, "AShooterGameState.bAllowCaveBuildingPvE"); } + bool& bPreventDownloadSurvivorsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventDownloadSurvivors"); } + bool& bReachedPlatformStructureLimitField() { return *GetNativePointerField(this, "AShooterGameState.bReachedPlatformStructureLimit"); } + bool& bAdminLoggingField() { return *GetNativePointerField(this, "AShooterGameState.bAdminLogging"); } + bool& bPvPStructureDecayField() { return *GetNativePointerField(this, "AShooterGameState.bPvPStructureDecay"); } + bool& bPreventDownloadDinosField() { return *GetNativePointerField(this, "AShooterGameState.bPreventDownloadDinos"); } + bool& bPreventDownloadItemsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventDownloadItems"); } + bool& bPreventUploadDinosField() { return *GetNativePointerField(this, "AShooterGameState.bPreventUploadDinos"); } + bool& bPreventUploadItemsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventUploadItems"); } + bool& bPreventUploadSurvivorsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventUploadSurvivors"); } + bool& bPreventMateBoostField() { return *GetNativePointerField(this, "AShooterGameState.bPreventMateBoost"); } + bool& bPreventStructurePaintingField() { return *GetNativePointerField(this, "AShooterGameState.bPreventStructurePainting"); } + float& OverridenOceanWindSpeedField() { return *GetNativePointerField(this, "AShooterGameState.OverridenOceanWindSpeed"); } + float& OceanWindSpeedField() { return *GetNativePointerField(this, "AShooterGameState.OceanWindSpeed"); } + bool& bAllowCharacterCreationField() { return *GetNativePointerField(this, "AShooterGameState.bAllowCharacterCreation"); } + bool& bAllowSpawnPointSelectionField() { return *GetNativePointerField(this, "AShooterGameState.bAllowSpawnPointSelection"); } + int& MaxTamedDinosField() { return *GetNativePointerField(this, "AShooterGameState.MaxTamedDinos"); } + bool& bDisableSpawnAnimationsField() { return *GetNativePointerField(this, "AShooterGameState.bDisableSpawnAnimations"); } + FString& PlayerListStringField() { return *GetNativePointerField(this, "AShooterGameState.PlayerListString"); } + float& GlobalSpoilingTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalSpoilingTimeMultiplier"); } + float& GlobalItemDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalItemDecompositionTimeMultiplier"); } + int& MaxNumberOfPlayersInTribeField() { return *GetNativePointerField(this, "AShooterGameState.MaxNumberOfPlayersInTribe"); } + float& GlobalCorpseDecompositionTimeMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.GlobalCorpseDecompositionTimeMultiplier"); } + float& EggHatchSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.EggHatchSpeedMultiplier"); } + bool& bAllowPaintingWithoutResourcesField() { return *GetNativePointerField(this, "AShooterGameState.bAllowPaintingWithoutResources"); } + bool& bEnableExtraStructurePreventionVolumesField() { return *GetNativePointerField(this, "AShooterGameState.bEnableExtraStructurePreventionVolumes"); } + TArray& OverrideItemCraftingCostsField() { return *GetNativePointerField*>(this, "AShooterGameState.OverrideItemCraftingCosts"); } + long double& LastServerSaveTimeField() { return *GetNativePointerField(this, "AShooterGameState.LastServerSaveTime"); } + float& ServerSaveIntervalField() { return *GetNativePointerField(this, "AShooterGameState.ServerSaveInterval"); } + FName& LastLoadedSubLevelField() { return *GetNativePointerField(this, "AShooterGameState.LastLoadedSubLevel"); } + float& TribeNameChangeCooldownField() { return *GetNativePointerField(this, "AShooterGameState.TribeNameChangeCooldown"); } + TArray& CurrentSubLevelsField() { return *GetNativePointerField*>(this, "AShooterGameState.CurrentSubLevels"); } + FString& MetaWorldURLField() { return *GetNativePointerField(this, "AShooterGameState.MetaWorldURL"); } + FString& GridIPField() { return *GetNativePointerField(this, "AShooterGameState.GridIP"); } + int& GridGamePortField() { return *GetNativePointerField(this, "AShooterGameState.GridGamePort"); } + unsigned int& ServerIdField() { return *GetNativePointerField(this, "AShooterGameState.ServerId"); } + FVector2D& MapGridCellStartField() { return *GetNativePointerField(this, "AShooterGameState.MapGridCellStart"); } + FVector2D& MapGridCellScaleField() { return *GetNativePointerField(this, "AShooterGameState.MapGridCellScale"); } + FAsyncUpdatableTexture2D& TerritoryOverlayWorldTextureField() { return *GetNativePointerField(this, "AShooterGameState.TerritoryOverlayWorldTexture"); } + FAsyncUpdatableTexture2D& TerritoryOverlayCurrentServerTextureField() { return *GetNativePointerField(this, "AShooterGameState.TerritoryOverlayCurrentServerTexture"); } + bool& bAllowHideDamageSourceFromLogsField() { return *GetNativePointerField(this, "AShooterGameState.bAllowHideDamageSourceFromLogs"); } + FieldArray ExpensiveFunctionsField() { return {this, "AShooterGameState.ExpensiveFunctions"}; } + UAudioComponent * DynamicMusicAudioComponentField() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent"); } + UAudioComponent * DynamicMusicAudioComponent2Field() { return *GetNativePointerField(this, "AShooterGameState.DynamicMusicAudioComponent2"); } + bool& bPlayingDynamicMusicField() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic"); } + bool& bPlayingDynamicMusic1Field() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic1"); } + bool& bPlayingDynamicMusic2Field() { return *GetNativePointerField(this, "AShooterGameState.bPlayingDynamicMusic2"); } + float& LastHadMusicTimeField() { return *GetNativePointerField(this, "AShooterGameState.LastHadMusicTime"); } + TArray& LevelExperienceRampOverridesField() { return *GetNativePointerField*>(this, "AShooterGameState.LevelExperienceRampOverrides"); } + TArray& OverrideEngramEntriesField() { return *GetNativePointerField*>(this, "AShooterGameState.OverrideEngramEntries"); } + TArray& PreventDinoTameClassNamesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventDinoTameClassNames"); } + float& ListenServerTetherDistanceMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.ListenServerTetherDistanceMultiplier"); } + FString& PGMapNameField() { return *GetNativePointerField(this, "AShooterGameState.PGMapName"); } + TArray& SupportedSpawnRegionsField() { return *GetNativePointerField*>(this, "AShooterGameState.SupportedSpawnRegions"); } + UPaintingCache * PaintingCacheField() { return *GetNativePointerField(this, "AShooterGameState.PaintingCache"); } + USoundBase * StaticOverrideMusicField() { return *GetNativePointerField(this, "AShooterGameState.StaticOverrideMusic"); } + bool& bEnableDeathTeamSpectatorField() { return *GetNativePointerField(this, "AShooterGameState.bEnableDeathTeamSpectator"); } + FVector& PlayerFloatingHUDOffsetField() { return *GetNativePointerField(this, "AShooterGameState.PlayerFloatingHUDOffset"); } + float& PlayerFloatingHUDOffsetScreenYField() { return *GetNativePointerField(this, "AShooterGameState.PlayerFloatingHUDOffsetScreenY"); } + float& StructureDamageRepairCooldownField() { return *GetNativePointerField(this, "AShooterGameState.StructureDamageRepairCooldown"); } + bool& bFirstTickedField() { return *GetNativePointerField(this, "AShooterGameState.bFirstTicked"); } + bool& bForceAllStructureLockingField() { return *GetNativePointerField(this, "AShooterGameState.bForceAllStructureLocking"); } + bool& bAllowCustomRecipesField() { return *GetNativePointerField(this, "AShooterGameState.bAllowCustomRecipes"); } + bool& bAllowRaidDinoFeedingField() { return *GetNativePointerField(this, "AShooterGameState.bAllowRaidDinoFeeding"); } + float& CustomRecipeEffectivenessMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.CustomRecipeEffectivenessMultiplier"); } + float& CustomRecipeSkillMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.CustomRecipeSkillMultiplier"); } + ATreasureMapManager * TreasureMapManagerField() { return *GetNativePointerField(this, "AShooterGameState.TreasureMapManager"); } + USoundBase * OverrideAreaMusicField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusic"); } + FVector& OverrideAreaMusicPositionField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusicPosition"); } + float& OverrideAreaMusicRangeField() { return *GetNativePointerField(this, "AShooterGameState.OverrideAreaMusicRange"); } + bool& bAllowUnclaimDinosField() { return *GetNativePointerField(this, "AShooterGameState.bAllowUnclaimDinos"); } + float& FloatingHUDRangeField() { return *GetNativePointerField(this, "AShooterGameState.FloatingHUDRange"); } + float& FloatingChatRangeField() { return *GetNativePointerField(this, "AShooterGameState.FloatingChatRange"); } + int& ExtinctionEventTimeIntervalField() { return *GetNativePointerField(this, "AShooterGameState.ExtinctionEventTimeInterval"); } + float& ExtinctionEventPercentField() { return *GetNativePointerField(this, "AShooterGameState.ExtinctionEventPercent"); } + int& ExtinctionEventSecondsRemainingField() { return *GetNativePointerField(this, "AShooterGameState.ExtinctionEventSecondsRemaining"); } + bool& bDoExtinctionEventField() { return *GetNativePointerField(this, "AShooterGameState.bDoExtinctionEvent"); } + TArray& InventoryComponentAppendsField() { return *GetNativePointerField*>(this, "AShooterGameState.InventoryComponentAppends"); } + bool& bPreventOfflinePvPField() { return *GetNativePointerField(this, "AShooterGameState.bPreventOfflinePvP"); } + bool& bPvPDinoDecayField() { return *GetNativePointerField(this, "AShooterGameState.bPvPDinoDecay"); } + bool& bForceUseInventoryAppendsField() { return *GetNativePointerField(this, "AShooterGameState.bForceUseInventoryAppends"); } + bool& bOverideStructurePlatformPreventionField() { return *GetNativePointerField(this, "AShooterGameState.bOverideStructurePlatformPrevention"); } + TArray& PreventOfflinePvPLiveTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPLiveTeams"); } + TArray& PreventOfflinePvPExpiringTeamsField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTeams"); } + TArray& PreventOfflinePvPExpiringTimesField() { return *GetNativePointerField*>(this, "AShooterGameState.PreventOfflinePvPExpiringTimes"); } + TMap >& PreventOfflinePvPLiveTimesField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPLiveTimes"); } + TMap >& PreventOfflinePvPFirstLiveTimeField() { return *GetNativePointerField >*>(this, "AShooterGameState.PreventOfflinePvPFirstLiveTime"); } + FString& TerritoryOverlayFullWorldUrlField() { return *GetNativePointerField(this, "AShooterGameState.TerritoryOverlayFullWorldUrl"); } + FString& TerritoryOverlayCurrentServerUrlField() { return *GetNativePointerField(this, "AShooterGameState.TerritoryOverlayCurrentServerUrl"); } + bool& bAllowAnyoneBabyImprintCuddleField() { return *GetNativePointerField(this, "AShooterGameState.bAllowAnyoneBabyImprintCuddle"); } + bool& bDisableImprintDinoBuffField() { return *GetNativePointerField(this, "AShooterGameState.bDisableImprintDinoBuff"); } + TArray& FloatingTextEntriesField() { return *GetNativePointerField*>(this, "AShooterGameState.FloatingTextEntries"); } + bool& bIsCustomMapField() { return *GetNativePointerField(this, "AShooterGameState.bIsCustomMap"); } + bool& bIsClientField() { return *GetNativePointerField(this, "AShooterGameState.bIsClient"); } + bool& bIsDedicatedServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsDedicatedServer"); } + bool& bInitializedGridInfoField() { return *GetNativePointerField(this, "AShooterGameState.bInitializedGridInfo"); } + FString& ClusterIdField() { return *GetNativePointerField(this, "AShooterGameState.ClusterId"); } + FString& ServerSessionNameField() { return *GetNativePointerField(this, "AShooterGameState.ServerSessionName"); } + bool& bPreventTribeAlliancesField() { return *GetNativePointerField(this, "AShooterGameState.bPreventTribeAlliances"); } + FString& LoadForceRespawnDinosTagField() { return *GetNativePointerField(this, "AShooterGameState.LoadForceRespawnDinosTag"); } + bool& bOnlyDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bOnlyDecayUnsnappedCoreStructures"); } + bool& bFastDecayUnsnappedCoreStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bFastDecayUnsnappedCoreStructures"); } + bool& bServerUseDinoListField() { return *GetNativePointerField(this, "AShooterGameState.bServerUseDinoList"); } + bool& bPvEAllowStructuresAtSupplyDropsField() { return *GetNativePointerField(this, "AShooterGameState.bPvEAllowStructuresAtSupplyDrops"); } + bool& bAllowForceNetUpdateField() { return *GetNativePointerField(this, "AShooterGameState.bAllowForceNetUpdate"); } + float& MinimumDinoReuploadIntervalField() { return *GetNativePointerField(this, "AShooterGameState.MinimumDinoReuploadInterval"); } + float& HairGrowthSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.HairGrowthSpeedMultiplier"); } + float& FastDecayIntervalField() { return *GetNativePointerField(this, "AShooterGameState.FastDecayInterval"); } + float& OxygenSwimSpeedStatMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.OxygenSwimSpeedStatMultiplier"); } + FOnHTTPGetProcessed& OnHTTPGetResponseField() { return *GetNativePointerField(this, "AShooterGameState.OnHTTPGetResponse"); } + FOnHTTPPostResponse& OnHTTPPostResponseField() { return *GetNativePointerField(this, "AShooterGameState.OnHTTPPostResponse"); } + bool& bAllowMultipleAttachedC4Field() { return *GetNativePointerField(this, "AShooterGameState.bAllowMultipleAttachedC4"); } + bool& bCrossARKAllowForeignDinoDownloadsField() { return *GetNativePointerField(this, "AShooterGameState.bCrossARKAllowForeignDinoDownloads"); } + long double& LastPlayedDynamicMusic1Field() { return *GetNativePointerField(this, "AShooterGameState.LastPlayedDynamicMusic1"); } + long double& LastPlayedDynamicMusic2Field() { return *GetNativePointerField(this, "AShooterGameState.LastPlayedDynamicMusic2"); } + bool& bUseCorpseLocatorField() { return *GetNativePointerField(this, "AShooterGameState.bUseCorpseLocator"); } + bool& bDisableStructurePlacementCollisionField() { return *GetNativePointerField(this, "AShooterGameState.bDisableStructurePlacementCollision"); } + bool& bUseSingleplayerSettingsField() { return *GetNativePointerField(this, "AShooterGameState.bUseSingleplayerSettings"); } + bool& bAllowPlatformSaddleMultiFloorsField() { return *GetNativePointerField(this, "AShooterGameState.bAllowPlatformSaddleMultiFloors"); } + bool& bPreventSpawnAnimationsField() { return *GetNativePointerField(this, "AShooterGameState.bPreventSpawnAnimations"); } + int& MaxAlliancesPerTribeField() { return *GetNativePointerField(this, "AShooterGameState.MaxAlliancesPerTribe"); } + int& MaxTribesPerAllianceField() { return *GetNativePointerField(this, "AShooterGameState.MaxTribesPerAlliance"); } + bool& bIsLegacyServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsLegacyServer"); } + bool& bDisableDinoDecayClaimingField() { return *GetNativePointerField(this, "AShooterGameState.bDisableDinoDecayClaiming"); } + FName& UseStructurePreventionVolumeTagField() { return *GetNativePointerField(this, "AShooterGameState.UseStructurePreventionVolumeTag"); } + int& MaxStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameState.MaxStructuresInSmallRadius"); } + float& RadiusStructuresInSmallRadiusField() { return *GetNativePointerField(this, "AShooterGameState.RadiusStructuresInSmallRadius"); } + bool& bUseTameLimitForStructuresOnlyField() { return *GetNativePointerField(this, "AShooterGameState.bUseTameLimitForStructuresOnly"); } + bool& bLimitTurretsInRangeField() { return *GetNativePointerField(this, "AShooterGameState.bLimitTurretsInRange"); } + float& LimitTurretsRangeField() { return *GetNativePointerField(this, "AShooterGameState.LimitTurretsRange"); } + int& LimitTurretsNumField() { return *GetNativePointerField(this, "AShooterGameState.LimitTurretsNum"); } + bool& bForceAllowAllStructuresField() { return *GetNativePointerField(this, "AShooterGameState.bForceAllowAllStructures"); } + bool& bShowCreativeModeField() { return *GetNativePointerField(this, "AShooterGameState.bShowCreativeMode"); } + TArray& PlayerLocatorEffectMapsField() { return *GetNativePointerField*>(this, "AShooterGameState.PlayerLocatorEffectMaps"); } + int& AmbientSoundCheckIncrementField() { return *GetNativePointerField(this, "AShooterGameState.AmbientSoundCheckIncrement"); } + int& STASISAUTODESTROY_CheckIncrementField() { return *GetNativePointerField(this, "AShooterGameState.STASISAUTODESTROY_CheckIncrement"); } + bool& bLoadingLastLoadedSubLevelsField() { return *GetNativePointerField(this, "AShooterGameState.bLoadingLastLoadedSubLevels"); } + bool& bOverrideWindSpeedField() { return *GetNativePointerField(this, "AShooterGameState.bOverrideWindSpeed"); } + float& PreventOfflinePvPConnectionInvincibleIntervalField() { return *GetNativePointerField(this, "AShooterGameState.PreventOfflinePvPConnectionInvincibleInterval"); } + float& PassiveTameIntervalMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.PassiveTameIntervalMultiplier"); } + float& OverrideWindDirectionField() { return *GetNativePointerField(this, "AShooterGameState.OverrideWindDirection"); } + float& BedBaseCooldownTimeField() { return *GetNativePointerField(this, "AShooterGameState.BedBaseCooldownTime"); } + bool& bUseStaticCharacterAgeField() { return *GetNativePointerField(this, "AShooterGameState.bUseStaticCharacterAge"); } + int& OverrideMaxExperiencePointsPlayerField() { return *GetNativePointerField(this, "AShooterGameState.OverrideMaxExperiencePointsPlayer"); } + int& OverrideMaxExperiencePointsDinoField() { return *GetNativePointerField(this, "AShooterGameState.OverrideMaxExperiencePointsDino"); } + float& BedAdditionalCoolDownSecondsForEveryKilometerField() { return *GetNativePointerField(this, "AShooterGameState.BedAdditionalCoolDownSecondsForEveryKilometer"); } + TArray& CompressedGridInfoField() { return *GetNativePointerField*>(this, "AShooterGameState.CompressedGridInfo"); } + TArray& MapChecksumsField() { return *GetNativePointerField*>(this, "AShooterGameState.MapChecksums"); } + bool& bDownloadGridInfoField() { return *GetNativePointerField(this, "AShooterGameState.bDownloadGridInfo"); } + long double& LocalGameplayTimeSecondsField() { return *GetNativePointerField(this, "AShooterGameState.LocalGameplayTimeSeconds"); } + FieldArray MaxTameUnitsField() { return {this, "AShooterGameState.MaxTameUnits"}; } + float& TamingSpeedMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.TamingSpeedMultiplier"); } + FString& GridURLField() { return *GetNativePointerField(this, "AShooterGameState.GridURL"); } + float& LastGridDownloadAttemptField() { return *GetNativePointerField(this, "AShooterGameState.LastGridDownloadAttempt"); } + float& RetryDownloadingGridIntervalField() { return *GetNativePointerField(this, "AShooterGameState.RetryDownloadingGridInterval"); } + bool& bSuccessfullyDownloadedGridInfoField() { return *GetNativePointerField(this, "AShooterGameState.bSuccessfullyDownloadedGridInfo"); } + long double& GlobalOverSubscriptionTimeLimitAtField() { return *GetNativePointerField(this, "AShooterGameState.GlobalOverSubscriptionTimeLimitAt"); } + FGlobalGameplaySetup& ReplicatedGlobalGameplaySetupField() { return *GetNativePointerField(this, "AShooterGameState.ReplicatedGlobalGameplaySetup"); } + bool& bDisableBedsOnThisServerField() { return *GetNativePointerField(this, "AShooterGameState.bDisableBedsOnThisServer"); } + bool& bRequestingMetaWorldField() { return *GetNativePointerField(this, "AShooterGameState.bRequestingMetaWorld"); } + TEnumAsByte& MapImagesSourceField() { return *GetNativePointerField*>(this, "AShooterGameState.MapImagesSource"); } + TArray& CompressedMiniMapBytesField() { return *GetNativePointerField*>(this, "AShooterGameState.CompressedMiniMapBytes"); } + TArray& CompressedCellImagesBytesField() { return *GetNativePointerField*>(this, "AShooterGameState.CompressedCellImagesBytes"); } + FRegionGeneralOverrides& ReplicatedRegionOverridesField() { return *GetNativePointerField(this, "AShooterGameState.ReplicatedRegionOverrides"); } + FSocket * SeamlessDataSocketField() { return *GetNativePointerField(this, "AShooterGameState.SeamlessDataSocket"); } + bool& bIsHomeServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsHomeServer"); } + bool& bIsLawlessHomeServerField() { return *GetNativePointerField(this, "AShooterGameState.bIsLawlessHomeServer"); } + bool& bNoDinoTamingField() { return *GetNativePointerField(this, "AShooterGameState.bNoDinoTaming"); } + bool& bNoAnchoringField() { return *GetNativePointerField(this, "AShooterGameState.bNoAnchoring"); } + bool& bDontUseClaimFlagsField() { return *GetNativePointerField(this, "AShooterGameState.bDontUseClaimFlags"); } + float& NoClaimFlagDecayPeriodMultiplierField() { return *GetNativePointerField(this, "AShooterGameState.NoClaimFlagDecayPeriodMultiplier"); } + int& PlayerDefaultNoDiscoveriesMaxLevelUpsField() { return *GetNativePointerField(this, "AShooterGameState.PlayerDefaultNoDiscoveriesMaxLevelUps"); } + bool& bClampHomeServerXPField() { return *GetNativePointerField(this, "AShooterGameState.bClampHomeServerXP"); } + int& ClampHomeServerXPLevelField() { return *GetNativePointerField(this, "AShooterGameState.ClampHomeServerXPLevel"); } + TArray& ReceivedUnProcessedBytesField() { return *GetNativePointerField*>(this, "AShooterGameState.ReceivedUnProcessedBytes"); } + + // Functions + + UObject * GetUObjectInterfaceHUDInterface() { return NativeCall(this, "AShooterGameState.GetUObjectInterfaceHUDInterface"); } + static void BaseDrawTileOnCanvas(AShooterHUD * HUD, UTexture * Tex, float X, float Y, float XL, float YL, float U, float V, float UL, float VL, FColor DrawColor) { NativeCall(nullptr, "AShooterGameState.BaseDrawTileOnCanvas", HUD, Tex, X, Y, XL, YL, U, V, UL, VL, DrawColor); } + void AddFloatingDamageText(FVector AtLocation, int DamageAmount, int FromTeamID) { NativeCall(this, "AShooterGameState.AddFloatingDamageText", AtLocation, DamageAmount, FromTeamID); } + void AddFloatingText(FVector AtLocation, FString FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime) { NativeCall(this, "AShooterGameState.AddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime); } + bool AllowDaytimeTransitionSounds() { return NativeCall(this, "AShooterGameState.AllowDaytimeTransitionSounds"); } + bool AllowDinoClassTame(TSubclassOf DinoCharClass, AShooterPlayerController * ForPC) { return NativeCall, AShooterPlayerController *>(this, "AShooterGameState.AllowDinoClassTame", DinoCharClass, ForPC); } + bool AllowDinoTame(APrimalDinoCharacter * DinoChar, AShooterPlayerController * ForPC) { return NativeCall(this, "AShooterGameState.AllowDinoTame", DinoChar, ForPC); } + bool AllowDownloadDino_Implementation(TSubclassOf TheDinoClass) { return NativeCall>(this, "AShooterGameState.AllowDownloadDino_Implementation", TheDinoClass); } + bool AttemptLoadMapImages(__int16 MinX, __int16 MaxX, __int16 MinY, __int16 MaxY) { return NativeCall(this, "AShooterGameState.AttemptLoadMapImages", MinX, MaxX, MinY, MaxY); } + TArray * BaseGetAllDinoCharactersOfTeam(TArray * result, int Team) { return NativeCall *, TArray *, int>(this, "AShooterGameState.BaseGetAllDinoCharactersOfTeam", result, Team); } + TArray * BaseGetAllShooterCharacters(TArray * result) { return NativeCall *, TArray *>(this, "AShooterGameState.BaseGetAllShooterCharacters", result); } + TArray * BaseGetAllShooterCharactersOfTeam(TArray * result, int Team) { return NativeCall *, TArray *, int>(this, "AShooterGameState.BaseGetAllShooterCharactersOfTeam", result, Team); } + TArray * BaseGetAllShooterControllers(TArray * result) { return NativeCall *, TArray *>(this, "AShooterGameState.BaseGetAllShooterControllers", result); } + static APrimalBuff * BaseSpawnBuffAndAttachToCharacter(UClass * Buff, APrimalCharacter * PrimalCharacter, float ExperiencePoints) { return NativeCall(nullptr, "AShooterGameState.BaseSpawnBuffAndAttachToCharacter", Buff, PrimalCharacter, ExperiencePoints); } + void BeginPlay() { NativeCall(this, "AShooterGameState.BeginPlay"); } + void ClientOnStartSeamlessTravel_Implementation() { NativeCall(this, "AShooterGameState.ClientOnStartSeamlessTravel_Implementation"); } + void ConvertMapFileToTexture(TArray * InBytes, FAsyncUpdatableTexture2D * DestTexture) { NativeCall *, FAsyncUpdatableTexture2D *>(this, "AShooterGameState.ConvertMapFileToTexture", InBytes, DestTexture); } + void CreateCustomGameUI(AShooterPlayerController * SceneOwner) { NativeCall(this, "AShooterGameState.CreateCustomGameUI", SceneOwner); } + void Destroyed() { NativeCall(this, "AShooterGameState.Destroyed"); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "AShooterGameState.DrawHUD", HUD); } + void FirstTick_Implementation() { NativeCall(this, "AShooterGameState.FirstTick_Implementation"); } + void ForceNetUpdate(bool bDormantDontReplicateProperties, bool bAbsoluteForceNetUpdate) { NativeCall(this, "AShooterGameState.ForceNetUpdate", bDormantDontReplicateProperties, bAbsoluteForceNetUpdate); } + void ForceUpdateTerritoryMap() { NativeCall(this, "AShooterGameState.ForceUpdateTerritoryMap"); } + unsigned int GetBedCoolDownTimeForTravelingFrom(unsigned int OriginServerId, FVector2D * RelativeLocInOriginServer, unsigned int DestServerId, FVector2D * RelativeLocInDestServer) { return NativeCall(this, "AShooterGameState.GetBedCoolDownTimeForTravelingFrom", OriginServerId, RelativeLocInOriginServer, DestServerId, RelativeLocInDestServer); } + FString * GetCleanServerSessionName(FString * result) { return NativeCall(this, "AShooterGameState.GetCleanServerSessionName", result); } + float GetClientReplicationRateFor(UNetConnection * InConnection, AActor * InActor) { return NativeCall(this, "AShooterGameState.GetClientReplicationRateFor", InConnection, InActor); } + FString * GetDayTimeString(FString * result) { return NativeCall(this, "AShooterGameState.GetDayTimeString", result); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "AShooterGameState.GetLifetimeReplicatedProps", OutLifetimeProps); } + FVector * GetLocalPlayerLocation(FVector * result) { return NativeCall(this, "AShooterGameState.GetLocalPlayerLocation", result); } + float GetMatineePlayRate(AActor * forMatineeActor) { return NativeCall(this, "AShooterGameState.GetMatineePlayRate", forMatineeActor); } + static int GetNetUTC(UWorld * ForWorld) { return NativeCall(nullptr, "AShooterGameState.GetNetUTC", ForWorld); } + long double GetNetworkTime() { return NativeCall(this, "AShooterGameState.GetNetworkTime"); } + static long double GetNetworkTimeDelta(AShooterGameState * gameState, long double netTime, bool bTimeUntil) { return NativeCall(nullptr, "AShooterGameState.GetNetworkTimeDelta", gameState, netTime, bTimeUntil); } + long double GetOfflineDamagePreventionTime(int TargetingTeamID) { return NativeCall(this, "AShooterGameState.GetOfflineDamagePreventionTime", TargetingTeamID); } + float GetRealTimeTotalDayLengthSeconds() { return NativeCall(this, "AShooterGameState.GetRealTimeTotalDayLengthSeconds"); } + FString * GetSaveDirectoryName(FString * result, ESaveType::Type SaveType) { return NativeCall(this, "AShooterGameState.GetSaveDirectoryName", result, SaveType); } + float GetServerFramerate() { return NativeCall(this, "AShooterGameState.GetServerFramerate"); } + void GridGetRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.GridGetRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } + void HTTPGetRequest(FString InURL) { NativeCall(this, "AShooterGameState.HTTPGetRequest", InURL); } + void HTTPGetRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPGetRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } + void HTTPPostRequest(FString InURL, FString Content) { NativeCall(this, "AShooterGameState.HTTPPostRequest", InURL, Content); } + void HTTPPostRequestCompleted(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HTTPPostRequestCompleted", HttpRequest, HttpResponse, bSucceeded); } + void HttpGetTerritoryOverlayFullMap_RequestComplete(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.HttpGetTerritoryOverlayFullMap_RequestComplete", HttpRequest, HttpResponse, bSucceeded); } + void HttpRequestMetaWorldURL() { NativeCall(this, "AShooterGameState.HttpRequestMetaWorldURL"); } + void InitSeamlessDataSocket() { NativeCall(this, "AShooterGameState.InitSeamlessDataSocket"); } + void InitializedGameState() { NativeCall(this, "AShooterGameState.InitializedGameState"); } + void InitiateClientMapImagesCache() { NativeCall(this, "AShooterGameState.InitiateClientMapImagesCache"); } + bool IsAtTameUnitLimit(int ForTeam, ETameUnitType::Type TheTameUnitType, AShooterPlayerController * ForPC, int TameLimitOffset, bool bIgnoreGlobalCheck) { return NativeCall(this, "AShooterGameState.IsAtTameUnitLimit", ForTeam, TheTameUnitType, ForPC, TameLimitOffset, bIgnoreGlobalCheck); } + bool IsClusterServer() { return NativeCall(this, "AShooterGameState.IsClusterServer"); } + bool IsTeamIDInvincible(int TargetingTeamID, bool bInvincibleOnlyWhenOffline) { return NativeCall(this, "AShooterGameState.IsTeamIDInvincible", TargetingTeamID, bInvincibleOnlyWhenOffline); } + void LevelAddedToWorld(ULevel * addedLevel) { NativeCall(this, "AShooterGameState.LevelAddedToWorld", addedLevel); } + void NetAddFloatingDamageText(FVector AtLocation, int DamageAmount, int FromTeamID, int OnlySendToTeamID, bool bForceText) { NativeCall(this, "AShooterGameState.NetAddFloatingDamageText", AtLocation, DamageAmount, FromTeamID, OnlySendToTeamID, bForceText); } + void NetAddFloatingText(FVector AtLocation, FString FloatingTextString, FColor FloatingTextColor, float ScaleX, float ScaleY, float TextLifeSpan, FVector TextVelocity, float MinScale, float FadeInTime, float FadeOutTime, int OnlySendToTeamID, bool bForce) { NativeCall(this, "AShooterGameState.NetAddFloatingText", AtLocation, FloatingTextString, FloatingTextColor, ScaleX, ScaleY, TextLifeSpan, TextVelocity, MinScale, FadeInTime, FadeOutTime, OnlySendToTeamID, bForce); } + void NetUpdateOfflinePvPExpiringTeams_Implementation(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall *, TArray *>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams_Implementation", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } + void NetUpdateOfflinePvPLiveTeams_Implementation(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall *>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams_Implementation", NewPreventOfflinePvPLiveTeams); } + void NotifyPlayerDied(AShooterCharacter * theShooterChar, AShooterPlayerController * prevController, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "AShooterGameState.NotifyPlayerDied", theShooterChar, prevController, InstigatingPawn, DamageCauser); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "AShooterGameState.OnDeserializedByGame", DeserializationType); } + void OnGetGridCellMapFromURLDone(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded, unsigned int CellServerId) { NativeCall, TSharedPtr, bool, unsigned int>(this, "AShooterGameState.OnGetGridCellMapFromURLDone", HttpRequest, HttpResponse, bSucceeded, CellServerId); } + void OnGetWorldMapFromURLDone(TSharedPtr HttpRequest, TSharedPtr HttpResponse, bool bSucceeded) { NativeCall, TSharedPtr, bool>(this, "AShooterGameState.OnGetWorldMapFromURLDone", HttpRequest, HttpResponse, bSucceeded); } + void OnRep_CompressedGridInfo() { NativeCall(this, "AShooterGameState.OnRep_CompressedGridInfo"); } + void OnRep_GlobalGameplaySetup() { NativeCall(this, "AShooterGameState.OnRep_GlobalGameplaySetup"); } + void OnRep_MapChecksums() { NativeCall(this, "AShooterGameState.OnRep_MapChecksums"); } + void OnRep_MapImagesSource() { NativeCall(this, "AShooterGameState.OnRep_MapImagesSource"); } + void OnRep_NetworkTime() { NativeCall(this, "AShooterGameState.OnRep_NetworkTime"); } + void OnRep_ReplicateCurrentSubLevels() { NativeCall(this, "AShooterGameState.OnRep_ReplicateCurrentSubLevels"); } + void OnRep_ReplicateLocalizedChatRadius() { NativeCall(this, "AShooterGameState.OnRep_ReplicateLocalizedChatRadius"); } + void OnRep_ReplicateMetaWorldURL() { NativeCall(this, "AShooterGameState.OnRep_ReplicateMetaWorldURL"); } + void OnRep_ReplicateServerId() { NativeCall(this, "AShooterGameState.OnRep_ReplicateServerId"); } + void OnRep_SupportedSpawnRegions() { NativeCall(this, "AShooterGameState.OnRep_SupportedSpawnRegions"); } + void OnRep_TerritoryGameUrl() { NativeCall(this, "AShooterGameState.OnRep_TerritoryGameUrl"); } + void PostInitializeComponents() { NativeCall(this, "AShooterGameState.PostInitializeComponents"); } + void ReconnectSeamlessDataSocket() { NativeCall(this, "AShooterGameState.ReconnectSeamlessDataSocket"); } + void RequestFinishAndExitToMainMenu() { NativeCall(this, "AShooterGameState.RequestFinishAndExitToMainMenu"); } + void RequestGridCellMapFromServer(unsigned int RequestedCellServerId) { NativeCall(this, "AShooterGameState.RequestGridCellMapFromServer", RequestedCellServerId); } + void RequestGridCellMapFromURL(unsigned int CellServerId, FString * URL) { NativeCall(this, "AShooterGameState.RequestGridCellMapFromURL", CellServerId, URL); } + void RequestWorldMapFromURL(FString * URL) { NativeCall(this, "AShooterGameState.RequestWorldMapFromURL", URL); } + void ServerSetWind(float newWind) { NativeCall(this, "AShooterGameState.ServerSetWind", newWind); } + void SetBedsDisabledOnThisServer(bool bDisabled) { NativeCall(this, "AShooterGameState.SetBedsDisabledOnThisServer", bDisabled); } + void SetCompressedGridInfo() { NativeCall(this, "AShooterGameState.SetCompressedGridInfo"); } + void SetMetaWorldURL(FString * Url) { NativeCall(this, "AShooterGameState.SetMetaWorldURL", Url); } + void StartDownloadingGridInfo() { NativeCall(this, "AShooterGameState.StartDownloadingGridInfo"); } + void Tick(float DeltaSeconds) { NativeCall(this, "AShooterGameState.Tick", DeltaSeconds); } + void TickSeamlessDataSocket() { NativeCall(this, "AShooterGameState.TickSeamlessDataSocket"); } + void UpdateDynamicMusic(float DeltaSeconds) { NativeCall(this, "AShooterGameState.UpdateDynamicMusic", DeltaSeconds); } + void UpdateFunctionExpense(int FunctionType) { NativeCall(this, "AShooterGameState.UpdateFunctionExpense", FunctionType); } + void UpdatePreventOfflinePvPStatus() { NativeCall(this, "AShooterGameState.UpdatePreventOfflinePvPStatus"); } + void ClientOnStartSeamlessTravel() { NativeCall(this, "AShooterGameState.ClientOnStartSeamlessTravel"); } + void FirstTick() { NativeCall(this, "AShooterGameState.FirstTick"); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "AShooterGameState.GetPrivateStaticClass", Package); } + void NetUpdateOfflinePvPExpiringTeams(TArray * NewPreventOfflinePvPExpiringTeams, TArray * NewPreventOfflinePvPExpiringTimes) { NativeCall *, TArray *>(this, "AShooterGameState.NetUpdateOfflinePvPExpiringTeams", NewPreventOfflinePvPExpiringTeams, NewPreventOfflinePvPExpiringTimes); } + void NetUpdateOfflinePvPLiveTeams(TArray * NewPreventOfflinePvPLiveTeams) { NativeCall *>(this, "AShooterGameState.NetUpdateOfflinePvPLiveTeams", NewPreventOfflinePvPLiveTeams); } + static void StaticRegisterNativesAShooterGameState() { NativeCall(nullptr, "AShooterGameState.StaticRegisterNativesAShooterGameState"); } +}; + +struct AGameSession +{ + int& MaxSpectatorsField() { return *GetNativePointerField(this, "AGameSession.MaxSpectators"); } + int& MaxPlayersField() { return *GetNativePointerField(this, "AGameSession.MaxPlayers"); } + char& ReservedPlayerSlotsField() { return *GetNativePointerField(this, "AGameSession.ReservedPlayerSlots"); } + char& MaxSplitscreensPerConnectionField() { return *GetNativePointerField(this, "AGameSession.MaxSplitscreensPerConnection"); } + bool& bRequiresPushToTalkField() { return *GetNativePointerField(this, "AGameSession.bRequiresPushToTalk"); } + FName& SessionNameField() { return *GetNativePointerField(this, "AGameSession.SessionName"); } + + // Functions + + bool RequiresPushToTalk() { return NativeCall(this, "AGameSession.RequiresPushToTalk"); } + //static APrimalBuff `vcall'{2752, { flat } }() { return NativeCall(nullptr, "AGameSession.`vcall'{2752,{flat}}"); } + //static AGameSession `vcall'{2864, { flat }}() { return NativeCall(nullptr, "AGameSession.`vcall'{2864,{flat}}"); } + FString * ApproveLogin(FString * result, FString * Options, FString * authToken, unsigned int * NewHomeServerId) { return NativeCall(this, "AGameSession.ApproveLogin", result, Options, authToken, NewHomeServerId); } + bool AtCapacity(bool bSpectator, FString * AuthToken, bool UseReservedSlots, int * NumFreeSlots) { return NativeCall(this, "AGameSession.AtCapacity", bSpectator, AuthToken, UseReservedSlots, NumFreeSlots); } + bool BanPlayer(APlayerController * BannedPlayer, FText * BanReason) { return NativeCall(this, "AGameSession.BanPlayer", BannedPlayer, BanReason); } + void DumpSessionState() { NativeCall(this, "AGameSession.DumpSessionState"); } + void InitOptions(FString * Options) { NativeCall(this, "AGameSession.InitOptions", Options); } + bool KickPlayer(APlayerController * KickedPlayer, FText * KickReason) { return NativeCall(this, "AGameSession.KickPlayer", KickedPlayer, KickReason); } + void NotifyLogout(APlayerController * PC) { NativeCall(this, "AGameSession.NotifyLogout", PC); } + void OnLoginComplete(int LocalUserNum, bool bWasSuccessful, FUniqueNetId * UserId, FString * Error) { NativeCall(this, "AGameSession.OnLoginComplete", LocalUserNum, bWasSuccessful, UserId, Error); } + bool ProcessAutoLogin() { return NativeCall(this, "AGameSession.ProcessAutoLogin"); } + void RegisterPlayer(APlayerController * NewPlayer, TSharedPtr * UniqueId, bool bWasFromInvite) { NativeCall *, bool>(this, "AGameSession.RegisterPlayer", NewPlayer, UniqueId, bWasFromInvite); } + void ReturnToMainMenuHost() { NativeCall(this, "AGameSession.ReturnToMainMenuHost"); } + bool TravelToSession(int ControllerId, FName InSessionName) { return NativeCall(this, "AGameSession.TravelToSession", ControllerId, InSessionName); } + void UnregisterPlayer(APlayerController * ExitingPlayer) { NativeCall(this, "AGameSession.UnregisterPlayer", ExitingPlayer); } + void UpdateSessionJoinability(FName InSessionName, bool bPublicSearchable, bool bAllowInvites, bool bJoinViaPresence, bool bJoinViaPresenceFriendsOnly) { NativeCall(this, "AGameSession.UpdateSessionJoinability", InSessionName, bPublicSearchable, bAllowInvites, bJoinViaPresence, bJoinViaPresenceFriendsOnly); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "AGameSession.GetPrivateStaticClass", Package); } +}; + +struct AShooterGameSession +{ + //FWindowsCriticalSection& SearchResultsCSField() { return *GetNativePointerField(this, "AShooterGameSession.SearchResultsCS"); } + TArray& CachedModsField() { return *GetNativePointerField*>(this, "AShooterGameSession.CachedMods"); } + TArray& ThreadSafeSearchResultsField() { return *GetNativePointerField*>(this, "AShooterGameSession.ThreadSafeSearchResults"); } + //TArray PlayersJoinAllowedChecksField() { return *GetNativePointerField*>(this, "AShooterGameSession.PlayersJoinAllowedChecks"); } + FShooterGameSessionParams& CurrentSessionParamsField() { return *GetNativePointerField(this, "AShooterGameSession.CurrentSessionParams"); } + TSharedPtr& HostSettingsField() { return *GetNativePointerField*>(this, "AShooterGameSession.HostSettings"); } + TSharedPtr& SearchSettingsField() { return *GetNativePointerField*>(this, "AShooterGameSession.SearchSettings"); } + //AShooterGameSession::FOnCreatePresenceSessionComplete& CreatePresenceSessionCompleteEventField() { return *GetNativePointerField(this, "AShooterGameSession.CreatePresenceSessionCompleteEvent"); } + //AShooterGameSession::FOnJoinSessionComplete& JoinSessionCompleteEventField() { return *GetNativePointerField(this, "AShooterGameSession.JoinSessionCompleteEvent"); } + //AShooterGameSession::FOnFindSessionsComplete& FindSessionsCompleteEventField() { return *GetNativePointerField(this, "AShooterGameSession.FindSessionsCompleteEvent"); } + //AShooterGameSession::FOnFoundSession& FoundSessionEventField() { return *GetNativePointerField(this, "AShooterGameSession.FoundSessionEvent"); } + bool& bFoundSessionField() { return *GetNativePointerField(this, "AShooterGameSession.bFoundSession"); } + //TArray& PlayersPendingHomeServerChangeField() { return *GetNativePointerField*>(this, "AShooterGameSession.PlayersPendingHomeServerChange"); } + + // Functions + + //static AShooterGameSession `vcall'{2944, { flat }}() { return NativeCall(nullptr, "AShooterGameSession.`vcall'{2944,{flat}}"); } + //static AShooterGameSession `vcall'{2952, { flat }}() { return NativeCall(nullptr, "AShooterGameSession.`vcall'{2952,{flat}}"); } + FString * ApproveLogin(FString * result, FString * Options, FString * authToken, unsigned int * NewHomeServerId) { return NativeCall(this, "AShooterGameSession.ApproveLogin", result, Options, authToken, NewHomeServerId); } + void CancelFindSessions() { NativeCall(this, "AShooterGameSession.CancelFindSessions"); } + bool FPlayerJoinAllowedCheck(bool UseReservedSlots) { return NativeCall(this, "AShooterGameSession.FPlayerJoinAllowedCheck", UseReservedSlots); } + static AShooterGameSession DelayedSessionDelete() { return NativeCall(nullptr, "AShooterGameSession.DelayedSessionDelete"); } + void FindSessions(TSharedPtr UserId, FName SessionName, bool bIsLAN, bool bIsPresence, bool bRecreateSearchSettings, EListSessionStatus::Type FindType, bool bQueryNotFullSessions, bool bPasswordServers, const wchar_t * ServerName, FString ClusterId, FString AtlasId, FString ServerId, FString AuthListURL) { NativeCall, FName, bool, bool, bool, EListSessionStatus::Type, bool, bool, const wchar_t *, FString, FString, FString, FString>(this, "AShooterGameSession.FindSessions", UserId, SessionName, bIsLAN, bIsPresence, bRecreateSearchSettings, FindType, bQueryNotFullSessions, bPasswordServers, ServerName, ClusterId, AtlasId, ServerId, AuthListURL); } + EOnlineAsyncTaskState::Type GetSearchResultStatus(int * SearchResultIdx, int * NumSearchResults) { return NativeCall(this, "AShooterGameSession.GetSearchResultStatus", SearchResultIdx, NumSearchResults); } + TArray * GetSearchResults() { return NativeCall *>(this, "AShooterGameSession.GetSearchResults"); } + void HandleMatchHasEnded() { NativeCall(this, "AShooterGameSession.HandleMatchHasEnded"); } + void HandleMatchHasStarted() { NativeCall(this, "AShooterGameSession.HandleMatchHasStarted"); } + void InitOptions(FString * Options) { NativeCall(this, "AShooterGameSession.InitOptions", Options); } + bool IsPlayerPendingHomeServerChange(FString PlayerId, unsigned int * RequestedNewHomeServer) { return NativeCall(this, "AShooterGameSession.IsPlayerPendingHomeServerChange", PlayerId, RequestedNewHomeServer); } + bool FPlayerJoinAllowedCheck() { return NativeCall(this, "AShooterGameSession.FPlayerJoinAllowedCheck"); } + bool JoinSession(TSharedPtr UserId, FName SessionName, FOnlineSessionSearchResult * SearchResult) { return NativeCall, FName, FOnlineSessionSearchResult *>(this, "AShooterGameSession.JoinSession", UserId, SessionName, SearchResult); } + bool JoinSession(TSharedPtr UserId, FName SessionName, int SessionIndexInSearchResults) { return NativeCall, FName, int>(this, "AShooterGameSession.JoinSession", UserId, SessionName, SessionIndexInSearchResults); } + //static FTrueSkyPlugin FPlayerJoinAllowedCheck() { return NativeCall(nullptr, "AShooterGameSession.FPlayerJoinAllowedCheck"); } + void OnCreateSessionComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnCreateSessionComplete", SessionName, bWasSuccessful); } + void OnDestroySessionComplete(FName SessionName, bool bWasSuccessful) { NativeCall(this, "AShooterGameSession.OnDestroySessionComplete", SessionName, bWasSuccessful); } + static AShooterGameSession OnFindSessionsComplete() { return NativeCall(nullptr, "AShooterGameSession.OnFindSessionsComplete"); } + static AShooterGameSession OnFoundSession() { return NativeCall(nullptr, "AShooterGameSession.OnFoundSession"); } + static AShooterGameSession OnJoinSessionComplete() { return NativeCall(nullptr, "AShooterGameSession.OnJoinSessionComplete"); } + static AShooterGameSession OnNumConnectedPlayersChanged() { return NativeCall(nullptr, "AShooterGameSession.OnNumConnectedPlayersChanged"); } + static AShooterGameSession OnStartOnlineGameComplete() { return NativeCall(nullptr, "AShooterGameSession.OnStartOnlineGameComplete"); } + void RegisterServer() { NativeCall(this, "AShooterGameSession.RegisterServer"); } + void RemovePlayerPendingHomeServerChange(FString PlayerId) { NativeCall(this, "AShooterGameSession.RemovePlayerPendingHomeServerChange", PlayerId); } + void Restart() { NativeCall(this, "AShooterGameSession.Restart"); } + void SerializeServerIsFull(FMemoryArchive * Ar, char * ServerIsFull) { NativeCall(this, "AShooterGameSession.SerializeServerIsFull", Ar, ServerIsFull); } + static void SerializeServerIsFull(UWorld * World, FMemoryArchive * Ar, char * ServerIsFull) { NativeCall(nullptr, "AShooterGameSession.SerializeServerIsFull", World, Ar, ServerIsFull); } + void Tick(float __formal) { NativeCall(this, "AShooterGameSession.Tick", __formal); } + bool FPlayerJoinAllowedCheck(AShooterGameSession * pGameSession) { return NativeCall(this, "AShooterGameSession.FPlayerJoinAllowedCheck", pGameSession); } + void TickPlayersJoinAllowedChecks() { NativeCall(this, "AShooterGameSession.TickPlayersJoinAllowedChecks"); } + bool TravelToSession(int ControllerId, FName SessionName) { return NativeCall(this, "AShooterGameSession.TravelToSession", ControllerId, SessionName); } + static AShooterGameSession UpdatePublishedSession() { return NativeCall(nullptr, "AShooterGameSession.UpdatePublishedSession"); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "AShooterGameSession.GetPrivateStaticClass", Package); } +}; \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/HighResScreenShot.h b/version/Core/Public/API/Atlas/HighResScreenShot.h new file mode 100644 index 00000000..ab409123 --- /dev/null +++ b/version/Core/Public/API/Atlas/HighResScreenShot.h @@ -0,0 +1,23 @@ +#pragma once +#include "../Base.h" +#include + +struct FHighResScreenshotConfig +{ + FIntRect UnscaledCaptureRegion; + FIntRect CaptureRegion; + float ResolutionMultiplier; + float ResolutionMultiplierScale; + bool bMaskEnabled; + bool bDumpBufferVisualizationTargets; + TWeakPtr TargetViewport; + bool bDisplayCaptureRegion; + bool bCaptureHDR; + TSharedPtr ImageCompressorLDR; + TSharedPtr ImageCompressorHDR; +}; + + +void FHighResScreenshotConfig::Init(FHighResScreenshotConfig* this); // idb +char FHighResScreenshotConfig::MergeMaskIntoAlpha(FHighResScreenshotConfig* this, TArray* InBitmap); +char FHighResScreenshotConfig::ParseConsoleCommand(FHighResScreenshotConfig* this, FString* InCmd, FOutputDevice* Ar); \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/Inventory.h b/version/Core/Public/API/Atlas/Inventory.h new file mode 100644 index 00000000..04e81840 --- /dev/null +++ b/version/Core/Public/API/Atlas/Inventory.h @@ -0,0 +1,1372 @@ +#pragma once + +struct UWorld; + +struct FItemNetID +{ + unsigned int ItemID1; + unsigned int ItemID2; +}; + +struct UActorComponent : UObject +{ + TArray& ComponentTagsField() { return *GetNativePointerField*>(this, "UActorComponent.ComponentTags"); } + FName& CustomTagField() { return *GetNativePointerField(this, "UActorComponent.CustomTag"); } + int& CustomDataField() { return *GetNativePointerField(this, "UActorComponent.CustomData"); } + AActor * CachedOwnerField() { return *GetNativePointerField(this, "UActorComponent.CachedOwner"); } + UWorld * WorldField() { return *GetNativePointerField(this, "UActorComponent.World"); } + + // Bit fields + + BitFieldValue bRegistered() { return { this, "UActorComponent.bRegistered" }; } + BitFieldValue bRenderStateDirty() { return { this, "UActorComponent.bRenderStateDirty" }; } + BitFieldValue bRenderTransformDirty() { return { this, "UActorComponent.bRenderTransformDirty" }; } + BitFieldValue bRenderDynamicDataDirty() { return { this, "UActorComponent.bRenderDynamicDataDirty" }; } + BitFieldValue bAutoRegister() { return { this, "UActorComponent.bAutoRegister" }; } + BitFieldValue bTickInEditor() { return { this, "UActorComponent.bTickInEditor" }; } + BitFieldValue bNeverNeedsRenderUpdate() { return { this, "UActorComponent.bNeverNeedsRenderUpdate" }; } + BitFieldValue bAllowConcurrentTick() { return { this, "UActorComponent.bAllowConcurrentTick" }; } + BitFieldValue bCreatedByConstructionScript() { return { this, "UActorComponent.bCreatedByConstructionScript" }; } + BitFieldValue bAutoActivate() { return { this, "UActorComponent.bAutoActivate" }; } + BitFieldValue bIsActive() { return { this, "UActorComponent.bIsActive" }; } + BitFieldValue bWantsInitializeComponent() { return { this, "UActorComponent.bWantsInitializeComponent" }; } + BitFieldValue bHasBeenCreated() { return { this, "UActorComponent.bHasBeenCreated" }; } + BitFieldValue bHasBeenInitialized() { return { this, "UActorComponent.bHasBeenInitialized" }; } + BitFieldValue bAlwaysReplicatePropertyConditional() { return { this, "UActorComponent.bAlwaysReplicatePropertyConditional" }; } + BitFieldValue bStasisPreventUnregister() { return { this, "UActorComponent.bStasisPreventUnregister" }; } + BitFieldValue bPreventOnDedicatedServer() { return { this, "UActorComponent.bPreventOnDedicatedServer" }; } + BitFieldValue bHasCachedOwner() { return { this, "UActorComponent.bHasCachedOwner" }; } + BitFieldValue bRenderStateCreated() { return { this, "UActorComponent.bRenderStateCreated" }; } + BitFieldValue bPhysicsStateCreated() { return { this, "UActorComponent.bPhysicsStateCreated" }; } + BitFieldValue bReplicates() { return { this, "UActorComponent.bReplicates" }; } + BitFieldValue bNetAddressable() { return { this, "UActorComponent.bNetAddressable" }; } + + // Functions + + bool AllowRegisterWithWorld(UWorld * InWorld) { return NativeCall(this, "UActorComponent.AllowRegisterWithWorld", InWorld); } + void Activate(bool bReset) { NativeCall(this, "UActorComponent.Activate", bReset); } + void AddTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "UActorComponent.AddTickPrerequisiteActor", PrerequisiteActor); } + void AddTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "UActorComponent.AddTickPrerequisiteComponent", PrerequisiteComponent); } + bool AlwaysReplicatePropertyConditional(UProperty * forProperty) { return NativeCall(this, "UActorComponent.AlwaysReplicatePropertyConditional", forProperty); } + void BPTickComponent(float DeltaTime) { NativeCall(this, "UActorComponent.BPTickComponent", DeltaTime); } + void BeginDestroy() { NativeCall(this, "UActorComponent.BeginDestroy"); } + bool ComponentHasTag(FName Tag) { return NativeCall(this, "UActorComponent.ComponentHasTag", Tag); } + void CreatePhysicsState() { NativeCall(this, "UActorComponent.CreatePhysicsState"); } + void CreateRenderState_Concurrent() { NativeCall(this, "UActorComponent.CreateRenderState_Concurrent"); } + void Deactivate() { NativeCall(this, "UActorComponent.Deactivate"); } + void DestroyComponent() { NativeCall(this, "UActorComponent.DestroyComponent"); } + void DestroyPhysicsState() { NativeCall(this, "UActorComponent.DestroyPhysicsState"); } + void DestroyRenderState_Concurrent() { NativeCall(this, "UActorComponent.DestroyRenderState_Concurrent"); } + void DoDeferredRenderUpdates_Concurrent() { NativeCall(this, "UActorComponent.DoDeferredRenderUpdates_Concurrent"); } + void ExecuteRegisterEvents() { NativeCall(this, "UActorComponent.ExecuteRegisterEvents"); } + void ExecuteUnregisterEvents() { NativeCall(this, "UActorComponent.ExecuteUnregisterEvents"); } + ULevel * GetComponentLevel() { return NativeCall(this, "UActorComponent.GetComponentLevel"); } + bool GetIsReplicated() { return NativeCall(this, "UActorComponent.GetIsReplicated"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "UActorComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + AActor * GetOwner() { return NativeCall(this, "UActorComponent.GetOwner"); } + FString * GetReadableName(FString * result) { return NativeCall(this, "UActorComponent.GetReadableName", result); } + UWorld * GetWorld() { return NativeCall(this, "UActorComponent.GetWorld"); } + void InitializeComponent() { NativeCall(this, "UActorComponent.InitializeComponent"); } + bool IsComponentTickEnabled() { return NativeCall(this, "UActorComponent.IsComponentTickEnabled"); } + bool IsNameStableForNetworking() { return NativeCall(this, "UActorComponent.IsNameStableForNetworking"); } + bool IsNetSimulating() { return NativeCall(this, "UActorComponent.IsNetSimulating"); } + bool IsOwnerSelected() { return NativeCall(this, "UActorComponent.IsOwnerSelected"); } + bool IsActive() { return NativeCall(this, "UActorComponent.IsActive"); } + bool IsSupportedForNetworking() { return NativeCall(this, "UActorComponent.IsSupportedForNetworking"); } + void MarkForNeededEndOfFrameRecreate() { NativeCall(this, "UActorComponent.MarkForNeededEndOfFrameRecreate"); } + void MarkForNeededEndOfFrameUpdate() { NativeCall(this, "UActorComponent.MarkForNeededEndOfFrameUpdate"); } + void MarkRenderDynamicDataDirty() { NativeCall(this, "UActorComponent.MarkRenderDynamicDataDirty"); } + void MarkRenderStateDirty() { NativeCall(this, "UActorComponent.MarkRenderStateDirty"); } + void MarkRenderTransformDirty() { NativeCall(this, "UActorComponent.MarkRenderTransformDirty"); } + bool NeedsLoadForClient() { return NativeCall(this, "UActorComponent.NeedsLoadForClient"); } + bool NeedsLoadForServer() { return NativeCall(this, "UActorComponent.NeedsLoadForServer"); } + void OnComponentCreated() { NativeCall(this, "UActorComponent.OnComponentCreated"); } + void OnComponentDestroyed() { NativeCall(this, "UActorComponent.OnComponentDestroyed"); } + void OnRegister() { NativeCall(this, "UActorComponent.OnRegister"); } + void OnRep_IsActive() { NativeCall(this, "UActorComponent.OnRep_IsActive"); } + void PostInitProperties() { NativeCall(this, "UActorComponent.PostInitProperties"); } + void PostRename(UObject * OldOuter, FName OldName) { NativeCall(this, "UActorComponent.PostRename", OldOuter, OldName); } + void RecreatePhysicsState(bool bRestoreBoneTransforms) { NativeCall(this, "UActorComponent.RecreatePhysicsState", bRestoreBoneTransforms); } + void RecreateRenderState_Concurrent() { NativeCall(this, "UActorComponent.RecreateRenderState_Concurrent"); } + void RegisterComponent() { NativeCall(this, "UActorComponent.RegisterComponent"); } + void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UActorComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } + void RegisterComponentWithWorld(UWorld * InWorld) { NativeCall(this, "UActorComponent.RegisterComponentWithWorld", InWorld); } + void RemoveTickPrerequisiteActor(AActor * PrerequisiteActor) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteActor", PrerequisiteActor); } + void RemoveTickPrerequisiteComponent(UActorComponent * PrerequisiteComponent) { NativeCall(this, "UActorComponent.RemoveTickPrerequisiteComponent", PrerequisiteComponent); } + void ReregisterComponent() { NativeCall(this, "UActorComponent.ReregisterComponent"); } + void SendRenderDynamicData_Concurrent() { NativeCall(this, "UActorComponent.SendRenderDynamicData_Concurrent"); } + void SendRenderTransform_Concurrent() { NativeCall(this, "UActorComponent.SendRenderTransform_Concurrent"); } + void SetActive(bool bNewActive, bool bReset) { NativeCall(this, "UActorComponent.SetActive", bNewActive, bReset); } + void SetComponentTickEnabled(bool bEnabled) { NativeCall(this, "UActorComponent.SetComponentTickEnabled", bEnabled); } + void SetComponentTickEnabledAsync(bool bEnabled) { NativeCall(this, "UActorComponent.SetComponentTickEnabledAsync", bEnabled); } + void SetIsReplicated(bool ShouldReplicate) { NativeCall(this, "UActorComponent.SetIsReplicated", ShouldReplicate); } + void SetNetAddressable() { NativeCall(this, "UActorComponent.SetNetAddressable"); } + bool ShouldActivate() { return NativeCall(this, "UActorComponent.ShouldActivate"); } + void ToggleActive() { NativeCall(this, "UActorComponent.ToggleActive"); } + void UninitializeComponent() { NativeCall(this, "UActorComponent.UninitializeComponent"); } + void UnregisterComponent() { NativeCall(this, "UActorComponent.UnregisterComponent"); } + void FailedToRegisterWithWorld(UObject * Object) { NativeCall(this, "UActorComponent.FailedToRegisterWithWorld", Object); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "UActorComponent.GetPrivateStaticClass", Package); } +}; + +struct UPrimalInventoryComponent : UActorComponent +{ + TArray>& RemoteViewingInventoryPlayerControllersField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteViewingInventoryPlayerControllers"); } + TArray InventoryItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.InventoryItems"); } + TArray EquippedItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EquippedItems"); } + TArray ItemSlotsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSlots"); } + TArray ArkTributeItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ArkTributeItems"); } + TArray AllDyeColorItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.AllDyeColorItems"); } + TArray& ItemCraftQueueEntriesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemCraftQueueEntries"); } + int& OverrideInventoryDefaultTabField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideInventoryDefaultTab"); } + TArray>& EquippableItemTypesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.EquippableItemTypes"); } + float& CraftingItemSpeedField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CraftingItemSpeed"); } + TArray& ItemSpoilingTimeMultipliersField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSpoilingTimeMultipliers"); } + int& MaxInventoryItemsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryItems"); } + float& MaxInventoryWeightField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryWeight"); } + char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.TribeGroupInventoryRank"); } + int& NumSlotsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.NumSlots"); } + int& MaxItemCraftQueueEntriesField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxItemCraftQueueEntries"); } + FString& RemoteInventoryDescriptionStringNewField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.RemoteInventoryDescriptionStringNew"); } + TSubclassOf& EngramRequirementClassOverrideField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.EngramRequirementClassOverride"); } + TArray>& RemoteAddItemOnlyAllowItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteAddItemOnlyAllowItemClasses"); } + TArray>& RemoteAddItemPreventItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.RemoteAddItemPreventItemClasses"); } + TArray>& DefaultInventoryItemsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems"); } + TArray>& DefaultInventoryItems2Field() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems2"); } + TArray>& DefaultInventoryItems3Field() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems3"); } + TArray>& DefaultInventoryItems4Field() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultInventoryItems4"); } + TArray& DefaultInventoryItemsRandomCustomStringsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultInventoryItemsRandomCustomStrings"); } + TArray& DefaultInventoryItemsRandomCustomStringsWeightsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultInventoryItemsRandomCustomStringsWeights"); } + TArray>& CheatInventoryItemsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.CheatInventoryItems"); } + TArray>& DefaultEquippedItemsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultEquippedItems"); } + TArray>& DefaultEquippedItemSkinsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultEquippedItemSkins"); } + TArray>& DefaultSlotItemsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.DefaultSlotItems"); } + TArray& ItemSpawnActorClassOverridesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSpawnActorClassOverrides"); } + TArray>& OnlyAllowCraftingItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.OnlyAllowCraftingItemClasses"); } + TArray& DefaultEngramsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultEngrams"); } + TArray& DefaultEngrams2Field() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultEngrams2"); } + TArray& DefaultEngrams3Field() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultEngrams3"); } + TArray& DefaultEngrams4Field() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultEngrams4"); } + TArray& DefaultInventoryQualitiesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DefaultInventoryQualities"); } + FString& InventoryNameOverrideField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.InventoryNameOverride"); } + float& MaxRemoteInventoryViewingDistanceField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxRemoteInventoryViewingDistance"); } + float& ActiveInventoryRefreshIntervalField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ActiveInventoryRefreshInterval"); } + int& AbsoluteMaxInventoryItemsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.AbsoluteMaxInventoryItems"); } + long double& LastInventoryRefreshTimeField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.LastInventoryRefreshTime"); } + TSubclassOf& DroppedItemTemplateOverrideField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DroppedItemTemplateOverride"); } + TArray>& ForceAllowItemStackingsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.ForceAllowItemStackings"); } + FRotator& DropItemRotationOffsetField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DropItemRotationOffset"); } + TArray& ItemCraftingConsumptionReplenishmentsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemCraftingConsumptionReplenishments"); } + float& MaxItemCooldownTimeClearField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxItemCooldownTimeClear"); } + TArray& MaxItemTemplateQuantitiesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.MaxItemTemplateQuantities"); } + USoundBase * ItemCraftingSoundOverrideField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemCraftingSoundOverride"); } + TArray& WeaponAsEquipmentAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.WeaponAsEquipmentAttachmentInfos"); } + int& InventoryWheelCategoryNumField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.InventoryWheelCategoryNum"); } + float& CachedInventoryWeightField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CachedInventoryWeight"); } + bool& bDirtiedInventoryWeightField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.bDirtiedInventoryWeight"); } + TArray CraftingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.CraftingItems"); } + int& DisplayDefaultItemInventoryCountField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DisplayDefaultItemInventoryCount"); } + bool& bHasBeenRegisteredField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.bHasBeenRegistered"); } + TArray>& LastUsedItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.LastUsedItemClasses"); } + TArray& LastUsedItemTimesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.LastUsedItemTimes"); } + int& InvUpdatedFrameField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.InvUpdatedFrame"); } + long double& LastRefreshCheckItemTimeField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.LastRefreshCheckItemTime"); } + bool& bLastPreventUseItemSpoilingTimeMultipliersField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.bLastPreventUseItemSpoilingTimeMultipliers"); } + FItemNetID& NextItemSpoilingIDField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.NextItemSpoilingID"); } + FItemNetID& NextItemConsumptionIDField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.NextItemConsumptionID"); } + int& OverrideInventoryItemsMaxItemQuantityField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideInventoryItemsMaxItemQuantity"); } + float& MinItemSetsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MinItemSets"); } + float& MaxItemSetsField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxItemSets"); } + float& NumItemSetsPowerField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.NumItemSetsPower"); } + TArray& ItemSetsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSets"); } + TArray& AdditionalItemSetsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.AdditionalItemSets"); } + TSubclassOf& ItemSetsOverrideField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSetsOverride"); } + TArray& SetQuantityWeightsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.SetQuantityWeights"); } + TArray& SetQuantityValuesField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.SetQuantityValues"); } + TSubclassOf& ItemSetExtraItemClassField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemSetExtraItemClass"); } + float& ItemSetExtraItemQuantityByQualityMultiplierField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemSetExtraItemQuantityByQualityMultiplier"); } + float& ItemSetExtraItemQuantityByQualityPowerField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemSetExtraItemQuantityByQualityPower"); } + USoundBase * ItemRemovedBySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ItemRemovedBySound"); } + USoundBase * OpenInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OpenInventorySound"); } + USoundBase * CloseInventorySoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.CloseInventorySound"); } + float& MaxInventoryAccessDistanceField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.MaxInventoryAccessDistance"); } + TArray ForcedInventoryViewersField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ForcedInventoryViewers"); } + TArray& ServerCustomFolderField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ServerCustomFolder"); } + TArray>& ForceAllowCraftingForInventoryComponentsField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.ForceAllowCraftingForInventoryComponents"); } + TArray& ItemClassWeightMultipliersField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.ItemClassWeightMultipliers"); } + float& GenerateItemSetsQualityMultiplierMinField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.GenerateItemSetsQualityMultiplierMin"); } + float& GenerateItemSetsQualityMultiplierMaxField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.GenerateItemSetsQualityMultiplierMax"); } + float& DefaultCraftingRequirementsMultiplierField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DefaultCraftingRequirementsMultiplier"); } + int& DefaultCraftingQuantityMultiplierField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.DefaultCraftingQuantityMultiplier"); } + int& SavedForceDefaultInventoryRefreshVersionField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.SavedForceDefaultInventoryRefreshVersion"); } + int& ForceDefaultInventoryRefreshVersionField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ForceDefaultInventoryRefreshVersion"); } + TArray>& TamedDinoForceConsiderFoodTypesField() { return *GetNativePointerField>*>(this, "UPrimalInventoryComponent.TamedDinoForceConsiderFoodTypes"); } + TArray DinoAutoHealingItemsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.DinoAutoHealingItems"); } + USoundBase * OverrideCraftingFinishedSoundField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideCraftingFinishedSound"); } + long double& LastAddToCraftQueueSoundTimeField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.LastAddToCraftQueueSoundTime"); } + FString& ForceAddToFolderField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ForceAddToFolder"); } + FVector& GroundDropTraceLocationOffsetField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.GroundDropTraceLocationOffset"); } + int& ForceRemoveMaxQuantityField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.ForceRemoveMaxQuantity"); } + FString& InventoryAccessStringOverrideField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.InventoryAccessStringOverride"); } + float& OverrideItemsCraftingTimeField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.OverrideItemsCraftingTime"); } + TMap > EquippedItemsMapField() { return *GetNativePointerField >*>(this, "UPrimalInventoryComponent.EquippedItemsMap"); } + TArray& InventoryOwnerTagsField() { return *GetNativePointerField*>(this, "UPrimalInventoryComponent.InventoryOwnerTags"); } + bool& bAllowAddColorsOnClientField() { return *GetNativePointerField(this, "UPrimalInventoryComponent.bAllowAddColorsOnClient"); } + + // Bit fields + + BitFieldValue bInitializedMe() { return { this, "UPrimalInventoryComponent.bInitializedMe" }; } + BitFieldValue bReceivingEquippedItems() { return { this, "UPrimalInventoryComponent.bReceivingEquippedItems" }; } + BitFieldValue bReceivingInventoryItems() { return { this, "UPrimalInventoryComponent.bReceivingInventoryItems" }; } + BitFieldValue bFreeCraftingMode() { return { this, "UPrimalInventoryComponent.bFreeCraftingMode" }; } + BitFieldValue bUseCraftQueue() { return { this, "UPrimalInventoryComponent.bUseCraftQueue" }; } + BitFieldValue bShowHiddenRemoteInventoryItems() { return { this, "UPrimalInventoryComponent.bShowHiddenRemoteInventoryItems" }; } + BitFieldValue bForceInventoryBlueprints() { return { this, "UPrimalInventoryComponent.bForceInventoryBlueprints" }; } + BitFieldValue bForceInventoryNonRemovable() { return { this, "UPrimalInventoryComponent.bForceInventoryNonRemovable" }; } + BitFieldValue bHideDefaultInventoryItemsFromDisplay() { return { this, "UPrimalInventoryComponent.bHideDefaultInventoryItemsFromDisplay" }; } + BitFieldValue bDataListPadMaxInventoryItems() { return { this, "UPrimalInventoryComponent.bDataListPadMaxInventoryItems" }; } + BitFieldValue bAddMaxInventoryItemsToDefaultItems() { return { this, "UPrimalInventoryComponent.bAddMaxInventoryItemsToDefaultItems" }; } + BitFieldValue bCheckForAutoCraftBlueprints() { return { this, "UPrimalInventoryComponent.bCheckForAutoCraftBlueprints" }; } + BitFieldValue bIsTributeInventory() { return { this, "UPrimalInventoryComponent.bIsTributeInventory" }; } + BitFieldValue bEquipmentMustRequireExplicitOwnerClass() { return { this, "UPrimalInventoryComponent.bEquipmentMustRequireExplicitOwnerClass" }; } + BitFieldValue bEquipmentPlayerForceRequireExplicitOwnerClass() { return { this, "UPrimalInventoryComponent.bEquipmentPlayerForceRequireExplicitOwnerClass" }; } + BitFieldValue bEquipmentForceIgnoreExplicitOwnerClass() { return { this, "UPrimalInventoryComponent.bEquipmentForceIgnoreExplicitOwnerClass" }; } + BitFieldValue bUseBPInventoryRefresh() { return { this, "UPrimalInventoryComponent.bUseBPInventoryRefresh" }; } + BitFieldValue bUseBPInitializeInventory() { return { this, "UPrimalInventoryComponent.bUseBPInitializeInventory" }; } + BitFieldValue bInitializeInventoryToClients() { return { this, "UPrimalInventoryComponent.bInitializeInventoryToClients" }; } + BitFieldValue bItemSetsRandomizeColors() { return { this, "UPrimalInventoryComponent.bItemSetsRandomizeColors" }; } + BitFieldValue bOverrideCraftingResourceRequirements() { return { this, "UPrimalInventoryComponent.bOverrideCraftingResourceRequirements" }; } + BitFieldValue bCraftingEnabled() { return { this, "UPrimalInventoryComponent.bCraftingEnabled" }; } + BitFieldValue bRepairingEnabled() { return { this, "UPrimalInventoryComponent.bRepairingEnabled" }; } + BitFieldValue bReplicateComponent() { return { this, "UPrimalInventoryComponent.bReplicateComponent" }; } + BitFieldValue bOnlyOneCraftQueueItem() { return { this, "UPrimalInventoryComponent.bOnlyOneCraftQueueItem" }; } + BitFieldValue bRemoteInventoryOnlyAllowTribe() { return { this, "UPrimalInventoryComponent.bRemoteInventoryOnlyAllowTribe" }; } + BitFieldValue bOverrideCraftingMinDurabilityRequirement() { return { this, "UPrimalInventoryComponent.bOverrideCraftingMinDurabilityRequirement" }; } + BitFieldValue bRemoteInventoryAllowRemoveItems() { return { this, "UPrimalInventoryComponent.bRemoteInventoryAllowRemoveItems" }; } + BitFieldValue bRemoteInventoryAllowAddItems() { return { this, "UPrimalInventoryComponent.bRemoteInventoryAllowAddItems" }; } + BitFieldValue bAllowRemoteInventory() { return { this, "UPrimalInventoryComponent.bAllowRemoteInventory" }; } + BitFieldValue bUseCheatInventory() { return { this, "UPrimalInventoryComponent.bUseCheatInventory" }; } + BitFieldValue bRemoteInventoryOnlyAllowSelf() { return { this, "UPrimalInventoryComponent.bRemoteInventoryOnlyAllowSelf" }; } + BitFieldValue bMaxInventoryWeightUseCharacterStatus() { return { this, "UPrimalInventoryComponent.bMaxInventoryWeightUseCharacterStatus" }; } + BitFieldValue bPreventDropInventoryDeposit() { return { this, "UPrimalInventoryComponent.bPreventDropInventoryDeposit" }; } + BitFieldValue bShowItemDefaultFolders() { return { this, "UPrimalInventoryComponent.bShowItemDefaultFolders" }; } + BitFieldValue bDisableDropAllItems() { return { this, "UPrimalInventoryComponent.bDisableDropAllItems" }; } + BitFieldValue bIgnoreMaxInventoryItems() { return { this, "UPrimalInventoryComponent.bIgnoreMaxInventoryItems" }; } + BitFieldValue bIsCookingInventory() { return { this, "UPrimalInventoryComponent.bIsCookingInventory" }; } + BitFieldValue bRemoteOnlyAllowBlueprintsOrItemClasses() { return { this, "UPrimalInventoryComponent.bRemoteOnlyAllowBlueprintsOrItemClasses" }; } + BitFieldValue bPreventSendingData() { return { this, "UPrimalInventoryComponent.bPreventSendingData" }; } + BitFieldValue bSupressInventoryItemNetworking() { return { this, "UPrimalInventoryComponent.bSupressInventoryItemNetworking" }; } + BitFieldValue bPreventInventoryViewTrace() { return { this, "UPrimalInventoryComponent.bPreventInventoryViewTrace" }; } + BitFieldValue bSpawnActorOnTopOfStructure() { return { this, "UPrimalInventoryComponent.bSpawnActorOnTopOfStructure" }; } + BitFieldValue bDropPhysicalInventoryDeposit() { return { this, "UPrimalInventoryComponent.bDropPhysicalInventoryDeposit" }; } + BitFieldValue bUseExtendedCharacterCraftingFunctionality() { return { this, "UPrimalInventoryComponent.bUseExtendedCharacterCraftingFunctionality" }; } + BitFieldValue bForceGenerateItemSets() { return { this, "UPrimalInventoryComponent.bForceGenerateItemSets" }; } + BitFieldValue bBPHandleAccessInventory() { return { this, "UPrimalInventoryComponent.bBPHandleAccessInventory" }; } + BitFieldValue bGivesAchievementItems() { return { this, "UPrimalInventoryComponent.bGivesAchievementItems" }; } + BitFieldValue bBPAllowUseInInventory() { return { this, "UPrimalInventoryComponent.bBPAllowUseInInventory" }; } + BitFieldValue bBPRemoteInventoryAllowRemoveItems() { return { this, "UPrimalInventoryComponent.bBPRemoteInventoryAllowRemoveItems" }; } + BitFieldValue bBPNotifyItemAdded() { return { this, "UPrimalInventoryComponent.bBPNotifyItemAdded" }; } + BitFieldValue bBPNotifyItemRemoved() { return { this, "UPrimalInventoryComponent.bBPNotifyItemRemoved" }; } + BitFieldValue bBPNotifyItemQuantityUpdated() { return { this, "UPrimalInventoryComponent.bBPNotifyItemQuantityUpdated" }; } + BitFieldValue bBPOverrideItemMinimumUseInterval() { return { this, "UPrimalInventoryComponent.bBPOverrideItemMinimumUseInterval" }; } + BitFieldValue bBPForceCustomRemoteInventoryAllowAddItems() { return { this, "UPrimalInventoryComponent.bBPForceCustomRemoteInventoryAllowAddItems" }; } + BitFieldValue bBPForceCustomRemoteInventoryAllowRemoveItems() { return { this, "UPrimalInventoryComponent.bBPForceCustomRemoteInventoryAllowRemoveItems" }; } + BitFieldValue bForceInventoryNotifyCraftingFinished() { return { this, "UPrimalInventoryComponent.bForceInventoryNotifyCraftingFinished" }; } + BitFieldValue bAllowWorldSettingsInventoryComponentAppends() { return { this, "UPrimalInventoryComponent.bAllowWorldSettingsInventoryComponentAppends" }; } + BitFieldValue bPreventCraftingResourceConsumption() { return { this, "UPrimalInventoryComponent.bPreventCraftingResourceConsumption" }; } + BitFieldValue bOverrideInventoryDepositClassDontForceDrop() { return { this, "UPrimalInventoryComponent.bOverrideInventoryDepositClassDontForceDrop" }; } + BitFieldValue bUseBPIsCraftingAllowed() { return { this, "UPrimalInventoryComponent.bUseBPIsCraftingAllowed" }; } + BitFieldValue bUseBPRemoteInventoryAllowCrafting() { return { this, "UPrimalInventoryComponent.bUseBPRemoteInventoryAllowCrafting" }; } + BitFieldValue bIsInInventoryRefresh() { return { this, "UPrimalInventoryComponent.bIsInInventoryRefresh" }; } + BitFieldValue bForceShowAllEngrams() { return { this, "UPrimalInventoryComponent.bForceShowAllEngrams" }; } + BitFieldValue bSetsRandomWithoutReplacement() { return { this, "UPrimalInventoryComponent.bSetsRandomWithoutReplacement" }; } + BitFieldValue bForceAllowAllUseInInventory() { return { this, "UPrimalInventoryComponent.bForceAllowAllUseInInventory" }; } + BitFieldValue bUseBPIsValidCraftingResource() { return { this, "UPrimalInventoryComponent.bUseBPIsValidCraftingResource" }; } + BitFieldValue bUseParentStructureIsValidCraftingResource() { return { this, "UPrimalInventoryComponent.bUseParentStructureIsValidCraftingResource" }; } + BitFieldValue bSetCraftingEnabledCheckForAutoCraftBlueprints() { return { this, "UPrimalInventoryComponent.bSetCraftingEnabledCheckForAutoCraftBlueprints" }; } + BitFieldValue bUseBPRemoteInventoryAllowViewing() { return { this, "UPrimalInventoryComponent.bUseBPRemoteInventoryAllowViewing" }; } + BitFieldValue bAllDefaultInventoryIsEngrams() { return { this, "UPrimalInventoryComponent.bAllDefaultInventoryIsEngrams" }; } + BitFieldValue bInitializedDefaultInventory() { return { this, "UPrimalInventoryComponent.bInitializedDefaultInventory" }; } + BitFieldValue bGetDataListEntriesOnlyRootItems() { return { this, "UPrimalInventoryComponent.bGetDataListEntriesOnlyRootItems" }; } + BitFieldValue bConfigOverriden() { return { this, "UPrimalInventoryComponent.bConfigOverriden" }; } + BitFieldValue bHideRemoteInventoryPanel() { return { this, "UPrimalInventoryComponent.bHideRemoteInventoryPanel" }; } + BitFieldValue bUseViewerInventoryForCraftingResources() { return { this, "UPrimalInventoryComponent.bUseViewerInventoryForCraftingResources" }; } + BitFieldValue bUseViewerInventoryForCraftedItem() { return { this, "UPrimalInventoryComponent.bUseViewerInventoryForCraftedItem" }; } + BitFieldValue bRemoteInventoryAllowAddCustomFolders() { return { this, "UPrimalInventoryComponent.bRemoteInventoryAllowAddCustomFolders" }; } + BitFieldValue bUseBPFirstInit() { return { this, "UPrimalInventoryComponent.bUseBPFirstInit" }; } + BitFieldValue bGenerateItemsForceZeroQuality() { return { this, "UPrimalInventoryComponent.bGenerateItemsForceZeroQuality" }; } + BitFieldValue bForceIgnoreCraftingRequiresInventoryComponent() { return { this, "UPrimalInventoryComponent.bForceIgnoreCraftingRequiresInventoryComponent" }; } + BitFieldValue bForceIgnoreItemBlueprintCraftingRequiresEngram() { return { this, "UPrimalInventoryComponent.bForceIgnoreItemBlueprintCraftingRequiresEngram" }; } + BitFieldValue bCanEquipItems() { return { this, "UPrimalInventoryComponent.bCanEquipItems" }; } + BitFieldValue bCanUseWeaponAsEquipment() { return { this, "UPrimalInventoryComponent.bCanUseWeaponAsEquipment" }; } + BitFieldValue bDisableDropItems() { return { this, "UPrimalInventoryComponent.bDisableDropItems" }; } + BitFieldValue bCanInventoryItems() { return { this, "UPrimalInventoryComponent.bCanInventoryItems" }; } + BitFieldValue bConsumeCraftingRepairingRequirementsOnStart() { return { this, "UPrimalInventoryComponent.bConsumeCraftingRepairingRequirementsOnStart" }; } + BitFieldValue bAllowRemoteCrafting() { return { this, "UPrimalInventoryComponent.bAllowRemoteCrafting" }; } + BitFieldValue bAllowDeactivatedCrafting() { return { this, "UPrimalInventoryComponent.bAllowDeactivatedCrafting" }; } + BitFieldValue bPreventAutoDecreaseDurability() { return { this, "UPrimalInventoryComponent.bPreventAutoDecreaseDurability" }; } + BitFieldValue bAllowRemoteRepairing() { return { this, "UPrimalInventoryComponent.bAllowRemoteRepairing" }; } + BitFieldValue bAllowItemStacking() { return { this, "UPrimalInventoryComponent.bAllowItemStacking" }; } + BitFieldValue bForceRemoteInvOpenAlphabeticalDsc() { return { this, "UPrimalInventoryComponent.bForceRemoteInvOpenAlphabeticalDsc" }; } + + // Functions + + static UClass * StaticClass() { return NativeCall(nullptr, "UPrimalInventoryComponent.StaticClass"); } + void ActivePlayerInventoryTick(float DeltaTime) { NativeCall(this, "UPrimalInventoryComponent.ActivePlayerInventoryTick", DeltaTime); } + void AddCustomFolder(FString CFolder, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.AddCustomFolder", CFolder, InventoryCompType); } + UPrimalItem * AddItem(FItemNetInfo * theItemInfo, bool bEquipItem, bool AddToSlot, bool bDontStack, FItemNetID * InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter * OwnerPlayer, bool bIgnoreAbsoluteMaxInventory) { return NativeCall(this, "UPrimalInventoryComponent.AddItem", theItemInfo, bEquipItem, AddToSlot, bDontStack, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer, bIgnoreAbsoluteMaxInventory); } + void AddItemCrafting(UPrimalItem * craftingItem) { NativeCall(this, "UPrimalInventoryComponent.AddItemCrafting", craftingItem); } + UPrimalItem * AddItemObject(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObject", anItem); } + UPrimalItem * AddItemObjectEx(UPrimalItem * anItem, bool bEquipItem, bool AddToSlot, bool bDontStack, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bForceIncompleteStacking, AShooterCharacter * OwnerPlayer) { return NativeCall(this, "UPrimalInventoryComponent.AddItemObjectEx", anItem, bEquipItem, AddToSlot, bDontStack, ShowHUDNotification, bDontRecalcSpoilingTime, bForceIncompleteStacking, OwnerPlayer); } + void AddToCraftQueue(UPrimalItem * anItem, AShooterPlayerController * ByPC, bool bIsRepair, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.AddToCraftQueue", anItem, ByPC, bIsRepair, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } + bool AddToFolders(TArray * FoldersFound, UPrimalItem * anItem) { return NativeCall *, UPrimalItem *>(this, "UPrimalInventoryComponent.AddToFolders", FoldersFound, anItem); } + bool AllowAddInventoryItem(UPrimalItem * anItem, int * requestedQuantity, bool OnlyAddAll) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem", anItem, requestedQuantity, OnlyAddAll); } + bool AllowAddInventoryItem_AnyQuantity(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_AnyQuantity", anItem); } + bool AllowAddInventoryItem_MaxQuantity(UPrimalItem * anItem, const int * requestedQuantityIn, int * requestedQuantityOut) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_MaxQuantity", anItem, requestedQuantityIn, requestedQuantityOut); } + bool AllowAddInventoryItem_OnlyAddAll(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.AllowAddInventoryItem_OnlyAddAll", anItem); } + bool AllowBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.AllowBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } + bool AllowCraftingResourceConsumption(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.AllowCraftingResourceConsumption", ItemTemplate, ItemQuantity); } + bool AllowEquippingItemType(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "UPrimalInventoryComponent.AllowEquippingItemType", equipmentType); } + bool AllowOwnerStasis() { return NativeCall(this, "UPrimalInventoryComponent.AllowOwnerStasis"); } + void BPAddCustomFolder(FString CFolder, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.BPAddCustomFolder", CFolder, InventoryCompType); } + void BPDropInventoryDeposit(long double DestroyAtTime, bool bPreventSendingData) { NativeCall(this, "UPrimalInventoryComponent.BPDropInventoryDeposit", DestroyAtTime, bPreventSendingData); } + void BPDropInventoryDepositEx(long double DestroyAtTime, bool bDoPreventSendingData, bool bIgnorEquippedItems, TSubclassOf OverrideInventoryDepositClass, APrimalStructureItemContainer * CopyStructureValues, AActor * GroundIgnoreActor, FString CurrentCustomFolderFilter, FString CurrentNameFilter, float DropInventoryOnGroundTraceDistance, bool bForceDrop) { NativeCall, APrimalStructureItemContainer *, AActor *, FString, FString, float, bool>(this, "UPrimalInventoryComponent.BPDropInventoryDepositEx", DestroyAtTime, bDoPreventSendingData, bIgnorEquippedItems, OverrideInventoryDepositClass, CopyStructureValues, GroundIgnoreActor, CurrentCustomFolderFilter, CurrentNameFilter, DropInventoryOnGroundTraceDistance, bForceDrop); } + UPrimalItem * BPFindItemWithID(int ItemID1, int ItemID2) { return NativeCall(this, "UPrimalInventoryComponent.BPFindItemWithID", ItemID1, ItemID2); } + UPrimalItem * BPGetItemOfTemplate(TSubclassOf ItemTemplate, bool bOnlyInventoryItems, bool bOnlyEquippedItems, bool IgnoreItemsWithFullQuantity, bool bFavorSlotItems, bool bIsBlueprint, bool bRequiresExactClassMatch, bool bIgnoreSlotItems, bool bOnlyArkItems, bool bPreferEngram, bool bIsForCraftingConsumption, bool bIgnoreBrokenItems) { return NativeCall, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.BPGetItemOfTemplate", ItemTemplate, bOnlyInventoryItems, bOnlyEquippedItems, IgnoreItemsWithFullQuantity, bFavorSlotItems, bIsBlueprint, bRequiresExactClassMatch, bIgnoreSlotItems, bOnlyArkItems, bPreferEngram, bIsForCraftingConsumption, bIgnoreBrokenItems); } + int BPIncrementItemTemplateQuantity(TSubclassOf ItemTemplate, int amount, bool bReplicateToClient, bool bIsBlueprint, bool bRequireExactClassMatch, bool bIsCraftingResourceConsumption, bool bIsFromUseConsumption, bool bIsArkTributeItem, UPrimalItem * UseSpecificItem, bool bDontExceedMaxItems) { return NativeCall, int, bool, bool, bool, bool, bool, bool, UPrimalItem *, bool>(this, "UPrimalInventoryComponent.BPIncrementItemTemplateQuantity", ItemTemplate, amount, bReplicateToClient, bIsBlueprint, bRequireExactClassMatch, bIsCraftingResourceConsumption, bIsFromUseConsumption, bIsArkTributeItem, UseSpecificItem, bDontExceedMaxItems); } + bool BPRemoteInventoryAllowAddItem(AShooterPlayerController * PC, UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItem", PC, anItem); } + bool BPRemoteInventoryAllowAddItem_SpecificQuantity(AShooterPlayerController * PC, UPrimalItem * anItem, const int * SpecificQuantityIn, int * SpecificQuantityOut) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItem_SpecificQuantity", PC, anItem, SpecificQuantityIn, SpecificQuantityOut); } + bool BPRemoteInventoryAllowAddItems(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowAddItems", PC); } + bool CanEquipItem(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.CanEquipItem", anItem); } + bool CanEquipItems() { return NativeCall(this, "UPrimalInventoryComponent.CanEquipItems"); } + bool CanInventoryItem(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.CanInventoryItem", anItem); } + void CheckForAutoCraftBlueprints() { NativeCall(this, "UPrimalInventoryComponent.CheckForAutoCraftBlueprints"); } + void CheckInventorySpoilings() { NativeCall(this, "UPrimalInventoryComponent.CheckInventorySpoilings"); } + void CheckRefreshDefaultInventoryItems() { NativeCall(this, "UPrimalInventoryComponent.CheckRefreshDefaultInventoryItems"); } + void CheckReplenishSlotIndex(int slotIndex, TSubclassOf ClassCheckOverride) { NativeCall>(this, "UPrimalInventoryComponent.CheckReplenishSlotIndex", slotIndex, ClassCheckOverride); } + void ClearCraftQueue(bool bForceClearActiveCraftRepair) { NativeCall(this, "UPrimalInventoryComponent.ClearCraftQueue", bForceClearActiveCraftRepair); } + void ClientFinishReceivingItems(bool bEquippedItems) { NativeCall(this, "UPrimalInventoryComponent.ClientFinishReceivingItems", bEquippedItems); } + void ClientItemMessageNotification_Implementation(FItemNetID ItemID, EPrimalItemMessage::Type ItemMessageType) { NativeCall(this, "UPrimalInventoryComponent.ClientItemMessageNotification_Implementation", ItemID, ItemMessageType); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex, int hitBodyIndex) { NativeCall(this, "UPrimalInventoryComponent.ClientMultiUse", ForPC, UseIndex, hitBodyIndex); } + void ClientStartReceivingItems(bool bEquippedItems) { NativeCall(this, "UPrimalInventoryComponent.ClientStartReceivingItems", bEquippedItems); } + void ClientUpdateFreeCraftingMode_Implementation(bool bNewFreeCraftingModeValue) { NativeCall(this, "UPrimalInventoryComponent.ClientUpdateFreeCraftingMode_Implementation", bNewFreeCraftingModeValue); } + void ConsumeArmorDurability(float ConsumptionAmount, bool bAllArmorTypes, EPrimalEquipmentType::Type SpecificArmorType) { NativeCall(this, "UPrimalInventoryComponent.ConsumeArmorDurability", ConsumptionAmount, bAllArmorTypes, SpecificArmorType); } + void ConsumeMultipleUniqueItemTemplateQuantities(TSubclassOf ParentClass, int QuantityCount, int UniqueItemsNeeded) { NativeCall, int, int>(this, "UPrimalInventoryComponent.ConsumeMultipleUniqueItemTemplateQuantities", ParentClass, QuantityCount, UniqueItemsNeeded); } + AActor * CraftedBlueprintSpawnActor(TSubclassOf ForItemClass, TSubclassOf ActorClassToSpawn) { return NativeCall, TSubclassOf>(this, "UPrimalInventoryComponent.CraftedBlueprintSpawnActor", ForItemClass, ActorClassToSpawn); } + void DeleteItemFromCustomFolder(AShooterPlayerController * PC, FString CFolder, FItemNetID ItemId, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.DeleteItemFromCustomFolder", PC, CFolder, ItemId, InventoryCompType); } + bool DropInventoryDeposit(long double DestroyAtTime, bool bDoPreventSendingData, bool bIgnorEquippedItems, TSubclassOf OverrideInventoryDepositClass, APrimalStructureItemContainer * CopyStructureValues, APrimalStructureItemContainer ** DepositStructureResult, AActor * GroundIgnoreActor, FString CurrentCustomFolderFilter, FString CurrentNameFilter, unsigned __int64 DeathCacheCharacterID, float DropInventoryOnGroundTraceDistance, bool bForceDrop) { return NativeCall, APrimalStructureItemContainer *, APrimalStructureItemContainer **, AActor *, FString, FString, unsigned __int64, float, bool>(this, "UPrimalInventoryComponent.DropInventoryDeposit", DestroyAtTime, bDoPreventSendingData, bIgnorEquippedItems, OverrideInventoryDepositClass, CopyStructureValues, DepositStructureResult, GroundIgnoreActor, CurrentCustomFolderFilter, CurrentNameFilter, DeathCacheCharacterID, DropInventoryOnGroundTraceDistance, bForceDrop); } + void DropItem(FItemNetInfo * theInfo, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation) { NativeCall(this, "UPrimalInventoryComponent.DropItem", theInfo, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation); } + TArray * FindBrushColorItem(TArray * result, __int16 ArchIndex) { return NativeCall *, TArray *, __int16>(this, "UPrimalInventoryComponent.FindBrushColorItem", result, ArchIndex); } + TArray * FindColorItem(TArray * result, FColor theColor, bool bEquippedItems) { return NativeCall *, TArray *, FColor, bool>(this, "UPrimalInventoryComponent.FindColorItem", result, theColor, bEquippedItems); } + UPrimalItem * FindInventoryStackableItemCompareQuantity(TSubclassOf ItemClass, bool bFindLeastQuantity, UPrimalItem * StacksWithAndIgnoreItem) { return NativeCall, bool, UPrimalItem *>(this, "UPrimalInventoryComponent.FindInventoryStackableItemCompareQuantity", ItemClass, bFindLeastQuantity, StacksWithAndIgnoreItem); } + UPrimalItem * FindItem(FItemNetID * ItemID, bool bEquippedItems, bool bAllItems, int * itemIdx) { return NativeCall(this, "UPrimalInventoryComponent.FindItem", ItemID, bEquippedItems, bAllItems, itemIdx); } + void ForceRefreshInventoryWeight() { NativeCall(this, "UPrimalInventoryComponent.ForceRefreshInventoryWeight"); } + bool GenerateCrateItems(float MinQualityMultiplier, float MaxQualityMultiplier, int NumPasses, float QuantityMultiplier, float SetPowerWeight, float MaxItemDifficultyClamp) { return NativeCall(this, "UPrimalInventoryComponent.GenerateCrateItems", MinQualityMultiplier, MaxQualityMultiplier, NumPasses, QuantityMultiplier, SetPowerWeight, MaxItemDifficultyClamp); } + UPrimalCharacterStatusComponent * GetCharacterStatusComponent() { return NativeCall(this, "UPrimalInventoryComponent.GetCharacterStatusComponent"); } + int GetCraftQueueResourceCost(TSubclassOf ItemTemplate, UPrimalItem * IgnoreFirstItem) { return NativeCall, UPrimalItem *>(this, "UPrimalInventoryComponent.GetCraftQueueResourceCost", ItemTemplate, IgnoreFirstItem); } + float GetCraftingSpeed() { return NativeCall(this, "UPrimalInventoryComponent.GetCraftingSpeed"); } + int GetCurrentNumInventoryItems() { return NativeCall(this, "UPrimalInventoryComponent.GetCurrentNumInventoryItems"); } + TArray * GetCustomFolders(TArray * result, int InventoryCompType) { return NativeCall *, TArray *, int>(this, "UPrimalInventoryComponent.GetCustomFolders", result, InventoryCompType); } + float GetDamageTorpidityIncreaseMultiplierScale() { return NativeCall(this, "UPrimalInventoryComponent.GetDamageTorpidityIncreaseMultiplierScale"); } + float GetEquippedArmorRating(EPrimalEquipmentType::Type equipmentType) { return NativeCall(this, "UPrimalInventoryComponent.GetEquippedArmorRating", equipmentType); } + UPrimalItem * GetEquippedItemOfClass(TSubclassOf ItemClass, bool bAllowInactiveEquipment) { return NativeCall, bool>(this, "UPrimalInventoryComponent.GetEquippedItemOfClass", ItemClass, bAllowInactiveEquipment); } + UPrimalItem * GetEquippedItemOfType(EPrimalEquipmentType::Type aType, bool bAllowInactiveEquipment) { return NativeCall(this, "UPrimalInventoryComponent.GetEquippedItemOfType", aType, bAllowInactiveEquipment); } + int GetFirstUnoccupiedSlot(AShooterPlayerState * forPlayerState, UPrimalItem * forItem) { return NativeCall(this, "UPrimalInventoryComponent.GetFirstUnoccupiedSlot", forPlayerState, forItem); } + bool GetGroundLocation(FVector * theGroundLoc, FVector * OffsetUp, FVector * OffsetDown, APrimalStructure ** LandedOnStructure, AActor * IgnoreActor, bool bCheckAnyStationary, UPrimitiveComponent ** LandedOnComponent) { return NativeCall(this, "UPrimalInventoryComponent.GetGroundLocation", theGroundLoc, OffsetUp, OffsetDown, LandedOnStructure, IgnoreActor, bCheckAnyStationary, LandedOnComponent); } + float GetIndirectTorpidityIncreaseMultiplierScale() { return NativeCall(this, "UPrimalInventoryComponent.GetIndirectTorpidityIncreaseMultiplierScale"); } + FString * GetInventoryName(FString * result, bool bIsEquipped) { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryName", result, bIsEquipped); } + float GetInventoryWeight() { return NativeCall(this, "UPrimalInventoryComponent.GetInventoryWeight"); } + UPrimalItem * GetItemOfTemplate(TSubclassOf ItemTemplate, bool bOnlyInventoryItems, bool bOnlyEquippedItems, bool IgnoreItemsWithFullQuantity, bool bFavorSlotItems, bool bIsBlueprint, UPrimalItem * CheckCanStackWithItem, bool bRequiresExactClassMatch, int * CheckCanStackWithItemQuantityOverride, bool bIgnoreSlotItems, bool bOnlyArkTributeItems, bool bPreferEngram, bool bIsForCraftingConsumption, bool bIgnoreBrokenItems) { return NativeCall, bool, bool, bool, bool, bool, UPrimalItem *, bool, int *, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemOfTemplate", ItemTemplate, bOnlyInventoryItems, bOnlyEquippedItems, IgnoreItemsWithFullQuantity, bFavorSlotItems, bIsBlueprint, CheckCanStackWithItem, bRequiresExactClassMatch, CheckCanStackWithItemQuantityOverride, bIgnoreSlotItems, bOnlyArkTributeItems, bPreferEngram, bIsForCraftingConsumption, bIgnoreBrokenItems); } + int GetItemTemplateQuantity(TSubclassOf ItemTemplate, UPrimalItem * IgnoreItem, bool bIgnoreBlueprints, bool bCheckValidForCrafting, bool bRequireExactClassMatch) { return NativeCall, UPrimalItem *, bool, bool, bool>(this, "UPrimalInventoryComponent.GetItemTemplateQuantity", ItemTemplate, IgnoreItem, bIgnoreBlueprints, bCheckValidForCrafting, bRequireExactClassMatch); } + float GetItemWeightMultiplier(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetItemWeightMultiplier", anItem); } + long double GetLatestItemClassUseTime(TSubclassOf ItemClass) { return NativeCall>(this, "UPrimalInventoryComponent.GetLatestItemClassUseTime", ItemClass); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "UPrimalInventoryComponent.GetLifetimeReplicatedProps", OutLifetimeProps); } + AShooterHUD * GetLocalOwnerHUD() { return NativeCall(this, "UPrimalInventoryComponent.GetLocalOwnerHUD"); } + int GetMaxInventoryItems(bool bIgnoreHiddenDefaultInventory) { return NativeCall(this, "UPrimalInventoryComponent.GetMaxInventoryItems", bIgnoreHiddenDefaultInventory); } + float GetOverrideItemCraftingTime_Implementation(UPrimalItem * TheItem) { return NativeCall(this, "UPrimalInventoryComponent.GetOverrideItemCraftingTime_Implementation", TheItem); } + AShooterPlayerController * GetOwnerController() { return NativeCall(this, "UPrimalInventoryComponent.GetOwnerController"); } + float GetSpoilingTimeMultiplier(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.GetSpoilingTimeMultiplier", anItem); } + float GetTotalDurabilityOfTemplate(TSubclassOf ItemTemplate) { return NativeCall>(this, "UPrimalInventoryComponent.GetTotalDurabilityOfTemplate", ItemTemplate); } + float GetTotalEquippedItemStat(EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalInventoryComponent.GetTotalEquippedItemStat", statType); } + void GiveInitialItems(bool SkipEngrams) { NativeCall(this, "UPrimalInventoryComponent.GiveInitialItems", SkipEngrams); } + static UPrimalInventoryComponent * GiveLootItemsToInventory(UPrimalInventoryComponent * Inventory, FSupplyCrateValuesOverride * LootCrateValues, bool bReturnLootInventory) { return NativeCall(nullptr, "UPrimalInventoryComponent.GiveLootItemsToInventory", Inventory, LootCrateValues, bReturnLootInventory); } + bool HasItemOfSameType(UClass * ItemClass) { return NativeCall(this, "UPrimalInventoryComponent.HasItemOfSameType", ItemClass); } + bool HasItemsEquipped(TArray> * ItemTemplates, bool bRequiresExactClassMatch, bool bOnlyArkItems, bool bEnsureAllItems) { return NativeCall> *, bool, bool, bool>(this, "UPrimalInventoryComponent.HasItemsEquipped", ItemTemplates, bRequiresExactClassMatch, bOnlyArkItems, bEnsureAllItems); } + bool HasMultipleUniqueItemTemplateQuantities(TSubclassOf ParentClass, int QuantityCount, int UniqueItemsNeeded, TArray> * ItemsFound, TArray * QuantitiesFound) { return NativeCall, int, int, TArray> *, TArray *>(this, "UPrimalInventoryComponent.HasMultipleUniqueItemTemplateQuantities", ParentClass, QuantityCount, UniqueItemsNeeded, ItemsFound, QuantitiesFound); } + int IncrementItemTemplateQuantity(TSubclassOf ItemTemplate, int amount, bool bReplicateToClient, bool bIsBlueprint, UPrimalItem ** UseSpecificItem, UPrimalItem ** IncrementedItem, bool bRequireExactClassMatch, bool bIsCraftingResourceConsumption, bool bIsFromUseConsumption, bool bIsArkTributeItem, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bDontExceedMaxItems) { return NativeCall, int, bool, bool, UPrimalItem **, UPrimalItem **, bool, bool, bool, bool, bool, bool, bool>(this, "UPrimalInventoryComponent.IncrementItemTemplateQuantity", ItemTemplate, amount, bReplicateToClient, bIsBlueprint, UseSpecificItem, IncrementedItem, bRequireExactClassMatch, bIsCraftingResourceConsumption, bIsFromUseConsumption, bIsArkTributeItem, ShowHUDNotification, bDontRecalcSpoilingTime, bDontExceedMaxItems); } + void InitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.InitDefaultInventory"); } + void InitializeInventory() { NativeCall(this, "UPrimalInventoryComponent.InitializeInventory"); } + void InventoryRefresh() { NativeCall(this, "UPrimalInventoryComponent.InventoryRefresh"); } + void InventoryViewersPlayLocalSound(USoundBase * aSound, bool bAttach) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersPlayLocalSound", aSound, bAttach); } + void InventoryViewersStopLocalSound(USoundBase * aSound) { NativeCall(this, "UPrimalInventoryComponent.InventoryViewersStopLocalSound", aSound); } + bool IsAtMaxInventoryItems() { return NativeCall(this, "UPrimalInventoryComponent.IsAtMaxInventoryItems"); } + bool IsCraftingAllowed(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.IsCraftingAllowed", anItem); } + bool IsLocal() { return NativeCall(this, "UPrimalInventoryComponent.IsLocal"); } + bool IsLocalInventoryViewer() { return NativeCall(this, "UPrimalInventoryComponent.IsLocalInventoryViewer"); } + bool IsLocalToPlayer(AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalInventoryComponent.IsLocalToPlayer", ForPC); } + bool IsOwnedByPlayer() { return NativeCall(this, "UPrimalInventoryComponent.IsOwnedByPlayer"); } + bool IsOwnerMarkedForSeamlessTravel() { return NativeCall(this, "UPrimalInventoryComponent.IsOwnerMarkedForSeamlessTravel"); } + bool IsRepairingAllowed() { return NativeCall(this, "UPrimalInventoryComponent.IsRepairingAllowed"); } + bool IsServerCustomFolder(int InventoryCompType) { return NativeCall(this, "UPrimalInventoryComponent.IsServerCustomFolder", InventoryCompType); } + bool IsValidCraftingResource(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.IsValidCraftingResource", theItem); } + bool LoadAdditionalStructureEngrams() { return NativeCall(this, "UPrimalInventoryComponent.LoadAdditionalStructureEngrams"); } + void LocalUseItemSlot(int slotIndex, bool bForceCraft) { NativeCall(this, "UPrimalInventoryComponent.LocalUseItemSlot", slotIndex, bForceCraft); } + void NotifyClientsDurabilityChange(UPrimalItem * anItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientsDurabilityChange", anItem); } + void NotifyClientsItemStatus(UPrimalItem * anItem, bool bEquippedItem, bool bRemovedItem, bool bOnlyUpdateQuantity, bool bOnlyUpdateDurability, bool bOnlyNotifyItemSwap, UPrimalItem * anItem2, FItemNetID * InventoryInsertAfterItemID, bool bUsedItem, bool bNotifyCraftQueue, bool ShowHUDNotification, bool bOnlyUpdateSpoilingTimes, bool bOnlyRemovedFromSlot, bool bOnlyFinishedUseSlotTimeRemaining) { NativeCall(this, "UPrimalInventoryComponent.NotifyClientsItemStatus", anItem, bEquippedItem, bRemovedItem, bOnlyUpdateQuantity, bOnlyUpdateDurability, bOnlyNotifyItemSwap, anItem2, InventoryInsertAfterItemID, bUsedItem, bNotifyCraftQueue, ShowHUDNotification, bOnlyUpdateSpoilingTimes, bOnlyRemovedFromSlot, bOnlyFinishedUseSlotTimeRemaining); } + void NotifyCraftedItem(UPrimalItem * anItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyCraftedItem", anItem); } + void NotifyCraftingItemConsumption(TSubclassOf ItemTemplate, int amount) { NativeCall, int>(this, "UPrimalInventoryComponent.NotifyCraftingItemConsumption", ItemTemplate, amount); } + void NotifyItemAdded(UPrimalItem * theItem, bool bEquippedItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemAdded", theItem, bEquippedItem); } + void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemRemoved(UPrimalItem * theItem) { NativeCall(this, "UPrimalInventoryComponent.NotifyItemRemoved", theItem); } + void OnComponentCreated() { NativeCall(this, "UPrimalInventoryComponent.OnComponentCreated"); } + void OnComponentDestroyed() { NativeCall(this, "UPrimalInventoryComponent.OnComponentDestroyed"); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "UPrimalInventoryComponent.OnDeserializedByGame", DeserializationType); } + void OnRegister() { NativeCall(this, "UPrimalInventoryComponent.OnRegister"); } + bool OverrideBlueprintCraftingRequirement(TSubclassOf ItemTemplate, int ItemQuantity) { return NativeCall, int>(this, "UPrimalInventoryComponent.OverrideBlueprintCraftingRequirement", ItemTemplate, ItemQuantity); } + FString * OverrideItemCraftingDescription_Implementation(FString * result, UPrimalItem * TheItem, FString * CraftingDesc) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemCraftingDescription_Implementation", result, TheItem, CraftingDesc); } + float OverrideItemMinimumUseInterval(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemMinimumUseInterval", theItem); } + int OverrideNewCraftingGivemItemCount_Implementation(UPrimalItem * TheItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideNewCraftingGivemItemCount_Implementation", TheItem); } + void OwnerDied() { NativeCall(this, "UPrimalInventoryComponent.OwnerDied"); } + bool RefreshItemSpoilingTimes(bool bSendToClients) { return NativeCall(this, "UPrimalInventoryComponent.RefreshItemSpoilingTimes", bSendToClients); } + void RegisterComponentTickFunctions(bool bRegister, bool bSaveAndRestoreComponentTickState) { NativeCall(this, "UPrimalInventoryComponent.RegisterComponentTickFunctions", bRegister, bSaveAndRestoreComponentTickState); } + void RemoteAddItemToCustomFolder(FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteAddItemToCustomFolder", CFolderName, InventoryCompType, ItemId); } + void RemoteDeleteCustomFolder(FString * CFolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteCustomFolder", CFolderName, InventoryCompType); } + void RemoteDeleteItemFromCustomFolder(AShooterPlayerController * PC, FString * CFolderName, int InventoryCompType, FItemNetID ItemId) { NativeCall(this, "UPrimalInventoryComponent.RemoteDeleteItemFromCustomFolder", PC, CFolderName, InventoryCompType, ItemId); } + bool RemoteInventoryAllowAddItems(AShooterPlayerController * PC, UPrimalItem * anItem, int * anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } + bool RemoteInventoryAllowCraftingItems(AShooterPlayerController * PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowCraftingItems", PC, bIgnoreEnabled); } + bool RemoteInventoryAllowRemoveItems(AShooterPlayerController * PC, UPrimalItem * anItemToTransfer, int * requestedQuantity, bool bRequestedByPlayer, bool bRequestDropping) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer, bRequestDropping); } + bool RemoteInventoryAllowRepairingItems(AShooterPlayerController * PC, bool bIgnoreEnabled) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowRepairingItems", PC, bIgnoreEnabled); } + bool RemoteInventoryAllowViewing(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.RemoteInventoryAllowViewing", PC); } + void RemoveCustomFolder(AShooterPlayerController * PC, FString FolderName, int InventoryCompType) { NativeCall(this, "UPrimalInventoryComponent.RemoveCustomFolder", PC, FolderName, InventoryCompType); } + bool RemoveItem(FItemNetID * itemID, bool bDoDrop, bool bSecondryAction, bool bForceRemoval, bool showHUDMessage) { return NativeCall(this, "UPrimalInventoryComponent.RemoveItem", itemID, bDoDrop, bSecondryAction, bForceRemoval, showHUDMessage); } + void RemoveItemCrafting(UPrimalItem * craftingItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemCrafting", craftingItem); } + void RemoveItemSpoilingTimer(UPrimalItem * theItem) { NativeCall(this, "UPrimalInventoryComponent.RemoveItemSpoilingTimer", theItem); } + void ServerAddItemToSlot_Implementation(FItemNetID ItemID, int SlotIndex) { NativeCall(this, "UPrimalInventoryComponent.ServerAddItemToSlot_Implementation", ItemID, SlotIndex); } + void ServerCloseRemoteInventory(AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCloseRemoteInventory", ByPC); } + void ServerCraftItem(FItemNetID * itemID, AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerCraftItem", itemID, ByPC); } + bool ServerEquipItem(FItemNetID * itemID) { return NativeCall(this, "UPrimalInventoryComponent.ServerEquipItem", itemID); } + void ServerForceMergeItemStack_Implementation(FItemNetID Item1ID, FItemNetID Item2ID) { NativeCall(this, "UPrimalInventoryComponent.ServerForceMergeItemStack_Implementation", Item1ID, Item2ID); } + void ServerMakeRecipeItem_Implementation(APrimalStructureItemContainer * Container, FItemNetID NoteToConsume, TSubclassOf RecipeItemTemplate, FString * CustomName, FString * CustomDescription, TArray * CustomColors, TArray * CustomRequirements) { NativeCall, FString *, FString *, TArray *, TArray *>(this, "UPrimalInventoryComponent.ServerMakeRecipeItem_Implementation", Container, NoteToConsume, RecipeItemTemplate, CustomName, CustomDescription, CustomColors, CustomRequirements); } + void ServerMergeItemStack_Implementation(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerMergeItemStack_Implementation", ItemID); } + void ServerRemoveItemFromSlot_Implementation(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerRemoveItemFromSlot_Implementation", ItemID); } + void ServerRepairItem(FItemNetID * itemID, AShooterPlayerController * ByPC, bool bRepairIgnoreInventoryRequirement, float RepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalInventoryComponent.ServerRepairItem", itemID, ByPC, bRepairIgnoreInventoryRequirement, RepairPercentage, RepairSpeedMultiplier); } + void ServerRequestItems(AShooterPlayerController * forPC, bool bEquippedItems, bool bIsFirstSpawn, bool allowLocalController) { NativeCall(this, "UPrimalInventoryComponent.ServerRequestItems", forPC, bEquippedItems, bIsFirstSpawn, allowLocalController); } + void ServerSplitItemStack_Implementation(FItemNetID ItemID, int AmountToSplit) { NativeCall(this, "UPrimalInventoryComponent.ServerSplitItemStack_Implementation", ItemID, AmountToSplit); } + void ServerUpgradeItem(FItemNetID * itemID, AShooterPlayerController * ByPC, int ItemStatModifierIndexToUpgrade, int ItemStatGroupIndexToUpgrade) { NativeCall(this, "UPrimalInventoryComponent.ServerUpgradeItem", itemID, ByPC, ItemStatModifierIndexToUpgrade, ItemStatGroupIndexToUpgrade); } + void ServerUseInventoryItem(FItemNetID * itemID, AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerUseInventoryItem", itemID, ByPC); } + void ServerUseItemWithItem(FItemNetID * itemID1, FItemNetID * itemID2, int AdditionalData) { NativeCall(this, "UPrimalInventoryComponent.ServerUseItemWithItem", itemID1, itemID2, AdditionalData); } + void ServerViewRemoteInventory(AShooterPlayerController * ByPC) { NativeCall(this, "UPrimalInventoryComponent.ServerViewRemoteInventory", ByPC); } + void SetCraftingEnabled(bool bEnable) { NativeCall(this, "UPrimalInventoryComponent.SetCraftingEnabled", bEnable); } + void SetEquippedItemsOwnerNoSee(bool bNewOwnerNoSee, bool bForceHideFirstPerson) { NativeCall(this, "UPrimalInventoryComponent.SetEquippedItemsOwnerNoSee", bNewOwnerNoSee, bForceHideFirstPerson); } + void SetNextItemConsumptionID_Implementation(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemConsumptionID_Implementation", NextItemID); } + void SetNextItemSpoilingID_Implementation(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemSpoilingID_Implementation", NextItemID); } + static ADroppedItem * StaticDropItem(AActor * forActor, FItemNetInfo * theInfo, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector * DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector *, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropItem", forActor, theInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + static ADroppedItem * StaticDropNewItem(AActor * forActor, TSubclassOf AnItemClass, float ItemQuality, bool bForceNoBlueprint, int QuantityOverride, bool bForceBlueprint, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, float, bool, int, bool, TSubclassOf, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItem", forActor, AnItemClass, ItemQuality, bForceNoBlueprint, QuantityOverride, bForceBlueprint, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + static ADroppedItem * StaticDropNewItemWithInfo(AActor * forActor, FItemNetInfo * ItemInfo, TSubclassOf TheDroppedTemplateOverride, FRotator * DroppedRotationOffset, bool bOverrideSpawnTransform, FVector * LocationOverride, FRotator * RotationOverride, bool bPreventDropImpulse, bool bThrow, bool bSecondaryAction, bool bSetItemDropLocation, UStaticMesh * DroppedMeshOverride, FVector DroppedScaleOverride, UMaterialInterface * DroppedMaterialOverride, float DroppedLifeSpanOverride) { return NativeCall, FRotator *, bool, FVector *, FRotator *, bool, bool, bool, bool, UStaticMesh *, FVector, UMaterialInterface *, float>(nullptr, "UPrimalInventoryComponent.StaticDropNewItemWithInfo", forActor, ItemInfo, TheDroppedTemplateOverride, DroppedRotationOffset, bOverrideSpawnTransform, LocationOverride, RotationOverride, bPreventDropImpulse, bThrow, bSecondaryAction, bSetItemDropLocation, DroppedMeshOverride, DroppedScaleOverride, DroppedMaterialOverride, DroppedLifeSpanOverride); } + void StopAllCraftingRepairing() { NativeCall(this, "UPrimalInventoryComponent.StopAllCraftingRepairing"); } + void SwapCustomFolder(FString CFolder1, FString CFolder2, int DataListType) { NativeCall(this, "UPrimalInventoryComponent.SwapCustomFolder", CFolder1, CFolder2, DataListType); } + void SwapInventoryItems(FItemNetID * itemID1, FItemNetID * itemID2) { NativeCall(this, "UPrimalInventoryComponent.SwapInventoryItems", itemID1, itemID2); } + void TickCraftQueue(float DeltaTime, AShooterGameState * theGameState) { NativeCall(this, "UPrimalInventoryComponent.TickCraftQueue", DeltaTime, theGameState); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex, int hitBodyIndex) { return NativeCall(this, "UPrimalInventoryComponent.TryMultiUse", ForPC, UseIndex, hitBodyIndex); } + void UnequipAllItems() { NativeCall(this, "UPrimalInventoryComponent.UnequipAllItems"); } + void Unstasised() { NativeCall(this, "UPrimalInventoryComponent.Unstasised"); } + void UpdateNetWeaponClipAmmo(UPrimalItem * anItem, int ammo) { NativeCall(this, "UPrimalInventoryComponent.UpdateNetWeaponClipAmmo", anItem, ammo); } + void UpdateTribeGroupInventoryRank_Implementation(char NewRank) { NativeCall(this, "UPrimalInventoryComponent.UpdateTribeGroupInventoryRank_Implementation", NewRank); } + void UpdatedCraftQueue() { NativeCall(this, "UPrimalInventoryComponent.UpdatedCraftQueue"); } + void UsedItem(UPrimalItem * anItem) { NativeCall(this, "UPrimalInventoryComponent.UsedItem", anItem); } + void BPAccessedInventory(AShooterPlayerController * ForPC) { NativeCall(this, "UPrimalInventoryComponent.BPAccessedInventory", ForPC); } + bool BPAllowUseInInventory(UPrimalItem * theItem, bool bIsRemoteInventory, AShooterPlayerController * ByPC) { return NativeCall(this, "UPrimalInventoryComponent.BPAllowUseInInventory", theItem, bIsRemoteInventory, ByPC); } + void BPCraftingFinishedNotification(UPrimalItem * itemToBeCrafted) { NativeCall(this, "UPrimalInventoryComponent.BPCraftingFinishedNotification", itemToBeCrafted); } + bool BPCustomRemoteInventoryAllowAddItems(AShooterPlayerController * PC, UPrimalItem * anItem, int anItemQuantityOverride, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowAddItems", PC, anItem, anItemQuantityOverride, bRequestedByPlayer); } + bool BPCustomRemoteInventoryAllowRemoveItems(AShooterPlayerController * PC, UPrimalItem * anItemToTransfer, int requestedQuantity, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalInventoryComponent.BPCustomRemoteInventoryAllowRemoveItems", PC, anItemToTransfer, requestedQuantity, bRequestedByPlayer); } + void BPFirstInit() { NativeCall(this, "UPrimalInventoryComponent.BPFirstInit"); } + void BPInitializeInventory() { NativeCall(this, "UPrimalInventoryComponent.BPInitializeInventory"); } + void BPInitializedInventory() { NativeCall(this, "UPrimalInventoryComponent.BPInitializedInventory"); } + void BPInventoryRefresh() { NativeCall(this, "UPrimalInventoryComponent.BPInventoryRefresh"); } + bool BPIsCraftingAllowed(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.BPIsCraftingAllowed", anItem); } + bool BPIsValidCraftingResource(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPIsValidCraftingResource", theItem); } + void BPNotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemAdded", anItem, bEquipItem); } + void BPNotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemQuantityUpdated", anItem, amount); } + void BPNotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "UPrimalInventoryComponent.BPNotifyItemRemoved", anItem); } + float BPOverrideItemMinimumUseInterval(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPOverrideItemMinimumUseInterval", theItem); } + void BPPostInitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.BPPostInitDefaultInventory"); } + void BPPreInitDefaultInventory() { NativeCall(this, "UPrimalInventoryComponent.BPPreInitDefaultInventory"); } + bool BPPreventEquipItem(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.BPPreventEquipItem", theItem); } + bool BPPreventWeaponEquip(UPrimalItem * anItem) { return NativeCall(this, "UPrimalInventoryComponent.BPPreventWeaponEquip", anItem); } + bool BPRemoteInventoryAllowCrafting(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowCrafting", PC); } + bool BPRemoteInventoryAllowRemoveItems(AShooterPlayerController * PC, UPrimalItem * anItemToTransfer) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowRemoveItems", PC, anItemToTransfer); } + bool BPRemoteInventoryAllowViewing(AShooterPlayerController * PC) { return NativeCall(this, "UPrimalInventoryComponent.BPRemoteInventoryAllowViewing", PC); } + void BPRequestedInventoryItems(AShooterPlayerController * forPC) { NativeCall(this, "UPrimalInventoryComponent.BPRequestedInventoryItems", forPC); } + void ClientItemMessageNotification(FItemNetID ItemID, EPrimalItemMessage::Type ItemMessageType) { NativeCall(this, "UPrimalInventoryComponent.ClientItemMessageNotification", ItemID, ItemMessageType); } + void ClientUpdateFreeCraftingMode(bool bNewFreeCraftingModeValue) { NativeCall(this, "UPrimalInventoryComponent.ClientUpdateFreeCraftingMode", bNewFreeCraftingModeValue); } + float GetOverrideItemCraftingTime(UPrimalItem * TheItem) { return NativeCall(this, "UPrimalInventoryComponent.GetOverrideItemCraftingTime", TheItem); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "UPrimalInventoryComponent.GetPrivateStaticClass", Package); } + void OverrideCraftingResourceRequirements(UPrimalItem * TheItem) { NativeCall(this, "UPrimalInventoryComponent.OverrideCraftingResourceRequirements", TheItem); } + FString * OverrideItemCraftingDescription(FString * result, UPrimalItem * TheItem, FString * CraftingDesc) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemCraftingDescription", result, TheItem, CraftingDesc); } + FString * OverrideItemUseString(FString * result, UPrimalItem * TheItem, FString * UseString) { return NativeCall(this, "UPrimalInventoryComponent.OverrideItemUseString", result, TheItem, UseString); } + int OverrideNewCraftingGivemItemCount(UPrimalItem * TheItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideNewCraftingGivemItemCount", TheItem); } + int OverrideNewCraftingGivemItemQuantity(UPrimalItem * TheItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideNewCraftingGivemItemQuantity", TheItem); } + bool OverrideUseItem(UPrimalItem * theItem) { return NativeCall(this, "UPrimalInventoryComponent.OverrideUseItem", theItem); } + void ServerAddItemToSlot(FItemNetID ItemID, int SlotIndex) { NativeCall(this, "UPrimalInventoryComponent.ServerAddItemToSlot", ItemID, SlotIndex); } + void ServerForceMergeItemStack(FItemNetID Item1ID, FItemNetID Item2ID) { NativeCall(this, "UPrimalInventoryComponent.ServerForceMergeItemStack", Item1ID, Item2ID); } + void ServerMakeRecipeItem(APrimalStructureItemContainer * Container, FItemNetID NoteToConsume, TSubclassOf RecipeItemTemplate, FString * CustomName, FString * CustomDescription, TArray * CustomColors, TArray * CustomRequirements) { NativeCall, FString *, FString *, TArray *, TArray *>(this, "UPrimalInventoryComponent.ServerMakeRecipeItem", Container, NoteToConsume, RecipeItemTemplate, CustomName, CustomDescription, CustomColors, CustomRequirements); } + void ServerRemoveItemFromSlot(FItemNetID ItemID) { NativeCall(this, "UPrimalInventoryComponent.ServerRemoveItemFromSlot", ItemID); } + void ServerSplitItemStack(FItemNetID ItemID, int AmountToSplit) { NativeCall(this, "UPrimalInventoryComponent.ServerSplitItemStack", ItemID, AmountToSplit); } + void SetNextItemConsumptionID(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemConsumptionID", NextItemID); } + void SetNextItemSpoilingID(FItemNetID NextItemID) { NativeCall(this, "UPrimalInventoryComponent.SetNextItemSpoilingID", NextItemID); } + static void StaticRegisterNativesUPrimalInventoryComponent() { NativeCall(nullptr, "UPrimalInventoryComponent.StaticRegisterNativesUPrimalInventoryComponent"); } + void UpdateTribeGroupInventoryRank(char NewRank) { NativeCall(this, "UPrimalInventoryComponent.UpdateTribeGroupInventoryRank", NewRank); } +}; + +struct FUseItemAddCharacterStatusValue +{ + float BaseAmountToAdd; + unsigned __int32 bPercentOfMaxStatusValue : 1; + unsigned __int32 bPercentOfCurrentStatusValue : 1; + unsigned __int32 bUseItemQuality : 1; + unsigned __int32 bDontRequireLessThanMaxToUse : 1; + unsigned __int32 bAddOverTime : 1; + unsigned __int32 bAddOverTimeSpeedInSeconds : 1; + unsigned __int32 bContinueOnUnchangedValue : 1; + unsigned __int32 bSetValue : 1; + unsigned __int32 bSetAdditionalValue : 1; + unsigned __int32 bResetExistingModifierDescriptionIndex : 1; + unsigned __int32 bForceUseStatOnDinos : 1; + unsigned __int32 bMoveTowardsEquilibrium : 1; + unsigned __int32 bAddTowardsEquilibrium : 1; + unsigned __int32 bLimitToMaxValue : 1; + unsigned __int32 bConsumeDurability : 1; + float LimitExistingModifierDescriptionToMaxAmount; + float AddOverTimeSpeed; + float PercentAbsoluteMaxValue; + float PercentAbsoluteMinValue; + int StatusValueModifierDescriptionIndex; + float ItemQualityAddValueMultiplier; + TEnumAsByte StatusValueType; + TEnumAsByte StopAtValueNearMax; + TSubclassOf ScaleValueByCharacterDamageType; +}; + +struct UPrimalItem : UObject +{ + float& MinBlueprintCraftsPercentageField() { return *GetNativePointerField(this, "UPrimalItem.MinBlueprintCraftsPercentage"); } + float& MaxBlueprntCraftsPercentageField() { return *GetNativePointerField(this, "UPrimalItem.MaxBlueprntCraftsPercentage"); } + int& LimitSkinApplicationsField() { return *GetNativePointerField(this, "UPrimalItem.LimitSkinApplications"); } + float& DinoAutoHealingThresholdPercentField() { return *GetNativePointerField(this, "UPrimalItem.DinoAutoHealingThresholdPercent"); } + float& DinoAutoHealingUseTimeIntervalField() { return *GetNativePointerField(this, "UPrimalItem.DinoAutoHealingUseTimeInterval"); } + float& ItemWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.ItemWeightMultiplier"); } + float& BaseItemWeightMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.BaseItemWeightMultiplier"); } + int& ArkTributeVersionField() { return *GetNativePointerField(this, "UPrimalItem.ArkTributeVersion"); } + TArray>& EquipRequiresExplicitOwnerClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.EquipRequiresExplicitOwnerClasses"); } + TArray& EquipRequiresExplicitOwnerTagsField() { return *GetNativePointerField*>(this, "UPrimalItem.EquipRequiresExplicitOwnerTags"); } + unsigned int& ExpirationTimeUTCField() { return *GetNativePointerField(this, "UPrimalItem.ExpirationTimeUTC"); } + FString& AbstractItemCraftingDescriptionField() { return *GetNativePointerField(this, "UPrimalItem.AbstractItemCraftingDescription"); } + TArray>& ItemSkinUseOnItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.ItemSkinUseOnItemClasses"); } + TArray>& ItemSkinPreventOnItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.ItemSkinPreventOnItemClasses"); } + float& AppliedArmorMovementPenalyField() { return *GetNativePointerField(this, "UPrimalItem.AppliedArmorMovementPenaly"); } + int& BuildStructuresMaxToAllowRemovalField() { return *GetNativePointerField(this, "UPrimalItem.BuildStructuresMaxToAllowRemoval"); } + float& SlottedDecreaseDurabilitySpeedField() { return *GetNativePointerField(this, "UPrimalItem.SlottedDecreaseDurabilitySpeed"); } + FieldArray EquippedCharacterStatusValueDecreaseMultipliersField() { return {this, "UPrimalItem.EquippedCharacterStatusValueDecreaseMultipliers"}; } + USoundBase * ItemBrokenSoundField() { return *GetNativePointerField(this, "UPrimalItem.ItemBrokenSound"); } + USoundCue * UseItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemSound"); } + USoundBase * EquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.EquipSound"); } + USoundBase * UnEquipSoundField() { return *GetNativePointerField(this, "UPrimalItem.UnEquipSound"); } + USoundBase * UsedOnOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UsedOnOtherItemSound"); } + USoundBase * RemovedFromOtherItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.RemovedFromOtherItemSound"); } + float& RandomChanceToBeBlueprintField() { return *GetNativePointerField(this, "UPrimalItem.RandomChanceToBeBlueprint"); } + TArray& ActorClassAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalItem.ActorClassAttachmentInfos"); } + TArray * ItemAttachmentInfosField() { return *GetNativePointerField **>(this, "UPrimalItem.ItemAttachmentInfos"); } + TArray& DynamicItemAttachmentInfosField() { return *GetNativePointerField*>(this, "UPrimalItem.DynamicItemAttachmentInfos"); } + TArray& ItemSkinAddItemAttachmentsField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemSkinAddItemAttachments"); } + TEnumAsByte& MyItemTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyItemType"); } + TEnumAsByte& MyConsumableTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyConsumableType"); } + TEnumAsByte& MyEquipmentTypeField() { return *GetNativePointerField*>(this, "UPrimalItem.MyEquipmentType"); } + int& ExtraItemCategoryFlagsField() { return *GetNativePointerField(this, "UPrimalItem.ExtraItemCategoryFlags"); } + FVector& BlockingShieldFPVTranslationField() { return *GetNativePointerField(this, "UPrimalItem.BlockingShieldFPVTranslation"); } + FRotator& BlockingShieldFPVRotationField() { return *GetNativePointerField(this, "UPrimalItem.BlockingShieldFPVRotation"); } + float& ShieldBlockDamagePercentageField() { return *GetNativePointerField(this, "UPrimalItem.ShieldBlockDamagePercentage"); } + float& ShieldDamageToDurabilityRatioField() { return *GetNativePointerField(this, "UPrimalItem.ShieldDamageToDurabilityRatio"); } + UAnimMontage * PlayAnimationOnUseField() { return *GetNativePointerField(this, "UPrimalItem.PlayAnimationOnUse"); } + int& CraftingMinLevelRequirementField() { return *GetNativePointerField(this, "UPrimalItem.CraftingMinLevelRequirement"); } + float& CraftingCooldownIntervalField() { return *GetNativePointerField(this, "UPrimalItem.CraftingCooldownInterval"); } + TSubclassOf& CraftingActorToSpawnField() { return *GetNativePointerField*>(this, "UPrimalItem.CraftingActorToSpawn"); } + UTexture2D * BlueprintBackgroundOverrideTextureField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintBackgroundOverrideTexture"); } + FString& CraftItemButtonStringOverrideField() { return *GetNativePointerField(this, "UPrimalItem.CraftItemButtonStringOverride"); } + TSubclassOf& UseSpawnActorClassField() { return *GetNativePointerField*>(this, "UPrimalItem.UseSpawnActorClass"); } + FVector& UseSpawnActorLocOffsetField() { return *GetNativePointerField(this, "UPrimalItem.UseSpawnActorLocOffset"); } + int& SlotIndexField() { return *GetNativePointerField(this, "UPrimalItem.SlotIndex"); } + FItemNetID& ItemIDField() { return *GetNativePointerField(this, "UPrimalItem.ItemID"); } + TSubclassOf& ItemCustomClassField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemCustomClass"); } + TSubclassOf& ItemSkinTemplateField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemSkinTemplate"); } + float& ItemRatingField() { return *GetNativePointerField(this, "UPrimalItem.ItemRating"); } + unsigned __int16& CraftQueueField() { return *GetNativePointerField(this, "UPrimalItem.CraftQueue"); } + float& CraftingSkillField() { return *GetNativePointerField(this, "UPrimalItem.CraftingSkill"); } + FString& CustomItemNameField() { return *GetNativePointerField(this, "UPrimalItem.CustomItemName"); } + FString& CustomItemDescriptionField() { return *GetNativePointerField(this, "UPrimalItem.CustomItemDescription"); } + TArray& CustomColorsField() { return *GetNativePointerField*>(this, "UPrimalItem.CustomColors"); } + TArray& CustomResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.CustomResourceRequirements"); } + long double& NextCraftCompletionTimeField() { return *GetNativePointerField(this, "UPrimalItem.NextCraftCompletionTime"); } + TWeakObjectPtr& OwnerInventoryField() { return *GetNativePointerField*>(this, "UPrimalItem.OwnerInventory"); } + char& ItemQualityIndexField() { return *GetNativePointerField(this, "UPrimalItem.ItemQualityIndex"); } + TSubclassOf& SupportDragOntoItemClassField() { return *GetNativePointerField*>(this, "UPrimalItem.SupportDragOntoItemClass"); } + TArray>& SupportDragOntoItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.SupportDragOntoItemClasses"); } + TArray>& SkinWeaponTemplatesField() { return *GetNativePointerField>*>(this, "UPrimalItem.SkinWeaponTemplates"); } + TSubclassOf& AmmoSupportDragOntoWeaponItemWeaponTemplateField() { return *GetNativePointerField*>(this, "UPrimalItem.AmmoSupportDragOntoWeaponItemWeaponTemplate"); } + TArray>& AmmoSupportDragOntoWeaponItemWeaponTemplatesField() { return *GetNativePointerField>*>(this, "UPrimalItem.AmmoSupportDragOntoWeaponItemWeaponTemplates"); } + TArray& UseItemAddCharacterStatusValuesField() { return *GetNativePointerField*>(this, "UPrimalItem.UseItemAddCharacterStatusValues"); } + float& Ingredient_WeightIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_WeightIncreasePerQuantity"); } + float& Ingredient_FoodIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_FoodIncreasePerQuantity"); } + float& Ingredient_HealthIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_HealthIncreasePerQuantity"); } + float& Ingredient_WaterIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_WaterIncreasePerQuantity"); } + float& Ingredient_StaminaIncreasePerQuantityField() { return *GetNativePointerField(this, "UPrimalItem.Ingredient_StaminaIncreasePerQuantity"); } + FString& DescriptiveNameBaseField() { return *GetNativePointerField(this, "UPrimalItem.DescriptiveNameBase"); } + FString& ItemDescriptionNewField() { return *GetNativePointerField(this, "UPrimalItem.ItemDescriptionNew"); } + FString& DurabilityStringShortField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityStringShort"); } + FString& DurabilityStringField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityString"); } + float& DroppedItemLifeSpanOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedItemLifeSpanOverride"); } + UStaticMesh * DroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshOverride"); } + UMaterialInterface * DroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshMaterialOverride"); } + FVector& DroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "UPrimalItem.DroppedMeshOverrideScale3D"); } + TSubclassOf& SpoilingItemField() { return *GetNativePointerField*>(this, "UPrimalItem.SpoilingItem"); } + TArray>& UseRequiresOwnerActorClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.UseRequiresOwnerActorClasses"); } + TSubclassOf& PreservingItemClassField() { return *GetNativePointerField*>(this, "UPrimalItem.PreservingItemClass"); } + float& PreservingItemSpoilingTimeMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.PreservingItemSpoilingTimeMultiplier"); } + float& SpoilingTimeField() { return *GetNativePointerField(this, "UPrimalItem.SpoilingTime"); } + int& CraftingConsumesDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.CraftingConsumesDurability"); } + float& RepairResourceRequirementMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.RepairResourceRequirementMultiplier"); } + float& BaseItemWeightField() { return *GetNativePointerField(this, "UPrimalItem.BaseItemWeight"); } + float& DurabilityIncreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityIncreaseMultiplier"); } + float& NewItemDurabilityOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NewItemDurabilityOverride"); } + float& DurabilityDecreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityDecreaseMultiplier"); } + float& UseDecreaseDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.UseDecreaseDurability"); } + float& AutoDurabilityDecreaseIntervalField() { return *GetNativePointerField(this, "UPrimalItem.AutoDurabilityDecreaseInterval"); } + float& AutoDecreaseMinDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.AutoDecreaseMinDurability"); } + float& AutoDecreaseDurabilityAmountPerIntervalField() { return *GetNativePointerField(this, "UPrimalItem.AutoDecreaseDurabilityAmountPerInterval"); } + float& UseDecreaseDurabilityMinField() { return *GetNativePointerField(this, "UPrimalItem.UseDecreaseDurabilityMin"); } + float& UseMinDurabilityRequirementField() { return *GetNativePointerField(this, "UPrimalItem.UseMinDurabilityRequirement"); } + float& ResourceRarityField() { return *GetNativePointerField(this, "UPrimalItem.ResourceRarity"); } + float& BlueprintTimeToCraftField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintTimeToCraft"); } + float& MinBlueprintTimeToCraftField() { return *GetNativePointerField(this, "UPrimalItem.MinBlueprintTimeToCraft"); } + float& BlueprintWeightField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintWeight"); } + float& MinimumUseIntervalField() { return *GetNativePointerField(this, "UPrimalItem.MinimumUseInterval"); } + float& TimeForFullRepairField() { return *GetNativePointerField(this, "UPrimalItem.TimeForFullRepair"); } + float& NewBaseCraftingXPField() { return *GetNativePointerField(this, "UPrimalItem.NewBaseCraftingXP"); } + float& NewBaseRepairingXPField() { return *GetNativePointerField(this, "UPrimalItem.NewBaseRepairingXP"); } + float& GlobalQualityTierCraftingResourceQuantityMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.GlobalQualityTierCraftingResourceQuantityMultiplier"); } + TArray>& ResourceHarvestAlternateItemClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.ResourceHarvestAlternateItemClasses"); } + TArray& ResourceHarvestAlternateItemWeightsField() { return *GetNativePointerField*>(this, "UPrimalItem.ResourceHarvestAlternateItemWeights"); } + TArray& ResourceHarvestAlternateItemQuantityMultipliersField() { return *GetNativePointerField*>(this, "UPrimalItem.ResourceHarvestAlternateItemQuantityMultipliers"); } + TArray& BaseCraftingResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.BaseCraftingResourceRequirements"); } + TArray& QualityTierExtraCraftingResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.QualityTierExtraCraftingResourceRequirements"); } + TArray& OverrideRepairingRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.OverrideRepairingRequirements"); } + FieldArray ItemStatInfosField() { return {this, "UPrimalItem.ItemStatInfos"}; } + TArray& StatGroupModifierInfosField() { return *GetNativePointerField*>(this, "UPrimalItem.StatGroupModifierInfos"); } + FieldArray ItemStatValuesField() { return {this, "UPrimalItem.ItemStatValues"}; } + FieldArray ItemStatUpgradesField() { return {this, "UPrimalItem.ItemStatUpgrades"}; } + TArray& ItemStatGroupValuesField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemStatGroupValues"); } + TArray& ItemStatGroupUpgradesField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemStatGroupUpgrades"); } + TMap >& ItemStatGroupValuesMapField() { return *GetNativePointerField >*>(this, "UPrimalItem.ItemStatGroupValuesMap"); } + unsigned int& WeaponClipAmmoField() { return *GetNativePointerField(this, "UPrimalItem.WeaponClipAmmo"); } + float& WeaponFrequencyField() { return *GetNativePointerField(this, "UPrimalItem.WeaponFrequency"); } + long double& LastTimeToShowInfoField() { return *GetNativePointerField(this, "UPrimalItem.LastTimeToShowInfo"); } + char& ItemVersionField() { return *GetNativePointerField(this, "UPrimalItem.ItemVersion"); } + float& ItemDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.ItemDurability"); } + float& MinItemDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.MinItemDurability"); } + float& SavedDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.SavedDurability"); } + TSubclassOf& WeaponTemplateField() { return *GetNativePointerField*>(this, "UPrimalItem.WeaponTemplate"); } + UTexture2D * BrokenIconField() { return *GetNativePointerField(this, "UPrimalItem.BrokenIcon"); } + UTexture2D * ItemIconField() { return *GetNativePointerField(this, "UPrimalItem.ItemIcon"); } + UTexture2D * AlternateItemIconBelowDurabilityField() { return *GetNativePointerField(this, "UPrimalItem.AlternateItemIconBelowDurability"); } + float& AlternateItemIconBelowDurabilityValueField() { return *GetNativePointerField(this, "UPrimalItem.AlternateItemIconBelowDurabilityValue"); } + UMaterialInterface * ItemIconMaterialParentField() { return *GetNativePointerField(this, "UPrimalItem.ItemIconMaterialParent"); } + FieldArray<__int16, 6> ItemColorIDField() { return {this, "UPrimalItem.ItemColorID"}; } + FieldArray<__int16, 6> PreSkinItemColorIDField() { return {this, "UPrimalItem.PreSkinItemColorID"}; } + FieldArray bUseItemColorField() { return {this, "UPrimalItem.bUseItemColor"}; } + int& ItemQuantityField() { return *GetNativePointerField(this, "UPrimalItem.ItemQuantity"); } + int& MaxItemQuantityField() { return *GetNativePointerField(this, "UPrimalItem.MaxItemQuantity"); } + TArray& SteamItemUserIDsField() { return *GetNativePointerField*>(this, "UPrimalItem.SteamItemUserIDs"); } + TSubclassOf& StructureToBuildField() { return *GetNativePointerField*>(this, "UPrimalItem.StructureToBuild"); } + TArray>& StructuresToBuildField() { return *GetNativePointerField>*>(this, "UPrimalItem.StructuresToBuild"); } + TSubclassOf& GiveItemWhenUsedField() { return *GetNativePointerField*>(this, "UPrimalItem.GiveItemWhenUsed"); } + TArray>& CraftingRequiresInventoryComponentField() { return *GetNativePointerField>*>(this, "UPrimalItem.CraftingRequiresInventoryComponent"); } + TSubclassOf& DroppedItemTemplateOverrideField() { return *GetNativePointerField*>(this, "UPrimalItem.DroppedItemTemplateOverride"); } + TSubclassOf& DroppedItemTemplateForSecondryActionField() { return *GetNativePointerField*>(this, "UPrimalItem.DroppedItemTemplateForSecondryAction"); } + TSubclassOf& BuffToGiveOwnerCharacterField() { return *GetNativePointerField*>(this, "UPrimalItem.BuffToGiveOwnerCharacter"); } + FRotator& PreviewCameraRotationField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraRotation"); } + FVector& PreviewCameraPivotOffsetField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraPivotOffset"); } + float& PreviewCameraDistanceScaleFactorField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraDistanceScaleFactor"); } + float& PreviewCameraDefaultZoomMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraDefaultZoomMultiplier"); } + float& PreviewCameraMaxZoomMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.PreviewCameraMaxZoomMultiplier"); } + FName& PlayerMeshTextureMaskParamNameField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMaskParamName"); } + UTexture2D * PlayerMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMask"); } + UTexture2D * PlayerMeshNoItemDefaultTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshNoItemDefaultTextureMask"); } + int& PlayerMeshTextureMaskMaterialIndexField() { return *GetNativePointerField(this, "UPrimalItem.PlayerMeshTextureMaskMaterialIndex"); } + TArray& PlayerMeshTextureMaskMaterialAdditionalIndexesField() { return *GetNativePointerField*>(this, "UPrimalItem.PlayerMeshTextureMaskMaterialAdditionalIndexes"); } + FName& FPVHandsMeshTextureMaskParamNameField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMaskParamName"); } + UTexture2D * FPVHandsMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.FPVHandsMeshTextureMask"); } + int& NewFPVHandsMeshTextureMaskMaterialIndexField() { return *GetNativePointerField(this, "UPrimalItem.NewFPVHandsMeshTextureMaskMaterialIndex"); } + UPrimalItem * WeaponAmmoOverrideItemCDOField() { return *GetNativePointerField(this, "UPrimalItem.WeaponAmmoOverrideItemCDO"); } + FName& FPVItemMeshTextureMaskParamNameField() { return *GetNativePointerField(this, "UPrimalItem.FPVItemMeshTextureMaskParamName"); } + UTexture2D * FPVItemMeshTextureMaskField() { return *GetNativePointerField(this, "UPrimalItem.FPVItemMeshTextureMask"); } + int& FPVItemMeshTextureMaskMaterialIndexField() { return *GetNativePointerField(this, "UPrimalItem.FPVItemMeshTextureMaskMaterialIndex"); } + long double& CreationTimeField() { return *GetNativePointerField(this, "UPrimalItem.CreationTime"); } + long double& LastAutoDurabilityDecreaseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastAutoDurabilityDecreaseTime"); } + long double& LastUseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastUseTime"); } + FString& ItemTypeCategoryStringField() { return *GetNativePointerField(this, "UPrimalItem.ItemTypeCategoryString"); } + long double& LastLocalUseTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastLocalUseTime"); } + TArray& ItemQualityCraftingResourceRequirementsMultipliersField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemQualityCraftingResourceRequirementsMultipliers"); } + int& TempSlotIndexField() { return *GetNativePointerField(this, "UPrimalItem.TempSlotIndex"); } + TWeakObjectPtr& AssociatedWeaponField() { return *GetNativePointerField*>(this, "UPrimalItem.AssociatedWeapon"); } + UPrimalItem * MyItemSkinField() { return *GetNativePointerField(this, "UPrimalItem.MyItemSkin"); } + TWeakObjectPtr& LastOwnerPlayerField() { return *GetNativePointerField*>(this, "UPrimalItem.LastOwnerPlayer"); } + float& CropGrowingFertilizerConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropGrowingFertilizerConsumptionRate"); } + float& CropMaxFruitFertilizerConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropMaxFruitFertilizerConsumptionRate"); } + float& CropGrowingWaterConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropGrowingWaterConsumptionRate"); } + float& CropMaxFruitWaterConsumptionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropMaxFruitWaterConsumptionRate"); } + int& CropMaxFruitsField() { return *GetNativePointerField(this, "UPrimalItem.CropMaxFruits"); } + float& CropNoFertilizerOrWaterCacheReductionRateField() { return *GetNativePointerField(this, "UPrimalItem.CropNoFertilizerOrWaterCacheReductionRate"); } + float& FertilizerEffectivenessMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.FertilizerEffectivenessMultiplier"); } + float& EggAlertDinosAggroAmountField() { return *GetNativePointerField(this, "UPrimalItem.EggAlertDinosAggroAmount"); } + float& EggAlertDinosAggroRadiusField() { return *GetNativePointerField(this, "UPrimalItem.EggAlertDinosAggroRadius"); } + TArray& EggAlertDinosAggroTagsField() { return *GetNativePointerField*>(this, "UPrimalItem.EggAlertDinosAggroTags"); } + float& EggAlertDinosForcedAggroTimeField() { return *GetNativePointerField(this, "UPrimalItem.EggAlertDinosForcedAggroTime"); } + float& EggMaximumDistanceFromOriginalDropToAlertDinosField() { return *GetNativePointerField(this, "UPrimalItem.EggMaximumDistanceFromOriginalDropToAlertDinos"); } + TSubclassOf& BrokenGiveItemClassField() { return *GetNativePointerField*>(this, "UPrimalItem.BrokenGiveItemClass"); } + float& ClearColorDurabilityThresholdField() { return *GetNativePointerField(this, "UPrimalItem.ClearColorDurabilityThreshold"); } + TSubclassOf& ItemClassToUseAsInitialCustomDataField() { return *GetNativePointerField*>(this, "UPrimalItem.ItemClassToUseAsInitialCustomData"); } + FVector& OriginalItemDropLocationField() { return *GetNativePointerField(this, "UPrimalItem.OriginalItemDropLocation"); } + FLinearColor& DurabilityBarColorForegroundField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityBarColorForeground"); } + FLinearColor& DurabilityBarColorBackgroundField() { return *GetNativePointerField(this, "UPrimalItem.DurabilityBarColorBackground"); } + TSubclassOf& OverrideCooldownTimeItemClassField() { return *GetNativePointerField*>(this, "UPrimalItem.OverrideCooldownTimeItemClass"); } + float& MinDurabilityForCraftingResourceField() { return *GetNativePointerField(this, "UPrimalItem.MinDurabilityForCraftingResource"); } + float& ResourceRequirementIncreaseRatingPowerField() { return *GetNativePointerField(this, "UPrimalItem.ResourceRequirementIncreaseRatingPower"); } + float& ResourceRequirementRatingScaleField() { return *GetNativePointerField(this, "UPrimalItem.ResourceRequirementRatingScale"); } + float& ResourceRequirementRatingIncreasePercentageField() { return *GetNativePointerField(this, "UPrimalItem.ResourceRequirementRatingIncreasePercentage"); } + long double& NextSpoilingTimeField() { return *GetNativePointerField(this, "UPrimalItem.NextSpoilingTime"); } + long double& LastSpoilingTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastSpoilingTime"); } + TArray& DefaultFolderPathsField() { return *GetNativePointerField*>(this, "UPrimalItem.DefaultFolderPaths"); } + FString& ItemRatingStringField() { return *GetNativePointerField(this, "UPrimalItem.ItemRatingString"); } + FName& DefaultWeaponMeshNameField() { return *GetNativePointerField(this, "UPrimalItem.DefaultWeaponMeshName"); } + int& LastCalculatedTotalAmmoInvUpdatedFrameField() { return *GetNativePointerField(this, "UPrimalItem.LastCalculatedTotalAmmoInvUpdatedFrame"); } + int& WeaponTotalAmmoField() { return *GetNativePointerField(this, "UPrimalItem.WeaponTotalAmmo"); } + TSubclassOf& EngramRequirementItemClassOverrideField() { return *GetNativePointerField*>(this, "UPrimalItem.EngramRequirementItemClassOverride"); } + TArray& CraftingResourceRequirementsField() { return *GetNativePointerField*>(this, "UPrimalItem.CraftingResourceRequirements"); } + USoundBase * ExtraThrowItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.ExtraThrowItemSound"); } + FVector& SpawnOnWaterEncroachmentBoxExtentField() { return *GetNativePointerField(this, "UPrimalItem.SpawnOnWaterEncroachmentBoxExtent"); } + TArray>& OnlyUsableOnSpecificClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.OnlyUsableOnSpecificClasses"); } + TArray& SaddlePassengerSeatsField() { return *GetNativePointerField*>(this, "UPrimalItem.SaddlePassengerSeats"); } + FName& SaddleOverrideRiderSocketNameField() { return *GetNativePointerField(this, "UPrimalItem.SaddleOverrideRiderSocketName"); } + TSubclassOf& EggDinoClassToSpawnField() { return *GetNativePointerField*>(this, "UPrimalItem.EggDinoClassToSpawn"); } + FieldArray EggNumberOfLevelUpPointsAppliedField() { return {this, "UPrimalItem.EggNumberOfLevelUpPointsApplied"}; } + float& EggTamedIneffectivenessModifierField() { return *GetNativePointerField(this, "UPrimalItem.EggTamedIneffectivenessModifier"); } + FieldArray EggColorSetIndicesField() { return {this, "UPrimalItem.EggColorSetIndices"}; } + float& EggLoseDurabilityPerSecondField() { return *GetNativePointerField(this, "UPrimalItem.EggLoseDurabilityPerSecond"); } + float& ExtraEggLoseDurabilityPerSecondMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.ExtraEggLoseDurabilityPerSecondMultiplier"); } + float& EggMinTemperatureField() { return *GetNativePointerField(this, "UPrimalItem.EggMinTemperature"); } + float& EggMaxTemperatureField() { return *GetNativePointerField(this, "UPrimalItem.EggMaxTemperature"); } + float& ItemRatingMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.ItemRatingMultiplier"); } + float& EggDroppedInvalidTempLoseItemRatingSpeedField() { return *GetNativePointerField(this, "UPrimalItem.EggDroppedInvalidTempLoseItemRatingSpeed"); } + USoundBase * ShieldHitSoundField() { return *GetNativePointerField(this, "UPrimalItem.ShieldHitSound"); } + float& RecipeCraftingSkillScaleField() { return *GetNativePointerField(this, "UPrimalItem.RecipeCraftingSkillScale"); } + int& CustomItemIDField() { return *GetNativePointerField(this, "UPrimalItem.CustomItemID"); } + float& AddDinoTargetingRangeField() { return *GetNativePointerField(this, "UPrimalItem.AddDinoTargetingRange"); } + float& DamageTorpidityArmorRatingField() { return *GetNativePointerField(this, "UPrimalItem.DamageTorpidityArmorRating"); } + float& IndirectTorpidityArmorRatingField() { return *GetNativePointerField(this, "UPrimalItem.IndirectTorpidityArmorRating"); } + FName& UseParticleEffectSocketNameField() { return *GetNativePointerField(this, "UPrimalItem.UseParticleEffectSocketName"); } + float& UseGiveDinoTameAffinityPercentField() { return *GetNativePointerField(this, "UPrimalItem.UseGiveDinoTameAffinityPercent"); } + TArray>& CraftingAdditionalItemsToGiveField() { return *GetNativePointerField>*>(this, "UPrimalItem.CraftingAdditionalItemsToGive"); } + int& LastValidItemVersionField() { return *GetNativePointerField(this, "UPrimalItem.LastValidItemVersion"); } + float& GlobalTameAffinityMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.GlobalTameAffinityMultiplier"); } + int& NewCraftingGiveItemCountField() { return *GetNativePointerField(this, "UPrimalItem.NewCraftingGiveItemCount"); } + int& CraftingGivesItemQuantityOverrideField() { return *GetNativePointerField(this, "UPrimalItem.CraftingGivesItemQuantityOverride"); } + USoundBase * UseItemOnItemSoundField() { return *GetNativePointerField(this, "UPrimalItem.UseItemOnItemSound"); } + FName& UseUnlocksEmoteNameField() { return *GetNativePointerField(this, "UPrimalItem.UseUnlocksEmoteName"); } + long double& ClusterSpoilingTimeUTCField() { return *GetNativePointerField(this, "UPrimalItem.ClusterSpoilingTimeUTC"); } + TArray& EggDinoAncestorsField() { return *GetNativePointerField*>(this, "UPrimalItem.EggDinoAncestors"); } + TArray& EggDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "UPrimalItem.EggDinoAncestorsMale"); } + int& EggRandomMutationsFemaleField() { return *GetNativePointerField(this, "UPrimalItem.EggRandomMutationsFemale"); } + int& EggRandomMutationsMaleField() { return *GetNativePointerField(this, "UPrimalItem.EggRandomMutationsMale"); } + TArray>& QualityIndexedEquippingRequiresSkillField() { return *GetNativePointerField>*>(this, "UPrimalItem.QualityIndexedEquippingRequiresSkill"); } + TSubclassOf& EquippingRequiresSkillField() { return *GetNativePointerField*>(this, "UPrimalItem.EquippingRequiresSkill"); } + TArray>& EquippingRequiresEngramsField() { return *GetNativePointerField>*>(this, "UPrimalItem.EquippingRequiresEngrams"); } + TArray& CustomItemDatasField() { return *GetNativePointerField*>(this, "UPrimalItem.CustomItemDatas"); } + FString& OverrideUseStringField() { return *GetNativePointerField(this, "UPrimalItem.OverrideUseString"); } + TSubclassOf& SendToClientClassOverrideField() { return *GetNativePointerField*>(this, "UPrimalItem.SendToClientClassOverride"); } + FString& CrafterCharacterNameField() { return *GetNativePointerField(this, "UPrimalItem.CrafterCharacterName"); } + FString& CrafterTribeNameField() { return *GetNativePointerField(this, "UPrimalItem.CrafterTribeName"); } + float& CraftedSkillBonusField() { return *GetNativePointerField(this, "UPrimalItem.CraftedSkillBonus"); } + float& CraftingSkillQualityMultiplierMinField() { return *GetNativePointerField(this, "UPrimalItem.CraftingSkillQualityMultiplierMin"); } + float& CraftingSkillQualityMultiplierMaxField() { return *GetNativePointerField(this, "UPrimalItem.CraftingSkillQualityMultiplierMax"); } + float& SinglePlayerCraftingSpeedMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.SinglePlayerCraftingSpeedMultiplier"); } + int& NoLevelEngramSortingPriorityField() { return *GetNativePointerField(this, "UPrimalItem.NoLevelEngramSortingPriority"); } + int& CustomFlagsField() { return *GetNativePointerField(this, "UPrimalItem.CustomFlags"); } + FName& CustomTagField() { return *GetNativePointerField(this, "UPrimalItem.CustomTag"); } + float& EquippedReduceDurabilityIntervalField() { return *GetNativePointerField(this, "UPrimalItem.EquippedReduceDurabilityInterval"); } + long double& LastEquippedReduceDurabilityTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastEquippedReduceDurabilityTime"); } + float& EquippedReduceDurabilityPerIntervalField() { return *GetNativePointerField(this, "UPrimalItem.EquippedReduceDurabilityPerInterval"); } + float& MaxDurabiltiyOverrideField() { return *GetNativePointerField(this, "UPrimalItem.MaxDurabiltiyOverride"); } + long double& LastItemAdditionTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastItemAdditionTime"); } + long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "UPrimalItem.UploadEarliestValidTime"); } + float& NextRepairPercentageField() { return *GetNativePointerField(this, "UPrimalItem.NextRepairPercentage"); } + UStaticMesh * NetDroppedMeshOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshOverride"); } + UMaterialInterface * NetDroppedMeshMaterialOverrideField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshMaterialOverride"); } + FVector& NetDroppedMeshOverrideScale3DField() { return *GetNativePointerField(this, "UPrimalItem.NetDroppedMeshOverrideScale3D"); } + TArray>& FeatClassesField() { return *GetNativePointerField>*>(this, "UPrimalItem.FeatClasses"); } + int& MaxRandomUpgradeLevelsField() { return *GetNativePointerField(this, "UPrimalItem.MaxRandomUpgradeLevels"); } + int& MinRandomUpgradeLevelsField() { return *GetNativePointerField(this, "UPrimalItem.MinRandomUpgradeLevels"); } + float& MaxUpgradeLevelRandomizationPowerField() { return *GetNativePointerField(this, "UPrimalItem.MaxUpgradeLevelRandomizationPower"); } + float& UpgradeCraftingResourceBaseMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.UpgradeCraftingResourceBaseMultiplier"); } + float& UpgradeCraftingResourceLinearIncreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.UpgradeCraftingResourceLinearIncreaseMultiplier"); } + float& UpgradeCraftingResourceExponentialIncreaseMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.UpgradeCraftingResourceExponentialIncreaseMultiplier"); } + int& BlueprintCraftsRemainingField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintCraftsRemaining"); } + int& MaxBlueprintCraftsField() { return *GetNativePointerField(this, "UPrimalItem.MaxBlueprintCrafts"); } + int& BlueprintCraftsMaxRatingMinCraftsField() { return *GetNativePointerField(this, "UPrimalItem.BlueprintCraftsMaxRatingMinCrafts"); } + float& MaxBlueprintCraftsRandomizationPowerField() { return *GetNativePointerField(this, "UPrimalItem.MaxBlueprintCraftsRandomizationPower"); } + float& MaxBlueprintCraftsAddRandomizerPowerByRatingField() { return *GetNativePointerField(this, "UPrimalItem.MaxBlueprintCraftsAddRandomizerPowerByRating"); } + float& MaxBlueprintCraftsRatingRangeField() { return *GetNativePointerField(this, "UPrimalItem.MaxBlueprintCraftsRatingRange"); } + float& NumBlueprintCraftsMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.NumBlueprintCraftsMultiplier"); } + float& StatUpgradeScaleMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.StatUpgradeScaleMultiplier"); } + float& AbsoluteItemRatingQualityMultiplierField() { return *GetNativePointerField(this, "UPrimalItem.AbsoluteItemRatingQualityMultiplier"); } + float& UseRequiresItemSlotTimeField() { return *GetNativePointerField(this, "UPrimalItem.UseRequiresItemSlotTime"); } + int& MaxUpgradeLevelField() { return *GetNativePointerField(this, "UPrimalItem.MaxUpgradeLevel"); } + int& CurrentUpgradeLevelField() { return *GetNativePointerField(this, "UPrimalItem.CurrentUpgradeLevel"); } + long double& LastSpoilingInventorySlotCheckTimeField() { return *GetNativePointerField(this, "UPrimalItem.LastSpoilingInventorySlotCheckTime"); } + float& ItemIconScaleField() { return *GetNativePointerField(this, "UPrimalItem.ItemIconScale"); } + float& EquipActivationRequiresTimeField() { return *GetNativePointerField(this, "UPrimalItem.EquipActivationRequiresTime"); } + float& UseItemSlotTimeRemainingField() { return *GetNativePointerField(this, "UPrimalItem.UseItemSlotTimeRemaining"); } + long double& EquippedAtTimeField() { return *GetNativePointerField(this, "UPrimalItem.EquippedAtTime"); } + FName& ItemSlotTypeNameField() { return *GetNativePointerField(this, "UPrimalItem.ItemSlotTypeName"); } + int& DefaultInventoryQuantityOverrideField() { return *GetNativePointerField(this, "UPrimalItem.DefaultInventoryQuantityOverride"); } + TArray& OverrideItemAttachmentSocketsFromField() { return *GetNativePointerField*>(this, "UPrimalItem.OverrideItemAttachmentSocketsFrom"); } + TArray& OverrideItemAttachmentSocketsToField() { return *GetNativePointerField*>(this, "UPrimalItem.OverrideItemAttachmentSocketsTo"); } + TArray>& SeedSoilTypesIncludeField() { return *GetNativePointerField>*>(this, "UPrimalItem.SeedSoilTypesInclude"); } + TArray>& SeedSoilTypesExcludeField() { return *GetNativePointerField>*>(this, "UPrimalItem.SeedSoilTypesExclude"); } + float& ExtraResourceQuantityToUpgradeField() { return *GetNativePointerField(this, "UPrimalItem.ExtraResourceQuantityToUpgrade"); } + TSubclassOf& ExtraResourceClassToUpgradeField() { return *GetNativePointerField*>(this, "UPrimalItem.ExtraResourceClassToUpgrade"); } + UAnimSequence * OverrideDinoRiderMoveAnimationField() { return *GetNativePointerField(this, "UPrimalItem.OverrideDinoRiderMoveAnimation"); } + UAnimSequence * OverrideDinoRiderAnimationField() { return *GetNativePointerField(this, "UPrimalItem.OverrideDinoRiderAnimation"); } + TSet,FDefaultSetAllocator>& AttachmentsUsingSocketsField() { return *GetNativePointerField,FDefaultSetAllocator>*>(this, "UPrimalItem.AttachmentsUsingSockets"); } + long double& DroppedNextSpoilingTimeField() { return *GetNativePointerField(this, "UPrimalItem.DroppedNextSpoilingTime"); } + bool& bHasAddedWeightToInventoryField() { return *GetNativePointerField(this, "UPrimalItem.bHasAddedWeightToInventory"); } + float& AddedInventoryWeightValueField() { return *GetNativePointerField(this, "UPrimalItem.AddedInventoryWeightValue"); } + + // Bit fields + + BitFieldValue bCanBuildStructures() { return { this, "UPrimalItem.bCanBuildStructures" }; } + BitFieldValue bAllowEquppingItem() { return { this, "UPrimalItem.bAllowEquppingItem" }; } + BitFieldValue bAllowInventoryItem() { return { this, "UPrimalItem.bAllowInventoryItem" }; } + BitFieldValue bIsRepairing() { return { this, "UPrimalItem.bIsRepairing" }; } + BitFieldValue bEquippedItem() { return { this, "UPrimalItem.bEquippedItem" }; } + BitFieldValue bCanSlot() { return { this, "UPrimalItem.bCanSlot" }; } + BitFieldValue bItemIconDrawItemQualityOverlayOnTop() { return { this, "UPrimalItem.bItemIconDrawItemQualityOverlayOnTop" }; } + BitFieldValue bUseItemColors() { return { this, "UPrimalItem.bUseItemColors" }; } + BitFieldValue bForceDediAttachments() { return { this, "UPrimalItem.bForceDediAttachments" }; } + BitFieldValue bAllowCustomColors() { return { this, "UPrimalItem.bAllowCustomColors" }; } + BitFieldValue bForceAllowRemovalWhenDead() { return { this, "UPrimalItem.bForceAllowRemovalWhenDead" }; } + BitFieldValue bAutoCraftBlueprint() { return { this, "UPrimalItem.bAutoCraftBlueprint" }; } + BitFieldValue bPreventMultipleCraftsAtOnce() { return { this, "UPrimalItem.bPreventMultipleCraftsAtOnce" }; } + BitFieldValue bHideFromInventoryDisplay() { return { this, "UPrimalItem.bHideFromInventoryDisplay" }; } + BitFieldValue bUseItemStats() { return { this, "UPrimalItem.bUseItemStats" }; } + BitFieldValue bForceUseMaxBlueprintCrafts() { return { this, "UPrimalItem.bForceUseMaxBlueprintCrafts" }; } + BitFieldValue bUseSpawnActorWhenRiding() { return { this, "UPrimalItem.bUseSpawnActorWhenRiding" }; } + BitFieldValue bUseSpawnActor() { return { this, "UPrimalItem.bUseSpawnActor" }; } + BitFieldValue bAllowDefaultCharacterAttachment() { return { this, "UPrimalItem.bAllowDefaultCharacterAttachment" }; } + BitFieldValue bUseItemDurability() { return { this, "UPrimalItem.bUseItemDurability" }; } + BitFieldValue bNewWeaponAutoFillClipAmmo() { return { this, "UPrimalItem.bNewWeaponAutoFillClipAmmo" }; } + BitFieldValue bDestroyBrokenItem() { return { this, "UPrimalItem.bDestroyBrokenItem" }; } + BitFieldValue bThrowOnHotKeyUse() { return { this, "UPrimalItem.bThrowOnHotKeyUse" }; } + BitFieldValue bIsBlueprint() { return { this, "UPrimalItem.bIsBlueprint" }; } + BitFieldValue bCanBeBlueprint() { return { this, "UPrimalItem.bCanBeBlueprint" }; } + BitFieldValue bPreventUpload() { return { this, "UPrimalItem.bPreventUpload" }; } + BitFieldValue bIsEngram() { return { this, "UPrimalItem.bIsEngram" }; } + BitFieldValue bIsCustomRecipe() { return { this, "UPrimalItem.bIsCustomRecipe" }; } + BitFieldValue bIsFoodRecipe() { return { this, "UPrimalItem.bIsFoodRecipe" }; } + BitFieldValue bTekItem() { return { this, "UPrimalItem.bTekItem" }; } + BitFieldValue bAllowUseInInventory() { return { this, "UPrimalItem.bAllowUseInInventory" }; } + BitFieldValue bAllowRemoteUseInInventory() { return { this, "UPrimalItem.bAllowRemoteUseInInventory" }; } + BitFieldValue bUseBlueprintEquippedNotifications() { return { this, "UPrimalItem.bUseBlueprintEquippedNotifications" }; } + BitFieldValue bUseInWaterRestoreDurability() { return { this, "UPrimalItem.bUseInWaterRestoreDurability" }; } + BitFieldValue bValidCraftingResource() { return { this, "UPrimalItem.bValidCraftingResource" }; } + BitFieldValue bUsesSlotAttachments() { return { this, "UPrimalItem.bUsesSlotAttachments" }; } + BitFieldValue bDurabilityRequirementIgnoredInWater() { return { this, "UPrimalItem.bDurabilityRequirementIgnoredInWater" }; } + BitFieldValue bAllowRepair() { return { this, "UPrimalItem.bAllowRepair" }; } + BitFieldValue bAllowRemovalFromInventory() { return { this, "UPrimalItem.bAllowRemovalFromInventory" }; } + BitFieldValue bConsumeItemOnUse() { return { this, "UPrimalItem.bConsumeItemOnUse" }; } + BitFieldValue bOnlyCanUseInWater() { return { this, "UPrimalItem.bOnlyCanUseInWater" }; } + BitFieldValue bCanUseSwimming() { return { this, "UPrimalItem.bCanUseSwimming" }; } + BitFieldValue bIsDescriptionOnlyItem() { return { this, "UPrimalItem.bIsDescriptionOnlyItem" }; } + BitFieldValue bRestoreDurabilityWhenColorized() { return { this, "UPrimalItem.bRestoreDurabilityWhenColorized" }; } + BitFieldValue bAppendPrimaryColorToName() { return { this, "UPrimalItem.bAppendPrimaryColorToName" }; } + BitFieldValue bUseScaleStatEffectivenessByDurability() { return { this, "UPrimalItem.bUseScaleStatEffectivenessByDurability" }; } + BitFieldValue bUsesCreationTime() { return { this, "UPrimalItem.bUsesCreationTime" }; } + BitFieldValue bAllowUseWhileRiding() { return { this, "UPrimalItem.bAllowUseWhileRiding" }; } + BitFieldValue bPreventCraftingResourceAtFullDurability() { return { this, "UPrimalItem.bPreventCraftingResourceAtFullDurability" }; } + BitFieldValue bGiveItemWhenUsedCopyItemStats() { return { this, "UPrimalItem.bGiveItemWhenUsedCopyItemStats" }; } + BitFieldValue bHideFromRemoteInventoryDisplay() { return { this, "UPrimalItem.bHideFromRemoteInventoryDisplay" }; } + BitFieldValue bAutoDecreaseDurabilityOverTime() { return { this, "UPrimalItem.bAutoDecreaseDurabilityOverTime" }; } + BitFieldValue bPreventDragOntoOtherItemIfSameCustomData() { return { this, "UPrimalItem.bPreventDragOntoOtherItemIfSameCustomData" }; } + BitFieldValue bUseOnItemWeaponRemoveClipAmmo() { return { this, "UPrimalItem.bUseOnItemWeaponRemoveClipAmmo" }; } + BitFieldValue bUseOnItemSetIndexAsDestinationItemCustomData() { return { this, "UPrimalItem.bUseOnItemSetIndexAsDestinationItemCustomData" }; } + BitFieldValue bSupportDragOntoOtherItem() { return { this, "UPrimalItem.bSupportDragOntoOtherItem" }; } + BitFieldValue bIsItemSkin() { return { this, "UPrimalItem.bIsItemSkin" }; } + BitFieldValue bItemSkinIgnoreSkinIcon() { return { this, "UPrimalItem.bItemSkinIgnoreSkinIcon" }; } + BitFieldValue bPickupEggAlertsDinos() { return { this, "UPrimalItem.bPickupEggAlertsDinos" }; } + BitFieldValue bHideCustomDescription() { return { this, "UPrimalItem.bHideCustomDescription" }; } + BitFieldValue bCopyCustomDescriptionIntoSpoiledItem() { return { this, "UPrimalItem.bCopyCustomDescriptionIntoSpoiledItem" }; } + BitFieldValue bCopyDurabilityIntoSpoiledItem() { return { this, "UPrimalItem.bCopyDurabilityIntoSpoiledItem" }; } + BitFieldValue bCraftedRequestCustomItemDescription() { return { this, "UPrimalItem.bCraftedRequestCustomItemDescription" }; } + BitFieldValue bInitializedItem() { return { this, "UPrimalItem.bInitializedItem" }; } + BitFieldValue bIsDroppedItem() { return { this, "UPrimalItem.bIsDroppedItem" }; } + BitFieldValue bEggIsTooCold() { return { this, "UPrimalItem.bEggIsTooCold" }; } + BitFieldValue bEggIsTooHot() { return { this, "UPrimalItem.bEggIsTooHot" }; } + BitFieldValue bDidAttachments() { return { this, "UPrimalItem.bDidAttachments" }; } + BitFieldValue bEquippedActive() { return { this, "UPrimalItem.bEquippedActive" }; } + BitFieldValue bUseBPPreventUseOntoItem() { return { this, "UPrimalItem.bUseBPPreventUseOntoItem" }; } + BitFieldValue bSkinDisableWhenSubmerged() { return { this, "UPrimalItem.bSkinDisableWhenSubmerged" }; } + BitFieldValue bSlottedDecreaseDurability() { return { this, "UPrimalItem.bSlottedDecreaseDurability" }; } + BitFieldValue bIsAbstractItem() { return { this, "UPrimalItem.bIsAbstractItem" }; } + BitFieldValue bPreventItemSkins() { return { this, "UPrimalItem.bPreventItemSkins" }; } + BitFieldValue bOnlyCanUseInFalling() { return { this, "UPrimalItem.bOnlyCanUseInFalling" }; } + BitFieldValue bForceDropDestruction() { return { this, "UPrimalItem.bForceDropDestruction" }; } + BitFieldValue bForceAllowDragUsing() { return { this, "UPrimalItem.bForceAllowDragUsing" }; } + BitFieldValue bAllowInvalidItemVersion() { return { this, "UPrimalItem.bAllowInvalidItemVersion" }; } + BitFieldValue bUseSpawnActorRelativeLoc() { return { this, "UPrimalItem.bUseSpawnActorRelativeLoc" }; } + BitFieldValue bUseSpawnActorTakeOwnerRotation() { return { this, "UPrimalItem.bUseSpawnActorTakeOwnerRotation" }; } + BitFieldValue bUseEquippedItemBlueprintTick() { return { this, "UPrimalItem.bUseEquippedItemBlueprintTick" }; } + BitFieldValue bUseEquippedItemNativeTick() { return { this, "UPrimalItem.bUseEquippedItemNativeTick" }; } + BitFieldValue bSpawnActorOnWaterOnly() { return { this, "UPrimalItem.bSpawnActorOnWaterOnly" }; } + BitFieldValue bAutoTameSpawnedActor() { return { this, "UPrimalItem.bAutoTameSpawnedActor" }; } + BitFieldValue bShowItemRatingAsPercent() { return { this, "UPrimalItem.bShowItemRatingAsPercent" }; } + BitFieldValue bPreventArmorDurabiltyConsumption() { return { this, "UPrimalItem.bPreventArmorDurabiltyConsumption" }; } + BitFieldValue bForceAllowUse() { return { this, "UPrimalItem.bForceAllowUse" }; } + BitFieldValue bIsEgg() { return { this, "UPrimalItem.bIsEgg" }; } + BitFieldValue bIsCookingIngredient() { return { this, "UPrimalItem.bIsCookingIngredient" }; } + BitFieldValue bDragClearDyedItem() { return { this, "UPrimalItem.bDragClearDyedItem" }; } + BitFieldValue bDeprecateItem() { return { this, "UPrimalItem.bDeprecateItem" }; } + BitFieldValue bInitializedRecipeStats() { return { this, "UPrimalItem.bInitializedRecipeStats" }; } + BitFieldValue bItemSkinKeepOriginalWeaponTemplate() { return { this, "UPrimalItem.bItemSkinKeepOriginalWeaponTemplate" }; } + BitFieldValue bItemSkinKeepOriginalIcon() { return { this, "UPrimalItem.bItemSkinKeepOriginalIcon" }; } + BitFieldValue bItemSkinReceiveOwnerEquippedBlueprintEvents() { return { this, "UPrimalItem.bItemSkinReceiveOwnerEquippedBlueprintEvents" }; } + BitFieldValue bItemSkinReceiveOwnerEquippedBlueprintTick() { return { this, "UPrimalItem.bItemSkinReceiveOwnerEquippedBlueprintTick" }; } + BitFieldValue bItemSkinAllowEquipping() { return { this, "UPrimalItem.bItemSkinAllowEquipping" }; } + BitFieldValue bForceDisplayInInventory() { return { this, "UPrimalItem.bForceDisplayInInventory" }; } + BitFieldValue bDroppedItemAllowDinoPickup() { return { this, "UPrimalItem.bDroppedItemAllowDinoPickup" }; } + BitFieldValue bCraftDontActuallyGiveItem() { return { this, "UPrimalItem.bCraftDontActuallyGiveItem" }; } + BitFieldValue bPreventUseWhenSleeping() { return { this, "UPrimalItem.bPreventUseWhenSleeping" }; } + BitFieldValue bOverrideRepairingRequirements() { return { this, "UPrimalItem.bOverrideRepairingRequirements" }; } + BitFieldValue bForceUseItemAddCharacterStatsOnDinos() { return { this, "UPrimalItem.bForceUseItemAddCharacterStatsOnDinos" }; } + BitFieldValue bOnlyEquipWhenUnconscious() { return { this, "UPrimalItem.bOnlyEquipWhenUnconscious" }; } + BitFieldValue bPreventEquipWhenDead() { return { this, "UPrimalItem.bPreventEquipWhenDead" }; } + BitFieldValue bForcePreventConsumableWhileHandcuffed() { return { this, "UPrimalItem.bForcePreventConsumableWhileHandcuffed" }; } + BitFieldValue bOverrideExactClassCraftingRequirement() { return { this, "UPrimalItem.bOverrideExactClassCraftingRequirement" }; } + BitFieldValue bPreventConsumeItemOnDrag() { return { this, "UPrimalItem.bPreventConsumeItemOnDrag" }; } + BitFieldValue bForceAllowGrinding() { return { this, "UPrimalItem.bForceAllowGrinding" }; } + BitFieldValue bForcePreventGrinding() { return { this, "UPrimalItem.bForcePreventGrinding" }; } + BitFieldValue bDeprecateBlueprint() { return { this, "UPrimalItem.bDeprecateBlueprint" }; } + BitFieldValue bPreventDinoAutoConsume() { return { this, "UPrimalItem.bPreventDinoAutoConsume" }; } + BitFieldValue bIsDinoAutoHealingItem() { return { this, "UPrimalItem.bIsDinoAutoHealingItem" }; } + BitFieldValue bBPAllowRemoteAddToInventory() { return { this, "UPrimalItem.bBPAllowRemoteAddToInventory" }; } + BitFieldValue bBPAllowRemoteRemoveFromInventory() { return { this, "UPrimalItem.bBPAllowRemoteRemoveFromInventory" }; } + BitFieldValue bEquipmentHatHideItemHeadHair() { return { this, "UPrimalItem.bEquipmentHatHideItemHeadHair" }; } + BitFieldValue bEquipmentHatHideItemFacialHair() { return { this, "UPrimalItem.bEquipmentHatHideItemFacialHair" }; } + BitFieldValue bEquipmentForceHairHiding() { return { this, "UPrimalItem.bEquipmentForceHairHiding" }; } + BitFieldValue bBPInventoryNotifyCraftingFinished() { return { this, "UPrimalItem.bBPInventoryNotifyCraftingFinished" }; } + BitFieldValue bCheckBPAllowCrafting() { return { this, "UPrimalItem.bCheckBPAllowCrafting" }; } + BitFieldValue bUseBPAllowAddToInventory() { return { this, "UPrimalItem.bUseBPAllowAddToInventory" }; } + BitFieldValue bPreventItemBlueprint() { return { this, "UPrimalItem.bPreventItemBlueprint" }; } + BitFieldValue bPreventUseByDinos() { return { this, "UPrimalItem.bPreventUseByDinos" }; } + BitFieldValue bPreventUseByHumans() { return { this, "UPrimalItem.bPreventUseByHumans" }; } + BitFieldValue bBPCanUse() { return { this, "UPrimalItem.bBPCanUse" }; } + BitFieldValue bBPCanCraft() { return { this, "UPrimalItem.bBPCanCraft" }; } + BitFieldValue bSkinOverrideItemAttachmentsFrom() { return { this, "UPrimalItem.bSkinOverrideItemAttachmentsFrom" }; } + BitFieldValue bSkinOverrideItemAttachmentsTo() { return { this, "UPrimalItem.bSkinOverrideItemAttachmentsTo" }; } + BitFieldValue bSkinOverrideEquipRequiresExplicitOwnerTags() { return { this, "UPrimalItem.bSkinOverrideEquipRequiresExplicitOwnerTags" }; } + BitFieldValue bSkinRequiresItemUnequipped() { return { this, "UPrimalItem.bSkinRequiresItemUnequipped" }; } + BitFieldValue bAllowOverrideItemAutoDecreaseDurability() { return { this, "UPrimalItem.bAllowOverrideItemAutoDecreaseDurability" }; } + BitFieldValue bCopyItemDurabilityFromCraftingResource() { return { this, "UPrimalItem.bCopyItemDurabilityFromCraftingResource" }; } + BitFieldValue bIsInitialItem() { return { this, "UPrimalItem.bIsInitialItem" }; } + BitFieldValue bPickupEggForceAggro() { return { this, "UPrimalItem.bPickupEggForceAggro" }; } + BitFieldValue bClearSkinOnInventoryRemoval() { return { this, "UPrimalItem.bClearSkinOnInventoryRemoval" }; } + BitFieldValue bUseBPCustomInventoryWidgetText() { return { this, "UPrimalItem.bUseBPCustomInventoryWidgetText" }; } + BitFieldValue bUseSkinnedBPCustomInventoryWidgetText() { return { this, "UPrimalItem.bUseSkinnedBPCustomInventoryWidgetText" }; } + BitFieldValue bUseBPInitFromItemNetInfo() { return { this, "UPrimalItem.bUseBPInitFromItemNetInfo" }; } + BitFieldValue bUseBPInitializeItem() { return { this, "UPrimalItem.bUseBPInitializeItem" }; } + BitFieldValue bUseBPGetItemNetInfo() { return { this, "UPrimalItem.bUseBPGetItemNetInfo" }; } + BitFieldValue bItemSkinKeepOriginalItemName() { return { this, "UPrimalItem.bItemSkinKeepOriginalItemName" }; } + BitFieldValue bPreventUploadingWeaponClipAmmo() { return { this, "UPrimalItem.bPreventUploadingWeaponClipAmmo" }; } + BitFieldValue bPreventNativeItemBroken() { return { this, "UPrimalItem.bPreventNativeItemBroken" }; } + BitFieldValue bResourcePreventGivingFromDemolition() { return { this, "UPrimalItem.bResourcePreventGivingFromDemolition" }; } + BitFieldValue bNameForceNoStatQualityRank() { return { this, "UPrimalItem.bNameForceNoStatQualityRank" }; } + BitFieldValue bAlwaysLearnedEngram() { return { this, "UPrimalItem.bAlwaysLearnedEngram" }; } + BitFieldValue bIgnoreMinimumUseIntervalForDinoAutoEatingFood() { return { this, "UPrimalItem.bIgnoreMinimumUseIntervalForDinoAutoEatingFood" }; } + BitFieldValue bUnappliedItemSkinIgnoreItemAttachments() { return { this, "UPrimalItem.bUnappliedItemSkinIgnoreItemAttachments" }; } + BitFieldValue bHideMoreOptionsIfNonRemovable() { return { this, "UPrimalItem.bHideMoreOptionsIfNonRemovable" }; } + BitFieldValue bUseBPGetItemDescription() { return { this, "UPrimalItem.bUseBPGetItemDescription" }; } + BitFieldValue bUseBPCrafted() { return { this, "UPrimalItem.bUseBPCrafted" }; } + BitFieldValue bUseBPGetItemName() { return { this, "UPrimalItem.bUseBPGetItemName" }; } + BitFieldValue bPreventUseAtTameLimit() { return { this, "UPrimalItem.bPreventUseAtTameLimit" }; } + BitFieldValue bDivideTimeToCraftByGlobalCropGrowthSpeed() { return { this, "UPrimalItem.bDivideTimeToCraftByGlobalCropGrowthSpeed" }; } + BitFieldValue bPreventCheatGive() { return { this, "UPrimalItem.bPreventCheatGive" }; } + BitFieldValue bUsingRequiresStandingOnSolidGround() { return { this, "UPrimalItem.bUsingRequiresStandingOnSolidGround" }; } + BitFieldValue bUseBPAddedAttachments() { return { this, "UPrimalItem.bUseBPAddedAttachments" }; } + BitFieldValue bUseBPConsumeProjectileImpact() { return { this, "UPrimalItem.bUseBPConsumeProjectileImpact" }; } + BitFieldValue bUseBPNotifyDropped() { return { this, "UPrimalItem.bUseBPNotifyDropped" }; } + BitFieldValue bThrowUsesSecondaryActionDrop() { return { this, "UPrimalItem.bThrowUsesSecondaryActionDrop" }; } + BitFieldValue bUseBPGetItemIcon() { return { this, "UPrimalItem.bUseBPGetItemIcon" }; } + BitFieldValue bUseSlottedTick() { return { this, "UPrimalItem.bUseSlottedTick" }; } + BitFieldValue bUseBPDrawItemIcon() { return { this, "UPrimalItem.bUseBPDrawItemIcon" }; } + BitFieldValue bUseBPForceAllowRemoteAddToInventory() { return { this, "UPrimalItem.bUseBPForceAllowRemoteAddToInventory" }; } + BitFieldValue bSkinAddWeightToSkinnedItem() { return { this, "UPrimalItem.bSkinAddWeightToSkinnedItem" }; } + BitFieldValue bUseBPIsValidForCrafting() { return { this, "UPrimalItem.bUseBPIsValidForCrafting" }; } + BitFieldValue bUseBPOverrideCraftingConsumption() { return { this, "UPrimalItem.bUseBPOverrideCraftingConsumption" }; } + BitFieldValue bIgnoreDrawingItemButtonIcon() { return { this, "UPrimalItem.bIgnoreDrawingItemButtonIcon" }; } + BitFieldValue bCensoredItemSkin() { return { this, "UPrimalItem.bCensoredItemSkin" }; } + BitFieldValue bUseDefaultStatGroupModifiers() { return { this, "UPrimalItem.bUseDefaultStatGroupModifiers" }; } + BitFieldValue bBlueprintCraftingRequiresEngram() { return { this, "UPrimalItem.bBlueprintCraftingRequiresEngram" }; } + BitFieldValue bHaltSpoilingTimeWhenSlotted() { return { this, "UPrimalItem.bHaltSpoilingTimeWhenSlotted" }; } + BitFieldValue bIncreaseCraftingRequirementsByQuality() { return { this, "UPrimalItem.bIncreaseCraftingRequirementsByQuality" }; } + BitFieldValue bIsAboutToUnequip() { return { this, "UPrimalItem.bIsAboutToUnequip" }; } + BitFieldValue bIsAboutToEquip() { return { this, "UPrimalItem.bIsAboutToEquip" }; } + BitFieldValue bCraftedGivesPlayerProfileExtraItem() { return { this, "UPrimalItem.bCraftedGivesPlayerProfileExtraItem" }; } + BitFieldValue bExemptFromMaxQuantityClamp() { return { this, "UPrimalItem.bExemptFromMaxQuantityClamp" }; } + BitFieldValue bDidEquipModifyStatusValueRates() { return { this, "UPrimalItem.bDidEquipModifyStatusValueRates" }; } + BitFieldValue bBPGetItemWeight() { return { this, "UPrimalItem.bBPGetItemWeight" }; } + BitFieldValue bUpdateWeightOnDurabilityRestored() { return { this, "UPrimalItem.bUpdateWeightOnDurabilityRestored" }; } + BitFieldValue bBrokenPreventsSlotting() { return { this, "UPrimalItem.bBrokenPreventsSlotting" }; } + BitFieldValue bPreventSlottedWhenSwimming() { return { this, "UPrimalItem.bPreventSlottedWhenSwimming" }; } + BitFieldValue SlotBarDrawArmorDamage() { return { this, "UPrimalItem.SlotBarDrawArmorDamage" }; } + BitFieldValue bWeaponShouldAllowContinuousReload() { return { this, "UPrimalItem.bWeaponShouldAllowContinuousReload" }; } + BitFieldValue bUseBlueprintSlottedNotifications() { return { this, "UPrimalItem.bUseBlueprintSlottedNotifications" }; } + BitFieldValue bIgnoreDurabilityRequirementOnlyDrinkable() { return { this, "UPrimalItem.bIgnoreDurabilityRequirementOnlyDrinkable" }; } + BitFieldValue bDontDescribeAsSkin() { return { this, "UPrimalItem.bDontDescribeAsSkin" }; } + BitFieldValue bUseBPAllowAttachment() { return { this, "UPrimalItem.bUseBPAllowAttachment" }; } + BitFieldValue bIncludeBaseItemIcon() { return { this, "UPrimalItem.bIncludeBaseItemIcon" }; } + BitFieldValue bIsBaseItemForIcon() { return { this, "UPrimalItem.bIsBaseItemForIcon" }; } + BitFieldValue bUseTieredCraftingResourceSubstitution() { return { this, "UPrimalItem.bUseTieredCraftingResourceSubstitution" }; } + BitFieldValue bCanUseAnyMovementMode() { return { this, "UPrimalItem.bCanUseAnyMovementMode" }; } + BitFieldValue bUseFPVItemMeshTextureMaskMaterialIndex() { return { this, "UPrimalItem.bUseFPVItemMeshTextureMaskMaterialIndex" }; } + BitFieldValue bApplyMeshTextureMaskOnHair() { return { this, "UPrimalItem.bApplyMeshTextureMaskOnHair" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "UPrimalItem.GetPrivateStaticClass"); } + static UClass * StaticClass() { return NativeCall(nullptr, "UPrimalItem.StaticClass"); } + void AddItemDurability(float durabilityToAdd) { NativeCall(this, "UPrimalItem.AddItemDurability", durabilityToAdd); } + static UPrimalItem * AddNewItem(TSubclassOf ItemArchetype, UPrimalInventoryComponent * GiveToInventory, bool bEquipItem, bool bDontStack, float ItemQuality, bool bForceNoBlueprint, int quantityOverride, bool bForceBlueprint, float MaxItemDifficultyClamp, bool CreateOnClient, TSubclassOf ApplyItemSkin, bool bAbsoluteForceBlueprint) { return NativeCall, UPrimalInventoryComponent *, bool, bool, float, bool, int, bool, float, bool, TSubclassOf, bool>(nullptr, "UPrimalItem.AddNewItem", ItemArchetype, GiveToInventory, bEquipItem, bDontStack, ItemQuality, bForceNoBlueprint, quantityOverride, bForceBlueprint, MaxItemDifficultyClamp, CreateOnClient, ApplyItemSkin, bAbsoluteForceBlueprint); } + void AddToInventory(UPrimalInventoryComponent * toInventory, bool bEquipItem, bool AddToSlotItems, FItemNetID * InventoryInsertAfterItemID, bool ShowHUDNotification, bool bDontRecalcSpoilingTime, bool bIgnoreAbsoluteMaxInventory) { NativeCall(this, "UPrimalItem.AddToInventory", toInventory, bEquipItem, AddToSlotItems, InventoryInsertAfterItemID, ShowHUDNotification, bDontRecalcSpoilingTime, bIgnoreAbsoluteMaxInventory); } + void AddToSlot(int theSlotIndex, bool bForce) { NativeCall(this, "UPrimalItem.AddToSlot", theSlotIndex, bForce); } + void AddedToInventory() { NativeCall(this, "UPrimalItem.AddedToInventory"); } + bool AllowEquipItem(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.AllowEquipItem", toInventory); } + bool AllowInventoryItem(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.AllowInventoryItem", toInventory); } + bool AllowRemoteAddToInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.AllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } + bool AllowSlotting(UPrimalInventoryComponent * toInventory, bool bForce, int AtSpecificSlotIndex) { return NativeCall(this, "UPrimalItem.AllowSlotting", toInventory, bForce, AtSpecificSlotIndex); } + bool AllowUseInInventory(bool bIsRemoteInventory, AShooterPlayerController * ByPC, bool DontCheckActor) { return NativeCall(this, "UPrimalItem.AllowUseInInventory", bIsRemoteInventory, ByPC, DontCheckActor); } + void ApplyColorsFromStructure(APrimalStructure * theStructure) { NativeCall(this, "UPrimalItem.ApplyColorsFromStructure", theStructure); } + void BPGetItemID(int * ItemID1, int * ItemID2) { NativeCall(this, "UPrimalItem.BPGetItemID", ItemID1, ItemID2); } + float BPGetItemStatGroupModifier(FName StatGroupName, bool bOnlyUseBaseVal, bool bOnlyUseUpgradeVal) { return NativeCall(this, "UPrimalItem.BPGetItemStatGroupModifier", StatGroupName, bOnlyUseBaseVal, bOnlyUseUpgradeVal); } + float BPGetItemStatModifier(int idx, int ItemStatValue) { return NativeCall(this, "UPrimalItem.BPGetItemStatModifier", idx, ItemStatValue); } + int BPGetItemStatRandomValue(float QualityLevel, int idx) { return NativeCall(this, "UPrimalItem.BPGetItemStatRandomValue", QualityLevel, idx); } + static FItemNetID BPMakeItemID(int TheItemID1, int TheItemID2) { return NativeCall(nullptr, "UPrimalItem.BPMakeItemID", TheItemID1, TheItemID2); } + bool BPMatchesItemID(int ItemID1, int ItemID2) { return NativeCall(this, "UPrimalItem.BPMatchesItemID", ItemID1, ItemID2); } + void BPSetWeaponClipAmmo(int NewClipAmmo) { NativeCall(this, "UPrimalItem.BPSetWeaponClipAmmo", NewClipAmmo); } + void CalcRecipeStats() { NativeCall(this, "UPrimalItem.CalcRecipeStats"); } + bool CanCraft(AShooterPlayerController * ByPC, bool bOverrideEngramRequirement) { return NativeCall(this, "UPrimalItem.CanCraft", ByPC, bOverrideEngramRequirement); } + bool CanCraftInInventory(UPrimalInventoryComponent * invComp) { return NativeCall(this, "UPrimalItem.CanCraftInInventory", invComp); } + bool CanDrop() { return NativeCall(this, "UPrimalItem.CanDrop"); } + bool CanEquipWeapon() { return NativeCall(this, "UPrimalItem.CanEquipWeapon"); } + bool CanFullyCraft(AShooterPlayerController * ByPC, bool bOverrideEngramRequirement) { return NativeCall(this, "UPrimalItem.CanFullyCraft", ByPC, bOverrideEngramRequirement); } + bool CanRepair(bool bIgnoreInventoryRequirement) { return NativeCall(this, "UPrimalItem.CanRepair", bIgnoreInventoryRequirement); } + bool CanRepairInInventory(UPrimalInventoryComponent * invComp) { return NativeCall(this, "UPrimalItem.CanRepairInInventory", invComp); } + bool CanSpawnOverWater(AActor * ownerActor, FTransform * SpawnTransform) { return NativeCall(this, "UPrimalItem.CanSpawnOverWater", ownerActor, SpawnTransform); } + bool CanSpoil() { return NativeCall(this, "UPrimalItem.CanSpoil"); } + bool CanStackWithItem(UPrimalItem * otherItem, int * QuantityOverride) { return NativeCall(this, "UPrimalItem.CanStackWithItem", otherItem, QuantityOverride); } + bool CanUpgrade(AShooterPlayerController * ByPC, bool bIgnoreRequirements) { return NativeCall(this, "UPrimalItem.CanUpgrade", ByPC, bIgnoreRequirements); } + bool CanUse(bool bIgnoreCooldown) { return NativeCall(this, "UPrimalItem.CanUse", bIgnoreCooldown); } + bool CanUseWithItemDestination(UPrimalItem * SourceItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemDestination", SourceItem); } + bool CanUseWithItemSource(UPrimalItem * DestinationItem) { return NativeCall(this, "UPrimalItem.CanUseWithItemSource", DestinationItem); } + bool CheckAutoCraftBlueprint() { return NativeCall(this, "UPrimalItem.CheckAutoCraftBlueprint"); } + void ConsumeCraftingRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent, UPrimalInventoryComponent * additionalInventoryComp) { NativeCall(this, "UPrimalItem.ConsumeCraftingRequirementsPercent", invComp, Percent, additionalInventoryComp); } + void CraftBlueprint(bool bConsumeResources, AShooterPlayerController * ByPC, bool bOverrideEngramRequirement) { NativeCall(this, "UPrimalItem.CraftBlueprint", bConsumeResources, ByPC, bOverrideEngramRequirement); } + void Crafted_Implementation(bool bWasCraftedFromEngram) { NativeCall(this, "UPrimalItem.Crafted_Implementation", bWasCraftedFromEngram); } + static UPrimalItem * CreateItemFromNetInfo(FItemNetInfo * newItemInfo) { return NativeCall(nullptr, "UPrimalItem.CreateItemFromNetInfo", newItemInfo); } + void EquippedItem() { NativeCall(this, "UPrimalItem.EquippedItem"); } + void EquippedTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.EquippedTick", DeltaSeconds); } + UPrimalItem * FinishCraftingBlueprint() { return NativeCall(this, "UPrimalItem.FinishCraftingBlueprint"); } + void FinishRepairing() { NativeCall(this, "UPrimalItem.FinishRepairing"); } + static void GenerateItemID(FItemNetID * TheItemID) { NativeCall(nullptr, "UPrimalItem.GenerateItemID", TheItemID); } + UActorComponent * GetAttachedComponent(int attachmentIndex, AActor * UseOtherActor) { return NativeCall(this, "UPrimalItem.GetAttachedComponent", attachmentIndex, UseOtherActor); } + int GetAttachedComponentsNum() { return NativeCall(this, "UPrimalItem.GetAttachedComponentsNum"); } + FLinearColor * GetColorForItemColorID(FLinearColor * result, int SetNum, int ID) { return NativeCall(this, "UPrimalItem.GetColorForItemColorID", result, SetNum, ID); } + UActorComponent * GetComponentToAttach(int attachmentIndex, AActor * UseOtherActor) { return NativeCall(this, "UPrimalItem.GetComponentToAttach", attachmentIndex, UseOtherActor); } + FString * GetCraftRepairInvReqString(FString * result) { return NativeCall(this, "UPrimalItem.GetCraftRepairInvReqString", result); } + float GetCraftingPercent() { return NativeCall(this, "UPrimalItem.GetCraftingPercent"); } + FString * GetCraftingRequirementsString(FString * result, UPrimalInventoryComponent * compareInventoryComp) { return NativeCall(this, "UPrimalItem.GetCraftingRequirementsString", result, compareInventoryComp); } + int GetCraftingResourceRequirement(int CraftingResourceIndex) { return NativeCall(this, "UPrimalItem.GetCraftingResourceRequirement", CraftingResourceIndex); } + bool GetCustomItemData(FName CustomDataName, FCustomItemData * OutData) { return NativeCall(this, "UPrimalItem.GetCustomItemData", CustomDataName, OutData); } + float GetDurabilityPercentage() { return NativeCall(this, "UPrimalItem.GetDurabilityPercentage"); } + float GetEggHatchTimeRemaining(UWorld * theWorld) { return NativeCall(this, "UPrimalItem.GetEggHatchTimeRemaining", theWorld); } + int GetEngramRequirementLevel() { return NativeCall(this, "UPrimalItem.GetEngramRequirementLevel"); } + FString * GetEntryCategoryString(FString * result) { return NativeCall(this, "UPrimalItem.GetEntryCategoryString", result); } + FString * GetEntryDescription(FString * result) { return NativeCall(this, "UPrimalItem.GetEntryDescription", result); } + UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalItem.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + FString * GetEntryString(FString * result) { return NativeCall(this, "UPrimalItem.GetEntryString", result); } + TSubclassOf * GetEquippingRequiresSkill(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetEquippingRequiresSkill", result); } + int GetExplicitEntryIndexType() { return NativeCall(this, "UPrimalItem.GetExplicitEntryIndexType"); } + int GetExtraResourceCurrentQuantityToUpgrade() { return NativeCall(this, "UPrimalItem.GetExtraResourceCurrentQuantityToUpgrade"); } + TSubclassOf * GetExtraResourceItemToUpgrade(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetExtraResourceItemToUpgrade", result); } + UMaterialInterface * GetHUDIconMaterial() { return NativeCall(this, "UPrimalItem.GetHUDIconMaterial"); } + UPrimalInventoryComponent * GetInitializeItemOwnerInventory() { return NativeCall(this, "UPrimalItem.GetInitializeItemOwnerInventory"); } + void GetItemAttachmentInfos(AActor * OwnerActor) { NativeCall(this, "UPrimalItem.GetItemAttachmentInfos", OwnerActor); } + int GetItemColorID(int theRegion) { return NativeCall(this, "UPrimalItem.GetItemColorID", theRegion); } + bool GetItemCustomColor(int ColorRegion, FLinearColor * outColor) { return NativeCall(this, "UPrimalItem.GetItemCustomColor", ColorRegion, outColor); } + FString * GetItemDescription(FString * result, bool bGetLongDescription, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemDescription", result, bGetLongDescription, ForPC); } + TArray * GetItemDyeColors(TArray * result) { return NativeCall *, TArray *>(this, "UPrimalItem.GetItemDyeColors", result); } + UTexture2D * GetItemIcon(AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemIcon", ForPC); } + FString * GetItemName(FString * result, bool bIncludeQuantity, bool bShortName, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.GetItemName", result, bIncludeQuantity, bShortName, ForPC); } + FItemNetInfo * GetItemNetInfo(FItemNetInfo * result, bool bIsForSendingToClient) { return NativeCall(this, "UPrimalItem.GetItemNetInfo", result, bIsForSendingToClient); } + FLinearColor * GetItemQualityColor(FLinearColor * result) { return NativeCall(this, "UPrimalItem.GetItemQualityColor", result); } + int GetItemQuantity() { return NativeCall(this, "UPrimalItem.GetItemQuantity"); } + FString * GetItemStatGroupString(FString * result, FName statGroupName, bool bDisplayAsPercent, bool bDisplayAsAbsolutePercent, bool bDisplayAsMultiplicativePercent, bool bShortString) { return NativeCall(this, "UPrimalItem.GetItemStatGroupString", result, statGroupName, bDisplayAsPercent, bDisplayAsAbsolutePercent, bDisplayAsMultiplicativePercent, bShortString); } + void GetItemStatGroupValue(FName StatGroupName, int * StatVal, int * UpgradeVal) { NativeCall(this, "UPrimalItem.GetItemStatGroupValue", StatGroupName, StatVal, UpgradeVal); } + FItemStatInfo * GetItemStatInfo(FItemStatInfo * result, int idx) { return NativeCall(this, "UPrimalItem.GetItemStatInfo", result, idx); } + float GetItemStatModifier(EPrimalItemStat::Type statType) { return NativeCall(this, "UPrimalItem.GetItemStatModifier", statType); } + FString * GetItemStatName_Implementation(FString * result, EPrimalItemStat::Type itemStatType) { return NativeCall(this, "UPrimalItem.GetItemStatName_Implementation", result, itemStatType); } + FString * GetItemStatString(FString * result, EPrimalItemStat::Type statType, bool bShortString) { return NativeCall(this, "UPrimalItem.GetItemStatString", result, statType, bShortString); } + int GetItemStatValues(int idx) { return NativeCall(this, "UPrimalItem.GetItemStatValues", idx); } + FString * GetItemStatsString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemStatsString", result); } + FString * GetItemSubtypeString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemSubtypeString", result); } + FString * GetItemTypeString(FString * result) { return NativeCall(this, "UPrimalItem.GetItemTypeString", result); } + float GetItemWeight(bool bJustOneQuantity, bool bForceNotBlueprintWeight) { return NativeCall(this, "UPrimalItem.GetItemWeight", bJustOneQuantity, bForceNotBlueprintWeight); } + float GetMaxDurability() { return NativeCall(this, "UPrimalItem.GetMaxDurability"); } + int GetMaximumAdditionalCrafting(UPrimalInventoryComponent * forComp, AShooterPlayerController * PC) { return NativeCall(this, "UPrimalItem.GetMaximumAdditionalCrafting", forComp, PC); } + float GetMiscInfoFontScale() { return NativeCall(this, "UPrimalItem.GetMiscInfoFontScale"); } + FString * GetMiscInfoString(FString * result) { return NativeCall(this, "UPrimalItem.GetMiscInfoString", result); } + AActor * GetOwnerActor() { return NativeCall(this, "UPrimalItem.GetOwnerActor"); } + FString * GetPrimaryColorName(FString * result) { return NativeCall(this, "UPrimalItem.GetPrimaryColorName", result); } + float GetRemainingCooldownTime() { return NativeCall(this, "UPrimalItem.GetRemainingCooldownTime"); } + float GetRepairingPercent() { return NativeCall(this, "UPrimalItem.GetRepairingPercent"); } + FString * GetRepairingRequirementsString(FString * result, UPrimalInventoryComponent * compareInventoryComp, bool bUseBaseRequeriments, float OverrideRepairPercent, UPrimalInventoryComponent * additionalInventoryComp) { return NativeCall(this, "UPrimalItem.GetRepairingRequirementsString", result, compareInventoryComp, bUseBaseRequeriments, OverrideRepairPercent, additionalInventoryComp); } + float GetSpoilingTime() { return NativeCall(this, "UPrimalItem.GetSpoilingTime"); } + float GetTimeForFullRepair() { return NativeCall(this, "UPrimalItem.GetTimeForFullRepair"); } + float GetTimeToCraftBlueprint() { return NativeCall(this, "UPrimalItem.GetTimeToCraftBlueprint"); } + float GetTimeUntilUploadAllowed(UWorld * theWorld) { return NativeCall(this, "UPrimalItem.GetTimeUntilUploadAllowed", theWorld); } + float GetUseItemAddCharacterStatusValue(EPrimalCharacterStatusValue::Type valueType) { return NativeCall(this, "UPrimalItem.GetUseItemAddCharacterStatusValue", valueType); } + float GetUseItemAddStatusValueSkillMultiplier(APrimalCharacter * ForChar, EPrimalCharacterStatusValue::Type ValueType) { return NativeCall(this, "UPrimalItem.GetUseItemAddStatusValueSkillMultiplier", ForChar, ValueType); } + int GetWeaponClipAmmo() { return NativeCall(this, "UPrimalItem.GetWeaponClipAmmo"); } + float GetWeaponTemplateDurabilityToConsumePerMeleeHit() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateDurabilityToConsumePerMeleeHit"); } + float GetWeaponTemplateHarvestDamageMultiplier() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateHarvestDamageMultiplier"); } + TSubclassOf * GetWeaponTemplateHarvestDamageType(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetWeaponTemplateHarvestDamageType", result); } + float GetWeaponTemplateMeleeDamageAmount() { return NativeCall(this, "UPrimalItem.GetWeaponTemplateMeleeDamageAmount"); } + TSubclassOf * GetWeaponTemplateMeleeDamageType(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "UPrimalItem.GetWeaponTemplateMeleeDamageType", result); } + float HandleShieldDamageBlocking_Implementation(APrimalCharacter * ForShooterCharacter, float DamageIn, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking_Implementation", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } + bool HasCustomItemData(FName CustomDataName) { return NativeCall(this, "UPrimalItem.HasCustomItemData", CustomDataName); } + int IncrementItemQuantity(int amount, bool bReplicateToClient, bool bDontUpdateWeight, bool bIsFromUseConsumption, bool bIsArkTributeItem, bool bIsFromCraftingConsumption) { return NativeCall(this, "UPrimalItem.IncrementItemQuantity", amount, bReplicateToClient, bDontUpdateWeight, bIsFromUseConsumption, bIsArkTributeItem, bIsFromCraftingConsumption); } + void InitFromNetInfo(FItemNetInfo * theInfo) { NativeCall(this, "UPrimalItem.InitFromNetInfo", theInfo); } + void InitItemIcon() { NativeCall(this, "UPrimalItem.InitItemIcon"); } + void InitNewItem(float ItemQuality, UPrimalInventoryComponent * toInventory, float MaxItemDifficultyClamp) { NativeCall(this, "UPrimalItem.InitNewItem", ItemQuality, toInventory, MaxItemDifficultyClamp); } + void InitStatGroupValuesMap() { NativeCall(this, "UPrimalItem.InitStatGroupValuesMap"); } + void InitializeItem(bool bForceReinit, UWorld * OptionalInitWorld) { NativeCall(this, "UPrimalItem.InitializeItem", bForceReinit, OptionalInitWorld); } + void InventoryLoadedFromSaveGame() { NativeCall(this, "UPrimalItem.InventoryLoadedFromSaveGame"); } + void InventoryRefreshCheckItem() { NativeCall(this, "UPrimalItem.InventoryRefreshCheckItem"); } + bool IsActive() { return NativeCall(this, "UPrimalItem.IsActive"); } + bool IsBroken() { return NativeCall(this, "UPrimalItem.IsBroken"); } + bool IsCooldownReadyForUse() { return NativeCall(this, "UPrimalItem.IsCooldownReadyForUse"); } + bool IsDyed() { return NativeCall(this, "UPrimalItem.IsDyed"); } + bool IsOwnerInDrinkableWater() { return NativeCall(this, "UPrimalItem.IsOwnerInDrinkableWater"); } + bool IsOwnerInNoPainWater() { return NativeCall(this, "UPrimalItem.IsOwnerInNoPainWater"); } + bool IsOwnerInWater() { return NativeCall(this, "UPrimalItem.IsOwnerInWater"); } + bool IsSlotAttachment() { return NativeCall(this, "UPrimalItem.IsSlotAttachment"); } + bool IsUsableConsumable() { return NativeCall(this, "UPrimalItem.IsUsableConsumable"); } + bool IsValidForCrafting() { return NativeCall(this, "UPrimalItem.IsValidForCrafting"); } + void LocalUse(AShooterPlayerController * ForPC) { NativeCall(this, "UPrimalItem.LocalUse", ForPC); } + void LocalUseItemOntoItem(AShooterPlayerController * ForPC, UPrimalItem * DestinationItem) { NativeCall(this, "UPrimalItem.LocalUseItemOntoItem", ForPC, DestinationItem); } + bool MeetBlueprintCraftingRequirements(UPrimalInventoryComponent * compareInventoryComp, int CraftAmountOverride, AShooterPlayerController * ForPlayer, bool bIsForCraftQueueAddition, bool bTestFullQueue) { return NativeCall(this, "UPrimalItem.MeetBlueprintCraftingRequirements", compareInventoryComp, CraftAmountOverride, ForPlayer, bIsForCraftQueueAddition, bTestFullQueue); } + bool MeetRepairingRequirements(UPrimalInventoryComponent * compareInventoryComp, bool bIsForCraftQueueAddition) { return NativeCall(this, "UPrimalItem.MeetRepairingRequirements", compareInventoryComp, bIsForCraftQueueAddition); } + bool MeetUpgradingRequirements(UPrimalInventoryComponent * compareInventoryComp) { return NativeCall(this, "UPrimalItem.MeetUpgradingRequirements", compareInventoryComp); } + void NotifyEditText(AShooterPlayerController * PC) { NativeCall(this, "UPrimalItem.NotifyEditText", PC); } + void PickupAlertDinos(AActor * groundItem) { NativeCall(this, "UPrimalItem.PickupAlertDinos", groundItem); } + bool ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool __formal) { return NativeCall(this, "UPrimalItem.ProcessEditText", ForPC, TextToUse, __formal); } + void RecalcSpoilingTime(long double TimeSeconds, float SpoilPercent, UPrimalInventoryComponent * forComp, float SpoilingTimeMultiplier) { NativeCall(this, "UPrimalItem.RecalcSpoilingTime", TimeSeconds, SpoilPercent, forComp, SpoilingTimeMultiplier); } + void RefreshAttachments(bool bRefreshDefaultAttachments) { NativeCall(this, "UPrimalItem.RefreshAttachments", bRefreshDefaultAttachments); } + void RemoveAttachments(AActor * UseOtherActor, bool bRefreshDefaultAttachments) { NativeCall(this, "UPrimalItem.RemoveAttachments", UseOtherActor, bRefreshDefaultAttachments); } + void RemoveClipAmmo(bool bDontUpdateItem) { NativeCall(this, "UPrimalItem.RemoveClipAmmo", bDontUpdateItem); } + void RemoveCustomItemData(FName CustomDataName) { NativeCall(this, "UPrimalItem.RemoveCustomItemData", CustomDataName); } + void RemoveFromSlot(bool bForce) { NativeCall(this, "UPrimalItem.RemoveFromSlot", bForce); } + bool RemoveItemFromInventory(bool bForceRemoval, bool showHUDMessage) { return NativeCall(this, "UPrimalItem.RemoveItemFromInventory", bForceRemoval, showHUDMessage); } + void RemoveWeaponAccessory() { NativeCall(this, "UPrimalItem.RemoveWeaponAccessory"); } + void RepairItem(bool bIgnoreInventoryRequirement, float UseNextRepairPercentage, float RepairSpeedMultiplier) { NativeCall(this, "UPrimalItem.RepairItem", bIgnoreInventoryRequirement, UseNextRepairPercentage, RepairSpeedMultiplier); } + void ResetSpoilingTime() { NativeCall(this, "UPrimalItem.ResetSpoilingTime"); } + void ServerRemoveItemSkin() { NativeCall(this, "UPrimalItem.ServerRemoveItemSkin"); } + void ServerRemoveItemSkinOnly() { NativeCall(this, "UPrimalItem.ServerRemoveItemSkinOnly"); } + void ServerRemoveWeaponAccessoryOnly() { NativeCall(this, "UPrimalItem.ServerRemoveWeaponAccessoryOnly"); } + void SetAttachedMeshesMaterialScalarParamValue(FName ParamName, float Value) { NativeCall(this, "UPrimalItem.SetAttachedMeshesMaterialScalarParamValue", ParamName, Value); } + void SetCustomItemData(FCustomItemData * InData) { NativeCall(this, "UPrimalItem.SetCustomItemData", InData); } + void SetEngramBlueprint() { NativeCall(this, "UPrimalItem.SetEngramBlueprint"); } + void SetItemStatInfo(int idx, FItemStatInfo * val) { NativeCall(this, "UPrimalItem.SetItemStatInfo", idx, val); } + void SetItemStatValues(int idx, int val) { NativeCall(this, "UPrimalItem.SetItemStatValues", idx, val); } + void SetOwnerNoSee(bool bNoSee, bool bForceHideFirstPerson) { NativeCall(this, "UPrimalItem.SetOwnerNoSee", bNoSee, bForceHideFirstPerson); } + void SetQuantity(int NewQuantity, bool ShowHUDNotification) { NativeCall(this, "UPrimalItem.SetQuantity", NewQuantity, ShowHUDNotification); } + static FLinearColor * StaticGetColorForItemColorID(FLinearColor * result, int ID) { return NativeCall(nullptr, "UPrimalItem.StaticGetColorForItemColorID", result, ID); } + void StopCraftingRepairing(bool bCheckIfCraftingOrRepairing) { NativeCall(this, "UPrimalItem.StopCraftingRepairing", bCheckIfCraftingOrRepairing); } + bool TestMeetsCraftingRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent, UPrimalInventoryComponent * additionalInvComp) { return NativeCall(this, "UPrimalItem.TestMeetsCraftingRequirementsPercent", invComp, Percent, additionalInvComp); } + void TickCraftingItem(float DeltaTime, AShooterGameState * theGameState) { NativeCall(this, "UPrimalItem.TickCraftingItem", DeltaTime, theGameState); } + void UnequipWeapon(bool bDelayedUnequip) { NativeCall(this, "UPrimalItem.UnequipWeapon", bDelayedUnequip); } + void UnequippedItem() { NativeCall(this, "UPrimalItem.UnequippedItem"); } + void UpdatedItem() { NativeCall(this, "UPrimalItem.UpdatedItem"); } + void UpdatedItemSkillStatMultipliers_Implementation() { NativeCall(this, "UPrimalItem.UpdatedItemSkillStatMultipliers_Implementation"); } + void UpgradeItem(AShooterPlayerController * ByPC, int ItemStatModifierIndexToUpgrade, int ItemStatGroupIndexToUpgrade) { NativeCall(this, "UPrimalItem.UpgradeItem", ByPC, ItemStatModifierIndexToUpgrade, ItemStatGroupIndexToUpgrade); } + void Use(bool bOverridePlayerInput) { NativeCall(this, "UPrimalItem.Use", bOverridePlayerInput); } + bool UseItemOntoItem(UPrimalItem * DestinationItem, int AdditionalData) { return NativeCall(this, "UPrimalItem.UseItemOntoItem", DestinationItem, AdditionalData); } + void Used(UPrimalItem * DestinationItem, int AdditionalData) { NativeCall(this, "UPrimalItem.Used", DestinationItem, AdditionalData); } + bool UsesDurability() { return NativeCall(this, "UPrimalItem.UsesDurability"); } + void ApplyingSkinOntoItem(UPrimalItem * ToOwnerItem, bool bIsFirstTime) { NativeCall(this, "UPrimalItem.ApplyingSkinOntoItem", ToOwnerItem, bIsFirstTime); } + void BPAddedAttachments() { NativeCall(this, "UPrimalItem.BPAddedAttachments"); } + bool BPAllowAttachment(int AttachmentIndex) { return NativeCall(this, "UPrimalItem.BPAllowAttachment", AttachmentIndex); } + FString * BPAllowCrafting(FString * result, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPAllowCrafting", result, ForPC); } + bool BPAllowRemoteAddToInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteAddToInventory", invComp, ByPC, bRequestedByPlayer); } + bool BPAllowRemoteRemoveFromInventory(UPrimalInventoryComponent * invComp, AShooterPlayerController * ByPC, bool bRequestedByPlayer) { return NativeCall(this, "UPrimalItem.BPAllowRemoteRemoveFromInventory", invComp, ByPC, bRequestedByPlayer); } + bool BPCanAddToInventory(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.BPCanAddToInventory", toInventory); } + bool BPCanCraft(AShooterPlayerController * ByPC) { return NativeCall(this, "UPrimalItem.BPCanCraft", ByPC); } + bool BPCanUse(bool bIgnoreCooldown) { return NativeCall(this, "UPrimalItem.BPCanUse", bIgnoreCooldown); } + void BPCrafted() { NativeCall(this, "UPrimalItem.BPCrafted"); } + bool BPForceAllowRemoteAddToInventory(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.BPForceAllowRemoteAddToInventory", toInventory); } + FString * BPGetCustomInventoryWidgetText(FString * result) { return NativeCall(this, "UPrimalItem.BPGetCustomInventoryWidgetText", result); } + USoundBase * BPGetFuelAudioOverride(APrimalStructure * ForStructure) { return NativeCall(this, "UPrimalItem.BPGetFuelAudioOverride", ForStructure); } + FString * BPGetItemDescription(FString * result, FString * InDescription, bool bGetLongDescription, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemDescription", result, InDescription, bGetLongDescription, ForPC); } + UTexture2D * BPGetItemIcon(AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemIcon", ForPC); } + FString * BPGetItemName(FString * result, FString * ItemNameIn, AShooterPlayerController * ForPC) { return NativeCall(this, "UPrimalItem.BPGetItemName", result, ItemNameIn, ForPC); } + void BPGetItemNetInfo() { NativeCall(this, "UPrimalItem.BPGetItemNetInfo"); } + float BPGetItemWeight(float Weight) { return NativeCall(this, "UPrimalItem.BPGetItemWeight", Weight); } + FString * BPGetSkinnedCustomInventoryWidgetText(FString * result) { return NativeCall(this, "UPrimalItem.BPGetSkinnedCustomInventoryWidgetText", result); } + float BPGetTurretAmmoRange() { return NativeCall(this, "UPrimalItem.BPGetTurretAmmoRange"); } + void BPInitFromItemNetInfo() { NativeCall(this, "UPrimalItem.BPInitFromItemNetInfo"); } + bool BPIsValidForCrafting() { return NativeCall(this, "UPrimalItem.BPIsValidForCrafting"); } + void BPItemBroken() { NativeCall(this, "UPrimalItem.BPItemBroken"); } + void BPLocalUsed(AShooterPlayerController * ForPC) { NativeCall(this, "UPrimalItem.BPLocalUsed", ForPC); } + void BPNotifyDropped(APrimalCharacter * FromCharacter, bool bWasThrown) { NativeCall(this, "UPrimalItem.BPNotifyDropped", FromCharacter, bWasThrown); } + void BPOverrideCraftingConsumption(int AmountToConsume) { NativeCall(this, "UPrimalItem.BPOverrideCraftingConsumption", AmountToConsume); } + void BPPostConstructAttachment(int AttachmentIndex, UActorComponent * AttachedComponent) { NativeCall(this, "UPrimalItem.BPPostConstructAttachment", AttachmentIndex, AttachedComponent); } + void BPPostInitializeItem(UWorld * OptionalInitWorld) { NativeCall(this, "UPrimalItem.BPPostInitializeItem", OptionalInitWorld); } + void BPPreInitializeItem(UWorld * OptionalInitWorld) { NativeCall(this, "UPrimalItem.BPPreInitializeItem", OptionalInitWorld); } + void BPPreUseItem() { NativeCall(this, "UPrimalItem.BPPreUseItem"); } + bool BPPreventEquip(UPrimalInventoryComponent * toInventory) { return NativeCall(this, "UPrimalItem.BPPreventEquip", toInventory); } + bool BPPreventPlacingStructure() { return NativeCall(this, "UPrimalItem.BPPreventPlacingStructure"); } + bool BPPreventUseOntoItem(UPrimalItem * DestinationItem) { return NativeCall(this, "UPrimalItem.BPPreventUseOntoItem", DestinationItem); } + bool BPPreventWeaponEquip() { return NativeCall(this, "UPrimalItem.BPPreventWeaponEquip"); } + bool BPSupportUseOntoItem(UPrimalItem * DestinationItem) { return NativeCall(this, "UPrimalItem.BPSupportUseOntoItem", DestinationItem); } + void BPUsedOntoItem(UPrimalItem * DestinationItem, int AdditionalData) { NativeCall(this, "UPrimalItem.BPUsedOntoItem", DestinationItem, AdditionalData); } + void BP_OnFinishItemRepair() { NativeCall(this, "UPrimalItem.BP_OnFinishItemRepair"); } + void BP_OnStartItemRepair() { NativeCall(this, "UPrimalItem.BP_OnStartItemRepair"); } + void BlueprintEquipped(bool bIsFromSaveGame) { NativeCall(this, "UPrimalItem.BlueprintEquipped", bIsFromSaveGame); } + void BlueprintOwnerPosssessed(AController * PossessedByController) { NativeCall(this, "UPrimalItem.BlueprintOwnerPosssessed", PossessedByController); } + void BlueprintPostEquipped(bool bIsFromSaveGame) { NativeCall(this, "UPrimalItem.BlueprintPostEquipped", bIsFromSaveGame); } + void BlueprintSlotted(int Slot) { NativeCall(this, "UPrimalItem.BlueprintSlotted", Slot); } + void BlueprintUnequipped() { NativeCall(this, "UPrimalItem.BlueprintUnequipped"); } + void BlueprintUnslotted() { NativeCall(this, "UPrimalItem.BlueprintUnslotted"); } + void BlueprintUsed() { NativeCall(this, "UPrimalItem.BlueprintUsed"); } + void ClientUpdatedWeaponClipAmmo() { NativeCall(this, "UPrimalItem.ClientUpdatedWeaponClipAmmo"); } + void Crafted(bool bWasCraftedFromEngram) { NativeCall(this, "UPrimalItem.Crafted", bWasCraftedFromEngram); } + void EquippedBlueprintTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.EquippedBlueprintTick", DeltaSeconds); } + FString * GetItemStatName(FString * result, EPrimalItemStat::Type itemStatType) { return NativeCall(this, "UPrimalItem.GetItemStatName", result, itemStatType); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "UPrimalItem.GetPrivateStaticClass", Package); } + float HandleShieldDamageBlocking(APrimalCharacter * ForShooterCharacter, float DamageIn, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "UPrimalItem.HandleShieldDamageBlocking", ForShooterCharacter, DamageIn, DamageEvent, EventInstigator, DamageCauser); } + USoundBase * OverrideCrouchingSound(USoundBase * InSound, bool bIsProne, int soundState) { return NativeCall(this, "UPrimalItem.OverrideCrouchingSound", InSound, bIsProne, soundState); } + void RemovedSkinFromItem(UPrimalItem * FromOwnerItem, bool bIsFirstTime) { NativeCall(this, "UPrimalItem.RemovedSkinFromItem", FromOwnerItem, bIsFirstTime); } + void ServerUpdatedWeaponClipAmmo() { NativeCall(this, "UPrimalItem.ServerUpdatedWeaponClipAmmo"); } + void SkinEquippedBlueprintTick(UPrimalItem * OwnerItem, float DeltaSeconds) { NativeCall(this, "UPrimalItem.SkinEquippedBlueprintTick", OwnerItem, DeltaSeconds); } + void SlottedTick(float DeltaSeconds) { NativeCall(this, "UPrimalItem.SlottedTick", DeltaSeconds); } + static void StaticRegisterNativesUPrimalItem() { NativeCall(nullptr, "UPrimalItem.StaticRegisterNativesUPrimalItem"); } + void UpdatedItemSkillStatMultipliers() { NativeCall(this, "UPrimalItem.UpdatedItemSkillStatMultipliers"); } +}; + +struct FItemNetInfo +{ + TSubclassOf& ItemArchetypeField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemArchetype"); } + FItemNetID& ItemIDField() { return *GetNativePointerField(this, "FItemNetInfo.ItemID"); } + unsigned int& ExpirationTimeUTCField() { return *GetNativePointerField(this, "FItemNetInfo.ExpirationTimeUTC"); } + TArray& CustomItemDatasField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomItemDatas"); } + unsigned __int64& OwnerPlayerDataIdField() { return *GetNativePointerField(this, "FItemNetInfo.OwnerPlayerDataId"); } + int& SlotIndexField() { return *GetNativePointerField(this, "FItemNetInfo.SlotIndex"); } + unsigned int& WeaponClipAmmoField() { return *GetNativePointerField(this, "FItemNetInfo.WeaponClipAmmo"); } + long double& CreationTimeField() { return *GetNativePointerField(this, "FItemNetInfo.CreationTime"); } + float& ItemDurabilityField() { return *GetNativePointerField(this, "FItemNetInfo.ItemDurability"); } + float& ItemRatingField() { return *GetNativePointerField(this, "FItemNetInfo.ItemRating"); } + char& ItemQualityIndexField() { return *GetNativePointerField(this, "FItemNetInfo.ItemQualityIndex"); } + unsigned int& ItemQuantityField() { return *GetNativePointerField(this, "FItemNetInfo.ItemQuantity"); } + unsigned __int16& CraftQueueField() { return *GetNativePointerField(this, "FItemNetInfo.CraftQueue"); } + long double& NextCraftCompletionTimeField() { return *GetNativePointerField(this, "FItemNetInfo.NextCraftCompletionTime"); } + FieldArray ItemStatValuesField() { return {this, "FItemNetInfo.ItemStatValues"}; } + FieldArray ItemStatUpgradesField() { return {this, "FItemNetInfo.ItemStatUpgrades"}; } + TArray& ItemStatGroupValuesField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemStatGroupValues"); } + TArray& ItemStatGroupUpgradesField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemStatGroupUpgrades"); } + FieldArray<__int16, 6> ItemColorIDField() { return {this, "FItemNetInfo.ItemColorID"}; } + TSubclassOf& ItemCustomClassField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemCustomClass"); } + TSubclassOf& ItemSkinTemplateField() { return *GetNativePointerField*>(this, "FItemNetInfo.ItemSkinTemplate"); } + float& CraftingSkillField() { return *GetNativePointerField(this, "FItemNetInfo.CraftingSkill"); } + FString& CustomItemNameField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemName"); } + FString& CustomItemDescriptionField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemDescription"); } + TArray& CustomItemColorsField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomItemColors"); } + TArray& CustomResourceRequirementsField() { return *GetNativePointerField*>(this, "FItemNetInfo.CustomResourceRequirements"); } + long double& NextSpoilingTimeField() { return *GetNativePointerField(this, "FItemNetInfo.NextSpoilingTime"); } + long double& LastSpoilingTimeField() { return *GetNativePointerField(this, "FItemNetInfo.LastSpoilingTime"); } + long double& UploadEarliestValidTimeField() { return *GetNativePointerField(this, "FItemNetInfo.UploadEarliestValidTime"); } + TWeakObjectPtr& LastOwnerPlayerField() { return *GetNativePointerField*>(this, "FItemNetInfo.LastOwnerPlayer"); } + long double& LastAutoDurabilityDecreaseTimeField() { return *GetNativePointerField(this, "FItemNetInfo.LastAutoDurabilityDecreaseTime"); } + FVector& OriginalItemDropLocationField() { return *GetNativePointerField(this, "FItemNetInfo.OriginalItemDropLocation"); } + FieldArray<__int16, 6> PreSkinItemColorIDField() { return {this, "FItemNetInfo.PreSkinItemColorID"}; } + FieldArray EggNumberOfLevelUpPointsAppliedField() { return {this, "FItemNetInfo.EggNumberOfLevelUpPointsApplied"}; } + float& EggTamedIneffectivenessModifierField() { return *GetNativePointerField(this, "FItemNetInfo.EggTamedIneffectivenessModifier"); } + FieldArray EggColorSetIndicesField() { return {this, "FItemNetInfo.EggColorSetIndices"}; } + char& ItemVersionField() { return *GetNativePointerField(this, "FItemNetInfo.ItemVersion"); } + long double& LastSpoilingInventorySlotCheckTimeField() { return *GetNativePointerField(this, "FItemNetInfo.LastSpoilingInventorySlotCheckTime"); } + int& CustomItemIDField() { return *GetNativePointerField(this, "FItemNetInfo.CustomItemID"); } + TArray& SteamUserItemIDField() { return *GetNativePointerField*>(this, "FItemNetInfo.SteamUserItemID"); } + long double& ClusterSpoilingTimeUTCField() { return *GetNativePointerField(this, "FItemNetInfo.ClusterSpoilingTimeUTC"); } + TArray& EggDinoAncestorsField() { return *GetNativePointerField*>(this, "FItemNetInfo.EggDinoAncestors"); } + TArray& EggDinoAncestorsMaleField() { return *GetNativePointerField*>(this, "FItemNetInfo.EggDinoAncestorsMale"); } + char& EggRandomMutationsFemaleField() { return *GetNativePointerField(this, "FItemNetInfo.EggRandomMutationsFemale"); } + char& EggRandomMutationsMaleField() { return *GetNativePointerField(this, "FItemNetInfo.EggRandomMutationsMale"); } + char& ItemProfileVersionField() { return *GetNativePointerField(this, "FItemNetInfo.ItemProfileVersion"); } + FString& CrafterCharacterNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterCharacterName"); } + FString& CrafterTribeNameField() { return *GetNativePointerField(this, "FItemNetInfo.CrafterTribeName"); } + float& CraftedSkillBonusField() { return *GetNativePointerField(this, "FItemNetInfo.CraftedSkillBonus"); } + TArray>& FeatClassesField() { return *GetNativePointerField>*>(this, "FItemNetInfo.FeatClasses"); } + unsigned __int16& MaxUpgradeLevelField() { return *GetNativePointerField(this, "FItemNetInfo.MaxUpgradeLevel"); } + unsigned __int16& CurrentUpgradeLevelField() { return *GetNativePointerField(this, "FItemNetInfo.CurrentUpgradeLevel"); } + long double& EquippedAtTimeField() { return *GetNativePointerField(this, "FItemNetInfo.EquippedAtTime"); } + unsigned __int16& BlueprintCraftsRemainingField() { return *GetNativePointerField(this, "FItemNetInfo.BlueprintCraftsRemaining"); } + float& UseItemSlotTimeRemainingField() { return *GetNativePointerField(this, "FItemNetInfo.UseItemSlotTimeRemaining"); } + + // Functions + + FItemNetInfo * operator=(FItemNetInfo * __that) { return NativeCall(this, "FItemNetInfo.operator=", __that); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FItemNetInfo.StaticStruct"); } +}; + +struct FItemStatInfo +{ + int& DefaultModifierValueField() { return *GetNativePointerField(this, "FItemStatInfo.DefaultModifierValue"); } + int& RandomizerRangeOverrideField() { return *GetNativePointerField(this, "FItemStatInfo.RandomizerRangeOverride"); } + float& RandomizerRangeMultiplierField() { return *GetNativePointerField(this, "FItemStatInfo.RandomizerRangeMultiplier"); } + float& TheRandomizerPowerField() { return *GetNativePointerField(this, "FItemStatInfo.TheRandomizerPower"); } + float& StateModifierScaleField() { return *GetNativePointerField(this, "FItemStatInfo.StateModifierScale"); } + float& InitialValueConstantField() { return *GetNativePointerField(this, "FItemStatInfo.InitialValueConstant"); } + float& RatingValueMultiplierField() { return *GetNativePointerField(this, "FItemStatInfo.RatingValueMultiplier"); } + float& AbsoluteMaxValueField() { return *GetNativePointerField(this, "FItemStatInfo.AbsoluteMaxValue"); } + float& MinimumQualityLevelField() { return *GetNativePointerField(this, "FItemStatInfo.MinimumQualityLevel"); } + float& ChanceToIgnoreField() { return *GetNativePointerField(this, "FItemStatInfo.ChanceToIgnore"); } + float& AdditionalChanceToIgnoreByQualityLevelField() { return *GetNativePointerField(this, "FItemStatInfo.AdditionalChanceToIgnoreByQualityLevel"); } + float& UpgradeValueScaleField() { return *GetNativePointerField(this, "FItemStatInfo.UpgradeValueScale"); } + FName& StatModifierGroupNameField() { return *GetNativePointerField(this, "FItemStatInfo.StatModifierGroupName"); } + TArray>& GiveFeatClassesField() { return *GetNativePointerField>*>(this, "FItemStatInfo.GiveFeatClasses"); } + TArray& GiveFeatClassesWeightsField() { return *GetNativePointerField*>(this, "FItemStatInfo.GiveFeatClassesWeights"); } + + // Functions + + FItemStatInfo * operator=(FItemStatInfo * __that) { return NativeCall(this, "FItemStatInfo.operator=", __that); } + float GetItemStatModifier(unsigned __int16 ItemStatValue, unsigned __int16 ItemUpgradeValue, float GlobalUpgradeValueScale) { return NativeCall(this, "FItemStatInfo.GetItemStatModifier", ItemStatValue, ItemUpgradeValue, GlobalUpgradeValueScale); } + float GetItemStatModifierUpgradeValueOnly(unsigned __int16 ItemStatValue, unsigned __int16 ItemUpgradeValue, float GlobalUpgradeValueScale) { return NativeCall(this, "FItemStatInfo.GetItemStatModifierUpgradeValueOnly", ItemStatValue, ItemUpgradeValue, GlobalUpgradeValueScale); } + unsigned __int16 GetRandomValue(float QualityLevel, float * outRandonMultiplier, float ClampMaxRand) { return NativeCall(this, "FItemStatInfo.GetRandomValue", QualityLevel, outRandonMultiplier, ClampMaxRand); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FItemStatInfo.StaticStruct"); } +}; \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/Other.h b/version/Core/Public/API/Atlas/Other.h new file mode 100644 index 00000000..47613d27 --- /dev/null +++ b/version/Core/Public/API/Atlas/Other.h @@ -0,0 +1,798 @@ +#pragma once + +struct FDamageEvent +{ + float& ImpulseField() { return *GetNativePointerField(this, "FDamageEvent.Impulse"); } + float& OriginalDamageField() { return *GetNativePointerField(this, "FDamageEvent.OriginalDamage"); } + int& InstanceBodyIndexField() { return *GetNativePointerField(this, "FDamageEvent.InstanceBodyIndex"); } + TSubclassOf& DamageTypeClassField() { return *GetNativePointerField*>(this, "FDamageEvent.DamageTypeClass"); } + + // Functions + + void GetBestHitInfo(AActor* HitActor, AActor* HitInstigator, FHitResult* OutHitInfo, FVector* OutImpulseDir) { NativeCall(this, "FDamageEvent.GetBestHitInfo", HitActor, HitInstigator, OutHitInfo, OutImpulseDir); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FDamageEvent.StaticStruct"); } +}; + +struct UPhysicalMaterial +{ +}; + +struct FBodyInstance +{ + +}; + +struct __declspec(align(8)) FHitResult +{ + unsigned __int32 bBlockingHit : 1; + unsigned __int32 bStartPenetrating : 1; + unsigned __int32 bVolatileCollision : 1; + float Time; + FVector_NetQuantize Location; + FVector_NetQuantizeNormal Normal; + FVector_NetQuantize ImpactPoint; + FVector_NetQuantizeNormal ImpactNormal; + FVector_NetQuantize TraceStart; + FVector_NetQuantize TraceEnd; + float PenetrationDepth; + int Item; + TWeakObjectPtr PhysMaterial; + TWeakObjectPtr Actor; + TWeakObjectPtr Component; + FBodyInstance* BodyInstance; + FName BoneName; + int FaceIndex; + + // Functions + + void operator=(FHitResult* __that) { NativeCall(this, "FHitResult.operator=", __that); } + AActor* GetActor() { return NativeCall(this, "FHitResult.GetActor"); } + UPrimitiveComponent* GetComponent() { return NativeCall(this, "FHitResult.GetComponent"); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FHitResult.StaticStruct"); } +}; + +struct FOverlapInfo +{ + bool bFromSweep; + FHitResult OverlapInfo; + void* CachedCompPtr; +}; + +struct FInternetAddr +{ +}; + +struct FSocket +{ + ESocketType& SocketTypeField() { return *GetNativePointerField(this, "FSocket.SocketType"); } + FString& SocketDescriptionField() { return *GetNativePointerField(this, "FSocket.SocketDescription"); } + +}; + +struct FSocketBSD : FSocket +{ + unsigned __int64& SocketField() { return *GetNativePointerField(this, "FSocketBSD.Socket"); } + FDateTime& LastActivityTimeField() { return *GetNativePointerField(this, "FSocketBSD.LastActivityTime"); } + + // Functions + + bool Close() { return NativeCall(this, "FSocketBSD.Close"); } + bool Bind(FInternetAddr* Addr) { return NativeCall(this, "FSocketBSD.Bind", Addr); } + bool Connect(FInternetAddr* Addr) { return NativeCall(this, "FSocketBSD.Connect", Addr); } + bool Listen(int MaxBacklog) { return NativeCall(this, "FSocketBSD.Listen", MaxBacklog); } + bool HasPendingConnection(bool* bHasPendingConnection) { return NativeCall(this, "FSocketBSD.HasPendingConnection", bHasPendingConnection); } + bool HasPendingData(unsigned int* PendingDataSize) { return NativeCall(this, "FSocketBSD.HasPendingData", PendingDataSize); } + FSocket* Accept(FString* SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", SocketDescription); } + FSocket* Accept(FInternetAddr* OutAddr, FString* SocketDescription) { return NativeCall(this, "FSocketBSD.Accept", OutAddr, SocketDescription); } + bool SendTo(const char* Data, int Count, int* BytesSent, FInternetAddr* Destination) { return NativeCall(this, "FSocketBSD.SendTo", Data, Count, BytesSent, Destination); } + bool Send(const char* Data, int Count, int* BytesSent) { return NativeCall(this, "FSocketBSD.Send", Data, Count, BytesSent); } + bool RecvFrom(char* Data, int BufferSize, int* BytesRead, FInternetAddr* Source, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.RecvFrom", Data, BufferSize, BytesRead, Source, Flags); } + bool Recv(char* Data, int BufferSize, int* BytesRead, ESocketReceiveFlags::Type Flags) { return NativeCall(this, "FSocketBSD.Recv", Data, BufferSize, BytesRead, Flags); } + ESocketConnectionState GetConnectionState() { return NativeCall(this, "FSocketBSD.GetConnectionState"); } + void GetAddress(FInternetAddr* OutAddr) { NativeCall(this, "FSocketBSD.GetAddress", OutAddr); } + bool SetNonBlocking(bool bIsNonBlocking) { return NativeCall(this, "FSocketBSD.SetNonBlocking", bIsNonBlocking); } + bool SetBroadcast(bool bAllowBroadcast) { return NativeCall(this, "FSocketBSD.SetBroadcast", bAllowBroadcast); } + bool JoinMulticastGroup(FInternetAddr* GroupAddress) { return NativeCall(this, "FSocketBSD.JoinMulticastGroup", GroupAddress); } + bool LeaveMulticastGroup(FInternetAddr* GroupAddress) { return NativeCall(this, "FSocketBSD.LeaveMulticastGroup", GroupAddress); } + bool SetMulticastLoopback(bool bLoopback) { return NativeCall(this, "FSocketBSD.SetMulticastLoopback", bLoopback); } + bool SetMulticastTtl(char TimeToLive) { return NativeCall(this, "FSocketBSD.SetMulticastTtl", TimeToLive); } + bool SetReuseAddr(bool bAllowReuse) { return NativeCall(this, "FSocketBSD.SetReuseAddr", bAllowReuse); } + bool SetLinger(bool bShouldLinger, int Timeout) { return NativeCall(this, "FSocketBSD.SetLinger", bShouldLinger, Timeout); } + bool SetSendBufferSize(int Size, int* NewSize) { return NativeCall(this, "FSocketBSD.SetSendBufferSize", Size, NewSize); } + bool SetReceiveBufferSize(int Size, int* NewSize) { return NativeCall(this, "FSocketBSD.SetReceiveBufferSize", Size, NewSize); } + int GetPortNo() { return NativeCall(this, "FSocketBSD.GetPortNo"); } +}; + +struct RCONClientConnection +{ + FSocket* SocketField() { return *GetNativePointerField(this, "RCONClientConnection.Socket"); } + UShooterCheatManager* CheatManagerField() { return *GetNativePointerField(this, "RCONClientConnection.CheatManager"); } + bool& IsAuthenticatedField() { return *GetNativePointerField(this, "RCONClientConnection.IsAuthenticated"); } + bool& IsClosedField() { return *GetNativePointerField(this, "RCONClientConnection.IsClosed"); } + TArray& DataBufferField() { return *GetNativePointerField*>(this, "RCONClientConnection.DataBuffer"); } + unsigned int& CurrentPacketSizeField() { return *GetNativePointerField(this, "RCONClientConnection.CurrentPacketSize"); } + long double& LastReceiveTimeField() { return *GetNativePointerField(this, "RCONClientConnection.LastReceiveTime"); } + long double& LastSendKeepAliveTimeField() { return *GetNativePointerField(this, "RCONClientConnection.LastSendKeepAliveTime"); } + FString& ServerPasswordField() { return *GetNativePointerField(this, "RCONClientConnection.ServerPassword"); } + + // Functions + + void Tick(long double WorldTime, UWorld* InWorld) { NativeCall(this, "RCONClientConnection.Tick", WorldTime, InWorld); } + void ProcessRCONPacket(RCONPacket* Packet, UWorld* InWorld) { NativeCall(this, "RCONClientConnection.ProcessRCONPacket", Packet, InWorld); } + void SendMessageW(int Id, int Type, FString* OutGoingMessage) { NativeCall(this, "RCONClientConnection.SendMessageW", Id, Type, OutGoingMessage); } + void Close() { NativeCall(this, "RCONClientConnection.Close"); } +}; + +struct RCONPacket +{ + int Length; + int Id; + int Type; + FString Body; +}; + +struct UGameInstance; + +struct UGameplayStatics +{ + + // Functions + + static float BPPointPlaneDist(FVector* Point, FVector* PlaneBase, FVector* PlaneNormal) { return NativeCall(nullptr, "UGameplayStatics.BPPointPlaneDist", Point, PlaneBase, PlaneNormal); } + static void ApplyDamage(AActor* DamagedActor, float BaseDamage, AController* EventInstigator, AActor* DamageCauser, TSubclassOf DamageTypeClass, float Impulse) { NativeCall, float>(nullptr, "UGameplayStatics.ApplyDamage", DamagedActor, BaseDamage, EventInstigator, DamageCauser, DamageTypeClass, Impulse); } + static void ApplyPointDamage(AActor* DamagedActor, float BaseDamage, FVector* HitFromDirection, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf DamageTypeClass, float Impulse, bool bForceCollisionCheck, ECollisionChannel ForceCollisionCheckTraceChannel) { NativeCall, float, bool, ECollisionChannel>(nullptr, "UGameplayStatics.ApplyPointDamage", DamagedActor, BaseDamage, HitFromDirection, HitInfo, EventInstigator, DamageCauser, DamageTypeClass, Impulse, bForceCollisionCheck, ForceCollisionCheckTraceChannel); } + static bool ApplyRadialDamage(UObject* WorldContextObject, float BaseDamage, FVector* Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray* IgnoreActors, AActor* DamageCauser, AController* InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray*, AActor*, AController*, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamage", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } + static bool ApplyRadialDamageIgnoreDamageActors(UObject* WorldContextObject, float BaseDamage, FVector* Origin, float DamageRadius, TSubclassOf DamageTypeClass, TArray* IgnoreActors, TArray* IgnoreDamageActors, AActor* DamageCauser, AController* InstigatedByController, bool bDoFullDamage, ECollisionChannel DamagePreventionChannel, float Impulse) { return NativeCall, TArray*, TArray*, AActor*, AController*, bool, ECollisionChannel, float>(nullptr, "UGameplayStatics.ApplyRadialDamageIgnoreDamageActors", WorldContextObject, BaseDamage, Origin, DamageRadius, DamageTypeClass, IgnoreActors, IgnoreDamageActors, DamageCauser, InstigatedByController, bDoFullDamage, DamagePreventionChannel, Impulse); } + static bool ApplyRadialDamageWithFalloff(UObject* WorldContextObject, float BaseDamage, float MinimumDamage, FVector* Origin, float DamageInnerRadius, float DamageOuterRadius, float DamageFalloff, TSubclassOf DamageTypeClass, TArray* IgnoreActors, AActor* DamageCauser, AController* InstigatedByController, ECollisionChannel DamagePreventionChannel, float Impulse, TArray* IgnoreDamageActors, int NumAdditionalAttempts) { return NativeCall, TArray*, AActor*, AController*, ECollisionChannel, float, TArray*, int>(nullptr, "UGameplayStatics.ApplyRadialDamageWithFalloff", WorldContextObject, BaseDamage, MinimumDamage, Origin, DamageInnerRadius, DamageOuterRadius, DamageFalloff, DamageTypeClass, IgnoreActors, DamageCauser, InstigatedByController, DamagePreventionChannel, Impulse, IgnoreDamageActors, NumAdditionalAttempts); } + static bool AreAnyListenersWithinRange(FVector Location, float MaximumRange) { return NativeCall(nullptr, "UGameplayStatics.AreAnyListenersWithinRange", Location, MaximumRange); } + static FVector* BPPointPlaneProject(FVector* result, FVector* Point, FVector* PlaneBase, FVector* PlaneNorm) { return NativeCall(nullptr, "UGameplayStatics.BPPointPlaneProject", result, Point, PlaneBase, PlaneNorm); } + static AActor* BeginSpawningActorFromBlueprint(UObject* WorldContextObject, UBlueprint* Blueprint, FTransform* SpawnTransform, bool bNoCollisionFail) { return NativeCall(nullptr, "UGameplayStatics.BeginSpawningActorFromBlueprint", WorldContextObject, Blueprint, SpawnTransform, bNoCollisionFail); } + static AActor* BeginSpawningActorFromClass(UObject* WorldContextObject, TSubclassOf ActorClass, FTransform* SpawnTransform, bool bNoCollisionFail) { return NativeCall, FTransform*, bool>(nullptr, "UGameplayStatics.BeginSpawningActorFromClass", WorldContextObject, ActorClass, SpawnTransform, bNoCollisionFail); } + static void BreakHitResult(FHitResult* Hit, FVector* Location, FVector* Normal, FVector* ImpactPoint, FVector* ImpactNormal, UPhysicalMaterial** PhysMat, AActor** HitActor, UPrimitiveComponent** HitComponent, FName* HitBoneName, int* HitItem, bool* BlockingHit) { NativeCall(nullptr, "UGameplayStatics.BreakHitResult", Hit, Location, Normal, ImpactPoint, ImpactNormal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem, BlockingHit); } + static void BreakHitResult_OLD(FHitResult* Hit, FVector* Location, FVector* Normal, FVector* ImpactPoint, FVector* ImpactNormal, UPhysicalMaterial** PhysMat, AActor** HitActor, UPrimitiveComponent** HitComponent, FName* HitBoneName, int* HitItem) { NativeCall(nullptr, "UGameplayStatics.BreakHitResult_OLD", Hit, Location, Normal, ImpactPoint, ImpactNormal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem); } + static APlayerController* CreatePlayer(UObject* WorldContextObject, int ControllerId, bool bSpawnPawn) { return NativeCall(nullptr, "UGameplayStatics.CreatePlayer", WorldContextObject, ControllerId, bSpawnPawn); } + static void DeactivateReverbEffect(FName TagName) { NativeCall(nullptr, "UGameplayStatics.DeactivateReverbEffect", TagName); } + static bool DeleteGameInSlot(FString* SlotName, const int UserIndex) { return NativeCall(nullptr, "UGameplayStatics.DeleteGameInSlot", SlotName, UserIndex); } + static bool DoesSaveGameExist(FString* SlotName, const int UserIndex) { return NativeCall(nullptr, "UGameplayStatics.DoesSaveGameExist", SlotName, UserIndex); } + static void EnableLiveStreaming(bool Enable) { NativeCall(nullptr, "UGameplayStatics.EnableLiveStreaming", Enable); } + static AActor* FinishSpawningActor(AActor* Actor, FTransform* SpawnTransform) { return NativeCall(nullptr, "UGameplayStatics.FinishSpawningActor", Actor, SpawnTransform); } + static void GetAccurateRealTime(UObject* WorldContextObject, int* Seconds, float* PartialSeconds) { NativeCall(nullptr, "UGameplayStatics.GetAccurateRealTime", WorldContextObject, Seconds, PartialSeconds); } + static FVector* GetActorArrayAverageLocation(FVector* result, TArray* Actors) { return NativeCall*>(nullptr, "UGameplayStatics.GetActorArrayAverageLocation", result, Actors); } + static void GetActorArrayBounds(TArray* Actors, bool bOnlyCollidingComponents, FVector* Center, FVector* BoxExtent) { NativeCall*, bool, FVector*, FVector*>(nullptr, "UGameplayStatics.GetActorArrayBounds", Actors, bOnlyCollidingComponents, Center, BoxExtent); } + static void GetAllActorsOfClass(UObject* WorldContextObject, TSubclassOf ActorClass, TArray* OutActors) { NativeCall, TArray*>(nullptr, "UGameplayStatics.GetAllActorsOfClass", WorldContextObject, ActorClass, OutActors); } + static void GetAllActorsWithInterface(UObject* WorldContextObject, TSubclassOf Interface, TArray* OutActors) { NativeCall, TArray*>(nullptr, "UGameplayStatics.GetAllActorsWithInterface", WorldContextObject, Interface, OutActors); } + static float GetAudioTimeSeconds(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetAudioTimeSeconds", WorldContextObject); } + static UGameInstance* GetGameInstance(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetGameInstance", WorldContextObject); } + static AGameMode* GetGameMode(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetGameMode", WorldContextObject); } + static AGameState* GetGameState(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetGameState", WorldContextObject); } + static float GetGlobalTimeDilation(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetGlobalTimeDilation", WorldContextObject); } + static UClass* GetObjectClass(UObject* Object) { return NativeCall(nullptr, "UGameplayStatics.GetObjectClass", Object); } + static FString* GetPlatformName(FString* result) { return NativeCall(nullptr, "UGameplayStatics.GetPlatformName", result); } + static APlayerCameraManager* GetPlayerCameraManager(UObject* WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerCameraManager", WorldContextObject, PlayerIndex); } + static ACharacter* GetPlayerCharacter(UObject* WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerCharacter", WorldContextObject, PlayerIndex); } + static APlayerController* GetPlayerController(UObject* WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerController", WorldContextObject, PlayerIndex); } + static APawn* GetPlayerPawn(UObject* WorldContextObject, int PlayerIndex) { return NativeCall(nullptr, "UGameplayStatics.GetPlayerPawn", WorldContextObject, PlayerIndex); } + static float GetRealTimeSeconds(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetRealTimeSeconds", WorldContextObject); } + static EPhysicalSurface GetSurfaceType(FHitResult* Hit) { return NativeCall(nullptr, "UGameplayStatics.GetSurfaceType", Hit); } + static float GetWorldDeltaSeconds(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetWorldDeltaSeconds", WorldContextObject); } + static FIntVector* GetWorldOriginLocation(FIntVector* result, UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.GetWorldOriginLocation", result, WorldContextObject); } + static bool IsGamePaused(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.IsGamePaused", WorldContextObject); } + static bool IsGameWorld(UObject* WorldContextObject) { return NativeCall(nullptr, "UGameplayStatics.IsGameWorld", WorldContextObject); } + static void LoadStreamLevel(UObject* WorldContextObject, FName LevelName, bool bMakeVisibleAfterLoad, bool bShouldBlockOnLoad, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UGameplayStatics.LoadStreamLevel", WorldContextObject, LevelName, bMakeVisibleAfterLoad, bShouldBlockOnLoad, LatentInfo); } + static void OpenLevel(UObject* WorldContextObject, FName LevelName, bool bAbsolute, FString Options) { NativeCall(nullptr, "UGameplayStatics.OpenLevel", WorldContextObject, LevelName, bAbsolute, Options); } + static void PlayDialogueAtLocation(UObject* WorldContextObject, UDialogueWave* Dialogue, FDialogueContext* Context, FVector Location, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings) { NativeCall(nullptr, "UGameplayStatics.PlayDialogueAtLocation", WorldContextObject, Dialogue, Context, Location, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings); } + static UAudioComponent* PlayDialogueAttached(UDialogueWave* Dialogue, FDialogueContext* Context, USceneComponent* AttachToComponent, FName AttachPointName, FVector Location, EAttachLocation::Type LocationType, bool bStopWhenAttachedToDestroyed, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings) { return NativeCall(nullptr, "UGameplayStatics.PlayDialogueAttached", Dialogue, Context, AttachToComponent, AttachPointName, Location, LocationType, bStopWhenAttachedToDestroyed, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings); } + static void PlaySound(UObject* WorldContextObject, USoundCue* InSoundCue, USceneComponent* AttachComponent, FName AttachName, bool bFollow, float VolumeMultiplier, float PitchMultiplier) { NativeCall(nullptr, "UGameplayStatics.PlaySound", WorldContextObject, InSoundCue, AttachComponent, AttachName, bFollow, VolumeMultiplier, PitchMultiplier); } + static void PlaySoundAtLocation(UObject* WorldContextObject, USoundBase* Sound, FVector Location, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings, bool bAlwaysPlay) { NativeCall(nullptr, "UGameplayStatics.PlaySoundAtLocation", WorldContextObject, Sound, Location, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings, bAlwaysPlay); } + static UAudioComponent* PlaySoundAttached(USoundBase* Sound, USceneComponent* AttachToComponent, FName AttachPointName, FVector Location, EAttachLocation::Type LocationType, bool bStopWhenAttachedToDestroyed, float VolumeMultiplier, float PitchMultiplier, float StartTime, USoundAttenuation* AttenuationSettings, bool bAlwaysPlay) { return NativeCall(nullptr, "UGameplayStatics.PlaySoundAttached", Sound, AttachToComponent, AttachPointName, Location, LocationType, bStopWhenAttachedToDestroyed, VolumeMultiplier, PitchMultiplier, StartTime, AttenuationSettings, bAlwaysPlay); } + static void PopSoundMixModifier(USoundMix* InSoundMixModifier) { NativeCall(nullptr, "UGameplayStatics.PopSoundMixModifier", InSoundMixModifier); } + static void PushSoundMixModifier(USoundMix* InSoundMixModifier) { NativeCall(nullptr, "UGameplayStatics.PushSoundMixModifier", InSoundMixModifier); } + static void SetBaseSoundMix(USoundMix* InSoundMix) { NativeCall(nullptr, "UGameplayStatics.SetBaseSoundMix", InSoundMix); } + static bool SetGamePaused(UObject* WorldContextObject, bool bPaused) { return NativeCall(nullptr, "UGameplayStatics.SetGamePaused", WorldContextObject, bPaused); } + static void SetGlobalTimeDilation(UObject* WorldContextObject, float TimeDilation) { NativeCall(nullptr, "UGameplayStatics.SetGlobalTimeDilation", WorldContextObject, TimeDilation); } + static void SetWorldOriginLocation(UObject* WorldContextObject, FIntVector NewLocation) { NativeCall(nullptr, "UGameplayStatics.SetWorldOriginLocation", WorldContextObject, NewLocation); } + static void UnloadStreamLevel(UObject* WorldContextObject, FName LevelName, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UGameplayStatics.UnloadStreamLevel", WorldContextObject, LevelName, LatentInfo); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UGameplayStatics.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUGameplayStatics() { NativeCall(nullptr, "UGameplayStatics.StaticRegisterNativesUGameplayStatics"); } +}; + +struct FItemMultiplier +{ + TSubclassOf ItemClass; + float ItemMultiplier; +}; + +struct APrimalBuff +{ + float& DeactivationLifespanField() { return *GetNativePointerField(this, "APrimalBuff.DeactivationLifespan"); } + FName& InstigatorAttachmentSocketField() { return *GetNativePointerField(this, "APrimalBuff.InstigatorAttachmentSocket"); } + float& RemoteForcedFleeDurationField() { return *GetNativePointerField(this, "APrimalBuff.RemoteForcedFleeDuration"); } + FVector& AoETraceToTargetsStartOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoETraceToTargetsStartOffset"); } + TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalBuff.Target"); } + TWeakObjectPtr& InstigatorItemField() { return *GetNativePointerField*>(this, "APrimalBuff.InstigatorItem"); } + float& SlowInstigatorFallingAddZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingAddZVelocity"); } + float& SlowInstigatorFallingDampenZVelocityField() { return *GetNativePointerField(this, "APrimalBuff.SlowInstigatorFallingDampenZVelocity"); } + float& DeactivateAfterTimeField() { return *GetNativePointerField(this, "APrimalBuff.DeactivateAfterTime"); } + float& WeaponRecoilMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.WeaponRecoilMultiplier"); } + float& ReceiveDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ReceiveDamageMultiplier"); } + float& MeleeDamageMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.MeleeDamageMultiplier"); } + float& DepleteInstigatorItemDurabilityPerSecondField() { return *GetNativePointerField(this, "APrimalBuff.DepleteInstigatorItemDurabilityPerSecond"); } + FieldArray ValuesToAddPerSecondField() { return { this, "APrimalBuff.ValuesToAddPerSecond" }; } + float& CharacterAdd_DefaultHyperthermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHyperthermicInsulation"); } + float& CharacterAdd_DefaultHypothermicInsulationField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAdd_DefaultHypothermicInsulation"); } + float& CharacterMultiplier_ExtraWaterConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraWaterConsumptionMultiplier"); } + float& CharacterMultiplier_ExtraFoodConsumptionMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_ExtraFoodConsumptionMultiplier"); } + float& CharacterMultiplier_SubmergedOxygenDecreaseSpeedField() { return *GetNativePointerField(this, "APrimalBuff.CharacterMultiplier_SubmergedOxygenDecreaseSpeed"); } + float& ViewMinExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMinExposureMultiplier"); } + float& ViewMaxExposureMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.ViewMaxExposureMultiplier"); } + float& XPtoAddField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAdd"); } + float& XPtoAddRateField() { return *GetNativePointerField(this, "APrimalBuff.XPtoAddRate"); } + bool& bDeactivateAfterAddingXPField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivateAfterAddingXP"); } + float& SubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.SubmergedMaxSpeedModifier"); } + float& UnsubmergedMaxSpeedModifierField() { return *GetNativePointerField(this, "APrimalBuff.UnsubmergedMaxSpeedModifier"); } + long double& BuffStartTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffStartTime"); } + UMaterialInterface* BuffPostProcessEffectField() { return *GetNativePointerField(this, "APrimalBuff.BuffPostProcessEffect"); } + TArray>& PreventActorClassesTargetingField() { return *GetNativePointerField>*>(this, "APrimalBuff.PreventActorClassesTargeting"); } + TArray& PreventActorClassesTargetingRangesField() { return *GetNativePointerField*>(this, "APrimalBuff.PreventActorClassesTargetingRanges"); } + TSubclassOf& AOEOtherBuffToApplyField() { return *GetNativePointerField*>(this, "APrimalBuff.AOEOtherBuffToApply"); } + float& AOEBuffRangeField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffRange"); } + float& CharacterAOEBuffDamageField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffDamage"); } + float& CharacterAOEBuffResistanceField() { return *GetNativePointerField(this, "APrimalBuff.CharacterAOEBuffResistance"); } + float& Maximum2DVelocityForStaminaRecoveryField() { return *GetNativePointerField(this, "APrimalBuff.Maximum2DVelocityForStaminaRecovery"); } + TArray PostprocessBlendablesToExcludeField() { return *GetNativePointerField*>(this, "APrimalBuff.PostprocessBlendablesToExclude"); } + TArray>& BuffedCharactersField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffedCharacters"); } + long double& LastItemDurabilityDepletionTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastItemDurabilityDepletionTime"); } + TSubclassOf& BuffToGiveOnDeactivationField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffToGiveOnDeactivation"); } + TArray>& BuffClassesToCancelOnActivationField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffClassesToCancelOnActivation"); } + TArray>& ActivePreventsBuffClassesField() { return *GetNativePointerField>*>(this, "APrimalBuff.ActivePreventsBuffClasses"); } + TArray>& BuffRequiresOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffRequiresOwnerClass"); } + TArray>& BuffPreventsOwnerClassField() { return *GetNativePointerField>*>(this, "APrimalBuff.BuffPreventsOwnerClass"); } + float& XPEarningMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.XPEarningMultiplier"); } + bool& bUseBPSetupForInstigatorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPSetupForInstigator"); } + bool& bUseBPDeactivatedField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPDeactivated"); } + bool& bUseBPCustomAllowAddBuffField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPCustomAllowAddBuff"); } + FVector& staticPathingDestinationField() { return *GetNativePointerField(this, "APrimalBuff.staticPathingDestination"); } + long double& TickingDeactivationTimeField() { return *GetNativePointerField(this, "APrimalBuff.TickingDeactivationTime"); } + UPrimalBuffPersistentData* MyBuffPersistentDataField() { return *GetNativePointerField(this, "APrimalBuff.MyBuffPersistentData"); } + TSubclassOf& BuffPersistentDataClassField() { return *GetNativePointerField*>(this, "APrimalBuff.BuffPersistentDataClass"); } + TWeakObjectPtr& DamageCauserField() { return *GetNativePointerField*>(this, "APrimalBuff.DamageCauser"); } + USoundBase* ExtraActivationSoundToPlayField() { return *GetNativePointerField(this, "APrimalBuff.ExtraActivationSoundToPlay"); } + bool& bPersistentBuffSurvivesLevelUpField() { return *GetNativePointerField(this, "APrimalBuff.bPersistentBuffSurvivesLevelUp"); } + float& AoEApplyDamageField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamage"); } + float& AoEApplyDamageIntervalField() { return *GetNativePointerField(this, "APrimalBuff.AoEApplyDamageInterval"); } + TSubclassOf& AoEApplyDamageTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.AoEApplyDamageType"); } + TSubclassOf& ForceNetworkSpatializationMaxLimitBuffTypeField() { return *GetNativePointerField*>(this, "APrimalBuff.ForceNetworkSpatializationMaxLimitBuffType"); } + int& ForceNetworkSpatializationBuffMaxLimitNumField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitNum"); } + float& ForceNetworkSpatializationBuffMaxLimitRangeField() { return *GetNativePointerField(this, "APrimalBuff.ForceNetworkSpatializationBuffMaxLimitRange"); } + float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalBuff.InsulationRange"); } + float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HyperThermiaInsulation"); } + float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalBuff.HypoThermiaInsulation"); } + FVector& AoEBuffLocOffsetField() { return *GetNativePointerField(this, "APrimalBuff.AoEBuffLocOffset"); } + TArray>& AoEClassesToIncludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToInclude"); } + TArray>& AoEClassesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalBuff.AoEClassesToExclude"); } + bool& bUseBPExcludeAoEActorField() { return *GetNativePointerField(this, "APrimalBuff.bUseBPExcludeAoEActor"); } + bool& bOverrideBuffDescriptionField() { return *GetNativePointerField(this, "APrimalBuff.bOverrideBuffDescription"); } + bool& bOnlyTickWhenPossessedField() { return *GetNativePointerField(this, "APrimalBuff.bOnlyTickWhenPossessed"); } + bool& bDestroyWhenUnpossessedField() { return *GetNativePointerField(this, "APrimalBuff.bDestroyWhenUnpossessed"); } + long double& LastAoEApplyDamageTimeField() { return *GetNativePointerField(this, "APrimalBuff.LastAoEApplyDamageTime"); } + float& OnlyForInstigatorSoundFadeInTimeField() { return *GetNativePointerField(this, "APrimalBuff.OnlyForInstigatorSoundFadeInTime"); } + bool& bUseBuffTickServerField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickServer"); } + bool& bUseBuffTickClientField() { return *GetNativePointerField(this, "APrimalBuff.bUseBuffTickClient"); } + float& BuffTickServerMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMaxTime"); } + float& BuffTickServerMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickServerMinTime"); } + float& BuffTickClientMaxTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMaxTime"); } + float& BuffTickClientMinTimeField() { return *GetNativePointerField(this, "APrimalBuff.BuffTickClientMinTime"); } + long double& LastBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeServer"); } + long double& LastBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.LastBuffTickTimeClient"); } + long double& NextBuffTickTimeServerField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeServer"); } + long double& NextBuffTickTimeClientField() { return *GetNativePointerField(this, "APrimalBuff.NextBuffTickTimeClient"); } + bool& bTickFunctionDisabledField() { return *GetNativePointerField(this, "APrimalBuff.bTickFunctionDisabled"); } + bool& bWasStasisedField() { return *GetNativePointerField(this, "APrimalBuff.bWasStasised"); } + int& AddBuffMaxNumStacksField() { return *GetNativePointerField(this, "APrimalBuff.AddBuffMaxNumStacks"); } + USoundBase* DeactivatedSoundField() { return *GetNativePointerField(this, "APrimalBuff.DeactivatedSound"); } + bool& bDeactivatedSoundOnlyLocalField() { return *GetNativePointerField(this, "APrimalBuff.bDeactivatedSoundOnlyLocal"); } + bool& bDisableBloomField() { return *GetNativePointerField(this, "APrimalBuff.bDisableBloom"); } + bool& bBPOverrideCharacterNewFallVelocityField() { return *GetNativePointerField(this, "APrimalBuff.bBPOverrideCharacterNewFallVelocity"); } + bool& bBPModifyCharacterFOVField() { return *GetNativePointerField(this, "APrimalBuff.bBPModifyCharacterFOV"); } + bool& bDisableLightShaftsField() { return *GetNativePointerField(this, "APrimalBuff.bDisableLightShafts"); } + float& PostProcessInterpSpeedDownField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedDown"); } + float& PostProcessInterpSpeedUpField() { return *GetNativePointerField(this, "APrimalBuff.PostProcessInterpSpeedUp"); } + float& TPVCameraSpeedInterpolationMultiplierField() { return *GetNativePointerField(this, "APrimalBuff.TPVCameraSpeedInterpolationMultiplier"); } + bool& bIsCarryBuffField() { return *GetNativePointerField(this, "APrimalBuff.bIsCarryBuff"); } + long double& TimeForNextAOECheckField() { return *GetNativePointerField(this, "APrimalBuff.TimeForNextAOECheck"); } + float& AOEBuffIntervalMinField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMin"); } + float& AOEBuffIntervalMaxField() { return *GetNativePointerField(this, "APrimalBuff.AOEBuffIntervalMax"); } + float& MaximumVelocityZForSlowingFallField() { return *GetNativePointerField(this, "APrimalBuff.MaximumVelocityZForSlowingFall"); } + int& FNameIntField() { return *GetNativePointerField(this, "APrimalBuff.FNameInt"); } + + // Bit fields + + BitFieldValue bSlowInstigatorFalling() { return { this, "APrimalBuff.bSlowInstigatorFalling" }; } + BitFieldValue bDeactivateOnJump() { return { this, "APrimalBuff.bDeactivateOnJump" }; } + BitFieldValue bPreventJump() { return { this, "APrimalBuff.bPreventJump" }; } + BitFieldValue bDeactivated() { return { this, "APrimalBuff.bDeactivated" }; } + BitFieldValue bUsesInstigator() { return { this, "APrimalBuff.bUsesInstigator" }; } + BitFieldValue bFollowTarget() { return { this, "APrimalBuff.bFollowTarget" }; } + BitFieldValue bAddCharacterValues() { return { this, "APrimalBuff.bAddCharacterValues" }; } + BitFieldValue bOnlyAddCharacterValuesUnderwater() { return { this, "APrimalBuff.bOnlyAddCharacterValuesUnderwater" }; } + BitFieldValue bDisableIfCharacterUnderwater() { return { this, "APrimalBuff.bDisableIfCharacterUnderwater" }; } + BitFieldValue bUseInstigatorItem() { return { this, "APrimalBuff.bUseInstigatorItem" }; } + BitFieldValue bDestroyOnTargetStasis() { return { this, "APrimalBuff.bDestroyOnTargetStasis" }; } + BitFieldValue bAoETraceToTargets() { return { this, "APrimalBuff.bAoETraceToTargets" }; } + BitFieldValue bAOEOnlyApplyOtherBuffToWildDinos() { return { this, "APrimalBuff.bAOEOnlyApplyOtherBuffToWildDinos" }; } + BitFieldValue bAoEIgnoreDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEIgnoreDinosTargetingInstigator" }; } + BitFieldValue bAoEOnlyOnDinosTargetingInstigator() { return { this, "APrimalBuff.bAoEOnlyOnDinosTargetingInstigator" }; } + BitFieldValue bBuffForceNoTick() { return { this, "APrimalBuff.bBuffForceNoTick" }; } + BitFieldValue bBuffForceNoTickDedicated() { return { this, "APrimalBuff.bBuffForceNoTickDedicated" }; } + BitFieldValue bCustomDepthStencilIgnoreHealth() { return { this, "APrimalBuff.bCustomDepthStencilIgnoreHealth" }; } + BitFieldValue bUseActivateSoundFadeInDuration() { return { this, "APrimalBuff.bUseActivateSoundFadeInDuration" }; } + BitFieldValue bDinoIgnoreBuffPostprocessEffectWhenRidden() { return { this, "APrimalBuff.bDinoIgnoreBuffPostprocessEffectWhenRidden" }; } + BitFieldValue bPlayerIgnoreBuffPostprocessEffectWhenRidingDino() { return { this, "APrimalBuff.bPlayerIgnoreBuffPostprocessEffectWhenRidingDino" }; } + BitFieldValue bRemoteForcedFlee() { return { this, "APrimalBuff.bRemoteForcedFlee" }; } + BitFieldValue bOnlyActivateSoundForInstigator() { return { this, "APrimalBuff.bOnlyActivateSoundForInstigator" }; } + BitFieldValue bAOEBuffCarnosOnly() { return { this, "APrimalBuff.bAOEBuffCarnosOnly" }; } + BitFieldValue bModifyMaxSpeed() { return { this, "APrimalBuff.bModifyMaxSpeed" }; } + BitFieldValue bDisplayHUDProgressBar() { return { this, "APrimalBuff.bDisplayHUDProgressBar" }; } + BitFieldValue bForceUsePreventTargeting() { return { this, "APrimalBuff.bForceUsePreventTargeting" }; } + BitFieldValue bForceUsePreventTargetingTurret() { return { this, "APrimalBuff.bForceUsePreventTargetingTurret" }; } + BitFieldValue bBPOverrideWeaponBob() { return { this, "APrimalBuff.bBPOverrideWeaponBob" }; } + BitFieldValue bUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bUseBPModifyPlayerBoneModifiers" }; } + BitFieldValue bDediServerUseBPModifyPlayerBoneModifiers() { return { this, "APrimalBuff.bDediServerUseBPModifyPlayerBoneModifiers" }; } + BitFieldValue bUseBPNonDedicatedPlayerPostAnimUpdate() { return { this, "APrimalBuff.bUseBPNonDedicatedPlayerPostAnimUpdate" }; } + BitFieldValue bUseBPIsCharacterHardAttached() { return { this, "APrimalBuff.bUseBPIsCharacterHardAttached" }; } + BitFieldValue bDoCharacterDetachment() { return { this, "APrimalBuff.bDoCharacterDetachment" }; } + BitFieldValue bDoCharacterDetachmentIncludeRiding() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeRiding" }; } + BitFieldValue bDoCharacterDetachmentIncludeCarrying() { return { this, "APrimalBuff.bDoCharacterDetachmentIncludeCarrying" }; } + BitFieldValue bUseBPInitializedCharacterAnimScriptInstance() { return { this, "APrimalBuff.bUseBPInitializedCharacterAnimScriptInstance" }; } + BitFieldValue bUseBPCanBeCarried() { return { this, "APrimalBuff.bUseBPCanBeCarried" }; } + BitFieldValue bUsePostAdjustDamage() { return { this, "APrimalBuff.bUsePostAdjustDamage" }; } + BitFieldValue bAOEApplyOtherBuffOnPlayers() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnPlayers" }; } + BitFieldValue bAOEApplyOtherBuffOnDinos() { return { this, "APrimalBuff.bAOEApplyOtherBuffOnDinos" }; } + BitFieldValue bAOEApplyOtherBuffIgnoreSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffIgnoreSameTeam" }; } + BitFieldValue bAOEApplyOtherBuffRequireSameTeam() { return { this, "APrimalBuff.bAOEApplyOtherBuffRequireSameTeam" }; } + BitFieldValue bBuffDrawFloatingHUD() { return { this, "APrimalBuff.bBuffDrawFloatingHUD" }; } + BitFieldValue bAddResetsBuffTime() { return { this, "APrimalBuff.bAddResetsBuffTime" }; } + BitFieldValue bAoEBuffAllowIfAlreadyBuffed() { return { this, "APrimalBuff.bAoEBuffAllowIfAlreadyBuffed" }; } + BitFieldValue bNetResetBuffStart() { return { this, "APrimalBuff.bNetResetBuffStart" }; } + BitFieldValue bImmobilizeTarget() { return { this, "APrimalBuff.bImmobilizeTarget" }; } + BitFieldValue bForcePlayerProne() { return { this, "APrimalBuff.bForcePlayerProne" }; } + BitFieldValue bHideBuffFromHUD() { return { this, "APrimalBuff.bHideBuffFromHUD" }; } + BitFieldValue bHideTimerFromHUD() { return { this, "APrimalBuff.bHideTimerFromHUD" }; } + BitFieldValue bBPAddMultiUseEntries() { return { this, "APrimalBuff.bBPAddMultiUseEntries" }; } + BitFieldValue bIsBuffPersistent() { return { this, "APrimalBuff.bIsBuffPersistent" }; } + BitFieldValue bBPUseBumpedByPawn() { return { this, "APrimalBuff.bBPUseBumpedByPawn" }; } + BitFieldValue bBPUseBumpedPawn() { return { this, "APrimalBuff.bBPUseBumpedPawn" }; } + BitFieldValue bAllowBuffWhenInstigatorDead() { return { this, "APrimalBuff.bAllowBuffWhenInstigatorDead" }; } + BitFieldValue bNotifyDamage() { return { this, "APrimalBuff.bNotifyDamage" }; } + BitFieldValue bAllowBuffStasis() { return { this, "APrimalBuff.bAllowBuffStasis" }; } + BitFieldValue bApplyStatModifierToPlayers() { return { this, "APrimalBuff.bApplyStatModifierToPlayers" }; } + BitFieldValue bApplyStatModifierToDinos() { return { this, "APrimalBuff.bApplyStatModifierToDinos" }; } + BitFieldValue bPreventOnWildDino() { return { this, "APrimalBuff.bPreventOnWildDino" }; } + BitFieldValue bPreventOnDino() { return { this, "APrimalBuff.bPreventOnDino" }; } + BitFieldValue bPreventOnPlayer() { return { this, "APrimalBuff.bPreventOnPlayer" }; } + BitFieldValue bPreventOnBigDino() { return { this, "APrimalBuff.bPreventOnBigDino" }; } + BitFieldValue bPreventOnBossDino() { return { this, "APrimalBuff.bPreventOnBossDino" }; } + BitFieldValue bIsDisease() { return { this, "APrimalBuff.bIsDisease" }; } + BitFieldValue bUseBPPreventAddingOtherBuff() { return { this, "APrimalBuff.bUseBPPreventAddingOtherBuff" }; } + BitFieldValue bUseBPPreventRunning() { return { this, "APrimalBuff.bUseBPPreventRunning" }; } + BitFieldValue bAoEApplyDamageAllTargetables() { return { this, "APrimalBuff.bAoEApplyDamageAllTargetables" }; } + BitFieldValue bUseBPActivated() { return { this, "APrimalBuff.bUseBPActivated" }; } + BitFieldValue bUseBPPreventFlight() { return { this, "APrimalBuff.bUseBPPreventFlight" }; } + BitFieldValue bRequireController() { return { this, "APrimalBuff.bRequireController" }; } + BitFieldValue bDontPlayInstigatorActiveSoundOnDino() { return { this, "APrimalBuff.bDontPlayInstigatorActiveSoundOnDino" }; } + BitFieldValue bAddExtendBuffTime() { return { this, "APrimalBuff.bAddExtendBuffTime" }; } + BitFieldValue bUseTickingDeactivation() { return { this, "APrimalBuff.bUseTickingDeactivation" }; } + BitFieldValue bCheckPreventInput() { return { this, "APrimalBuff.bCheckPreventInput" }; } + BitFieldValue bBPDrawBuffStatusHUD() { return { this, "APrimalBuff.bBPDrawBuffStatusHUD" }; } + BitFieldValue bEnableStaticPathing() { return { this, "APrimalBuff.bEnableStaticPathing" }; } + BitFieldValue bHUDFormatTimerAsTimecode() { return { this, "APrimalBuff.bHUDFormatTimerAsTimecode" }; } + BitFieldValue bUseBPPreventThrowingItem() { return { this, "APrimalBuff.bUseBPPreventThrowingItem" }; } + BitFieldValue bPreventInputDoesOffset() { return { this, "APrimalBuff.bPreventInputDoesOffset" }; } + BitFieldValue bNotifyExperienceGained() { return { this, "APrimalBuff.bNotifyExperienceGained" }; } + BitFieldValue bOnlyTickWhenVisible() { return { this, "APrimalBuff.bOnlyTickWhenVisible" }; } + BitFieldValue bBPAdjustStatusValueModification() { return { this, "APrimalBuff.bBPAdjustStatusValueModification" }; } + BitFieldValue bWasDestroyed() { return { this, "APrimalBuff.bWasDestroyed" }; } + BitFieldValue bUseBPNotifyOtherBuffActivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffActivated" }; } + BitFieldValue bUseBPNotifyOtherBuffDeactivated() { return { this, "APrimalBuff.bUseBPNotifyOtherBuffDeactivated" }; } + BitFieldValue bUseBPPreventFirstPerson() { return { this, "APrimalBuff.bUseBPPreventFirstPerson" }; } + BitFieldValue bForceAddUnderwaterCharacterStatusValues() { return { this, "APrimalBuff.bForceAddUnderwaterCharacterStatusValues" }; } + + // Functions + + bool TemplateAllowActorSpawn(UWorld* World, FVector* AtLocation, FRotator* AtRotation, FActorSpawnParameters* SpawnParameters) { return NativeCall(this, "APrimalBuff.TemplateAllowActorSpawn", World, AtLocation, AtRotation, SpawnParameters); } + void Deactivate() { NativeCall(this, "APrimalBuff.Deactivate"); } + void NetDeactivate_Implementation() { NativeCall(this, "APrimalBuff.NetDeactivate_Implementation"); } + void BeginPlay() { NativeCall(this, "APrimalBuff.BeginPlay"); } + void GetLifetimeReplicatedProps(TArray* OutLifetimeProps) { NativeCall*>(this, "APrimalBuff.GetLifetimeReplicatedProps", OutLifetimeProps); } + void AddDamageStatusValueModifier(APrimalCharacter* addToCharacter, EPrimalCharacterStatusValue::Type ValueType, bool bSpeedToAddInSeconds, bool bContinueOnUnchangedValue, bool bResetExistingModifierDescriptionIndex, bool bSetValue, bool bSetAdditionalValue, float LimitExistingModifierDescriptionToMaxAmount, float damageMultiplierAmountToAdd, float speedToAdd, int StatusValueModifierDescriptionIndex, bool bUsePercentualDamage, bool bMakeUntameable, float percentualDamage, TSubclassOf ScaleValueByCharacterDamageType) { NativeCall>(this, "APrimalBuff.AddDamageStatusValueModifier", addToCharacter, ValueType, bSpeedToAddInSeconds, bContinueOnUnchangedValue, bResetExistingModifierDescriptionIndex, bSetValue, bSetAdditionalValue, LimitExistingModifierDescriptionToMaxAmount, damageMultiplierAmountToAdd, speedToAdd, StatusValueModifierDescriptionIndex, bUsePercentualDamage, bMakeUntameable, percentualDamage, ScaleValueByCharacterDamageType); } + void SetupForInstigator() { NativeCall(this, "APrimalBuff.SetupForInstigator"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalBuff.Tick", DeltaSeconds); } + void ProcessStaticPathing(bool triggerRunning) { NativeCall(this, "APrimalBuff.ProcessStaticPathing", triggerRunning); } + FVector* UpdateStaticPathingDestination(FVector* result, FVector locOverride, float randomOffsetMultiplier, bool useRandomNegativeXDir, bool orientRandOffsetByRotation, FRotator randOffsetByRotation, float GroundCheckSpreadOverride) { return NativeCall(this, "APrimalBuff.UpdateStaticPathingDestination", result, locOverride, randomOffsetMultiplier, useRandomNegativeXDir, orientRandOffsetByRotation, randOffsetByRotation, GroundCheckSpreadOverride); } + void EnableTickFunction() { NativeCall(this, "APrimalBuff.EnableTickFunction"); } + bool AOEBuffCanAffect(APrimalCharacter* forChar) { return NativeCall(this, "APrimalBuff.AOEBuffCanAffect", forChar); } + void InstigatorJumped() { NativeCall(this, "APrimalBuff.InstigatorJumped"); } + void Destroyed() { NativeCall(this, "APrimalBuff.Destroyed"); } + void NetResetBuffStart_Implementation() { NativeCall(this, "APrimalBuff.NetResetBuffStart_Implementation"); } + bool ResetBuffStart() { return NativeCall(this, "APrimalBuff.ResetBuffStart"); } + APrimalBuff* AddBuff(APrimalCharacter* ForCharacter, AActor* DamageCauser) { return NativeCall(this, "APrimalBuff.AddBuff", ForCharacter, DamageCauser); } + static APrimalBuff* StaticAddBuff(TSubclassOf BuffClass, APrimalCharacter* ForCharacter, UPrimalItem* AssociatedItem, AActor* DamageCauser, bool bForceOnClient) { return NativeCall, APrimalCharacter*, UPrimalItem*, AActor*, bool>(nullptr, "APrimalBuff.StaticAddBuff", BuffClass, ForCharacter, AssociatedItem, DamageCauser, bForceOnClient); } + bool ExcludePostProcessBlendableMaterial(UMaterialInterface* BlendableMaterialInterface) { return NativeCall(this, "APrimalBuff.ExcludePostProcessBlendableMaterial", BlendableMaterialInterface); } + bool PreventActorTargeting_Implementation(AActor* ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting_Implementation", ByActor); } + bool PreventRunning() { return NativeCall(this, "APrimalBuff.PreventRunning"); } + bool ExcludeAoEActor(AActor* ActorToConsider) { return NativeCall(this, "APrimalBuff.ExcludeAoEActor", ActorToConsider); } + bool HideBuffFromHUD_Implementation() { return NativeCall(this, "APrimalBuff.HideBuffFromHUD_Implementation"); } + void Stasis() { NativeCall(this, "APrimalBuff.Stasis"); } + void Unstasis() { NativeCall(this, "APrimalBuff.Unstasis"); } + bool ExtendBuffTime(float AmountOfAdditionalTime) { return NativeCall(this, "APrimalBuff.ExtendBuffTime", AmountOfAdditionalTime); } + int GetBuffType_Implementation() { return NativeCall(this, "APrimalBuff.GetBuffType_Implementation"); } + bool ReduceBuffTime(float AmountOfTimeToReduce) { return NativeCall(this, "APrimalBuff.ReduceBuffTime", AmountOfTimeToReduce); } + static UClass* StaticClass() { return NativeCall(nullptr, "APrimalBuff.StaticClass"); } + static void StaticRegisterNativesAPrimalBuff() { NativeCall(nullptr, "APrimalBuff.StaticRegisterNativesAPrimalBuff"); } + void BPDrawBuffStatusHUD(AShooterHUD* HUD, float XPos, float YPos, float ScaleMult) { NativeCall(this, "APrimalBuff.BPDrawBuffStatusHUD", HUD, XPos, YPos, ScaleMult); } + float BuffAdjustDamage(float Damage, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf TheDamgeType) { return NativeCall>(this, "APrimalBuff.BuffAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } + void BuffPostAdjustDamage(float Damage, FHitResult* HitInfo, AController* EventInstigator, AActor* DamageCauser, TSubclassOf TheDamgeType) { NativeCall>(this, "APrimalBuff.BuffPostAdjustDamage", Damage, HitInfo, EventInstigator, DamageCauser, TheDamgeType); } + void BuffTickClient(float DeltaTime) { NativeCall(this, "APrimalBuff.BuffTickClient", DeltaTime); } + void BuffTickServer(float DeltaTime) { NativeCall(this, "APrimalBuff.BuffTickServer", DeltaTime); } + void DrawBuffFloatingHUD(int BuffIndex, AShooterHUD* HUD, float CenterX, float CenterY, float DrawScale) { NativeCall(this, "APrimalBuff.DrawBuffFloatingHUD", BuffIndex, HUD, CenterX, CenterY, DrawScale); } + void NotifyDamage(float DamageAmount, TSubclassOf DamageClass, AController* EventInstigator, AActor* TheDamageCauser) { NativeCall, AController*, AActor*>(this, "APrimalBuff.NotifyDamage", DamageAmount, DamageClass, EventInstigator, TheDamageCauser); } + bool PreventActorTargeting(AActor* ByActor) { return NativeCall(this, "APrimalBuff.PreventActorTargeting", ByActor); } + void SetBuffCauser(AActor* CausedBy) { NativeCall(this, "APrimalBuff.SetBuffCauser", CausedBy); } +}; + +struct UPrimalEngramEntry : UObject +{ + int& RequiredCharacterLevelField() { return *GetNativePointerField(this, "UPrimalEngramEntry.RequiredCharacterLevel"); } + int& RequiredEngramPointsField() { return *GetNativePointerField(this, "UPrimalEngramEntry.RequiredEngramPoints"); } + TSubclassOf& BluePrintEntryField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.BluePrintEntry"); } + FString& ExtraEngramDescriptionField() { return *GetNativePointerField(this, "UPrimalEngramEntry.ExtraEngramDescription"); } + TArray& EngramRequirementSetsField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.EngramRequirementSets"); } + int& MyEngramIndexField() { return *GetNativePointerField(this, "UPrimalEngramEntry.MyEngramIndex"); } + TEnumAsByte& EngramGroupField() { return *GetNativePointerField*>(this, "UPrimalEngramEntry.EngramGroup"); } + + // Bit fields + + BitFieldValue bGiveBlueprintToPlayerInventory() { return { this, "UPrimalEngramEntry.bGiveBlueprintToPlayerInventory" }; } + BitFieldValue bCanBeManuallyUnlocked() { return { this, "UPrimalEngramEntry.bCanBeManuallyUnlocked" }; } + + // Functions + + UObject* GetObjectW() { return NativeCall(this, "UPrimalEngramEntry.GetObjectW"); } + FString* GetEntryString(FString* result) { return NativeCall(this, "UPrimalEngramEntry.GetEntryString", result); } + UTexture2D* GetEntryIcon(UObject* AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "UPrimalEngramEntry.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + bool MeetsEngramRequirements(AShooterPlayerState* aPlayerState, bool bOnlyCheckLevel, bool bDontCheckEngramPreRequirements) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramRequirements", aPlayerState, bOnlyCheckLevel, bDontCheckEngramPreRequirements); } + bool MeetsEngramChainRequirements(AShooterPlayerState* aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.MeetsEngramChainRequirements", aPlayerState); } + FString* GetEngramDescription(FString* result, AShooterPlayerState* aPlayerState) { return NativeCall(this, "UPrimalEngramEntry.GetEngramDescription", result, aPlayerState); } + FString* GetEngramName(FString* result) { return NativeCall(this, "UPrimalEngramEntry.GetEngramName", result); } + int GetRequiredEngramPoints() { return NativeCall(this, "UPrimalEngramEntry.GetRequiredEngramPoints"); } + int GetRequiredLevel() { return NativeCall(this, "UPrimalEngramEntry.GetRequiredLevel"); } + bool UseEngramRequirementSets() { return NativeCall(this, "UPrimalEngramEntry.UseEngramRequirementSets"); } + bool IsEngramClassHidden(TSubclassOf ForItemClass) { return NativeCall>(this, "UPrimalEngramEntry.IsEngramClassHidden", ForItemClass); } + void GetAllChainedPreReqs(AShooterPlayerState* aPlayerState, TArray>* TestedEntries) { NativeCall>*>(this, "UPrimalEngramEntry.GetAllChainedPreReqs", aPlayerState, TestedEntries); } + int GetChainRequiredEngramPoints(TArray>* TestedEntries) { return NativeCall>*>(this, "UPrimalEngramEntry.GetChainRequiredEngramPoints", TestedEntries); } + void ClearHiddenEngramRequirements() { NativeCall(this, "UPrimalEngramEntry.ClearHiddenEngramRequirements"); } +}; + +struct FDinoAncestorsEntry +{ + FString MaleName; + unsigned int MaleDinoID1; + unsigned int MaleDinoID2; + FString FemaleName; + unsigned int FemaleDinoID1; + unsigned int FemaleDinoID2; +}; + +struct FCraftingResourceRequirement +{ + float BaseResourceRequirement; + TSubclassOf ResourceItemType; + bool bCraftingRequireExactResourceType; +}; + +struct UKismetSystemLibrary +{ + // Functions + + static FDebugFloatHistory* AddFloatHistorySample(FDebugFloatHistory* result, float Value, FDebugFloatHistory* FloatHistory) { return NativeCall(nullptr, "UKismetSystemLibrary.AddFloatHistorySample", result, Value, FloatHistory); } + static bool BoxOverlapActors_NEW(UObject* WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.BoxOverlapActors_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool BoxOverlapComponents_NEW(UObject* WorldContextObject, FVector BoxPos, FVector BoxExtent, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.BoxOverlapComponents_NEW", WorldContextObject, BoxPos, BoxExtent, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool BoxTraceMulti(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMulti", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool BoxTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceMultiForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool BoxTraceSingle(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingle", WorldContextObject, Start, End, HalfSize, Orientation, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool BoxTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, FVector HalfSize, FRotator Orientation, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.BoxTraceSingleForObjects", WorldContextObject, Start, End, HalfSize, Orientation, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool CapsuleOverlapActors_NEW(UObject* WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.CapsuleOverlapActors_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool CapsuleOverlapComponents_NEW(UObject* WorldContextObject, FVector CapsulePos, float Radius, float HalfHeight, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.CapsuleOverlapComponents_NEW", WorldContextObject, CapsulePos, Radius, HalfHeight, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool CapsuleTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceMultiForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool CapsuleTraceMulti_NEW(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceMulti_NEW", WorldContextObject, Start, End, Radius, HalfHeight, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool CapsuleTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceSingleForObjects", WorldContextObject, Start, End, Radius, HalfHeight, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool CapsuleTraceSingle_NEW(UObject* WorldContextObject, FVector Start, FVector End, float Radius, float HalfHeight, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.CapsuleTraceSingle_NEW", WorldContextObject, Start, End, Radius, HalfHeight, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool ComponentOverlapActors_NEW(UPrimitiveComponent* Component, FTransform* ComponentTransform, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.ComponentOverlapActors_NEW", Component, ComponentTransform, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool ComponentOverlapComponents_NEW(UPrimitiveComponent* Component, FTransform* ComponentTransform, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.ComponentOverlapComponents_NEW", Component, ComponentTransform, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static char MakeLiteralByte(char Value) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralByte", Value); } + static void CreateCopyForUndoBuffer(UObject* ObjectToModify) { NativeCall(nullptr, "UKismetSystemLibrary.CreateCopyForUndoBuffer", ObjectToModify); } + static void Delay(UObject* WorldContextObject, float Duration, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UKismetSystemLibrary.Delay", WorldContextObject, Duration, LatentInfo); } + static bool DoesImplementInterface(UObject* TestObject, TSubclassOf Interface) { return NativeCall>(nullptr, "UKismetSystemLibrary.DoesImplementInterface", TestObject, Interface); } + static void DrawDebugArrow(UObject* WorldContextObject, FVector LineStart, FVector LineEnd, float ArrowSize, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugArrow", WorldContextObject, LineStart, LineEnd, ArrowSize, Color, LifeTime); } + static void DrawDebugBox(UObject* WorldContextObject, FVector Center, FVector Extent, FLinearColor Color, FRotator Rotation, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugBox", WorldContextObject, Center, Extent, Color, Rotation, LifeTime); } + static void DrawDebugCapsule(UObject* WorldContextObject, FVector Center, float HalfHeight, float Radius, FRotator Rotation, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugCapsule", WorldContextObject, Center, HalfHeight, Radius, Rotation, Color, LifeTime); } + static void DrawDebugCone(UObject* WorldContextObject, FVector Origin, FVector Direction, float Length, float AngleWidth, float AngleHeight, int NumSides, FLinearColor Color) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugCone", WorldContextObject, Origin, Direction, Length, AngleWidth, AngleHeight, NumSides, Color); } + static void DrawDebugConeInDegrees(UObject* WorldContextObject, FVector Origin, FVector Direction, float Length, float AngleWidth, float AngleHeight, int NumSides, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugConeInDegrees", WorldContextObject, Origin, Direction, Length, AngleWidth, AngleHeight, NumSides, Color, LifeTime); } + static void DrawDebugCoordinateSystem(UObject* WorldContextObject, FVector AxisLoc, FRotator AxisRot, float Scale, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugCoordinateSystem", WorldContextObject, AxisLoc, AxisRot, Scale, LifeTime); } + static void DrawDebugCylinder(UObject* WorldContextObject, FVector Start, FVector End, float Radius, int Segments, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugCylinder", WorldContextObject, Start, End, Radius, Segments, Color, LifeTime); } + static void DrawDebugFloatHistoryLocation(UObject* WorldContextObject, FDebugFloatHistory* FloatHistory, FVector DrawLocation, FVector2D DrawSize, FLinearColor DrawColor, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFloatHistoryLocation", WorldContextObject, FloatHistory, DrawLocation, DrawSize, DrawColor, LifeTime); } + static void DrawDebugFloatHistoryTransform(UObject* WorldContextObject, FDebugFloatHistory* FloatHistory, FTransform* DrawTransform, FVector2D DrawSize, FLinearColor DrawColor, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFloatHistoryTransform", WorldContextObject, FloatHistory, DrawTransform, DrawSize, DrawColor, LifeTime); } + static void DrawDebugFrustum(UObject* WorldContextObject, FTransform* FrustumTransform, FLinearColor FrustumColor, float Duration) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugFrustum", WorldContextObject, FrustumTransform, FrustumColor, Duration); } + static void DrawDebugLine(UObject* WorldContextObject, FVector LineStart, FVector LineEnd, FLinearColor Color, float LifeTime, float Thickness) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugLine", WorldContextObject, LineStart, LineEnd, Color, LifeTime, Thickness); } + static void DrawDebugLineTraceHitResult(UObject* WorldContextObject, FHitResult* Hit, FVector* TraceStart, FVector* TraceEnd, FLinearColor StartColor, FLinearColor HitColor, float LineThickness, float HitSize, bool bDrawHitNormal, FLinearColor HitNormalColor, float HitNormalLength, float Duration) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugLineTraceHitResult", WorldContextObject, Hit, TraceStart, TraceEnd, StartColor, HitColor, LineThickness, HitSize, bDrawHitNormal, HitNormalColor, HitNormalLength, Duration); } + static void DrawDebugPlane(UObject* WorldContextObject, FPlane* P, FVector Loc, float Size, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugPlane", WorldContextObject, P, Loc, Size, Color, LifeTime); } + static void DrawDebugPoint(UObject* WorldContextObject, FVector Position, float Size, FLinearColor PointColor, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugPoint", WorldContextObject, Position, Size, PointColor, LifeTime); } + static void DrawDebugSphere(UObject* WorldContextObject, FVector Center, float Radius, int Segments, FLinearColor Color, float LifeTime) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugSphere", WorldContextObject, Center, Radius, Segments, Color, LifeTime); } + static void DrawDebugString(UObject* WorldContextObject, FVector TextLocation, FString* Text, AActor* TestBaseActor, FLinearColor TextColor, float Duration) { NativeCall(nullptr, "UKismetSystemLibrary.DrawDebugString", WorldContextObject, TextLocation, Text, TestBaseActor, TextColor, Duration); } + static void ExecuteConsoleCommand(UObject* WorldContextObject, FString* Command, APlayerController* Player) { NativeCall(nullptr, "UKismetSystemLibrary.ExecuteConsoleCommand", WorldContextObject, Command, Player); } + static void FlushDebugStrings(UObject* WorldContextObject) { NativeCall(nullptr, "UKismetSystemLibrary.FlushDebugStrings", WorldContextObject); } + static void FlushPersistentDebugLines(UObject* WorldContextObject) { NativeCall(nullptr, "UKismetSystemLibrary.FlushPersistentDebugLines", WorldContextObject); } + static void Generic_SetStructurePropertyByName(UObject* OwnerObject, FName StructPropertyName, const void* SrcStructAddr) { NativeCall(nullptr, "UKismetSystemLibrary.Generic_SetStructurePropertyByName", OwnerObject, StructPropertyName, SrcStructAddr); } + static void GetActorBounds(AActor* Actor, FVector* Origin, FVector* BoxExtent) { NativeCall(nullptr, "UKismetSystemLibrary.GetActorBounds", Actor, Origin, BoxExtent); } + static void GetActorListFromComponentList(TArray* ComponentList, UClass* ActorClassFilter, TArray* OutActorList) { NativeCall*, UClass*, TArray*>(nullptr, "UKismetSystemLibrary.GetActorListFromComponentList", ComponentList, ActorClassFilter, OutActorList); } + static void GetComponentBounds(USceneComponent* Component, FVector* Origin, FVector* BoxExtent, float* SphereRadius) { NativeCall(nullptr, "UKismetSystemLibrary.GetComponentBounds", Component, Origin, BoxExtent, SphereRadius); } + static FString* GetDisplayName(FString* result, UObject* Object) { return NativeCall(nullptr, "UKismetSystemLibrary.GetDisplayName", result, Object); } + static FString* GetEngineVersion(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetEngineVersion", result); } + static FString* GetGameName(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetGameName", result); } + static long double GetGameTimeInSeconds(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.GetGameTimeInSeconds", WorldContextObject); } + static FString* GetPlatformUserName(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetPlatformUserName", result); } + static int GetRenderingDetailMode() { return NativeCall(nullptr, "UKismetSystemLibrary.GetRenderingDetailMode"); } + static int GetRenderingMaterialQualityLevel() { return NativeCall(nullptr, "UKismetSystemLibrary.GetRenderingMaterialQualityLevel"); } + static FString* GetUniqueDeviceId(FString* result) { return NativeCall(nullptr, "UKismetSystemLibrary.GetUniqueDeviceId", result); } + static bool IsClient(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsClient", WorldContextObject); } + static bool IsDedicatedServer(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsDedicatedServer", WorldContextObject); } + static bool IsListenServer(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsListenServer", WorldContextObject); } + static bool IsServer(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsServer", WorldContextObject); } + static bool IsStandalone(UObject* WorldContextObject) { return NativeCall(nullptr, "UKismetSystemLibrary.IsStandalone", WorldContextObject); } + static bool IsValid(UObject* Object) { return NativeCall(nullptr, "UKismetSystemLibrary.IsValid", Object); } + static void K2_ClearTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_ClearTimer", Object, FunctionName); } + static float K2_GetTimerElapsedTime(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerElapsedTime", Object, FunctionName); } + static float K2_GetTimerRemainingTime(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_GetTimerRemainingTime", Object, FunctionName); } + static bool K2_IsTimerActive(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerActive", Object, FunctionName); } + static bool K2_IsTimerPaused(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_IsTimerPaused", Object, FunctionName); } + static void K2_PauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_PauseTimer", Object, FunctionName); } + static void K2_SetTimer(UObject* Object, FString FunctionName, float Time, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimer", Object, FunctionName, Time, bLooping); } + static void K2_SetTimerDelegate(FBlueprintTimerDynamicDelegate Delegate, float Time, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerDelegate", Delegate, Time, bLooping); } + static void K2_SetTimerForNextTick(UObject* Object, FString FunctionName, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerForNextTick", Object, FunctionName, bLooping); } + static void K2_SetTimerForNextTickDelegate(FBlueprintTimerDynamicDelegate Delegate, bool bLooping) { NativeCall(nullptr, "UKismetSystemLibrary.K2_SetTimerForNextTickDelegate", Delegate, bLooping); } + static bool K2_TimerExists(UObject* Object, FString FunctionName) { return NativeCall(nullptr, "UKismetSystemLibrary.K2_TimerExists", Object, FunctionName); } + static void K2_UnPauseTimer(UObject* Object, FString FunctionName) { NativeCall(nullptr, "UKismetSystemLibrary.K2_UnPauseTimer", Object, FunctionName); } + static void LaunchURL(FString* URL) { NativeCall(nullptr, "UKismetSystemLibrary.LaunchURL", URL); } + static bool LineTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.LineTraceMultiForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool LineTraceMulti_NEW(UObject* WorldContextObject, FVector Start, FVector End, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.LineTraceMulti_NEW", WorldContextObject, Start, End, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool LineTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.LineTraceSingleForObjects", WorldContextObject, Start, End, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool LineTraceSingle_NEW(UObject* WorldContextObject, FVector Start, FVector End, ECollisionChannel TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.LineTraceSingle_NEW", WorldContextObject, Start, End, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static FName* MakeLiteralName(FName* result, FName Value) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralName", result, Value); } + void MakeLiteralString(TArray* Other) { NativeCall*>(this, "UKismetSystemLibrary.MakeLiteralString", Other); } + static FText* MakeLiteralText(FText* result, FText Value) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralText", result, Value); } + static void RetriggerableDelay(UObject* WorldContextObject, float Duration, FLatentActionInfo LatentInfo) { NativeCall(nullptr, "UKismetSystemLibrary.RetriggerableDelay", WorldContextObject, Duration, LatentInfo); } + static void SetBoolPropertyByName(UObject* Object, FName PropertyName, bool Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetBoolPropertyByName", Object, PropertyName, Value); } + static void SetBytePropertyByName(UObject* Object, FName PropertyName, char Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetBytePropertyByName", Object, PropertyName, Value); } + static void SetClassPropertyByName(UObject* Object, FName PropertyName, TSubclassOf Value) { NativeCall>(nullptr, "UKismetSystemLibrary.SetClassPropertyByName", Object, PropertyName, Value); } + static void SetDoublePropertyByName(UObject* Object, FName PropertyName, long double Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetDoublePropertyByName", Object, PropertyName, Value); } + static void SetFloatPropertyByName(UObject* Object, FName PropertyName, float Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetFloatPropertyByName", Object, PropertyName, Value); } + static void SetIntPropertyByName(UObject* Object, FName PropertyName, int Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetIntPropertyByName", Object, PropertyName, Value); } + static void SetLinearColorPropertyByName(UObject* Object, FName PropertyName, FLinearColor* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetLinearColorPropertyByName", Object, PropertyName, Value); } + static void SetNamePropertyByName(UObject* Object, FName PropertyName, FName* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetNamePropertyByName", Object, PropertyName, Value); } + static void SetObjectPropertyByName(UObject* Object, FName PropertyName, UObject* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetObjectPropertyByName", Object, PropertyName, Value); } + static void SetRotatorPropertyByName(UObject* Object, FName PropertyName, FRotator* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetRotatorPropertyByName", Object, PropertyName, Value); } + static void SetStringPropertyByName(UObject* Object, FName PropertyName, FString* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetStringPropertyByName", Object, PropertyName, Value); } + static void SetSupressViewportTransitionMessage(UObject* WorldContextObject, bool bState) { NativeCall(nullptr, "UKismetSystemLibrary.SetSupressViewportTransitionMessage", WorldContextObject, bState); } + static void SetTextPropertyByName(UObject* Object, FName PropertyName, FText* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetTextPropertyByName", Object, PropertyName, Value); } + static void SetTransformPropertyByName(UObject* Object, FName PropertyName, FTransform* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetTransformPropertyByName", Object, PropertyName, Value); } + static void SetVectorPropertyByName(UObject* Object, FName PropertyName, FVector* Value) { NativeCall(nullptr, "UKismetSystemLibrary.SetVectorPropertyByName", Object, PropertyName, Value); } + static void ShowAdBanner(bool bShowOnBottomOfScreen) { NativeCall(nullptr, "UKismetSystemLibrary.ShowAdBanner", bShowOnBottomOfScreen); } + static void ShowPlatformSpecificAchievementsScreen(APlayerController* SpecificPlayer) { NativeCall(nullptr, "UKismetSystemLibrary.ShowPlatformSpecificAchievementsScreen", SpecificPlayer); } + static void ShowPlatformSpecificLeaderboardScreen(FString* CategoryName) { NativeCall(nullptr, "UKismetSystemLibrary.ShowPlatformSpecificLeaderboardScreen", CategoryName); } + static bool SphereOverlapActorsSimple(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TEnumAsByte ObjectType, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapActorsSimple", WorldContextObject, SpherePos, SphereRadius, ObjectType, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool SphereOverlapActors_NEW(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TArray>* ObjectTypes, UClass* ActorClassFilter, TArray* ActorsToIgnore, TArray* OutActors) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapActors_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ActorClassFilter, ActorsToIgnore, OutActors); } + static bool SphereOverlapComponents_NEW(UObject* WorldContextObject, FVector SpherePos, float SphereRadius, TArray>* ObjectTypes, UClass* ComponentClassFilter, TArray* ActorsToIgnore, TArray* OutComponents) { return NativeCall>*, UClass*, TArray*, TArray*>(nullptr, "UKismetSystemLibrary.SphereOverlapComponents_NEW", WorldContextObject, SpherePos, SphereRadius, ObjectTypes, ComponentClassFilter, ActorsToIgnore, OutComponents); } + static bool SphereTraceMultiForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceMultiForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool SphereTraceMulti_NEW(UObject* WorldContextObject, FVector Start, FVector End, float Radius, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, TArray* OutHits, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, TArray*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceMulti_NEW", WorldContextObject, Start, End, Radius, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHits, bIgnoreSelf); } + static bool SphereTraceSingleForObjects(UObject* WorldContextObject, FVector Start, FVector End, float Radius, TArray>* ObjectTypes, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall>*, bool, TArray*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceSingleForObjects", WorldContextObject, Start, End, Radius, ObjectTypes, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static bool SphereTraceSingle_NEW(UObject* WorldContextObject, FVector Start, FVector End, float Radius, ETraceTypeQuery TraceChannel, bool bTraceComplex, TArray* ActorsToIgnore, EDrawDebugTrace::Type DrawDebugType, FHitResult* OutHit, bool bIgnoreSelf) { return NativeCall*, EDrawDebugTrace::Type, FHitResult*, bool>(nullptr, "UKismetSystemLibrary.SphereTraceSingle_NEW", WorldContextObject, Start, End, Radius, TraceChannel, bTraceComplex, ActorsToIgnore, DrawDebugType, OutHit, bIgnoreSelf); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UKismetSystemLibrary.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUKismetSystemLibrary() { NativeCall(nullptr, "UKismetSystemLibrary.StaticRegisterNativesUKismetSystemLibrary"); } + static EPrimalCharacterStatusValue::Type MakeLiteralInt(int InInteger) { return NativeCall(nullptr, "UKismetSystemLibrary.MakeLiteralInt", InInteger); } +}; + +struct FOverlapResult +{ + TWeakObjectPtr Actor; + TWeakObjectPtr Component; + int ItemIndex; + unsigned __int32 bBlockingHit : 1; + + // Functions + + AActor* GetActor() { return NativeCall(this, "FOverlapResult.GetActor"); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FOverlapResult.StaticStruct"); } +}; + +struct UVictoryCore +{ + static bool OverlappingActors(UWorld* theWorld, TArray* Overlaps, FVector Origin, float Radius, int CollisionGroups, AActor* InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall*, FVector, float, int, AActor*, FName, bool>(nullptr, "UVictoryCore.OverlappingActors", theWorld, Overlaps, Origin, Radius, CollisionGroups, InIgnoreActor, TraceName, bComplexOverlapTest); } + static FRotator* RLerp(FRotator* result, FRotator A, FRotator B, float Alpha, bool bShortestPath) { return NativeCall(nullptr, "UVictoryCore.RLerp", result, A, B, Alpha, bShortestPath); } + static int GetWeightedRandomIndex(TArray* pArray, float ForceRand) { return NativeCall*, float>(nullptr, "UVictoryCore.GetWeightedRandomIndex", pArray, ForceRand); } + static bool OverlappingActorsTrace(UWorld* theWorld, TArray* Overlaps, FVector Origin, float Radius, ECollisionChannel TraceChannel, AActor* InIgnoreActor, FName TraceName, bool bComplexOverlapTest) { return NativeCall*, FVector, float, ECollisionChannel, AActor*, FName, bool>(nullptr, "UVictoryCore.OverlappingActorsTrace", theWorld, Overlaps, Origin, Radius, TraceChannel, InIgnoreActor, TraceName, bComplexOverlapTest); } + static UPhysicalMaterial* TracePhysMaterial(UWorld* theWorld, FVector StartPos, FVector EndPos, AActor* IgnoreActor) { return NativeCall(nullptr, "UVictoryCore.TracePhysMaterial", theWorld, StartPos, EndPos, IgnoreActor); } + static float ClampRotAxis(float BaseAxis, float DesiredAxis, float MaxDiff) { return NativeCall(nullptr, "UVictoryCore.ClampRotAxis", BaseAxis, DesiredAxis, MaxDiff); } + static FVector* ClampLocation(FVector* result, FVector BaseLocation, FVector DesiredLocation, float MaxDiff, bool bTraceClampLocation, UWorld* TraceWorld, FVector* TraceFromLocation) { return NativeCall(nullptr, "UVictoryCore.ClampLocation", result, BaseLocation, DesiredLocation, MaxDiff, bTraceClampLocation, TraceWorld, TraceFromLocation); } + static int BPGetWeightedRandomIndex(TArray* pArray, float ForceRand) { return NativeCall*, float>(nullptr, "UVictoryCore.BPGetWeightedRandomIndex", pArray, ForceRand); } + static void MultiTraceProjectSphere(UObject* WorldContextObject, TArray* OutResults, FVector* Origin, ECollisionChannel TraceChannel, int HorizResolution, int VertResolution, float StartDistance, float EndDistance, float NorthConeSubtractAngle, float SouthConeSubtractAngle, int PctChanceToTrace, int MaxTraceCount, bool bDrawDebugLines, float DebugDrawDuration) { NativeCall*, FVector*, ECollisionChannel, int, int, float, float, float, float, int, int, bool, float>(nullptr, "UVictoryCore.MultiTraceProjectSphere", WorldContextObject, OutResults, Origin, TraceChannel, HorizResolution, VertResolution, StartDistance, EndDistance, NorthConeSubtractAngle, SouthConeSubtractAngle, PctChanceToTrace, MaxTraceCount, bDrawDebugLines, DebugDrawDuration); } + static FRotator* BPRotatorLerp(FRotator* result, FRotator* A, FRotator* B, const float* Alpha) { return NativeCall(nullptr, "UVictoryCore.BPRotatorLerp", result, A, B, Alpha); } + static bool BPFastTrace(UWorld* theWorld, FVector TraceEnd, FVector TraceStart, AActor* ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.BPFastTrace", theWorld, TraceEnd, TraceStart, ActorToIgnore); } + static bool VTraceIgnoreFoliage(UWorld* theWorld, FVector* Start, FVector* End, FHitResult* HitOut, AActor* ActorToIgnore, ECollisionChannel Channel, int CollisionGroups, bool bReturnPhysMaterial, bool bTraceComplex, FVector* BoxExtent, FName TraceTag, AActor* OtherActorToIgnore, TArray* OtherActorsToIgnore, FQuat* Rot, AActor* AnotherActorToIgnore, bool bIgnoreFoliage) { return NativeCall*, FQuat*, AActor*, bool>(nullptr, "UVictoryCore.VTraceIgnoreFoliage", theWorld, Start, End, HitOut, ActorToIgnore, Channel, CollisionGroups, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, OtherActorToIgnore, OtherActorsToIgnore, Rot, AnotherActorToIgnore, bIgnoreFoliage); } + static void SetSessionPrefix(FString* InPrefix) { NativeCall(nullptr, "UVictoryCore.SetSessionPrefix", InPrefix); } + static FColor* GetTeamColor(FColor* result, const int TargetingTeam) { return NativeCall(nullptr, "UVictoryCore.GetTeamColor", result, TargetingTeam); } + static FString* FormatAsTime(FString* result, int InTime, bool UseLeadingZero, bool bForceLeadingZeroHour, bool bShowSeconds) { return NativeCall(nullptr, "UVictoryCore.FormatAsTime", result, InTime, UseLeadingZero, bForceLeadingZeroHour, bShowSeconds); } + static bool CalculateInterceptPosition(FVector* StartPosition, FVector* StartVelocity, float ProjectileVelocity, FVector* TargetPosition, FVector* TargetVelocity, FVector* InterceptPosition) { return NativeCall(nullptr, "UVictoryCore.CalculateInterceptPosition", StartPosition, StartVelocity, ProjectileVelocity, TargetPosition, TargetVelocity, InterceptPosition); } + static int GetSecondsIntoDay() { return NativeCall(nullptr, "UVictoryCore.GetSecondsIntoDay"); } + static bool StaticCheckForCommand(FString CommandName) { return NativeCall(nullptr, "UVictoryCore.StaticCheckForCommand", CommandName); } + static bool GetGroundLocation(UWorld* forWorld, FVector* theGroundLoc, FVector* StartLoc, FVector* OffsetUp, FVector* OffsetDown) { return NativeCall(nullptr, "UVictoryCore.GetGroundLocation", forWorld, theGroundLoc, StartLoc, OffsetUp, OffsetDown); } + static void CallGlobalLevelEvent(UWorld* forWorld, FName EventName) { NativeCall(nullptr, "UVictoryCore.CallGlobalLevelEvent", forWorld, EventName); } + static FVector2D* BPProjectWorldToScreenPosition(FVector2D* result, FVector* WorldLocation, APlayerController* ThePC) { return NativeCall(nullptr, "UVictoryCore.BPProjectWorldToScreenPosition", result, WorldLocation, ThePC); } + static TArray* ServerOctreeOverlapActors(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, EServerOctreeGroup::Type, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActors", result, theWorld, AtLoc, Radius, OctreeType, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsBitMask(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, int, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsClass(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, EServerOctreeGroup::Type OctreeType, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, EServerOctreeGroup::Type, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClass", result, theWorld, AtLoc, Radius, OctreeType, ActorClass, bForceActorLocationDistanceCheck); } + static TArray* ServerOctreeOverlapActorsClassBitMask(TArray* result, UWorld* theWorld, FVector AtLoc, float Radius, int OctreeTypeBitMask, TSubclassOf ActorClass, bool bForceActorLocationDistanceCheck) { return NativeCall*, TArray*, UWorld*, FVector, float, int, TSubclassOf, bool>(nullptr, "UVictoryCore.ServerOctreeOverlapActorsClassBitMask", result, theWorld, AtLoc, Radius, OctreeTypeBitMask, ActorClass, bForceActorLocationDistanceCheck); } + static FRotator* BPRTransform(FRotator* result, FRotator* R, FRotator* RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransform", result, R, RBasis); } + static FRotator* BPRTransformInverse(FRotator* result, FRotator* R, FRotator* RBasis) { return NativeCall(nullptr, "UVictoryCore.BPRTransformInverse", result, R, RBasis); } + static bool FindWorldActors(UWorld* fWorld, TArray* fContainer, TSubclassOf fType, FName fTag) { return NativeCall*, TSubclassOf, FName>(nullptr, "UVictoryCore.FindWorldActors", fWorld, fContainer, fType, fTag); } + static TArray>* RemoveInvalidObjectsInContainer(TArray>* result, TArray> fContainer) { return NativeCall>*, TArray>*, TArray>>(nullptr, "UVictoryCore.RemoveInvalidObjectsInContainer", result, fContainer); } + static void FinishSpawning(AActor* Actor) { NativeCall(nullptr, "UVictoryCore.FinishSpawning", Actor); } + static int GetWeightedRandomIndexFromArray(TArray pArray, float ForceRand) { return NativeCall, float>(nullptr, "UVictoryCore.GetWeightedRandomIndexFromArray", pArray, ForceRand); } + static AActor* GetClosestActorArray(FVector ToPoint, TArray* ActorArray) { return NativeCall*>(nullptr, "UVictoryCore.GetClosestActorArray", ToPoint, ActorArray); } + static bool VTraceSingleBP(UWorld* theWorld, FHitResult* OutHit, FVector* Start, FVector* End, ECollisionChannel TraceChannel, int CollisionGroups, FName TraceTag, bool bTraceComplex, AActor* ActorToIgnore) { return NativeCall(nullptr, "UVictoryCore.VTraceSingleBP", theWorld, OutHit, Start, End, TraceChannel, CollisionGroups, TraceTag, bTraceComplex, ActorToIgnore); } + static bool VTraceMulti(UWorld* theWorld, TArray* OutHits, FVector* Start, FVector* End, AActor* InIgnoreActor, int CollisionGroups, float SphereRadius, FVector* BoxExtent, bool bReturnPhysMaterial, ECollisionChannel TraceChannel, bool bTraceComplex, FName TraceTag, bool bTraceChannelForceOverlap, bool bDoSort, AActor* AdditionalIgnoreActor, AActor* AnotherIgnoreActor, bool bJustDoSphereOverlapAtStartLoc, TArray* ExtraIgnoreActors) { return NativeCall*, FVector*, FVector*, AActor*, int, float, FVector*, bool, ECollisionChannel, bool, FName, bool, bool, AActor*, AActor*, bool, TArray*>(nullptr, "UVictoryCore.VTraceMulti", theWorld, OutHits, Start, End, InIgnoreActor, CollisionGroups, SphereRadius, BoxExtent, bReturnPhysMaterial, TraceChannel, bTraceComplex, TraceTag, bTraceChannelForceOverlap, bDoSort, AdditionalIgnoreActor, AnotherIgnoreActor, bJustDoSphereOverlapAtStartLoc, ExtraIgnoreActors); } + static bool IsGamePadConnected() { return NativeCall(nullptr, "UVictoryCore.IsGamePadConnected"); } + static int IsChildOfClasses(TSubclassOf childClass, TArray>* ParentClassesArray) { return NativeCall, TArray>*>(nullptr, "UVictoryCore.IsChildOfClasses", childClass, ParentClassesArray); } + static FString* GetLastMapPlayed(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetLastMapPlayed", result); } + static void SetLastMapPlayed(FString* NewLastMapPlayed) { NativeCall(nullptr, "UVictoryCore.SetLastMapPlayed", NewLastMapPlayed); } + static void SetLastHostedMapPlayed(FString* NewLastHostedMapPlayed) { NativeCall(nullptr, "UVictoryCore.SetLastHostedMapPlayed", NewLastHostedMapPlayed); } + static bool OwnsScorchedEarth() { return NativeCall(nullptr, "UVictoryCore.OwnsScorchedEarth"); } + static bool OwnsDLC(FString DLCName) { return NativeCall(nullptr, "UVictoryCore.OwnsDLC", DLCName); } + static bool OwnsSteamAppID(int AppID) { return NativeCall(nullptr, "UVictoryCore.OwnsSteamAppID", AppID); } + static void OpenStorePageForDLC(FString DLCName) { NativeCall(nullptr, "UVictoryCore.OpenStorePageForDLC", DLCName); } + static FVector* LeadTargetPosition(FVector* result, FVector* ProjLocation, float ProjSpeed, FVector* TargetLocation, FVector* TargetVelocity) { return NativeCall(nullptr, "UVictoryCore.LeadTargetPosition", result, ProjLocation, ProjSpeed, TargetLocation, TargetVelocity); } + static void AddToActorList(UWorld* ForWorld, int ActorListNum, AActor* ActorRef) { NativeCall(nullptr, "UVictoryCore.AddToActorList", ForWorld, ActorListNum, ActorRef); } + static bool IsWorkshopIDSubscribed(FString* WorkshopID) { return NativeCall(nullptr, "UVictoryCore.IsWorkshopIDSubscribed", WorkshopID); } + static FTransform* InverseTransform(FTransform* result, FTransform* TransformIn) { return NativeCall(nullptr, "UVictoryCore.InverseTransform", result, TransformIn); } + static UClass* BPLoadClass(FString* PathName) { return NativeCall(nullptr, "UVictoryCore.BPLoadClass", PathName); } + static bool VTraceAgainstActorExpensive(UWorld* theWorld, FVector* Start, FVector* End, FHitResult* HitOut, AActor* ActorToTraceAgainst, ECollisionChannel Channel, int CollisionGroups, float SphereRadius, bool bReturnPhysMaterial, bool bTraceComplex, FVector* BoxExtent, FName TraceTag, bool bSort) { return NativeCall(nullptr, "UVictoryCore.VTraceAgainstActorExpensive", theWorld, Start, End, HitOut, ActorToTraceAgainst, Channel, CollisionGroups, SphereRadius, bReturnPhysMaterial, bTraceComplex, BoxExtent, TraceTag, bSort); } + static FString* GetClassString(FString* result, UClass* Class) { return NativeCall(nullptr, "UVictoryCore.GetClassString", result, Class); } + static FString* GetClassPathName(FString* result, UObject* ForObject) { return NativeCall(nullptr, "UVictoryCore.GetClassPathName", result, ForObject); } + static FString* GetTotalCoversionIdAsString(FString* result) { return NativeCall(nullptr, "UVictoryCore.GetTotalCoversionIdAsString", result); } + static AActor* SpawnActorInWorld(UWorld* ForWorld, TSubclassOf AnActorClass, FVector AtLocation, FRotator AtRotation, USceneComponent* attachToComponent, int dataIndex, FName attachSocketName, AActor* OwnerActor, APawn* InstigatorPawn) { return NativeCall, FVector, FRotator, USceneComponent*, int, FName, AActor*, APawn*>(nullptr, "UVictoryCore.SpawnActorInWorld", ForWorld, AnActorClass, AtLocation, AtRotation, attachToComponent, dataIndex, attachSocketName, OwnerActor, InstigatorPawn); } + static bool GetOverlappedHarvestActors(UWorld* ForWorld, FVector* AtLoc, float AtRadius, TArray* OutHarvestActors, TArray* OutHarvestComponents, TArray* OutHarvestLocations, TArray* OutHitBodyIndices) { return NativeCall*, TArray*, TArray*, TArray*>(nullptr, "UVictoryCore.GetOverlappedHarvestActors", ForWorld, AtLoc, AtRadius, OutHarvestActors, OutHarvestComponents, OutHarvestLocations, OutHitBodyIndices); } + static FName* GetHitBoneNameFromDamageEvent(FName* result, APrimalCharacter* Character, AController* HitInstigator, FDamageEvent* DamageEvent, bool bIsPointDamage, FHitResult* PointHitResult, FName MatchCollisionPresetName) { return NativeCall(nullptr, "UVictoryCore.GetHitBoneNameFromDamageEvent", result, Character, HitInstigator, DamageEvent, bIsPointDamage, PointHitResult, MatchCollisionPresetName); } + static FHitResult* MakeHitResult(FHitResult* result, FVector* Location, FVector* Normal, UPhysicalMaterial* PhysMat, AActor* HitActor, UPrimitiveComponent* HitComponent, FName HitBoneName, int HitItem, bool bBlockingHit) { return NativeCall(nullptr, "UVictoryCore.MakeHitResult", result, Location, Normal, PhysMat, HitActor, HitComponent, HitBoneName, HitItem, bBlockingHit); } + static float GetAngleBetweenVectors(FVector* VectorA, FVector* VectorB, FVector* AroundAxis) { return NativeCall(nullptr, "UVictoryCore.GetAngleBetweenVectors", VectorA, VectorB, AroundAxis); } + static bool AreRotatorsNearlyEqual(FRotator* RotatorA, FRotator* RotatorB, float WithinError) { return NativeCall(nullptr, "UVictoryCore.AreRotatorsNearlyEqual", RotatorA, RotatorB, WithinError); } + static void SetBoolArrayElemTrue(TArray* TheArray, int TheIndex) { NativeCall*, int>(nullptr, "UVictoryCore.SetBoolArrayElemTrue", TheArray, TheIndex); } + static void SetBoolArrayElemFalse(TArray* TheArray, int TheIndex) { NativeCall*, int>(nullptr, "UVictoryCore.SetBoolArrayElemFalse", TheArray, TheIndex); } + static void GetIslandCustomDatas(AActor* SomeIslandActor, int* IslandID, TArray* IslandCustomDatas1, TArray* IslandCustomDatas2) { NativeCall*, TArray* >(nullptr, "UVictoryCore.GetIslandCustomDatas", SomeIslandActor, IslandID, IslandCustomDatas1, IslandCustomDatas2); } +}; + +struct UDamageType : UObject +{ + float& ImpulseMinimumZPercentField() { return *GetNativePointerField(this, "UDamageType.ImpulseMinimumZPercent"); } + float& DestructibleImpulseScaleField() { return *GetNativePointerField(this, "UDamageType.DestructibleImpulseScale"); } + float& ImpulseRagdollScaleField() { return *GetNativePointerField(this, "UDamageType.ImpulseRagdollScale"); } + float& DefaultImpulseField() { return *GetNativePointerField(this, "UDamageType.DefaultImpulse"); } + float& PointDamageArmorEffectivenessField() { return *GetNativePointerField(this, "UDamageType.PointDamageArmorEffectiveness"); } + float& GeneralDamageArmorEffectivenessField() { return *GetNativePointerField(this, "UDamageType.GeneralDamageArmorEffectiveness"); } + float& ArmorDurabilityDegradationMultiplierField() { return *GetNativePointerField(this, "UDamageType.ArmorDurabilityDegradationMultiplier"); } + float& RadialPartiallyObstructedDamagePercentField() { return *GetNativePointerField(this, "UDamageType.RadialPartiallyObstructedDamagePercent"); } + + // Bit fields + BitFieldValue bIsPhysicalDamage() { return { this, "UDamageType.bIsPhysicalDamage" }; } + BitFieldValue bAllowPerBoneDamageAdjustment() { return { this, "UDamageType.bAllowPerBoneDamageAdjustment" }; } + BitFieldValue bCausedByWorld() { return { this, "UDamageType.bCausedByWorld" }; } + BitFieldValue bScaleMomentumByMass() { return { this, "UDamageType.bScaleMomentumByMass" }; } + BitFieldValue bIsPassiveDamage() { return { this, "UDamageType.bIsPassiveDamage" }; } + BitFieldValue bRadialDamageVelChange() { return { this, "UDamageType.bRadialDamageVelChange" }; } + BitFieldValue bImpulseAffectsLivePawns() { return { this, "UDamageType.bImpulseAffectsLivePawns" }; } + + // Functions + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UDamageType.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesUDamageType() { NativeCall(nullptr, "UDamageType.StaticRegisterNativesUDamageType"); } +}; + +struct FDinoAttackInfo +{ + FName& AttackNameField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackName"); } + float& AttackWeightField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackWeight"); } + float& AttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRange"); } + float& MinAttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.MinAttackRange"); } + float& ActivateAttackRangeField() { return *GetNativePointerField(this, "FDinoAttackInfo.ActivateAttackRange"); } + float& AttackIntervalField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackInterval"); } + TArray& ChildStateIndexesField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.ChildStateIndexes"); } + float& AttackWithJumpChanceField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackWithJumpChance"); } + long double& LastAttackTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.LastAttackTime"); } + long double& RiderLastAttackTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.RiderLastAttackTime"); } + float& AttackSelectionExpirationTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackSelectionExpirationTime"); } + long double& AttackSelectionTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackSelectionTime"); } + float& AttackRotationRangeDegreesField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationRangeDegrees"); } + float& AttackRotationGroundSpeedMultiplierField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationGroundSpeedMultiplier"); } + FRotator& AttackRotationRateField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRotationRate"); } + TArray& MeleeSwingSocketsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.MeleeSwingSockets"); } + FName& RangedSocketField() { return *GetNativePointerField(this, "FDinoAttackInfo.RangedSocket"); } + int& MeleeDamageAmountField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeDamageAmount"); } + float& MeleeDamageImpulseField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeDamageImpulse"); } + float& MeleeSwingRadiusField() { return *GetNativePointerField(this, "FDinoAttackInfo.MeleeSwingRadius"); } + TSubclassOf& MeleeDamageTypeField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.MeleeDamageType"); } + float& AttackOffsetField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackOffset"); } + float& StaminaCostField() { return *GetNativePointerField(this, "FDinoAttackInfo.StaminaCost"); } + float& RiderAttackIntervalField() { return *GetNativePointerField(this, "FDinoAttackInfo.RiderAttackInterval"); } + float& DotProductCheckMinField() { return *GetNativePointerField(this, "FDinoAttackInfo.DotProductCheckMin"); } + float& DotProductCheckMaxField() { return *GetNativePointerField(this, "FDinoAttackInfo.DotProductCheckMax"); } + TArray AttackAnimationsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimations"); } + TArray& AttackAnimationWeightsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimationWeights"); } + TArray& AttackAnimationsTimeFromEndToConsiderFinishedField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.AttackAnimationsTimeFromEndToConsiderFinished"); } + float& AttackRunningSpeedModifierField() { return *GetNativePointerField(this, "FDinoAttackInfo.AttackRunningSpeedModifier"); } + float& SwimmingAttackRunningSpeedModifierField() { return *GetNativePointerField(this, "FDinoAttackInfo.SwimmingAttackRunningSpeedModifier"); } + float& SetAttackTargetTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.SetAttackTargetTime"); } + TArray& LastSocketPositionsField() { return *GetNativePointerField*>(this, "FDinoAttackInfo.LastSocketPositions"); } + long double& LastProjectileSpawnTimeField() { return *GetNativePointerField(this, "FDinoAttackInfo.LastProjectileSpawnTime"); } + + // Functions + + FDinoAttackInfo* operator=(FDinoAttackInfo* __that) { return NativeCall(this, "FDinoAttackInfo.operator=", __that); } + static UScriptStruct* StaticStruct() { return NativeCall(nullptr, "FDinoAttackInfo.StaticStruct"); } +}; + +struct UPrimalSupplyCrateItemSet; + +struct FSupplyCrateItemEntry +{ + FString ItemEntryName; + float EntryWeight; + TArray> Items; + TArray ItemClassStrings; + TArray ItemsWeights; + TArray ItemsMinQuantities; + TArray ItemsMaxQuantities; + int GiveRequiresMinimumCharacterLevel; + float GiveExtraItemQuantityPercentByOwnerCharacterLevel; + float MinQuantity; + float MaxQuantity; + float QuantityPower; + float MinQuality; + float MaxQuality; + float QualityPower; + unsigned __int32 bForceBlueprint ; + float ChanceToBeBlueprintOverride; + float ChanceToActuallyGiveItem; + float RequiresMinQuality; + bool bActualItemRandomWithoutReplacement; +}; + +struct FSupplyCrateItemSet +{ + FString SetName; + TArray ItemEntries; + float MinNumItems; + float MaxNumItems; + float NumItemsPower; + float SetWeight; + bool bItemsRandomWithoutReplacement; + TSubclassOf ItemSetOverride; +}; + +struct UPrimalSupplyCrateItemSet : UObject +{ + FSupplyCrateItemSet& ItemSetField() { return *GetNativePointerField(this, "UPrimalSupplyCrateItemSet.ItemSet"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalSupplyCrateItemSet.GetPrivateStaticClass", Package); } + }; + +struct UPrimalSupplyCrateItemSets : UObject +{ + TArray& ItemSetsField() { return *GetNativePointerField*>(this, "UPrimalSupplyCrateItemSets.ItemSets"); } + static UClass* GetPrivateStaticClass(const wchar_t* Package) { return NativeCall(nullptr, "UPrimalSupplyCrateItemSets.GetPrivateStaticClass", Package); } +}; \ No newline at end of file diff --git a/version/Core/Public/API/Atlas/PrimalStructure.h b/version/Core/Public/API/Atlas/PrimalStructure.h new file mode 100644 index 00000000..d758072e --- /dev/null +++ b/version/Core/Public/API/Atlas/PrimalStructure.h @@ -0,0 +1,1848 @@ +#pragma once + +struct APrimalTargetableActor : AActor +{ + float& LowHealthPercentageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LowHealthPercentage"); } + TSubclassOf& DestructionActorTemplateField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.DestructionActorTemplate"); } + float& LifeSpanAfterDeathField() { return *GetNativePointerField(this, "APrimalTargetableActor.LifeSpanAfterDeath"); } + USoundCue * DeathSoundField() { return *GetNativePointerField(this, "APrimalTargetableActor.DeathSound"); } + float& PassiveDamageHealthReplicationPercentIntervalField() { return *GetNativePointerField(this, "APrimalTargetableActor.PassiveDamageHealthReplicationPercentInterval"); } + float& PassiveDamageHealthReplicationPercentIntervalMaxField() { return *GetNativePointerField(this, "APrimalTargetableActor.PassiveDamageHealthReplicationPercentIntervalMax"); } + float& DamageNotifyTeamAggroMultiplierField() { return *GetNativePointerField(this, "APrimalTargetableActor.DamageNotifyTeamAggroMultiplier"); } + float& DamageNotifyTeamAggroRangeField() { return *GetNativePointerField(this, "APrimalTargetableActor.DamageNotifyTeamAggroRange"); } + float& DamageNotifyTeamAggroRangeFalloffField() { return *GetNativePointerField(this, "APrimalTargetableActor.DamageNotifyTeamAggroRangeFalloff"); } + FVector& NewDestructibleMeshLocationOffsetField() { return *GetNativePointerField(this, "APrimalTargetableActor.NewDestructibleMeshLocationOffset"); } + FVector& NewDestructibleMeshScaleOverrideField() { return *GetNativePointerField(this, "APrimalTargetableActor.NewDestructibleMeshScaleOverride"); } + FRotator& NewDestructibleMeshRotationOffsetField() { return *GetNativePointerField(this, "APrimalTargetableActor.NewDestructibleMeshRotationOffset"); } + FString& DescriptiveNameField() { return *GetNativePointerField(this, "APrimalTargetableActor.DescriptiveName"); } + TSubclassOf& DestroyedMeshActorClassField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.DestroyedMeshActorClass"); } + bool& bPreventDestructionMeshField() { return *GetNativePointerField(this, "APrimalTargetableActor.bPreventDestructionMesh"); } + bool& bUseSimpleFadingDestructionMeshField() { return *GetNativePointerField(this, "APrimalTargetableActor.bUseSimpleFadingDestructionMesh"); } + float& ReplicatedHealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.ReplicatedHealth"); } + float& HealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.Health"); } + float& MaxHealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.MaxHealth"); } + float& NewDestructibleMeshDeathImpulseScaleField() { return *GetNativePointerField(this, "APrimalTargetableActor.NewDestructibleMeshDeathImpulseScale"); } + float& NewMinDestructibleDeathImpulseField() { return *GetNativePointerField(this, "APrimalTargetableActor.NewMinDestructibleDeathImpulse"); } + float& DestructibleImpulseReplacementForZeroDeathImpulseField() { return *GetNativePointerField(this, "APrimalTargetableActor.DestructibleImpulseReplacementForZeroDeathImpulse"); } + float& DestructibleMeshImpulseZOffsetField() { return *GetNativePointerField(this, "APrimalTargetableActor.DestructibleMeshImpulseZOffset"); } + float& LastReplicatedHealthValueField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastReplicatedHealthValue"); } + TSubclassOf& StructureSettingsClassField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.StructureSettingsClass"); } + TSubclassOf& ShipStructureSettingsClassOverrideField() { return *GetNativePointerField*>(this, "APrimalTargetableActor.ShipStructureSettingsClassOverride"); } + UPrimalStructureSettings * MyStructureSettingsCDOField() { return *GetNativePointerField(this, "APrimalTargetableActor.MyStructureSettingsCDO"); } + float& LastHealthBeforeTakeDamageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastHealthBeforeTakeDamage"); } + long double& NextAllowRepairTimeField() { return *GetNativePointerField(this, "APrimalTargetableActor.NextAllowRepairTime"); } + float& BaseTargetingDesirabilityField() { return *GetNativePointerField(this, "APrimalTargetableActor.BaseTargetingDesirability"); } + float& LastPreBlueprintAdjustmentActualDamageField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastPreBlueprintAdjustmentActualDamage"); } + float& LastReplicatedHealthField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastReplicatedHealth"); } + long double& LastTookDamageTimeField() { return *GetNativePointerField(this, "APrimalTargetableActor.LastTookDamageTime"); } + + // Bit fields + + BitFieldValue bDestructionActorTemplateServerOnly() { return { this, "APrimalTargetableActor.bDestructionActorTemplateServerOnly" }; } + BitFieldValue bDestroyedMeshUseSkeletalMeshComponent() { return { this, "APrimalTargetableActor.bDestroyedMeshUseSkeletalMeshComponent" }; } + BitFieldValue bPreventZeroDamageInstigatorSelfDamage() { return { this, "APrimalTargetableActor.bPreventZeroDamageInstigatorSelfDamage" }; } + BitFieldValue bWasDamaged() { return { this, "APrimalTargetableActor.bWasDamaged" }; } + BitFieldValue bIsDead() { return { this, "APrimalTargetableActor.bIsDead" }; } + BitFieldValue bDamageNotifyTeamAggroAI() { return { this, "APrimalTargetableActor.bDamageNotifyTeamAggroAI" }; } + BitFieldValue bSetWithinPreventionVolume() { return { this, "APrimalTargetableActor.bSetWithinPreventionVolume" }; } + BitFieldValue bWithinPreventionVolume() { return { this, "APrimalTargetableActor.bWithinPreventionVolume" }; } + BitFieldValue bAllowDamageByFriendlyDinos() { return { this, "APrimalTargetableActor.bAllowDamageByFriendlyDinos" }; } + BitFieldValue bUseBPAdjustDamage() { return { this, "APrimalTargetableActor.bUseBPAdjustDamage" }; } + BitFieldValue bForceZeroDamageProcessing() { return { this, "APrimalTargetableActor.bForceZeroDamageProcessing" }; } + BitFieldValue bForceFloatingDamageNumbers() { return { this, "APrimalTargetableActor.bForceFloatingDamageNumbers" }; } + BitFieldValue bDoAllowRadialDamageWithoutVisiblityTrace() { return { this, "APrimalTargetableActor.bDoAllowRadialDamageWithoutVisiblityTrace" }; } + BitFieldValue bIgnoreDestructionEffects() { return { this, "APrimalTargetableActor.bIgnoreDestructionEffects" }; } + BitFieldValue bIgnoreDamageRepairCooldown() { return { this, "APrimalTargetableActor.bIgnoreDamageRepairCooldown" }; } + BitFieldValue bUseHarvestingComponent() { return { this, "APrimalTargetableActor.bUseHarvestingComponent" }; } + BitFieldValue bPreventHUD() { return { this, "APrimalTargetableActor.bPreventHUD" }; } + BitFieldValue bDrawHealthBar() { return { this, "APrimalTargetableActor.bDrawHealthBar" }; } + BitFieldValue bUseBPOverrideHealthBarHealthPercent() { return { this, "APrimalTargetableActor.bUseBPOverrideHealthBarHealthPercent" }; } + BitFieldValue bBPOverrideGetOwningDino() { return { this, "APrimalTargetableActor.bBPOverrideGetOwningDino" }; } + BitFieldValue bBPOverrideGetLocation() { return { this, "APrimalTargetableActor.bBPOverrideGetLocation" }; } + BitFieldValue bDestructibleMeshImpulseUseBoundsCenter() { return { this, "APrimalTargetableActor.bDestructibleMeshImpulseUseBoundsCenter" }; } + BitFieldValue bBlueprintDrawHUD() { return { this, "APrimalTargetableActor.bBlueprintDrawHUD" }; } + + // Functions + + UObject * GetUObjectInterfaceTargetableInterface() { return NativeCall(this, "APrimalTargetableActor.GetUObjectInterfaceTargetableInterface"); } + void AdjustDamage(float * Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.AdjustDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool AllowRadialDamageWithoutVisiblityTrace(FHitResult * Hit) { return NativeCall(this, "APrimalTargetableActor.AllowRadialDamageWithoutVisiblityTrace", Hit); } + void BeginPlay() { NativeCall(this, "APrimalTargetableActor.BeginPlay"); } + void Destroyed() { NativeCall(this, "APrimalTargetableActor.Destroyed"); } + bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalTargetableActor.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalTargetableActor.DrawHUD", HUD); } + void FellOutOfWorld(UDamageType * dmgType) { NativeCall(this, "APrimalTargetableActor.FellOutOfWorld", dmgType); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalTargetableActor.GetDescriptiveName", result); } + float GetHealth() { return NativeCall(this, "APrimalTargetableActor.GetHealth"); } + float GetHealthPercentage() { return NativeCall(this, "APrimalTargetableActor.GetHealthPercentage"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalTargetableActor.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetMaxHealth() { return NativeCall(this, "APrimalTargetableActor.GetMaxHealth"); } + float GetStructureRepairCooldownTime() { return NativeCall(this, "APrimalTargetableActor.GetStructureRepairCooldownTime"); } + float GetTargetingDesirability(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalTargetableActor.GetTargetingDesirability", Attacker); } + bool IsAlive() { return NativeCall(this, "APrimalTargetableActor.IsAlive"); } + bool IsDead() { return NativeCall(this, "APrimalTargetableActor.IsDead"); } + bool IsInvincible() { return NativeCall(this, "APrimalTargetableActor.IsInvincible"); } + bool IsOfTribe(int ID) { return NativeCall(this, "APrimalTargetableActor.IsOfTribe", ID); } + bool IsTargetableDead() { return NativeCall(this, "APrimalTargetableActor.IsTargetableDead"); } + bool NetExecCommand(FName CommandName, FNetExecParams * ExecParams) { return NativeCall(this, "APrimalTargetableActor.NetExecCommand", CommandName, ExecParams); } + void NetUpdatedHealth_Implementation(int NewHealth) { NativeCall(this, "APrimalTargetableActor.NetUpdatedHealth_Implementation", NewHealth); } + void OnRep_ReplicatedHealth() { NativeCall(this, "APrimalTargetableActor.OnRep_ReplicatedHealth"); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingGeneric_Implementation(float KillingDamage, FPointDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingGeneric_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayDyingRadial_Implementation(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingRadial_Implementation", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffect(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath) { NativeCall(this, "APrimalTargetableActor.PlayHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath); } + void PlayHitEffectPoint_Implementation(float DamageTaken, FPointDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectPoint_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial_Implementation(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectRadial_Implementation", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PostInitializeComponents() { NativeCall(this, "APrimalTargetableActor.PostInitializeComponents"); } + float SetHealth(float newHealth) { return NativeCall(this, "APrimalTargetableActor.SetHealth", newHealth); } + void SetMaxHealth(float newMaxHealth) { NativeCall(this, "APrimalTargetableActor.SetMaxHealth", newMaxHealth); } + void Suicide() { NativeCall(this, "APrimalTargetableActor.Suicide"); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalTargetableActor.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + void UpdatedHealth(bool bDoReplication) { NativeCall(this, "APrimalTargetableActor.UpdatedHealth", bDoReplication); } + long double BPGetLastDamagedTime() { return NativeCall(this, "APrimalTargetableActor.BPGetLastDamagedTime"); } + APrimalDinoCharacter * BPGetOwningDino() { return NativeCall(this, "APrimalTargetableActor.BPGetOwningDino"); } + void BPHitEffect(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath, UPrimitiveComponent * HitComponent, FVector DamageLoc, FRotator HitNormal) { NativeCall(this, "APrimalTargetableActor.BPHitEffect", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, HitComponent, DamageLoc, HitNormal); } + FVector * BPOverrideGetLocation(FVector * result) { return NativeCall(this, "APrimalTargetableActor.BPOverrideGetLocation", result); } + float BPOverrideHealthBarHealthPercent() { return NativeCall(this, "APrimalTargetableActor.BPOverrideHealthBarHealthPercent"); } + bool BPShouldShowHealthBar() { return NativeCall(this, "APrimalTargetableActor.BPShouldShowHealthBar"); } + void BPSpawnedDestroyedMeshActor(AActor * DestroyedMeshActor) { NativeCall(this, "APrimalTargetableActor.BPSpawnedDestroyedMeshActor", DestroyedMeshActor); } + bool BPSupressImpactEffects(float DamageTaken, FDamageEvent * DamageEvent, APawn * PawnInstigator, AActor * DamageCauser, bool bIsLocalPath, UPrimitiveComponent * HitComponent) { return NativeCall(this, "APrimalTargetableActor.BPSupressImpactEffects", DamageTaken, DamageEvent, PawnInstigator, DamageCauser, bIsLocalPath, HitComponent); } + void BlueprintDrawHUD(AShooterHUD * HUD, float CenterX, float CenterY) { NativeCall(this, "APrimalTargetableActor.BlueprintDrawHUD", HUD, CenterX, CenterY); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalTargetableActor.GetPrivateStaticClass", Package); } + void PlayDyingRadial(float KillingDamage, FRadialDamageEvent DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayDyingRadial", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PlayHitEffectGeneric(float DamageTaken, FDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectGeneric", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + void PlayHitEffectRadial(float DamageTaken, FRadialDamageEvent DamageEvent, APawn * PawnInstigator, AActor * DamageCauser) { NativeCall(this, "APrimalTargetableActor.PlayHitEffectRadial", DamageTaken, DamageEvent, PawnInstigator, DamageCauser); } + static void StaticRegisterNativesAPrimalTargetableActor() { NativeCall(nullptr, "APrimalTargetableActor.StaticRegisterNativesAPrimalTargetableActor"); } + void GetDestructionEffectTransform(FVector * OutEffectLoc, FRotator * OutEffectRot) { NativeCall(this, "APrimalTargetableActor.GetDestructionEffectTransform", OutEffectLoc, OutEffectRot); } + FString * GetShortName(FString * result) { return NativeCall(this, "APrimalTargetableActor.GetShortName", result); } + float GetLowHealthPercentage() { return NativeCall(this, "APrimalTargetableActor.GetLowHealthPercentage"); } +}; + +struct APrimalStructure : APrimalTargetableActor +{ + FVector2D& OverlayTooltipPaddingField() { return *GetNativePointerField(this, "APrimalStructure.OverlayTooltipPadding"); } + FVector2D& OverlayTooltipScaleField() { return *GetNativePointerField(this, "APrimalStructure.OverlayTooltipScale"); } + FString& StatsPanelStructureTitleField() { return *GetNativePointerField(this, "APrimalStructure.StatsPanelStructureTitle"); } + FString& RemoteInventoryTitleField() { return *GetNativePointerField(this, "APrimalStructure.RemoteInventoryTitle"); } + bool& bHideStatusBarsField() { return *GetNativePointerField(this, "APrimalStructure.bHideStatusBars"); } + TSubclassOf& StructureSnapSettingsClassField() { return *GetNativePointerField*>(this, "APrimalStructure.StructureSnapSettingsClass"); } + TSubclassOf& ConsumesPrimalItemField() { return *GetNativePointerField*>(this, "APrimalStructure.ConsumesPrimalItem"); } + float& ScaleFactorField() { return *GetNativePointerField(this, "APrimalStructure.ScaleFactor"); } + int& StructureSnapTypeFlagsField() { return *GetNativePointerField(this, "APrimalStructure.StructureSnapTypeFlags"); } + TArray& SnapPointsField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapPoints"); } + float& PlacementOffsetForVerticalGroundField() { return *GetNativePointerField(this, "APrimalStructure.PlacementOffsetForVerticalGround"); } + float& PlacementInitialTracePointOffsetForVerticalGroundField() { return *GetNativePointerField(this, "APrimalStructure.PlacementInitialTracePointOffsetForVerticalGround"); } + TArray>& StructuresAllowedToBeVerticalGroundField() { return *GetNativePointerField>*>(this, "APrimalStructure.StructuresAllowedToBeVerticalGround"); } + float& TraceDistanceFromActorToWallVerticalGroundField() { return *GetNativePointerField(this, "APrimalStructure.TraceDistanceFromActorToWallVerticalGround"); } + FVector& PlacementHitLocOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PlacementHitLocOffset"); } + FVector& PlacementEncroachmentCheckOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PlacementEncroachmentCheckOffset"); } + FVector& PlacementEncroachmentBoxExtentField() { return *GetNativePointerField(this, "APrimalStructure.PlacementEncroachmentBoxExtent"); } + FVector& PlacementTraceScaleField() { return *GetNativePointerField(this, "APrimalStructure.PlacementTraceScale"); } + FVector& SnapAlternatePlacementTraceScaleField() { return *GetNativePointerField(this, "APrimalStructure.SnapAlternatePlacementTraceScale"); } + FRotator& PlacementRotOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PlacementRotOffset"); } + FRotator& PlacementTraceRotOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PlacementTraceRotOffset"); } + FRotator& SnappingRotationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SnappingRotationOffset"); } + float& RepairAmountRemainingField() { return *GetNativePointerField(this, "APrimalStructure.RepairAmountRemaining"); } + float& RepairCheckIntervalField() { return *GetNativePointerField(this, "APrimalStructure.RepairCheckInterval"); } + float& PlacementFloorCheckZExtentUpField() { return *GetNativePointerField(this, "APrimalStructure.PlacementFloorCheckZExtentUp"); } + float& RepairPercentPerIntervalField() { return *GetNativePointerField(this, "APrimalStructure.RepairPercentPerInterval"); } + float& DecayDestructionPeriodField() { return *GetNativePointerField(this, "APrimalStructure.DecayDestructionPeriod"); } + TArray>& PreventPlacingOnFloorClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventPlacingOnFloorClasses"); } + TArray& PreventPlacingOnFloorTagsField() { return *GetNativePointerField*>(this, "APrimalStructure.PreventPlacingOnFloorTags"); } + TArray>& AllowPlacingOnFloorClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowPlacingOnFloorClasses"); } + TSubobjectPtr& MyRootTransformField() { return *GetNativePointerField*>(this, "APrimalStructure.MyRootTransform"); } + int& TraceIgnoreStructuresWithTypeFlagsField() { return *GetNativePointerField(this, "APrimalStructure.TraceIgnoreStructuresWithTypeFlags"); } + int& bTraceCheckOnlyUseStructuresWithTypeFlagsField() { return *GetNativePointerField(this, "APrimalStructure.bTraceCheckOnlyUseStructuresWithTypeFlags"); } + FieldArray AllowStructureColorSetsField() { return { this, "APrimalStructure.AllowStructureColorSets" }; } + FieldArray AlternateStructureColorSetsField() { return { this, "APrimalStructure.AlternateStructureColorSets" }; } + FVector& WaterVolumeCheckPointOffsetField() { return *GetNativePointerField(this, "APrimalStructure.WaterVolumeCheckPointOffset"); } + float& WaterPlacementMinimumWaterHeightField() { return *GetNativePointerField(this, "APrimalStructure.WaterPlacementMinimumWaterHeight"); } + float& PlacementMaxZDeltaField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaxZDelta"); } + float& PlacementChooseRotationMaxRangeOverrideField() { return *GetNativePointerField(this, "APrimalStructure.PlacementChooseRotationMaxRangeOverride"); } + float& PlacementMaxRangeField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaxRange"); } + float& MaxSnapLocRangeField() { return *GetNativePointerField(this, "APrimalStructure.MaxSnapLocRange"); } + float& SnapOverlapCheckRadiusField() { return *GetNativePointerField(this, "APrimalStructure.SnapOverlapCheckRadius"); } + float& MaximumFoundationSupport2DBuildDistanceField() { return *GetNativePointerField(this, "APrimalStructure.MaximumFoundationSupport2DBuildDistance"); } + float& AdditionalFoundationSupportDistanceForLinkedStructuresField() { return *GetNativePointerField(this, "APrimalStructure.AdditionalFoundationSupportDistanceForLinkedStructures"); } + float& PlacementFloorCheckZExtentField() { return *GetNativePointerField(this, "APrimalStructure.PlacementFloorCheckZExtent"); } + FVector2D& PlacementFloorCheckXYExtentField() { return *GetNativePointerField(this, "APrimalStructure.PlacementFloorCheckXYExtent"); } + float& LastHealthPercentageField() { return *GetNativePointerField(this, "APrimalStructure.LastHealthPercentage"); } + FRotator& TakeGroundNormalRotationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.TakeGroundNormalRotationOffset"); } + FVector& ForceSnappedStructureToGroundCheckExtentField() { return *GetNativePointerField(this, "APrimalStructure.ForceSnappedStructureToGroundCheckExtent"); } + float& BarrierPlacementPreventionDistanceField() { return *GetNativePointerField(this, "APrimalStructure.BarrierPlacementPreventionDistance"); } + FVector& OverrideCheckStructurePlacementOverlapForceEncroachmentExtentField() { return *GetNativePointerField(this, "APrimalStructure.OverrideCheckStructurePlacementOverlapForceEncroachmentExtent"); } + float& DemolishGiveItemCraftingResourcePercentageField() { return *GetNativePointerField(this, "APrimalStructure.DemolishGiveItemCraftingResourcePercentage"); } + TSubclassOf& AllowReplacementByStructureClassTypeField() { return *GetNativePointerField*>(this, "APrimalStructure.AllowReplacementByStructureClassType"); } + TSubclassOf& PreventReplacementOfStructureClassTypeField() { return *GetNativePointerField*>(this, "APrimalStructure.PreventReplacementOfStructureClassType"); } + TArray>& PreventReplacementOfStructureClassTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventReplacementOfStructureClassTypes"); } + TArray>& PreventReplacementByStructureClassTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventReplacementByStructureClassTypes"); } + TArray>& AllowReplacementByStructureClassTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowReplacementByStructureClassTypes"); } + TArray>& AllowReplacementOfStructureClassTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowReplacementOfStructureClassTypes"); } + FVector& ReplacementCheckOffsetField() { return *GetNativePointerField(this, "APrimalStructure.ReplacementCheckOffset"); } + float& MaximumHeightAboveWorldGroundField() { return *GetNativePointerField(this, "APrimalStructure.MaximumHeightAboveWorldGround"); } + float& MaximumHeightUnderWorldMaxKillZField() { return *GetNativePointerField(this, "APrimalStructure.MaximumHeightUnderWorldMaxKillZ"); } + FRotator& PreviewCameraRotationField() { return *GetNativePointerField(this, "APrimalStructure.PreviewCameraRotation"); } + FVector& PreviewCameraPivotOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PreviewCameraPivotOffset"); } + float& PreviewCameraDistanceScaleFactorField() { return *GetNativePointerField(this, "APrimalStructure.PreviewCameraDistanceScaleFactor"); } + float& PreviewCameraDefaultZoomMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.PreviewCameraDefaultZoomMultiplier"); } + float& PreviewCameraMaxZoomMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.PreviewCameraMaxZoomMultiplier"); } + float& ReturnDamageAmountField() { return *GetNativePointerField(this, "APrimalStructure.ReturnDamageAmount"); } + int& StructureRangeTypeFlagField() { return *GetNativePointerField(this, "APrimalStructure.StructureRangeTypeFlag"); } + int& LimitMaxStructuresInRangeTypeFlagField() { return *GetNativePointerField(this, "APrimalStructure.LimitMaxStructuresInRangeTypeFlag"); } + float& ReturnDamageImpulseField() { return *GetNativePointerField(this, "APrimalStructure.ReturnDamageImpulse"); } + TSubclassOf& ReturnDamageTypeField() { return *GetNativePointerField*>(this, "APrimalStructure.ReturnDamageType"); } + TArray>& ReturnDamageExcludeIncomingTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.ReturnDamageExcludeIncomingTypes"); } + TArray>& ReturnDamageOnlyForIncomingTypesField() { return *GetNativePointerField>*>(this, "APrimalStructure.ReturnDamageOnlyForIncomingTypes"); } + int& OwningPlayerIDField() { return *GetNativePointerField(this, "APrimalStructure.OwningPlayerID"); } + FString& OwningPlayerNameField() { return *GetNativePointerField(this, "APrimalStructure.OwningPlayerName"); } + long double& LastInAllyRangeTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastInAllyRangeTime"); } + int& LastInAllyRangeTimeSerializedField() { return *GetNativePointerField(this, "APrimalStructure.LastInAllyRangeTimeSerialized"); } + float& DecayDestructionPeriodMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.DecayDestructionPeriodMultiplier"); } + TWeakObjectPtr& SaddleDinoField() { return *GetNativePointerField*>(this, "APrimalStructure.SaddleDino"); } + TArray LatchedDinosField() { return *GetNativePointerField*>(this, "APrimalStructure.LatchedDinos"); } + UMaterialInterface * PreviewMaterialField() { return *GetNativePointerField(this, "APrimalStructure.PreviewMaterial"); } + FVector& PreviewGizmoMeshOffsetField() { return *GetNativePointerField(this, "APrimalStructure.PreviewGizmoMeshOffset"); } + float& PreviewGizmoMeshScaleField() { return *GetNativePointerField(this, "APrimalStructure.PreviewGizmoMeshScale"); } + TArray LinkedStructuresField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedStructures"); } + TArray& LinkedStructuresIDField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedStructuresID"); } + TArray StructuresPlacedOnFloorField() { return *GetNativePointerField*>(this, "APrimalStructure.StructuresPlacedOnFloor"); } + TArray>& SnapToStructureTypesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalStructure.SnapToStructureTypesToExclude"); } + TArray>& SnapFromStructureTypesToExcludeField() { return *GetNativePointerField>*>(this, "APrimalStructure.SnapFromStructureTypesToExclude"); } + APrimalStructure * PlacedOnFloorStructureField() { return *GetNativePointerField(this, "APrimalStructure.PlacedOnFloorStructure"); } + APrimalStructure * PrimarySnappedStructureChildField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureChild"); } + APrimalStructure * PrimarySnappedStructureParentField() { return *GetNativePointerField(this, "APrimalStructure.PrimarySnappedStructureParent"); } + FString& OwnerNameField() { return *GetNativePointerField(this, "APrimalStructure.OwnerName"); } + FieldArray<__int16, 6> StructureColorsField() { return { this, "APrimalStructure.StructureColors" }; } + APawn * AttachedToField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTo"); } + APrimalStructureExplosiveTransGPS * AttachedTransponderField() { return *GetNativePointerField(this, "APrimalStructure.AttachedTransponder"); } + unsigned int& StructureIDField() { return *GetNativePointerField(this, "APrimalStructure.StructureID"); } + unsigned int& AttachedToDinoID1Field() { return *GetNativePointerField(this, "APrimalStructure.AttachedToDinoID1"); } + TArray>& OnlyAllowStructureClassesToAttachField() { return *GetNativePointerField>*>(this, "APrimalStructure.OnlyAllowStructureClassesToAttach"); } + TArray>& OnlyAllowStructureClassesFromAttachField() { return *GetNativePointerField>*>(this, "APrimalStructure.OnlyAllowStructureClassesFromAttach"); } + unsigned int& TaggedIndexField() { return *GetNativePointerField(this, "APrimalStructure.TaggedIndex"); } + unsigned int& TaggedIndexTwoField() { return *GetNativePointerField(this, "APrimalStructure.TaggedIndexTwo"); } + unsigned int& ProcessTreeTagField() { return *GetNativePointerField(this, "APrimalStructure.ProcessTreeTag"); } + long double& LastStructureStasisTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastStructureStasisTime"); } + long double& LastColorizationTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastColorizationTime"); } + UMaterialInterface * StructureIconMaterialField() { return *GetNativePointerField(this, "APrimalStructure.StructureIconMaterial"); } + UPhysicalMaterial * ForceComponentsPhysMaterialField() { return *GetNativePointerField(this, "APrimalStructure.ForceComponentsPhysMaterial"); } + float& ColorizationRangeMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.ColorizationRangeMultiplier"); } + FVector& AdvancedRotationPlacementOffsetField() { return *GetNativePointerField(this, "APrimalStructure.AdvancedRotationPlacementOffset"); } + FVector& SpawnEmitterLocationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SpawnEmitterLocationOffset"); } + FRotator& SpawnEmitterRotationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SpawnEmitterRotationOffset"); } + USoundBase * PlacementSoundField() { return *GetNativePointerField(this, "APrimalStructure.PlacementSound"); } + TSubclassOf& PickupGivesItemField() { return *GetNativePointerField*>(this, "APrimalStructure.PickupGivesItem"); } + float& ExcludeInStructuresRadiusField() { return *GetNativePointerField(this, "APrimalStructure.ExcludeInStructuresRadius"); } + TArray>& ExcludeInStructuresRadiusClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.ExcludeInStructuresRadiusClasses"); } + float& LastFadeOpacityField() { return *GetNativePointerField(this, "APrimalStructure.LastFadeOpacity"); } + bool& bClientAddedToStructuresArrayField() { return *GetNativePointerField(this, "APrimalStructure.bClientAddedToStructuresArray"); } + long double& LastFailedPinTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastFailedPinTime"); } + TWeakObjectPtr& PrimaryMeshComponentField() { return *GetNativePointerField*>(this, "APrimalStructure.PrimaryMeshComponent"); } + FVector& WorldGeometryObstructionCheckOffsetField() { return *GetNativePointerField(this, "APrimalStructure.WorldGeometryObstructionCheckOffset"); } + TArray& PreventBuildStructureReasonStringOverridesField() { return *GetNativePointerField*>(this, "APrimalStructure.PreventBuildStructureReasonStringOverrides"); } + FVector& FloatingHudLocTextOffsetField() { return *GetNativePointerField(this, "APrimalStructure.FloatingHudLocTextOffset"); } + float& LastBumpedDamageTimeField() { return *GetNativePointerField(this, "APrimalStructure.LastBumpedDamageTime"); } + int& ForceLimitStructuresInRangeField() { return *GetNativePointerField(this, "APrimalStructure.ForceLimitStructuresInRange"); } + int& PlacementMaterialForwardDirIndexField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaterialForwardDirIndex"); } + float& ForcePreventPlacingInOfflineRaidStructuresRadiusField() { return *GetNativePointerField(this, "APrimalStructure.ForcePreventPlacingInOfflineRaidStructuresRadius"); } + FName& AttachToStaticMeshSocketNameBaseField() { return *GetNativePointerField(this, "APrimalStructure.AttachToStaticMeshSocketNameBase"); } + TSubclassOf& ItemsUseAlternateActorClassAttachmentField() { return *GetNativePointerField*>(this, "APrimalStructure.ItemsUseAlternateActorClassAttachment"); } + float& UnstasisAutoDestroyAfterTimeField() { return *GetNativePointerField(this, "APrimalStructure.UnstasisAutoDestroyAfterTime"); } + char& TribeGroupStructureRankField() { return *GetNativePointerField(this, "APrimalStructure.TribeGroupStructureRank"); } + char& TribeRankHUDYOffsetField() { return *GetNativePointerField(this, "APrimalStructure.TribeRankHUDYOffset"); } + TArray>& PreventSaddleDinoClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventSaddleDinoClasses"); } + TArray& PreventSaddleDinoTagsField() { return *GetNativePointerField*>(this, "APrimalStructure.PreventSaddleDinoTags"); } + TArray>& AllowSaddleDinoClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowSaddleDinoClasses"); } + FName& PlaceOnWallUseStaticMeshTagField() { return *GetNativePointerField(this, "APrimalStructure.PlaceOnWallUseStaticMeshTag"); } + TSubclassOf& SnapStructureClassField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapStructureClass"); } + float& DemolishActivationTimeField() { return *GetNativePointerField(this, "APrimalStructure.DemolishActivationTime"); } + FVector& GroundEncroachmentCheckLocationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.GroundEncroachmentCheckLocationOffset"); } + TWeakObjectPtr& TempBasedPawnWaitingForAttachmentParentReplicationField() { return *GetNativePointerField*>(this, "APrimalStructure.TempBasedPawnWaitingForAttachmentParentReplication"); } + int& StructureMinAllowedVersionField() { return *GetNativePointerField(this, "APrimalStructure.StructureMinAllowedVersion"); } + int& SavedStructureMinAllowedVersionField() { return *GetNativePointerField(this, "APrimalStructure.SavedStructureMinAllowedVersion"); } + float& OverrideEnemyFoundationPreventionRadiusField() { return *GetNativePointerField(this, "APrimalStructure.OverrideEnemyFoundationPreventionRadius"); } + TArray>& ForceAllowWallAttachmentClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.ForceAllowWallAttachmentClasses"); } + float& LimitMaxStructuresInRangeRadiusField() { return *GetNativePointerField(this, "APrimalStructure.LimitMaxStructuresInRangeRadius"); } + float& BaseStructureWeightField() { return *GetNativePointerField(this, "APrimalStructure.BaseStructureWeight"); } + TArray>& FastDecayLinkedStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.FastDecayLinkedStructureClasses"); } + float& PlacementMaxZAbovePlayerHeightField() { return *GetNativePointerField(this, "APrimalStructure.PlacementMaxZAbovePlayerHeight"); } + float& LandClaimPlacementRadiusField() { return *GetNativePointerField(this, "APrimalStructure.LandClaimPlacementRadius"); } + TWeakObjectPtr& LastAttachedShipField() { return *GetNativePointerField*>(this, "APrimalStructure.LastAttachedShip"); } + float& SnapToWaterSurface_ZOffsetField() { return *GetNativePointerField(this, "APrimalStructure.SnapToWaterSurface_ZOffset"); } + float& NoClaimFlagDecayDestructionPeriodField() { return *GetNativePointerField(this, "APrimalStructure.NoClaimFlagDecayDestructionPeriod"); } + float& NoClaimFlagDecayDestructionPeriodMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.NoClaimFlagDecayDestructionPeriodMultiplier"); } + TWeakObjectPtr& LinkedToClaimFlagField() { return *GetNativePointerField*>(this, "APrimalStructure.LinkedToClaimFlag"); } + float& MyExtraShipStructureHealthMultiplierField() { return *GetNativePointerField(this, "APrimalStructure.MyExtraShipStructureHealthMultiplier"); } + TEnumAsByte& StructureShipSizeClass_MaxField() { return *GetNativePointerField*>(this, "APrimalStructure.StructureShipSizeClass_Max"); } + TEnumAsByte& StructureShipSizeClass_MinField() { return *GetNativePointerField*>(this, "APrimalStructure.StructureShipSizeClass_Min"); } + int& RequirePlacementOnShipDeckIndexField() { return *GetNativePointerField(this, "APrimalStructure.RequirePlacementOnShipDeckIndex"); } + int& SnapToShipDeckIndexField() { return *GetNativePointerField(this, "APrimalStructure.SnapToShipDeckIndex"); } + UStaticMesh * MyStaticMeshOverrideField() { return *GetNativePointerField(this, "APrimalStructure.MyStaticMeshOverride"); } + TArray& EncroachmentCheckIgnoreStructureTypeTagsField() { return *GetNativePointerField*>(this, "APrimalStructure.EncroachmentCheckIgnoreStructureTypeTags"); } + FName& StructureTypeTagField() { return *GetNativePointerField(this, "APrimalStructure.StructureTypeTag"); } + long double& CheckUntilAttachedToShipStartTimeField() { return *GetNativePointerField(this, "APrimalStructure.CheckUntilAttachedToShipStartTime"); } + float& ShipPlacementRotationOffsetField() { return *GetNativePointerField(this, "APrimalStructure.ShipPlacementRotationOffset"); } + TArray& SnapToModelOverridesField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapToModelOverrides"); } + TArray& SnapFromModelOverridesField() { return *GetNativePointerField*>(this, "APrimalStructure.SnapFromModelOverrides"); } + TArray AlternateSnapPreviewsField() { return *GetNativePointerField*>(this, "APrimalStructure.AlternateSnapPreviews"); } + UStaticMesh * PreviewDefaultStaticMeshField() { return *GetNativePointerField(this, "APrimalStructure.PreviewDefaultStaticMesh"); } + float& SnapCheckIntervalDistanceField() { return *GetNativePointerField(this, "APrimalStructure.SnapCheckIntervalDistance"); } + float& TimeToAllowFreePickupField() { return *GetNativePointerField(this, "APrimalStructure.TimeToAllowFreePickup"); } + float& FreePickupTextYOffsetField() { return *GetNativePointerField(this, "APrimalStructure.FreePickupTextYOffset"); } + float& AdditionalRepairPercentNextIntervalField() { return *GetNativePointerField(this, "APrimalStructure.AdditionalRepairPercentNextInterval"); } + float& MaxAdditionalRepairPercentField() { return *GetNativePointerField(this, "APrimalStructure.MaxAdditionalRepairPercent"); } + float& FlatAdditionalRepairPercentField() { return *GetNativePointerField(this, "APrimalStructure.FlatAdditionalRepairPercent"); } + UMeshComponent * PreviewGizmoComponentField() { return *GetNativePointerField(this, "APrimalStructure.PreviewGizmoComponent"); } + UPrimalItem * CraftedFromStatItemField() { return *GetNativePointerField(this, "APrimalStructure.CraftedFromStatItem"); } + FName& PaintingFileNameOverrideField() { return *GetNativePointerField(this, "APrimalStructure.PaintingFileNameOverride"); } + float& NPC_AdditionalUseRadiusField() { return *GetNativePointerField(this, "APrimalStructure.NPC_AdditionalUseRadius"); } + FString& TutorialHintStringField() { return *GetNativePointerField(this, "APrimalStructure.TutorialHintString"); } + int& PreviewLastPlacementResultField() { return *GetNativePointerField(this, "APrimalStructure.PreviewLastPlacementResult"); } + TArray>& PreventParentStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventParentStructureClasses"); } + TArray>& AllowParentStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowParentStructureClasses"); } + TArray>& PreventChildStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.PreventChildStructureClasses"); } + TArray>& AllowChildStructureClassesField() { return *GetNativePointerField>*>(this, "APrimalStructure.AllowChildStructureClasses"); } + float& ShipStructureOffsetFromHUDBottomYField() { return *GetNativePointerField(this, "APrimalStructure.ShipStructureOffsetFromHUDBottomY"); } + float& PlacementFloorCheckStartOffsetZField() { return *GetNativePointerField(this, "APrimalStructure.PlacementFloorCheckStartOffsetZ"); } + float& PlacementFloorCheckEndOffsetZField() { return *GetNativePointerField(this, "APrimalStructure.PlacementFloorCheckEndOffsetZ"); } + float& ShipPlacementMaxBelowZOffsetField() { return *GetNativePointerField(this, "APrimalStructure.ShipPlacementMaxBelowZOffset"); } + float& TraceDistanceFromActorToCeilingField() { return *GetNativePointerField(this, "APrimalStructure.TraceDistanceFromActorToCeiling"); } + float& PlacementInitialTracePointOffsetForCeilingField() { return *GetNativePointerField(this, "APrimalStructure.PlacementInitialTracePointOffsetForCeiling"); } + float& PlacementOffsetForCeilingField() { return *GetNativePointerField(this, "APrimalStructure.PlacementOffsetForCeiling"); } + TArray>& StructuresAllowedToBeCeilingField() { return *GetNativePointerField>*>(this, "APrimalStructure.StructuresAllowedToBeCeiling"); } + + // Bit fields + + BitFieldValue bIsFlippable() { return { this, "APrimalStructure.bIsFlippable" }; } + BitFieldValue bIsFlipped() { return { this, "APrimalStructure.bIsFlipped" }; } + BitFieldValue bShowInPlaceableList() { return { this, "APrimalStructure.bShowInPlaceableList" }; } + BitFieldValue bIsRepairing() { return { this, "APrimalStructure.bIsRepairing" }; } + BitFieldValue bInitializedMaterials() { return { this, "APrimalStructure.bInitializedMaterials" }; } + BitFieldValue bForceAllowWallAttachments() { return { this, "APrimalStructure.bForceAllowWallAttachments" }; } + BitFieldValue bUseBPRefreshedStructureColors() { return { this, "APrimalStructure.bUseBPRefreshedStructureColors" }; } + BitFieldValue bClientAddPlacedOnFloorStructures() { return { this, "APrimalStructure.bClientAddPlacedOnFloorStructures" }; } + BitFieldValue bUseBPPreventStasis() { return { this, "APrimalStructure.bUseBPPreventStasis" }; } + BitFieldValue bDestroyOnStasis() { return { this, "APrimalStructure.bDestroyOnStasis" }; } + BitFieldValue bTriggerBPStasis() { return { this, "APrimalStructure.bTriggerBPStasis" }; } + BitFieldValue bUseBPPostLoadedFromSaveGame() { return { this, "APrimalStructure.bUseBPPostLoadedFromSaveGame" }; } + BitFieldValue bPlacementUsesWeaponClipAmmo() { return { this, "APrimalStructure.bPlacementUsesWeaponClipAmmo" }; } + BitFieldValue bIgnoreDyingWhenDemolished() { return { this, "APrimalStructure.bIgnoreDyingWhenDemolished" }; } + BitFieldValue bAbsoluteTakeAnythingAsGround() { return { this, "APrimalStructure.bAbsoluteTakeAnythingAsGround" }; } + BitFieldValue bUseAdvancedRotationPlacement() { return { this, "APrimalStructure.bUseAdvancedRotationPlacement" }; } + BitFieldValue bDisablePlacementOnDynamicsFoliageAndDoors() { return { this, "APrimalStructure.bDisablePlacementOnDynamicsFoliageAndDoors" }; } + BitFieldValue bSeatedDisableCollisionCheck() { return { this, "APrimalStructure.bSeatedDisableCollisionCheck" }; } + BitFieldValue bUseBPIsAllowedToBuildEx() { return { this, "APrimalStructure.bUseBPIsAllowedToBuildEx" }; } + BitFieldValue bUseBPHandleStructureEnabled() { return { this, "APrimalStructure.bUseBPHandleStructureEnabled" }; } + BitFieldValue bForcePlacingOnVerticalGround() { return { this, "APrimalStructure.bForcePlacingOnVerticalGround" }; } + BitFieldValue bPlacementShouldNotBeHorizontal() { return { this, "APrimalStructure.bPlacementShouldNotBeHorizontal" }; } + BitFieldValue bRequiresGroundedPlacement() { return { this, "APrimalStructure.bRequiresGroundedPlacement" }; } + BitFieldValue bAllowPlacingOnOtherTeamStructuresPvPOnly() { return { this, "APrimalStructure.bAllowPlacingOnOtherTeamStructuresPvPOnly" }; } + BitFieldValue bForceUseSkeletalMeshComponent() { return { this, "APrimalStructure.bForceUseSkeletalMeshComponent" }; } + BitFieldValue bForceDisableFootSound() { return { this, "APrimalStructure.bForceDisableFootSound" }; } + BitFieldValue bTraceThruEncroachmentPoints() { return { this, "APrimalStructure.bTraceThruEncroachmentPoints" }; } + BitFieldValue bDidSpawnEffects() { return { this, "APrimalStructure.bDidSpawnEffects" }; } + BitFieldValue bPreventDinoPlacementDistanceIncrease() { return { this, "APrimalStructure.bPreventDinoPlacementDistanceIncrease" }; } + BitFieldValue bPendingRemoval() { return { this, "APrimalStructure.bPendingRemoval" }; } + BitFieldValue bDontOverrideCollisionProfile() { return { this, "APrimalStructure.bDontOverrideCollisionProfile" }; } + BitFieldValue bAllowAttachToPawn() { return { this, "APrimalStructure.bAllowAttachToPawn" }; } + BitFieldValue bAllowAttachToSaddle() { return { this, "APrimalStructure.bAllowAttachToSaddle" }; } + BitFieldValue bPlacementTraceIgnorePawns() { return { this, "APrimalStructure.bPlacementTraceIgnorePawns" }; } + BitFieldValue bRequireFreePrimarySnappedStructure() { return { this, "APrimalStructure.bRequireFreePrimarySnappedStructure" }; } + BitFieldValue bOnlyAllowPlacementInWater() { return { this, "APrimalStructure.bOnlyAllowPlacementInWater" }; } + BitFieldValue bForcePlacingOnGround() { return { this, "APrimalStructure.bForcePlacingOnGround" }; } + BitFieldValue bTakeAnythingAsGround() { return { this, "APrimalStructure.bTakeAnythingAsGround" }; } + BitFieldValue bIsFoundation() { return { this, "APrimalStructure.bIsFoundation" }; } + BitFieldValue bForceCheckNearbyEnemyFoundation() { return { this, "APrimalStructure.bForceCheckNearbyEnemyFoundation" }; } + BitFieldValue bIsFloor() { return { this, "APrimalStructure.bIsFloor" }; } + BitFieldValue bForceFloorCollisionGroup() { return { this, "APrimalStructure.bForceFloorCollisionGroup" }; } + BitFieldValue bIsWall() { return { this, "APrimalStructure.bIsWall" }; } + BitFieldValue bDisallowPreventCropsBiomes() { return { this, "APrimalStructure.bDisallowPreventCropsBiomes" }; } + BitFieldValue bCanBeRepaired() { return { this, "APrimalStructure.bCanBeRepaired" }; } + BitFieldValue bCanBeRepairedByAnyTeam() { return { this, "APrimalStructure.bCanBeRepairedByAnyTeam" }; } + BitFieldValue bReturnDamageOnHitFromPawn() { return { this, "APrimalStructure.bReturnDamageOnHitFromPawn" }; } + BitFieldValue bPreventStasis() { return { this, "APrimalStructure.bPreventStasis" }; } + BitFieldValue bAllowUseFromRidingDino() { return { this, "APrimalStructure.bAllowUseFromRidingDino" }; } + BitFieldValue bIsFenceFoundation() { return { this, "APrimalStructure.bIsFenceFoundation" }; } + BitFieldValue bUseFenceFoundation() { return { this, "APrimalStructure.bUseFenceFoundation" }; } + BitFieldValue bUseOnlyBlockSelfTraceChannel() { return { this, "APrimalStructure.bUseOnlyBlockSelfTraceChannel" }; } + BitFieldValue bWasPlacementSnapped() { return { this, "APrimalStructure.bWasPlacementSnapped" }; } + BitFieldValue bIsCoreStructure() { return { this, "APrimalStructure.bIsCoreStructure" }; } + BitFieldValue bDeprecateStructure() { return { this, "APrimalStructure.bDeprecateStructure" }; } + BitFieldValue bRequiresToBeInsideZoneVolume() { return { this, "APrimalStructure.bRequiresToBeInsideZoneVolume" }; } + BitFieldValue bAllowLoadBearing() { return { this, "APrimalStructure.bAllowLoadBearing" }; } + BitFieldValue bIsEnvironmentStructure() { return { this, "APrimalStructure.bIsEnvironmentStructure" }; } + BitFieldValue bDemolished() { return { this, "APrimalStructure.bDemolished" }; } + BitFieldValue bSetStaticMobility() { return { this, "APrimalStructure.bSetStaticMobility" }; } + BitFieldValue bIsPvE() { return { this, "APrimalStructure.bIsPvE" }; } + BitFieldValue bBeginPlayIgnoreApplyScale() { return { this, "APrimalStructure.bBeginPlayIgnoreApplyScale" }; } + BitFieldValue bRequiresPlacementOnStructureFloors() { return { this, "APrimalStructure.bRequiresPlacementOnStructureFloors" }; } + BitFieldValue bDisablePlacementOnStructureFloors() { return { this, "APrimalStructure.bDisablePlacementOnStructureFloors" }; } + BitFieldValue bUsePlacementCollisionCheck() { return { this, "APrimalStructure.bUsePlacementCollisionCheck" }; } + BitFieldValue bRequiresSnapping() { return { this, "APrimalStructure.bRequiresSnapping" }; } + BitFieldValue bSnappingRequiresNearbyFoundation() { return { this, "APrimalStructure.bSnappingRequiresNearbyFoundation" }; } + BitFieldValue bAllowSnapRotation() { return { this, "APrimalStructure.bAllowSnapRotation" }; } + BitFieldValue bPlacementChooseRotation() { return { this, "APrimalStructure.bPlacementChooseRotation" }; } + BitFieldValue bDestroyWhenLostFoundationAndPlacementChooseRotation() { return { this, "APrimalStructure.bDestroyWhenLostFoundationAndPlacementChooseRotation" }; } + BitFieldValue bRequiresPlacingOnWall() { return { this, "APrimalStructure.bRequiresPlacingOnWall" }; } + BitFieldValue bSnapRequiresPlacementOnGround() { return { this, "APrimalStructure.bSnapRequiresPlacementOnGround" }; } + BitFieldValue bAllowSnapOntoSameLocation() { return { this, "APrimalStructure.bAllowSnapOntoSameLocation" }; } + BitFieldValue bOnlyFoundationIfSnappedToFoundation() { return { this, "APrimalStructure.bOnlyFoundationIfSnappedToFoundation" }; } + BitFieldValue bFoundationRequiresGroundTrace() { return { this, "APrimalStructure.bFoundationRequiresGroundTrace" }; } + BitFieldValue bPlacingOnGroundRequiresNoStructure() { return { this, "APrimalStructure.bPlacingOnGroundRequiresNoStructure" }; } + BitFieldValue bTakeGroundNormal() { return { this, "APrimalStructure.bTakeGroundNormal" }; } + BitFieldValue bTakeGroundNormalDirectly() { return { this, "APrimalStructure.bTakeGroundNormalDirectly" }; } + BitFieldValue bFinalPlacementDontAdjustForMaxRange() { return { this, "APrimalStructure.bFinalPlacementDontAdjustForMaxRange" }; } + BitFieldValue bCheckForOverlappingStructuresOnPlacement() { return { this, "APrimalStructure.bCheckForOverlappingStructuresOnPlacement" }; } + BitFieldValue bBlockOverlappingStructuresOnPlacement() { return { this, "APrimalStructure.bBlockOverlappingStructuresOnPlacement" }; } + BitFieldValue bAllowStructureColors() { return { this, "APrimalStructure.bAllowStructureColors" }; } + BitFieldValue bDebug() { return { this, "APrimalStructure.bDebug" }; } + BitFieldValue bUseFadeInEffect() { return { this, "APrimalStructure.bUseFadeInEffect" }; } + BitFieldValue bUsingStructureColors() { return { this, "APrimalStructure.bUsingStructureColors" }; } + BitFieldValue bUsesHealth() { return { this, "APrimalStructure.bUsesHealth" }; } + BitFieldValue bIgnoreSnappedToOtherFloorStructures() { return { this, "APrimalStructure.bIgnoreSnappedToOtherFloorStructures" }; } + BitFieldValue bEnforceStructureLinkExactRotation() { return { this, "APrimalStructure.bEnforceStructureLinkExactRotation" }; } + BitFieldValue bForceSnappedStructureToGround() { return { this, "APrimalStructure.bForceSnappedStructureToGround" }; } + BitFieldValue bForceBlockIK() { return { this, "APrimalStructure.bForceBlockIK" }; } + BitFieldValue bStationaryStructure() { return { this, "APrimalStructure.bStationaryStructure" }; } + BitFieldValue bIgnorePawns() { return { this, "APrimalStructure.bIgnorePawns" }; } + BitFieldValue bCanDemolish() { return { this, "APrimalStructure.bCanDemolish" }; } + BitFieldValue bAllowPlacingOnOtherTeamStructures() { return { this, "APrimalStructure.bAllowPlacingOnOtherTeamStructures" }; } + BitFieldValue bPreventPlacementInWater() { return { this, "APrimalStructure.bPreventPlacementInWater" }; } + BitFieldValue bAllowInRegularStructurePreventionZones() { return { this, "APrimalStructure.bAllowInRegularStructurePreventionZones" }; } + BitFieldValue bDontSetStructureCollisionChannels() { return { this, "APrimalStructure.bDontSetStructureCollisionChannels" }; } + BitFieldValue bForcePreventEnemyStructuresNearby() { return { this, "APrimalStructure.bForcePreventEnemyStructuresNearby" }; } + BitFieldValue bAllowEnemyDemolish() { return { this, "APrimalStructure.bAllowEnemyDemolish" }; } + BitFieldValue bDontActuallySnapJustPlacement() { return { this, "APrimalStructure.bDontActuallySnapJustPlacement" }; } + BitFieldValue bIgnoreMaxStructuresInRange() { return { this, "APrimalStructure.bIgnoreMaxStructuresInRange" }; } + BitFieldValue bPaintingUseSkeletalMesh() { return { this, "APrimalStructure.bPaintingUseSkeletalMesh" }; } + BitFieldValue bUsesPaintingComponent() { return { this, "APrimalStructure.bUsesPaintingComponent" }; } + BitFieldValue bCanBuildUpon() { return { this, "APrimalStructure.bCanBuildUpon" }; } + BitFieldValue bHasResetDecayTime() { return { this, "APrimalStructure.bHasResetDecayTime" }; } + BitFieldValue bForceAllowInPreventionVolumes() { return { this, "APrimalStructure.bForceAllowInPreventionVolumes" }; } + BitFieldValue bForceCreateDynamicMaterials() { return { this, "APrimalStructure.bForceCreateDynamicMaterials" }; } + BitFieldValue bUseBPGetInfoFromConsumedItemForPlacedStructure() { return { this, "APrimalStructure.bUseBPGetInfoFromConsumedItemForPlacedStructure" }; } + BitFieldValue bImmuneToAutoDemolish() { return { this, "APrimalStructure.bImmuneToAutoDemolish" }; } + BitFieldValue bIgnoreMaxStructuresInSmallRadius() { return { this, "APrimalStructure.bIgnoreMaxStructuresInSmallRadius" }; } + BitFieldValue bPreventAttachToSaddle() { return { this, "APrimalStructure.bPreventAttachToSaddle" }; } + BitFieldValue bForcePersonalStructureOwnership() { return { this, "APrimalStructure.bForcePersonalStructureOwnership" }; } + BitFieldValue bBPOverrideAllowStructureAccess() { return { this, "APrimalStructure.bBPOverrideAllowStructureAccess" }; } + BitFieldValue bBPOverideDemolish() { return { this, "APrimalStructure.bBPOverideDemolish" }; } + BitFieldValue bBPOverrideAllowSnappingWith() { return { this, "APrimalStructure.bBPOverrideAllowSnappingWith" }; } + BitFieldValue bUseTribeGroupStructureRank() { return { this, "APrimalStructure.bUseTribeGroupStructureRank" }; } + BitFieldValue bForceBlockStationaryTraces() { return { this, "APrimalStructure.bForceBlockStationaryTraces" }; } + BitFieldValue bAttachToStaticMeshSocket() { return { this, "APrimalStructure.bAttachToStaticMeshSocket" }; } + BitFieldValue bAttachToStaticMeshSocketRotation() { return { this, "APrimalStructure.bAttachToStaticMeshSocketRotation" }; } + BitFieldValue bForceGroundForFoundation() { return { this, "APrimalStructure.bForceGroundForFoundation" }; } + BitFieldValue bBPOverrideSnappedToTransform() { return { this, "APrimalStructure.bBPOverrideSnappedToTransform" }; } + BitFieldValue bDisableStructureOnElectricStorm() { return { this, "APrimalStructure.bDisableStructureOnElectricStorm" }; } + BitFieldValue bNoCollision() { return { this, "APrimalStructure.bNoCollision" }; } + BitFieldValue bCreatedDynamicMaterials() { return { this, "APrimalStructure.bCreatedDynamicMaterials" }; } + BitFieldValue bIsPreviewStructure() { return { this, "APrimalStructure.bIsPreviewStructure" }; } + BitFieldValue bStructureUseAltCollisionChannel() { return { this, "APrimalStructure.bStructureUseAltCollisionChannel" }; } + BitFieldValue bDemolishJustDestroy() { return { this, "APrimalStructure.bDemolishJustDestroy" }; } + BitFieldValue bHighPriorityDemolish() { return { this, "APrimalStructure.bHighPriorityDemolish" }; } + BitFieldValue bDisableSnapStructure() { return { this, "APrimalStructure.bDisableSnapStructure" }; } + BitFieldValue bTriggerBPUnstasis() { return { this, "APrimalStructure.bTriggerBPUnstasis" }; } + BitFieldValue bUsesWorldSpaceMaterial() { return { this, "APrimalStructure.bUsesWorldSpaceMaterial" }; } + BitFieldValue bForceIgnoreStationaryObjectTrace() { return { this, "APrimalStructure.bForceIgnoreStationaryObjectTrace" }; } + BitFieldValue bForceAllowNearSupplyCrateSpawns() { return { this, "APrimalStructure.bForceAllowNearSupplyCrateSpawns" }; } + BitFieldValue bBPPostSetStructureCollisionChannels() { return { this, "APrimalStructure.bBPPostSetStructureCollisionChannels" }; } + BitFieldValue bPickupGiveItemRequiresAccess() { return { this, "APrimalStructure.bPickupGiveItemRequiresAccess" }; } + BitFieldValue bUseBPAllowPickupGiveItem() { return { this, "APrimalStructure.bUseBPAllowPickupGiveItem" }; } + BitFieldValue bPreventAttachedChildStructures() { return { this, "APrimalStructure.bPreventAttachedChildStructures" }; } + BitFieldValue bPreventPreviewIfWeaponPlaced() { return { this, "APrimalStructure.bPreventPreviewIfWeaponPlaced" }; } + BitFieldValue bShowHullTooltip() { return { this, "APrimalStructure.bShowHullTooltip" }; } + BitFieldValue bUseBPCanPlaceOnStructureSaddle() { return { this, "APrimalStructure.bUseBPCanPlaceOnStructureSaddle" }; } + BitFieldValue bUseStructureClassForParentActorClassAttachments() { return { this, "APrimalStructure.bUseStructureClassForParentActorClassAttachments" }; } + BitFieldValue bSetAttachmentTimer() { return { this, "APrimalStructure.bSetAttachmentTimer" }; } + BitFieldValue bUseBPGetStructureWeight() { return { this, "APrimalStructure.bUseBPGetStructureWeight" }; } + BitFieldValue bPostSpawnInitialized() { return { this, "APrimalStructure.bPostSpawnInitialized" }; } + BitFieldValue bBeganPlay() { return { this, "APrimalStructure.bBeganPlay" }; } + BitFieldValue bResetSnapCycle() { return { this, "APrimalStructure.bResetSnapCycle" }; } + BitFieldValue bStructurePlacedNotifyParentStructure() { return { this, "APrimalStructure.bStructurePlacedNotifyParentStructure" }; } + BitFieldValue bPaintingUseTaggedMeshComponent() { return { this, "APrimalStructure.bPaintingUseTaggedMeshComponent" }; } + BitFieldValue bCheckStructurePlacementOverlapForceEncroachment() { return { this, "APrimalStructure.bCheckStructurePlacementOverlapForceEncroachment" }; } + BitFieldValue bAllowDamageByShipImpact() { return { this, "APrimalStructure.bAllowDamageByShipImpact" }; } + BitFieldValue bAllowPlacementOutsideShipBounds() { return { this, "APrimalStructure.bAllowPlacementOutsideShipBounds" }; } + BitFieldValue bOverrideAttachedTurretYawLimits() { return { this, "APrimalStructure.bOverrideAttachedTurretYawLimits" }; } + BitFieldValue bCraftedFromStatItem() { return { this, "APrimalStructure.bCraftedFromStatItem" }; } + BitFieldValue bClientRequestedStatItem() { return { this, "APrimalStructure.bClientRequestedStatItem" }; } + BitFieldValue bAllowPlacementOnOtherTeamDinos() { return { this, "APrimalStructure.bAllowPlacementOnOtherTeamDinos" }; } + BitFieldValue bDontSetStructureCollisionChannelsCreateDynamicMaterials() { return { this, "APrimalStructure.bDontSetStructureCollisionChannelsCreateDynamicMaterials" }; } + BitFieldValue bLandPlacementRequiresLandClaim() { return { this, "APrimalStructure.bLandPlacementRequiresLandClaim" }; } + BitFieldValue bIgnoreMaxSaddleStructuresNum() { return { this, "APrimalStructure.bIgnoreMaxSaddleStructuresNum" }; } + BitFieldValue bIgnoreParentStructureDestruction() { return { this, "APrimalStructure.bIgnoreParentStructureDestruction" }; } + BitFieldValue bGroundTraceAllowCollisionWithWater() { return { this, "APrimalStructure.bGroundTraceAllowCollisionWithWater" }; } + BitFieldValue bUseSnapFromPlacementOverrideEvenWhenNotSnapped() { return { this, "APrimalStructure.bUseSnapFromPlacementOverrideEvenWhenNotSnapped" }; } + BitFieldValue bClientMobileStructure() { return { this, "APrimalStructure.bClientMobileStructure" }; } + BitFieldValue bSnapToWaterSurface() { return { this, "APrimalStructure.bSnapToWaterSurface" }; } + BitFieldValue bPreventDurabilityHealthScaling() { return { this, "APrimalStructure.bPreventDurabilityHealthScaling" }; } + BitFieldValue bSnappedSeatStructuresIgnoreGroundForStandingLocation() { return { this, "APrimalStructure.bSnappedSeatStructuresIgnoreGroundForStandingLocation" }; } + BitFieldValue bFlippedIgnoreComponentOffsets() { return { this, "APrimalStructure.bFlippedIgnoreComponentOffsets" }; } + BitFieldValue bFlipOnlyMyStaticMesh() { return { this, "APrimalStructure.bFlipOnlyMyStaticMesh" }; } + BitFieldValue bSetFlippedComponentOffsets() { return { this, "APrimalStructure.bSetFlippedComponentOffsets" }; } + BitFieldValue bForcePlacingOnCeiling() { return { this, "APrimalStructure.bForcePlacingOnCeiling" }; } + BitFieldValue bTryPlacingOnCeiling() { return { this, "APrimalStructure.bTryPlacingOnCeiling" }; } + BitFieldValue bPreventSpawingStructureDeathActor() { return { this, "APrimalStructure.bPreventSpawingStructureDeathActor" }; } + BitFieldValue bForceSpawningStructureDeathActor() { return { this, "APrimalStructure.bForceSpawningStructureDeathActor" }; } + BitFieldValue bUseBPSetDynamicMaterialParams() { return { this, "APrimalStructure.bUseBPSetDynamicMaterialParams" }; } + BitFieldValue bUseAlternateStructureColorSetOnShips() { return { this, "APrimalStructure.bUseAlternateStructureColorSetOnShips" }; } + BitFieldValue bRequiresPlacementOnShip() { return { this, "APrimalStructure.bRequiresPlacementOnShip" }; } + BitFieldValue bPreventPlacementOnShip() { return { this, "APrimalStructure.bPreventPlacementOnShip" }; } + BitFieldValue bAlignWithShipRotation() { return { this, "APrimalStructure.bAlignWithShipRotation" }; } + BitFieldValue bIsCriticalShipStructure() { return { this, "APrimalStructure.bIsCriticalShipStructure" }; } + BitFieldValue bUseBP_TickCriticalStructure() { return { this, "APrimalStructure.bUseBP_TickCriticalStructure" }; } + BitFieldValue bOverrideAttachedTurretCameraSocketName() { return { this, "APrimalStructure.bOverrideAttachedTurretCameraSocketName" }; } + BitFieldValue bAllowPlacementWhileSeated() { return { this, "APrimalStructure.bAllowPlacementWhileSeated" }; } + BitFieldValue bUseSkeletalMeshForSocketSnapPoints() { return { this, "APrimalStructure.bUseSkeletalMeshForSocketSnapPoints" }; } + BitFieldValue bShowAttachedToShipMultiUse() { return { this, "APrimalStructure.bShowAttachedToShipMultiUse" }; } + BitFieldValue bPreventEnemyTeamPainting() { return { this, "APrimalStructure.bPreventEnemyTeamPainting" }; } + BitFieldValue bForceAllowPlacementWhenUsingClimbingPickOrFalling() { return { this, "APrimalStructure.bForceAllowPlacementWhenUsingClimbingPickOrFalling" }; } + BitFieldValue bPlacementWantsToBeFlipped() { return { this, "APrimalStructure.bPlacementWantsToBeFlipped" }; } + BitFieldValue bTryVerticalGround() { return { this, "APrimalStructure.bTryVerticalGround" }; } + BitFieldValue bForceAllowSaddleStructureBasing() { return { this, "APrimalStructure.bForceAllowSaddleStructureBasing" }; } + BitFieldValue bPlayerPlacementRequiresBeingOnStructurePlacerArray() { return { this, "APrimalStructure.bPlayerPlacementRequiresBeingOnStructurePlacerArray" }; } + BitFieldValue bSeatedForceDisableCollisionCheck() { return { this, "APrimalStructure.bSeatedForceDisableCollisionCheck" }; } + BitFieldValue bUseShipStructureHealthMultiplier() { return { this, "APrimalStructure.bUseShipStructureHealthMultiplier" }; } + BitFieldValue bForceOnChildStructurePlacedNotify() { return { this, "APrimalStructure.bForceOnChildStructurePlacedNotify" }; } + BitFieldValue bMobileStructureForceAllowAsGround() { return { this, "APrimalStructure.bMobileStructureForceAllowAsGround" }; } + BitFieldValue bPreventCreationOfDynamicMaterials() { return { this, "APrimalStructure.bPreventCreationOfDynamicMaterials" }; } + BitFieldValue bAllowSkipPartialWorldSave() { return { this, "APrimalStructure.bAllowSkipPartialWorldSave" }; } + BitFieldValue bStructureSaveDirty() { return { this, "APrimalStructure.bStructureSaveDirty" }; } + BitFieldValue bPreventGivingDemolishResources() { return { this, "APrimalStructure.bPreventGivingDemolishResources" }; } + BitFieldValue bServerIsTestingForPlacement() { return { this, "APrimalStructure.bServerIsTestingForPlacement" }; } + BitFieldValue bServerDestroyedFailedPlacement() { return { this, "APrimalStructure.bServerDestroyedFailedPlacement" }; } + BitFieldValue bPlacedOnShip() { return { this, "APrimalStructure.bPlacedOnShip" }; } + BitFieldValue bIgnoreDestructionFoundationCheck() { return { this, "APrimalStructure.bIgnoreDestructionFoundationCheck" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructure.GetPrivateStaticClass"); } + static UClass * StaticClass() { return NativeCall(nullptr, "APrimalStructure.StaticClass"); } + float AddAggroOnBump(APrimalDinoCharacter * BumpedBy) { return NativeCall(this, "APrimalStructure.AddAggroOnBump", BumpedBy); } + bool AddRepairPercentForNextInterval(float Multiplier) { return NativeCall(this, "APrimalStructure.AddRepairPercentForNextInterval", Multiplier); } + bool AllowBeginPlacementBy_Implementation(AShooterPlayerController * ByPC) { return NativeCall(this, "APrimalStructure.AllowBeginPlacementBy_Implementation", ByPC); } + bool AllowColoringBy(APlayerController * ForPC, UObject * anItem) { return NativeCall(this, "APrimalStructure.AllowColoringBy", ForPC, anItem); } + bool AllowCreateDynamicMaterials() { return NativeCall(this, "APrimalStructure.AllowCreateDynamicMaterials"); } + bool AllowJumpOutOfWaterOnto(AActor * Jumper) { return NativeCall(this, "APrimalStructure.AllowJumpOutOfWaterOnto", Jumper); } + bool AllowPickupForItem(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowPickupForItem", ForPC); } + bool AllowPlacingMeOnStructure_Implementation(APrimalStructure * ParentStructure, FPlacementData * ThePlacementData) { return NativeCall(this, "APrimalStructure.AllowPlacingMeOnStructure_Implementation", ParentStructure, ThePlacementData); } + bool AllowPlacingOnSaddleParentClass(APrimalDinoCharacter * theDino, bool bForcePrevent) { return NativeCall(this, "APrimalStructure.AllowPlacingOnSaddleParentClass", theDino, bForcePrevent); } + bool AllowPlacingStructureOnMe_Implementation(APrimalStructure * ChildStructure, FPlacementData * ThePlacementData) { return NativeCall(this, "APrimalStructure.AllowPlacingStructureOnMe_Implementation", ChildStructure, ThePlacementData); } + bool AllowSaving() { return NativeCall(this, "APrimalStructure.AllowSaving"); } + bool AllowSnappingWith(APrimalStructure * OtherStructure, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowSnappingWith", OtherStructure, ForPC); } + bool AllowSpawnForPlayer(AShooterPlayerController * PC, bool bCheckCooldownTime, APrimalStructure * FromStructure) { return NativeCall(this, "APrimalStructure.AllowSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + bool AllowStructureAccess(APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.AllowStructureAccess", ForPC); } + void ApplyColorToRegions(__int16 CustomColorID, bool * ApplyToRegions) { NativeCall(this, "APrimalStructure.ApplyColorToRegions", CustomColorID, ApplyToRegions); } + void ApplyLinkedIDs(bool bRelinkParents) { NativeCall(this, "APrimalStructure.ApplyLinkedIDs", bRelinkParents); } + void ApplyPrimalItemSettingsToStructure(UMeshComponent * meshToColorize, UPrimalItem * AssociatedPrimalItem) { NativeCall(this, "APrimalStructure.ApplyPrimalItemSettingsToStructure", meshToColorize, AssociatedPrimalItem); } + void ApplyScale(bool bOnlyInitPhysics) { NativeCall(this, "APrimalStructure.ApplyScale", bOnlyInitPhysics); } + void BPGetAllLinkedStructures(TArray * OutLinkedStructures) { NativeCall *>(this, "APrimalStructure.BPGetAllLinkedStructures", OutLinkedStructures); } + static APrimalStructure * BPGetFromID(UWorld * World, int TheStructureID) { return NativeCall(nullptr, "APrimalStructure.BPGetFromID", World, TheStructureID); } + void BPGetInfoFromConsumedItemForPlacedStructure_Implementation(UPrimalItem * ItemToConsumed) { NativeCall(this, "APrimalStructure.BPGetInfoFromConsumedItemForPlacedStructure_Implementation", ItemToConsumed); } + TArray * BPGetLinkedStructureIDs(TArray * result) { return NativeCall *, TArray *>(this, "APrimalStructure.BPGetLinkedStructureIDs", result); } + TArray * BPGetSnappingPoints() { return NativeCall *>(this, "APrimalStructure.BPGetSnappingPoints"); } + static int BPGetStructureID(APrimalStructure * PrimalStructure) { return NativeCall(nullptr, "APrimalStructure.BPGetStructureID", PrimalStructure); } + FPlacementData * BPPlacingWallAttachmentOnMe_Implementation(FPlacementData * result, APrimalStructure * AttachedStructure, FPlacementData * OutPlacementData) { return NativeCall(this, "APrimalStructure.BPPlacingWallAttachmentOnMe_Implementation", result, AttachedStructure, OutPlacementData); } + void BeginPlay() { NativeCall(this, "APrimalStructure.BeginPlay"); } + bool CanAutoDemolish(bool bCanImmediatelyAutoDemolish, bool bForceCheckClaimFlagOverlap) { return NativeCall(this, "APrimalStructure.CanAutoDemolish", bCanImmediatelyAutoDemolish, bForceCheckClaimFlagOverlap); } + bool CanBePainted() { return NativeCall(this, "APrimalStructure.CanBePainted"); } + bool CanBeRepaired(AShooterPlayerController * ByPC, bool bCurrentlyRepairing) { return NativeCall(this, "APrimalStructure.CanBeRepaired", ByPC, bCurrentlyRepairing); } + int CanPlaceCriticalShipStructure(APrimalRaft * OnShip) { return NativeCall(this, "APrimalStructure.CanPlaceCriticalShipStructure", OnShip); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalStructure.ChangeActorTeam", NewTeam); } + bool CheckNotEncroaching(FVector PlacementLocation, FRotator PlacementRotation, AActor * DinoCharacter, APrimalStructure * SnappedToParentStructure, APrimalStructure * ReplacesStructure, bool bUseAlternatePlacementTraceScale) { return NativeCall(this, "APrimalStructure.CheckNotEncroaching", PlacementLocation, PlacementRotation, DinoCharacter, SnappedToParentStructure, ReplacesStructure, bUseAlternatePlacementTraceScale); } + void CheckUntilAttachedToValidShip() { NativeCall(this, "APrimalStructure.CheckUntilAttachedToValidShip"); } + bool ClampBuildLocation(FVector FromLocation, AActor ** OutHitActor, FPlacementData * OutPlacementData, bool bDontAdjustForMaxRange, APlayerController * PC) { return NativeCall(this, "APrimalStructure.ClampBuildLocation", FromLocation, OutHitActor, OutPlacementData, bDontAdjustForMaxRange, PC); } + static void CleanUpTree(TArray * StartingStructures, AController * InstigatorController, AActor * DamageCauser) { NativeCall *, AController *, AActor *>(nullptr, "APrimalStructure.CleanUpTree", StartingStructures, InstigatorController, DamageCauser); } + static void CleanUpTree(APrimalStructure * StartingStructure, AController * InstigatorController, AActor * DamageCauser) { NativeCall(nullptr, "APrimalStructure.CleanUpTree", StartingStructure, InstigatorController, DamageCauser); } + void ClearCustomColors_Implementation() { NativeCall(this, "APrimalStructure.ClearCustomColors_Implementation"); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructure.ClientMultiUse", ForPC, UseIndex); } + void ClientUpdateLinkedStructures_Implementation(TArray * NewLinkedStructures) { NativeCall *>(this, "APrimalStructure.ClientUpdateLinkedStructures_Implementation", NewLinkedStructures); } + void ClientUpdatedStructureColors_Implementation() { NativeCall(this, "APrimalStructure.ClientUpdatedStructureColors_Implementation"); } + void CreateDynamicMaterials() { NativeCall(this, "APrimalStructure.CreateDynamicMaterials"); } + static void CullAgainstFoundations(TArray * StartingStructures, TArray * Foundations) { NativeCall *, TArray *>(nullptr, "APrimalStructure.CullAgainstFoundations", StartingStructures, Foundations); } + static bool CullAgainstFoundations(APrimalStructure ** StartingStructure, TArray * Foundations) { return NativeCall *>(nullptr, "APrimalStructure.CullAgainstFoundations", StartingStructure, Foundations); } + void DelayedClientAttachParentReplicationFixupCheck(APrimalCharacter * PawnToCheck, float Timeout) { NativeCall(this, "APrimalStructure.DelayedClientAttachParentReplicationFixupCheck", PawnToCheck, Timeout); } + void DelayedDisableSnapParent() { NativeCall(this, "APrimalStructure.DelayedDisableSnapParent"); } + void Demolish(APlayerController * ForPC) { NativeCall(this, "APrimalStructure.Demolish", ForPC); } + void Destroyed() { NativeCall(this, "APrimalStructure.Destroyed"); } + bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalStructure.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + bool DoAnyTribePermissionsRestrict(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructure.DoAnyTribePermissionsRestrict", ForPC); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructure.DrawHUD", HUD); } + void DrawStructureTooltip(AShooterHUD * HUD, bool bForMultiUseSelector) { NativeCall(this, "APrimalStructure.DrawStructureTooltip", HUD, bForMultiUseSelector); } + void FadeInEffectTick() { NativeCall(this, "APrimalStructure.FadeInEffectTick"); } + void FinalLoadedFromSaveGame() { NativeCall(this, "APrimalStructure.FinalLoadedFromSaveGame"); } + bool FinalStructurePlacement(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bIsFlipped, UClass ** ClassOverride) { return NativeCall(this, "APrimalStructure.FinalStructurePlacement", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bIsFlipped, ClassOverride); } + static void FindFoundations(APrimalStructure * StartingStructure, TArray * Foundations) { NativeCall *>(nullptr, "APrimalStructure.FindFoundations", StartingStructure, Foundations); } + static void FlagReachable(APrimalStructure * StartingStructure) { NativeCall(nullptr, "APrimalStructure.FlagReachable", StartingStructure); } + void GetAllLinkedStructures(TArray * OutLinkedStructures) { NativeCall *>(this, "APrimalStructure.GetAllLinkedStructures", OutLinkedStructures); } + APrimalRaft * GetAttachedToShip() { return NativeCall(this, "APrimalStructure.GetAttachedToShip"); } + FName * GetAttachedTurretCameraSocketNameOverride_Implementation(FName * result, APrimalStructure * ForStructure) { return NativeCall(this, "APrimalStructure.GetAttachedTurretCameraSocketNameOverride_Implementation", result, ForStructure); } + TSubclassOf * GetBedFilterClass_Implementation(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "APrimalStructure.GetBedFilterClass_Implementation", result); } + static APrimalStructure * GetClosestStructureToPoint(UWorld * ForWorld, FVector AtPoint, float OverlapRadius) { return NativeCall(nullptr, "APrimalStructure.GetClosestStructureToPoint", ForWorld, AtPoint, OverlapRadius); } + ADayCycleManager * GetDayCycleManager() { return NativeCall(this, "APrimalStructure.GetDayCycleManager"); } + float GetDemolishGivesResourcesMultiplier(APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.GetDemolishGivesResourcesMultiplier", ForPC); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructure.GetDescriptiveName", result); } + FString * GetEntryDescription(FString * result) { return NativeCall(this, "APrimalStructure.GetEntryDescription", result); } + UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + UMaterialInterface * GetEntryIconMaterial(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalStructure.GetEntryIconMaterial", AssociatedDataObject, bIsEnabled); } + FString * GetEntryString(FString * result) { return NativeCall(this, "APrimalStructure.GetEntryString", result); } + static APrimalStructure * GetFromID(UWorld * World, unsigned int TheStructureID) { return NativeCall(nullptr, "APrimalStructure.GetFromID", World, TheStructureID); } + int GetHitPawnCollisionGroup() { return NativeCall(this, "APrimalStructure.GetHitPawnCollisionGroup"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructure.GetLifetimeReplicatedProps", OutLifetimeProps); } + APrimalStructureDoor * GetLinkedDoor() { return NativeCall(this, "APrimalStructure.GetLinkedDoor"); } + APrimalStructure * GetNearbyFoundation(FPlacementData * PlacementData, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.GetNearbyFoundation", PlacementData, ForPC); } + static void GetNearbyStructuresOfClass(UWorld * World, TSubclassOf StructureClass, FVector * Location, float Range, TArray * Structures) { NativeCall, FVector *, float, TArray *>(nullptr, "APrimalStructure.GetNearbyStructuresOfClass", World, StructureClass, Location, Range, Structures); } + float GetNoClaimFlagDecayPeriod() { return NativeCall(this, "APrimalStructure.GetNoClaimFlagDecayPeriod"); } + int GetNumStructuresInRange(FVector AtLocation, float WithinRange) { return NativeCall(this, "APrimalStructure.GetNumStructuresInRange", AtLocation, WithinRange); } + static int GetNumStructuresInRangeStructureTypeFlag(UWorld * theWorld, FVector AtLocation, int TypeFlag, float WithinRange, bool bCheckBPCountStructureInRange, bool bUseInternalOctree, APrimalStructure * IgnoreStructure) { return NativeCall(nullptr, "APrimalStructure.GetNumStructuresInRangeStructureTypeFlag", theWorld, AtLocation, TypeFlag, WithinRange, bCheckBPCountStructureInRange, bUseInternalOctree, IgnoreStructure); } + UPaintingTexture * GetPaintingTexture() { return NativeCall(this, "APrimalStructure.GetPaintingTexture"); } + USceneComponent * GetParticleBaseComponent() { return NativeCall(this, "APrimalStructure.GetParticleBaseComponent"); } + FVector * GetParticleSystemClampingVelocity(FVector * result) { return NativeCall(this, "APrimalStructure.GetParticleSystemClampingVelocity", result); } + int GetPinCode() { return NativeCall(this, "APrimalStructure.GetPinCode"); } + bool GetPlacingGroundLocation(AActor ** OutHitActor, FPlacementData * OutPlacementData, APlayerController * PC, bool bFinalPlacement, int SnapPointCycle, TArray * AlternateSnapTransforms, bool bIgnoreSnapCheckDistanceInterval) { return NativeCall *, bool>(this, "APrimalStructure.GetPlacingGroundLocation", OutHitActor, OutPlacementData, PC, bFinalPlacement, SnapPointCycle, AlternateSnapTransforms, bIgnoreSnapCheckDistanceInterval); } + UPrimitiveComponent * GetPrimaryHitComponent() { return NativeCall(this, "APrimalStructure.GetPrimaryHitComponent"); } + bool GetSnapPlacementMeshOverride(FPlacementData * PlacementData, UStaticMesh ** OutStaticMesh, UClass ** OutReplacementClass, FVector * PreviewLocOffset, FRotator * PreviewRotOffset) { return NativeCall(this, "APrimalStructure.GetSnapPlacementMeshOverride", PlacementData, OutStaticMesh, OutReplacementClass, PreviewLocOffset, PreviewRotOffset); } + FVector * GetSnapPointLocation(FVector * result, int SnapPointIndex, bool bOverrideTransform, FVector OverrideLoc, FRotator OverrideRot) { return NativeCall(this, "APrimalStructure.GetSnapPointLocation", result, SnapPointIndex, bOverrideTransform, OverrideLoc, OverrideRot); } + UMeshComponent * GetSnapSocketMeshComponent() { return NativeCall(this, "APrimalStructure.GetSnapSocketMeshComponent"); } + bool GetSnapToLocation(FVector * AtLoc, FRotator * AtRotation, FPlacementData * OutPlacementData, APrimalStructure ** OutParentStructure, int * OutSnapToIndex, APlayerController * PC, bool bFinalPlacement, int SnapPointCycle, TArray * AlternateSnapTransforms) { return NativeCall *>(this, "APrimalStructure.GetSnapToLocation", AtLoc, AtRotation, OutPlacementData, OutParentStructure, OutSnapToIndex, PC, bFinalPlacement, SnapPointCycle, AlternateSnapTransforms); } + void GetSnapToParentStructures(FVector AtLocation, FRotator AtRotation, int InitialMySnapIndex, APrimalStructure * InitialParent, TArray * SnapToParentStructures, APlayerController * PC) { NativeCall *, APlayerController *>(this, "APrimalStructure.GetSnapToParentStructures", AtLocation, AtRotation, InitialMySnapIndex, InitialParent, SnapToParentStructures, PC); } + FSpawnPointInfo * GetSpawnPointInfo(FSpawnPointInfo * result) { return NativeCall(this, "APrimalStructure.GetSpawnPointInfo", result); } + float GetSpoilingTimeMultiplier(UPrimalItem * anItem) { return NativeCall(this, "APrimalStructure.GetSpoilingTimeMultiplier", anItem); } + FLinearColor * GetStructureColor(FLinearColor * result, int ColorRegionIndex) { return NativeCall(this, "APrimalStructure.GetStructureColor", result, ColorRegionIndex); } + FLinearColor * GetStructureColorForID(FLinearColor * result, int SetNum, int ID) { return NativeCall(this, "APrimalStructure.GetStructureColorForID", result, SetNum, ID); } + int GetStructureColorValue(int ColorRegionIndex) { return NativeCall(this, "APrimalStructure.GetStructureColorValue", ColorRegionIndex); } + TArray * GetStructureColorsArray(TArray * result) { return NativeCall *, TArray *>(this, "APrimalStructure.GetStructureColorsArray", result); } + float GetStructureDamageMultiplier() { return NativeCall(this, "APrimalStructure.GetStructureDamageMultiplier"); } + float GetStructureDemolishTime() { return NativeCall(this, "APrimalStructure.GetStructureDemolishTime"); } + float GetStructureRepairCooldownTime() { return NativeCall(this, "APrimalStructure.GetStructureRepairCooldownTime"); } + TEnumAsByte * GetStructureShipMaxSizeClass(TEnumAsByte * result) { return NativeCall *, TEnumAsByte *>(this, "APrimalStructure.GetStructureShipMaxSizeClass", result); } + TEnumAsByte * GetStructureShipMinSizeClass(TEnumAsByte * result) { return NativeCall *, TEnumAsByte *>(this, "APrimalStructure.GetStructureShipMinSizeClass", result); } + float GetStructureWeight() { return NativeCall(this, "APrimalStructure.GetStructureWeight"); } + static void GetStructuresInRange(UWorld * theWorld, FVector AtLocation, float WithinRange, TSubclassOf StructureClass, TArray * StructuresOut, bool bUseInternalOctree, APrimalStructure * IgnoreStructure) { NativeCall, TArray *, bool, APrimalStructure *>(nullptr, "APrimalStructure.GetStructuresInRange", theWorld, AtLocation, WithinRange, StructureClass, StructuresOut, bUseInternalOctree, IgnoreStructure); } + float GetTargetingDesirability(ITargetableInterface * Attacker) { return NativeCall(this, "APrimalStructure.GetTargetingDesirability", Attacker); } + FString * GetAimedTutorialHintString_Implementation(FString * result) { return NativeCall(this, "APrimalStructure.GetAimedTutorialHintString_Implementation", result); } + UObject * GetUObjectInterfaceDataListEntryInterface() { return NativeCall(this, "APrimalStructure.GetUObjectInterfaceDataListEntryInterface"); } + bool IncludeTransformInHeaderData() { return NativeCall(this, "APrimalStructure.IncludeTransformInHeaderData"); } + void InitDynamicMaterials(UMeshComponent * Component) { NativeCall(this, "APrimalStructure.InitDynamicMaterials", Component); } + bool Internal_IsInSnapChain(APrimalStructure * theStructure) { return NativeCall(this, "APrimalStructure.Internal_IsInSnapChain", theStructure); } + int IsAllowedToBuild(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FPlacementData * OutPlacementData, bool bDontAdjustForMaxRange, FRotator PlayerViewRotation, bool bFinalPlacement, TArray * AlternateSnapTransforms, FVector * SnapCheckStartLoc) { return NativeCall *, FVector *>(this, "APrimalStructure.IsAllowedToBuild", PC, AtLocation, AtRotation, OutPlacementData, bDontAdjustForMaxRange, PlayerViewRotation, bFinalPlacement, AlternateSnapTransforms, SnapCheckStartLoc); } + bool IsAttachedToShipInDryDock() { return NativeCall(this, "APrimalStructure.IsAttachedToShipInDryDock"); } + bool IsAttachedToShipInWetDock() { return NativeCall(this, "APrimalStructure.IsAttachedToShipInWetDock"); } + bool IsAttachedToSunkenShip() { return NativeCall(this, "APrimalStructure.IsAttachedToSunkenShip"); } + bool IsCheckingForAttachedToValidShip() { return NativeCall(this, "APrimalStructure.IsCheckingForAttachedToValidShip"); } + bool IsFullValidWorldStructure() { return NativeCall(this, "APrimalStructure.IsFullValidWorldStructure"); } + bool IsNetRelevantFor(APlayerController * RealViewer, AActor * Viewer, FVector * SrcLocation) { return NativeCall(this, "APrimalStructure.IsNetRelevantFor", RealViewer, Viewer, SrcLocation); } + bool IsOnlyLinkedToFastDecayStructures() { return NativeCall(this, "APrimalStructure.IsOnlyLinkedToFastDecayStructures"); } + bool IsOnlyLinkedToFastDecayStructuresInternal(TSet, FDefaultSetAllocator> * TestedStructures) { return NativeCall, FDefaultSetAllocator> *>(this, "APrimalStructure.IsOnlyLinkedToFastDecayStructuresInternal", TestedStructures); } + static bool IsPointNearSupplyCrateSpawn(UWorld * theWorld, FVector AtPoint) { return NativeCall(nullptr, "APrimalStructure.IsPointNearSupplyCrateSpawn", theWorld, AtPoint); } + static bool IsPointObstructedByWorldGeometry(UWorld * ForWorld, FVector ThePoint, bool bIgnoreTerrain, bool bOnlyCheckTerrain, bool bIgnoreFoliage, float OBSTRUCTION_CHECK_DIST) { return NativeCall(nullptr, "APrimalStructure.IsPointObstructedByWorldGeometry", ForWorld, ThePoint, bIgnoreTerrain, bOnlyCheckTerrain, bIgnoreFoliage, OBSTRUCTION_CHECK_DIST); } + bool IsShipStructure() { return NativeCall(this, "APrimalStructure.IsShipStructure"); } + void ModifyClientSideMoveToLocation(FVector * MoveToLoc) { NativeCall(this, "APrimalStructure.ModifyClientSideMoveToLocation", MoveToLoc); } + bool ModifyMoveToOrderedActorsArray(TArray * MoveToArray, APrimalCharacter * FromPlayer) { return NativeCall *, APrimalCharacter *>(this, "APrimalStructure.ModifyMoveToOrderedActorsArray", MoveToArray, FromPlayer); } + void NPC_OnArrivedAtStructure(APrimalCharacter * ForChar) { NativeCall(this, "APrimalStructure.NPC_OnArrivedAtStructure", ForChar); } + void NetDoSpawnEffects_Implementation() { NativeCall(this, "APrimalStructure.NetDoSpawnEffects_Implementation"); } + void NetSpawnCoreStructureDeathActor_Implementation(float BuffTimeReductionMultiplier) { NativeCall(this, "APrimalStructure.NetSpawnCoreStructureDeathActor_Implementation", BuffTimeReductionMultiplier); } + void NetUpdateOriginalOwnerNameAndID_Implementation(int NewOriginalOwnerID, FString * NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID_Implementation", NewOriginalOwnerID, NewOriginalOwnerName); } + void NetUpdateTeamAndOwnerName_Implementation(int NewTeam, FString * NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName_Implementation", NewTeam, NewOwnerName); } + void NonPlayerFinalStructurePlacement(int PlacementTargetingTeam, int PlacementOwningPlayerID, FString * PlacementOwningPlayerName, APrimalStructure * ForcePrimaryParent, bool bLinkToParent) { NativeCall(this, "APrimalStructure.NonPlayerFinalStructurePlacement", PlacementTargetingTeam, PlacementOwningPlayerID, PlacementOwningPlayerName, ForcePrimaryParent, bLinkToParent); } + float OffsetHUDFromBottomScreenY_Implementation(AHUD * ForHUD) { return NativeCall(this, "APrimalStructure.OffsetHUDFromBottomScreenY_Implementation", ForHUD); } + void OnAttachedShipDeath() { NativeCall(this, "APrimalStructure.OnAttachedShipDeath"); } + void OnAttachedToRaft() { NativeCall(this, "APrimalStructure.OnAttachedToRaft"); } + void OnAttachedToValidShip() { NativeCall(this, "APrimalStructure.OnAttachedToValidShip"); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalStructure.OnDeserializedByGame", DeserializationType); } + void OnFailedToAttachToValidShip() { NativeCall(this, "APrimalStructure.OnFailedToAttachToValidShip"); } + void OnRep_AttachmentReplication() { NativeCall(this, "APrimalStructure.OnRep_AttachmentReplication"); } + void OnStructurePlacedNotify(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bFlipped) { NativeCall(this, "APrimalStructure.OnStructurePlacedNotify", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bFlipped); } + void PlacedStructureLocation(APlayerController * ByPC) { NativeCall(this, "APrimalStructure.PlacedStructureLocation", ByPC); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructure.PostInitializeComponents"); } + void PostSpawnInitialize(FVector * SpawnLocation, FRotator * SpawnRotation, AActor * InOwner, APawn * InInstigator, bool bRemoteOwned, bool bNoFail, bool bDeferConstruction, bool bDeferBeginPlay) { NativeCall(this, "APrimalStructure.PostSpawnInitialize", SpawnLocation, SpawnRotation, InOwner, InInstigator, bRemoteOwned, bNoFail, bDeferConstruction, bDeferBeginPlay); } + void PostSpawnInitialize() { NativeCall(this, "APrimalStructure.PostSpawnInitialize"); } + void PreInitializeComponents() { NativeCall(this, "APrimalStructure.PreInitializeComponents"); } + void PrepareAsPlacementPreview() { NativeCall(this, "APrimalStructure.PrepareAsPlacementPreview"); } + void PrepareForSaving() { NativeCall(this, "APrimalStructure.PrepareForSaving"); } + bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalStructure.PreventCharacterBasing", OtherActor, BasedOnComponent); } + bool PreventChoosingRotation(APrimalStructurePlacer * ForPlacer) { return NativeCall(this, "APrimalStructure.PreventChoosingRotation", ForPlacer); } + bool PreventPlacingOnFloorClass(TSubclassOf FloorClass) { return NativeCall>(this, "APrimalStructure.PreventPlacingOnFloorClass", FloorClass); } + void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool checkedBox, int ExtraID1, int ExtraID2) { NativeCall(this, "APrimalStructure.ProcessEditText", ForPC, TextToUse, checkedBox, ExtraID1, ExtraID2); } + void RefreshStructureColors() { NativeCall(this, "APrimalStructure.RefreshStructureColors"); } + void RemoveLinkedStructure(APrimalStructure * Structure, AController * InstigatorController, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.RemoveLinkedStructure", Structure, InstigatorController, DamageCauser); } + void RepairCheckTimer() { NativeCall(this, "APrimalStructure.RepairCheckTimer"); } + static void ReprocessTree(TArray * StartingStructures, AController * InstigatorController, AActor * DamageCauser) { NativeCall *, AController *, AActor *>(nullptr, "APrimalStructure.ReprocessTree", StartingStructures, InstigatorController, DamageCauser); } + void SaddleDinoDied() { NativeCall(this, "APrimalStructure.SaddleDinoDied"); } + void ServerRequestUseItemWithActor(APlayerController * ForPC, UObject * anItem, int AdditionalData) { NativeCall(this, "APrimalStructure.ServerRequestUseItemWithActor", ForPC, anItem, AdditionalData); } + void SetAllowStructureColorSet(TArray newColorSet) { NativeCall>(this, "APrimalStructure.SetAllowStructureColorSet", newColorSet); } + void SetDinoSaddleAttachment(APrimalDinoCharacter * myDino, FName BoneName, FVector RelLoc, FRotator RelRot, bool bMaintainWorldPosition) { NativeCall(this, "APrimalStructure.SetDinoSaddleAttachment", myDino, BoneName, RelLoc, RelRot, bMaintainWorldPosition); } + void SetEnabled(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabled", bEnabled); } + void SetEnabledPrimarySnappedStructureParent_Implementation(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabledPrimarySnappedStructureParent_Implementation", bEnabled); } + void SetLinkedIDs() { NativeCall(this, "APrimalStructure.SetLinkedIDs"); } + void SetStaticMobility() { NativeCall(this, "APrimalStructure.SetStaticMobility"); } + void SetStructureCollisionChannels() { NativeCall(this, "APrimalStructure.SetStructureCollisionChannels"); } + void SetStructureColorValue(int ColorRegionIndex, int SetVal) { NativeCall(this, "APrimalStructure.SetStructureColorValue", ColorRegionIndex, SetVal); } + void SetStructureColors(TArray InStructureColors) { NativeCall>(this, "APrimalStructure.SetStructureColors", InStructureColors); } + void SetupComponentCollisionChannels(UPrimitiveComponent * PrimitiveComponent, bool bSetupDestructionMesh, bool bSetupMeshMaterials) { NativeCall(this, "APrimalStructure.SetupComponentCollisionChannels", PrimitiveComponent, bSetupDestructionMesh, bSetupMeshMaterials); } + void SetupDynamicMeshMaterials(UMeshComponent * meshComp, bool bDisableWorldSpaceEffects) { NativeCall(this, "APrimalStructure.SetupDynamicMeshMaterials", meshComp, bDisableWorldSpaceEffects); } + bool SkipDuringPartialWorldSave() { return NativeCall(this, "APrimalStructure.SkipDuringPartialWorldSave"); } + void StartRepair() { NativeCall(this, "APrimalStructure.StartRepair"); } + void Stasis() { NativeCall(this, "APrimalStructure.Stasis"); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalStructure.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool TickCriticalShipStructure(float DeltaTime) { return NativeCall(this, "APrimalStructure.TickCriticalShipStructure", DeltaTime); } + void TickPlacingShipStructure(APrimalRaft * OnShip, FVector LastPlacementHitLoc) { NativeCall(this, "APrimalStructure.TickPlacingShipStructure", OnShip, LastPlacementHitLoc); } + bool TickPlacingStructure(APrimalStructurePlacer * PlacerActor, float DeltaTime) { return NativeCall(this, "APrimalStructure.TickPlacingStructure", PlacerActor, DeltaTime); } + void TimeoutFor_DelayedClientAttachParentReplicationFixupCheck() { NativeCall(this, "APrimalStructure.TimeoutFor_DelayedClientAttachParentReplicationFixupCheck"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructure.TryMultiUse", ForPC, UseIndex); } + void Unstasis() { NativeCall(this, "APrimalStructure.Unstasis"); } + void UpdateStencilValues() { NativeCall(this, "APrimalStructure.UpdateStencilValues"); } + void UpdateTribeGroupStructureRank_Implementation(char NewRank) { NativeCall(this, "APrimalStructure.UpdateTribeGroupStructureRank_Implementation", NewRank); } + void UpdatedHealth(bool bDoReplication) { NativeCall(this, "APrimalStructure.UpdatedHealth", bDoReplication); } + bool UseDynamicMobility() { return NativeCall(this, "APrimalStructure.UseDynamicMobility"); } + bool AllowBeginPlacementBy(AShooterPlayerController * ByPC) { return NativeCall(this, "APrimalStructure.AllowBeginPlacementBy", ByPC); } + bool AllowPlacingMeOnStructure(APrimalStructure * ParentStructure, FPlacementData * ThePlacementData) { return NativeCall(this, "APrimalStructure.AllowPlacingMeOnStructure", ParentStructure, ThePlacementData); } + bool AllowPlacingStructureOnMe(APrimalStructure * ChildStructure, FPlacementData * ThePlacementData) { return NativeCall(this, "APrimalStructure.AllowPlacingStructureOnMe", ChildStructure, ThePlacementData); } + bool BPAllowJumpOutOfWaterOnto(AActor * Jumper) { return NativeCall(this, "APrimalStructure.BPAllowJumpOutOfWaterOnto", Jumper); } + bool BPAllowPickupGiveItem(APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.BPAllowPickupGiveItem", ForPC); } + bool BPAllowSnappingWith(APrimalStructure * OtherStructure, APlayerController * ForPC) { return NativeCall(this, "APrimalStructure.BPAllowSnappingWith", OtherStructure, ForPC); } + void BPApplyCustomDurabilityOnPickup(UPrimalItem * pickedup) { NativeCall(this, "APrimalStructure.BPApplyCustomDurabilityOnPickup", pickedup); } + bool BPCanFinalPlaceOnStructureSaddle(FPlacementData * data, APawn * AttachToPawn) { return NativeCall(this, "APrimalStructure.BPCanFinalPlaceOnStructureSaddle", data, AttachToPawn); } + bool BPForceConsideredEnemyFoundation(APlayerController * PC, APrimalStructure * ForNewStructure, FVector * TestAtLocation) { return NativeCall(this, "APrimalStructure.BPForceConsideredEnemyFoundation", PC, ForNewStructure, TestAtLocation); } + void BPGetInfoFromConsumedItemForPlacedStructure(UPrimalItem * ItemToConsumed) { NativeCall(this, "APrimalStructure.BPGetInfoFromConsumedItemForPlacedStructure", ItemToConsumed); } + void BPGetSnapFromPlacementMeshOverride(APrimalStructure * ParentStructure, FPlacementData * OutPlacementData, UStaticMesh ** OutMeshOverride, TSubclassOf * OutClassOverride, FVector * PreviewLocOffset, FRotator * PreviewRotOffset) { NativeCall *, FVector *, FRotator *>(this, "APrimalStructure.BPGetSnapFromPlacementMeshOverride", ParentStructure, OutPlacementData, OutMeshOverride, OutClassOverride, PreviewLocOffset, PreviewRotOffset); } + void BPGetSnapToPlacementMeshOverride(APrimalStructure * ChildStructure, FPlacementData * OutPlacementData, UStaticMesh ** OutMeshOverride, TSubclassOf * OutClassOverride, FVector * PreviewLocOffset, FRotator * PreviewRotOffset) { NativeCall *, FVector *, FRotator *>(this, "APrimalStructure.BPGetSnapToPlacementMeshOverride", ChildStructure, OutPlacementData, OutMeshOverride, OutClassOverride, PreviewLocOffset, PreviewRotOffset); } + float BPGetStructureWeight() { return NativeCall(this, "APrimalStructure.BPGetStructureWeight"); } + bool BPHandleBedFastTravel(AShooterPlayerController * ForPC, APrimalStructure * ToBed) { return NativeCall(this, "APrimalStructure.BPHandleBedFastTravel", ForPC, ToBed); } + void BPHandleStructureEnabled(bool bEnabled) { NativeCall(this, "APrimalStructure.BPHandleStructureEnabled", bEnabled); } + bool BPImpactEffect(FHitResult * HitRes, FVector * ShootDirection) { return NativeCall(this, "APrimalStructure.BPImpactEffect", HitRes, ShootDirection); } + int BPIsAllowedToBuild(FPlacementData * OutPlacementData, int CurrentAllowedReason) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuild", OutPlacementData, CurrentAllowedReason); } + int BPIsAllowedToBuildEx(FPlacementData * OutPlacementData, int CurrentAllowedReason, APlayerController * PC, bool bFinalPlacement) { return NativeCall(this, "APrimalStructure.BPIsAllowedToBuildEx", OutPlacementData, CurrentAllowedReason, PC, bFinalPlacement); } + bool BPOverrideAllowStructureAccess(AShooterPlayerController * ForPC, bool bIsAccessAllowed) { return NativeCall(this, "APrimalStructure.BPOverrideAllowStructureAccess", ForPC, bIsAccessAllowed); } + FString * BPOverrideCantBuildReasonString(FString * result, int CantBuildReason) { return NativeCall(this, "APrimalStructure.BPOverrideCantBuildReasonString", result, CantBuildReason); } + bool BPOverrideDemolish(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructure.BPOverrideDemolish", ForPC); } + FVector * BPOverridePlacementLocation(FVector * result, FVector PlacementLocation) { return NativeCall(this, "APrimalStructure.BPOverridePlacementLocation", result, PlacementLocation); } + bool BPOverrideSnappedToTransform(APrimalStructure * childStructure, int ChildSnapFromIndex, FVector UnsnappedPlacementPos, FRotator UnsnappedPlacementRot, FVector SnappedPlacementPos, FRotator SnappedPlacementRot, int SnapToIndex, FVector * OutLocation, FRotator * OutRotation, int * bForceInvalidateSnap) { return NativeCall(this, "APrimalStructure.BPOverrideSnappedToTransform", childStructure, ChildSnapFromIndex, UnsnappedPlacementPos, UnsnappedPlacementRot, SnappedPlacementPos, SnappedPlacementRot, SnapToIndex, OutLocation, OutRotation, bForceInvalidateSnap); } + void BPPlacedStructureLocation(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bFlipped) { NativeCall(this, "APrimalStructure.BPPlacedStructureLocation", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bFlipped); } + FPlacementData * BPPlacingWallAttachmentOnMe(FPlacementData * result, APrimalStructure * AttachedStructure, FPlacementData * OutPlacementData) { return NativeCall(this, "APrimalStructure.BPPlacingWallAttachmentOnMe", result, AttachedStructure, OutPlacementData); } + void BPPlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructure.BPPlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void BPPostLoadedFromSaveGame() { NativeCall(this, "APrimalStructure.BPPostLoadedFromSaveGame"); } + void BPPostSetStructureCollisionChannels() { NativeCall(this, "APrimalStructure.BPPostSetStructureCollisionChannels"); } + bool BPPreventPlacementOnPawn(APlayerController * PC, APrimalCharacter * ForCharacter, FName ForBone) { return NativeCall(this, "APrimalStructure.BPPreventPlacementOnPawn", PC, ForCharacter, ForBone); } + bool BPPreventPlacingOnFloorStructure(FPlacementData * theOutPlacementData, APrimalStructure * FloorStructure) { return NativeCall(this, "APrimalStructure.BPPreventPlacingOnFloorStructure", theOutPlacementData, FloorStructure); } + bool BPPreventPlacingStructureOntoMe(APlayerController * PC, APrimalStructure * ForNewStructure, FHitResult * ForHitResult) { return NativeCall(this, "APrimalStructure.BPPreventPlacingStructureOntoMe", PC, ForNewStructure, ForHitResult); } + bool BPPreventReplacementBy(APrimalStructure * theStructure) { return NativeCall(this, "APrimalStructure.BPPreventReplacementBy", theStructure); } + bool BPPreventReplacementOf(APrimalStructure * theStructure) { return NativeCall(this, "APrimalStructure.BPPreventReplacementOf", theStructure); } + bool BPPreventSpawnForPlayer(AShooterPlayerController * PC, bool bCheckCooldownTime, APrimalStructure * FromStructure) { return NativeCall(this, "APrimalStructure.BPPreventSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + bool BPPreventUsingAsFloorForStructure(FPlacementData * theOutPlacementData, APrimalStructure * StructureToPlaceOnMe) { return NativeCall(this, "APrimalStructure.BPPreventUsingAsFloorForStructure", theOutPlacementData, StructureToPlaceOnMe); } + void BPProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool checkedBox, int ExtraID1, int ExtraID2) { NativeCall(this, "APrimalStructure.BPProcessEditText", ForPC, TextToUse, checkedBox, ExtraID1, ExtraID2); } + void BPRefreshedStructureColors() { NativeCall(this, "APrimalStructure.BPRefreshedStructureColors"); } + void BPSaddleDinoDied() { NativeCall(this, "APrimalStructure.BPSaddleDinoDied"); } + void BPStructurePreGetMultiUseEntries(APlayerController * ForPC) { NativeCall(this, "APrimalStructure.BPStructurePreGetMultiUseEntries", ForPC); } + void BPTriggerStasisEvent() { NativeCall(this, "APrimalStructure.BPTriggerStasisEvent"); } + void BPUnstasis() { NativeCall(this, "APrimalStructure.BPUnstasis"); } + bool BPUseCountStructureInRange() { return NativeCall(this, "APrimalStructure.BPUseCountStructureInRange"); } + int BP_CanPlaceCriticalShipStructure(APrimalRaft * OnShip) { return NativeCall(this, "APrimalStructure.BP_CanPlaceCriticalShipStructure", OnShip); } + bool BP_ModifyClientSideMoveToLocation(FVector * MoveToLoc) { return NativeCall(this, "APrimalStructure.BP_ModifyClientSideMoveToLocation", MoveToLoc); } + bool BP_ModifyMoveToOrderedActorsArray(TArray * MoveToArray, APrimalCharacter * FromPlayer) { return NativeCall *, APrimalCharacter *>(this, "APrimalStructure.BP_ModifyMoveToOrderedActorsArray", MoveToArray, FromPlayer); } + void BP_OnAttachedShipDeath() { NativeCall(this, "APrimalStructure.BP_OnAttachedShipDeath"); } + void BP_OnAttachedToValidShip() { NativeCall(this, "APrimalStructure.BP_OnAttachedToValidShip"); } + void BP_OnDemolished(APlayerController * ForPC) { NativeCall(this, "APrimalStructure.BP_OnDemolished", ForPC); } + void BP_OnFailedToAttachToValidShip() { NativeCall(this, "APrimalStructure.BP_OnFailedToAttachToValidShip"); } + void BP_OnRepair(float RepairAmount) { NativeCall(this, "APrimalStructure.BP_OnRepair", RepairAmount); } + void BP_OnStructurePlacedNotify(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bFlipped) { NativeCall(this, "APrimalStructure.BP_OnStructurePlacedNotify", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bFlipped); } + bool BP_PreventChoosingRotation(APrimalStructurePlacer * ForPlacer) { return NativeCall(this, "APrimalStructure.BP_PreventChoosingRotation", ForPlacer); } + void BP_TickCriticalShipStructure(float DeltaTime) { NativeCall(this, "APrimalStructure.BP_TickCriticalShipStructure", DeltaTime); } + void ClearCustomColors() { NativeCall(this, "APrimalStructure.ClearCustomColors"); } + void ClientUpdateLinkedStructures(TArray * NewLinkedStructures) { NativeCall *>(this, "APrimalStructure.ClientUpdateLinkedStructures", NewLinkedStructures); } + void ClientUpdatedStructureColors() { NativeCall(this, "APrimalStructure.ClientUpdatedStructureColors"); } + void DrawPlacementHUD(AHUD * HUD) { NativeCall(this, "APrimalStructure.DrawPlacementHUD", HUD); } + FName * GetAttachedTurretCameraSocketNameOverride(FName * result, APrimalStructure * ForStructure) { return NativeCall(this, "APrimalStructure.GetAttachedTurretCameraSocketNameOverride", result, ForStructure); } + FVector * GetAttachedTurretYawLimitsOverride(FVector * result, APrimalStructure * ForStructure) { return NativeCall(this, "APrimalStructure.GetAttachedTurretYawLimitsOverride", result, ForStructure); } + TSubclassOf * GetBedFilterClass(TSubclassOf * result) { return NativeCall *, TSubclassOf *>(this, "APrimalStructure.GetBedFilterClass", result); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructure.GetPrivateStaticClass", Package); } + FString * GetTutorialHintString(FString * result) { return NativeCall(this, "APrimalStructure.GetTutorialHintString", result); } + bool IsValidForSnappingFrom(APrimalStructure * OtherStructure) { return NativeCall(this, "APrimalStructure.IsValidForSnappingFrom", OtherStructure); } + bool IsValidSnapPointFrom(APrimalStructure * ParentStructure, int MySnapPointFromIndex) { return NativeCall(this, "APrimalStructure.IsValidSnapPointFrom", ParentStructure, MySnapPointFromIndex); } + bool IsValidSnapPointTo(APrimalStructure * ChildStructure, int MySnapPointToIndex) { return NativeCall(this, "APrimalStructure.IsValidSnapPointTo", ChildStructure, MySnapPointToIndex); } + void MultiAddStructuresPlacedOnFloor(APrimalStructure * structure) { NativeCall(this, "APrimalStructure.MultiAddStructuresPlacedOnFloor", structure); } + void NetDoSpawnEffects() { NativeCall(this, "APrimalStructure.NetDoSpawnEffects"); } + void NetSpawnCoreStructureDeathActor(float BuffTimeReductionMultiplier) { NativeCall(this, "APrimalStructure.NetSpawnCoreStructureDeathActor", BuffTimeReductionMultiplier); } + void NetUpdateOriginalOwnerNameAndID(int NewOriginalOwnerID, FString * NewOriginalOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateOriginalOwnerNameAndID", NewOriginalOwnerID, NewOriginalOwnerName); } + void NetUpdateTeamAndOwnerName(int NewTeam, FString * NewOwnerName) { NativeCall(this, "APrimalStructure.NetUpdateTeamAndOwnerName", NewTeam, NewOwnerName); } + void OnChildStructurePlacedNotify(APrimalStructure * ChildStructure) { NativeCall(this, "APrimalStructure.OnChildStructurePlacedNotify", ChildStructure); } + void OnShipImpactedStructure(APrimalRaft * Ship, UPrimitiveComponent * OtherComp, FVector NormalImpulse, FHitResult * Hit) { NativeCall(this, "APrimalStructure.OnShipImpactedStructure", Ship, OtherComp, NormalImpulse, Hit); } + void PlacedOnDino(APrimalDinoCharacter * OnChar) { NativeCall(this, "APrimalStructure.PlacedOnDino", OnChar); } + void SetEnabledPrimarySnappedStructureParent(bool bEnabled) { NativeCall(this, "APrimalStructure.SetEnabledPrimarySnappedStructureParent", bEnabled); } + static void StaticRegisterNativesAPrimalStructure() { NativeCall(nullptr, "APrimalStructure.StaticRegisterNativesAPrimalStructure"); } + bool StructurePlacementOverlapForceEncroachment(APrimalStructure * PlacingStructure, AActor * OnDinoCharacter, APrimalStructure * SnappedToParentStructure, APrimalStructure * ReplacesStructure, FVector * PlacementLocation, FVector * EncroachmentCheckLocation, FVector * EncroachmentCheckExtent) { return NativeCall(this, "APrimalStructure.StructurePlacementOverlapForceEncroachment", PlacingStructure, OnDinoCharacter, SnappedToParentStructure, ReplacesStructure, PlacementLocation, EncroachmentCheckLocation, EncroachmentCheckExtent); } + void UpdateTribeGroupStructureRank(char NewRank) { NativeCall(this, "APrimalStructure.UpdateTribeGroupStructureRank", NewRank); } +}; + +struct APrimalStructureBed : APrimalStructure +{ + bool& bInLandClaimedFlagRangeField() { return *GetNativePointerField(this, "APrimalStructureBed.bInLandClaimedFlagRange"); } + FVector& PlayerSpawnLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureBed.PlayerSpawnLocOffset"); } + FRotator& PlayerSpawnRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureBed.PlayerSpawnRotOffset"); } + unsigned int& LinkedPlayerIDField() { return *GetNativePointerField(this, "APrimalStructureBed.LinkedPlayerID"); } + FString& LinkedPlayerNameField() { return *GetNativePointerField(this, "APrimalStructureBed.LinkedPlayerName"); } + FString& BedNameField() { return *GetNativePointerField(this, "APrimalStructureBed.BedName"); } + float& UseCooldownRadiusField() { return *GetNativePointerField(this, "APrimalStructureBed.UseCooldownRadius"); } + float& AttachedToPlatformStructureEnemySpawnPreventionRadiusField() { return *GetNativePointerField(this, "APrimalStructureBed.AttachedToPlatformStructureEnemySpawnPreventionRadius"); } + unsigned int& PlacedOnShipIDField() { return *GetNativePointerField(this, "APrimalStructureBed.PlacedOnShipID"); } + unsigned int& NextAllowedUseTimeField() { return *GetNativePointerField(this, "APrimalStructureBed.NextAllowedUseTime"); } + long double& LastSignNamingTimeField() { return *GetNativePointerField(this, "APrimalStructureBed.LastSignNamingTime"); } + + // Bit fields + + BitFieldValue bDestroyAfterRespawnUse() { return { this, "APrimalStructureBed.bDestroyAfterRespawnUse" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureBed.GetPrivateStaticClass"); } + bool AllowPickupForItem(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureBed.AllowPickupForItem", ForPC); } + bool AllowSpawnForDownloadedPlayer(unsigned __int64 PlayerDataID, unsigned __int64 TribeID, bool bCheckCooldownTime) { return NativeCall(this, "APrimalStructureBed.AllowSpawnForDownloadedPlayer", PlayerDataID, TribeID, bCheckCooldownTime); } + bool AllowSpawnForPlayer(AShooterPlayerController * PC, bool bCheckCooldownTime, APrimalStructure * FromStructure) { return NativeCall(this, "APrimalStructureBed.AllowSpawnForPlayer", PC, bCheckCooldownTime, FromStructure); } + void BeginPlay() { NativeCall(this, "APrimalStructureBed.BeginPlay"); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalStructureBed.ChangeActorTeam", NewTeam); } + bool CheckStructureActivateTribeGroupPermission(unsigned __int64 PlayerDataID, unsigned __int64 TribeID) { return NativeCall(this, "APrimalStructureBed.CheckStructureActivateTribeGroupPermission", PlayerDataID, TribeID); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureBed.ClientMultiUse", ForPC, UseIndex); } + void Destroyed() { NativeCall(this, "APrimalStructureBed.Destroyed"); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureBed.DrawHUD", HUD); } + bool FastTravelAllowSpawnForPlayer(unsigned int PlayerDataID, bool bCheckCooldownTime) { return NativeCall(this, "APrimalStructureBed.FastTravelAllowSpawnForPlayer", PlayerDataID, bCheckCooldownTime); } + static APrimalStructureBed * FindBedWithID(UWorld * forWorld, int theBedID) { return NativeCall(nullptr, "APrimalStructureBed.FindBedWithID", forWorld, theBedID); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructureBed.GetDescriptiveName", result); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureBed.GetLifetimeReplicatedProps", OutLifetimeProps); } + FVector * GetPlayerSpawnLocation(FVector * result) { return NativeCall(this, "APrimalStructureBed.GetPlayerSpawnLocation", result); } + FRotator * GetPlayerSpawnRotation(FRotator * result) { return NativeCall(this, "APrimalStructureBed.GetPlayerSpawnRotation", result); } + FVector2D * GetRelativeLocationInServer(FVector2D * result) { return NativeCall(this, "APrimalStructureBed.GetRelativeLocationInServer", result); } + FSpawnPointInfo * GetSpawnPointInfo(FSpawnPointInfo * result) { return NativeCall(this, "APrimalStructureBed.GetSpawnPointInfo", result); } + int IsAllowedToBuild(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FPlacementData * OutPlacementData, bool bDontAdjustForMaxRange, FRotator PlayerViewRotation, bool bFinalPlacement, TArray * AlternateSnapTransforms, FVector * SnapCheckStartLoc) { return NativeCall *, FVector *>(this, "APrimalStructureBed.IsAllowedToBuild", PC, AtLocation, AtRotation, OutPlacementData, bDontAdjustForMaxRange, PlayerViewRotation, bFinalPlacement, AlternateSnapTransforms, SnapCheckStartLoc); } + void OnBedUsed(AShooterPlayerController * PC, AShooterCharacter * ForPawn, unsigned int OriginServerId, FVector2D * FromRelativeLocInOriginServer) { NativeCall(this, "APrimalStructureBed.OnBedUsed", PC, ForPawn, OriginServerId, FromRelativeLocInOriginServer); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalStructureBed.OnDeserializedByGame", DeserializationType); } + void OnStructurePlacedNotify(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bFlipped) { NativeCall(this, "APrimalStructureBed.OnStructurePlacedNotify", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bFlipped); } + void PlacedStructure(AShooterPlayerController * PC) { NativeCall(this, "APrimalStructureBed.PlacedStructure", PC); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructureBed.PostInitializeComponents"); } + void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool __formal, int ExtraID1, int ExtraID2) { NativeCall(this, "APrimalStructureBed.ProcessEditText", ForPC, TextToUse, __formal, ExtraID1, ExtraID2); } + void SaddleDinoDied() { NativeCall(this, "APrimalStructureBed.SaddleDinoDied"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureBed.TryMultiUse", ForPC, UseIndex); } + void UpdateInLandClaimedFlagRange(APrimalStructureClaimFlag * ToIgnore) { NativeCall(this, "APrimalStructureBed.UpdateInLandClaimedFlagRange", ToIgnore); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructureBed.GetPrivateStaticClass", Package); } + void SpawnedPlayerFor(AShooterPlayerController * PC, APawn * ForPawn) { NativeCall(this, "APrimalStructureBed.SpawnedPlayerFor", PC, ForPawn); } + static void StaticRegisterNativesAPrimalStructureBed() { NativeCall(nullptr, "APrimalStructureBed.StaticRegisterNativesAPrimalStructureBed"); } +}; + +struct APrimalStructureDoor : APrimalStructure +{ + TSubobjectPtr& MyDoorTransformField() { return *GetNativePointerField*>(this, "APrimalStructureDoor.MyDoorTransform"); } + float& RotationSpeedField() { return *GetNativePointerField(this, "APrimalStructureDoor.RotationSpeed"); } + USoundCue * DoorOpenSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorOpenSound"); } + USoundCue * DoorCloseSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorCloseSound"); } + unsigned int& CurrentPinCodeField() { return *GetNativePointerField(this, "APrimalStructureDoor.CurrentPinCode"); } + float& DoorStateChangeIgnoreEncroachmentIntervalField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorStateChangeIgnoreEncroachmentInterval"); } + char& DoorOpenStateField() { return *GetNativePointerField(this, "APrimalStructureDoor.DoorOpenState"); } + char& ClientPrevDoorOpenStateField() { return *GetNativePointerField(this, "APrimalStructureDoor.ClientPrevDoorOpenState"); } + long double& LastLockStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastLockStateChangeTime"); } + FRotator& SecondDoorDefaultRotField() { return *GetNativePointerField(this, "APrimalStructureDoor.SecondDoorDefaultRot"); } + float& CurrentDoorAngleField() { return *GetNativePointerField(this, "APrimalStructureDoor.CurrentDoorAngle"); } + USoundBase * UnlockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.UnlockDoorSound"); } + USoundBase * LockDoorSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockDoorSound"); } + USoundBase * LockedSoundField() { return *GetNativePointerField(this, "APrimalStructureDoor.LockedSound"); } + long double& LastPinOpenSuccessTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastPinOpenSuccessTime"); } + long double& LastDoorStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureDoor.LastDoorStateChangeTime"); } + char& DelayedDoorStateField() { return *GetNativePointerField(this, "APrimalStructureDoor.DelayedDoorState"); } + + // Bit fields + + BitFieldValue bInvertOpenCloseDirection() { return { this, "APrimalStructureDoor.bInvertOpenCloseDirection" }; } + BitFieldValue bSupportsLocking() { return { this, "APrimalStructureDoor.bSupportsLocking" }; } + BitFieldValue bUseSecondDoor() { return { this, "APrimalStructureDoor.bUseSecondDoor" }; } + BitFieldValue bSupportsPinLocking() { return { this, "APrimalStructureDoor.bSupportsPinLocking" }; } + BitFieldValue bIsLocked() { return { this, "APrimalStructureDoor.bIsLocked" }; } + BitFieldValue bIsPinLocked() { return { this, "APrimalStructureDoor.bIsPinLocked" }; } + BitFieldValue bAdminOnlyAccess() { return { this, "APrimalStructureDoor.bAdminOnlyAccess" }; } + BitFieldValue bCanBeForcedOpenByDino() { return { this, "APrimalStructureDoor.bCanBeForcedOpenByDino" }; } + BitFieldValue bPreventBasingWhileMoving() { return { this, "APrimalStructureDoor.bPreventBasingWhileMoving" }; } + BitFieldValue bForceDoorOpenIn() { return { this, "APrimalStructureDoor.bForceDoorOpenIn" }; } + BitFieldValue bForceDoorOpenOut() { return { this, "APrimalStructureDoor.bForceDoorOpenOut" }; } + BitFieldValue bIsDoorMoving() { return { this, "APrimalStructureDoor.bIsDoorMoving" }; } + BitFieldValue bForceStaticMobility() { return { this, "APrimalStructureDoor.bForceStaticMobility" }; } + BitFieldValue bRotatePitch() { return { this, "APrimalStructureDoor.bRotatePitch" }; } + BitFieldValue bRotateRoll() { return { this, "APrimalStructureDoor.bRotateRoll" }; } + BitFieldValue bRotateYaw() { return { this, "APrimalStructureDoor.bRotateYaw" }; } + BitFieldValue bInitializedRotation() { return { this, "APrimalStructureDoor.bInitializedRotation" }; } + BitFieldValue bPreventDoorInterpolation() { return { this, "APrimalStructureDoor.bPreventDoorInterpolation" }; } + BitFieldValue bUseBPGotoDoorState() { return { this, "APrimalStructureDoor.bUseBPGotoDoorState" }; } + BitFieldValue bIsDoorTickActive() { return { this, "APrimalStructureDoor.bIsDoorTickActive" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureDoor.GetPrivateStaticClass"); } + bool AllowIgnoreCharacterEncroachment_Implementation(UPrimitiveComponent * HitComponent, AActor * EncroachingCharacter) { return NativeCall(this, "APrimalStructureDoor.AllowIgnoreCharacterEncroachment_Implementation", HitComponent, EncroachingCharacter); } + bool AllowPickupForItem(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowPickupForItem", ForPC); } + bool AllowStructureAccess(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.AllowStructureAccess", ForPC); } + bool ApplyPinCode(AShooterPlayerController * ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureDoor.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + void BPSetDoorState(int DoorState) { NativeCall(this, "APrimalStructureDoor.BPSetDoorState", DoorState); } + void BeginPlay() { NativeCall(this, "APrimalStructureDoor.BeginPlay"); } + bool CanOpen(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureDoor.CanOpen", ForPC); } + void CheckLoadingDoorTick() { NativeCall(this, "APrimalStructureDoor.CheckLoadingDoorTick"); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureDoor.ClientMultiUse", ForPC, UseIndex); } + void DelayedGotoDoorState(char DoorState, float DelayTime) { NativeCall(this, "APrimalStructureDoor.DelayedGotoDoorState", DoorState, DelayTime); } + void DelayedGotoDoorStateTimer() { NativeCall(this, "APrimalStructureDoor.DelayedGotoDoorStateTimer"); } + void DoorTick() { NativeCall(this, "APrimalStructureDoor.DoorTick"); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureDoor.DrawHUD", HUD); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructureDoor.GetDescriptiveName", result); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureDoor.GetLifetimeReplicatedProps", OutLifetimeProps); } + void GotoDoorState(char DoorState) { NativeCall(this, "APrimalStructureDoor.GotoDoorState", DoorState); } + void NetGotoDoorState_Implementation(char DoorState) { NativeCall(this, "APrimalStructureDoor.NetGotoDoorState_Implementation", DoorState); } + void OnRep_DoorOpenState(char PrevDoorOpenState) { NativeCall(this, "APrimalStructureDoor.OnRep_DoorOpenState", PrevDoorOpenState); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructureDoor.PostInitializeComponents"); } + bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalStructureDoor.PreventCharacterBasing", OtherActor, BasedOnComponent); } + void SetDoorTickActive(bool bNewActive) { NativeCall(this, "APrimalStructureDoor.SetDoorTickActive", bNewActive); } + void SetStaticMobility() { NativeCall(this, "APrimalStructureDoor.SetStaticMobility"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureDoor.TryMultiUse", ForPC, UseIndex); } + void BPGotoDoorState(int NewDoorState) { NativeCall(this, "APrimalStructureDoor.BPGotoDoorState", NewDoorState); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructureDoor.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesAPrimalStructureDoor() { NativeCall(nullptr, "APrimalStructureDoor.StaticRegisterNativesAPrimalStructureDoor"); } +}; + +struct APrimalStructureItemContainer : APrimalStructure +{ + UPrimalInventoryComponent * MyInventoryComponentField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MyInventoryComponent"); } + FString& HasPowerStringOverrideField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.HasPowerStringOverride"); } + FString& NoPowerStringOverrideField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NoPowerStringOverride"); } + TSubclassOf& BatteryClassOverrideField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.BatteryClassOverride"); } + int& PoweredOverrideCounterField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.PoweredOverrideCounter"); } + float& NotifyNearbyPowerGeneratorDistanceField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NotifyNearbyPowerGeneratorDistance"); } + int& NotifyNearbyPowerGeneratorOctreeGroupField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NotifyNearbyPowerGeneratorOctreeGroup"); } + TArray ActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ActivateMaterials"); } + TArray InActivateMaterialsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.InActivateMaterials"); } + UChildActorComponent * MyChildEmitterSpawnableField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MyChildEmitterSpawnable"); } + FString& BoxNameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BoxName"); } + float& InsulationRangeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.InsulationRange"); } + float& HyperThermiaInsulationField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.HyperThermiaInsulation"); } + float& HypoThermiaInsulationField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.HypoThermiaInsulation"); } + float& ContainerActiveDecreaseHealthSpeedField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerActiveDecreaseHealthSpeed"); } + float& FuelConsumptionIntervalsMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.FuelConsumptionIntervalsMultiplier"); } + float& DropInventoryOnDestructionLifespanField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DropInventoryOnDestructionLifespan"); } + FString& ActivateContainerStringField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ActivateContainerString"); } + FString& DeactivateContainerStringField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DeactivateContainerString"); } + TSubclassOf& ContainerActiveHealthDecreaseDamageTypePassiveField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ContainerActiveHealthDecreaseDamageTypePassive"); } + TArray>& ActiveRequiresFuelItemsField() { return *GetNativePointerField>*>(this, "APrimalStructureItemContainer.ActiveRequiresFuelItems"); } + TArray& FuelItemsConsumeIntervalField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.FuelItemsConsumeInterval"); } + TArray>& FuelItemsConsumedGiveItemsField() { return *GetNativePointerField>*>(this, "APrimalStructureItemContainer.FuelItemsConsumedGiveItems"); } + long double& NetDestructionTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.NetDestructionTime"); } + unsigned int& CurrentPinCodeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.CurrentPinCode"); } + long double& CurrentFuelTimeCacheField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.CurrentFuelTimeCache"); } + long double& LastCheckedFuelTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastCheckedFuelTime"); } + int& LinkedPowerJunctionStructureIDField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LinkedPowerJunctionStructureID"); } + int& CurrentItemCountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.CurrentItemCount"); } + int& MaxItemCountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MaxItemCount"); } + TWeakObjectPtr& LinkedPowerJunctionStructureField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.LinkedPowerJunctionStructure"); } + TSubclassOf& NextConsumeFuelGiveItemTypeField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.NextConsumeFuelGiveItemType"); } + long double& LastLockStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastLockStateChangeTime"); } + long double& LastActiveStateChangeTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastActiveStateChangeTime"); } + int& LastPowerJunctionLinkIDField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastPowerJunctionLinkID"); } + float& BasedCharacterDamageIntervalField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BasedCharacterDamageInterval"); } + float& BasedCharacterDamageAmountField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BasedCharacterDamageAmount"); } + TSubclassOf& BasedCharacterDamageTypeField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.BasedCharacterDamageType"); } + TSubclassOf& EngramRequirementClassOverrideField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.EngramRequirementClassOverride"); } + AActor * LinkedBlueprintSpawnActorPointField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LinkedBlueprintSpawnActorPoint"); } + TSubclassOf& PoweredNearbyStructureTemplateField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.PoweredNearbyStructureTemplate"); } + float& PoweredNearbyStructureRangeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.PoweredNearbyStructureRange"); } + FString& OpenSceneActionNameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.OpenSceneActionName"); } + FString& DisabledOpenSceneActionNameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DisabledOpenSceneActionName"); } + TSubclassOf& RequiresItemForOpenSceneActionField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.RequiresItemForOpenSceneAction"); } + long double& DeathCacheCreationTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DeathCacheCreationTime"); } + long double& LastBasedCharacterDamageTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastBasedCharacterDamageTime"); } + int& LastBasedCharacterDamageFrameField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastBasedCharacterDamageFrame"); } + long double& LastSignNamingTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastSignNamingTime"); } + FVector& JunctionCableBeamOffsetStartField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.JunctionCableBeamOffsetStart"); } + FVector& JunctionCableBeamOffsetEndField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.JunctionCableBeamOffsetEnd"); } + USoundBase * ContainerActivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerActivatedSound"); } + USoundBase * ContainerDeactivatedSoundField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ContainerDeactivatedSound"); } + TSubclassOf& DemolishInventoryDepositClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.DemolishInventoryDepositClass"); } + TSubclassOf& FuelItemTrueClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.FuelItemTrueClass"); } + TSubclassOf& ReplicatedFuelItemClassField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.ReplicatedFuelItemClass"); } + __int16& ReplicatedFuelItemColorIndexField() { return *GetNativePointerField<__int16*>(this, "APrimalStructureItemContainer.ReplicatedFuelItemColorIndex"); } + USoundBase * DefaultAudioTemplateField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DefaultAudioTemplate"); } + TArray>& OverrideParticleTemplateItemClassesField() { return *GetNativePointerField>*>(this, "APrimalStructureItemContainer.OverrideParticleTemplateItemClasses"); } + TArray OverrideAudioTemplatesField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.OverrideAudioTemplates"); } + float& MaxActivationDistanceField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.MaxActivationDistance"); } + FString& BoxNamePrefaceStringField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.BoxNamePrefaceString"); } + char& TribeGroupInventoryRankField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.TribeGroupInventoryRank"); } + TArray& FuelConsumeDecreaseDurabilityAmountsField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.FuelConsumeDecreaseDurabilityAmounts"); } + float& RandomFuelUpdateTimeMinField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.RandomFuelUpdateTimeMin"); } + float& RandomFuelUpdateTimeMaxField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.RandomFuelUpdateTimeMax"); } + long double& LastDeactivatedTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastDeactivatedTime"); } + long double& LastActivatedTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.LastActivatedTime"); } + float& ValidCraftingResourceMaxDurabilityField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ValidCraftingResourceMaxDurability"); } + float& ActivationCooldownTimeField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.ActivationCooldownTime"); } + float& UsablePriorityField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.UsablePriority"); } + unsigned __int64& DeathCacheCharacterIDField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DeathCacheCharacterID"); } + float& SinglePlayerFuelConsumptionIntervalsMultiplierField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.SinglePlayerFuelConsumptionIntervalsMultiplier"); } + float& PoweredBatteryDurabilityToDecreasePerSecondField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.PoweredBatteryDurabilityToDecreasePerSecond"); } + float& DropInventoryDepositTraceDistanceField() { return *GetNativePointerField(this, "APrimalStructureItemContainer.DropInventoryDepositTraceDistance"); } + TEnumAsByte& CaptainOrdersActivationGroupField() { return *GetNativePointerField*>(this, "APrimalStructureItemContainer.CaptainOrdersActivationGroup"); } + + // Bit fields + + BitFieldValue bAutoActivateContainer() { return { this, "APrimalStructureItemContainer.bAutoActivateContainer" }; } + BitFieldValue bCanToggleActivation() { return { this, "APrimalStructureItemContainer.bCanToggleActivation" }; } + BitFieldValue bAutoActivateWhenFueled() { return { this, "APrimalStructureItemContainer.bAutoActivateWhenFueled" }; } + BitFieldValue bAllowCustomName() { return { this, "APrimalStructureItemContainer.bAllowCustomName" }; } + BitFieldValue bContainerActivated() { return { this, "APrimalStructureItemContainer.bContainerActivated" }; } + BitFieldValue bOnlyUseSpoilingMultipliersIfActivated() { return { this, "APrimalStructureItemContainer.bOnlyUseSpoilingMultipliersIfActivated" }; } + BitFieldValue bCraftingSubstractConnectedWater() { return { this, "APrimalStructureItemContainer.bCraftingSubstractConnectedWater" }; } + BitFieldValue bForceNoPinLocking() { return { this, "APrimalStructureItemContainer.bForceNoPinLocking" }; } + BitFieldValue bServerBPNotifyInventoryItemChanges() { return { this, "APrimalStructureItemContainer.bServerBPNotifyInventoryItemChanges" }; } + BitFieldValue bDisplayActivationOnInventoryUI() { return { this, "APrimalStructureItemContainer.bDisplayActivationOnInventoryUI" }; } + BitFieldValue bUseBPGetFuelConsumptionMultiplier() { return { this, "APrimalStructureItemContainer.bUseBPGetFuelConsumptionMultiplier" }; } + BitFieldValue bPreventToggleActivation() { return { this, "APrimalStructureItemContainer.bPreventToggleActivation" }; } + BitFieldValue bServerBPNotifyInventoryItemChangesUseQuantity() { return { this, "APrimalStructureItemContainer.bServerBPNotifyInventoryItemChangesUseQuantity" }; } + BitFieldValue bStartedUnderwater() { return { this, "APrimalStructureItemContainer.bStartedUnderwater" }; } + BitFieldValue bCheckStartedUnderwater() { return { this, "APrimalStructureItemContainer.bCheckStartedUnderwater" }; } + BitFieldValue bDisplayActivationOnInventoryUISecondary() { return { this, "APrimalStructureItemContainer.bDisplayActivationOnInventoryUISecondary" }; } + BitFieldValue bDisplayActivationOnInventoryUITertiary() { return { this, "APrimalStructureItemContainer.bDisplayActivationOnInventoryUITertiary" }; } + BitFieldValue bFuelAllowActivationWhenNoPower() { return { this, "APrimalStructureItemContainer.bFuelAllowActivationWhenNoPower" }; } + BitFieldValue bPoweredAllowBattery() { return { this, "APrimalStructureItemContainer.bPoweredAllowBattery" }; } + BitFieldValue bPoweredUsingBattery() { return { this, "APrimalStructureItemContainer.bPoweredUsingBattery" }; } + BitFieldValue bPoweredHasBattery() { return { this, "APrimalStructureItemContainer.bPoweredHasBattery" }; } + BitFieldValue bPoweredAllowNPC() { return { this, "APrimalStructureItemContainer.bPoweredAllowNPC" }; } + BitFieldValue bPoweredUsingNPC() { return { this, "APrimalStructureItemContainer.bPoweredUsingNPC" }; } + BitFieldValue bPoweredHasNPC() { return { this, "APrimalStructureItemContainer.bPoweredHasNPC" }; } + BitFieldValue bOverrideHasPowerString() { return { this, "APrimalStructureItemContainer.bOverrideHasPowerString" }; } + BitFieldValue bIsLocked() { return { this, "APrimalStructureItemContainer.bIsLocked" }; } + BitFieldValue bIsPinLocked() { return { this, "APrimalStructureItemContainer.bIsPinLocked" }; } + BitFieldValue bHasFuel() { return { this, "APrimalStructureItemContainer.bHasFuel" }; } + BitFieldValue bIsUnderwater() { return { this, "APrimalStructureItemContainer.bIsUnderwater" }; } + BitFieldValue bDisableActivationUnderwater() { return { this, "APrimalStructureItemContainer.bDisableActivationUnderwater" }; } + BitFieldValue bSupportsLocking() { return { this, "APrimalStructureItemContainer.bSupportsLocking" }; } + BitFieldValue bSupportsPinLocking() { return { this, "APrimalStructureItemContainer.bSupportsPinLocking" }; } + BitFieldValue bDropInventoryOnDestruction() { return { this, "APrimalStructureItemContainer.bDropInventoryOnDestruction" }; } + BitFieldValue bDestroyWhenAllItemsRemoved() { return { this, "APrimalStructureItemContainer.bDestroyWhenAllItemsRemoved" }; } + BitFieldValue bDrinkingWater() { return { this, "APrimalStructureItemContainer.bDrinkingWater" }; } + BitFieldValue bPoweredWaterSourceWhenActive() { return { this, "APrimalStructureItemContainer.bPoweredWaterSourceWhenActive" }; } + BitFieldValue bActiveRequiresPower() { return { this, "APrimalStructureItemContainer.bActiveRequiresPower" }; } + BitFieldValue bIsPowerJunction() { return { this, "APrimalStructureItemContainer.bIsPowerJunction" }; } + BitFieldValue bAutoActivateIfPowered() { return { this, "APrimalStructureItemContainer.bAutoActivateIfPowered" }; } + BitFieldValue bLastToggleActivated() { return { this, "APrimalStructureItemContainer.bLastToggleActivated" }; } + BitFieldValue bSupportsPinActivation() { return { this, "APrimalStructureItemContainer.bSupportsPinActivation" }; } + BitFieldValue bIsPowered() { return { this, "APrimalStructureItemContainer.bIsPowered" }; } + BitFieldValue bOnlyAllowTeamActivation() { return { this, "APrimalStructureItemContainer.bOnlyAllowTeamActivation" }; } + BitFieldValue bReplicateItemFuelClass() { return { this, "APrimalStructureItemContainer.bReplicateItemFuelClass" }; } + BitFieldValue bUseOpenSceneAction() { return { this, "APrimalStructureItemContainer.bUseOpenSceneAction" }; } + BitFieldValue bHandledDestruction() { return { this, "APrimalStructureItemContainer.bHandledDestruction" }; } + BitFieldValue bUseBPActivated() { return { this, "APrimalStructureItemContainer.bUseBPActivated" }; } + BitFieldValue bUseBPCanBeActivated() { return { this, "APrimalStructureItemContainer.bUseBPCanBeActivated" }; } + BitFieldValue bUseBPCanBeActivatedByPlayer() { return { this, "APrimalStructureItemContainer.bUseBPCanBeActivatedByPlayer" }; } + BitFieldValue bBPOnContainerActiveHealthDecrease() { return { this, "APrimalStructureItemContainer.bBPOnContainerActiveHealthDecrease" }; } + BitFieldValue bBPIsValidWaterSourceForPipe() { return { this, "APrimalStructureItemContainer.bBPIsValidWaterSourceForPipe" }; } + BitFieldValue bAllowAutoActivateWhenNoPower() { return { this, "APrimalStructureItemContainer.bAllowAutoActivateWhenNoPower" }; } + BitFieldValue bAutoActivateWhenNoPower() { return { this, "APrimalStructureItemContainer.bAutoActivateWhenNoPower" }; } + BitFieldValue bRequiresItemExactClass() { return { this, "APrimalStructureItemContainer.bRequiresItemExactClass" }; } + BitFieldValue bDestroyWhenAllItemsRemovedExceptDefaults() { return { this, "APrimalStructureItemContainer.bDestroyWhenAllItemsRemovedExceptDefaults" }; } + BitFieldValue bInventoryForcePreventRemoteAddItems() { return { this, "APrimalStructureItemContainer.bInventoryForcePreventRemoteAddItems" }; } + BitFieldValue bInventoryForcePreventItemAppends() { return { this, "APrimalStructureItemContainer.bInventoryForcePreventItemAppends" }; } + BitFieldValue bDidSetContainerActive() { return { this, "APrimalStructureItemContainer.bDidSetContainerActive" }; } + BitFieldValue bUseDeathCacheCharacterID() { return { this, "APrimalStructureItemContainer.bUseDeathCacheCharacterID" }; } + BitFieldValue bUseBPGetQuantityOfItemWithoutCheckingInventory() { return { this, "APrimalStructureItemContainer.bUseBPGetQuantityOfItemWithoutCheckingInventory" }; } + BitFieldValue bUseBPSetPlayerConstructor() { return { this, "APrimalStructureItemContainer.bUseBPSetPlayerConstructor" }; } + BitFieldValue bReplicateLastActivatedTime() { return { this, "APrimalStructureItemContainer.bReplicateLastActivatedTime" }; } + BitFieldValue bIsAmmoContainer() { return { this, "APrimalStructureItemContainer.bIsAmmoContainer" }; } + BitFieldValue bForceDropInventoryOnDeath() { return { this, "APrimalStructureItemContainer.bForceDropInventoryOnDeath" }; } + BitFieldValue bStructureEnableActorTickWhenActivated() { return { this, "APrimalStructureItemContainer.bStructureEnableActorTickWhenActivated" }; } + BitFieldValue bCraftingSubstractOwnWater() { return { this, "APrimalStructureItemContainer.bCraftingSubstractOwnWater" }; } + BitFieldValue bForceNoStructureLocking() { return { this, "APrimalStructureItemContainer.bForceNoStructureLocking" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureItemContainer.GetPrivateStaticClass"); } + bool IsPowered() { return NativeCall(this, "APrimalStructureItemContainer.IsPowered"); } + bool AllowSaving() { return NativeCall(this, "APrimalStructureItemContainer.AllowSaving"); } + bool AllowToggleActivation(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.AllowToggleActivation", ForPC); } + bool ApplyPinCode(AShooterPlayerController * ForPC, int appledPinCode, bool bIsSetting, int TheCustomIndex) { return NativeCall(this, "APrimalStructureItemContainer.ApplyPinCode", ForPC, appledPinCode, bIsSetting, TheCustomIndex); } + void BeginPlay() { NativeCall(this, "APrimalStructureItemContainer.BeginPlay"); } + bool CanBeActivated() { return NativeCall(this, "APrimalStructureItemContainer.CanBeActivated"); } + bool CanOpen(APlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.CanOpen", ForPC); } + void CharacterBasedOnUpdate(AActor * characterBasedOnMe, float DeltaSeconds) { NativeCall(this, "APrimalStructureItemContainer.CharacterBasedOnUpdate", characterBasedOnMe, DeltaSeconds); } + void CheckAutoReactivate() { NativeCall(this, "APrimalStructureItemContainer.CheckAutoReactivate"); } + void CheckForDeathCacheEmitter() { NativeCall(this, "APrimalStructureItemContainer.CheckForDeathCacheEmitter"); } + void CheckFuelSetActive() { NativeCall(this, "APrimalStructureItemContainer.CheckFuelSetActive"); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureItemContainer.ClientMultiUse", ForPC, UseIndex); } + void ConsumeFuel(bool bGiveItem) { NativeCall(this, "APrimalStructureItemContainer.ConsumeFuel", bGiveItem); } + void ContainerActivated() { NativeCall(this, "APrimalStructureItemContainer.ContainerActivated"); } + void ContainerDeactivated() { NativeCall(this, "APrimalStructureItemContainer.ContainerDeactivated"); } + void CopyStructureValuesFrom(APrimalStructureItemContainer * otherItemContainer) { NativeCall(this, "APrimalStructureItemContainer.CopyStructureValuesFrom", otherItemContainer); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureItemContainer.DrawHUD", HUD); } + void EnableActive() { NativeCall(this, "APrimalStructureItemContainer.EnableActive"); } + void GetBlueprintSpawnActorTransform(FVector * spawnLoc, FRotator * spawnRot) { NativeCall(this, "APrimalStructureItemContainer.GetBlueprintSpawnActorTransform", spawnLoc, spawnRot); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalStructureItemContainer.GetDescriptiveName", result); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureItemContainer.GetLifetimeReplicatedProps", OutLifetimeProps); } + USoundBase * GetOverrideAudioTemplate() { return NativeCall(this, "APrimalStructureItemContainer.GetOverrideAudioTemplate"); } + FSpawnPointInfo * GetSpawnPointInfo(FSpawnPointInfo * result) { return NativeCall(this, "APrimalStructureItemContainer.GetSpawnPointInfo", result); } + float GetStructureWeight() { return NativeCall(this, "APrimalStructureItemContainer.GetStructureWeight"); } + float GetUsablePriority() { return NativeCall(this, "APrimalStructureItemContainer.GetUsablePriority"); } + bool IsValidWaterSourceForPipe(APrimalStructureWaterPipe * ForWaterPipe) { return NativeCall(this, "APrimalStructureItemContainer.IsValidWaterSourceForPipe", ForWaterPipe); } + void MovePowerJunctionLink() { NativeCall(this, "APrimalStructureItemContainer.MovePowerJunctionLink"); } + void NetSetContainerActive_Implementation(bool bSetActive, TSubclassOf NetReplicatedFuelItemClass, __int16 NetReplicatedFuelItemColorIndex) { NativeCall, __int16>(this, "APrimalStructureItemContainer.NetSetContainerActive_Implementation", bSetActive, NetReplicatedFuelItemClass, NetReplicatedFuelItemColorIndex); } + void NetUpdateBoxName_Implementation(FString * NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName_Implementation", NewName); } + void NetUpdateLocation_Implementation(FVector NewLocation) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateLocation_Implementation", NewLocation); } + void NotifyCraftedItem(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyCraftedItem", anItem); } + void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureItemContainer.NotifyItemRemoved", anItem); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalStructureItemContainer.OnDeserializedByGame", DeserializationType); } + bool OverrideHasWaterSource() { return NativeCall(this, "APrimalStructureItemContainer.OverrideHasWaterSource"); } + void PlacedStructureLocation(APlayerController * ByPC) { NativeCall(this, "APrimalStructureItemContainer.PlacedStructureLocation", ByPC); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalStructureItemContainer.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PostSpawnInitialize() { NativeCall(this, "APrimalStructureItemContainer.PostSpawnInitialize"); } + void PreInitializeComponents() { NativeCall(this, "APrimalStructureItemContainer.PreInitializeComponents"); } + void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool bCheckedBox, int ExtraID1, int ExtraID2) { NativeCall(this, "APrimalStructureItemContainer.ProcessEditText", ForPC, TextToUse, bCheckedBox, ExtraID1, ExtraID2); } + void RefreshFuelState() { NativeCall(this, "APrimalStructureItemContainer.RefreshFuelState"); } + void RefreshInventoryItemCounts() { NativeCall(this, "APrimalStructureItemContainer.RefreshInventoryItemCounts"); } + void RefreshPowerJunctionLink() { NativeCall(this, "APrimalStructureItemContainer.RefreshPowerJunctionLink"); } + void RefreshPowered(APrimalStructureItemContainer * InDirectPower) { NativeCall(this, "APrimalStructureItemContainer.RefreshPowered", InDirectPower); } + bool RemoteInventoryAllowActivation(AShooterPlayerController * ForPC) { return NativeCall(this, "APrimalStructureItemContainer.RemoteInventoryAllowActivation", ForPC); } + void SetContainerActive(bool bNewActive) { NativeCall(this, "APrimalStructureItemContainer.SetContainerActive", bNewActive); } + void SetDelayedActivation() { NativeCall(this, "APrimalStructureItemContainer.SetDelayedActivation"); } + void SetDisabledTimer(float DisabledTime) { NativeCall(this, "APrimalStructureItemContainer.SetDisabledTimer", DisabledTime); } + void SetPlayerConstructor(APlayerController * PC) { NativeCall(this, "APrimalStructureItemContainer.SetPlayerConstructor", PC); } + void SetPoweredOverrideCounter(int NewPoweredOverrideCounter) { NativeCall(this, "APrimalStructureItemContainer.SetPoweredOverrideCounter", NewPoweredOverrideCounter); } + void Stasis() { NativeCall(this, "APrimalStructureItemContainer.Stasis"); } + float SubtractWaterFromConnections(float Amount, bool bAllowNetworking) { return NativeCall(this, "APrimalStructureItemContainer.SubtractWaterFromConnections", Amount, bAllowNetworking); } + void TargetingTeamChanged() { NativeCall(this, "APrimalStructureItemContainer.TargetingTeamChanged"); } + void TryActivation() { NativeCall(this, "APrimalStructureItemContainer.TryActivation"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureItemContainer.TryMultiUse", ForPC, UseIndex); } + void Unstasis() { NativeCall(this, "APrimalStructureItemContainer.Unstasis"); } + void UpdateContainerActiveHealthDecrease() { NativeCall(this, "APrimalStructureItemContainer.UpdateContainerActiveHealthDecrease"); } + bool UseItemSpoilingTimeMultipliers() { return NativeCall(this, "APrimalStructureItemContainer.UseItemSpoilingTimeMultipliers"); } + bool BPCanBeActivated() { return NativeCall(this, "APrimalStructureItemContainer.BPCanBeActivated"); } + bool BPCanBeActivatedByPlayer(AShooterPlayerController * PC) { return NativeCall(this, "APrimalStructureItemContainer.BPCanBeActivatedByPlayer", PC); } + void BPClientRequestInventoryUpdate(AShooterPlayerController * FromPC) { NativeCall(this, "APrimalStructureItemContainer.BPClientRequestInventoryUpdate", FromPC); } + void BPContainerActivated() { NativeCall(this, "APrimalStructureItemContainer.BPContainerActivated"); } + void BPContainerDeactivated() { NativeCall(this, "APrimalStructureItemContainer.BPContainerDeactivated"); } + float BPGetFuelConsumptionMultiplier() { return NativeCall(this, "APrimalStructureItemContainer.BPGetFuelConsumptionMultiplier"); } + int BPGetQuantityOfItemWithoutCheckingInventory(TSubclassOf ItemToCheckFor) { return NativeCall>(this, "APrimalStructureItemContainer.BPGetQuantityOfItemWithoutCheckingInventory", ItemToCheckFor); } + bool BPIsValidWaterSourceForPipe(APrimalStructureWaterPipe * ForWaterPipe) { return NativeCall(this, "APrimalStructureItemContainer.BPIsValidWaterSourceForPipe", ForWaterPipe); } + void BPNotifyInventoryItemChange(bool bIsItemAdd, UPrimalItem * theItem, bool bEquipItem) { NativeCall(this, "APrimalStructureItemContainer.BPNotifyInventoryItemChange", bIsItemAdd, theItem, bEquipItem); } + void BPOnContainerActiveHealthDecrease() { NativeCall(this, "APrimalStructureItemContainer.BPOnContainerActiveHealthDecrease"); } + void BPPreGetMultiUseEntries(APlayerController * ForPC) { NativeCall(this, "APrimalStructureItemContainer.BPPreGetMultiUseEntries", ForPC); } + void BPSetPlayerConstructor(APlayerController * PC) { NativeCall(this, "APrimalStructureItemContainer.BPSetPlayerConstructor", PC); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructureItemContainer.GetPrivateStaticClass", Package); } + float GetReloadRateMultiplier() { return NativeCall(this, "APrimalStructureItemContainer.GetReloadRateMultiplier"); } + bool IsValidForDinoFeedingContainer(APrimalDinoCharacter * ForDino) { return NativeCall(this, "APrimalStructureItemContainer.IsValidForDinoFeedingContainer", ForDino); } + void NetSetContainerActive(bool bSetActive, TSubclassOf NetReplicatedFuelItemClass, __int16 NetReplicatedFuelItemColorIndex) { NativeCall, __int16>(this, "APrimalStructureItemContainer.NetSetContainerActive", bSetActive, NetReplicatedFuelItemClass, NetReplicatedFuelItemColorIndex); } + void NetUpdateBoxName(FString * NewName) { NativeCall(this, "APrimalStructureItemContainer.NetUpdateBoxName", NewName); } + void PowerGeneratorBuiltNearbyPoweredStructure(APrimalStructureItemContainer * PoweredStructure) { NativeCall(this, "APrimalStructureItemContainer.PowerGeneratorBuiltNearbyPoweredStructure", PoweredStructure); } + static void StaticRegisterNativesAPrimalStructureItemContainer() { NativeCall(nullptr, "APrimalStructureItemContainer.StaticRegisterNativesAPrimalStructureItemContainer"); } +}; + +struct APrimalStructureTurret : APrimalStructureItemContainer +{ + TWeakObjectPtr& TargetField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.Target"); } + TWeakObjectPtr& LastTargetField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.LastTarget"); } + TSubclassOf& AmmoItemTemplateField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.AmmoItemTemplate"); } + float& FireIntervalField() { return *GetNativePointerField(this, "APrimalStructureTurret.FireInterval"); } + long double& LastFireTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.LastFireTime"); } + float& MaxFireYawDeltaField() { return *GetNativePointerField(this, "APrimalStructureTurret.MaxFireYawDelta"); } + float& MaxFirePitchDeltaField() { return *GetNativePointerField(this, "APrimalStructureTurret.MaxFirePitchDelta"); } + FVector& TargetingLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.TargetingLocOffset"); } + float& TargetingRotationInterpSpeedField() { return *GetNativePointerField(this, "APrimalStructureTurret.TargetingRotationInterpSpeed"); } + FieldArray TargetingRangesField() { return { this, "APrimalStructureTurret.TargetingRanges" }; } + float& ShipTargetingRangeField() { return *GetNativePointerField(this, "APrimalStructureTurret.ShipTargetingRange"); } + FVector& TargetingTraceOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.TargetingTraceOffset"); } + TSubclassOf& FireDamageTypeField() { return *GetNativePointerField*>(this, "APrimalStructureTurret.FireDamageType"); } + float& FireDamageAmountField() { return *GetNativePointerField(this, "APrimalStructureTurret.FireDamageAmount"); } + float& FireDamageImpulseField() { return *GetNativePointerField(this, "APrimalStructureTurret.FireDamageImpulse"); } + FRotator& TurretAimRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.TurretAimRotOffset"); } + FVector& AimTargetLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.AimTargetLocOffset"); } + FVector& PlayerProneTargetOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.PlayerProneTargetOffset"); } + float& AimSpreadField() { return *GetNativePointerField(this, "APrimalStructureTurret.AimSpread"); } + FName& SocketNameCheckForObstructionFromSeatedCharacterField() { return *GetNativePointerField(this, "APrimalStructureTurret.SocketNameCheckForObstructionFromSeatedCharacter"); } + FName& AimPivotSocketField() { return *GetNativePointerField(this, "APrimalStructureTurret.AimPivotSocket"); } + FName& MuzzleSocketField() { return *GetNativePointerField(this, "APrimalStructureTurret.MuzzleSocket"); } + char& RangeSettingField() { return *GetNativePointerField(this, "APrimalStructureTurret.RangeSetting"); } + char& AISettingField() { return *GetNativePointerField(this, "APrimalStructureTurret.AISetting"); } + char& WarningSettingField() { return *GetNativePointerField(this, "APrimalStructureTurret.WarningSetting"); } + char& bUseAlternateRotationFunctionField() { return *GetNativePointerField(this, "APrimalStructureTurret.bUseAlternateRotationFunction"); } + int& NumBulletsField() { return *GetNativePointerField(this, "APrimalStructureTurret.NumBullets"); } + int& NumBulletsPerShotField() { return *GetNativePointerField(this, "APrimalStructureTurret.NumBulletsPerShot"); } + float& WarningExpirationTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.WarningExpirationTime"); } + float& BatteryIntervalFromActivationBeforeFiringField() { return *GetNativePointerField(this, "APrimalStructureTurret.BatteryIntervalFromActivationBeforeFiring"); } + bool& bWarnedField() { return *GetNativePointerField(this, "APrimalStructureTurret.bWarned"); } + UChildActorComponent * MyChildEmitterTargetingEffectField() { return *GetNativePointerField(this, "APrimalStructureTurret.MyChildEmitterTargetingEffect"); } + FRotator& DefaultTurretAimRotOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.DefaultTurretAimRotOffset"); } + FVector& MuzzleLocOffsetField() { return *GetNativePointerField(this, "APrimalStructureTurret.MuzzleLocOffset"); } + long double& LastWarningTimeField() { return *GetNativePointerField(this, "APrimalStructureTurret.LastWarningTime"); } + long double& TimeLastTargetWasSetField() { return *GetNativePointerField(this, "APrimalStructureTurret.TimeLastTargetWasSet"); } + + // Bit fields + + BitFieldValue bUseNoWarning() { return { this, "APrimalStructureTurret.bUseNoWarning" }; } + BitFieldValue bUseNoAmmo() { return { this, "APrimalStructureTurret.bUseNoAmmo" }; } + BitFieldValue bHasOmniDirectionalFire() { return { this, "APrimalStructureTurret.bHasOmniDirectionalFire" }; } + BitFieldValue bFireProjectiles() { return { this, "APrimalStructureTurret.bFireProjectiles" }; } + BitFieldValue bClientFireProjectile() { return { this, "APrimalStructureTurret.bClientFireProjectile" }; } + BitFieldValue bIsTargeting() { return { this, "APrimalStructureTurret.bIsTargeting" }; } + BitFieldValue bInWaterOnlyTargetWater() { return { this, "APrimalStructureTurret.bInWaterOnlyTargetWater" }; } + BitFieldValue bTurretIgnoreProjectiles() { return { this, "APrimalStructureTurret.bTurretIgnoreProjectiles" }; } + BitFieldValue bUseBPTurretPreventsTargeting() { return { this, "APrimalStructureTurret.bUseBPTurretPreventsTargeting" }; } + BitFieldValue bAimIgnoreSockets() { return { this, "APrimalStructureTurret.bAimIgnoreSockets" }; } + BitFieldValue bCanTargetShips() { return { this, "APrimalStructureTurret.bCanTargetShips" }; } + BitFieldValue bCanTargetIfBlockedByStructure() { return { this, "APrimalStructureTurret.bCanTargetIfBlockedByStructure" }; } + BitFieldValue bUseMuzzleLocationToTraceForValidTarget() { return { this, "APrimalStructureTurret.bUseMuzzleLocationToTraceForValidTarget" }; } + BitFieldValue bAlwaysAttackShip() { return { this, "APrimalStructureTurret.bAlwaysAttackShip" }; } + BitFieldValue bSkipTurretSuperTick() { return { this, "APrimalStructureTurret.bSkipTurretSuperTick" }; } + BitFieldValue bShipTurretAllowTargetingCharactersWhenUnanchored() { return { this, "APrimalStructureTurret.bShipTurretAllowTargetingCharactersWhenUnanchored" }; } + BitFieldValue bUseDifferentFireFunction() { return { this, "APrimalStructureTurret.bUseDifferentFireFunction" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureTurret.GetPrivateStaticClass"); } + AActor * BPNativeFindTarget() { return NativeCall(this, "APrimalStructureTurret.BPNativeFindTarget"); } + void BeginPlay() { NativeCall(this, "APrimalStructureTurret.BeginPlay"); } + bool CanFire() { return NativeCall(this, "APrimalStructureTurret.CanFire"); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureTurret.ClientMultiUse", ForPC, UseIndex); } + void ClientsFireProjectile_Implementation(FVector Origin, FVector_NetQuantizeNormal ShootDir, int NewAmmoCount) { NativeCall(this, "APrimalStructureTurret.ClientsFireProjectile_Implementation", Origin, ShootDir, NewAmmoCount); } + void DealDamage(FHitResult * Impact, FVector * ShootDir, float DamageAmount, TSubclassOf DamageType, float Impulse, AActor * DamageCauserOverride) { NativeCall, float, AActor *>(this, "APrimalStructureTurret.DealDamage", Impact, ShootDir, DamageAmount, DamageType, Impulse, DamageCauserOverride); } + void DoFire(int RandomSeed) { NativeCall(this, "APrimalStructureTurret.DoFire", RandomSeed); } + void DoFireProjectile(FVector Origin, FVector ShootDir) { NativeCall(this, "APrimalStructureTurret.DoFireProjectile", Origin, ShootDir); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureTurret.DrawHUD", HUD); } + AActor * FindTargetLoop(TArray * PrimComps, TArray * GrenadeComps, TArray * ActorsToIgnore, bool * bBestTargetIsInRotationRange, AActor * BestTarget) { return NativeCall *, TArray *, TArray *, bool *, AActor *>(this, "APrimalStructureTurret.FindTargetLoop", PrimComps, GrenadeComps, ActorsToIgnore, bBestTargetIsInRotationRange, BestTarget); } + AActor * FindTarget_Implementation() { return NativeCall(this, "APrimalStructureTurret.FindTarget_Implementation"); } + void FinishWarning() { NativeCall(this, "APrimalStructureTurret.FinishWarning"); } + FVector * GetAimPivotLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetAimPivotLocation", result); } + FVector * GetAttackingFromLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetAttackingFromLocation", result); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureTurret.GetLifetimeReplicatedProps", OutLifetimeProps); } + FName * GetMuzzleFlashSocketName(FName * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleFlashSocketName", result); } + FVector * GetMuzzleLocation(FVector * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleLocation", result); } + FRotator * GetMuzzleRotation(FRotator * result) { return NativeCall(this, "APrimalStructureTurret.GetMuzzleRotation", result); } + AActor * GetRandomStructureOnSameBoatAsActor(AActor * CurrentTarget) { return NativeCall(this, "APrimalStructureTurret.GetRandomStructureOnSameBoatAsActor", CurrentTarget); } + FVector * GetTargetAimAtLocation(FVector * result, bool bDontUseTargetLocation) { return NativeCall(this, "APrimalStructureTurret.GetTargetAimAtLocation", result, bDontUseTargetLocation); } + FName * GetTargetAltAimSocket(FName * result, APrimalCharacter * ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetAltAimSocket", result, ForTarget); } + FVector * GetTargetFireAtLocation(FVector * result, APrimalCharacter * ForTarget) { return NativeCall(this, "APrimalStructureTurret.GetTargetFireAtLocation", result, ForTarget); } + bool HasAmmo() { return NativeCall(this, "APrimalStructureTurret.HasAmmo"); } + bool IsValidToFire(bool bAllowNoTarget) { return NativeCall(this, "APrimalStructureTurret.IsValidToFire", bAllowNoTarget); } + bool NetExecCommand(FName CommandName, FNetExecParams * ExecParams) { return NativeCall(this, "APrimalStructureTurret.NetExecCommand", CommandName, ExecParams); } + void NotifyItemAdded(UPrimalItem * anItem, bool bEquipItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemAdded", anItem, bEquipItem); } + void NotifyItemQuantityUpdated(UPrimalItem * anItem, int amount) { NativeCall(this, "APrimalStructureTurret.NotifyItemQuantityUpdated", anItem, amount); } + void NotifyItemRemoved(UPrimalItem * anItem) { NativeCall(this, "APrimalStructureTurret.NotifyItemRemoved", anItem); } + void PreInitializeComponents() { NativeCall(this, "APrimalStructureTurret.PreInitializeComponents"); } + bool SaddleDinoObstructed(FVector * StartTrace) { return NativeCall(this, "APrimalStructureTurret.SaddleDinoObstructed", StartTrace); } + void SetTarget(AActor * aTarget) { NativeCall(this, "APrimalStructureTurret.SetTarget", aTarget); } + bool ShouldDealDamage(AActor * TestActor) { return NativeCall(this, "APrimalStructureTurret.ShouldDealDamage", TestActor); } + void SpawnImpactEffects(FHitResult * Impact, FVector * ShootDir) { NativeCall(this, "APrimalStructureTurret.SpawnImpactEffects", Impact, ShootDir); } + void SpawnTrailEffect(FVector * EndPoint) { NativeCall(this, "APrimalStructureTurret.SpawnTrailEffect", EndPoint); } + void StartWarning() { NativeCall(this, "APrimalStructureTurret.StartWarning"); } + void Stasis() { NativeCall(this, "APrimalStructureTurret.Stasis"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalStructureTurret.Tick", DeltaSeconds); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureTurret.TryMultiUse", ForPC, UseIndex); } + void Unstasis() { NativeCall(this, "APrimalStructureTurret.Unstasis"); } + void UpdateNumBullets() { NativeCall(this, "APrimalStructureTurret.UpdateNumBullets"); } + void UpdatedTargeting() { NativeCall(this, "APrimalStructureTurret.UpdatedTargeting"); } + bool UseTurretFastTargeting() { return NativeCall(this, "APrimalStructureTurret.UseTurretFastTargeting"); } + void WeaponTraceHits(TArray * HitResults, FVector * StartTrace, FVector * EndTrace) { NativeCall *, FVector *, FVector *>(this, "APrimalStructureTurret.WeaponTraceHits", HitResults, StartTrace, EndTrace); } + bool BPTurretPreventsTargeting(APrimalCharacter * PotentialTarget) { return NativeCall(this, "APrimalStructureTurret.BPTurretPreventsTargeting", PotentialTarget); } + void ClientsFireProjectile(FVector Origin, FVector_NetQuantizeNormal ShootDir, int NewAmmoCount) { NativeCall(this, "APrimalStructureTurret.ClientsFireProjectile", Origin, ShootDir, NewAmmoCount); } + AActor * FindTarget() { return NativeCall(this, "APrimalStructureTurret.FindTarget"); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructureTurret.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesAPrimalStructureTurret() { NativeCall(nullptr, "APrimalStructureTurret.StaticRegisterNativesAPrimalStructureTurret"); } +}; + +struct APrimalRaft : APrimalDinoCharacter +{ + UTexture2D * IconField() { return *GetNativePointerField(this, "APrimalRaft.Icon"); } + UTexture2D * OrderFreeFireIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderFreeFireIcon"); } + UTexture2D * OrderStandDownIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderStandDownIcon"); } + UTexture2D * OrderAttackMyTargetIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderAttackMyTargetIcon"); } + UTexture2D * OrderManualFireIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderManualFireIcon"); } + UTexture2D * OrderRedAlertIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderRedAlertIcon"); } + UTexture2D * OrderUnRedAlertIconField() { return *GetNativePointerField(this, "APrimalRaft.OrderUnRedAlertIcon"); } + TSubobjectPtr& MovingSoundComponentField() { return *GetNativePointerField*>(this, "APrimalRaft.MovingSoundComponent"); } + USoundBase * MovingSoundCueField() { return *GetNativePointerField(this, "APrimalRaft.MovingSoundCue"); } + float& OverrideSaddleStructureMaxFoundationSupport2DBuildDistanceField() { return *GetNativePointerField(this, "APrimalRaft.OverrideSaddleStructureMaxFoundationSupport2DBuildDistance"); } + float& WetDockOceanZOffsetField() { return *GetNativePointerField(this, "APrimalRaft.WetDockOceanZOffset"); } + FVector& ClientRaftInterpLocField() { return *GetNativePointerField(this, "APrimalRaft.ClientRaftInterpLoc"); } + FRotator& ClientRaftInterpRotField() { return *GetNativePointerField(this, "APrimalRaft.ClientRaftInterpRot"); } + TEnumAsByte& ShipSizeClassField() { return *GetNativePointerField*>(this, "APrimalRaft.ShipSizeClass"); } + TWeakObjectPtr& DriverField() { return *GetNativePointerField*>(this, "APrimalRaft.Driver"); } + FVector& VelocityFromPrevServerField() { return *GetNativePointerField(this, "APrimalRaft.VelocityFromPrevServer"); } + TWeakObjectPtr& LocalCaptainControllerField() { return *GetNativePointerField*>(this, "APrimalRaft.LocalCaptainController"); } + APrimalStructureSeating_DriverSeat * AttachedDriverSeatField() { return *GetNativePointerField(this, "APrimalRaft.AttachedDriverSeat"); } + TArray AttachedCaptiansOrderSeatsField() { return *GetNativePointerField*>(this, "APrimalRaft.AttachedCaptiansOrderSeats"); } + TArray AttachedSailsField() { return *GetNativePointerField*>(this, "APrimalRaft.AttachedSails"); } + TArray AttachedMiscCriticalStructuresField() { return *GetNativePointerField*>(this, "APrimalRaft.AttachedMiscCriticalStructures"); } + float& SailUnits_MaxField() { return *GetNativePointerField(this, "APrimalRaft.SailUnits_Max"); } + float& MaxWeightMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.MaxWeightMultiplier"); } + int& CollisionImpactWeightClassField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactWeightClass"); } + float& SailingVelocity_MaxAllowedField() { return *GetNativePointerField(this, "APrimalRaft.SailingVelocity_MaxAllowed"); } + float& ShipBowOffsetField() { return *GetNativePointerField(this, "APrimalRaft.ShipBowOffset"); } + float& ThrottleCheckIntervalField() { return *GetNativePointerField(this, "APrimalRaft.ThrottleCheckInterval"); } + long double& LastThrottleCheckStartTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastThrottleCheckStartTime"); } + float& BaseMovementWeightField() { return *GetNativePointerField(this, "APrimalRaft.BaseMovementWeight"); } + float& Sails_MaxThrottleForceField() { return *GetNativePointerField(this, "APrimalRaft.Sails_MaxThrottleForce"); } + float& Sails_ThrottleForceWindMult_MinField() { return *GetNativePointerField(this, "APrimalRaft.Sails_ThrottleForceWindMult_Min"); } + float& Sails_ThrottleForceWindMult_MaxField() { return *GetNativePointerField(this, "APrimalRaft.Sails_ThrottleForceWindMult_Max"); } + float& Sails_MaxMovementWeightField() { return *GetNativePointerField(this, "APrimalRaft.Sails_MaxMovementWeight"); } + float& Sails_AdditionalMaxVelocityField() { return *GetNativePointerField(this, "APrimalRaft.Sails_AdditionalMaxVelocity"); } + FVector& Sails_ThrottleForceLocationField() { return *GetNativePointerField(this, "APrimalRaft.Sails_ThrottleForceLocation"); } + FVector& ThrottleForceLocation_OffsetField() { return *GetNativePointerField(this, "APrimalRaft.ThrottleForceLocation_Offset"); } + float& Sails_SteeringForce_AtVelocityMaxField() { return *GetNativePointerField(this, "APrimalRaft.Sails_SteeringForce_AtVelocityMax"); } + float& MaxSailRotationField() { return *GetNativePointerField(this, "APrimalRaft.MaxSailRotation"); } + float& RotateSailsSpeedMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.RotateSailsSpeedMultiplier"); } + float& CurrentSailRotationField() { return *GetNativePointerField(this, "APrimalRaft.CurrentSailRotation"); } + float& ReplicatedSailRotationField() { return *GetNativePointerField(this, "APrimalRaft.ReplicatedSailRotation"); } + float& Sails_AvgSailRotationSpeedField() { return *GetNativePointerField(this, "APrimalRaft.Sails_AvgSailRotationSpeed"); } + float& CaptainSkillSailRotationMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.CaptainSkillSailRotationMultiplier"); } + float& CaptainSkillSailOpenMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.CaptainSkillSailOpenMultiplier"); } + float& RudderSteeringRateField() { return *GetNativePointerField(this, "APrimalRaft.RudderSteeringRate"); } + float& RudderAutoBackAngleField() { return *GetNativePointerField(this, "APrimalRaft.RudderAutoBackAngle"); } + float& RudderSteerForceField() { return *GetNativePointerField(this, "APrimalRaft.RudderSteerForce"); } + float& FixedThrottleRateField() { return *GetNativePointerField(this, "APrimalRaft.FixedThrottleRate"); } + float& SteeringForce_MaxAllowedField() { return *GetNativePointerField(this, "APrimalRaft.SteeringForce_MaxAllowed"); } + float& SteeringForce_MinAllowedField() { return *GetNativePointerField(this, "APrimalRaft.SteeringForce_MinAllowed"); } + float& RudderAngleThresholdField() { return *GetNativePointerField(this, "APrimalRaft.RudderAngleThreshold"); } + FVector& RudderCenterField() { return *GetNativePointerField(this, "APrimalRaft.RudderCenter"); } + float& MinMovingSoundSpeedField() { return *GetNativePointerField(this, "APrimalRaft.MinMovingSoundSpeed"); } + float& DefaultLinearDampingField() { return *GetNativePointerField(this, "APrimalRaft.DefaultLinearDamping"); } + float& DefaultAngularDampingField() { return *GetNativePointerField(this, "APrimalRaft.DefaultAngularDamping"); } + float& RaftCharacterBasingAbsoluteMaxDirZField() { return *GetNativePointerField(this, "APrimalRaft.RaftCharacterBasingAbsoluteMaxDirZ"); } + float& CurrentAngularDampingField() { return *GetNativePointerField(this, "APrimalRaft.CurrentAngularDamping"); } + float& CurrentLinearDampingField() { return *GetNativePointerField(this, "APrimalRaft.CurrentLinearDamping"); } + int& RowingSeatCount_MaxField() { return *GetNativePointerField(this, "APrimalRaft.RowingSeatCount_Max"); } + TArray AttachedRowingSeatsField() { return *GetNativePointerField*>(this, "APrimalRaft.AttachedRowingSeats"); } + float& RowingSeatImpulseMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.RowingSeatImpulseMultiplier"); } + float& RowingImpulse_MaxField() { return *GetNativePointerField(this, "APrimalRaft.RowingImpulse_Max"); } + float& RowingSeats_RowingIntervalField() { return *GetNativePointerField(this, "APrimalRaft.RowingSeats_RowingInterval"); } + float& RowingSeats_RowingInputField() { return *GetNativePointerField(this, "APrimalRaft.RowingSeats_RowingInput"); } + long double& LastRowTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastRowTime"); } + float& ShipMaximumAdditionalBedsStatusValueField() { return *GetNativePointerField(this, "APrimalRaft.ShipMaximumAdditionalBedsStatusValue"); } + float& ShipAdditionalBedsCrewPaymentIntervalMinField() { return *GetNativePointerField(this, "APrimalRaft.ShipAdditionalBedsCrewPaymentIntervalMin"); } + float& ShipAdditionalBedsCrewPaymentIntervalMaxField() { return *GetNativePointerField(this, "APrimalRaft.ShipAdditionalBedsCrewPaymentIntervalMax"); } + TEnumAsByte& ShipTypeField() { return *GetNativePointerField*>(this, "APrimalRaft.ShipType"); } + long double& NetworkCreationTimeField() { return *GetNativePointerField(this, "APrimalRaft.NetworkCreationTime"); } + APrimalStructureShipHull * MyShipHullField() { return *GetNativePointerField(this, "APrimalRaft.MyShipHull"); } + APrimalStructure * MyShipDockField() { return *GetNativePointerField(this, "APrimalRaft.MyShipDock"); } + APrimalBuff * MySunkenShipBuffField() { return *GetNativePointerField(this, "APrimalRaft.MySunkenShipBuff"); } + TSubclassOf& ShipHullClassField() { return *GetNativePointerField*>(this, "APrimalRaft.ShipHullClass"); } + int& NumberOfBedsField() { return *GetNativePointerField(this, "APrimalRaft.NumberOfBeds"); } + int& NumberOfCrewField() { return *GetNativePointerField(this, "APrimalRaft.NumberOfCrew"); } + int& AdditionalNumberOfBedsField() { return *GetNativePointerField(this, "APrimalRaft.AdditionalNumberOfBeds"); } + int& AdditionalNumberOfCrewField() { return *GetNativePointerField(this, "APrimalRaft.AdditionalNumberOfCrew"); } + char& CurrentBedCountField() { return *GetNativePointerField(this, "APrimalRaft.CurrentBedCount"); } + long double& DiedAtTimeField() { return *GetNativePointerField(this, "APrimalRaft.DiedAtTime"); } + float& TimeSinceLastFadeOutField() { return *GetNativePointerField(this, "APrimalRaft.TimeSinceLastFadeOut"); } + bool& bUnstasisNoWaterField() { return *GetNativePointerField(this, "APrimalRaft.bUnstasisNoWater"); } + int& NoWaterTriesField() { return *GetNativePointerField(this, "APrimalRaft.NoWaterTries"); } + int& LastFrameDisabledForcedVelocityDirectionField() { return *GetNativePointerField(this, "APrimalRaft.LastFrameDisabledForcedVelocityDirection"); } + long double& LastTakeDamageFromEnemyTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastTakeDamageFromEnemyTime"); } + long double& LastCauseDamageToEnemyRaftTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastCauseDamageToEnemyRaftTime"); } + float& ThrottleInputField() { return *GetNativePointerField(this, "APrimalRaft.ThrottleInput"); } + float& ThrottleRatio_TargetField() { return *GetNativePointerField(this, "APrimalRaft.ThrottleRatio_Target"); } + float& ReplicatedThrottleRatio_TargetField() { return *GetNativePointerField(this, "APrimalRaft.ReplicatedThrottleRatio_Target"); } + float& SteeringInputField() { return *GetNativePointerField(this, "APrimalRaft.SteeringInput"); } + float& RudderAngleField() { return *GetNativePointerField(this, "APrimalRaft.RudderAngle"); } + float& SailTurningInputField() { return *GetNativePointerField(this, "APrimalRaft.SailTurningInput"); } + USceneComponent * RudderSteeringComponentField() { return *GetNativePointerField(this, "APrimalRaft.RudderSteeringComponent"); } + TSubclassOf& CollisionImpactDamageTypeField() { return *GetNativePointerField*>(this, "APrimalRaft.CollisionImpactDamageType"); } + float& CollisionImpactAbsoluteMinImpulseField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactAbsoluteMinImpulse"); } + float& CollisionImpactMinImpulseField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMinImpulse"); } + float& CollisionImpactMaxImpulseField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMaxImpulse"); } + float& CollisionImpactMinDamageAmountField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMinDamageAmount"); } + float& CollisionImpactMaxDamageAmountField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMaxDamageAmount"); } + float& CollisionImpactMinDamageRadiusField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMinDamageRadius"); } + float& CollisionImpactMaxDamageRadiusField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMaxDamageRadius"); } + float& CollisionImpactMinIntervalField() { return *GetNativePointerField(this, "APrimalRaft.CollisionImpactMinInterval"); } + long double& LastCollisionImpactTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastCollisionImpactTime"); } + bool& bIsInDrydockField() { return *GetNativePointerField(this, "APrimalRaft.bIsInDrydock"); } + bool& bIsInWetDockField() { return *GetNativePointerField(this, "APrimalRaft.bIsInWetDock"); } + bool& bBeganPlayField() { return *GetNativePointerField(this, "APrimalRaft.bBeganPlay"); } + bool& bUsingLongRangeStasisField() { return *GetNativePointerField(this, "APrimalRaft.bUsingLongRangeStasis"); } + USphereComponent * LongRangeStasisComponentField() { return *GetNativePointerField(this, "APrimalRaft.LongRangeStasisComponent"); } + TSubclassOf& OpenWaterSpoilingItemClassField() { return *GetNativePointerField*>(this, "APrimalRaft.OpenWaterSpoilingItemClass"); } + float& LastDistanceToShoreField() { return *GetNativePointerField(this, "APrimalRaft.LastDistanceToShore"); } + float& LastOpenWaterSpoilingMultField() { return *GetNativePointerField(this, "APrimalRaft.LastOpenWaterSpoilingMult"); } + FVector& PreviousLinearVelocityField() { return *GetNativePointerField(this, "APrimalRaft.PreviousLinearVelocity"); } + FVector& PreviousAngularVelocityField() { return *GetNativePointerField(this, "APrimalRaft.PreviousAngularVelocity"); } + float& MinOpenWaterSpoilingMultField() { return *GetNativePointerField(this, "APrimalRaft.MinOpenWaterSpoilingMult"); } + float& MaxOpenWaterSpoilingMultField() { return *GetNativePointerField(this, "APrimalRaft.MaxOpenWaterSpoilingMult"); } + float& MinOpenWaterDebuffDistanceField() { return *GetNativePointerField(this, "APrimalRaft.MinOpenWaterDebuffDistance"); } + float& MaxOpenWaterDebuffDistanceField() { return *GetNativePointerField(this, "APrimalRaft.MaxOpenWaterDebuffDistance"); } + float& BaseClaimTimeField() { return *GetNativePointerField(this, "APrimalRaft.BaseClaimTime"); } + float& BaseUnclaimTimeField() { return *GetNativePointerField(this, "APrimalRaft.BaseUnclaimTime"); } + float& ExtraClaimTimePerLevelField() { return *GetNativePointerField(this, "APrimalRaft.ExtraClaimTimePerLevel"); } + float& ClaimTimeMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.ClaimTimeMultiplier"); } + float& PercentOfWeightForMinSinkingSpeedField() { return *GetNativePointerField(this, "APrimalRaft.PercentOfWeightForMinSinkingSpeed"); } + float& PercentOfWeightForMaxSinkingSpeedField() { return *GetNativePointerField(this, "APrimalRaft.PercentOfWeightForMaxSinkingSpeed"); } + float& ShipHullSinkMovementForceMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.ShipHullSinkMovementForceMultiplier"); } + FVector& LastPositionField() { return *GetNativePointerField(this, "APrimalRaft.LastPosition"); } + bool& bWasAnchoredOrDryDockedField() { return *GetNativePointerField(this, "APrimalRaft.bWasAnchoredOrDryDocked"); } + FVector2D& SailHUDIconYMinMaxField() { return *GetNativePointerField(this, "APrimalRaft.SailHUDIconYMinMax"); } + APrimalStructureItemContainer * MyRepairBoxField() { return *GetNativePointerField(this, "APrimalRaft.MyRepairBox"); } + APrimalStructureClaimFlag * CurrentClaimFlagField() { return *GetNativePointerField(this, "APrimalRaft.CurrentClaimFlag"); } + float& MaximumSwimOntoBaseTraceDistanceField() { return *GetNativePointerField(this, "APrimalRaft.MaximumSwimOntoBaseTraceDistance"); } + float& AutoAnchorDryDockReleasedGracePeriodField() { return *GetNativePointerField(this, "APrimalRaft.AutoAnchorDryDockReleasedGracePeriod"); } + int& NumBasedCharactersField() { return *GetNativePointerField(this, "APrimalRaft.NumBasedCharacters"); } + long double& LastReleasedFromDryDockTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastReleasedFromDryDockTime"); } + float& ThrottleForceMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.ThrottleForceMultiplier"); } + bool& bIncrementedAnchoredShipsField() { return *GetNativePointerField(this, "APrimalRaft.bIncrementedAnchoredShips"); } + bool& bIncrementedUnanchoredShipsField() { return *GetNativePointerField(this, "APrimalRaft.bIncrementedUnanchoredShips"); } + float& MinMaxThrottleRatioToBeachField() { return *GetNativePointerField(this, "APrimalRaft.MinMaxThrottleRatioToBeach"); } + float& MinAllowedGroundDistField() { return *GetNativePointerField(this, "APrimalRaft.MinAllowedGroundDist"); } + float& GroundDistToStopShipField() { return *GetNativePointerField(this, "APrimalRaft.GroundDistToStopShip"); } + float& GlobalSailForceMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.GlobalSailForceMultiplier"); } + float& GlobalSteeringForceMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.GlobalSteeringForceMultiplier"); } + float& ShipBeachedStartTimeField() { return *GetNativePointerField(this, "APrimalRaft.ShipBeachedStartTime"); } + bool& bPreventsDinosWithStructureSupportingSaddlesField() { return *GetNativePointerField(this, "APrimalRaft.bPreventsDinosWithStructureSupportingSaddles"); } + float& ExternalForceMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.ExternalForceMultiplier"); } + int& LastMarkedFrameCountField() { return *GetNativePointerField(this, "APrimalRaft.LastMarkedFrameCount"); } + long double& LastFrameMarkedTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastFrameMarkedTime"); } + long double& LastSentSailRotationToServerTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastSentSailRotationToServerTime"); } + float& LastSentSailRotationToServerValueField() { return *GetNativePointerField(this, "APrimalRaft.LastSentSailRotationToServerValue"); } + long double& LastSentThrottleTargetToServerTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastSentThrottleTargetToServerTime"); } + float& LastSentThrottleTargetToServerValueField() { return *GetNativePointerField(this, "APrimalRaft.LastSentThrottleTargetToServerValue"); } + float& LastSentSteeringInputToServerValueField() { return *GetNativePointerField(this, "APrimalRaft.LastSentSteeringInputToServerValue"); } + float& Teleport_AllowedAboveTopDeckDistField() { return *GetNativePointerField(this, "APrimalRaft.Teleport_AllowedAboveTopDeckDist"); } + float& Teleport_AllowedBelowTopDeckDistField() { return *GetNativePointerField(this, "APrimalRaft.Teleport_AllowedBelowTopDeckDist"); } + long double& LastWantsForcedMovementTimeField() { return *GetNativePointerField(this, "APrimalRaft.LastWantsForcedMovementTime"); } + int& ForcedMovementDirectionField() { return *GetNativePointerField(this, "APrimalRaft.ForcedMovementDirection"); } + TArray& StationGroupsField() { return *GetNativePointerField*>(this, "APrimalRaft.StationGroups"); } + TArray& StationGroupsCurrentActiveOrderField() { return *GetNativePointerField*>(this, "APrimalRaft.StationGroupsCurrentActiveOrder"); } + TArray& CurrentManualFireLocationsField() { return *GetNativePointerField*>(this, "APrimalRaft.CurrentManualFireLocations"); } + float& FrontGroupMinYCoordinateField() { return *GetNativePointerField(this, "APrimalRaft.FrontGroupMinYCoordinate"); } + float& BackGroupMaxYCoordinateField() { return *GetNativePointerField(this, "APrimalRaft.BackGroupMaxYCoordinate"); } + float& MaxTimeToShootAtLocationField() { return *GetNativePointerField(this, "APrimalRaft.MaxTimeToShootAtLocation"); } + float& ShipWeightMovementForcePowerField() { return *GetNativePointerField(this, "APrimalRaft.ShipWeightMovementForcePower"); } + unsigned int& ServerStationGroupsUpdateIndexField() { return *GetNativePointerField(this, "APrimalRaft.ServerStationGroupsUpdateIndex"); } + unsigned int& LocalStationGroupsUpdateIndexField() { return *GetNativePointerField(this, "APrimalRaft.LocalStationGroupsUpdateIndex"); } + FVector& CaptainsOrdersCameraOriginTargetingOffsetField() { return *GetNativePointerField(this, "APrimalRaft.CaptainsOrdersCameraOriginTargetingOffset"); } + FVector& CapOrdersAdditionTPVOffsetField() { return *GetNativePointerField(this, "APrimalRaft.CapOrdersAdditionTPVOffset"); } + FieldArray CaptainExtraActionsStatesField() { return { this, "APrimalRaft.CaptainExtraActionsStates" }; } + float& AutoPilot_AllowSnapToHeadingBelowAngularVelocityField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_AllowSnapToHeadingBelowAngularVelocity"); } + float& AutoPilot_TargetHeadingErrorRange_SlowField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_TargetHeadingErrorRange_Slow"); } + float& AutoPilot_TargetHeadingErrorRange_StopField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_TargetHeadingErrorRange_Stop"); } + float& AutoPilot_TargetHeadingErrorRange_ResumeField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_TargetHeadingErrorRange_Resume"); } + float& AutoPilot_AngularVelocityMaxInterpSpeedField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_AngularVelocityMaxInterpSpeed"); } + float& AutoPilot_ForceMinAngularVelocity_MINField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_ForceMinAngularVelocity_MIN"); } + float& AutoPilot_ForceMinAngularVelocity_MAXField() { return *GetNativePointerField(this, "APrimalRaft.AutoPilot_ForceMinAngularVelocity_MAX"); } + float& ScaleFloatingHUDMaxDistanceField() { return *GetNativePointerField(this, "APrimalRaft.ScaleFloatingHUDMaxDistance"); } + float& DrawFloatingHUDMaxDistanceAllyField() { return *GetNativePointerField(this, "APrimalRaft.DrawFloatingHUDMaxDistanceAlly"); } + float& DrawFloatingHUDMaxDistanceEnemyField() { return *GetNativePointerField(this, "APrimalRaft.DrawFloatingHUDMaxDistanceEnemy"); } + AActor * LastDamageCauserField() { return *GetNativePointerField(this, "APrimalRaft.LastDamageCauser"); } + long double& ClientStartedInterpolationAtTimeField() { return *GetNativePointerField(this, "APrimalRaft.ClientStartedInterpolationAtTime"); } + FName& VesselDynamicsCollisionProfileNameField() { return *GetNativePointerField(this, "APrimalRaft.VesselDynamicsCollisionProfileName"); } + float& OvercrewedIsOverweightMinSinkingPercentField() { return *GetNativePointerField(this, "APrimalRaft.OvercrewedIsOverweightMinSinkingPercent"); } + float& CollideOntoEnemyRaftDamageImpulseMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.CollideOntoEnemyRaftDamageImpulseMultiplier"); } + float& FixedBackwardsThrottleForceField() { return *GetNativePointerField(this, "APrimalRaft.FixedBackwardsThrottleForce"); } + float& MaxBackwardsVelocityField() { return *GetNativePointerField(this, "APrimalRaft.MaxBackwardsVelocity"); } + float& ClientUnanchoringAllowSlowInterpolationPeriodField() { return *GetNativePointerField(this, "APrimalRaft.ClientUnanchoringAllowSlowInterpolationPeriod"); } + float& ClientUnanchoringLocationInterpSpeedField() { return *GetNativePointerField(this, "APrimalRaft.ClientUnanchoringLocationInterpSpeed"); } + float& ClientUnanchoringRotationInterpSpeedField() { return *GetNativePointerField(this, "APrimalRaft.ClientUnanchoringRotationInterpSpeed"); } + float& ClientUnanchoringInterpSpeedFastField() { return *GetNativePointerField(this, "APrimalRaft.ClientUnanchoringInterpSpeedFast"); } + float& ShipStructureHealthMultiplierField() { return *GetNativePointerField(this, "APrimalRaft.ShipStructureHealthMultiplier"); } + float& UnRedAlertTeleWaitTimeField() { return *GetNativePointerField(this, "APrimalRaft.UnRedAlertTeleWaitTime"); } + int& NumOfLieutenantSeatsAllowedField() { return *GetNativePointerField(this, "APrimalRaft.NumOfLieutenantSeatsAllowed"); } + FString& KilledNotificationStringField() { return *GetNativePointerField(this, "APrimalRaft.KilledNotificationString"); } + + // Bit fields + + BitFieldValue bUseForcestoApply() { return { this, "APrimalRaft.bUseForcestoApply" }; } + BitFieldValue bIsNPCShip() { return { this, "APrimalRaft.bIsNPCShip" }; } + BitFieldValue bClientIsInterpolatingRaft() { return { this, "APrimalRaft.bClientIsInterpolatingRaft" }; } + BitFieldValue bUseBPSimulatePhysics() { return { this, "APrimalRaft.bUseBPSimulatePhysics" }; } + BitFieldValue bOnlyUseBPSimulatePhysics() { return { this, "APrimalRaft.bOnlyUseBPSimulatePhysics" }; } + BitFieldValue bIsSmallRaft() { return { this, "APrimalRaft.bIsSmallRaft" }; } + BitFieldValue bDebugSteering() { return { this, "APrimalRaft.bDebugSteering" }; } + BitFieldValue bDebugSailing() { return { this, "APrimalRaft.bDebugSailing" }; } + BitFieldValue bDebugRowing() { return { this, "APrimalRaft.bDebugRowing" }; } + BitFieldValue bDebugRowing_ForceAllSeatsRowSync() { return { this, "APrimalRaft.bDebugRowing_ForceAllSeatsRowSync" }; } + BitFieldValue bAllowDriverSeats() { return { this, "APrimalRaft.bAllowDriverSeats" }; } + BitFieldValue bAllowSails() { return { this, "APrimalRaft.bAllowSails" }; } + BitFieldValue bAllowRowingSeats() { return { this, "APrimalRaft.bAllowRowingSeats" }; } + BitFieldValue bAutoFullyBuildInShipYard() { return { this, "APrimalRaft.bAutoFullyBuildInShipYard" }; } + BitFieldValue bReleaseImmediatelyFromShipyard() { return { this, "APrimalRaft.bReleaseImmediatelyFromShipyard" }; } + BitFieldValue bAllowReturnToShipyard() { return { this, "APrimalRaft.bAllowReturnToShipyard" }; } + BitFieldValue bCanMoveWithoutRider() { return { this, "APrimalRaft.bCanMoveWithoutRider" }; } + BitFieldValue bSailsAffectThrottleLocation() { return { this, "APrimalRaft.bSailsAffectThrottleLocation" }; } + BitFieldValue bUseBP_AdjustRowingImpulse() { return { this, "APrimalRaft.bUseBP_AdjustRowingImpulse" }; } + BitFieldValue bIsCheckingThrottle() { return { this, "APrimalRaft.bIsCheckingThrottle" }; } + BitFieldValue bTickRowing() { return { this, "APrimalRaft.bTickRowing" }; } + BitFieldValue bAddedToActiveArray() { return { this, "APrimalRaft.bAddedToActiveArray" }; } + BitFieldValue bTickRefreshStationGroupOrders() { return { this, "APrimalRaft.bTickRefreshStationGroupOrders" }; } + BitFieldValue bUsingAutoStationGrouping() { return { this, "APrimalRaft.bUsingAutoStationGrouping" }; } + BitFieldValue bUsesStationGrouping() { return { this, "APrimalRaft.bUsesStationGrouping" }; } + BitFieldValue bReplicateCurrentSailRotation() { return { this, "APrimalRaft.bReplicateCurrentSailRotation" }; } + BitFieldValue bAllowShipForcedMovement() { return { this, "APrimalRaft.bAllowShipForcedMovement" }; } + BitFieldValue bClientSideSailingForces() { return { this, "APrimalRaft.bClientSideSailingForces" }; } + BitFieldValue bDeadTicked() { return { this, "APrimalRaft.bDeadTicked" }; } + BitFieldValue bAnchoredSetToOceanHeight() { return { this, "APrimalRaft.bAnchoredSetToOceanHeight" }; } + BitFieldValue bUseRaftBPTick() { return { this, "APrimalRaft.bUseRaftBPTick" }; } + BitFieldValue bUseBPSetThrottle() { return { this, "APrimalRaft.bUseBPSetThrottle" }; } + BitFieldValue bHealthPercentageUseHullHealth() { return { this, "APrimalRaft.bHealthPercentageUseHullHealth" }; } + BitFieldValue bSmallRaftPushAwayPlayers() { return { this, "APrimalRaft.bSmallRaftPushAwayPlayers" }; } + BitFieldValue bAllowAutoPilot() { return { this, "APrimalRaft.bAllowAutoPilot" }; } + + // Functions + + static UClass * StaticClass() { return NativeCall(nullptr, "APrimalRaft.StaticClass"); } + bool IsLargeRaft() { return NativeCall(this, "APrimalRaft.IsLargeRaft"); } + void ActivateAllHighlights(bool bRequestFromCaptain, int LTSeatIndex, char IconsToActivate) { NativeCall(this, "APrimalRaft.ActivateAllHighlights", bRequestFromCaptain, LTSeatIndex, IconsToActivate); } + void ActivateGroup(int GroupIndex, bool bIsForCaptain, bool bNewValue, int LtIndex) { NativeCall(this, "APrimalRaft.ActivateGroup", GroupIndex, bIsForCaptain, bNewValue, LtIndex); } + void AddForceToBeApplied(FVector Location, FVector Force, FName ForceName) { NativeCall(this, "APrimalRaft.AddForceToBeApplied", Location, Force, ForceName); } + void AddForceToBeAppliedAtCenterOfGravity(FVector Force, FName ForceName) { NativeCall(this, "APrimalRaft.AddForceToBeAppliedAtCenterOfGravity", Force, ForceName); } + void AddForceToBeAppliedAtCustomSocket(FVector Force, FName ForceName, FName SocketName) { NativeCall(this, "APrimalRaft.AddForceToBeAppliedAtCustomSocket", Force, ForceName, SocketName); } + void AddForceToShipAtLocation(FVector Force, FVector Location, bool bIgnoreBeachedThrottleForceMultiplier) { NativeCall(this, "APrimalRaft.AddForceToShipAtLocation", Force, Location, bIgnoreBeachedThrottleForceMultiplier); } + void AddImpulseToShipAtLocation(FVector Impulse, FVector Location) { NativeCall(this, "APrimalRaft.AddImpulseToShipAtLocation", Impulse, Location); } + void AddTorqueToBeApplied(FVector Force, FName ForceName) { NativeCall(this, "APrimalRaft.AddTorqueToBeApplied", Force, ForceName); } + bool AllowAutoPilot_Tick() { return NativeCall(this, "APrimalRaft.AllowAutoPilot_Tick"); } + void ApplyGlobalDamageToShip(float DamageAmount, bool bIsPercent, AController * EventInstigator, AActor * DamageCauser, TSubclassOf DamageType) { NativeCall>(this, "APrimalRaft.ApplyGlobalDamageToShip", DamageAmount, bIsPercent, EventInstigator, DamageCauser, DamageType); } + bool AreAllMannedSailsClosing() { return NativeCall(this, "APrimalRaft.AreAllMannedSailsClosing"); } + bool AreAllMannedSailsOpening() { return NativeCall(this, "APrimalRaft.AreAllMannedSailsOpening"); } + void AttachToOtherShip(APrimalRaft * OtherShip, TEnumAsByte AttachType, bool bAttachAtWorldTransform, FVector AttachAtWorldLoc, FRotator AttachAtWorldRot) { NativeCall, bool, FVector, FRotator>(this, "APrimalRaft.AttachToOtherShip", OtherShip, AttachType, bAttachAtWorldTransform, AttachAtWorldLoc, AttachAtWorldRot); } + bool BaseIgnoreWaveLocking(APrimalCharacter * BasedChar) { return NativeCall(this, "APrimalRaft.BaseIgnoreWaveLocking", BasedChar); } + void BeginPlay() { NativeCall(this, "APrimalRaft.BeginPlay"); } + FVector * CalculateManualFireCannonCenterLocation(FVector * result, TArray * GroupsIndex, FVector TargetLocation) { return NativeCall *, FVector>(this, "APrimalRaft.CalculateManualFireCannonCenterLocation", result, GroupsIndex, TargetLocation); } + void CalculateSailRotation() { NativeCall(this, "APrimalRaft.CalculateSailRotation"); } + void CalculateSteeringVelocity() { NativeCall(this, "APrimalRaft.CalculateSteeringVelocity"); } + void CalculateThrottleForce() { NativeCall(this, "APrimalRaft.CalculateThrottleForce"); } + int CanAddCriticalShipStructure(APrimalStructure * NewStructure) { return NativeCall(this, "APrimalRaft.CanAddCriticalShipStructure", NewStructure); } + bool CanDoPhysicsRotationAccelerationFollowsRotationDirectMove() { return NativeCall(this, "APrimalRaft.CanDoPhysicsRotationAccelerationFollowsRotationDirectMove"); } + bool CanOrder(APrimalCharacter * FromCharacter, bool bBuildingStructures) { return NativeCall(this, "APrimalRaft.CanOrder", FromCharacter, bBuildingStructures); } + void ChangeActorTeam(int NewTeam) { NativeCall(this, "APrimalRaft.ChangeActorTeam", NewTeam); } + void ChangeGroupName(int GroupIndex, FString NewName) { NativeCall(this, "APrimalRaft.ChangeGroupName", GroupIndex, NewName); } + void CheckForChangeThrottle() { NativeCall(this, "APrimalRaft.CheckForChangeThrottle"); } + void CheckStructurePlacementOnMe_Implementation(int * AllowReturnValue, APrimalStructure * PlacingStructure, AShooterPlayerController * PC, FVector * AtLocation, FRotator * AtRotation, FPlacementData * PlacementData) { NativeCall(this, "APrimalRaft.CheckStructurePlacementOnMe_Implementation", AllowReturnValue, PlacingStructure, PC, AtLocation, AtRotation, PlacementData); } + void ClearStationGroup(int GroupIndex, bool bNotifyChange) { NativeCall(this, "APrimalRaft.ClearStationGroup", GroupIndex, bNotifyChange); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalRaft.ClientMultiUse", ForPC, UseIndex); } + void ClientPrepareForSeamlessTravel_Implementation() { NativeCall(this, "APrimalRaft.ClientPrepareForSeamlessTravel_Implementation"); } + void Destroyed() { NativeCall(this, "APrimalRaft.Destroyed"); } + void DetachFromShip(bool bDetachAtWorldTransform, FVector DetachAtWorldLoc, FRotator DetachAtWorldRot) { NativeCall(this, "APrimalRaft.DetachFromShip", bDetachAtWorldTransform, DetachAtWorldLoc, DetachAtWorldRot); } + bool Die(float KillingDamage, FDamageEvent * DamageEvent, AController * Killer, AActor * DamageCauser) { return NativeCall(this, "APrimalRaft.Die", KillingDamage, DamageEvent, Killer, DamageCauser); } + void DoImpactDamageToShipStructures(FVector AtLocation, float AtRange, float AtDamage, AActor * DamageCauser) { NativeCall(this, "APrimalRaft.DoImpactDamageToShipStructures", AtLocation, AtRange, AtDamage, DamageCauser); } + bool DoesShipHaveBasedPawns(bool bRequireActivePawns) { return NativeCall(this, "APrimalRaft.DoesShipHaveBasedPawns", bRequireActivePawns); } + void DrawDinoFloatingHUD(AShooterHUD * HUD, bool bDrawDinoOrderIcon) { NativeCall(this, "APrimalRaft.DrawDinoFloatingHUD", HUD, bDrawDinoOrderIcon); } + bool EndOrderForGroup(ECaptainOrder::Type CaptainOrder, int GroupIndex, int StationsToFire, AActor * OrderTarget, FVector TargetLocation, bool bUpdateGroupInfos) { return NativeCall(this, "APrimalRaft.EndOrderForGroup", CaptainOrder, GroupIndex, StationsToFire, OrderTarget, TargetLocation, bUpdateGroupInfos); } + void EndOrderForGroups(ECaptainOrder::Type CaptainOrder, TArray * GroupsIndex, TArray * StationsToFire, AActor * OrderTarget, FVector TargetLocation) { NativeCall *, TArray *, AActor *, FVector>(this, "APrimalRaft.EndOrderForGroups", CaptainOrder, GroupsIndex, StationsToFire, OrderTarget, TargetLocation); } + void ExecuteCaptainOrderForGroup(ECaptainOrder::Type OrderIndex, int GroupIndex, int ForceOnGroup, bool bUpdateGroupInfos) { NativeCall(this, "APrimalRaft.ExecuteCaptainOrderForGroup", OrderIndex, GroupIndex, ForceOnGroup, bUpdateGroupInfos); } + void ExecuteCaptainOrderForGroups(ECaptainOrder::Type OrderIndex, TArray * GroupsIndex) { NativeCall *>(this, "APrimalRaft.ExecuteCaptainOrderForGroups", OrderIndex, GroupsIndex); } + void FinalSeamlessTravelled() { NativeCall(this, "APrimalRaft.FinalSeamlessTravelled"); } + void FinalizeCaptainOrderForGroup(ECaptainOrder::Type OrderIndex, int GroupIndex, int StationsToFire, AActor * OrderTarget, FVector OrderLocation, int ForceOnGroup, bool bUpdateGroupInfos) { NativeCall(this, "APrimalRaft.FinalizeCaptainOrderForGroup", OrderIndex, GroupIndex, StationsToFire, OrderTarget, OrderLocation, ForceOnGroup, bUpdateGroupInfos); } + void FinalizeCaptainOrderForGroups(ECaptainOrder::Type OrderIndex, TArray * GroupsIndex, TArray * StationsToFire, AActor * OrderTarget, FVector OrderLocation) { NativeCall *, TArray *, AActor *, FVector>(this, "APrimalRaft.FinalizeCaptainOrderForGroups", OrderIndex, GroupsIndex, StationsToFire, OrderTarget, OrderLocation); } + static APrimalRaft * FindRaftWithID(UWorld * World, int RaftUniqueId) { return NativeCall(nullptr, "APrimalRaft.FindRaftWithID", World, RaftUniqueId); } + void FirstTicked() { NativeCall(this, "APrimalRaft.FirstTicked"); } + bool ForceAllowAddBuffOfClass(TSubclassOf BuffClass) { return NativeCall>(this, "APrimalRaft.ForceAllowAddBuffOfClass", BuffClass); } + void ForceClearAllBasingCharacters(bool bForceSetFalling) { NativeCall(this, "APrimalRaft.ForceClearAllBasingCharacters", bForceSetFalling); } + void ForceClearBasingCharacter(APrimalCharacter * theChar, bool bForceSetFalling) { NativeCall(this, "APrimalRaft.ForceClearBasingCharacter", theChar, bForceSetFalling); } + void ForceMoveShip() { NativeCall(this, "APrimalRaft.ForceMoveShip"); } + void ForceUpdateBasedPawnsMovements() { NativeCall(this, "APrimalRaft.ForceUpdateBasedPawnsMovements"); } + FVector2D * GetAutoPilotHeading(FVector2D * result) { return NativeCall(this, "APrimalRaft.GetAutoPilotHeading", result); } + float GetAverageMannedSailOpenRatio() { return NativeCall(this, "APrimalRaft.GetAverageMannedSailOpenRatio"); } + void GetBasedCrewCounts(int * OutPlayers, int * OutCrew) { NativeCall(this, "APrimalRaft.GetBasedCrewCounts", OutPlayers, OutCrew); } + FString * GetCaptainOrderCommand(FString * result, ECaptainOrder::Type CaptainOrder, bool bFromCaptain) { return NativeCall(this, "APrimalRaft.GetCaptainOrderCommand", result, CaptainOrder, bFromCaptain); } + float GetCrewPaymentIntervalMultiplier() { return NativeCall(this, "APrimalRaft.GetCrewPaymentIntervalMultiplier"); } + int GetCurrentBasedCrewCount(bool bOnlyCountNPCs) { return NativeCall(this, "APrimalRaft.GetCurrentBasedCrewCount", bOnlyCountNPCs); } + UTexture2D * GetCurrentCaptainOrderIcon(ECaptainOrder::Type CurrentCaptainOrder) { return NativeCall(this, "APrimalRaft.GetCurrentCaptainOrderIcon", CurrentCaptainOrder); } + FVector * GetCurrentManualFireLocationForSeat(FVector * result, APrimalStructureSeating * seatToCheck) { return NativeCall(this, "APrimalRaft.GetCurrentManualFireLocationForSeat", result, seatToCheck); } + int GetCurrentSinkReason() { return NativeCall(this, "APrimalRaft.GetCurrentSinkReason"); } + FString * GetDescriptiveName(FString * result) { return NativeCall(this, "APrimalRaft.GetDescriptiveName", result); } + APrimalStructureSeating_DriverSeat * GetDominantSeatForGroup(int GroupIndex) { return NativeCall(this, "APrimalRaft.GetDominantSeatForGroup", GroupIndex); } + AShooterCharacter * GetDriver() { return NativeCall(this, "APrimalRaft.GetDriver"); } + FString * GetEntryDescription(FString * result) { return NativeCall(this, "APrimalRaft.GetEntryDescription", result); } + UTexture2D * GetEntryIcon(UObject * AssociatedDataObject, bool bIsEnabled) { return NativeCall(this, "APrimalRaft.GetEntryIcon", AssociatedDataObject, bIsEnabled); } + FString * GetEntryString(FString * result) { return NativeCall(this, "APrimalRaft.GetEntryString", result); } + float GetGroundDistanceFromHullBottom(bool * OutMovingAway) { return NativeCall(this, "APrimalRaft.GetGroundDistanceFromHullBottom", OutMovingAway); } + float GetHealthPercentage() { return NativeCall(this, "APrimalRaft.GetHealthPercentage"); } + FVector * GetInterpolatedVelocity(FVector * result) { return NativeCall(this, "APrimalRaft.GetInterpolatedVelocity", result); } + long double GetLastRowTime() { return NativeCall(this, "APrimalRaft.GetLastRowTime"); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalRaft.GetLifetimeReplicatedProps", OutLifetimeProps); } + APrimalStructureSeating * GetLocalCaptainsSeat() { return NativeCall(this, "APrimalRaft.GetLocalCaptainsSeat"); } + APrimalStructure * GetMainDriverSeat() { return NativeCall(this, "APrimalRaft.GetMainDriverSeat"); } + int GetMannedSailsCount() { return NativeCall(this, "APrimalRaft.GetMannedSailsCount"); } + float GetMaxFloatingHUDRange() { return NativeCall(this, "APrimalRaft.GetMaxFloatingHUDRange"); } + float GetMaxMovementWeight() { return NativeCall(this, "APrimalRaft.GetMaxMovementWeight"); } + float GetThrottleForce() { return NativeCall(this, "APrimalRaft.GetThrottleForce"); } + FVector * GetParticleSystemClampingVelocity(FVector * result) { return NativeCall(this, "APrimalRaft.GetParticleSystemClampingVelocity", result); } + FString * GetRaftDescriptiveName(FString * result) { return NativeCall(this, "APrimalRaft.GetRaftDescriptiveName", result); } + float GetRotationRateWithAcceleration11(float CurrentRotation, float TargetRotation, float RotationSpeed, float DeltaTime, float CurrentDesiredRotationRate, float DesiredRotationRate) { return NativeCall(this, "APrimalRaft.GetRotationRateWithAcceleration11", CurrentRotation, TargetRotation, RotationSpeed, DeltaTime, CurrentDesiredRotationRate, DesiredRotationRate); } + float GetRowingInterval() { return NativeCall(this, "APrimalRaft.GetRowingInterval"); } + float GetRudderAngle() { return NativeCall(this, "APrimalRaft.GetRudderAngle"); } + float GetSaddleStructureMaximumFoundationSupport2DBuildDistance(APrimalStructure * theStructure) { return NativeCall(this, "APrimalRaft.GetSaddleStructureMaximumFoundationSupport2DBuildDistance", theStructure); } + void GetSailThrottleForce(APrimalStructureSail * ForSail, float * OutThrottleForceMultiplier, float * OutSteeringForceMultiplier) { NativeCall(this, "APrimalRaft.GetSailThrottleForce", ForSail, OutThrottleForceMultiplier, OutSteeringForceMultiplier); } + float GetSailUnitPercentage() { return NativeCall(this, "APrimalRaft.GetSailUnitPercentage"); } + TMap, int, FDefaultSetAllocator, TDefaultMapKeyFuncs, int, 0> > * GetShipAmmoTotals(TMap, int, FDefaultSetAllocator, TDefaultMapKeyFuncs, int, 0> > * result, TArray> ammoTypes) { return NativeCall, int, FDefaultSetAllocator, TDefaultMapKeyFuncs, int, 0> > *, TMap, int, FDefaultSetAllocator, TDefaultMapKeyFuncs, int, 0> > *, TArray>>(this, "APrimalRaft.GetShipAmmoTotals", result, ammoTypes); } + TArray * GetShipBasedPawns(TArray * result, USceneComponent * OnComponent, bool bOnlyActivePawns) { return NativeCall *, TArray *, USceneComponent *, bool>(this, "APrimalRaft.GetShipBasedPawns", result, OnComponent, bOnlyActivePawns); } + FVector * GetShipForwardVector(FVector * result) { return NativeCall(this, "APrimalRaft.GetShipForwardVector", result); } + float GetShipMovementForceMult() { return NativeCall(this, "APrimalRaft.GetShipMovementForceMult"); } + FVector * GetShipRightVector(FVector * result) { return NativeCall(this, "APrimalRaft.GetShipRightVector", result); } + FRotator * GetShipRotation(FRotator * result, float YawOffset) { return NativeCall(this, "APrimalRaft.GetShipRotation", result, YawOffset); } + float GetShipRowingInput() { return NativeCall(this, "APrimalRaft.GetShipRowingInput"); } + int GetShipRowingSeatCount() { return NativeCall(this, "APrimalRaft.GetShipRowingSeatCount"); } + int GetShipSailCount() { return NativeCall(this, "APrimalRaft.GetShipSailCount"); } + TEnumAsByte * GetShipSizeClass(TEnumAsByte * result) { return NativeCall *, TEnumAsByte *>(this, "APrimalRaft.GetShipSizeClass", result); } + float GetShipTargetThrottleRatio() { return NativeCall(this, "APrimalRaft.GetShipTargetThrottleRatio"); } + FVector * GetShipVelocity(FVector * result) { return NativeCall(this, "APrimalRaft.GetShipVelocity", result); } + FVector * GetShipVelocityAtLocation(FVector * result, FVector AtLocation) { return NativeCall(this, "APrimalRaft.GetShipVelocityAtLocation", result, AtLocation); } + float GetShipWeightPercentage() { return NativeCall(this, "APrimalRaft.GetShipWeightPercentage"); } + float GetShipWeightSinkingPercentage() { return NativeCall(this, "APrimalRaft.GetShipWeightSinkingPercentage"); } + float GetSinkTargetPitch() { return NativeCall(this, "APrimalRaft.GetSinkTargetPitch"); } + float GetSpoilingTimeMultiplier(UPrimalItem * anItem) { return NativeCall(this, "APrimalRaft.GetSpoilingTimeMultiplier", anItem); } + FString * GetStationGroupName(FString * result, int groupIndex) { return NativeCall(this, "APrimalRaft.GetStationGroupName", result, groupIndex); } + float GetSteeringForce() { return NativeCall(this, "APrimalRaft.GetSteeringForce"); } + float GetTimeToResetRudderAngle(float WithInput) { return NativeCall(this, "APrimalRaft.GetTimeToResetRudderAngle", WithInput); } + float GetTotalClaimTime() { return NativeCall(this, "APrimalRaft.GetTotalClaimTime"); } + float GetTotalSailUnits() { return NativeCall(this, "APrimalRaft.GetTotalSailUnits"); } + float GetTotalUnclaimTime() { return NativeCall(this, "APrimalRaft.GetTotalUnclaimTime"); } + bool HasOpenSails() { return NativeCall(this, "APrimalRaft.HasOpenSails"); } + bool HasOpenUnMannedSails() { return NativeCall(this, "APrimalRaft.HasOpenUnMannedSails"); } + void InitializeStationGroups() { NativeCall(this, "APrimalRaft.InitializeStationGroups"); } + bool IsAnchored() { return NativeCall(this, "APrimalRaft.IsAnchored"); } + bool IsAutoPilotActive() { return NativeCall(this, "APrimalRaft.IsAutoPilotActive"); } + bool IsCheatWind() { return NativeCall(this, "APrimalRaft.IsCheatWind"); } + bool IsDocked() { return NativeCall(this, "APrimalRaft.IsDocked"); } + bool IsDryDocked() { return NativeCall(this, "APrimalRaft.IsDryDocked"); } + bool IsPointInsideThisRaft(FVector * TestPoint) { return NativeCall(this, "APrimalRaft.IsPointInsideThisRaft", TestPoint); } + bool IsShipCheckingForRowing() { return NativeCall(this, "APrimalRaft.IsShipCheckingForRowing"); } + bool IsUpdatingComponentTransforms(USceneComponent * InSceneComponent) { return NativeCall(this, "APrimalRaft.IsUpdatingComponentTransforms", InSceneComponent); } + void MarkForSeamlessTravel(unsigned int DestinationServerId, ESeamlessVolumeSide::Side DestinationServerVolumeSide) { NativeCall(this, "APrimalRaft.MarkForSeamlessTravel", DestinationServerId, DestinationServerVolumeSide); } + void Multi_OnShipRow_Implementation() { NativeCall(this, "APrimalRaft.Multi_OnShipRow_Implementation"); } + void NetClientInterpolateTo_Implementation(FVector NewLocation, FRotator NewRotation) { NativeCall(this, "APrimalRaft.NetClientInterpolateTo_Implementation", NewLocation, NewRotation); } + void NetForceSyncTransform_Implementation(FVector NewLocation, FRotator NewRotation) { NativeCall(this, "APrimalRaft.NetForceSyncTransform_Implementation", NewLocation, NewRotation); } + void NetSetGroupsStructuresCaptainOrder_Implementation(ECaptainOrder::Type CaptainOrder, int GroupIndex) { NativeCall(this, "APrimalRaft.NetSetGroupsStructuresCaptainOrder_Implementation", CaptainOrder, GroupIndex); } + void NetUpdateDinoNameStrings_Implementation(FString * NewTamerString, FString * NewTamedName) { NativeCall(this, "APrimalRaft.NetUpdateDinoNameStrings_Implementation", NewTamerString, NewTamedName); } + void OnActivateGroupHighlight(int GroupIndex, bool bActivate, char IconsToActivate) { NativeCall(this, "APrimalRaft.OnActivateGroupHighlight", GroupIndex, bActivate, IconsToActivate); } + void OnAddCriticalShipStructure(APrimalStructure * NewStructure) { NativeCall(this, "APrimalRaft.OnAddCriticalShipStructure", NewStructure); } + void OnDeserializedByGame(EOnDesrializationType::Type DeserializationType) { NativeCall(this, "APrimalRaft.OnDeserializedByGame", DeserializationType); } + void OnRemoveCriticalShipStructure(APrimalStructure * OldStructure) { NativeCall(this, "APrimalRaft.OnRemoveCriticalShipStructure", OldStructure); } + void OnRep_IsInDrydock() { NativeCall(this, "APrimalRaft.OnRep_IsInDrydock"); } + void OnRep_IsInWetDock() { NativeCall(this, "APrimalRaft.OnRep_IsInWetDock"); } + void OnSaddleStructuresUpdated(APrimalStructure * SaddleStructure, bool bWasRemoved) { NativeCall(this, "APrimalRaft.OnSaddleStructuresUpdated", SaddleStructure, bWasRemoved); } + void OnShipRowingStart() { NativeCall(this, "APrimalRaft.OnShipRowingStart"); } + void OnShipRowingStop() { NativeCall(this, "APrimalRaft.OnShipRowingStop"); } + void OnStructurePlacedOnShip(APrimalStructure * NewStructure) { NativeCall(this, "APrimalRaft.OnStructurePlacedOnShip", NewStructure); } + void OnStructureRemovedFromShip(APrimalStructure * OldStructure) { NativeCall(this, "APrimalRaft.OnStructureRemovedFromShip", OldStructure); } + void OnUpdatedStationGroupInfos() { NativeCall(this, "APrimalRaft.OnUpdatedStationGroupInfos"); } + UPrimitiveComponent * OverrideBasedProjectileBoundsComponent(UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalRaft.OverrideBasedProjectileBoundsComponent", BasedOnComponent); } + int OverrideBasedProjectileOutOfBounds(UPrimitiveComponent * ProjectileUpdatedComponent) { return NativeCall(this, "APrimalRaft.OverrideBasedProjectileOutOfBounds", ProjectileUpdatedComponent); } + void PlayDying(float KillingDamage, FDamageEvent * DamageEvent, APawn * InstigatingPawn, AActor * DamageCauser) { NativeCall(this, "APrimalRaft.PlayDying", KillingDamage, DamageEvent, InstigatingPawn, DamageCauser); } + void PostInitializeComponents() { NativeCall(this, "APrimalRaft.PostInitializeComponents"); } + bool PreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalRaft.PreventCharacterBasing", OtherActor, BasedOnComponent); } + void ProcessEditText(AShooterPlayerController * ForPC, FString * TextToUse, bool checkedBox, unsigned int ExtraID1, unsigned int ExtraID2) { NativeCall(this, "APrimalRaft.ProcessEditText", ForPC, TextToUse, checkedBox, ExtraID1, ExtraID2); } + bool RaftStructurePreventCharacterBasing(AActor * OtherActor, UPrimitiveComponent * BasedOnComponent) { return NativeCall(this, "APrimalRaft.RaftStructurePreventCharacterBasing", OtherActor, BasedOnComponent); } + void RefreshLongRangeStasis() { NativeCall(this, "APrimalRaft.RefreshLongRangeStasis"); } + void RemoveForceToBeApplied(FName ForceName) { NativeCall(this, "APrimalRaft.RemoveForceToBeApplied", ForceName); } + void RemoveTameUnitCost() { NativeCall(this, "APrimalRaft.RemoveTameUnitCost"); } + void RemoveTorqueToBeApplied(FName ForceName) { NativeCall(this, "APrimalRaft.RemoveTorqueToBeApplied", ForceName); } + void ResetSailingInputs() { NativeCall(this, "APrimalRaft.ResetSailingInputs"); } + void ServerPrepareForSeamlessTravel_Implementation() { NativeCall(this, "APrimalRaft.ServerPrepareForSeamlessTravel_Implementation"); } + void SetAimLocation(FVector AimLocation) { NativeCall(this, "APrimalRaft.SetAimLocation", AimLocation); } + void SetAutoStationGrouping(bool NewValue) { NativeCall(this, "APrimalRaft.SetAutoStationGrouping", NewValue); } + void SetCharacterStatusTameable(bool bSetTameable, bool bCreateInventory, bool keepInventoryForWakingTame) { NativeCall(this, "APrimalRaft.SetCharacterStatusTameable", bSetTameable, bCreateInventory, keepInventoryForWakingTame); } + void SetCurrentManualFireLocationForSeat(APrimalStructureSeating * seatToCheck, FVector * location) { NativeCall(this, "APrimalRaft.SetCurrentManualFireLocationForSeat", seatToCheck, location); } + void SetDeath(bool bForceRagdoll) { NativeCall(this, "APrimalRaft.SetDeath", bForceRagdoll); } + bool SetOrderForGroup(ECaptainOrder::Type CaptainOrder, int GroupIndex, bool bUpdateGroupInfos) { return NativeCall(this, "APrimalRaft.SetOrderForGroup", CaptainOrder, GroupIndex, bUpdateGroupInfos); } + void SetOrderForGroups(ECaptainOrder::Type CaptainOrder, TArray * GroupsIndex) { NativeCall *>(this, "APrimalRaft.SetOrderForGroups", CaptainOrder, GroupsIndex); } + void SetShipDriver(AShooterCharacter * NewDriver) { NativeCall(this, "APrimalRaft.SetShipDriver", NewDriver); } + void SetShipReleasedState(bool bIsReleased, APlayerController * ForPC) { NativeCall(this, "APrimalRaft.SetShipReleasedState", bIsReleased, ForPC); } + void SetShipWetDockReleasedState(bool bIsReleased) { NativeCall(this, "APrimalRaft.SetShipWetDockReleasedState", bIsReleased); } + void SetSteeringInput(float Val) { NativeCall(this, "APrimalRaft.SetSteeringInput", Val); } + void SetThrottleInput(float Val) { NativeCall(this, "APrimalRaft.SetThrottleInput", Val); } + void SetThrottleRatio(float NewRatio, bool bForceSetNow) { NativeCall(this, "APrimalRaft.SetThrottleRatio", NewRatio, bForceSetNow); } + void SetTurningSailsInput(float Val) { NativeCall(this, "APrimalRaft.SetTurningSailsInput", Val); } + void ShipRow() { NativeCall(this, "APrimalRaft.ShipRow"); } + void SimulatePhysics(float DeltaSeconds) { NativeCall(this, "APrimalRaft.SimulatePhysics", DeltaSeconds); } + void Stasis() { NativeCall(this, "APrimalRaft.Stasis"); } + void StopActivateAllHighlights() { NativeCall(this, "APrimalRaft.StopActivateAllHighlights"); } + void SyncRowingVarsToNPCs() { NativeCall(this, "APrimalRaft.SyncRowingVarsToNPCs"); } + float TakeDamage(float DamageAmount, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalRaft.TakeDamage", DamageAmount, DamageEvent, EventInstigator, DamageCauser); } + void TeleportSucceeded(bool bIsATest, bool bSimpleTeleport) { NativeCall(this, "APrimalRaft.TeleportSucceeded", bIsATest, bSimpleTeleport); } + void TempDisableForcedVelocityDirection() { NativeCall(this, "APrimalRaft.TempDisableForcedVelocityDirection"); } + void Tick(float DeltaSeconds) { NativeCall(this, "APrimalRaft.Tick", DeltaSeconds); } + void TickCriticalShipStructures(float DeltaSeconds) { NativeCall(this, "APrimalRaft.TickCriticalShipStructures", DeltaSeconds); } + void TickRowing() { NativeCall(this, "APrimalRaft.TickRowing"); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalRaft.TryMultiUse", ForPC, UseIndex); } + void UnPossessed() { NativeCall(this, "APrimalRaft.UnPossessed"); } + void UnseatAllNPCs(bool bIfCannotUse) { NativeCall(this, "APrimalRaft.UnseatAllNPCs", bIfCannotUse); } + void Unstasis() { NativeCall(this, "APrimalRaft.Unstasis"); } + void UpdateCaptainSkillSailMultipliers() { NativeCall(this, "APrimalRaft.UpdateCaptainSkillSailMultipliers"); } + void UpdatePhysicsBase() { NativeCall(this, "APrimalRaft.UpdatePhysicsBase"); } + void UpdateRaftRelevant() { NativeCall(this, "APrimalRaft.UpdateRaftRelevant"); } + void UpdateRowingVars() { NativeCall(this, "APrimalRaft.UpdateRowingVars"); } + void UpdateSailingVars() { NativeCall(this, "APrimalRaft.UpdateSailingVars"); } + void UpdateShouldTickRowing() { NativeCall(this, "APrimalRaft.UpdateShouldTickRowing"); } + void UpdateTameUnitCost() { NativeCall(this, "APrimalRaft.UpdateTameUnitCost"); } + void UpdateTickEnabledForGroup(ECaptainOrder::Type CaptainOrder, int GroupIndex) { NativeCall(this, "APrimalRaft.UpdateTickEnabledForGroup", CaptainOrder, GroupIndex); } + void UpdatedBasedPawns() { NativeCall(this, "APrimalRaft.UpdatedBasedPawns"); } + void VesselDynamicsOnHit(AActor * OtherActor, UPrimitiveComponent * OtherComp, FVector NormalImpulse, FHitResult * Hit) { NativeCall(this, "APrimalRaft.VesselDynamicsOnHit", OtherActor, OtherComp, NormalImpulse, Hit); } + bool WantsLongRangeStasis() { return NativeCall(this, "APrimalRaft.WantsLongRangeStasis"); } + bool WantsVesselPhysics() { return NativeCall(this, "APrimalRaft.WantsVesselPhysics"); } + bool BPAllowMovementSound() { return NativeCall(this, "APrimalRaft.BPAllowMovementSound"); } + void BPSetAimLocation(FVector AimLocation) { NativeCall(this, "APrimalRaft.BPSetAimLocation", AimLocation); } + bool BPSetThrottleInput(float Val) { return NativeCall(this, "APrimalRaft.BPSetThrottleInput", Val); } + void BPSimulatePhysics(float DeltaTime) { NativeCall(this, "APrimalRaft.BPSimulatePhysics", DeltaTime); } + void BPTick(float DeltaSeconds) { NativeCall(this, "APrimalRaft.BPTick", DeltaSeconds); } + void BPVesselDynamicsOnHit(AActor * OtherActor, UPrimitiveComponent * OtherComp, FVector NormalImpulse, FHitResult * Hit) { NativeCall(this, "APrimalRaft.BPVesselDynamicsOnHit", OtherActor, OtherComp, NormalImpulse, Hit); } + void BP_AdjustRowImpulse(int FromRowingSeatIndex, int TotalNumActiveRowers, int CurrentActiveRowerNum, FVector * Location, FVector * Impulse) { NativeCall(this, "APrimalRaft.BP_AdjustRowImpulse", FromRowingSeatIndex, TotalNumActiveRowers, CurrentActiveRowerNum, Location, Impulse); } + void BP_OnShipRow() { NativeCall(this, "APrimalRaft.BP_OnShipRow"); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalRaft.GetPrivateStaticClass", Package); } + void Multi_OnShipRow() { NativeCall(this, "APrimalRaft.Multi_OnShipRow"); } + void NetClientInterpolateTo(FVector NewLocation, FRotator NewRotation) { NativeCall(this, "APrimalRaft.NetClientInterpolateTo", NewLocation, NewRotation); } + void NetSetGroupsStructuresCaptainOrder(ECaptainOrder::Type CaptainOrder, int GroupIndex) { NativeCall(this, "APrimalRaft.NetSetGroupsStructuresCaptainOrder", CaptainOrder, GroupIndex); } + static void StaticRegisterNativesAPrimalRaft() { NativeCall(nullptr, "APrimalRaft.StaticRegisterNativesAPrimalRaft"); } +}; + +struct APrimalStructureSeating : APrimalStructureItemContainer {}; + +struct APrimalStructureSeating_DriverSeat : APrimalStructureSeating +{ +}; + +struct APrimalStructureSail +{ + TArray Sail_CanvasRootComponentField() { return *GetNativePointerField*>(this, "APrimalStructureSail.Sail_CanvasRootComponent"); } + TArray& Sail_StartEndPercentOfThrottlePerSailField() { return *GetNativePointerField*>(this, "APrimalStructureSail.Sail_StartEndPercentOfThrottlePerSail"); } + TArray& Sail_CanvasStartScaleField() { return *GetNativePointerField*>(this, "APrimalStructureSail.Sail_CanvasStartScale"); } + float& Sail_CanvasHealthField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_CanvasHealth"); } + float& Sail_CanvasMaxHealthField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_CanvasMaxHealth"); } + float& Sail_CurrentOpenRatioField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_CurrentOpenRatio"); } + float& Sail_UnMannedThrottleRatioField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_UnMannedThrottleRatio"); } + float& SailUnitsField() { return *GetNativePointerField(this, "APrimalStructureSail.SailUnits"); } + float& Sail_OpenSpeedField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_OpenSpeed"); } + float& Sail_OpenSpeed_MultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_OpenSpeed_Multiplier"); } + float& Sail_ClientOpenSpeedMultField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ClientOpenSpeedMult"); } + float& Sail_InterpStopThresholdField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_InterpStopThreshold"); } + float& Sail_MaxVelocityField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_MaxVelocity"); } + float& Sail_AdditionalMaxVelocityField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_AdditionalMaxVelocity"); } + float& Sail_ExtraAdditionalMaxVelocity_MultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ExtraAdditionalMaxVelocity_Multiplier"); } + float& Sail_SteeringForce_AtVelocityMax_MultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_SteeringForce_AtVelocityMax_Multiplier"); } + float& Sail_ThrottleForce_MultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ThrottleForce_Multiplier"); } + float& Sail_MaxMovementWeight_MultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_MaxMovementWeight_Multiplier"); } + float& Sail_ThrottleForceField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ThrottleForce"); } + float& Sail_ThrottleForceWindMult_MinField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ThrottleForceWindMult_Min"); } + float& Sail_ThrottleForceWindMult_MaxField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ThrottleForceWindMult_Max"); } + float& Sail_WindMinField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_WindMin"); } + float& Sail_WindMaxField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_WindMax"); } + float& Sail_SteeringOpenRatioPowerField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_SteeringOpenRatioPower"); } + float& Sail_WindThrottleForceScalePowerField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_WindThrottleForceScalePower"); } + float& WindSpeed_NonOceanVolume_DefaultField() { return *GetNativePointerField(this, "APrimalStructureSail.WindSpeed_NonOceanVolume_Default"); } + float& Sail_MaxMovementWeightField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_MaxMovementWeight"); } + float& Sail_SteeringForce_AtVelocityMaxField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_SteeringForce_AtVelocityMax"); } + float& Sail_ClosedMinZScaleField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_ClosedMinZScale"); } + char& Sail_NumOfSailsField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_NumOfSails"); } + int& SailCanvasMaterialIndexField() { return *GetNativePointerField(this, "APrimalStructureSail.SailCanvasMaterialIndex"); } + float& MinWindEffectivenessSteeringForceMultiplierField() { return *GetNativePointerField(this, "APrimalStructureSail.MinWindEffectivenessSteeringForceMultiplier"); } + float& WindPercentageField() { return *GetNativePointerField(this, "APrimalStructureSail.WindPercentage"); } + float& EffectiveWindPctField() { return *GetNativePointerField(this, "APrimalStructureSail.EffectiveWindPct"); } + float& MaxPossibleRotationAngleField() { return *GetNativePointerField(this, "APrimalStructureSail.MaxPossibleRotationAngle"); } + float& CurrentRotationAngleField() { return *GetNativePointerField(this, "APrimalStructureSail.CurrentRotationAngle"); } + float& MaxAcceptableAngleDiffToGatherWindField() { return *GetNativePointerField(this, "APrimalStructureSail.MaxAcceptableAngleDiffToGatherWind"); } + float& StatMult_MaxAcceptableAngleDiffToGatherWindField() { return *GetNativePointerField(this, "APrimalStructureSail.StatMult_MaxAcceptableAngleDiffToGatherWind"); } + float& StatMult_MaxMovementWeightField() { return *GetNativePointerField(this, "APrimalStructureSail.StatMult_MaxMovementWeight"); } + float& StatMult_AccelerationField() { return *GetNativePointerField(this, "APrimalStructureSail.StatMult_Acceleration"); } + float& StatMult_TurningEffectivenessField() { return *GetNativePointerField(this, "APrimalStructureSail.StatMult_TurningEffectiveness"); } + float& StatMult_MaxVelocityField() { return *GetNativePointerField(this, "APrimalStructureSail.StatMult_MaxVelocity"); } + float& PowMultipleForWindFalloffField() { return *GetNativePointerField(this, "APrimalStructureSail.PowMultipleForWindFalloff"); } + float& PowMultipleForSpeedFalloffFromDamageField() { return *GetNativePointerField(this, "APrimalStructureSail.PowMultipleForSpeedFalloffFromDamage"); } + float& MinEffectivenessFromWindCapturedField() { return *GetNativePointerField(this, "APrimalStructureSail.MinEffectivenessFromWindCaptured"); } + float& WindLevelToBeVisiblyFullField() { return *GetNativePointerField(this, "APrimalStructureSail.WindLevelToBeVisiblyFull"); } + float& SailRotationSpeedField() { return *GetNativePointerField(this, "APrimalStructureSail.SailRotationSpeed"); } + float& Sail_UnMannedGoalAngleField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_UnMannedGoalAngle"); } + FRotator& WindDirectionField() { return *GetNativePointerField(this, "APrimalStructureSail.WindDirection"); } + float& SailRepairPercentPerIntervalField() { return *GetNativePointerField(this, "APrimalStructureSail.SailRepairPercentPerInterval"); } + float& AdditionalSailRepairPercentNextIntervalField() { return *GetNativePointerField(this, "APrimalStructureSail.AdditionalSailRepairPercentNextInterval"); } + TArray& SailRepairResourceRequirementsField() { return *GetNativePointerField*>(this, "APrimalStructureSail.SailRepairResourceRequirements"); } + FName& SailCanvasCollisionNameField() { return *GetNativePointerField(this, "APrimalStructureSail.SailCanvasCollisionName"); } + float& RepairSailAmountRemainingField() { return *GetNativePointerField(this, "APrimalStructureSail.RepairSailAmountRemaining"); } + bool& IsReservedToBeMannedField() { return *GetNativePointerField(this, "APrimalStructureSail.IsReservedToBeManned"); } + UAnimSequence * SeatingAnimLeftField() { return *GetNativePointerField(this, "APrimalStructureSail.SeatingAnimLeft"); } + UAnimSequence * SeatingAnimRightField() { return *GetNativePointerField(this, "APrimalStructureSail.SeatingAnimRight"); } + bool& bHasPlayedTautSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.bHasPlayedTautSound"); } + TSubclassOf& SailStructureSettingsClassField() { return *GetNativePointerField*>(this, "APrimalStructureSail.SailStructureSettingsClass"); } + float& NPC_UseLocation_OffsetFromMastField() { return *GetNativePointerField(this, "APrimalStructureSail.NPC_UseLocation_OffsetFromMast"); } + float& SailAngularDampingField() { return *GetNativePointerField(this, "APrimalStructureSail.SailAngularDamping"); } + float& SailLinearDampingField() { return *GetNativePointerField(this, "APrimalStructureSail.SailLinearDamping"); } + TArray& UnfurledMaterialParamNamesField() { return *GetNativePointerField*>(this, "APrimalStructureSail.UnfurledMaterialParamNames"); } + TArray& UnfurledMaterialParamsOffOnPercentOpenField() { return *GetNativePointerField*>(this, "APrimalStructureSail.UnfurledMaterialParamsOffOnPercentOpen"); } + TArray& SailMaterialIndicesField() { return *GetNativePointerField*>(this, "APrimalStructureSail.SailMaterialIndices"); } + USoundBase * SailTurnSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailTurnSound"); } + USoundCue * SailFurlSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailFurlSound"); } + USoundCue * SailUnfurlSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailUnfurlSound"); } + USoundCue * SailBillowSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailBillowSound"); } + USoundCue * SailBillowWithWindSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailBillowWithWindSound"); } + USoundCue * SailTautSoundField() { return *GetNativePointerField(this, "APrimalStructureSail.SailTautSound"); } + bool& bFlushSkeletonField() { return *GetNativePointerField(this, "APrimalStructureSail.bFlushSkeleton"); } + TArray& UnfurlSoundOpenPercentTriggersField() { return *GetNativePointerField*>(this, "APrimalStructureSail.UnfurlSoundOpenPercentTriggers"); } + TArray& HasTriggeredUnfurlAtThresholdIndexField() { return *GetNativePointerField*>(this, "APrimalStructureSail.HasTriggeredUnfurlAtThresholdIndex"); } + float& WindPercentToTriggerTautSFXField() { return *GetNativePointerField(this, "APrimalStructureSail.WindPercentToTriggerTautSFX"); } + float& SailOpenPercentToTriggerTautSFXField() { return *GetNativePointerField(this, "APrimalStructureSail.SailOpenPercentToTriggerTautSFX"); } + float& SailOpenPercentToAllowBillowSFXField() { return *GetNativePointerField(this, "APrimalStructureSail.SailOpenPercentToAllowBillowSFX"); } + float& WindPercentToCutOffBillowSFXField() { return *GetNativePointerField(this, "APrimalStructureSail.WindPercentToCutOffBillowSFX"); } + UAudioComponent * SailTurnSoundComponentField() { return *GetNativePointerField(this, "APrimalStructureSail.SailTurnSoundComponent"); } + UAudioComponent * SailBillowSoundComponentField() { return *GetNativePointerField(this, "APrimalStructureSail.SailBillowSoundComponent"); } + UAudioComponent * SailFullWindBillowSoundComponentField() { return *GetNativePointerField(this, "APrimalStructureSail.SailFullWindBillowSoundComponent"); } + UAudioComponent * SailFurlUnfurlSoundComponentField() { return *GetNativePointerField(this, "APrimalStructureSail.SailFurlUnfurlSoundComponent"); } + float& Sail_PreviousCanvasHealthField() { return *GetNativePointerField(this, "APrimalStructureSail.Sail_PreviousCanvasHealth"); } + + // Bit fields + + BitFieldValue bIsSailRepairing() { return { this, "APrimalStructureSail.bIsSailRepairing" }; } + BitFieldValue bReallyCanUseShipThrottleUnmanned() { return { this, "APrimalStructureSail.bReallyCanUseShipThrottleUnmanned" }; } + BitFieldValue bUpdateSailsVisualsByPercentage() { return { this, "APrimalStructureSail.bUpdateSailsVisualsByPercentage" }; } + BitFieldValue bFirstTick() { return { this, "APrimalStructureSail.bFirstTick" }; } + BitFieldValue bIgnoreWindEffectiveness() { return { this, "APrimalStructureSail.bIgnoreWindEffectiveness" }; } + BitFieldValue bSpawnWithFullHealth() { return { this, "APrimalStructureSail.bSpawnWithFullHealth" }; } + BitFieldValue bPutSailControlsInRootMultiUse() { return { this, "APrimalStructureSail.bPutSailControlsInRootMultiUse" }; } + BitFieldValue bHideLadderControls() { return { this, "APrimalStructureSail.bHideLadderControls" }; } + BitFieldValue bUseConstantSailInterpolation() { return { this, "APrimalStructureSail.bUseConstantSailInterpolation" }; } + BitFieldValue bUseSailSounds() { return { this, "APrimalStructureSail.bUseSailSounds" }; } + BitFieldValue bRefreshedSeatLocations() { return { this, "APrimalStructureSail.bRefreshedSeatLocations" }; } + BitFieldValue bUsesBillowMaterialParam() { return { this, "APrimalStructureSail.bUsesBillowMaterialParam" }; } + BitFieldValue bIsManned() { return { this, "APrimalStructureSail.bIsManned" }; } + + // Functions + + static UClass * GetPrivateStaticClass() { return NativeCall(nullptr, "APrimalStructureSail.GetPrivateStaticClass"); } + bool AddRepairPercentForNextInterval(float Multiplier) { return NativeCall(this, "APrimalStructureSail.AddRepairPercentForNextInterval", Multiplier); } + void BPGetInfoFromConsumedItemForPlacedStructure_Implementation(UPrimalItem * ItemToConsumed) { NativeCall(this, "APrimalStructureSail.BPGetInfoFromConsumedItemForPlacedStructure_Implementation", ItemToConsumed); } + void BeginPlay() { NativeCall(this, "APrimalStructureSail.BeginPlay"); } + int CanPlaceCriticalShipStructure(APrimalRaft * OnShip) { return NativeCall(this, "APrimalStructureSail.CanPlaceCriticalShipStructure", OnShip); } + bool CanSailBeRepaired(AShooterPlayerController * ByPC, bool bCurrentlyRepairing) { return NativeCall(this, "APrimalStructureSail.CanSailBeRepaired", ByPC, bCurrentlyRepairing); } + bool CanUseShipThrottle() { return NativeCall(this, "APrimalStructureSail.CanUseShipThrottle"); } + void ClearReservedSeat() { NativeCall(this, "APrimalStructureSail.ClearReservedSeat"); } + void ClientMultiUse(APlayerController * ForPC, int UseIndex) { NativeCall(this, "APrimalStructureSail.ClientMultiUse", ForPC, UseIndex); } + void ConsumeSailRepairRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent, UPrimalInventoryComponent * additionalInventoryComp) { NativeCall(this, "APrimalStructureSail.ConsumeSailRepairRequirementsPercent", invComp, Percent, additionalInventoryComp); } + void Control(APrimalCharacter * ShooterCharacter, int SeatNumber, bool bLockedToSeat) { NativeCall(this, "APrimalStructureSail.Control", ShooterCharacter, SeatNumber, bLockedToSeat); } + void DrawHUD(AShooterHUD * HUD) { NativeCall(this, "APrimalStructureSail.DrawHUD", HUD); } + void DrawPlacementHUD_Implementation(AHUD * HUD) { NativeCall(this, "APrimalStructureSail.DrawPlacementHUD_Implementation", HUD); } + void GetLifetimeReplicatedProps(TArray * OutLifetimeProps) { NativeCall *>(this, "APrimalStructureSail.GetLifetimeReplicatedProps", OutLifetimeProps); } + float GetSailThrottleWindMult() { return NativeCall(this, "APrimalStructureSail.GetSailThrottleWindMult"); } + bool IsManned() { return NativeCall(this, "APrimalStructureSail.IsManned"); } + void ModifyClientSideMoveToLocation(FVector * MoveToLoc) { NativeCall(this, "APrimalStructureSail.ModifyClientSideMoveToLocation", MoveToLoc); } + bool ModifyMoveToOrderedActorsArray(TArray * MoveToArray, APrimalCharacter * FromPlayer) { return NativeCall *, APrimalCharacter *>(this, "APrimalStructureSail.ModifyMoveToOrderedActorsArray", MoveToArray, FromPlayer); } + bool NPC_CanUseStructure(APrimalCharacter * ForChar) { return NativeCall(this, "APrimalStructureSail.NPC_CanUseStructure", ForChar); } + void Net_SetUnMannedGoalAngle(float newAngle) { NativeCall(this, "APrimalStructureSail.Net_SetUnMannedGoalAngle", newAngle); } + void Net_SetUnMannedThrottleRatio(float newRatio) { NativeCall(this, "APrimalStructureSail.Net_SetUnMannedThrottleRatio", newRatio); } + void OnRep_SeatedCharacter() { NativeCall(this, "APrimalStructureSail.OnRep_SeatedCharacter"); } + void OnRep_SetCanvasHealth() { NativeCall(this, "APrimalStructureSail.OnRep_SetCanvasHealth"); } + void OnStructurePlacedNotify(APlayerController * PC, FVector AtLocation, FRotator AtRotation, FRotator PlayerViewRotation, APawn * AttachToPawn, FName BoneName, bool bFlipped) { NativeCall(this, "APrimalStructureSail.OnStructurePlacedNotify", PC, AtLocation, AtRotation, PlayerViewRotation, AttachToPawn, BoneName, bFlipped); } + float OverrideServerMultiUseAcceptRange() { return NativeCall(this, "APrimalStructureSail.OverrideServerMultiUseAcceptRange"); } + void PostInitializeComponents() { NativeCall(this, "APrimalStructureSail.PostInitializeComponents"); } + void RefreshSeatsLocations() { NativeCall(this, "APrimalStructureSail.RefreshSeatsLocations"); } + void Release(APrimalCharacter * ShooterCharacter) { NativeCall(this, "APrimalStructureSail.Release", ShooterCharacter); } + void RepairSailCheckTimer() { NativeCall(this, "APrimalStructureSail.RepairSailCheckTimer"); } + void ServerSetSailCanvasHealth_Implementation(float newHealth, bool fromSpawn) { NativeCall(this, "APrimalStructureSail.ServerSetSailCanvasHealth_Implementation", newHealth, fromSpawn); } + void SetSailOpenRatio(float newRatio) { NativeCall(this, "APrimalStructureSail.SetSailOpenRatio", newRatio); } + void StartSailRepair() { NativeCall(this, "APrimalStructureSail.StartSailRepair"); } + float TakeDamage(float Damage, FDamageEvent * DamageEvent, AController * EventInstigator, AActor * DamageCauser) { return NativeCall(this, "APrimalStructureSail.TakeDamage", Damage, DamageEvent, EventInstigator, DamageCauser); } + bool TestMeetsSailRepairRequirementsPercent(UPrimalInventoryComponent * invComp, float Percent, UPrimalInventoryComponent * additionalInvComp) { return NativeCall(this, "APrimalStructureSail.TestMeetsSailRepairRequirementsPercent", invComp, Percent, additionalInvComp); } + bool TickCriticalShipStructure(float DeltaTime) { return NativeCall(this, "APrimalStructureSail.TickCriticalShipStructure", DeltaTime); } + void ToggleAllLadders(bool doRetract) { NativeCall(this, "APrimalStructureSail.ToggleAllLadders", doRetract); } + bool TryMultiUse(APlayerController * ForPC, int UseIndex) { return NativeCall(this, "APrimalStructureSail.TryMultiUse", ForPC, UseIndex); } + void Unstasis() { NativeCall(this, "APrimalStructureSail.Unstasis"); } + void UpdateBillowSFX() { NativeCall(this, "APrimalStructureSail.UpdateBillowSFX"); } + void UpdateCanvasCollision() { NativeCall(this, "APrimalStructureSail.UpdateCanvasCollision"); } + void UpdateCapturedWindPercent() { NativeCall(this, "APrimalStructureSail.UpdateCapturedWindPercent"); } + void UpdateFurlAndUnfurlSFX(float TargetOpenRatio) { NativeCall(this, "APrimalStructureSail.UpdateFurlAndUnfurlSFX", TargetOpenRatio); } + void UpdateSailCollisionRotation() { NativeCall(this, "APrimalStructureSail.UpdateSailCollisionRotation"); } + void UpdateSailTautSFX() { NativeCall(this, "APrimalStructureSail.UpdateSailTautSFX"); } + void UpdatedHealth(bool bDoReplication) { NativeCall(this, "APrimalStructureSail.UpdatedHealth", bDoReplication); } + static UClass * GetPrivateStaticClass(const wchar_t * Package) { return NativeCall(nullptr, "APrimalStructureSail.GetPrivateStaticClass", Package); } + static void StaticRegisterNativesAPrimalStructureSail() { NativeCall(nullptr, "APrimalStructureSail.StaticRegisterNativesAPrimalStructureSail"); } +}; diff --git a/version/Core/Public/API/Atlas/Tribe.h b/version/Core/Public/API/Atlas/Tribe.h new file mode 100644 index 00000000..533f05a8 --- /dev/null +++ b/version/Core/Public/API/Atlas/Tribe.h @@ -0,0 +1,123 @@ +#pragma once + +struct FTribeGovernment +{ + int& TribeGovern_PINCodeField() { return *GetNativePointerField(this, "FTribeGovernment.TribeGovern_PINCode"); } + int& TribeGovern_DinoOwnershipField() { return *GetNativePointerField(this, "FTribeGovernment.TribeGovern_DinoOwnership"); } + int& TribeGovern_StructureOwnershipField() { return *GetNativePointerField(this, "FTribeGovernment.TribeGovern_StructureOwnership"); } + int& TribeGovern_DinoTamingField() { return *GetNativePointerField(this, "FTribeGovernment.TribeGovern_DinoTaming"); } + int& TribeGovern_DinoUnclaimAdminOnlyField() { return *GetNativePointerField(this, "FTribeGovernment.TribeGovern_DinoUnclaimAdminOnly"); } + + // Functions + + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeGovernment.StaticStruct"); } +}; + +struct FTribeData +{ + FString& TribeNameField() { return *GetNativePointerField(this, "FTribeData.TribeName"); } + long double& LastNameChangeTimeField() { return *GetNativePointerField(this, "FTribeData.LastNameChangeTime"); } + unsigned int& OwnerPlayerDataIDField() { return *GetNativePointerField(this, "FTribeData.OwnerPlayerDataID"); } + int& TribeIDField() { return *GetNativePointerField(this, "FTribeData.TribeID"); } + TArray& MembersPlayerNameField() { return *GetNativePointerField*>(this, "FTribeData.MembersPlayerName"); } + TArray& MembersPlayerDataIDField() { return *GetNativePointerField*>(this, "FTribeData.MembersPlayerDataID"); } + TArray& MembersLastOnlineAtField() { return *GetNativePointerField*>(this, "FTribeData.MembersLastOnlineAt"); } + TArray& MembersRankGroupsField() { return *GetNativePointerField*>(this, "FTribeData.MembersRankGroups"); } + TArray& TribeAdminsField() { return *GetNativePointerField*>(this, "FTribeData.TribeAdmins"); } + TArray& TribeAlliancesField() { return *GetNativePointerField*>(this, "FTribeData.TribeAlliances"); } + bool& bSetGovernmentField() { return *GetNativePointerField(this, "FTribeData.bSetGovernment"); } + FTribeGovernment& TribeGovernmentField() { return *GetNativePointerField(this, "FTribeData.TribeGovernment"); } + TArray& MembersConfigsField() { return *GetNativePointerField*>(this, "FTribeData.MembersConfigs"); } + TArray& TribeWarsField() { return *GetNativePointerField*>(this, "FTribeData.TribeWars"); } + TArray& TribeLogField() { return *GetNativePointerField*>(this, "FTribeData.TribeLog"); } + int& LogIndexField() { return *GetNativePointerField(this, "FTribeData.LogIndex"); } + TArray& TribeRankGroupsField() { return *GetNativePointerField*>(this, "FTribeData.TribeRankGroups"); } + TArray& TribeEntitiesField() { return *GetNativePointerField*>(this, "FTribeData.TribeEntities"); } + TSet, FDefaultSetAllocator>& MembersPlayerDataIDSet_ServerField() { return *GetNativePointerField, FDefaultSetAllocator>*>(this, "FTribeData.MembersPlayerDataIDSet_Server"); } + bool& bMembersLoadedField() { return *GetNativePointerField(this, "FTribeData.bMembersLoaded"); } + FString& NotificationTopicIdentifierField() { return *GetNativePointerField(this, "FTribeData.NotificationTopicIdentifier"); } + int& ClaimFlagPaintingIdField() { return *GetNativePointerField(this, "FTribeData.ClaimFlagPaintingId"); } + int& ClaimFlagPaintingRevisionField() { return *GetNativePointerField(this, "FTribeData.ClaimFlagPaintingRevision"); } + TArray& ClaimFlagStructureColorsField() { return *GetNativePointerField*>(this, "FTribeData.ClaimFlagStructureColors"); } + + // Functions + + FTribeAlliance * FindTribeAlliance(unsigned int AllianceID) { return NativeCall(this, "FTribeData.FindTribeAlliance", AllianceID); } + int GetBestRankGroupForRank(int Rank) { return NativeCall(this, "FTribeData.GetBestRankGroupForRank", Rank); } + int GetDefaultRankGroupIndex() { return NativeCall(this, "FTribeData.GetDefaultRankGroupIndex"); } + FString * GetRankNameForPlayerID(FString * result, unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetRankNameForPlayerID", result, PlayerDataID); } + long double GetSecondsSinceLastNameChange(UObject * WorldContextObject) { return NativeCall(this, "FTribeData.GetSecondsSinceLastNameChange", WorldContextObject); } + FString * GetTribeNameWithRankGroup(FString * result, unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetTribeNameWithRankGroup", result, PlayerDataID); } + bool GetTribeRankGroupForPlayer(unsigned int PlayerDataID, FTribeRankGroup * outRankGroup) { return NativeCall(this, "FTribeData.GetTribeRankGroupForPlayer", PlayerDataID, outRankGroup); } + int GetTribeRankGroupIndexForPlayer(unsigned int PlayerDataID) { return NativeCall(this, "FTribeData.GetTribeRankGroupIndexForPlayer", PlayerDataID); } + bool HasTribeWarRequest(int TribeID, UWorld * ForWorld) { return NativeCall(this, "FTribeData.HasTribeWarRequest", TribeID, ForWorld); } + bool IsTribeAlliedWith(unsigned int OtherTribeID) { return NativeCall(this, "FTribeData.IsTribeAlliedWith", OtherTribeID); } + bool IsTribeWarActive(int TribeID, UWorld * ForWorld, bool bIncludeUnstarted) { return NativeCall(this, "FTribeData.IsTribeWarActive", TribeID, ForWorld, bIncludeUnstarted); } + void MarkTribeNameChanged(UObject * WorldContextObject) { NativeCall(this, "FTribeData.MarkTribeNameChanged", WorldContextObject); } + void RefreshTribeWars(UWorld * ForWorld) { NativeCall(this, "FTribeData.RefreshTribeWars", ForWorld); } + FTribeData * operator=(FTribeData * __that) { return NativeCall(this, "FTribeData.operator=", __that); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeData.StaticStruct"); } +}; + +struct FTribeWar +{ + int& EnemyTribeIDField() { return *GetNativePointerField(this, "FTribeWar.EnemyTribeID"); } + int& StartDayNumberField() { return *GetNativePointerField(this, "FTribeWar.StartDayNumber"); } + int& EndDayNumberField() { return *GetNativePointerField(this, "FTribeWar.EndDayNumber"); } + float& StartDayTimeField() { return *GetNativePointerField(this, "FTribeWar.StartDayTime"); } + float& EndDayTimeField() { return *GetNativePointerField(this, "FTribeWar.EndDayTime"); } + bool& bIsApprovedField() { return *GetNativePointerField(this, "FTribeWar.bIsApproved"); } + int& InitiatingTribeIDField() { return *GetNativePointerField(this, "FTribeWar.InitiatingTribeID"); } + FString& EnemyTribeNameField() { return *GetNativePointerField(this, "FTribeWar.EnemyTribeName"); } + + // Functions + + bool CanBeRejected(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.CanBeRejected", ForWorld); } + FString * GetWarTimeString(FString * result, int DayNumber, float DayTime) { return NativeCall(this, "FTribeWar.GetWarTimeString", result, DayNumber, DayTime); } + bool HasWarStarted(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.HasWarStarted", ForWorld); } + bool IsCurrentlyActive(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.IsCurrentlyActive", ForWorld); } + bool IsTribeWarOn(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.IsTribeWarOn", ForWorld); } + bool IsValidWar(UWorld * ForWorld) { return NativeCall(this, "FTribeWar.IsValidWar", ForWorld); } + bool operator==(FTribeWar * Other) { return NativeCall(this, "FTribeWar.operator==", Other); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeWar.StaticStruct"); } +}; + +struct FTribeRankGroup +{ + FString& RankGroupNameField() { return *GetNativePointerField(this, "FTribeRankGroup.RankGroupName"); } + char& RankGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.RankGroupRank"); } + char& InventoryRankField() { return *GetNativePointerField(this, "FTribeRankGroup.InventoryRank"); } + char& StructureActivationRankField() { return *GetNativePointerField(this, "FTribeRankGroup.StructureActivationRank"); } + char& NewStructureActivationRankField() { return *GetNativePointerField(this, "FTribeRankGroup.NewStructureActivationRank"); } + char& NewStructureInventoryRankField() { return *GetNativePointerField(this, "FTribeRankGroup.NewStructureInventoryRank"); } + char& PetOrderRankField() { return *GetNativePointerField(this, "FTribeRankGroup.PetOrderRank"); } + char& PetRidingRankField() { return *GetNativePointerField(this, "FTribeRankGroup.PetRidingRank"); } + char& InviteToGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.InviteToGroupRank"); } + char& MaxPromotionGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxPromotionGroupRank"); } + char& MaxDemotionGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxDemotionGroupRank"); } + char& MaxBanishmentGroupRankField() { return *GetNativePointerField(this, "FTribeRankGroup.MaxBanishmentGroupRank"); } + char& NumInvitesRemainingField() { return *GetNativePointerField(this, "FTribeRankGroup.NumInvitesRemaining"); } + + // Functions + + FTribeRankGroup * operator=(FTribeRankGroup * __that) { return NativeCall(this, "FTribeRankGroup.operator=", __that); } + void MakeNew() { NativeCall(this, "FTribeRankGroup.MakeNew"); } + void ValidateSettings() { NativeCall(this, "FTribeRankGroup.ValidateSettings"); } + bool operator==(FTribeRankGroup * Other) { return NativeCall(this, "FTribeRankGroup.operator==", Other); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeRankGroup.StaticStruct"); } +}; + +struct FTribeAlliance +{ + FString& AllianceNameField() { return *GetNativePointerField(this, "FTribeAlliance.AllianceName"); } + unsigned int& AllianceIDField() { return *GetNativePointerField(this, "FTribeAlliance.AllianceID"); } + TArray& MembersTribeNameField() { return *GetNativePointerField*>(this, "FTribeAlliance.MembersTribeName"); } + TArray& MembersTribeIDField() { return *GetNativePointerField*>(this, "FTribeAlliance.MembersTribeID"); } + TArray& AdminsTribeIDField() { return *GetNativePointerField*>(this, "FTribeAlliance.AdminsTribeID"); } + + // Functions + + FString * GetDescriptiveString(FString * result) { return NativeCall(this, "FTribeAlliance.GetDescriptiveString", result); } + bool operator==(FTribeAlliance * Other) { return NativeCall(this, "FTribeAlliance.operator==", Other); } + static UScriptStruct * StaticStruct() { return NativeCall(nullptr, "FTribeAlliance.StaticStruct"); } +}; \ No newline at end of file diff --git a/version/Core/Public/API/Base.h b/version/Core/Public/API/Base.h index ea57a423..bea5882a 100644 --- a/version/Core/Public/API/Base.h +++ b/version/Core/Public/API/Base.h @@ -9,7 +9,523 @@ #define ARK_API __declspec(dllimport) #endif -#define API_VERSION "2.7" +// Structs forward declaration + +struct UWorld; +struct AShooterPlayerController; +struct APlayerController; +struct UShooterCheatManager; +struct AShooterCharacter; +struct UPlayer; +struct UPrimalInventoryComponent; +struct UPrimalItem; +struct APrimalCharacter; +struct APrimalDinoCharacter; +struct FItemNetInfo; +struct APawn; +struct UCheatManager; +struct UShooterCheatManager; +struct ACustomGameMode; +struct AShooterGameMode; +struct AGameMode; +struct AGameState; +struct AGameSession; +struct AShooterGameSession; +struct APlayerStart; +struct APlayerState; +struct AController; +struct AShooterPlayerState; +struct FUniqueNetIdUInt64; +struct UPrimalPlayerData; +struct FTribeGovernment; +struct FTribeData; +struct FPlayerDeathReason; +struct FDamageEvent; +struct APrimalTargetableActor; +struct APrimalStructure; +struct APrimalStructureDoor; +struct FPlacementData; +struct FTribeRankGroup; +struct FTribeAlliance; +struct FPrimalPlayerCharacterConfigStruct; +struct FTribeWar; +struct ACharacter; +struct AShooterWeapon; +struct FActorSpawnParameters; +struct FPrimalPlayerDataStruct; +struct FUniqueNetIdRepl; +struct FPrimalPersistentCharacterStatsStruct; +struct UPrimalCharacterStatusComponent; +struct USceneComponent; +struct ULevel; +struct ULevelBase; +struct FDamageEvent; +struct FHitResult; +struct AShooterGameState; +struct RCONClientConnection; +struct RCONPacket; +struct URCONServer; +struct FUniqueNetId; +struct UGameplayStatics; +struct UObjectBase; +struct UObjectBaseUtility; +struct UClass; +struct FOutputDevice {}; +struct UObject; +struct UFoliageType; +struct UObjectSerializer; +struct UFunction; +struct UStaticMeshSocket; +struct UStaticMesh; +struct AActor; +struct AMissionType; +struct UBlueprintCore; +struct Globals; +struct ADroppedItem; +struct ADroppedItemEgg; +struct UProperty; +struct UStruct; +struct UField; +struct FAssetRegistry; +struct FAssetData; +struct FModuleManager; +struct UTexture2D; +struct USoundBase; +struct USoundCue; +struct FItemMultiplier; +struct UAnimMontage; +struct APrimalBuff; +struct FDinoAncestorsEntry; +struct FCraftingResourceRequirement; +struct APrimalStructureItemContainer; +struct AShooterHUD; +struct UPrimitiveComponent; +struct USkeletalMeshComponent; +struct UActorComponent; +struct UMaterialInterface; +struct FItemCraftQueueEntry; +struct FItemSpawnActorClassOverride; +struct UNetConnection; +struct FRadialDamageEvent {}; +struct FMinimalViewInfo; +struct FItemCraftingConsumptionReplenishment {}; +struct FActorClassAttachmentInfo {}; +struct FSupplyCrateItemSet ; +struct UPrimalSupplyCrateItemSets; +struct FItemAttachmentInfo {}; +struct FItemStatInfo; +struct FSaddlePassengerSeatDefinition {}; +struct APrimalStructureTurret; +struct APrimalStructureItemContainer_CropPlot; +struct FKey {}; +struct AWorldSettings; +struct UNetDriver; +struct FNetExecParams {}; +struct FLifetimeProperty {}; +struct AHUD; +struct FPointDamageEvent {}; +struct APrimalStructureExplosive; +struct UPaintingTexture; +struct APrimalStructureExplosiveTransGPS; +struct ITargetableInterface; +struct UAnimSequence; +struct APrimalStructureSeating; +struct UScriptStruct; +struct FTransponderInfo {}; +struct APrimalStructureItemContainer_SupplyCrate; +struct UAudioComponent; +struct FQuat; +struct FDinoOrderGroup {}; +struct FServerOptions {}; +struct ULocalPlayer; +struct ASpectatorPawn; +struct APlayerCameraManager; +struct UAntiDupeTransactionLog; +struct AMatineeActor; +struct ANPCZoneManager; +struct UStaticMesh; +struct UPrimalLocalProfile; +struct UPrimalBuffPersistentData; +struct UCharacterMovementComponent; +struct FDinoExtraDefaultItemList; +struct FWeaponData {}; +struct FAIRequestID {}; +struct UPrimalGameData; +struct UEngine; +struct UGameEngine; +struct UPrimalGlobals; +struct APrimalStructurePlacer; +struct UActorChannel; +struct UPrimalColorSet {}; +struct FDinoSaddleStruct {}; +struct APrimalStructureShipHull {}; +struct APrimalStructureSail; +struct FCollisionResponseSet; +struct FDinoMapMarkerInfo {}; +struct FStatValuePair {}; +struct FHUDElement {}; +struct FConfigMaxItemQuantityOverride {}; +struct FJsonObject {}; +struct FItemMaxItemQuantityOverride {}; +struct FMaxItemQuantityOverride {}; +struct FEventItem {}; +struct FPrimalSnapshotPose {}; +struct ULeaderboard {}; +struct FReplicatePingData {}; +struct FTargetingTeamChanged {}; +struct FArchive; +struct FSpawnPointInfo; +struct FPrimalPlayerCharacterConfigStructReplicated; +struct UPlayerInput {}; +struct FPlayerMuteList {}; +struct FBox2D {}; +struct IOnlineSubsystem {}; +struct FSteamInventoryItemInfo {}; +struct FPingData {}; +struct UUserWidget {}; +struct APointOfInterestCosmeticActor {}; +struct FPointOfInterestData_ForCompanion {}; +struct FMissionWaypointInfo {}; +struct UShooterPersistentUser {}; +struct APrimalStructureMovingContainer {}; +struct FPrimalMapMarkerEntryData {}; +struct FLeaderboardRow {}; +struct UStructurePaintingComponent {}; +struct FPaintItem {}; +struct APrimalStructureElevatorPlatform {}; +struct FBoneDamageAdjuster {}; +struct AShooterProjectile; +struct APrimalBuff_Grappled; +struct APrimalStructureLadder {}; +struct APrimalProjectileBoomerang {}; +struct FWeaponEvent {}; +struct APrimalStructureTurretBallista {}; +struct FLatestMissionScore {}; +struct FObjectReader {}; +struct FObjectWriter {}; +struct FPrimalCharacterStatusStateThresholds {}; +struct UPrimalDinoSettings; +struct FPrimalSaddleStructure {}; +struct FSlateColor {}; +struct FInstantWeaponData {}; +struct ABrush; +struct UShooterDamageType; +struct UChannel {}; +struct FBoxCenterAndExtent {}; +struct UFont {}; +struct FLeaderboardEntry {}; +struct FAvailableMission; +struct FActiveEventSupplyCrateWeight {}; +struct APrimalEmitterSpawnable {}; +struct UHexagonTradableOption {}; +struct UAllClustersInventory {}; +struct FGameIniData {}; +struct FMassTeleportData {}; +struct FTeleportDestination {}; +struct UPrimalWorldSettingsEventOverrides {}; +struct FCropItemPhaseData {}; +struct FStructureVariant {}; +struct AMissionType; +struct FMultiUseEntry; + +template +struct FDataStore; + +// Atlas + +struct ADirectionalLight; +struct ACustomActorList; +struct ADestroyedMeshActor; + +struct ALevelScriptActor; +struct ADayCycleManager; +struct ASOTFNotification; +struct ATreasureMapManager; +struct AShipPathManager; +struct AOceanDinoManager; +struct AOceanVolume; +struct ASeamlessVolumeManager; + +struct APrimalStructureWaterPipe; +struct APrimalStructureClaimFlag; +struct APrimalStructureSeating_DriverSeat; +struct APrimalRaft; + +struct ADroppedItemLowQuality; + + + +struct FComponentBeginOverlapSignature; +struct FComponentEndOverlapSignature; +struct FComponentBeginCursorOverSignature; +struct FComponentEndCursorOverSignature; +struct FComponentOnClickedSignature; +struct FComponentOnReleasedSignature; +struct FComponentOnInputTouchBeginSignature; +struct FComponentOnInputTouchEndSignature; +struct FComponentBeginTouchOverSignature; +struct FComponentEndTouchOverSignature; +struct FWalkableSlopeOverride; + +struct FNetworkPredictionData_Client; +struct FNetworkPredictionData_Client_Character; +struct FNetworkPredictionData_Server; +struct FNetworkPredictionData_Server_Character; +struct FStoredMoveData; + +struct FBodyInstance; +struct FVector4; //UE +struct FAsyncSharedLogCleanup; +struct FQualityTierCraftingResourceRequirements; +struct FStatValPair; +struct FStatColorMapping; +struct FItemStatGroupValue; +struct FCustomItemData; +struct FNetworkGUID {}; +struct FLevelActorVisibilityState {}; +struct FShorelineProps; +struct FShorelineMetadata; +struct FAtlasSaveObjectData; +struct FOctreeElementSimple; +struct FTraceHandle; +struct FTraceDatum; +struct FGameNameRedirect; +struct FClassRedirect; +struct FPluginRedirect; +struct FStructRedirect; +struct FDropNoteInfo; +struct FRigidBodyErrorCorrection; +struct FScreenMessageString; +struct FAudioDevice; +struct FRunnableThread; +struct FScreenSaverInhibitor; +struct FNetDriverDefinition; +struct FWorldContext; +struct FViewport; +struct FHardwareSurveyResults; +struct FCanvas +{ + enum EElementType + { + ET_Line = 0x0, + ET_Triangle = 0x1, + ET_MAX = 0x2, + }; + + enum ECanvasAllowModes + { + Allow_Flush = 0x1, + Allow_DeleteOnRender = 0x2, + }; + +}; +struct FSeamlessTravelHandler; +struct FEvent; +struct FStreamableManager; +struct FTribeNotification; +struct FQueuedThreadPool; +struct FLevelExperienceRamp; +struct FEngramEntryOverride; +struct FEngramEntryAutoUnlock; +struct FDinoSpawnWeightMultiplier; +struct FClassMultiplier; +struct FClassNameReplacement; +struct FItemCraftingCostOverride; +struct FConfigItemCraftingCostOverride; +struct FConfigSupplyCrateItemsOverride; +struct FConfigNPCSpawnEntriesContainer; +struct FTameUnitCounts {}; +struct FSeamlessTravelPlayerData; +struct FTickCallbacks; +struct FGridCellServerInfo; +struct FRegionGeneralOverrides; +struct FDisciplineDefinition; +struct FShipTypeDisplayInformation; +struct FBonePresetSlider; +struct FAdvancedBoneModifierSlider; +struct FSoilTypeDescription; +struct FLockedFeat; +struct FSoilTypeRegionMapping; +struct FReplicatedFoliageOverride; +struct FTransformedSubLevel; +struct FAsyncUpdatableTexture2D; +struct FOnHTTPGetProcessed; +struct FOnHTTPPostResponse; +struct FPlayerLocatorEffectMap; +struct FGlobalGameplaySetup; +struct F2DByteArray; +struct FLocRot; +struct FAssetMatcher; +struct FFeatCooldown; +struct FRelativePositionEntry {}; +struct FHandIkTarget; +struct FMatineeActorFinished; +struct FMatineeActorStopped; +struct FOrderingGroupInfo; +struct FRHITexture2D; +struct FPlane; //UE +struct FBlueprintTimerDynamicDelegate {}; +struct FSlotAnimationTrack; +struct FInstalledItemInfo; +struct FShooterSessionData; +struct FShooterGameSessionParams; +struct FShooterOnlineSessionSettings; +struct FShooterOnlineSearchSettings; +struct FOnlineSessionSearchResult; +struct FMemoryArchive; +struct FMemoryReader; +struct FMemoryWriter; +struct FObjectReader; +struct FObjectWriter; +struct FCustomVersion; +struct FCustomVersionContainer; + +struct FAttachmentPoint; + +struct FShownTreasureData; + +struct FDodgeMovementInfo; + +struct FTimespan {}; + +struct FSupplyCrateValuesOverride; + +struct FExplorerNoteEntry; +struct FExplorerNoteAchievement; +struct FMultiAchievement; +struct FClassRemapping; +struct FClassAddition; +struct FBuffAddition; + +struct FClassRemappingWeight; +struct FObjectCorrelation; +struct FHairStyleDefinition; +struct FNamedTeamDefinition; +struct FTutorialDefinition; +struct FColorDefinition; + +struct FDebugFloatHistory; +struct FPubSub_TribeNotification_Chat; +struct FFloatingTextEntry; + +struct FDefaultItemEntry; +struct FDiscoveredZone; + +struct FDinoBaseLevelWeightEntry; + +struct FPlayerCharacterGenderDefinition; + +struct FMeleeHitInfo; +struct FWeaponAttack {}; +struct FPenetrationTraceHit; + +struct FRecoveryRateOverride; + +struct FDamagePrimalCharacterStatusValueModifier; +struct FMaxStatScaler; +struct FPrimalCharacterNotifyAttackStarted; +struct FPrimalCharacterNotifyAttackEnded; +struct FPrimalStructureSnapPointOverride; +struct FPrimalCharacterStatusValueModifier; +struct FPrimalCharacterStatusValueDefinition; +struct FPrimalCharacterStatusStateDefinition; +struct FPrimalItemStatDefinition; +struct FPrimalItemDefinition; +struct FPrimalEquipmentDefinition; +struct FPrimalItemQuality; +struct FPrimalStatGroupDefinition; + +struct FBuffStatEntry; +struct FEngramEntries; +struct FEngramItemEntry; +struct FEngramBuffEntry; +struct FEngramStatEntry; + +struct FPostProcessMaterialAdjuster; + +struct FItemSlotTypeDefinition; +struct FInventoryComponentDefaultItemsAppend; +struct FStatusValueModifierDescription; + +struct FAppIDItem; + +struct FUnlockableEmoteEntry; + +struct FLatentActionInfo {}; +struct FDialogueContext; + +struct FDatabase_ClusterInfo_Server; +struct FTribeEntity; +struct FTributePlayerTribeInfo; +struct FPlayerFlagData; +struct FDatabase_TravelEntry; +struct FTribeTravelCount; +struct FServerTribeAtMax; +struct FDatabase_AllianceWrapper; +struct FDatabase_TribeWrapper; +struct FDatabase_TribeEntities; +struct FDatabase_PlayerJoinedTribe; +struct FDatabase_PlayerRemovedFromTribe; +struct FDatabase_LogEntryWrapper; +struct FDatabase_CreateShapshot; + +struct FDinoBabySetup; +struct FNPCSpawnEntriesContainerAdditions; + + +struct IEngineLoop; +struct IStereoRendering; +struct IHeadMountedDisplay; +struct IDelegateInstance; + + +struct UWeaponAttackData; + +struct UPrimalItem_Dye; +struct UPrimalItem_Shield; +struct UPrimalEngramEntry; +struct UPrimalStructureSettings; +struct UPrimalStructureSnapSettings; +struct FPrimalStructureSnapPoint; + +struct UWaveWorksComponent; +struct UUI_HostSession; +struct UConsole; +struct UGameUserSettings; +struct UTireType; +struct UTexture; +struct UMaterial; +struct UPhysicalMaterial; +struct UDeviceProfileManager; +struct UPendingNetGame; +struct UUI_GenericConfirmationDialog; +struct USoundClass; +struct UPubSub_TribeNotifications; +struct UPubSub_GeneralNotifications; +struct USeamlessDataServer; +struct UPaintingCache; +struct UMeshComponent; +struct USoundMix; + +struct UDatabase_SharedLog; +struct UDatabase_TravelData; +struct UDatabase_TribeDataManager; +struct UDatabase_TerritoryMap; +struct UDatabase_RemoteFileManager; + +struct UGenericDataListEntry; +struct UToolTipWidget; +struct UUI_XBoxFooter; +struct UUI_Notification; +struct UPrimalStructureToolTipWidget; +struct UChildActorComponent; +struct UInterface; +struct UDialogueWave; +struct USoundAttenuation; + +struct UShooterGameUserSettings; +struct UDiscoveryZoneDataListEntry; +struct FTribeLogEntry; // Structs forward declaration @@ -42,7 +558,6 @@ struct UPrimalPlayerData; struct FTribeGovernment; struct FTribeData; struct FPlayerDeathReason; -struct FDamageEvent; struct UDamageType; struct APrimalTargetableActor; struct APrimalStructure; @@ -74,10 +589,15 @@ struct UObjectBase; struct UObjectBaseUtility; struct UClass; struct UObject; +struct UObjectSerializer; +struct UStaticMeshSocket; +struct UStaticMesh; struct AActor; +struct AMissionType; struct UBlueprintCore; struct Globals; struct ADroppedItem; +struct ADroppedItemEgg; struct UProperty; struct UStruct; struct UField; @@ -85,7 +605,6 @@ struct FAssetRegistry; struct FAssetData; struct FModuleManager; struct UTexture2D; -struct USoundBase{}; struct USoundCue; struct FItemMultiplier; struct UAnimMontage; @@ -101,36 +620,25 @@ struct UMaterialInterface; struct FItemCraftQueueEntry; struct FItemSpawnActorClassOverride; struct UNetConnection; -struct FRadialDamageEvent{}; struct FMinimalViewInfo; -struct FItemCraftingConsumptionReplenishment{}; -struct FActorClassAttachmentInfo{}; -struct FSupplyCrateItemSet{}; struct UPrimalSupplyCrateItemSets; -struct FItemAttachmentInfo{}; struct FItemStatInfo; -struct FSaddlePassengerSeatDefinition{}; struct APrimalStructureTurret; -struct FKey{}; +struct APrimalStructureItemContainer_CropPlot; struct AWorldSettings; +struct APrimalWorldSettings; +struct FWeightedObjectList; struct UNetDriver; -struct FNetExecParams{}; -struct FLifetimeProperty{}; struct AHUD; -struct FPointDamageEvent{}; -struct APrimalStructureExplosive; struct UPaintingTexture; struct APrimalStructureExplosiveTransGPS; struct ITargetableInterface; struct UAnimSequence; struct APrimalStructureSeating; struct UScriptStruct; -struct FTransponderInfo{}; struct APrimalStructureItemContainer_SupplyCrate; struct UAudioComponent; struct FQuat; -struct FDinoOrderGroup{}; -struct FServerOptions{}; struct ULocalPlayer; struct ASpectatorPawn; struct APlayerCameraManager; @@ -141,14 +649,26 @@ struct UStaticMesh; struct UPrimalLocalProfile; struct UPrimalBuffPersistentData; struct UCharacterMovementComponent; -struct FDinoExtraDefaultItemList{}; -struct FWeaponData{}; -struct FAIRequestID{}; struct UPrimalGameData; struct UEngine; +struct UGameEngine; struct UPrimalGlobals; struct APrimalStructurePlacer; +struct UPrimalHarvestingComponent; +struct FHarvestResourceEntry; +struct FOceanHarvestEntry; +struct FOceanHarvestedEntry; +struct AOceanHarvestManager; +struct FAttachedInstancedHarvestingElement; + +struct UBehaviorTree; + +struct FSeamlessIslandInfo; +struct AInfo; + +struct UInstancedStaticMeshComponent; + struct BitField { DWORD64 offset; @@ -166,3 +686,7 @@ ARK_API LPVOID GetDataAddress(const std::string& name); ARK_API BitField GetBitField(const void* base, const std::string& name); ARK_API BitField GetBitField(LPVOID base, const std::string& name); + +#define DECLARE_HOOK(name, returnType, ...) typedef returnType(__fastcall * name ## _Func)(__VA_ARGS__); \ +inline name ## _Func name ## _original; \ +returnType __fastcall Hook_ ## name(__VA_ARGS__) \ No newline at end of file diff --git a/version/Core/Public/API/Enums.h b/version/Core/Public/API/Enums.h index fea53b9d..c7cda817 100644 --- a/version/Core/Public/API/Enums.h +++ b/version/Core/Public/API/Enums.h @@ -1,116 +1,14 @@ #pragma once - -namespace EPrimalEquipmentType -{ - enum Type - { - Hat = 0x0, - Shirt = 0x1, - Pants = 0x2, - Boots = 0x3, - Gloves = 0x4, - DinoSaddle = 0x5, - Trophy = 0x6, - Costume = 0x7, - Shield = 0x8, - MAX = 0x9, - }; -} - -namespace EPrimalItemStat -{ - enum Type - { - GenericQuality = 0x0, - Armor = 0x1, - MaxDurability = 0x2, - WeaponDamagePercent = 0x3, - WeaponClipAmmo = 0x4, - HypothermalInsulation = 0x5, - Weight = 0x6, - HyperthermalInsulation = 0x7, - MAX = 0x8, - }; -} - -namespace EPrimalCharacterStatusValue +#ifdef ATLAS_GAME +namespace ESaveType { enum Type { - Health = 0x0, - Stamina = 0x1, - Torpidity = 0x2, - Oxygen = 0x3, - Food = 0x4, - Water = 0x5, - Temperature = 0x6, - Weight = 0x7, - MeleeDamageMultiplier = 0x8, - SpeedMultiplier = 0x9, - TemperatureFortitude = 0xA, - CraftingSpeedMultiplier = 0xB, - MAX = 0xC, - }; -} - -namespace EPrimalCharacterStatusState -{ - enum Type - { - Dead = 0x0, - Winded = 0x1, - Starvation = 0x2, - Dehydration = 0x3, - Suffocation = 0x4, - Encumbered = 0x5, - Hypothermia = 0x6, - Hyperthermia = 0x7, - Injured = 0x8, - KnockedOut = 0x9, - Sleeping = 0xA, - Cold = 0xB, - Hot = 0xC, - Crafting = 0xD, - MAX = 0xE, - }; -} - -namespace EPrimalItemType -{ - enum Type - { - MiscConsumable = 0x0, - Equipment = 0x1, - Weapon = 0x2, - Ammo = 0x3, - Structure = 0x4, - Resource = 0x5, - Skin = 0x6, - WeaponAttachment = 0x7, - Artifact = 0x8, - MAX = 0x9, - }; -} - -namespace EPrimalConsumableType -{ - enum Type - { - Food, - Water, - Medicine, - Other, - MAX - }; -} - -namespace EPrimalItemMessage -{ - enum Type - { - Broken, - Repaired, - MAX + Map = 0x0, + Profile = 0x1, + Tribe = 0x2, + CharacterSetting = 0x3, + All = 0x4 }; } @@ -154,44 +52,6 @@ enum ECollisionChannel ECC_MAX = 0x23, }; -namespace EXPType -{ - enum Type - { - XP_GENERIC = 0x0, - XP_KILL = 0x1, - XP_HARVEST = 0x2, - XP_CRAFT = 0x3, - XP_SPECIAL = 0x4, - MAX = 0x5, - }; -} - -namespace EChatSendMode -{ - enum Type - { - GlobalChat = 0x0, - GlobalTribeChat = 0x1, - LocalChat = 0x2, - AllianceChat = 0x3, - MAX = 0x4, - }; -} - -namespace EChatType -{ - enum Type - { - GlobalChat = 0x0, - ProximityChat = 0x1, - RadioChat = 0x2, - GlobalTribeChat = 0x3, - AllianceChat = 0x4, - MAX = 0x5, - }; -} - namespace ETextComparisonLevel { enum Type @@ -212,52 +72,18 @@ namespace ETextComparisonLevel enum class EFindName { - /** Find a name; return 0 if it doesn't exist. */ - FNAME_Find, + // Find a name; return 0 if it doesn't exist. + //FNAME_Find, - /** Find a name or add it if it doesn't exist. */ - FNAME_Add, + // Find a name or add it if it doesn't exist. + //FNAME_Add, - /** Finds a name and replaces it. Adds it if missing. This is only used by UHT and is generally not safe for threading. - * All this really is used for is correcting the case of names. In MT conditions you might get a half-changed name. - */ - FNAME_Replace_Not_Safe_For_Threading, + // Finds a name and replaces it. Adds it if missing. This is only used by UHT and is generally not safe for threading. + // All this really is used for is correcting the case of names. In MT conditions you might get a half-changed name. + // + //FNAME_Replace_Not_Safe_For_Threading, }; -namespace EBabyCuddleType -{ - enum Type - { - Pet, - Food, - Walk, - MAX - }; -} - -namespace EAttachLocation -{ - enum Type - { - KeepRelativeOffset, - KeepWorldPosition, - SnapToTarget - }; -} - - -namespace EEndPlayReason -{ - enum Type - { - ActorDestroyed, - LevelTransition, - EndPlayInEditor, - RemovedFromWorld, - Quit - }; -} - enum class ECollisionResponse { ECR_Ignore, @@ -292,29 +118,6 @@ namespace ETouchIndex }; } -namespace EPrimalARKTributeDataType -{ - enum Type - { - Items, - TamedDinos, - CharacterData, - MAX - }; -} - -namespace ESTOFNotificationType -{ - enum Type - { - Death, - TribeEliminated, - MatchVictory, - MatchDraw, - MAX - }; -} - enum EMovementMode { MOVE_None, @@ -326,61 +129,6 @@ enum EMovementMode MOVE_MAX }; -namespace EDinoTamedOrder -{ - enum Type - { - SetAggressionPassive = 0x0, - SetAggressionNeutral = 0x1, - SetAggressionAggressive = 0x2, - SetAggressionAttackTarget = 0x3, - ToggleFollowMe = 0x4, - FollowMe = 0x5, - StopFollowing = 0x6, - CycleFollowDistance = 0x7, - SetAggressionPassiveFlee = 0x8, - MAX = 0x9, - }; -} - -namespace EPrimalCharacterInputType -{ - enum Type - { - PrimaryFire = 0x0, - Targeting = 0x1, - AltFire = 0x2, - SwitchWeapon = 0x3, - Reload = 0x4, - Crouch = 0x5, - Prone = 0x6, - CrouchProneToggle = 0x7, - SwitchMap = 0x8, - DinoAttack = 0x9, - }; -} - -namespace EShooterPhysMaterialType -{ - enum Type - { - Unknown, - Concrete, - Dirt, - Water, - Metal, - Wood, - Grass, - Glass, - Flesh, - Leaves, - Rock, - Sand, - Snow, - MAX - }; -} - enum class EPhysicalSurface { SurfaceType_Default = 0x0, @@ -449,86 +197,6 @@ enum class EPhysicalSurface SurfaceType_Max = 0x3F, }; -namespace EWeaponState -{ - enum Type - { - Idle, - Firing, - Reloading, - Equipping, - UnEquipping - }; -} - -namespace EPathFollowingRequestResult -{ - enum Type - { - Failed, - AlreadyAtGoal, - RequestSuccessful - }; -} - -namespace EPathFollowingResult -{ - enum Type - { - Success, - Blocked, - OffPath, - Aborted, - Skipped, - Invalid - }; -} - -namespace EComponentMobility -{ - enum Type - { - Static, - Stationary, - Movable - }; -} - -enum class ERelativeTransformSpace -{ - RTS_World, - RTS_Actor, - RTS_Component -}; - -enum class EMoveComponentFlags -{ - MOVECOMP_NoFlags, - MOVECOMP_IgnoreBases, - MOVECOMP_SkipPhysicsMove, - MOVECOMP_NeverIgnoreBlockingOverlaps, - MOVECOMP_DoCenterOfMassCheck -}; - -namespace ETribeGroupPermission -{ - enum Type - { - STRUCTUREACTIVATE = 0x0, - INVENTORYACCESS = 0x1, - PET_ORDER = 0x2, - PET_RIDE = 0x3, - GENERAL_STRUCTUREDEMOLISH = 0x4, - GENERAL_STRUCTUREATTACHMENT = 0x5, - GENERAL_BUILDSTRUCTUREINRANGE = 0x6, - INVITEMEMBER = 0x7, - PROMOTEMEMBER = 0x8, - DEMOTEMEMBER = 0x9, - BANISHMEMBER = 0xA, - PET_UNCLAIM = 0xB, - }; -} - enum class ETraceTypeQuery { TraceTypeQuery1 = 0x0, @@ -687,73 +355,6 @@ namespace EAssetAvailabilityProgressReportingType }; } -namespace ELevelExperienceRampType -{ - enum Type - { - Player = 0x0, - DinoEasy = 0x1, - DinoMedium = 0x2, - DinoHard = 0x3, - MAX = 0x4, - }; -} - -enum class ClassCastFlags : unsigned long long -{ - CASTCLASS_None = 0x0000000000000000, - CASTCLASS_UField = 0x0000000000000001, - CASTCLASS_UInt8Property = 0x0000000000000002, - CASTCLASS_UEnum = 0x0000000000000004, - CASTCLASS_UStruct = 0x0000000000000008, - CASTCLASS_UScriptStruct = 0x0000000000000010, - CASTCLASS_UClass = 0x0000000000000020, - CASTCLASS_UByteProperty = 0x0000000000000040, - CASTCLASS_UIntProperty = 0x0000000000000080, - CASTCLASS_UFloatProperty = 0x0000000000000100, - CASTCLASS_UUInt64Property = 0x0000000000000200, - CASTCLASS_UClassProperty = 0x0000000000000400, - CASTCLASS_UUInt32Property = 0x0000000000000800, - CASTCLASS_UInterfaceProperty = 0x0000000000001000, - CASTCLASS_UNameProperty = 0x0000000000002000, - CASTCLASS_UStrProperty = 0x0000000000004000, - CASTCLASS_UProperty = 0x0000000000008000, - CASTCLASS_UObjectProperty = 0x0000000000010000, - CASTCLASS_UBoolProperty = 0x0000000000020000, - CASTCLASS_UUInt16Property = 0x0000000000040000, - CASTCLASS_UFunction = 0x0000000000080000, - CASTCLASS_UStructProperty = 0x0000000000100000, - CASTCLASS_UArrayProperty = 0x0000000000200000, - CASTCLASS_UInt64Property = 0x0000000000400000, - CASTCLASS_UDelegateProperty = 0x0000000000800000, - CASTCLASS_UNumericProperty = 0x0000000001000000, - CASTCLASS_UMulticastDelegateProperty = 0x0000000002000000, - CASTCLASS_UObjectPropertyBase = 0x0000000004000000, - CASTCLASS_UWeakObjectProperty = 0x0000000008000000, - CASTCLASS_ULazyObjectProperty = 0x0000000010000000, - CASTCLASS_UAssetObjectProperty = 0x0000000020000000, - CASTCLASS_UTextProperty = 0x0000000040000000, - CASTCLASS_UInt16Property = 0x0000000080000000, - CASTCLASS_UDoubleProperty = 0x0000000100000000, - CASTCLASS_UAssetClassProperty = 0x0000000200000000, - CASTCLASS_UPackage = 0x0000000400000000, - CASTCLASS_ULevel = 0x0000000800000000, - CASTCLASS_AActor = 0x0000001000000000, - CASTCLASS_APlayerController = 0x0000002000000000, - CASTCLASS_APawn = 0x0000004000000000, - CASTCLASS_USceneComponent = 0x0000008000000000, - CASTCLASS_UPrimitiveComponent = 0x0000010000000000, - CASTCLASS_USkinnedMeshComponent = 0x0000020000000000, - CASTCLASS_USkeletalMeshComponent = 0x0000040000000000, - CASTCLASS_UBlueprint = 0x0000080000000000, - CASTCLASS_UDelegateFunction = 0x0000100000000000, - CASTCLASS_UStaticMeshComponent = 0x0000200000000000, - CASTCLASS_UMapProperty = 0x0000400000000000, - CASTCLASS_USetProperty = 0x0000800000000000, - CASTCLASS_UEnumProperty = 0x0001000000000000, - CASTCLASS_AllFlags = 0xFFFFFFFFFFFFFFFF -}; - enum EName { NAME_None = 0x0, @@ -945,19 +546,6 @@ namespace ESocketReceiveFlags }; } -namespace EEngramGroup -{ - enum Type - { - ARK_PRIME = 0x2, - ARK_SCORCHEDEARTH = 0x4, - ARK_TEK = 0x8, - ARK_UNLEARNED = 0x10, - ARK_ABERRATION = 0x20, - MAX = 0x21, - }; -} - namespace EDrawDebugTrace { enum Type @@ -1023,18 +611,249 @@ enum ERadialImpulseFalloff RIF_MAX }; -namespace EPrimalStatsValueTypes +namespace EHttpRequestStatus { enum Type { - TotalShots = 0x0, - Misses = 0x1, - HitsStructure = 0x2, - HitsDinoBody = 0x3, - HitsDinoCritical = 0x4, - HitsPlayerBody = 0x5, - HitsPlayerCritical = 0x6, - MAX = 0x7, + NotStarted = 0x0, + Processing = 0x1, + Failed = 0x2, + Succeeded = 0x3, + }; +} +#else + +enum EName +{ + NAME_None = 0x0, + NAME_ByteProperty = 0x1, + NAME_IntProperty = 0x2, + NAME_BoolProperty = 0x3, + NAME_FloatProperty = 0x4, + NAME_ObjectProperty = 0x5, + NAME_NameProperty = 0x6, + NAME_DelegateProperty = 0x7, + NAME_ClassProperty = 0x8, + NAME_ArrayProperty = 0x9, + NAME_StructProperty = 0xa, + NAME_VectorProperty = 0xb, + NAME_RotatorProperty = 0xc, + NAME_StrProperty = 0xd, + NAME_TextProperty = 0xe, + NAME_InterfaceProperty = 0xf, + NAME_MulticastDelegateProperty = 0x10, + NAME_WeakObjectProperty = 0x11, + NAME_LazyObjectProperty = 0x12, + NAME_AssetObjectProperty = 0x13, + NAME_UInt64Property = 0x14, + NAME_UInt32Property = 0x15, + NAME_UInt16Property = 0x16, + NAME_Int64Property = 0x17, + NAME_Int16Property = 0x19, + NAME_Int8Property = 0x1a, + NAME_AssetSubclassOfProperty = 0x1b, + NAME_Core = 0x1e, + NAME_Engine = 0x1f, + NAME_Editor = 0x20, + NAME_CoreUObject = 0x21, + NAME_Cylinder = 0x32, + NAME_BoxSphereBounds = 0x33, + NAME_Sphere = 0x34, + NAME_Box = 0x35, + NAME_Vector2D = 0x36, + NAME_IntRect = 0x37, + NAME_IntPoint = 0x38, + NAME_Vector4 = 0x39, + NAME_Name = 0x3a, + NAME_Vector = 0x3b, + NAME_Rotator = 0x3c, + NAME_SHVector = 0x3d, + NAME_Color = 0x3e, + NAME_Plane = 0x3f, + NAME_Matrix = 0x40, + NAME_LinearColor = 0x41, + NAME_AdvanceFrame = 0x42, + NAME_Pointer = 0x43, + NAME_Double = 0x44, + NAME_Quat = 0x45, + NAME_Self = 0x46, + NAME_Transform = 0x47, + NAME_Object = 0x64, + NAME_Camera = 0x65, + NAME_Actor = 0x66, + NAME_ObjectRedirector = 0x67, + NAME_ObjectArchetype = 0x68, + NAME_Class = 0x69, + NAME_State = 0xc8, + NAME_TRUE = 0xc9, + NAME_FALSE = 0xca, + NAME_Enum = 0xcb, + NAME_Default = 0xcc, + NAME_Skip = 0xcd, + NAME_Input = 0xce, + NAME_Package = 0xcf, + NAME_Groups = 0xd0, + NAME_Interface = 0xd1, + NAME_Components = 0xd2, + NAME_Global = 0xd3, + NAME_Super = 0xd4, + NAME_Outer = 0xd5, + NAME_Map = 0xd6, + NAME_Role = 0xd7, + NAME_RemoteRole = 0xd8, + NAME_PersistentLevel = 0xd9, + NAME_TheWorld = 0xda, + NAME_PackageMetaData = 0xdb, + NAME_InitialState = 0xdc, + NAME_Game = 0xdd, + NAME_SelectionColor = 0xde, + NAME_UI = 0xdf, + NAME_ExecuteUbergraph = 0xe0, + NAME_DeviceID = 0xe1, + NAME_RootStat = 0xe2, + NAME_MoveActor = 0xe3, + NAME_All = 0xe6, + NAME_MeshEmitterVertexColor = 0xe7, + NAME_TextureOffsetParameter = 0xe8, + NAME_TextureScaleParameter = 0xe9, + NAME_ImpactVel = 0xea, + NAME_SlideVel = 0xeb, + NAME_TextureOffset1Parameter = 0xec, + NAME_MeshEmitterDynamicParameter = 0xed, + NAME_ExpressionInput = 0xee, + NAME_Untitled = 0xef, + NAME_Timer = 0xf0, + NAME_Team = 0xf1, + NAME_Low = 0xf2, + NAME_High = 0xf3, + NAME_NetworkGUID = 0xf4, + NAME_GameThread = 0xf5, + NAME_RenderThread = 0xf6, + NAME_OtherChildren = 0xf7, + NAME_Location = 0xf8, + NAME_Rotation = 0xf9, + NAME_BSP = 0xfa, + NAME_EditorGameAgnostic = 0xfb, + NAME_DGram = 0x118, + NAME_Stream = 0x119, + NAME_GameNetDriver = 0x11a, + NAME_PendingNetDriver = 0x11b, + NAME_BeaconNetDriver = 0x11c, + NAME_FlushNetDormancy = 0x11d, + NAME_Linear = 0x12c, + NAME_Point = 0x12d, + NAME_Aniso = 0x12e, + NAME_LightMapResolution = 0x12f, + NAME_UnGrouped = 0x137, + NAME_VoiceChat = 0x138, + NAME_Playing = 0x140, + NAME_Spectating = 0x142, + NAME_Inactive = 0x145, + NAME_PerfWarning = 0x15e, + NAME_Info = 0x15f, + NAME_Init = 0x160, + NAME_Exit = 0x161, + NAME_Cmd = 0x162, + NAME_Warning = 0x163, + NAME_Error = 0x164, + NAME_FontCharacter = 0x190, + NAME_InitChild2StartBone = 0x191, + NAME_SoundCueLocalized = 0x192, + NAME_SoundCue = 0x193, + NAME_RawDistributionFloat = 0x194, + NAME_RawDistributionVector = 0x195, + NAME_InterpCurveFloat = 0x196, + NAME_InterpCurveVector2D = 0x197, + NAME_InterpCurveVector = 0x198, + NAME_InterpCurveTwoVectors = 0x199, + NAME_InterpCurveQuat = 0x19a, + NAME_AI = 0x1c2, + NAME_NavMesh = 0x1c3, + NAME_PerformanceCapture = 0x1f4, + NAME_MaxHardcodedNameIndex = 0x1f5, +}; + +enum class EFindName +{ + FNAME_Find = 0x0, + FNAME_Add = 0x1, + FNAME_Replace_Not_Safe_For_Threading = 0x2, +}; + +namespace ETextComparisonLevel +{ + enum Type + { + Default = 0x0, + Primary = 0x1, + Secondary = 0x2, + Tertiary = 0x3, + Quaternary = 0x4, + Quinary = 0x5, + }; +} + +enum class EObjectFlags +{ + RF_Public = 0x1, + RF_Standalone = 0x2, + RF_Native = 0x4, + RF_Transactional = 0x8, + RF_ClassDefaultObject = 0x10, + RF_ArchetypeObject = 0x20, + RF_Transient = 0x40, + RF_RootSet = 0x80, + RF_Unreachable = 0x100, + RF_TagGarbageTemp = 0x200, + RF_NeedLoad = 0x400, + RF_AsyncLoading = 0x800, + RF_NeedPostLoad = 0x1000, + RF_NeedPostLoadSubobjects = 0x2000, + RF_PendingKill = 0x4000, + RF_BeginDestroyed = 0x8000, + RF_FinishDestroyed = 0x10000, + RF_BeingRegenerated = 0x20000, + RF_DefaultSubObject = 0x40000, + RF_WasLoaded = 0x80000, + RF_TextExportTransient = 0x100000, + RF_LoadCompleted = 0x200000, + RF_WhiteListed = 0x400000, + RF_AsyncLoadingRef = 0x800000, + RF_MarkedByCooker = 0x1000000, + RF_ForceTagExp = 0x2000000, + RF_OlderObject = 0x4000000, + RF_AllFlags = 0x7ffffff, + RF_NoFlags = 0x0, + RF_Load = 0x14003f, + RF_PropagateToSubObjects = 0x69, +}; + +namespace EIncludeSuperFlag +{ + enum Type + { + ExcludeSuper = 0x0, + IncludeSuper = 0x1, + }; +} + +namespace EAssetAvailability +{ + enum Type + { + DoesNotExist = 0x0, + NotAvailable = 0x1, + LocalSlow = 0x2, + LocalFast = 0x3, + }; +} + +namespace EAssetAvailabilityProgressReportingType +{ + enum Type + { + ETA = 0x0, + PercentageComplete = 0x1, }; } @@ -1048,29 +867,59 @@ namespace EHttpRequestStatus Succeeded = 0x3, }; } +#endif -namespace EServerOctreeGroup +enum class ClassCastFlags : unsigned long long { - enum Type - { - STASISCOMPONENTS = 0x0, - PLAYERPAWNS = 0x1, - DINOPAWNS = 0x2, - PAWNS = 0x3, - STRUCTURES = 0x4, - TARGETABLEACTORS = 0x5, - SPATIALNETWORKEDACTORS = 0x6, - SPATIALNETWORKEDACTORS_DORMANT = 0x7, - ALL_SPATIAL = 0x8, - THERMALSTRUCTURES = 0x9, - STRUCTURES_CORE = 0xA, - DINOPAWNS_TAMED = 0xB, - PLAYERS_AND_TAMED_DINOS = 0xC, - DINOFOODCONTAINER = 0xD, - GRENADES = 0xE, - TREESAPTAPS = 0xF, - LARGEUNSTASISRANGE = 0x10, - TRAPS = 0x11, - MAX = 0x12, - }; -} \ No newline at end of file + CASTCLASS_None = 0x0000000000000000, + CASTCLASS_UField = 0x0000000000000001, + CASTCLASS_UInt8Property = 0x0000000000000002, + CASTCLASS_UEnum = 0x0000000000000004, + CASTCLASS_UStruct = 0x0000000000000008, + CASTCLASS_UScriptStruct = 0x0000000000000010, + CASTCLASS_UClass = 0x0000000000000020, + CASTCLASS_UByteProperty = 0x0000000000000040, + CASTCLASS_UIntProperty = 0x0000000000000080, + CASTCLASS_UFloatProperty = 0x0000000000000100, + CASTCLASS_UUInt64Property = 0x0000000000000200, + CASTCLASS_UClassProperty = 0x0000000000000400, + CASTCLASS_UUInt32Property = 0x0000000000000800, + CASTCLASS_UInterfaceProperty = 0x0000000000001000, + CASTCLASS_UNameProperty = 0x0000000000002000, + CASTCLASS_UStrProperty = 0x0000000000004000, + CASTCLASS_UProperty = 0x0000000000008000, + CASTCLASS_UObjectProperty = 0x0000000000010000, + CASTCLASS_UBoolProperty = 0x0000000000020000, + CASTCLASS_UUInt16Property = 0x0000000000040000, + CASTCLASS_UFunction = 0x0000000000080000, + CASTCLASS_UStructProperty = 0x0000000000100000, + CASTCLASS_UArrayProperty = 0x0000000000200000, + CASTCLASS_UInt64Property = 0x0000000000400000, + CASTCLASS_UDelegateProperty = 0x0000000000800000, + CASTCLASS_UNumericProperty = 0x0000000001000000, + CASTCLASS_UMulticastDelegateProperty = 0x0000000002000000, + CASTCLASS_UObjectPropertyBase = 0x0000000004000000, + CASTCLASS_UWeakObjectProperty = 0x0000000008000000, + CASTCLASS_ULazyObjectProperty = 0x0000000010000000, + CASTCLASS_UAssetObjectProperty = 0x0000000020000000, + CASTCLASS_UTextProperty = 0x0000000040000000, + CASTCLASS_UInt16Property = 0x0000000080000000, + CASTCLASS_UDoubleProperty = 0x0000000100000000, + CASTCLASS_UAssetClassProperty = 0x0000000200000000, + CASTCLASS_UPackage = 0x0000000400000000, + CASTCLASS_ULevel = 0x0000000800000000, + CASTCLASS_AActor = 0x0000001000000000, + CASTCLASS_APlayerController = 0x0000002000000000, + CASTCLASS_APawn = 0x0000004000000000, + CASTCLASS_USceneComponent = 0x0000008000000000, + CASTCLASS_UPrimitiveComponent = 0x0000010000000000, + CASTCLASS_USkinnedMeshComponent = 0x0000020000000000, + CASTCLASS_USkeletalMeshComponent = 0x0000040000000000, + CASTCLASS_UBlueprint = 0x0000080000000000, + CASTCLASS_UDelegateFunction = 0x0000100000000000, + CASTCLASS_UStaticMeshComponent = 0x0000200000000000, + CASTCLASS_UMapProperty = 0x0000400000000000, + CASTCLASS_USetProperty = 0x0000800000000000, + CASTCLASS_UEnumProperty = 0x0001000000000000, + CASTCLASS_AllFlags = 0xFFFFFFFFFFFFFFFF +}; \ No newline at end of file diff --git a/version/Core/Public/API/Fields.h b/version/Core/Public/API/Fields.h index d7745293..73af97e0 100644 --- a/version/Core/Public/API/Fields.h +++ b/version/Core/Public/API/Fields.h @@ -2,6 +2,7 @@ #include #include +#include #include "Base.h" @@ -118,8 +119,8 @@ template class BitFieldValue { public: - BitFieldValue(void* parent, const std::string& field_name) - : parent_(parent), field_name_(field_name) + BitFieldValue(void* parent, std::string field_name) + : parent_(parent), field_name_(std::move(field_name)) { } @@ -148,3 +149,41 @@ class BitFieldValue void* parent_; std::string field_name_; }; + +/* +* \brief Gets the size in bytes of an Object class. Example: GetObjectClassSize() +* +* tparam T - Object class +* \return The size of the class in bytes +*/ +template +int GetObjectClassSize() +{ + // Credits to Substitute#0001 for the idea + UClass* objClass = T::StaticClass(); + if (objClass) + { + return objClass->PropertiesSizeField(); + } + + return 0; +} + +/* +* \brief Gets the size in bytes of an struct class. Example: GetObjectClassSize() +* +* \tparam T - Struct class +* \return The size in bytes +*/ +template +int GetStructSize() +{ + // Credits to Substitute#0001 for the idea + int size = 0; + UScriptStruct* staticStruct = T::StaticStruct(); + if (staticStruct) + { + return staticStruct->PropertiesSizeField(); + } + return 0; +} diff --git a/version/Core/Public/API/UE/Containers/Algo/Impl/BinaryHeap.h b/version/Core/Public/API/UE/Containers/Algo/Impl/BinaryHeap.h index 152eec5d..73f98961 100644 --- a/version/Core/Public/API/UE/Containers/Algo/Impl/BinaryHeap.h +++ b/version/Core/Public/API/UE/Containers/Algo/Impl/BinaryHeap.h @@ -114,7 +114,7 @@ namespace AlgoImpl template FORCEINLINE void HeapifyInternal(RangeValueType* First, SIZE_T Num, ProjectionType Projection, PredicateType Predicate) { - for (int32 Index = HeapGetParentIndex(Num - 1); Index >= 0; Index--) + for (int32 Index = HeapGetParentIndex((int32)Num - 1); Index >= 0; Index--) { HeapSiftDown(First, Index, Num, Projection, Predicate); } diff --git a/version/Core/Public/API/UE/Containers/FString.h b/version/Core/Public/API/UE/Containers/FString.h index 1de27e35..12624663 100644 --- a/version/Core/Public/API/UE/Containers/FString.h +++ b/version/Core/Public/API/UE/Containers/FString.h @@ -3,7 +3,7 @@ #pragma once #include - +#include #include #include "TArray.h" @@ -12,6 +12,7 @@ #include "../Templates/UnrealTemplate.h" #include "../Math/UnrealMathUtility.h" #include "../Misc/CString.h" +#include "../Crc.h" #pragma warning(push) #pragma warning(disable : 4244) @@ -1614,10 +1615,9 @@ class FString if (!data) return ""; - const auto length = Len(); - std::string str(length, '\0'); - std::use_facet>(std::locale()).narrow(data, data + length, '?', str.data()); - + int size_needed = WideCharToMultiByte(CP_UTF8, 0, &data[0], (int)Len(), NULL, 0, NULL, NULL); + std::string str(size_needed, 0); + WideCharToMultiByte(CP_UTF8, 0, &data[0], (int)Len(), &str[0], size_needed, NULL, NULL); return str; } @@ -1639,8 +1639,15 @@ class FString return FString(formatted_msg.c_str()); } + + }; +FORCEINLINE uint32 GetTypeHash(const FString& Thing) +{ + uint32 Hash = FCrc::MemCrc32(&Thing, sizeof(FString)); + return Hash; +} template<> struct TContainerTraits : public TContainerTraitsBase @@ -2556,7 +2563,7 @@ inline int32 FString::ParseIntoArray(TArray& OutArray, const TCHAR* pch OutArray.Reset(); const TCHAR *Start = Data.GetData(); const int32 DelimLength = FCString::Strlen(pchDelim); - if (Start && DelimLength) + if (Start && *Start != TEXT('\0') && DelimLength) { while (const TCHAR *At = FCString::Strstr(Start, pchDelim)) { diff --git a/version/Core/Public/API/UE/Containers/TIndirectArray.h b/version/Core/Public/API/UE/Containers/TIndirectArray.h new file mode 100644 index 00000000..1b7c1bfd --- /dev/null +++ b/version/Core/Public/API/UE/Containers/TIndirectArray.h @@ -0,0 +1,392 @@ +// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "../BasicTypes.h" +#include "../HAL/UnrealMemory.h" +#include "../Templates/UnrealTypeTraits.h" +#include "../Containers/ContainerAllocationPolicies.h" +#include "../Containers/TArray.h" + +/*----------------------------------------------------------------------------- + Indirect array. + Same as a TArray, but stores pointers to the elements, to allow + resizing the array index without relocating the actual elements. +-----------------------------------------------------------------------------*/ + +template +class TIndirectArray +{ +public: + typedef T ElementType; + typedef TArray InternalArrayType; + + /** Default constructors. */ + TIndirectArray() = default; + TIndirectArray(TIndirectArray&&) = default; + TIndirectArray& operator=(TIndirectArray&&) = default; + + /** + * Copy constructor. + * + * @param Other Other array to copy from. + */ + TIndirectArray(const TIndirectArray& Other) + { + for (auto& Item : Other) + { + Add(new T(Item)); + } + } + + /** + * Assignment operator. + * + * @param Other Other array to assign with. + */ + TIndirectArray& operator=(const TIndirectArray& Other) + { + if (&Other != this) + { + Empty(Other.Num()); + for (auto& Item : Other) + { + Add(new T(Item)); + } + } + + return *this; + } + + /** Destructor. */ + ~TIndirectArray() + { + Empty(); + } + + /** + * Gets number of elements in array. + * + * @returns Number of elements in array. + */ + FORCEINLINE int32 Num() const + { + return Array.Num(); + } + + /** + * Helper function for returning a typed pointer to the first array entry. + * + * @returns Pointer to first array entry or nullptr if this->ArrayMax == 0. + */ + FORCEINLINE T** GetData() + { + return (T**)Array.GetData(); + } + + /** + * Helper function for returning a typed pointer to the first array entry. + * + * @returns Pointer to first array entry or nullptr if this->ArrayMax == 0. + */ + FORCEINLINE const T** GetData() const + { + return (const T**)Array.GetData(); + } + + /** + * Helper function returning the size of the inner type. + * + * @returns Size in bytes of array type. + */ + uint32 GetTypeSize() const + { + return sizeof(T*); + } + + /** + * Bracket array access operator. + * + * @param Index Position of element to return. + * @returns Reference to element in array at given position. + */ + FORCEINLINE T& operator[](int32 Index) + { + return *(T*)Array[Index]; + } + + /** + * Bracket array access operator. + * + * Const version. + * + * @param Index Position of element to return. + * @returns Reference to element in array at given position. + */ + FORCEINLINE const T& operator[](int32 Index) const + { + return *(T*)Array[Index]; + } + + /** + * Returns n-th last element from the array. + * + * @param IndexFromTheEnd (Optional) Index from the end of array (default = 0). + * @returns Reference to n-th last element from the array. + */ + FORCEINLINE ElementType& Last(int32 IndexFromTheEnd = 0) + { + return *(T*)Array.Last(IndexFromTheEnd); + } + + /** + * Returns n-th last element from the array. + * + * Const version. + * + * @param IndexFromTheEnd (Optional) Index from the end of array (default = 0). + * @returns Reference to n-th last element from the array. + */ + FORCEINLINE const ElementType& Last(int32 IndexFromTheEnd = 0) const + { + return *(T*)Array.Last(IndexFromTheEnd); + } + + /** + * Shrinks the array's used memory to smallest possible to store elements + * currently in it. + */ + void Shrink() + { + Array.Shrink(); + } + + /** + * Resets the array to the new given size. It calls the destructors on held + * items. + * + * @param NewSize (Optional) The expected usage size after calling this + * function. Default is 0. + */ + void Reset(int32 NewSize = 0) + { + DestructAndFreeItems(); + Array.Reset(NewSize); + } + + /** + * Removes an element (or elements) at given location optionally shrinking + * the array. + * + * @param Index Location in array of the element to remove. + * @param Count (Optional) Number of elements to remove. Default is 1. + * @param bAllowShrinking (Optional) Tells if this call can shrink array if + * suitable after remove. Default is true. + */ + void RemoveAt(int32 Index, int32 Count = 1, bool bAllowShrinking = true) + { + check(Index >= 0); + check(Index <= Array.Num()); + check(Index + Count <= Array.Num()); + T** Element = GetData() + Index; + for (int32 ElementId = Count; ElementId; --ElementId) + { + // We need a typedef here because VC won't compile the destructor call below if T itself has a member called T + typedef T IndirectArrayDestructElementType; + + (*Element)->IndirectArrayDestructElementType::~IndirectArrayDestructElementType(); + FMemory::Free(*Element); + ++Element; + } + Array.RemoveAt(Index, Count, bAllowShrinking); + } + + /** + * Removes an element (or elements) at given location optionally shrinking + * the array. + * + * This version is much more efficient than RemoveAt (O(Count) instead of + * O(ArrayNum)), but does not preserve the order. + * + * @param Index Location in array of the element to remove. + * @param Count (Optional) Number of elements to remove. Default is 1. + * @param bAllowShrinking (Optional) Tells if this call can shrink array if + * suitable after remove. Default is true. + */ + void RemoveAtSwap(int32 Index, int32 Count = 1, bool bAllowShrinking = true) + { + check(Index >= 0); + check(Index <= Array.Num()); + check(Index + Count <= Array.Num()); + T** Element = GetData() + Index; + for (int32 ElementId = Count; ElementId; --ElementId) + { + // We need a typedef here because VC won't compile the destructor call below if T itself has a member called T + typedef T IndirectArrayDestructElementType; + + (*Element)->IndirectArrayDestructElementType::~IndirectArrayDestructElementType(); + FMemory::Free(*Element); + ++Element; + } + Array.RemoveAtSwap(Index, Count, bAllowShrinking); + } + + /** + * Element-wise array element swap. + * + * This version is doing more sanity checks than SwapMemory. + * + * @param FirstIndexToSwap Position of the first element to swap. + * @param SecondIndexToSwap Position of the second element to swap. + */ + void Swap(int32 FirstIndexToSwap, int32 SecondIndexToSwap) + { + Array.Swap(FirstIndexToSwap, SecondIndexToSwap); + } + + /** + * Empties the array. It calls the destructors on held items. + * + * @param Slack (Optional) The expected usage size after empty operation. + * Default is 0. + */ + void Empty(int32 Slack = 0) + { + DestructAndFreeItems(); + Array.Empty(Slack); + } + + /** + * Adds a new item to the end of the array, possibly reallocating the + * whole array to fit. + * + * @param Item The item to add. + * @returns Index to the new item. + */ + FORCEINLINE int32 Add(T* Item) + { + return Array.Add(Item); + } + + /** + * Inserts a given element into the array at given location. + * + * @param Item The element to insert. + * @param Index Tells where to insert the new elements. + */ + FORCEINLINE void Insert(T* Item, int32 Index) + { + Array.Insert(Item, Index); + } + + /** + * Reserves memory such that the array can contain at least Number elements. + * + * @param Number The number of elements that the array should be able to + * contain after allocation. + */ + FORCEINLINE void Reserve(int32 Number) + { + Array.Reserve(Number); + } + + /** + * Tests if index is valid, i.e. greater than zero and less than number of + * elements in array. + * + * @param Index Index to test. + * @returns True if index is valid. False otherwise. + */ + FORCEINLINE bool IsValidIndex(int32 Index) const + { + return Array.IsValidIndex(Index); + } + + /** + * Helper function to return the amount of memory allocated by this container + * + * @returns Number of bytes allocated by this container. + */ + SIZE_T GetAllocatedSize() const + { + return Array.Max() * sizeof(T*) + Array.Num() * sizeof(T); + } + + // Iterators + typedef TIndexedContainerIterator< TIndirectArray, ElementType, int32> TIterator; + typedef TIndexedContainerIterator TConstIterator; + + /** + * Creates an iterator for the contents of this array. + * + * @returns The iterator. + */ + TIterator CreateIterator() + { + return TIterator(*this); + } + + /** + * Creates a const iterator for the contents of this array. + * + * @returns The const iterator. + */ + TConstIterator CreateConstIterator() const + { + return TConstIterator(*this); + } + +private: + + /** + * Calls destructor and frees memory on every element in the array. + */ + void DestructAndFreeItems() + { + T** Element = GetData(); + for (int32 Index = Array.Num(); Index; --Index) + { + // We need a typedef here because VC won't compile the destructor call below if T itself has a member called T + typedef T IndirectArrayDestructElementType; + + (*Element)->IndirectArrayDestructElementType::~IndirectArrayDestructElementType(); + FMemory::Free(*Element); + ++Element; + } + } + + /** + * DO NOT USE DIRECTLY + * STL-like iterators to enable range-based for loop support. + */ + FORCEINLINE friend TDereferencingIterator< ElementType, typename InternalArrayType::RangedForIteratorType > begin( TIndirectArray& IndirectArray) { return TDereferencingIterator< ElementType, typename InternalArrayType::RangedForIteratorType >(begin(IndirectArray.Array)); } + FORCEINLINE friend TDereferencingIterator begin(const TIndirectArray& IndirectArray) { return TDereferencingIterator(begin(IndirectArray.Array)); } + FORCEINLINE friend TDereferencingIterator< ElementType, typename InternalArrayType::RangedForIteratorType > end ( TIndirectArray& IndirectArray) { return TDereferencingIterator< ElementType, typename InternalArrayType::RangedForIteratorType >(end (IndirectArray.Array)); } + FORCEINLINE friend TDereferencingIterator end (const TIndirectArray& IndirectArray) { return TDereferencingIterator(end (IndirectArray.Array)); } + + InternalArrayType Array; +}; + + +template +struct TContainerTraits > + : public TContainerTraitsBase > +{ + enum { MoveWillEmptyContainer = TContainerTraitsBase::InternalArrayType>::MoveWillEmptyContainer }; +}; + + +template void* operator new( size_t Size, TIndirectArray& Array ) +{ + check(Size == sizeof(T)); + const int32 Index = Array.Add((T*)FMemory::Malloc(Size)); + return &Array[Index]; +} + + +template void* operator new( size_t Size, TIndirectArray& Array, int32 Index ) +{ + check(Size == sizeof(T)); + Array.Insert((T*)FMemory::Malloc(Size), Index); + return &Array[Index]; +} \ No newline at end of file diff --git a/version/Core/Public/API/UE/Crc.h b/version/Core/Public/API/UE/Crc.h new file mode 100644 index 00000000..efc22648 --- /dev/null +++ b/version/Core/Public/API/UE/Crc.h @@ -0,0 +1,13 @@ +#pragma once + +#include "..\Base.h" +#include "BasicTypes.h" +#include "HAL/UnrealMemory.h" +#include "Templates/AreTypesEqual.h" +#include "Templates/UnrealTypeTraits.h" +#include "Templates/UnrealTemplate.h" + +struct FCrc +{ + static uint32 MemCrc32(const void* Data, int32 Lenght) { return NativeCall(nullptr, "FCrc.MemCrc32", Data, Lenght); } +}; diff --git a/version/Core/Public/API/UE/HAL/UnrealMemory.h b/version/Core/Public/API/UE/HAL/UnrealMemory.h index 51690b3e..460428b3 100644 --- a/version/Core/Public/API/UE/HAL/UnrealMemory.h +++ b/version/Core/Public/API/UE/HAL/UnrealMemory.h @@ -103,7 +103,12 @@ struct FMemory // static void * Malloc(SIZE_T Count, uint32 Alignment = DEFAULT_ALIGNMENT) { return NativeCall(nullptr, "FMemory.Malloc", Count, Alignment); } - static void * Realloc(void * Ptr, SIZE_T Size, uint32 Alignment = DEFAULT_ALIGNMENT) { return NativeCall(nullptr, "FMemory.Realloc", Ptr, Size); } + static void * Realloc(void * Ptr, SIZE_T Size, uint32 Alignment = DEFAULT_ALIGNMENT) + { + if (!Ptr) + return Malloc(Size); + return NativeCall(nullptr, "FMemory.Realloc", Ptr, Size); + } static void Free(void* Original) { NativeCall(nullptr, "FMemory.Free", Original); } static SIZE_T QuantizeSize(SIZE_T Count, uint32 Alignment = DEFAULT_ALIGNMENT) diff --git a/version/Core/Public/API/UE/Math/Vector.h b/version/Core/Public/API/UE/Math/Vector.h index a62f5890..fe99b6cb 100644 --- a/version/Core/Public/API/UE/Math/Vector.h +++ b/version/Core/Public/API/UE/Math/Vector.h @@ -1528,7 +1528,7 @@ FORCEINLINE FVector FVector::GetSafeNormal(float Tolerance) const } else if(SquareSum < Tolerance) { - return FVector::ZeroVector; + return FVector(0); } const float Scale = FMath::InvSqrt(SquareSum); return FVector(X*Scale, Y*Scale, Z*Scale); diff --git a/version/Core/Public/API/UE/Misc/GlobalObjectsArray.h b/version/Core/Public/API/UE/Misc/GlobalObjectsArray.h new file mode 100644 index 00000000..cbe3d5af --- /dev/null +++ b/version/Core/Public/API/UE/Misc/GlobalObjectsArray.h @@ -0,0 +1,46 @@ + +class FUObjectItem +{ +public: + UObject* Object; + int SerialNumber; +}; + +class FChunkedFixedUObjectArray +{ +public: + enum + { + ElementsPerChunk = 64 * 1024 + }; + + FUObjectItem& GetByIndex(int Index) + { + return *GetObjectPtr(Index); + } + + FUObjectItem* GetObjectPtr(int Index) + { + auto ChunkIndex = Index / ElementsPerChunk; + auto WithinChunkIndex = Index % ElementsPerChunk; + auto Chunk = Objects[ChunkIndex]; + return Chunk + WithinChunkIndex; + } + + FUObjectItem** Objects; + FUObjectItem* PreAllocatedObjects; + int MaxElements; + int NumElements; + int MaxChunks; + int NumChunks; +}; + +class FUObjectArray +{ +public: + int ObjFirstGCIndex; + int ObjLastNonGCIndex; + int MaxObjectsNotConsideredByGC; + bool OpenForDisregardForGC; + FChunkedFixedUObjectArray ObjObjects; +}; \ No newline at end of file diff --git a/version/Core/Public/API/UE/Templates/SharedPointer.h b/version/Core/Public/API/UE/Templates/SharedPointer.h index 1a0aed1a..8971db3f 100644 --- a/version/Core/Public/API/UE/Templates/SharedPointer.h +++ b/version/Core/Public/API/UE/Templates/SharedPointer.h @@ -8,7 +8,6 @@ #include "../Containers/TArray.h" #include "../Containers/Map.h" - /** * SharedPointer - Unreal smart pointer library * @@ -42,9 +41,9 @@ * * MakeShareable() - Used to initialize shared pointers from C++ pointers (enables implicit conversion) * TSharedFromThis - You can derive your own class from this to acquire a TSharedRef from "this" - * StaticCastSharedRef() - Static cast utility function, typically used to downcast to a derived type. + * StaticCastSharedRef() - Static cast utility function, typically used to downcast to a derived type. * ConstCastSharedRef() - Converts a 'const' reference to 'mutable' smart reference - * StaticCastSharedPtr() - Dynamic cast utility function, typically used to downcast to a derived type. + * StaticCastSharedPtr() - Dynamic cast utility function, typically used to downcast to a derived type. * ConstCastSharedPtr() - Converts a 'const' smart pointer to 'mutable' smart pointer * * @@ -54,7 +53,7 @@ * * Tips: * - Use TSharedRef instead of TSharedPtr whenever possible -- it can never be nullptr! - * - You can call TSharedPtr::Reset() to release a reference to your object (and potentially deallocate) + * - You can call TSharedPtr::Reset() to release a reference to your object (and potentially deallocate) * - Use the MakeShareable() helper function to implicitly convert to TSharedRefs or TSharedPtrs * - You can never reset a TSharedRef or assign it to nullptr, but you can assign it a new object * - Shared pointers assume ownership of objects -- no need to call delete yourself! @@ -69,7 +68,7 @@ * - To downcast a pointer to a derived object class, to the StaticCastSharedPtr function * - 'const' objects are fully supported with shared pointers! * - You can make a 'const' shared pointer mutable using the ConstCastSharedPtr function - * + * * * Limitations: * @@ -107,22 +106,20 @@ * */ -// SharedPointerInternals.h contains the implementation of reference counting structures we need + // SharedPointerInternals.h contains the implementation of reference counting structures we need #include "SharedPointerInternals.h" - /** * Casts a shared reference of one type to another type. (static_cast) Useful for down-casting. * * @param InSharedRef The shared reference to cast */ template< class CastToType, class CastFromType, int Mode > -FORCEINLINE TSharedRef< CastToType, Mode > StaticCastSharedRef( TSharedRef< CastFromType, Mode > const& InSharedRef ) +FORCEINLINE TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const& InSharedRef) { - return TSharedRef< CastToType, Mode >( InSharedRef, SharedPointerInternals::FStaticCastTag() ); + return TSharedRef< CastToType, Mode >(InSharedRef, SharedPointerInternals::FStaticCastTag()); } - namespace UE4SharedPointer_Private { // Needed to work around an Android compiler bug - we need to construct a TSharedRef @@ -134,13 +131,12 @@ namespace UE4SharedPointer_Private } } - /** * TSharedRef is a non-nullable, non-intrusive reference-counted authoritative object reference. * * This shared reference will be conditionally thread-safe when the optional Mode template argument is set to ThreadSafe. */ -// NOTE: TSharedRef is an Unreal extension to standard smart pointer feature set + // NOTE: TSharedRef is an Unreal extension to standard smart pointer feature set template< class ObjectType, int Mode > class TSharedRef { @@ -158,9 +154,9 @@ class TSharedRef typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE explicit TSharedRef( OtherType* InObject ) - : Object( InObject ) - , SharedReferenceCount( SharedPointerInternals::NewDefaultReferenceController( InObject ) ) + FORCEINLINE explicit TSharedRef(OtherType* InObject) + : Object(InObject) + , SharedReferenceCount(SharedPointerInternals::NewDefaultReferenceController(InObject)) { Init(InObject); } @@ -176,9 +172,9 @@ class TSharedRef typename DeleterType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedRef( OtherType* InObject, DeleterType&& InDeleter ) - : Object( InObject ) - , SharedReferenceCount( SharedPointerInternals::NewCustomReferenceController( InObject, Forward< DeleterType >( InDeleter ) ) ) + FORCEINLINE TSharedRef(OtherType* InObject, DeleterType&& InDeleter) + : Object(InObject) + , SharedReferenceCount(SharedPointerInternals::NewCustomReferenceController(InObject, Forward< DeleterType >(InDeleter))) { Init(InObject); } @@ -201,22 +197,22 @@ class TSharedRef * * @param InRawPtrProxy Proxy raw pointer that contains the object that the new shared reference will reference */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedRef( SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy ) - : Object( InRawPtrProxy.Object ) - , SharedReferenceCount( InRawPtrProxy.ReferenceController ) + FORCEINLINE TSharedRef(SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy) + : Object(InRawPtrProxy.Object) + , SharedReferenceCount(InRawPtrProxy.ReferenceController) { // If the following assert goes off, it means a TSharedRef was initialized from a nullptr object pointer. // Shared references must never be nullptr, so either pass a valid object or consider using TSharedPtr instead. - check( InRawPtrProxy.Object != nullptr ); + check(InRawPtrProxy.Object != nullptr); // If the object happens to be derived from TSharedFromThis, the following method // will prime the object with a weak pointer to itself. - SharedPointerInternals::EnableSharedFromThis( this, InRawPtrProxy.Object, InRawPtrProxy.Object ); + SharedPointerInternals::EnableSharedFromThis(this, InRawPtrProxy.Object, InRawPtrProxy.Object); } /** @@ -229,9 +225,9 @@ class TSharedRef typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedRef( TSharedRef< OtherType, Mode > const& InSharedRef ) - : Object( InSharedRef.Object ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const& InSharedRef) + : Object(InSharedRef.Object) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { } /** @@ -243,11 +239,11 @@ class TSharedRef * @param InSharedRef The shared reference whose object we should create an additional reference to */ template - FORCEINLINE TSharedRef( TSharedRef< OtherType, Mode > const& InSharedRef, SharedPointerInternals::FStaticCastTag ) - : Object( static_cast< ObjectType* >( InSharedRef.Object ) ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const& InSharedRef, SharedPointerInternals::FStaticCastTag) + : Object(static_cast(InSharedRef.Object)) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { } - + /** * Special constructor used internally to cast a 'const' shared reference a 'mutable' reference. You * should never call this constructor directly. Instead, use the ConstCastSharedRef() function. @@ -257,9 +253,9 @@ class TSharedRef * @param InSharedRef The shared reference whose object we should create an additional reference to */ template - FORCEINLINE TSharedRef( TSharedRef< OtherType, Mode > const& InSharedRef, SharedPointerInternals::FConstCastTag ) - : Object( const_cast< ObjectType* >( InSharedRef.Object ) ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const& InSharedRef, SharedPointerInternals::FConstCastTag) + : Object(const_cast(InSharedRef.Object)) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { } /** @@ -270,23 +266,23 @@ class TSharedRef * @param InObject The object pointer to use (instead of the incoming shared pointer's object) */ template - FORCEINLINE TSharedRef( TSharedRef< OtherType, Mode > const& OtherSharedRef, ObjectType* InObject ) - : Object( InObject ) - , SharedReferenceCount( OtherSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef< OtherType, Mode > const& OtherSharedRef, ObjectType* InObject) + : Object(InObject) + , SharedReferenceCount(OtherSharedRef.SharedReferenceCount) { // If the following assert goes off, it means a TSharedRef was initialized from a nullptr object pointer. // Shared references must never be nullptr, so either pass a valid object or consider using TSharedPtr instead. - check( InObject != nullptr ); + check(InObject != nullptr); } - FORCEINLINE TSharedRef( TSharedRef const& InSharedRef ) - : Object( InSharedRef.Object ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef const& InSharedRef) + : Object(InSharedRef.Object) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { } - FORCEINLINE TSharedRef( TSharedRef&& InSharedRef ) - : Object( InSharedRef.Object ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedRef(TSharedRef&& InSharedRef) + : Object(InSharedRef.Object) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { // We're intentionally not moving here, because we don't want to leave InSharedRef in a // null state, because that breaks the class invariant. But we provide a move constructor @@ -300,14 +296,14 @@ class TSharedRef * * @param InSharedRef Shared reference to replace with */ - FORCEINLINE TSharedRef& operator=( TSharedRef const& InSharedRef ) + FORCEINLINE TSharedRef& operator=(TSharedRef const& InSharedRef) { SharedReferenceCount = InSharedRef.SharedReferenceCount; Object = InSharedRef.Object; return *this; } - FORCEINLINE TSharedRef& operator=( TSharedRef&& InSharedRef ) + FORCEINLINE TSharedRef& operator=(TSharedRef&& InSharedRef) { FMemory::Memswap(this, &InSharedRef, sizeof(TSharedRef)); return *this; @@ -320,18 +316,18 @@ class TSharedRef * * @param InRawPtrProxy Proxy object used to assign the object (see MakeShareable helper function) */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedRef& operator=( SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy ) + FORCEINLINE TSharedRef& operator=(SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy) { // If the following assert goes off, it means a TSharedRef was initialized from a nullptr object pointer. // Shared references must never be nullptr, so either pass a valid object or consider using TSharedPtr instead. - check( InRawPtrProxy.Object != nullptr ); + check(InRawPtrProxy.Object != nullptr); - *this = TSharedRef< ObjectType, Mode >( InRawPtrProxy ); + *this = TSharedRef< ObjectType, Mode >(InRawPtrProxy); return *this; } @@ -343,7 +339,7 @@ class TSharedRef FORCEINLINE ObjectType& Get() const { // Should never be nullptr as TSharedRef is never nullable - checkSlow( IsValid() ); + checkSlow(IsValid()); return *Object; } @@ -355,7 +351,7 @@ class TSharedRef FORCEINLINE ObjectType& operator*() const { // Should never be nullptr as TSharedRef is never nullable - checkSlow( IsValid() ); + checkSlow(IsValid()); return *Object; } @@ -367,7 +363,7 @@ class TSharedRef FORCEINLINE ObjectType* operator->() const { // Should never be nullptr as TSharedRef is never nullable - checkSlow( IsValid() ); + checkSlow(IsValid()); return Object; } @@ -417,32 +413,32 @@ class TSharedRef typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE explicit TSharedRef( TSharedPtr< OtherType, Mode > const& InSharedPtr ) - : Object( InSharedPtr.Object ) - , SharedReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE explicit TSharedRef(TSharedPtr< OtherType, Mode > const& InSharedPtr) + : Object(InSharedPtr.Object) + , SharedReferenceCount(InSharedPtr.SharedReferenceCount) { // If this assert goes off, it means a shared reference was created from a shared pointer that was nullptr. // Shared references are never allowed to be null. Consider using TSharedPtr instead. - check( IsValid() ); + check(IsValid()); } template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE explicit TSharedRef( TSharedPtr< OtherType, Mode >&& InSharedPtr ) - : Object( InSharedPtr.Object ) - , SharedReferenceCount( MoveTemp(InSharedPtr.SharedReferenceCount) ) + FORCEINLINE explicit TSharedRef(TSharedPtr< OtherType, Mode >&& InSharedPtr) + : Object(InSharedPtr.Object) + , SharedReferenceCount(MoveTemp(InSharedPtr.SharedReferenceCount)) { InSharedPtr.Object = nullptr; // If this assert goes off, it means a shared reference was created from a shared pointer that was nullptr. // Shared references are never allowed to be null. Consider using TSharedPtr instead. - check( IsValid() ); + check(IsValid()); } /** - * Checks to see if this shared reference is actually pointing to an object. + * Checks to see if this shared reference is actually pointing to an object. * NOTE: This validity test is intentionally private because shared references must always be valid. * * @return True if the shared reference is valid and can be dereferenced @@ -459,17 +455,17 @@ class TSharedRef * * @return Hash code value */ - friend uint32 GetTypeHash( const TSharedRef< ObjectType, Mode >& InSharedRef ) + friend uint32 GetTypeHash(const TSharedRef< ObjectType, Mode >& InSharedRef) { - return ::PointerHash( InSharedRef.Object ); + return ::PointerHash(InSharedRef.Object); } // We declare ourselves as a friend (templated using OtherType) so we can access members as needed - template< class OtherType, int OtherMode > friend class TSharedRef; + template< class OtherType, int OtherMode > friend class TSharedRef; // Declare other smart pointer types as friends as needed - template< class OtherType, int OtherMode > friend class TSharedPtr; - template< class OtherType, int OtherMode > friend class TWeakPtr; + template< class OtherType, int OtherMode > friend class TSharedPtr; + template< class OtherType, int OtherMode > friend class TWeakPtr; private: @@ -481,16 +477,16 @@ class TSharedRef SharedPointerInternals::FSharedReferencer< Mode > SharedReferenceCount; // VC emits an erroneous warning here - there is no inline specifier! - #ifdef _MSC_VER - #pragma warning(push) - #pragma warning(disable : 4396) // warning: the inline specifier cannot be used when a friend declaration refers to a specialization of a function template - #endif +#ifdef _MSC_VER +#pragma warning(push) +#pragma warning(disable : 4396) // warning: the inline specifier cannot be used when a friend declaration refers to a specialization of a function template +#endif friend TSharedRef UE4SharedPointer_Private::MakeSharedRef(ObjectType* InObject, SharedPointerInternals::FReferenceControllerBase* InSharedReferenceCount); - #ifdef _MSC_VER - #pragma warning(pop) - #endif +#ifdef _MSC_VER +#pragma warning(pop) +#endif FORCEINLINE explicit TSharedRef(ObjectType* InObject, SharedPointerInternals::FReferenceControllerBase* InSharedReferenceCount) : Object(InObject) @@ -500,7 +496,6 @@ class TSharedRef } }; - /** * Wrapper for a type that yields a reference to that type. */ @@ -510,7 +505,6 @@ struct FMakeReferenceTo typedef T& Type; }; - /** * Specialization for FMakeReferenceTo. */ @@ -520,7 +514,6 @@ struct FMakeReferenceTo typedef void Type; }; - /** * TSharedPtr is a non-intrusive reference-counted authoritative object pointer. This shared pointer * will be conditionally thread-safe when the optional Mode template argument is set to ThreadSafe. @@ -528,16 +521,14 @@ struct FMakeReferenceTo template< class ObjectType, int Mode > class TSharedPtr { - - public: /** * Constructs an empty shared pointer */ - // NOTE: FNullTag parameter is an Unreal extension to standard shared_ptr behavior - FORCEINLINE TSharedPtr( SharedPointerInternals::FNullTag* = nullptr ) - : Object( nullptr ) + // NOTE: FNullTag parameter is an Unreal extension to standard shared_ptr behavior + FORCEINLINE TSharedPtr(SharedPointerInternals::FNullTag* = nullptr) + : Object(nullptr) , SharedReferenceCount() { } @@ -551,13 +542,13 @@ class TSharedPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE explicit TSharedPtr( OtherType* InObject ) - : Object( InObject ) - , SharedReferenceCount( SharedPointerInternals::NewDefaultReferenceController( InObject ) ) + FORCEINLINE explicit TSharedPtr(OtherType* InObject) + : Object(InObject) + , SharedReferenceCount(SharedPointerInternals::NewDefaultReferenceController(InObject)) { // If the object happens to be derived from TSharedFromThis, the following method // will prime the object with a weak pointer to itself. - SharedPointerInternals::EnableSharedFromThis( this, InObject, InObject ); + SharedPointerInternals::EnableSharedFromThis(this, InObject, InObject); } /** @@ -572,13 +563,13 @@ class TSharedPtr typename DeleterType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedPtr( OtherType* InObject, DeleterType&& InDeleter ) - : Object( InObject ) - , SharedReferenceCount( SharedPointerInternals::NewCustomReferenceController( InObject, Forward< DeleterType >( InDeleter ) ) ) + FORCEINLINE TSharedPtr(OtherType* InObject, DeleterType&& InDeleter) + : Object(InObject) + , SharedReferenceCount(SharedPointerInternals::NewCustomReferenceController(InObject, Forward< DeleterType >(InDeleter))) { // If the object happens to be derived from TSharedFromThis, the following method // will prime the object with a weak pointer to itself. - SharedPointerInternals::EnableSharedFromThis( this, InObject, InObject ); + SharedPointerInternals::EnableSharedFromThis(this, InObject, InObject); } /** @@ -586,18 +577,18 @@ class TSharedPtr * * @param InRawPtrProxy Proxy raw pointer that contains the object that the new shared pointer will reference */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedPtr( SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy ) - : Object( InRawPtrProxy.Object ) - , SharedReferenceCount( InRawPtrProxy.ReferenceController ) + FORCEINLINE TSharedPtr(SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy) + : Object(InRawPtrProxy.Object) + , SharedReferenceCount(InRawPtrProxy.ReferenceController) { // If the object happens to be derived from TSharedFromThis, the following method // will prime the object with a weak pointer to itself. - SharedPointerInternals::EnableSharedFromThis( this, InRawPtrProxy.Object, InRawPtrProxy.Object ); + SharedPointerInternals::EnableSharedFromThis(this, InRawPtrProxy.Object, InRawPtrProxy.Object); } /** @@ -610,19 +601,19 @@ class TSharedPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedPtr( TSharedPtr< OtherType, Mode > const& InSharedPtr ) - : Object( InSharedPtr.Object ) - , SharedReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const& InSharedPtr) + : Object(InSharedPtr.Object) + , SharedReferenceCount(InSharedPtr.SharedReferenceCount) { } - FORCEINLINE TSharedPtr( TSharedPtr const& InSharedPtr ) - : Object( InSharedPtr.Object ) - , SharedReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedPtr const& InSharedPtr) + : Object(InSharedPtr.Object) + , SharedReferenceCount(InSharedPtr.SharedReferenceCount) { } - FORCEINLINE TSharedPtr( TSharedPtr&& InSharedPtr ) - : Object( InSharedPtr.Object ) - , SharedReferenceCount( MoveTemp(InSharedPtr.SharedReferenceCount) ) + FORCEINLINE TSharedPtr(TSharedPtr&& InSharedPtr) + : Object(InSharedPtr.Object) + , SharedReferenceCount(MoveTemp(InSharedPtr.SharedReferenceCount)) { InSharedPtr.Object = nullptr; } @@ -633,14 +624,14 @@ class TSharedPtr * * @param InSharedRef The shared reference that will be converted to a shared pointer */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedPtr( TSharedRef< OtherType, Mode > const& InSharedRef ) - : Object( InSharedRef.Object ) - , SharedReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedRef< OtherType, Mode > const& InSharedRef) + : Object(InSharedRef.Object) + , SharedReferenceCount(InSharedRef.SharedReferenceCount) { // There is no rvalue overload of this constructor, because 'stealing' the pointer from a // TSharedRef would leave it as null, which would invalidate its invariant. @@ -655,11 +646,11 @@ class TSharedPtr * @param InSharedPtr The shared pointer whose object we should create an additional reference to */ template - FORCEINLINE TSharedPtr( TSharedPtr< OtherType, Mode > const& InSharedPtr, SharedPointerInternals::FStaticCastTag ) - : Object( static_cast< ObjectType* >( InSharedPtr.Object ) ) - , SharedReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const& InSharedPtr, SharedPointerInternals::FStaticCastTag) + : Object(static_cast(InSharedPtr.Object)) + , SharedReferenceCount(InSharedPtr.SharedReferenceCount) { } - + /** * Special constructor used internally to cast a 'const' shared pointer a 'mutable' pointer. You * should never call this constructor directly. Instead, use the ConstCastSharedPtr() function. @@ -669,9 +660,9 @@ class TSharedPtr * @param InSharedPtr The shared pointer whose object we should create an additional reference to */ template - FORCEINLINE TSharedPtr( TSharedPtr< OtherType, Mode > const& InSharedPtr, SharedPointerInternals::FConstCastTag ) - : Object( const_cast< ObjectType* >( InSharedPtr.Object ) ) - , SharedReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const& InSharedPtr, SharedPointerInternals::FConstCastTag) + : Object(const_cast(InSharedPtr.Object)) + , SharedReferenceCount(InSharedPtr.SharedReferenceCount) { } /** @@ -682,9 +673,9 @@ class TSharedPtr * @param InObject The object pointer to use (instead of the incoming shared pointer's object) */ template - FORCEINLINE TSharedPtr( TSharedPtr< OtherType, Mode > const& OtherSharedPtr, ObjectType* InObject ) - : Object( InObject ) - , SharedReferenceCount( OtherSharedPtr.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode > const& OtherSharedPtr, ObjectType* InObject) + : Object(InObject) + , SharedReferenceCount(OtherSharedPtr.SharedReferenceCount) { } /** @@ -695,9 +686,9 @@ class TSharedPtr * @param InObject The object pointer to use (instead of the incoming shared pointer's object) */ template - FORCEINLINE TSharedPtr( TSharedPtr< OtherType, Mode >&& OtherSharedPtr, ObjectType* InObject ) - : Object( InObject ) - , SharedReferenceCount( MoveTemp(OtherSharedPtr.SharedReferenceCount) ) + FORCEINLINE TSharedPtr(TSharedPtr< OtherType, Mode >&& OtherSharedPtr, ObjectType* InObject) + : Object(InObject) + , SharedReferenceCount(MoveTemp(OtherSharedPtr.SharedReferenceCount)) { OtherSharedPtr.Object = nullptr; } @@ -710,17 +701,17 @@ class TSharedPtr * @param InObject The object pointer to use (instead of the incoming shared pointer's object) */ template - FORCEINLINE TSharedPtr( TSharedRef< OtherType, Mode > const& OtherSharedRef, ObjectType* InObject ) - : Object( InObject ) - , SharedReferenceCount( OtherSharedRef.SharedReferenceCount ) + FORCEINLINE TSharedPtr(TSharedRef< OtherType, Mode > const& OtherSharedRef, ObjectType* InObject) + : Object(InObject) + , SharedReferenceCount(OtherSharedRef.SharedReferenceCount) { } /** * Assignment to a nullptr pointer. The object currently referenced by this shared pointer will no longer be * referenced and will be deleted if there are no other referencers. */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior - FORCEINLINE TSharedPtr& operator=( SharedPointerInternals::FNullTag* ) + // NOTE: The following is an Unreal extension to standard shared_ptr behavior + FORCEINLINE TSharedPtr& operator=(SharedPointerInternals::FNullTag*) { Reset(); return *this; @@ -733,14 +724,14 @@ class TSharedPtr * * @param InSharedPtr Shared pointer to replace with */ - FORCEINLINE TSharedPtr& operator=( TSharedPtr const& InSharedPtr ) + FORCEINLINE TSharedPtr& operator=(TSharedPtr const& InSharedPtr) { SharedReferenceCount = InSharedPtr.SharedReferenceCount; Object = InSharedPtr.Object; return *this; } - FORCEINLINE TSharedPtr& operator=( TSharedPtr&& InSharedPtr ) + FORCEINLINE TSharedPtr& operator=(TSharedPtr&& InSharedPtr) { if (this != &InSharedPtr) { @@ -758,14 +749,14 @@ class TSharedPtr * * @param InRawPtrProxy Proxy object used to assign the object (see MakeShareable helper function) */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TSharedPtr& operator=( SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy ) + FORCEINLINE TSharedPtr& operator=(SharedPointerInternals::FRawPtrProxy< OtherType > const& InRawPtrProxy) { - *this = TSharedPtr< ObjectType, Mode >( InRawPtrProxy ); + *this = TSharedPtr< ObjectType, Mode >(InRawPtrProxy); return *this; } @@ -774,13 +765,13 @@ class TSharedPtr * * @return Reference to the object */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior FORCEINLINE TSharedRef< ObjectType, Mode > ToSharedRef() const { - // If this assert goes off, it means a shared reference was created from a shared pointer that was nullptr. - // Shared references are never allowed to be null. Consider using TSharedPtr instead. - check( IsValid() ); - return TSharedRef< ObjectType, Mode >( *this ); + // If this assert goes off, it means a shared reference was created from a shared pointer that was nullptr. + // Shared references are never allowed to be null. Consider using TSharedPtr instead. + check(IsValid()); + return TSharedRef< ObjectType, Mode >(*this); } /** @@ -810,7 +801,7 @@ class TSharedPtr */ FORCEINLINE typename FMakeReferenceTo::Type operator*() const { - check( IsValid() ); + check(IsValid()); return *Object; } @@ -821,7 +812,7 @@ class TSharedPtr */ FORCEINLINE ObjectType* operator->() const { - check( IsValid() ); + check(IsValid()); return Object; } @@ -831,7 +822,7 @@ class TSharedPtr */ FORCEINLINE void Reset() { - *this = TSharedPtr< ObjectType, Mode >(); + *this = TSharedPtr< ObjectType, Mode >(); } /** @@ -872,13 +863,13 @@ class TSharedPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE explicit TSharedPtr( TWeakPtr< OtherType, Mode > const& InWeakPtr ) - : Object( nullptr ) - , SharedReferenceCount( InWeakPtr.WeakReferenceCount ) + FORCEINLINE explicit TSharedPtr(TWeakPtr< OtherType, Mode > const& InWeakPtr) + : Object(nullptr) + , SharedReferenceCount(InWeakPtr.WeakReferenceCount) { // Check that the shared reference was created from the weak reference successfully. We'll only // cache a pointer to the object if we have a valid shared reference. - if( SharedReferenceCount.IsValid() ) + if (SharedReferenceCount.IsValid()) { Object = InWeakPtr.Object; } @@ -891,9 +882,9 @@ class TSharedPtr * * @return Hash code value */ - friend uint32 GetTypeHash( const TSharedPtr< ObjectType, Mode >& InSharedPtr ) + friend uint32 GetTypeHash(const TSharedPtr< ObjectType, Mode >& InSharedPtr) { - return ::PointerHash( InSharedPtr.Object ); + return ::PointerHash(InSharedPtr.Object); } // We declare ourselves as a friend (templated using OtherType) so we can access members as needed @@ -912,10 +903,8 @@ class TSharedPtr SharedPointerInternals::FSharedReferencer< Mode > SharedReferenceCount; }; - template struct TIsZeroConstructType> { enum { Value = true }; }; - /** * TWeakPtr is a non-intrusive reference-counted weak object pointer. This weak pointer will be * conditionally thread-safe when the optional Mode template argument is set to ThreadSafe. @@ -927,8 +916,8 @@ class TWeakPtr /** Constructs an empty TWeakPtr */ // NOTE: FNullTag parameter is an Unreal extension to standard shared_ptr behavior - FORCEINLINE TWeakPtr( SharedPointerInternals::FNullTag* = nullptr ) - : Object( nullptr ) + FORCEINLINE TWeakPtr(SharedPointerInternals::FNullTag* = nullptr) + : Object(nullptr) , WeakReferenceCount() { } @@ -937,14 +926,14 @@ class TWeakPtr * * @param InSharedRef The shared reference to create a weak pointer from */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr( TSharedRef< OtherType, Mode > const& InSharedRef ) - : Object( InSharedRef.Object ) - , WeakReferenceCount( InSharedRef.SharedReferenceCount ) + FORCEINLINE TWeakPtr(TSharedRef< OtherType, Mode > const& InSharedRef) + : Object(InSharedRef.Object) + , WeakReferenceCount(InSharedRef.SharedReferenceCount) { } /** @@ -956,9 +945,9 @@ class TWeakPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr( TSharedPtr< OtherType, Mode > const& InSharedPtr ) - : Object( InSharedPtr.Object ) - , WeakReferenceCount( InSharedPtr.SharedReferenceCount ) + FORCEINLINE TWeakPtr(TSharedPtr< OtherType, Mode > const& InSharedPtr) + : Object(InSharedPtr.Object) + , WeakReferenceCount(InSharedPtr.SharedReferenceCount) { } /** @@ -971,30 +960,30 @@ class TWeakPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr( TWeakPtr< OtherType, Mode > const& InWeakPtr ) - : Object( InWeakPtr.Object ) - , WeakReferenceCount( InWeakPtr.WeakReferenceCount ) + FORCEINLINE TWeakPtr(TWeakPtr< OtherType, Mode > const& InWeakPtr) + : Object(InWeakPtr.Object) + , WeakReferenceCount(InWeakPtr.WeakReferenceCount) { } template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr( TWeakPtr< OtherType, Mode >&& InWeakPtr ) - : Object( InWeakPtr.Object ) - , WeakReferenceCount( MoveTemp(InWeakPtr.WeakReferenceCount) ) + FORCEINLINE TWeakPtr(TWeakPtr< OtherType, Mode >&& InWeakPtr) + : Object(InWeakPtr.Object) + , WeakReferenceCount(MoveTemp(InWeakPtr.WeakReferenceCount)) { InWeakPtr.Object = nullptr; } - FORCEINLINE TWeakPtr( TWeakPtr const& InWeakPtr ) - : Object( InWeakPtr.Object ) - , WeakReferenceCount( InWeakPtr.WeakReferenceCount ) + FORCEINLINE TWeakPtr(TWeakPtr const& InWeakPtr) + : Object(InWeakPtr.Object) + , WeakReferenceCount(InWeakPtr.WeakReferenceCount) { } - FORCEINLINE TWeakPtr( TWeakPtr&& InWeakPtr ) - : Object( InWeakPtr.Object ) - , WeakReferenceCount( MoveTemp(InWeakPtr.WeakReferenceCount) ) + FORCEINLINE TWeakPtr(TWeakPtr&& InWeakPtr) + : Object(InWeakPtr.Object) + , WeakReferenceCount(MoveTemp(InWeakPtr.WeakReferenceCount)) { InWeakPtr.Object = nullptr; } @@ -1002,8 +991,8 @@ class TWeakPtr /** * Assignment to a nullptr pointer. Clears this weak pointer's reference. */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior - FORCEINLINE TWeakPtr& operator=( SharedPointerInternals::FNullTag* ) + // NOTE: The following is an Unreal extension to standard shared_ptr behavior + FORCEINLINE TWeakPtr& operator=(SharedPointerInternals::FNullTag*) { Reset(); return *this; @@ -1014,19 +1003,19 @@ class TWeakPtr * * @param InWeakPtr The weak pointer for the object to assign */ - FORCEINLINE TWeakPtr& operator=( TWeakPtr const& InWeakPtr ) + FORCEINLINE TWeakPtr& operator=(TWeakPtr const& InWeakPtr) { Object = InWeakPtr.Pin().Get(); WeakReferenceCount = InWeakPtr.WeakReferenceCount; return *this; } - FORCEINLINE TWeakPtr& operator=( TWeakPtr&& InWeakPtr ) + FORCEINLINE TWeakPtr& operator=(TWeakPtr&& InWeakPtr) { if (this != &InWeakPtr) { - Object = InWeakPtr.Object; - InWeakPtr.Object = nullptr; + Object = InWeakPtr.Object; + InWeakPtr.Object = nullptr; WeakReferenceCount = MoveTemp(InWeakPtr.WeakReferenceCount); } return *this; @@ -1042,7 +1031,7 @@ class TWeakPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr& operator=( TWeakPtr const& InWeakPtr ) + FORCEINLINE TWeakPtr& operator=(TWeakPtr const& InWeakPtr) { Object = InWeakPtr.Pin().Get(); WeakReferenceCount = InWeakPtr.WeakReferenceCount; @@ -1053,10 +1042,10 @@ class TWeakPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr& operator=( TWeakPtr&& InWeakPtr ) + FORCEINLINE TWeakPtr& operator=(TWeakPtr&& InWeakPtr) { - Object = InWeakPtr.Object; - InWeakPtr.Object = nullptr; + Object = InWeakPtr.Object; + InWeakPtr.Object = nullptr; WeakReferenceCount = MoveTemp(InWeakPtr.WeakReferenceCount); return *this; } @@ -1066,12 +1055,12 @@ class TWeakPtr * * @param InSharedRef The shared reference used to assign to this weak pointer */ - // NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template < typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr& operator=( TSharedRef< OtherType, Mode > const& InSharedRef ) + FORCEINLINE TWeakPtr& operator=(TSharedRef< OtherType, Mode > const& InSharedRef) { Object = InSharedRef.Object; WeakReferenceCount = InSharedRef.SharedReferenceCount; @@ -1087,7 +1076,7 @@ class TWeakPtr typename OtherType, typename = typename TEnableIf::Value>::Type > - FORCEINLINE TWeakPtr& operator=( TSharedPtr< OtherType, Mode > const& InSharedPtr ) + FORCEINLINE TWeakPtr& operator=(TSharedPtr< OtherType, Mode > const& InSharedPtr) { Object = InSharedPtr.Object; WeakReferenceCount = InSharedPtr.SharedReferenceCount; @@ -1104,7 +1093,7 @@ class TWeakPtr */ FORCEINLINE TSharedPtr< ObjectType, Mode > Pin() const { - return TSharedPtr< ObjectType, Mode >( *this ); + return TSharedPtr< ObjectType, Mode >(*this); } /** @@ -1129,13 +1118,13 @@ class TWeakPtr /** * Returns true if the object this weak pointer points to is the same as the specified object pointer. */ - FORCEINLINE bool HasSameObject( const void* InOtherPtr ) const + FORCEINLINE bool HasSameObject(const void* InOtherPtr) const { return Pin().Get() == InOtherPtr; } private: - + /** * Computes a hash code for this object * @@ -1143,21 +1132,21 @@ class TWeakPtr * * @return Hash code value */ - friend uint32 GetTypeHash( const TWeakPtr< ObjectType, Mode >& InWeakPtr ) + friend uint32 GetTypeHash(const TWeakPtr< ObjectType, Mode >& InWeakPtr) { - return ::PointerHash( InWeakPtr.Object ); + return ::PointerHash(InWeakPtr.Object); } // We declare ourselves as a friend (templated using OtherType) so we can access members as needed - template< class OtherType, int OtherMode > friend class TWeakPtr; + template< class OtherType, int OtherMode > friend class TWeakPtr; // Declare ourselves as a friend of TSharedPtr so we can access members as needed - template< class OtherType, int OtherMode = ESPMode::Fast > friend class TSharedPtr; + template< class OtherType, int OtherMode > friend class TSharedPtr; private: /** The object we have a weak reference to. Can be nullptr. Also, it's important to note that because - this is a weak reference, the object this pointer points to may have already been destroyed. */ + this is a weak reference, the object this pointer points to may have already been destroyed. */ ObjectType* Object; /** Interface to the reference counter for this object. Note that the actual reference @@ -1165,11 +1154,9 @@ class TWeakPtr SharedPointerInternals::FWeakReferencer< Mode > WeakReferenceCount; }; - template struct TIsWeakPointerType > { enum { Value = true }; }; template struct TIsZeroConstructType > { enum { Value = true }; }; - /** * Derive your class from TSharedFromThis to enable access to a TSharedRef directly from an object * instance that's already been allocated. Use the optional Mode template argument for thread-safety. @@ -1188,7 +1175,7 @@ class TSharedFromThis */ TSharedRef< ObjectType, Mode > AsShared() { - TSharedPtr< ObjectType, Mode > SharedThis( WeakThis.Pin() ); + TSharedPtr< ObjectType, Mode > SharedThis(WeakThis.Pin()); // // If the following assert goes off, it means one of the following: @@ -1199,7 +1186,7 @@ class TSharedFromThis // To fix this, make sure you create at least one shared reference to your object instance before requested, // and also avoid calling this function from your object's destructor. // - check( SharedThis.Get() == this ); + check(SharedThis.Get() == this); // Now that we've verified the shared pointer is valid, we'll convert it to a shared reference // and return it! @@ -1215,7 +1202,7 @@ class TSharedFromThis */ TSharedRef< ObjectType const, Mode > AsShared() const { - TSharedPtr< ObjectType const, Mode > SharedThis( WeakThis ); + TSharedPtr< ObjectType const, Mode > SharedThis(WeakThis); // // If the following assert goes off, it means one of the following: @@ -1226,7 +1213,7 @@ class TSharedFromThis // To fix this, make sure you create at least one shared reference to your object instance before requested, // and also avoid calling this function from your object's destructor. // - check( SharedThis.Get() == this ); + check(SharedThis.Get() == this); // Now that we've verified the shared pointer is valid, we'll convert it to a shared reference // and return it! @@ -1244,9 +1231,9 @@ class TSharedFromThis * @return Returns this object as a shared pointer */ template< class OtherType > - FORCEINLINE static TSharedRef< OtherType, Mode > SharedThis( OtherType* ThisPtr ) + FORCEINLINE static TSharedRef< OtherType, Mode > SharedThis(OtherType* ThisPtr) { - return StaticCastSharedRef< OtherType >( ThisPtr->AsShared() ); + return StaticCastSharedRef< OtherType >(ThisPtr->AsShared()); } /** @@ -1258,9 +1245,9 @@ class TSharedFromThis * @return Returns this object as a shared pointer (const) */ template< class OtherType > - FORCEINLINE static TSharedRef< OtherType const, Mode > SharedThis( const OtherType* ThisPtr ) + FORCEINLINE static TSharedRef< OtherType const, Mode > SharedThis(const OtherType* ThisPtr) { - return StaticCastSharedRef< OtherType const >( ThisPtr->AsShared() ); + return StaticCastSharedRef< OtherType const >(ThisPtr->AsShared()); } public: // @todo: Ideally this would be private, but template sharing problems prevent it @@ -1271,11 +1258,11 @@ class TSharedFromThis * Note that until this function is called, calls to AsShared() will result in an empty pointer. */ template< class SharedPtrType, class OtherType > - FORCEINLINE void UpdateWeakReferenceInternal( TSharedPtr< SharedPtrType, Mode > const* InSharedPtr, OtherType* InObject ) const + FORCEINLINE void UpdateWeakReferenceInternal(TSharedPtr< SharedPtrType, Mode > const* InSharedPtr, OtherType* InObject) const { - if( !WeakThis.IsValid() ) + if (!WeakThis.IsValid()) { - WeakThis = TSharedPtr< ObjectType, Mode >( *InSharedPtr, InObject ); + WeakThis = TSharedPtr< ObjectType, Mode >(*InSharedPtr, InObject); } } @@ -1285,11 +1272,11 @@ class TSharedFromThis * Note that until this function is called, calls to AsShared() will result in an empty pointer. */ template< class SharedRefType, class OtherType > - FORCEINLINE void UpdateWeakReferenceInternal( TSharedRef< SharedRefType, Mode > const* InSharedRef, OtherType* InObject ) const + FORCEINLINE void UpdateWeakReferenceInternal(TSharedRef< SharedRefType, Mode > const* InSharedRef, OtherType* InObject) const { - if( !WeakThis.IsValid() ) + if (!WeakThis.IsValid()) { - WeakThis = TSharedRef< ObjectType, Mode >( *InSharedRef, InObject ); + WeakThis = TSharedRef< ObjectType, Mode >(*InSharedRef, InObject); } } @@ -1311,10 +1298,10 @@ class TSharedFromThis TSharedFromThis() { } /** Hidden stub copy constructor */ - TSharedFromThis( TSharedFromThis const& ) { } + TSharedFromThis(TSharedFromThis const&) { } /** Hidden stub assignment operator */ - FORCEINLINE TSharedFromThis& operator=( TSharedFromThis const& ) + FORCEINLINE TSharedFromThis& operator=(TSharedFromThis const&) { return *this; } @@ -1325,334 +1312,307 @@ class TSharedFromThis private: /** Weak reference to ourselves. If we're destroyed then this weak pointer reference will be destructed - with ourselves. Note this is declared mutable only so that UpdateWeakReferenceInternal() can update it. */ - mutable TWeakPtr< ObjectType, Mode > WeakThis; + with ourselves. Note this is declared mutable only so that UpdateWeakReferenceInternal() can update it. */ + mutable TWeakPtr< ObjectType, Mode > WeakThis; }; - /** * Global equality operator for TSharedRef * * @return True if the two shared references are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB ) +FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB) { - return &( InSharedRefA.Get() ) == &( InSharedRefB.Get() ); + return &(InSharedRefA.Get()) == &(InSharedRefB.Get()); } - /** * Global inequality operator for TSharedRef * * @return True if the two shared references are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB ) +FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB) { - return &( InSharedRefA.Get() ) != &( InSharedRefB.Get() ); + return &(InSharedRefA.Get()) != &(InSharedRefB.Get()); } - /** * Global equality operator for TSharedPtr * * @return True if the two shared pointers are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB ) +FORCEINLINE bool operator==(TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB) { return InSharedPtrA.Get() == InSharedPtrB.Get(); } - /** * Global inequality operator for TSharedPtr * * @return True if the two shared pointers are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB ) +FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB) { return InSharedPtrA.Get() != InSharedPtrB.Get(); } - /** * Tests to see if a TSharedRef is "equal" to a TSharedPtr (both are valid and refer to the same object) * * @return True if the shared reference and shared pointer are "equal" */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedRef< ObjectTypeA, Mode > const& InSharedRef, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr ) +FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const& InSharedRef, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr) { - return InSharedPtr.IsValid() && InSharedPtr.Get() == &( InSharedRef.Get() ); + return InSharedPtr.IsValid() && InSharedPtr.Get() == &(InSharedRef.Get()); } - /** * Tests to see if a TSharedRef is not "equal" to a TSharedPtr (shared pointer is invalid, or both refer to different objects) * * @return True if the shared reference and shared pointer are not "equal" */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedRef< ObjectTypeA, Mode > const& InSharedRef, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr ) +FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const& InSharedRef, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr) { - return !InSharedPtr.IsValid() || ( InSharedPtr.Get() != &( InSharedRef.Get() ) ); + return !InSharedPtr.IsValid() || (InSharedPtr.Get() != &(InSharedRef.Get())); } - /** * Tests to see if a TSharedRef is "equal" to a TSharedPtr (both are valid and refer to the same object) (reverse) * * @return True if the shared reference and shared pointer are "equal" */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr, TSharedRef< ObjectTypeA, Mode > const& InSharedRef ) +FORCEINLINE bool operator==(TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr, TSharedRef< ObjectTypeA, Mode > const& InSharedRef) { return InSharedRef == InSharedPtr; } - /** * Tests to see if a TSharedRef is not "equal" to a TSharedPtr (shared pointer is invalid, or both refer to different objects) (reverse) * * @return True if the shared reference and shared pointer are not "equal" */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr, TSharedRef< ObjectTypeA, Mode > const& InSharedRef ) +FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeB, Mode > const& InSharedPtr, TSharedRef< ObjectTypeA, Mode > const& InSharedRef) { return InSharedRef != InSharedPtr; } - /** * Global equality operator for TWeakPtr * * @return True if the two weak pointers are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return InWeakPtrA.Pin().Get() == InWeakPtrB.Pin().Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ref are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB ) +FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB) { return InWeakPtrA.Pin().Get() == &InSharedRefB.Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ptr are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB ) +FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB) { return InWeakPtrA.Pin().Get() == InSharedPtrB.Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ref are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator==(TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return &InSharedRefA.Get() == InWeakPtrB.Pin().Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ptr are equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator==(TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return InSharedPtrA.Get() == InWeakPtrB.Pin().Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer is null */ template< class ObjectTypeA, int Mode > -FORCEINLINE bool operator==( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, decltype(nullptr) ) +FORCEINLINE bool operator==(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, decltype(nullptr)) { return !InWeakPtrA.IsValid(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer is null */ template< class ObjectTypeB, int Mode > -FORCEINLINE bool operator==( decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator==(decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return !InWeakPtrB.IsValid(); } - /** * Global inequality operator for TWeakPtr * * @return True if the two weak pointers are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return InWeakPtrA.Pin().Get() != InWeakPtrB.Pin().Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ref are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB ) +FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedRef< ObjectTypeB, Mode > const& InSharedRefB) { return InWeakPtrA.Pin().Get() != &InSharedRefB.Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ptr are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB ) +FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, TSharedPtr< ObjectTypeB, Mode > const& InSharedPtrB) { return InWeakPtrA.Pin().Get() != InSharedPtrB.Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ref are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator!=(TSharedRef< ObjectTypeA, Mode > const& InSharedRefA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return &InSharedRefA.Get() != InWeakPtrB.Pin().Get(); } - /** * Global equality operator for TWeakPtr * * @return True if the weak pointer and the shared ptr are not equal */ template< class ObjectTypeA, class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator!=(TSharedPtr< ObjectTypeA, Mode > const& InSharedPtrA, TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return InSharedPtrA.Get() != InWeakPtrB.Pin().Get(); } - /** * Global inequality operator for TWeakPtr * * @return True if the weak pointer is not null */ template< class ObjectTypeA, int Mode > -FORCEINLINE bool operator!=( TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, decltype(nullptr) ) +FORCEINLINE bool operator!=(TWeakPtr< ObjectTypeA, Mode > const& InWeakPtrA, decltype(nullptr)) { return InWeakPtrA.IsValid(); } - /** * Global inequality operator for TWeakPtr * * @return True if the weak pointer is not null */ template< class ObjectTypeB, int Mode > -FORCEINLINE bool operator!=( decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB ) +FORCEINLINE bool operator!=(decltype(nullptr), TWeakPtr< ObjectTypeB, Mode > const& InWeakPtrB) { return InWeakPtrB.IsValid(); } - /** * Casts a shared pointer of one type to another type. (static_cast) Useful for down-casting. * * @param InSharedPtr The shared pointer to cast */ template< class CastToType, class CastFromType, int Mode > -FORCEINLINE TSharedPtr< CastToType, Mode > StaticCastSharedPtr( TSharedPtr< CastFromType, Mode > const& InSharedPtr ) +FORCEINLINE TSharedPtr< CastToType, Mode > StaticCastSharedPtr(TSharedPtr< CastFromType, Mode > const& InSharedPtr) { - return TSharedPtr< CastToType, Mode >( InSharedPtr, SharedPointerInternals::FStaticCastTag() ); + return TSharedPtr< CastToType, Mode >(InSharedPtr, SharedPointerInternals::FStaticCastTag()); } - /** * Casts a 'const' shared reference to 'mutable' shared reference. (const_cast) * * @param InSharedRef The shared reference to cast */ template< class CastToType, class CastFromType, int Mode > -FORCEINLINE TSharedRef< CastToType, Mode > ConstCastSharedRef( TSharedRef< CastFromType, Mode > const& InSharedRef ) +FORCEINLINE TSharedRef< CastToType, Mode > ConstCastSharedRef(TSharedRef< CastFromType, Mode > const& InSharedRef) { - return TSharedRef< CastToType, Mode >( InSharedRef, SharedPointerInternals::FConstCastTag() ); + return TSharedRef< CastToType, Mode >(InSharedRef, SharedPointerInternals::FConstCastTag()); } - /** * Casts a 'const' shared pointer to 'mutable' shared pointer. (const_cast) * * @param InSharedPtr The shared pointer to cast */ template< class CastToType, class CastFromType, int Mode > -FORCEINLINE TSharedPtr< CastToType, Mode > ConstCastSharedPtr( TSharedPtr< CastFromType, Mode > const& InSharedPtr ) +FORCEINLINE TSharedPtr< CastToType, Mode > ConstCastSharedPtr(TSharedPtr< CastFromType, Mode > const& InSharedPtr) { - return TSharedPtr< CastToType, Mode >( InSharedPtr, SharedPointerInternals::FConstCastTag() ); + return TSharedPtr< CastToType, Mode >(InSharedPtr, SharedPointerInternals::FConstCastTag()); } - /** * MakeShareable utility function. Wrap object pointers with MakeShareable to allow them to be implicitly * converted to shared pointers! This is useful in assignment operations, or when returning a shared * pointer from a function. */ -// NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template< class ObjectType > -FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable( ObjectType* InObject ) +FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable(ObjectType* InObject) { - return SharedPointerInternals::FRawPtrProxy< ObjectType >( InObject ); + return SharedPointerInternals::FRawPtrProxy< ObjectType >(InObject); } - /** * MakeShareable utility function. Wrap object pointers with MakeShareable to allow them to be implicitly * converted to shared pointers! This is useful in assignment operations, or when returning a shared * pointer from a function. */ -// NOTE: The following is an Unreal extension to standard shared_ptr behavior + // NOTE: The following is an Unreal extension to standard shared_ptr behavior template< class ObjectType, class DeleterType > -FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable( ObjectType* InObject, DeleterType&& InDeleter ) +FORCEINLINE SharedPointerInternals::FRawPtrProxy< ObjectType > MakeShareable(ObjectType* InObject, DeleterType&& InDeleter) { - return SharedPointerInternals::FRawPtrProxy< ObjectType >( InObject, Forward< DeleterType >( InDeleter ) ); + return SharedPointerInternals::FRawPtrProxy< ObjectType >(InObject, Forward< DeleterType >(InDeleter)); } /** @@ -1666,7 +1626,6 @@ FORCEINLINE TSharedRef MakeShared(InArgTypes&&... Args) return UE4SharedPointer_Private::MakeSharedRef(Controller->GetObjectPtr(), (SharedPointerInternals::FReferenceControllerBase*)Controller); } - /** * Given a TArray of TWeakPtr's, will remove any invalid pointers. * @param PointerArray The pointer array to prune invalid pointers out of @@ -1685,7 +1644,6 @@ FORCEINLINE void CleanupPointerArray(TArray< TWeakPtr >& PointerArray) PointerArray = NewArray; } - /** * Given a TMap of TWeakPtr's, will remove any invalid pointers. Not the most efficient. * @param PointerMap The pointer map to prune invalid pointers out of diff --git a/version/Core/Public/API/UE/Templates/Tuple.h b/version/Core/Public/API/UE/Templates/Tuple.h index 3e46a6fa..d1164d90 100644 --- a/version/Core/Public/API/UE/Templates/Tuple.h +++ b/version/Core/Public/API/UE/Templates/Tuple.h @@ -11,11 +11,9 @@ // Static analysis causes internal compiler errors with auto-deduced return types, // but some older VC versions still have return type deduction failures inside the delegate code // when they are enabled. So we currently only enable them for static analysis builds. -#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) - #define USE_TUPLE_AUTO_RETURN_TYPES (PLATFORM_COMPILER_HAS_AUTO_RETURN_TYPES && USING_CODE_ANALYSIS) -#else - #define USE_TUPLE_AUTO_RETURN_TYPES 1 -#endif + +#define USE_TUPLE_AUTO_RETURN_TYPES 1 // Fixes newest VS compatibility issue + #define TUPLES_USE_DEFAULTED_FUNCTIONS 1 diff --git a/version/Core/Public/API/UE/Templates/UnrealTemplate.h b/version/Core/Public/API/UE/Templates/UnrealTemplate.h index 65b06288..24e3531a 100644 --- a/version/Core/Public/API/UE/Templates/UnrealTemplate.h +++ b/version/Core/Public/API/UE/Templates/UnrealTemplate.h @@ -441,7 +441,7 @@ struct TUseBitwiseSwap template inline typename TEnableIf::Value>::Type Swap(T& A, T& B) { - if (LIKELY(&A != &B)) + if (&A != &B) { TTypeCompatibleBytes Temp; FMemory::Memcpy(&Temp, &A, sizeof(T)); @@ -450,6 +450,9 @@ inline typename TEnableIf::Value>::Type Swap(T& A, T& B) } } +/** + * Swap two values. Assumes the types are trivially relocatable. + */ template inline typename TEnableIf::Value>::Type Swap(T& A, T& B) { diff --git a/version/Core/Public/API/UE/UE.h b/version/Core/Public/API/UE/UE.h index 56a36ef0..66646382 100644 --- a/version/Core/Public/API/UE/UE.h +++ b/version/Core/Public/API/UE/UE.h @@ -3,12 +3,15 @@ #include #include +#include "Crc.h" #include "Containers/TArray.h" #include "Containers/FString.h" #include "Containers/EnumAsByte.h" #include "Templates/SharedPointer.h" #include "API/Fields.h" #include "API/Enums.h" +#include "API/UE/Math/Color.h" +#include "Misc/GlobalObjectsArray.h" // Base types @@ -29,20 +32,39 @@ struct FName { } - //static TStaticIndirectArrayThreadSafeRead * GetNames() { return NativeCall *>(nullptr, "FName.GetNames"); } - static FString * NameToDisplayString(FString * result, FString * InDisplayName, const bool bIsBool) { return NativeCall(nullptr, "FName.NameToDisplayString", result, InDisplayName, bIsBool); } - FName(const wchar_t * Name, EFindName FindType, bool __formal) { NativeCall(this, "FName.FName", Name, FindType, __formal); } - FName(const char * Name, EFindName FindType, bool __formal) { NativeCall(this, "FName.FName", Name, FindType, __formal); } - bool operator==(const wchar_t * Other) { return NativeCall(this, "FName.operator==", Other); } - int Compare(FName * Other) { return NativeCall(this, "FName.Compare", Other); } - void Init(const wchar_t * InName, int InNumber, EFindName FindType, bool bSplitName, int HardcodeIndex) { NativeCall(this, "FName.Init", InName, InNumber, FindType, bSplitName, HardcodeIndex); } - void ToString(FString * Out) { NativeCall(this, "FName.ToString", Out); } - void AppendString(FString * Out) { NativeCall(this, "FName.AppendString", Out); } - static bool SplitNameWithCheck(const wchar_t * OldName, wchar_t * NewName, int NewNameLen, int * NewNumber) { return NativeCall(nullptr, "FName.SplitNameWithCheck", OldName, NewName, NewNameLen, NewNumber); } - bool IsValidXName(FString InvalidChars, FText * Reason) { return NativeCall(this, "FName.IsValidXName", InvalidChars, Reason); } - void Init(const char * InName, int InNumber, EFindName FindType, bool bSplitName, int HardcodeIndex) { NativeCall(this, "FName.Init", InName, InNumber, FindType, bSplitName, HardcodeIndex); } + static FString* NameToDisplayString(FString* result, FString* InDisplayName, const bool bIsBool) { return NativeCall(nullptr, "FName.NameToDisplayString", result, InDisplayName, bIsBool); } + + FName(const char* Name, EFindName FindType) + { + Init(Name, 0, FindType, true, -1); + } + + bool operator==(const wchar_t* Other) { return NativeCall(this, "FName.operator==", Other); } + int Compare(FName* Other) { return NativeCall(this, "FName.Compare", Other); } + void ToString(FString* Out) { NativeCall(this, "FName.ToString", Out); } + FString ToString() const + { + FString out; + FName tmp = *this; + + tmp.ToString(&out); + + return out; + } + void AppendString(FString* Out) { NativeCall(this, "FName.AppendString", Out); } + static bool SplitNameWithCheck(const wchar_t* OldName, wchar_t* NewName, int NewNameLen, int* NewNumber) { return NativeCall(nullptr, "FName.SplitNameWithCheck", OldName, NewName, NewNameLen, NewNumber); } + bool IsValidXName(FString InvalidChars, FText* Reason) { return NativeCall(this, "FName.IsValidXName", InvalidChars, Reason); } + void Init(const char* InName, int InNumber, EFindName FindType, bool bSplitName, int HardcodeIndex) { NativeCall(this, "FName.Init", InName, InNumber, FindType, bSplitName, HardcodeIndex); } + FString* GetPlainNameString(FString* result) { return NativeCall(this, "FName.GetPlainNameString", result); } + + bool operator==(const FName& Other) const { return Other.ToString() == this->ToString(); } }; +FORCEINLINE uint32 GetTypeHash(const FName& name) +{ + return FCrc::MemCrc32(&name, sizeof(FName)); +} + struct FTransform { __m128 Rotation; @@ -62,10 +84,6 @@ struct FGuid uint32_t D; }; -struct UFunction -{ -}; - struct FBox { }; @@ -73,7 +91,7 @@ struct FBox template struct TSubobjectPtr { - ObjectType *Object; + ObjectType* Object; FORCEINLINE ObjectType& operator*() const { @@ -100,25 +118,25 @@ struct FText // Functions - int CompareTo(FText * Other, ETextComparisonLevel::Type ComparisonLevel) { return NativeCall(this, "FText.CompareTo", Other, ComparisonLevel); } + int CompareTo(FText* Other, ETextComparisonLevel::Type ComparisonLevel) { return NativeCall(this, "FText.CompareTo", Other, ComparisonLevel); } FText() { NativeCall(this, "FText.FText"); } - FText(FText * Source) { NativeCall(this, "FText.FText", Source); } - FText * operator=(FText * Source) { return NativeCall(this, "FText.operator=", Source); } + FText(FText* Source) { NativeCall(this, "FText.FText", Source); } + FText* operator=(FText* Source) { return NativeCall(this, "FText.operator=", Source); } FText(FString InSourceString) { NativeCall(this, "FText.FText", InSourceString); } FText(FString InSourceString, FString InNamespace, FString InKey, int InFlags) { NativeCall(this, "FText.FText", InSourceString, InNamespace, InKey, InFlags); } - static FText * TrimPreceding(FText * result, FText * InText) { return NativeCall(nullptr, "FText.TrimPreceding", result, InText); } - static FText * TrimTrailing(FText * result, FText * InText) { return NativeCall(nullptr, "FText.TrimTrailing", result, InText); } - static FText * TrimPrecedingAndTrailing(FText * result, FText * InText) { return NativeCall(nullptr, "FText.TrimPrecedingAndTrailing", result, InText); } - static FText * Format(FText * result, FText * Fmt, FText * v1) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1); } - static FText * Format(FText * result, FText * Fmt, FText * v1, FText * v2) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1, v2); } - static FText * Format(FText * result, FText * Fmt, FText * v1, FText * v2, FText * v3) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1, v2, v3); } - static bool FindText(FString * Namespace, FString * Key, FText * OutText, FString *const SourceString) { return NativeCall(nullptr, "FText.FindText", Namespace, Key, OutText, SourceString); } - static FText * CreateChronologicalText(FText * result, FString InSourceString) { return NativeCall(nullptr, "FText.CreateChronologicalText", result, InSourceString); } - static FText * FromName(FText * result, FName * Val) { return NativeCall(nullptr, "FText.FromName", result, Val); } - static FText * FromString(FText * result, FString String) { return NativeCall(nullptr, "FText.FromString", result, String); } - FString * ToString() { return NativeCall(this, "FText.ToString"); } + static FText* TrimPreceding(FText* result, FText* InText) { return NativeCall(nullptr, "FText.TrimPreceding", result, InText); } + static FText* TrimTrailing(FText* result, FText* InText) { return NativeCall(nullptr, "FText.TrimTrailing", result, InText); } + static FText* TrimPrecedingAndTrailing(FText* result, FText* InText) { return NativeCall(nullptr, "FText.TrimPrecedingAndTrailing", result, InText); } + static FText* Format(FText* result, FText* Fmt, FText* v1) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1); } + static FText* Format(FText* result, FText* Fmt, FText* v1, FText* v2) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1, v2); } + static FText* Format(FText* result, FText* Fmt, FText* v1, FText* v2, FText* v3) { return NativeCall(nullptr, "FText.Format", result, Fmt, v1, v2, v3); } + static bool FindText(FString* Namespace, FString* Key, FText* OutText, FString* const SourceString) { return NativeCall(nullptr, "FText.FindText", Namespace, Key, OutText, SourceString); } + static FText* CreateChronologicalText(FText* result, FString InSourceString) { return NativeCall(nullptr, "FText.CreateChronologicalText", result, InSourceString); } + static FText* FromName(FText* result, FName* Val) { return NativeCall(nullptr, "FText.FromName", result, Val); } + static FText* FromString(FText* result, FString String) { return NativeCall(nullptr, "FText.FromString", result, String); } + FString* ToString() { return NativeCall(this, "FText.ToString"); } bool ShouldGatherForLocalization() { return NativeCall(this, "FText.ShouldGatherForLocalization"); } - TSharedPtr * GetSourceString(TSharedPtr * result) { return NativeCall *, TSharedPtr *>(this, "FText.GetSourceString", result); } + TSharedPtr* GetSourceString(TSharedPtr* result) { return NativeCall*, TSharedPtr*>(this, "FText.GetSourceString", result); } static void GetEmpty() { NativeCall(nullptr, "FText.GetEmpty"); } }; @@ -126,6 +144,14 @@ struct FDateTime { }; +struct FWeakObjectPtr +{ + int ObjectIndex; + int ObjectSerialNumber; + + void operator=(UObject const* __that) { return NativeCall(this, "FWeakObjectPtr.operator=", __that); } +}; + template struct TWeakObjectPtr { @@ -146,8 +172,40 @@ struct TWeakObjectPtr { return NativeCall(this, "FWeakObjectPtr.Get", bEvenIfPendingKill); } + + FORCEINLINE operator bool() + { + return Get() != nullptr; + } + + FORCEINLINE operator T* () + { + return Get(); + } + + FORCEINLINE bool operator==(const TWeakObjectPtr& __that) const + { + return this->ObjectIndex == __that.ObjectIndex + && this->ObjectSerialNumber == __that.ObjectSerialNumber; + } + + TWeakObjectPtr() + {} + + TWeakObjectPtr(int index, int serialnumber) + :ObjectIndex(index), + ObjectSerialNumber(serialnumber) + {} }; +template +TWeakObjectPtr GetWeakReference(T* object) +{ + FWeakObjectPtr tempWeak; + tempWeak.operator=(object); + TWeakObjectPtr tempTWeak(tempWeak.ObjectIndex, tempWeak.ObjectSerialNumber); + return tempTWeak; +} template using TAutoWeakObjectPtr = TWeakObjectPtr; @@ -169,12 +227,29 @@ struct TSubclassOf struct IOnlinePlatformData { - void *vfptr; + void* vfptr; + FString* ToHumanReadableString(FString* result) { return NativeCall(this, "IOnlinePlatformData.ToHumanReadableString", result); } }; struct FUniqueNetId : IOnlinePlatformData { +}; +struct FUniqueNetIdUInt64 : FUniqueNetId +{ + unsigned __int64& UniqueNetIdField() { return *GetNativePointerField(this, "FUniqueNetIdUInt64.UniqueNetId"); } + + // Functions + + FUniqueNetIdUInt64(FString* Str) { NativeCall(this, "FUniqueNetIdUInt64.FUniqueNetIdUInt64", Str); } + FUniqueNetIdUInt64(FUniqueNetIdUInt64* Src) { NativeCall(this, "FUniqueNetIdUInt64.FUniqueNetIdUInt64", Src); } + FUniqueNetIdUInt64(FUniqueNetId* InUniqueNetId) { NativeCall(this, "FUniqueNetIdUInt64.FUniqueNetIdUInt64", InUniqueNetId); } + FUniqueNetIdUInt64(uint64 InUniqueNetId) { NativeCall(this, "FUniqueNetIdUInt64.FUniqueNetIdUInt64", InUniqueNetId); } + + bool IsValid() { return NativeCall(this, "FUniqueNetIdUInt64.IsValid"); } + FString* ToDebugString(FString* result) { return NativeCall(this, "FUniqueNetIdUInt64.ToDebugString", result); } + unsigned int GetHash() { return NativeCall(this, "FUniqueNetIdUInt64.GetHash"); } + FString* ToString(FString* result) { return NativeCall(this, "FUniqueNetIdUInt64.ToString", result); } }; struct FUniqueNetIdSteam : FUniqueNetId @@ -184,155 +259,183 @@ struct FUniqueNetIdSteam : FUniqueNetId // Functions int GetSize() { return NativeCall(this, "FUniqueNetIdSteam.GetSize"); } - FString * ToString(FString * result) { return NativeCall(this, "FUniqueNetIdSteam.ToString", result); } + FString* ToString(FString* result) { return NativeCall(this, "FUniqueNetIdSteam.ToString", result); } bool IsValid() { return NativeCall(this, "FUniqueNetIdSteam.IsValid"); } - FString * ToDebugString(FString * result) { return NativeCall(this, "FUniqueNetIdSteam.ToDebugString", result); } + FString* ToDebugString(FString* result) { return NativeCall(this, "FUniqueNetIdSteam.ToDebugString", result); } +}; + +struct FUniqueNetIdString : FUniqueNetId +{ + FString UniqueNetIdStr; }; struct UObjectBase { EObjectFlags& ObjectFlagsField() { return *GetNativePointerField(this, "UObjectBase.ObjectFlags"); } int& InternalIndexField() { return *GetNativePointerField(this, "UObjectBase.InternalIndex"); } - UClass * ClassField() { return *GetNativePointerField(this, "UObjectBase.Class"); } + UClass* ClassField() { return *GetNativePointerField(this, "UObjectBase.Class"); } FName& NameField() { return *GetNativePointerField(this, "UObjectBase.Name"); } - UObject * OuterField() { return *GetNativePointerField(this, "UObjectBase.Outer"); } + UObject* OuterField() { return *GetNativePointerField(this, "UObjectBase.Outer"); } // Functions - void DeferredRegister(UClass * UClassStaticClass, const wchar_t * PackageName, const wchar_t * InName) { NativeCall(this, "UObjectBase.DeferredRegister", UClassStaticClass, PackageName, InName); } + void DeferredRegister(UClass* UClassStaticClass, const wchar_t* PackageName, const wchar_t* InName) { NativeCall(this, "UObjectBase.DeferredRegister", UClassStaticClass, PackageName, InName); } bool IsValidLowLevel() { return NativeCall(this, "UObjectBase.IsValidLowLevel"); } bool IsValidLowLevelFast(bool bRecursive) { return NativeCall(this, "UObjectBase.IsValidLowLevelFast", bRecursive); } - static void EmitBaseReferences(UClass * RootClass) { NativeCall(nullptr, "UObjectBase.EmitBaseReferences", RootClass); } - void Register(const wchar_t * PackageName, const wchar_t * InName) { NativeCall(this, "UObjectBase.Register", PackageName, InName); } + static void EmitBaseReferences(UClass* RootClass) { NativeCall(nullptr, "UObjectBase.EmitBaseReferences", RootClass); } + void Register(const wchar_t* PackageName, const wchar_t* InName) { NativeCall(this, "UObjectBase.Register", PackageName, InName); } }; struct UObjectBaseUtility : public UObjectBase { int GetLinkerUE4Version() { return NativeCall(this, "UObjectBaseUtility.GetLinkerUE4Version"); } int GetLinkerLicenseeUE4Version() { return NativeCall(this, "UObjectBaseUtility.GetLinkerLicenseeUE4Version"); } - FString * GetPathName(FString * result, UObject * StopOuter) { return NativeCall(this, "UObjectBaseUtility.GetPathName", result, StopOuter); } - void GetPathName(UObject * StopOuter, FString * ResultString) { NativeCall(this, "UObjectBaseUtility.GetPathName", StopOuter, ResultString); } - FString * GetFullName(FString * result, UObject * StopOuter) { return NativeCall(this, "UObjectBaseUtility.GetFullName", result, StopOuter); } + FString* GetPathName(FString* result, UObject* StopOuter) { return NativeCall(this, "UObjectBaseUtility.GetPathName", result, StopOuter); } + void GetPathName(UObject* StopOuter, FString* ResultString) { NativeCall(this, "UObjectBaseUtility.GetPathName", StopOuter, ResultString); } + FString* GetFullName(FString* result, UObject* StopOuter) { return NativeCall(this, "UObjectBaseUtility.GetFullName", result, StopOuter); } void MarkPackageDirty() { NativeCall(this, "UObjectBaseUtility.MarkPackageDirty"); } - bool IsIn(UObject * SomeOuter) { return NativeCall(this, "UObjectBaseUtility.IsIn", SomeOuter); } - bool IsA(UClass * SomeBase) { return NativeCall(this, "UObjectBaseUtility.IsA", SomeBase); } - void * GetInterfaceAddress(UClass * InterfaceClass) { return NativeCall(this, "UObjectBaseUtility.GetInterfaceAddress", InterfaceClass); } + bool IsIn(UObject* SomeOuter) { return NativeCall(this, "UObjectBaseUtility.IsIn", SomeOuter); } + bool IsA(UClass* SomeBase) { return NativeCall(this, "UObjectBaseUtility.IsA", SomeBase); } + void* GetInterfaceAddress(UClass* InterfaceClass) { return NativeCall(this, "UObjectBaseUtility.GetInterfaceAddress", InterfaceClass); } bool IsDefaultSubobject() { return NativeCall(this, "UObjectBaseUtility.IsDefaultSubobject"); } int GetLinkerIndex() { return NativeCall(this, "UObjectBaseUtility.GetLinkerIndex"); } }; struct UObject : UObjectBaseUtility { - static UClass* StaticClass() { return NativeCall(nullptr, "UObject.StaticClass"); } + static UClass* StaticClass() { return NativeCall(nullptr, "UObject.StaticClass"); } void ExecuteUbergraph(int EntryPoint) { NativeCall(this, "UObject.ExecuteUbergraph", EntryPoint); } bool AreAllOuterObjectsValid() { return NativeCall(this, "UObject.AreAllOuterObjectsValid"); } - FName * GetExporterName(FName * result) { return NativeCall(this, "UObject.GetExporterName", result); } - FString * GetDetailedInfoInternal(FString * result) { return NativeCall(this, "UObject.GetDetailedInfoInternal", result); } - UObject * GetArchetype() { return NativeCall(this, "UObject.GetArchetype"); } - bool IsBasedOnArchetype(UObject *const SomeObject) { return NativeCall(this, "UObject.IsBasedOnArchetype", SomeObject); } + FName* GetExporterName(FName* result) { return NativeCall(this, "UObject.GetExporterName", result); } + FString* GetDetailedInfoInternal(FString* result) { return NativeCall(this, "UObject.GetDetailedInfoInternal", result); } + UObject* GetArchetype() { return NativeCall(this, "UObject.GetArchetype"); } + bool IsBasedOnArchetype(UObject* const SomeObject) { return NativeCall(this, "UObject.IsBasedOnArchetype", SomeObject); } bool IsInBlueprint() { return NativeCall(this, "UObject.IsInBlueprint"); } - bool Rename(const wchar_t * InName, UObject * NewOuter, unsigned int Flags) { return NativeCall(this, "UObject.Rename", InName, NewOuter, Flags); } - void LoadLocalized(UObject * LocBase, bool bLoadHierachecally) { NativeCall(this, "UObject.LoadLocalized", LocBase, bLoadHierachecally); } - void LocalizeProperty(UObject * LocBase, TArray * PropertyTagChain, UProperty *const BaseProperty, UProperty *const Property, void *const ValueAddress) { NativeCall *, UProperty *const, UProperty *const, void *const>(this, "UObject.LocalizeProperty", LocBase, PropertyTagChain, BaseProperty, Property, ValueAddress); } + bool Rename(const wchar_t* InName, UObject* NewOuter, unsigned int Flags) { return NativeCall(this, "UObject.Rename", InName, NewOuter, Flags); } + void LoadLocalized(UObject* LocBase, bool bLoadHierachecally) { NativeCall(this, "UObject.LoadLocalized", LocBase, bLoadHierachecally); } + void LocalizeProperty(UObject* LocBase, TArray* PropertyTagChain, UProperty* const BaseProperty, UProperty* const Property, void* const ValueAddress) { NativeCall*, UProperty* const, UProperty* const, void* const>(this, "UObject.LocalizeProperty", LocBase, PropertyTagChain, BaseProperty, Property, ValueAddress); } void BeginDestroy() { NativeCall(this, "UObject.BeginDestroy"); } void FinishDestroy() { NativeCall(this, "UObject.FinishDestroy"); } - FString * GetDetailedInfo(FString * result) { return NativeCall(this, "UObject.GetDetailedInfo", result); } + FString* GetDetailedInfo(FString* result) { return NativeCall(this, "UObject.GetDetailedInfo", result); } bool ConditionalBeginDestroy() { return NativeCall(this, "UObject.ConditionalBeginDestroy"); } bool ConditionalFinishDestroy() { return NativeCall(this, "UObject.ConditionalFinishDestroy"); } void ConditionalPostLoad() { NativeCall(this, "UObject.ConditionalPostLoad"); } bool Modify(bool bAlwaysMarkDirty) { return NativeCall(this, "UObject.Modify", bAlwaysMarkDirty); } bool IsSelected() { return NativeCall(this, "UObject.IsSelected"); } - void CollectDefaultSubobjects(TArray * OutSubobjectArray, bool bIncludeNestedSubobjects) { NativeCall *, bool>(this, "UObject.CollectDefaultSubobjects", OutSubobjectArray, bIncludeNestedSubobjects); } + void CollectDefaultSubobjects(TArray* OutSubobjectArray, bool bIncludeNestedSubobjects) { NativeCall*, bool>(this, "UObject.CollectDefaultSubobjects", OutSubobjectArray, bIncludeNestedSubobjects); } bool CheckDefaultSubobjectsInternal() { return NativeCall(this, "UObject.CheckDefaultSubobjectsInternal"); } bool IsAsset() { return NativeCall(this, "UObject.IsAsset"); } bool IsSafeForRootSet() { return NativeCall(this, "UObject.IsSafeForRootSet"); } - void LoadConfig(UClass * ConfigClass, const wchar_t * InFilename, unsigned int PropagationFlags, UProperty * PropertyToLoad) { NativeCall(this, "UObject.LoadConfig", ConfigClass, InFilename, PropagationFlags, PropertyToLoad); } + void LoadConfig(UClass* ConfigClass, const wchar_t* InFilename, unsigned int PropagationFlags, UProperty* PropertyToLoad) { NativeCall(this, "UObject.LoadConfig", ConfigClass, InFilename, PropagationFlags, PropertyToLoad); } void ConditionalShutdownAfterError() { NativeCall(this, "UObject.ConditionalShutdownAfterError"); } bool IsNameStableForNetworking() { return NativeCall(this, "UObject.IsNameStableForNetworking"); } bool IsFullNameStableForNetworking() { return NativeCall(this, "UObject.IsFullNameStableForNetworking"); } bool IsSupportedForNetworking() { return NativeCall(this, "UObject.IsSupportedForNetworking"); } - UFunction * FindFunctionChecked(FName InName) { return NativeCall(this, "UObject.FindFunctionChecked", InName); } - void ProcessEvent(UFunction * Function, void * Parms) { NativeCall(this, "UObject.ProcessEvent", Function, Parms); } - static UObject * GetArchetypeFromRequiredInfo(UClass * Class, UObject * Outer, FName Name, bool bIsCDO) { return NativeCall(nullptr, "UObject.GetArchetypeFromRequiredInfo", Class, Outer, Name, bIsCDO); } + UFunction* FindFunctionChecked(FName InName) { return NativeCall(this, "UObject.FindFunctionChecked", InName); } + void ProcessEvent(UFunction* Function, void* Parms) { NativeCall(this, "UObject.ProcessEvent", Function, Parms); } + static UObject* GetArchetypeFromRequiredInfo(UClass* Class, UObject* Outer, FName Name, bool bIsCDO) { return NativeCall(nullptr, "UObject.GetArchetypeFromRequiredInfo", Class, Outer, Name, bIsCDO); } + __declspec(dllexport) UProperty* FindProperty(FName name); }; struct UField : UObject { - UField * NextField() { return *GetNativePointerField(this, "UField.Next"); } + UField* NextField() { return *GetNativePointerField(this, "UField.Next"); } // Functions - UClass * GetOwnerClass() { return NativeCall(this, "UField.GetOwnerClass"); } - UStruct * GetOwnerStruct() { return NativeCall(this, "UField.GetOwnerStruct"); } + UClass* GetOwnerClass() { return NativeCall(this, "UField.GetOwnerClass"); } + UStruct* GetOwnerStruct() { return NativeCall(this, "UField.GetOwnerStruct"); } void PostLoad() { NativeCall(this, "UField.PostLoad"); } - void AddCppProperty(UProperty * Property) { NativeCall(this, "UField.AddCppProperty", Property); } + void AddCppProperty(UProperty* Property) { NativeCall(this, "UField.AddCppProperty", Property); } }; struct UStruct : UField { - UStruct * SuperStructField() { return *GetNativePointerField(this, "UStruct.SuperStruct"); } - UField * ChildrenField() { return *GetNativePointerField(this, "UStruct.Children"); } + UStruct* SuperStructField() { return *GetNativePointerField(this, "UStruct.SuperStruct"); } + UField* ChildrenField() { return *GetNativePointerField(this, "UStruct.Children"); } int& PropertiesSizeField() { return *GetNativePointerField(this, "UStruct.PropertiesSize"); } TArray& ScriptField() { return *GetNativePointerField*>(this, "UStruct.Script"); } int& MinAlignmentField() { return *GetNativePointerField(this, "UStruct.MinAlignment"); } - UProperty * PropertyLinkField() { return *GetNativePointerField(this, "UStruct.PropertyLink"); } - UProperty * RefLinkField() { return *GetNativePointerField(this, "UStruct.RefLink"); } - UProperty * DestructorLinkField() { return *GetNativePointerField(this, "UStruct.DestructorLink"); } - UProperty * PostConstructLinkField() { return *GetNativePointerField(this, "UStruct.PostConstructLink"); } - TArray ScriptObjectReferencesField() { return *GetNativePointerField*>(this, "UStruct.ScriptObjectReferences"); } + UProperty* PropertyLinkField() { return *GetNativePointerField(this, "UStruct.PropertyLink"); } + UProperty* RefLinkField() { return *GetNativePointerField(this, "UStruct.RefLink"); } + UProperty* DestructorLinkField() { return *GetNativePointerField(this, "UStruct.DestructorLink"); } + UProperty* PostConstructLinkField() { return *GetNativePointerField(this, "UStruct.PostConstructLink"); } + TArray ScriptObjectReferencesField() { return *GetNativePointerField*>(this, "UStruct.ScriptObjectReferences"); } // Functions - bool IsChildOf(UStruct * SomeBase) { return NativeCall(this, "UStruct.IsChildOf", SomeBase); } - UField * StaticClass() { return NativeCall(this, "UStruct.StaticClass"); } - void LinkChild(UProperty * Property) { NativeCall(this, "UStruct.LinkChild", Property); } - const wchar_t * GetPrefixCPP() { return NativeCall(this, "UStruct.GetPrefixCPP"); } + bool IsChildOf(UStruct* SomeBase) { return NativeCall(this, "UStruct.IsChildOf", SomeBase); } + UField* StaticClass() { return NativeCall(this, "UStruct.StaticClass"); } + void LinkChild(UProperty* Property) { NativeCall(this, "UStruct.LinkChild", Property); } + const wchar_t* GetPrefixCPP() { return NativeCall(this, "UStruct.GetPrefixCPP"); } void RegisterDependencies() { NativeCall(this, "UStruct.RegisterDependencies"); } void StaticLink(bool bRelinkExistingProperties) { NativeCall(this, "UStruct.StaticLink", bRelinkExistingProperties); } void FinishDestroy() { NativeCall(this, "UStruct.FinishDestroy"); } - void SetSuperStruct(UStruct * NewSuperStruct) { NativeCall(this, "UStruct.SetSuperStruct", NewSuperStruct); } + void SetSuperStruct(UStruct* NewSuperStruct) { NativeCall(this, "UStruct.SetSuperStruct", NewSuperStruct); } void TagSubobjects(EObjectFlags NewFlags) { NativeCall(this, "UStruct.TagSubobjects", NewFlags); } }; +struct UScriptStruct : UStruct +{ +}; + +struct UFunction : UStruct +{ + unsigned int FunctionFlags; + unsigned __int16 RepOffset; + char NumParms; + unsigned __int16 ParmsSize; + unsigned __int16 ReturnValueOffset; + unsigned __int16 RPCId; + unsigned __int16 RPCResponseId; + UProperty* FirstPropertyToInit; +}; + +struct FNativeFunctionLookup +{ + FName Name; + void(__fastcall* Pointer)(UObject* _this, void*, void* const); +}; + struct UClass : UStruct { unsigned int& ClassFlagsField() { return *GetNativePointerField(this, "UClass.ClassFlags"); } unsigned __int64& ClassCastFlagsField() { return *GetNativePointerField(this, "UClass.ClassCastFlags"); } int& ClassUniqueField() { return *GetNativePointerField(this, "UClass.ClassUnique"); } - UClass * ClassWithinField() { return *GetNativePointerField(this, "UClass.ClassWithin"); } - UObject * ClassGeneratedByField() { return *GetNativePointerField(this, "UClass.ClassGeneratedBy"); } + UClass* ClassWithinField() { return *GetNativePointerField(this, "UClass.ClassWithin"); } + UObject* ClassGeneratedByField() { return *GetNativePointerField(this, "UClass.ClassGeneratedBy"); } bool& bIsGameClassField() { return *GetNativePointerField(this, "UClass.bIsGameClass"); } FName& ClassConfigNameField() { return *GetNativePointerField(this, "UClass.ClassConfigName"); } - TArray NetFieldsField() { return *GetNativePointerField*>(this, "UClass.NetFields"); } - UObject * ClassDefaultObjectField() { return *GetNativePointerField(this, "UClass.ClassDefaultObject"); } + TArray NetFieldsField() { return *GetNativePointerField*>(this, "UClass.NetFields"); } + UObject* ClassDefaultObjectField() { return *GetNativePointerField(this, "UClass.ClassDefaultObject"); } bool& bCookedField() { return *GetNativePointerField(this, "UClass.bCooked"); } - //TMap FuncMapField() { return *GetNativePointerField*>(this, "UClass.FuncMap"); } - //TArray& NativeFunctionLookupTableField() { return *GetNativePointerField*>(this, "UClass.NativeFunctionLookupTable"); } + TMap FuncMapField() { return *GetNativePointerField*>(this, "UClass.FuncMap"); } + TArray& NativeFunctionLookupTableField() { return *GetNativePointerField*>(this, "UClass.NativeFunctionLookupTable"); } // Functions - UObject * GetDefaultObject(bool bCreateIfNeeded) { return NativeCall(this, "UClass.GetDefaultObject", bCreateIfNeeded); } - void AddFunctionToFunctionMap(UFunction * NewFunction) { NativeCall(this, "UClass.AddFunctionToFunctionMap", NewFunction); } + UObject* GetDefaultObject(bool bCreateIfNeeded) { return NativeCall(this, "UClass.GetDefaultObject", bCreateIfNeeded); } + void AddFunctionToFunctionMap(UFunction* NewFunction) { NativeCall(this, "UClass.AddFunctionToFunctionMap", NewFunction); } void PostInitProperties() { NativeCall(this, "UClass.PostInitProperties"); } - UObject * GetDefaultSubobjectByName(FName ToFind) { return NativeCall(this, "UClass.GetDefaultSubobjectByName", ToFind); } - void GetDefaultObjectSubobjects(TArray * OutDefaultSubobjects) { NativeCall *>(this, "UClass.GetDefaultObjectSubobjects", OutDefaultSubobjects); } - UObject * CreateDefaultObject() { return NativeCall(this, "UClass.CreateDefaultObject"); } - FName * GetDefaultObjectName(FName * result) { return NativeCall(this, "UClass.GetDefaultObjectName", result); } - void DeferredRegister(UClass * UClassStaticClass, const wchar_t * PackageName, const wchar_t * Name) { NativeCall(this, "UClass.DeferredRegister", UClassStaticClass, PackageName, Name); } - bool Rename(const wchar_t * InName, UObject * NewOuter, unsigned int Flags) { return NativeCall(this, "UClass.Rename", InName, NewOuter, Flags); } + UObject* GetDefaultSubobjectByName(FName ToFind) { return NativeCall(this, "UClass.GetDefaultSubobjectByName", ToFind); } + void GetDefaultObjectSubobjects(TArray* OutDefaultSubobjects) { NativeCall*>(this, "UClass.GetDefaultObjectSubobjects", OutDefaultSubobjects); } + UObject* CreateDefaultObject() { return NativeCall(this, "UClass.CreateDefaultObject"); } + FName* GetDefaultObjectName(FName* result) { return NativeCall(this, "UClass.GetDefaultObjectName", result); } + void DeferredRegister(UClass* UClassStaticClass, const wchar_t* PackageName, const wchar_t* Name) { NativeCall(this, "UClass.DeferredRegister", UClassStaticClass, PackageName, Name); } + bool Rename(const wchar_t* InName, UObject* NewOuter, unsigned int Flags) { return NativeCall(this, "UClass.Rename", InName, NewOuter, Flags); } void TagSubobjects(EObjectFlags NewFlags) { NativeCall(this, "UClass.TagSubobjects", NewFlags); } void Bind() { NativeCall(this, "UClass.Bind"); } - const wchar_t * GetPrefixCPP() { return NativeCall(this, "UClass.GetPrefixCPP"); } - FString * GetDescription(FString * result) { return NativeCall(this, "UClass.GetDescription", result); } + const wchar_t* GetPrefixCPP() { return NativeCall(this, "UClass.GetPrefixCPP"); } + FString* GetDescription(FString* result) { return NativeCall(this, "UClass.GetDescription", result); } void FinishDestroy() { NativeCall(this, "UClass.FinishDestroy"); } void PostLoad() { NativeCall(this, "UClass.PostLoad"); } - void SetSuperStruct(UStruct * NewSuperStruct) { NativeCall(this, "UClass.SetSuperStruct", NewSuperStruct); } - bool ImplementsInterface(UClass * SomeInterface) { return NativeCall(this, "UClass.ImplementsInterface", SomeInterface); } + void SetSuperStruct(UStruct* NewSuperStruct) { NativeCall(this, "UClass.SetSuperStruct", NewSuperStruct); } + bool ImplementsInterface(UClass* SomeInterface) { return NativeCall(this, "UClass.ImplementsInterface", SomeInterface); } void PurgeClass(bool bRecompilingOnLoad) { NativeCall(this, "UClass.PurgeClass", bRecompilingOnLoad); } - bool HasProperty(UProperty * InProperty) { return NativeCall(this, "UClass.HasProperty", InProperty); } - UFunction * FindFunctionByName(FName InName, EIncludeSuperFlag::Type IncludeSuper) { return NativeCall(this, "UClass.FindFunctionByName", InName, IncludeSuper); } - FString * GetConfigName(FString * result) { return NativeCall(this, "UClass.GetConfigName", result); } - unsigned int EmitStructArrayBegin(int Offset, FName * DebugName, int Stride) { return NativeCall(this, "UClass.EmitStructArrayBegin", Offset, DebugName, Stride); } + bool HasProperty(UProperty* InProperty) { return NativeCall(this, "UClass.HasProperty", InProperty); } + UFunction* FindFunctionByName(FName InName, EIncludeSuperFlag::Type IncludeSuper) { return NativeCall(this, "UClass.FindFunctionByName", InName, IncludeSuper); } + FString* GetConfigName(FString* result) { return NativeCall(this, "UClass.GetConfigName", result); } + unsigned int EmitStructArrayBegin(int Offset, FName* DebugName, int Stride) { return NativeCall(this, "UClass.EmitStructArrayBegin", Offset, DebugName, Stride); } void AssembleReferenceTokenStream() { NativeCall(this, "UClass.AssembleReferenceTokenStream"); } }; @@ -352,14 +455,14 @@ struct UBlueprintCore : UObject struct UBlueprint : UBlueprintCore { TSubclassOf& ParentClassField() { return *GetNativePointerField*>(this, "UBlueprint.ParentClass"); } - UObject * PRIVATE_InnermostPreviousCDOField() { return *GetNativePointerField(this, "UBlueprint.PRIVATE_InnermostPreviousCDO"); } - TArray ComponentTemplatesField() { return *GetNativePointerField*>(this, "UBlueprint.ComponentTemplates"); } + UObject* PRIVATE_InnermostPreviousCDOField() { return *GetNativePointerField(this, "UBlueprint.PRIVATE_InnermostPreviousCDO"); } + TArray ComponentTemplatesField() { return *GetNativePointerField*>(this, "UBlueprint.ComponentTemplates"); } TEnumAsByte& BlueprintTypeField() { return *GetNativePointerField*>(this, "UBlueprint.BlueprintType"); } int& BlueprintSystemVersionField() { return *GetNativePointerField(this, "UBlueprint.BlueprintSystemVersion"); } // Functions - FString * GetDesc(FString * result) { return NativeCall(this, "UBlueprint.GetDesc", result); } + FString* GetDesc(FString* result) { return NativeCall(this, "UBlueprint.GetDesc", result); } bool NeedsLoadForClient() { return NativeCall(this, "UBlueprint.NeedsLoadForClient"); } bool NeedsLoadForServer() { return NativeCall(this, "UBlueprint.NeedsLoadForServer"); } void TagSubobjects(EObjectFlags NewFlags) { NativeCall(this, "UBlueprint.TagSubobjects", NewFlags); } @@ -373,33 +476,53 @@ struct UProperty : UField unsigned __int16& RepIndexField() { return *GetNativePointerField(this, "UProperty.RepIndex"); } FName& RepNotifyFuncField() { return *GetNativePointerField(this, "UProperty.RepNotifyFunc"); } int& Offset_InternalField() { return *GetNativePointerField(this, "UProperty.Offset_Internal"); } - UProperty * PropertyLinkNextField() { return *GetNativePointerField(this, "UProperty.PropertyLinkNext"); } - UProperty * NextRefField() { return *GetNativePointerField(this, "UProperty.NextRef"); } - UProperty * DestructorLinkNextField() { return *GetNativePointerField(this, "UProperty.DestructorLinkNext"); } - UProperty * PostConstructLinkNextField() { return *GetNativePointerField(this, "UProperty.PostConstructLinkNext"); } + UProperty* PropertyLinkNextField() { return *GetNativePointerField(this, "UProperty.PropertyLinkNext"); } + UProperty* NextRefField() { return *GetNativePointerField(this, "UProperty.NextRef"); } + UProperty* DestructorLinkNextField() { return *GetNativePointerField(this, "UProperty.DestructorLinkNext"); } + UProperty* PostConstructLinkNextField() { return *GetNativePointerField(this, "UProperty.PostConstructLinkNext"); } // Functions - bool Identical(const void * A, const void * B, unsigned int PortFlags) { return NativeCall(this, "UProperty.Identical", A, B, PortFlags); } - void ExportTextItem(FString * ValueStr, const void * PropertyValue, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) { NativeCall(this, "UProperty.ExportTextItem", ValueStr, PropertyValue, DefaultValue, Parent, PortFlags, ExportRootScope); } - void CopySingleValueFromScriptVM(void * Dest, const void * Src) { NativeCall(this, "UProperty.CopySingleValueFromScriptVM", Dest, Src); } - void CopyCompleteValueFromScriptVM(void * Dest, const void * Src) { NativeCall(this, "UProperty.CopyCompleteValueFromScriptVM", Dest, Src); } - FString * GetCPPType(FString * result, FString * ExtendedTypeText, unsigned int CPPExportFlags) { return NativeCall(this, "UProperty.GetCPPType", result, ExtendedTypeText, CPPExportFlags); } - bool Identical_InContainer(const void * A, const void * B, int ArrayIndex, unsigned int PortFlags) { return NativeCall(this, "UProperty.Identical_InContainer", A, B, ArrayIndex, PortFlags); } + bool Identical(const void* A, const void* B, unsigned int PortFlags) { return NativeCall(this, "UProperty.Identical", A, B, PortFlags); } + void ExportTextItem(FString* ValueStr, const void* PropertyValue, const void* DefaultValue, UObject* Parent, int PortFlags, UObject* ExportRootScope) { NativeCall(this, "UProperty.ExportTextItem", ValueStr, PropertyValue, DefaultValue, Parent, PortFlags, ExportRootScope); } + void CopySingleValueFromScriptVM(void* Dest, const void* Src) { NativeCall(this, "UProperty.CopySingleValueFromScriptVM", Dest, Src); } + void CopyCompleteValueFromScriptVM(void* Dest, const void* Src) { NativeCall(this, "UProperty.CopyCompleteValueFromScriptVM", Dest, Src); } + FString* GetCPPType(FString* result, FString* ExtendedTypeText, unsigned int CPPExportFlags) { return NativeCall(this, "UProperty.GetCPPType", result, ExtendedTypeText, CPPExportFlags); } + bool Identical_InContainer(const void* A, const void* B, int ArrayIndex, unsigned int PortFlags) { return NativeCall(this, "UProperty.Identical_InContainer", A, B, ArrayIndex, PortFlags); } bool ShouldDuplicateValue() { return NativeCall(this, "UProperty.ShouldDuplicateValue"); } - FString * GetCPPMacroType(FString * result, FString * ExtendedTypeText) { return NativeCall(this, "UProperty.GetCPPMacroType", result, ExtendedTypeText); } - bool ExportText_Direct(FString * ValueStr, const void * Data, const void * Delta, UObject * Parent, int PortFlags, UObject * ExportRootScope) { return NativeCall(this, "UProperty.ExportText_Direct", ValueStr, Data, Delta, Parent, PortFlags, ExportRootScope); } + FString* GetCPPMacroType(FString* result, FString* ExtendedTypeText) { return NativeCall(this, "UProperty.GetCPPMacroType", result, ExtendedTypeText); } + bool ExportText_Direct(FString* ValueStr, const void* Data, const void* Delta, UObject* Parent, int PortFlags, UObject* ExportRootScope) { return NativeCall(this, "UProperty.ExportText_Direct", ValueStr, Data, Delta, Parent, PortFlags, ExportRootScope); } bool IsLocalized() { return NativeCall(this, "UProperty.IsLocalized"); } bool ShouldPort(unsigned int PortFlags) { return NativeCall(this, "UProperty.ShouldPort", PortFlags); } - FName * GetID(FName * result) { return NativeCall(this, "UProperty.GetID", result); } - bool SameType(UProperty * Other) { return NativeCall(this, "UProperty.SameType", Other); } + FName* GetID(FName* result) { return NativeCall(this, "UProperty.GetID", result); } + bool SameType(UProperty* Other) { return NativeCall(this, "UProperty.SameType", Other); } + + template + T Get(UObject* object) + { + if (!object->StaticClass()->HasProperty(this)) + throw std::invalid_argument("Object does not contain this property."); + if (sizeof(T) != this->ElementSizeField()) + throw std::invalid_argument("Expected size does not match property size."); + return *((T*)(object + this->Offset_InternalField())); + } + + template + void Set(UObject* object, T value) + { + if (!object->StaticClass()->HasProperty(this)) + throw std::invalid_argument("Object does not contain this property."); + if (sizeof(T) != this->ElementSizeField()) + throw std::invalid_argument("Expected size does not match property size."); + *((T*)(object + this->Offset_InternalField())) = value; + } }; struct UNumericProperty : UProperty { - __int64 GetSignedIntPropertyValue(void const* Data) { return NativeCall<__int64, void const *>(this, "UNumericProperty.GetSignedIntPropertyValue", Data); } - double GetFloatingPointPropertyValue(void const* Data) { return NativeCall(this, "UNumericProperty.GetFloatingPointPropertyValue", Data); } - unsigned __int64 GetUnsignedIntPropertyValue(void const* Data) { return NativeCall(this, "UNumericProperty.GetUnsignedIntPropertyValue", Data); } + __int64 GetSignedIntPropertyValue(void const* Data) { return NativeCall<__int64, void const*>(this, "UNumericProperty.GetSignedIntPropertyValue", Data); } + double GetFloatingPointPropertyValue(void const* Data) { return NativeCall(this, "UNumericProperty.GetFloatingPointPropertyValue", Data); } + unsigned __int64 GetUnsignedIntPropertyValue(void const* Data) { return NativeCall(this, "UNumericProperty.GetUnsignedIntPropertyValue", Data); } }; struct UBoolProperty : UProperty @@ -411,15 +534,15 @@ struct UBoolProperty : UProperty // Functions - static void * operator new(const unsigned __int64 InSize, UObject * InOuter, FName InName, EObjectFlags InSetFlags) { return NativeCall(nullptr, "UBoolProperty.operator new", InSize, InOuter, InName, InSetFlags); } + static void* operator new(const unsigned __int64 InSize, UObject* InOuter, FName InName, EObjectFlags InSetFlags) { return NativeCall(nullptr, "UBoolProperty.operator new", InSize, InOuter, InName, InSetFlags); } void SetBoolSize(const unsigned int InSize, const bool bIsNativeBool, const unsigned int InBitMask) { NativeCall(this, "UBoolProperty.SetBoolSize", InSize, bIsNativeBool, InBitMask); } int GetMinAlignment() { return NativeCall(this, "UBoolProperty.GetMinAlignment"); } - FString * GetCPPType(FString * result, FString * ExtendedTypeText, unsigned int CPPExportFlags) { return NativeCall(this, "UBoolProperty.GetCPPType", result, ExtendedTypeText, CPPExportFlags); } - FString * GetCPPMacroType(FString * result, FString * ExtendedTypeText) { return NativeCall(this, "UBoolProperty.GetCPPMacroType", result, ExtendedTypeText); } - void ExportTextItem(FString * ValueStr, const void * PropertyValue, const void * DefaultValue, UObject * Parent, int PortFlags, UObject * ExportRootScope) { NativeCall(this, "UBoolProperty.ExportTextItem", ValueStr, PropertyValue, DefaultValue, Parent, PortFlags, ExportRootScope); } - bool Identical(const void * A, const void * B, unsigned int PortFlags) { return NativeCall(this, "UBoolProperty.Identical", A, B, PortFlags); } - void CopyValuesInternal(void * Dest, const void * Src, int Count) { NativeCall(this, "UBoolProperty.CopyValuesInternal", Dest, Src, Count); } - void ClearValueInternal(void * Data) { NativeCall(this, "UBoolProperty.ClearValueInternal", Data); } + FString* GetCPPType(FString* result, FString* ExtendedTypeText, unsigned int CPPExportFlags) { return NativeCall(this, "UBoolProperty.GetCPPType", result, ExtendedTypeText, CPPExportFlags); } + FString* GetCPPMacroType(FString* result, FString* ExtendedTypeText) { return NativeCall(this, "UBoolProperty.GetCPPMacroType", result, ExtendedTypeText); } + void ExportTextItem(FString* ValueStr, const void* PropertyValue, const void* DefaultValue, UObject* Parent, int PortFlags, UObject* ExportRootScope) { NativeCall(this, "UBoolProperty.ExportTextItem", ValueStr, PropertyValue, DefaultValue, Parent, PortFlags, ExportRootScope); } + bool Identical(const void* A, const void* B, unsigned int PortFlags) { return NativeCall(this, "UBoolProperty.Identical", A, B, PortFlags); } + void CopyValuesInternal(void* Dest, const void* Src, int Count) { NativeCall(this, "UBoolProperty.CopyValuesInternal", Dest, Src, Count); } + void ClearValueInternal(void* Data) { NativeCall(this, "UBoolProperty.ClearValueInternal", Data); } }; //not using this right now so leave empty @@ -435,10 +558,17 @@ struct FObjectInstancingGraph struct Globals { + //void __fastcall GetObjectsOfClass(UClass *ClassToLookFor, TArray *Results, bool bIncludeDerivedClasses, EObjectFlags ExclusionFlags) + static void GetObjectsOfClass(UClass* ClassToLookFor, TArray* Results, bool bIncludeDerivedClasses, EObjectFlags ExclusionFlags) + { + NativeCall*, bool, EObjectFlags >( + nullptr, "Global.GetObjectsOfClass", ClassToLookFor, Results, bIncludeDerivedClasses, ExclusionFlags); + } + static UObject* StaticLoadObject(UClass* ObjectClass, UObject* InOuter, const wchar_t* InName, const wchar_t* Filename, unsigned int LoadFlags, DWORD64 Sandbox, bool bAllowObjectReconciliation) { - return NativeCall( + return NativeCall( nullptr, "Global.StaticLoadObject", ObjectClass, InOuter, InName, Filename, LoadFlags, Sandbox, bAllowObjectReconciliation); } @@ -454,13 +584,14 @@ struct Globals } //UObject *__fastcall StaticFindObjectFastInternal(UClass *ObjectClass, UObject *ObjectPackage, FName ObjectName, bool bExactClass, bool bAnyPackage, EObjectFlags ExcludeFlags) - template static void GetPrivateStaticClassBody(const wchar_t* PackageName, const wchar_t* Name, T** ReturnClass, - void(__cdecl *RegisterNativeFunc)()); + void(__cdecl* RegisterNativeFunc)()); /*template <> - static void GetPrivateStaticClassBody(const wchar_t *PackageName, const wchar_t *Name, UClass **ReturnClass, void(__cdecl *RegisterNativeFunc)()) { return NativeCall(nullptr, "Global.GetPrivateStaticClassBody", PackageName, Name, ReturnClass, RegisterNativeFunc); }*/ + static void GetPrivateStaticClassBody(const wchar_t *PackageName, const wchar_t *Name, UClass **ReturnClass, void(__cdecl *RegisterNativeFunc)()) { + return NativeCall(nullptr, "Global.GetPrivateStaticClassBody", PackageName, Name, ReturnClass, RegisterNativeFunc); + }*/ //void __fastcall GetPrivateStaticClassBody(const wchar_t *PackageName, const wchar_t *Name, UClass **ReturnClass, void(__cdecl *RegisterNativeFunc)()) @@ -479,14 +610,34 @@ struct Globals return _class != nullptr && (_class->ClassCastFlagsField() & flags_value) == flags_value; } - static DataValue GEngine() { return { "Global.GEngine" }; } + static DataValue GEngine() { return { "Global.GEngine" }; } + + static DataValue GUObjectArray() { return { "Global.GUObjectArray" }; } + + static FORCEINLINE UClass* FindClass(const std::string& name) + { + for (auto i = 0; i < Globals::GUObjectArray()().ObjObjects.NumElements; i++) + { + auto obj = Globals::GUObjectArray()().ObjObjects.GetObjectPtr(i)->Object; + if (obj != nullptr) + { + FString full_name; + obj->GetFullName(&full_name, nullptr); + if (name == full_name.ToString()) + { + return (UClass*)obj; + } + } + } + return nullptr; + } }; template <> inline void Globals::GetPrivateStaticClassBody(const wchar_t* PackageName, const wchar_t* Name, - UClass** ReturnClass, void(__cdecl *RegisterNativeFunc)()) + UClass** ReturnClass, void(__cdecl* RegisterNativeFunc)()) { - return NativeCall( + return NativeCall( nullptr, "Global.GetPrivateStaticClassBody", PackageName, Name, ReturnClass, RegisterNativeFunc); } @@ -505,7 +656,7 @@ struct FAssetData bool IsUAsset() { return NativeCall(this, "FAssetData.IsUAsset"); } void PrintAssetData() { NativeCall(this, "FAssetData.PrintAssetData"); } - UObject * GetAsset() { return NativeCall(this, "FAssetData.GetAsset"); } + UObject* GetAsset() { return NativeCall(this, "FAssetData.GetAsset"); } }; struct IModuleInterface @@ -518,23 +669,23 @@ struct IAssetRegistryInterface : IModuleInterface struct FAssetRegistryModule : IAssetRegistryInterface { - FAssetRegistry* Get() { return NativeCall(this, "FAssetRegistryModule.Get"); } + FAssetRegistry* Get() { return NativeCall(this, "FAssetRegistryModule.Get"); } }; struct FModuleManager { - static FModuleManager * Get() { return NativeCall(nullptr, "FModuleManager.Get"); } - void FindModules(const wchar_t * WildcardWithoutExtension, TArray * OutModules) { NativeCall *>(this, "FModuleManager.FindModules", WildcardWithoutExtension, OutModules); } + static FModuleManager* Get() { return NativeCall(nullptr, "FModuleManager.Get"); } + void FindModules(const wchar_t* WildcardWithoutExtension, TArray* OutModules) { NativeCall*>(this, "FModuleManager.FindModules", WildcardWithoutExtension, OutModules); } bool IsModuleLoaded(FName InModuleName) { return NativeCall(this, "FModuleManager.IsModuleLoaded", InModuleName); } bool IsModuleUpToDate(FName InModuleName) { return NativeCall(this, "FModuleManager.IsModuleUpToDate", InModuleName); } void AddModule(FName InModuleName) { NativeCall(this, "FModuleManager.AddModule", InModuleName); } - TSharedPtr * LoadModule(TSharedPtr * result, FName InModuleName, const bool bWasReloaded) { return NativeCall *, TSharedPtr *, FName, const bool>(this, "FModuleManager.LoadModule", result, InModuleName, bWasReloaded); } + TSharedPtr* LoadModule(TSharedPtr* result, FName InModuleName, const bool bWasReloaded) { return NativeCall*, TSharedPtr*, FName, const bool>(this, "FModuleManager.LoadModule", result, InModuleName, bWasReloaded); } bool UnloadModule(FName InModuleName, bool bIsShutdown) { return NativeCall(this, "FModuleManager.UnloadModule", InModuleName, bIsShutdown); } void UnloadModulesAtShutdown() { NativeCall(this, "FModuleManager.UnloadModulesAtShutdown"); } - TSharedPtr * GetModule(TSharedPtr * result, FName InModuleName) { return NativeCall *, TSharedPtr *, FName>(this, "FModuleManager.GetModule", result, InModuleName); } - static FString * GetCleanModuleFilename(FString * result, FName ModuleName, bool bGameModule) { return NativeCall(nullptr, "FModuleManager.GetCleanModuleFilename", result, ModuleName, bGameModule); } - static void GetModuleFilenameFormat(bool bGameModule, FString * OutPrefix, FString * OutSuffix) { NativeCall(nullptr, "FModuleManager.GetModuleFilenameFormat", bGameModule, OutPrefix, OutSuffix); } - void AddBinariesDirectory(const wchar_t * InDirectory, bool bIsGameDirectory) { NativeCall(this, "FModuleManager.AddBinariesDirectory", InDirectory, bIsGameDirectory); } + TSharedPtr* GetModule(TSharedPtr* result, FName InModuleName) { return NativeCall*, TSharedPtr*, FName>(this, "FModuleManager.GetModule", result, InModuleName); } + static FString* GetCleanModuleFilename(FString* result, FName ModuleName, bool bGameModule) { return NativeCall(nullptr, "FModuleManager.GetCleanModuleFilename", result, ModuleName, bGameModule); } + static void GetModuleFilenameFormat(bool bGameModule, FString* OutPrefix, FString* OutSuffix) { NativeCall(nullptr, "FModuleManager.GetModuleFilenameFormat", bGameModule, OutPrefix, OutSuffix); } + void AddBinariesDirectory(const wchar_t* InDirectory, bool bIsGameDirectory) { NativeCall(this, "FModuleManager.AddBinariesDirectory", InDirectory, bIsGameDirectory); } void FModuleInfo() { NativeCall(this, "FModuleManager.FModuleInfo"); } }; @@ -542,47 +693,78 @@ struct FAssetRegistry { void CollectCodeGeneratorClasses() { NativeCall(this, "FAssetRegistry.CollectCodeGeneratorClasses"); } void SearchAllAssets(bool bSynchronousSearch) { NativeCall(this, "FAssetRegistry.SearchAllAssets", bSynchronousSearch); } - bool GetAssetsByPackageName(FName PackageName, TArray * OutAssetData) { return NativeCall *>(this, "FAssetRegistry.GetAssetsByPackageName", PackageName, OutAssetData); } - bool GetAssetsByPath(FName PackagePath, TArray * OutAssetData, bool bRecursive) { return NativeCall *, bool>(this, "FAssetRegistry.GetAssetsByPath", PackagePath, OutAssetData, bRecursive); } - bool GetAssetsByClass(FName ClassName, TArray * OutAssetData, bool bSearchSubClasses) { return NativeCall *, bool>(this, "FAssetRegistry.GetAssetsByClass", ClassName, OutAssetData, bSearchSubClasses); } + bool GetAssetsByPackageName(FName PackageName, TArray* OutAssetData) { return NativeCall*>(this, "FAssetRegistry.GetAssetsByPackageName", PackageName, OutAssetData); } + bool GetAssetsByPath(FName PackagePath, TArray* OutAssetData, bool bRecursive) { return NativeCall*, bool>(this, "FAssetRegistry.GetAssetsByPath", PackagePath, OutAssetData, bRecursive); } + bool GetAssetsByClass(FName ClassName, TArray* OutAssetData, bool bSearchSubClasses) { return NativeCall*, bool>(this, "FAssetRegistry.GetAssetsByClass", ClassName, OutAssetData, bSearchSubClasses); } //bool GetAssetsByTagValues(TMultiMap > * AssetTagsAndValues, TArray * OutAssetData) { return NativeCall > *, TArray *>(this, "FAssetRegistry.GetAssetsByTagValues", AssetTagsAndValues, OutAssetData); } //bool GetAssets(FARFilter * Filter, TArray * OutAssetData) { return NativeCall *>(this, "FAssetRegistry.GetAssets", Filter, OutAssetData); } - FAssetData * GetAssetByObjectPath(FAssetData * result, FName ObjectPath) { return NativeCall(this, "FAssetRegistry.GetAssetByObjectPath", result, ObjectPath); } - bool GetAllAssets(TArray * OutAssetData) { return NativeCall *>(this, "FAssetRegistry.GetAllAssets", OutAssetData); } - bool GetDependencies(FName PackageName, TArray * OutDependencies) { return NativeCall *>(this, "FAssetRegistry.GetDependencies", PackageName, OutDependencies); } - bool GetReferencers(FName PackageName, TArray * OutReferencers) { return NativeCall *>(this, "FAssetRegistry.GetReferencers", PackageName, OutReferencers); } - bool GetAncestorClassNames(FName ClassName, TArray * OutAncestorClassNames) { return NativeCall *>(this, "FAssetRegistry.GetAncestorClassNames", ClassName, OutAncestorClassNames); } - void GetAllCachedPaths(TArray * OutPathList) { NativeCall *>(this, "FAssetRegistry.GetAllCachedPaths", OutPathList); } - void GetSubPaths(FString * InBasePath, TArray * OutPathList, bool bInRecurse) { NativeCall *, bool>(this, "FAssetRegistry.GetSubPaths", InBasePath, OutPathList, bInRecurse); } - EAssetAvailability::Type GetAssetAvailability(FAssetData * AssetData) { return NativeCall(this, "FAssetRegistry.GetAssetAvailability", AssetData); } - float GetAssetAvailabilityProgress(FAssetData * AssetData, EAssetAvailabilityProgressReportingType::Type ReportType) { return NativeCall(this, "FAssetRegistry.GetAssetAvailabilityProgress", AssetData, ReportType); } + FAssetData* GetAssetByObjectPath(FAssetData* result, FName ObjectPath) { return NativeCall(this, "FAssetRegistry.GetAssetByObjectPath", result, ObjectPath); } + bool GetAllAssets(TArray* OutAssetData) { return NativeCall*>(this, "FAssetRegistry.GetAllAssets", OutAssetData); } + bool GetDependencies(FName PackageName, TArray* OutDependencies) { return NativeCall*>(this, "FAssetRegistry.GetDependencies", PackageName, OutDependencies); } + bool GetReferencers(FName PackageName, TArray* OutReferencers) { return NativeCall*>(this, "FAssetRegistry.GetReferencers", PackageName, OutReferencers); } + bool GetAncestorClassNames(FName ClassName, TArray* OutAncestorClassNames) { return NativeCall*>(this, "FAssetRegistry.GetAncestorClassNames", ClassName, OutAncestorClassNames); } + void GetAllCachedPaths(TArray* OutPathList) { NativeCall*>(this, "FAssetRegistry.GetAllCachedPaths", OutPathList); } + void GetSubPaths(FString* InBasePath, TArray* OutPathList, bool bInRecurse) { NativeCall*, bool>(this, "FAssetRegistry.GetSubPaths", InBasePath, OutPathList, bInRecurse); } + EAssetAvailability::Type GetAssetAvailability(FAssetData* AssetData) { return NativeCall(this, "FAssetRegistry.GetAssetAvailability", AssetData); } + float GetAssetAvailabilityProgress(FAssetData* AssetData, EAssetAvailabilityProgressReportingType::Type ReportType) { return NativeCall(this, "FAssetRegistry.GetAssetAvailabilityProgress", AssetData, ReportType); } bool GetAssetAvailabilityProgressTypeSupported(EAssetAvailabilityProgressReportingType::Type ReportType) { return NativeCall(this, "FAssetRegistry.GetAssetAvailabilityProgressTypeSupported", ReportType); } - void PrioritizeAssetInstall(FAssetData * AssetData) { NativeCall(this, "FAssetRegistry.PrioritizeAssetInstall", AssetData); } - bool AddPath(FString * PathToAdd) { return NativeCall(this, "FAssetRegistry.AddPath", PathToAdd); } - bool RemovePath(FString * PathToRemove) { return NativeCall(this, "FAssetRegistry.RemovePath", PathToRemove); } - void ScanPathsSynchronous(TArray * InPaths, bool bForceRescan) { NativeCall *, bool>(this, "FAssetRegistry.ScanPathsSynchronous", InPaths, bForceRescan); } - void PrioritizeSearchPath(FString * PathToPrioritize) { NativeCall(this, "FAssetRegistry.PrioritizeSearchPath", PathToPrioritize); } - void AssetCreated(UObject * NewAsset) { NativeCall(this, "FAssetRegistry.AssetCreated", NewAsset); } - void AssetDeleted(UObject * DeletedAsset) { NativeCall(this, "FAssetRegistry.AssetDeleted", DeletedAsset); } - void AssetRenamed(UObject * RenamedAsset, FString * OldObjectPath) { NativeCall(this, "FAssetRegistry.AssetRenamed", RenamedAsset, OldObjectPath); } + void PrioritizeAssetInstall(FAssetData* AssetData) { NativeCall(this, "FAssetRegistry.PrioritizeAssetInstall", AssetData); } + bool AddPath(FString* PathToAdd) { return NativeCall(this, "FAssetRegistry.AddPath", PathToAdd); } + bool RemovePath(FString* PathToRemove) { return NativeCall(this, "FAssetRegistry.RemovePath", PathToRemove); } + void ScanPathsSynchronous(TArray* InPaths, bool bForceRescan) { NativeCall*, bool>(this, "FAssetRegistry.ScanPathsSynchronous", InPaths, bForceRescan); } + void PrioritizeSearchPath(FString* PathToPrioritize) { NativeCall(this, "FAssetRegistry.PrioritizeSearchPath", PathToPrioritize); } + void AssetCreated(UObject* NewAsset) { NativeCall(this, "FAssetRegistry.AssetCreated", NewAsset); } + void AssetDeleted(UObject* DeletedAsset) { NativeCall(this, "FAssetRegistry.AssetDeleted", DeletedAsset); } + void AssetRenamed(UObject* RenamedAsset, FString* OldObjectPath) { NativeCall(this, "FAssetRegistry.AssetRenamed", RenamedAsset, OldObjectPath); } bool IsLoadingAssets() { return NativeCall(this, "FAssetRegistry.IsLoadingAssets"); } void Tick(float DeltaTime) { NativeCall(this, "FAssetRegistry.Tick", DeltaTime); } static bool IsUsingWorldAssets() { return NativeCall(nullptr, "FAssetRegistry.IsUsingWorldAssets"); } - void ScanPathsSynchronous_Internal(TArray * InPaths, bool bForceRescan, bool bUseCache) { NativeCall *, bool, bool>(this, "FAssetRegistry.ScanPathsSynchronous_Internal", InPaths, bForceRescan, bUseCache); } - void PathDataGathered(const long double TickStartTime, TArray * PathResults) { NativeCall *>(this, "FAssetRegistry.PathDataGathered", TickStartTime, PathResults); } + void ScanPathsSynchronous_Internal(TArray* InPaths, bool bForceRescan, bool bUseCache) { NativeCall*, bool, bool>(this, "FAssetRegistry.ScanPathsSynchronous_Internal", InPaths, bForceRescan, bUseCache); } + void PathDataGathered(const long double TickStartTime, TArray* PathResults) { NativeCall*>(this, "FAssetRegistry.PathDataGathered", TickStartTime, PathResults); } bool RemoveDependsNode(FName PackageName) { return NativeCall(this, "FAssetRegistry.RemoveDependsNode", PackageName); } - bool RemoveAssetPath(FString * PathToRemove, bool bEvenIfAssetsStillExist) { return NativeCall(this, "FAssetRegistry.RemoveAssetPath", PathToRemove, bEvenIfAssetsStillExist); } - FString * ExportTextPathToObjectName(FString * result, FString * InExportTextPath) { return NativeCall(this, "FAssetRegistry.ExportTextPathToObjectName", result, InExportTextPath); } - void AddAssetData(FAssetData * AssetData) { NativeCall(this, "FAssetRegistry.AddAssetData", AssetData); } - bool RemoveAssetData(FAssetData * AssetData) { return NativeCall(this, "FAssetRegistry.RemoveAssetData", AssetData); } - void OnContentPathMounted(FString * InAssetPath, FString * FileSystemPath) { NativeCall(this, "FAssetRegistry.OnContentPathMounted", InAssetPath, FileSystemPath); } - void OnContentPathDismounted(FString * InAssetPath, FString * FileSystemPath) { NativeCall(this, "FAssetRegistry.OnContentPathDismounted", InAssetPath, FileSystemPath); } + bool RemoveAssetPath(FString* PathToRemove, bool bEvenIfAssetsStillExist) { return NativeCall(this, "FAssetRegistry.RemoveAssetPath", PathToRemove, bEvenIfAssetsStillExist); } + FString* ExportTextPathToObjectName(FString* result, FString* InExportTextPath) { return NativeCall(this, "FAssetRegistry.ExportTextPathToObjectName", result, InExportTextPath); } + void AddAssetData(FAssetData* AssetData) { NativeCall(this, "FAssetRegistry.AddAssetData", AssetData); } + bool RemoveAssetData(FAssetData* AssetData) { return NativeCall(this, "FAssetRegistry.RemoveAssetData", AssetData); } + void OnContentPathMounted(FString* InAssetPath, FString* FileSystemPath) { NativeCall(this, "FAssetRegistry.OnContentPathMounted", InAssetPath, FileSystemPath); } + void OnContentPathDismounted(FString* InAssetPath, FString* FileSystemPath) { NativeCall(this, "FAssetRegistry.OnContentPathDismounted", InAssetPath, FileSystemPath); } //static void GetAssets(FAssetData ** First, const int Num, TDereferenceWrapper * Predicate) { NativeCall *>(nullptr, "FAssetRegistry.GetAssets", First, Num, Predicate); } }; -struct UTexture2D +enum EResourceSizeMode +{ + Exclusive = 0x0, + Inclusive = 0x1, + Open = 0x2, +}; + +struct FRenderResource { - static UClass* StaticClass() { return NativeCall(nullptr, "UTexture2D.StaticClass"); } +}; + +struct FTexture : FRenderResource +{ +}; + +struct FTextureResource : FTexture +{ +}; + +struct UTexture : UObject +{ + static UClass* StaticClass() { return NativeCall(nullptr, "UTexture.StaticClass"); } +}; + +struct UTexture2D : UTexture +{ + static UClass* StaticClass() { return NativeCall(nullptr, "UTexture2D.StaticClass"); } + void GetMipData(int FirstMipToLoad, void** OutMipData) { return NativeCall(this, "UTexture2D.GetMipData", FirstMipToLoad, OutMipData); } + void UpdateResourceW() { return NativeCall(this, "UTexture2D.UpdateResourceW"); } + FTextureResource* CreateResource() { return NativeCall(this, "UTexture2D.CreateResource"); } + __int64 GetResourceSize(EResourceSizeMode type) { return NativeCall<__int64, EResourceSizeMode>(this, "UTexture2D.GetResourceSize", type); } + float GetSurfaceHeight() { return NativeCall(this, "UTexture2D.GetSurfaceHeight"); } + int& SizeX_DEPRECATED() { return *GetNativePointerField(this, "UTexture2D.SizeX_DEPRECATED"); } + int& SizeY_DEPRECATED() { return *GetNativePointerField(this, "UTexture2D.SizeY_DEPRECATED"); } }; struct FNavigationFilterFlags @@ -617,7 +799,6 @@ struct UNavigationQueryFilter : UObject FNavigationFilterFlags ExcludeFlags; }; - struct FCollisionQueryParams { FName TraceTag; @@ -643,13 +824,20 @@ struct FCollisionResponseParams struct FCollisionObjectQueryParams { int ObjectTypesToQuery; + + enum InitType + { + AllObjects = 0x0, + AllStaticObjects = 0x1, + AllDynamicObjects = 0x2, + }; }; struct FHttpRequestWinInet; struct FHttpResponseWinInet { - FHttpRequestWinInet * RequestField() { return *GetNativePointerField(this, "FHttpResponseWinInet.Request"); } + FHttpRequestWinInet* RequestField() { return *GetNativePointerField(this, "FHttpResponseWinInet.Request"); } int& AsyncBytesReadField() { return *GetNativePointerField(this, "FHttpResponseWinInet.AsyncBytesRead"); } int& TotalBytesReadField() { return *GetNativePointerField(this, "FHttpResponseWinInet.TotalBytesRead"); } TMap >& ResponseHeadersField() { return *GetNativePointerField >*>(this, "FHttpResponseWinInet.ResponseHeaders"); } @@ -663,18 +851,18 @@ struct FHttpResponseWinInet // Functions ~FHttpResponseWinInet() { NativeCall(this, "FHttpResponseWinInet.~FHttpResponseWinInet"); } - FString * GetURL(FString * result) { return NativeCall(this, "FHttpResponseWinInet.GetURL", result); } - FString * GetContentAsString(FString * result) { return NativeCall(this, "FHttpResponseWinInet.GetContentAsString", result); } - FString * GetURLParameter(FString * result, FString * ParameterName) { return NativeCall(this, "FHttpResponseWinInet.GetURLParameter", result, ParameterName); } - FString * GetHeader(FString * result, FString * HeaderName) { return NativeCall(this, "FHttpResponseWinInet.GetHeader", result, HeaderName); } - TArray * GetAllHeaders(TArray * result) { return NativeCall *, TArray *>(this, "FHttpResponseWinInet.GetAllHeaders", result); } - FString * GetContentType(FString * result) { return NativeCall(this, "FHttpResponseWinInet.GetContentType", result); } + FString* GetURL(FString* result) { return NativeCall(this, "FHttpResponseWinInet.GetURL", result); } + FString* GetContentAsString(FString* result) { return NativeCall(this, "FHttpResponseWinInet.GetContentAsString", result); } + FString* GetURLParameter(FString* result, FString* ParameterName) { return NativeCall(this, "FHttpResponseWinInet.GetURLParameter", result, ParameterName); } + FString* GetHeader(FString* result, FString* HeaderName) { return NativeCall(this, "FHttpResponseWinInet.GetHeader", result, HeaderName); } + TArray* GetAllHeaders(TArray* result) { return NativeCall*, TArray*>(this, "FHttpResponseWinInet.GetAllHeaders", result); } + FString* GetContentType(FString* result) { return NativeCall(this, "FHttpResponseWinInet.GetContentType", result); } int GetContentLength() { return NativeCall(this, "FHttpResponseWinInet.GetContentLength"); } - TArray * GetContent() { return NativeCall *>(this, "FHttpResponseWinInet.GetContent"); } + TArray* GetContent() { return NativeCall*>(this, "FHttpResponseWinInet.GetContent"); } int GetResponseCode() { return NativeCall(this, "FHttpResponseWinInet.GetResponseCode"); } void ProcessResponse() { NativeCall(this, "FHttpResponseWinInet.ProcessResponse"); } void ProcessResponseHeaders() { NativeCall(this, "FHttpResponseWinInet.ProcessResponseHeaders"); } - FString * QueryHeaderString(FString * result, unsigned int HttpQueryInfoLevel, FString * HeaderName) { return NativeCall(this, "FHttpResponseWinInet.QueryHeaderString", result, HttpQueryInfoLevel, HeaderName); } + FString* QueryHeaderString(FString* result, unsigned int HttpQueryInfoLevel, FString* HeaderName) { return NativeCall(this, "FHttpResponseWinInet.QueryHeaderString", result, HttpQueryInfoLevel, HeaderName); } int QueryContentLength() { return NativeCall(this, "FHttpResponseWinInet.QueryContentLength"); } }; @@ -689,8 +877,8 @@ struct FHttpRequestWinInet TArray& RequestPayloadField() { return *GetNativePointerField*>(this, "FHttpRequestWinInet.RequestPayload"); } TSharedPtr& ResponseField() { return *GetNativePointerField*>(this, "FHttpRequestWinInet.Response"); } EHttpRequestStatus::Type& CompletionStatusField() { return *GetNativePointerField(this, "FHttpRequestWinInet.CompletionStatus"); } - void * ConnectionHandleField() { return *GetNativePointerField(this, "FHttpRequestWinInet.ConnectionHandle"); } - void * RequestHandleField() { return *GetNativePointerField(this, "FHttpRequestWinInet.RequestHandle"); } + void* ConnectionHandleField() { return *GetNativePointerField(this, "FHttpRequestWinInet.ConnectionHandle"); } + void* RequestHandleField() { return *GetNativePointerField(this, "FHttpRequestWinInet.RequestHandle"); } volatile int& ElapsedTimeSinceLastServerResponseField() { return *GetNativePointerField(this, "FHttpRequestWinInet.ElapsedTimeSinceLastServerResponse"); } int& ProgressBytesSentField() { return *GetNativePointerField(this, "FHttpRequestWinInet.ProgressBytesSent"); } long double& StartRequestTimeField() { return *GetNativePointerField(this, "FHttpRequestWinInet.StartRequestTime"); } @@ -699,25 +887,25 @@ struct FHttpRequestWinInet // Functions ~FHttpRequestWinInet() { NativeCall(this, "FHttpRequestWinInet.~FHttpRequestWinInet"); } - FString * GetURL(FString * result) { return NativeCall(this, "FHttpRequestWinInet.GetURL", result); } - FString * GetURLParameter(FString * result, FString * ParameterName) { return NativeCall(this, "FHttpRequestWinInet.GetURLParameter", result, ParameterName); } - FString * GetHeader(FString * result, FString * HeaderName) { return NativeCall(this, "FHttpRequestWinInet.GetHeader", result, HeaderName); } - TArray * GetAllHeaders(TArray * result) { return NativeCall *, TArray *>(this, "FHttpRequestWinInet.GetAllHeaders", result); } - FString * GetContentType(FString * result) { return NativeCall(this, "FHttpRequestWinInet.GetContentType", result); } + FString* GetURL(FString* result) { return NativeCall(this, "FHttpRequestWinInet.GetURL", result); } + FString* GetURLParameter(FString* result, FString* ParameterName) { return NativeCall(this, "FHttpRequestWinInet.GetURLParameter", result, ParameterName); } + FString* GetHeader(FString* result, FString* HeaderName) { return NativeCall(this, "FHttpRequestWinInet.GetHeader", result, HeaderName); } + TArray* GetAllHeaders(TArray* result) { return NativeCall*, TArray*>(this, "FHttpRequestWinInet.GetAllHeaders", result); } + FString* GetContentType(FString* result) { return NativeCall(this, "FHttpRequestWinInet.GetContentType", result); } int GetContentLength() { return NativeCall(this, "FHttpRequestWinInet.GetContentLength"); } - FString * GetVerb(FString * result) { return NativeCall(this, "FHttpRequestWinInet.GetVerb", result); } - void SetVerb(FString * Verb) { NativeCall(this, "FHttpRequestWinInet.SetVerb", Verb); } - void SetURL(FString * URL) { NativeCall(this, "FHttpRequestWinInet.SetURL", URL); } - void SetContent(TArray * ContentPayload) { NativeCall *>(this, "FHttpRequestWinInet.SetContent", ContentPayload); } - void SetContentAsString(FString * ContentString) { NativeCall(this, "FHttpRequestWinInet.SetContentAsString", ContentString); } - void SetHeader(FString * HeaderName, FString * HeaderValue) { NativeCall(this, "FHttpRequestWinInet.SetHeader", HeaderName, HeaderValue); } + FString* GetVerb(FString* result) { return NativeCall(this, "FHttpRequestWinInet.GetVerb", result); } + void SetVerb(FString* Verb) { NativeCall(this, "FHttpRequestWinInet.SetVerb", Verb); } + void SetURL(FString* URL) { NativeCall(this, "FHttpRequestWinInet.SetURL", URL); } + void SetContent(TArray* ContentPayload) { NativeCall*>(this, "FHttpRequestWinInet.SetContent", ContentPayload); } + void SetContentAsString(FString* ContentString) { NativeCall(this, "FHttpRequestWinInet.SetContentAsString", ContentString); } + void SetHeader(FString* HeaderName, FString* HeaderValue) { NativeCall(this, "FHttpRequestWinInet.SetHeader", HeaderName, HeaderValue); } bool ProcessRequest() { return NativeCall(this, "FHttpRequestWinInet.ProcessRequest"); } bool StartRequest() { return NativeCall(this, "FHttpRequestWinInet.StartRequest"); } void FinishedRequest() { NativeCall(this, "FHttpRequestWinInet.FinishedRequest"); } - FString * GenerateHeaderBuffer(FString * result, unsigned int ContentLength) { return NativeCall(this, "FHttpRequestWinInet.GenerateHeaderBuffer", result, ContentLength); } + FString* GenerateHeaderBuffer(FString* result, unsigned int ContentLength) { return NativeCall(this, "FHttpRequestWinInet.GenerateHeaderBuffer", result, ContentLength); } void CancelRequest() { NativeCall(this, "FHttpRequestWinInet.CancelRequest"); } EHttpRequestStatus::Type GetStatus() { return NativeCall(this, "FHttpRequestWinInet.GetStatus"); } - TSharedPtr * GetResponse(TSharedPtr * result) { return NativeCall *, TSharedPtr *>(this, "FHttpRequestWinInet.GetResponse", result); } + TSharedPtr* GetResponse(TSharedPtr* result) { return NativeCall*, TSharedPtr*>(this, "FHttpRequestWinInet.GetResponse", result); } void Tick(float DeltaSeconds) { NativeCall(this, "FHttpRequestWinInet.Tick", DeltaSeconds); } }; @@ -740,6 +928,6 @@ struct FHttpModule void StartupModule() { NativeCall(this, "FHttpModule.StartupModule"); } void ShutdownModule() { NativeCall(this, "FHttpModule.ShutdownModule"); } - static FHttpModule * Get() { return NativeCall(nullptr, "FHttpModule.Get"); } - TSharedRef * CreateRequest(TSharedRef * result) { return NativeCall *, TSharedRef *>(this, "FHttpModule.CreateRequest", result); } + static FHttpModule* Get() { return NativeCall(nullptr, "FHttpModule.Get"); } + TSharedRef* CreateRequest(TSharedRef* result) { return NativeCall*, TSharedRef*>(this, "FHttpModule.CreateRequest", result); } }; diff --git a/version/Core/Public/Ark/ArkApiUtils.h b/version/Core/Public/Ark/ArkApiUtils.h new file mode 100644 index 00000000..8ebd16d8 --- /dev/null +++ b/version/Core/Public/Ark/ArkApiUtils.h @@ -0,0 +1,808 @@ +#pragma once + +#include + +#include +#include <../Private/Ark/Globals.h> + +namespace ArkApi +{ + enum class ServerStatus { Loading, Ready }; + + struct MapCoords + { + float x = 0.f; + float y = 0.f; + }; + + class ARK_API IApiUtils + { + public: + virtual ~IApiUtils() = default; + //bool HideCommand = false; + /** + * \brief Returns a pointer to UWorld + */ + virtual UWorld* GetWorld() const = 0; + + /** + * \brief Returns a pointer to AShooterGameMode + */ + virtual AShooterGameMode* GetShooterGameMode() const = 0; + + /** + * \brief Returns the current server status + */ + virtual ServerStatus GetStatus() const = 0; + + /** + * \brief Returns a point to URCON CheatManager + */ + virtual UShooterCheatManager* GetCheatManager() const = 0; + /** + * \brief Sends server message to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param msg_color Message color + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendServerMessage(AShooterPlayerController* player_controller, FLinearColor msg_color, const T* msg, + Args&&... args) + { + if (player_controller) + { + FString text(FString::Format(msg, std::forward(args)...)); + player_controller->ClientServerChatDirectMessage(&text, msg_color, false); + } + } + + /** + * \brief Sends notification (on-screen message) to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param color Message color + * \param display_scale Size of text + * \param display_time Display time + * \param icon Message icon (optional) + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendNotification(AShooterPlayerController* player_controller, FLinearColor color, float display_scale, + float display_time, UTexture2D* icon, const T* msg, Args&&... args) + { + if (player_controller) + { + FString text(FString::Format(msg, std::forward(args)...)); + + player_controller->ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, + nullptr); + } + } + + /** + * \brief Sends chat message to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param sender_name Name of the sender + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendChatMessage(AShooterPlayerController* player_controller, const FString& sender_name, const T* msg, + Args&&... args) + { + if (player_controller) + { + const FString text(FString::Format(msg, std::forward(args)...)); + + FChatMessage chat_message = FChatMessage(); + chat_message.SenderName = sender_name; + chat_message.Message = text; + + player_controller->ClientChatMessage(chat_message); + } + } + + /** + * \brief Sends server message to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param msg_color Message color + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendServerMessageToAll(FLinearColor msg_color, const T* msg, + Args&&... args) + { + FString text(FString::Format(msg, std::forward(args)...)); + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc->ClientServerChatDirectMessage(&text, msg_color, false); + } + } + } + + /** + * \brief Sends notification (on-screen message) to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param color Message color + * \param display_scale Size of text + * \param display_time Display time + * \param icon Message icon (optional) + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendNotificationToAll(FLinearColor color, float display_scale, + float display_time, UTexture2D* icon, const T* msg, Args&&... args) + { + FString text(FString::Format(msg, std::forward(args)...)); + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc-> + ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, nullptr); + } + } + } + + /** + * \brief Sends chat message to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param sender_name Name of the sender + * \param msg Message + * \param args Optional arguments + */ + template + FORCEINLINE void SendChatMessageToAll(const FString& sender_name, const T* msg, Args&&... args) + { + const FString text(FString::Format(msg, std::forward(args)...)); + + FChatMessage chat_message = FChatMessage(); + chat_message.SenderName = sender_name; + chat_message.Message = text; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc->ClientChatMessage(chat_message); + } + } + } + + /** + * \brief Returns Steam ID from player controller + */ + static FORCEINLINE uint64 GetSteamIdFromController(AController* controller) + { + uint64 steam_id = 0; + + AShooterPlayerController* playerController = static_cast(controller); + if (playerController != nullptr) + { + steam_id = playerController->GetUniqueNetIdAsUINT64(); + } + + return steam_id; + } + + /** + * \brief Finds player from the given steam name + * \param steam_name Steam name + * \return Pointer to AShooterPlayerController + */ + FORCEINLINE AShooterPlayerController* FindPlayerFromSteamName(const FString& steam_name) const + { + AShooterPlayerController* result = nullptr; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + const FString current_name = player_controller->PlayerStateField()->PlayerNameField(); + if (current_name == steam_name) + { + auto* shooter_pc = static_cast(player_controller.Get()); + + result = shooter_pc; + break; + } + } + + return result; + } + + /** + * \brief Finds player controller from the given player character + * \param character Player character + * \return Pointer to AShooterPlayerController + */ + FORCEINLINE AShooterPlayerController* FindControllerFromCharacter(AShooterCharacter* character) const + { + AShooterPlayerController* result = nullptr; + + if (character != nullptr + && !character->IsDead()) + { + result = (character->GetOwnerController()) ? + static_cast(character->GetOwnerController()) + : + static_cast(character->GetInstigatorController()); + } + + return result; + } + + /** + * \brief Finds all matching players from the given character name + * \param character_name Character name + * \param search Type Defaulted To ESearchCase::Type::IgnoreCase + * \param full_match Will match the full length of the string if true + * \return Array of AShooterPlayerController* + */ + FORCEINLINE TArray FindPlayerFromCharacterName(const FString& character_name, + ESearchCase::Type search, + bool full_match) const + { + TArray found_players; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + auto* shooter_player = static_cast(player_controller.Get()); + FString char_name = GetCharacterName(shooter_player); + + if (!char_name.IsEmpty() && (full_match + ? char_name.Equals(character_name, search) + : char_name.StartsWith(character_name, search))) + { + found_players.Add(shooter_player); + } + } + + return found_players; + } + + /** + * \brief Returns the character name of player + * \param player_controller Player + */ + static FORCEINLINE FString GetCharacterName(AShooterPlayerController* player_controller) + { + if (player_controller != nullptr) + { + FString player_name(""); + player_controller->GetPlayerCharacterName(&player_name); + return player_name; + } + + return FString(""); + } + + /** + * \brief Returns the steam name of player + * \param player_controller Player + */ + static FORCEINLINE FString GetSteamName(AController* player_controller) + { + return player_controller != nullptr ? player_controller->PlayerStateField()->PlayerNameField() : ""; + } + + /** + * \brief Finds player from the given steam id + * \param steam_id Steam id + * \return Pointer to AShooterPlayerController + */ + FORCEINLINE AShooterPlayerController* FindPlayerFromSteamId(uint64 steam_id) const + { + return FindPlayerFromSteamId_Internal(steam_id); + } + + /** + * \brief Spawns an item drop + * \param blueprint Item simplified BP + * Example: '/Game/PrimalEarth/CoreBlueprints/Items/Armor/Riot/PrimalItemArmor_RiotPants.PrimalItemArmor_RiotPants_C' + * \param pos Spawn position + * \param amount Quantity + * \param item_quality Quality + * \param force_blueprint Is blueprint + * \param life_span Life span + * \return Returns true if drop was spawned, false otherwise + */ + FORCEINLINE bool SpawnDrop(const wchar_t* blueprint, FVector pos, int amount, float item_quality = 0.0f, + bool force_blueprint = false, float life_span = 0.0f) const + { + APlayerController* player = GetWorld()->GetFirstPlayerController(); + if (!player) + { + return false; + } + + UObject* object = Globals:: + StaticLoadObject(UObject::StaticClass(), nullptr, blueprint, nullptr, 0, 0, true); + if (!object) + { + return false; + } + + TSubclassOf archetype; + archetype.uClass = reinterpret_cast(object); + + UPrimalItem* item = UPrimalItem::AddNewItem(archetype, nullptr, false, false, item_quality, false, amount, + force_blueprint, 0, false, nullptr, 0, 0, 0); + if (!item) + { + return false; + } + + FItemNetInfo* info = static_cast(FMemory::Malloc(0x400)); + RtlSecureZeroMemory(info, 0x400); + + item->GetItemNetInfo(info, false); + + TSubclassOf archetype_dropped; + archetype_dropped.uClass = reinterpret_cast(object); + + FVector zero_vector{ 0, 0, 0 }; + FRotator rot{ 0, 0, 0 }; + + UPrimalInventoryComponent::StaticDropItem(player, info, archetype_dropped, &rot, true, &pos, &rot, true, + false, false, true, nullptr, &zero_vector, nullptr, life_span); + + FMemory::Free(info); + + return true; + } + + /** + * \brief Spawns a dino near player or at specific coordinates + * \param player Player. If null, random player will be chosen. At least one player should be on the map + * \param blueprint Blueprint path + * \param location Spawn position. If null, dino will be spawned near player + * \param lvl Level of the dino + * \param force_tame Force tame + * \param neutered Neuter dino + * \return Spawned dino or null + */ + FORCEINLINE APrimalDinoCharacter* SpawnDino(AShooterPlayerController* player, FString blueprint, FVector* location, int lvl, + bool force_tame, bool neutered) const + { + if (player == nullptr) + { + player = static_cast(GetWorld()->GetFirstPlayerController()); + if (player == nullptr) + { + return nullptr; + } + } + + AActor* actor = player->SpawnActor(&blueprint, 100, 0, 0, true); + if (actor != nullptr && actor->IsA(APrimalDinoCharacter::GetPrivateStaticClass())) + { + auto* dino = static_cast(actor); + + if (location != nullptr && !location->IsZero()) + { + FRotator rotation{ 0, 0, 0 }; + dino->TeleportTo(location, &rotation, true, false); + } + + if (force_tame) + { + dino->TamingTeamIDField() = player->TargetingTeamField(); + + auto* state = static_cast(player->PlayerStateField()); + + FString player_name; + state->GetPlayerName(&player_name); + + dino->TamerStringField() = player_name; + + state->SetTribeTamingDinoSettings(dino); + + dino->TameDino(player, true, 0, true, true, false); + } + + if (neutered) + { + dino->DoNeuter_Implementation(); + } + + dino->AbsoluteBaseLevelField() = lvl; + + dino->BeginPlay(); + + return dino; + } + + return nullptr; + } + + /** + * \brief Returns true if character is riding a dino, false otherwise + * \param player_controller Player + */ + static FORCEINLINE bool IsRidingDino(AShooterPlayerController* player_controller) + { + return player_controller != nullptr && player_controller->GetPlayerCharacter() != nullptr + && player_controller->GetPlayerCharacter()->GetRidingDino() != nullptr; + } + + /** + * \brief Returns the dino the character is riding + * \param player_controller Player + * \return APrimalDinoCharacter* + */ + static FORCEINLINE APrimalDinoCharacter* GetRidingDino(AShooterPlayerController* player_controller) + { + return player_controller != nullptr && player_controller->GetPlayerCharacter() != nullptr + ? player_controller->GetPlayerCharacter()->GetRidingDino() + : nullptr; + } + + /** + * \brief Returns the position of a player + * \param player_controller Player + * \return FVector + */ + static FORCEINLINE FVector GetPosition(APlayerController* player_controller) + { + return player_controller != nullptr ? player_controller->DefaultActorLocationField() : FVector{ 0, 0, 0 }; + } + + /** + * \brief Teleport one player to another + * \param me Player + * \param him Other Player + * \param check_for_dino If set true prevents players teleporting with dino's or teleporting to a player on a dino + * \param max_dist Is the max distance the characters can be away from each other -1 is disabled + */ + static FORCEINLINE std::optional TeleportToPlayer(AShooterPlayerController* me, AShooterPlayerController* him, + bool check_for_dino, float max_dist) + { + if (!(me != nullptr && him != nullptr && me->GetPlayerCharacter() != nullptr && him-> + GetPlayerCharacter() + != nullptr + && !me->GetPlayerCharacter()->IsDead() && !him->GetPlayerCharacter()->IsDead()) + ) + { + return "One of players is dead"; + } + + if (check_for_dino && (IsRidingDino(me) || IsRidingDino(him))) + { + return "One of players is riding a dino"; + } + + if (max_dist != -1 && FVector::Distance(GetPosition(me), GetPosition(him)) > max_dist) + { + return "Person is too far away"; + } + + const FVector pos = him->DefaultActorLocationField(); + + me->SetPlayerPos(pos.X, pos.Y, pos.Z); + + return {}; + } + + /** + * \brief Teleports player to the given position + * \param player_controller Player + * \param pos New position + */ + static FORCEINLINE bool TeleportToPos(AShooterPlayerController* player_controller, const FVector& pos) + { + if (player_controller != nullptr && !IsPlayerDead(player_controller)) + { + player_controller->SetPlayerPos(pos.X, pos.Y, pos.Z); + return true; + } + + return false; + } + + /** + * \brief Counts a specific items quantity + * \param player_controller Player + * \param item_name The name of the item you want to count the quantity of + * \return On success, the function returns amount of items player has. Returns -1 if the function has failed. + */ + static FORCEINLINE int GetInventoryItemCount(AShooterPlayerController* player_controller, const FString& item_name) + { + if (player_controller == nullptr) + { + return -1; + } + + UPrimalInventoryComponent* inventory_component = + player_controller->GetPlayerCharacter()->MyInventoryComponentField(); + if (inventory_component == nullptr) + { + return -1; + } + + FString name; + int item_count = 0; + + for (UPrimalItem* item : inventory_component->InventoryItemsField()) + { + item->GetItemName(&name, true, false, nullptr); + + if (name.Equals(item_name, ESearchCase::IgnoreCase)) + { + item_count += item->GetItemQuantity(); + } + } + + return item_count; + } + + /** + * \brief Returns IP address of player + */ + static FORCEINLINE FString GetIPAddress(AShooterPlayerController* player) + { + return player && player->GetNetConnection() && !player->GetNetConnection()->ClientGivenIPField().IsEmpty() ? player->GetNetConnection()->ClientGivenIPField() : ""; + } + + /** + * \brief Returns blueprint from UPrimalItem + */ + static FORCEINLINE FString GetItemBlueprint(UPrimalItem* item) + { + return GetBlueprint(item); + } + + /** + * \brief Returns true if player is dead, false otherwise + */ + static FORCEINLINE bool IsPlayerDead(AShooterPlayerController* player) + { + if (player == nullptr || player->GetPlayerCharacter() == nullptr) + { + return true; + } + + return player->GetPlayerCharacter()->IsDead(); + } + + static FORCEINLINE uint64 GetPlayerID(APrimalCharacter* character) + { + auto* shooter_character = static_cast(character); + return shooter_character != nullptr && shooter_character->GetPlayerData() != nullptr + ? shooter_character->GetPlayerData()->MyDataField()->PlayerDataIDField() + : -1; + } + + static FORCEINLINE uint64 GetPlayerID(AController* controller) + { + auto* player = static_cast(controller); + return player != nullptr ? player->LinkedPlayerIDField() : 0; + } + + FORCEINLINE uint64 GetSteamIDForPlayerID(int player_id) const + { + uint64 steam_id = GetShooterGameMode()->GetSteamIDForPlayerID(player_id); + if (steam_id == 0) + { + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + auto* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc != nullptr && shooter_pc->LinkedPlayerIDField() == player_id) + { + steam_id = shooter_pc->GetUniqueNetIdAsUINT64(); + break; + } + } + + GetShooterGameMode()->AddPlayerID(player_id, steam_id); + } + + return steam_id; + } + + /** + * \brief Returns blueprint path from any UObject + */ + static FORCEINLINE FString GetBlueprint(UObjectBase* object) + { + if (object != nullptr && object->ClassField() != nullptr) + { + return GetClassBlueprint(object->ClassField()); + } + + return FString(""); + } + + /** + * \brief Returns blueprint path from any UClass + */ + static FORCEINLINE FString GetClassBlueprint(UClass* the_class) + { + if (the_class != nullptr) + { + FString path; + UVictoryCore::ClassToStringReference(&path, TSubclassOf(the_class)); + return "Blueprint'" + path.LeftChop(2) + "'"; + } + + return FString(""); + } + + /** + * \brief Get Shooter Game State + */ + FORCEINLINE AShooterGameState* GetGameState() + { + return static_cast(GetWorld()->GameStateField()); + } + + /** + * \brief Get UShooterCheatManager* of player controller + */ + static FORCEINLINE UShooterCheatManager* GetCheatManagerByPC(AShooterPlayerController* SPC) + { + if (!SPC) return nullptr; + + UCheatManager* cheat = SPC->CheatManagerField(); + + if (cheat) + { + return static_cast(cheat); + } + + return nullptr; + } + + /** + * \brief Get Tribe ID of player controller + */ + static FORCEINLINE int GetTribeID(AShooterPlayerController* player_controller) + { + int team = 0; + + if (player_controller) + { + team = player_controller->TargetingTeamField(); + } + + return team; + } + + /** + * \brief Get Tribe ID of character + */ + static FORCEINLINE int GetTribeID(AShooterCharacter* player_character) + { + int team = 0; + + if (player_character) + { + team = player_character->TargetingTeamField(); + } + + return team; + } + + /** + * \brief Returns pointer to Primal Game Data + */ + FORCEINLINE UPrimalGameData* GetGameData() + { + UPrimalGlobals* singleton = static_cast(Globals::GEngine()()->GameSingletonField()); + return (singleton->PrimalGameDataOverrideField() != nullptr) ? singleton->PrimalGameDataOverrideField() : singleton->PrimalGameDataField(); + } + + /** + * \brief Gets all actors in radius at location + */ + FORCEINLINE TArray GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType) + { + TArray out_actors; + + UVictoryCore::ServerOctreeOverlapActors(&out_actors, GetWorld(), location, radius, ActorType, true); + + return out_actors; + } + + /** + * \brief Gets all actors in radius at location, with ignore actors + */ + FORCEINLINE TArray GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType, TArray ignores) + { + TArray out_actors; + + UVictoryCore::ServerOctreeOverlapActors(&out_actors, GetWorld(), location, radius, ActorType, true); + + for (AActor* ignore : ignores) + out_actors.Remove(ignore); + + return out_actors; + } + + /** + * \brief Converts FVector into coords that are displayed when you view the ingame map + */ + FORCEINLINE MapCoords FVectorToCoords(FVector actor_position) + { + AWorldSettings* world_settings = GetWorld()->GetWorldSettings(false, true); + APrimalWorldSettings* p_world_settings = static_cast(world_settings); + MapCoords coords; + + float lat_scale = p_world_settings->LatitudeScaleField() != 0 ? p_world_settings->LatitudeScaleField() : 800.0f; + float lon_scale = p_world_settings->LongitudeScaleField() != 0 ? p_world_settings->LongitudeScaleField() : 800.0f; + + float lat_origin = p_world_settings->LatitudeOriginField() != 0 ? p_world_settings->LatitudeOriginField() : -400000.0f; + float lon_origin = p_world_settings->LongitudeOriginField() != 0 ? p_world_settings->LongitudeOriginField() : -400000.0f; + + float lat_div = 100.f / lat_scale; + float lat = (lat_div * actor_position.Y + lat_div * abs(lat_origin)) / 1000.f; + + float lon_div = 100.f / lon_scale; + float lon = (lon_div * actor_position.X + lon_div * abs(lon_origin)) / 1000.f; + + coords.x = std::floor(lon * 10.0f) / 10.0f; + coords.y = std::floor(lat * 10.0f) / 10.0f; + + return coords; + } + + /** + * \brief obtains the steam ID of an attacker, meant to be used in hooks such as TakeDamage + * \param tribe_check if set to true will return NULL if the target is from the same tribe as the attacker + */ + FORCEINLINE uint64 GetAttackerSteamID(AActor* target, AController* killer, AActor* damage_causer, bool tribe_check = true) + { + uint64 steam_id = NULL; + + if (target) + { + if (killer && !killer->IsLocalController() && killer->IsA(AShooterPlayerController::GetPrivateStaticClass()) + && (!tribe_check || (tribe_check && target->TargetingTeamField() != killer->TargetingTeamField()))) + steam_id = GetSteamIdFromController(static_cast(killer)); + else if (damage_causer && (!tribe_check || (tribe_check && target->TargetingTeamField() != damage_causer->TargetingTeamField())) + && damage_causer->IsA(APrimalStructureExplosive::StaticClass())) + { + APrimalStructureExplosive* explosive = static_cast(damage_causer); + steam_id = GetSteamIDForPlayerID(explosive->ConstructorPlayerDataIDField()); + } + } + + return steam_id; + } + + void RunHiddenCommand(AShooterPlayerController* _this, FString* Command) + { + FString result; + HideCommand = true; + _this->ConsoleCommand(&result, Command, false); + HideCommand = false; + } + private: + virtual AShooterPlayerController* FindPlayerFromSteamId_Internal(uint64 steam_id) const = 0; + }; + + ARK_API IApiUtils& APIENTRY GetApiUtils(); +} // namespace ArkApi diff --git a/version/Core/Public/Atlas/AtlasApiUtils.h b/version/Core/Public/Atlas/AtlasApiUtils.h new file mode 100644 index 00000000..2918601f --- /dev/null +++ b/version/Core/Public/Atlas/AtlasApiUtils.h @@ -0,0 +1,732 @@ +#pragma once + +#include + +#include + +namespace ArkApi +{ + enum class ServerStatus { Loading, Ready }; + + class ARK_API IApiUtils + { + public: + virtual ~IApiUtils() = default; + + /** + * \brief Returns a pointer to UWorld + */ + virtual UWorld* GetWorld() const = 0; + + /** + * \brief Returns a pointer to AShooterGameMode + */ + virtual AShooterGameMode* GetShooterGameMode() const = 0; + + /** + * \brief Returns the current server status + */ + virtual ServerStatus GetStatus() const = 0; + + /** + * \brief Returns a point to URCON CheatManager + */ + virtual UShooterCheatManager* GetCheatManager() const = 0; + /** + * \brief Sends server message to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param msg_color Message color + * \param msg Message + * \param args Optional arguments + */ + template + void SendServerMessage(AShooterPlayerController* player_controller, FLinearColor msg_color, const T* msg, + Args&&... args) + { + if (player_controller) + { + FString text(FString::Format(msg, std::forward(args)...)); + player_controller->ClientServerChatDirectMessage(&text, msg_color, false); + } + } + + /** + * \brief Sends notification (on-screen message) to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param color Message color + * \param display_scale Size of text + * \param display_time Display time + * \param icon Message icon (optional) + * \param msg Message + * \param args Optional arguments + */ + template + void SendNotification(AShooterPlayerController* player_controller, FLinearColor color, float display_scale, + float display_time, UTexture2D* icon, const T* msg, Args&&... args) + { + if (player_controller) + { + FString text(FString::Format(msg, std::forward(args)...)); + + player_controller->ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, + nullptr); + } + } + + /** + * \brief Sends chat message to the specific player. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param player_controller Player + * \param sender_name Name of the sender + * \param msg Message + * \param args Optional arguments + */ + template + void SendChatMessage(AShooterPlayerController* player_controller, const FString& sender_name, const T* msg, + Args&&... args) + { + if (player_controller) + { + const FString text(FString::Format(msg, std::forward(args)...)); + + FChatMessage chat_message = FChatMessage(); + chat_message.SenderName = sender_name; + chat_message.Message = text; + + player_controller->ClientChatMessage(chat_message); + } + } + + /** + * \brief Sends server message to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param msg_color Message color + * \param msg Message + * \param args Optional arguments + */ + template + void SendServerMessageToAll(FLinearColor msg_color, const T* msg, + Args&&... args) + { + FString text(FString::Format(msg, std::forward(args)...)); + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc->ClientServerChatDirectMessage(&text, msg_color, false); + } + } + } + + /** + * \brief Sends notification (on-screen message) to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param color Message color + * \param display_scale Size of text + * \param display_time Display time + * \param icon Message icon (optional) + * \param msg Message + * \param args Optional arguments + */ + template + void SendNotificationToAll(FLinearColor color, float display_scale, + float display_time, UTexture2D* icon, const T* msg, Args&&... args) + { + FString text(FString::Format(msg, std::forward(args)...)); + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc-> + ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, nullptr); + } + } + } + + /** + * \brief Sends chat message to all players. Using fmt::format. + * \tparam T Either a a char or wchar_t + * \tparam Args Optional arguments types + * \param sender_name Name of the sender + * \param msg Message + * \param args Optional arguments + */ + template + void SendChatMessageToAll(const FString& sender_name, const T* msg, Args&&... args) + { + const FString text(FString::Format(msg, std::forward(args)...)); + + FChatMessage chat_message = FChatMessage(); + chat_message.SenderName = sender_name; + chat_message.Message = text; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); + if (shooter_pc) + { + shooter_pc->ClientChatMessage(chat_message); + } + } + } + + /** + * \brief Returns Steam ID from player controller + */ + static uint64 GetSteamIdFromController(AController* controller) + { + uint64 steam_id = 0; + + if (controller != nullptr) + { + APlayerState* player_state = controller->PlayerStateField(); + if (player_state != nullptr) + { + auto* steam_net_id = static_cast(player_state->UniqueIdField() + .UniqueNetId.Get()); + + const FString steam_id_str = steam_net_id->UniqueNetIdStr; + + try + { + steam_id = std::stoull(*steam_id_str); + } + catch (const std::exception&) + { + return 0; + } + } + } + + return steam_id; + } + + /** + * \brief Finds player from the given steam name + * \param steam_name Steam name + * \return Pointer to AShooterPlayerController + */ + AShooterPlayerController* FindPlayerFromSteamName(const FString& steam_name) const + { + AShooterPlayerController* result = nullptr; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + const FString current_name = player_controller->PlayerStateField()->PlayerNameField(); + if (current_name == steam_name) + { + auto* shooter_pc = static_cast(player_controller.Get()); + + result = shooter_pc; + break; + } + } + + return result; + } + + /** + * \brief Finds player controller from the given player character + * \param character Player character + * \return Pointer to AShooterPlayerController + */ + AShooterPlayerController* FindControllerFromCharacter(AShooterCharacter* character) const + { + AShooterPlayerController* result = nullptr; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + auto* shooter_pc = static_cast(player_controller.Get()); + + if (shooter_pc->GetPlayerCharacter() == character) + { + result = shooter_pc; + break; + } + } + + return result; + } + + /** + * \brief Finds all matching players from the given character name + * \param character_name Character name + * \param search Type Defaulted To ESearchCase::Type::IgnoreCase + * \param full_match Will match the full length of the string if true + * \return Array of AShooterPlayerController* + */ + TArray FindPlayerFromCharacterName(const FString& character_name, + ESearchCase::Type search, + bool full_match) const + { + TArray found_players; + + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + auto* shooter_player = static_cast(player_controller.Get()); + FString char_name = GetCharacterName(shooter_player); + + if (!char_name.IsEmpty() && (full_match + ? char_name.Equals(character_name, search) + : char_name.StartsWith(character_name, search))) + { + found_players.Add(shooter_player); + } + } + + return found_players; + } + + /** + * \brief Returns the character name of player + * \param player_controller Player + */ + static FString GetCharacterName(AShooterPlayerController* player_controller, bool include_first_name = true, + bool include_last_name = true) + { + auto* player_state = static_cast(player_controller->PlayerStateField()); + if (player_state) + { + FString name; + player_state->GetPlayerName(&name); + + if (include_first_name && include_last_name) + return name; + + if (include_first_name) + { + int32 index = -1; + name.FindLastChar(' ', index); + return name.Mid(0, index - 1); + } + + int32 index = -1; + name.FindLastChar(' ', index); + return name.Mid(index + 1, name.Len() - (index + 1)); + } + return ""; + } + + /** + * \brief Returns the steam name of player + * \param player_controller Player + */ + static FString GetSteamName(AController* player_controller) + { + return player_controller != nullptr ? player_controller->PlayerStateField()->PlayerNameField() : ""; + } + + /** + * \brief Finds player from the given steam id + * \param steam_id Steam id + * \return Pointer to AShooterPlayerController + */ + AShooterPlayerController* FindPlayerFromSteamId(uint64 steam_id) const + { + return FindPlayerFromSteamId_Internal(steam_id); + } + + /*bool SpawnDrop(const wchar_t* blueprint, FVector pos, int amount, float item_quality = 0.0f, + bool force_blueprint = false, float life_span = 0.0f) const + { + UObject* object = Globals::StaticLoadObject(UObject::StaticClass(), nullptr, blueprint, nullptr, 0, 0, true); + TSubclassOf archetype;// (reinterpret_cast(object)); + archetype.uClass = reinterpret_cast(object); + TSubclassOf archetype_dropped; + archetype_dropped.uClass = reinterpret_cast(object); + APlayerController* player = GetWorld()->GetFirstPlayerController(); + if (player) + { + FVector pos2{1, 1, 1}; + FRotator rot{0, 0, 0}; + UPrimalInventoryComponent::StaticDropNewItem(player, archetype, item_quality, false, amount, force_blueprint, + archetype_dropped, &rot, + true, &pos2, &rot, true, false, false, true, nullptr, pos2, + nullptr, life_span); + return true; + } + return false; + }*/ + + /** + * \brief Spawns a dino near player or at specific coordinates + * \param player Player. If null, random player will be chosen. At least one player should be on the map + * \param blueprint Blueprint path + * \param location Spawn position. If null, dino will be spawned near player + * \param lvl Level of the dino + * \param force_tame Force tame + * \param neutered Neuter dino + * \return Spawned dino or null + */ + APrimalDinoCharacter* SpawnDino(AShooterPlayerController* player, FString blueprint, FVector* location, int lvl, + bool force_tame, bool neutered) const + { + if (player == nullptr) + { + player = static_cast(GetWorld()->GetFirstPlayerController()); + if (player == nullptr) + { + return nullptr; + } + } + + AActor* actor = player->SpawnActor(&blueprint, 100, 0, 0, true); + if (actor != nullptr && actor->IsA(APrimalDinoCharacter::GetPrivateStaticClass())) + { + auto* dino = static_cast(actor); + + if (location != nullptr && !location->IsZero()) + { + FRotator rotation{ 0, 0, 0 }; + dino->TeleportTo(location, &rotation, true, false); + } + + if (force_tame) + { + dino->TamingTeamIDField() = player->TargetingTeamField(); + + auto* state = static_cast(player->PlayerStateField()); + + FString player_name; + state->GetPlayerName(&player_name); + + dino->TamerStringField() = player_name; + + state->SetTribeTamingDinoSettings(dino); + + dino->TameDino(player, true, 0); + } + + if (neutered) + { + dino->DoNeuter_Implementation(); + } + + dino->AbsoluteBaseLevelField() = lvl; + + dino->BeginPlay(); + + return dino; + } + + return nullptr; + } + + /** + * \brief Returns true if character is riding a dino, false otherwise + * \param player_controller Player + */ + static bool IsRidingDino(AShooterPlayerController* player_controller) + { + return player_controller != nullptr && player_controller->GetPlayerCharacter() != nullptr + && player_controller->GetPlayerCharacter()->GetRidingDino() != nullptr; + } + + /** + * \brief Returns the dino the character is riding + * \param player_controller Player + * \return APrimalDinoCharacter* + */ + static APrimalDinoCharacter* GetRidingDino(AShooterPlayerController* player_controller) + { + return player_controller != nullptr && player_controller->GetPlayerCharacter() != nullptr + ? player_controller->GetPlayerCharacter()->GetRidingDino() + : nullptr; + } + + /** + * \brief Returns the position of a player + * \param player_controller Player + * \return FVector + */ + static FVector GetPosition(APlayerController* player_controller) + { + FVector WorldPos{ 0, 0, 0 }; + if (player_controller->RootComponentField()) + player_controller + ->RootComponentField()->GetWorldLocation(&WorldPos); + return WorldPos; + } + + /** + * \brief Teleport one player to another + * \param me Player + * \param him Other Player + * \param check_for_dino If set true prevents players teleporting with dino's or teleporting to a player on a dino + * \param max_dist Is the max distance the characters can be away from each other -1 is disabled + */ + static std::optional TeleportToPlayer(AShooterPlayerController* me, AShooterPlayerController* him, + bool check_for_dino, float max_dist) + { + if (!(me != nullptr && him != nullptr && me->GetPlayerCharacter() != nullptr && him-> + GetPlayerCharacter() + != nullptr + && !me->GetPlayerCharacter()->IsDead() && !him->GetPlayerCharacter()->IsDead()) + ) + { + return "One of players is dead"; + } + + if (check_for_dino && (IsRidingDino(me) || IsRidingDino(him))) + { + return "One of players is riding a dino"; + } + + if (max_dist != -1 && FVector::Distance(GetPosition(me), GetPosition(him)) > max_dist) + { + return "Person is too far away"; + } + + const FVector pos = him->DefaultActorLocationField(); + + me->SetPlayerPos(pos.X, pos.Y, pos.Z); + + return {}; + } + + /** + * \brief Teleports player to the given position + * \param player_controller Player + * \param pos New position + */ + static bool TeleportToPos(AShooterPlayerController* player_controller, const FVector& pos) + { + if (player_controller != nullptr && !IsPlayerDead(player_controller)) + { + player_controller->SetPlayerPos(pos.X, pos.Y, pos.Z); + return true; + } + + return false; + } + + /** + * \brief Counts a specific items quantity + * \param player_controller Player + * \param item_name The name of the item you want to count the quantity of + * \return On success, the function returns amount of items player has. Returns -1 if the function has failed. + */ + static int GetInventoryItemCount(AShooterPlayerController* player_controller, const FString& item_name) + { + if (player_controller == nullptr) + { + return -1; + } + + UPrimalInventoryComponent* inventory_component = + player_controller->GetPlayerCharacter()->MyInventoryComponentField(); + if (inventory_component == nullptr) + { + return -1; + } + + FString name; + int item_count = 0; + + for (UPrimalItem* item : inventory_component->InventoryItemsField()) + { + item->GetItemName(&name, true, false, nullptr); + + if (name.Equals(item_name, ESearchCase::IgnoreCase)) + { + item_count += item->GetItemQuantity(); + } + } + + return item_count; + } + + /** + * \brief Returns IP address of player + */ + static FString GetIPAddress(AShooterPlayerController* player_controller) + { + FString ip_address; + player_controller->GetPlayerNetworkAddress(&ip_address); + return ip_address; + } + + /** + * \brief Returns blueprint from UPrimalItem + */ + static FORCEINLINE FString GetItemBlueprint(UPrimalItem* item) + { + if (item != nullptr) + { + return GetBlueprint(item); + } + + return FString(""); + } + + /** + * \brief Returns true if player is dead, false otherwise + */ + static bool IsPlayerDead(AShooterPlayerController* player) + { + if (player == nullptr || player->GetPlayerCharacter() == nullptr) + { + return true; + } + + return player->GetPlayerCharacter()->IsDead(); + } + + static uint64 GetPlayerID(APrimalCharacter* character) + { + auto* shooter_character = static_cast(character); + return shooter_character != nullptr && shooter_character->GetPlayerData() != nullptr + ? shooter_character->GetPlayerData()->MyDataField()->PlayerDataIDField() + : -1; + } + + static uint64 GetPlayerID(AController* controller) + { + auto* player = static_cast(controller); + return player != nullptr ? player->LinkedPlayerIDField() : 0; + } + + uint64 GetSteamIDForPlayerID(int player_id) const + { + uint64 steam_id = GetShooterGameMode()->GetSteamIDForPlayerID(player_id); + if (steam_id == 0) + { + const auto& player_controllers = GetWorld()->PlayerControllerListField(); + for (TWeakObjectPtr player_controller : player_controllers) + { + auto* shooter_pc = static_cast(player_controller.Get()); + + if (shooter_pc != nullptr && shooter_pc->LinkedPlayerIDField() == player_id) + { + steam_id = GetSteamIdFromController(shooter_pc); + break; + } + } + + GetShooterGameMode()->AddPlayerID(player_id, steam_id); + } + + return steam_id; + } + + /** + * \brief Returns blueprint path from any UObject + */ + static FORCEINLINE FString GetBlueprint(UObjectBase* object) + { + if (object != nullptr && object->ClassField() != nullptr) + { + return GetClassBlueprint(object->ClassField()); + } + + return FString(""); + } + + /** + * \brief Returns blueprint path from any UClass + */ + static FORCEINLINE FString GetClassBlueprint(UClass* the_class) + { + if (the_class != nullptr) + { + FString path_name; + the_class->GetDefaultObject(true)->GetFullName(&path_name, nullptr); + + if (int find_index = 0; path_name.FindChar(' ', find_index)) + { + path_name = "Blueprint'" + path_name.Mid(find_index + 1, + path_name.Len() - (find_index + (path_name.EndsWith( + "_C", ESearchCase:: + CaseSensitive) + ? 3 + : 1))) + "'"; + return path_name.Replace(L"Default__", L"", ESearchCase::CaseSensitive); + } + } + + return FString(""); + } + + /** + * \brief Get Shooter Game State + */ + AShooterGameState* GetGameState() + { + return static_cast(GetWorld()->GameStateField()); + } + + /** + * \brief Get UShooterCheatManager* of player controller + */ + static UShooterCheatManager* GetCheatManagerByPC(AShooterPlayerController* SPC) + { + if (!SPC) return nullptr; + + UCheatManager* cheat = SPC->CheatManagerField(); + + if (cheat) + { + return static_cast(cheat); + } + + return nullptr; + } + + /** + * \brief Returns pointer to Primal Game Data + */ + UPrimalGameData* GetGameData() + { + UPrimalGlobals* singleton = static_cast(Globals::GEngine()()->GameSingletonField()); + return (singleton->PrimalGameDataOverrideField() != nullptr) ? singleton->PrimalGameDataOverrideField() : singleton->PrimalGameDataField(); + } + + /** + * \brief Gets all actors in radius at location + */ + TArray GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType) + { + TArray out_actors; + + UVictoryCore::ServerOctreeOverlapActors(&out_actors, GetWorld(), location, radius, ActorType, true); + + return out_actors; + } + + /** + * \brief Gets all actors in radius at location, with ignore actors + */ + TArray GetAllActorsInRange(FVector location, float radius, EServerOctreeGroup::Type ActorType, TArray ignores) + { + TArray out_actors; + + UVictoryCore::ServerOctreeOverlapActors(&out_actors, GetWorld(), location, radius, ActorType, true); + + for (AActor* ignore : ignores) + out_actors.Remove(ignore); + + return out_actors; + } + private: + virtual AShooterPlayerController* FindPlayerFromSteamId_Internal(uint64 steam_id) const = 0; + }; + + ARK_API IApiUtils& APIENTRY GetApiUtils(); +} // namespace ArkApi diff --git a/version/Core/Public/IApiUtils.h b/version/Core/Public/IApiUtils.h index 943417d8..43d6a2d5 100644 --- a/version/Core/Public/IApiUtils.h +++ b/version/Core/Public/IApiUtils.h @@ -1,611 +1,7 @@ #pragma once -#include -#include - -namespace ArkApi -{ - enum class ServerStatus { Loading, Ready }; - - class ARK_API IApiUtils - { - public: - virtual ~IApiUtils() = default; - - /** - * \brief Returns a pointer to UWorld - */ - virtual UWorld* GetWorld() const = 0; - - /** - * \brief Returns a pointer to AShooterGameMode - */ - virtual AShooterGameMode* GetShooterGameMode() const = 0; - - /** - * \brief Returns the current server status - */ - virtual ServerStatus GetStatus() const = 0; - - /** - * \brief Sends server message to the specific player. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param player_controller Player - * \param msg_color Message color - * \param msg Message - * \param args Optional arguments - */ - template - void SendServerMessage(AShooterPlayerController* player_controller, FLinearColor msg_color, const T* msg, - Args&&... args) - { - FString text(FString::Format(msg, std::forward(args)...)); - - player_controller->ClientServerChatDirectMessage(&text, msg_color, false); - } - - /** - * \brief Sends notification (on-screen message) to the specific player. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param player_controller Player - * \param color Message color - * \param display_scale Size of text - * \param display_time Display time - * \param icon Message icon (optional) - * \param msg Message - * \param args Optional arguments - */ - template - void SendNotification(AShooterPlayerController* player_controller, FLinearColor color, float display_scale, - float display_time, UTexture2D* icon, const T* msg, Args&&... args) - { - FString text(FString::Format(msg, std::forward(args)...)); - - player_controller->ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, nullptr); - } - - /** - * \brief Sends chat message to the specific player. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param player_controller Player - * \param sender_name Name of the sender - * \param msg Message - * \param args Optional arguments - */ - template - void SendChatMessage(AShooterPlayerController* player_controller, const FString& sender_name, const T* msg, - Args&&... args) - { - const FString text(FString::Format(msg, std::forward(args)...)); - - FChatMessage chat_message = FChatMessage(); - chat_message.SenderName = sender_name; - chat_message.Message = text; - - player_controller->ClientChatMessage(chat_message); - } - - /** - * \brief Sends server message to all players. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param msg_color Message color - * \param msg Message - * \param args Optional arguments - */ - template - void SendServerMessageToAll(FLinearColor msg_color, const T* msg, - Args&&... args) - { - FString text(FString::Format(msg, std::forward(args)...)); - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - shooter_pc->ClientServerChatDirectMessage(&text, msg_color, false); - } - } - - /** - * \brief Sends notification (on-screen message) to all players. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param color Message color - * \param display_scale Size of text - * \param display_time Display time - * \param icon Message icon (optional) - * \param msg Message - * \param args Optional arguments - */ - template - void SendNotificationToAll(FLinearColor color, float display_scale, - float display_time, UTexture2D* icon, const T* msg, Args&&... args) - { - FString text(FString::Format(msg, std::forward(args)...)); - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - shooter_pc->ClientServerSOTFNotificationCustom(&text, color, display_scale, display_time, icon, nullptr); - } - } - - /** - * \brief Sends chat message to all players. Using fmt::format. - * \tparam T Either a a char or wchar_t - * \tparam Args Optional arguments types - * \param sender_name Name of the sender - * \param msg Message - * \param args Optional arguments - */ - template - void SendChatMessageToAll(const FString& sender_name, const T* msg, Args&&... args) - { - const FString text(FString::Format(msg, std::forward(args)...)); - - FChatMessage chat_message = FChatMessage(); - chat_message.SenderName = sender_name; - chat_message.Message = text; - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - shooter_pc->ClientChatMessage(chat_message); - } - } - - /** - * \brief Returns Steam ID from player controller - */ - static uint64 GetSteamIdFromController(AController* controller) - { - uint64 steam_id = 0; - - if (controller) - { - APlayerState* player_state = controller->PlayerStateField(); - if (player_state) - { - FUniqueNetIdSteam* steam_net_id = static_cast(player_state->UniqueIdField() - .UniqueNetId.Get()); - steam_id = steam_net_id->UniqueNetId; - } - } - - return steam_id; - } - - /** - * \brief Finds player from the given steam name - * \param steam_name Steam name - * \return Pointer to AShooterPlayerController - */ - AShooterPlayerController* FindPlayerFromSteamName(const FString& steam_name) const - { - AShooterPlayerController* result = nullptr; - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - const FString current_name = player_controller->PlayerStateField()->PlayerNameField(); - if (current_name == steam_name) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - result = shooter_pc; - break; - } - } - - return result; - } - - /** - * \brief Finds player controller from the given player character - * \param character Player character - * \return Pointer to AShooterPlayerController - */ - AShooterPlayerController* FindControllerFromCharacter(AShooterCharacter* character) const - { - AShooterPlayerController* result = nullptr; - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - if (shooter_pc->GetPlayerCharacter() == character) - { - result = shooter_pc; - break; - } - } - - return result; - } - - /** - * \brief Finds all matching players from the given character name - * \param character_name Character name - * \param search Type Defaulted To ESearchCase::Type::IgnoreCase - * \param full_match Will match the full length of the string if true - * \return Array of AShooterPlayerController* - */ - TArray FindPlayerFromCharacterName(const FString& character_name, - ESearchCase::Type search = ESearchCase::Type:: - IgnoreCase, - bool full_match = false) const - { - TArray found_players; - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_player = static_cast(player_controller.Get()); - FString char_name = GetCharacterName(shooter_player); - - if (!char_name.IsEmpty() && (full_match - ? char_name.Equals(character_name, search) - : char_name.StartsWith(character_name, search))) - found_players.Add(shooter_player); - } - - return found_players; - } - - /** - * \brief Returns the character name of player - * \param player_controller Player - */ - static FString GetCharacterName(AShooterPlayerController* player_controller) - { - if (player_controller) - { - AShooterPlayerState* player_state = static_cast(player_controller->PlayerStateField()); - if (player_state && player_state->MyPlayerDataStructField()) - return player_state->MyPlayerDataStructField()->MyPlayerCharacterConfigField().PlayerCharacterName; - } - - return FString(""); - } - - /** - * \brief Returns the steam name of player - * \param player_controller Player - */ - static FString GetSteamName(AController* player_controller) - { - return player_controller ? player_controller->PlayerStateField()->PlayerNameField() : ""; - } - - /** - * \brief Finds player from the given steam id - * \param steam_id Steam id - * \return Pointer to AShooterPlayerController - */ - AShooterPlayerController* FindPlayerFromSteamId(uint64 steam_id) const - { - AShooterPlayerController* result = nullptr; - - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - const uint64 current_steam_id = GetSteamIdFromController(player_controller.Get()); - - if (current_steam_id == steam_id) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - - result = shooter_pc; - break; - } - } - - return result; - } - - /*bool SpawnDrop(const wchar_t* blueprint, FVector pos, int amount, float item_quality = 0.0f, - bool force_blueprint = false, float life_span = 0.0f) const - { - UObject* object = Globals::StaticLoadObject(UObject::StaticClass(), nullptr, blueprint, nullptr, 0, 0, true); - - TSubclassOf archetype;// (reinterpret_cast(object)); - archetype.uClass = reinterpret_cast(object); - TSubclassOf archetype_dropped; - archetype_dropped.uClass = reinterpret_cast(object); - - APlayerController* player = GetWorld()->GetFirstPlayerController(); - if (player) - { - FVector pos2{1, 1, 1}; - FRotator rot{0, 0, 0}; - - - UPrimalInventoryComponent::StaticDropNewItem(player, archetype, item_quality, false, amount, force_blueprint, - archetype_dropped, &rot, - true, &pos2, &rot, true, false, false, true, nullptr, pos2, - nullptr, life_span); - - return true; - } - - return false; - }*/ - - /** - * \brief Spawns a dino near player or at specific coordinates - * \param player Player. If null, random player will be chosen. At least one player should be on the map - * \param blueprint Blueprint path - * \param location Spawn position. If null, dino will be spawned near player - * \param lvl Level of the dino - * \param force_tame Force tame - * \param neutered Neuter dino - * \return Spawned dino or null - */ - APrimalDinoCharacter* SpawnDino(AShooterPlayerController* player, FString blueprint, FVector* location, int lvl, - bool force_tame, bool neutered = false) const - { - if (!player) - { - player = static_cast(GetWorld()->GetFirstPlayerController()); - if (!player) - return nullptr; - } - - AActor* actor = player->SpawnActor(&blueprint, 100, 0, 0, true); - if (actor && actor->IsA(APrimalDinoCharacter::GetPrivateStaticClass())) - { - APrimalDinoCharacter* dino = static_cast(actor); - - if (location && !location->IsZero()) - { - FRotator rotation{0, 0, 0}; - dino->TeleportTo(location, &rotation, true, false); - } - - if (force_tame) - { - dino->TamingTeamIDField() = player->TargetingTeamField(); - - AShooterPlayerState* state = static_cast(player->PlayerStateField()); - - FString player_name; - state->GetPlayerName(&player_name); - - dino->TamerStringField() = player_name; - - state->SetTribeTamingDinoSettings(dino); - - dino->TameDino(player, false, 0); - } - - if (neutered) - dino->DoNeuter_Implementation(); - - dino->AbsoluteBaseLevelField() = lvl; - - dino->BeginPlay(); - - return dino; - } - - return nullptr; - } - - /** - * \brief Returns true if character is riding a dino, false otherwise - * \param player_controller Player - */ - static bool IsRidingDino(AShooterPlayerController* player_controller) - { - return player_controller && player_controller->GetPlayerCharacter() - && player_controller->GetPlayerCharacter()->GetRidingDino() != nullptr; - } - - /** - * \brief Returns the dino the character is riding - * \param player_controller Player - * \return APrimalDinoCharacter* - */ - static APrimalDinoCharacter* GetRidingDino(AShooterPlayerController* player_controller) - { - return player_controller && player_controller->GetPlayerCharacter() - ? player_controller->GetPlayerCharacter()->GetRidingDino() - : nullptr; - } - - /** - * \brief Returns the position of a player - * \param player_controller Player - * \return FVector - */ - static FVector GetPosition(APlayerController* player_controller) - { - return player_controller ? player_controller->DefaultActorLocationField() : FVector{0, 0, 0}; - } - - /** - * \brief Teleport one player to another - * \param me Player - * \param him Other Player - * \param check_for_dino If set true prevents players teleporting with dino's or teleporting to a player on a dino - * \param max_dist Is the max distance the characters can be away from each other -1 is disabled - */ - static std::optional TeleportToPlayer(AShooterPlayerController* me, AShooterPlayerController* him, - bool check_for_dino, float max_dist = -1) - { - if (!(me && him && me->GetPlayerCharacter() && him->GetPlayerCharacter() - && !me->GetPlayerCharacter()->IsDead() && !him->GetPlayerCharacter()->IsDead()) - ) - { - return "One of players is dead"; - } - - if (check_for_dino && (IsRidingDino(me) || IsRidingDino(him))) - { - return "One of players is riding a dino"; - } - - if (max_dist != -1 && FVector::Distance(GetPosition(me), GetPosition(him)) > max_dist) - { - return "Person is too far away"; - } - - const FVector pos = him->DefaultActorLocationField(); - - me->SetPlayerPos(pos.X, pos.Y, pos.Z); - - return {}; - } - - /** - * \brief Teleports player to the given position - * \param player_controller Player - * \param pos New position - */ - static bool TeleportToPos(AShooterPlayerController* player_controller, const FVector& pos) - { - if (player_controller && !IsPlayerDead(player_controller)) - { - player_controller->SetPlayerPos(pos.X, pos.Y, pos.Z); - return true; - } - - return false; - } - - - /** - * \brief Counts a specific items quantity - * \param player_controller Player - * \param item_name The name of the item you want to count the quantity of - * \return On success, the function returns amount of items player has. Returns -1 if the function has failed. - */ - static int GetInventoryItemCount(AShooterPlayerController* player_controller, const FString& item_name) - { - if (!player_controller) - return -1; - - UPrimalInventoryComponent* inventory_component = - player_controller->GetPlayerCharacter()->MyInventoryComponentField(); - if (!inventory_component) - return -1; - - FString name; - int item_count = 0; - - for (UPrimalItem* item : inventory_component->InventoryItemsField()) - { - item->GetItemName(&name, true, false, nullptr); - - if (name.Equals(item_name, ESearchCase::IgnoreCase)) - item_count += item->GetItemQuantity(); - } - - return item_count; - } - - /** - * \brief Returns IP address of player - */ - static FString GetIPAddress(AShooterPlayerController* player) - { - FString ip_address = ""; - - if (player) - { - AShooterPlayerState* player_state = static_cast(player->PlayerStateField()); - - if (player_state && player_state->MyPlayerDataStructField()) - ip_address = player_state->MyPlayerDataStructField()->SavedNetworkAddressField(); - } - - return ip_address; - } - - /** - * \brief Returns blueprint from UPrimalItem - */ - static FString GetItemBlueprint(UPrimalItem* item) - { - if (item) - { - FString path_name; - item->ClassField()->GetDefaultObject(true)->GetFullName(&path_name, nullptr); - - if (int find_index = 0; path_name.FindChar(' ', find_index)) - { - path_name = "Blueprint'" + path_name.Mid(find_index + 1, - path_name.Len() - (find_index + (path_name.EndsWith( - "_C", ESearchCase::CaseSensitive) - ? 3 - : 1))) + "'"; - return path_name.Replace(L"Default__", L"", ESearchCase::CaseSensitive); - } - } - - return FString(""); - } - - /** - * \brief Returns true if player is dead, false otherwise - */ - static bool IsPlayerDead(AShooterPlayerController* player) - { - if (!player || !player->GetPlayerCharacter()) - return true; - - return player->GetPlayerCharacter()->IsDead(); - } - - static uint64 GetPlayerID(APrimalCharacter* character) - { - AShooterCharacter* shooter_character = static_cast(character); - return shooter_character && shooter_character->GetPlayerData() ? shooter_character->GetPlayerData()->MyDataField()->PlayerDataIDField() : -1; - } - - static uint64 GetPlayerID(AController* controller) - { - AShooterPlayerController* player = static_cast(controller); - return player ? player->LinkedPlayerIDField() : 0; - } - - uint64 GetSteamIDForPlayerID(int player_id) const - { - uint64 steam_id = GetShooterGameMode()->GetSteamIDForPlayerID(player_id); - if (steam_id == 0) - { - const auto& player_controllers = GetWorld()->PlayerControllerListField(); - for (TWeakObjectPtr player_controller : player_controllers) - { - AShooterPlayerController* shooter_pc = static_cast(player_controller.Get()); - if (shooter_pc && shooter_pc->LinkedPlayerIDField() == player_id) - { - APlayerState* player_state = shooter_pc->PlayerStateField(); - if (player_state) - { - FUniqueNetIdSteam* steam_net_id = static_cast(player_state->UniqueIdField().UniqueNetId.Get()); - steam_id = steam_net_id->UniqueNetId; - break; - } - } - } - - GetShooterGameMode()->AddPlayerID(player_id, steam_id); - } - - return steam_id; - } - }; - - ARK_API IApiUtils& APIENTRY GetApiUtils(); -} +#ifdef ARK_GAME +#include "Ark/ArkApiUtils.h" +#else +#include "Atlas/AtlasApiUtils.h" +#endif diff --git a/version/Core/Public/ICommands.h b/version/Core/Public/ICommands.h index bcf32659..603d2088 100644 --- a/version/Core/Public/ICommands.h +++ b/version/Core/Public/ICommands.h @@ -1,7 +1,12 @@ #pragma once #include + +#ifdef ARK_GAME #include +#else +#include +#endif namespace ArkApi { @@ -32,7 +37,8 @@ namespace ArkApi * \param callback Callback function */ virtual void AddRconCommand(const FString& command, - const std::function& callback) = 0; + const std::function& callback) = + 0; /** * \brief Added function will be called every frame @@ -101,4 +107,4 @@ namespace ArkApi }; ARK_API ICommands& APIENTRY GetCommands(); -} +} // namespace ArkApi diff --git a/version/Core/Public/IHooks.h b/version/Core/Public/IHooks.h index 99ca7279..170ab76e 100644 --- a/version/Core/Public/IHooks.h +++ b/version/Core/Public/IHooks.h @@ -36,4 +36,4 @@ namespace ArkApi }; ARK_API IHooks& APIENTRY GetHooks(); -} +} // namespace ArkApi diff --git a/version/Core/Public/Logger/Logger.h b/version/Core/Public/Logger/Logger.h index f5357ae4..088032ee 100644 --- a/version/Core/Public/Logger/Logger.h +++ b/version/Core/Public/Logger/Logger.h @@ -40,4 +40,3 @@ class Log std::shared_ptr logger_; }; - diff --git a/version/Core/Public/Requests.h b/version/Core/Public/Requests.h index 898f770c..b0954032 100644 --- a/version/Core/Public/Requests.h +++ b/version/Core/Public/Requests.h @@ -1,43 +1,85 @@ #pragma once -#include +#include -namespace ArkApi -{ - struct Request - { - TSharedRef request; - std::function, bool)> callback; - bool completed; - bool remove_manually; - - bool operator==(const Request& rhs) const - { - return request == rhs.request; - } - }; +#include "API/Base.h" +namespace API +{ class Requests { public: ARK_API static Requests& Get(); + Requests(); + ~Requests(); + Requests(const Requests&) = delete; Requests(Requests&&) = delete; Requests& operator=(const Requests&) = delete; Requests& operator=(Requests&&) = delete; - ARK_API bool CreateRequest(FString& url, FString& verb, - const std::function, bool)>& callback, - FString content = L"", bool auto_remove = true, FString header_value = "text/html"); - ARK_API void RemoveRequest(const TSharedRef& request); + /** + * \brief Creates an async GET Request that runs in another thread but calls the callback from the main thread + * \param request URL + * \param the callback function, binds sucess(bool) and result(string), result is error code if request failed and the response otherwise + * \param included headers + */ + ARK_API bool CreateGetRequest(const std::string& url, + const std::function& callback, + std::vector headers = {}); - private: - ARK_API Requests(); - ARK_API ~Requests(); + /** + * \brief Creates an async POST Request with application/x-www-form-urlencoded content type that runs in another thread but calls the callback from the main thread + * \param request URL + * \param the callback function, binds sucess(bool) and result(string), result is error code if request failed and the response otherwise + * \param data to post + * \param included headers + */ + ARK_API bool CreatePostRequest(const std::string& url, + const std::function& callback, + const std::string& post_data, + std::vector headers = {}); - ARK_API static void Update(); + /** + * \brief Creates an async POST Request that runs in another thread but calls the callback from the main thread + * \param request URL + * \param the callback function, binds sucess(bool) and result(string), result is error code if request failed and the response otherwise + * \param data to post + * \param content type + * \param included headers + */ + ARK_API bool CreatePostRequest(const std::string& url, + const std::function& callback, + const std::string& post_data, + const std::string& content_type, + std::vector headers = {}); - std::vector requests_; + /** + * \brief Creates an async POST Request that runs in another thread but calls the callback from the main thread + * \param request URL + * \param the callback function, binds sucess(bool) and result(string), result is error code if request failed and the response otherwise + * \param data key + * \param data value + * \param included headers + */ + ARK_API bool CreatePostRequest(const std::string& url, + const std::function& callback, + const std::vector& post_ids, + const std::vector& post_data, + std::vector headers = {}); + + /** + * \brief Creates an async DELETE Request that runs in another thread but calls the callback from the main thread + * \param request URL + * \param the callback function, binds sucess(bool) and result(string), result is error code if request failed and the response otherwise + * \param included headers + */ + ARK_API bool CreateDeleteRequest(const std::string& url, + const std::function& callback, + std::vector headers = {}); + private: + class impl; + std::unique_ptr pimpl; }; -} +} // namespace API diff --git a/version/Core/Public/Timer.h b/version/Core/Public/Timer.h new file mode 100644 index 00000000..0206f70e --- /dev/null +++ b/version/Core/Public/Timer.h @@ -0,0 +1,84 @@ +#pragma once + +#include +#include + +#include "API/Base.h" + +namespace API +{ + class Timer + { + public: + ARK_API static Timer& Get(); + + Timer(const Timer&) = delete; + Timer(Timer&&) = delete; + Timer& operator=(const Timer&) = delete; + Timer& operator=(Timer&&) = delete; + + /** + * \brief Executes function after X seconds + * \tparam Func Callback function type + * \tparam Args Callback arguments types + * \param callback Callback function + * \param delay Delay in seconds + * \param args Callback arguments + */ + template + void DelayExecute(const Func& callback, int delay, Args&&... args) + { + DelayExecuteInternal(std::bind(callback, std::forward(args)...), delay); + } + + /** + * \brief Executes function every X seconds + * \tparam Func Callback function type + * \tparam Args Callback arguments types + * \param callback Callback function + * \param execution_interval Delay between executions in seconds + * \param execution_counter Amount of times to execute function, -1 for unlimited + * \param async If true, function will be executed in the new thread + * \param args Callback arguments + */ + template + void RecurringExecute(const Func& callback, int execution_interval, + int execution_counter, bool async, Args&&... args) + { + RecurringExecuteInternal(std::bind(callback, std::forward(args)...), execution_interval, + execution_counter, async); + } + + private: + struct TimerFunc + { + TimerFunc(const std::chrono::time_point& next_time, + std::function callback, + bool exec_once, int execution_counter, int execution_interval) + : next_time(next_time), + callback(move(callback)), + exec_once(exec_once), + execution_counter(execution_counter), + execution_interval(execution_interval) + { + } + + std::chrono::time_point next_time; + std::function callback; + bool exec_once; + int execution_counter; + int execution_interval; + }; + + Timer(); + ~Timer(); + + ARK_API void DelayExecuteInternal(const std::function& callback, int delay_seconds); + ARK_API void RecurringExecuteInternal(const std::function& callback, int execution_interval, + int execution_counter, bool async); + + void Update(); + + std::vector> timer_funcs_; + }; +} // namespace API diff --git a/version/Core/Public/Tools.h b/version/Core/Public/Tools.h index 0a76f42e..1bd0b468 100644 --- a/version/Core/Public/Tools.h +++ b/version/Core/Public/Tools.h @@ -1,14 +1,15 @@ #pragma once -#include #include +#include + namespace ArkApi::Tools { ARK_API std::string GetCurrentDir(); - ARK_API std::wstring ConvertToWideStr(const std::string& text); - ARK_API std::string ConvertToAnsiStr(const std::wstring& text); + [[deprecated]] ARK_API std::wstring ConvertToWideStr(const std::string& text); + [[deprecated]] ARK_API std::string ConvertToAnsiStr(const std::wstring& text); /** * \brief Converts a wide Unicode string to an UTF8 string @@ -28,5 +29,11 @@ namespace ArkApi::Tools /** * \brief Returns Current Running Api Version */ - ARK_API std::string GetApiVer(); + ARK_API float GetApiVersion(); +} // namespace Tools // namespace ArkApi + +// For back compatibility +namespace API +{ + namespace Tools = ArkApi::Tools; } diff --git a/version/Core/Public/json.hpp b/version/Core/Public/json.hpp new file mode 100644 index 00000000..da4e209a --- /dev/null +++ b/version/Core/Public/json.hpp @@ -0,0 +1,26639 @@ +/* + __ _____ _____ _____ + __| | __| | | | JSON for Modern C++ +| | |__ | | | | | | version 3.10.2 +|_____|_____|_____|_|___| https://github.com/nlohmann/json + +Licensed under the MIT License . +SPDX-License-Identifier: MIT +Copyright (c) 2013-2019 Niels Lohmann . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#define NLOHMANN_JSON_VERSION_MAJOR 3 +#define NLOHMANN_JSON_VERSION_MINOR 10 +#define NLOHMANN_JSON_VERSION_PATCH 2 + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO +#include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // accumulate +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include + + +#include +#include + +// #include + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include + + +#include // exception +#include // runtime_error +#include // to_string +#include // vector + +// #include + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +namespace nlohmann +{ + namespace detail + { + /////////////////////////// + // JSON type enumeration // + /////////////////////////// + + /*! + @brief the JSON type enumeration + + This enumeration collects the different JSON types. It is internally used to + distinguish the stored values, and the functions @ref basic_json::is_null(), + @ref basic_json::is_object(), @ref basic_json::is_array(), + @ref basic_json::is_string(), @ref basic_json::is_boolean(), + @ref basic_json::is_number() (with @ref basic_json::is_number_integer(), + @ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), + @ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and + @ref basic_json::is_structured() rely on it. + + @note There are three enumeration entries (number_integer, number_unsigned, and + number_float), because the library distinguishes these three types for numbers: + @ref basic_json::number_unsigned_t is used for unsigned integers, + @ref basic_json::number_integer_t is used for signed integers, and + @ref basic_json::number_float_t is used for floating-point numbers or to + approximate integers which do not fit in the limits of their respective type. + + @sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON + value with the default value for a given type + + @since version 1.0.0 + */ + enum class value_t : std::uint8_t + { + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function + }; + + /*! + @brief comparison operator for JSON types + + Returns an ordering that is similar to Python: + - order: null < boolean < number < object < array < string < binary + - furthermore, each type is not smaller than itself + - discarded values are not comparable + - binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + + @since version 1.0.0 + */ + inline bool operator<(const value_t lhs, const value_t rhs) noexcept + { + static constexpr std::array order = { { + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; + } + } // namespace detail +} // namespace nlohmann + +// #include + + +#include +// #include + + +#include // pair +// #include + + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + * + * To the extent possible under law, the author(s) have dedicated all + * copyright and related and neighboring rights to this software to + * the public domain worldwide. This software is distributed without + * any warranty. + * + * For details, see . + * SPDX-License-Identifier: CC0-1.0 + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) +#undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) +#undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) +#undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) +#undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) +#undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) +#undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) +#undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) +#undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) +#undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) +#undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) +#undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) +#undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) +#define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) +#define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) +#undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) +#define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) +#undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) +#define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) +#define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) +#define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) +#undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) +#define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) +#define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) +#define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else +#define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) +#undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) +#define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) +#define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) +#undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) +#define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) +#undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) +#define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) +#undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) +#define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) +#undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) +#define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) +#undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) +#define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) +#undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) +#define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) +#define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) +#define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) +#define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) +#undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) +#define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) +#undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) +#define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) +#undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) +#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) +#undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) +#define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) +#define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) +#undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) +#define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) +#undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) +#define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) +#define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) +#define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) +#undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) +#define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) +#undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) +#define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) +#undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) +#define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) +#undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) +#define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) +#undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) +#define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) +#undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) +#define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) +#undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) +#define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) +#undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) +#define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) +#undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) +#define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) +#undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) +#define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) +#undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) +#define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) +#undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) +#define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) +#undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) +#define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) +#undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) +#define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) +#undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) +#define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) +#undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) +#if defined(_RELEASE_PATCHLEVEL) +#define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) +#else +#define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) +#endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) +#undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) +#define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) +#undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) +#if __VER__ > 1000 +#define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) +#else +#define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) +#endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) +#undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) +#define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) +#undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) +#define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) +#undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) +#define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) +#undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) +#define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) +#undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) +#define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) +#undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) +#define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) +#undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) +#define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) +#undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) +#define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) +#undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) +#define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) +#undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) +#define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) +#undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) +#define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) +#undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) +#define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) +#undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) +#define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else +#define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) +#undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) +#undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) +#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else +#define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) +#undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) +#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else +#define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) +#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) +#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else +#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) +#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) +#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) +#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else +#define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) +#undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) +#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else +#define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) +#undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) +#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else +#define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) +#undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) +#define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else +#define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) +#undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) +#define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else +#define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) +#undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) +#define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else +#define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) +#undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) +#define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else +#define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) +#undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) +#define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else +#define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) +#undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) +#define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else +#define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) +#undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) +#define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else +#define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) +#undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) +#define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else +#define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) +#undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) +#define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else +#define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) +#undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) +#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else +#define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) +#undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) +#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else +#define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) +#undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) +#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else +#define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) +#undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) +#define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else +#define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) +#undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) +#define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else +#define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) +#undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) +#define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else +#define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) +#define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) +#define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else +#define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) +#undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) +#undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) +#define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) +#define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") +#define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else +#define JSON_HEDLEY_DIAGNOSTIC_PUSH +#define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + + /* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) +#undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) +#undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) +#define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else +#define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) +#undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) +#define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else +#define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) +#undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else +#define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) +#undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) +#undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) +#define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +#define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else +#define JSON_HEDLEY_DEPRECATED(since) +#define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) +#undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else +#define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) +#undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) +#undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) +#define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) +#define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) +#define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ +#define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ +#define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else +#define JSON_HEDLEY_WARN_UNUSED_RESULT +#define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) +#undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else +#define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) +#undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) +#define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +#define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +#define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) +#define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) +#define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) +#define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else +#define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) +#undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) +#define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else +#define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) +#undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) +#undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) +#undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) +#define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) +#if defined(__cplusplus) +#define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) +#else +#define JSON_HEDLEY_ASSUME(expr) _nassert(expr) +#endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) +#define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) +#if defined(JSON_HEDLEY_UNREACHABLE) +#define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) +#else +#define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) +#endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) +#if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) +#define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) +#else +#define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() +#endif +#else +#define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) +#define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") +#pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) +#pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) +#if defined(__clang__) +#pragma clang diagnostic ignored "-Wvariadic-macros" +#elif defined(JSON_HEDLEY_GCC_VERSION) +#pragma GCC diagnostic ignored "-Wvariadic-macros" +#endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) +#undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) +#define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else +#define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) +#undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) +#define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) +#define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) +#define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else +#define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) +#undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) +#if __cplusplus >= 201103L +#define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) +#endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) +#define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) +#undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) +#undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) +#undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) +#undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) +#define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) +#define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) +#undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +#define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_MALLOC __declspec(restrict) +#else +#define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) +#undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) +#undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +#define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else +#define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) +#undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) +#define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) +#define JSON_HEDLEY_RESTRICT _Restrict +#else +#define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) +#undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) +#define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) +#define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_INLINE __inline +#else +#define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) +#undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) +#undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +#define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) +#define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) +#define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +#define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) +#define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) +#define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else +#define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) +#undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) +#undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) +#undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) +#undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) +#define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else +#define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) +#undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) +#define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) +#define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ +#define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else +#define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) +#undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ +#define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else +#define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) +#undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) +#define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else +#define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) +#undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) +#undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) +#undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +#define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) +#define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else +#include +#define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) +#define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else +#include +#define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) +#if !defined(JSON_HEDLEY_IS_CONSTANT) +#define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) +#endif +#define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else +#if !defined(JSON_HEDLEY_IS_CONSTANT) +#define JSON_HEDLEY_IS_CONSTANT(expr) (0) +#endif +#define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) +#undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) +#undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) +#undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) +#define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { +#define JSON_HEDLEY_END_C_DECLS } +#define JSON_HEDLEY_C_DECL extern "C" +#else +#define JSON_HEDLEY_BEGIN_C_DECLS +#define JSON_HEDLEY_END_C_DECLS +#define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) +#undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) +#undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) +#if __cplusplus >= 201103L +#define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) +#elif defined(NULL) +#define JSON_HEDLEY_NULL NULL +#else +#define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) +#endif +#elif defined(NULL) +#define JSON_HEDLEY_NULL NULL +#else +#define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) +#undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) +#undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) +#undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) +#undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) +#undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) +#define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else +#define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) +#undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) +#undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +#define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else +#define JSON_HEDLEY_EMPTY_BASES +#endif + + /* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) +#undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) +#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else +#define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) +#undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) +#undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) +#undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) +#undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) +#undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) +#undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) +#undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) +#if defined(__clang__) +#if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 +#error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" +#endif +#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) +#if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 +#error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" +#endif +#endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) +#if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) +#define JSON_HAS_CPP_20 +#define JSON_HAS_CPP_17 +#define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 +#define JSON_HAS_CPP_17 +#define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) +#define JSON_HAS_CPP_14 +#endif +// the cpp 11 flag is always specified because it is the minimal required version +#define JSON_HAS_CPP_11 +#endif + +// disable documentation warnings on clang +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdocumentation" +#pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow to disable exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) +#define JSON_THROW(exception) throw exception +#define JSON_TRY try +#define JSON_CATCH(exception) catch(exception) +#define JSON_INTERNAL_CATCH(exception) catch(exception) +#else +#include +#define JSON_THROW(exception) std::abort() +#define JSON_TRY if(true) +#define JSON_CATCH(exception) if(false) +#define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) +#undef JSON_THROW +#define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) +#undef JSON_TRY +#define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) +#undef JSON_CATCH +#define JSON_CATCH JSON_CATCH_USER +#undef JSON_INTERNAL_CATCH +#define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) +#undef JSON_INTERNAL_CATCH +#define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow to override assert +#if !defined(JSON_ASSERT) +#include // assert +#define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) +#define JSON_PRIVATE_UNLESS_TESTED public +#else +#define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS +#define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS +#define JSON_EXPLICIT +#else +#define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DIAGNOSTICS +#define JSON_DIAGNOSTICS 0 +#endif + + +namespace nlohmann +{ + namespace detail + { + + /*! + @brief replace all occurrences of a substring by another string + + @param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t + @param[in] f the substring to replace with @a t + @param[in] t the string to replace @a f + + @pre The search string @a f must not be empty. **This precondition is + enforced with an assertion.** + + @since version 2.0.0 + */ + inline void replace_substring(std::string& s, const std::string& f, + const std::string& t) + { + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != std::string::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + { + } + } + + /*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ + inline std::string escape(std::string s) + { + replace_substring(s, "~", "~0"); + replace_substring(s, "/", "~1"); + return s; + } + + /*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ + static void unescape(std::string& s) + { + replace_substring(s, "~1", "/"); + replace_substring(s, "~0", "~"); + } + + } // namespace detail +} // namespace nlohmann + +// #include + + +#include // size_t + +namespace nlohmann +{ + namespace detail + { + /// struct to capture the start position of the current token + struct position_t + { + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } + }; + + } // namespace detail +} // namespace nlohmann + +// #include + + +namespace nlohmann +{ + namespace detail + { + //////////////// + // exceptions // + //////////////// + + /*! + @brief general exception of the @ref basic_json class + + This class is an extension of `std::exception` objects with a member @a id for + exception ids. It is used as the base class for all exceptions thrown by the + @ref basic_json class. This class can hence be used as "wildcard" to catch + exceptions. + + Subclasses: + - @ref parse_error for exceptions indicating a parse error + - @ref invalid_iterator for exceptions indicating errors with iterators + - @ref type_error for exceptions indicating executing a member function with + a wrong type + - @ref out_of_range for exceptions indicating access out of the defined range + - @ref other_error for exceptions indicating other library errors + + @internal + @note To have nothrow-copy-constructible exceptions, we internally use + `std::runtime_error` which can cope with arbitrary-length error messages. + Intermediate strings are built with static functions and then passed to + the actual constructor. + @endinternal + + @liveexample{The following code shows how arbitrary library exceptions can be + caught.,exception} + + @since version 3.0.0 + */ + class exception : public std::exception + { + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; // NOLINT(cppcoreguidelines-non-private-member-variables-in-classes) + + protected: + JSON_HEDLEY_NON_NULL(3) + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} + + static std::string name(const std::string& ename, int id_) + { + return "[json.exception." + ename + "." + std::to_string(id_) + "] "; + } + + template + static std::string diagnostics(const BasicJsonType& leaf_element) + { +#if JSON_DIAGNOSTICS + std::vector tokens; + for (const auto* current = &leaf_element; current->m_parent != nullptr; current = current->m_parent) + { + switch (current->m_parent->type()) + { + case value_t::array: + { + for (std::size_t i = 0; i < current->m_parent->m_value.array->size(); ++i) + { + if (¤t->m_parent->m_value.array->operator[](i) == current) + { + tokens.emplace_back(std::to_string(i)); + break; + } + } + break; + } + + case value_t::object: + { + for (const auto& element : *current->m_parent->m_value.object) + { + if (&element.second == current) + { + tokens.emplace_back(element.first.c_str()); + break; + } + } + break; + } + + case value_t::null: // LCOV_EXCL_LINE + case value_t::string: // LCOV_EXCL_LINE + case value_t::boolean: // LCOV_EXCL_LINE + case value_t::number_integer: // LCOV_EXCL_LINE + case value_t::number_unsigned: // LCOV_EXCL_LINE + case value_t::number_float: // LCOV_EXCL_LINE + case value_t::binary: // LCOV_EXCL_LINE + case value_t::discarded: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + break; // LCOV_EXCL_LINE + } + } + + if (tokens.empty()) + { + return ""; + } + + return "(" + std::accumulate(tokens.rbegin(), tokens.rend(), std::string{}, + [](const std::string& a, const std::string& b) + { + return a + "/" + detail::escape(b); + }) + ") "; +#else + static_cast(leaf_element); + return ""; +#endif + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; + }; + + /*! + @brief exception indicating a parse error + + This exception is thrown by the library when a parse error occurs. Parse errors + can occur during the deserialization of JSON text, CBOR, MessagePack, as well + as when using JSON Patch. + + Member @a byte holds the byte index of the last read character in the input + file. + + Exceptions have ids 1xx. + + name / id | example message | description + ------------------------------ | --------------- | ------------------------- + json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. + json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. + json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. + json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. + json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. + json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. + json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. + json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. + json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. + json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. + json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. + json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. + json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet). + json.exception.parse_error.115 | parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A | A UBJSON high-precision number could not be parsed. + + @note For an input with n bytes, 1 is the index of the first character and n+1 + is the index of the terminating null byte or the end of file. This also + holds true when reading a byte vector (CBOR or MessagePack). + + @liveexample{The following code shows how a `parse_error` exception can be + caught.,parse_error} + + @sa - @ref exception for the base class of the library exceptions + @sa - @ref invalid_iterator for exceptions indicating errors with iterators + @sa - @ref type_error for exceptions indicating executing a member function with + a wrong type + @sa - @ref out_of_range for exceptions indicating access out of the defined range + @sa - @ref other_error for exceptions indicating other library errors + + @since version 3.0.0 + */ + class parse_error : public exception + { + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] pos the position where the error occurred (or with + chars_read_total=0 if the position cannot be + determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + template + static parse_error create(int id_, const position_t& pos, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + position_string(pos) + ": " + exception::diagnostics(context) + what_arg; + return parse_error(id_, pos.chars_read_total, w.c_str()); + } + + template + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("parse_error", id_) + "parse error" + + (byte_ != 0 ? (" at byte " + std::to_string(byte_)) : "") + + ": " + exception::diagnostics(context) + what_arg; + return parse_error(id_, byte_, w.c_str()); + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} + + static std::string position_string(const position_t& pos) + { + return " at line " + std::to_string(pos.lines_read + 1) + + ", column " + std::to_string(pos.chars_read_current_line); + } + }; + + /*! + @brief exception indicating errors with iterators + + This exception is thrown if iterators passed to a library function do not match + the expected semantics. + + Exceptions have ids 2xx. + + name / id | example message | description + ----------------------------------- | --------------- | ------------------------- + json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. + json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. + json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. + json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. + json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. + json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. + json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. + json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. + json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. + json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. + json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. + json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. + json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. + json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). + + @liveexample{The following code shows how an `invalid_iterator` exception can be + caught.,invalid_iterator} + + @sa - @ref exception for the base class of the library exceptions + @sa - @ref parse_error for exceptions indicating a parse error + @sa - @ref type_error for exceptions indicating executing a member function with + a wrong type + @sa - @ref out_of_range for exceptions indicating access out of the defined range + @sa - @ref other_error for exceptions indicating other library errors + + @since version 3.0.0 + */ + class invalid_iterator : public exception + { + public: + template + static invalid_iterator create(int id_, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("invalid_iterator", id_) + exception::diagnostics(context) + what_arg; + return invalid_iterator(id_, w.c_str()); + } + + private: + JSON_HEDLEY_NON_NULL(3) + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} + }; + + /*! + @brief exception indicating executing a member function with a wrong type + + This exception is thrown in case of a type error; that is, a library function is + executed on a JSON value whose type does not match the expected semantics. + + Exceptions have ids 3xx. + + name / id | example message | description + ----------------------------- | --------------- | ------------------------- + json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. + json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. + json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t &. + json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. + json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. + json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. + json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. + json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. + json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. + json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. + json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. + json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. + json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. + json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. + json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. + json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | + json.exception.type_error.317 | JSON value cannot be serialized to requested format | The dynamic type of the object cannot be represented in the requested serialization format (e.g. a raw `true` or `null` JSON object cannot be serialized to BSON) | + + @liveexample{The following code shows how a `type_error` exception can be + caught.,type_error} + + @sa - @ref exception for the base class of the library exceptions + @sa - @ref parse_error for exceptions indicating a parse error + @sa - @ref invalid_iterator for exceptions indicating errors with iterators + @sa - @ref out_of_range for exceptions indicating access out of the defined range + @sa - @ref other_error for exceptions indicating other library errors + + @since version 3.0.0 + */ + class type_error : public exception + { + public: + template + static type_error create(int id_, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("type_error", id_) + exception::diagnostics(context) + what_arg; + return type_error(id_, w.c_str()); + } + + private: + JSON_HEDLEY_NON_NULL(3) + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} + }; + + /*! + @brief exception indicating access out of the defined range + + This exception is thrown in case a library function is called on an input + parameter that exceeds the expected range, for instance in case of array + indices or nonexisting object keys. + + Exceptions have ids 4xx. + + name / id | example message | description + ------------------------------- | --------------- | ------------------------- + json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. + json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. + json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. + json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. + json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. + json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. + json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0) | + json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. | + json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string | + + @liveexample{The following code shows how an `out_of_range` exception can be + caught.,out_of_range} + + @sa - @ref exception for the base class of the library exceptions + @sa - @ref parse_error for exceptions indicating a parse error + @sa - @ref invalid_iterator for exceptions indicating errors with iterators + @sa - @ref type_error for exceptions indicating executing a member function with + a wrong type + @sa - @ref other_error for exceptions indicating other library errors + + @since version 3.0.0 + */ + class out_of_range : public exception + { + public: + template + static out_of_range create(int id_, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("out_of_range", id_) + exception::diagnostics(context) + what_arg; + return out_of_range(id_, w.c_str()); + } + + private: + JSON_HEDLEY_NON_NULL(3) + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} + }; + + /*! + @brief exception indicating other library errors + + This exception is thrown in case of errors that cannot be classified with the + other exception types. + + Exceptions have ids 5xx. + + name / id | example message | description + ------------------------------ | --------------- | ------------------------- + json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. + + @sa - @ref exception for the base class of the library exceptions + @sa - @ref parse_error for exceptions indicating a parse error + @sa - @ref invalid_iterator for exceptions indicating errors with iterators + @sa - @ref type_error for exceptions indicating executing a member function with + a wrong type + @sa - @ref out_of_range for exceptions indicating access out of the defined range + + @liveexample{The following code shows how an `other_error` exception can be + caught.,other_error} + + @since version 3.0.0 + */ + class other_error : public exception + { + public: + template + static other_error create(int id_, const std::string& what_arg, const BasicJsonType& context) + { + std::string w = exception::name("other_error", id_) + exception::diagnostics(context) + what_arg; + return other_error(id_, w.c_str()); + } + + private: + JSON_HEDLEY_NON_NULL(3) + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +namespace nlohmann +{ + namespace detail + { + + template + using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + + // the following utilities are natively available in C++14 + using std::enable_if_t; + using std::index_sequence; + using std::make_index_sequence; + using std::index_sequence_for; + +#else + + // alias templates to reduce boilerplate + template + using enable_if_t = typename std::enable_if::type; + + // The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h + // which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + + //// START OF CODE FROM GOOGLE ABSEIL + + // integer_sequence + // + // Class template representing a compile-time integer sequence. An instantiation + // of `integer_sequence` has a sequence of integers encoded in its + // type through its template arguments (which is a common need when + // working with C++11 variadic templates). `absl::integer_sequence` is designed + // to be a drop-in replacement for C++14's `std::integer_sequence`. + // + // Example: + // + // template< class T, T... Ints > + // void user_function(integer_sequence); + // + // int main() + // { + // // user_function's `T` will be deduced to `int` and `Ints...` + // // will be deduced to `0, 1, 2, 3, 4`. + // user_function(make_integer_sequence()); + // } + template + struct integer_sequence + { + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } + }; + + // index_sequence + // + // A helper template for an `integer_sequence` of `size_t`, + // `absl::index_sequence` is designed to be a drop-in replacement for C++14's + // `std::index_sequence`. + template + using index_sequence = integer_sequence; + + namespace utility_internal + { + + template + struct Extend; + + // Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. + template + struct Extend, SeqSize, 0> + { + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; + }; + + template + struct Extend, SeqSize, 1> + { + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; + }; + + // Recursion helper for 'make_integer_sequence'. + // 'Gen::type' is an alias for 'integer_sequence'. + template + struct Gen + { + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; + }; + + template + struct Gen + { + using type = integer_sequence; + }; + + } // namespace utility_internal + + // Compile-time sequences of integers + + // make_integer_sequence + // + // This template alias is equivalent to + // `integer_sequence`, and is designed to be a drop-in + // replacement for C++14's `std::make_integer_sequence`. + template + using make_integer_sequence = typename utility_internal::Gen::type; + + // make_index_sequence + // + // This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, + // and is designed to be a drop-in replacement for C++14's + // `std::make_index_sequence`. + template + using make_index_sequence = make_integer_sequence; + + // index_sequence_for + // + // Converts a typename pack into an index sequence of the same length, and + // is designed to be a drop-in replacement for C++14's + // `std::index_sequence_for()` + template + using index_sequence_for = make_index_sequence; + + //// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) + template struct priority_tag : priority_tag < N - 1 > {}; + template<> struct priority_tag<0> {}; + + // taken from ranges-v3 + template + struct static_const + { + static constexpr T value{}; + }; + + template + constexpr T static_const::value; + + } // namespace detail +} // namespace nlohmann + +// #include + + +namespace nlohmann +{ + namespace detail + { + // dispatching helper struct + template struct identity_tag {}; + } // namespace detail +} // namespace nlohmann + +// #include + + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple + +// #include + + +#include // random_access_iterator_tag + +// #include + + +namespace nlohmann +{ + namespace detail + { + template struct make_void + { + using type = void; + }; + template using void_t = typename make_void::type; + } // namespace detail +} // namespace nlohmann + +// #include + + +namespace nlohmann +{ + namespace detail + { + template + struct iterator_types {}; + + template + struct iterator_types < + It, + void_t> + { + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; + }; + + // This is required as some compilers implement std::iterator_traits in a way that + // doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. + template + struct iterator_traits + { + }; + + template + struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types + { + }; + + template + struct iterator_traits::value>> + { + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + +// #include + + +#include + +// #include + + +// https://en.cppreference.com/w/cpp/experimental/is_detected +namespace nlohmann +{ + namespace detail + { + struct nonesuch + { + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; + }; + + template class Op, + class... Args> + struct detector + { + using value_t = std::false_type; + using type = Default; + }; + + template class Op, class... Args> + struct detector>, Op, Args...> + { + using value_t = std::true_type; + using type = Op; + }; + + template class Op, class... Args> + using is_detected = typename detector::value_t; + + template class Op, class... Args> + struct is_detected_lazy : is_detected { }; + + template class Op, class... Args> + using detected_t = typename detector::type; + + template class Op, class... Args> + using detected_or = detector; + + template class Op, class... Args> + using detected_or_t = typename detected_or::type; + + template class Op, class... Args> + using is_detected_exact = std::is_same>; + + template class Op, class... Args> + using is_detected_convertible = + std::is_convertible, To>; + } // namespace detail +} // namespace nlohmann + +// #include +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ +#define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + +#include // int64_t, uint64_t +#include // map +#include // allocator +#include // string +#include // vector + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector> + class basic_json; + + /*! + @brief JSON Pointer + + A JSON pointer defines a string syntax for identifying a specific value + within a JSON document. It can be used with functions `at` and + `operator[]`. Furthermore, JSON pointers are the base for JSON patches. + + @sa [RFC 6901](https://tools.ietf.org/html/rfc6901) + + @since version 2.0.0 + */ + template + class json_pointer; + + /*! + @brief default JSON class + + This type is the default specialization of the @ref basic_json class which + uses the standard template types. + + @since version 1.0.0 + */ + using json = basic_json<>; + + template + struct ordered_map; + + /*! + @brief ordered JSON class + + This type preserves the insertion order of object keys. + + @since version 3.9.0 + */ + using ordered_json = basic_json; + +} // namespace nlohmann + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +namespace nlohmann +{ + /*! + @brief detail namespace with internal helper functions + + This namespace collects functions that should not be exposed, + implementations of some @ref basic_json methods, and meta-programming helpers. + + @since version 2.1.0 + */ + namespace detail + { + ///////////// + // helpers // + ///////////// + + // Note to maintainers: + // + // Every trait in this file expects a non CV-qualified type. + // The only exceptions are in the 'aliases for detected' section + // (i.e. those of the form: decltype(T::member_function(std::declval()))) + // + // In this case, T has to be properly CV-qualified to constraint the function arguments + // (e.g. to_json(BasicJsonType&, const T&)) + + template struct is_basic_json : std::false_type {}; + + NLOHMANN_BASIC_JSON_TPL_DECLARATION + struct is_basic_json : std::true_type {}; + + ////////////////////// + // json_ref helpers // + ////////////////////// + + template + class json_ref; + + template + struct is_json_ref : std::false_type {}; + + template + struct is_json_ref> : std::true_type {}; + + ////////////////////////// + // aliases for detected // + ////////////////////////// + + template + using mapped_type_t = typename T::mapped_type; + + template + using key_type_t = typename T::key_type; + + template + using value_type_t = typename T::value_type; + + template + using difference_type_t = typename T::difference_type; + + template + using pointer_t = typename T::pointer; + + template + using reference_t = typename T::reference; + + template + using iterator_category_t = typename T::iterator_category; + + template + using iterator_t = typename T::iterator; + + template + using to_json_function = decltype(T::to_json(std::declval()...)); + + template + using from_json_function = decltype(T::from_json(std::declval()...)); + + template + using get_template_function = decltype(std::declval().template get()); + + // trait checking if JSONSerializer::from_json(json const&, udt&) exists + template + struct has_from_json : std::false_type {}; + + // trait checking if j.get is valid + // use this trait instead of std::is_constructible or std::is_convertible, + // both rely on, or make use of implicit conversions, and thus fail when T + // has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) + template + struct is_getable + { + static constexpr bool value = is_detected::value; + }; + + template + struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> + { + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; + }; + + // This trait checks if JSONSerializer::from_json(json const&) exists + // this overload is used for non-default-constructible user-defined-types + template + struct has_non_default_from_json : std::false_type {}; + + template + struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> + { + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; + }; + + // This trait checks if BasicJsonType::json_serializer::to_json exists + // Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. + template + struct has_to_json : std::false_type {}; + + template + struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> + { + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; + }; + + + /////////////////// + // is_ functions // + /////////////////// + + // https://en.cppreference.com/w/cpp/types/conjunction + template struct conjunction : std::true_type { }; + template struct conjunction : B1 { }; + template + struct conjunction + : std::conditional, B1>::type {}; + + // https://en.cppreference.com/w/cpp/types/negation + template struct negation : std::integral_constant < bool, !B::value > { }; + + // Reimplementation of is_constructible and is_default_constructible, due to them being broken for + // std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). + // This causes compile errors in e.g. clang 3.5 or gcc 4.9. + template + struct is_default_constructible : std::is_default_constructible {}; + + template + struct is_default_constructible> + : conjunction, is_default_constructible> {}; + + template + struct is_default_constructible> + : conjunction, is_default_constructible> {}; + + template + struct is_default_constructible> + : conjunction...> {}; + + template + struct is_default_constructible> + : conjunction...> {}; + + + template + struct is_constructible : std::is_constructible {}; + + template + struct is_constructible> : is_default_constructible> {}; + + template + struct is_constructible> : is_default_constructible> {}; + + template + struct is_constructible> : is_default_constructible> {}; + + template + struct is_constructible> : is_default_constructible> {}; + + + template + struct is_iterator_traits : std::false_type {}; + + template + struct is_iterator_traits> + { + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; + }; + + // The following implementation of is_complete_type is taken from + // https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ + // and is written by Xiang Fan who agreed to using it in this library. + + template + struct is_complete_type : std::false_type {}; + + template + struct is_complete_type : std::true_type {}; + + template + struct is_compatible_object_type_impl : std::false_type {}; + + template + struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> + { + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; + }; + + template + struct is_compatible_object_type + : is_compatible_object_type_impl {}; + + template + struct is_constructible_object_type_impl : std::false_type {}; + + template + struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> + { + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); + }; + + template + struct is_constructible_object_type + : is_constructible_object_type_impl {}; + + template + struct is_compatible_string_type_impl : std::false_type {}; + + template + struct is_compatible_string_type_impl < + BasicJsonType, CompatibleStringType, + enable_if_t::value >> + { + static constexpr auto value = + is_constructible::value; + }; + + template + struct is_compatible_string_type + : is_compatible_string_type_impl {}; + + template + struct is_constructible_string_type_impl : std::false_type {}; + + template + struct is_constructible_string_type_impl < + BasicJsonType, ConstructibleStringType, + enable_if_t::value >> + { + static constexpr auto value = + is_constructible::value; + }; + + template + struct is_constructible_string_type + : is_constructible_string_type_impl {}; + + template + struct is_compatible_array_type_impl : std::false_type {}; + + template + struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < is_detected::value&& + is_detected::value && + // This is needed because json_reverse_iterator has a ::iterator type... + // Therefore it is detected as a CompatibleArrayType. + // The real fix would be to have an Iterable concept. + !is_iterator_traits < + iterator_traits>::value >> + { + static constexpr bool value = + is_constructible::value; + }; + + template + struct is_compatible_array_type + : is_compatible_array_type_impl {}; + + template + struct is_constructible_array_type_impl : std::false_type {}; + + template + struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + + template + struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + is_detected::value&& + is_detected::value&& + is_complete_type < + detected_t>::value >> + { + static constexpr bool value = + // This is needed because json_reverse_iterator has a ::iterator type, + // furthermore, std::back_insert_iterator (and other iterators) have a + // base class `iterator`... Therefore it is detected as a + // ConstructibleArrayType. The real fix would be to have an Iterable + // concept. + !is_iterator_traits>::value && + + (std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, typename ConstructibleArrayType::value_type >::value); + }; + + template + struct is_constructible_array_type + : is_constructible_array_type_impl {}; + + template + struct is_compatible_integer_type_impl : std::false_type {}; + + template + struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value && + !std::is_same::value >> + { + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; + }; + + template + struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + + template + struct is_compatible_type_impl : std::false_type {}; + + template + struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> + { + static constexpr bool value = + has_to_json::value; + }; + + template + struct is_compatible_type + : is_compatible_type_impl {}; + + template + struct is_constructible_tuple : std::false_type {}; + + template + struct is_constructible_tuple> : conjunction...> {}; + + // a naive helper to check if a type is an ordered_map (exploits the fact that + // ordered_map inherits capacity() from std::vector) + template + struct is_ordered_map + { + using one = char; + + struct two + { + char x[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + }; + + template static one test(decltype(&C::capacity)); + template static two test(...); + + enum { value = sizeof(test(nullptr)) == sizeof(char) }; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + }; + + // to avoid useless casts (see https://github.com/nlohmann/json/issues/2893#issuecomment-889152324) + template < typename T, typename U, enable_if_t < !std::is_same::value, int > = 0 > + T conditional_static_cast(U value) + { + return static_cast(value); + } + + template::value, int> = 0> + T conditional_static_cast(U value) + { + return value; + } + + } // namespace detail +} // namespace nlohmann + +// #include + + +namespace nlohmann +{ + namespace detail + { + template + void from_json(const BasicJsonType& j, typename std::nullptr_t& n) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_null())) + { + JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name()), j)); + } + n = nullptr; + } + + // overloads for basic_json template parameters + template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < std::is_arithmetic::value && + !std::is_same::value, + int > = 0 > + void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) + { + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + + case value_t::null: + case value_t::object: + case value_t::array: + case value_t::string: + case value_t::boolean: + case value_t::binary: + case value_t::discarded: + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()), j)); + } + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_boolean())) + { + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()), j)); + } + b = *j.template get_ptr(); + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); + } + s = *j.template get_ptr(); + } + + template < + typename BasicJsonType, typename ConstructibleStringType, + enable_if_t < + is_constructible_string_type::value && + !std::is_same::value, + int > = 0 > + void from_json(const BasicJsonType& j, ConstructibleStringType& s) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) + { + JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j)); + } + + s = *j.template get_ptr(); + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) + { + get_arithmetic_value(j, val); + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) + { + get_arithmetic_value(j, val); + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) + { + get_arithmetic_value(j, val); + } + + template::value, int> = 0> + void from_json(const BasicJsonType& j, EnumType& e) + { + typename std::underlying_type::type val; + get_arithmetic_value(j, val); + e = static_cast(val); + } + + // forward_list doesn't have an insert method + template::value, int> = 0> + void from_json(const BasicJsonType& j, std::forward_list& l) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + l.clear(); + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType& i) + { + return i.template get(); + }); + } + + // valarray doesn't have an insert method + template::value, int> = 0> + void from_json(const BasicJsonType& j, std::valarray& l) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + l.resize(j.size()); + std::transform(j.begin(), j.end(), std::begin(l), + [](const BasicJsonType& elem) + { + return elem.template get(); + }); + } + + template + auto from_json(const BasicJsonType& j, T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + -> decltype(j.template get(), void()) + { + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } + } + + template + void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/) + { + arr = *j.template get_ptr(); + } + + template + auto from_json_array_impl(const BasicJsonType& j, std::array& arr, + priority_tag<2> /*unused*/) + -> decltype(j.template get(), void()) + { + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } + } + + template::value, + int> = 0> + auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/) + -> decltype( + arr.reserve(std::declval()), + j.template get(), + void()) + { + using std::end; + + ConstructibleArrayType ret; + ret.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(ret, end(ret)), [](const BasicJsonType& i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); + arr = std::move(ret); + } + + template::value, + int> = 0> + void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, + priority_tag<0> /*unused*/) + { + using std::end; + + ConstructibleArrayType ret; + std::transform( + j.begin(), j.end(), std::inserter(ret, end(ret)), + [](const BasicJsonType& i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); + arr = std::move(ret); + } + + template < typename BasicJsonType, typename ConstructibleArrayType, + enable_if_t < + is_constructible_array_type::value && + !is_constructible_object_type::value && + !is_constructible_string_type::value && + !std::is_same::value && + !is_basic_json::value, + int > = 0 > + auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) + -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), + j.template get(), + void()) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + + from_json_array_impl(j, arr, priority_tag<3> {}); + } + + template < typename BasicJsonType, typename T, std::size_t... Idx > + std::array from_json_inplace_array_impl(BasicJsonType&& j, + identity_tag> /*unused*/, index_sequence /*unused*/) + { + return { { std::forward(j).at(Idx).template get()... } }; + } + + template < typename BasicJsonType, typename T, std::size_t N > + auto from_json(BasicJsonType&& j, identity_tag> tag) + -> decltype(from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {})) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + + return from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {}); + } + + template + void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_binary())) + { + JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(j.type_name()), j)); + } + + bin = *j.template get_ptr(); + } + + template::value, int> = 0> + void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_object())) + { + JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()), j)); + } + + ConstructibleObjectType ret; + const auto* inner_object = j.template get_ptr(); + using value_type = typename ConstructibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(ret, ret.begin()), + [](typename BasicJsonType::object_t::value_type const& p) + { + return value_type(p.first, p.second.template get()); + }); + obj = std::move(ret); + } + + // overload for arithmetic types, not chosen for basic_json template arguments + // (BooleanType, etc..); note: Is it really necessary to provide explicit + // overloads for boolean_t etc. in case of a custom BooleanType which is not + // an arithmetic type? + template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic::value && + !std::is_same::value && + !std::is_same::value && + !std::is_same::value && + !std::is_same::value, + int > = 0 > + void from_json(const BasicJsonType& j, ArithmeticType& val) + { + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::boolean: + { + val = static_cast(*j.template get_ptr()); + break; + } + + case value_t::null: + case value_t::object: + case value_t::array: + case value_t::string: + case value_t::binary: + case value_t::discarded: + default: + JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()), j)); + } + } + + template + std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence /*unused*/) + { + return std::make_tuple(std::forward(j).at(Idx).template get()...); + } + + template < typename BasicJsonType, class A1, class A2 > + std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) + { + return { std::forward(j).at(0).template get(), + std::forward(j).at(1).template get() }; + } + + template + void from_json_tuple_impl(BasicJsonType&& j, std::pair& p, priority_tag<1> /*unused*/) + { + p = from_json_tuple_impl(std::forward(j), identity_tag> {}, priority_tag<0> {}); + } + + template + std::tuple from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<2> /*unused*/) + { + return from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); + } + + template + void from_json_tuple_impl(BasicJsonType&& j, std::tuple& t, priority_tag<3> /*unused*/) + { + t = from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); + } + + template + auto from_json(BasicJsonType&& j, TupleRelated&& t) + -> decltype(from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {})) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + + return from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {}); + } + + template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> + void from_json(const BasicJsonType& j, std::map& m) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + m.clear(); + for (const auto& p : j) + { + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()), j)); + } + m.emplace(p.at(0).template get(), p.at(1).template get()); + } + } + + template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> + void from_json(const BasicJsonType& j, std::unordered_map& m) + { + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()), j)); + } + m.clear(); + for (const auto& p : j) + { + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) + { + JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()), j)); + } + m.emplace(p.at(0).template get(), p.at(1).template get()); + } + } + + struct from_json_fn + { + template + auto operator()(const BasicJsonType& j, T&& val) const + noexcept(noexcept(from_json(j, std::forward(val)))) + -> decltype(from_json(j, std::forward(val))) + { + return from_json(j, std::forward(val)); + } + }; + } // namespace detail + + /// namespace to hold default `from_json` function + /// to see why this is required: + /// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html + namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) + { + constexpr const auto& from_json = detail::static_const::value; // NOLINT(misc-definitions-in-headers) + } // namespace +} // namespace nlohmann + +// #include + + +#include // copy +#include // begin, end +#include // string +#include // tuple, get +#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include // move, forward, declval, pair +#include // valarray +#include // vector + +// #include + + +#include // size_t +#include // input_iterator_tag +#include // string, to_string +#include // tuple_size, get, tuple_element +#include // move + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + template + void int_to_string(string_type& target, std::size_t value) + { + // For ADL + using std::to_string; + target = to_string(value); + } + template class iteration_proxy_value + { + public: + using difference_type = std::ptrdiff_t; + using value_type = iteration_proxy_value; + using pointer = value_type*; + using reference = value_type&; + using iterator_category = std::input_iterator_tag; + using string_type = typename std::remove_cv< typename std::remove_reference().key()) >::type >::type; + + private: + /// the iterator + IteratorType anchor; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + /// last stringified array index + mutable std::size_t array_index_last = 0; + /// a string representation of the array index + mutable string_type array_index_str = "0"; + /// an empty string (to return a reference for primitive values) + const string_type empty_str{}; + + public: + explicit iteration_proxy_value(IteratorType it) noexcept + : anchor(std::move(it)) + {} + + /// dereference operator (needed for range-based for) + iteration_proxy_value& operator*() + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_value& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + /// equality operator (needed for InputIterator) + bool operator==(const iteration_proxy_value& o) const + { + return anchor == o.anchor; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_value& o) const + { + return anchor != o.anchor; + } + + /// return key of the iterator + const string_type& key() const + { + JSON_ASSERT(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + { + if (array_index != array_index_last) + { + int_to_string(array_index_str, array_index); + array_index_last = array_index; + } + return array_index_str; + } + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return empty_str; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } + }; + + /// proxy class for the items() function + template class iteration_proxy + { + private: + /// the container to iterate + typename IteratorType::reference container; + + public: + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) noexcept + : container(cont) {} + + /// return iterator begin (needed for range-based for) + iteration_proxy_value begin() noexcept + { + return iteration_proxy_value(container.begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_value end() noexcept + { + return iteration_proxy_value(container.end()); + } + }; + // Structured Bindings Support + // For further reference see https://blog.tartanllama.xyz/structured-bindings/ + // And see https://github.com/nlohmann/json/pull/1391 + template = 0> + auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.key()) + { + return i.key(); + } + // Structured Bindings Support + // For further reference see https://blog.tartanllama.xyz/structured-bindings/ + // And see https://github.com/nlohmann/json/pull/1391 + template = 0> + auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.value()) + { + return i.value(); + } + } // namespace detail +} // namespace nlohmann + +// The Addition to the STD Namespace is required to add +// Structured Bindings Support to the iteration_proxy_value class +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +namespace std +{ +#if defined(__clang__) + // Fix: https://github.com/nlohmann/json/issues/1401 +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +#endif + template + class tuple_size<::nlohmann::detail::iteration_proxy_value> + : public std::integral_constant {}; + + template + class tuple_element> + { + public: + using type = decltype( + get(std::declval < + ::nlohmann::detail::iteration_proxy_value> ())); + }; +#if defined(__clang__) +#pragma clang diagnostic pop +#endif +} // namespace std + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + ////////////////// + // constructors // + ////////////////// + + /* + * Note all external_constructor<>::construct functions need to call + * j.m_value.destroy(j.m_type) to avoid a memory leak in case j contains an + * allocated value (e.g., a string). See bug issue + * https://github.com/nlohmann/json/issues/2865 for more information. + */ + + template struct external_constructor; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::boolean; + j.m_value = b; + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::string; + j.m_value = s; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::string; + j.m_value = std::move(s); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleStringType, + enable_if_t < !std::is_same::value, + int > = 0 > + static void construct(BasicJsonType& j, const CompatibleStringType& str) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::string; + j.m_value.string = j.template create(str); + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::binary; + j.m_value = typename BasicJsonType::binary_t(b); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::binary; + j.m_value = typename BasicJsonType::binary_t(std::move(b)); + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::number_float; + j.m_value = val; + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::number_unsigned; + j.m_value = val; + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::number_integer; + j.m_value = val; + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::array; + j.m_value = arr; + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::array; + j.m_value = std::move(arr); + j.set_parents(); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < !std::is_same::value, + int > = 0 > + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + + j.m_value.destroy(j.m_type); + j.m_type = value_t::array; + j.m_value.array = j.template create(begin(arr), end(arr)); + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, const std::vector& arr) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_value.array->push_back(x); + j.set_parent(j.m_value.array->back()); + } + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray& arr) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::array; + j.m_value = value_t::array; + j.m_value.array->resize(arr.size()); + if (arr.size() > 0) + { + std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); + } + j.set_parents(); + j.assert_invariant(); + } + }; + + template<> + struct external_constructor + { + template + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::object; + j.m_value = obj; + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_value.destroy(j.m_type); + j.m_type = value_t::object; + j.m_value = std::move(obj); + j.set_parents(); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < !std::is_same::value, int > = 0 > + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_value.destroy(j.m_type); + j.m_type = value_t::object; + j.m_value.object = j.template create(begin(obj), end(obj)); + j.set_parents(); + j.assert_invariant(); + } + }; + + ///////////// + // to_json // + ///////////// + + template::value, int> = 0> + void to_json(BasicJsonType& j, T b) noexcept + { + external_constructor::construct(j, b); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, const CompatibleString& s) + { + external_constructor::construct(j, s); + } + + template + void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + external_constructor::construct(j, std::move(s)); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, FloatType val) noexcept + { + external_constructor::construct(j, static_cast(val)); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept + { + external_constructor::construct(j, static_cast(val)); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept + { + external_constructor::construct(j, static_cast(val)); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, EnumType e) noexcept + { + using underlying_type = typename std::underlying_type::type; + external_constructor::construct(j, static_cast(e)); + } + + template + void to_json(BasicJsonType& j, const std::vector& e) + { + external_constructor::construct(j, e); + } + + template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < is_compatible_array_type::value && + !is_compatible_object_type::value && + !is_compatible_string_type::value && + !std::is_same::value && + !is_basic_json::value, + int > = 0 > + void to_json(BasicJsonType& j, const CompatibleArrayType& arr) + { + external_constructor::construct(j, arr); + } + + template + void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin) + { + external_constructor::construct(j, bin); + } + + template::value, int> = 0> + void to_json(BasicJsonType& j, const std::valarray& arr) + { + external_constructor::construct(j, std::move(arr)); + } + + template + void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + external_constructor::construct(j, std::move(arr)); + } + + template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < is_compatible_object_type::value && !is_basic_json::value, int > = 0 > + void to_json(BasicJsonType& j, const CompatibleObjectType& obj) + { + external_constructor::construct(j, obj); + } + + template + void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + external_constructor::construct(j, std::move(obj)); + } + + template < + typename BasicJsonType, typename T, std::size_t N, + enable_if_t < !std::is_constructible::value, // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + int > = 0 > + void to_json(BasicJsonType& j, const T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + { + external_constructor::construct(j, arr); + } + + template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible::value&& std::is_constructible::value, int > = 0 > + void to_json(BasicJsonType& j, const std::pair& p) + { + j = { p.first, p.second }; + } + + // for https://github.com/nlohmann/json/pull/1134 + template>::value, int> = 0> + void to_json(BasicJsonType& j, const T& b) + { + j = { {b.key(), b.value()} }; + } + + template + void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) + { + j = { std::get(t)... }; + } + + template::value, int > = 0> + void to_json(BasicJsonType& j, const T& t) + { + to_json_tuple_impl(j, t, make_index_sequence::value> {}); + } + + struct to_json_fn + { + template + auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward(val)))) + -> decltype(to_json(j, std::forward(val)), void()) + { + return to_json(j, std::forward(val)); + } + }; + } // namespace detail + + /// namespace to hold default `to_json` function + /// to see why this is required: + /// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html + namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) + { + constexpr const auto& to_json = detail::static_const::value; // NOLINT(misc-definitions-in-headers) + } // namespace +} // namespace nlohmann + +// #include + +// #include + + +namespace nlohmann +{ + + template + struct adl_serializer + { + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @note This function is chosen for default-constructible value types. + + @param[in] j JSON value to read from + @param[in,out] val value to write to + */ + template + static auto from_json(BasicJsonType&& j, TargetType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + -> decltype(::nlohmann::from_json(std::forward(j), val), void()) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /*! + @brief convert a JSON value to any value type + + This function is usually called by the `get()` function of the + @ref basic_json class (either explicit or via conversion operators). + + @note This function is chosen for value types which are not default-constructible. + + @param[in] j JSON value to read from + + @return copy of the JSON value, converted to @a ValueType + */ + template + static auto from_json(BasicJsonType&& j) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), detail::identity_tag {}))) + -> decltype(::nlohmann::from_json(std::forward(j), detail::identity_tag {})) + { + return ::nlohmann::from_json(std::forward(j), detail::identity_tag {}); + } + + /*! + @brief convert any value type to a JSON value + + This function is usually called by the constructors of the @ref basic_json + class. + + @param[in,out] j JSON value to write to + @param[in] val value to read from + */ + template + static auto to_json(BasicJsonType& j, TargetType&& val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) + { + ::nlohmann::to_json(j, std::forward(val)); + } + }; +} // namespace nlohmann + +// #include + + +#include // uint8_t, uint64_t +#include // tie +#include // move + +namespace nlohmann +{ + + /*! + @brief an internal type for a backed binary type + + This type extends the template parameter @a BinaryType provided to `basic_json` + with a subtype used by BSON and MessagePack. This type exists so that the user + does not have to specify a type themselves with a specific naming scheme in + order to override the binary type. + + @tparam BinaryType container to store bytes (`std::vector` by + default) + + @since version 3.8.0; changed type of subtypes to std::uint64_t in 3.10.0. + */ + template + class byte_container_with_subtype : public BinaryType + { + public: + /// the type of the underlying container + using container_type = BinaryType; + /// the type of the subtype + using subtype_type = std::uint64_t; + + byte_container_with_subtype() noexcept(noexcept(container_type())) + : container_type() + {} + + byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) + : container_type(b) + {} + + byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + {} + + byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) + : container_type(b) + , m_subtype(subtype_) + , m_has_subtype(true) + {} + + byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + , m_subtype(subtype_) + , m_has_subtype(true) + {} + + bool operator==(const byte_container_with_subtype& rhs) const + { + return std::tie(static_cast(*this), m_subtype, m_has_subtype) == + std::tie(static_cast(rhs), rhs.m_subtype, rhs.m_has_subtype); + } + + bool operator!=(const byte_container_with_subtype& rhs) const + { + return !(rhs == *this); + } + + /*! + @brief sets the binary subtype + + Sets the binary subtype of the value, also flags a binary JSON value as + having a subtype, which has implications for serialization. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa see @ref subtype() -- return the binary subtype + @sa see @ref clear_subtype() -- clears the binary subtype + @sa see @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0 + */ + void set_subtype(subtype_type subtype_) noexcept + { + m_subtype = subtype_; + m_has_subtype = true; + } + + /*! + @brief return the binary subtype + + Returns the numerical subtype of the value if it has a subtype. If it does + not have a subtype, this function will return subtype_type(-1) as a sentinel + value. + + @return the numerical subtype of the binary value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa see @ref set_subtype() -- sets the binary subtype + @sa see @ref clear_subtype() -- clears the binary subtype + @sa see @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0; fixed return value to properly return + subtype_type(-1) as documented in version 3.10.0 + */ + constexpr subtype_type subtype() const noexcept + { + return m_has_subtype ? m_subtype : subtype_type(-1); + } + + /*! + @brief return whether the value has a subtype + + @return whether the value has a subtype + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa see @ref subtype() -- return the binary subtype + @sa see @ref set_subtype() -- sets the binary subtype + @sa see @ref clear_subtype() -- clears the binary subtype + + @since version 3.8.0 + */ + constexpr bool has_subtype() const noexcept + { + return m_has_subtype; + } + + /*! + @brief clears the binary subtype + + Clears the binary subtype and flags the value as not having a subtype, which + has implications for serialization; for instance MessagePack will prefer the + bin family over the ext family. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa see @ref subtype() -- return the binary subtype + @sa see @ref set_subtype() -- sets the binary subtype + @sa see @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0 + */ + void clear_subtype() noexcept + { + m_subtype = 0; + m_has_subtype = false; + } + + private: + subtype_type m_subtype = 0; + bool m_has_subtype = false; + }; + +} // namespace nlohmann + +// #include + +// #include + +// #include + +// #include + + +#include // uint8_t +#include // size_t +#include // hash + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + + // boost::hash_combine + inline std::size_t combine(std::size_t seed, std::size_t h) noexcept + { + seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); + return seed; + } + + /*! + @brief hash a JSON value + + The hash function tries to rely on std::hash where possible. Furthermore, the + type of the JSON value is taken into account to have different hash values for + null, 0, 0U, and false, etc. + + @tparam BasicJsonType basic_json specialization + @param j JSON value to hash + @return hash value of j + */ + template + std::size_t hash(const BasicJsonType& j) + { + using string_t = typename BasicJsonType::string_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + const auto type = static_cast(j.type()); + switch (j.type()) + { + case BasicJsonType::value_t::null: + case BasicJsonType::value_t::discarded: + { + return combine(type, 0); + } + + case BasicJsonType::value_t::object: + { + auto seed = combine(type, j.size()); + for (const auto& element : j.items()) + { + const auto h = std::hash{}(element.key()); + seed = combine(seed, h); + seed = combine(seed, hash(element.value())); + } + return seed; + } + + case BasicJsonType::value_t::array: + { + auto seed = combine(type, j.size()); + for (const auto& element : j) + { + seed = combine(seed, hash(element)); + } + return seed; + } + + case BasicJsonType::value_t::string: + { + const auto h = std::hash{}(j.template get_ref()); + return combine(type, h); + } + + case BasicJsonType::value_t::boolean: + { + const auto h = std::hash{}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_integer: + { + const auto h = std::hash{}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_unsigned: + { + const auto h = std::hash{}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_float: + { + const auto h = std::hash{}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::binary: + { + auto seed = combine(type, j.get_binary().size()); + const auto h = std::hash{}(j.get_binary().has_subtype()); + seed = combine(seed, h); + seed = combine(seed, static_cast(j.get_binary().subtype())); + for (const auto byte : j.get_binary()) + { + seed = combine(seed, std::hash {}(byte)); + } + return seed; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + return 0; // LCOV_EXCL_LINE + } + } + + } // namespace detail +} // namespace nlohmann + +// #include + + +#include // generate_n +#include // array +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // snprintf +#include // memcpy +#include // back_inserter +#include // numeric_limits +#include // char_traits, string +#include // make_pair, move +#include // vector + +// #include + +// #include + + +#include // array +#include // size_t +#include // strlen +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +#ifndef JSON_NO_IO +#include // FILE * +#include // istream +#endif // JSON_NO_IO + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + /// the supported input formats + enum class input_format_t { json, cbor, msgpack, ubjson, bson }; + + //////////////////// + // input adapters // + //////////////////// + +#ifndef JSON_NO_IO +/*! +Input adapter for stdio file access. This adapter read only 1 byte and do not use any + buffer. This adapter is a very low level adapter. +*/ + class file_input_adapter + { + public: + using char_type = char; + + JSON_HEDLEY_NON_NULL(2) + explicit file_input_adapter(std::FILE* f) noexcept + : m_file(f) + {} + + // make class move-only + file_input_adapter(const file_input_adapter&) = delete; + file_input_adapter(file_input_adapter&&) noexcept = default; + file_input_adapter& operator=(const file_input_adapter&) = delete; + file_input_adapter& operator=(file_input_adapter&&) = delete; + ~file_input_adapter() = default; + + std::char_traits::int_type get_character() noexcept + { + return std::fgetc(m_file); + } + + private: + /// the file pointer to read from + std::FILE* m_file; + }; + + + /*! + Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at + beginning of input. Does not support changing the underlying std::streambuf + in mid-input. Maintains underlying std::istream and std::streambuf to support + subsequent use of standard std::istream operations to process any input + characters following those used in parsing the JSON input. Clears the + std::istream flags; any input errors (e.g., EOF) will be detected by the first + subsequent call for input from the std::istream. + */ + class input_stream_adapter + { + public: + using char_type = char; + + ~input_stream_adapter() + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags, except eof + if (is != nullptr) + { + is->clear(is->rdstate() & std::ios::eofbit); + } + } + + explicit input_stream_adapter(std::istream& i) + : is(&i), sb(i.rdbuf()) + {} + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&&) = delete; + + input_stream_adapter(input_stream_adapter&& rhs) noexcept + : is(rhs.is), sb(rhs.sb) + { + rhs.is = nullptr; + rhs.sb = nullptr; + } + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, eg. 0xFFFFFFFF. + std::char_traits::int_type get_character() + { + auto res = sb->sbumpc(); + // set eof manually, as we don't use the istream interface. + if (JSON_HEDLEY_UNLIKELY(res == std::char_traits::eof())) + { + is->clear(is->rdstate() | std::ios::eofbit); + } + return res; + } + + private: + /// the associated input stream + std::istream* is = nullptr; + std::streambuf* sb = nullptr; + }; +#endif // JSON_NO_IO + + // General-purpose iterator-based adapter. It might not be as fast as + // theoretically possible for some containers, but it is extremely versatile. + template + class iterator_input_adapter + { + public: + using char_type = typename std::iterator_traits::value_type; + + iterator_input_adapter(IteratorType first, IteratorType last) + : current(std::move(first)), end(std::move(last)) + {} + + typename std::char_traits::int_type get_character() + { + if (JSON_HEDLEY_LIKELY(current != end)) + { + auto result = std::char_traits::to_int_type(*current); + std::advance(current, 1); + return result; + } + + return std::char_traits::eof(); + } + + private: + IteratorType current; + IteratorType end; + + template + friend struct wide_string_input_helper; + + bool empty() const + { + return current == end; + } + }; + + + template + struct wide_string_input_helper; + + template + struct wide_string_input_helper + { + // UTF-32 + static void fill_buffer(BaseInputAdapter& input, + std::array::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (JSON_HEDLEY_UNLIKELY(input.empty())) + { + utf8_bytes[0] = std::char_traits::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = input.get_character(); + + // UTF-32 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u) & 0x1Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (wc <= 0xFFFF) + { + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u) & 0x0Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 3; + } + else if (wc <= 0x10FFFF) + { + utf8_bytes[0] = static_cast::int_type>(0xF0u | ((static_cast(wc) >> 18u) & 0x07u)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + // unknown character + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } + }; + + template + struct wide_string_input_helper + { + // UTF-16 + static void fill_buffer(BaseInputAdapter& input, + std::array::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (JSON_HEDLEY_UNLIKELY(input.empty())) + { + utf8_bytes[0] = std::char_traits::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = input.get_character(); + + // UTF-16 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (0xD800 > wc || wc >= 0xE000) + { + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 3; + } + else + { + if (JSON_HEDLEY_UNLIKELY(!input.empty())) + { + const auto wc2 = static_cast(input.get_character()); + const auto charcode = 0x10000u + (((static_cast(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); + utf8_bytes[0] = static_cast::int_type>(0xF0u | (charcode >> 18u)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast::int_type>(0x80u | (charcode & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } + } + }; + + // Wraps another input apdater to convert wide character types into individual bytes. + template + class wide_string_input_adapter + { + public: + using char_type = char; + + wide_string_input_adapter(BaseInputAdapter base) + : base_adapter(base) {} + + typename std::char_traits::int_type get_character() noexcept + { + // check if buffer needs to be filled + if (utf8_bytes_index == utf8_bytes_filled) + { + fill_buffer(); + + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index == 0); + } + + // use buffer + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled); + return utf8_bytes[utf8_bytes_index++]; + } + + private: + BaseInputAdapter base_adapter; + + template + void fill_buffer() + { + wide_string_input_helper::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); + } + + /// a buffer for UTF-8 bytes + std::array::int_type, 4> utf8_bytes = { {0, 0, 0, 0} }; + + /// index to the utf8_codes array for the next valid byte + std::size_t utf8_bytes_index = 0; + /// number of valid bytes in the utf8_codes array + std::size_t utf8_bytes_filled = 0; + }; + + + template + struct iterator_input_adapter_factory + { + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using adapter_type = iterator_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(std::move(first), std::move(last)); + } + }; + + template + struct is_iterator_of_multibyte + { + using value_type = typename std::iterator_traits::value_type; + enum + { + value = sizeof(value_type) > 1 + }; + }; + + template + struct iterator_input_adapter_factory::value>> + { + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using base_adapter_type = iterator_input_adapter; + using adapter_type = wide_string_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(base_adapter_type(std::move(first), std::move(last))); + } + }; + + // General purpose iterator-based input + template + typename iterator_input_adapter_factory::adapter_type input_adapter(IteratorType first, IteratorType last) + { + using factory_type = iterator_input_adapter_factory; + return factory_type::create(first, last); + } + + // Convenience shorthand from container to iterator + // Enables ADL on begin(container) and end(container) + // Encloses the using declarations in namespace for not to leak them to outside scope + + namespace container_input_adapter_factory_impl + { + + using std::begin; + using std::end; + + template + struct container_input_adapter_factory {}; + + template + struct container_input_adapter_factory< ContainerType, + void_t()), end(std::declval()))>> + { + using adapter_type = decltype(input_adapter(begin(std::declval()), end(std::declval()))); + + static adapter_type create(const ContainerType& container) + { + return input_adapter(begin(container), end(container)); + } + }; + + } // namespace container_input_adapter_factory_impl + + template + typename container_input_adapter_factory_impl::container_input_adapter_factory::adapter_type input_adapter(const ContainerType& container) + { + return container_input_adapter_factory_impl::container_input_adapter_factory::create(container); + } + +#ifndef JSON_NO_IO + // Special cases with fast paths + inline file_input_adapter input_adapter(std::FILE* file) + { + return file_input_adapter(file); + } + + inline input_stream_adapter input_adapter(std::istream& stream) + { + return input_stream_adapter(stream); + } + + inline input_stream_adapter input_adapter(std::istream&& stream) + { + return input_stream_adapter(stream); + } +#endif // JSON_NO_IO + + using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval(), std::declval())); + + // Null-delimited strings, and the like. + template < typename CharT, + typename std::enable_if < + std::is_pointer::value && + !std::is_array::value&& + std::is_integral::type>::value && + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > + contiguous_bytes_input_adapter input_adapter(CharT b) + { + auto length = std::strlen(reinterpret_cast(b)); + const auto* ptr = reinterpret_cast(b); + return input_adapter(ptr, ptr + length); + } + + template + auto input_adapter(T(&array)[N]) -> decltype(input_adapter(array, array + N)) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + { + return input_adapter(array, array + N); + } + + // This class only handles inputs of input_buffer_adapter type. + // It's required so that expressions like {ptr, len} can be implicitely casted + // to the correct adapter. + class span_input_adapter + { + public: + template < typename CharT, + typename std::enable_if < + std::is_pointer::value&& + std::is_integral::type>::value && + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > + span_input_adapter(CharT b, std::size_t l) + : ia(reinterpret_cast(b), reinterpret_cast(b) + l) {} + + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + span_input_adapter(IteratorType first, IteratorType last) + : ia(input_adapter(first, last)) {} + + contiguous_bytes_input_adapter&& get() + { + return std::move(ia); // NOLINT(hicpp-move-const-arg,performance-move-const-arg) + } + + private: + contiguous_bytes_input_adapter ia; + }; + } // namespace detail +} // namespace nlohmann + +// #include + + +#include +#include // string +#include // move +#include // vector + +// #include + +// #include + + +namespace nlohmann +{ + + /*! + @brief SAX interface + + This class describes the SAX interface used by @ref nlohmann::json::sax_parse. + Each function is called in different situations while the input is parsed. The + boolean return value informs the parser whether to continue processing the + input. + */ + template + struct json_sax + { + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + /*! + @brief a null value was read + @return whether parsing should proceed + */ + virtual bool null() = 0; + + /*! + @brief a boolean value was read + @param[in] val boolean value + @return whether parsing should proceed + */ + virtual bool boolean(bool val) = 0; + + /*! + @brief an integer number was read + @param[in] val integer value + @return whether parsing should proceed + */ + virtual bool number_integer(number_integer_t val) = 0; + + /*! + @brief an unsigned integer number was read + @param[in] val unsigned integer value + @return whether parsing should proceed + */ + virtual bool number_unsigned(number_unsigned_t val) = 0; + + /*! + @brief an floating-point number was read + @param[in] val floating-point value + @param[in] s raw token value + @return whether parsing should proceed + */ + virtual bool number_float(number_float_t val, const string_t& s) = 0; + + /*! + @brief a string was read + @param[in] val string value + @return whether parsing should proceed + @note It is safe to move the passed string. + */ + virtual bool string(string_t& val) = 0; + + /*! + @brief a binary string was read + @param[in] val binary value + @return whether parsing should proceed + @note It is safe to move the passed binary. + */ + virtual bool binary(binary_t& val) = 0; + + /*! + @brief the beginning of an object was read + @param[in] elements number of object elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_object(std::size_t elements) = 0; + + /*! + @brief an object key was read + @param[in] val object key + @return whether parsing should proceed + @note It is safe to move the passed string. + */ + virtual bool key(string_t& val) = 0; + + /*! + @brief the end of an object was read + @return whether parsing should proceed + */ + virtual bool end_object() = 0; + + /*! + @brief the beginning of an array was read + @param[in] elements number of array elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_array(std::size_t elements) = 0; + + /*! + @brief the end of an array was read + @return whether parsing should proceed + */ + virtual bool end_array() = 0; + + /*! + @brief a parse error occurred + @param[in] position the position in the input where the error occurs + @param[in] last_token the last read token + @param[in] ex an exception object describing the error + @return whether parsing should proceed (must return false) + */ + virtual bool parse_error(std::size_t position, + const std::string& last_token, + const detail::exception& ex) = 0; + + json_sax() = default; + json_sax(const json_sax&) = default; + json_sax(json_sax&&) noexcept = default; + json_sax& operator=(const json_sax&) = default; + json_sax& operator=(json_sax&&) noexcept = default; + virtual ~json_sax() = default; + }; + + + namespace detail + { + /*! + @brief SAX implementation to create a JSON value from SAX events + + This class implements the @ref json_sax interface and processes the SAX events + to create a JSON value which makes it basically a DOM parser. The structure or + hierarchy of the JSON value is managed by the stack `ref_stack` which contains + a pointer to the respective array or object for each recursion depth. + + After successful parsing, the value that is passed by reference to the + constructor contains the parsed value. + + @tparam BasicJsonType the JSON type + */ + template + class json_sax_dom_parser + { + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + /*! + @param[in,out] r reference to a JSON value that is manipulated while + parsing + @param[in] allow_exceptions_ whether parse errors yield exceptions + */ + explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true) + : root(r), allow_exceptions(allow_exceptions_) + {} + + // make class move-only + json_sax_dom_parser(const json_sax_dom_parser&) = delete; + json_sax_dom_parser(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete; + json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~json_sax_dom_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + + bool start_object(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); + + if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len), *ref_stack.back())); + } + + return true; + } + + bool key(string_t& val) + { + // add null at given key and store the reference for later + object_element = &(ref_stack.back()->m_value.object->operator[](val)); + return true; + } + + bool end_object() + { + ref_stack.back()->set_parents(); + ref_stack.pop_back(); + return true; + } + + bool start_array(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); + + if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len), *ref_stack.back())); + } + + return true; + } + + bool end_array() + { + ref_stack.back()->set_parents(); + ref_stack.pop_back(); + return true; + } + + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const Exception& ex) + { + errored = true; + static_cast(ex); + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + */ + template + JSON_HEDLEY_RETURNS_NON_NULL + BasicJsonType* handle_value(Value&& v) + { + if (ref_stack.empty()) + { + root = BasicJsonType(std::forward(v)); + return &root; + } + + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); + + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->emplace_back(std::forward(v)); + return &(ref_stack.back()->m_value.array->back()); + } + + JSON_ASSERT(ref_stack.back()->is_object()); + JSON_ASSERT(object_element); + *object_element = BasicJsonType(std::forward(v)); + return object_element; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector ref_stack{}; + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; + }; + + template + class json_sax_dom_callback_parser + { + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using parser_callback_t = typename BasicJsonType::parser_callback_t; + using parse_event_t = typename BasicJsonType::parse_event_t; + + json_sax_dom_callback_parser(BasicJsonType& r, + const parser_callback_t cb, + const bool allow_exceptions_ = true) + : root(r), callback(cb), allow_exceptions(allow_exceptions_) + { + keep_stack.push_back(true); + } + + // make class move-only + json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~json_sax_dom_callback_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + + bool start_object(std::size_t len) + { + // check callback for object start + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::object_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::object, true); + ref_stack.push_back(val.second); + + // check object limit + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len), *ref_stack.back())); + } + + return true; + } + + bool key(string_t& val) + { + BasicJsonType k = BasicJsonType(val); + + // check callback for key + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::key, k); + key_keep_stack.push_back(keep); + + // add discarded value at given key and store the reference for later + if (keep && ref_stack.back()) + { + object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded); + } + + return true; + } + + bool end_object() + { + if (ref_stack.back()) + { + if (!callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) + { + // discard object + *ref_stack.back() = discarded; + } + else + { + ref_stack.back()->set_parents(); + } + } + + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured()) + { + // remove discarded value + for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) + { + if (it->is_discarded()) + { + ref_stack.back()->erase(it); + break; + } + } + } + + return true; + } + + bool start_array(std::size_t len) + { + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::array_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::array, true); + ref_stack.push_back(val.second); + + // check array limit + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len), *ref_stack.back())); + } + + return true; + } + + bool end_array() + { + bool keep = true; + + if (ref_stack.back()) + { + keep = callback(static_cast(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); + if (keep) + { + ref_stack.back()->set_parents(); + } + else + { + // discard array + *ref_stack.back() = discarded; + } + } + + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + // remove discarded value + if (!keep && !ref_stack.empty() && ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->pop_back(); + } + + return true; + } + + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const Exception& ex) + { + errored = true; + static_cast(ex); + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @param[in] v value to add to the JSON value we build during parsing + @param[in] skip_callback whether we should skip calling the callback + function; this is required after start_array() and + start_object() SAX events, because otherwise we would call the + callback function with an empty array or object, respectively. + + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + + @return pair of boolean (whether value should be kept) and pointer (to the + passed value in the ref_stack hierarchy; nullptr if not kept) + */ + template + std::pair handle_value(Value&& v, const bool skip_callback = false) + { + JSON_ASSERT(!keep_stack.empty()); + + // do not handle this value if we know it would be added to a discarded + // container + if (!keep_stack.back()) + { + return { false, nullptr }; + } + + // create value + auto value = BasicJsonType(std::forward(v)); + + // check callback + const bool keep = skip_callback || callback(static_cast(ref_stack.size()), parse_event_t::value, value); + + // do not handle this value if we just learnt it shall be discarded + if (!keep) + { + return { false, nullptr }; + } + + if (ref_stack.empty()) + { + root = std::move(value); + return { true, &root }; + } + + // skip this value if we already decided to skip the parent + // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) + if (!ref_stack.back()) + { + return { false, nullptr }; + } + + // we now only expect arrays and objects + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); + + // array + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_value.array->emplace_back(std::move(value)); + return { true, &(ref_stack.back()->m_value.array->back()) }; + } + + // object + JSON_ASSERT(ref_stack.back()->is_object()); + // check if we should store an element for the current key + JSON_ASSERT(!key_keep_stack.empty()); + const bool store_element = key_keep_stack.back(); + key_keep_stack.pop_back(); + + if (!store_element) + { + return { false, nullptr }; + } + + JSON_ASSERT(object_element); + *object_element = std::move(value); + return { true, object_element }; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector ref_stack{}; + /// stack to manage which values to keep + std::vector keep_stack{}; + /// stack to manage which object keys to keep + std::vector key_keep_stack{}; + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// callback function + const parser_callback_t callback = nullptr; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; + /// a discarded value for the callback + BasicJsonType discarded = BasicJsonType::value_t::discarded; + }; + + template + class json_sax_acceptor + { + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + bool null() + { + return true; + } + + bool boolean(bool /*unused*/) + { + return true; + } + + bool number_integer(number_integer_t /*unused*/) + { + return true; + } + + bool number_unsigned(number_unsigned_t /*unused*/) + { + return true; + } + + bool number_float(number_float_t /*unused*/, const string_t& /*unused*/) + { + return true; + } + + bool string(string_t& /*unused*/) + { + return true; + } + + bool binary(binary_t& /*unused*/) + { + return true; + } + + bool start_object(std::size_t /*unused*/ = std::size_t(-1)) + { + return true; + } + + bool key(string_t& /*unused*/) + { + return true; + } + + bool end_object() + { + return true; + } + + bool start_array(std::size_t /*unused*/ = std::size_t(-1)) + { + return true; + } + + bool end_array() + { + return true; + } + + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/) + { + return false; + } + }; + } // namespace detail + +} // namespace nlohmann + +// #include + + +#include // array +#include // localeconv +#include // size_t +#include // snprintf +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // char_traits, string +#include // move +#include // vector + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + /////////// + // lexer // + /////////// + + template + class lexer_base + { + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + JSON_HEDLEY_RETURNS_NON_NULL + JSON_HEDLEY_CONST + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_unsigned: + case token_type::value_integer: + case token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + // LCOV_EXCL_START + default: // catch non-enum values + return "unknown token"; + // LCOV_EXCL_STOP + } + } + }; + /*! + @brief lexical analysis + + This class organizes the lexical analysis during JSON deserialization. + */ + template + class lexer : public lexer_base + { + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename std::char_traits::int_type; + + public: + using token_type = typename lexer_base::token_type; + + explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false) noexcept + : ia(std::move(adapter)) + , ignore_comments(ignore_comments_) + , decimal_point_char(static_cast(get_decimal_point())) + {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + lexer& operator=(lexer&) = delete; + lexer& operator=(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~lexer() = default; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + JSON_HEDLEY_PURE + static char get_decimal_point() noexcept + { + const auto* loc = localeconv(); + JSON_ASSERT(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + JSON_ASSERT(current == 'u'); + int codepoint = 0; + + const auto factors = { 12u, 8u, 4u, 0u }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' && current <= '9') + { + codepoint += static_cast((static_cast(current) - 0x30u) << factor); + } + else if (current >= 'A' && current <= 'F') + { + codepoint += static_cast((static_cast(current) - 0x37u) << factor); + } + else if (current >= 'a' && current <= 'f') + { + codepoint += static_cast((static_cast(current) - 0x57u) << factor); + } + else + { + return -1; + } + } + + JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 8259. While + scanning, bytes are escaped and copied into buffer token_buffer. Then the + function returns successfully, token_buffer is *not* null-terminated (as it + may contain \0 bytes), and token_buffer.size() is the number of bytes in the + string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset token_buffer (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + JSON_ASSERT(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case std::char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = static_cast( + // high surrogate occupies the most significant 22 bits + (static_cast(codepoint1) << 10u) + // low surrogate occupies the least significant 15 bits + + static_cast(codepoint2) + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + -0x35FDC00u); + } + else + { + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(static_cast(codepoint)); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + { + error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000"; + return token_type::parse_error; + } + + case 0x01: + { + error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001"; + return token_type::parse_error; + } + + case 0x02: + { + error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002"; + return token_type::parse_error; + } + + case 0x03: + { + error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003"; + return token_type::parse_error; + } + + case 0x04: + { + error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004"; + return token_type::parse_error; + } + + case 0x05: + { + error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"; + return token_type::parse_error; + } + + case 0x06: + { + error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006"; + return token_type::parse_error; + } + + case 0x07: + { + error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007"; + return token_type::parse_error; + } + + case 0x08: + { + error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"; + return token_type::parse_error; + } + + case 0x09: + { + error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"; + return token_type::parse_error; + } + + case 0x0A: + { + error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"; + return token_type::parse_error; + } + + case 0x0B: + { + error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B"; + return token_type::parse_error; + } + + case 0x0C: + { + error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"; + return token_type::parse_error; + } + + case 0x0D: + { + error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"; + return token_type::parse_error; + } + + case 0x0E: + { + error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E"; + return token_type::parse_error; + } + + case 0x0F: + { + error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F"; + return token_type::parse_error; + } + + case 0x10: + { + error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010"; + return token_type::parse_error; + } + + case 0x11: + { + error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011"; + return token_type::parse_error; + } + + case 0x12: + { + error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012"; + return token_type::parse_error; + } + + case 0x13: + { + error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013"; + return token_type::parse_error; + } + + case 0x14: + { + error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014"; + return token_type::parse_error; + } + + case 0x15: + { + error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015"; + return token_type::parse_error; + } + + case 0x16: + { + error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016"; + return token_type::parse_error; + } + + case 0x17: + { + error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017"; + return token_type::parse_error; + } + + case 0x18: + { + error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018"; + return token_type::parse_error; + } + + case 0x19: + { + error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019"; + return token_type::parse_error; + } + + case 0x1A: + { + error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A"; + return token_type::parse_error; + } + + case 0x1B: + { + error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B"; + return token_type::parse_error; + } + + case 0x1C: + { + error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C"; + return token_type::parse_error; + } + + case 0x1D: + { + error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D"; + return token_type::parse_error; + } + + case 0x1E: + { + error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E"; + return token_type::parse_error; + } + + case 0x1F: + { + error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({ 0x80, 0xBF }))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0xA0, 0xBF, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x9F, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({ 0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF })))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + /*! + * @brief scan a comment + * @return whether comment could be scanned successfully + */ + bool scan_comment() + { + switch (get()) + { + // single-line comments skip input until a newline or EOF is read + case '/': + { + while (true) + { + switch (get()) + { + case '\n': + case '\r': + case std::char_traits::eof(): + case '\0': + return true; + + default: + break; + } + } + } + + // multi-line comments skip input until */ is read + case '*': + { + while (true) + { + switch (get()) + { + case std::char_traits::eof(): + case '\0': + { + error_message = "invalid comment; missing closing '*/'"; + return false; + } + + case '*': + { + switch (get()) + { + case '/': + return true; + + default: + { + unget(); + continue; + } + } + } + + default: + continue; + } + } + } + + // unexpected character after reading '/' + default: + { + error_message = "invalid comment; expecting '/' or '*' after '/'"; + return false; + } + } + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 8259. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 8259. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | decimal2 | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in token_buffer. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() // lgtm [cpp/use-of-goto] + { + // reset token_buffer to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + // all other characters are rejected outside scan_number() + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + + scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + + scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + + scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + + scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + + scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + + scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + + scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + + scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + + scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(token_buffer.data(), &endptr, 10); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(token_buffer.data(), &endptr, 10); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, token_buffer.data(), &endptr); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + JSON_HEDLEY_NON_NULL(2) + token_type scan_literal(const char_type* literal_text, const std::size_t length, + token_type return_type) + { + JSON_ASSERT(std::char_traits::to_char_type(current) == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_HEDLEY_UNLIKELY(std::char_traits::to_char_type(get()) != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset token_buffer; current character is beginning of token + void reset() noexcept + { + token_buffer.clear(); + token_string.clear(); + token_string.push_back(std::char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `std::char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + char_int_type get() + { + ++position.chars_read_total; + ++position.chars_read_current_line; + + if (next_unget) + { + // just reset the next_unget variable and work with current + next_unget = false; + } + else + { + current = ia.get_character(); + } + + if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) + { + token_string.push_back(std::char_traits::to_char_type(current)); + } + + if (current == '\n') + { + ++position.lines_read; + position.chars_read_current_line = 0; + } + + return current; + } + + /*! + @brief unget current character (read it again on next get) + + We implement unget by setting variable next_unget to true. The input is not + changed - we just simulate ungetting by modifying chars_read_total, + chars_read_current_line, and token_string. The next call to get() will + behave as if the unget character is read again. + */ + void unget() + { + next_unget = true; + + --position.chars_read_total; + + // in case we "unget" a newline, we have to also decrement the lines_read + if (position.chars_read_current_line == 0) + { + if (position.lines_read > 0) + { + --position.lines_read; + } + } + else + { + --position.chars_read_current_line; + } + + if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) + { + JSON_ASSERT(!token_string.empty()); + token_string.pop_back(); + } + } + + /// add a character to token_buffer + void add(char_int_type c) + { + token_buffer.push_back(static_cast(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + string_t& get_string() + { + return token_buffer; + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr position_t get_position() const noexcept + { + return position; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if (static_cast(c) <= '\x1F') + { + // escape control characters + std::array cs{ {} }; + (std::snprintf)(cs.data(), cs.size(), "", static_cast(c)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + result += cs.data(); + } + else + { + // add character as is + result.push_back(static_cast(c)); + } + } + + return result; + } + + /// return syntax error message + JSON_HEDLEY_RETURNS_NON_NULL + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + /*! + @brief skip the UTF-8 byte order mark + @return true iff there is no BOM or the correct BOM has been skipped + */ + bool skip_bom() + { + if (get() == 0xEF) + { + // check if we completely parse the BOM + return get() == 0xBB && get() == 0xBF; + } + + // the first character is not the beginning of the BOM; unget it to + // process is later + unget(); + return true; + } + + void skip_whitespace() + { + do + { + get(); + } while (current == ' ' || current == '\t' || current == '\n' || current == '\r'); + } + + token_type scan() + { + // initially, skip the BOM + if (position.chars_read_total == 0 && !skip_bom()) + { + error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; + return token_type::parse_error; + } + + // read next character and ignore whitespace + skip_whitespace(); + + // ignore comments + while (ignore_comments && current == '/') + { + if (!scan_comment()) + { + return token_type::parse_error; + } + + // skip following whitespace + skip_whitespace(); + } + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + { + std::array true_literal = { {char_type('t'), char_type('r'), char_type('u'), char_type('e')} }; + return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); + } + case 'f': + { + std::array false_literal = { {char_type('f'), char_type('a'), char_type('l'), char_type('s'), char_type('e')} }; + return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); + } + case 'n': + { + std::array null_literal = { {char_type('n'), char_type('u'), char_type('l'), char_type('l')} }; + return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); + } + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case std::char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + InputAdapterType ia; + + /// whether comments should be ignored (true) or signaled as errors (false) + const bool ignore_comments = false; + + /// the current character + char_int_type current = std::char_traits::eof(); + + /// whether the next get() call should just return current + bool next_unget = false; + + /// the start position of the current token + position_t position{}; + + /// raw input token string (for error messages) + std::vector token_string{}; + + /// buffer for variable-length tokens (numbers, strings) + string_t token_buffer{}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char_int_type decimal_point_char = '.'; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // size_t +#include // declval +#include // string + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + template + using null_function_t = decltype(std::declval().null()); + + template + using boolean_function_t = + decltype(std::declval().boolean(std::declval())); + + template + using number_integer_function_t = + decltype(std::declval().number_integer(std::declval())); + + template + using number_unsigned_function_t = + decltype(std::declval().number_unsigned(std::declval())); + + template + using number_float_function_t = decltype(std::declval().number_float( + std::declval(), std::declval())); + + template + using string_function_t = + decltype(std::declval().string(std::declval())); + + template + using binary_function_t = + decltype(std::declval().binary(std::declval())); + + template + using start_object_function_t = + decltype(std::declval().start_object(std::declval())); + + template + using key_function_t = + decltype(std::declval().key(std::declval())); + + template + using end_object_function_t = decltype(std::declval().end_object()); + + template + using start_array_function_t = + decltype(std::declval().start_array(std::declval())); + + template + using end_array_function_t = decltype(std::declval().end_array()); + + template + using parse_error_function_t = decltype(std::declval().parse_error( + std::declval(), std::declval(), + std::declval())); + + template + struct is_sax + { + private: + static_assert(is_basic_json::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using exception_t = typename BasicJsonType::exception; + + public: + static constexpr bool value = + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value; + }; + + template + struct is_sax_static_asserts + { + private: + static_assert(is_basic_json::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using exception_t = typename BasicJsonType::exception; + + public: + static_assert(is_detected_exact::value, + "Missing/invalid function: bool null()"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool number_integer(number_integer_t)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool number_unsigned(number_unsigned_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool number_float(number_float_t, const string_t&)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool string(string_t&)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool binary(binary_t&)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool start_object(std::size_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool key(string_t&)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool end_object()"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool start_array(std::size_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool end_array()"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool parse_error(std::size_t, const " + "std::string&, const exception&)"); + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + + /// how to treat CBOR tags + enum class cbor_tag_handler_t + { + error, ///< throw a parse_error exception in case of a tag + ignore, ///< ignore tags + store ///< store tags as binary type + }; + + /*! + @brief determine system byte order + + @return true if and only if system's byte order is little endian + + @note from https://stackoverflow.com/a/1001328/266378 + */ + static inline bool little_endianess(int num = 1) noexcept + { + return *reinterpret_cast(&num) == 1; + } + + + /////////////////// + // binary reader // + /////////////////// + + /*! + @brief deserialization of CBOR, MessagePack, and UBJSON values + */ + template> + class binary_reader + { + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using json_sax_t = SAX; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename std::char_traits::int_type; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(InputAdapterType&& adapter) noexcept : ia(std::move(adapter)) + { + (void)detail::is_sax_static_asserts {}; + } + + // make class move-only + binary_reader(const binary_reader&) = delete; + binary_reader(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + binary_reader& operator=(const binary_reader&) = delete; + binary_reader& operator=(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~binary_reader() = default; + + /*! + @param[in] format the binary format to parse + @param[in] sax_ a SAX event processor + @param[in] strict whether to expect the input to be consumed completed + @param[in] tag_handler how to treat CBOR tags + + @return whether parsing was successful + */ + JSON_HEDLEY_NON_NULL(3) + bool sax_parse(const input_format_t format, + json_sax_t* sax_, + const bool strict = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + sax = sax_; + bool result = false; + + switch (format) + { + case input_format_t::bson: + result = parse_bson_internal(); + break; + + case input_format_t::cbor: + result = parse_cbor_internal(true, tag_handler); + break; + + case input_format_t::msgpack: + result = parse_msgpack_internal(); + break; + + case input_format_t::ubjson: + result = parse_ubjson_internal(); + break; + + case input_format_t::json: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + + // strict mode: next byte must be EOF + if (result && strict) + { + if (format == input_format_t::ubjson) + { + get_ignore_noop(); + } + else + { + get(); + } + + if (JSON_HEDLEY_UNLIKELY(current != std::char_traits::eof())) + { + return sax->parse_error(chars_read, get_token_string(), + parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value"), BasicJsonType())); + } + } + + return result; + } + + private: + ////////// + // BSON // + ////////// + + /*! + @brief Reads in a BSON-object and passes it to the SAX-parser. + @return whether a valid BSON-value was passed to the SAX parser + */ + bool parse_bson_internal() + { + std::int32_t document_size{}; + get_number(input_format_t::bson, document_size); + + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false))) + { + return false; + } + + return sax->end_object(); + } + + /*! + @brief Parses a C-style string from the BSON input. + @param[in,out] result A reference to the string variable where the read + string is to be stored. + @return `true` if the \x00-byte indicating the end of the string was + encountered before the EOF; false` indicates an unexpected EOF. + */ + bool get_bson_cstr(string_t& result) + { + auto out = std::back_inserter(result); + while (true) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring"))) + { + return false; + } + if (current == 0x00) + { + return true; + } + *out++ = static_cast(current); + } + } + + /*! + @brief Parses a zero-terminated string of length @a len from the BSON + input. + @param[in] len The length (including the zero-byte at the end) of the + string to be read. + @param[in,out] result A reference to the string variable where the read + string is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 1 + @return `true` if the string was successfully parsed + */ + template + bool get_bson_string(const NumberType len, string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(len < 1)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string"), BasicJsonType())); + } + + return get_string(input_format_t::bson, len - static_cast(1), result) && get() != std::char_traits::eof(); + } + + /*! + @brief Parses a byte array input of length @a len from the BSON input. + @param[in] len The length of the byte array to be read. + @param[in,out] result A reference to the binary variable where the read + array is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 0 + @return `true` if the byte array was successfully parsed + */ + template + bool get_bson_binary(const NumberType len, binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(len < 0)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "byte array length cannot be negative, is " + std::to_string(len), "binary"), BasicJsonType())); + } + + // All BSON binary values have a subtype + std::uint8_t subtype{}; + get_number(input_format_t::bson, subtype); + result.set_subtype(subtype); + + return get_binary(input_format_t::bson, len, result); + } + + /*! + @brief Read a BSON document element of the given @a element_type. + @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html + @param[in] element_type_parse_position The position in the input stream, + where the `element_type` was read. + @warning Not all BSON element types are supported yet. An unsupported + @a element_type will give rise to a parse_error.114: + Unsupported BSON record type 0x... + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_internal(const char_int_type element_type, + const std::size_t element_type_parse_position) + { + switch (element_type) + { + case 0x01: // double + { + double number{}; + return get_number(input_format_t::bson, number) && sax->number_float(static_cast(number), ""); + } + + case 0x02: // string + { + std::int32_t len{}; + string_t value; + return get_number(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value); + } + + case 0x03: // object + { + return parse_bson_internal(); + } + + case 0x04: // array + { + return parse_bson_array(); + } + + case 0x05: // binary + { + std::int32_t len{}; + binary_t value; + return get_number(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value); + } + + case 0x08: // boolean + { + return sax->boolean(get() != 0); + } + + case 0x0A: // null + { + return sax->null(); + } + + case 0x10: // int32 + { + std::int32_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); + } + + case 0x12: // int64 + { + std::int64_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); + } + + default: // anything else not supported (yet) + { + std::array cr{ {} }; + (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(element_type)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + return sax->parse_error(element_type_parse_position, std::string(cr.data()), parse_error::create(114, element_type_parse_position, "Unsupported BSON record type 0x" + std::string(cr.data()), BasicJsonType())); + } + } + } + + /*! + @brief Read a BSON element list (as specified in the BSON-spec) + + The same binary layout is used for objects and arrays, hence it must be + indicated with the argument @a is_array which one is expected + (true --> array, false --> object). + + @param[in] is_array Determines if the element list being read is to be + treated as an object (@a is_array == false), or as an + array (@a is_array == true). + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_list(const bool is_array) + { + string_t key; + + while (auto element_type = get()) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list"))) + { + return false; + } + + const std::size_t element_type_parse_position = chars_read; + if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key))) + { + return false; + } + + if (!is_array && !sax->key(key)) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position))) + { + return false; + } + + // get_bson_cstr only appends + key.clear(); + } + + return true; + } + + /*! + @brief Reads an array from the BSON input and passes it to the SAX-parser. + @return whether a valid BSON-array was passed to the SAX parser + */ + bool parse_bson_array() + { + std::int32_t document_size{}; + get_number(input_format_t::bson, document_size); + + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true))) + { + return false; + } + + return sax->end_array(); + } + + ////////// + // CBOR // + ////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true) or whether the last read character should + be considered instead (false) + @param[in] tag_handler how CBOR tags should be treated + + @return whether a valid CBOR value was passed to the SAX parser + */ + bool parse_cbor_internal(const bool get_char, + const cbor_tag_handler_t tag_handler) + { + switch (get_char ? get() : current) + { + // EOF + case std::char_traits::eof(): + return unexpect_eof(input_format_t::cbor, "value"); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return sax->number_unsigned(static_cast(current)); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + { + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + { + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + { + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + { + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return sax->number_integer(static_cast(0x20 - 1 - current)); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) + - static_cast(number)); + } + + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: // Binary data (one-byte uint8_t for n follows) + case 0x59: // Binary data (two-byte uint16_t for n follow) + case 0x5A: // Binary data (four-byte uint32_t for n follow) + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + case 0x5F: // Binary data (indefinite length) + { + binary_t b; + return get_cbor_binary(b) && sax->binary(b); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + string_t s; + return get_cbor_string(s) && sax->string(s); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + return get_cbor_array(static_cast(static_cast(current) & 0x1Fu), tag_handler); + + case 0x98: // array (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(detail::conditional_static_cast(len), tag_handler); + } + + case 0x9F: // array (indefinite length) + return get_cbor_array(std::size_t(-1), tag_handler); + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + return get_cbor_object(static_cast(static_cast(current) & 0x1Fu), tag_handler); + + case 0xB8: // map (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(detail::conditional_static_cast(len), tag_handler); + } + + case 0xBF: // map (indefinite length) + return get_cbor_object(std::size_t(-1), tag_handler); + + case 0xC6: // tagged item + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD8: // tagged item (1 bytes follow) + case 0xD9: // tagged item (2 bytes follow) + case 0xDA: // tagged item (4 bytes follow) + case 0xDB: // tagged item (8 bytes follow) + { + switch (tag_handler) + { + case cbor_tag_handler_t::error: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); + } + + case cbor_tag_handler_t::ignore: + { + // ignore binary subtype + switch (current) + { + case 0xD8: + { + std::uint8_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xD9: + { + std::uint16_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xDA: + { + std::uint32_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xDB: + { + std::uint64_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + default: + break; + } + return parse_cbor_internal(true, tag_handler); + } + + case cbor_tag_handler_t::store: + { + binary_t b; + // use binary subtype and store in binary container + switch (current) + { + case 0xD8: + { + std::uint8_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xD9: + { + std::uint16_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xDA: + { + std::uint32_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xDB: + { + std::uint64_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + default: + return parse_cbor_internal(true, tag_handler); + } + get(); + return get_cbor_binary(b) && sax->binary(b); + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + return false; // LCOV_EXCL_LINE + } + } + + case 0xF4: // false + return sax->boolean(false); + + case 0xF5: // true + return sax->boolean(true); + + case 0xF6: // null + return sax->null(); + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const auto byte1_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + const auto byte2_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + + const auto byte1 = static_cast(byte1_raw); + const auto byte2 = static_cast(byte2_raw); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const auto half = static_cast((byte1 << 8u) + byte2); + const double val = [&half] + { + const int exp = (half >> 10u) & 0x1Fu; + const unsigned int mant = half & 0x3FFu; + JSON_ASSERT(0 <= exp && exp <= 32); + JSON_ASSERT(mant <= 1024); + switch (exp) + { + case 0: + return std::ldexp(mant, -24); + case 31: + return (mant == 0) + ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + default: + return std::ldexp(mant + 1024, exp - 25); + } + }(); + return sax->number_float((half & 0x8000u) != 0 + ? static_cast(-val) + : static_cast(val), ""); + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + float number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + double number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); + } + + default: // anything else (0xFF is handled inside the other types) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); + } + } + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_cbor_string(string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string"))) + { + return false; + } + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(input_format_t::cbor, static_cast(current) & 0x1Fu, result); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + while (get() != 0xFF) + { + string_t chunk; + if (!get_cbor_string(chunk)) + { + return false; + } + result.append(chunk); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x" + last_token, "string"), BasicJsonType())); + } + } + } + + /*! + @brief reads a CBOR byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into the byte array. + Additionally, CBOR's byte arrays with indefinite lengths are supported. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_cbor_binary(binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary"))) + { + return false; + } + + switch (current) + { + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + { + return get_binary(input_format_t::cbor, static_cast(current) & 0x1Fu, result); + } + + case 0x58: // Binary data (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x59: // Binary data (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5A: // Binary data (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5F: // Binary data (indefinite length) + { + while (get() != 0xFF) + { + binary_t chunk; + if (!get_cbor_binary(chunk)) + { + return false; + } + result.insert(result.end(), chunk.begin(), chunk.end()); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x" + last_token, "binary"), BasicJsonType())); + } + } + } + + /*! + @param[in] len the length of the array or std::size_t(-1) for an + array of indefinite size + @param[in] tag_handler how CBOR tags should be treated + @return whether array creation completed + */ + bool get_cbor_array(const std::size_t len, + const cbor_tag_handler_t tag_handler) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) + { + return false; + } + + if (len != std::size_t(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + } + } + else + { + while (get() != 0xFF) + { + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler))) + { + return false; + } + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object or std::size_t(-1) for an + object of indefinite size + @param[in] tag_handler how CBOR tags should be treated + @return whether object creation completed + */ + bool get_cbor_object(const std::size_t len, + const cbor_tag_handler_t tag_handler) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) + { + return false; + } + + if (len != 0) + { + string_t key; + if (len != std::size_t(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + key.clear(); + } + } + else + { + while (get() != 0xFF) + { + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + key.clear(); + } + } + } + + return sax->end_object(); + } + + ///////////// + // MsgPack // + ///////////// + + /*! + @return whether a valid MessagePack value was passed to the SAX parser + */ + bool parse_msgpack_internal() + { + switch (get()) + { + // EOF + case std::char_traits::eof(): + return unexpect_eof(input_format_t::msgpack, "value"); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return sax->number_unsigned(static_cast(current)); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + return get_msgpack_object(static_cast(static_cast(current) & 0x0Fu)); + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + return get_msgpack_array(static_cast(static_cast(current) & 0x0Fu)); + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + { + string_t s; + return get_msgpack_string(s) && sax->string(s); + } + + case 0xC0: // nil + return sax->null(); + + case 0xC2: // false + return sax->boolean(false); + + case 0xC3: // true + return sax->boolean(true); + + case 0xC4: // bin 8 + case 0xC5: // bin 16 + case 0xC6: // bin 32 + case 0xC7: // ext 8 + case 0xC8: // ext 16 + case 0xC9: // ext 32 + case 0xD4: // fixext 1 + case 0xD5: // fixext 2 + case 0xD6: // fixext 4 + case 0xD7: // fixext 8 + case 0xD8: // fixext 16 + { + binary_t b; + return get_msgpack_binary(b) && sax->binary(b); + } + + case 0xCA: // float 32 + { + float number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); + } + + case 0xCB: // float 64 + { + double number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); + } + + case 0xCC: // uint 8 + { + std::uint8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCD: // uint 16 + { + std::uint16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCE: // uint 32 + { + std::uint32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCF: // uint 64 + { + std::uint64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xD0: // int 8 + { + std::int8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD1: // int 16 + { + std::int16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD2: // int 32 + { + std::int32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD3: // int 64 + { + std::int64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xDC: // array 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); + } + + case 0xDD: // array 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); + } + + case 0xDE: // map 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); + } + + case 0xDF: // map 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); + } + + // negative fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return sax->number_integer(static_cast(current)); + + default: // anything else + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::msgpack, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); + } + } + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_msgpack_string(string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string"))) + { + return false; + } + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(input_format_t::msgpack, static_cast(current) & 0x1Fu, result); + } + + case 0xD9: // str 8 + { + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + case 0xDA: // str 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + case 0xDB: // str 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::msgpack, "expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x" + last_token, "string"), BasicJsonType())); + } + } + } + + /*! + @brief reads a MessagePack byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into a byte array. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_msgpack_binary(binary_t& result) + { + // helper function to set the subtype + auto assign_and_return_true = [&result](std::int8_t subtype) + { + result.set_subtype(static_cast(subtype)); + return true; + }; + + switch (current) + { + case 0xC4: // bin 8 + { + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC5: // bin 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC6: // bin 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC7: // ext 8 + { + std::uint8_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC8: // ext 16 + { + std::uint16_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC9: // ext 32 + { + std::uint32_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xD4: // fixext 1 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 1, result) && + assign_and_return_true(subtype); + } + + case 0xD5: // fixext 2 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 2, result) && + assign_and_return_true(subtype); + } + + case 0xD6: // fixext 4 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 4, result) && + assign_and_return_true(subtype); + } + + case 0xD7: // fixext 8 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 8, result) && + assign_and_return_true(subtype); + } + + case 0xD8: // fixext 16 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 16, result) && + assign_and_return_true(subtype); + } + + default: // LCOV_EXCL_LINE + return false; // LCOV_EXCL_LINE + } + } + + /*! + @param[in] len the length of the array + @return whether array creation completed + */ + bool get_msgpack_array(const std::size_t len) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) + { + return false; + } + + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) + { + return false; + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object + @return whether object creation completed + */ + bool get_msgpack_object(const std::size_t len) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) + { + return false; + } + + string_t key; + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) + { + return false; + } + key.clear(); + } + + return sax->end_object(); + } + + //////////// + // UBJSON // + //////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether a valid UBJSON value was passed to the SAX parser + */ + bool parse_ubjson_internal(const bool get_char = true) + { + return get_ubjson_value(get_char ? get_ignore_noop() : current); + } + + /*! + @brief reads a UBJSON string + + This function is either called after reading the 'S' byte explicitly + indicating a string, or in case of an object key where the 'S' byte can be + left out. + + @param[out] result created string + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether string creation completed + */ + bool get_ubjson_string(string_t& result, const bool get_char = true) + { + if (get_char) + { + get(); // TODO(niels): may we ignore N here? + } + + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) + { + return false; + } + + switch (current) + { + case 'U': + { + std::uint8_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); + } + + case 'i': + { + std::int8_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); + } + + case 'I': + { + std::int16_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); + } + + case 'l': + { + std::int32_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); + } + + case 'L': + { + std::int64_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); + } + + default: + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token, "string"), BasicJsonType())); + } + } + + /*! + @param[out] result determined size + @return whether size determination completed + */ + bool get_ubjson_size_value(std::size_t& result) + { + switch (get_ignore_noop()) + { + case 'U': + { + std::uint8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + case 'i': + { + std::int8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast(number); // NOLINT(bugprone-signed-char-misuse,cert-str34-c): number is not a char + return true; + } + + case 'I': + { + std::int16_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + case 'l': + { + std::int32_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + case 'L': + { + std::int64_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token, "size"), BasicJsonType())); + } + } + } + + /*! + @brief determine the type and size for a container + + In the optimized UBJSON format, a type and a size can be provided to allow + for a more compact representation. + + @param[out] result pair of the size and the type + + @return whether pair creation completed + */ + bool get_ubjson_size_type(std::pair& result) + { + result.first = string_t::npos; // size + result.second = 0; // type + + get_ignore_noop(); + + if (current == '$') + { + result.second = get(); // must not ignore 'N', because 'N' maybe the type + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "type"))) + { + return false; + } + + get_ignore_noop(); + if (JSON_HEDLEY_UNLIKELY(current != '#')) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) + { + return false; + } + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "expected '#' after type information; last byte: 0x" + last_token, "size"), BasicJsonType())); + } + + return get_ubjson_size_value(result.first); + } + + if (current == '#') + { + return get_ubjson_size_value(result.first); + } + + return true; + } + + /*! + @param prefix the previously read or set type prefix + @return whether value creation completed + */ + bool get_ubjson_value(const char_int_type prefix) + { + switch (prefix) + { + case std::char_traits::eof(): // EOF + return unexpect_eof(input_format_t::ubjson, "value"); + + case 'T': // true + return sax->boolean(true); + case 'F': // false + return sax->boolean(false); + + case 'Z': // null + return sax->null(); + + case 'U': + { + std::uint8_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_unsigned(number); + } + + case 'i': + { + std::int8_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); + } + + case 'I': + { + std::int16_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); + } + + case 'l': + { + std::int32_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); + } + + case 'L': + { + std::int64_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); + } + + case 'd': + { + float number{}; + return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); + } + + case 'D': + { + double number{}; + return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); + } + + case 'H': + { + return get_ubjson_high_precision_number(); + } + + case 'C': // char + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "char"))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(current > 127)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char"), BasicJsonType())); + } + string_t s(1, static_cast(current)); + return sax->string(s); + } + + case 'S': // string + { + string_t s; + return get_ubjson_string(s) && sax->string(s); + } + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::ubjson, "invalid byte: 0x" + last_token, "value"), BasicJsonType())); + } + } + } + + /*! + @return whether array creation completed + */ + bool get_ubjson_array() + { + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) + { + return false; + } + + if (size_and_type.first != string_t::npos) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) + { + return false; + } + } + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + } + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) + { + return false; + } + + while (current != ']') + { + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false))) + { + return false; + } + get_ignore_noop(); + } + } + + return sax->end_array(); + } + + /*! + @return whether object creation completed + */ + bool get_ubjson_object() + { + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) + { + return false; + } + + string_t key; + if (size_and_type.first != string_t::npos) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) + { + return false; + } + key.clear(); + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + key.clear(); + } + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) + { + return false; + } + + while (current != '}') + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + get_ignore_noop(); + key.clear(); + } + } + + return sax->end_object(); + } + + // Note, no reader for UBJSON binary types is implemented because they do + // not exist + + bool get_ubjson_high_precision_number() + { + // get size of following number string + std::size_t size{}; + auto res = get_ubjson_size_value(size); + if (JSON_HEDLEY_UNLIKELY(!res)) + { + return res; + } + + // get number string + std::vector number_vector; + for (std::size_t i = 0; i < size; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "number"))) + { + return false; + } + number_vector.push_back(static_cast(current)); + } + + // parse number string + using ia_type = decltype(detail::input_adapter(number_vector)); + auto number_lexer = detail::lexer(detail::input_adapter(number_vector), false); + const auto result_number = number_lexer.scan(); + const auto number_string = number_lexer.get_token_string(); + const auto result_remainder = number_lexer.scan(); + + using token_type = typename detail::lexer_base::token_type; + + if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input)) + { + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"), BasicJsonType())); + } + + switch (result_number) + { + case token_type::value_integer: + return sax->number_integer(number_lexer.get_number_integer()); + case token_type::value_unsigned: + return sax->number_unsigned(number_lexer.get_number_unsigned()); + case token_type::value_float: + return sax->number_float(number_lexer.get_number_float(), std::move(number_string)); + case token_type::uninitialized: + case token_type::literal_true: + case token_type::literal_false: + case token_type::literal_null: + case token_type::value_string: + case token_type::begin_array: + case token_type::begin_object: + case token_type::end_array: + case token_type::end_object: + case token_type::name_separator: + case token_type::value_separator: + case token_type::parse_error: + case token_type::end_of_input: + case token_type::literal_or_value: + default: + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"), BasicJsonType())); + } + } + + /////////////////////// + // Utility functions // + /////////////////////// + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `std::char_traits::eof()` in that case. + + @return character read from the input + */ + char_int_type get() + { + ++chars_read; + return current = ia.get_character(); + } + + /*! + @return character read from the input after ignoring all 'N' entries + */ + char_int_type get_ignore_noop() + { + do + { + get(); + } while (current == 'N'); + + return current; + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[out] result number of type @a NumberType + + @return whether conversion completed + + @note This function needs to respect the system's endianess, because + bytes in CBOR, MessagePack, and UBJSON are stored in network order + (big endian) and therefore need reordering on little endian systems. + */ + template + bool get_number(const input_format_t format, NumberType& result) + { + // step 1: read input into array with system's byte order + std::array vec{}; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number"))) + { + return false; + } + + // reverse byte order prior to conversion if necessary + if (is_little_endian != InputIsLittleEndian) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return true; + } + + /*! + @brief create a string by reading characters from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of characters to read + @param[out] result string created by reading @a len bytes + + @return whether string creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of string memory. + */ + template + bool get_string(const input_format_t format, + const NumberType len, + string_t& result) + { + bool success = true; + for (NumberType i = 0; i < len; i++) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string"))) + { + success = false; + break; + } + result.push_back(static_cast(current)); + } + return success; + } + + /*! + @brief create a byte array by reading bytes from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of bytes to read + @param[out] result byte array created by reading @a len bytes + + @return whether byte array creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of memory. + */ + template + bool get_binary(const input_format_t format, + const NumberType len, + binary_t& result) + { + bool success = true; + for (NumberType i = 0; i < len; i++) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary"))) + { + success = false; + break; + } + result.push_back(static_cast(current)); + } + return success; + } + + /*! + @param[in] format the current format (for diagnostics) + @param[in] context further context information (for diagnostics) + @return whether the last read character is not EOF + */ + JSON_HEDLEY_NON_NULL(3) + bool unexpect_eof(const input_format_t format, const char* context) const + { + if (JSON_HEDLEY_UNLIKELY(current == std::char_traits::eof())) + { + return sax->parse_error(chars_read, "", + parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), BasicJsonType())); + } + return true; + } + + /*! + @return a string representation of the last read byte + */ + std::string get_token_string() const + { + std::array cr{ {} }; + (std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current)); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + return std::string{ cr.data() }; + } + + /*! + @param[in] format the current format + @param[in] detail a detailed error message + @param[in] context further context information + @return a message string to use in the parse_error exceptions + */ + std::string exception_message(const input_format_t format, + const std::string& detail, + const std::string& context) const + { + std::string error_msg = "syntax error while parsing "; + + switch (format) + { + case input_format_t::cbor: + error_msg += "CBOR"; + break; + + case input_format_t::msgpack: + error_msg += "MessagePack"; + break; + + case input_format_t::ubjson: + error_msg += "UBJSON"; + break; + + case input_format_t::bson: + error_msg += "BSON"; + break; + + case input_format_t::json: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + + return error_msg + " " + context + ": " + detail; + } + + private: + /// input adapter + InputAdapterType ia; + + /// the current character + char_int_type current = std::char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); + + /// the SAX parser + json_sax_t* sax = nullptr; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + +// #include + + +#include // isfinite +#include // uint8_t +#include // function +#include // string +#include // move +#include // vector + +// #include + +// #include + +// #include + +// #include + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + //////////// + // parser // + //////////// + + enum class parse_event_t : std::uint8_t + { + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value + }; + + template + using parser_callback_t = + std::function; + + /*! + @brief syntax analysis + + This class implements a recursive descent parser. + */ + template + class parser + { + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using lexer_t = lexer; + using token_type = typename lexer_t::token_type; + + public: + /// a parser reading from an input adapter + explicit parser(InputAdapterType&& adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true, + const bool skip_comments = false) + : callback(cb) + , m_lexer(std::move(adapter), skip_comments) + , allow_exceptions(allow_exceptions_) + { + // read first token + get_token(); + } + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + if (callback) + { + json_sax_dom_callback_parser sdp(result, callback, allow_exceptions); + sax_parse_internal(&sdp); + + // in strict mode, input must be completely read + if (strict && (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_of_input, "value"), BasicJsonType())); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + else + { + json_sax_dom_parser sdp(result, allow_exceptions); + sax_parse_internal(&sdp); + + // in strict mode, input must be completely read + if (strict && (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), BasicJsonType())); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + } + + result.assert_invariant(); + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + json_sax_acceptor sax_acceptor; + return sax_parse(&sax_acceptor, strict); + } + + template + JSON_HEDLEY_NON_NULL(2) + bool sax_parse(SAX* sax, const bool strict = true) + { + (void)detail::is_sax_static_asserts {}; + const bool result = sax_parse_internal(sax); + + // strict mode: next byte must be EOF + if (result && strict && (get_token() != token_type::end_of_input)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), BasicJsonType())); + } + + return result; + } + + private: + template + JSON_HEDLEY_NON_NULL(2) + bool sax_parse_internal(SAX* sax) + { + // stack to remember the hierarchy of structured values we are parsing + // true = array; false = object + std::vector states; + // value to avoid a goto (see comment where set to true) + bool skip_to_state_evaluation = false; + + while (true) + { + if (!skip_to_state_evaluation) + { + // invariant: get_token() was called before each iteration + switch (last_token) + { + case token_type::begin_object: + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) + { + return false; + } + + // closing } -> we are done + if (get_token() == token_type::end_object) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) + { + return false; + } + break; + } + + // parse key + if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), BasicJsonType())); + } + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), BasicJsonType())); + } + + // remember we are now inside an object + states.push_back(false); + + // parse values + get_token(); + continue; + } + + case token_type::begin_array: + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) + { + return false; + } + + // closing ] -> we are done + if (get_token() == token_type::end_array) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) + { + return false; + } + break; + } + + // remember we are now inside an array + states.push_back(true); + + // parse values (no need to call get_token) + continue; + } + + case token_type::value_float: + { + const auto res = m_lexer.get_number_float(); + + if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res))) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'", BasicJsonType())); + } + + if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string()))) + { + return false; + } + + break; + } + + case token_type::literal_false: + { + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false))) + { + return false; + } + break; + } + + case token_type::literal_null: + { + if (JSON_HEDLEY_UNLIKELY(!sax->null())) + { + return false; + } + break; + } + + case token_type::literal_true: + { + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true))) + { + return false; + } + break; + } + + case token_type::value_integer: + { + if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer()))) + { + return false; + } + break; + } + + case token_type::value_string: + { + if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string()))) + { + return false; + } + break; + } + + case token_type::value_unsigned: + { + if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned()))) + { + return false; + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::uninitialized, "value"), BasicJsonType())); + } + + case token_type::uninitialized: + case token_type::end_array: + case token_type::end_object: + case token_type::name_separator: + case token_type::value_separator: + case token_type::end_of_input: + case token_type::literal_or_value: + default: // the last token was unexpected + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), BasicJsonType())); + } + } + } + else + { + skip_to_state_evaluation = false; + } + + // we reached this line after we successfully parsed a value + if (states.empty()) + { + // empty stack: we reached the end of the hierarchy: done + return true; + } + + if (states.back()) // array + { + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse a new value + get_token(); + continue; + } + + // closing ] + if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array)) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) + { + return false; + } + + // We are done with this array. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + JSON_ASSERT(!states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_array, "array"), BasicJsonType())); + } + + // states.back() is false -> object + + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse key + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), BasicJsonType())); + } + + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), BasicJsonType())); + } + + // parse values + get_token(); + continue; + } + + // closing } + if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object)) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) + { + return false; + } + + // We are done with this object. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + JSON_ASSERT(!states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_object, "object"), BasicJsonType())); + } + } + + /// get next token from lexer + token_type get_token() + { + return last_token = m_lexer.scan(); + } + + std::string exception_message(const token_type expected, const std::string& context) + { + std::string error_msg = "syntax error "; + + if (!context.empty()) + { + error_msg += "while parsing " + context + " "; + } + + error_msg += "- "; + + if (last_token == token_type::parse_error) + { + error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + + m_lexer.get_token_string() + "'"; + } + else + { + error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); + } + + return error_msg; + } + + private: + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; + }; + + } // namespace detail +} // namespace nlohmann + +// #include + + +// #include + + +#include // ptrdiff_t +#include // numeric_limits + +// #include + + +namespace nlohmann +{ + namespace detail + { + /* + @brief an iterator for primitive JSON types + + This class models an iterator for primitive JSON types (boolean, number, + string). It's only purpose is to allow the iterator/const_iterator classes + to "iterate" over primitive values. Internally, the iterator is modeled by + a `difference_type` variable. Value begin_value (`0`) models the begin, + end_value (`1`) models past the end. + */ + class primitive_iterator_t + { + private: + using difference_type = std::ptrdiff_t; + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + JSON_PRIVATE_UNLESS_TESTED: + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); + + public: + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type n) noexcept + { + auto result = *this; + result += n; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + primitive_iterator_t& operator++() noexcept + { + ++m_it; + return *this; + } + + primitive_iterator_t const operator++(int) noexcept // NOLINT(readability-const-return-type) + { + auto result = *this; + ++m_it; + return result; + } + + primitive_iterator_t& operator--() noexcept + { + --m_it; + return *this; + } + + primitive_iterator_t const operator--(int) noexcept // NOLINT(readability-const-return-type) + { + auto result = *this; + --m_it; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) noexcept + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) noexcept + { + m_it -= n; + return *this; + } + }; + } // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ + namespace detail + { + /*! + @brief an iterator value + + @note This structure could easily be a union, but MSVC currently does not allow + unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. + */ + template struct internal_iterator + { + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator{}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator{}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator{}; + }; + } // namespace detail +} // namespace nlohmann + +// #include + + +#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include // conditional, is_const, remove_const + +// #include + +// #include + +// #include + +// #include + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + // forward declare, to be able to friend it later on + template class iteration_proxy; + template class iteration_proxy_value; + + /*! + @brief a template for a bidirectional iterator for the @ref basic_json class + This class implements a both iterators (iterator and const_iterator) for the + @ref basic_json class. + @note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** + @requirement The class satisfies the following concept requirements: + - + [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). + @since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) + */ + template + class iter_impl + { + /// the iterator with BasicJsonType of different const-ness + using other_iter_impl = iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; + /// allow basic_json to access private members + friend other_iter_impl; + friend BasicJsonType; + friend iteration_proxy; + friend iteration_proxy_value; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json::type>::value, + "iter_impl only accepts (const) basic_json"); + + public: + + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + iter_impl() = default; + ~iter_impl() = default; + iter_impl(iter_impl&&) noexcept = default; + iter_impl& operator=(iter_impl&&) noexcept = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief const copy constructor + @param[in] other const iterator to copy from + @note This copy constructor had to be defined explicitly to circumvent a bug + occurring on msvc v19.0 compiler (VS 2015) debug build. For more + information refer to: https://github.com/nlohmann/json/issues/1608 + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief converting assignment + @param[in] other const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl& other) noexcept + { + if (&other != this) + { + m_object = other.m_object; + m_it = other.m_it; + } + return *this; + } + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief converting assignment + @param[in] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl::type>& other) noexcept // NOLINT(cert-oop54-cpp) + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + JSON_PRIVATE_UNLESS_TESTED: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_value.array->end(); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); + return &*m_it.array_iterator; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator++(int) // NOLINT(readability-const-return-type) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl const operator--(int) // NOLINT(readability-const-return-type) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > + bool operator==(const IterImpl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", *m_object)); + } + + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > + bool operator!=(const IterImpl& other) const + { + return !operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", *m_object)); + } + + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators", *m_object)); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return !other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return !operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return !operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", *m_object)); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", *m_object)); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators", *m_object)); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", *m_object)); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + const typename object_t::key_type& key() const + { + JSON_ASSERT(m_object != nullptr); + + if (JSON_HEDLEY_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators", *m_object)); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + JSON_PRIVATE_UNLESS_TESTED: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator::type> m_it{}; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // ptrdiff_t +#include // reverse_iterator +#include // declval + +namespace nlohmann +{ + namespace detail + { + ////////////////////// + // reverse_iterator // + ////////////////////// + + /*! + @brief a template for a reverse iterator class + + @tparam Base the base iterator type to reverse. Valid types are @ref + iterator (to create @ref reverse_iterator) and @ref const_iterator (to + create @ref const_reverse_iterator). + + @requirement The class satisfies the following concept requirements: + - + [BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). + - [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + + @since version 1.0.0 + */ + template + class json_reverse_iterator : public std::reverse_iterator + { + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator const operator++(int) // NOLINT(readability-const-return-type) + { + return static_cast(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator const operator--(int) // NOLINT(readability-const-return-type) + { + return static_cast(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // all_of +#include // isdigit +#include // max +#include // accumulate +#include // string +#include // move +#include // vector + +// #include + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + template + class json_pointer + { + // allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + public: + /*! + @brief create JSON pointer + + Create a JSON pointer according to the syntax described in + [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). + + @param[in] s string representing the JSON pointer; if omitted, the empty + string is assumed which references the whole JSON value + + @throw parse_error.107 if the given JSON pointer @a s is nonempty and does + not begin with a slash (`/`); see example below + + @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is + not followed by `0` (representing `~`) or `1` (representing `/`); see + example below + + @liveexample{The example shows the construction several valid JSON pointers + as well as the exceptional behavior.,json_pointer} + + @since version 2.0.0 + */ + explicit json_pointer(const std::string& s = "") + : reference_tokens(split(s)) + {} + + /*! + @brief return a string representation of the JSON pointer + + @invariant For each JSON pointer `ptr`, it holds: + @code {.cpp} + ptr == json_pointer(ptr.to_string()); + @endcode + + @return a string representation of the JSON pointer + + @liveexample{The example shows the result of `to_string`.,json_pointer__to_string} + + @since version 2.0.0 + */ + std::string to_string() const + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + std::string{}, + [](const std::string& a, const std::string& b) + { + return a + "/" + detail::escape(b); + }); + } + + /// @copydoc to_string() + operator std::string() const + { + return to_string(); + } + + /*! + @brief append another JSON pointer at the end of this JSON pointer + + @param[in] ptr JSON pointer to append + @return JSON pointer with @a ptr appended + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Linear in the length of @a ptr. + + @sa see @ref operator/=(std::string) to append a reference token + @sa see @ref operator/=(std::size_t) to append an array index + @sa see @ref operator/(const json_pointer&, const json_pointer&) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(const json_pointer& ptr) + { + reference_tokens.insert(reference_tokens.end(), + ptr.reference_tokens.begin(), + ptr.reference_tokens.end()); + return *this; + } + + /*! + @brief append an unescaped reference token at the end of this JSON pointer + + @param[in] token reference token to append + @return JSON pointer with @a token appended without escaping @a token + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Amortized constant. + + @sa see @ref operator/=(const json_pointer&) to append a JSON pointer + @sa see @ref operator/=(std::size_t) to append an array index + @sa see @ref operator/(const json_pointer&, std::size_t) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(std::string token) + { + push_back(std::move(token)); + return *this; + } + + /*! + @brief append an array index at the end of this JSON pointer + + @param[in] array_idx array index to append + @return JSON pointer with @a array_idx appended + + @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} + + @complexity Amortized constant. + + @sa see @ref operator/=(const json_pointer&) to append a JSON pointer + @sa see @ref operator/=(std::string) to append a reference token + @sa see @ref operator/(const json_pointer&, std::string) for a binary operator + + @since version 3.6.0 + */ + json_pointer& operator/=(std::size_t array_idx) + { + return *this /= std::to_string(array_idx); + } + + /*! + @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer + + @param[in] lhs JSON pointer + @param[in] rhs JSON pointer + @return a new JSON pointer with @a rhs appended to @a lhs + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a lhs and @a rhs. + + @sa see @ref operator/=(const json_pointer&) to append a JSON pointer + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& lhs, + const json_pointer& rhs) + { + return json_pointer(lhs) /= rhs; + } + + /*! + @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer + + @param[in] ptr JSON pointer + @param[in] token reference token + @return a new JSON pointer with unescaped @a token appended to @a ptr + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a ptr. + + @sa see @ref operator/=(std::string) to append a reference token + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& ptr, std::string token) // NOLINT(performance-unnecessary-value-param) + { + return json_pointer(ptr) /= std::move(token); + } + + /*! + @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer + + @param[in] ptr JSON pointer + @param[in] array_idx array index + @return a new JSON pointer with @a array_idx appended to @a ptr + + @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} + + @complexity Linear in the length of @a ptr. + + @sa see @ref operator/=(std::size_t) to append an array index + + @since version 3.6.0 + */ + friend json_pointer operator/(const json_pointer& ptr, std::size_t array_idx) + { + return json_pointer(ptr) /= array_idx; + } + + /*! + @brief returns the parent of this JSON pointer + + @return parent of this JSON pointer; in case this JSON pointer is the root, + the root itself is returned + + @complexity Linear in the length of the JSON pointer. + + @liveexample{The example shows the result of `parent_pointer` for different + JSON Pointers.,json_pointer__parent_pointer} + + @since version 3.6.0 + */ + json_pointer parent_pointer() const + { + if (empty()) + { + return *this; + } + + json_pointer res = *this; + res.pop_back(); + return res; + } + + /*! + @brief remove last reference token + + @pre not `empty()` + + @liveexample{The example shows the usage of `pop_back`.,json_pointer__pop_back} + + @complexity Constant. + + @throw out_of_range.405 if JSON pointer has no parent + + @since version 3.6.0 + */ + void pop_back() + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); + } + + reference_tokens.pop_back(); + } + + /*! + @brief return last reference token + + @pre not `empty()` + @return last reference token + + @liveexample{The example shows the usage of `back`.,json_pointer__back} + + @complexity Constant. + + @throw out_of_range.405 if JSON pointer has no parent + + @since version 3.6.0 + */ + const std::string& back() const + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); + } + + return reference_tokens.back(); + } + + /*! + @brief append an unescaped token at the end of the reference pointer + + @param[in] token token to add + + @complexity Amortized constant. + + @liveexample{The example shows the result of `push_back` for different + JSON Pointers.,json_pointer__push_back} + + @since version 3.6.0 + */ + void push_back(const std::string& token) + { + reference_tokens.push_back(token); + } + + /// @copydoc push_back(const std::string&) + void push_back(std::string&& token) + { + reference_tokens.push_back(std::move(token)); + } + + /*! + @brief return whether pointer points to the root document + + @return true iff the JSON pointer points to the root document + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example shows the result of `empty` for different JSON + Pointers.,json_pointer__empty} + + @since version 3.6.0 + */ + bool empty() const noexcept + { + return reference_tokens.empty(); + } + + private: + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index begins not with a digit + @throw out_of_range.404 if string @a s could not be converted to an integer + @throw out_of_range.410 if an array index exceeds size_type + */ + static typename BasicJsonType::size_type array_index(const std::string& s) + { + using size_type = typename BasicJsonType::size_type; + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, "array index '" + s + "' must not begin with '0'", BasicJsonType())); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9'))) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + s + "' is not a number", BasicJsonType())); + } + + std::size_t processed_chars = 0; + unsigned long long res = 0; // NOLINT(runtime/int) + JSON_TRY + { + res = std::stoull(s, &processed_chars); + } + JSON_CATCH(std::out_of_range&) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'", BasicJsonType())); + } + + // check if the string was completely read + if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size())) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'", BasicJsonType())); + } + + // only triggered on special platforms (like 32bit), see also + // https://github.com/nlohmann/json/pull/2203 + if (res >= static_cast((std::numeric_limits::max)())) // NOLINT(runtime/int) + { + JSON_THROW(detail::out_of_range::create(410, "array index " + s + " exceeds size_type", BasicJsonType())); // LCOV_EXCL_LINE + } + + return static_cast(res); + } + + JSON_PRIVATE_UNLESS_TESTED: + json_pointer top() const + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", BasicJsonType())); + } + + json_pointer result = *this; + result.reference_tokens = { reference_tokens[0] }; + return result; + } + + private: + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + BasicJsonType& get_and_create(BasicJsonType& j) const + { + auto* result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->type()) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + result = &result->operator[](array_index(reference_token)); + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten", j)); + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_unchecked(BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->is_null()) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const unsigned char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums || reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->type()) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + ptr = &ptr->operator[](array_index(reference_token)); + } + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + BasicJsonType& get_checked(BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range", *ptr)); + } + + // note: at performs range check + ptr = &ptr->at(array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, "array index '-' (" + std::to_string(ptr->m_value.array->size()) + ") is out of range", *ptr)); + } + + // use unchecked array access + ptr = &ptr->operator[](array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + const BasicJsonType& get_checked(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, + "array index '-' (" + std::to_string(ptr->m_value.array->size()) + + ") is out of range", *ptr)); + } + + // note: at performs range check + ptr = &ptr->at(array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'", *ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + */ + bool contains(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + if (!ptr->contains(reference_token)) + { + // we did not find the key in the object + return false; + } + + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + return false; + } + if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9"))) + { + // invalid char + return false; + } + if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1)) + { + if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9'))) + { + // first char should be between '1' and '9' + return false; + } + for (std::size_t i = 1; i < reference_token.size(); i++) + { + if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9'))) + { + // other char should be between '0' and '9' + return false; + } + } + } + + const auto idx = array_index(reference_token); + if (idx >= ptr->size()) + { + // index out of range + return false; + } + + ptr = &ptr->operator[](idx); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + { + // we do not expect primitive values if there is still a + // reference token to process + return false; + } + } + } + + // no reference token left means we found a primitive value + return true; + } + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector split(const std::string& reference_string) + { + std::vector result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, "JSON pointer must be empty or begin with '/' - was: '" + reference_string + "'", BasicJsonType())); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == 0 (if slash == std::string::npos) + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == std::string::npos) + start = (slash == std::string::npos) ? 0 : slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != std::string::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + JSON_ASSERT(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 || + (reference_token[pos + 1] != '0' && + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'", BasicJsonType())); + } + } + + // finally, store the reference token + detail::unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + private: + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + static void flatten(const std::string& reference_string, + const BasicJsonType& value, + BasicJsonType& result) + { + switch (value.type()) + { + case detail::value_t::array: + { + if (value.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + { + flatten(reference_string + "/" + std::to_string(i), + value.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_value.object) + { + flatten(reference_string + "/" + detail::escape(element.first), element.second, result); + } + } + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + static BasicJsonType + unflatten(const BasicJsonType& value) + { + if (JSON_HEDLEY_UNLIKELY(!value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened", value)); + } + + BasicJsonType result; + + // iterate the JSON object values + for (const auto& element : *value.m_value.object) + { + if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive", element.second)); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + /*! + @brief compares two JSON pointers for equality + + @param[in] lhs JSON pointer to compare + @param[in] rhs JSON pointer to compare + @return whether @a lhs is equal to @a rhs + + @complexity Linear in the length of the JSON pointer + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + */ + friend bool operator==(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return lhs.reference_tokens == rhs.reference_tokens; + } + + /*! + @brief compares two JSON pointers for inequality + + @param[in] lhs JSON pointer to compare + @param[in] rhs JSON pointer to compare + @return whether @a lhs is not equal @a rhs + + @complexity Linear in the length of the JSON pointer + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + */ + friend bool operator!=(json_pointer const& lhs, + json_pointer const& rhs) noexcept + { + return !(lhs == rhs); + } + + /// the reference tokens + std::vector reference_tokens; + }; +} // namespace nlohmann + +// #include + + +#include +#include + +// #include + + +namespace nlohmann +{ + namespace detail + { + template + class json_ref + { + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)) + {} + + json_ref(const value_type& value) + : value_ref(&value) + {} + + json_ref(std::initializer_list init) + : owned_value(init) + {} + + template < + class... Args, + enable_if_t::value, int> = 0 > + json_ref(Args && ... args) + : owned_value(std::forward(args)...) + {} + + // class should be movable only + json_ref(json_ref&&) noexcept = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + json_ref& operator=(json_ref&&) = delete; + ~json_ref() = default; + + value_type moved_or_copied() const + { + if (value_ref == nullptr) + { + return std::move(owned_value); + } + return *value_ref; + } + + value_type const& operator*() const + { + return value_ref ? *value_ref : owned_value; + } + + value_type const* operator->() const + { + return &**this; + } + + private: + mutable value_type owned_value = nullptr; + value_type const* value_ref = nullptr; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + +// #include + +// #include + +// #include + + +#include // reverse +#include // array +#include // isnan, isinf +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // memcpy +#include // numeric_limits +#include // string +#include // move + +// #include + +// #include + +// #include + + +#include // copy +#include // size_t +#include // back_inserter +#include // shared_ptr, make_shared +#include // basic_string +#include // vector + +#ifndef JSON_NO_IO +#include // streamsize +#include // basic_ostream +#endif // JSON_NO_IO + +// #include + + +namespace nlohmann +{ + namespace detail + { + /// abstract output adapter interface + template struct output_adapter_protocol + { + virtual void write_character(CharType c) = 0; + virtual void write_characters(const CharType* s, std::size_t length) = 0; + virtual ~output_adapter_protocol() = default; + + output_adapter_protocol() = default; + output_adapter_protocol(const output_adapter_protocol&) = default; + output_adapter_protocol(output_adapter_protocol&&) noexcept = default; + output_adapter_protocol& operator=(const output_adapter_protocol&) = default; + output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default; + }; + + /// a type to simplify interfaces + template + using output_adapter_t = std::shared_ptr>; + + /// output adapter for byte vectors + template + class output_vector_adapter : public output_adapter_protocol + { + public: + explicit output_vector_adapter(std::vector& vec) noexcept + : v(vec) + {} + + void write_character(CharType c) override + { + v.push_back(c); + } + + JSON_HEDLEY_NON_NULL(2) + void write_characters(const CharType* s, std::size_t length) override + { + std::copy(s, s + length, std::back_inserter(v)); + } + + private: + std::vector& v; + }; + +#ifndef JSON_NO_IO + /// output adapter for output streams + template + class output_stream_adapter : public output_adapter_protocol + { + public: + explicit output_stream_adapter(std::basic_ostream& s) noexcept + : stream(s) + {} + + void write_character(CharType c) override + { + stream.put(c); + } + + JSON_HEDLEY_NON_NULL(2) + void write_characters(const CharType* s, std::size_t length) override + { + stream.write(s, static_cast(length)); + } + + private: + std::basic_ostream& stream; + }; +#endif // JSON_NO_IO + + /// output adapter for basic_string + template> + class output_string_adapter : public output_adapter_protocol + { + public: + explicit output_string_adapter(StringType& s) noexcept + : str(s) + {} + + void write_character(CharType c) override + { + str.push_back(c); + } + + JSON_HEDLEY_NON_NULL(2) + void write_characters(const CharType* s, std::size_t length) override + { + str.append(s, length); + } + + private: + StringType& str; + }; + + template> + class output_adapter + { + public: + output_adapter(std::vector& vec) + : oa(std::make_shared>(vec)) {} + +#ifndef JSON_NO_IO + output_adapter(std::basic_ostream& s) + : oa(std::make_shared>(s)) {} +#endif // JSON_NO_IO + + output_adapter(StringType& s) + : oa(std::make_shared>(s)) {} + + operator output_adapter_t() + { + return oa; + } + + private: + output_adapter_t oa = nullptr; + }; + } // namespace detail +} // namespace nlohmann + + +namespace nlohmann +{ + namespace detail + { + /////////////////// + // binary writer // + /////////////////// + + /*! + @brief serialization to CBOR and MessagePack values + */ + template + class binary_writer + { + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using number_float_t = typename BasicJsonType::number_float_t; + + public: + /*! + @brief create a binary writer + + @param[in] adapter output adapter to write to + */ + explicit binary_writer(output_adapter_t adapter) : oa(std::move(adapter)) + { + JSON_ASSERT(oa); + } + + /*! + @param[in] j JSON value to serialize + @pre j.type() == value_t::object + */ + void write_bson(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::object: + { + write_bson_object(*j.m_value.object); + break; + } + + case value_t::null: + case value_t::array: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + JSON_THROW(type_error::create(317, "to serialize to BSON, top-level type must be object, but is " + std::string(j.type_name()), j)); + } + } + } + + /*! + @param[in] j JSON value to serialize + */ + void write_cbor(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: + { + oa->write_character(to_char_type(0xF6)); + break; + } + + case value_t::boolean: + { + oa->write_character(j.m_value.boolean + ? to_char_type(0xF5) + : to_char_type(0xF4)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // CBOR does not differentiate between positive signed + // integers and unsigned integers. Therefore, we used the + // code from the value_t::number_unsigned case here. + if (j.m_value.number_integer <= 0x17) + { + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x18)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x19)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x1A)); + write_number(static_cast(j.m_value.number_integer)); + } + else + { + oa->write_character(to_char_type(0x1B)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + // The conversions below encode the sign in the first + // byte, and the value is converted to a positive number. + const auto positive_number = -1 - j.m_value.number_integer; + if (j.m_value.number_integer >= -24) + { + write_number(static_cast(0x20 + positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x38)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x39)); + write_number(static_cast(positive_number)); + } + else if (positive_number <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x3A)); + write_number(static_cast(positive_number)); + } + else + { + oa->write_character(to_char_type(0x3B)); + write_number(static_cast(positive_number)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= 0x17) + { + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x18)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x19)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x1A)); + write_number(static_cast(j.m_value.number_unsigned)); + } + else + { + oa->write_character(to_char_type(0x1B)); + write_number(static_cast(j.m_value.number_unsigned)); + } + break; + } + + case value_t::number_float: + { + if (std::isnan(j.m_value.number_float)) + { + // NaN is 0xf97e00 in CBOR + oa->write_character(to_char_type(0xF9)); + oa->write_character(to_char_type(0x7E)); + oa->write_character(to_char_type(0x00)); + } + else if (std::isinf(j.m_value.number_float)) + { + // Infinity is 0xf97c00, -Infinity is 0xf9fc00 + oa->write_character(to_char_type(0xf9)); + oa->write_character(j.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC)); + oa->write_character(to_char_type(0x00)); + } + else + { + write_compact_float(j.m_value.number_float, detail::input_format_t::cbor); + } + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 0x17) + { + write_number(static_cast(0x60 + N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x78)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x79)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x7A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x7B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 0x17) + { + write_number(static_cast(0x80 + N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x98)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x99)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x9A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x9B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_cbor(el); + } + break; + } + + case value_t::binary: + { + if (j.m_value.binary->has_subtype()) + { + if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) + { + write_number(static_cast(0xd8)); + write_number(static_cast(j.m_value.binary->subtype())); + } + else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) + { + write_number(static_cast(0xd9)); + write_number(static_cast(j.m_value.binary->subtype())); + } + else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) + { + write_number(static_cast(0xda)); + write_number(static_cast(j.m_value.binary->subtype())); + } + else if (j.m_value.binary->subtype() <= (std::numeric_limits::max)()) + { + write_number(static_cast(0xdb)); + write_number(static_cast(j.m_value.binary->subtype())); + } + } + + // step 1: write control byte and the binary array size + const auto N = j.m_value.binary->size(); + if (N <= 0x17) + { + write_number(static_cast(0x40 + N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x58)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x59)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x5A)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0x5B)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + oa->write_characters( + reinterpret_cast(j.m_value.binary->data()), + N); + + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 0x17) + { + write_number(static_cast(0xA0 + N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0xB8)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0xB9)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0xBA)); + write_number(static_cast(N)); + } + // LCOV_EXCL_START + else if (N <= (std::numeric_limits::max)()) + { + oa->write_character(to_char_type(0xBB)); + write_number(static_cast(N)); + } + // LCOV_EXCL_STOP + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_cbor(el.first); + write_cbor(el.second); + } + break; + } + + case value_t::discarded: + default: + break; + } + } + + /*! + @param[in] j JSON value to serialize + */ + void write_msgpack(const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::null: // nil + { + oa->write_character(to_char_type(0xC0)); + break; + } + + case value_t::boolean: // true and false + { + oa->write_character(j.m_value.boolean + ? to_char_type(0xC3) + : to_char_type(0xC2)); + break; + } + + case value_t::number_integer: + { + if (j.m_value.number_integer >= 0) + { + // MessagePack does not differentiate between positive + // signed integers and unsigned integers. Therefore, we used + // the code from the value_t::number_unsigned case here. + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(to_char_type(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(to_char_type(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(to_char_type(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(to_char_type(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + } + else + { + if (j.m_value.number_integer >= -32) + { + // negative fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() && + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 8 + oa->write_character(to_char_type(0xD0)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() && + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 16 + oa->write_character(to_char_type(0xD1)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() && + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 32 + oa->write_character(to_char_type(0xD2)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_integer >= (std::numeric_limits::min)() && + j.m_value.number_integer <= (std::numeric_limits::max)()) + { + // int 64 + oa->write_character(to_char_type(0xD3)); + write_number(static_cast(j.m_value.number_integer)); + } + } + break; + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned < 128) + { + // positive fixnum + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 8 + oa->write_character(to_char_type(0xCC)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 16 + oa->write_character(to_char_type(0xCD)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 32 + oa->write_character(to_char_type(0xCE)); + write_number(static_cast(j.m_value.number_integer)); + } + else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) + { + // uint 64 + oa->write_character(to_char_type(0xCF)); + write_number(static_cast(j.m_value.number_integer)); + } + break; + } + + case value_t::number_float: + { + write_compact_float(j.m_value.number_float, detail::input_format_t::msgpack); + break; + } + + case value_t::string: + { + // step 1: write control byte and the string length + const auto N = j.m_value.string->size(); + if (N <= 31) + { + // fixstr + write_number(static_cast(0xA0 | N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // str 8 + oa->write_character(to_char_type(0xD9)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // str 16 + oa->write_character(to_char_type(0xDA)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // str 32 + oa->write_character(to_char_type(0xDB)); + write_number(static_cast(N)); + } + + // step 2: write the string + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + // step 1: write control byte and the array size + const auto N = j.m_value.array->size(); + if (N <= 15) + { + // fixarray + write_number(static_cast(0x90 | N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // array 16 + oa->write_character(to_char_type(0xDC)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // array 32 + oa->write_character(to_char_type(0xDD)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.array) + { + write_msgpack(el); + } + break; + } + + case value_t::binary: + { + // step 0: determine if the binary type has a set subtype to + // determine whether or not to use the ext or fixext types + const bool use_ext = j.m_value.binary->has_subtype(); + + // step 1: write control byte and the byte string length + const auto N = j.m_value.binary->size(); + if (N <= (std::numeric_limits::max)()) + { + std::uint8_t output_type{}; + bool fixed = true; + if (use_ext) + { + switch (N) + { + case 1: + output_type = 0xD4; // fixext 1 + break; + case 2: + output_type = 0xD5; // fixext 2 + break; + case 4: + output_type = 0xD6; // fixext 4 + break; + case 8: + output_type = 0xD7; // fixext 8 + break; + case 16: + output_type = 0xD8; // fixext 16 + break; + default: + output_type = 0xC7; // ext 8 + fixed = false; + break; + } + + } + else + { + output_type = 0xC4; // bin 8 + fixed = false; + } + + oa->write_character(to_char_type(output_type)); + if (!fixed) + { + write_number(static_cast(N)); + } + } + else if (N <= (std::numeric_limits::max)()) + { + std::uint8_t output_type = use_ext + ? 0xC8 // ext 16 + : 0xC5; // bin 16 + + oa->write_character(to_char_type(output_type)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + std::uint8_t output_type = use_ext + ? 0xC9 // ext 32 + : 0xC6; // bin 32 + + oa->write_character(to_char_type(output_type)); + write_number(static_cast(N)); + } + + // step 1.5: if this is an ext type, write the subtype + if (use_ext) + { + write_number(static_cast(j.m_value.binary->subtype())); + } + + // step 2: write the byte string + oa->write_characters( + reinterpret_cast(j.m_value.binary->data()), + N); + + break; + } + + case value_t::object: + { + // step 1: write control byte and the object size + const auto N = j.m_value.object->size(); + if (N <= 15) + { + // fixmap + write_number(static_cast(0x80 | (N & 0xF))); + } + else if (N <= (std::numeric_limits::max)()) + { + // map 16 + oa->write_character(to_char_type(0xDE)); + write_number(static_cast(N)); + } + else if (N <= (std::numeric_limits::max)()) + { + // map 32 + oa->write_character(to_char_type(0xDF)); + write_number(static_cast(N)); + } + + // step 2: write each element + for (const auto& el : *j.m_value.object) + { + write_msgpack(el.first); + write_msgpack(el.second); + } + break; + } + + case value_t::discarded: + default: + break; + } + } + + /*! + @param[in] j JSON value to serialize + @param[in] use_count whether to use '#' prefixes (optimized format) + @param[in] use_type whether to use '$' prefixes (optimized format) + @param[in] add_prefix whether prefixes need to be used for this value + */ + void write_ubjson(const BasicJsonType& j, const bool use_count, + const bool use_type, const bool add_prefix = true) + { + switch (j.type()) + { + case value_t::null: + { + if (add_prefix) + { + oa->write_character(to_char_type('Z')); + } + break; + } + + case value_t::boolean: + { + if (add_prefix) + { + oa->write_character(j.m_value.boolean + ? to_char_type('T') + : to_char_type('F')); + } + break; + } + + case value_t::number_integer: + { + write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); + break; + } + + case value_t::number_unsigned: + { + write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); + break; + } + + case value_t::number_float: + { + write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); + break; + } + + case value_t::string: + { + if (add_prefix) + { + oa->write_character(to_char_type('S')); + } + write_number_with_ubjson_prefix(j.m_value.string->size(), true); + oa->write_characters( + reinterpret_cast(j.m_value.string->c_str()), + j.m_value.string->size()); + break; + } + + case value_t::array: + { + if (add_prefix) + { + oa->write_character(to_char_type('[')); + } + + bool prefix_required = true; + if (use_type && !j.m_value.array->empty()) + { + JSON_ASSERT(use_count); + const CharType first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin() + 1, j.end(), + [this, first_prefix](const BasicJsonType& v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(to_char_type('$')); + oa->write_character(first_prefix); + } + } + + if (use_count) + { + oa->write_character(to_char_type('#')); + write_number_with_ubjson_prefix(j.m_value.array->size(), true); + } + + for (const auto& el : *j.m_value.array) + { + write_ubjson(el, use_count, use_type, prefix_required); + } + + if (!use_count) + { + oa->write_character(to_char_type(']')); + } + + break; + } + + case value_t::binary: + { + if (add_prefix) + { + oa->write_character(to_char_type('[')); + } + + if (use_type && !j.m_value.binary->empty()) + { + JSON_ASSERT(use_count); + oa->write_character(to_char_type('$')); + oa->write_character('U'); + } + + if (use_count) + { + oa->write_character(to_char_type('#')); + write_number_with_ubjson_prefix(j.m_value.binary->size(), true); + } + + if (use_type) + { + oa->write_characters( + reinterpret_cast(j.m_value.binary->data()), + j.m_value.binary->size()); + } + else + { + for (size_t i = 0; i < j.m_value.binary->size(); ++i) + { + oa->write_character(to_char_type('U')); + oa->write_character(j.m_value.binary->data()[i]); + } + } + + if (!use_count) + { + oa->write_character(to_char_type(']')); + } + + break; + } + + case value_t::object: + { + if (add_prefix) + { + oa->write_character(to_char_type('{')); + } + + bool prefix_required = true; + if (use_type && !j.m_value.object->empty()) + { + JSON_ASSERT(use_count); + const CharType first_prefix = ubjson_prefix(j.front()); + const bool same_prefix = std::all_of(j.begin(), j.end(), + [this, first_prefix](const BasicJsonType& v) + { + return ubjson_prefix(v) == first_prefix; + }); + + if (same_prefix) + { + prefix_required = false; + oa->write_character(to_char_type('$')); + oa->write_character(first_prefix); + } + } + + if (use_count) + { + oa->write_character(to_char_type('#')); + write_number_with_ubjson_prefix(j.m_value.object->size(), true); + } + + for (const auto& el : *j.m_value.object) + { + write_number_with_ubjson_prefix(el.first.size(), true); + oa->write_characters( + reinterpret_cast(el.first.c_str()), + el.first.size()); + write_ubjson(el.second, use_count, use_type, prefix_required); + } + + if (!use_count) + { + oa->write_character(to_char_type('}')); + } + + break; + } + + case value_t::discarded: + default: + break; + } + } + + private: + ////////// + // BSON // + ////////// + + /*! + @return The size of a BSON document entry header, including the id marker + and the entry name size (and its null-terminator). + */ + static std::size_t calc_bson_entry_header_size(const string_t& name, const BasicJsonType& j) + { + const auto it = name.find(static_cast(0)); + if (JSON_HEDLEY_UNLIKELY(it != BasicJsonType::string_t::npos)) + { + JSON_THROW(out_of_range::create(409, "BSON key cannot contain code point U+0000 (at byte " + std::to_string(it) + ")", j)); + static_cast(j); + } + + return /*id*/ 1ul + name.size() + /*zero-terminator*/1u; + } + + /*! + @brief Writes the given @a element_type and @a name to the output adapter + */ + void write_bson_entry_header(const string_t& name, + const std::uint8_t element_type) + { + oa->write_character(to_char_type(element_type)); // boolean + oa->write_characters( + reinterpret_cast(name.c_str()), + name.size() + 1u); + } + + /*! + @brief Writes a BSON element with key @a name and boolean value @a value + */ + void write_bson_boolean(const string_t& name, + const bool value) + { + write_bson_entry_header(name, 0x08); + oa->write_character(value ? to_char_type(0x01) : to_char_type(0x00)); + } + + /*! + @brief Writes a BSON element with key @a name and double value @a value + */ + void write_bson_double(const string_t& name, + const double value) + { + write_bson_entry_header(name, 0x01); + write_number(value); + } + + /*! + @return The size of the BSON-encoded string in @a value + */ + static std::size_t calc_bson_string_size(const string_t& value) + { + return sizeof(std::int32_t) + value.size() + 1ul; + } + + /*! + @brief Writes a BSON element with key @a name and string value @a value + */ + void write_bson_string(const string_t& name, + const string_t& value) + { + write_bson_entry_header(name, 0x02); + + write_number(static_cast(value.size() + 1ul)); + oa->write_characters( + reinterpret_cast(value.c_str()), + value.size() + 1); + } + + /*! + @brief Writes a BSON element with key @a name and null value + */ + void write_bson_null(const string_t& name) + { + write_bson_entry_header(name, 0x0A); + } + + /*! + @return The size of the BSON-encoded integer @a value + */ + static std::size_t calc_bson_integer_size(const std::int64_t value) + { + return (std::numeric_limits::min)() <= value && value <= (std::numeric_limits::max)() + ? sizeof(std::int32_t) + : sizeof(std::int64_t); + } + + /*! + @brief Writes a BSON element with key @a name and integer @a value + */ + void write_bson_integer(const string_t& name, + const std::int64_t value) + { + if ((std::numeric_limits::min)() <= value && value <= (std::numeric_limits::max)()) + { + write_bson_entry_header(name, 0x10); // int32 + write_number(static_cast(value)); + } + else + { + write_bson_entry_header(name, 0x12); // int64 + write_number(static_cast(value)); + } + } + + /*! + @return The size of the BSON-encoded unsigned integer in @a j + */ + static constexpr std::size_t calc_bson_unsigned_size(const std::uint64_t value) noexcept + { + return (value <= static_cast((std::numeric_limits::max)())) + ? sizeof(std::int32_t) + : sizeof(std::int64_t); + } + + /*! + @brief Writes a BSON element with key @a name and unsigned @a value + */ + void write_bson_unsigned(const string_t& name, + const BasicJsonType& j) + { + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + write_bson_entry_header(name, 0x10 /* int32 */); + write_number(static_cast(j.m_value.number_unsigned)); + } + else if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + write_bson_entry_header(name, 0x12 /* int64 */); + write_number(static_cast(j.m_value.number_unsigned)); + } + else + { + JSON_THROW(out_of_range::create(407, "integer number " + std::to_string(j.m_value.number_unsigned) + " cannot be represented by BSON as it does not fit int64", j)); + } + } + + /*! + @brief Writes a BSON element with key @a name and object @a value + */ + void write_bson_object_entry(const string_t& name, + const typename BasicJsonType::object_t& value) + { + write_bson_entry_header(name, 0x03); // object + write_bson_object(value); + } + + /*! + @return The size of the BSON-encoded array @a value + */ + static std::size_t calc_bson_array_size(const typename BasicJsonType::array_t& value) + { + std::size_t array_index = 0ul; + + const std::size_t embedded_document_size = std::accumulate(std::begin(value), std::end(value), std::size_t(0), [&array_index](std::size_t result, const typename BasicJsonType::array_t::value_type& el) + { + return result + calc_bson_element_size(std::to_string(array_index++), el); + }); + + return sizeof(std::int32_t) + embedded_document_size + 1ul; + } + + /*! + @return The size of the BSON-encoded binary array @a value + */ + static std::size_t calc_bson_binary_size(const typename BasicJsonType::binary_t& value) + { + return sizeof(std::int32_t) + value.size() + 1ul; + } + + /*! + @brief Writes a BSON element with key @a name and array @a value + */ + void write_bson_array(const string_t& name, + const typename BasicJsonType::array_t& value) + { + write_bson_entry_header(name, 0x04); // array + write_number(static_cast(calc_bson_array_size(value))); + + std::size_t array_index = 0ul; + + for (const auto& el : value) + { + write_bson_element(std::to_string(array_index++), el); + } + + oa->write_character(to_char_type(0x00)); + } + + /*! + @brief Writes a BSON element with key @a name and binary value @a value + */ + void write_bson_binary(const string_t& name, + const binary_t& value) + { + write_bson_entry_header(name, 0x05); + + write_number(static_cast(value.size())); + write_number(value.has_subtype() ? static_cast(value.subtype()) : std::uint8_t(0x00)); + + oa->write_characters(reinterpret_cast(value.data()), value.size()); + } + + /*! + @brief Calculates the size necessary to serialize the JSON value @a j with its @a name + @return The calculated size for the BSON document entry for @a j with the given @a name. + */ + static std::size_t calc_bson_element_size(const string_t& name, + const BasicJsonType& j) + { + const auto header_size = calc_bson_entry_header_size(name, j); + switch (j.type()) + { + case value_t::object: + return header_size + calc_bson_object_size(*j.m_value.object); + + case value_t::array: + return header_size + calc_bson_array_size(*j.m_value.array); + + case value_t::binary: + return header_size + calc_bson_binary_size(*j.m_value.binary); + + case value_t::boolean: + return header_size + 1ul; + + case value_t::number_float: + return header_size + 8ul; + + case value_t::number_integer: + return header_size + calc_bson_integer_size(j.m_value.number_integer); + + case value_t::number_unsigned: + return header_size + calc_bson_unsigned_size(j.m_value.number_unsigned); + + case value_t::string: + return header_size + calc_bson_string_size(*j.m_value.string); + + case value_t::null: + return header_size + 0ul; + + // LCOV_EXCL_START + case value_t::discarded: + default: + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) + return 0ul; + // LCOV_EXCL_STOP + } + } + + /*! + @brief Serializes the JSON value @a j to BSON and associates it with the + key @a name. + @param name The name to associate with the JSON entity @a j within the + current BSON document + */ + void write_bson_element(const string_t& name, + const BasicJsonType& j) + { + switch (j.type()) + { + case value_t::object: + return write_bson_object_entry(name, *j.m_value.object); + + case value_t::array: + return write_bson_array(name, *j.m_value.array); + + case value_t::binary: + return write_bson_binary(name, *j.m_value.binary); + + case value_t::boolean: + return write_bson_boolean(name, j.m_value.boolean); + + case value_t::number_float: + return write_bson_double(name, j.m_value.number_float); + + case value_t::number_integer: + return write_bson_integer(name, j.m_value.number_integer); + + case value_t::number_unsigned: + return write_bson_unsigned(name, j); + + case value_t::string: + return write_bson_string(name, *j.m_value.string); + + case value_t::null: + return write_bson_null(name); + + // LCOV_EXCL_START + case value_t::discarded: + default: + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) + return; + // LCOV_EXCL_STOP + } + } + + /*! + @brief Calculates the size of the BSON serialization of the given + JSON-object @a j. + @param[in] value JSON value to serialize + @pre value.type() == value_t::object + */ + static std::size_t calc_bson_object_size(const typename BasicJsonType::object_t& value) + { + std::size_t document_size = std::accumulate(value.begin(), value.end(), std::size_t(0), + [](size_t result, const typename BasicJsonType::object_t::value_type& el) + { + return result += calc_bson_element_size(el.first, el.second); + }); + + return sizeof(std::int32_t) + document_size + 1ul; + } + + /*! + @param[in] value JSON value to serialize + @pre value.type() == value_t::object + */ + void write_bson_object(const typename BasicJsonType::object_t& value) + { + write_number(static_cast(calc_bson_object_size(value))); + + for (const auto& el : value) + { + write_bson_element(el.first, el.second); + } + + oa->write_character(to_char_type(0x00)); + } + + ////////// + // CBOR // + ////////// + + static constexpr CharType get_cbor_float_prefix(float /*unused*/) + { + return to_char_type(0xFA); // Single-Precision Float + } + + static constexpr CharType get_cbor_float_prefix(double /*unused*/) + { + return to_char_type(0xFB); // Double-Precision Float + } + + ///////////// + // MsgPack // + ///////////// + + static constexpr CharType get_msgpack_float_prefix(float /*unused*/) + { + return to_char_type(0xCA); // float 32 + } + + static constexpr CharType get_msgpack_float_prefix(double /*unused*/) + { + return to_char_type(0xCB); // float 64 + } + + //////////// + // UBJSON // + //////////// + + // UBJSON: write number (floating point) + template::value, int>::type = 0> + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if (add_prefix) + { + oa->write_character(get_ubjson_float_prefix(n)); + } + write_number(n); + } + + // UBJSON: write number (unsigned integer) + template::value, int>::type = 0> + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if (n <= static_cast((std::numeric_limits::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('i')); // int8 + } + write_number(static_cast(n)); + } + else if (n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('U')); // uint8 + } + write_number(static_cast(n)); + } + else if (n <= static_cast((std::numeric_limits::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('I')); // int16 + } + write_number(static_cast(n)); + } + else if (n <= static_cast((std::numeric_limits::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('l')); // int32 + } + write_number(static_cast(n)); + } + else if (n <= static_cast((std::numeric_limits::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('L')); // int64 + } + write_number(static_cast(n)); + } + else + { + if (add_prefix) + { + oa->write_character(to_char_type('H')); // high-precision number + } + + const auto number = BasicJsonType(n).dump(); + write_number_with_ubjson_prefix(number.size(), true); + for (std::size_t i = 0; i < number.size(); ++i) + { + oa->write_character(to_char_type(static_cast(number[i]))); + } + } + } + + // UBJSON: write number (signed integer) + template < typename NumberType, typename std::enable_if < + std::is_signed::value && + !std::is_floating_point::value, int >::type = 0 > + void write_number_with_ubjson_prefix(const NumberType n, + const bool add_prefix) + { + if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('i')); // int8 + } + write_number(static_cast(n)); + } + else if (static_cast((std::numeric_limits::min)()) <= n && n <= static_cast((std::numeric_limits::max)())) + { + if (add_prefix) + { + oa->write_character(to_char_type('U')); // uint8 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('I')); // int16 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('l')); // int32 + } + write_number(static_cast(n)); + } + else if ((std::numeric_limits::min)() <= n && n <= (std::numeric_limits::max)()) + { + if (add_prefix) + { + oa->write_character(to_char_type('L')); // int64 + } + write_number(static_cast(n)); + } + // LCOV_EXCL_START + else + { + if (add_prefix) + { + oa->write_character(to_char_type('H')); // high-precision number + } + + const auto number = BasicJsonType(n).dump(); + write_number_with_ubjson_prefix(number.size(), true); + for (std::size_t i = 0; i < number.size(); ++i) + { + oa->write_character(to_char_type(static_cast(number[i]))); + } + } + // LCOV_EXCL_STOP + } + + /*! + @brief determine the type prefix of container values + */ + CharType ubjson_prefix(const BasicJsonType& j) const noexcept + { + switch (j.type()) + { + case value_t::null: + return 'Z'; + + case value_t::boolean: + return j.m_value.boolean ? 'T' : 'F'; + + case value_t::number_integer: + { + if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'i'; + } + if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'U'; + } + if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'I'; + } + if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'l'; + } + if ((std::numeric_limits::min)() <= j.m_value.number_integer && j.m_value.number_integer <= (std::numeric_limits::max)()) + { + return 'L'; + } + // anything else is treated as high-precision number + return 'H'; // LCOV_EXCL_LINE + } + + case value_t::number_unsigned: + { + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + return 'i'; + } + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + return 'U'; + } + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + return 'I'; + } + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + return 'l'; + } + if (j.m_value.number_unsigned <= static_cast((std::numeric_limits::max)())) + { + return 'L'; + } + // anything else is treated as high-precision number + return 'H'; // LCOV_EXCL_LINE + } + + case value_t::number_float: + return get_ubjson_float_prefix(j.m_value.number_float); + + case value_t::string: + return 'S'; + + case value_t::array: // fallthrough + case value_t::binary: + return '['; + + case value_t::object: + return '{'; + + case value_t::discarded: + default: // discarded values + return 'N'; + } + } + + static constexpr CharType get_ubjson_float_prefix(float /*unused*/) + { + return 'd'; // float 32 + } + + static constexpr CharType get_ubjson_float_prefix(double /*unused*/) + { + return 'D'; // float 64 + } + + /////////////////////// + // Utility functions // + /////////////////////// + + /* + @brief write a number to output input + @param[in] n number of type @a NumberType + @tparam NumberType the type of the number + @tparam OutputIsLittleEndian Set to true if output data is + required to be little endian + + @note This function needs to respect the system's endianess, because bytes + in CBOR, MessagePack, and UBJSON are stored in network order (big + endian) and therefore need reordering on little endian systems. + */ + template + void write_number(const NumberType n) + { + // step 1: write number to array of length NumberType + std::array vec{}; + std::memcpy(vec.data(), &n, sizeof(NumberType)); + + // step 2: write array to output (with possible reordering) + if (is_little_endian != OutputIsLittleEndian) + { + // reverse byte order prior to conversion if necessary + std::reverse(vec.begin(), vec.end()); + } + + oa->write_characters(vec.data(), sizeof(NumberType)); + } + + void write_compact_float(const number_float_t n, detail::input_format_t format) + { +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + if (static_cast(n) >= static_cast(std::numeric_limits::lowest()) && + static_cast(n) <= static_cast((std::numeric_limits::max)()) && + static_cast(static_cast(n)) == static_cast(n)) + { + oa->write_character(format == detail::input_format_t::cbor + ? get_cbor_float_prefix(static_cast(n)) + : get_msgpack_float_prefix(static_cast(n))); + write_number(static_cast(n)); + } + else + { + oa->write_character(format == detail::input_format_t::cbor + ? get_cbor_float_prefix(n) + : get_msgpack_float_prefix(n)); + write_number(n); + } +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + } + + public: + // The following to_char_type functions are implement the conversion + // between uint8_t and CharType. In case CharType is not unsigned, + // such a conversion is required to allow values greater than 128. + // See for a discussion. + template < typename C = CharType, + enable_if_t < std::is_signed::value&& std::is_signed::value >* = nullptr > + static constexpr CharType to_char_type(std::uint8_t x) noexcept + { + return *reinterpret_cast(&x); + } + + template < typename C = CharType, + enable_if_t < std::is_signed::value&& std::is_unsigned::value >* = nullptr > + static CharType to_char_type(std::uint8_t x) noexcept + { + static_assert(sizeof(std::uint8_t) == sizeof(CharType), "size of CharType must be equal to std::uint8_t"); + static_assert(std::is_trivial::value, "CharType must be trivial"); + CharType result; + std::memcpy(&result, &x, sizeof(x)); + return result; + } + + template::value>* = nullptr> + static constexpr CharType to_char_type(std::uint8_t x) noexcept + { + return x; + } + + template < typename InputCharType, typename C = CharType, + enable_if_t < + std::is_signed::value&& + std::is_signed::value&& + std::is_same::type>::value + >* = nullptr > + static constexpr CharType to_char_type(InputCharType x) noexcept + { + return x; + } + + private: + /// whether we can assume little endianess + const bool is_little_endian = little_endianess(); + + /// the output + output_adapter_t oa = nullptr; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + + +#include // reverse, remove, fill, find, none_of +#include // array +#include // localeconv, lconv +#include // labs, isfinite, isnan, signbit +#include // size_t, ptrdiff_t +#include // uint8_t +#include // snprintf +#include // numeric_limits +#include // string, char_traits +#include // is_same +#include // move + +// #include + + +#include // array +#include // signbit, isfinite +#include // intN_t, uintN_t +#include // memcpy, memmove +#include // numeric_limits +#include // conditional + +// #include + + +namespace nlohmann +{ + namespace detail + { + + /*! + @brief implements the Grisu2 algorithm for binary to decimal floating-point + conversion. + + This implementation is a slightly modified version of the reference + implementation which may be obtained from + http://florian.loitsch.com/publications (bench.tar.gz). + + The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. + + For a detailed description of the algorithm see: + + [1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with + Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming + Language Design and Implementation, PLDI 2010 + [2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", + Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language + Design and Implementation, PLDI 1996 + */ + namespace dtoa_impl + { + + template + Target reinterpret_bits(const Source source) + { + static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); + + Target target; + std::memcpy(&target, &source, sizeof(Source)); + return target; + } + + struct diyfp // f * 2^e + { + static constexpr int kPrecision = 64; // = q + + std::uint64_t f = 0; + int e = 0; + + constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {} + + /*! + @brief returns x - y + @pre x.e == y.e and x.f >= y.f + */ + static diyfp sub(const diyfp& x, const diyfp& y) noexcept + { + JSON_ASSERT(x.e == y.e); + JSON_ASSERT(x.f >= y.f); + + return { x.f - y.f, x.e }; + } + + /*! + @brief returns x * y + @note The result is rounded. (Only the upper q bits are returned.) + */ + static diyfp mul(const diyfp& x, const diyfp& y) noexcept + { + static_assert(kPrecision == 64, "internal error"); + + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q + + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi + + const std::uint64_t u_lo = x.f & 0xFFFFFFFFu; + const std::uint64_t u_hi = x.f >> 32u; + const std::uint64_t v_lo = y.f & 0xFFFFFFFFu; + const std::uint64_t v_hi = y.f >> 32u; + + const std::uint64_t p0 = u_lo * v_lo; + const std::uint64_t p1 = u_lo * v_hi; + const std::uint64_t p2 = u_hi * v_lo; + const std::uint64_t p3 = u_hi * v_hi; + + const std::uint64_t p0_hi = p0 >> 32u; + const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu; + const std::uint64_t p1_hi = p1 >> 32u; + const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu; + const std::uint64_t p2_hi = p2 >> 32u; + + std::uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += std::uint64_t{ 1 } << (64u - 32u - 1u); // round, ties up + + const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); + + return { h, x.e + y.e + 64 }; + } + + /*! + @brief normalize x such that the significand is >= 2^(q-1) + @pre x.f != 0 + */ + static diyfp normalize(diyfp x) noexcept + { + JSON_ASSERT(x.f != 0); + + while ((x.f >> 63u) == 0) + { + x.f <<= 1u; + x.e--; + } + + return x; + } + + /*! + @brief normalize x such that the result has the exponent E + @pre e >= x.e and the upper e - x.e bits of x.f must be zero. + */ + static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept + { + const int delta = x.e - target_exponent; + + JSON_ASSERT(delta >= 0); + JSON_ASSERT(((x.f << delta) >> delta) == x.f); + + return { x.f << delta, target_exponent }; + } + }; + + struct boundaries + { + diyfp w; + diyfp minus; + diyfp plus; + }; + + /*! + Compute the (normalized) diyfp representing the input number 'value' and its + boundaries. + + @pre value must be finite and positive + */ + template + boundaries compute_boundaries(FloatType value) + { + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); + + // Convert the IEEE representation into a diyfp. + // + // If v is denormal: + // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) + // If v is normalized: + // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) + + static_assert(std::numeric_limits::is_iec559, + "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); + + constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) + constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); + constexpr int kMinExp = 1 - kBias; + constexpr std::uint64_t kHiddenBit = std::uint64_t{ 1 } << (kPrecision - 1); // = 2^(p-1) + + using bits_type = typename std::conditional::type; + + const auto bits = static_cast(reinterpret_bits(value)); + const std::uint64_t E = bits >> (kPrecision - 1); + const std::uint64_t F = bits & (kHiddenBit - 1); + + const bool is_denormal = E == 0; + const diyfp v = is_denormal + ? diyfp(F, kMinExp) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); + + // Compute the boundaries m- and m+ of the floating-point value + // v = f * 2^e. + // + // Determine v- and v+, the floating-point predecessor and successor if v, + // respectively. + // + // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) + // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) + // + // v+ = v + 2^e + // + // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ + // between m- and m+ round to v, regardless of how the input rounding + // algorithm breaks ties. + // + // ---+-------------+-------------+-------------+-------------+--- (A) + // v- m- v m+ v+ + // + // -----------------+------+------+-------------+-------------+--- (B) + // v- m- v m+ v+ + + const bool lower_boundary_is_closer = F == 0 && E > 1; + const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); + const diyfp m_minus = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) + +// Determine the normalized w+ = m+. + const diyfp w_plus = diyfp::normalize(m_plus); + + // Determine w- = m- such that e_(w-) = e_(w+). + const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); + + return { diyfp::normalize(v), w_minus, w_plus }; + } + + // Given normalized diyfp w, Grisu needs to find a (normalized) cached + // power-of-ten c, such that the exponent of the product c * w = f * 2^e lies + // within a certain range [alpha, gamma] (Definition 3.2 from [1]) + // + // alpha <= e = e_c + e_w + q <= gamma + // + // or + // + // f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q + // <= f_c * f_w * 2^gamma + // + // Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies + // + // 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma + // + // or + // + // 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) + // + // The choice of (alpha,gamma) determines the size of the table and the form of + // the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well + // in practice: + // + // The idea is to cut the number c * w = f * 2^e into two parts, which can be + // processed independently: An integral part p1, and a fractional part p2: + // + // f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e + // = (f div 2^-e) + (f mod 2^-e) * 2^e + // = p1 + p2 * 2^e + // + // The conversion of p1 into decimal form requires a series of divisions and + // modulos by (a power of) 10. These operations are faster for 32-bit than for + // 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be + // achieved by choosing + // + // -e >= 32 or e <= -32 := gamma + // + // In order to convert the fractional part + // + // p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // into decimal form, the fraction is repeatedly multiplied by 10 and the digits + // d[-i] are extracted in order: + // + // (10 * p2) div 2^-e = d[-1] + // (10 * p2) mod 2^-e = d[-2] / 10^1 + ... + // + // The multiplication by 10 must not overflow. It is sufficient to choose + // + // 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. + // + // Since p2 = f mod 2^-e < 2^-e, + // + // -e <= 60 or e >= -60 := alpha + + constexpr int kAlpha = -60; + constexpr int kGamma = -32; + + struct cached_power // c = f * 2^e ~= 10^k + { + std::uint64_t f; + int e; + int k; + }; + + /*! + For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached + power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c + satisfies (Definition 3.2 from [1]) + + alpha <= e_c + e + q <= gamma. + */ + inline cached_power get_cached_power_for_binary_exponent(int e) + { + // Now + // + // alpha <= e_c + e + q <= gamma (1) + // ==> f_c * 2^alpha <= c * 2^e * 2^q + // + // and since the c's are normalized, 2^(q-1) <= f_c, + // + // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) + // ==> 2^(alpha - e - 1) <= c + // + // If c were an exact power of ten, i.e. c = 10^k, one may determine k as + // + // k = ceil( log_10( 2^(alpha - e - 1) ) ) + // = ceil( (alpha - e - 1) * log_10(2) ) + // + // From the paper: + // "In theory the result of the procedure could be wrong since c is rounded, + // and the computation itself is approximated [...]. In practice, however, + // this simple function is sufficient." + // + // For IEEE double precision floating-point numbers converted into + // normalized diyfp's w = f * 2^e, with q = 64, + // + // e >= -1022 (min IEEE exponent) + // -52 (p - 1) + // -52 (p - 1, possibly normalize denormal IEEE numbers) + // -11 (normalize the diyfp) + // = -1137 + // + // and + // + // e <= +1023 (max IEEE exponent) + // -52 (p - 1) + // -11 (normalize the diyfp) + // = 960 + // + // This binary exponent range [-1137,960] results in a decimal exponent + // range [-307,324]. One does not need to store a cached power for each + // k in this range. For each such k it suffices to find a cached power + // such that the exponent of the product lies in [alpha,gamma]. + // This implies that the difference of the decimal exponents of adjacent + // table entries must be less than or equal to + // + // floor( (gamma - alpha) * log_10(2) ) = 8. + // + // (A smaller distance gamma-alpha would require a larger table.) + + // NB: + // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. + + constexpr int kCachedPowersMinDecExp = -300; + constexpr int kCachedPowersDecStep = 8; + + static constexpr std::array kCachedPowers = + { + { + { 0xAB70FE17C79AC6CA, -1060, -300 }, + { 0xFF77B1FCBEBCDC4F, -1034, -292 }, + { 0xBE5691EF416BD60C, -1007, -284 }, + { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, + { 0x9D71AC8FADA6C9B5, -927, -260 }, + { 0xEA9C227723EE8BCB, -901, -252 }, + { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, + { 0xC21094364DFB5637, -821, -228 }, + { 0x9096EA6F3848984F, -794, -220 }, + { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, + { 0xEF340A98172AACE5, -715, -196 }, + { 0xB23867FB2A35B28E, -688, -188 }, + { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, + { 0x936B9FCEBB25C996, -608, -164 }, + { 0xDBAC6C247D62A584, -582, -156 }, + { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, + { 0xB5B5ADA8AAFF80B8, -502, -132 }, + { 0x87625F056C7C4A8B, -475, -124 }, + { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, + { 0xDFF9772470297EBD, -396, -100 }, + { 0xA6DFBD9FB8E5B88F, -369, -92 }, + { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, + { 0x8A08F0F8BF0F156B, -289, -68 }, + { 0xCDB02555653131B6, -263, -60 }, + { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, + { 0xAA242499697392D3, -183, -36 }, + { 0xFD87B5F28300CA0E, -157, -28 }, + { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, + { 0xD1B71758E219652C, -77, -4 }, + { 0x9C40000000000000, -50, 4 }, + { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, + { 0x813F3978F8940984, 30, 28 }, + { 0xC097CE7BC90715B3, 56, 36 }, + { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, + { 0x9F4F2726179A2245, 136, 60 }, + { 0xED63A231D4C4FB27, 162, 68 }, + { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, + { 0xC45D1DF942711D9A, 242, 92 }, + { 0x924D692CA61BE758, 269, 100 }, + { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, + { 0xF209787BB47D6B85, 348, 124 }, + { 0xB454E4A179DD1877, 375, 132 }, + { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, + { 0x952AB45CFA97A0B3, 455, 156 }, + { 0xDE469FBD99A05FE3, 481, 164 }, + { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, + { 0xB7DCBF5354E9BECE, 561, 188 }, + { 0x88FCF317F22241E2, 588, 196 }, + { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, + { 0xE2A0B5DC971F303A, 667, 220 }, + { 0xA8D9D1535CE3B396, 694, 228 }, + { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, + { 0x8BAB8EEFB6409C1A, 774, 252 }, + { 0xD01FEF10A657842C, 800, 260 }, + { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, + { 0xAC2820D9623BF429, 880, 284 }, + { 0x80444B5E7AA7CF85, 907, 292 }, + { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, + { 0xD433179D9C8CB841, 986, 316 }, + { 0x9E19DB92B4E31BA9, 1013, 324 }, + } + }; + + // This computation gives exactly the same results for k as + // k = ceil((kAlpha - e - 1) * 0.30102999566398114) + // for |e| <= 1500, but doesn't require floating-point operations. + // NB: log_10(2) ~= 78913 / 2^18 + JSON_ASSERT(e >= -1500); + JSON_ASSERT(e <= 1500); + const int f = kAlpha - e - 1; + const int k = (f * 78913) / (1 << 18) + static_cast(f > 0); + + const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; + JSON_ASSERT(index >= 0); + JSON_ASSERT(static_cast(index) < kCachedPowers.size()); + + const cached_power cached = kCachedPowers[static_cast(index)]; + JSON_ASSERT(kAlpha <= cached.e + e + 64); + JSON_ASSERT(kGamma >= cached.e + e + 64); + + return cached; + } + + /*! + For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. + For n == 0, returns 1 and sets pow10 := 1. + */ + inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) + { + // LCOV_EXCL_START + if (n >= 1000000000) + { + pow10 = 1000000000; + return 10; + } + // LCOV_EXCL_STOP + if (n >= 100000000) + { + pow10 = 100000000; + return 9; + } + if (n >= 10000000) + { + pow10 = 10000000; + return 8; + } + if (n >= 1000000) + { + pow10 = 1000000; + return 7; + } + if (n >= 100000) + { + pow10 = 100000; + return 6; + } + if (n >= 10000) + { + pow10 = 10000; + return 5; + } + if (n >= 1000) + { + pow10 = 1000; + return 4; + } + if (n >= 100) + { + pow10 = 100; + return 3; + } + if (n >= 10) + { + pow10 = 10; + return 2; + } + + pow10 = 1; + return 1; + } + + inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, + std::uint64_t rest, std::uint64_t ten_k) + { + JSON_ASSERT(len >= 1); + JSON_ASSERT(dist <= delta); + JSON_ASSERT(rest <= delta); + JSON_ASSERT(ten_k > 0); + + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // ten_k + // <------> + // <---- rest ----> + // --------------[------------------+----+--------------]-------------- + // w V + // = buf * 10^k + // + // ten_k represents a unit-in-the-last-place in the decimal representation + // stored in buf. + // Decrement buf by ten_k while this takes buf closer to w. + + // The tests are written in this order to avoid overflow in unsigned + // integer arithmetic. + + while (rest < dist + && delta - rest >= ten_k + && (rest + ten_k < dist || dist - rest > rest + ten_k - dist)) + { + JSON_ASSERT(buf[len - 1] != '0'); + buf[len - 1]--; + rest += ten_k; + } + } + + /*! + Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. + M- and M+ must be normalized and share the same exponent -60 <= e <= -32. + */ + inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, + diyfp M_minus, diyfp w, diyfp M_plus) + { + static_assert(kAlpha >= -60, "internal error"); + static_assert(kGamma <= -32, "internal error"); + + // Generates the digits (and the exponent) of a decimal floating-point + // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's + // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. + // + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // Grisu2 generates the digits of M+ from left to right and stops as soon as + // V is in [M-,M+]. + + JSON_ASSERT(M_plus.e >= kAlpha); + JSON_ASSERT(M_plus.e <= kGamma); + + std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) + std::uint64_t dist = diyfp::sub(M_plus, w).f; // (significand of (M+ - w ), implicit exponent is e) + + // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): + // + // M+ = f * 2^e + // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e + // = ((p1 ) * 2^-e + (p2 )) * 2^e + // = p1 + p2 * 2^e + + const diyfp one(std::uint64_t{ 1 } << -M_plus.e, M_plus.e); + + auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) + std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e + + // 1) + // + // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] + + JSON_ASSERT(p1 > 0); + + std::uint32_t pow10{}; + const int k = find_largest_pow10(p1, pow10); + + // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) + // + // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) + // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) + // + // M+ = p1 + p2 * 2^e + // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e + // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e + // = d[k-1] * 10^(k-1) + ( rest) * 2^e + // + // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) + // + // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] + // + // but stop as soon as + // + // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e + + int n = k; + while (n > 0) + { + // Invariants: + // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) + // pow10 = 10^(n-1) <= p1 < 10^n + // + const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) + const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) + // + // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e + // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) + // + JSON_ASSERT(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) + // + p1 = r; + n--; + // + // M+ = buffer * 10^n + (p1 + p2 * 2^e) + // pow10 = 10^n + // + + // Now check if enough digits have been generated. + // Compute + // + // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e + // + // Note: + // Since rest and delta share the same exponent e, it suffices to + // compare the significands. + const std::uint64_t rest = (std::uint64_t{ p1 } << -one.e) + p2; + if (rest <= delta) + { + // V = buffer * 10^n, with M- <= V <= M+. + + decimal_exponent += n; + + // We may now just stop. But instead look if the buffer could be + // decremented to bring V closer to w. + // + // pow10 = 10^n is now 1 ulp in the decimal representation V. + // The rounding procedure works with diyfp's with an implicit + // exponent of e. + // + // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e + // + const std::uint64_t ten_n = std::uint64_t{ pow10 } << -one.e; + grisu2_round(buffer, length, dist, delta, rest, ten_n); + + return; + } + + pow10 /= 10; + // + // pow10 = 10^(n-1) <= p1 < 10^n + // Invariants restored. + } + + // 2) + // + // The digits of the integral part have been generated: + // + // M+ = d[k-1]...d[1]d[0] + p2 * 2^e + // = buffer + p2 * 2^e + // + // Now generate the digits of the fractional part p2 * 2^e. + // + // Note: + // No decimal point is generated: the exponent is adjusted instead. + // + // p2 actually represents the fraction + // + // p2 * 2^e + // = p2 / 2^-e + // = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) + // + // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m + // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) + // + // using + // + // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) + // = ( d) * 2^-e + ( r) + // + // or + // 10^m * p2 * 2^e = d + r * 2^e + // + // i.e. + // + // M+ = buffer + p2 * 2^e + // = buffer + 10^-m * (d + r * 2^e) + // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e + // + // and stop as soon as 10^-m * r * 2^e <= delta * 2^e + + JSON_ASSERT(p2 > delta); + + int m = 0; + for (;;) + { + // Invariant: + // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e + // = buffer * 10^-m + 10^-m * (p2 ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e + // + JSON_ASSERT(p2 <= (std::numeric_limits::max)() / 10); + p2 *= 10; + const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e + const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e + // + // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) + // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + JSON_ASSERT(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + p2 = r; + m++; + // + // M+ = buffer * 10^-m + 10^-m * p2 * 2^e + // Invariant restored. + + // Check if enough digits have been generated. + // + // 10^-m * p2 * 2^e <= delta * 2^e + // p2 * 2^e <= 10^m * delta * 2^e + // p2 <= 10^m * delta + delta *= 10; + dist *= 10; + if (p2 <= delta) + { + break; + } + } + + // V = buffer * 10^-m, with M- <= V <= M+. + + decimal_exponent -= m; + + // 1 ulp in the decimal representation is now 10^-m. + // Since delta and dist are now scaled by 10^m, we need to do the + // same with ulp in order to keep the units in sync. + // + // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e + // + const std::uint64_t ten_m = one.f; + grisu2_round(buffer, length, dist, delta, p2, ten_m); + + // By construction this algorithm generates the shortest possible decimal + // number (Loitsch, Theorem 6.2) which rounds back to w. + // For an input number of precision p, at least + // + // N = 1 + ceil(p * log_10(2)) + // + // decimal digits are sufficient to identify all binary floating-point + // numbers (Matula, "In-and-Out conversions"). + // This implies that the algorithm does not produce more than N decimal + // digits. + // + // N = 17 for p = 53 (IEEE double precision) + // N = 9 for p = 24 (IEEE single precision) + } + + /*! + v = buf * 10^decimal_exponent + len is the length of the buffer (number of decimal digits) + The buffer must be large enough, i.e. >= max_digits10. + */ + JSON_HEDLEY_NON_NULL(1) + inline void grisu2(char* buf, int& len, int& decimal_exponent, + diyfp m_minus, diyfp v, diyfp m_plus) + { + JSON_ASSERT(m_plus.e == m_minus.e); + JSON_ASSERT(m_plus.e == v.e); + + // --------(-----------------------+-----------------------)-------- (A) + // m- v m+ + // + // --------------------(-----------+-----------------------)-------- (B) + // m- v m+ + // + // First scale v (and m- and m+) such that the exponent is in the range + // [alpha, gamma]. + + const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); + + const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k + + // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] + const diyfp w = diyfp::mul(v, c_minus_k); + const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); + const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); + + // ----(---+---)---------------(---+---)---------------(---+---)---- + // w- w w+ + // = c*m- = c*v = c*m+ + // + // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and + // w+ are now off by a small amount. + // In fact: + // + // w - v * 10^k < 1 ulp + // + // To account for this inaccuracy, add resp. subtract 1 ulp. + // + // --------+---[---------------(---+---)---------------]---+-------- + // w- M- w M+ w+ + // + // Now any number in [M-, M+] (bounds included) will round to w when input, + // regardless of how the input rounding algorithm breaks ties. + // + // And digit_gen generates the shortest possible such number in [M-, M+]. + // Note that this does not mean that Grisu2 always generates the shortest + // possible number in the interval (m-, m+). + const diyfp M_minus(w_minus.f + 1, w_minus.e); + const diyfp M_plus(w_plus.f - 1, w_plus.e); + + decimal_exponent = -cached.k; // = -(-k) = k + + grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); + } + + /*! + v = buf * 10^decimal_exponent + len is the length of the buffer (number of decimal digits) + The buffer must be large enough, i.e. >= max_digits10. + */ + template + JSON_HEDLEY_NON_NULL(1) + void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) + { + static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, + "internal error: not enough precision"); + + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); + + // If the neighbors (and boundaries) of 'value' are always computed for double-precision + // numbers, all float's can be recovered using strtod (and strtof). However, the resulting + // decimal representations are not exactly "short". + // + // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars) + // says "value is converted to a string as if by std::sprintf in the default ("C") locale" + // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars' + // does. + // On the other hand, the documentation for 'std::to_chars' requires that "parsing the + // representation using the corresponding std::from_chars function recovers value exactly". That + // indicates that single precision floating-point numbers should be recovered using + // 'std::strtof'. + // + // NB: If the neighbors are computed for single-precision numbers, there is a single float + // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision + // value is off by 1 ulp. +#if 0 + const boundaries w = compute_boundaries(static_cast(value)); +#else + const boundaries w = compute_boundaries(value); +#endif + + grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); + } + + /*! + @brief appends a decimal representation of e to buf + @return a pointer to the element following the exponent. + @pre -1000 < e < 1000 + */ + JSON_HEDLEY_NON_NULL(1) + JSON_HEDLEY_RETURNS_NON_NULL + inline char* append_exponent(char* buf, int e) + { + JSON_ASSERT(e > -1000); + JSON_ASSERT(e < 1000); + + if (e < 0) + { + e = -e; + *buf++ = '-'; + } + else + { + *buf++ = '+'; + } + + auto k = static_cast(e); + if (k < 10) + { + // Always print at least two digits in the exponent. + // This is for compatibility with printf("%g"). + *buf++ = '0'; + *buf++ = static_cast('0' + k); + } + else if (k < 100) + { + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + else + { + *buf++ = static_cast('0' + k / 100); + k %= 100; + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + + return buf; + } + + /*! + @brief prettify v = buf * 10^decimal_exponent + + If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point + notation. Otherwise it will be printed in exponential notation. + + @pre min_exp < 0 + @pre max_exp > 0 + */ + JSON_HEDLEY_NON_NULL(1) + JSON_HEDLEY_RETURNS_NON_NULL + inline char* format_buffer(char* buf, int len, int decimal_exponent, + int min_exp, int max_exp) + { + JSON_ASSERT(min_exp < 0); + JSON_ASSERT(max_exp > 0); + + const int k = len; + const int n = len + decimal_exponent; + + // v = buf * 10^(n-k) + // k is the length of the buffer (number of decimal digits) + // n is the position of the decimal point relative to the start of the buffer. + + if (k <= n && n <= max_exp) + { + // digits[000] + // len <= max_exp + 2 + + std::memset(buf + k, '0', static_cast(n) - static_cast(k)); + // Make it look like a floating-point number (#362, #378) + buf[n + 0] = '.'; + buf[n + 1] = '0'; + return buf + (static_cast(n) + 2); + } + + if (0 < n && n <= max_exp) + { + // dig.its + // len <= max_digits10 + 1 + + JSON_ASSERT(k > n); + + std::memmove(buf + (static_cast(n) + 1), buf + n, static_cast(k) - static_cast(n)); + buf[n] = '.'; + return buf + (static_cast(k) + 1U); + } + + if (min_exp < n && n <= 0) + { + // 0.[000]digits + // len <= 2 + (-min_exp - 1) + max_digits10 + + std::memmove(buf + (2 + static_cast(-n)), buf, static_cast(k)); + buf[0] = '0'; + buf[1] = '.'; + std::memset(buf + 2, '0', static_cast(-n)); + return buf + (2U + static_cast(-n) + static_cast(k)); + } + + if (k == 1) + { + // dE+123 + // len <= 1 + 5 + + buf += 1; + } + else + { + // d.igitsE+123 + // len <= max_digits10 + 1 + 5 + + std::memmove(buf + 2, buf + 1, static_cast(k) - 1); + buf[1] = '.'; + buf += 1 + static_cast(k); + } + + *buf++ = 'e'; + return append_exponent(buf, n - 1); + } + + } // namespace dtoa_impl + + /*! + @brief generates a decimal representation of the floating-point number value in [first, last). + + The format of the resulting decimal representation is similar to printf's %g + format. Returns an iterator pointing past-the-end of the decimal representation. + + @note The input number must be finite, i.e. NaN's and Inf's are not supported. + @note The buffer must be large enough. + @note The result is NOT null-terminated. + */ + template + JSON_HEDLEY_NON_NULL(1, 2) + JSON_HEDLEY_RETURNS_NON_NULL + char* to_chars(char* first, const char* last, FloatType value) + { + static_cast(last); // maybe unused - fix warning + JSON_ASSERT(std::isfinite(value)); + + // Use signbit(value) instead of (value < 0) since signbit works for -0. + if (std::signbit(value)) + { + value = -value; + *first++ = '-'; + } + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + if (value == 0) // +-0 + { + *first++ = '0'; + // Make it look like a floating-point number (#362, #378) + *first++ = '.'; + *first++ = '0'; + return first; + } +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10); + + // Compute v = buffer * 10^decimal_exponent. + // The decimal digits are stored in the buffer, which needs to be interpreted + // as an unsigned decimal integer. + // len is the length of the buffer, i.e. the number of decimal digits. + int len = 0; + int decimal_exponent = 0; + dtoa_impl::grisu2(first, len, decimal_exponent, value); + + JSON_ASSERT(len <= std::numeric_limits::max_digits10); + + // Format the buffer like printf("%.*g", prec, value) + constexpr int kMinExp = -4; + // Use digits10 here to increase compatibility with version 2. + constexpr int kMaxExp = std::numeric_limits::digits10; + + JSON_ASSERT(last - first >= kMaxExp + 2); + JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10 + 6); + + return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); + } + + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + +// #include + +// #include + +// #include + +// #include + + +namespace nlohmann +{ + namespace detail + { + /////////////////// + // serialization // + /////////////////// + + /// how to treat decoding errors + enum class error_handler_t + { + strict, ///< throw a type_error exception in case of invalid UTF-8 + replace, ///< replace invalid UTF-8 sequences with U+FFFD + ignore ///< ignore invalid UTF-8 sequences + }; + + template + class serializer + { + using string_t = typename BasicJsonType::string_t; + using number_float_t = typename BasicJsonType::number_float_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using binary_char_t = typename BasicJsonType::binary_t::value_type; + static constexpr std::uint8_t UTF8_ACCEPT = 0; + static constexpr std::uint8_t UTF8_REJECT = 1; + + public: + /*! + @param[in] s output stream to serialize to + @param[in] ichar indentation character to use + @param[in] error_handler_ how to react on decoding errors + */ + serializer(output_adapter_t s, const char ichar, + error_handler_t error_handler_ = error_handler_t::strict) + : o(std::move(s)) + , loc(std::localeconv()) + , thousands_sep(loc->thousands_sep == nullptr ? '\0' : std::char_traits::to_char_type(*(loc->thousands_sep))) + , decimal_point(loc->decimal_point == nullptr ? '\0' : std::char_traits::to_char_type(*(loc->decimal_point))) + , indent_char(ichar) + , indent_string(512, indent_char) + , error_handler(error_handler_) + {} + + // delete because of pointer members + serializer(const serializer&) = delete; + serializer& operator=(const serializer&) = delete; + serializer(serializer&&) = delete; + serializer& operator=(serializer&&) = delete; + ~serializer() = default; + + /*! + @brief internal implementation of the serialization function + + This function is called by the public member function dump and organizes + the serialization internally. The indentation level is propagated as + additional parameter. In case of arrays and objects, the function is + called recursively. + + - strings and object keys are escaped using `escape_string()` + - integer numbers are converted implicitly via `operator<<` + - floating-point numbers are converted to a string using `"%g"` format + - binary values are serialized as objects containing the subtype and the + byte array + + @param[in] val value to serialize + @param[in] pretty_print whether the output shall be pretty-printed + @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters + in the output are escaped with `\uXXXX` sequences, and the result consists + of ASCII characters only. + @param[in] indent_step the indent level + @param[in] current_indent the current indent level (only used internally) + */ + void dump(const BasicJsonType& val, + const bool pretty_print, + const bool ensure_ascii, + const unsigned int indent_step, + const unsigned int current_indent = 0) + { + switch (val.m_type) + { + case value_t::object: + { + if (val.m_value.object->empty()) + { + o->write_characters("{}", 2); + return; + } + + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + JSON_ASSERT(i != val.m_value.object->cend()); + JSON_ASSERT(std::next(i) == val.m_value.object->cend()); + o->write_characters(indent_string.c_str(), new_indent); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\": ", 3); + dump(i->second, true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_character('{'); + + // first n-1 elements + auto i = val.m_value.object->cbegin(); + for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) + { + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + JSON_ASSERT(i != val.m_value.object->cend()); + JSON_ASSERT(std::next(i) == val.m_value.object->cend()); + o->write_character('\"'); + dump_escaped(i->first, ensure_ascii); + o->write_characters("\":", 2); + dump(i->second, false, ensure_ascii, indent_step, current_indent); + + o->write_character('}'); + } + + return; + } + + case value_t::array: + { + if (val.m_value.array->empty()) + { + o->write_characters("[]", 2); + return; + } + + if (pretty_print) + { + o->write_characters("[\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + o->write_characters(indent_string.c_str(), new_indent); + dump(*i, true, ensure_ascii, indent_step, new_indent); + o->write_characters(",\n", 2); + } + + // last element + JSON_ASSERT(!val.m_value.array->empty()); + o->write_characters(indent_string.c_str(), new_indent); + dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); + + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character(']'); + } + else + { + o->write_character('['); + + // first n-1 elements + for (auto i = val.m_value.array->cbegin(); + i != val.m_value.array->cend() - 1; ++i) + { + dump(*i, false, ensure_ascii, indent_step, current_indent); + o->write_character(','); + } + + // last element + JSON_ASSERT(!val.m_value.array->empty()); + dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); + + o->write_character(']'); + } + + return; + } + + case value_t::string: + { + o->write_character('\"'); + dump_escaped(*val.m_value.string, ensure_ascii); + o->write_character('\"'); + return; + } + + case value_t::binary: + { + if (pretty_print) + { + o->write_characters("{\n", 2); + + // variable to hold indentation for recursive calls + const auto new_indent = current_indent + indent_step; + if (JSON_HEDLEY_UNLIKELY(indent_string.size() < new_indent)) + { + indent_string.resize(indent_string.size() * 2, ' '); + } + + o->write_characters(indent_string.c_str(), new_indent); + + o->write_characters("\"bytes\": [", 10); + + if (!val.m_value.binary->empty()) + { + for (auto i = val.m_value.binary->cbegin(); + i != val.m_value.binary->cend() - 1; ++i) + { + dump_integer(*i); + o->write_characters(", ", 2); + } + dump_integer(val.m_value.binary->back()); + } + + o->write_characters("],\n", 3); + o->write_characters(indent_string.c_str(), new_indent); + + o->write_characters("\"subtype\": ", 11); + if (val.m_value.binary->has_subtype()) + { + dump_integer(val.m_value.binary->subtype()); + } + else + { + o->write_characters("null", 4); + } + o->write_character('\n'); + o->write_characters(indent_string.c_str(), current_indent); + o->write_character('}'); + } + else + { + o->write_characters("{\"bytes\":[", 10); + + if (!val.m_value.binary->empty()) + { + for (auto i = val.m_value.binary->cbegin(); + i != val.m_value.binary->cend() - 1; ++i) + { + dump_integer(*i); + o->write_character(','); + } + dump_integer(val.m_value.binary->back()); + } + + o->write_characters("],\"subtype\":", 12); + if (val.m_value.binary->has_subtype()) + { + dump_integer(val.m_value.binary->subtype()); + o->write_character('}'); + } + else + { + o->write_characters("null}", 5); + } + } + return; + } + + case value_t::boolean: + { + if (val.m_value.boolean) + { + o->write_characters("true", 4); + } + else + { + o->write_characters("false", 5); + } + return; + } + + case value_t::number_integer: + { + dump_integer(val.m_value.number_integer); + return; + } + + case value_t::number_unsigned: + { + dump_integer(val.m_value.number_unsigned); + return; + } + + case value_t::number_float: + { + dump_float(val.m_value.number_float); + return; + } + + case value_t::discarded: + { + o->write_characters("", 11); + return; + } + + case value_t::null: + { + o->write_characters("null", 4); + return; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + } + + JSON_PRIVATE_UNLESS_TESTED: + /*! + @brief dump escaped string + + Escape a string by replacing certain special characters by a sequence of an + escape character (backslash) and another character and other control + characters by a sequence of "\u" followed by a four-digit hex + representation. The escaped string is written to output stream @a o. + + @param[in] s the string to escape + @param[in] ensure_ascii whether to escape non-ASCII characters with + \uXXXX sequences + + @complexity Linear in the length of string @a s. + */ + void dump_escaped(const string_t& s, const bool ensure_ascii) + { + std::uint32_t codepoint{}; + std::uint8_t state = UTF8_ACCEPT; + std::size_t bytes = 0; // number of bytes written to string_buffer + + // number of bytes written at the point of the last valid byte + std::size_t bytes_after_last_accept = 0; + std::size_t undumped_chars = 0; + + for (std::size_t i = 0; i < s.size(); ++i) + { + const auto byte = static_cast(s[i]); + + switch (decode(state, codepoint, byte)) + { + case UTF8_ACCEPT: // decode found a new code point + { + switch (codepoint) + { + case 0x08: // backspace + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'b'; + break; + } + + case 0x09: // horizontal tab + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 't'; + break; + } + + case 0x0A: // newline + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'n'; + break; + } + + case 0x0C: // formfeed + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'f'; + break; + } + + case 0x0D: // carriage return + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'r'; + break; + } + + case 0x22: // quotation mark + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\"'; + break; + } + + case 0x5C: // reverse solidus + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = '\\'; + break; + } + + default: + { + // escape control characters (0x00..0x1F) or, if + // ensure_ascii parameter is used, non-ASCII characters + if ((codepoint <= 0x1F) || (ensure_ascii && (codepoint >= 0x7F))) + { + if (codepoint <= 0xFFFF) + { + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + (std::snprintf)(string_buffer.data() + bytes, 7, "\\u%04x", + static_cast(codepoint)); + bytes += 6; + } + else + { + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + (std::snprintf)(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", + static_cast(0xD7C0u + (codepoint >> 10u)), + static_cast(0xDC00u + (codepoint & 0x3FFu))); + bytes += 12; + } + } + else + { + // copy byte to buffer (all previous bytes + // been copied have in default case above) + string_buffer[bytes++] = s[i]; + } + break; + } + } + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) + { + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + + // remember the byte position of this accept + bytes_after_last_accept = bytes; + undumped_chars = 0; + break; + } + + case UTF8_REJECT: // decode found invalid UTF-8 byte + { + switch (error_handler) + { + case error_handler_t::strict: + { + std::string sn(9, '\0'); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + (std::snprintf)(&sn[0], sn.size(), "%.2X", byte); + JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + sn, BasicJsonType())); + } + + case error_handler_t::ignore: + case error_handler_t::replace: + { + // in case we saw this character the first time, we + // would like to read it again, because the byte + // may be OK for itself, but just not OK for the + // previous sequence + if (undumped_chars > 0) + { + --i; + } + + // reset length buffer to the last accepted index; + // thus removing/ignoring the invalid characters + bytes = bytes_after_last_accept; + + if (error_handler == error_handler_t::replace) + { + // add a replacement character + if (ensure_ascii) + { + string_buffer[bytes++] = '\\'; + string_buffer[bytes++] = 'u'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'f'; + string_buffer[bytes++] = 'd'; + } + else + { + string_buffer[bytes++] = detail::binary_writer::to_char_type('\xEF'); + string_buffer[bytes++] = detail::binary_writer::to_char_type('\xBF'); + string_buffer[bytes++] = detail::binary_writer::to_char_type('\xBD'); + } + + // write buffer and reset index; there must be 13 bytes + // left, as this is the maximal number of bytes to be + // written ("\uxxxx\uxxxx\0") for one code point + if (string_buffer.size() - bytes < 13) + { + o->write_characters(string_buffer.data(), bytes); + bytes = 0; + } + + bytes_after_last_accept = bytes; + } + + undumped_chars = 0; + + // continue processing the string + state = UTF8_ACCEPT; + break; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + break; + } + + default: // decode found yet incomplete multi-byte code point + { + if (!ensure_ascii) + { + // code point will not be escaped - copy byte to buffer + string_buffer[bytes++] = s[i]; + } + ++undumped_chars; + break; + } + } + } + + // we finished processing the string + if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT)) + { + // write buffer + if (bytes > 0) + { + o->write_characters(string_buffer.data(), bytes); + } + } + else + { + // we finish reading, but do not accept: string was incomplete + switch (error_handler) + { + case error_handler_t::strict: + { + std::string sn(9, '\0'); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + (std::snprintf)(&sn[0], sn.size(), "%.2X", static_cast(s.back())); + JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + sn, BasicJsonType())); + } + + case error_handler_t::ignore: + { + // write all accepted bytes + o->write_characters(string_buffer.data(), bytes_after_last_accept); + break; + } + + case error_handler_t::replace: + { + // write all accepted bytes + o->write_characters(string_buffer.data(), bytes_after_last_accept); + // add a replacement character + if (ensure_ascii) + { + o->write_characters("\\ufffd", 6); + } + else + { + o->write_characters("\xEF\xBF\xBD", 3); + } + break; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + } + } + + private: + /*! + @brief count digits + + Count the number of decimal (base 10) digits for an input unsigned integer. + + @param[in] x unsigned integer number to count its digits + @return number of decimal digits + */ + inline unsigned int count_digits(number_unsigned_t x) noexcept + { + unsigned int n_digits = 1; + for (;;) + { + if (x < 10) + { + return n_digits; + } + if (x < 100) + { + return n_digits + 1; + } + if (x < 1000) + { + return n_digits + 2; + } + if (x < 10000) + { + return n_digits + 3; + } + x = x / 10000u; + n_digits += 4; + } + } + + /*! + @brief dump an integer + + Dump a given integer to output stream @a o. Works internally with + @a number_buffer. + + @param[in] x integer number (signed or unsigned) to dump + @tparam NumberType either @a number_integer_t or @a number_unsigned_t + */ + template < typename NumberType, detail::enable_if_t < + std::is_integral::value || + std::is_same::value || + std::is_same::value || + std::is_same::value, + int > = 0 > + void dump_integer(NumberType x) + { + static constexpr std::array, 100> digits_to_99 + { + { + {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}}, + {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}}, + {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}}, + {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}}, + {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}}, + {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}}, + {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}}, + {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}}, + {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}}, + {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}}, + } + }; + + // special case for "0" + if (x == 0) + { + o->write_character('0'); + return; + } + + // use a pointer to fill the buffer + auto buffer_ptr = number_buffer.begin(); // NOLINT(llvm-qualified-auto,readability-qualified-auto,cppcoreguidelines-pro-type-vararg,hicpp-vararg) + + const bool is_negative = std::is_signed::value && !(x >= 0); // see issue #755 + number_unsigned_t abs_value; + + unsigned int n_chars{}; + + if (is_negative) + { + *buffer_ptr = '-'; + abs_value = remove_sign(static_cast(x)); + + // account one more byte for the minus sign + n_chars = 1 + count_digits(abs_value); + } + else + { + abs_value = static_cast(x); + n_chars = count_digits(abs_value); + } + + // spare 1 byte for '\0' + JSON_ASSERT(n_chars < number_buffer.size() - 1); + + // jump to the end to generate the string from backward + // so we later avoid reversing the result + buffer_ptr += n_chars; + + // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu + // See: https://www.youtube.com/watch?v=o4-CwDo2zpg + while (abs_value >= 100) + { + const auto digits_index = static_cast((abs_value % 100)); + abs_value /= 100; + *(--buffer_ptr) = digits_to_99[digits_index][1]; + *(--buffer_ptr) = digits_to_99[digits_index][0]; + } + + if (abs_value >= 10) + { + const auto digits_index = static_cast(abs_value); + *(--buffer_ptr) = digits_to_99[digits_index][1]; + *(--buffer_ptr) = digits_to_99[digits_index][0]; + } + else + { + *(--buffer_ptr) = static_cast('0' + abs_value); + } + + o->write_characters(number_buffer.data(), n_chars); + } + + /*! + @brief dump a floating-point number + + Dump a given floating-point number to output stream @a o. Works internally + with @a number_buffer. + + @param[in] x floating-point number to dump + */ + void dump_float(number_float_t x) + { + // NaN / inf + if (!std::isfinite(x)) + { + o->write_characters("null", 4); + return; + } + + // If number_float_t is an IEEE-754 single or double precision number, + // use the Grisu2 algorithm to produce short numbers which are + // guaranteed to round-trip, using strtof and strtod, resp. + // + // NB: The test below works if == . + static constexpr bool is_ieee_single_or_double + = (std::numeric_limits::is_iec559 && std::numeric_limits::digits == 24 && std::numeric_limits::max_exponent == 128) || + (std::numeric_limits::is_iec559 && std::numeric_limits::digits == 53 && std::numeric_limits::max_exponent == 1024); + + dump_float(x, std::integral_constant()); + } + + void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) + { + auto* begin = number_buffer.data(); + auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); + + o->write_characters(begin, static_cast(end - begin)); + } + + void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) + { + // get number of digits for a float -> text -> float round-trip + static constexpr auto d = std::numeric_limits::max_digits10; + + // the actual conversion + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + std::ptrdiff_t len = (std::snprintf)(number_buffer.data(), number_buffer.size(), "%.*g", d, x); + + // negative value indicates an error + JSON_ASSERT(len > 0); + // check if buffer was large enough + JSON_ASSERT(static_cast(len) < number_buffer.size()); + + // erase thousands separator + if (thousands_sep != '\0') + { + auto* const end = std::remove(number_buffer.begin(), + number_buffer.begin() + len, thousands_sep); + std::fill(end, number_buffer.end(), '\0'); + JSON_ASSERT((end - number_buffer.begin()) <= len); + len = (end - number_buffer.begin()); + } + + // convert decimal point to '.' + if (decimal_point != '\0' && decimal_point != '.') + { + auto* const dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); + if (dec_pos != number_buffer.end()) + { + *dec_pos = '.'; + } + } + + o->write_characters(number_buffer.data(), static_cast(len)); + + // determine if need to append ".0" + const bool value_is_int_like = + std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, + [](char c) + { + return c == '.' || c == 'e'; + }); + + if (value_is_int_like) + { + o->write_characters(".0", 2); + } + } + + /*! + @brief check whether a string is UTF-8 encoded + + The function checks each byte of a string whether it is UTF-8 encoded. The + result of the check is stored in the @a state parameter. The function must + be called initially with state 0 (accept). State 1 means the string must + be rejected, because the current byte is not allowed. If the string is + completely processed, but the state is non-zero, the string ended + prematurely; that is, the last byte indicated more bytes should have + followed. + + @param[in,out] state the state of the decoding + @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) + @param[in] byte next byte to decode + @return new state + + @note The function has been edited: a std::array is used. + + @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann + @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ + */ + static std::uint8_t decode(std::uint8_t& state, std::uint32_t& codep, const std::uint8_t byte) noexcept + { + static const std::array utf8d = + { + { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF + 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF + 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF + 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF + 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 + 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 + 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 + 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 + } + }; + + JSON_ASSERT(byte < utf8d.size()); + const std::uint8_t type = utf8d[byte]; + + codep = (state != UTF8_ACCEPT) + ? (byte & 0x3fu) | (codep << 6u) + : (0xFFu >> type) & (byte); + + std::size_t index = 256u + static_cast(state) * 16u + static_cast(type); + JSON_ASSERT(index < 400); + state = utf8d[index]; + return state; + } + + /* + * Overload to make the compiler happy while it is instantiating + * dump_integer for number_unsigned_t. + * Must never be called. + */ + number_unsigned_t remove_sign(number_unsigned_t x) + { + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + return x; // LCOV_EXCL_LINE + } + + /* + * Helper function for dump_integer + * + * This function takes a negative signed integer and returns its absolute + * value as unsigned integer. The plus/minus shuffling is necessary as we can + * not directly remove the sign of an arbitrary signed integer as the + * absolute values of INT_MIN and INT_MAX are usually not the same. See + * #1708 for details. + */ + inline number_unsigned_t remove_sign(number_integer_t x) noexcept + { + JSON_ASSERT(x < 0 && x < (std::numeric_limits::max)()); // NOLINT(misc-redundant-expression) + return static_cast(-(x + 1)) + 1; + } + + private: + /// the output of the serializer + output_adapter_t o = nullptr; + + /// a (hopefully) large enough character buffer + std::array number_buffer{ {} }; + + /// the locale + const std::lconv* loc = nullptr; + /// the locale's thousand separator character + const char thousands_sep = '\0'; + /// the locale's decimal point character + const char decimal_point = '\0'; + + /// string buffer + std::array string_buffer{ {} }; + + /// the indentation character + const char indent_char; + /// the indentation string + string_t indent_string; + + /// error_handler how to react on decoding errors + const error_handler_t error_handler; + }; + } // namespace detail +} // namespace nlohmann + +// #include + +// #include + +// #include + + +#include // less +#include // initializer_list +#include // input_iterator_tag, iterator_traits +#include // allocator +#include // for out_of_range +#include // enable_if, is_convertible +#include // pair +#include // vector + +// #include + + +namespace nlohmann +{ + + /// ordered_map: a minimal map-like container that preserves insertion order + /// for use within nlohmann::basic_json + template , + class Allocator = std::allocator>> + struct ordered_map : std::vector, Allocator> + { + using key_type = Key; + using mapped_type = T; + using Container = std::vector, Allocator>; + using typename Container::iterator; + using typename Container::const_iterator; + using typename Container::size_type; + using typename Container::value_type; + + // Explicit constructors instead of `using Container::Container` + // otherwise older compilers choke on it (GCC <= 5.5, xcode <= 9.4) + ordered_map(const Allocator& alloc = Allocator()) : Container{ alloc } {} + template + ordered_map(It first, It last, const Allocator& alloc = Allocator()) + : Container{ first, last, alloc } {} + ordered_map(std::initializer_list init, const Allocator& alloc = Allocator()) + : Container{ init, alloc } {} + + std::pair emplace(const key_type& key, T&& t) + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return { it, false }; + } + } + Container::emplace_back(key, t); + return { --this->end(), true }; + } + + T& operator[](const Key& key) + { + return emplace(key, T{}).first->second; + } + + const T& operator[](const Key& key) const + { + return at(key); + } + + T& at(const Key& key) + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return it->second; + } + } + + JSON_THROW(std::out_of_range("key not found")); + } + + const T& at(const Key& key) const + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return it->second; + } + } + + JSON_THROW(std::out_of_range("key not found")); + } + + size_type erase(const Key& key) + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + // Since we cannot move const Keys, re-construct them in place + for (auto next = it; ++next != this->end(); ++it) + { + it->~value_type(); // Destroy but keep allocation + new (&*it) value_type{ std::move(*next) }; + } + Container::pop_back(); + return 1; + } + } + return 0; + } + + iterator erase(iterator pos) + { + auto it = pos; + + // Since we cannot move const Keys, re-construct them in place + for (auto next = it; ++next != this->end(); ++it) + { + it->~value_type(); // Destroy but keep allocation + new (&*it) value_type{ std::move(*next) }; + } + Container::pop_back(); + return pos; + } + + size_type count(const Key& key) const + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return 1; + } + } + return 0; + } + + iterator find(const Key& key) + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return it; + } + } + return Container::end(); + } + + const_iterator find(const Key& key) const + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == key) + { + return it; + } + } + return Container::end(); + } + + std::pair insert(value_type&& value) + { + return emplace(value.first, std::move(value.second)); + } + + std::pair insert(const value_type& value) + { + for (auto it = this->begin(); it != this->end(); ++it) + { + if (it->first == value.first) + { + return { it, false }; + } + } + Container::push_back(value); + return { --this->end(), true }; + } + + template + using require_input_iter = typename std::enable_if::iterator_category, + std::input_iterator_tag>::value>::type; + + template> + void insert(InputIt first, InputIt last) + { + for (auto it = first; it != last; ++it) + { + insert(*it); + } + } + }; + +} // namespace nlohmann + + +#if defined(JSON_HAS_CPP_17) +#include +#endif + +/*! +@brief namespace for Niels Lohmann +@see https://github.com/nlohmann +@since version 1.0.0 +*/ +namespace nlohmann +{ + + /*! + @brief a class to store JSON values + + @tparam ObjectType type for JSON objects (`std::map` by default; will be used + in @ref object_t) + @tparam ArrayType type for JSON arrays (`std::vector` by default; will be used + in @ref array_t) + @tparam StringType type for JSON strings and object keys (`std::string` by + default; will be used in @ref string_t) + @tparam BooleanType type for JSON booleans (`bool` by default; will be used + in @ref boolean_t) + @tparam NumberIntegerType type for JSON integer numbers (`int64_t` by + default; will be used in @ref number_integer_t) + @tparam NumberUnsignedType type for JSON unsigned integer numbers (@c + `uint64_t` by default; will be used in @ref number_unsigned_t) + @tparam NumberFloatType type for JSON floating-point numbers (`double` by + default; will be used in @ref number_float_t) + @tparam BinaryType type for packed binary data for compatibility with binary + serialization formats (`std::vector` by default; will be used in + @ref binary_t) + @tparam AllocatorType type of the allocator to use (`std::allocator` by + default) + @tparam JSONSerializer the serializer to resolve internal calls to `to_json()` + and `from_json()` (@ref adl_serializer by default) + + @requirement The class satisfies the following concept requirements: + - Basic + - [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible): + JSON values can be default constructed. The result will be a JSON null + value. + - [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible): + A JSON value can be constructed from an rvalue argument. + - [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible): + A JSON value can be copy-constructed from an lvalue expression. + - [MoveAssignable](https://en.cppreference.com/w/cpp/named_req/MoveAssignable): + A JSON value van be assigned from an rvalue argument. + - [CopyAssignable](https://en.cppreference.com/w/cpp/named_req/CopyAssignable): + A JSON value can be copy-assigned from an lvalue expression. + - [Destructible](https://en.cppreference.com/w/cpp/named_req/Destructible): + JSON values can be destructed. + - Layout + - [StandardLayoutType](https://en.cppreference.com/w/cpp/named_req/StandardLayoutType): + JSON values have + [standard layout](https://en.cppreference.com/w/cpp/language/data_members#Standard_layout): + All non-static data members are private and standard layout types, the + class has no virtual functions or (virtual) base classes. + - Library-wide + - [EqualityComparable](https://en.cppreference.com/w/cpp/named_req/EqualityComparable): + JSON values can be compared with `==`, see @ref + operator==(const_reference,const_reference). + - [LessThanComparable](https://en.cppreference.com/w/cpp/named_req/LessThanComparable): + JSON values can be compared with `<`, see @ref + operator<(const_reference,const_reference). + - [Swappable](https://en.cppreference.com/w/cpp/named_req/Swappable): + Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of + other compatible types, using unqualified function call @ref swap(). + - [NullablePointer](https://en.cppreference.com/w/cpp/named_req/NullablePointer): + JSON values can be compared against `std::nullptr_t` objects which are used + to model the `null` value. + - Container + - [Container](https://en.cppreference.com/w/cpp/named_req/Container): + JSON values can be used like STL containers and provide iterator access. + - [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer); + JSON values can be used like STL containers and provide reverse iterator + access. + + @invariant The member variables @a m_value and @a m_type have the following + relationship: + - If `m_type == value_t::object`, then `m_value.object != nullptr`. + - If `m_type == value_t::array`, then `m_value.array != nullptr`. + - If `m_type == value_t::string`, then `m_value.string != nullptr`. + The invariants are checked by member function assert_invariant(). + + @internal + @note ObjectType trick from https://stackoverflow.com/a/9860911 + @endinternal + + @see [RFC 8259: The JavaScript Object Notation (JSON) Data Interchange + Format](https://tools.ietf.org/html/rfc8259) + + @since version 1.0.0 + + @nosubgrouping + */ + NLOHMANN_BASIC_JSON_TPL_DECLARATION + class basic_json // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions) + { + private: + template friend struct detail::external_constructor; + friend ::nlohmann::json_pointer; + + template + friend class ::nlohmann::detail::parser; + friend ::nlohmann::detail::serializer; + template + friend class ::nlohmann::detail::iter_impl; + template + friend class ::nlohmann::detail::binary_writer; + template + friend class ::nlohmann::detail::binary_reader; + template + friend class ::nlohmann::detail::json_sax_dom_parser; + template + friend class ::nlohmann::detail::json_sax_dom_callback_parser; + friend class ::nlohmann::detail::exception; + + /// workaround type for MSVC + using basic_json_t = NLOHMANN_BASIC_JSON_TPL; + + JSON_PRIVATE_UNLESS_TESTED: + // convenience aliases for types residing in namespace detail; + using lexer = ::nlohmann::detail::lexer_base; + + template + static ::nlohmann::detail::parser parser( + InputAdapterType adapter, + detail::parser_callback_tcb = nullptr, + const bool allow_exceptions = true, + const bool ignore_comments = false + ) + { + return ::nlohmann::detail::parser(std::move(adapter), + std::move(cb), allow_exceptions, ignore_comments); + } + + private: + using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; + template + using internal_iterator = ::nlohmann::detail::internal_iterator; + template + using iter_impl = ::nlohmann::detail::iter_impl; + template + using iteration_proxy = ::nlohmann::detail::iteration_proxy; + template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; + + template + using output_adapter_t = ::nlohmann::detail::output_adapter_t; + + template + using binary_reader = ::nlohmann::detail::binary_reader; + template using binary_writer = ::nlohmann::detail::binary_writer; + + JSON_PRIVATE_UNLESS_TESTED: + using serializer = ::nlohmann::detail::serializer; + + public: + using value_t = detail::value_t; + /// JSON Pointer, see @ref nlohmann::json_pointer + using json_pointer = ::nlohmann::json_pointer; + template + using json_serializer = JSONSerializer; + /// how to treat decoding errors + using error_handler_t = detail::error_handler_t; + /// how to treat CBOR tags + using cbor_tag_handler_t = detail::cbor_tag_handler_t; + /// helper type for initializer lists of basic_json values + using initializer_list_t = std::initializer_list>; + + using input_format_t = detail::input_format_t; + /// SAX interface type, see @ref nlohmann::json_sax + using json_sax_t = json_sax; + + //////////////// + // exceptions // + //////////////// + + /// @name exceptions + /// Classes to implement user-defined exceptions. + /// @{ + + /// @copydoc detail::exception + using exception = detail::exception; + /// @copydoc detail::parse_error + using parse_error = detail::parse_error; + /// @copydoc detail::invalid_iterator + using invalid_iterator = detail::invalid_iterator; + /// @copydoc detail::type_error + using type_error = detail::type_error; + /// @copydoc detail::out_of_range + using out_of_range = detail::out_of_range; + /// @copydoc detail::other_error + using other_error = detail::other_error; + + /// @} + + + ///////////////////// + // container types // + ///////////////////// + + /// @name container types + /// The canonic container types to use @ref basic_json like any other STL + /// container. + /// @{ + + /// the type of elements in a basic_json container + using value_type = basic_json; + + /// the type of an element reference + using reference = value_type&; + /// the type of an element const reference + using const_reference = const value_type&; + + /// a type to represent differences between iterators + using difference_type = std::ptrdiff_t; + /// a type to represent container sizes + using size_type = std::size_t; + + /// the allocator type + using allocator_type = AllocatorType; + + /// the type of an element pointer + using pointer = typename std::allocator_traits::pointer; + /// the type of an element const pointer + using const_pointer = typename std::allocator_traits::const_pointer; + + /// an iterator for a basic_json container + using iterator = iter_impl; + /// a const iterator for a basic_json container + using const_iterator = iter_impl; + /// a reverse iterator for a basic_json container + using reverse_iterator = json_reverse_iterator; + /// a const reverse iterator for a basic_json container + using const_reverse_iterator = json_reverse_iterator; + + /// @} + + + /*! + @brief returns the allocator associated with the container + */ + static allocator_type get_allocator() + { + return allocator_type(); + } + + /*! + @brief returns version information on the library + + This function returns a JSON object with information about the library, + including the version number and information on the platform and compiler. + + @return JSON object holding version information + key | description + ----------- | --------------- + `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). + `copyright` | The copyright line for the library as string. + `name` | The name of the library as string. + `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. + `url` | The URL of the project as string. + `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). + + @liveexample{The following code shows an example output of the `meta()` + function.,meta} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @complexity Constant. + + @since 2.1.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json meta() + { + basic_json result; + + result["copyright"] = "(C) 2013-2021 Niels Lohmann"; + result["name"] = "JSON for Modern C++"; + result["url"] = "https://github.com/nlohmann/json"; + result["version"]["string"] = + std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + + std::to_string(NLOHMANN_JSON_VERSION_PATCH); + result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; + result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; + result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; + +#ifdef _WIN32 + result["platform"] = "win32"; +#elif defined __linux__ + result["platform"] = "linux"; +#elif defined __APPLE__ + result["platform"] = "apple"; +#elif defined __unix__ + result["platform"] = "unix"; +#else + result["platform"] = "unknown"; +#endif + +#if defined(__ICC) || defined(__INTEL_COMPILER) + result["compiler"] = { {"family", "icc"}, {"version", __INTEL_COMPILER} }; +#elif defined(__clang__) + result["compiler"] = { {"family", "clang"}, {"version", __clang_version__} }; +#elif defined(__GNUC__) || defined(__GNUG__) + result["compiler"] = { {"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)} }; +#elif defined(__HP_cc) || defined(__HP_aCC) + result["compiler"] = "hp" +#elif defined(__IBMCPP__) + result["compiler"] = { {"family", "ilecpp"}, {"version", __IBMCPP__} }; +#elif defined(_MSC_VER) + result["compiler"] = { {"family", "msvc"}, {"version", _MSC_VER} }; +#elif defined(__PGI) + result["compiler"] = { {"family", "pgcpp"}, {"version", __PGI} }; +#elif defined(__SUNPRO_CC) + result["compiler"] = { {"family", "sunpro"}, {"version", __SUNPRO_CC} }; +#else + result["compiler"] = { {"family", "unknown"}, {"version", "unknown"} }; +#endif + +#ifdef __cplusplus + result["compiler"]["c++"] = std::to_string(__cplusplus); +#else + result["compiler"]["c++"] = "unknown"; +#endif + return result; + } + + + /////////////////////////// + // JSON value data types // + /////////////////////////// + + /// @name JSON value data types + /// The data types to store a JSON value. These types are derived from + /// the template arguments passed to class @ref basic_json. + /// @{ + +#if defined(JSON_HAS_CPP_14) + // Use transparent comparator if possible, combined with perfect forwarding + // on find() and count() calls prevents unnecessary string construction. + using object_comparator_t = std::less<>; +#else + using object_comparator_t = std::less; +#endif + + /*! + @brief a type for an object + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON objects as follows: + > An object is an unordered collection of zero or more name/value pairs, + > where a name is a string and a value is a string, number, boolean, null, + > object, or array. + + To store objects in C++, a type is defined by the template parameters + described below. + + @tparam ObjectType the container to store objects (e.g., `std::map` or + `std::unordered_map`) + @tparam StringType the type of the keys or names (e.g., `std::string`). + The comparison function `std::less` is used to order elements + inside the container. + @tparam AllocatorType the allocator to use for objects (e.g., + `std::allocator`) + + #### Default type + + With the default values for @a ObjectType (`std::map`), @a StringType + (`std::string`), and @a AllocatorType (`std::allocator`), the default + value for @a object_t is: + + @code {.cpp} + std::map< + std::string, // key_type + basic_json, // value_type + std::less, // key_compare + std::allocator> // allocator_type + > + @endcode + + #### Behavior + + The choice of @a object_t influences the behavior of the JSON class. With + the default type, objects have the following behavior: + + - When all names are unique, objects will be interoperable in the sense + that all software implementations receiving that object will agree on + the name-value mappings. + - When the names within an object are not unique, it is unspecified which + one of the values for a given key will be chosen. For instance, + `{"key": 2, "key": 1}` could be equal to either `{"key": 1}` or + `{"key": 2}`. + - Internally, name/value pairs are stored in lexicographical order of the + names. Objects will also be serialized (see @ref dump) in this order. + For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored + and serialized as `{"a": 2, "b": 1}`. + - When comparing objects, the order of the name/value pairs is irrelevant. + This makes objects interoperable in the sense that they will not be + affected by these differences. For instance, `{"b": 1, "a": 2}` and + `{"a": 2, "b": 1}` will be treated as equal. + + #### Limits + + [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the object's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON object. + + #### Storage + + Objects are stored as pointers in a @ref basic_json type. That is, for any + access to object values, a pointer of type `object_t*` must be + dereferenced. + + @sa see @ref array_t -- type for an array value + + @since version 1.0.0 + + @note The order name/value pairs are added to the object is *not* + preserved by the library. Therefore, iterating an object may return + name/value pairs in a different order than they were originally stored. In + fact, keys will be traversed in alphabetical order as `std::map` with + `std::less` is used by default. Please note this behavior conforms to [RFC + 8259](https://tools.ietf.org/html/rfc8259), because any order implements the + specified "unordered" nature of JSON objects. + */ + using object_t = ObjectType>>; + + /*! + @brief a type for an array + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON arrays as follows: + > An array is an ordered sequence of zero or more values. + + To store objects in C++, a type is defined by the template parameters + explained below. + + @tparam ArrayType container type to store arrays (e.g., `std::vector` or + `std::list`) + @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) + + #### Default type + + With the default values for @a ArrayType (`std::vector`) and @a + AllocatorType (`std::allocator`), the default value for @a array_t is: + + @code {.cpp} + std::vector< + basic_json, // value_type + std::allocator // allocator_type + > + @endcode + + #### Limits + + [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: + > An implementation may set limits on the maximum depth of nesting. + + In this class, the array's limit of nesting is not explicitly constrained. + However, a maximum depth of nesting may be introduced by the compiler or + runtime environment. A theoretical limit can be queried by calling the + @ref max_size function of a JSON array. + + #### Storage + + Arrays are stored as pointers in a @ref basic_json type. That is, for any + access to array values, a pointer of type `array_t*` must be dereferenced. + + @sa see @ref object_t -- type for an object value + + @since version 1.0.0 + */ + using array_t = ArrayType>; + + /*! + @brief a type for a string + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes JSON strings as follows: + > A string is a sequence of zero or more Unicode characters. + + To store objects in C++, a type is defined by the template parameter + described below. Unicode values are split by the JSON class into + byte-sized characters during deserialization. + + @tparam StringType the container to store strings (e.g., `std::string`). + Note this container is used for keys/names in objects, see @ref object_t. + + #### Default type + + With the default values for @a StringType (`std::string`), the default + value for @a string_t is: + + @code {.cpp} + std::string + @endcode + + #### Encoding + + Strings are stored in UTF-8 encoding. Therefore, functions like + `std::string::size()` or `std::string::length()` return the number of + bytes in the string rather than the number of characters or glyphs. + + #### String comparison + + [RFC 8259](https://tools.ietf.org/html/rfc8259) states: + > Software implementations are typically required to test names of object + > members for equality. Implementations that transform the textual + > representation into sequences of Unicode code units and then perform the + > comparison numerically, code unit by code unit, are interoperable in the + > sense that implementations will agree in all cases on equality or + > inequality of two strings. For example, implementations that compare + > strings with escaped characters unconverted may incorrectly find that + > `"a\\b"` and `"a\u005Cb"` are not equal. + + This implementation is interoperable as it does compare strings code unit + by code unit. + + #### Storage + + String values are stored as pointers in a @ref basic_json type. That is, + for any access to string values, a pointer of type `string_t*` must be + dereferenced. + + @since version 1.0.0 + */ + using string_t = StringType; + + /*! + @brief a type for a boolean + + [RFC 8259](https://tools.ietf.org/html/rfc8259) implicitly describes a boolean as a + type which differentiates the two literals `true` and `false`. + + To store objects in C++, a type is defined by the template parameter @a + BooleanType which chooses the type to use. + + #### Default type + + With the default values for @a BooleanType (`bool`), the default value for + @a boolean_t is: + + @code {.cpp} + bool + @endcode + + #### Storage + + Boolean values are stored directly inside a @ref basic_json type. + + @since version 1.0.0 + */ + using boolean_t = BooleanType; + + /*! + @brief a type for a number (integer) + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store integer numbers in C++, a type is defined by the template + parameter @a NumberIntegerType which chooses the type to use. + + #### Default type + + With the default values for @a NumberIntegerType (`int64_t`), the default + value for @a number_integer_t is: + + @code {.cpp} + int64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `9223372036854775807` (INT64_MAX) and the minimal integer number + that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers + that are out of range will yield over/underflow when used in a + constructor. During deserialization, too large or small integer numbers + will be automatically be stored as @ref number_unsigned_t or @ref + number_float_t. + + [RFC 8259](https://tools.ietf.org/html/rfc8259) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange of the exactly supported range [INT64_MIN, + INT64_MAX], this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa see @ref number_float_t -- type for number values (floating-point) + + @sa see @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_integer_t = NumberIntegerType; + + /*! + @brief a type for a number (unsigned) + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store unsigned integer numbers in C++, a type is defined by the + template parameter @a NumberUnsignedType which chooses the type to use. + + #### Default type + + With the default values for @a NumberUnsignedType (`uint64_t`), the + default value for @a number_unsigned_t is: + + @code {.cpp} + uint64_t + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in integer literals lead to an interpretation as octal + number. Internally, the value will be stored as decimal number. For + instance, the C++ integer literal `010` will be serialized to `8`. + During deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 8259](https://tools.ietf.org/html/rfc8259) specifies: + > An implementation may set limits on the range and precision of numbers. + + When the default type is used, the maximal integer number that can be + stored is `18446744073709551615` (UINT64_MAX) and the minimal integer + number that can be stored is `0`. Integer numbers that are out of range + will yield over/underflow when used in a constructor. During + deserialization, too large or small integer numbers will be automatically + be stored as @ref number_integer_t or @ref number_float_t. + + [RFC 8259](https://tools.ietf.org/html/rfc8259) further states: + > Note that when such software is used, numbers that are integers and are + > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense + > that implementations will agree exactly on their numeric values. + + As this range is a subrange (when considered in conjunction with the + number_integer_t type) of the exactly supported range [0, UINT64_MAX], + this class's integer type is interoperable. + + #### Storage + + Integer number values are stored directly inside a @ref basic_json type. + + @sa see @ref number_float_t -- type for number values (floating-point) + @sa see @ref number_integer_t -- type for number values (integer) + + @since version 2.0.0 + */ + using number_unsigned_t = NumberUnsignedType; + + /*! + @brief a type for a number (floating-point) + + [RFC 8259](https://tools.ietf.org/html/rfc8259) describes numbers as follows: + > The representation of numbers is similar to that used in most + > programming languages. A number is represented in base 10 using decimal + > digits. It contains an integer component that may be prefixed with an + > optional minus sign, which may be followed by a fraction part and/or an + > exponent part. Leading zeros are not allowed. (...) Numeric values that + > cannot be represented in the grammar below (such as Infinity and NaN) + > are not permitted. + + This description includes both integer and floating-point numbers. + However, C++ allows more precise storage if it is known whether the number + is a signed integer, an unsigned integer or a floating-point number. + Therefore, three different types, @ref number_integer_t, @ref + number_unsigned_t and @ref number_float_t are used. + + To store floating-point numbers in C++, a type is defined by the template + parameter @a NumberFloatType which chooses the type to use. + + #### Default type + + With the default values for @a NumberFloatType (`double`), the default + value for @a number_float_t is: + + @code {.cpp} + double + @endcode + + #### Default behavior + + - The restrictions about leading zeros is not enforced in C++. Instead, + leading zeros in floating-point literals will be ignored. Internally, + the value will be stored as decimal number. For instance, the C++ + floating-point literal `01.2` will be serialized to `1.2`. During + deserialization, leading zeros yield an error. + - Not-a-number (NaN) values will be serialized to `null`. + + #### Limits + + [RFC 8259](https://tools.ietf.org/html/rfc8259) states: + > This specification allows implementations to set limits on the range and + > precision of numbers accepted. Since software that implements IEEE + > 754-2008 binary64 (double precision) numbers is generally available and + > widely used, good interoperability can be achieved by implementations + > that expect no more precision or range than these provide, in the sense + > that implementations will approximate JSON numbers within the expected + > precision. + + This implementation does exactly follow this approach, as it uses double + precision floating-point numbers. Note values smaller than + `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` + will be stored as NaN internally and be serialized to `null`. + + #### Storage + + Floating-point number values are stored directly inside a @ref basic_json + type. + + @sa see @ref number_integer_t -- type for number values (integer) + + @sa see @ref number_unsigned_t -- type for number values (unsigned integer) + + @since version 1.0.0 + */ + using number_float_t = NumberFloatType; + + /*! + @brief a type for a packed binary type + + This type is a type designed to carry binary data that appears in various + serialized formats, such as CBOR's Major Type 2, MessagePack's bin, and + BSON's generic binary subtype. This type is NOT a part of standard JSON and + exists solely for compatibility with these binary types. As such, it is + simply defined as an ordered sequence of zero or more byte values. + + Additionally, as an implementation detail, the subtype of the binary data is + carried around as a `std::uint8_t`, which is compatible with both of the + binary data formats that use binary subtyping, (though the specific + numbering is incompatible with each other, and it is up to the user to + translate between them). + + [CBOR's RFC 7049](https://tools.ietf.org/html/rfc7049) describes this type + as: + > Major type 2: a byte string. The string's length in bytes is represented + > following the rules for positive integers (major type 0). + + [MessagePack's documentation on the bin type + family](https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family) + describes this type as: + > Bin format family stores an byte array in 2, 3, or 5 bytes of extra bytes + > in addition to the size of the byte array. + + [BSON's specifications](http://bsonspec.org/spec.html) describe several + binary types; however, this type is intended to represent the generic binary + type which has the description: + > Generic binary subtype - This is the most commonly used binary subtype and + > should be the 'default' for drivers and tools. + + None of these impose any limitations on the internal representation other + than the basic unit of storage be some type of array whose parts are + decomposable into bytes. + + The default representation of this binary format is a + `std::vector`, which is a very common way to represent a byte + array in modern C++. + + #### Default type + + The default values for @a BinaryType is `std::vector` + + #### Storage + + Binary Arrays are stored as pointers in a @ref basic_json type. That is, + for any access to array values, a pointer of the type `binary_t*` must be + dereferenced. + + #### Notes on subtypes + + - CBOR + - Binary values are represented as byte strings. Subtypes are serialized + as tagged values. + - MessagePack + - If a subtype is given and the binary array contains exactly 1, 2, 4, 8, + or 16 elements, the fixext family (fixext1, fixext2, fixext4, fixext8) + is used. For other sizes, the ext family (ext8, ext16, ext32) is used. + The subtype is then added as singed 8-bit integer. + - If no subtype is given, the bin family (bin8, bin16, bin32) is used. + - BSON + - If a subtype is given, it is used and added as unsigned 8-bit integer. + - If no subtype is given, the generic binary subtype 0x00 is used. + + @sa see @ref binary -- create a binary array + + @since version 3.8.0 + */ + using binary_t = nlohmann::byte_container_with_subtype; + /// @} + + private: + + /// helper for exception-safe object creation + template + JSON_HEDLEY_RETURNS_NON_NULL + static T* create(Args&& ... args) + { + AllocatorType alloc; + using AllocatorTraits = std::allocator_traits>; + + auto deleter = [&](T* obj) + { + AllocatorTraits::deallocate(alloc, obj, 1); + }; + std::unique_ptr obj(AllocatorTraits::allocate(alloc, 1), deleter); + AllocatorTraits::construct(alloc, obj.get(), std::forward(args)...); + JSON_ASSERT(obj != nullptr); + return obj.release(); + } + + //////////////////////// + // JSON value storage // + //////////////////////// + + JSON_PRIVATE_UNLESS_TESTED: + /*! + @brief a JSON value + + The actual storage for a JSON value of the @ref basic_json class. This + union combines the different storage types for the JSON value types + defined in @ref value_t. + + JSON type | value_t type | used type + --------- | --------------- | ------------------------ + object | object | pointer to @ref object_t + array | array | pointer to @ref array_t + string | string | pointer to @ref string_t + boolean | boolean | @ref boolean_t + number | number_integer | @ref number_integer_t + number | number_unsigned | @ref number_unsigned_t + number | number_float | @ref number_float_t + binary | binary | pointer to @ref binary_t + null | null | *no value is stored* + + @note Variable-length types (objects, arrays, and strings) are stored as + pointers. The size of the union should not exceed 64 bits if the default + value types are used. + + @since version 1.0.0 + */ + union json_value + { + /// object (stored with pointer to save storage) + object_t* object; + /// array (stored with pointer to save storage) + array_t* array; + /// string (stored with pointer to save storage) + string_t* string; + /// binary (stored with pointer to save storage) + binary_t* binary; + /// boolean + boolean_t boolean; + /// number (integer) + number_integer_t number_integer; + /// number (unsigned integer) + number_unsigned_t number_unsigned; + /// number (floating-point) + number_float_t number_float; + + /// default constructor (for null values) + json_value() = default; + /// constructor for booleans + json_value(boolean_t v) noexcept : boolean(v) {} + /// constructor for numbers (integer) + json_value(number_integer_t v) noexcept : number_integer(v) {} + /// constructor for numbers (unsigned) + json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} + /// constructor for numbers (floating-point) + json_value(number_float_t v) noexcept : number_float(v) {} + /// constructor for empty values of a given type + json_value(value_t t) + { + switch (t) + { + case value_t::object: + { + object = create(); + break; + } + + case value_t::array: + { + array = create(); + break; + } + + case value_t::string: + { + string = create(""); + break; + } + + case value_t::binary: + { + binary = create(); + break; + } + + case value_t::boolean: + { + boolean = boolean_t(false); + break; + } + + case value_t::number_integer: + { + number_integer = number_integer_t(0); + break; + } + + case value_t::number_unsigned: + { + number_unsigned = number_unsigned_t(0); + break; + } + + case value_t::number_float: + { + number_float = number_float_t(0.0); + break; + } + + case value_t::null: + { + object = nullptr; // silence warning, see #821 + break; + } + + case value_t::discarded: + default: + { + object = nullptr; // silence warning, see #821 + if (JSON_HEDLEY_UNLIKELY(t == value_t::null)) + { + JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.10.2", basic_json())); // LCOV_EXCL_LINE + } + break; + } + } + } + + /// constructor for strings + json_value(const string_t& value) + { + string = create(value); + } + + /// constructor for rvalue strings + json_value(string_t&& value) + { + string = create(std::move(value)); + } + + /// constructor for objects + json_value(const object_t& value) + { + object = create(value); + } + + /// constructor for rvalue objects + json_value(object_t&& value) + { + object = create(std::move(value)); + } + + /// constructor for arrays + json_value(const array_t& value) + { + array = create(value); + } + + /// constructor for rvalue arrays + json_value(array_t&& value) + { + array = create(std::move(value)); + } + + /// constructor for binary arrays + json_value(const typename binary_t::container_type& value) + { + binary = create(value); + } + + /// constructor for rvalue binary arrays + json_value(typename binary_t::container_type&& value) + { + binary = create(std::move(value)); + } + + /// constructor for binary arrays (internal type) + json_value(const binary_t& value) + { + binary = create(value); + } + + /// constructor for rvalue binary arrays (internal type) + json_value(binary_t&& value) + { + binary = create(std::move(value)); + } + + void destroy(value_t t) + { + if (t == value_t::array || t == value_t::object) + { + // flatten the current json_value to a heap-allocated stack + std::vector stack; + + // move the top-level items to stack + if (t == value_t::array) + { + stack.reserve(array->size()); + std::move(array->begin(), array->end(), std::back_inserter(stack)); + } + else + { + stack.reserve(object->size()); + for (auto&& it : *object) + { + stack.push_back(std::move(it.second)); + } + } + + while (!stack.empty()) + { + // move the last item to local variable to be processed + basic_json current_item(std::move(stack.back())); + stack.pop_back(); + + // if current_item is array/object, move + // its children to the stack to be processed later + if (current_item.is_array()) + { + std::move(current_item.m_value.array->begin(), current_item.m_value.array->end(), std::back_inserter(stack)); + + current_item.m_value.array->clear(); + } + else if (current_item.is_object()) + { + for (auto&& it : *current_item.m_value.object) + { + stack.push_back(std::move(it.second)); + } + + current_item.m_value.object->clear(); + } + + // it's now safe that current_item get destructed + // since it doesn't have any children + } + } + + switch (t) + { + case value_t::object: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, object); + std::allocator_traits::deallocate(alloc, object, 1); + break; + } + + case value_t::array: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, array); + std::allocator_traits::deallocate(alloc, array, 1); + break; + } + + case value_t::string: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, string); + std::allocator_traits::deallocate(alloc, string, 1); + break; + } + + case value_t::binary: + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, binary); + std::allocator_traits::deallocate(alloc, binary, 1); + break; + } + + case value_t::null: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::discarded: + default: + { + break; + } + } + } + }; + + private: + /*! + @brief checks the class invariants + + This function asserts the class invariants. It needs to be called at the + end of every constructor to make sure that created objects respect the + invariant. Furthermore, it has to be called each time the type of a JSON + value is changed, because the invariant expresses a relationship between + @a m_type and @a m_value. + + Furthermore, the parent relation is checked for arrays and objects: If + @a check_parents true and the value is an array or object, then the + container's elements must have the current value as parent. + + @param[in] check_parents whether the parent relation should be checked. + The value is true by default and should only be set to false + during destruction of objects when the invariant does not + need to hold. + */ + void assert_invariant(bool check_parents = true) const noexcept + { + JSON_ASSERT(m_type != value_t::object || m_value.object != nullptr); + JSON_ASSERT(m_type != value_t::array || m_value.array != nullptr); + JSON_ASSERT(m_type != value_t::string || m_value.string != nullptr); + JSON_ASSERT(m_type != value_t::binary || m_value.binary != nullptr); + +#if JSON_DIAGNOSTICS + JSON_TRY + { + // cppcheck-suppress assertWithSideEffect + JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json& j) + { + return j.m_parent == this; + })); + } + JSON_CATCH(...) {} // LCOV_EXCL_LINE +#endif + static_cast(check_parents); + } + + void set_parents() + { +#if JSON_DIAGNOSTICS + switch (m_type) + { + case value_t::array: + { + for (auto& element : *m_value.array) + { + element.m_parent = this; + } + break; + } + + case value_t::object: + { + for (auto& element : *m_value.object) + { + element.second.m_parent = this; + } + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + break; + } +#endif + } + + iterator set_parents(iterator it, typename iterator::difference_type count) + { +#if JSON_DIAGNOSTICS + for (typename iterator::difference_type i = 0; i < count; ++i) + { + (it + i)->m_parent = this; + } +#else + static_cast(count); +#endif + return it; + } + + reference set_parent(reference j, std::size_t old_capacity = std::size_t(-1)) + { +#if JSON_DIAGNOSTICS + if (old_capacity != std::size_t(-1)) + { + // see https://github.com/nlohmann/json/issues/2838 + JSON_ASSERT(type() == value_t::array); + if (JSON_HEDLEY_UNLIKELY(m_value.array->capacity() != old_capacity)) + { + // capacity has changed: update all parents + set_parents(); + return j; + } + } + + // ordered_json uses a vector internally, so pointers could have + // been invalidated; see https://github.com/nlohmann/json/issues/2962 +#ifdef JSON_HEDLEY_MSVC_VERSION +#pragma warning(push ) +#pragma warning(disable : 4127) // ignore warning to replace if with if constexpr +#endif + if (detail::is_ordered_map::value) + { + set_parents(); + return j; + } +#ifdef JSON_HEDLEY_MSVC_VERSION +#pragma warning( pop ) +#endif + + j.m_parent = this; +#else + static_cast(j); + static_cast(old_capacity); +#endif + return j; + } + + public: + ////////////////////////// + // JSON parser callback // + ////////////////////////// + + /*! + @brief parser event types + + The parser callback distinguishes the following events: + - `object_start`: the parser read `{` and started to process a JSON object + - `key`: the parser read a key of a value in an object + - `object_end`: the parser read `}` and finished processing a JSON object + - `array_start`: the parser read `[` and started to process a JSON array + - `array_end`: the parser read `]` and finished processing a JSON array + - `value`: the parser finished reading a JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + @sa see @ref parser_callback_t for more information and examples + */ + using parse_event_t = detail::parse_event_t; + + /*! + @brief per-element parser callback type + + With a parser callback function, the result of parsing a JSON text can be + influenced. When passed to @ref parse, it is called on certain events + (passed as @ref parse_event_t via parameter @a event) with a set recursion + depth @a depth and context JSON value @a parsed. The return value of the + callback function is a boolean indicating whether the element that emitted + the callback shall be kept or not. + + We distinguish six scenarios (determined by the event type) in which the + callback function can be called. The following table describes the values + of the parameters @a depth, @a event, and @a parsed. + + parameter @a event | description | parameter @a depth | parameter @a parsed + ------------------ | ----------- | ------------------ | ------------------- + parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded + parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key + parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object + parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded + parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array + parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value + + @image html callback_events.png "Example when certain parse events are triggered" + + Discarding a value (i.e., returning `false`) has different effects + depending on the context in which function was called: + + - Discarded values in structured types are skipped. That is, the parser + will behave as if the discarded value was never read. + - In case a value outside a structured type is skipped, it is replaced + with `null`. This case happens if the top-level element is skipped. + + @param[in] depth the depth of the recursion during parsing + + @param[in] event an event of type parse_event_t indicating the context in + the callback function has been called + + @param[in,out] parsed the current intermediate parse result; note that + writing to this value has no effect for parse_event_t::key events + + @return Whether the JSON value which called the function during parsing + should be kept (`true`) or not (`false`). In the latter case, it is either + skipped completely or replaced by an empty discarded object. + + @sa see @ref parse for examples + + @since version 1.0.0 + */ + using parser_callback_t = detail::parser_callback_t; + + ////////////////// + // constructors // + ////////////////// + + /// @name constructors and destructors + /// Constructors of class @ref basic_json, copy/move constructor, copy + /// assignment, static functions creating objects, and the destructor. + /// @{ + + /*! + @brief create an empty value with a given type + + Create an empty JSON value with a given type. The value will be default + initialized with an empty value which depends on the type: + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + object | `{}` + array | `[]` + binary | empty array + + @param[in] v the type of the value to create + + @complexity Constant. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows the constructor for different @ref + value_t values,basic_json__value_t} + + @sa see @ref clear() -- restores the postcondition of this constructor + + @since version 1.0.0 + */ + basic_json(const value_t v) + : m_type(v), m_value(v) + { + assert_invariant(); + } + + /*! + @brief create a null object + + Create a `null` JSON value. It either takes a null pointer as parameter + (explicitly creating `null`) or no parameter (implicitly creating `null`). + The passed null pointer itself is not read -- it is only used to choose + the right constructor. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @liveexample{The following code shows the constructor with and without a + null pointer parameter.,basic_json__nullptr_t} + + @since version 1.0.0 + */ + basic_json(std::nullptr_t = nullptr) noexcept + : basic_json(value_t::null) + { + assert_invariant(); + } + + /*! + @brief create a JSON value + + This is a "catch all" constructor for all compatible JSON types; that is, + types for which a `to_json()` method exists. The constructor forwards the + parameter @a val to that method (to `json_serializer::to_json` method + with `U = uncvref_t`, to be exact). + + Template type @a CompatibleType includes, but is not limited to, the + following types: + - **arrays**: @ref array_t and all kinds of compatible containers such as + `std::vector`, `std::deque`, `std::list`, `std::forward_list`, + `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, + `std::multiset`, and `std::unordered_multiset` with a `value_type` from + which a @ref basic_json value can be constructed. + - **objects**: @ref object_t and all kinds of compatible associative + containers such as `std::map`, `std::unordered_map`, `std::multimap`, + and `std::unordered_multimap` with a `key_type` compatible to + @ref string_t and a `value_type` from which a @ref basic_json value can + be constructed. + - **strings**: @ref string_t, string literals, and all compatible string + containers can be used. + - **numbers**: @ref number_integer_t, @ref number_unsigned_t, + @ref number_float_t, and all convertible number types such as `int`, + `size_t`, `int64_t`, `float` or `double` can be used. + - **boolean**: @ref boolean_t / `bool` can be used. + - **binary**: @ref binary_t / `std::vector` may be used, + unfortunately because string literals cannot be distinguished from binary + character arrays by the C++ type system, all types compatible with `const + char*` will be directed to the string constructor instead. This is both + for backwards compatibility, and due to the fact that a binary type is not + a standard JSON type. + + See the examples below. + + @tparam CompatibleType a type such that: + - @a CompatibleType is not derived from `std::istream`, + - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move + constructors), + - @a CompatibleType is not a different @ref basic_json type (i.e. with different template arguments) + - @a CompatibleType is not a @ref basic_json nested type (e.g., + @ref json_pointer, @ref iterator, etc ...) + - `json_serializer` has a `to_json(basic_json_t&, CompatibleType&&)` method + + @tparam U = `uncvref_t` + + @param[in] val the value to be forwarded to the respective constructor + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @liveexample{The following code shows the constructor with several + compatible types.,basic_json__CompatibleType} + + @since version 2.1.0 + */ + template < typename CompatibleType, + typename U = detail::uncvref_t, + detail::enable_if_t < + !detail::is_basic_json::value&& detail::is_compatible_type::value, int > = 0 > + basic_json(CompatibleType&& val) noexcept(noexcept( // NOLINT(bugprone-forwarding-reference-overload,bugprone-exception-escape) + JSONSerializer::to_json(std::declval(), + std::forward(val)))) + { + JSONSerializer::to_json(*this, std::forward(val)); + set_parents(); + assert_invariant(); + } + + /*! + @brief create a JSON value from an existing one + + This is a constructor for existing @ref basic_json types. + It does not hijack copy/move constructors, since the parameter has different + template arguments than the current ones. + + The constructor tries to convert the internal @ref m_value of the parameter. + + @tparam BasicJsonType a type such that: + - @a BasicJsonType is a @ref basic_json type. + - @a BasicJsonType has different template arguments than @ref basic_json_t. + + @param[in] val the @ref basic_json value to be converted. + + @complexity Usually linear in the size of the passed @a val, also + depending on the implementation of the called `to_json()` + method. + + @exceptionsafety Depends on the called constructor. For types directly + supported by the library (i.e., all types for which no `to_json()` function + was provided), strong guarantee holds: if an exception is thrown, there are + no changes to any JSON value. + + @since version 3.2.0 + */ + template < typename BasicJsonType, + detail::enable_if_t < + detail::is_basic_json::value && !std::is_same::value, int > = 0 > + basic_json(const BasicJsonType& val) + { + using other_boolean_t = typename BasicJsonType::boolean_t; + using other_number_float_t = typename BasicJsonType::number_float_t; + using other_number_integer_t = typename BasicJsonType::number_integer_t; + using other_number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using other_string_t = typename BasicJsonType::string_t; + using other_object_t = typename BasicJsonType::object_t; + using other_array_t = typename BasicJsonType::array_t; + using other_binary_t = typename BasicJsonType::binary_t; + + switch (val.type()) + { + case value_t::boolean: + JSONSerializer::to_json(*this, val.template get()); + break; + case value_t::number_float: + JSONSerializer::to_json(*this, val.template get()); + break; + case value_t::number_integer: + JSONSerializer::to_json(*this, val.template get()); + break; + case value_t::number_unsigned: + JSONSerializer::to_json(*this, val.template get()); + break; + case value_t::string: + JSONSerializer::to_json(*this, val.template get_ref()); + break; + case value_t::object: + JSONSerializer::to_json(*this, val.template get_ref()); + break; + case value_t::array: + JSONSerializer::to_json(*this, val.template get_ref()); + break; + case value_t::binary: + JSONSerializer::to_json(*this, val.template get_ref()); + break; + case value_t::null: + *this = nullptr; + break; + case value_t::discarded: + m_type = value_t::discarded; + break; + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + set_parents(); + assert_invariant(); + } + + /*! + @brief create a container (array or object) from an initializer list + + Creates a JSON value of type array or object from the passed initializer + list @a init. In case @a type_deduction is `true` (default), the type of + the JSON value to be created is deducted from the initializer list @a init + according to the following rules: + + 1. If the list is empty, an empty JSON object value `{}` is created. + 2. If the list consists of pairs whose first element is a string, a JSON + object value is created where the first elements of the pairs are + treated as keys and the second elements are as values. + 3. In all other cases, an array is created. + + The rules aim to create the best fit between a C++ initializer list and + JSON values. The rationale is as follows: + + 1. The empty initializer list is written as `{}` which is exactly an empty + JSON object. + 2. C++ has no way of describing mapped types other than to list a list of + pairs. As JSON requires that keys must be of type string, rule 2 is the + weakest constraint one can pose on initializer lists to interpret them + as an object. + 3. In all other cases, the initializer list could not be interpreted as + JSON object type, so interpreting it as JSON array type is safe. + + With the rules described above, the following JSON values cannot be + expressed by an initializer list: + + - the empty array (`[]`): use @ref array(initializer_list_t) + with an empty initializer list in this case + - arrays whose elements satisfy rule 2: use @ref + array(initializer_list_t) with the same initializer list + in this case + + @note When used without parentheses around an empty initializer list, @ref + basic_json() is called instead of this function, yielding the JSON null + value. + + @param[in] init initializer list with JSON values + + @param[in] type_deduction internal parameter; when set to `true`, the type + of the JSON value is deducted from the initializer list @a init; when set + to `false`, the type provided via @a manual_type is forced. This mode is + used by the functions @ref array(initializer_list_t) and + @ref object(initializer_list_t). + + @param[in] manual_type internal parameter; when @a type_deduction is set + to `false`, the created JSON value will use the provided type (only @ref + value_t::array and @ref value_t::object are valid); when @a type_deduction + is set to `true`, this parameter has no effect + + @throw type_error.301 if @a type_deduction is `false`, @a manual_type is + `value_t::object`, but @a init contains an element which is not a pair + whose first element is a string. In this case, the constructor could not + create an object. If @a type_deduction would have be `true`, an array + would have been created. See @ref object(initializer_list_t) + for an example. + + @complexity Linear in the size of the initializer list @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows how JSON values are created from + initializer lists.,basic_json__list_init_t} + + @sa see @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + @sa see @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + basic_json(initializer_list_t init, + bool type_deduction = true, + value_t manual_type = value_t::array) + { + // check if each element is an array with two elements whose first + // element is a string + bool is_an_object = std::all_of(init.begin(), init.end(), + [](const detail::json_ref& element_ref) + { + return element_ref->is_array() && element_ref->size() == 2 && (*element_ref)[0].is_string(); + }); + + // adjust type if type deduction is not wanted + if (!type_deduction) + { + // if array is wanted, do not create an object though possible + if (manual_type == value_t::array) + { + is_an_object = false; + } + + // if object is wanted but impossible, throw an exception + if (JSON_HEDLEY_UNLIKELY(manual_type == value_t::object && !is_an_object)) + { + JSON_THROW(type_error::create(301, "cannot create object from initializer list", basic_json())); + } + } + + if (is_an_object) + { + // the initializer list is a list of pairs -> create object + m_type = value_t::object; + m_value = value_t::object; + + for (auto& element_ref : init) + { + auto element = element_ref.moved_or_copied(); + m_value.object->emplace( + std::move(*((*element.m_value.array)[0].m_value.string)), + std::move((*element.m_value.array)[1])); + } + } + else + { + // the initializer list describes an array -> create array + m_type = value_t::array; + m_value.array = create(init.begin(), init.end()); + } + + set_parents(); + assert_invariant(); + } + + /*! + @brief explicitly create a binary array (without subtype) + + Creates a JSON binary array value from a given binary container. Binary + values are part of various binary formats, such as CBOR, MessagePack, and + BSON. This constructor is used to create a value for serialization to those + formats. + + @note Note, this function exists because of the difficulty in correctly + specifying the correct template overload in the standard value ctor, as both + JSON arrays and JSON binary arrays are backed with some form of a + `std::vector`. Because JSON binary arrays are a non-standard extension it + was decided that it would be best to prevent automatic initialization of a + binary array type, for backwards compatibility and so it does not happen on + accident. + + @param[in] init container containing bytes to use as binary type + + @return JSON binary array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @since version 3.8.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json binary(const typename binary_t::container_type& init) + { + auto res = basic_json(); + res.m_type = value_t::binary; + res.m_value = init; + return res; + } + + /*! + @brief explicitly create a binary array (with subtype) + + Creates a JSON binary array value from a given binary container. Binary + values are part of various binary formats, such as CBOR, MessagePack, and + BSON. This constructor is used to create a value for serialization to those + formats. + + @note Note, this function exists because of the difficulty in correctly + specifying the correct template overload in the standard value ctor, as both + JSON arrays and JSON binary arrays are backed with some form of a + `std::vector`. Because JSON binary arrays are a non-standard extension it + was decided that it would be best to prevent automatic initialization of a + binary array type, for backwards compatibility and so it does not happen on + accident. + + @param[in] init container containing bytes to use as binary type + @param[in] subtype subtype to use in MessagePack and BSON + + @return JSON binary array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @since version 3.8.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json binary(const typename binary_t::container_type& init, typename binary_t::subtype_type subtype) + { + auto res = basic_json(); + res.m_type = value_t::binary; + res.m_value = binary_t(init, subtype); + return res; + } + + /// @copydoc binary(const typename binary_t::container_type&) + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json binary(typename binary_t::container_type&& init) + { + auto res = basic_json(); + res.m_type = value_t::binary; + res.m_value = std::move(init); + return res; + } + + /// @copydoc binary(const typename binary_t::container_type&, typename binary_t::subtype_type) + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json binary(typename binary_t::container_type&& init, typename binary_t::subtype_type subtype) + { + auto res = basic_json(); + res.m_type = value_t::binary; + res.m_value = binary_t(std::move(init), subtype); + return res; + } + + /*! + @brief explicitly create an array from an initializer list + + Creates a JSON array value from a given initializer list. That is, given a + list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the + initializer list is empty, the empty array `[]` is created. + + @note This function is only needed to express two edge cases that cannot + be realized with the initializer list constructor (@ref + basic_json(initializer_list_t, bool, value_t)). These cases + are: + 1. creating an array whose elements are all pairs whose first element is a + string -- in this case, the initializer list constructor would create an + object, taking the first elements as keys + 2. creating an empty array -- passing the empty initializer list to the + initializer list constructor yields an empty object + + @param[in] init initializer list with JSON values to create an array from + (optional) + + @return JSON array value + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `array` + function.,array} + + @sa see @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa see @ref object(initializer_list_t) -- create a JSON object + value from an initializer list + + @since version 1.0.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json array(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::array); + } + + /*! + @brief explicitly create an object from an initializer list + + Creates a JSON object value from a given initializer list. The initializer + lists elements must be pairs, and their first elements must be strings. If + the initializer list is empty, the empty object `{}` is created. + + @note This function is only added for symmetry reasons. In contrast to the + related function @ref array(initializer_list_t), there are + no cases which can only be expressed by this function. That is, any + initializer list @a init can also be passed to the initializer list + constructor @ref basic_json(initializer_list_t, bool, value_t). + + @param[in] init initializer list to create an object from (optional) + + @return JSON object value + + @throw type_error.301 if @a init is not a list of pairs whose first + elements are strings. In this case, no object can be created. When such a + value is passed to @ref basic_json(initializer_list_t, bool, value_t), + an array would have been created from the passed initializer list @a init. + See example below. + + @complexity Linear in the size of @a init. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows an example for the `object` + function.,object} + + @sa see @ref basic_json(initializer_list_t, bool, value_t) -- + create a JSON value from an initializer list + @sa see @ref array(initializer_list_t) -- create a JSON array + value from an initializer list + + @since version 1.0.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json object(initializer_list_t init = {}) + { + return basic_json(init, false, value_t::object); + } + + /*! + @brief construct an array with count copies of given value + + Constructs a JSON array value by creating @a cnt copies of a passed value. + In case @a cnt is `0`, an empty array is created. + + @param[in] cnt the number of JSON copies of @a val to create + @param[in] val the JSON value to copy + + @post `std::distance(begin(),end()) == cnt` holds. + + @complexity Linear in @a cnt. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The following code shows examples for the @ref + basic_json(size_type\, const basic_json&) + constructor.,basic_json__size_type_basic_json} + + @since version 1.0.0 + */ + basic_json(size_type cnt, const basic_json& val) + : m_type(value_t::array) + { + m_value.array = create(cnt, val); + set_parents(); + assert_invariant(); + } + + /*! + @brief construct a JSON container given an iterator range + + Constructs the JSON value with the contents of the range `[first, last)`. + The semantics depends on the different types a JSON value can have: + - In case of a null type, invalid_iterator.206 is thrown. + - In case of other primitive types (number, boolean, or string), @a first + must be `begin()` and @a last must be `end()`. In this case, the value is + copied. Otherwise, invalid_iterator.204 is thrown. + - In case of structured types (array, object), the constructor behaves as + similar versions for `std::vector` or `std::map`; that is, a JSON array + or object is constructed from the values in the range. + + @tparam InputIT an input iterator type (@ref iterator or @ref + const_iterator) + + @param[in] first begin of the range to copy from (included) + @param[in] last end of the range to copy from (excluded) + + @pre Iterators @a first and @a last must be initialized. **This + precondition is enforced with an assertion (see warning).** If + assertions are switched off, a violation of this precondition yields + undefined behavior. + + @pre Range `[first, last)` is valid. Usually, this precondition cannot be + checked efficiently. Only certain edge cases are detected; see the + description of the exceptions below. A violation of this precondition + yields undefined behavior. + + @warning A precondition is enforced with a runtime assertion that will + result in calling `std::abort` if this precondition is not met. + Assertions can be disabled by defining `NDEBUG` at compile time. + See https://en.cppreference.com/w/cpp/error/assert for more + information. + + @throw invalid_iterator.201 if iterators @a first and @a last are not + compatible (i.e., do not belong to the same JSON value). In this case, + the range `[first, last)` is undefined. + @throw invalid_iterator.204 if iterators @a first and @a last belong to a + primitive type (number, boolean, or string), but @a first does not point + to the first element any more. In this case, the range `[first, last)` is + undefined. See example code below. + @throw invalid_iterator.206 if iterators @a first and @a last belong to a + null value. In this case, the range `[first, last)` is undefined. + + @complexity Linear in distance between @a first and @a last. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @liveexample{The example below shows several ways to create JSON values by + specifying a subrange with iterators.,basic_json__InputIt_InputIt} + + @since version 1.0.0 + */ + template < class InputIT, typename std::enable_if < + std::is_same::value || + std::is_same::value, int >::type = 0 > + basic_json(InputIT first, InputIT last) + { + JSON_ASSERT(first.m_object != nullptr); + JSON_ASSERT(last.m_object != nullptr); + + // make sure iterator fits the current value + if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(201, "iterators are not compatible", basic_json())); + } + + // copy type from first iterator + m_type = first.m_object->m_type; + + // check if iterator range is complete for primitive values + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + { + if (JSON_HEDLEY_UNLIKELY(!first.m_it.primitive_iterator.is_begin() + || !last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range", *first.m_object)); + } + break; + } + + case value_t::null: + case value_t::object: + case value_t::array: + case value_t::binary: + case value_t::discarded: + default: + break; + } + + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = first.m_object->m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = first.m_object->m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value.number_float = first.m_object->m_value.number_float; + break; + } + + case value_t::boolean: + { + m_value.boolean = first.m_object->m_value.boolean; + break; + } + + case value_t::string: + { + m_value = *first.m_object->m_value.string; + break; + } + + case value_t::object: + { + m_value.object = create(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + m_value.array = create(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + case value_t::binary: + { + m_value = *first.m_object->m_value.binary; + break; + } + + case value_t::null: + case value_t::discarded: + default: + JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + std::string(first.m_object->type_name()), *first.m_object)); + } + + set_parents(); + assert_invariant(); + } + + + /////////////////////////////////////// + // other constructors and destructor // + /////////////////////////////////////// + + template, + std::is_same>::value, int> = 0 > + basic_json(const JsonRef& ref) : basic_json(ref.moved_or_copied()) {} + + /*! + @brief copy constructor + + Creates a copy of a given JSON value. + + @param[in] other the JSON value to copy + + @post `*this == other` + + @complexity Linear in the size of @a other. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes to any JSON value. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + - As postcondition, it holds: `other == basic_json(other)`. + + @liveexample{The following code shows an example for the copy + constructor.,basic_json__basic_json} + + @since version 1.0.0 + */ + basic_json(const basic_json& other) + : m_type(other.m_type) + { + // check of passed value is valid + other.assert_invariant(); + + switch (m_type) + { + case value_t::object: + { + m_value = *other.m_value.object; + break; + } + + case value_t::array: + { + m_value = *other.m_value.array; + break; + } + + case value_t::string: + { + m_value = *other.m_value.string; + break; + } + + case value_t::boolean: + { + m_value = other.m_value.boolean; + break; + } + + case value_t::number_integer: + { + m_value = other.m_value.number_integer; + break; + } + + case value_t::number_unsigned: + { + m_value = other.m_value.number_unsigned; + break; + } + + case value_t::number_float: + { + m_value = other.m_value.number_float; + break; + } + + case value_t::binary: + { + m_value = *other.m_value.binary; + break; + } + + case value_t::null: + case value_t::discarded: + default: + break; + } + + set_parents(); + assert_invariant(); + } + + /*! + @brief move constructor + + Move constructor. Constructs a JSON value with the contents of the given + value @a other using move semantics. It "steals" the resources from @a + other and leaves it as JSON null value. + + @param[in,out] other value to move to this object + + @post `*this` has the same value as @a other before the call. + @post @a other is a JSON null value. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this constructor never throws + exceptions. + + @requirement This function helps `basic_json` satisfying the + [MoveConstructible](https://en.cppreference.com/w/cpp/named_req/MoveConstructible) + requirements. + + @liveexample{The code below shows the move constructor explicitly called + via std::move.,basic_json__moveconstructor} + + @since version 1.0.0 + */ + basic_json(basic_json&& other) noexcept + : m_type(std::move(other.m_type)), + m_value(std::move(other.m_value)) + { + // check that passed value is valid + other.assert_invariant(false); + + // invalidate payload + other.m_type = value_t::null; + other.m_value = {}; + + set_parents(); + assert_invariant(); + } + + /*! + @brief copy assignment + + Copy assignment operator. Copies a JSON value via the "copy and swap" + strategy: It is expressed in terms of the copy constructor, destructor, + and the `swap()` member function. + + @param[in] other value to copy from + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + + @liveexample{The code below shows and example for the copy assignment. It + creates a copy of value `a` which is then swapped with `b`. Finally\, the + copy of `a` (which is the null value after the swap) is + destroyed.,basic_json__copyassignment} + + @since version 1.0.0 + */ + basic_json& operator=(basic_json other) noexcept ( + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value&& + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value + ) + { + // check that passed value is valid + other.assert_invariant(); + + using std::swap; + swap(m_type, other.m_type); + swap(m_value, other.m_value); + + set_parents(); + assert_invariant(); + return *this; + } + + /*! + @brief destructor + + Destroys the JSON value and frees all allocated memory. + + @complexity Linear. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is linear. + - All stored elements are destroyed and all memory is freed. + + @since version 1.0.0 + */ + ~basic_json() noexcept + { + assert_invariant(false); + m_value.destroy(m_type); + } + + /// @} + + public: + /////////////////////// + // object inspection // + /////////////////////// + + /// @name object inspection + /// Functions to inspect the type of a JSON value. + /// @{ + + /*! + @brief serialization + + Serialization function for JSON values. The function tries to mimic + Python's `json.dumps()` function, and currently supports its @a indent + and @a ensure_ascii parameters. + + @param[in] indent If indent is nonnegative, then array elements and object + members will be pretty-printed with that indent level. An indent level of + `0` will only insert newlines. `-1` (the default) selects the most compact + representation. + @param[in] indent_char The character to use for indentation if @a indent is + greater than `0`. The default is ` ` (space). + @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters + in the output are escaped with `\uXXXX` sequences, and the result consists + of ASCII characters only. + @param[in] error_handler how to react on decoding errors; there are three + possible values: `strict` (throws and exception in case a decoding error + occurs; default), `replace` (replace invalid UTF-8 sequences with U+FFFD), + and `ignore` (ignore invalid UTF-8 sequences during serialization; all + bytes are copied to the output unchanged). + + @return string containing the serialization of the JSON value + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded and @a error_handler is set to strict + + @note Binary values are serialized as object containing two keys: + - "bytes": an array of bytes as integers + - "subtype": the subtype as integer or "null" if the binary has no subtype + + @complexity Linear. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @liveexample{The following example shows the effect of different @a indent\, + @a indent_char\, and @a ensure_ascii parameters to the result of the + serialization.,dump} + + @see https://docs.python.org/2/library/json.html#json.dump + + @since version 1.0.0; indentation character @a indent_char, option + @a ensure_ascii and exceptions added in version 3.0.0; error + handlers added in version 3.4.0; serialization of binary values added + in version 3.8.0. + */ + string_t dump(const int indent = -1, + const char indent_char = ' ', + const bool ensure_ascii = false, + const error_handler_t error_handler = error_handler_t::strict) const + { + string_t result; + serializer s(detail::output_adapter(result), indent_char, error_handler); + + if (indent >= 0) + { + s.dump(*this, true, ensure_ascii, static_cast(indent)); + } + else + { + s.dump(*this, false, ensure_ascii, 0); + } + + return result; + } + + /*! + @brief return the type of the JSON value (explicit) + + Return the type of the JSON value as a value from the @ref value_t + enumeration. + + @return the type of the JSON value + Value type | return value + ------------------------- | ------------------------- + null | value_t::null + boolean | value_t::boolean + string | value_t::string + number (integer) | value_t::number_integer + number (unsigned integer) | value_t::number_unsigned + number (floating-point) | value_t::number_float + object | value_t::object + array | value_t::array + binary | value_t::binary + discarded | value_t::discarded + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `type()` for all JSON + types.,type} + + @sa see @ref operator value_t() -- return the type of the JSON value (implicit) + @sa see @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr value_t type() const noexcept + { + return m_type; + } + + /*! + @brief return whether type is primitive + + This function returns true if and only if the JSON type is primitive + (string, number, boolean, or null). + + @return `true` if type is primitive (string, number, boolean, or null), + `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_primitive()` for all JSON + types.,is_primitive} + + @sa see @ref is_structured() -- returns whether JSON value is structured + @sa see @ref is_null() -- returns whether JSON value is `null` + @sa see @ref is_string() -- returns whether JSON value is a string + @sa see @ref is_boolean() -- returns whether JSON value is a boolean + @sa see @ref is_number() -- returns whether JSON value is a number + @sa see @ref is_binary() -- returns whether JSON value is a binary array + + @since version 1.0.0 + */ + constexpr bool is_primitive() const noexcept + { + return is_null() || is_string() || is_boolean() || is_number() || is_binary(); + } + + /*! + @brief return whether type is structured + + This function returns true if and only if the JSON type is structured + (array or object). + + @return `true` if type is structured (array or object), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_structured()` for all JSON + types.,is_structured} + + @sa see @ref is_primitive() -- returns whether value is primitive + @sa see @ref is_array() -- returns whether value is an array + @sa see @ref is_object() -- returns whether value is an object + + @since version 1.0.0 + */ + constexpr bool is_structured() const noexcept + { + return is_array() || is_object(); + } + + /*! + @brief return whether value is null + + This function returns true if and only if the JSON value is null. + + @return `true` if type is null, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_null()` for all JSON + types.,is_null} + + @since version 1.0.0 + */ + constexpr bool is_null() const noexcept + { + return m_type == value_t::null; + } + + /*! + @brief return whether value is a boolean + + This function returns true if and only if the JSON value is a boolean. + + @return `true` if type is boolean, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_boolean()` for all JSON + types.,is_boolean} + + @since version 1.0.0 + */ + constexpr bool is_boolean() const noexcept + { + return m_type == value_t::boolean; + } + + /*! + @brief return whether value is a number + + This function returns true if and only if the JSON value is a number. This + includes both integer (signed and unsigned) and floating-point values. + + @return `true` if type is number (regardless whether integer, unsigned + integer or floating-type), `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number()` for all JSON + types.,is_number} + + @sa see @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa see @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa see @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number() const noexcept + { + return is_number_integer() || is_number_float(); + } + + /*! + @brief return whether value is an integer number + + This function returns true if and only if the JSON value is a signed or + unsigned integer number. This excludes floating-point values. + + @return `true` if type is an integer or unsigned integer number, `false` + otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_integer()` for all + JSON types.,is_number_integer} + + @sa see @ref is_number() -- check if value is a number + @sa see @ref is_number_unsigned() -- check if value is an unsigned integer + number + @sa see @ref is_number_float() -- check if value is a floating-point number + + @since version 1.0.0 + */ + constexpr bool is_number_integer() const noexcept + { + return m_type == value_t::number_integer || m_type == value_t::number_unsigned; + } + + /*! + @brief return whether value is an unsigned integer number + + This function returns true if and only if the JSON value is an unsigned + integer number. This excludes floating-point and signed integer values. + + @return `true` if type is an unsigned integer number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_unsigned()` for all + JSON types.,is_number_unsigned} + + @sa see @ref is_number() -- check if value is a number + @sa see @ref is_number_integer() -- check if value is an integer or unsigned + integer number + @sa see @ref is_number_float() -- check if value is a floating-point number + + @since version 2.0.0 + */ + constexpr bool is_number_unsigned() const noexcept + { + return m_type == value_t::number_unsigned; + } + + /*! + @brief return whether value is a floating-point number + + This function returns true if and only if the JSON value is a + floating-point number. This excludes signed and unsigned integer values. + + @return `true` if type is a floating-point number, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_number_float()` for all + JSON types.,is_number_float} + + @sa see @ref is_number() -- check if value is number + @sa see @ref is_number_integer() -- check if value is an integer number + @sa see @ref is_number_unsigned() -- check if value is an unsigned integer + number + + @since version 1.0.0 + */ + constexpr bool is_number_float() const noexcept + { + return m_type == value_t::number_float; + } + + /*! + @brief return whether value is an object + + This function returns true if and only if the JSON value is an object. + + @return `true` if type is object, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_object()` for all JSON + types.,is_object} + + @since version 1.0.0 + */ + constexpr bool is_object() const noexcept + { + return m_type == value_t::object; + } + + /*! + @brief return whether value is an array + + This function returns true if and only if the JSON value is an array. + + @return `true` if type is array, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_array()` for all JSON + types.,is_array} + + @since version 1.0.0 + */ + constexpr bool is_array() const noexcept + { + return m_type == value_t::array; + } + + /*! + @brief return whether value is a string + + This function returns true if and only if the JSON value is a string. + + @return `true` if type is string, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_string()` for all JSON + types.,is_string} + + @since version 1.0.0 + */ + constexpr bool is_string() const noexcept + { + return m_type == value_t::string; + } + + /*! + @brief return whether value is a binary array + + This function returns true if and only if the JSON value is a binary array. + + @return `true` if type is binary array, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_binary()` for all JSON + types.,is_binary} + + @since version 3.8.0 + */ + constexpr bool is_binary() const noexcept + { + return m_type == value_t::binary; + } + + /*! + @brief return whether value is discarded + + This function returns true if and only if the JSON value was discarded + during parsing with a callback function (see @ref parser_callback_t). + + @note This function will always be `false` for JSON values after parsing. + That is, discarded values can only occur during parsing, but will be + removed when inside a structured value or replaced by null in other cases. + + @return `true` if type is discarded, `false` otherwise. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies `is_discarded()` for all JSON + types.,is_discarded} + + @since version 1.0.0 + */ + constexpr bool is_discarded() const noexcept + { + return m_type == value_t::discarded; + } + + /*! + @brief return the type of the JSON value (implicit) + + Implicitly return the type of the JSON value as a value from the @ref + value_t enumeration. + + @return the type of the JSON value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @liveexample{The following code exemplifies the @ref value_t operator for + all JSON types.,operator__value_t} + + @sa see @ref type() -- return the type of the JSON value (explicit) + @sa see @ref type_name() -- return the type as string + + @since version 1.0.0 + */ + constexpr operator value_t() const noexcept + { + return m_type; + } + + /// @} + + private: + ////////////////// + // value access // + ////////////////// + + /// get a boolean (explicit) + boolean_t get_impl(boolean_t* /*unused*/) const + { + if (JSON_HEDLEY_LIKELY(is_boolean())) + { + return m_value.boolean; + } + + JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()), *this)); + } + + /// get a pointer to the value (object) + object_t* get_impl_ptr(object_t* /*unused*/) noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (object) + constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept + { + return is_object() ? m_value.object : nullptr; + } + + /// get a pointer to the value (array) + array_t* get_impl_ptr(array_t* /*unused*/) noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (array) + constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept + { + return is_array() ? m_value.array : nullptr; + } + + /// get a pointer to the value (string) + string_t* get_impl_ptr(string_t* /*unused*/) noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (string) + constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept + { + return is_string() ? m_value.string : nullptr; + } + + /// get a pointer to the value (boolean) + boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (boolean) + constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept + { + return is_boolean() ? &m_value.boolean : nullptr; + } + + /// get a pointer to the value (integer number) + number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (integer number) + constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept + { + return is_number_integer() ? &m_value.number_integer : nullptr; + } + + /// get a pointer to the value (unsigned number) + number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (unsigned number) + constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept + { + return is_number_unsigned() ? &m_value.number_unsigned : nullptr; + } + + /// get a pointer to the value (floating-point number) + number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /// get a pointer to the value (floating-point number) + constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept + { + return is_number_float() ? &m_value.number_float : nullptr; + } + + /// get a pointer to the value (binary) + binary_t* get_impl_ptr(binary_t* /*unused*/) noexcept + { + return is_binary() ? m_value.binary : nullptr; + } + + /// get a pointer to the value (binary) + constexpr const binary_t* get_impl_ptr(const binary_t* /*unused*/) const noexcept + { + return is_binary() ? m_value.binary : nullptr; + } + + /*! + @brief helper function to implement get_ref() + + This function helps to implement get_ref() without code duplication for + const and non-const overloads + + @tparam ThisType will be deduced as `basic_json` or `const basic_json` + + @throw type_error.303 if ReferenceType does not match underlying value + type of the current JSON + */ + template + static ReferenceType get_ref_impl(ThisType& obj) + { + // delegate the call to get_ptr<>() + auto* ptr = obj.template get_ptr::type>(); + + if (JSON_HEDLEY_LIKELY(ptr != nullptr)) + { + return *ptr; + } + + JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()), obj)); + } + + public: + /// @name value access + /// Direct access to the stored value of a JSON value. + /// @{ + + /*! + @brief get a pointer value (implicit) + + Implicit pointer access to the internally stored JSON value. No copies are + made. + + @warning Writing data to the pointee of the result yields an undefined + state. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. Enforced by a static + assertion. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get_ptr} + + @since version 1.0.0 + */ + template::value, int>::type = 0> + auto get_ptr() noexcept -> decltype(std::declval().get_impl_ptr(std::declval())) + { + // delegate the call to get_impl_ptr<>() + return get_impl_ptr(static_cast(nullptr)); + } + + /*! + @brief get a pointer value (implicit) + @copydoc get_ptr() + */ + template < typename PointerType, typename std::enable_if < + std::is_pointer::value&& + std::is_const::type>::value, int >::type = 0 > + constexpr auto get_ptr() const noexcept -> decltype(std::declval().get_impl_ptr(std::declval())) + { + // delegate the call to get_impl_ptr<>() const + return get_impl_ptr(static_cast(nullptr)); + } + + private: + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value + which is [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) + and [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType ret; + JSONSerializer::from_json(*this, ret); + return ret; + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + - @ref json_serializer does not have a `from_json()` method of + the form `ValueType from_json(const basic_json&)` + + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,get__ValueType_const} + + @since version 2.1.0 + */ + template < typename ValueType, + detail::enable_if_t < + detail::is_default_constructible::value&& + detail::has_from_json::value, + int > = 0 > + ValueType get_impl(detail::priority_tag<0> /*unused*/) const noexcept(noexcept( + JSONSerializer::from_json(std::declval(), std::declval()))) + { + ValueType ret{}; + JSONSerializer::from_json(*this, ret); + return ret; + } + + /*! + @brief get a value (explicit); special case + + Explicit type conversion between the JSON value and a compatible value + which is **not** [CopyConstructible](https://en.cppreference.com/w/cpp/named_req/CopyConstructible) + and **not** [DefaultConstructible](https://en.cppreference.com/w/cpp/named_req/DefaultConstructible). + The value is converted by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + return JSONSerializer::from_json(*this); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json and + - @ref json_serializer has a `from_json()` method of the form + `ValueType from_json(const basic_json&)` + + @note If @ref json_serializer has both overloads of + `from_json()`, this one is chosen. + + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @a ValueType + + @throw what @ref json_serializer `from_json()` method throws + + @since version 2.1.0 + */ + template < typename ValueType, + detail::enable_if_t < + detail::has_non_default_from_json::value, + int > = 0 > + ValueType get_impl(detail::priority_tag<1> /*unused*/) const noexcept(noexcept( + JSONSerializer::from_json(std::declval()))) + { + return JSONSerializer::from_json(*this); + } + + /*! + @brief get special-case overload + + This overloads converts the current @ref basic_json in a different + @ref basic_json type + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this, converted into @a BasicJsonType + + @complexity Depending on the implementation of the called `from_json()` + method. + + @since version 3.2.0 + */ + template < typename BasicJsonType, + detail::enable_if_t < + detail::is_basic_json::value, + int > = 0 > + BasicJsonType get_impl(detail::priority_tag<2> /*unused*/) const + { + return *this; + } + + /*! + @brief get special-case overload + + This overloads avoids a lot of template boilerplate, it can be seen as the + identity method + + @tparam BasicJsonType == @ref basic_json + + @return a copy of *this + + @complexity Constant. + + @since version 2.1.0 + */ + template::value, + int> = 0> + basic_json get_impl(detail::priority_tag<3> /*unused*/) const + { + return *this; + } + + /*! + @brief get a pointer value (explicit) + @copydoc get() + */ + template::value, + int> = 0> + constexpr auto get_impl(detail::priority_tag<4> /*unused*/) const noexcept + -> decltype(std::declval().template get_ptr()) + { + // delegate the call to get_ptr + return get_ptr(); + } + + public: + /*! + @brief get a (pointer) value (explicit) + + Performs explicit type conversion between the JSON value and a compatible value if required. + + - If the requested type is a pointer to the internally stored JSON value that pointer is returned. + No copies are made. + + - If the requested type is the current @ref basic_json, or a different @ref basic_json convertible + from the current @ref basic_json. + + - Otherwise the value is converted by calling the @ref json_serializer `from_json()` + method. + + @tparam ValueTypeCV the provided value type + @tparam ValueType the returned value type + + @return copy of the JSON value, converted to @tparam ValueType if necessary + + @throw what @ref json_serializer `from_json()` method throws if conversion is required + + @since version 2.1.0 + */ + template < typename ValueTypeCV, typename ValueType = detail::uncvref_t> +#if defined(JSON_HAS_CPP_14) + constexpr +#endif + auto get() const noexcept( + noexcept(std::declval().template get_impl(detail::priority_tag<4> {}))) + -> decltype(std::declval().template get_impl(detail::priority_tag<4> {})) + { + // we cannot static_assert on ValueTypeCV being non-const, because + // there is support for get(), which is why we + // still need the uncvref + static_assert(!std::is_reference::value, + "get() cannot be used with reference types, you might want to use get_ref()"); + return get_impl(detail::priority_tag<4> {}); + } + + /*! + @brief get a pointer value (explicit) + + Explicit pointer access to the internally stored JSON value. No copies are + made. + + @warning The pointer becomes invalid if the underlying JSON object + changes. + + @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref + object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, + @ref number_unsigned_t, or @ref number_float_t. + + @return pointer to the internally stored JSON value if the requested + pointer type @a PointerType fits to the JSON value; `nullptr` otherwise + + @complexity Constant. + + @liveexample{The example below shows how pointers to internal values of a + JSON value can be requested. Note that no type conversions are made and a + `nullptr` is returned if the value and the requested pointer type does not + match.,get__PointerType} + + @sa see @ref get_ptr() for explicit pointer-member access + + @since version 1.0.0 + */ + template::value, int>::type = 0> + auto get() noexcept -> decltype(std::declval().template get_ptr()) + { + // delegate the call to get_ptr + return get_ptr(); + } + + /*! + @brief get a value (explicit) + + Explicit type conversion between the JSON value and a compatible value. + The value is filled into the input parameter by calling the @ref json_serializer + `from_json()` method. + + The function is equivalent to executing + @code {.cpp} + ValueType v; + JSONSerializer::from_json(*this, v); + @endcode + + This overloads is chosen if: + - @a ValueType is not @ref basic_json, + - @ref json_serializer has a `from_json()` method of the form + `void from_json(const basic_json&, ValueType&)`, and + + @tparam ValueType the input parameter type. + + @return the input parameter, allowing chaining calls. + + @throw what @ref json_serializer `from_json()` method throws + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,get_to} + + @since version 3.3.0 + */ + template < typename ValueType, + detail::enable_if_t < + !detail::is_basic_json::value&& + detail::has_from_json::value, + int > = 0 > + ValueType& get_to(ValueType& v) const noexcept(noexcept( + JSONSerializer::from_json(std::declval(), v))) + { + JSONSerializer::from_json(*this, v); + return v; + } + + // specialization to allow to call get_to with a basic_json value + // see https://github.com/nlohmann/json/issues/2175 + template::value, + int> = 0> + ValueType& get_to(ValueType& v) const + { + v = *this; + return v; + } + + template < + typename T, std::size_t N, + typename Array = T(&)[N], // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + detail::enable_if_t < + detail::has_from_json::value, int > = 0 > + Array get_to(T(&v)[N]) const // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + noexcept(noexcept(JSONSerializer::from_json( + std::declval(), v))) + { + JSONSerializer::from_json(*this, v); + return v; + } + + /*! + @brief get a reference value (implicit) + + Implicit reference access to the internally stored JSON value. No copies + are made. + + @warning Writing data to the referee of the result yields an undefined + state. + + @tparam ReferenceType reference type; must be a reference to @ref array_t, + @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or + @ref number_float_t. Enforced by static assertion. + + @return reference to the internally stored JSON value if the requested + reference type @a ReferenceType fits to the JSON value; throws + type_error.303 otherwise + + @throw type_error.303 in case passed type @a ReferenceType is incompatible + with the stored JSON value; see example below + + @complexity Constant. + + @liveexample{The example shows several calls to `get_ref()`.,get_ref} + + @since version 1.1.0 + */ + template::value, int>::type = 0> + ReferenceType get_ref() + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a reference value (implicit) + @copydoc get_ref() + */ + template < typename ReferenceType, typename std::enable_if < + std::is_reference::value&& + std::is_const::type>::value, int >::type = 0 > + ReferenceType get_ref() const + { + // delegate call to get_ref_impl + return get_ref_impl(*this); + } + + /*! + @brief get a value (implicit) + + Implicit type conversion between the JSON value and a compatible value. + The call is realized by calling @ref get() const. + + @tparam ValueType non-pointer type compatible to the JSON value, for + instance `int` for JSON integer numbers, `bool` for JSON booleans, or + `std::vector` types for JSON arrays. The character type of @ref string_t + as well as an initializer list of this type is excluded to avoid + ambiguities as these types implicitly convert to `std::string`. + + @return copy of the JSON value, converted to type @a ValueType + + @throw type_error.302 in case passed type @a ValueType is incompatible + to the JSON value type (e.g., the JSON value is of type boolean, but a + string is requested); see example below + + @complexity Linear in the size of the JSON value. + + @liveexample{The example below shows several conversions from JSON values + to other types. There a few things to note: (1) Floating-point numbers can + be converted to integers\, (2) A JSON array can be converted to a standard + `std::vector`\, (3) A JSON object can be converted to C++ + associative containers such as `std::unordered_map`.,operator__ValueType} + + @since version 1.0.0 + */ + template < typename ValueType, typename std::enable_if < + detail::conjunction < + detail::negation>, + detail::negation>>, + detail::negation>, + detail::negation>, + detail::negation>>, + +#if defined(JSON_HAS_CPP_17) && (defined(__GNUC__) || (defined(_MSC_VER) && _MSC_VER >= 1910 && _MSC_VER <= 1914)) + detail::negation>, +#endif + detail::is_detected_lazy + >::value, int >::type = 0 > + JSON_EXPLICIT operator ValueType() const + { + // delegate the call to get<>() const + return get(); + } + + /*! + @return reference to the binary value + + @throw type_error.302 if the value is not binary + + @sa see @ref is_binary() to check if the value is binary + + @since version 3.8.0 + */ + binary_t& get_binary() + { + if (!is_binary()) + { + JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name()), *this)); + } + + return *get_ptr(); + } + + /// @copydoc get_binary() + const binary_t& get_binary() const + { + if (!is_binary()) + { + JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(type_name()), *this)); + } + + return *get_ptr(); + } + + /// @} + + + //////////////////// + // element access // + //////////////////// + + /// @name element access + /// Access to the JSON value. + /// @{ + + /*! + @brief access specified array element with bounds checking + + Returns a reference to the element at specified location @a idx, with + bounds checking. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__size_type} + */ + reference at(size_type idx) + { + // at only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + JSON_TRY + { + return set_parent(m_value.array->at(idx)); + } + JSON_CATCH(std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief access specified array element with bounds checking + + Returns a const reference to the element at specified location @a idx, + with bounds checking. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.304 if the JSON value is not an array; in this case, + calling `at` with an index makes no sense. See example below. + @throw out_of_range.401 if the index @a idx is out of range of the array; + that is, `idx >= size()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 1.0.0 + + @liveexample{The example below shows how array elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__size_type_const} + */ + const_reference at(size_type idx) const + { + // at only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + JSON_TRY + { + return m_value.array->at(idx); + } + JSON_CATCH(std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a reference to the element at with specified key @a key, with + bounds checking. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa see @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa see @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read and + written using `at()`. It also demonstrates the different exceptions that + can be thrown.,at__object_t_key_type} + */ + reference at(const typename object_t::key_type& key) + { + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + JSON_TRY + { + return set_parent(m_value.object->at(key)); + } + JSON_CATCH(std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found", *this)); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief access specified object element with bounds checking + + Returns a const reference to the element at with specified key @a key, + with bounds checking. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @throw type_error.304 if the JSON value is not an object; in this case, + calling `at` with a key makes no sense. See example below. + @throw out_of_range.403 if the key @a key is is not stored in the object; + that is, `find(key) == end()`. See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Logarithmic in the size of the container. + + @sa see @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + @sa see @ref value() for access by value with a default value + + @since version 1.0.0 + + @liveexample{The example below shows how object elements can be read using + `at()`. It also demonstrates the different exceptions that can be thrown., + at__object_t_key_type_const} + */ + const_reference at(const typename object_t::key_type& key) const + { + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + JSON_TRY + { + return m_value.object->at(key); + } + JSON_CATCH(std::out_of_range&) + { + // create better exception explanation + JSON_THROW(out_of_range::create(403, "key '" + key + "' not found", *this)); + } + } + else + { + JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief access specified array element + + Returns a reference to the element at specified location @a idx. + + @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), + then the array is silently filled up with `null` values to make `idx` a + valid reference to the last stored element. + + @param[in] idx index of the element to access + + @return reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array or null; in that + cases, using the [] operator with an index makes no sense. + + @complexity Constant if @a idx is in the range of the array. Otherwise + linear in `idx - size()`. + + @liveexample{The example below shows how array elements can be read and + written using `[]` operator. Note the addition of `null` + values.,operatorarray__size_type} + + @since version 1.0.0 + */ + reference operator[](size_type idx) + { + // implicitly convert null value to an empty array + if (is_null()) + { + m_type = value_t::array; + m_value.array = create(); + assert_invariant(); + } + + // operator[] only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + // fill up array with null values if given idx is outside range + if (idx >= m_value.array->size()) + { +#if JSON_DIAGNOSTICS + // remember array size before resizing + const auto previous_size = m_value.array->size(); +#endif + m_value.array->resize(idx + 1); + +#if JSON_DIAGNOSTICS + // set parent for values added above + set_parents(begin() + static_cast(previous_size), static_cast(idx + 1 - previous_size)); +#endif + } + + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()), *this)); + } + + /*! + @brief access specified array element + + Returns a const reference to the element at specified location @a idx. + + @param[in] idx index of the element to access + + @return const reference to the element at index @a idx + + @throw type_error.305 if the JSON value is not an array; in that case, + using the [] operator with an index makes no sense. + + @complexity Constant. + + @liveexample{The example below shows how array elements can be read using + the `[]` operator.,operatorarray__size_type_const} + + @since version 1.0.0 + */ + const_reference operator[](size_type idx) const + { + // const operator[] only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + return m_value.array->operator[](idx); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a numeric argument with " + std::string(type_name()), *this)); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa see @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa see @ref value() for access by value with a default value + + @since version 1.0.0 + */ + reference operator[](const typename object_t::key_type& key) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + // operator[] only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + return set_parent(m_value.object->operator[](key)); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa see @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa see @ref value() for access by value with a default value + + @since version 1.0.0 + */ + const_reference operator[](const typename object_t::key_type& key) const + { + // const operator[] only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + JSON_ASSERT(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); + } + + /*! + @brief access specified object element + + Returns a reference to the element at with specified key @a key. + + @note If @a key is not found in the object, then it is silently added to + the object and filled with a `null` value to make `key` a valid reference. + In case the value was `null` before, it is converted to an object. + + @param[in] key key of the element to access + + @return reference to the element at key @a key + + @throw type_error.305 if the JSON value is not an object or null; in that + cases, using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read and + written using the `[]` operator.,operatorarray__key_type} + + @sa see @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa see @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + JSON_HEDLEY_NON_NULL(2) + reference operator[](T* key) + { + // implicitly convert null to object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + return set_parent(m_value.object->operator[](key)); + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); + } + + /*! + @brief read-only access specified object element + + Returns a const reference to the element at with specified key @a key. No + bounds checking is performed. + + @warning If the element with key @a key does not exist, the behavior is + undefined. + + @param[in] key key of the element to access + + @return const reference to the element at key @a key + + @pre The element with key @a key must exist. **This precondition is + enforced with an assertion.** + + @throw type_error.305 if the JSON value is not an object; in that case, + using the [] operator with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be read using + the `[]` operator.,operatorarray__key_type_const} + + @sa see @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa see @ref value() for access by value with a default value + + @since version 1.1.0 + */ + template + JSON_HEDLEY_NON_NULL(2) + const_reference operator[](T* key) const + { + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + JSON_ASSERT(m_value.object->find(key) != m_value.object->end()); + return m_value.object->find(key)->second; + } + + JSON_THROW(type_error::create(305, "cannot use operator[] with a string argument with " + std::string(type_name()), *this)); + } + + /*! + @brief access specified object element with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(key); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const typename object_t::key_type&), this function + does not throw if the given key @a key was not found. + + @note Unlike @ref operator[](const typename object_t::key_type& key), this + function does not implicitly add an element to the position defined by @a + key. This function is furthermore also applicable to const objects. + + @param[in] key key of the element to access + @param[in] default_value the value to return if @a key is not found + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.302 if @a default_value does not match the type of the + value at @a key + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value} + + @sa see @ref at(const typename object_t::key_type&) for access by reference + with range checking + @sa see @ref operator[](const typename object_t::key_type&) for unchecked + access by reference + + @since version 1.0.0 + */ + // using std::is_convertible in a std::enable_if will fail when using explicit conversions + template < class ValueType, typename std::enable_if < + detail::is_getable::value + && !std::is_same::value, int >::type = 0 > + ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const + { + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + // if key is found, return value and given default value otherwise + const auto it = find(key); + if (it != end()) + { + return it->template get(); + } + + return default_value; + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()), *this)); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const typename object_t::key_type&, const ValueType&) const + */ + string_t value(const typename object_t::key_type& key, const char* default_value) const + { + return value(key, string_t(default_value)); + } + + /*! + @brief access specified object element via JSON Pointer with default value + + Returns either a copy of an object's element at the specified key @a key + or a given default value if no element with key @a key exists. + + The function is basically equivalent to executing + @code {.cpp} + try { + return at(ptr); + } catch(out_of_range) { + return default_value; + } + @endcode + + @note Unlike @ref at(const json_pointer&), this function does not throw + if the given key @a key was not found. + + @param[in] ptr a JSON pointer to the element to access + @param[in] default_value the value to return if @a ptr found no value + + @tparam ValueType type compatible to JSON values, for instance `int` for + JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for + JSON arrays. Note the type of the expected value at @a key and the default + value @a default_value must be compatible. + + @return copy of the element at key @a key or @a default_value if @a key + is not found + + @throw type_error.302 if @a default_value does not match the type of the + value at @a ptr + @throw type_error.306 if the JSON value is not an object; in that case, + using `value()` with a key makes no sense. + + @complexity Logarithmic in the size of the container. + + @liveexample{The example below shows how object elements can be queried + with a default value.,basic_json__value_ptr} + + @sa see @ref operator[](const json_pointer&) for unchecked access by reference + + @since version 2.0.2 + */ + template::value, int>::type = 0> + ValueType value(const json_pointer& ptr, const ValueType& default_value) const + { + // at only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + // if pointer resolves a value, return it or use default value + JSON_TRY + { + return ptr.get_checked(this).template get(); + } + JSON_INTERNAL_CATCH(out_of_range&) + { + return default_value; + } + } + + JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()), *this)); + } + + /*! + @brief overload for a default value of type const char* + @copydoc basic_json::value(const json_pointer&, ValueType) const + */ + JSON_HEDLEY_NON_NULL(3) + string_t value(const json_pointer& ptr, const char* default_value) const + { + return value(ptr, string_t(default_value)); + } + + /*! + @brief access the first element + + Returns a reference to the first element in the container. For a JSON + container `c`, the expression `c.front()` is equivalent to `*c.begin()`. + + @return In case of a structured type (array or object), a reference to the + first element is returned. In case of number, string, boolean, or binary + values, a reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on `null` value + + @liveexample{The following code shows an example for `front()`.,front} + + @sa see @ref back() -- access the last element + + @since version 1.0.0 + */ + reference front() + { + return *begin(); + } + + /*! + @copydoc basic_json::front() + */ + const_reference front() const + { + return *cbegin(); + } + + /*! + @brief access the last element + + Returns a reference to the last element in the container. For a JSON + container `c`, the expression `c.back()` is equivalent to + @code {.cpp} + auto tmp = c.end(); + --tmp; + return *tmp; + @endcode + + @return In case of a structured type (array or object), a reference to the + last element is returned. In case of number, string, boolean, or binary + values, a reference to the value is returned. + + @complexity Constant. + + @pre The JSON value must not be `null` (would throw `std::out_of_range`) + or an empty array or object (undefined behavior, **guarded by + assertions**). + @post The JSON value remains unchanged. + + @throw invalid_iterator.214 when called on a `null` value. See example + below. + + @liveexample{The following code shows an example for `back()`.,back} + + @sa see @ref front() -- access the first element + + @since version 1.0.0 + */ + reference back() + { + auto tmp = end(); + --tmp; + return *tmp; + } + + /*! + @copydoc basic_json::back() + */ + const_reference back() const + { + auto tmp = cend(); + --tmp; + return *tmp; + } + + /*! + @brief remove element given an iterator + + Removes the element specified by iterator @a pos. The iterator @a pos must + be valid and dereferenceable. Thus the `end()` iterator (which is valid, + but is not dereferenceable) cannot be used as a value for @a pos. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] pos iterator to the element to remove + @return Iterator following the last removed element. If the iterator @a + pos refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.202 if called on an iterator which does not belong + to the current JSON value; example: `"iterator does not fit current + value"` + @throw invalid_iterator.205 if called on a primitive type with invalid + iterator (i.e., any iterator which is not `begin()`); example: `"iterator + out of range"` + + @complexity The complexity depends on the type: + - objects: amortized constant + - arrays: linear in distance between @a pos and the end of the container + - strings and binary: linear in the length of the member + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType} + + @sa see @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa see @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa see @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template < class IteratorType, typename std::enable_if < + std::is_same::value || + std::is_same::value, int >::type + = 0 > + IteratorType erase(IteratorType pos) + { + // make sure iterator fits the current value + if (JSON_HEDLEY_UNLIKELY(this != pos.m_object)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + case value_t::binary: + { + if (JSON_HEDLEY_UNLIKELY(!pos.m_it.primitive_iterator.is_begin())) + { + JSON_THROW(invalid_iterator::create(205, "iterator out of range", *this)); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + else if (is_binary()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.binary); + std::allocator_traits::deallocate(alloc, m_value.binary, 1); + m_value.binary = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); + break; + } + + case value_t::null: + case value_t::discarded: + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); + } + + return result; + } + + /*! + @brief remove elements given an iterator range + + Removes the element specified by the range `[first; last)`. The iterator + @a first does not need to be dereferenceable if `first == last`: erasing + an empty range is a no-op. + + If called on a primitive type other than `null`, the resulting JSON value + will be `null`. + + @param[in] first iterator to the beginning of the range to remove + @param[in] last iterator past the end of the range to remove + @return Iterator following the last removed element. If the iterator @a + second refers to the last element, the `end()` iterator is returned. + + @tparam IteratorType an @ref iterator or @ref const_iterator + + @post Invalidates iterators and references at or after the point of the + erase, including the `end()` iterator. + + @throw type_error.307 if called on a `null` value; example: `"cannot use + erase() with null"` + @throw invalid_iterator.203 if called on iterators which does not belong + to the current JSON value; example: `"iterators do not fit current value"` + @throw invalid_iterator.204 if called on a primitive type with invalid + iterators (i.e., if `first != begin()` and `last != end()`); example: + `"iterators out of range"` + + @complexity The complexity depends on the type: + - objects: `log(size()) + std::distance(first, last)` + - arrays: linear in the distance between @a first and @a last, plus linear + in the distance between @a last and end of the container + - strings and binary: linear in the length of the member + - other types: constant + + @liveexample{The example shows the result of `erase()` for different JSON + types.,erase__IteratorType_IteratorType} + + @sa see @ref erase(IteratorType) -- removes the element at a given position + @sa see @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + @sa see @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + template < class IteratorType, typename std::enable_if < + std::is_same::value || + std::is_same::value, int >::type + = 0 > + IteratorType erase(IteratorType first, IteratorType last) + { + // make sure iterator fits the current value + if (JSON_HEDLEY_UNLIKELY(this != first.m_object || this != last.m_object)) + { + JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value", *this)); + } + + IteratorType result = end(); + + switch (m_type) + { + case value_t::boolean: + case value_t::number_float: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::string: + case value_t::binary: + { + if (JSON_HEDLEY_LIKELY(!first.m_it.primitive_iterator.is_begin() + || !last.m_it.primitive_iterator.is_end())) + { + JSON_THROW(invalid_iterator::create(204, "iterators out of range", *this)); + } + + if (is_string()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.string); + std::allocator_traits::deallocate(alloc, m_value.string, 1); + m_value.string = nullptr; + } + else if (is_binary()) + { + AllocatorType alloc; + std::allocator_traits::destroy(alloc, m_value.binary); + std::allocator_traits::deallocate(alloc, m_value.binary, 1); + m_value.binary = nullptr; + } + + m_type = value_t::null; + assert_invariant(); + break; + } + + case value_t::object: + { + result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, + last.m_it.object_iterator); + break; + } + + case value_t::array: + { + result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, + last.m_it.array_iterator); + break; + } + + case value_t::null: + case value_t::discarded: + default: + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); + } + + return result; + } + + /*! + @brief remove element from a JSON object given a key + + Removes elements from a JSON object with the key value @a key. + + @param[in] key value of the elements to remove + + @return Number of elements removed. If @a ObjectType is the default + `std::map` type, the return value will always be `0` (@a key was not + found) or `1` (@a key was found). + + @post References and iterators to the erased elements are invalidated. + Other references and iterators are not affected. + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + + @complexity `log(size()) + count(key)` + + @liveexample{The example shows the effect of `erase()`.,erase__key_type} + + @sa see @ref erase(IteratorType) -- removes the element at a given position + @sa see @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa see @ref erase(const size_type) -- removes the element from an array at + the given index + + @since version 1.0.0 + */ + size_type erase(const typename object_t::key_type& key) + { + // this erase only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + return m_value.object->erase(key); + } + + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); + } + + /*! + @brief remove element from a JSON array given an index + + Removes element from a JSON array at the index @a idx. + + @param[in] idx index of the element to remove + + @throw type_error.307 when called on a type other than JSON object; + example: `"cannot use erase() with null"` + @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 + is out of range"` + + @complexity Linear in distance between @a idx and the end of the container. + + @liveexample{The example shows the effect of `erase()`.,erase__size_type} + + @sa see @ref erase(IteratorType) -- removes the element at a given position + @sa see @ref erase(IteratorType, IteratorType) -- removes the elements in + the given range + @sa see @ref erase(const typename object_t::key_type&) -- removes the element + from an object at the given key + + @since version 1.0.0 + */ + void erase(const size_type idx) + { + // this erase only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + if (JSON_HEDLEY_UNLIKELY(idx >= size())) + { + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", *this)); + } + + m_value.array->erase(m_value.array->begin() + static_cast(idx)); + } + else + { + JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()), *this)); + } + } + + /// @} + + + //////////// + // lookup // + //////////// + + /// @name lookup + /// @{ + + /*! + @brief find an element in a JSON object + + Finds an element in a JSON object with key equivalent to @a key. If the + element is not found or the JSON value is not an object, end() is + returned. + + @note This method always returns @ref end() when executed on a JSON type + that is not an object. + + @param[in] key key value of the element to search for. + + @return Iterator to an element with key equivalent to @a key. If no such + element is found or the JSON value is not an object, past-the-end (see + @ref end()) iterator is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `find()` is used.,find__key_type} + + @sa see @ref contains(KeyT&&) const -- checks whether a key exists + + @since version 1.0.0 + */ + template + iterator find(KeyT&& key) + { + auto result = end(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief find an element in a JSON object + @copydoc find(KeyT&&) + */ + template + const_iterator find(KeyT&& key) const + { + auto result = cend(); + + if (is_object()) + { + result.m_it.object_iterator = m_value.object->find(std::forward(key)); + } + + return result; + } + + /*! + @brief returns the number of occurrences of a key in a JSON object + + Returns the number of elements with key @a key. If ObjectType is the + default `std::map` type, the return value will always be `0` (@a key was + not found) or `1` (@a key was found). + + @note This method always returns `0` when executed on a JSON type that is + not an object. + + @param[in] key key value of the element to count + + @return Number of elements with key @a key. If the JSON value is not an + object, the return value will be `0`. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The example shows how `count()` is used.,count} + + @since version 1.0.0 + */ + template + size_type count(KeyT&& key) const + { + // return 0 for all nonobject types + return is_object() ? m_value.object->count(std::forward(key)) : 0; + } + + /*! + @brief check the existence of an element in a JSON object + + Check whether an element exists in a JSON object with key equivalent to + @a key. If the element is not found or the JSON value is not an object, + false is returned. + + @note This method always returns false when executed on a JSON type + that is not an object. + + @param[in] key key value to check its existence. + + @return true if an element with specified @a key exists. If no such + element with such key is found or the JSON value is not an object, + false is returned. + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The following code shows an example for `contains()`.,contains} + + @sa see @ref find(KeyT&&) -- returns an iterator to an object element + @sa see @ref contains(const json_pointer&) const -- checks the existence for a JSON pointer + + @since version 3.6.0 + */ + template < typename KeyT, typename std::enable_if < + !std::is_same::type, json_pointer>::value, int >::type = 0 > + bool contains(KeyT&& key) const + { + return is_object() && m_value.object->find(std::forward(key)) != m_value.object->end(); + } + + /*! + @brief check the existence of an element in a JSON object given a JSON pointer + + Check whether the given JSON pointer @a ptr can be resolved in the current + JSON value. + + @note This method can be executed on any JSON value type. + + @param[in] ptr JSON pointer to check its existence. + + @return true if the JSON pointer can be resolved to a stored value, false + otherwise. + + @post If `j.contains(ptr)` returns true, it is safe to call `j[ptr]`. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + + @complexity Logarithmic in the size of the JSON object. + + @liveexample{The following code shows an example for `contains()`.,contains_json_pointer} + + @sa see @ref contains(KeyT &&) const -- checks the existence of a key + + @since version 3.7.0 + */ + bool contains(const json_pointer& ptr) const + { + return ptr.contains(this); + } + + /// @} + + + /////////////// + // iterators // + /////////////// + + /// @name iterators + /// @{ + + /*! + @brief returns an iterator to the first element + + Returns an iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `begin()`.,begin} + + @sa see @ref cbegin() -- returns a const iterator to the beginning + @sa see @ref end() -- returns an iterator to the end + @sa see @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + iterator begin() noexcept + { + iterator result(this); + result.set_begin(); + return result; + } + + /*! + @copydoc basic_json::cbegin() + */ + const_iterator begin() const noexcept + { + return cbegin(); + } + + /*! + @brief returns a const iterator to the first element + + Returns a const iterator to the first element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator to the first element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).begin()`. + + @liveexample{The following code shows an example for `cbegin()`.,cbegin} + + @sa see @ref begin() -- returns an iterator to the beginning + @sa see @ref end() -- returns an iterator to the end + @sa see @ref cend() -- returns a const iterator to the end + + @since version 1.0.0 + */ + const_iterator cbegin() const noexcept + { + const_iterator result(this); + result.set_begin(); + return result; + } + + /*! + @brief returns an iterator to one past the last element + + Returns an iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + + @liveexample{The following code shows an example for `end()`.,end} + + @sa see @ref cend() -- returns a const iterator to the end + @sa see @ref begin() -- returns an iterator to the beginning + @sa see @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + iterator end() noexcept + { + iterator result(this); + result.set_end(); + return result; + } + + /*! + @copydoc basic_json::cend() + */ + const_iterator end() const noexcept + { + return cend(); + } + + /*! + @brief returns a const iterator to one past the last element + + Returns a const iterator to one past the last element. + + @image html range-begin-end.svg "Illustration from cppreference.com" + + @return const iterator one past the last element + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).end()`. + + @liveexample{The following code shows an example for `cend()`.,cend} + + @sa see @ref end() -- returns an iterator to the end + @sa see @ref begin() -- returns an iterator to the beginning + @sa see @ref cbegin() -- returns a const iterator to the beginning + + @since version 1.0.0 + */ + const_iterator cend() const noexcept + { + const_iterator result(this); + result.set_end(); + return result; + } + + /*! + @brief returns an iterator to the reverse-beginning + + Returns an iterator to the reverse-beginning; that is, the last element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(end())`. + + @liveexample{The following code shows an example for `rbegin()`.,rbegin} + + @sa see @ref crbegin() -- returns a const reverse iterator to the beginning + @sa see @ref rend() -- returns a reverse iterator to the end + @sa see @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + reverse_iterator rbegin() noexcept + { + return reverse_iterator(end()); + } + + /*! + @copydoc basic_json::crbegin() + */ + const_reverse_iterator rbegin() const noexcept + { + return crbegin(); + } + + /*! + @brief returns an iterator to the reverse-end + + Returns an iterator to the reverse-end; that is, one before the first + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `reverse_iterator(begin())`. + + @liveexample{The following code shows an example for `rend()`.,rend} + + @sa see @ref crend() -- returns a const reverse iterator to the end + @sa see @ref rbegin() -- returns a reverse iterator to the beginning + @sa see @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + reverse_iterator rend() noexcept + { + return reverse_iterator(begin()); + } + + /*! + @copydoc basic_json::crend() + */ + const_reverse_iterator rend() const noexcept + { + return crend(); + } + + /*! + @brief returns a const reverse iterator to the last element + + Returns a const iterator to the reverse-beginning; that is, the last + element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rbegin()`. + + @liveexample{The following code shows an example for `crbegin()`.,crbegin} + + @sa see @ref rbegin() -- returns a reverse iterator to the beginning + @sa see @ref rend() -- returns a reverse iterator to the end + @sa see @ref crend() -- returns a const reverse iterator to the end + + @since version 1.0.0 + */ + const_reverse_iterator crbegin() const noexcept + { + return const_reverse_iterator(cend()); + } + + /*! + @brief returns a const reverse iterator to one before the first + + Returns a const reverse iterator to the reverse-end; that is, one before + the first element. + + @image html range-rbegin-rend.svg "Illustration from cppreference.com" + + @complexity Constant. + + @requirement This function helps `basic_json` satisfying the + [ReversibleContainer](https://en.cppreference.com/w/cpp/named_req/ReversibleContainer) + requirements: + - The complexity is constant. + - Has the semantics of `const_cast(*this).rend()`. + + @liveexample{The following code shows an example for `crend()`.,crend} + + @sa see @ref rend() -- returns a reverse iterator to the end + @sa see @ref rbegin() -- returns a reverse iterator to the beginning + @sa see @ref crbegin() -- returns a const reverse iterator to the beginning + + @since version 1.0.0 + */ + const_reverse_iterator crend() const noexcept + { + return const_reverse_iterator(cbegin()); + } + + public: + /*! + @brief wrapper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without iterator_wrapper: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without iterator proxy: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with iterator proxy: + + @code{cpp} + for (auto it : json::iterator_wrapper(j_object)) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). + + @param[in] ref reference to a JSON value + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the wrapper is used,iterator_wrapper} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @note The name of this function is not yet final and may change in the + future. + + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use @ref items() instead; + that is, replace `json::iterator_wrapper(j)` with `j.items()`. + */ + JSON_HEDLEY_DEPRECATED_FOR(3.1.0, items()) + static iteration_proxy iterator_wrapper(reference ref) noexcept + { + return ref.items(); + } + + /*! + @copydoc iterator_wrapper(reference) + */ + JSON_HEDLEY_DEPRECATED_FOR(3.1.0, items()) + static iteration_proxy iterator_wrapper(const_reference ref) noexcept + { + return ref.items(); + } + + /*! + @brief helper to access iterator member functions in range-based for + + This function allows to access @ref iterator::key() and @ref + iterator::value() during range-based for loops. In these loops, a + reference to the JSON values is returned, so there is no access to the + underlying iterator. + + For loop without `items()` function: + + @code{cpp} + for (auto it = j_object.begin(); it != j_object.end(); ++it) + { + std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; + } + @endcode + + Range-based for loop without `items()` function: + + @code{cpp} + for (auto it : j_object) + { + // "it" is of type json::reference and has no key() member + std::cout << "value: " << it << '\n'; + } + @endcode + + Range-based for loop with `items()` function: + + @code{cpp} + for (auto& el : j_object.items()) + { + std::cout << "key: " << el.key() << ", value:" << el.value() << '\n'; + } + @endcode + + The `items()` function also allows to use + [structured bindings](https://en.cppreference.com/w/cpp/language/structured_binding) + (C++17): + + @code{cpp} + for (auto& [key, val] : j_object.items()) + { + std::cout << "key: " << key << ", value:" << val << '\n'; + } + @endcode + + @note When iterating over an array, `key()` will return the index of the + element as string (see example). For primitive types (e.g., numbers), + `key()` returns an empty string. + + @warning Using `items()` on temporary objects is dangerous. Make sure the + object's lifetime exeeds the iteration. See + for more + information. + + @return iteration proxy object wrapping @a ref with an interface to use in + range-based for loops + + @liveexample{The following code shows how the function is used.,items} + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 3.1.0, structured bindings support since 3.5.0. + */ + iteration_proxy items() noexcept + { + return iteration_proxy(*this); + } + + /*! + @copydoc items() + */ + iteration_proxy items() const noexcept + { + return iteration_proxy(*this); + } + + /// @} + + + ////////////// + // capacity // + ////////////// + + /// @name capacity + /// @{ + + /*! + @brief checks whether the container is empty. + + Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `true` + boolean | `false` + string | `false` + number | `false` + binary | `false` + object | result of function `object_t::empty()` + array | result of function `array_t::empty()` + + @liveexample{The following code uses `empty()` to check if a JSON + object contains any elements.,empty} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `empty()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return whether a string stored as JSON value + is empty - it returns whether the JSON container itself is empty which is + false in the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `begin() == end()`. + + @sa see @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + bool empty() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return true; + } + + case value_t::array: + { + // delegate call to array_t::empty() + return m_value.array->empty(); + } + + case value_t::object: + { + // delegate call to object_t::empty() + return m_value.object->empty(); + } + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + // all other types are nonempty + return false; + } + } + } + + /*! + @brief returns the number of elements + + Returns the number of elements in a JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` + boolean | `1` + string | `1` + number | `1` + binary | `1` + object | result of function object_t::size() + array | result of function array_t::size() + + @liveexample{The following code calls `size()` on the different value + types.,size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their size() functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @note This function does not return the length of a string stored as JSON + value - it returns the number of elements in the JSON value which is 1 in + the case of a string. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of `std::distance(begin(), end())`. + + @sa see @ref empty() -- checks whether the container is empty + @sa see @ref max_size() -- returns the maximal number of elements + + @since version 1.0.0 + */ + size_type size() const noexcept + { + switch (m_type) + { + case value_t::null: + { + // null values are empty + return 0; + } + + case value_t::array: + { + // delegate call to array_t::size() + return m_value.array->size(); + } + + case value_t::object: + { + // delegate call to object_t::size() + return m_value.object->size(); + } + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + // all other types have size 1 + return 1; + } + } + } + + /*! + @brief returns the maximum possible number of elements + + Returns the maximum number of elements a JSON value is able to hold due to + system or library implementation limitations, i.e. `std::distance(begin(), + end())` for the JSON value. + + @return The return value depends on the different types and is + defined as follows: + Value type | return value + ----------- | ------------- + null | `0` (same as `size()`) + boolean | `1` (same as `size()`) + string | `1` (same as `size()`) + number | `1` (same as `size()`) + binary | `1` (same as `size()`) + object | result of function `object_t::max_size()` + array | result of function `array_t::max_size()` + + @liveexample{The following code calls `max_size()` on the different value + types. Note the output is implementation specific.,max_size} + + @complexity Constant, as long as @ref array_t and @ref object_t satisfy + the Container concept; that is, their `max_size()` functions have constant + complexity. + + @iterators No changes. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @requirement This function helps `basic_json` satisfying the + [Container](https://en.cppreference.com/w/cpp/named_req/Container) + requirements: + - The complexity is constant. + - Has the semantics of returning `b.size()` where `b` is the largest + possible JSON value. + + @sa see @ref size() -- returns the number of elements + + @since version 1.0.0 + */ + size_type max_size() const noexcept + { + switch (m_type) + { + case value_t::array: + { + // delegate call to array_t::max_size() + return m_value.array->max_size(); + } + + case value_t::object: + { + // delegate call to object_t::max_size() + return m_value.object->max_size(); + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + // all other types have max_size() == size() + return size(); + } + } + } + + /// @} + + + /////////////// + // modifiers // + /////////////// + + /// @name modifiers + /// @{ + + /*! + @brief clears the contents + + Clears the content of a JSON value and resets it to the default value as + if @ref basic_json(value_t) would have been called with the current value + type from @ref type(): + + Value type | initial value + ----------- | ------------- + null | `null` + boolean | `false` + string | `""` + number | `0` + binary | An empty byte vector + object | `{}` + array | `[]` + + @post Has the same effect as calling + @code {.cpp} + *this = basic_json(type()); + @endcode + + @liveexample{The example below shows the effect of `clear()` to different + JSON types.,clear} + + @complexity Linear in the size of the JSON value. + + @iterators All iterators, pointers and references related to this container + are invalidated. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @sa see @ref basic_json(value_t) -- constructor that creates an object with the + same value than calling `clear()` + + @since version 1.0.0 + */ + void clear() noexcept + { + switch (m_type) + { + case value_t::number_integer: + { + m_value.number_integer = 0; + break; + } + + case value_t::number_unsigned: + { + m_value.number_unsigned = 0; + break; + } + + case value_t::number_float: + { + m_value.number_float = 0.0; + break; + } + + case value_t::boolean: + { + m_value.boolean = false; + break; + } + + case value_t::string: + { + m_value.string->clear(); + break; + } + + case value_t::binary: + { + m_value.binary->clear(); + break; + } + + case value_t::array: + { + m_value.array->clear(); + break; + } + + case value_t::object: + { + m_value.object->clear(); + break; + } + + case value_t::null: + case value_t::discarded: + default: + break; + } + } + + /*! + @brief add an object to an array + + Appends the given element @a val to the end of the JSON value. If the + function is called on a JSON null value, an empty array is created before + appending @a val. + + @param[in] val the value to add to the JSON array + + @throw type_error.308 when called on a type other than JSON array or + null; example: `"cannot use push_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON array. Note how the `null` value was silently + converted to a JSON array.,push_back} + + @since version 1.0.0 + */ + void push_back(basic_json&& val) + { + // push_back only works for null objects or arrays + if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (move semantics) + const auto old_capacity = m_value.array->capacity(); + m_value.array->push_back(std::move(val)); + set_parent(m_value.array->back(), old_capacity); + // if val is moved from, basic_json move constructor marks it null so we do not call the destructor + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(basic_json&& val) + { + push_back(std::move(val)); + return *this; + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + void push_back(const basic_json& val) + { + // push_back only works for null objects or arrays + if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array + const auto old_capacity = m_value.array->capacity(); + m_value.array->push_back(val); + set_parent(m_value.array->back(), old_capacity); + } + + /*! + @brief add an object to an array + @copydoc push_back(basic_json&&) + */ + reference operator+=(const basic_json& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + Inserts the given element @a val to the JSON object. If the function is + called on a JSON null value, an empty object is created before inserting + @a val. + + @param[in] val the value to add to the JSON object + + @throw type_error.308 when called on a type other than JSON object or + null; example: `"cannot use push_back() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `push_back()` and `+=` can be used to + add elements to a JSON object. Note how the `null` value was silently + converted to a JSON object.,push_back__object_t__value} + + @since version 1.0.0 + */ + void push_back(const typename object_t::value_type& val) + { + // push_back only works for null objects or objects + if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object()))) + { + JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()), *this)); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to object + auto res = m_value.object->insert(val); + set_parent(res.first->second); + } + + /*! + @brief add an object to an object + @copydoc push_back(const typename object_t::value_type&) + */ + reference operator+=(const typename object_t::value_type& val) + { + push_back(val); + return *this; + } + + /*! + @brief add an object to an object + + This function allows to use `push_back` with an initializer list. In case + + 1. the current value is an object, + 2. the initializer list @a init contains only two elements, and + 3. the first element of @a init is a string, + + @a init is converted into an object element and added using + @ref push_back(const typename object_t::value_type&). Otherwise, @a init + is converted to a JSON value and added using @ref push_back(basic_json&&). + + @param[in] init an initializer list + + @complexity Linear in the size of the initializer list @a init. + + @note This function is required to resolve an ambiguous overload error, + because pairs like `{"key", "value"}` can be both interpreted as + `object_t::value_type` or `std::initializer_list`, see + https://github.com/nlohmann/json/issues/235 for more information. + + @liveexample{The example shows how initializer lists are treated as + objects when possible.,push_back__initializer_list} + */ + void push_back(initializer_list_t init) + { + if (is_object() && init.size() == 2 && (*init.begin())->is_string()) + { + basic_json&& key = init.begin()->moved_or_copied(); + push_back(typename object_t::value_type( + std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); + } + else + { + push_back(basic_json(init)); + } + } + + /*! + @brief add an object to an object + @copydoc push_back(initializer_list_t) + */ + reference operator+=(initializer_list_t init) + { + push_back(init); + return *this; + } + + /*! + @brief add an object to an array + + Creates a JSON value from the passed parameters @a args to the end of the + JSON value. If the function is called on a JSON null value, an empty array + is created before appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @return reference to the inserted element + + @throw type_error.311 when called on a type other than JSON array or + null; example: `"cannot use emplace_back() with number"` + + @complexity Amortized constant. + + @liveexample{The example shows how `push_back()` can be used to add + elements to a JSON array. Note how the `null` value was silently converted + to a JSON array.,emplace_back} + + @since version 2.0.8, returns reference since 3.7.0 + */ + template + reference emplace_back(Args&& ... args) + { + // emplace_back only works for null objects or arrays + if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_array()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()), *this)); + } + + // transform null object into an array + if (is_null()) + { + m_type = value_t::array; + m_value = value_t::array; + assert_invariant(); + } + + // add element to array (perfect forwarding) + const auto old_capacity = m_value.array->capacity(); + m_value.array->emplace_back(std::forward(args)...); + return set_parent(m_value.array->back(), old_capacity); + } + + /*! + @brief add an object to an object if key does not exist + + Inserts a new element into a JSON object constructed in-place with the + given @a args if there is no element with the key in the container. If the + function is called on a JSON null value, an empty object is created before + appending the value created from @a args. + + @param[in] args arguments to forward to a constructor of @ref basic_json + @tparam Args compatible types to create a @ref basic_json object + + @return a pair consisting of an iterator to the inserted element, or the + already-existing element if no insertion happened, and a bool + denoting whether the insertion took place. + + @throw type_error.311 when called on a type other than JSON object or + null; example: `"cannot use emplace() with number"` + + @complexity Logarithmic in the size of the container, O(log(`size()`)). + + @liveexample{The example shows how `emplace()` can be used to add elements + to a JSON object. Note how the `null` value was silently converted to a + JSON object. Further note how no value is added if there was already one + value stored with the same key.,emplace} + + @since version 2.0.8 + */ + template + std::pair emplace(Args&& ... args) + { + // emplace only works for null objects or arrays + if (JSON_HEDLEY_UNLIKELY(!(is_null() || is_object()))) + { + JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()), *this)); + } + + // transform null object into an object + if (is_null()) + { + m_type = value_t::object; + m_value = value_t::object; + assert_invariant(); + } + + // add element to array (perfect forwarding) + auto res = m_value.object->emplace(std::forward(args)...); + set_parent(res.first->second); + + // create result iterator and set iterator to the result of emplace + auto it = begin(); + it.m_it.object_iterator = res.first; + + // return pair of iterator and boolean + return { it, res.second }; + } + + /// Helper for insertion of an iterator + /// @note: This uses std::distance to support GCC 4.8, + /// see https://github.com/nlohmann/json/pull/1257 + template + iterator insert_iterator(const_iterator pos, Args&& ... args) + { + iterator result(this); + JSON_ASSERT(m_value.array != nullptr); + + auto insert_pos = std::distance(m_value.array->begin(), pos.m_it.array_iterator); + m_value.array->insert(pos.m_it.array_iterator, std::forward(args)...); + result.m_it.array_iterator = m_value.array->begin() + insert_pos; + + // This could have been written as: + // result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); + // but the return value of insert is missing in GCC 4.8, so it is written this way instead. + + set_parents(); + return result; + } + + /*! + @brief inserts element + + Inserts element @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] val element to insert + @return iterator pointing to the inserted @a val. + + @throw type_error.309 if called on JSON values other than arrays; + example: `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Constant plus linear in the distance between @a pos and end of + the container. + + @liveexample{The example shows how `insert()` is used.,insert} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const basic_json& val) + { + // insert only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); + } + + // insert to array and return iterator + return insert_iterator(pos, val); + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); + } + + /*! + @brief inserts element + @copydoc insert(const_iterator, const basic_json&) + */ + iterator insert(const_iterator pos, basic_json&& val) + { + return insert(pos, val); + } + + /*! + @brief inserts elements + + Inserts @a cnt copies of @a val before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] cnt number of copies of @a val to insert + @param[in] val element to insert + @return iterator pointing to the first element inserted, or @a pos if + `cnt==0` + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @complexity Linear in @a cnt plus linear in the distance between @a pos + and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__count} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, size_type cnt, const basic_json& val) + { + // insert only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + // check if iterator pos fits to this JSON value + if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); + } + + // insert to array and return iterator + return insert_iterator(pos, cnt, val); + } + + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)` before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + @throw invalid_iterator.211 if @a first or @a last are iterators into + container for which insert is called; example: `"passed iterators may not + belong to container"` + + @return iterator pointing to the first element inserted, or @a pos if + `first==last` + + @complexity Linear in `std::distance(first, last)` plus linear in the + distance between @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__range} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, const_iterator first, const_iterator last) + { + // insert only works for arrays + if (JSON_HEDLEY_UNLIKELY(!is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); + } + + // check if iterator pos fits to this JSON value + if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); + } + + // check if range iterators belong to the same JSON object + if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); + } + + if (JSON_HEDLEY_UNLIKELY(first.m_object == this)) + { + JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container", *this)); + } + + // insert to array and return iterator + return insert_iterator(pos, first.m_it.array_iterator, last.m_it.array_iterator); + } + + /*! + @brief inserts elements + + Inserts elements from initializer list @a ilist before iterator @a pos. + + @param[in] pos iterator before which the content will be inserted; may be + the end() iterator + @param[in] ilist initializer list to insert the values from + + @throw type_error.309 if called on JSON values other than arrays; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if @a pos is not an iterator of *this; + example: `"iterator does not fit current value"` + + @return iterator pointing to the first element inserted, or @a pos if + `ilist` is empty + + @complexity Linear in `ilist.size()` plus linear in the distance between + @a pos and end of the container. + + @liveexample{The example shows how `insert()` is used.,insert__ilist} + + @since version 1.0.0 + */ + iterator insert(const_iterator pos, initializer_list_t ilist) + { + // insert only works for arrays + if (JSON_HEDLEY_UNLIKELY(!is_array())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); + } + + // check if iterator pos fits to this JSON value + if (JSON_HEDLEY_UNLIKELY(pos.m_object != this)) + { + JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value", *this)); + } + + // insert to array and return iterator + return insert_iterator(pos, ilist.begin(), ilist.end()); + } + + /*! + @brief inserts elements + + Inserts elements from range `[first, last)`. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.309 if called on JSON values other than objects; example: + `"cannot use insert() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number + of elements to insert. + + @liveexample{The example shows how `insert()` is used.,insert__range_object} + + @since version 3.0.0 + */ + void insert(const_iterator first, const_iterator last) + { + // insert only works for objects + if (JSON_HEDLEY_UNLIKELY(!is_object())) + { + JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()), *this)); + } + + // check if range iterators belong to the same JSON object + if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); + } + + // passed iterators must belong to objects + if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects", *this)); + } + + m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from JSON object @a j and overwrites existing keys. + + @param[in] j JSON object to read values from + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_reference j) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_HEDLEY_UNLIKELY(!is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()), *this)); + } + if (JSON_HEDLEY_UNLIKELY(!j.is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()), *this)); + } + + for (auto it = j.cbegin(); it != j.cend(); ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief updates a JSON object from another object, overwriting existing keys + + Inserts all values from from range `[first, last)` and overwrites existing + keys. + + @param[in] first begin of the range of elements to insert + @param[in] last end of the range of elements to insert + + @throw type_error.312 if called on JSON values other than objects; example: + `"cannot use update() with string"` + @throw invalid_iterator.202 if iterator @a first or @a last does does not + point to an object; example: `"iterators first and last must point to + objects"` + @throw invalid_iterator.210 if @a first and @a last do not belong to the + same JSON value; example: `"iterators do not fit"` + + @complexity O(N*log(size() + N)), where N is the number of elements to + insert. + + @liveexample{The example shows how `update()` is used__range.,update} + + @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update + + @since version 3.0.0 + */ + void update(const_iterator first, const_iterator last) + { + // implicitly convert null value to an empty object + if (is_null()) + { + m_type = value_t::object; + m_value.object = create(); + assert_invariant(); + } + + if (JSON_HEDLEY_UNLIKELY(!is_object())) + { + JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()), *this)); + } + + // check if range iterators belong to the same JSON object + if (JSON_HEDLEY_UNLIKELY(first.m_object != last.m_object)) + { + JSON_THROW(invalid_iterator::create(210, "iterators do not fit", *this)); + } + + // passed iterators must belong to objects + if (JSON_HEDLEY_UNLIKELY(!first.m_object->is_object() + || !last.m_object->is_object())) + { + JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects", *this)); + } + + for (auto it = first; it != last; ++it) + { + m_value.object->operator[](it.key()) = it.value(); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of the JSON value with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other JSON value to exchange the contents with + + @complexity Constant. + + @liveexample{The example below shows how JSON values can be swapped with + `swap()`.,swap__reference} + + @since version 1.0.0 + */ + void swap(reference other) noexcept ( + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value&& + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value + ) + { + std::swap(m_type, other.m_type); + std::swap(m_value, other.m_value); + + set_parents(); + other.set_parents(); + assert_invariant(); + } + + /*! + @brief exchanges the values + + Exchanges the contents of the JSON value from @a left with those of @a right. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. implemented as a friend function callable via ADL. + + @param[in,out] left JSON value to exchange the contents with + @param[in,out] right JSON value to exchange the contents with + + @complexity Constant. + + @liveexample{The example below shows how JSON values can be swapped with + `swap()`.,swap__reference} + + @since version 1.0.0 + */ + friend void swap(reference left, reference right) noexcept ( + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value&& + std::is_nothrow_move_constructible::value&& + std::is_nothrow_move_assignable::value + ) + { + left.swap(right); + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON array with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other array to exchange the contents with + + @throw type_error.310 when JSON value is not an array; example: `"cannot + use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how arrays can be swapped with + `swap()`.,swap__array_t} + + @since version 1.0.0 + */ + void swap(array_t& other) // NOLINT(bugprone-exception-escape) + { + // swap only works for arrays + if (JSON_HEDLEY_LIKELY(is_array())) + { + std::swap(*(m_value.array), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON object with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other object to exchange the contents with + + @throw type_error.310 when JSON value is not an object; example: + `"cannot use swap() with string"` + + @complexity Constant. + + @liveexample{The example below shows how objects can be swapped with + `swap()`.,swap__object_t} + + @since version 1.0.0 + */ + void swap(object_t& other) // NOLINT(bugprone-exception-escape) + { + // swap only works for objects + if (JSON_HEDLEY_LIKELY(is_object())) + { + std::swap(*(m_value.object), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON string with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other string to exchange the contents with + + @throw type_error.310 when JSON value is not a string; example: `"cannot + use swap() with boolean"` + + @complexity Constant. + + @liveexample{The example below shows how strings can be swapped with + `swap()`.,swap__string_t} + + @since version 1.0.0 + */ + void swap(string_t& other) // NOLINT(bugprone-exception-escape) + { + // swap only works for strings + if (JSON_HEDLEY_LIKELY(is_string())) + { + std::swap(*(m_value.string), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); + } + } + + /*! + @brief exchanges the values + + Exchanges the contents of a JSON string with those of @a other. Does not + invoke any move, copy, or swap operations on individual elements. All + iterators and references remain valid. The past-the-end iterator is + invalidated. + + @param[in,out] other binary to exchange the contents with + + @throw type_error.310 when JSON value is not a string; example: `"cannot + use swap() with boolean"` + + @complexity Constant. + + @liveexample{The example below shows how strings can be swapped with + `swap()`.,swap__binary_t} + + @since version 3.8.0 + */ + void swap(binary_t& other) // NOLINT(bugprone-exception-escape) + { + // swap only works for strings + if (JSON_HEDLEY_LIKELY(is_binary())) + { + std::swap(*(m_value.binary), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); + } + } + + /// @copydoc swap(binary_t&) + void swap(typename binary_t::container_type& other) // NOLINT(bugprone-exception-escape) + { + // swap only works for strings + if (JSON_HEDLEY_LIKELY(is_binary())) + { + std::swap(*(m_value.binary), other); + } + else + { + JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()), *this)); + } + } + + /// @} + + public: + ////////////////////////////////////////// + // lexicographical comparison operators // + ////////////////////////////////////////// + + /// @name lexicographical comparison operators + /// @{ + + /*! + @brief comparison: equal + + Compares two JSON values for equality according to the following rules: + - Two JSON values are equal if (1) they are from the same type and (2) + their stored values are the same according to their respective + `operator==`. + - Integer and floating-point numbers are automatically converted before + comparison. Note that two NaN values are always treated as unequal. + - Two JSON null values are equal. + + @note Floating-point inside JSON values numbers are compared with + `json::number_float_t::operator==` which is `double::operator==` by + default. To compare floating-point while respecting an epsilon, an alternative + [comparison function](https://github.com/mariokonrad/marnav/blob/master/include/marnav/math/floatingpoint.hpp#L34-#L39) + could be used, for instance + @code {.cpp} + template::value, T>::type> + inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept + { + return std::abs(a - b) <= epsilon; + } + @endcode + Or you can self-defined operator equal function like this: + @code {.cpp} + bool my_equal(const_reference lhs, const_reference rhs) { + const auto lhs_type lhs.type(); + const auto rhs_type rhs.type(); + if (lhs_type == rhs_type) { + switch(lhs_type) + // self_defined case + case value_t::number_float: + return std::abs(lhs - rhs) <= std::numeric_limits::epsilon(); + // other cases remain the same with the original + ... + } + ... + } + @endcode + + @note NaN values never compare equal to themselves or to other NaN values. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are equal + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Linear. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__equal} + + @since version 1.0.0 + */ + friend bool operator==(const_reference lhs, const_reference rhs) noexcept + { +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + return *lhs.m_value.array == *rhs.m_value.array; + + case value_t::object: + return *lhs.m_value.object == *rhs.m_value.object; + + case value_t::null: + return true; + + case value_t::string: + return *lhs.m_value.string == *rhs.m_value.string; + + case value_t::boolean: + return lhs.m_value.boolean == rhs.m_value.boolean; + + case value_t::number_integer: + return lhs.m_value.number_integer == rhs.m_value.number_integer; + + case value_t::number_unsigned: + return lhs.m_value.number_unsigned == rhs.m_value.number_unsigned; + + case value_t::number_float: + return lhs.m_value.number_float == rhs.m_value.number_float; + + case value_t::binary: + return *lhs.m_value.binary == *rhs.m_value.binary; + + case value_t::discarded: + default: + return false; + } + } + else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float == static_cast(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer) + { + return static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer; + } + else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned); + } + + return false; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(const_reference lhs, ScalarType rhs) noexcept + { + return lhs == basic_json(rhs); + } + + /*! + @brief comparison: equal + @copydoc operator==(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator==(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) == rhs; + } + + /*! + @brief comparison: not equal + + Compares two JSON values for inequality by calculating `not (lhs == rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether the values @a lhs and @a rhs are not equal + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__notequal} + + @since version 1.0.0 + */ + friend bool operator!=(const_reference lhs, const_reference rhs) noexcept + { + return !(lhs == rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(const_reference lhs, ScalarType rhs) noexcept + { + return lhs != basic_json(rhs); + } + + /*! + @brief comparison: not equal + @copydoc operator!=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator!=(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) != rhs; + } + + /*! + @brief comparison: less than + + Compares whether one JSON value @a lhs is less than another JSON value @a + rhs according to the following rules: + - If @a lhs and @a rhs have the same type, the values are compared using + the default `<` operator. + - Integer and floating-point numbers are automatically converted before + comparison + - In case @a lhs and @a rhs have different types, the values are ignored + and the order of the types is considered, see + @ref operator<(const value_t, const value_t). + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__less} + + @since version 1.0.0 + */ + friend bool operator<(const_reference lhs, const_reference rhs) noexcept + { + const auto lhs_type = lhs.type(); + const auto rhs_type = rhs.type(); + + if (lhs_type == rhs_type) + { + switch (lhs_type) + { + case value_t::array: + // note parentheses are necessary, see + // https://github.com/nlohmann/json/issues/1530 + return (*lhs.m_value.array) < (*rhs.m_value.array); + + case value_t::object: + return (*lhs.m_value.object) < (*rhs.m_value.object); + + case value_t::null: + return false; + + case value_t::string: + return (*lhs.m_value.string) < (*rhs.m_value.string); + + case value_t::boolean: + return (lhs.m_value.boolean) < (rhs.m_value.boolean); + + case value_t::number_integer: + return (lhs.m_value.number_integer) < (rhs.m_value.number_integer); + + case value_t::number_unsigned: + return (lhs.m_value.number_unsigned) < (rhs.m_value.number_unsigned); + + case value_t::number_float: + return (lhs.m_value.number_float) < (rhs.m_value.number_float); + + case value_t::binary: + return (*lhs.m_value.binary) < (*rhs.m_value.binary); + + case value_t::discarded: + default: + return false; + } + } + else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float && rhs_type == value_t::number_integer) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); + } + else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_float) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; + } + else if (lhs_type == value_t::number_float && rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_integer && rhs_type == value_t::number_unsigned) + { + return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); + } + else if (lhs_type == value_t::number_unsigned && rhs_type == value_t::number_integer) + { + return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; + } + + // We only reach this line if we cannot compare values. In that case, + // we compare types. Note we have to call the operator explicitly, + // because MSVC has problems otherwise. + return operator<(lhs_type, rhs_type); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(const_reference lhs, ScalarType rhs) noexcept + { + return lhs < basic_json(rhs); + } + + /*! + @brief comparison: less than + @copydoc operator<(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) < rhs; + } + + /*! + @brief comparison: less than or equal + + Compares whether one JSON value @a lhs is less than or equal to another + JSON value by calculating `not (rhs < lhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is less than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greater} + + @since version 1.0.0 + */ + friend bool operator<=(const_reference lhs, const_reference rhs) noexcept + { + return !(rhs < lhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(const_reference lhs, ScalarType rhs) noexcept + { + return lhs <= basic_json(rhs); + } + + /*! + @brief comparison: less than or equal + @copydoc operator<=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator<=(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) <= rhs; + } + + /*! + @brief comparison: greater than + + Compares whether one JSON value @a lhs is greater than another + JSON value by calculating `not (lhs <= rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__lessequal} + + @since version 1.0.0 + */ + friend bool operator>(const_reference lhs, const_reference rhs) noexcept + { + return !(lhs <= rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(const_reference lhs, ScalarType rhs) noexcept + { + return lhs > basic_json(rhs); + } + + /*! + @brief comparison: greater than + @copydoc operator>(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) > rhs; + } + + /*! + @brief comparison: greater than or equal + + Compares whether one JSON value @a lhs is greater than or equal to another + JSON value by calculating `not (lhs < rhs)`. + + @param[in] lhs first JSON value to consider + @param[in] rhs second JSON value to consider + @return whether @a lhs is greater than or equal to @a rhs + + @complexity Linear. + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @liveexample{The example demonstrates comparing several JSON + types.,operator__greaterequal} + + @since version 1.0.0 + */ + friend bool operator>=(const_reference lhs, const_reference rhs) noexcept + { + return !(lhs < rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(const_reference lhs, ScalarType rhs) noexcept + { + return lhs >= basic_json(rhs); + } + + /*! + @brief comparison: greater than or equal + @copydoc operator>=(const_reference, const_reference) + */ + template::value, int>::type = 0> + friend bool operator>=(ScalarType lhs, const_reference rhs) noexcept + { + return basic_json(lhs) >= rhs; + } + + /// @} + + /////////////////// + // serialization // + /////////////////// + + /// @name serialization + /// @{ +#ifndef JSON_NO_IO + /*! + @brief serialize to stream + + Serialize the given JSON value @a j to the output stream @a o. The JSON + value will be serialized using the @ref dump member function. + + - The indentation of the output can be controlled with the member variable + `width` of the output stream @a o. For instance, using the manipulator + `std::setw(4)` on @a o sets the indentation level to `4` and the + serialization result is the same as calling `dump(4)`. + + - The indentation character can be controlled with the member variable + `fill` of the output stream @a o. For instance, the manipulator + `std::setfill('\\t')` sets indentation to use a tab character rather than + the default space character. + + @param[in,out] o stream to serialize to + @param[in] j JSON value to serialize + + @return the stream @a o + + @throw type_error.316 if a string stored inside the JSON value is not + UTF-8 encoded + + @complexity Linear. + + @liveexample{The example below shows the serialization with different + parameters to `width` to adjust the indentation level.,operator_serialize} + + @since version 1.0.0; indentation character added in version 3.0.0 + */ + friend std::ostream& operator<<(std::ostream& o, const basic_json& j) + { + // read width member and use it as indentation parameter if nonzero + const bool pretty_print = o.width() > 0; + const auto indentation = pretty_print ? o.width() : 0; + + // reset width to 0 for subsequent calls to this stream + o.width(0); + + // do the actual serialization + serializer s(detail::output_adapter(o), o.fill()); + s.dump(j, pretty_print, false, static_cast(indentation)); + return o; + } + + /*! + @brief serialize to stream + @deprecated This stream operator is deprecated and will be removed in + future 4.0.0 of the library. Please use + @ref operator<<(std::ostream&, const basic_json&) + instead; that is, replace calls like `j >> o;` with `o << j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator<<(std::ostream&, const basic_json&)) + friend std::ostream& operator>>(const basic_json& j, std::ostream& o) + { + return o << j; + } +#endif // JSON_NO_IO + /// @} + + + ///////////////////// + // deserialization // + ///////////////////// + + /// @name deserialization + /// @{ + + /*! + @brief deserialize from a compatible input + + @tparam InputType A compatible input, for instance + - an std::istream object + - a FILE pointer + - a C-style array of characters + - a pointer to a null-terminated string of single byte characters + - an object obj for which begin(obj) and end(obj) produces a valid pair of + iterators. + + @param[in] i input to read from + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + @param[in] ignore_comments whether comments should be ignored and treated + like whitespace (true) or yield a parse error (true); (optional, false by + default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the parser callback function + @a cb or reading from the input @a i has a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `parse()` function reading + from an array.,parse__array__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__string__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function with + and without callback function.,parse__istream__parser_callback_t} + + @liveexample{The example below demonstrates the `parse()` function reading + from a contiguous container.,parse__contiguouscontainer__parser_callback_t} + + @since version 2.0.3 (contiguous containers); version 3.9.0 allowed to + ignore comments. + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json parse(InputType&& i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true, + const bool ignore_comments = false) + { + basic_json result; + parser(detail::input_adapter(std::forward(i)), cb, allow_exceptions, ignore_comments).parse(true, result); + return result; + } + + /*! + @brief deserialize from a pair of character iterators + + The value_type of the iterator must be a integral type with size of 1, 2 or + 4 bytes, which will be interpreted respectively as UTF-8, UTF-16 and UTF-32. + + @param[in] first iterator to start of character range + @param[in] last iterator to end of character range + @param[in] cb a parser callback function of type @ref parser_callback_t + which is used to control the deserialization by filtering unwanted values + (optional) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + @param[in] ignore_comments whether comments should be ignored and treated + like whitespace (true) or yield a parse error (true); (optional, false by + default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json parse(IteratorType first, + IteratorType last, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true, + const bool ignore_comments = false) + { + basic_json result; + parser(detail::input_adapter(std::move(first), std::move(last)), cb, allow_exceptions, ignore_comments).parse(true, result); + return result; + } + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, parse(ptr, ptr + len)) + static basic_json parse(detail::span_input_adapter&& i, + const parser_callback_t cb = nullptr, + const bool allow_exceptions = true, + const bool ignore_comments = false) + { + basic_json result; + parser(i.get(), cb, allow_exceptions, ignore_comments).parse(true, result); + return result; + } + + /*! + @brief check if the input is valid JSON + + Unlike the @ref parse(InputType&&, const parser_callback_t,const bool) + function, this function neither throws an exception in case of invalid JSON + input (i.e., a parse error) nor creates diagnostic information. + + @tparam InputType A compatible input, for instance + - an std::istream object + - a FILE pointer + - a C-style array of characters + - a pointer to a null-terminated string of single byte characters + - an object obj for which begin(obj) and end(obj) produces a valid pair of + iterators. + + @param[in] i input to read from + @param[in] ignore_comments whether comments should be ignored and treated + like whitespace (true) or yield a parse error (true); (optional, false by + default) + + @return Whether the input read from @a i is valid JSON. + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `accept()` function reading + from a string.,accept__string} + */ + template + static bool accept(InputType&& i, + const bool ignore_comments = false) + { + return parser(detail::input_adapter(std::forward(i)), nullptr, false, ignore_comments).accept(true); + } + + template + static bool accept(IteratorType first, IteratorType last, + const bool ignore_comments = false) + { + return parser(detail::input_adapter(std::move(first), std::move(last)), nullptr, false, ignore_comments).accept(true); + } + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, accept(ptr, ptr + len)) + static bool accept(detail::span_input_adapter&& i, + const bool ignore_comments = false) + { + return parser(i.get(), nullptr, false, ignore_comments).accept(true); + } + + /*! + @brief generate SAX events + + The SAX event lister must follow the interface of @ref json_sax. + + This function reads from a compatible input. Examples are: + - an std::istream object + - a FILE pointer + - a C-style array of characters + - a pointer to a null-terminated string of single byte characters + - an object obj for which begin(obj) and end(obj) produces a valid pair of + iterators. + + @param[in] i input to read from + @param[in,out] sax SAX event listener + @param[in] format the format to parse (JSON, CBOR, MessagePack, or UBJSON) + @param[in] strict whether the input has to be consumed completely + @param[in] ignore_comments whether comments should be ignored and treated + like whitespace (true) or yield a parse error (true); (optional, false by + default); only applies to the JSON file format. + + @return return value of the last processed SAX event + + @throw parse_error.101 if a parse error occurs; example: `""unexpected end + of input; expected string literal""` + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. The complexity can be higher if the SAX consumer @a sax has + a super-linear complexity. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below demonstrates the `sax_parse()` function + reading from string and processing the events with a user-defined SAX + event consumer.,sax_parse} + + @since version 3.2.0 + */ + template + JSON_HEDLEY_NON_NULL(2) + static bool sax_parse(InputType&& i, SAX* sax, + input_format_t format = input_format_t::json, + const bool strict = true, + const bool ignore_comments = false) + { + auto ia = detail::input_adapter(std::forward(i)); + return format == input_format_t::json + ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) + : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); + } + + template + JSON_HEDLEY_NON_NULL(3) + static bool sax_parse(IteratorType first, IteratorType last, SAX* sax, + input_format_t format = input_format_t::json, + const bool strict = true, + const bool ignore_comments = false) + { + auto ia = detail::input_adapter(std::move(first), std::move(last)); + return format == input_format_t::json + ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) + : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); + } + + template + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, sax_parse(ptr, ptr + len, ...)) + JSON_HEDLEY_NON_NULL(2) + static bool sax_parse(detail::span_input_adapter&& i, SAX* sax, + input_format_t format = input_format_t::json, + const bool strict = true, + const bool ignore_comments = false) + { + auto ia = i.get(); + return format == input_format_t::json + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + ? parser(std::move(ia), nullptr, true, ignore_comments).sax_parse(sax, strict) + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + : detail::binary_reader(std::move(ia)).sax_parse(format, sax, strict); + } +#ifndef JSON_NO_IO + /*! + @brief deserialize from stream + @deprecated This stream operator is deprecated and will be removed in + version 4.0.0 of the library. Please use + @ref operator>>(std::istream&, basic_json&) + instead; that is, replace calls like `j << i;` with `i >> j;`. + @since version 1.0.0; deprecated since version 3.0.0 + */ + JSON_HEDLEY_DEPRECATED_FOR(3.0.0, operator>>(std::istream&, basic_json&)) + friend std::istream& operator<<(basic_json& j, std::istream& i) + { + return operator>>(i, j); + } + + /*! + @brief deserialize from stream + + Deserializes an input stream to a JSON value. + + @param[in,out] i input stream to read a serialized JSON value from + @param[in,out] j JSON value to write the deserialized input to + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + + @complexity Linear in the length of the input. The parser is a predictive + LL(1) parser. + + @note A UTF-8 byte order mark is silently ignored. + + @liveexample{The example below shows how a JSON value is constructed by + reading a serialization from a stream.,operator_deserialize} + + @sa parse(std::istream&, const parser_callback_t) for a variant with a + parser callback function to filter values while parsing + + @since version 1.0.0 + */ + friend std::istream& operator>>(std::istream& i, basic_json& j) + { + parser(detail::input_adapter(i)).parse(false, j); + return i; + } +#endif // JSON_NO_IO + /// @} + + /////////////////////////// + // convenience functions // + /////////////////////////// + + /*! + @brief return the type as string + + Returns the type name as string to be used in error messages - usually to + indicate that a function was called on a wrong JSON type. + + @return a string representation of a the @a m_type member: + Value type | return value + ----------- | ------------- + null | `"null"` + boolean | `"boolean"` + string | `"string"` + number | `"number"` (for all number types) + object | `"object"` + array | `"array"` + binary | `"binary"` + discarded | `"discarded"` + + @exceptionsafety No-throw guarantee: this function never throws exceptions. + + @complexity Constant. + + @liveexample{The following code exemplifies `type_name()` for all JSON + types.,type_name} + + @sa see @ref type() -- return the type of the JSON value + @sa see @ref operator value_t() -- return the type of the JSON value (implicit) + + @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` + since 3.0.0 + */ + JSON_HEDLEY_RETURNS_NON_NULL + const char* type_name() const noexcept + { + { + switch (m_type) + { + case value_t::null: + return "null"; + case value_t::object: + return "object"; + case value_t::array: + return "array"; + case value_t::string: + return "string"; + case value_t::boolean: + return "boolean"; + case value_t::binary: + return "binary"; + case value_t::discarded: + return "discarded"; + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + default: + return "number"; + } + } + } + + + JSON_PRIVATE_UNLESS_TESTED: + ////////////////////// + // member variables // + ////////////////////// + + /// the type of the current element + value_t m_type = value_t::null; + + /// the value of the current element + json_value m_value = {}; + +#if JSON_DIAGNOSTICS + /// a pointer to a parent value (for debugging purposes) + basic_json* m_parent = nullptr; +#endif + + ////////////////////////////////////////// + // binary serialization/deserialization // + ////////////////////////////////////////// + + /// @name binary serialization/deserialization support + /// @{ + + public: + /*! + @brief create a CBOR serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the CBOR (Concise + Binary Object Representation) serialization format. CBOR is a binary + serialization format which aims to be more compact than JSON itself, yet + more efficient to parse. + + The library uses the following mapping from JSON values types to + CBOR types according to the CBOR specification (RFC 7049): + + JSON value type | value/range | CBOR type | first byte + --------------- | ------------------------------------------ | ---------------------------------- | --------------- + null | `null` | Null | 0xF6 + boolean | `true` | True | 0xF5 + boolean | `false` | False | 0xF4 + number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B + number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A + number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 + number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 + number_integer | -24..-1 | Negative integer | 0x20..0x37 + number_integer | 0..23 | Integer | 0x00..0x17 + number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_unsigned | 0..23 | Integer | 0x00..0x17 + number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 + number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 + number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A + number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B + number_float | *any value representable by a float* | Single-Precision Float | 0xFA + number_float | *any value NOT representable by a float* | Double-Precision Float | 0xFB + string | *length*: 0..23 | UTF-8 string | 0x60..0x77 + string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 + string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 + string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A + string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B + array | *size*: 0..23 | array | 0x80..0x97 + array | *size*: 23..255 | array (1 byte follow) | 0x98 + array | *size*: 256..65535 | array (2 bytes follow) | 0x99 + array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A + array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B + object | *size*: 0..23 | map | 0xA0..0xB7 + object | *size*: 23..255 | map (1 byte follow) | 0xB8 + object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 + object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA + object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB + binary | *size*: 0..23 | byte string | 0x40..0x57 + binary | *size*: 23..255 | byte string (1 byte follow) | 0x58 + binary | *size*: 256..65535 | byte string (2 bytes follow) | 0x59 + binary | *size*: 65536..4294967295 | byte string (4 bytes follow) | 0x5A + binary | *size*: 4294967296..18446744073709551615 | byte string (8 bytes follow) | 0x5B + + Binary values with subtype are mapped to tagged values (0xD8..0xDB) + depending on the subtype, followed by a byte string, see "binary" cells + in the table above. + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a CBOR value. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The following CBOR types are not used in the conversion: + - UTF-8 strings terminated by "break" (0x7F) + - arrays terminated by "break" (0x9F) + - maps terminated by "break" (0xBF) + - byte strings terminated by "break" (0x5F) + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + - half-precision floats (0xF9) + - break (0xFF) + + @param[in] j JSON value to serialize + @return CBOR serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in CBOR format.,to_cbor} + + @sa http://cbor.io + @sa see @ref from_cbor(InputType&&, const bool, const bool, const cbor_tag_handler_t) for the + analogous deserialization + @sa see @ref to_msgpack(const basic_json&) for the related MessagePack format + @sa see @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9; compact representation of floating-point numbers + since version 3.8.0 + */ + static std::vector to_cbor(const basic_json& j) + { + std::vector result; + to_cbor(j, result); + return result; + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + static void to_cbor(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_cbor(j); + } + + /*! + @brief create a MessagePack serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the MessagePack + serialization format. MessagePack is a binary serialization format which + aims to be more compact than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + MessagePack types according to the MessagePack specification: + + JSON value type | value/range | MessagePack type | first byte + --------------- | --------------------------------- | ---------------- | ---------- + null | `null` | nil | 0xC0 + boolean | `true` | true | 0xC3 + boolean | `false` | false | 0xC2 + number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 + number_integer | -2147483648..-32769 | int32 | 0xD2 + number_integer | -32768..-129 | int16 | 0xD1 + number_integer | -128..-33 | int8 | 0xD0 + number_integer | -32..-1 | negative fixint | 0xE0..0xFF + number_integer | 0..127 | positive fixint | 0x00..0x7F + number_integer | 128..255 | uint 8 | 0xCC + number_integer | 256..65535 | uint 16 | 0xCD + number_integer | 65536..4294967295 | uint 32 | 0xCE + number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_unsigned | 0..127 | positive fixint | 0x00..0x7F + number_unsigned | 128..255 | uint 8 | 0xCC + number_unsigned | 256..65535 | uint 16 | 0xCD + number_unsigned | 65536..4294967295 | uint 32 | 0xCE + number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF + number_float | *any value representable by a float* | float 32 | 0xCA + number_float | *any value NOT representable by a float* | float 64 | 0xCB + string | *length*: 0..31 | fixstr | 0xA0..0xBF + string | *length*: 32..255 | str 8 | 0xD9 + string | *length*: 256..65535 | str 16 | 0xDA + string | *length*: 65536..4294967295 | str 32 | 0xDB + array | *size*: 0..15 | fixarray | 0x90..0x9F + array | *size*: 16..65535 | array 16 | 0xDC + array | *size*: 65536..4294967295 | array 32 | 0xDD + object | *size*: 0..15 | fix map | 0x80..0x8F + object | *size*: 16..65535 | map 16 | 0xDE + object | *size*: 65536..4294967295 | map 32 | 0xDF + binary | *size*: 0..255 | bin 8 | 0xC4 + binary | *size*: 256..65535 | bin 16 | 0xC5 + binary | *size*: 65536..4294967295 | bin 32 | 0xC6 + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a MessagePack value. + + @note The following values can **not** be converted to a MessagePack value: + - strings with more than 4294967295 bytes + - byte strings with more than 4294967295 bytes + - arrays with more than 4294967295 elements + - objects with more than 4294967295 elements + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @param[in] j JSON value to serialize + @return MessagePack serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in MessagePack format.,to_msgpack} + + @sa http://msgpack.org + @sa see @ref from_msgpack for the analogous deserialization + @sa see @ref to_cbor(const basic_json& for the related CBOR format + @sa see @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9 + */ + static std::vector to_msgpack(const basic_json& j) + { + std::vector result; + to_msgpack(j, result); + return result; + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + static void to_msgpack(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_msgpack(j); + } + + /*! + @brief create a UBJSON serialization of a given JSON value + + Serializes a given JSON value @a j to a byte vector using the UBJSON + (Universal Binary JSON) serialization format. UBJSON aims to be more compact + than JSON itself, yet more efficient to parse. + + The library uses the following mapping from JSON values types to + UBJSON types according to the UBJSON specification: + + JSON value type | value/range | UBJSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | `Z` + boolean | `true` | true | `T` + boolean | `false` | false | `F` + number_integer | -9223372036854775808..-2147483649 | int64 | `L` + number_integer | -2147483648..-32769 | int32 | `l` + number_integer | -32768..-129 | int16 | `I` + number_integer | -128..127 | int8 | `i` + number_integer | 128..255 | uint8 | `U` + number_integer | 256..32767 | int16 | `I` + number_integer | 32768..2147483647 | int32 | `l` + number_integer | 2147483648..9223372036854775807 | int64 | `L` + number_unsigned | 0..127 | int8 | `i` + number_unsigned | 128..255 | uint8 | `U` + number_unsigned | 256..32767 | int16 | `I` + number_unsigned | 32768..2147483647 | int32 | `l` + number_unsigned | 2147483648..9223372036854775807 | int64 | `L` + number_unsigned | 2147483649..18446744073709551615 | high-precision | `H` + number_float | *any value* | float64 | `D` + string | *with shortest length indicator* | string | `S` + array | *see notes on optimized format* | array | `[` + object | *see notes on optimized format* | map | `{` + + @note The mapping is **complete** in the sense that any JSON value type + can be converted to a UBJSON value. + + @note The following values can **not** be converted to a UBJSON value: + - strings with more than 9223372036854775807 bytes (theoretical) + + @note The following markers are not used in the conversion: + - `Z`: no-op values are not created. + - `C`: single-byte strings are serialized with `S` markers. + + @note Any UBJSON output created @ref to_ubjson can be successfully parsed + by @ref from_ubjson. + + @note If NaN or Infinity are stored inside a JSON number, they are + serialized properly. This behavior differs from the @ref dump() + function which serializes NaN or Infinity to `null`. + + @note The optimized formats for containers are supported: Parameter + @a use_size adds size information to the beginning of a container and + removes the closing marker. Parameter @a use_type further checks + whether all elements of a container have the same type and adds the + type marker to the beginning of the container. The @a use_type + parameter must only be used together with @a use_size = true. Note + that @a use_size = true alone may result in larger representations - + the benefit of this parameter is that the receiving side is + immediately informed on the number of elements of the container. + + @note If the JSON data contains the binary type, the value stored is a list + of integers, as suggested by the UBJSON documentation. In particular, + this means that serialization and the deserialization of a JSON + containing binary values into UBJSON and back will result in a + different JSON object. + + @param[in] j JSON value to serialize + @param[in] use_size whether to add size annotations to container types + @param[in] use_type whether to add type annotations to container types + (must be combined with @a use_size = true) + @return UBJSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in UBJSON format.,to_ubjson} + + @sa http://ubjson.org + @sa see @ref from_ubjson(InputType&&, const bool, const bool) for the + analogous deserialization + @sa see @ref to_cbor(const basic_json& for the related CBOR format + @sa see @ref to_msgpack(const basic_json&) for the related MessagePack format + + @since version 3.1.0 + */ + static std::vector to_ubjson(const basic_json& j, + const bool use_size = false, + const bool use_type = false) + { + std::vector result; + to_ubjson(j, result, use_size, use_type); + return result; + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) + { + binary_writer(o).write_ubjson(j, use_size, use_type); + } + + static void to_ubjson(const basic_json& j, detail::output_adapter o, + const bool use_size = false, const bool use_type = false) + { + binary_writer(o).write_ubjson(j, use_size, use_type); + } + + + /*! + @brief Serializes the given JSON object `j` to BSON and returns a vector + containing the corresponding BSON-representation. + + BSON (Binary JSON) is a binary format in which zero or more ordered key/value pairs are + stored as a single entity (a so-called document). + + The library uses the following mapping from JSON values types to BSON types: + + JSON value type | value/range | BSON type | marker + --------------- | --------------------------------- | ----------- | ------ + null | `null` | null | 0x0A + boolean | `true`, `false` | boolean | 0x08 + number_integer | -9223372036854775808..-2147483649 | int64 | 0x12 + number_integer | -2147483648..2147483647 | int32 | 0x10 + number_integer | 2147483648..9223372036854775807 | int64 | 0x12 + number_unsigned | 0..2147483647 | int32 | 0x10 + number_unsigned | 2147483648..9223372036854775807 | int64 | 0x12 + number_unsigned | 9223372036854775808..18446744073709551615| -- | -- + number_float | *any value* | double | 0x01 + string | *any value* | string | 0x02 + array | *any value* | document | 0x04 + object | *any value* | document | 0x03 + binary | *any value* | binary | 0x05 + + @warning The mapping is **incomplete**, since only JSON-objects (and things + contained therein) can be serialized to BSON. + Also, integers larger than 9223372036854775807 cannot be serialized to BSON, + and the keys may not contain U+0000, since they are serialized a + zero-terminated c-strings. + + @throw out_of_range.407 if `j.is_number_unsigned() && j.get() > 9223372036854775807` + @throw out_of_range.409 if a key in `j` contains a NULL (U+0000) + @throw type_error.317 if `!j.is_object()` + + @pre The input `j` is required to be an object: `j.is_object() == true`. + + @note Any BSON output created via @ref to_bson can be successfully parsed + by @ref from_bson. + + @param[in] j JSON value to serialize + @return BSON serialization as byte vector + + @complexity Linear in the size of the JSON value @a j. + + @liveexample{The example shows the serialization of a JSON value to a byte + vector in BSON format.,to_bson} + + @sa http://bsonspec.org/spec.html + @sa see @ref from_bson(detail::input_adapter&&, const bool strict) for the + analogous deserialization + @sa see @ref to_ubjson(const basic_json&, const bool, const bool) for the + related UBJSON format + @sa see @ref to_cbor(const basic_json&) for the related CBOR format + @sa see @ref to_msgpack(const basic_json&) for the related MessagePack format + */ + static std::vector to_bson(const basic_json& j) + { + std::vector result; + to_bson(j, result); + return result; + } + + /*! + @brief Serializes the given JSON object `j` to BSON and forwards the + corresponding BSON-representation to the given output_adapter `o`. + @param j The JSON object to convert to BSON. + @param o The output adapter that receives the binary BSON representation. + @pre The input `j` shall be an object: `j.is_object() == true` + @sa see @ref to_bson(const basic_json&) + */ + static void to_bson(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_bson(j); + } + + /*! + @copydoc to_bson(const basic_json&, detail::output_adapter) + */ + static void to_bson(const basic_json& j, detail::output_adapter o) + { + binary_writer(o).write_bson(j); + } + + + /*! + @brief create a JSON value from an input in CBOR format + + Deserializes a given input @a i to a JSON value using the CBOR (Concise + Binary Object Representation) serialization format. + + The library maps CBOR types to JSON value types as follows: + + CBOR type | JSON value type | first byte + ---------------------- | --------------- | ---------- + Integer | number_unsigned | 0x00..0x17 + Unsigned integer | number_unsigned | 0x18 + Unsigned integer | number_unsigned | 0x19 + Unsigned integer | number_unsigned | 0x1A + Unsigned integer | number_unsigned | 0x1B + Negative integer | number_integer | 0x20..0x37 + Negative integer | number_integer | 0x38 + Negative integer | number_integer | 0x39 + Negative integer | number_integer | 0x3A + Negative integer | number_integer | 0x3B + Byte string | binary | 0x40..0x57 + Byte string | binary | 0x58 + Byte string | binary | 0x59 + Byte string | binary | 0x5A + Byte string | binary | 0x5B + UTF-8 string | string | 0x60..0x77 + UTF-8 string | string | 0x78 + UTF-8 string | string | 0x79 + UTF-8 string | string | 0x7A + UTF-8 string | string | 0x7B + UTF-8 string | string | 0x7F + array | array | 0x80..0x97 + array | array | 0x98 + array | array | 0x99 + array | array | 0x9A + array | array | 0x9B + array | array | 0x9F + map | object | 0xA0..0xB7 + map | object | 0xB8 + map | object | 0xB9 + map | object | 0xBA + map | object | 0xBB + map | object | 0xBF + False | `false` | 0xF4 + True | `true` | 0xF5 + Null | `null` | 0xF6 + Half-Precision Float | number_float | 0xF9 + Single-Precision Float | number_float | 0xFA + Double-Precision Float | number_float | 0xFB + + @warning The mapping is **incomplete** in the sense that not all CBOR + types can be converted to a JSON value. The following CBOR types + are not supported and will yield parse errors (parse_error.112): + - date/time (0xC0..0xC1) + - bignum (0xC2..0xC3) + - decimal fraction (0xC4) + - bigfloat (0xC5) + - expected conversions (0xD5..0xD7) + - simple values (0xE0..0xF3, 0xF8) + - undefined (0xF7) + + @warning CBOR allows map keys of any type, whereas JSON only allows + strings as keys in object values. Therefore, CBOR maps with keys + other than UTF-8 strings are rejected (parse_error.113). + + @note Any CBOR output created @ref to_cbor can be successfully parsed by + @ref from_cbor. + + @param[in] i an input in CBOR format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + @param[in] tag_handler how to treat CBOR tags (optional, error by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from CBOR were + used in the given input @a v or if the input is not valid CBOR + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in CBOR + format to a JSON value.,from_cbor} + + @sa http://cbor.io + @sa see @ref to_cbor(const basic_json&) for the analogous serialization + @sa see @ref from_msgpack(InputType&&, const bool, const bool) for the + related MessagePack format + @sa see @ref from_ubjson(InputType&&, const bool, const bool) for the + related UBJSON format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0; added @a allow_exceptions parameter + since 3.2.0; added @a tag_handler parameter since 3.9.0. + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_cbor(InputType&& i, + const bool strict = true, + const bool allow_exceptions = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::forward(i)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_cbor(InputType&&, const bool, const bool, const cbor_tag_handler_t) + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_cbor(IteratorType first, IteratorType last, + const bool strict = true, + const bool allow_exceptions = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::move(first), std::move(last)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); + return res ? result : basic_json(value_t::discarded); + } + + template + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) + static basic_json from_cbor(const T* ptr, std::size_t len, + const bool strict = true, + const bool allow_exceptions = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + return from_cbor(ptr, ptr + len, strict, allow_exceptions, tag_handler); + } + + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_cbor(ptr, ptr + len)) + static basic_json from_cbor(detail::span_input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = i.get(); + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::cbor, &sdp, strict, tag_handler); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @brief create a JSON value from an input in MessagePack format + + Deserializes a given input @a i to a JSON value using the MessagePack + serialization format. + + The library maps MessagePack types to JSON value types as follows: + + MessagePack type | JSON value type | first byte + ---------------- | --------------- | ---------- + positive fixint | number_unsigned | 0x00..0x7F + fixmap | object | 0x80..0x8F + fixarray | array | 0x90..0x9F + fixstr | string | 0xA0..0xBF + nil | `null` | 0xC0 + false | `false` | 0xC2 + true | `true` | 0xC3 + float 32 | number_float | 0xCA + float 64 | number_float | 0xCB + uint 8 | number_unsigned | 0xCC + uint 16 | number_unsigned | 0xCD + uint 32 | number_unsigned | 0xCE + uint 64 | number_unsigned | 0xCF + int 8 | number_integer | 0xD0 + int 16 | number_integer | 0xD1 + int 32 | number_integer | 0xD2 + int 64 | number_integer | 0xD3 + str 8 | string | 0xD9 + str 16 | string | 0xDA + str 32 | string | 0xDB + array 16 | array | 0xDC + array 32 | array | 0xDD + map 16 | object | 0xDE + map 32 | object | 0xDF + bin 8 | binary | 0xC4 + bin 16 | binary | 0xC5 + bin 32 | binary | 0xC6 + ext 8 | binary | 0xC7 + ext 16 | binary | 0xC8 + ext 32 | binary | 0xC9 + fixext 1 | binary | 0xD4 + fixext 2 | binary | 0xD5 + fixext 4 | binary | 0xD6 + fixext 8 | binary | 0xD7 + fixext 16 | binary | 0xD8 + negative fixint | number_integer | 0xE0-0xFF + + @note Any MessagePack output created @ref to_msgpack can be successfully + parsed by @ref from_msgpack. + + @param[in] i an input in MessagePack format convertible to an input + adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if unsupported features from MessagePack were + used in the given input @a i or if the input is not valid MessagePack + @throw parse_error.113 if a string was expected as map key, but not found + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + MessagePack format to a JSON value.,from_msgpack} + + @sa http://msgpack.org + @sa see @ref to_msgpack(const basic_json&) for the analogous serialization + @sa see @ref from_cbor(InputType&&, const bool, const bool, const cbor_tag_handler_t) for the + related CBOR format + @sa see @ref from_ubjson(InputType&&, const bool, const bool) for + the related UBJSON format + @sa see @ref from_bson(InputType&&, const bool, const bool) for + the related BSON format + + @since version 2.0.9; parameter @a start_index since 2.1.1; changed to + consume input adapters, removed start_index parameter, and added + @a strict parameter since 3.0.0; added @a allow_exceptions parameter + since 3.2.0 + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_msgpack(InputType&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::forward(i)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_msgpack(InputType&&, const bool, const bool) + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_msgpack(IteratorType first, IteratorType last, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::move(first), std::move(last)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + + template + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len)) + static basic_json from_msgpack(const T* ptr, std::size_t len, + const bool strict = true, + const bool allow_exceptions = true) + { + return from_msgpack(ptr, ptr + len, strict, allow_exceptions); + } + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_msgpack(ptr, ptr + len)) + static basic_json from_msgpack(detail::span_input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = i.get(); + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::msgpack, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + + /*! + @brief create a JSON value from an input in UBJSON format + + Deserializes a given input @a i to a JSON value using the UBJSON (Universal + Binary JSON) serialization format. + + The library maps UBJSON types to JSON value types as follows: + + UBJSON type | JSON value type | marker + ----------- | --------------------------------------- | ------ + no-op | *no value, next value is read* | `N` + null | `null` | `Z` + false | `false` | `F` + true | `true` | `T` + float32 | number_float | `d` + float64 | number_float | `D` + uint8 | number_unsigned | `U` + int8 | number_integer | `i` + int16 | number_integer | `I` + int32 | number_integer | `l` + int64 | number_integer | `L` + high-precision number | number_integer, number_unsigned, or number_float - depends on number string | 'H' + string | string | `S` + char | string | `C` + array | array (optimized values are supported) | `[` + object | object (optimized values are supported) | `{` + + @note The mapping is **complete** in the sense that any UBJSON value can + be converted to a JSON value. + + @param[in] i an input in UBJSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.110 if the given input ends prematurely or the end of + file was not reached when @a strict was set to true + @throw parse_error.112 if a parse error occurs + @throw parse_error.113 if a string could not be parsed successfully + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + UBJSON format to a JSON value.,from_ubjson} + + @sa http://ubjson.org + @sa see @ref to_ubjson(const basic_json&, const bool, const bool) for the + analogous serialization + @sa see @ref from_cbor(InputType&&, const bool, const bool, const cbor_tag_handler_t) for the + related CBOR format + @sa see @ref from_msgpack(InputType&&, const bool, const bool) for + the related MessagePack format + @sa see @ref from_bson(InputType&&, const bool, const bool) for + the related BSON format + + @since version 3.1.0; added @a allow_exceptions parameter since 3.2.0 + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_ubjson(InputType&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::forward(i)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_ubjson(InputType&&, const bool, const bool) + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_ubjson(IteratorType first, IteratorType last, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::move(first), std::move(last)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + template + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len)) + static basic_json from_ubjson(const T* ptr, std::size_t len, + const bool strict = true, + const bool allow_exceptions = true) + { + return from_ubjson(ptr, ptr + len, strict, allow_exceptions); + } + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_ubjson(ptr, ptr + len)) + static basic_json from_ubjson(detail::span_input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = i.get(); + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::ubjson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + + /*! + @brief Create a JSON value from an input in BSON format + + Deserializes a given input @a i to a JSON value using the BSON (Binary JSON) + serialization format. + + The library maps BSON record types to JSON value types as follows: + + BSON type | BSON marker byte | JSON value type + --------------- | ---------------- | --------------------------- + double | 0x01 | number_float + string | 0x02 | string + document | 0x03 | object + array | 0x04 | array + binary | 0x05 | binary + undefined | 0x06 | still unsupported + ObjectId | 0x07 | still unsupported + boolean | 0x08 | boolean + UTC Date-Time | 0x09 | still unsupported + null | 0x0A | null + Regular Expr. | 0x0B | still unsupported + DB Pointer | 0x0C | still unsupported + JavaScript Code | 0x0D | still unsupported + Symbol | 0x0E | still unsupported + JavaScript Code | 0x0F | still unsupported + int32 | 0x10 | number_integer + Timestamp | 0x11 | still unsupported + 128-bit decimal float | 0x13 | still unsupported + Max Key | 0x7F | still unsupported + Min Key | 0xFF | still unsupported + + @warning The mapping is **incomplete**. The unsupported mappings + are indicated in the table above. + + @param[in] i an input in BSON format convertible to an input adapter + @param[in] strict whether to expect the input to be consumed until EOF + (true by default) + @param[in] allow_exceptions whether to throw exceptions in case of a + parse error (optional, true by default) + + @return deserialized JSON value; in case of a parse error and + @a allow_exceptions set to `false`, the return value will be + value_t::discarded. + + @throw parse_error.114 if an unsupported BSON record type is encountered + + @complexity Linear in the size of the input @a i. + + @liveexample{The example shows the deserialization of a byte vector in + BSON format to a JSON value.,from_bson} + + @sa http://bsonspec.org/spec.html + @sa see @ref to_bson(const basic_json&) for the analogous serialization + @sa see @ref from_cbor(InputType&&, const bool, const bool, const cbor_tag_handler_t) for the + related CBOR format + @sa see @ref from_msgpack(InputType&&, const bool, const bool) for + the related MessagePack format + @sa see @ref from_ubjson(InputType&&, const bool, const bool) for the + related UBJSON format + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_bson(InputType&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::forward(i)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + /*! + @copydoc from_bson(InputType&&, const bool, const bool) + */ + template + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json from_bson(IteratorType first, IteratorType last, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = detail::input_adapter(std::move(first), std::move(last)); + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + + template + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len)) + static basic_json from_bson(const T* ptr, std::size_t len, + const bool strict = true, + const bool allow_exceptions = true) + { + return from_bson(ptr, ptr + len, strict, allow_exceptions); + } + + JSON_HEDLEY_WARN_UNUSED_RESULT + JSON_HEDLEY_DEPRECATED_FOR(3.8.0, from_bson(ptr, ptr + len)) + static basic_json from_bson(detail::span_input_adapter&& i, + const bool strict = true, + const bool allow_exceptions = true) + { + basic_json result; + detail::json_sax_dom_parser sdp(result, allow_exceptions); + auto ia = i.get(); + // NOLINTNEXTLINE(hicpp-move-const-arg,performance-move-const-arg) + const bool res = binary_reader(std::move(ia)).sax_parse(input_format_t::bson, &sdp, strict); + return res ? result : basic_json(value_t::discarded); + } + /// @} + + ////////////////////////// + // JSON Pointer support // + ////////////////////////// + + /// @name JSON Pointer functions + /// @{ + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. Similar to @ref operator[](const typename + object_t::key_type&), `null` values are created in arrays and objects if + necessary. + + In particular: + - If the JSON pointer points to an object key that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. + - If the JSON pointer points to an array index that does not exist, it + is created an filled with a `null` value before a reference to it + is returned. All indices between the current maximum and the given + index are also filled with `null`. + - The special value `-` is treated as a synonym for the index past the + end. + + @param[in] ptr a JSON pointer + + @return reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer} + + @since version 2.0.0 + */ + reference operator[](const json_pointer& ptr) + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Uses a JSON pointer to retrieve a reference to the respective JSON value. + No bound checking is performed. The function does not change the JSON + value; no `null` values are created. In particular, the special value + `-` yields an exception. + + @param[in] ptr JSON pointer to the desired element + + @return const reference to the element pointed to by @a ptr + + @complexity Constant. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + + @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} + + @since version 2.0.0 + */ + const_reference operator[](const json_pointer& ptr) const + { + return ptr.get_unchecked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a reference to the element at with specified JSON pointer @a ptr, + with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer} + */ + reference at(const json_pointer& ptr) + { + return ptr.get_checked(this); + } + + /*! + @brief access specified element via JSON Pointer + + Returns a const reference to the element at with specified JSON pointer @a + ptr, with bounds checking. + + @param[in] ptr JSON pointer to the desired element + + @return reference to the element pointed to by @a ptr + + @throw parse_error.106 if an array index in the passed JSON pointer @a ptr + begins with '0'. See example below. + + @throw parse_error.109 if an array index in the passed JSON pointer @a ptr + is not a number. See example below. + + @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr + is out of range. See example below. + + @throw out_of_range.402 if the array index '-' is used in the passed JSON + pointer @a ptr. As `at` provides checked access (and no elements are + implicitly inserted), the index '-' is always invalid. See example below. + + @throw out_of_range.403 if the JSON pointer describes a key of an object + which cannot be found. See example below. + + @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. + See example below. + + @exceptionsafety Strong guarantee: if an exception is thrown, there are no + changes in the JSON value. + + @complexity Constant. + + @since version 2.0.0 + + @liveexample{The behavior is shown in the example.,at_json_pointer_const} + */ + const_reference at(const json_pointer& ptr) const + { + return ptr.get_checked(this); + } + + /*! + @brief return flattened JSON value + + The function creates a JSON object whose keys are JSON pointers (see [RFC + 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all + primitive. The original JSON value can be restored using the @ref + unflatten() function. + + @return an object that maps JSON pointers to primitive values + + @note Empty objects and arrays are flattened to `null` and will not be + reconstructed correctly by the @ref unflatten() function. + + @complexity Linear in the size the JSON value. + + @liveexample{The following code shows how a JSON object is flattened to an + object whose keys consist of JSON pointers.,flatten} + + @sa see @ref unflatten() for the reverse function + + @since version 2.0.0 + */ + basic_json flatten() const + { + basic_json result(value_t::object); + json_pointer::flatten("", *this, result); + return result; + } + + /*! + @brief unflatten a previously flattened JSON value + + The function restores the arbitrary nesting of a JSON value that has been + flattened before using the @ref flatten() function. The JSON value must + meet certain constraints: + 1. The value must be an object. + 2. The keys must be JSON pointers (see + [RFC 6901](https://tools.ietf.org/html/rfc6901)) + 3. The mapped values must be primitive JSON types. + + @return the original JSON from a flattened version + + @note Empty objects and arrays are flattened by @ref flatten() to `null` + values and can not unflattened to their original type. Apart from + this example, for a JSON value `j`, the following is always true: + `j == j.flatten().unflatten()`. + + @complexity Linear in the size the JSON value. + + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + + @liveexample{The following code shows how a flattened JSON object is + unflattened into the original nested JSON object.,unflatten} + + @sa see @ref flatten() for the reverse function + + @since version 2.0.0 + */ + basic_json unflatten() const + { + return json_pointer::unflatten(*this); + } + + /// @} + + ////////////////////////// + // JSON Patch functions // + ////////////////////////// + + /// @name JSON Patch functions + /// @{ + + /*! + @brief applies a JSON patch + + [JSON Patch](http://jsonpatch.com) defines a JSON document structure for + expressing a sequence of operations to apply to a JSON) document. With + this function, a JSON Patch is applied to the current JSON value by + executing all operations from the patch. + + @param[in] json_patch JSON patch document + @return patched document + + @note The application of a patch is atomic: Either all operations succeed + and the patched document is returned or an exception is thrown. In + any case, the original value is not changed: the patch is applied + to a copy of the value. + + @throw parse_error.104 if the JSON patch does not consist of an array of + objects + + @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory + attributes are missing); example: `"operation add must have member path"` + + @throw out_of_range.401 if an array index is out of range. + + @throw out_of_range.403 if a JSON pointer inside the patch could not be + resolved successfully in the current JSON value; example: `"key baz not + found"` + + @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", + "move") + + @throw other_error.501 if "test" operation was unsuccessful + + @complexity Linear in the size of the JSON value and the length of the + JSON patch. As usually only a fraction of the JSON value is affected by + the patch, the complexity can usually be neglected. + + @liveexample{The following code shows how a JSON patch is applied to a + value.,patch} + + @sa see @ref diff -- create a JSON patch by comparing two JSON values + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) + + @since version 2.0.0 + */ + basic_json patch(const basic_json& json_patch) const + { + // make a working copy to apply the patch to + basic_json result = *this; + + // the valid JSON Patch operations + enum class patch_operations { add, remove, replace, move, copy, test, invalid }; + + const auto get_op = [](const std::string& op) + { + if (op == "add") + { + return patch_operations::add; + } + if (op == "remove") + { + return patch_operations::remove; + } + if (op == "replace") + { + return patch_operations::replace; + } + if (op == "move") + { + return patch_operations::move; + } + if (op == "copy") + { + return patch_operations::copy; + } + if (op == "test") + { + return patch_operations::test; + } + + return patch_operations::invalid; + }; + + // wrapper for "add" operation; add value at ptr + const auto operation_add = [&result](json_pointer& ptr, basic_json val) + { + // adding to the root of the target document means replacing it + if (ptr.empty()) + { + result = val; + return; + } + + // make sure the top element of the pointer exists + json_pointer top_pointer = ptr.top(); + if (top_pointer != ptr) + { + result.at(top_pointer); + } + + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.back(); + ptr.pop_back(); + basic_json& parent = result[ptr]; + + switch (parent.m_type) + { + case value_t::null: + case value_t::object: + { + // use operator[] to add value + parent[last_path] = val; + break; + } + + case value_t::array: + { + if (last_path == "-") + { + // special case: append to back + parent.push_back(val); + } + else + { + const auto idx = json_pointer::array_index(last_path); + if (JSON_HEDLEY_UNLIKELY(idx > parent.size())) + { + // avoid undefined behavior + JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range", parent)); + } + + // default case: insert add offset + parent.insert(parent.begin() + static_cast(idx), val); + } + break; + } + + // if there exists a parent it cannot be primitive + case value_t::string: // LCOV_EXCL_LINE + case value_t::boolean: // LCOV_EXCL_LINE + case value_t::number_integer: // LCOV_EXCL_LINE + case value_t::number_unsigned: // LCOV_EXCL_LINE + case value_t::number_float: // LCOV_EXCL_LINE + case value_t::binary: // LCOV_EXCL_LINE + case value_t::discarded: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + }; + + // wrapper for "remove" operation; remove value at ptr + const auto operation_remove = [this, &result](json_pointer& ptr) + { + // get reference to parent of JSON pointer ptr + const auto last_path = ptr.back(); + ptr.pop_back(); + basic_json& parent = result.at(ptr); + + // remove child + if (parent.is_object()) + { + // perform range check + auto it = parent.find(last_path); + if (JSON_HEDLEY_LIKELY(it != parent.end())) + { + parent.erase(it); + } + else + { + JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found", *this)); + } + } + else if (parent.is_array()) + { + // note erase performs range check + parent.erase(json_pointer::array_index(last_path)); + } + }; + + // type check: top level value must be an array + if (JSON_HEDLEY_UNLIKELY(!json_patch.is_array())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects", json_patch)); + } + + // iterate and apply the operations + for (const auto& val : json_patch) + { + // wrapper to get a value for an operation + const auto get_value = [&val](const std::string& op, + const std::string& member, + bool string_type) -> basic_json& + { + // find value + auto it = val.m_value.object->find(member); + + // context-sensitive error message + const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; + + // check if desired value is present + if (JSON_HEDLEY_UNLIKELY(it == val.m_value.object->end())) + { + // NOLINTNEXTLINE(performance-inefficient-string-concatenation) + JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'", val)); + } + + // check if result is of type string + if (JSON_HEDLEY_UNLIKELY(string_type && !it->second.is_string())) + { + // NOLINTNEXTLINE(performance-inefficient-string-concatenation) + JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'", val)); + } + + // no error: return value + return it->second; + }; + + // type check: every element of the array must be an object + if (JSON_HEDLEY_UNLIKELY(!val.is_object())) + { + JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects", val)); + } + + // collect mandatory members + const auto op = get_value("op", "op", true).template get(); + const auto path = get_value(op, "path", true).template get(); + json_pointer ptr(path); + + switch (get_op(op)) + { + case patch_operations::add: + { + operation_add(ptr, get_value("add", "value", false)); + break; + } + + case patch_operations::remove: + { + operation_remove(ptr); + break; + } + + case patch_operations::replace: + { + // the "path" location must exist - use at() + result.at(ptr) = get_value("replace", "value", false); + break; + } + + case patch_operations::move: + { + const auto from_path = get_value("move", "from", true).template get(); + json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The move operation is functionally identical to a + // "remove" operation on the "from" location, followed + // immediately by an "add" operation at the target + // location with the value that was just removed. + operation_remove(from_ptr); + operation_add(ptr, v); + break; + } + + case patch_operations::copy: + { + const auto from_path = get_value("copy", "from", true).template get(); + const json_pointer from_ptr(from_path); + + // the "from" location must exist - use at() + basic_json v = result.at(from_ptr); + + // The copy is functionally identical to an "add" + // operation at the target location using the value + // specified in the "from" member. + operation_add(ptr, v); + break; + } + + case patch_operations::test: + { + bool success = false; + JSON_TRY + { + // check if "value" matches the one at "path" + // the "path" location must exist - use at() + success = (result.at(ptr) == get_value("test", "value", false)); + } + JSON_INTERNAL_CATCH(out_of_range&) + { + // ignore out of range errors: success remains false + } + + // throw an exception if test fails + if (JSON_HEDLEY_UNLIKELY(!success)) + { + JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump(), val)); + } + + break; + } + + case patch_operations::invalid: + default: + { + // op must be "add", "remove", "replace", "move", "copy", or + // "test" + JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid", val)); + } + } + } + + return result; + } + + /*! + @brief creates a diff as a JSON patch + + Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can + be changed into the value @a target by calling @ref patch function. + + @invariant For two JSON values @a source and @a target, the following code + yields always `true`: + @code {.cpp} + source.patch(diff(source, target)) == target; + @endcode + + @note Currently, only `remove`, `add`, and `replace` operations are + generated. + + @param[in] source JSON value to compare from + @param[in] target JSON value to compare against + @param[in] path helper value to create JSON pointers + + @return a JSON patch to convert the @a source to @a target + + @complexity Linear in the lengths of @a source and @a target. + + @liveexample{The following code shows how a JSON patch is created as a + diff for two JSON values.,diff} + + @sa see @ref patch -- apply a JSON patch + @sa see @ref merge_patch -- apply a JSON Merge Patch + + @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) + + @since version 2.0.0 + */ + JSON_HEDLEY_WARN_UNUSED_RESULT + static basic_json diff(const basic_json& source, const basic_json& target, + const std::string& path = "") + { + // the patch + basic_json result(value_t::array); + + // if the values are the same, return empty patch + if (source == target) + { + return result; + } + + if (source.type() != target.type()) + { + // different types: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + return result; + } + + switch (source.type()) + { + case value_t::array: + { + // first pass: traverse common elements + std::size_t i = 0; + while (i < source.size() && i < target.size()) + { + // recursive call to compare array values at index i + auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + ++i; + } + + // i now reached the end of at least one array + // in a second pass, traverse the remaining elements + + // remove my remaining elements + const auto end_index = static_cast(result.size()); + while (i < source.size()) + { + // add operations in reverse order to avoid invalid + // indices + result.insert(result.begin() + end_index, object( + { + {"op", "remove"}, + {"path", path + "/" + std::to_string(i)} + })); + ++i; + } + + // add other remaining elements + while (i < target.size()) + { + result.push_back( + { + {"op", "add"}, + {"path", path + "/-"}, + {"value", target[i]} + }); + ++i; + } + + break; + } + + case value_t::object: + { + // first pass: traverse this object's elements + for (auto it = source.cbegin(); it != source.cend(); ++it) + { + // escape the key name to be used in a JSON patch + const auto path_key = path + "/" + detail::escape(it.key()); + + if (target.find(it.key()) != target.end()) + { + // recursive call to compare object values at key it + auto temp_diff = diff(it.value(), target[it.key()], path_key); + result.insert(result.end(), temp_diff.begin(), temp_diff.end()); + } + else + { + // found a key that is not in o -> remove it + result.push_back(object( + { + {"op", "remove"}, {"path", path_key} + })); + } + } + + // second pass: traverse other object's elements + for (auto it = target.cbegin(); it != target.cend(); ++it) + { + if (source.find(it.key()) == source.end()) + { + // found a key that is not in this -> add it + const auto path_key = path + "/" + detail::escape(it.key()); + result.push_back( + { + {"op", "add"}, {"path", path_key}, + {"value", it.value()} + }); + } + } + + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + // both primitive type: replace value + result.push_back( + { + {"op", "replace"}, {"path", path}, {"value", target} + }); + break; + } + } + + return result; + } + + /// @} + + //////////////////////////////// + // JSON Merge Patch functions // + //////////////////////////////// + + /// @name JSON Merge Patch functions + /// @{ + + /*! + @brief applies a JSON Merge Patch + + The merge patch format is primarily intended for use with the HTTP PATCH + method as a means of describing a set of modifications to a target + resource's content. This function applies a merge patch to the current + JSON value. + + The function implements the following algorithm from Section 2 of + [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): + + ``` + define MergePatch(Target, Patch): + if Patch is an Object: + if Target is not an Object: + Target = {} // Ignore the contents and set it to an empty Object + for each Name/Value pair in Patch: + if Value is null: + if Name exists in Target: + remove the Name/Value pair from Target + else: + Target[Name] = MergePatch(Target[Name], Value) + return Target + else: + return Patch + ``` + + Thereby, `Target` is the current object; that is, the patch is applied to + the current value. + + @param[in] apply_patch the patch to apply + + @complexity Linear in the lengths of @a patch. + + @liveexample{The following code shows how a JSON Merge Patch is applied to + a JSON document.,merge_patch} + + @sa see @ref patch -- apply a JSON patch + @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) + + @since version 3.0.0 + */ + void merge_patch(const basic_json& apply_patch) + { + if (apply_patch.is_object()) + { + if (!is_object()) + { + *this = object(); + } + for (auto it = apply_patch.begin(); it != apply_patch.end(); ++it) + { + if (it.value().is_null()) + { + erase(it.key()); + } + else + { + operator[](it.key()).merge_patch(it.value()); + } + } + } + else + { + *this = apply_patch; + } + } + + /// @} + }; + + /*! + @brief user-defined to_string function for JSON values + + This function implements a user-defined to_string for JSON objects. + + @param[in] j a JSON object + @return a std::string object + */ + + NLOHMANN_BASIC_JSON_TPL_DECLARATION + std::string to_string(const NLOHMANN_BASIC_JSON_TPL& j) + { + return j.dump(); + } +} // namespace nlohmann + +/////////////////////// +// nonmember support // +/////////////////////// + +// specialization of std::swap, and std::hash +namespace std +{ + + /// hash value for JSON objects + template<> + struct hash + { + /*! + @brief return a hash value for a JSON object + + @since version 1.0.0 + */ + std::size_t operator()(const nlohmann::json& j) const + { + return nlohmann::detail::hash(j); + } + }; + + /// specialization for std::less + /// @note: do not remove the space after '<', + /// see https://github.com/nlohmann/json/pull/679 + template<> + struct less<::nlohmann::detail::value_t> + { + /*! + @brief compare two value_t enum values + @since version 3.0.0 + */ + bool operator()(nlohmann::detail::value_t lhs, + nlohmann::detail::value_t rhs) const noexcept + { + return nlohmann::detail::operator<(lhs, rhs); + } + }; + + // C++20 prohibit function specialization in the std namespace. +#ifndef JSON_HAS_CPP_20 + +/*! +@brief exchanges the values of two JSON objects + +@since version 1.0.0 +*/ + template<> + inline void swap(nlohmann::json& j1, nlohmann::json& j2) noexcept( // NOLINT(readability-inconsistent-declaration-parameter-name) + is_nothrow_move_constructible::value&& // NOLINT(misc-redundant-expression) + is_nothrow_move_assignable::value + ) + { + j1.swap(j2); + } + +#endif + +} // namespace std + +/*! +@brief user-defined string literal for JSON values + +This operator implements a user-defined string literal for JSON objects. It +can be used by adding `"_json"` to a string literal and returns a JSON object +if no parse error occurred. + +@param[in] s a string representation of a JSON object +@param[in] n the length of string @a s +@return a JSON object + +@since version 1.0.0 +*/ +JSON_HEDLEY_NON_NULL(1) +inline nlohmann::json operator "" _json(const char* s, std::size_t n) +{ + return nlohmann::json::parse(s, s + n); +} + +/*! +@brief user-defined string literal for JSON pointer + +This operator implements a user-defined string literal for JSON Pointers. It +can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer +object if no parse error occurred. + +@param[in] s a string representation of a JSON Pointer +@param[in] n the length of string @a s +@return a JSON pointer object + +@since version 2.0.0 +*/ +JSON_HEDLEY_NON_NULL(1) +inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) +{ + return nlohmann::json::json_pointer(std::string(s, n)); +} + +// #include + + +// restore clang diagnostic settings +#if defined(__clang__) +#pragma clang diagnostic pop +#endif + +// clean up +#undef JSON_ASSERT +#undef JSON_INTERNAL_CATCH +#undef JSON_CATCH +#undef JSON_THROW +#undef JSON_TRY +#undef JSON_PRIVATE_UNLESS_TESTED +#undef JSON_HAS_CPP_11 +#undef JSON_HAS_CPP_14 +#undef JSON_HAS_CPP_17 +#undef JSON_HAS_CPP_20 +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL +#undef JSON_EXPLICIT + +// #include + + +#undef JSON_HEDLEY_ALWAYS_INLINE +#undef JSON_HEDLEY_ARM_VERSION +#undef JSON_HEDLEY_ARM_VERSION_CHECK +#undef JSON_HEDLEY_ARRAY_PARAM +#undef JSON_HEDLEY_ASSUME +#undef JSON_HEDLEY_BEGIN_C_DECLS +#undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#undef JSON_HEDLEY_CLANG_HAS_FEATURE +#undef JSON_HEDLEY_CLANG_HAS_WARNING +#undef JSON_HEDLEY_COMPCERT_VERSION +#undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#undef JSON_HEDLEY_CONCAT +#undef JSON_HEDLEY_CONCAT3 +#undef JSON_HEDLEY_CONCAT3_EX +#undef JSON_HEDLEY_CONCAT_EX +#undef JSON_HEDLEY_CONST +#undef JSON_HEDLEY_CONSTEXPR +#undef JSON_HEDLEY_CONST_CAST +#undef JSON_HEDLEY_CPP_CAST +#undef JSON_HEDLEY_CRAY_VERSION +#undef JSON_HEDLEY_CRAY_VERSION_CHECK +#undef JSON_HEDLEY_C_DECL +#undef JSON_HEDLEY_DEPRECATED +#undef JSON_HEDLEY_DEPRECATED_FOR +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#undef JSON_HEDLEY_DIAGNOSTIC_POP +#undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#undef JSON_HEDLEY_DMC_VERSION +#undef JSON_HEDLEY_DMC_VERSION_CHECK +#undef JSON_HEDLEY_EMPTY_BASES +#undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#undef JSON_HEDLEY_END_C_DECLS +#undef JSON_HEDLEY_FLAGS +#undef JSON_HEDLEY_FLAGS_CAST +#undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#undef JSON_HEDLEY_GCC_HAS_BUILTIN +#undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#undef JSON_HEDLEY_GCC_HAS_EXTENSION +#undef JSON_HEDLEY_GCC_HAS_FEATURE +#undef JSON_HEDLEY_GCC_HAS_WARNING +#undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#undef JSON_HEDLEY_GCC_VERSION +#undef JSON_HEDLEY_GCC_VERSION_CHECK +#undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#undef JSON_HEDLEY_GNUC_HAS_FEATURE +#undef JSON_HEDLEY_GNUC_HAS_WARNING +#undef JSON_HEDLEY_GNUC_VERSION +#undef JSON_HEDLEY_GNUC_VERSION_CHECK +#undef JSON_HEDLEY_HAS_ATTRIBUTE +#undef JSON_HEDLEY_HAS_BUILTIN +#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#undef JSON_HEDLEY_HAS_EXTENSION +#undef JSON_HEDLEY_HAS_FEATURE +#undef JSON_HEDLEY_HAS_WARNING +#undef JSON_HEDLEY_IAR_VERSION +#undef JSON_HEDLEY_IAR_VERSION_CHECK +#undef JSON_HEDLEY_IBM_VERSION +#undef JSON_HEDLEY_IBM_VERSION_CHECK +#undef JSON_HEDLEY_IMPORT +#undef JSON_HEDLEY_INLINE +#undef JSON_HEDLEY_INTEL_CL_VERSION +#undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#undef JSON_HEDLEY_INTEL_VERSION +#undef JSON_HEDLEY_INTEL_VERSION_CHECK +#undef JSON_HEDLEY_IS_CONSTANT +#undef JSON_HEDLEY_IS_CONSTEXPR_ +#undef JSON_HEDLEY_LIKELY +#undef JSON_HEDLEY_MALLOC +#undef JSON_HEDLEY_MCST_LCC_VERSION +#undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#undef JSON_HEDLEY_MESSAGE +#undef JSON_HEDLEY_MSVC_VERSION +#undef JSON_HEDLEY_MSVC_VERSION_CHECK +#undef JSON_HEDLEY_NEVER_INLINE +#undef JSON_HEDLEY_NON_NULL +#undef JSON_HEDLEY_NO_ESCAPE +#undef JSON_HEDLEY_NO_RETURN +#undef JSON_HEDLEY_NO_THROW +#undef JSON_HEDLEY_NULL +#undef JSON_HEDLEY_PELLES_VERSION +#undef JSON_HEDLEY_PELLES_VERSION_CHECK +#undef JSON_HEDLEY_PGI_VERSION +#undef JSON_HEDLEY_PGI_VERSION_CHECK +#undef JSON_HEDLEY_PREDICT +#undef JSON_HEDLEY_PRINTF_FORMAT +#undef JSON_HEDLEY_PRIVATE +#undef JSON_HEDLEY_PUBLIC +#undef JSON_HEDLEY_PURE +#undef JSON_HEDLEY_REINTERPRET_CAST +#undef JSON_HEDLEY_REQUIRE +#undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#undef JSON_HEDLEY_REQUIRE_MSG +#undef JSON_HEDLEY_RESTRICT +#undef JSON_HEDLEY_RETURNS_NON_NULL +#undef JSON_HEDLEY_SENTINEL +#undef JSON_HEDLEY_STATIC_ASSERT +#undef JSON_HEDLEY_STATIC_CAST +#undef JSON_HEDLEY_STRINGIFY +#undef JSON_HEDLEY_STRINGIFY_EX +#undef JSON_HEDLEY_SUNPRO_VERSION +#undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#undef JSON_HEDLEY_TINYC_VERSION +#undef JSON_HEDLEY_TINYC_VERSION_CHECK +#undef JSON_HEDLEY_TI_ARMCL_VERSION +#undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#undef JSON_HEDLEY_TI_CL2000_VERSION +#undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#undef JSON_HEDLEY_TI_CL430_VERSION +#undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#undef JSON_HEDLEY_TI_CL6X_VERSION +#undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#undef JSON_HEDLEY_TI_CL7X_VERSION +#undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#undef JSON_HEDLEY_TI_CLPRU_VERSION +#undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#undef JSON_HEDLEY_TI_VERSION +#undef JSON_HEDLEY_TI_VERSION_CHECK +#undef JSON_HEDLEY_UNAVAILABLE +#undef JSON_HEDLEY_UNLIKELY +#undef JSON_HEDLEY_UNPREDICTABLE +#undef JSON_HEDLEY_UNREACHABLE +#undef JSON_HEDLEY_UNREACHABLE_RETURN +#undef JSON_HEDLEY_VERSION +#undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#undef JSON_HEDLEY_VERSION_DECODE_MINOR +#undef JSON_HEDLEY_VERSION_DECODE_REVISION +#undef JSON_HEDLEY_VERSION_ENCODE +#undef JSON_HEDLEY_WARNING +#undef JSON_HEDLEY_WARN_UNUSED_RESULT +#undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#undef JSON_HEDLEY_FALL_THROUGH + + + +#endif // INCLUDE_NLOHMANN_JSON_HPP_ diff --git a/version/json.hpp b/version/json.hpp deleted file mode 100644 index 187eab98..00000000 --- a/version/json.hpp +++ /dev/null @@ -1,17170 +0,0 @@ -/* - __ _____ _____ _____ - __| | __| | | | JSON for Modern C++ -| | |__ | | | | | | version 3.1.0 -|_____|_____|_____|_|___| https://github.com/nlohmann/json - -Licensed under the MIT License . -Copyright (c) 2013-2018 Niels Lohmann . - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#ifndef NLOHMANN_JSON_HPP -#define NLOHMANN_JSON_HPP - -#define NLOHMANN_JSON_VERSION_MAJOR 3 -#define NLOHMANN_JSON_VERSION_MINOR 1 -#define NLOHMANN_JSON_VERSION_PATCH 0 - -#include // all_of, find, for_each -#include // assert -#include // and, not, or -#include // nullptr_t, ptrdiff_t, size_t -#include // hash, less -#include // initializer_list -#include // istream, ostream -#include // iterator_traits, random_access_iterator_tag -#include // accumulate -#include // string, stoi, to_string -#include // declval, forward, move, pair, swap - -// #include -#ifndef NLOHMANN_JSON_FWD_HPP -#define NLOHMANN_JSON_FWD_HPP - -#include // int64_t, uint64_t -#include // map -#include // allocator -#include // string -#include // vector - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ -/*! -@brief default JSONSerializer template argument - -This serializer ignores the template arguments and uses ADL -([argument-dependent lookup](http://en.cppreference.com/w/cpp/language/adl)) -for serialization. -*/ -template -struct adl_serializer; - -template class ObjectType = - std::map, - template class ArrayType = std::vector, - class StringType = std::string, class BooleanType = bool, - class NumberIntegerType = std::int64_t, - class NumberUnsignedType = std::uint64_t, - class NumberFloatType = double, - template class AllocatorType = std::allocator, - template class JSONSerializer = - adl_serializer> -class basic_json; - -/*! -@brief JSON Pointer - -A JSON pointer defines a string syntax for identifying a specific value -within a JSON document. It can be used with functions `at` and -`operator[]`. Furthermore, JSON pointers are the base for JSON patches. - -@sa [RFC 6901](https://tools.ietf.org/html/rfc6901) - -@since version 2.0.0 -*/ -template -class json_pointer; - -/*! -@brief default JSON class - -This type is the default specialization of the @ref basic_json class which -uses the standard template types. - -@since version 1.0.0 -*/ -using json = basic_json<>; -} - -#endif - -// #include - - -// This file contains all internal macro definitions -// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them - -// exclude unsupported compilers -#if defined(__clang__) - #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 - #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) - #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40900 - #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" - #endif -#endif - -// disable float-equal warnings on GCC/clang -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wfloat-equal" -#endif - -// disable documentation warnings on clang -#if defined(__clang__) - #pragma GCC diagnostic push - #pragma GCC diagnostic ignored "-Wdocumentation" -#endif - -// allow for portable deprecation warnings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_DEPRECATED __attribute__((deprecated)) -#elif defined(_MSC_VER) - #define JSON_DEPRECATED __declspec(deprecated) -#else - #define JSON_DEPRECATED -#endif - -// allow to disable exceptions -#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) - #define JSON_THROW(exception) throw exception - #define JSON_TRY try - #define JSON_CATCH(exception) catch(exception) -#else - #define JSON_THROW(exception) std::abort() - #define JSON_TRY if(true) - #define JSON_CATCH(exception) if(false) -#endif - -// override exception macros -#if defined(JSON_THROW_USER) - #undef JSON_THROW - #define JSON_THROW JSON_THROW_USER -#endif -#if defined(JSON_TRY_USER) - #undef JSON_TRY - #define JSON_TRY JSON_TRY_USER -#endif -#if defined(JSON_CATCH_USER) - #undef JSON_CATCH - #define JSON_CATCH JSON_CATCH_USER -#endif - -// manual branch prediction -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #define JSON_LIKELY(x) __builtin_expect(!!(x), 1) - #define JSON_UNLIKELY(x) __builtin_expect(!!(x), 0) -#else - #define JSON_LIKELY(x) x - #define JSON_UNLIKELY(x) x -#endif - -// C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 - #define JSON_HAS_CPP_17 - #define JSON_HAS_CPP_14 -#elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) - #define JSON_HAS_CPP_14 -#endif - -// Ugly macros to avoid uglier copy-paste when specializing basic_json. They -// may be removed in the future once the class is split. - -#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ - template class ObjectType, \ - template class ArrayType, \ - class StringType, class BooleanType, class NumberIntegerType, \ - class NumberUnsignedType, class NumberFloatType, \ - template class AllocatorType, \ - template class JSONSerializer> - -#define NLOHMANN_BASIC_JSON_TPL \ - basic_json - -/*! -@brief Helper to determine whether there's a key_type for T. - -This helper is used to tell associative containers apart from other containers -such as sequence containers. For instance, `std::map` passes the test as it -contains a `mapped_type`, whereas `std::vector` fails the test. - -@sa http://stackoverflow.com/a/7728728/266378 -@since version 1.0.0, overworked in version 2.0.6 -*/ -#define NLOHMANN_JSON_HAS_HELPER(type) \ - template struct has_##type { \ - private: \ - template \ - static int detect(U &&); \ - static void detect(...); \ - public: \ - static constexpr bool value = \ - std::is_integral()))>::value; \ - } - -// #include - - -#include // not -#include // size_t -#include // numeric_limits -#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type -#include // declval - -// #include - -// #include - - -namespace nlohmann -{ -/*! -@brief detail namespace with internal helper functions - -This namespace collects functions that should not be exposed, -implementations of some @ref basic_json methods, and meta-programming helpers. - -@since version 2.1.0 -*/ -namespace detail -{ -///////////// -// helpers // -///////////// - -template struct is_basic_json : std::false_type {}; - -NLOHMANN_BASIC_JSON_TPL_DECLARATION -struct is_basic_json : std::true_type {}; - -// alias templates to reduce boilerplate -template -using enable_if_t = typename std::enable_if::type; - -template -using uncvref_t = typename std::remove_cv::type>::type; - -// implementation of C++14 index_sequence and affiliates -// source: https://stackoverflow.com/a/32223343 -template -struct index_sequence -{ - using type = index_sequence; - using value_type = std::size_t; - static constexpr std::size_t size() noexcept - { - return sizeof...(Ints); - } -}; - -template -struct merge_and_renumber; - -template -struct merge_and_renumber, index_sequence> - : index_sequence < I1..., (sizeof...(I1) + I2)... > {}; - -template -struct make_index_sequence - : merge_and_renumber < typename make_index_sequence < N / 2 >::type, - typename make_index_sequence < N - N / 2 >::type > {}; - -template<> struct make_index_sequence<0> : index_sequence<> {}; -template<> struct make_index_sequence<1> : index_sequence<0> {}; - -template -using index_sequence_for = make_index_sequence; - -/* -Implementation of two C++17 constructs: conjunction, negation. This is needed -to avoid evaluating all the traits in a condition - -For example: not std::is_same::value and has_value_type::value -will not compile when T = void (on MSVC at least). Whereas -conjunction>, has_value_type>::value will -stop evaluating if negation<...>::value == false - -Please note that those constructs must be used with caution, since symbols can -become very long quickly (which can slow down compilation and cause MSVC -internal compiler errors). Only use it when you have to (see example ahead). -*/ -template struct conjunction : std::true_type {}; -template struct conjunction : B1 {}; -template -struct conjunction : std::conditional, B1>::type {}; - -template struct negation : std::integral_constant {}; - -// dispatch utility (taken from ranges-v3) -template struct priority_tag : priority_tag < N - 1 > {}; -template<> struct priority_tag<0> {}; - -//////////////////////// -// has_/is_ functions // -//////////////////////// - -// source: https://stackoverflow.com/a/37193089/4116453 - -template -struct is_complete_type : std::false_type {}; - -template -struct is_complete_type : std::true_type {}; - -NLOHMANN_JSON_HAS_HELPER(mapped_type); -NLOHMANN_JSON_HAS_HELPER(key_type); -NLOHMANN_JSON_HAS_HELPER(value_type); -NLOHMANN_JSON_HAS_HELPER(iterator); - -template -struct is_compatible_object_type_impl : std::false_type {}; - -template -struct is_compatible_object_type_impl -{ - static constexpr auto value = - std::is_constructible::value and - std::is_constructible::value; -}; - -template -struct is_compatible_object_type -{ - static auto constexpr value = is_compatible_object_type_impl < - conjunction>, - has_mapped_type, - has_key_type>::value, - typename BasicJsonType::object_t, CompatibleObjectType >::value; -}; - -template -struct is_basic_json_nested_type -{ - static auto constexpr value = std::is_same::value or - std::is_same::value or - std::is_same::value or - std::is_same::value; -}; - -template -struct is_compatible_array_type -{ - static auto constexpr value = - conjunction>, - negation>, - negation>, - negation>, - has_value_type, - has_iterator>::value; -}; - -template -struct is_compatible_integer_type_impl : std::false_type {}; - -template -struct is_compatible_integer_type_impl -{ - // is there an assert somewhere on overflows? - using RealLimits = std::numeric_limits; - using CompatibleLimits = std::numeric_limits; - - static constexpr auto value = - std::is_constructible::value and - CompatibleLimits::is_integer and - RealLimits::is_signed == CompatibleLimits::is_signed; -}; - -template -struct is_compatible_integer_type -{ - static constexpr auto value = - is_compatible_integer_type_impl < - std::is_integral::value and - not std::is_same::value, - RealIntegerType, CompatibleNumberIntegerType > ::value; -}; - -// trait checking if JSONSerializer::from_json(json const&, udt&) exists -template -struct has_from_json -{ - private: - // also check the return type of from_json - template::from_json( - std::declval(), std::declval()))>::value>> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if JSONSerializer::from_json(json const&) exists -// this overload is used for non-default-constructible user-defined-types -template -struct has_non_default_from_json -{ - private: - template < - typename U, - typename = enable_if_t::from_json(std::declval()))>::value >> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -// This trait checks if BasicJsonType::json_serializer::to_json exists -template -struct has_to_json -{ - private: - template::to_json( - std::declval(), std::declval()))> - static int detect(U&&); - static void detect(...); - - public: - static constexpr bool value = std::is_integral>()))>::value; -}; - -template -struct is_compatible_complete_type -{ - static constexpr bool value = - not std::is_base_of::value and - not std::is_same::value and - not is_basic_json_nested_type::value and - has_to_json::value; -}; - -template -struct is_compatible_type - : conjunction, - is_compatible_complete_type> -{ -}; - -// taken from ranges-v3 -template -struct static_const -{ - static constexpr T value{}; -}; - -template -constexpr T static_const::value; -} -} - -// #include - - -#include // exception -#include // runtime_error -#include // to_string - -namespace nlohmann -{ -namespace detail -{ -//////////////// -// exceptions // -//////////////// - -/*! -@brief general exception of the @ref basic_json class - -This class is an extension of `std::exception` objects with a member @a id for -exception ids. It is used as the base class for all exceptions thrown by the -@ref basic_json class. This class can hence be used as "wildcard" to catch -exceptions. - -Subclasses: -- @ref parse_error for exceptions indicating a parse error -- @ref invalid_iterator for exceptions indicating errors with iterators -- @ref type_error for exceptions indicating executing a member function with - a wrong type -- @ref out_of_range for exceptions indicating access out of the defined range -- @ref other_error for exceptions indicating other library errors - -@internal -@note To have nothrow-copy-constructible exceptions, we internally use - `std::runtime_error` which can cope with arbitrary-length error messages. - Intermediate strings are built with static functions and then passed to - the actual constructor. -@endinternal - -@liveexample{The following code shows how arbitrary library exceptions can be -caught.,exception} - -@since version 3.0.0 -*/ -class exception : public std::exception -{ - public: - /// returns the explanatory string - const char* what() const noexcept override - { - return m.what(); - } - - /// the id of the exception - const int id; - - protected: - exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} - - static std::string name(const std::string& ename, int id_) - { - return "[json.exception." + ename + "." + std::to_string(id_) + "] "; - } - - private: - /// an exception object as storage for error messages - std::runtime_error m; -}; - -/*! -@brief exception indicating a parse error - -This exception is thrown by the library when a parse error occurs. Parse errors -can occur during the deserialization of JSON text, CBOR, MessagePack, as well -as when using JSON Patch. - -Member @a byte holds the byte index of the last read character in the input -file. - -Exceptions have ids 1xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.parse_error.101 | parse error at 2: unexpected end of input; expected string literal | This error indicates a syntax error while deserializing a JSON text. The error message describes that an unexpected token (character) was encountered, and the member @a byte indicates the error position. -json.exception.parse_error.102 | parse error at 14: missing or wrong low surrogate | JSON uses the `\uxxxx` format to describe Unicode characters. Code points above above 0xFFFF are split into two `\uxxxx` entries ("surrogate pairs"). This error indicates that the surrogate pair is incomplete or contains an invalid code point. -json.exception.parse_error.103 | parse error: code points above 0x10FFFF are invalid | Unicode supports code points up to 0x10FFFF. Code points above 0x10FFFF are invalid. -json.exception.parse_error.104 | parse error: JSON patch must be an array of objects | [RFC 6902](https://tools.ietf.org/html/rfc6902) requires a JSON Patch document to be a JSON document that represents an array of objects. -json.exception.parse_error.105 | parse error: operation must have string member 'op' | An operation of a JSON Patch document must contain exactly one "op" member, whose value indicates the operation to perform. Its value must be one of "add", "remove", "replace", "move", "copy", or "test"; other values are errors. -json.exception.parse_error.106 | parse error: array index '01' must not begin with '0' | An array index in a JSON Pointer ([RFC 6901](https://tools.ietf.org/html/rfc6901)) may be `0` or any number without a leading `0`. -json.exception.parse_error.107 | parse error: JSON pointer must be empty or begin with '/' - was: 'foo' | A JSON Pointer must be a Unicode string containing a sequence of zero or more reference tokens, each prefixed by a `/` character. -json.exception.parse_error.108 | parse error: escape character '~' must be followed with '0' or '1' | In a JSON Pointer, only `~0` and `~1` are valid escape sequences. -json.exception.parse_error.109 | parse error: array index 'one' is not a number | A JSON Pointer array index must be a number. -json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vector | When parsing CBOR or MessagePack, the byte vector ends before the complete value has been read. -json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. -json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. - -@note For an input with n bytes, 1 is the index of the first character and n+1 - is the index of the terminating null byte or the end of file. This also - holds true when reading a byte vector (CBOR or MessagePack). - -@liveexample{The following code shows how a `parse_error` exception can be -caught.,parse_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class parse_error : public exception -{ - public: - /*! - @brief create a parse error exception - @param[in] id_ the id of the exception - @param[in] byte_ the byte index where the error occurred (or 0 if the - position cannot be determined) - @param[in] what_arg the explanatory string - @return parse_error object - */ - static parse_error create(int id_, std::size_t byte_, const std::string& what_arg) - { - std::string w = exception::name("parse_error", id_) + "parse error" + - (byte_ != 0 ? (" at " + std::to_string(byte_)) : "") + - ": " + what_arg; - return parse_error(id_, byte_, w.c_str()); - } - - /*! - @brief byte index of the parse error - - The byte index of the last read character in the input file. - - @note For an input with n bytes, 1 is the index of the first character and - n+1 is the index of the terminating null byte or the end of file. - This also holds true when reading a byte vector (CBOR or MessagePack). - */ - const std::size_t byte; - - private: - parse_error(int id_, std::size_t byte_, const char* what_arg) - : exception(id_, what_arg), byte(byte_) {} -}; - -/*! -@brief exception indicating errors with iterators - -This exception is thrown if iterators passed to a library function do not match -the expected semantics. - -Exceptions have ids 2xx. - -name / id | example message | description ------------------------------------ | --------------- | ------------------------- -json.exception.invalid_iterator.201 | iterators are not compatible | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.202 | iterator does not fit current value | In an erase or insert function, the passed iterator @a pos does not belong to the JSON value for which the function was called. It hence does not define a valid position for the deletion/insertion. -json.exception.invalid_iterator.203 | iterators do not fit current value | Either iterator passed to function @ref erase(IteratorType first, IteratorType last) does not belong to the JSON value from which values shall be erased. It hence does not define a valid range to delete values from. -json.exception.invalid_iterator.204 | iterators out of range | When an iterator range for a primitive type (number, boolean, or string) is passed to a constructor or an erase function, this range has to be exactly (@ref begin(), @ref end()), because this is the only way the single stored value is expressed. All other ranges are invalid. -json.exception.invalid_iterator.205 | iterator out of range | When an iterator for a primitive type (number, boolean, or string) is passed to an erase function, the iterator has to be the @ref begin() iterator, because it is the only way to address the stored value. All other iterators are invalid. -json.exception.invalid_iterator.206 | cannot construct with iterators from null | The iterators passed to constructor @ref basic_json(InputIT first, InputIT last) belong to a JSON null value and hence to not define a valid range. -json.exception.invalid_iterator.207 | cannot use key() for non-object iterators | The key() member function can only be used on iterators belonging to a JSON object, because other types do not have a concept of a key. -json.exception.invalid_iterator.208 | cannot use operator[] for object iterators | The operator[] to specify a concrete offset cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.209 | cannot use offsets with object iterators | The offset operators (+, -, +=, -=) cannot be used on iterators belonging to a JSON object, because JSON objects are unordered. -json.exception.invalid_iterator.210 | iterators do not fit | The iterator range passed to the insert function are not compatible, meaning they do not belong to the same container. Therefore, the range (@a first, @a last) is invalid. -json.exception.invalid_iterator.211 | passed iterators may not belong to container | The iterator range passed to the insert function must not be a subrange of the container to insert to. -json.exception.invalid_iterator.212 | cannot compare iterators of different containers | When two iterators are compared, they must belong to the same container. -json.exception.invalid_iterator.213 | cannot compare order of object iterators | The order of object iterators cannot be compared, because JSON objects are unordered. -json.exception.invalid_iterator.214 | cannot get value | Cannot get value for iterator: Either the iterator belongs to a null value or it is an iterator to a primitive type (number, boolean, or string), but the iterator is different to @ref begin(). - -@liveexample{The following code shows how an `invalid_iterator` exception can be -caught.,invalid_iterator} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class invalid_iterator : public exception -{ - public: - static invalid_iterator create(int id_, const std::string& what_arg) - { - std::string w = exception::name("invalid_iterator", id_) + what_arg; - return invalid_iterator(id_, w.c_str()); - } - - private: - invalid_iterator(int id_, const char* what_arg) - : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating executing a member function with a wrong type - -This exception is thrown in case of a type error; that is, a library function is -executed on a JSON value whose type does not match the expected semantics. - -Exceptions have ids 3xx. - -name / id | example message | description ------------------------------ | --------------- | ------------------------- -json.exception.type_error.301 | cannot create object from initializer list | To create an object from an initializer list, the initializer list must consist only of a list of pairs whose first element is a string. When this constraint is violated, an array is created instead. -json.exception.type_error.302 | type must be object, but is array | During implicit or explicit value conversion, the JSON type must be compatible to the target type. For instance, a JSON string can only be converted into string types, but not into numbers or boolean types. -json.exception.type_error.303 | incompatible ReferenceType for get_ref, actual type is object | To retrieve a reference to a value stored in a @ref basic_json object with @ref get_ref, the type of the reference must match the value type. For instance, for a JSON array, the @a ReferenceType must be @ref array_t&. -json.exception.type_error.304 | cannot use at() with string | The @ref at() member functions can only be executed for certain JSON types. -json.exception.type_error.305 | cannot use operator[] with string | The @ref operator[] member functions can only be executed for certain JSON types. -json.exception.type_error.306 | cannot use value() with string | The @ref value() member functions can only be executed for certain JSON types. -json.exception.type_error.307 | cannot use erase() with string | The @ref erase() member functions can only be executed for certain JSON types. -json.exception.type_error.308 | cannot use push_back() with string | The @ref push_back() and @ref operator+= member functions can only be executed for certain JSON types. -json.exception.type_error.309 | cannot use insert() with | The @ref insert() member functions can only be executed for certain JSON types. -json.exception.type_error.310 | cannot use swap() with number | The @ref swap() member functions can only be executed for certain JSON types. -json.exception.type_error.311 | cannot use emplace_back() with string | The @ref emplace_back() member function can only be executed for certain JSON types. -json.exception.type_error.312 | cannot use update() with string | The @ref update() member functions can only be executed for certain JSON types. -json.exception.type_error.313 | invalid value to unflatten | The @ref unflatten function converts an object whose keys are JSON Pointers back into an arbitrary nested JSON value. The JSON Pointers must not overlap, because then the resulting value would not be well defined. -json.exception.type_error.314 | only objects can be unflattened | The @ref unflatten function only works for an object whose keys are JSON Pointers. -json.exception.type_error.315 | values in object must be primitive | The @ref unflatten function only works for an object whose keys are JSON Pointers and whose values are primitive. -json.exception.type_error.316 | invalid UTF-8 byte at index 10: 0x7E | The @ref dump function only works with UTF-8 encoded strings; that is, if you assign a `std::string` to a JSON value, make sure it is UTF-8 encoded. | - -@liveexample{The following code shows how a `type_error` exception can be -caught.,type_error} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref out_of_range for exceptions indicating access out of the defined range -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class type_error : public exception -{ - public: - static type_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("type_error", id_) + what_arg; - return type_error(id_, w.c_str()); - } - - private: - type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating access out of the defined range - -This exception is thrown in case a library function is called on an input -parameter that exceeds the expected range, for instance in case of array -indices or nonexisting object keys. - -Exceptions have ids 4xx. - -name / id | example message | description -------------------------------- | --------------- | ------------------------- -json.exception.out_of_range.401 | array index 3 is out of range | The provided array index @a i is larger than @a size-1. -json.exception.out_of_range.402 | array index '-' (3) is out of range | The special array index `-` in a JSON Pointer never describes a valid element of the array, but the index past the end. That is, it can only be used to add elements at this position, but not to read it. -json.exception.out_of_range.403 | key 'foo' not found | The provided key was not found in the JSON object. -json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. -json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. -json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. -json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON only supports integers numbers up to 9223372036854775807. | - -@liveexample{The following code shows how an `out_of_range` exception can be -caught.,out_of_range} - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref other_error for exceptions indicating other library errors - -@since version 3.0.0 -*/ -class out_of_range : public exception -{ - public: - static out_of_range create(int id_, const std::string& what_arg) - { - std::string w = exception::name("out_of_range", id_) + what_arg; - return out_of_range(id_, w.c_str()); - } - - private: - out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; - -/*! -@brief exception indicating other library errors - -This exception is thrown in case of errors that cannot be classified with the -other exception types. - -Exceptions have ids 5xx. - -name / id | example message | description ------------------------------- | --------------- | ------------------------- -json.exception.other_error.501 | unsuccessful: {"op":"test","path":"/baz", "value":"bar"} | A JSON Patch operation 'test' failed. The unsuccessful operation is also printed. - -@sa @ref exception for the base class of the library exceptions -@sa @ref parse_error for exceptions indicating a parse error -@sa @ref invalid_iterator for exceptions indicating errors with iterators -@sa @ref type_error for exceptions indicating executing a member function with - a wrong type -@sa @ref out_of_range for exceptions indicating access out of the defined range - -@liveexample{The following code shows how an `other_error` exception can be -caught.,other_error} - -@since version 3.0.0 -*/ -class other_error : public exception -{ - public: - static other_error create(int id_, const std::string& what_arg) - { - std::string w = exception::name("other_error", id_) + what_arg; - return other_error(id_, w.c_str()); - } - - private: - other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} -}; -} -} - -// #include - - -#include // array -#include // and -#include // size_t -#include // uint8_t - -namespace nlohmann -{ -namespace detail -{ -/////////////////////////// -// JSON type enumeration // -/////////////////////////// - -/*! -@brief the JSON type enumeration - -This enumeration collects the different JSON types. It is internally used to -distinguish the stored values, and the functions @ref basic_json::is_null(), -@ref basic_json::is_object(), @ref basic_json::is_array(), -@ref basic_json::is_string(), @ref basic_json::is_boolean(), -@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), -@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), -@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and -@ref basic_json::is_structured() rely on it. - -@note There are three enumeration entries (number_integer, number_unsigned, and -number_float), because the library distinguishes these three types for numbers: -@ref basic_json::number_unsigned_t is used for unsigned integers, -@ref basic_json::number_integer_t is used for signed integers, and -@ref basic_json::number_float_t is used for floating-point numbers or to -approximate integers which do not fit in the limits of their respective type. - -@sa @ref basic_json::basic_json(const value_t value_type) -- create a JSON -value with the default value for a given type - -@since version 1.0.0 -*/ -enum class value_t : std::uint8_t -{ - null, ///< null value - object, ///< object (unordered set of name/value pairs) - array, ///< array (ordered collection of values) - string, ///< string value - boolean, ///< boolean value - number_integer, ///< number value (signed integer) - number_unsigned, ///< number value (unsigned integer) - number_float, ///< number value (floating-point) - discarded ///< discarded by the the parser callback function -}; - -/*! -@brief comparison operator for JSON types - -Returns an ordering that is similar to Python: -- order: null < boolean < number < object < array < string -- furthermore, each type is not smaller than itself -- discarded values are not comparable - -@since version 1.0.0 -*/ -inline bool operator<(const value_t lhs, const value_t rhs) noexcept -{ - static constexpr std::array order = {{ - 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, - 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */ - } - }; - - const auto l_index = static_cast(lhs); - const auto r_index = static_cast(rhs); - return l_index < order.size() and r_index < order.size() and order[l_index] < order[r_index]; -} -} -} - -// #include - - -#include // transform -#include // array -#include // and, not -#include // forward_list -#include // inserter, front_inserter, end -#include // string -#include // tuple, make_tuple -#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible -#include // pair, declval -#include // valarray - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -// overloads for basic_json template parameters -template::value and - not std::is_same::value, - int> = 0> -void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) -{ - if (JSON_UNLIKELY(not j.is_boolean())) - { - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); - } - b = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) -{ - if (JSON_UNLIKELY(not j.is_string())) - { - JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); - } - s = *j.template get_ptr(); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) -{ - get_arithmetic_value(j, val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) -{ - get_arithmetic_value(j, val); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, EnumType& e) -{ - typename std::underlying_type::type val; - get_arithmetic_value(j, val); - e = static_cast(val); -} - -template -void from_json(const BasicJsonType& j, typename BasicJsonType::array_t& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - arr = *j.template get_ptr(); -} - -// forward_list doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::forward_list& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - std::transform(j.rbegin(), j.rend(), - std::front_inserter(l), [](const BasicJsonType & i) - { - return i.template get(); - }); -} - -// valarray doesn't have an insert method -template::value, int> = 0> -void from_json(const BasicJsonType& j, std::valarray& l) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - l.resize(j.size()); - std::copy(j.m_value.array->begin(), j.m_value.array->end(), std::begin(l)); -} - -template -void from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<0> /*unused*/) -{ - using std::end; - - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -auto from_json_array_impl(const BasicJsonType& j, CompatibleArrayType& arr, priority_tag<1> /*unused*/) --> decltype( - arr.reserve(std::declval()), - void()) -{ - using std::end; - - arr.reserve(j.size()); - std::transform(j.begin(), j.end(), - std::inserter(arr, end(arr)), [](const BasicJsonType & i) - { - // get() returns *this, this won't call a from_json - // method when value_type is BasicJsonType - return i.template get(); - }); -} - -template -void from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -{ - for (std::size_t i = 0; i < N; ++i) - { - arr[i] = j.at(i).template get(); - } -} - -template::value and - std::is_convertible::value and - not std::is_same::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleArrayType& arr) -{ - if (JSON_UNLIKELY(not j.is_array())) - { - JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); - } - - from_json_array_impl(j, arr, priority_tag<2> {}); -} - -template::value, int> = 0> -void from_json(const BasicJsonType& j, CompatibleObjectType& obj) -{ - if (JSON_UNLIKELY(not j.is_object())) - { - JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); - } - - auto inner_object = j.template get_ptr(); - using value_type = typename CompatibleObjectType::value_type; - std::transform( - inner_object->begin(), inner_object->end(), - std::inserter(obj, obj.begin()), - [](typename BasicJsonType::object_t::value_type const & p) - { - return value_type(p.first, p.second.template get()); - }); -} - -// overload for arithmetic types, not chosen for basic_json template arguments -// (BooleanType, etc..); note: Is it really necessary to provide explicit -// overloads for boolean_t etc. in case of a custom BooleanType which is not -// an arithmetic type? -template::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value, - int> = 0> -void from_json(const BasicJsonType& j, ArithmeticType& val) -{ - switch (static_cast(j)) - { - case value_t::number_unsigned: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_integer: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::number_float: - { - val = static_cast(*j.template get_ptr()); - break; - } - case value_t::boolean: - { - val = static_cast(*j.template get_ptr()); - break; - } - - default: - JSON_THROW(type_error::create(302, "type must be number, but is " + std::string(j.type_name()))); - } -} - -template -void from_json(const BasicJsonType& j, std::pair& p) -{ - p = {j.at(0).template get(), j.at(1).template get()}; -} - -template -void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_sequence) -{ - t = std::make_tuple(j.at(Idx).template get::type>()...); -} - -template -void from_json(const BasicJsonType& j, std::tuple& t) -{ - from_json_tuple_impl(j, t, index_sequence_for {}); -} - -struct from_json_fn -{ - private: - template - auto call(const BasicJsonType& j, T& val, priority_tag<1> /*unused*/) const - noexcept(noexcept(from_json(j, val))) - -> decltype(from_json(j, val), void()) - { - return from_json(j, val); - } - - template - void call(const BasicJsonType& /*unused*/, T& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find from_json() method in T's namespace"); -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(const BasicJsonType& j, T& val) const - noexcept(noexcept(std::declval().call(j, val, priority_tag<1> {}))) - { - return call(j, val, priority_tag<1> {}); - } -}; -} - -/// namespace to hold default `from_json` function -/// to see why this is required: -/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html -namespace -{ -constexpr const auto& from_json = detail::static_const::value; -} -} - -// #include - - -#include // or, and, not -#include // begin, end -#include // tuple, get -#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type -#include // move, forward, declval, pair -#include // valarray -#include // vector - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -////////////////// -// constructors // -////////////////// - -template struct external_constructor; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept - { - j.m_type = value_t::boolean; - j.m_value = b; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) - { - j.m_type = value_t::string; - j.m_value = s; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) - { - j.m_type = value_t::string; - j.m_value = std::move(s); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept - { - j.m_type = value_t::number_float; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept - { - j.m_type = value_t::number_unsigned; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept - { - j.m_type = value_t::number_integer; - j.m_value = val; - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) - { - j.m_type = value_t::array; - j.m_value = arr; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) - { - j.m_type = value_t::array; - j.m_value = std::move(arr); - j.assert_invariant(); - } - - template::value, - int> = 0> - static void construct(BasicJsonType& j, const CompatibleArrayType& arr) - { - using std::begin; - using std::end; - j.m_type = value_t::array; - j.m_value.array = j.template create(begin(arr), end(arr)); - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, const std::vector& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->reserve(arr.size()); - for (const bool x : arr) - { - j.m_value.array->push_back(x); - } - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const std::valarray& arr) - { - j.m_type = value_t::array; - j.m_value = value_t::array; - j.m_value.array->resize(arr.size()); - std::copy(std::begin(arr), std::end(arr), j.m_value.array->begin()); - j.assert_invariant(); - } -}; - -template<> -struct external_constructor -{ - template - static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) - { - j.m_type = value_t::object; - j.m_value = obj; - j.assert_invariant(); - } - - template - static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) - { - j.m_type = value_t::object; - j.m_value = std::move(obj); - j.assert_invariant(); - } - - template::value, int> = 0> - static void construct(BasicJsonType& j, const CompatibleObjectType& obj) - { - using std::begin; - using std::end; - - j.m_type = value_t::object; - j.m_value.object = j.template create(begin(obj), end(obj)); - j.assert_invariant(); - } -}; - -///////////// -// to_json // -///////////// - -template::value, int> = 0> -void to_json(BasicJsonType& j, T b) noexcept -{ - external_constructor::construct(j, b); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleString& s) -{ - external_constructor::construct(j, s); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) -{ - external_constructor::construct(j, std::move(s)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, FloatType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept -{ - external_constructor::construct(j, static_cast(val)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, EnumType e) noexcept -{ - using underlying_type = typename std::underlying_type::type; - external_constructor::construct(j, static_cast(e)); -} - -template -void to_json(BasicJsonType& j, const std::vector& e) -{ - external_constructor::construct(j, e); -} - -template::value or - std::is_same::value, - int> = 0> -void to_json(BasicJsonType& j, const CompatibleArrayType& arr) -{ - external_constructor::construct(j, arr); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, std::valarray arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) -{ - external_constructor::construct(j, std::move(arr)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, const CompatibleObjectType& obj) -{ - external_constructor::construct(j, obj); -} - -template -void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) -{ - external_constructor::construct(j, std::move(obj)); -} - -template::value, int> = 0> -void to_json(BasicJsonType& j, T (&arr)[N]) -{ - external_constructor::construct(j, arr); -} - -template -void to_json(BasicJsonType& j, const std::pair& p) -{ - j = {p.first, p.second}; -} - -template -void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence) -{ - j = {std::get(t)...}; -} - -template -void to_json(BasicJsonType& j, const std::tuple& t) -{ - to_json_tuple_impl(j, t, index_sequence_for {}); -} - -struct to_json_fn -{ - private: - template - auto call(BasicJsonType& j, T&& val, priority_tag<1> /*unused*/) const noexcept(noexcept(to_json(j, std::forward(val)))) - -> decltype(to_json(j, std::forward(val)), void()) - { - return to_json(j, std::forward(val)); - } - - template - void call(BasicJsonType& /*unused*/, T&& /*unused*/, priority_tag<0> /*unused*/) const noexcept - { - static_assert(sizeof(BasicJsonType) == 0, - "could not find to_json() method in T's namespace"); - -#ifdef _MSC_VER - // MSVC does not show a stacktrace for the above assert - using decayed = uncvref_t; - static_assert(sizeof(typename decayed::force_msvc_stacktrace) == 0, - "forcing MSVC stacktrace to show which T we're talking about."); -#endif - } - - public: - template - void operator()(BasicJsonType& j, T&& val) const - noexcept(noexcept(std::declval().call(j, std::forward(val), priority_tag<1> {}))) - { - return call(j, std::forward(val), priority_tag<1> {}); - } -}; -} - -/// namespace to hold default `to_json` function -namespace -{ -constexpr const auto& to_json = detail::static_const::value; -} -} - -// #include - - -#include // min -#include // array -#include // assert -#include // size_t -#include // strlen -#include // streamsize, streamoff, streampos -#include // istream -#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next -#include // shared_ptr, make_shared, addressof -#include // accumulate -#include // string, char_traits -#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer -#include // pair, declval - -// #include - - -namespace nlohmann -{ -namespace detail -{ -//////////////////// -// input adapters // -//////////////////// - -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of exactly -one non-EOF character for future input. The int_type characters returned -consist of all valid char values as positive values (typically unsigned char), -plus an EOF value outside that range, specified by the value of the function -std::char_traits::eof(). This value is typically -1, but could be any -arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - /// restore the last non-eof() character to input - virtual void unget_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - -/*! -Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at -beginning of input. Does not support changing the underlying std::streambuf -in mid-input. Maintains underlying std::istream and std::streambuf to support -subsequent use of standard std::istream operations to process any input -characters following those used in parsing the JSON input. Clears the -std::istream flags; any input errors (e.g., EOF) will be detected by the first -subsequent call for input from the std::istream. -*/ -class input_stream_adapter : public input_adapter_protocol -{ - public: - ~input_stream_adapter() override - { - // clear stream flags; we use underlying streambuf I/O, do not - // maintain ifstream flags - is.clear(); - } - - explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) - { - // skip byte order mark - std::char_traits::int_type c; - if ((c = get_character()) == 0xEF) - { - if ((c = get_character()) == 0xBB) - { - if ((c = get_character()) == 0xBF) - { - return; // Ignore BOM - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xBB'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); - } - is.putback('\xEF'); - } - else if (c != std::char_traits::eof()) - { - is.unget(); // no byte order mark; process as usual - } - } - - // delete because of pointer members - input_stream_adapter(const input_stream_adapter&) = delete; - input_stream_adapter& operator=(input_stream_adapter&) = delete; - - // std::istream/std::streambuf use std::char_traits::to_int_type, to - // ensure that std::char_traits::eof() and the character 0xFF do not - // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override - { - return sb.sbumpc(); - } - - void unget_character() override - { - sb.sungetc(); // is.unget() avoided for performance - } - - private: - /// the associated input stream - std::istream& is; - std::streambuf& sb; -}; - -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol -{ - public: - input_buffer_adapter(const char* b, const std::size_t l) - : cursor(b), limit(b + l), start(b) - { - // skip byte order mark - if (l >= 3 and b[0] == '\xEF' and b[1] == '\xBB' and b[2] == '\xBF') - { - cursor += 3; - } - } - - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - - std::char_traits::int_type get_character() noexcept override - { - if (JSON_LIKELY(cursor < limit)) - { - return std::char_traits::to_int_type(*(cursor++)); - } - - return std::char_traits::eof(); - } - - void unget_character() noexcept override - { - if (JSON_LIKELY(cursor > start)) - { - --cursor; - } - } - - private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* limit; - /// pointer to the first character - const char* start; -}; - -class input_adapter -{ - public: - // native support - - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} - - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} - - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} - - // derived support - - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} - - /// input adapter for iterator range with contiguous storage - template::iterator_category, std::random_access_iterator_tag>::value, - int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - assert(std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first); - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename std::iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} - - operator input_adapter_t() - { - return ia; - } - - private: - /// the actual adapter - input_adapter_t ia = nullptr; -}; -} -} - -// #include - - -#include // localeconv -#include // size_t -#include // strtof, strtod, strtold, strtoll, strtoull -#include // initializer_list -#include // hex, uppercase -#include // setw, setfill -#include // stringstream -#include // char_traits, string -#include // vector - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////// -// lexer // -/////////// - -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ -template -class lexer -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - - public: - /// token types for the parser - enum class token_type - { - uninitialized, ///< indicating the scanner is uninitialized - literal_true, ///< the `true` literal - literal_false, ///< the `false` literal - literal_null, ///< the `null` literal - value_string, ///< a string -- use get_string() for actual value - value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value - value_integer, ///< a signed integer -- use get_number_integer() for actual value - value_float, ///< an floating point number -- use get_number_float() for actual value - begin_array, ///< the character for array begin `[` - begin_object, ///< the character for object begin `{` - end_array, ///< the character for array end `]` - end_object, ///< the character for object end `}` - name_separator, ///< the name separator `:` - value_separator, ///< the value separator `,` - parse_error, ///< indicating a parse error - end_of_input, ///< indicating the end of the input buffer - literal_or_value ///< a literal or the begin of a value (only for diagnostics) - }; - - /// return name of values of type token_type (only used for errors) - static const char* token_type_name(const token_type t) noexcept - { - switch (t) - { - case token_type::uninitialized: - return ""; - case token_type::literal_true: - return "true literal"; - case token_type::literal_false: - return "false literal"; - case token_type::literal_null: - return "null literal"; - case token_type::value_string: - return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: - return "number literal"; - case token_type::begin_array: - return "'['"; - case token_type::begin_object: - return "'{'"; - case token_type::end_array: - return "']'"; - case token_type::end_object: - return "'}'"; - case token_type::name_separator: - return "':'"; - case token_type::value_separator: - return "','"; - case token_type::parse_error: - return ""; - case token_type::end_of_input: - return "end of input"; - case token_type::literal_or_value: - return "'[', '{', or a literal"; - default: // catch non-enum values - return "unknown token"; // LCOV_EXCL_LINE - } - } - - explicit lexer(detail::input_adapter_t adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} - - // delete because of pointer members - lexer(const lexer&) = delete; - lexer& operator=(lexer&) = delete; - - private: - ///////////////////// - // locales - ///////////////////// - - /// return the locale-dependent decimal point - static char get_decimal_point() noexcept - { - const auto loc = localeconv(); - assert(loc != nullptr); - return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); - } - - ///////////////////// - // scan functions - ///////////////////// - - /*! - @brief get codepoint from 4 hex characters following `\u` - - For input "\u c1 c2 c3 c4" the codepoint is: - (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 - = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) - - Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' - must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The - conversion is done by subtracting the offset (0x30, 0x37, and 0x57) - between the ASCII value of the character and the desired integer value. - - @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or - non-hex character) - */ - int get_codepoint() - { - // this function only makes sense after reading `\u` - assert(current == 'u'); - int codepoint = 0; - - const auto factors = { 12, 8, 4, 0 }; - for (const auto factor : factors) - { - get(); - - if (current >= '0' and current <= '9') - { - codepoint += ((current - 0x30) << factor); - } - else if (current >= 'A' and current <= 'F') - { - codepoint += ((current - 0x37) << factor); - } - else if (current >= 'a' and current <= 'f') - { - codepoint += ((current - 0x57) << factor); - } - else - { - return -1; - } - } - - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); - return codepoint; - } - - /*! - @brief check if the next byte(s) are inside a given range - - Adds the current byte and, for each passed range, reads a new byte and - checks if it is inside the range. If a violation was detected, set up an - error message and return false. Otherwise, return true. - - @param[in] ranges list of integers; interpreted as list of pairs of - inclusive lower and upper bound, respectively - - @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, - 1, 2, or 3 pairs. This precondition is enforced by an assertion. - - @return true if and only if no range violation was detected - */ - bool next_byte_in_range(std::initializer_list ranges) - { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); - add(current); - - for (auto range = ranges.begin(); range != ranges.end(); ++range) - { - get(); - if (JSON_LIKELY(*range <= current and current <= *(++range))) - { - add(current); - } - else - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return false; - } - } - - return true; - } - - /*! - @brief scan a string literal - - This function scans a string according to Sect. 7 of RFC 7159. While - scanning, bytes are escaped and copied into buffer token_buffer. Then the - function returns successfully, token_buffer is *not* null-terminated (as it - may contain \0 bytes), and token_buffer.size() is the number of bytes in the - string. - - @return token_type::value_string if string could be successfully scanned, - token_type::parse_error otherwise - - @note In case of errors, variable error_message contains a textual - description. - */ - token_type scan_string() - { - // reset token_buffer (ignore opening quote) - reset(); - - // we entered the function by reading an open quote - assert(current == '\"'); - - while (true) - { - // get next character - switch (get()) - { - // end of file while parsing string - case std::char_traits::eof(): - { - error_message = "invalid string: missing closing quote"; - return token_type::parse_error; - } - - // closing quote - case '\"': - { - return token_type::value_string; - } - - // escapes - case '\\': - { - switch (get()) - { - // quotation mark - case '\"': - add('\"'); - break; - // reverse solidus - case '\\': - add('\\'); - break; - // solidus - case '/': - add('/'); - break; - // backspace - case 'b': - add('\b'); - break; - // form feed - case 'f': - add('\f'); - break; - // line feed - case 'n': - add('\n'); - break; - // carriage return - case 'r': - add('\r'); - break; - // tab - case 't': - add('\t'); - break; - - // unicode escapes - case 'u': - { - const int codepoint1 = get_codepoint(); - int codepoint = codepoint1; // start with codepoint1 - - if (JSON_UNLIKELY(codepoint1 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) - { - // expect next \uxxxx entry - if (JSON_LIKELY(get() == '\\' and get() == 'u')) - { - const int codepoint2 = get_codepoint(); - - if (JSON_UNLIKELY(codepoint2 == -1)) - { - error_message = "invalid string: '\\u' must be followed by 4 hex digits"; - return token_type::parse_error; - } - - // check if codepoint2 is a low surrogate - if (JSON_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) - { - // overwrite codepoint - codepoint = - // high surrogate occupies the most significant 22 bits - (codepoint1 << 10) - // low surrogate occupies the least significant 15 bits - + codepoint2 - // there is still the 0xD800, 0xDC00 and 0x10000 noise - // in the result so we have to subtract with: - // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 - - 0x35FDC00; - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; - return token_type::parse_error; - } - } - else - { - if (JSON_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) - { - error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; - return token_type::parse_error; - } - } - - // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); - - // translate codepoint into bytes - if (codepoint < 0x80) - { - // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); - } - else if (codepoint <= 0x7FF) - { - // 2-byte characters: 110xxxxx 10xxxxxx - add(0xC0 | (codepoint >> 6)); - add(0x80 | (codepoint & 0x3F)); - } - else if (codepoint <= 0xFFFF) - { - // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(0xE0 | (codepoint >> 12)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - else - { - // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(0xF0 | (codepoint >> 18)); - add(0x80 | ((codepoint >> 12) & 0x3F)); - add(0x80 | ((codepoint >> 6) & 0x3F)); - add(0x80 | (codepoint & 0x3F)); - } - - break; - } - - // other characters after escape - default: - error_message = "invalid string: forbidden character after backslash"; - return token_type::parse_error; - } - - break; - } - - // invalid control characters - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - { - error_message = "invalid string: control character must be escaped"; - return token_type::parse_error; - } - - // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) - case 0x20: - case 0x21: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - { - add(current); - break; - } - - // U+0080..U+07FF: bytes C2..DF 80..BF - case 0xC2: - case 0xC3: - case 0xC4: - case 0xC5: - case 0xC6: - case 0xC7: - case 0xC8: - case 0xC9: - case 0xCA: - case 0xCB: - case 0xCC: - case 0xCD: - case 0xCE: - case 0xCF: - case 0xD0: - case 0xD1: - case 0xD2: - case 0xD3: - case 0xD4: - case 0xD5: - case 0xD6: - case 0xD7: - case 0xD8: - case 0xD9: - case 0xDA: - case 0xDB: - case 0xDC: - case 0xDD: - case 0xDE: - case 0xDF: - { - if (JSON_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) - { - return token_type::parse_error; - } - break; - } - - // U+0800..U+0FFF: bytes E0 A0..BF 80..BF - case 0xE0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF - // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xEE: - case 0xEF: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+D000..U+D7FF: bytes ED 80..9F 80..BF - case 0xED: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF - case 0xF0: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - case 0xF1: - case 0xF2: - case 0xF3: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - case 0xF4: - { - if (JSON_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) - { - return token_type::parse_error; - } - break; - } - - // remaining bytes (80..C1 and F5..FF) are ill-formed - default: - { - error_message = "invalid string: ill-formed UTF-8 byte"; - return token_type::parse_error; - } - } - } - } - - static void strtof(float& f, const char* str, char** endptr) noexcept - { - f = std::strtof(str, endptr); - } - - static void strtof(double& f, const char* str, char** endptr) noexcept - { - f = std::strtod(str, endptr); - } - - static void strtof(long double& f, const char* str, char** endptr) noexcept - { - f = std::strtold(str, endptr); - } - - /*! - @brief scan a number literal - - This function scans a string according to Sect. 6 of RFC 7159. - - The function is realized with a deterministic finite state machine derived - from the grammar described in RFC 7159. Starting in state "init", the - input is read and used to determined the next state. Only state "done" - accepts the number. State "error" is a trap state to model errors. In the - table below, "anything" means any character but the ones listed before. - - state | 0 | 1-9 | e E | + | - | . | anything - ---------|----------|----------|----------|---------|---------|----------|----------- - init | zero | any1 | [error] | [error] | minus | [error] | [error] - minus | zero | any1 | [error] | [error] | [error] | [error] | [error] - zero | done | done | exponent | done | done | decimal1 | done - any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] - decimal2 | decimal2 | decimal2 | exponent | done | done | done | done - exponent | any2 | any2 | [error] | sign | sign | [error] | [error] - sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] - any2 | any2 | any2 | done | done | done | done | done - - The state machine is realized with one label per state (prefixed with - "scan_number_") and `goto` statements between them. The state machine - contains cycles, but any cycle can be left when EOF is read. Therefore, - the function is guaranteed to terminate. - - During scanning, the read bytes are stored in token_buffer. This string is - then converted to a signed integer, an unsigned integer, or a - floating-point number. - - @return token_type::value_unsigned, token_type::value_integer, or - token_type::value_float if number could be successfully scanned, - token_type::parse_error otherwise - - @note The scanner is independent of the current locale. Internally, the - locale's decimal point is used instead of `.` to work with the - locale-dependent converters. - */ - token_type scan_number() - { - // reset token_buffer to store the number's bytes - reset(); - - // the type of the parsed number; initially set to unsigned; will be - // changed if minus sign, decimal point or exponent is read - token_type number_type = token_type::value_unsigned; - - // state (init): we just found out we need to scan a number - switch (current) - { - case '-': - { - add(current); - goto scan_number_minus; - } - - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - // all other characters are rejected outside scan_number() - assert(false); // LCOV_EXCL_LINE - } - } - -scan_number_minus: - // state: we just parsed a leading minus sign - number_type = token_type::value_integer; - switch (get()) - { - case '0': - { - add(current); - goto scan_number_zero; - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - default: - { - error_message = "invalid number; expected digit after '-'"; - return token_type::parse_error; - } - } - -scan_number_zero: - // state: we just parse a zero (maybe with a leading minus sign) - switch (get()) - { - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_any1: - // state: we just parsed a number 0-9 (maybe with a leading minus sign) - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any1; - } - - case '.': - { - add(decimal_point_char); - goto scan_number_decimal1; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_decimal1: - // state: we just parsed a decimal point - number_type = token_type::value_float; - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - default: - { - error_message = "invalid number; expected digit after '.'"; - return token_type::parse_error; - } - } - -scan_number_decimal2: - // we just parsed at least one number after a decimal point - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_decimal2; - } - - case 'e': - case 'E': - { - add(current); - goto scan_number_exponent; - } - - default: - goto scan_number_done; - } - -scan_number_exponent: - // we just parsed an exponent - number_type = token_type::value_float; - switch (get()) - { - case '+': - case '-': - { - add(current); - goto scan_number_sign; - } - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = - "invalid number; expected '+', '-', or digit after exponent"; - return token_type::parse_error; - } - } - -scan_number_sign: - // we just parsed an exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - { - error_message = "invalid number; expected digit after exponent sign"; - return token_type::parse_error; - } - } - -scan_number_any2: - // we just parsed a number after the exponent or exponent sign - switch (get()) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - add(current); - goto scan_number_any2; - } - - default: - goto scan_number_done; - } - -scan_number_done: - // unget the character after the number (we only read it to know that - // we are done scanning a number) - unget(); - - char* endptr = nullptr; - errno = 0; - - // try to parse integers first and fall back to floats - if (number_type == token_type::value_unsigned) - { - const auto x = std::strtoull(token_buffer.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); - - if (errno == 0) - { - value_unsigned = static_cast(x); - if (value_unsigned == x) - { - return token_type::value_unsigned; - } - } - } - else if (number_type == token_type::value_integer) - { - const auto x = std::strtoll(token_buffer.data(), &endptr, 10); - - // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); - - if (errno == 0) - { - value_integer = static_cast(x); - if (value_integer == x) - { - return token_type::value_integer; - } - } - } - - // this code is reached if we parse a floating-point number or if an - // integer conversion above failed - strtof(value_float, token_buffer.data(), &endptr); - - // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); - - return token_type::value_float; - } - - /*! - @param[in] literal_text the literal text to expect - @param[in] length the length of the passed literal text - @param[in] return_type the token type to return on success - */ - token_type scan_literal(const char* literal_text, const std::size_t length, - token_type return_type) - { - assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) - { - if (JSON_UNLIKELY(get() != literal_text[i])) - { - error_message = "invalid literal"; - return token_type::parse_error; - } - } - return return_type; - } - - ///////////////////// - // input management - ///////////////////// - - /// reset token_buffer; current character is beginning of token - void reset() noexcept - { - token_buffer.clear(); - token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); - } - - /* - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a - `std::char_traits::eof()` in that case. Stores the scanned characters - for use in error messages. - - @return character read from the input - */ - std::char_traits::int_type get() - { - ++chars_read; - current = ia->get_character(); - if (JSON_LIKELY(current != std::char_traits::eof())) - { - token_string.push_back(std::char_traits::to_char_type(current)); - } - return current; - } - - /// unget current character (return it again on next get) - void unget() - { - --chars_read; - if (JSON_LIKELY(current != std::char_traits::eof())) - { - ia->unget_character(); - assert(token_string.size() != 0); - token_string.pop_back(); - } - } - - /// add a character to token_buffer - void add(int c) - { - token_buffer.push_back(std::char_traits::to_char_type(c)); - } - - public: - ///////////////////// - // value getters - ///////////////////// - - /// return integer value - constexpr number_integer_t get_number_integer() const noexcept - { - return value_integer; - } - - /// return unsigned integer value - constexpr number_unsigned_t get_number_unsigned() const noexcept - { - return value_unsigned; - } - - /// return floating-point value - constexpr number_float_t get_number_float() const noexcept - { - return value_float; - } - - /// return current string value (implicitly resets the token; useful only once) - std::string move_string() - { - return std::move(token_buffer); - } - - ///////////////////// - // diagnostics - ///////////////////// - - /// return position of last read token - constexpr std::size_t get_position() const noexcept - { - return chars_read; - } - - /// return the last read token (for errors only). Will never contain EOF - /// (an arbitrary value that is not a valid char value, often -1), because - /// 255 may legitimately occur. May contain NUL, which should be escaped. - std::string get_token_string() const - { - // escape control characters - std::string result; - for (const auto c : token_string) - { - if ('\x00' <= c and c <= '\x1F') - { - // escape control characters - std::stringstream ss; - ss << "(c) << ">"; - result += ss.str(); - } - else - { - // add character as is - result.push_back(c); - } - } - - return result; - } - - /// return syntax error message - constexpr const char* get_error_message() const noexcept - { - return error_message; - } - - ///////////////////// - // actual scanner - ///////////////////// - - token_type scan() - { - // read next character and ignore whitespace - do - { - get(); - } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); - - switch (current) - { - // structural characters - case '[': - return token_type::begin_array; - case ']': - return token_type::end_array; - case '{': - return token_type::begin_object; - case '}': - return token_type::end_object; - case ':': - return token_type::name_separator; - case ',': - return token_type::value_separator; - - // literals - case 't': - return scan_literal("true", 4, token_type::literal_true); - case 'f': - return scan_literal("false", 5, token_type::literal_false); - case 'n': - return scan_literal("null", 4, token_type::literal_null); - - // string - case '\"': - return scan_string(); - - // number - case '-': - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - return scan_number(); - - // end of input (the null byte is needed when parsing from - // string literals) - case '\0': - case std::char_traits::eof(): - return token_type::end_of_input; - - // error - default: - error_message = "invalid literal"; - return token_type::parse_error; - } - } - - private: - /// input adapter - detail::input_adapter_t ia = nullptr; - - /// the current character - std::char_traits::int_type current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// raw input token string (for error messages) - std::vector token_string {}; - - /// buffer for variable-length tokens (numbers, strings) - std::string token_buffer {}; - - /// a description of occurred lexer errors - const char* error_message = ""; - - // number values - number_integer_t value_integer = 0; - number_unsigned_t value_unsigned = 0; - number_float_t value_float = 0; - - /// the decimal point - const char decimal_point_char = '.'; -}; -} -} - -// #include - - -#include // assert -#include // isfinite -#include // uint8_t -#include // function -#include // string -#include // move - -// #include - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -//////////// -// parser // -//////////// - -/*! -@brief syntax analysis - -This class implements a recursive decent parser. -*/ -template -class parser -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using lexer_t = lexer; - using token_type = typename lexer_t::token_type; - - public: - enum class parse_event_t : uint8_t - { - /// the parser read `{` and started to process a JSON object - object_start, - /// the parser read `}` and finished processing a JSON object - object_end, - /// the parser read `[` and started to process a JSON array - array_start, - /// the parser read `]` and finished processing a JSON array - array_end, - /// the parser read a key of a value in an object - key, - /// the parser finished reading a JSON value - value - }; - - using parser_callback_t = - std::function; - - /// a parser reading from an input adapter - explicit parser(detail::input_adapter_t adapter, - const parser_callback_t cb = nullptr, - const bool allow_exceptions_ = true) - : callback(cb), m_lexer(adapter), allow_exceptions(allow_exceptions_) - {} - - /*! - @brief public parser interface - - @param[in] strict whether to expect the last token to be EOF - @param[in,out] result parsed JSON value - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse(const bool strict, BasicJsonType& result) - { - // read first token - get_token(); - - parse_internal(true, result); - result.assert_invariant(); - - // in strict mode, input must be completely read - if (strict) - { - get_token(); - expect(token_type::end_of_input); - } - - // in case of an error, return discarded value - if (errored) - { - result = value_t::discarded; - return; - } - - // set top-level value to null if it was discarded by the callback - // function - if (result.is_discarded()) - { - result = nullptr; - } - } - - /*! - @brief public accept interface - - @param[in] strict whether to expect the last token to be EOF - @return whether the input is a proper JSON text - */ - bool accept(const bool strict = true) - { - // read first token - get_token(); - - if (not accept_internal()) - { - return false; - } - - // strict => last token must be EOF - return not strict or (get_token() == token_type::end_of_input); - } - - private: - /*! - @brief the actual parser - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - */ - void parse_internal(bool keep, BasicJsonType& result) - { - // never parse after a parse error was detected - assert(not errored); - - // start with a discarded value - if (not result.is_discarded()) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - - switch (last_token) - { - case token_type::begin_object: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::object_start, result); - } - - if (not callback or keep) - { - // explicitly set result to object to cope with {} - result.m_type = value_t::object; - result.m_value = value_t::object; - } - } - - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - std::string key; - BasicJsonType value; - while (true) - { - // store key - if (not expect(token_type::value_string)) - { - return; - } - key = m_lexer.move_string(); - - bool keep_tag = false; - if (keep) - { - if (callback) - { - BasicJsonType k(key); - keep_tag = callback(depth, parse_event_t::key, k); - } - else - { - keep_tag = true; - } - } - - // parse separator (:) - get_token(); - if (not expect(token_type::name_separator)) - { - return; - } - - // parse and add value - get_token(); - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and keep_tag and not value.is_discarded()) - { - result.m_value.object->emplace(std::move(key), std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - if (not expect(token_type::end_object)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::object_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::begin_array: - { - if (keep) - { - if (callback) - { - keep = callback(depth++, parse_event_t::array_start, result); - } - - if (not callback or keep) - { - // explicitly set result to array to cope with [] - result.m_type = value_t::array; - result.m_value = value_t::array; - } - } - - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - if (callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - // parse values - BasicJsonType value; - while (true) - { - // parse value - value.m_value.destroy(value.m_type); - value.m_type = value_t::discarded; - parse_internal(keep, value); - - if (JSON_UNLIKELY(errored)) - { - return; - } - - if (keep and not value.is_discarded()) - { - result.m_value.array->push_back(std::move(value)); - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - if (not expect(token_type::end_array)) - { - return; - } - break; - } - - if (keep and callback and not callback(--depth, parse_event_t::array_end, result)) - { - result.m_value.destroy(result.m_type); - result.m_type = value_t::discarded; - } - break; - } - - case token_type::literal_null: - { - result.m_type = value_t::null; - break; - } - - case token_type::value_string: - { - result.m_type = value_t::string; - result.m_value = m_lexer.move_string(); - break; - } - - case token_type::literal_true: - { - result.m_type = value_t::boolean; - result.m_value = true; - break; - } - - case token_type::literal_false: - { - result.m_type = value_t::boolean; - result.m_value = false; - break; - } - - case token_type::value_unsigned: - { - result.m_type = value_t::number_unsigned; - result.m_value = m_lexer.get_number_unsigned(); - break; - } - - case token_type::value_integer: - { - result.m_type = value_t::number_integer; - result.m_value = m_lexer.get_number_integer(); - break; - } - - case token_type::value_float: - { - result.m_type = value_t::number_float; - result.m_value = m_lexer.get_number_float(); - - // throw in case of infinity or NAN - if (JSON_UNLIKELY(not std::isfinite(result.m_value.number_float))) - { - if (allow_exceptions) - { - JSON_THROW(out_of_range::create(406, "number overflow parsing '" + - m_lexer.get_token_string() + "'")); - } - expect(token_type::uninitialized); - } - break; - } - - case token_type::parse_error: - { - // using "uninitialized" to avoid "expected" message - if (not expect(token_type::uninitialized)) - { - return; - } - break; // LCOV_EXCL_LINE - } - - default: - { - // the last token was unexpected; we expected a value - if (not expect(token_type::literal_or_value)) - { - return; - } - break; // LCOV_EXCL_LINE - } - } - - if (keep and callback and not callback(depth, parse_event_t::value, result)) - { - result.m_type = value_t::discarded; - } - } - - /*! - @brief the actual acceptor - - @invariant 1. The last token is not yet processed. Therefore, the caller - of this function must make sure a token has been read. - 2. When this function returns, the last token is processed. - That is, the last read character was already considered. - - This invariant makes sure that no token needs to be "unput". - */ - bool accept_internal() - { - switch (last_token) - { - case token_type::begin_object: - { - // read next token - get_token(); - - // closing } -> we are done - if (last_token == token_type::end_object) - { - return true; - } - - // parse values - while (true) - { - // parse key - if (last_token != token_type::value_string) - { - return false; - } - - // parse separator (:) - get_token(); - if (last_token != token_type::name_separator) - { - return false; - } - - // parse value - get_token(); - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing } - return (last_token == token_type::end_object); - } - } - - case token_type::begin_array: - { - // read next token - get_token(); - - // closing ] -> we are done - if (last_token == token_type::end_array) - { - return true; - } - - // parse values - while (true) - { - // parse value - if (not accept_internal()) - { - return false; - } - - // comma -> next value - get_token(); - if (last_token == token_type::value_separator) - { - get_token(); - continue; - } - - // closing ] - return (last_token == token_type::end_array); - } - } - - case token_type::value_float: - { - // reject infinity or NAN - return std::isfinite(m_lexer.get_number_float()); - } - - case token_type::literal_false: - case token_type::literal_null: - case token_type::literal_true: - case token_type::value_integer: - case token_type::value_string: - case token_type::value_unsigned: - return true; - - default: // the last token was unexpected - return false; - } - } - - /// get next token from lexer - token_type get_token() - { - return (last_token = m_lexer.scan()); - } - - /*! - @throw parse_error.101 if expected token did not occur - */ - bool expect(token_type t) - { - if (JSON_UNLIKELY(t != last_token)) - { - errored = true; - expected = t; - if (allow_exceptions) - { - throw_exception(); - } - else - { - return false; - } - } - - return true; - } - - [[noreturn]] void throw_exception() const - { - std::string error_msg = "syntax error - "; - if (last_token == token_type::parse_error) - { - error_msg += std::string(m_lexer.get_error_message()) + "; last read: '" + - m_lexer.get_token_string() + "'"; - } - else - { - error_msg += "unexpected " + std::string(lexer_t::token_type_name(last_token)); - } - - if (expected != token_type::uninitialized) - { - error_msg += "; expected " + std::string(lexer_t::token_type_name(expected)); - } - - JSON_THROW(parse_error::create(101, m_lexer.get_position(), error_msg)); - } - - private: - /// current level of recursion - int depth = 0; - /// callback function - const parser_callback_t callback = nullptr; - /// the type of the last read token - token_type last_token = token_type::uninitialized; - /// the lexer - lexer_t m_lexer; - /// whether a syntax error occurred - bool errored = false; - /// possible reason for the syntax error - token_type expected = token_type::uninitialized; - /// whether to throw exceptions in case of errors - const bool allow_exceptions = true; -}; -} -} - -// #include - - -#include // ptrdiff_t -#include // numeric_limits - -namespace nlohmann -{ -namespace detail -{ -/* -@brief an iterator for primitive JSON types - -This class models an iterator for primitive JSON types (boolean, number, -string). It's only purpose is to allow the iterator/const_iterator classes -to "iterate" over primitive values. Internally, the iterator is modeled by -a `difference_type` variable. Value begin_value (`0`) models the begin, -end_value (`1`) models past the end. -*/ -class primitive_iterator_t -{ - private: - using difference_type = std::ptrdiff_t; - static constexpr difference_type begin_value = 0; - static constexpr difference_type end_value = begin_value + 1; - - /// iterator as signed integer type - difference_type m_it = (std::numeric_limits::min)(); - - public: - constexpr difference_type get_value() const noexcept - { - return m_it; - } - - /// set iterator to a defined beginning - void set_begin() noexcept - { - m_it = begin_value; - } - - /// set iterator to a defined past the end - void set_end() noexcept - { - m_it = end_value; - } - - /// return whether the iterator can be dereferenced - constexpr bool is_begin() const noexcept - { - return m_it == begin_value; - } - - /// return whether the iterator is at end - constexpr bool is_end() const noexcept - { - return m_it == end_value; - } - - friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it == rhs.m_it; - } - - friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it < rhs.m_it; - } - - primitive_iterator_t operator+(difference_type n) noexcept - { - auto result = *this; - result += n; - return result; - } - - friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept - { - return lhs.m_it - rhs.m_it; - } - - primitive_iterator_t& operator++() noexcept - { - ++m_it; - return *this; - } - - primitive_iterator_t const operator++(int) noexcept - { - auto result = *this; - m_it++; - return result; - } - - primitive_iterator_t& operator--() noexcept - { - --m_it; - return *this; - } - - primitive_iterator_t const operator--(int) noexcept - { - auto result = *this; - m_it--; - return result; - } - - primitive_iterator_t& operator+=(difference_type n) noexcept - { - m_it += n; - return *this; - } - - primitive_iterator_t& operator-=(difference_type n) noexcept - { - m_it -= n; - return *this; - } -}; -} -} - -// #include - - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/*! -@brief an iterator value - -@note This structure could easily be a union, but MSVC currently does not allow -unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. -*/ -template struct internal_iterator -{ - /// iterator for JSON objects - typename BasicJsonType::object_t::iterator object_iterator {}; - /// iterator for JSON arrays - typename BasicJsonType::array_t::iterator array_iterator {}; - /// generic iterator for all other types - primitive_iterator_t primitive_iterator {}; -}; -} -} - -// #include - - -#include // not -#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next -#include // conditional, is_const, remove_const - -// #include - -// #include - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -// forward declare, to be able to friend it later on -template class iteration_proxy; - -/*! -@brief a template for a bidirectional iterator for the @ref basic_json class - -This class implements a both iterators (iterator and const_iterator) for the -@ref basic_json class. - -@note An iterator is called *initialized* when a pointer to a JSON value has - been set (e.g., by a constructor or a copy assignment). If the iterator is - default-constructed, it is *uninitialized* and most methods are undefined. - **The library uses assertions to detect calls on uninitialized iterators.** - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). - -@since version 1.0.0, simplified in version 2.0.9, change to bidirectional - iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) -*/ -template -class iter_impl -{ - /// allow basic_json to access private members - friend iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; - friend BasicJsonType; - friend iteration_proxy; - - using object_t = typename BasicJsonType::object_t; - using array_t = typename BasicJsonType::array_t; - // make sure BasicJsonType is basic_json or const basic_json - static_assert(is_basic_json::type>::value, - "iter_impl only accepts (const) basic_json"); - - public: - - /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. - /// The C++ Standard has never required user-defined iterators to derive from std::iterator. - /// A user-defined iterator should provide publicly accessible typedefs named - /// iterator_category, value_type, difference_type, pointer, and reference. - /// Note that value_type is required to be non-const, even for constant iterators. - using iterator_category = std::bidirectional_iterator_tag; - - /// the type of the values when the iterator is dereferenced - using value_type = typename BasicJsonType::value_type; - /// a type to represent differences between iterators - using difference_type = typename BasicJsonType::difference_type; - /// defines a pointer to the type iterated over (value_type) - using pointer = typename std::conditional::value, - typename BasicJsonType::const_pointer, - typename BasicJsonType::pointer>::type; - /// defines a reference to the type iterated over (value_type) - using reference = - typename std::conditional::value, - typename BasicJsonType::const_reference, - typename BasicJsonType::reference>::type; - - /// default constructor - iter_impl() = default; - - /*! - @brief constructor for a given JSON instance - @param[in] object pointer to a JSON object for this iterator - @pre object != nullptr - @post The iterator is initialized; i.e. `m_object != nullptr`. - */ - explicit iter_impl(pointer object) noexcept : m_object(object) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = typename object_t::iterator(); - break; - } - - case value_t::array: - { - m_it.array_iterator = typename array_t::iterator(); - break; - } - - default: - { - m_it.primitive_iterator = primitive_iterator_t(); - break; - } - } - } - - /*! - @note The conventional copy constructor and copy assignment are implicitly - defined. Combined with the following converting constructor and - assignment, they support: (1) copy from iterator to iterator, (2) - copy from const iterator to const iterator, and (3) conversion from - iterator to const iterator. However conversion from const iterator - to iterator is not defined. - */ - - /*! - @brief converting constructor - @param[in] other non-const iterator to copy from - @note It is not checked whether @a other is initialized. - */ - iter_impl(const iter_impl::type>& other) noexcept - : m_object(other.m_object), m_it(other.m_it) {} - - /*! - @brief converting assignment - @param[in,out] other non-const iterator to copy from - @return const/non-const iterator - @note It is not checked whether @a other is initialized. - */ - iter_impl& operator=(const iter_impl::type>& other) noexcept - { - m_object = other.m_object; - m_it = other.m_it; - return *this; - } - - private: - /*! - @brief set the iterator to the first value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_begin() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->begin(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->begin(); - break; - } - - case value_t::null: - { - // set to end so begin()==end() is true: null is empty - m_it.primitive_iterator.set_end(); - break; - } - - default: - { - m_it.primitive_iterator.set_begin(); - break; - } - } - } - - /*! - @brief set the iterator past the last value - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - void set_end() noexcept - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - m_it.object_iterator = m_object->m_value.object->end(); - break; - } - - case value_t::array: - { - m_it.array_iterator = m_object->m_value.array->end(); - break; - } - - default: - { - m_it.primitive_iterator.set_end(); - break; - } - } - } - - public: - /*! - @brief return a reference to the value pointed to by the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator*() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return m_it.object_iterator->second; - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return *m_it.array_iterator; - } - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief dereference the iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - pointer operator->() const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - assert(m_it.object_iterator != m_object->m_value.object->end()); - return &(m_it.object_iterator->second); - } - - case value_t::array: - { - assert(m_it.array_iterator != m_object->m_value.array->end()); - return &*m_it.array_iterator; - } - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.is_begin())) - { - return m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief post-increment (it++) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator++(int) - { - auto result = *this; - ++(*this); - return result; - } - - /*! - @brief pre-increment (++it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator++() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, 1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, 1); - break; - } - - default: - { - ++m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief post-decrement (it--) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl const operator--(int) - { - auto result = *this; - --(*this); - return result; - } - - /*! - @brief pre-decrement (--it) - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator--() - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - { - std::advance(m_it.object_iterator, -1); - break; - } - - case value_t::array: - { - std::advance(m_it.array_iterator, -1); - break; - } - - default: - { - --m_it.primitive_iterator; - break; - } - } - - return *this; - } - - /*! - @brief comparison: equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator==(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - return (m_it.object_iterator == other.m_it.object_iterator); - - case value_t::array: - return (m_it.array_iterator == other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator == other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: not equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator!=(const iter_impl& other) const - { - return not operator==(other); - } - - /*! - @brief comparison: smaller - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<(const iter_impl& other) const - { - // if objects are not the same, the comparison is undefined - if (JSON_UNLIKELY(m_object != other.m_object)) - { - JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); - } - - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators")); - - case value_t::array: - return (m_it.array_iterator < other.m_it.array_iterator); - - default: - return (m_it.primitive_iterator < other.m_it.primitive_iterator); - } - } - - /*! - @brief comparison: less than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator<=(const iter_impl& other) const - { - return not other.operator < (*this); - } - - /*! - @brief comparison: greater than - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>(const iter_impl& other) const - { - return not operator<=(other); - } - - /*! - @brief comparison: greater than or equal - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - bool operator>=(const iter_impl& other) const - { - return not operator<(other); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator+=(difference_type i) - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - { - std::advance(m_it.array_iterator, i); - break; - } - - default: - { - m_it.primitive_iterator += i; - break; - } - } - - return *this; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl& operator-=(difference_type i) - { - return operator+=(-i); - } - - /*! - @brief add to iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator+(difference_type i) const - { - auto result = *this; - result += i; - return result; - } - - /*! - @brief addition of distance and iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - friend iter_impl operator+(difference_type i, const iter_impl& it) - { - auto result = it; - result += i; - return result; - } - - /*! - @brief subtract from iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - iter_impl operator-(difference_type i) const - { - auto result = *this; - result -= i; - return result; - } - - /*! - @brief return difference - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - difference_type operator-(const iter_impl& other) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators")); - - case value_t::array: - return m_it.array_iterator - other.m_it.array_iterator; - - default: - return m_it.primitive_iterator - other.m_it.primitive_iterator; - } - } - - /*! - @brief access to successor - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference operator[](difference_type n) const - { - assert(m_object != nullptr); - - switch (m_object->m_type) - { - case value_t::object: - JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators")); - - case value_t::array: - return *std::next(m_it.array_iterator, n); - - case value_t::null: - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - - default: - { - if (JSON_LIKELY(m_it.primitive_iterator.get_value() == -n)) - { - return *m_object; - } - - JSON_THROW(invalid_iterator::create(214, "cannot get value")); - } - } - } - - /*! - @brief return the key of an object iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - typename object_t::key_type key() const - { - assert(m_object != nullptr); - - if (JSON_LIKELY(m_object->is_object())) - { - return m_it.object_iterator->first; - } - - JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators")); - } - - /*! - @brief return the value of an iterator - @pre The iterator is initialized; i.e. `m_object != nullptr`. - */ - reference value() const - { - return operator*(); - } - - private: - /// associated JSON instance - pointer m_object = nullptr; - /// the actual iterator of the associated instance - internal_iterator::type> m_it; -}; -} -} - -// #include - - -#include // size_t -#include // string, to_string - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/// proxy class for the items() function -template class iteration_proxy -{ - private: - /// helper class for iteration - class iteration_proxy_internal - { - private: - /// the iterator - IteratorType anchor; - /// an index for arrays (used to create key names) - std::size_t array_index = 0; - - public: - explicit iteration_proxy_internal(IteratorType it) noexcept : anchor(it) {} - - /// dereference operator (needed for range-based for) - iteration_proxy_internal& operator*() - { - return *this; - } - - /// increment operator (needed for range-based for) - iteration_proxy_internal& operator++() - { - ++anchor; - ++array_index; - - return *this; - } - - /// inequality operator (needed for range-based for) - bool operator!=(const iteration_proxy_internal& o) const noexcept - { - return anchor != o.anchor; - } - - /// return key of the iterator - std::string key() const - { - assert(anchor.m_object != nullptr); - - switch (anchor.m_object->type()) - { - // use integer array index as key - case value_t::array: - return std::to_string(array_index); - - // use key from the object - case value_t::object: - return anchor.key(); - - // use an empty key for all primitive types - default: - return ""; - } - } - - /// return value of the iterator - typename IteratorType::reference value() const - { - return anchor.value(); - } - }; - - /// the container to iterate - typename IteratorType::reference container; - - public: - /// construct iteration proxy from a container - explicit iteration_proxy(typename IteratorType::reference cont) noexcept - : container(cont) {} - - /// return iterator begin (needed for range-based for) - iteration_proxy_internal begin() noexcept - { - return iteration_proxy_internal(container.begin()); - } - - /// return iterator end (needed for range-based for) - iteration_proxy_internal end() noexcept - { - return iteration_proxy_internal(container.end()); - } -}; -} -} - -// #include - - -#include // ptrdiff_t -#include // reverse_iterator -#include // declval - -namespace nlohmann -{ -namespace detail -{ -////////////////////// -// reverse_iterator // -////////////////////// - -/*! -@brief a template for a reverse iterator class - -@tparam Base the base iterator type to reverse. Valid types are @ref -iterator (to create @ref reverse_iterator) and @ref const_iterator (to -create @ref const_reverse_iterator). - -@requirement The class satisfies the following concept requirements: -- -[BidirectionalIterator](http://en.cppreference.com/w/cpp/concept/BidirectionalIterator): - The iterator that can be moved can be moved in both directions (i.e. - incremented and decremented). -- [OutputIterator](http://en.cppreference.com/w/cpp/concept/OutputIterator): - It is possible to write to the pointed-to element (only if @a Base is - @ref iterator). - -@since version 1.0.0 -*/ -template -class json_reverse_iterator : public std::reverse_iterator -{ - public: - using difference_type = std::ptrdiff_t; - /// shortcut to the reverse iterator adapter - using base_iterator = std::reverse_iterator; - /// the reference type for the pointed-to element - using reference = typename Base::reference; - - /// create reverse iterator from iterator - json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept - : base_iterator(it) {} - - /// create reverse iterator from base class - json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} - - /// post-increment (it++) - json_reverse_iterator const operator++(int) - { - return static_cast(base_iterator::operator++(1)); - } - - /// pre-increment (++it) - json_reverse_iterator& operator++() - { - return static_cast(base_iterator::operator++()); - } - - /// post-decrement (it--) - json_reverse_iterator const operator--(int) - { - return static_cast(base_iterator::operator--(1)); - } - - /// pre-decrement (--it) - json_reverse_iterator& operator--() - { - return static_cast(base_iterator::operator--()); - } - - /// add to iterator - json_reverse_iterator& operator+=(difference_type i) - { - return static_cast(base_iterator::operator+=(i)); - } - - /// add to iterator - json_reverse_iterator operator+(difference_type i) const - { - return static_cast(base_iterator::operator+(i)); - } - - /// subtract from iterator - json_reverse_iterator operator-(difference_type i) const - { - return static_cast(base_iterator::operator-(i)); - } - - /// return difference - difference_type operator-(const json_reverse_iterator& other) const - { - return base_iterator(*this) - base_iterator(other); - } - - /// access to successor - reference operator[](difference_type n) const - { - return *(this->operator+(n)); - } - - /// return the key of an object iterator - auto key() const -> decltype(std::declval().key()) - { - auto it = --this->base(); - return it.key(); - } - - /// return the value of an iterator - reference value() const - { - auto it = --this->base(); - return it.operator * (); - } -}; -} -} - -// #include - - -#include // copy -#include // size_t -#include // streamsize -#include // back_inserter -#include // shared_ptr, make_shared -#include // basic_ostream -#include // basic_string -#include // vector - -namespace nlohmann -{ -namespace detail -{ -/// abstract output adapter interface -template struct output_adapter_protocol -{ - virtual void write_character(CharType c) = 0; - virtual void write_characters(const CharType* s, std::size_t length) = 0; - virtual ~output_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -template -using output_adapter_t = std::shared_ptr>; - -/// output adapter for byte vectors -template -class output_vector_adapter : public output_adapter_protocol -{ - public: - explicit output_vector_adapter(std::vector& vec) : v(vec) {} - - void write_character(CharType c) override - { - v.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - std::copy(s, s + length, std::back_inserter(v)); - } - - private: - std::vector& v; -}; - -/// output adapter for output streams -template -class output_stream_adapter : public output_adapter_protocol -{ - public: - explicit output_stream_adapter(std::basic_ostream& s) : stream(s) {} - - void write_character(CharType c) override - { - stream.put(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - stream.write(s, static_cast(length)); - } - - private: - std::basic_ostream& stream; -}; - -/// output adapter for basic_string -template -class output_string_adapter : public output_adapter_protocol -{ - public: - explicit output_string_adapter(std::basic_string& s) : str(s) {} - - void write_character(CharType c) override - { - str.push_back(c); - } - - void write_characters(const CharType* s, std::size_t length) override - { - str.append(s, length); - } - - private: - std::basic_string& str; -}; - -template -class output_adapter -{ - public: - output_adapter(std::vector& vec) - : oa(std::make_shared>(vec)) {} - - output_adapter(std::basic_ostream& s) - : oa(std::make_shared>(s)) {} - - output_adapter(std::basic_string& s) - : oa(std::make_shared>(s)) {} - - operator output_adapter_t() - { - return oa; - } - - private: - output_adapter_t oa = nullptr; -}; -} -} - -// #include - - -#include // generate_n -#include // array -#include // assert -#include // ldexp -#include // size_t -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // setw, setfill -#include // hex -#include // back_inserter -#include // numeric_limits -#include // stringstream -#include // char_traits, string -#include // make_pair, move - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary reader // -/////////////////// - -/*! -@brief deserialization of CBOR and MessagePack values -*/ -template -class binary_reader -{ - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using string_t = typename BasicJsonType::string_t; - - public: - /*! - @brief create a binary reader - - @param[in] adapter input adapter to read from - */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) - { - assert(ia); - } - - /*! - @brief create a JSON value from CBOR input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from CBOR input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_cbor(const bool strict) - { - const auto res = parse_cbor_internal(); - if (strict) - { - get(); - expect_eof(); - } - return res; - } - - /*! - @brief create a JSON value from MessagePack input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from MessagePack input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_msgpack(const bool strict) - { - const auto res = parse_msgpack_internal(); - if (strict) - { - get(); - expect_eof(); - } - return res; - } - - /*! - @brief create a JSON value from UBJSON input - - @param[in] strict whether to expect the input to be consumed completed - @return JSON value created from UBJSON input - - @throw parse_error.110 if input ended unexpectedly or the end of file was - not reached when @a strict was set to true - @throw parse_error.112 if unsupported byte was read - */ - BasicJsonType parse_ubjson(const bool strict) - { - const auto res = parse_ubjson_internal(); - if (strict) - { - get_ignore_noop(); - expect_eof(); - } - return res; - } - - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return (*reinterpret_cast(&num) == 1); - } - - private: - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_cbor_internal(const bool get_char = true) - { - switch (get_char ? get() : current) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // Integer 0x00..0x17 (0..23) - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - return static_cast(current); - - case 0x18: // Unsigned integer (one-byte uint8_t follows) - return get_number(); - - case 0x19: // Unsigned integer (two-byte uint16_t follows) - return get_number(); - - case 0x1A: // Unsigned integer (four-byte uint32_t follows) - return get_number(); - - case 0x1B: // Unsigned integer (eight-byte uint64_t follows) - return get_number(); - - // Negative integer -1-0x00..-1-0x17 (-1..-24) - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - return static_cast(0x20 - 1 - current); - - case 0x38: // Negative integer (one-byte uint8_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x39: // Negative integer -1-n (two-byte uint16_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) - { - return static_cast(-1) - get_number(); - } - - case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) - { - return static_cast(-1) - - static_cast(get_number()); - } - - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - case 0x7F: // UTF-8 string (indefinite length) - { - return get_cbor_string(); - } - - // array (0x00..0x17 data items follow) - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - { - return get_cbor_array(current & 0x1F); - } - - case 0x98: // array (one-byte uint8_t for n follows) - { - return get_cbor_array(get_number()); - } - - case 0x99: // array (two-byte uint16_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9A: // array (four-byte uint32_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9B: // array (eight-byte uint64_t for n follow) - { - return get_cbor_array(get_number()); - } - - case 0x9F: // array (indefinite length) - { - BasicJsonType result = value_t::array; - while (get() != 0xFF) - { - result.push_back(parse_cbor_internal(false)); - } - return result; - } - - // map (0x00..0x17 pairs of data items follow) - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - { - return get_cbor_object(current & 0x1F); - } - - case 0xB8: // map (one-byte uint8_t for n follows) - { - return get_cbor_object(get_number()); - } - - case 0xB9: // map (two-byte uint16_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBA: // map (four-byte uint32_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBB: // map (eight-byte uint64_t for n follow) - { - return get_cbor_object(get_number()); - } - - case 0xBF: // map (indefinite length) - { - BasicJsonType result = value_t::object; - while (get() != 0xFF) - { - auto key = get_cbor_string(); - result[key] = parse_cbor_internal(); - } - return result; - } - - case 0xF4: // false - { - return false; - } - - case 0xF5: // true - { - return true; - } - - case 0xF6: // null - { - return value_t::null; - } - - case 0xF9: // Half-Precision Float (two-byte IEEE 754) - { - const int byte1 = get(); - unexpect_eof(); - const int byte2 = get(); - unexpect_eof(); - - // code from RFC 7049, Appendix D, Figure 3: - // As half-precision floating-point numbers were only added - // to IEEE 754 in 2008, today's programming platforms often - // still only have limited support for them. It is very - // easy to include at least decoding support for them even - // without such support. An example of a small decoder for - // half-precision floating-point numbers in the C language - // is shown in Fig. 3. - const int half = (byte1 << 8) + byte2; - const int exp = (half >> 10) & 0x1F; - const int mant = half & 0x3FF; - double val; - if (exp == 0) - { - val = std::ldexp(mant, -24); - } - else if (exp != 31) - { - val = std::ldexp(mant + 1024, exp - 25); - } - else - { - val = (mant == 0) ? std::numeric_limits::infinity() - : std::numeric_limits::quiet_NaN(); - } - return (half & 0x8000) != 0 ? -val : val; - } - - case 0xFA: // Single-Precision Float (four-byte IEEE 754) - { - return get_number(); - } - - case 0xFB: // Double-Precision Float (eight-byte IEEE 754) - { - return get_number(); - } - - default: // anything else (0xFF is handled inside the other types) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, "error reading CBOR; last byte: 0x" + ss.str())); - } - } - } - - BasicJsonType parse_msgpack_internal() - { - switch (get()) - { - // EOF - case std::char_traits::eof(): - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - // positive fixint - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - case 0x08: - case 0x09: - case 0x0A: - case 0x0B: - case 0x0C: - case 0x0D: - case 0x0E: - case 0x0F: - case 0x10: - case 0x11: - case 0x12: - case 0x13: - case 0x14: - case 0x15: - case 0x16: - case 0x17: - case 0x18: - case 0x19: - case 0x1A: - case 0x1B: - case 0x1C: - case 0x1D: - case 0x1E: - case 0x1F: - case 0x20: - case 0x21: - case 0x22: - case 0x23: - case 0x24: - case 0x25: - case 0x26: - case 0x27: - case 0x28: - case 0x29: - case 0x2A: - case 0x2B: - case 0x2C: - case 0x2D: - case 0x2E: - case 0x2F: - case 0x30: - case 0x31: - case 0x32: - case 0x33: - case 0x34: - case 0x35: - case 0x36: - case 0x37: - case 0x38: - case 0x39: - case 0x3A: - case 0x3B: - case 0x3C: - case 0x3D: - case 0x3E: - case 0x3F: - case 0x40: - case 0x41: - case 0x42: - case 0x43: - case 0x44: - case 0x45: - case 0x46: - case 0x47: - case 0x48: - case 0x49: - case 0x4A: - case 0x4B: - case 0x4C: - case 0x4D: - case 0x4E: - case 0x4F: - case 0x50: - case 0x51: - case 0x52: - case 0x53: - case 0x54: - case 0x55: - case 0x56: - case 0x57: - case 0x58: - case 0x59: - case 0x5A: - case 0x5B: - case 0x5C: - case 0x5D: - case 0x5E: - case 0x5F: - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - case 0x78: - case 0x79: - case 0x7A: - case 0x7B: - case 0x7C: - case 0x7D: - case 0x7E: - case 0x7F: - return static_cast(current); - - // fixmap - case 0x80: - case 0x81: - case 0x82: - case 0x83: - case 0x84: - case 0x85: - case 0x86: - case 0x87: - case 0x88: - case 0x89: - case 0x8A: - case 0x8B: - case 0x8C: - case 0x8D: - case 0x8E: - case 0x8F: - { - return get_msgpack_object(current & 0x0F); - } - - // fixarray - case 0x90: - case 0x91: - case 0x92: - case 0x93: - case 0x94: - case 0x95: - case 0x96: - case 0x97: - case 0x98: - case 0x99: - case 0x9A: - case 0x9B: - case 0x9C: - case 0x9D: - case 0x9E: - case 0x9F: - { - return get_msgpack_array(current & 0x0F); - } - - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - return get_msgpack_string(); - - case 0xC0: // nil - return value_t::null; - - case 0xC2: // false - return false; - - case 0xC3: // true - return true; - - case 0xCA: // float 32 - return get_number(); - - case 0xCB: // float 64 - return get_number(); - - case 0xCC: // uint 8 - return get_number(); - - case 0xCD: // uint 16 - return get_number(); - - case 0xCE: // uint 32 - return get_number(); - - case 0xCF: // uint 64 - return get_number(); - - case 0xD0: // int 8 - return get_number(); - - case 0xD1: // int 16 - return get_number(); - - case 0xD2: // int 32 - return get_number(); - - case 0xD3: // int 64 - return get_number(); - - case 0xD9: // str 8 - case 0xDA: // str 16 - case 0xDB: // str 32 - return get_msgpack_string(); - - case 0xDC: // array 16 - { - return get_msgpack_array(get_number()); - } - - case 0xDD: // array 32 - { - return get_msgpack_array(get_number()); - } - - case 0xDE: // map 16 - { - return get_msgpack_object(get_number()); - } - - case 0xDF: // map 32 - { - return get_msgpack_object(get_number()); - } - - // positive fixint - case 0xE0: - case 0xE1: - case 0xE2: - case 0xE3: - case 0xE4: - case 0xE5: - case 0xE6: - case 0xE7: - case 0xE8: - case 0xE9: - case 0xEA: - case 0xEB: - case 0xEC: - case 0xED: - case 0xEE: - case 0xEF: - case 0xF0: - case 0xF1: - case 0xF2: - case 0xF3: - case 0xF4: - case 0xF5: - case 0xF6: - case 0xF7: - case 0xF8: - case 0xF9: - case 0xFA: - case 0xFB: - case 0xFC: - case 0xFD: - case 0xFE: - case 0xFF: - return static_cast(current); - - default: // anything else - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading MessagePack; last byte: 0x" + ss.str())); - } - } - } - - /*! - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - */ - BasicJsonType parse_ubjson_internal(const bool get_char = true) - { - return get_ubjson_value(get_char ? get_ignore_noop() : current); - } - - /*! - @brief get next character from the input - - This function provides the interface to the used input adapter. It does - not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. - - @return character read from the input - */ - int get() - { - ++chars_read; - return (current = ia->get_character()); - } - - /*! - @return character read from the input after ignoring all 'N' entries - */ - int get_ignore_noop() - { - do - { - get(); - } - while (current == 'N'); - - return current; - } - - /* - @brief read a number from the input - - @tparam NumberType the type of the number - - @return number of type @a NumberType - - @note This function needs to respect the system's endianess, because - bytes in CBOR and MessagePack are stored in network order (big - endian) and therefore need reordering on little endian systems. - - @throw parse_error.110 if input has less than `sizeof(NumberType)` bytes - */ - template NumberType get_number() - { - // step 1: read input into array with system's byte order - std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) - { - get(); - unexpect_eof(); - - // reverse byte order prior to conversion if necessary - if (is_little_endian) - { - vec[sizeof(NumberType) - i - 1] = static_cast(current); - } - else - { - vec[i] = static_cast(current); // LCOV_EXCL_LINE - } - } - - // step 2: convert array into number of type T and return - NumberType result; - std::memcpy(&result, vec.data(), sizeof(NumberType)); - return result; - } - - /*! - @brief create a string by reading characters from the input - - @param[in] len number of bytes to read - - @note We can not reserve @a len bytes for the result, because @a len - may be too large. Usually, @ref unexpect_eof() detects the end of - the input before we run out of string memory. - - @return string created by reading @a len bytes - - @throw parse_error.110 if input has less than @a len bytes - */ - template - string_t get_string(const NumberType len) - { - string_t result; - std::generate_n(std::back_inserter(result), len, [this]() - { - get(); - unexpect_eof(); - return static_cast(current); - }); - return result; - } - - /*! - @brief reads a CBOR string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - Additionally, CBOR's strings with indefinite lengths are supported. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - string_t get_cbor_string() - { - unexpect_eof(); - - switch (current) - { - // UTF-8 string (0x00..0x17 bytes follow) - case 0x60: - case 0x61: - case 0x62: - case 0x63: - case 0x64: - case 0x65: - case 0x66: - case 0x67: - case 0x68: - case 0x69: - case 0x6A: - case 0x6B: - case 0x6C: - case 0x6D: - case 0x6E: - case 0x6F: - case 0x70: - case 0x71: - case 0x72: - case 0x73: - case 0x74: - case 0x75: - case 0x76: - case 0x77: - { - return get_string(current & 0x1F); - } - - case 0x78: // UTF-8 string (one-byte uint8_t for n follows) - { - return get_string(get_number()); - } - - case 0x79: // UTF-8 string (two-byte uint16_t for n follow) - { - return get_string(get_number()); - } - - case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) - { - return get_string(get_number()); - } - - case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) - { - return get_string(get_number()); - } - - case 0x7F: // UTF-8 string (indefinite length) - { - string_t result; - while (get() != 0xFF) - { - unexpect_eof(); - result.push_back(static_cast(current)); - } - return result; - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, "expected a CBOR string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_cbor_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_cbor_internal(); - }); - return result; - } - - template - BasicJsonType get_cbor_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_cbor_string(); - auto val = parse_cbor_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a MessagePack string - - This function first reads starting bytes to determine the expected - string length and then copies this number of bytes into a string. - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - string_t get_msgpack_string() - { - unexpect_eof(); - - switch (current) - { - // fixstr - case 0xA0: - case 0xA1: - case 0xA2: - case 0xA3: - case 0xA4: - case 0xA5: - case 0xA6: - case 0xA7: - case 0xA8: - case 0xA9: - case 0xAA: - case 0xAB: - case 0xAC: - case 0xAD: - case 0xAE: - case 0xAF: - case 0xB0: - case 0xB1: - case 0xB2: - case 0xB3: - case 0xB4: - case 0xB5: - case 0xB6: - case 0xB7: - case 0xB8: - case 0xB9: - case 0xBA: - case 0xBB: - case 0xBC: - case 0xBD: - case 0xBE: - case 0xBF: - { - return get_string(current & 0x1F); - } - - case 0xD9: // str 8 - { - return get_string(get_number()); - } - - case 0xDA: // str 16 - { - return get_string(get_number()); - } - - case 0xDB: // str 32 - { - return get_string(get_number()); - } - - default: - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a MessagePack string; last byte: 0x" + ss.str())); - } - } - } - - template - BasicJsonType get_msgpack_array(const NumberType len) - { - BasicJsonType result = value_t::array; - std::generate_n(std::back_inserter(*result.m_value.array), len, [this]() - { - return parse_msgpack_internal(); - }); - return result; - } - - template - BasicJsonType get_msgpack_object(const NumberType len) - { - BasicJsonType result = value_t::object; - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - len, [this]() - { - get(); - auto key = get_msgpack_string(); - auto val = parse_msgpack_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - return result; - } - - /*! - @brief reads a UBJSON string - - This function is either called after reading the 'S' byte explicitly - indicating a string, or in case of an object key where the 'S' byte can be - left out. - - @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead - - @return string - - @throw parse_error.110 if input ended - @throw parse_error.113 if an unexpected byte is read - */ - string_t get_ubjson_string(const bool get_char = true) - { - if (get_char) - { - get(); // TODO: may we ignore N here? - } - - unexpect_eof(); - - switch (current) - { - case 'U': - return get_string(get_number()); - case 'i': - return get_string(get_number()); - case 'I': - return get_string(get_number()); - case 'l': - return get_string(get_number()); - case 'L': - return get_string(get_number()); - default: - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "expected a UBJSON string; last byte: 0x" + ss.str())); - } - } - - /*! - @brief determine the type and size for a container - - In the optimized UBJSON format, a type and a size can be provided to allow - for a more compact representation. - - @return pair of the size and the type - */ - std::pair get_ubjson_size_type() - { - std::size_t sz = string_t::npos; - int tc = 0; - - get_ignore_noop(); - - if (current == '$') - { - tc = get(); // must not ignore 'N', because 'N' maybe the type - unexpect_eof(); - - get_ignore_noop(); - if (current != '#') - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "expected '#' after UBJSON type information; last byte: 0x" + ss.str())); - } - sz = parse_ubjson_internal(); - } - else if (current == '#') - { - sz = parse_ubjson_internal(); - } - - return std::make_pair(sz, tc); - } - - BasicJsonType get_ubjson_value(const int prefix) - { - switch (prefix) - { - case std::char_traits::eof(): // EOF - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - - case 'T': // true - return true; - case 'F': // false - return false; - - case 'Z': // null - return nullptr; - - case 'U': - return get_number(); - case 'i': - return get_number(); - case 'I': - return get_number(); - case 'l': - return get_number(); - case 'L': - return get_number(); - case 'd': - return get_number(); - case 'D': - return get_number(); - - case 'C': // char - { - get(); - unexpect_eof(); - if (JSON_UNLIKELY(current > 127)) - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(113, chars_read, - "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + ss.str())); - } - return string_t(1, static_cast(current)); - } - - case 'S': // string - return get_ubjson_string(); - - case '[': // array - return get_ubjson_array(); - - case '{': // object - return get_ubjson_object(); - - default: // anything else - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << current; - JSON_THROW(parse_error::create(112, chars_read, - "error reading UBJSON; last byte: 0x" + ss.str())); - } - } - - BasicJsonType get_ubjson_array() - { - BasicJsonType result = value_t::array; - const auto size_and_type = get_ubjson_size_type(); - - if (size_and_type.first != string_t::npos) - { - if (size_and_type.second != 0) - { - if (size_and_type.second != 'N') - std::generate_n(std::back_inserter(*result.m_value.array), - size_and_type.first, [this, size_and_type]() - { - return get_ubjson_value(size_and_type.second); - }); - } - else - { - std::generate_n(std::back_inserter(*result.m_value.array), - size_and_type.first, [this]() - { - return parse_ubjson_internal(); - }); - } - } - else - { - while (current != ']') - { - result.push_back(parse_ubjson_internal(false)); - get_ignore_noop(); - } - } - - return result; - } - - BasicJsonType get_ubjson_object() - { - BasicJsonType result = value_t::object; - const auto size_and_type = get_ubjson_size_type(); - - if (size_and_type.first != string_t::npos) - { - if (size_and_type.second != 0) - { - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - size_and_type.first, [this, size_and_type]() - { - auto key = get_ubjson_string(); - auto val = get_ubjson_value(size_and_type.second); - return std::make_pair(std::move(key), std::move(val)); - }); - } - else - { - std::generate_n(std::inserter(*result.m_value.object, - result.m_value.object->end()), - size_and_type.first, [this]() - { - auto key = get_ubjson_string(); - auto val = parse_ubjson_internal(); - return std::make_pair(std::move(key), std::move(val)); - }); - } - } - else - { - while (current != '}') - { - auto key = get_ubjson_string(false); - result[std::move(key)] = parse_ubjson_internal(); - get_ignore_noop(); - } - } - - return result; - } - - /*! - @brief throw if end of input is not reached - @throw parse_error.110 if input not ended - */ - void expect_eof() const - { - if (JSON_UNLIKELY(current != std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "expected end of input")); - } - } - - /*! - @briefthrow if end of input is reached - @throw parse_error.110 if input ended - */ - void unexpect_eof() const - { - if (JSON_UNLIKELY(current == std::char_traits::eof())) - { - JSON_THROW(parse_error::create(110, chars_read, "unexpected end of input")); - } - } - - private: - /// input adapter - input_adapter_t ia = nullptr; - - /// the current character - int current = std::char_traits::eof(); - - /// the number of characters read - std::size_t chars_read = 0; - - /// whether we can assume little endianess - const bool is_little_endian = little_endianess(); -}; -} -} - -// #include - - -#include // reverse -#include // array -#include // uint8_t, uint16_t, uint32_t, uint64_t -#include // memcpy -#include // numeric_limits - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// binary writer // -/////////////////// - -/*! -@brief serialization to CBOR and MessagePack values -*/ -template -class binary_writer -{ - public: - /*! - @brief create a binary writer - - @param[in] adapter output adapter to write to - */ - explicit binary_writer(output_adapter_t adapter) : oa(adapter) - { - assert(oa); - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_cbor(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: - { - oa->write_character(static_cast(0xF6)); - break; - } - - case value_t::boolean: - { - oa->write_character(j.m_value.boolean - ? static_cast(0xF5) - : static_cast(0xF4)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // CBOR does not differentiate between positive signed - // integers and unsigned integers. Therefore, we used the - // code from the value_t::number_unsigned case here. - if (j.m_value.number_integer <= 0x17) - { - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_integer)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - // The conversions below encode the sign in the first - // byte, and the value is converted to a positive number. - const auto positive_number = -1 - j.m_value.number_integer; - if (j.m_value.number_integer >= -24) - { - write_number(static_cast(0x20 + positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x38)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x39)); - write_number(static_cast(positive_number)); - } - else if (positive_number <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x3A)); - write_number(static_cast(positive_number)); - } - else - { - oa->write_character(static_cast(0x3B)); - write_number(static_cast(positive_number)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= 0x17) - { - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x18)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x19)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x1A)); - write_number(static_cast(j.m_value.number_unsigned)); - } - else - { - oa->write_character(static_cast(0x1B)); - write_number(static_cast(j.m_value.number_unsigned)); - } - break; - } - - case value_t::number_float: // Double-Precision Float - { - oa->write_character(static_cast(0xFB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 0x17) - { - write_number(static_cast(0x60 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x78)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x79)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x7A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x7B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 0x17) - { - write_number(static_cast(0x80 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x98)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x99)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x9A)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0x9B)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_cbor(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 0x17) - { - write_number(static_cast(0xA0 + N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0xB8)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0xB9)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0xBA)); - write_number(static_cast(N)); - } - // LCOV_EXCL_START - else if (N <= (std::numeric_limits::max)()) - { - oa->write_character(static_cast(0xBB)); - write_number(static_cast(N)); - } - // LCOV_EXCL_STOP - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_cbor(el.first); - write_cbor(el.second); - } - break; - } - - default: - break; - } - } - - /*! - @brief[in] j JSON value to serialize - */ - void write_msgpack(const BasicJsonType& j) - { - switch (j.type()) - { - case value_t::null: // nil - { - oa->write_character(static_cast(0xC0)); - break; - } - - case value_t::boolean: // true and false - { - oa->write_character(j.m_value.boolean - ? static_cast(0xC3) - : static_cast(0xC2)); - break; - } - - case value_t::number_integer: - { - if (j.m_value.number_integer >= 0) - { - // MessagePack does not differentiate between positive - // signed integers and unsigned integers. Therefore, we used - // the code from the value_t::number_unsigned case here. - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - } - else - { - if (j.m_value.number_integer >= -32) - { - // negative fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 8 - oa->write_character(static_cast(0xD0)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 16 - oa->write_character(static_cast(0xD1)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 32 - oa->write_character(static_cast(0xD2)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_integer >= (std::numeric_limits::min)() and - j.m_value.number_integer <= (std::numeric_limits::max)()) - { - // int 64 - oa->write_character(static_cast(0xD3)); - write_number(static_cast(j.m_value.number_integer)); - } - } - break; - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned < 128) - { - // positive fixnum - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 8 - oa->write_character(static_cast(0xCC)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 16 - oa->write_character(static_cast(0xCD)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 32 - oa->write_character(static_cast(0xCE)); - write_number(static_cast(j.m_value.number_integer)); - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - // uint 64 - oa->write_character(static_cast(0xCF)); - write_number(static_cast(j.m_value.number_integer)); - } - break; - } - - case value_t::number_float: // float 64 - { - oa->write_character(static_cast(0xCB)); - write_number(j.m_value.number_float); - break; - } - - case value_t::string: - { - // step 1: write control byte and the string length - const auto N = j.m_value.string->size(); - if (N <= 31) - { - // fixstr - write_number(static_cast(0xA0 | N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 8 - oa->write_character(static_cast(0xD9)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 16 - oa->write_character(static_cast(0xDA)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // str 32 - oa->write_character(static_cast(0xDB)); - write_number(static_cast(N)); - } - - // step 2: write the string - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - // step 1: write control byte and the array size - const auto N = j.m_value.array->size(); - if (N <= 15) - { - // fixarray - write_number(static_cast(0x90 | N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // array 16 - oa->write_character(static_cast(0xDC)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // array 32 - oa->write_character(static_cast(0xDD)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.array) - { - write_msgpack(el); - } - break; - } - - case value_t::object: - { - // step 1: write control byte and the object size - const auto N = j.m_value.object->size(); - if (N <= 15) - { - // fixmap - write_number(static_cast(0x80 | (N & 0xF))); - } - else if (N <= (std::numeric_limits::max)()) - { - // map 16 - oa->write_character(static_cast(0xDE)); - write_number(static_cast(N)); - } - else if (N <= (std::numeric_limits::max)()) - { - // map 32 - oa->write_character(static_cast(0xDF)); - write_number(static_cast(N)); - } - - // step 2: write each element - for (const auto& el : *j.m_value.object) - { - write_msgpack(el.first); - write_msgpack(el.second); - } - break; - } - - default: - break; - } - } - - /*! - @param[in] j JSON value to serialize - @param[in] use_count whether to use '#' prefixes (optimized format) - @param[in] use_type whether to use '$' prefixes (optimized format) - @param[in] add_prefix whether prefixes need to be used for this value - */ - void write_ubjson(const BasicJsonType& j, const bool use_count, - const bool use_type, const bool add_prefix = true) - { - switch (j.type()) - { - case value_t::null: - { - if (add_prefix) - { - oa->write_character(static_cast('Z')); - } - break; - } - - case value_t::boolean: - { - if (add_prefix) - oa->write_character(j.m_value.boolean - ? static_cast('T') - : static_cast('F')); - break; - } - - case value_t::number_integer: - { - write_number_with_ubjson_prefix(j.m_value.number_integer, add_prefix); - break; - } - - case value_t::number_unsigned: - { - write_number_with_ubjson_prefix(j.m_value.number_unsigned, add_prefix); - break; - } - - case value_t::number_float: - { - write_number_with_ubjson_prefix(j.m_value.number_float, add_prefix); - break; - } - - case value_t::string: - { - if (add_prefix) - { - oa->write_character(static_cast('S')); - } - write_number_with_ubjson_prefix(j.m_value.string->size(), true); - oa->write_characters( - reinterpret_cast(j.m_value.string->c_str()), - j.m_value.string->size()); - break; - } - - case value_t::array: - { - if (add_prefix) - { - oa->write_character(static_cast('[')); - } - - bool prefix_required = true; - if (use_type and not j.m_value.array->empty()) - { - assert(use_count); - const char first_prefix = ubjson_prefix(j.front()); - const bool same_prefix = std::all_of(j.begin() + 1, j.end(), - [this, first_prefix](const BasicJsonType & v) - { - return ubjson_prefix(v) == first_prefix; - }); - - if (same_prefix) - { - prefix_required = false; - oa->write_character(static_cast('$')); - oa->write_character(static_cast(first_prefix)); - } - } - - if (use_count) - { - oa->write_character(static_cast('#')); - write_number_with_ubjson_prefix(j.m_value.array->size(), true); - } - - for (const auto& el : *j.m_value.array) - { - write_ubjson(el, use_count, use_type, prefix_required); - } - - if (not use_count) - { - oa->write_character(static_cast(']')); - } - - break; - } - - case value_t::object: - { - if (add_prefix) - { - oa->write_character(static_cast('{')); - } - - bool prefix_required = true; - if (use_type and not j.m_value.object->empty()) - { - assert(use_count); - const char first_prefix = ubjson_prefix(j.front()); - const bool same_prefix = std::all_of(j.begin(), j.end(), - [this, first_prefix](const BasicJsonType & v) - { - return ubjson_prefix(v) == first_prefix; - }); - - if (same_prefix) - { - prefix_required = false; - oa->write_character(static_cast('$')); - oa->write_character(static_cast(first_prefix)); - } - } - - if (use_count) - { - oa->write_character(static_cast('#')); - write_number_with_ubjson_prefix(j.m_value.object->size(), true); - } - - for (const auto& el : *j.m_value.object) - { - write_number_with_ubjson_prefix(el.first.size(), true); - oa->write_characters( - reinterpret_cast(el.first.c_str()), - el.first.size()); - write_ubjson(el.second, use_count, use_type, prefix_required); - } - - if (not use_count) - { - oa->write_character(static_cast('}')); - } - - break; - } - - default: - break; - } - } - - private: - /* - @brief write a number to output input - - @param[in] n number of type @a NumberType - @tparam NumberType the type of the number - - @note This function needs to respect the system's endianess, because bytes - in CBOR, MessagePack, and UBJSON are stored in network order (big - endian) and therefore need reordering on little endian systems. - */ - template - void write_number(const NumberType n) - { - // step 1: write number to array of length NumberType - std::array vec; - std::memcpy(vec.data(), &n, sizeof(NumberType)); - - // step 2: write array to output (with possible reordering) - if (is_little_endian) - { - // reverse byte order prior to conversion if necessary - std::reverse(vec.begin(), vec.end()); - } - - oa->write_characters(vec.data(), sizeof(NumberType)); - } - - template - void write_number_with_ubjson_prefix(const NumberType n, - const bool add_prefix) - { - if (std::is_floating_point::value) - { - if (add_prefix) - { - oa->write_character(static_cast('D')); // float64 - } - write_number(n); - } - else if (std::is_unsigned::value) - { - if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('i')); // int8 - } - write_number(static_cast(n)); - } - else if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('U')); // uint8 - } - write_number(static_cast(n)); - } - else if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('I')); // int16 - } - write_number(static_cast(n)); - } - else if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('l')); // int32 - } - write_number(static_cast(n)); - } - else if (n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('L')); // int64 - } - write_number(static_cast(n)); - } - else - { - JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); - } - } - else - { - if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('i')); // int8 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('U')); // uint8 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('I')); // int16 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('l')); // int32 - } - write_number(static_cast(n)); - } - else if ((std::numeric_limits::min)() <= n and n <= (std::numeric_limits::max)()) - { - if (add_prefix) - { - oa->write_character(static_cast('L')); // int64 - } - write_number(static_cast(n)); - } - // LCOV_EXCL_START - else - { - JSON_THROW(out_of_range::create(407, "number overflow serializing " + std::to_string(n))); - } - // LCOV_EXCL_STOP - } - } - - /*! - @brief determine the type prefix of container values - - @note This function does not need to be 100% accurate when it comes to - integer limits. In case a number exceeds the limits of int64_t, - this will be detected by a later call to function - write_number_with_ubjson_prefix. Therefore, we return 'L' for any - value that does not fit the previous limits. - */ - char ubjson_prefix(const BasicJsonType& j) const noexcept - { - switch (j.type()) - { - case value_t::null: - return 'Z'; - - case value_t::boolean: - return j.m_value.boolean ? 'T' : 'F'; - - case value_t::number_integer: - { - if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'i'; - } - else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'U'; - } - else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'I'; - } - else if ((std::numeric_limits::min)() <= j.m_value.number_integer and j.m_value.number_integer <= (std::numeric_limits::max)()) - { - return 'l'; - } - else // no check and assume int64_t (see note above) - { - return 'L'; - } - } - - case value_t::number_unsigned: - { - if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - return 'i'; - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - return 'U'; - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - return 'I'; - } - else if (j.m_value.number_unsigned <= (std::numeric_limits::max)()) - { - return 'l'; - } - else // no check and assume int64_t (see note above) - { - return 'L'; - } - } - - case value_t::number_float: - return 'D'; - - case value_t::string: - return 'S'; - - case value_t::array: - return '['; - - case value_t::object: - return '{'; - - default: // discarded values - return 'N'; - } - } - - private: - /// whether we can assume little endianess - const bool is_little_endian = binary_reader::little_endianess(); - - /// the output - output_adapter_t oa = nullptr; -}; -} -} - -// #include - - -#include // reverse, remove, fill, find, none_of -#include // array -#include // assert -#include // and, or -#include // localeconv, lconv -#include // labs, isfinite, isnan, signbit -#include // size_t, ptrdiff_t -#include // uint8_t -#include // snprintf -#include // setfill -#include // next -#include // numeric_limits -#include // string -#include // stringstream -#include // is_same - -// #include - -// #include - - -#include // assert -#include // or, and, not -#include // signbit, isfinite -#include // intN_t, uintN_t -#include // memcpy, memmove - -namespace nlohmann -{ -namespace detail -{ - -/*! -@brief implements the Grisu2 algorithm for binary to decimal floating-point -conversion. - -This implementation is a slightly modified version of the reference -implementation which may be obtained from -http://florian.loitsch.com/publications (bench.tar.gz). - -The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. - -For a detailed description of the algorithm see: - -[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with - Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming - Language Design and Implementation, PLDI 2010 -[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", - Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language - Design and Implementation, PLDI 1996 -*/ -namespace dtoa_impl -{ - -template -Target reinterpret_bits(const Source source) -{ - static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); - - Target target; - std::memcpy(&target, &source, sizeof(Source)); - return target; -} - -struct diyfp // f * 2^e -{ - static constexpr int kPrecision = 64; // = q - - uint64_t f; - int e; - - constexpr diyfp() noexcept : f(0), e(0) {} - constexpr diyfp(uint64_t f_, int e_) noexcept : f(f_), e(e_) {} - - /*! - @brief returns x - y - @pre x.e == y.e and x.f >= y.f - */ - static diyfp sub(const diyfp& x, const diyfp& y) noexcept - { - assert(x.e == y.e); - assert(x.f >= y.f); - - return diyfp(x.f - y.f, x.e); - } - - /*! - @brief returns x * y - @note The result is rounded. (Only the upper q bits are returned.) - */ - static diyfp mul(const diyfp& x, const diyfp& y) noexcept - { - static_assert(kPrecision == 64, "internal error"); - - // Computes: - // f = round((x.f * y.f) / 2^q) - // e = x.e + y.e + q - - // Emulate the 64-bit * 64-bit multiplication: - // - // p = u * v - // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) - // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) - // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) - // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) - // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) - // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) - // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) - // - // (Since Q might be larger than 2^32 - 1) - // - // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) - // - // (Q_hi + H does not overflow a 64-bit int) - // - // = p_lo + 2^64 p_hi - - const uint64_t u_lo = x.f & 0xFFFFFFFF; - const uint64_t u_hi = x.f >> 32; - const uint64_t v_lo = y.f & 0xFFFFFFFF; - const uint64_t v_hi = y.f >> 32; - - const uint64_t p0 = u_lo * v_lo; - const uint64_t p1 = u_lo * v_hi; - const uint64_t p2 = u_hi * v_lo; - const uint64_t p3 = u_hi * v_hi; - - const uint64_t p0_hi = p0 >> 32; - const uint64_t p1_lo = p1 & 0xFFFFFFFF; - const uint64_t p1_hi = p1 >> 32; - const uint64_t p2_lo = p2 & 0xFFFFFFFF; - const uint64_t p2_hi = p2 >> 32; - - uint64_t Q = p0_hi + p1_lo + p2_lo; - - // The full product might now be computed as - // - // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) - // p_lo = p0_lo + (Q << 32) - // - // But in this particular case here, the full p_lo is not required. - // Effectively we only need to add the highest bit in p_lo to p_hi (and - // Q_hi + 1 does not overflow). - - Q += uint64_t{1} << (64 - 32 - 1); // round, ties up - - const uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32); - - return diyfp(h, x.e + y.e + 64); - } - - /*! - @brief normalize x such that the significand is >= 2^(q-1) - @pre x.f != 0 - */ - static diyfp normalize(diyfp x) noexcept - { - assert(x.f != 0); - - while ((x.f >> 63) == 0) - { - x.f <<= 1; - x.e--; - } - - return x; - } - - /*! - @brief normalize x such that the result has the exponent E - @pre e >= x.e and the upper e - x.e bits of x.f must be zero. - */ - static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept - { - const int delta = x.e - target_exponent; - - assert(delta >= 0); - assert(((x.f << delta) >> delta) == x.f); - - return diyfp(x.f << delta, target_exponent); - } -}; - -struct boundaries -{ - diyfp w; - diyfp minus; - diyfp plus; -}; - -/*! -Compute the (normalized) diyfp representing the input number 'value' and its -boundaries. - -@pre value must be finite and positive -*/ -template -boundaries compute_boundaries(FloatType value) -{ - assert(std::isfinite(value)); - assert(value > 0); - - // Convert the IEEE representation into a diyfp. - // - // If v is denormal: - // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) - // If v is normalized: - // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) - - static_assert(std::numeric_limits::is_iec559, - "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); - - constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) - constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); - constexpr int kMinExp = 1 - kBias; - constexpr uint64_t kHiddenBit = uint64_t{1} << (kPrecision - 1); // = 2^(p-1) - - using bits_type = typename std::conditional< kPrecision == 24, uint32_t, uint64_t >::type; - - const uint64_t bits = reinterpret_bits(value); - const uint64_t E = bits >> (kPrecision - 1); - const uint64_t F = bits & (kHiddenBit - 1); - - const bool is_denormal = (E == 0); - const diyfp v = is_denormal - ? diyfp(F, kMinExp) - : diyfp(F + kHiddenBit, static_cast(E) - kBias); - - // Compute the boundaries m- and m+ of the floating-point value - // v = f * 2^e. - // - // Determine v- and v+, the floating-point predecessor and successor if v, - // respectively. - // - // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) - // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) - // - // v+ = v + 2^e - // - // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ - // between m- and m+ round to v, regardless of how the input rounding - // algorithm breaks ties. - // - // ---+-------------+-------------+-------------+-------------+--- (A) - // v- m- v m+ v+ - // - // -----------------+------+------+-------------+-------------+--- (B) - // v- m- v m+ v+ - - const bool lower_boundary_is_closer = (F == 0 and E > 1); - const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); - const diyfp m_minus = lower_boundary_is_closer - ? diyfp(4 * v.f - 1, v.e - 2) // (B) - : diyfp(2 * v.f - 1, v.e - 1); // (A) - - // Determine the normalized w+ = m+. - const diyfp w_plus = diyfp::normalize(m_plus); - - // Determine w- = m- such that e_(w-) = e_(w+). - const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); - - return {diyfp::normalize(v), w_minus, w_plus}; -} - -// Given normalized diyfp w, Grisu needs to find a (normalized) cached -// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies -// within a certain range [alpha, gamma] (Definition 3.2 from [1]) -// -// alpha <= e = e_c + e_w + q <= gamma -// -// or -// -// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q -// <= f_c * f_w * 2^gamma -// -// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies -// -// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma -// -// or -// -// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) -// -// The choice of (alpha,gamma) determines the size of the table and the form of -// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well -// in practice: -// -// The idea is to cut the number c * w = f * 2^e into two parts, which can be -// processed independently: An integral part p1, and a fractional part p2: -// -// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e -// = (f div 2^-e) + (f mod 2^-e) * 2^e -// = p1 + p2 * 2^e -// -// The conversion of p1 into decimal form requires a series of divisions and -// modulos by (a power of) 10. These operations are faster for 32-bit than for -// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be -// achieved by choosing -// -// -e >= 32 or e <= -32 := gamma -// -// In order to convert the fractional part -// -// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... -// -// into decimal form, the fraction is repeatedly multiplied by 10 and the digits -// d[-i] are extracted in order: -// -// (10 * p2) div 2^-e = d[-1] -// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... -// -// The multiplication by 10 must not overflow. It is sufficient to choose -// -// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. -// -// Since p2 = f mod 2^-e < 2^-e, -// -// -e <= 60 or e >= -60 := alpha - -constexpr int kAlpha = -60; -constexpr int kGamma = -32; - -struct cached_power // c = f * 2^e ~= 10^k -{ - uint64_t f; - int e; - int k; -}; - -/*! -For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached -power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c -satisfies (Definition 3.2 from [1]) - - alpha <= e_c + e + q <= gamma. -*/ -inline cached_power get_cached_power_for_binary_exponent(int e) -{ - // Now - // - // alpha <= e_c + e + q <= gamma (1) - // ==> f_c * 2^alpha <= c * 2^e * 2^q - // - // and since the c's are normalized, 2^(q-1) <= f_c, - // - // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) - // ==> 2^(alpha - e - 1) <= c - // - // If c were an exakt power of ten, i.e. c = 10^k, one may determine k as - // - // k = ceil( log_10( 2^(alpha - e - 1) ) ) - // = ceil( (alpha - e - 1) * log_10(2) ) - // - // From the paper: - // "In theory the result of the procedure could be wrong since c is rounded, - // and the computation itself is approximated [...]. In practice, however, - // this simple function is sufficient." - // - // For IEEE double precision floating-point numbers converted into - // normalized diyfp's w = f * 2^e, with q = 64, - // - // e >= -1022 (min IEEE exponent) - // -52 (p - 1) - // -52 (p - 1, possibly normalize denormal IEEE numbers) - // -11 (normalize the diyfp) - // = -1137 - // - // and - // - // e <= +1023 (max IEEE exponent) - // -52 (p - 1) - // -11 (normalize the diyfp) - // = 960 - // - // This binary exponent range [-1137,960] results in a decimal exponent - // range [-307,324]. One does not need to store a cached power for each - // k in this range. For each such k it suffices to find a cached power - // such that the exponent of the product lies in [alpha,gamma]. - // This implies that the difference of the decimal exponents of adjacent - // table entries must be less than or equal to - // - // floor( (gamma - alpha) * log_10(2) ) = 8. - // - // (A smaller distance gamma-alpha would require a larger table.) - - // NB: - // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. - - constexpr int kCachedPowersSize = 79; - constexpr int kCachedPowersMinDecExp = -300; - constexpr int kCachedPowersDecStep = 8; - - static constexpr cached_power kCachedPowers[] = - { - { 0xAB70FE17C79AC6CA, -1060, -300 }, - { 0xFF77B1FCBEBCDC4F, -1034, -292 }, - { 0xBE5691EF416BD60C, -1007, -284 }, - { 0x8DD01FAD907FFC3C, -980, -276 }, - { 0xD3515C2831559A83, -954, -268 }, - { 0x9D71AC8FADA6C9B5, -927, -260 }, - { 0xEA9C227723EE8BCB, -901, -252 }, - { 0xAECC49914078536D, -874, -244 }, - { 0x823C12795DB6CE57, -847, -236 }, - { 0xC21094364DFB5637, -821, -228 }, - { 0x9096EA6F3848984F, -794, -220 }, - { 0xD77485CB25823AC7, -768, -212 }, - { 0xA086CFCD97BF97F4, -741, -204 }, - { 0xEF340A98172AACE5, -715, -196 }, - { 0xB23867FB2A35B28E, -688, -188 }, - { 0x84C8D4DFD2C63F3B, -661, -180 }, - { 0xC5DD44271AD3CDBA, -635, -172 }, - { 0x936B9FCEBB25C996, -608, -164 }, - { 0xDBAC6C247D62A584, -582, -156 }, - { 0xA3AB66580D5FDAF6, -555, -148 }, - { 0xF3E2F893DEC3F126, -529, -140 }, - { 0xB5B5ADA8AAFF80B8, -502, -132 }, - { 0x87625F056C7C4A8B, -475, -124 }, - { 0xC9BCFF6034C13053, -449, -116 }, - { 0x964E858C91BA2655, -422, -108 }, - { 0xDFF9772470297EBD, -396, -100 }, - { 0xA6DFBD9FB8E5B88F, -369, -92 }, - { 0xF8A95FCF88747D94, -343, -84 }, - { 0xB94470938FA89BCF, -316, -76 }, - { 0x8A08F0F8BF0F156B, -289, -68 }, - { 0xCDB02555653131B6, -263, -60 }, - { 0x993FE2C6D07B7FAC, -236, -52 }, - { 0xE45C10C42A2B3B06, -210, -44 }, - { 0xAA242499697392D3, -183, -36 }, - { 0xFD87B5F28300CA0E, -157, -28 }, - { 0xBCE5086492111AEB, -130, -20 }, - { 0x8CBCCC096F5088CC, -103, -12 }, - { 0xD1B71758E219652C, -77, -4 }, - { 0x9C40000000000000, -50, 4 }, - { 0xE8D4A51000000000, -24, 12 }, - { 0xAD78EBC5AC620000, 3, 20 }, - { 0x813F3978F8940984, 30, 28 }, - { 0xC097CE7BC90715B3, 56, 36 }, - { 0x8F7E32CE7BEA5C70, 83, 44 }, - { 0xD5D238A4ABE98068, 109, 52 }, - { 0x9F4F2726179A2245, 136, 60 }, - { 0xED63A231D4C4FB27, 162, 68 }, - { 0xB0DE65388CC8ADA8, 189, 76 }, - { 0x83C7088E1AAB65DB, 216, 84 }, - { 0xC45D1DF942711D9A, 242, 92 }, - { 0x924D692CA61BE758, 269, 100 }, - { 0xDA01EE641A708DEA, 295, 108 }, - { 0xA26DA3999AEF774A, 322, 116 }, - { 0xF209787BB47D6B85, 348, 124 }, - { 0xB454E4A179DD1877, 375, 132 }, - { 0x865B86925B9BC5C2, 402, 140 }, - { 0xC83553C5C8965D3D, 428, 148 }, - { 0x952AB45CFA97A0B3, 455, 156 }, - { 0xDE469FBD99A05FE3, 481, 164 }, - { 0xA59BC234DB398C25, 508, 172 }, - { 0xF6C69A72A3989F5C, 534, 180 }, - { 0xB7DCBF5354E9BECE, 561, 188 }, - { 0x88FCF317F22241E2, 588, 196 }, - { 0xCC20CE9BD35C78A5, 614, 204 }, - { 0x98165AF37B2153DF, 641, 212 }, - { 0xE2A0B5DC971F303A, 667, 220 }, - { 0xA8D9D1535CE3B396, 694, 228 }, - { 0xFB9B7CD9A4A7443C, 720, 236 }, - { 0xBB764C4CA7A44410, 747, 244 }, - { 0x8BAB8EEFB6409C1A, 774, 252 }, - { 0xD01FEF10A657842C, 800, 260 }, - { 0x9B10A4E5E9913129, 827, 268 }, - { 0xE7109BFBA19C0C9D, 853, 276 }, - { 0xAC2820D9623BF429, 880, 284 }, - { 0x80444B5E7AA7CF85, 907, 292 }, - { 0xBF21E44003ACDD2D, 933, 300 }, - { 0x8E679C2F5E44FF8F, 960, 308 }, - { 0xD433179D9C8CB841, 986, 316 }, - { 0x9E19DB92B4E31BA9, 1013, 324 }, - }; - - // This computation gives exactly the same results for k as - // k = ceil((kAlpha - e - 1) * 0.30102999566398114) - // for |e| <= 1500, but doesn't require floating-point operations. - // NB: log_10(2) ~= 78913 / 2^18 - assert(e >= -1500); - assert(e <= 1500); - const int f = kAlpha - e - 1; - const int k = (f * 78913) / (1 << 18) + (f > 0); - - const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; - assert(index >= 0); - assert(index < kCachedPowersSize); - static_cast(kCachedPowersSize); // Fix warning. - - const cached_power cached = kCachedPowers[index]; - assert(kAlpha <= cached.e + e + 64); - assert(kGamma >= cached.e + e + 64); - - return cached; -} - -/*! -For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. -For n == 0, returns 1 and sets pow10 := 1. -*/ -inline int find_largest_pow10(const uint32_t n, uint32_t& pow10) -{ - // LCOV_EXCL_START - if (n >= 1000000000) - { - pow10 = 1000000000; - return 10; - } - // LCOV_EXCL_STOP - else if (n >= 100000000) - { - pow10 = 100000000; - return 9; - } - else if (n >= 10000000) - { - pow10 = 10000000; - return 8; - } - else if (n >= 1000000) - { - pow10 = 1000000; - return 7; - } - else if (n >= 100000) - { - pow10 = 100000; - return 6; - } - else if (n >= 10000) - { - pow10 = 10000; - return 5; - } - else if (n >= 1000) - { - pow10 = 1000; - return 4; - } - else if (n >= 100) - { - pow10 = 100; - return 3; - } - else if (n >= 10) - { - pow10 = 10; - return 2; - } - else - { - pow10 = 1; - return 1; - } -} - -inline void grisu2_round(char* buf, int len, uint64_t dist, uint64_t delta, - uint64_t rest, uint64_t ten_k) -{ - assert(len >= 1); - assert(dist <= delta); - assert(rest <= delta); - assert(ten_k > 0); - - // <--------------------------- delta ----> - // <---- dist ---------> - // --------------[------------------+-------------------]-------------- - // M- w M+ - // - // ten_k - // <------> - // <---- rest ----> - // --------------[------------------+----+--------------]-------------- - // w V - // = buf * 10^k - // - // ten_k represents a unit-in-the-last-place in the decimal representation - // stored in buf. - // Decrement buf by ten_k while this takes buf closer to w. - - // The tests are written in this order to avoid overflow in unsigned - // integer arithmetic. - - while (rest < dist - and delta - rest >= ten_k - and (rest + ten_k < dist or dist - rest > rest + ten_k - dist)) - { - assert(buf[len - 1] != '0'); - buf[len - 1]--; - rest += ten_k; - } -} - -/*! -Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. -M- and M+ must be normalized and share the same exponent -60 <= e <= -32. -*/ -inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, - diyfp M_minus, diyfp w, diyfp M_plus) -{ - static_assert(kAlpha >= -60, "internal error"); - static_assert(kGamma <= -32, "internal error"); - - // Generates the digits (and the exponent) of a decimal floating-point - // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's - // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. - // - // <--------------------------- delta ----> - // <---- dist ---------> - // --------------[------------------+-------------------]-------------- - // M- w M+ - // - // Grisu2 generates the digits of M+ from left to right and stops as soon as - // V is in [M-,M+]. - - assert(M_plus.e >= kAlpha); - assert(M_plus.e <= kGamma); - - uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) - uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) - - // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): - // - // M+ = f * 2^e - // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e - // = ((p1 ) * 2^-e + (p2 )) * 2^e - // = p1 + p2 * 2^e - - const diyfp one(uint64_t{1} << -M_plus.e, M_plus.e); - - uint32_t p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) - uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e - - // 1) - // - // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] - - assert(p1 > 0); - - uint32_t pow10; - const int k = find_largest_pow10(p1, pow10); - - // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) - // - // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) - // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) - // - // M+ = p1 + p2 * 2^e - // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e - // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e - // = d[k-1] * 10^(k-1) + ( rest) * 2^e - // - // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) - // - // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] - // - // but stop as soon as - // - // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e - - int n = k; - while (n > 0) - { - // Invariants: - // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) - // pow10 = 10^(n-1) <= p1 < 10^n - // - const uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) - const uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) - // - // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e - // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) - // - assert(d <= 9); - buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d - // - // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) - // - p1 = r; - n--; - // - // M+ = buffer * 10^n + (p1 + p2 * 2^e) - // pow10 = 10^n - // - - // Now check if enough digits have been generated. - // Compute - // - // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e - // - // Note: - // Since rest and delta share the same exponent e, it suffices to - // compare the significands. - const uint64_t rest = (uint64_t{p1} << -one.e) + p2; - if (rest <= delta) - { - // V = buffer * 10^n, with M- <= V <= M+. - - decimal_exponent += n; - - // We may now just stop. But instead look if the buffer could be - // decremented to bring V closer to w. - // - // pow10 = 10^n is now 1 ulp in the decimal representation V. - // The rounding procedure works with diyfp's with an implicit - // exponent of e. - // - // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e - // - const uint64_t ten_n = uint64_t{pow10} << -one.e; - grisu2_round(buffer, length, dist, delta, rest, ten_n); - - return; - } - - pow10 /= 10; - // - // pow10 = 10^(n-1) <= p1 < 10^n - // Invariants restored. - } - - // 2) - // - // The digits of the integral part have been generated: - // - // M+ = d[k-1]...d[1]d[0] + p2 * 2^e - // = buffer + p2 * 2^e - // - // Now generate the digits of the fractional part p2 * 2^e. - // - // Note: - // No decimal point is generated: the exponent is adjusted instead. - // - // p2 actually represents the fraction - // - // p2 * 2^e - // = p2 / 2^-e - // = d[-1] / 10^1 + d[-2] / 10^2 + ... - // - // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) - // - // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m - // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) - // - // using - // - // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) - // = ( d) * 2^-e + ( r) - // - // or - // 10^m * p2 * 2^e = d + r * 2^e - // - // i.e. - // - // M+ = buffer + p2 * 2^e - // = buffer + 10^-m * (d + r * 2^e) - // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e - // - // and stop as soon as 10^-m * r * 2^e <= delta * 2^e - - assert(p2 > delta); - - int m = 0; - for (;;) - { - // Invariant: - // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e - // = buffer * 10^-m + 10^-m * (p2 ) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e - // - assert(p2 <= UINT64_MAX / 10); - p2 *= 10; - const uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e - const uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e - // - // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e - // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) - // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e - // - assert(d <= 9); - buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d - // - // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e - // - p2 = r; - m++; - // - // M+ = buffer * 10^-m + 10^-m * p2 * 2^e - // Invariant restored. - - // Check if enough digits have been generated. - // - // 10^-m * p2 * 2^e <= delta * 2^e - // p2 * 2^e <= 10^m * delta * 2^e - // p2 <= 10^m * delta - delta *= 10; - dist *= 10; - if (p2 <= delta) - { - break; - } - } - - // V = buffer * 10^-m, with M- <= V <= M+. - - decimal_exponent -= m; - - // 1 ulp in the decimal representation is now 10^-m. - // Since delta and dist are now scaled by 10^m, we need to do the - // same with ulp in order to keep the units in sync. - // - // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e - // - const uint64_t ten_m = one.f; - grisu2_round(buffer, length, dist, delta, p2, ten_m); - - // By construction this algorithm generates the shortest possible decimal - // number (Loitsch, Theorem 6.2) which rounds back to w. - // For an input number of precision p, at least - // - // N = 1 + ceil(p * log_10(2)) - // - // decimal digits are sufficient to identify all binary floating-point - // numbers (Matula, "In-and-Out conversions"). - // This implies that the algorithm does not produce more than N decimal - // digits. - // - // N = 17 for p = 53 (IEEE double precision) - // N = 9 for p = 24 (IEEE single precision) -} - -/*! -v = buf * 10^decimal_exponent -len is the length of the buffer (number of decimal digits) -The buffer must be large enough, i.e. >= max_digits10. -*/ -inline void grisu2(char* buf, int& len, int& decimal_exponent, - diyfp m_minus, diyfp v, diyfp m_plus) -{ - assert(m_plus.e == m_minus.e); - assert(m_plus.e == v.e); - - // --------(-----------------------+-----------------------)-------- (A) - // m- v m+ - // - // --------------------(-----------+-----------------------)-------- (B) - // m- v m+ - // - // First scale v (and m- and m+) such that the exponent is in the range - // [alpha, gamma]. - - const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); - - const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k - - // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] - const diyfp w = diyfp::mul(v, c_minus_k); - const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); - const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); - - // ----(---+---)---------------(---+---)---------------(---+---)---- - // w- w w+ - // = c*m- = c*v = c*m+ - // - // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and - // w+ are now off by a small amount. - // In fact: - // - // w - v * 10^k < 1 ulp - // - // To account for this inaccuracy, add resp. subtract 1 ulp. - // - // --------+---[---------------(---+---)---------------]---+-------- - // w- M- w M+ w+ - // - // Now any number in [M-, M+] (bounds included) will round to w when input, - // regardless of how the input rounding algorithm breaks ties. - // - // And digit_gen generates the shortest possible such number in [M-, M+]. - // Note that this does not mean that Grisu2 always generates the shortest - // possible number in the interval (m-, m+). - const diyfp M_minus(w_minus.f + 1, w_minus.e); - const diyfp M_plus (w_plus.f - 1, w_plus.e ); - - decimal_exponent = -cached.k; // = -(-k) = k - - grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); -} - -/*! -v = buf * 10^decimal_exponent -len is the length of the buffer (number of decimal digits) -The buffer must be large enough, i.e. >= max_digits10. -*/ -template -void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) -{ - static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, - "internal error: not enough precision"); - - assert(std::isfinite(value)); - assert(value > 0); - - // If the neighbors (and boundaries) of 'value' are always computed for double-precision - // numbers, all float's can be recovered using strtod (and strtof). However, the resulting - // decimal representations are not exactly "short". - // - // The documentation for 'std::to_chars' (http://en.cppreference.com/w/cpp/utility/to_chars) - // says "value is converted to a string as if by std::sprintf in the default ("C") locale" - // and since sprintf promotes float's to double's, I think this is exactly what 'std::to_chars' - // does. - // On the other hand, the documentation for 'std::to_chars' requires that "parsing the - // representation using the corresponding std::from_chars function recovers value exactly". That - // indicates that single precision floating-point numbers should be recovered using - // 'std::strtof'. - // - // NB: If the neighbors are computed for single-precision numbers, there is a single float - // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision - // value is off by 1 ulp. -#if 0 - const boundaries w = compute_boundaries(static_cast(value)); -#else - const boundaries w = compute_boundaries(value); -#endif - - grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); -} - -/*! -@brief appends a decimal representation of e to buf -@return a pointer to the element following the exponent. -@pre -1000 < e < 1000 -*/ -inline char* append_exponent(char* buf, int e) -{ - assert(e > -1000); - assert(e < 1000); - - if (e < 0) - { - e = -e; - *buf++ = '-'; - } - else - { - *buf++ = '+'; - } - - uint32_t k = static_cast(e); - if (k < 10) - { - // Always print at least two digits in the exponent. - // This is for compatibility with printf("%g"). - *buf++ = '0'; - *buf++ = static_cast('0' + k); - } - else if (k < 100) - { - *buf++ = static_cast('0' + k / 10); - k %= 10; - *buf++ = static_cast('0' + k); - } - else - { - *buf++ = static_cast('0' + k / 100); - k %= 100; - *buf++ = static_cast('0' + k / 10); - k %= 10; - *buf++ = static_cast('0' + k); - } - - return buf; -} - -/*! -@brief prettify v = buf * 10^decimal_exponent - -If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point -notation. Otherwise it will be printed in exponential notation. - -@pre min_exp < 0 -@pre max_exp > 0 -*/ -inline char* format_buffer(char* buf, int len, int decimal_exponent, - int min_exp, int max_exp) -{ - assert(min_exp < 0); - assert(max_exp > 0); - - const int k = len; - const int n = len + decimal_exponent; - - // v = buf * 10^(n-k) - // k is the length of the buffer (number of decimal digits) - // n is the position of the decimal point relative to the start of the buffer. - - if (k <= n and n <= max_exp) - { - // digits[000] - // len <= max_exp + 2 - - std::memset(buf + k, '0', static_cast(n - k)); - // Make it look like a floating-point number (#362, #378) - buf[n + 0] = '.'; - buf[n + 1] = '0'; - return buf + (n + 2); - } - - if (0 < n and n <= max_exp) - { - // dig.its - // len <= max_digits10 + 1 - - assert(k > n); - - std::memmove(buf + (n + 1), buf + n, static_cast(k - n)); - buf[n] = '.'; - return buf + (k + 1); - } - - if (min_exp < n and n <= 0) - { - // 0.[000]digits - // len <= 2 + (-min_exp - 1) + max_digits10 - - std::memmove(buf + (2 + -n), buf, static_cast(k)); - buf[0] = '0'; - buf[1] = '.'; - std::memset(buf + 2, '0', static_cast(-n)); - return buf + (2 + (-n) + k); - } - - if (k == 1) - { - // dE+123 - // len <= 1 + 5 - - buf += 1; - } - else - { - // d.igitsE+123 - // len <= max_digits10 + 1 + 5 - - std::memmove(buf + 2, buf + 1, static_cast(k - 1)); - buf[1] = '.'; - buf += 1 + k; - } - - *buf++ = 'e'; - return append_exponent(buf, n - 1); -} - -} // namespace dtoa_impl - -/*! -@brief generates a decimal representation of the floating-point number value in [first, last). - -The format of the resulting decimal representation is similar to printf's %g -format. Returns an iterator pointing past-the-end of the decimal representation. - -@note The input number must be finite, i.e. NaN's and Inf's are not supported. -@note The buffer must be large enough. -@note The result is NOT null-terminated. -*/ -template -char* to_chars(char* first, char* last, FloatType value) -{ - static_cast(last); // maybe unused - fix warning - assert(std::isfinite(value)); - - // Use signbit(value) instead of (value < 0) since signbit works for -0. - if (std::signbit(value)) - { - value = -value; - *first++ = '-'; - } - - if (value == 0) // +-0 - { - *first++ = '0'; - // Make it look like a floating-point number (#362, #378) - *first++ = '.'; - *first++ = '0'; - return first; - } - - assert(last - first >= std::numeric_limits::max_digits10); - - // Compute v = buffer * 10^decimal_exponent. - // The decimal digits are stored in the buffer, which needs to be interpreted - // as an unsigned decimal integer. - // len is the length of the buffer, i.e. the number of decimal digits. - int len = 0; - int decimal_exponent = 0; - dtoa_impl::grisu2(first, len, decimal_exponent, value); - - assert(len <= std::numeric_limits::max_digits10); - - // Format the buffer like printf("%.*g", prec, value) - constexpr int kMinExp = -4; - // Use digits10 here to increase compatibility with version 2. - constexpr int kMaxExp = std::numeric_limits::digits10; - - assert(last - first >= kMaxExp + 2); - assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); - assert(last - first >= std::numeric_limits::max_digits10 + 6); - - return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); -} - -} // namespace detail -} // namespace nlohmann - -// #include - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -namespace detail -{ -/////////////////// -// serialization // -/////////////////// - -template -class serializer -{ - using string_t = typename BasicJsonType::string_t; - using number_float_t = typename BasicJsonType::number_float_t; - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - static constexpr uint8_t UTF8_ACCEPT = 0; - static constexpr uint8_t UTF8_REJECT = 1; - - public: - /*! - @param[in] s output stream to serialize to - @param[in] ichar indentation character to use - */ - serializer(output_adapter_t s, const char ichar) - : o(std::move(s)), loc(std::localeconv()), - thousands_sep(loc->thousands_sep == nullptr ? '\0' : * (loc->thousands_sep)), - decimal_point(loc->decimal_point == nullptr ? '\0' : * (loc->decimal_point)), - indent_char(ichar), indent_string(512, indent_char) - {} - - // delete because of pointer members - serializer(const serializer&) = delete; - serializer& operator=(const serializer&) = delete; - - /*! - @brief internal implementation of the serialization function - - This function is called by the public member function dump and organizes - the serialization internally. The indentation level is propagated as - additional parameter. In case of arrays and objects, the function is - called recursively. - - - strings and object keys are escaped using `escape_string()` - - integer numbers are converted implicitly via `operator<<` - - floating-point numbers are converted to a string using `"%g"` format - - @param[in] val value to serialize - @param[in] pretty_print whether the output shall be pretty-printed - @param[in] indent_step the indent level - @param[in] current_indent the current indent level (only used internally) - */ - void dump(const BasicJsonType& val, const bool pretty_print, - const bool ensure_ascii, - const unsigned int indent_step, - const unsigned int current_indent = 0) - { - switch (val.m_type) - { - case value_t::object: - { - if (val.m_value.object->empty()) - { - o->write_characters("{}", 2); - return; - } - - if (pretty_print) - { - o->write_characters("{\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_characters(indent_string.c_str(), new_indent); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\": ", 3); - dump(i->second, true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character('}'); - } - else - { - o->write_character('{'); - - // first n-1 elements - auto i = val.m_value.object->cbegin(); - for (std::size_t cnt = 0; cnt < val.m_value.object->size() - 1; ++cnt, ++i) - { - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(i != val.m_value.object->cend()); - assert(std::next(i) == val.m_value.object->cend()); - o->write_character('\"'); - dump_escaped(i->first, ensure_ascii); - o->write_characters("\":", 2); - dump(i->second, false, ensure_ascii, indent_step, current_indent); - - o->write_character('}'); - } - - return; - } - - case value_t::array: - { - if (val.m_value.array->empty()) - { - o->write_characters("[]", 2); - return; - } - - if (pretty_print) - { - o->write_characters("[\n", 2); - - // variable to hold indentation for recursive calls - const auto new_indent = current_indent + indent_step; - if (JSON_UNLIKELY(indent_string.size() < new_indent)) - { - indent_string.resize(indent_string.size() * 2, ' '); - } - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - o->write_characters(indent_string.c_str(), new_indent); - dump(*i, true, ensure_ascii, indent_step, new_indent); - o->write_characters(",\n", 2); - } - - // last element - assert(not val.m_value.array->empty()); - o->write_characters(indent_string.c_str(), new_indent); - dump(val.m_value.array->back(), true, ensure_ascii, indent_step, new_indent); - - o->write_character('\n'); - o->write_characters(indent_string.c_str(), current_indent); - o->write_character(']'); - } - else - { - o->write_character('['); - - // first n-1 elements - for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) - { - dump(*i, false, ensure_ascii, indent_step, current_indent); - o->write_character(','); - } - - // last element - assert(not val.m_value.array->empty()); - dump(val.m_value.array->back(), false, ensure_ascii, indent_step, current_indent); - - o->write_character(']'); - } - - return; - } - - case value_t::string: - { - o->write_character('\"'); - dump_escaped(*val.m_value.string, ensure_ascii); - o->write_character('\"'); - return; - } - - case value_t::boolean: - { - if (val.m_value.boolean) - { - o->write_characters("true", 4); - } - else - { - o->write_characters("false", 5); - } - return; - } - - case value_t::number_integer: - { - dump_integer(val.m_value.number_integer); - return; - } - - case value_t::number_unsigned: - { - dump_integer(val.m_value.number_unsigned); - return; - } - - case value_t::number_float: - { - dump_float(val.m_value.number_float); - return; - } - - case value_t::discarded: - { - o->write_characters("", 11); - return; - } - - case value_t::null: - { - o->write_characters("null", 4); - return; - } - } - } - - private: - /*! - @brief dump escaped string - - Escape a string by replacing certain special characters by a sequence of an - escape character (backslash) and another character and other control - characters by a sequence of "\u" followed by a four-digit hex - representation. The escaped string is written to output stream @a o. - - @param[in] s the string to escape - @param[in] ensure_ascii whether to escape non-ASCII characters with - \uXXXX sequences - - @complexity Linear in the length of string @a s. - */ - void dump_escaped(const string_t& s, const bool ensure_ascii) - { - uint32_t codepoint; - uint8_t state = UTF8_ACCEPT; - std::size_t bytes = 0; // number of bytes written to string_buffer - - for (std::size_t i = 0; i < s.size(); ++i) - { - const auto byte = static_cast(s[i]); - - switch (decode(state, codepoint, byte)) - { - case UTF8_ACCEPT: // decode found a new code point - { - switch (codepoint) - { - case 0x08: // backspace - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'b'; - break; - } - - case 0x09: // horizontal tab - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 't'; - break; - } - - case 0x0A: // newline - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'n'; - break; - } - - case 0x0C: // formfeed - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'f'; - break; - } - - case 0x0D: // carriage return - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = 'r'; - break; - } - - case 0x22: // quotation mark - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = '\"'; - break; - } - - case 0x5C: // reverse solidus - { - string_buffer[bytes++] = '\\'; - string_buffer[bytes++] = '\\'; - break; - } - - default: - { - // escape control characters (0x00..0x1F) or, if - // ensure_ascii parameter is used, non-ASCII characters - if ((codepoint <= 0x1F) or (ensure_ascii and (codepoint >= 0x7F))) - { - if (codepoint <= 0xFFFF) - { - snprintf(string_buffer.data() + bytes, 7, "\\u%04x", - static_cast(codepoint)); - bytes += 6; - } - else - { - snprintf(string_buffer.data() + bytes, 13, "\\u%04x\\u%04x", - static_cast(0xD7C0 + (codepoint >> 10)), - static_cast(0xDC00 + (codepoint & 0x3FF))); - bytes += 12; - } - } - else - { - // copy byte to buffer (all previous bytes - // been copied have in default case above) - string_buffer[bytes++] = s[i]; - } - break; - } - } - - // write buffer and reset index; there must be 13 bytes - // left, as this is the maximal number of bytes to be - // written ("\uxxxx\uxxxx\0") for one code point - if (string_buffer.size() - bytes < 13) - { - o->write_characters(string_buffer.data(), bytes); - bytes = 0; - } - break; - } - - case UTF8_REJECT: // decode found invalid UTF-8 byte - { - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(byte); - JSON_THROW(type_error::create(316, "invalid UTF-8 byte at index " + std::to_string(i) + ": 0x" + ss.str())); - } - - default: // decode found yet incomplete multi-byte code point - { - if (not ensure_ascii) - { - // code point will not be escaped - copy byte to buffer - string_buffer[bytes++] = s[i]; - } - break; - } - } - } - - if (JSON_LIKELY(state == UTF8_ACCEPT)) - { - // write buffer - if (bytes > 0) - { - o->write_characters(string_buffer.data(), bytes); - } - } - else - { - // we finish reading, but do not accept: string was incomplete - std::stringstream ss; - ss << std::setw(2) << std::uppercase << std::setfill('0') << std::hex << static_cast(static_cast(s.back())); - JSON_THROW(type_error::create(316, "incomplete UTF-8 string; last byte: 0x" + ss.str())); - } - } - - /*! - @brief dump an integer - - Dump a given integer to output stream @a o. Works internally with - @a number_buffer. - - @param[in] x integer number (signed or unsigned) to dump - @tparam NumberType either @a number_integer_t or @a number_unsigned_t - */ - template::value or - std::is_same::value, - int> = 0> - void dump_integer(NumberType x) - { - // special case for "0" - if (x == 0) - { - o->write_character('0'); - return; - } - - const bool is_negative = (x <= 0) and (x != 0); // see issue #755 - std::size_t i = 0; - - while (x != 0) - { - // spare 1 byte for '\0' - assert(i < number_buffer.size() - 1); - - const auto digit = std::labs(static_cast(x % 10)); - number_buffer[i++] = static_cast('0' + digit); - x /= 10; - } - - if (is_negative) - { - // make sure there is capacity for the '-' - assert(i < number_buffer.size() - 2); - number_buffer[i++] = '-'; - } - - std::reverse(number_buffer.begin(), number_buffer.begin() + i); - o->write_characters(number_buffer.data(), i); - } - - /*! - @brief dump a floating-point number - - Dump a given floating-point number to output stream @a o. Works internally - with @a number_buffer. - - @param[in] x floating-point number to dump - */ - void dump_float(number_float_t x) - { - // NaN / inf - if (not std::isfinite(x)) - { - o->write_characters("null", 4); - return; - } - - // If number_float_t is an IEEE-754 single or double precision number, - // use the Grisu2 algorithm to produce short numbers which are - // guaranteed to round-trip, using strtof and strtod, resp. - // - // NB: The test below works if == . - static constexpr bool is_ieee_single_or_double - = (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 24 and std::numeric_limits::max_exponent == 128) or - (std::numeric_limits::is_iec559 and std::numeric_limits::digits == 53 and std::numeric_limits::max_exponent == 1024); - - dump_float(x, std::integral_constant()); - } - - void dump_float(number_float_t x, std::true_type /*is_ieee_single_or_double*/) - { - char* begin = number_buffer.data(); - char* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x); - - o->write_characters(begin, static_cast(end - begin)); - } - - void dump_float(number_float_t x, std::false_type /*is_ieee_single_or_double*/) - { - // get number of digits for a float -> text -> float round-trip - static constexpr auto d = std::numeric_limits::max_digits10; - - // the actual conversion - std::ptrdiff_t len = snprintf(number_buffer.data(), number_buffer.size(), "%.*g", d, x); - - // negative value indicates an error - assert(len > 0); - // check if buffer was large enough - assert(static_cast(len) < number_buffer.size()); - - // erase thousands separator - if (thousands_sep != '\0') - { - const auto end = std::remove(number_buffer.begin(), - number_buffer.begin() + len, thousands_sep); - std::fill(end, number_buffer.end(), '\0'); - assert((end - number_buffer.begin()) <= len); - len = (end - number_buffer.begin()); - } - - // convert decimal point to '.' - if (decimal_point != '\0' and decimal_point != '.') - { - const auto dec_pos = std::find(number_buffer.begin(), number_buffer.end(), decimal_point); - if (dec_pos != number_buffer.end()) - { - *dec_pos = '.'; - } - } - - o->write_characters(number_buffer.data(), static_cast(len)); - - // determine if need to append ".0" - const bool value_is_int_like = - std::none_of(number_buffer.begin(), number_buffer.begin() + len + 1, - [](char c) - { - return (c == '.' or c == 'e'); - }); - - if (value_is_int_like) - { - o->write_characters(".0", 2); - } - } - - /*! - @brief check whether a string is UTF-8 encoded - - The function checks each byte of a string whether it is UTF-8 encoded. The - result of the check is stored in the @a state parameter. The function must - be called initially with state 0 (accept). State 1 means the string must - be rejected, because the current byte is not allowed. If the string is - completely processed, but the state is non-zero, the string ended - prematurely; that is, the last byte indicated more bytes should have - followed. - - @param[in,out] state the state of the decoding - @param[in,out] codep codepoint (valid only if resulting state is UTF8_ACCEPT) - @param[in] byte next byte to decode - @return new state - - @note The function has been edited: a std::array is used. - - @copyright Copyright (c) 2008-2009 Bjoern Hoehrmann - @sa http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ - */ - static uint8_t decode(uint8_t& state, uint32_t& codep, const uint8_t byte) noexcept - { - static const std::array utf8d = - { - { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF - 8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF - 0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF - 0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF - 0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0 - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2 - 1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4 - 1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6 - 1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8 - } - }; - - const uint8_t type = utf8d[byte]; - - codep = (state != UTF8_ACCEPT) - ? (byte & 0x3fu) | (codep << 6) - : static_cast(0xff >> type) & (byte); - - state = utf8d[256u + state * 16u + type]; - return state; - } - - private: - /// the output of the serializer - output_adapter_t o = nullptr; - - /// a (hopefully) large enough character buffer - std::array number_buffer{{}}; - - /// the locale - const std::lconv* loc = nullptr; - /// the locale's thousand separator character - const char thousands_sep = '\0'; - /// the locale's decimal point character - const char decimal_point = '\0'; - - /// string buffer - std::array string_buffer{{}}; - - /// the indentation character - const char indent_char; - /// the indentation string - string_t indent_string; -}; -} -} - -// #include - - -#include -#include - -namespace nlohmann -{ -namespace detail -{ -template -class json_ref -{ - public: - using value_type = BasicJsonType; - - json_ref(value_type&& value) - : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) - {} - - json_ref(const value_type& value) - : value_ref(const_cast(&value)), is_rvalue(false) - {} - - json_ref(std::initializer_list init) - : owned_value(init), value_ref(&owned_value), is_rvalue(true) - {} - - template - json_ref(Args&& ... args) - : owned_value(std::forward(args)...), value_ref(&owned_value), is_rvalue(true) - {} - - // class should be movable only - json_ref(json_ref&&) = default; - json_ref(const json_ref&) = delete; - json_ref& operator=(const json_ref&) = delete; - - value_type moved_or_copied() const - { - if (is_rvalue) - { - return std::move(*value_ref); - } - return *value_ref; - } - - value_type const& operator*() const - { - return *static_cast(value_ref); - } - - value_type const* operator->() const - { - return static_cast(value_ref); - } - - private: - mutable value_type owned_value = nullptr; - value_type* value_ref = nullptr; - const bool is_rvalue; -}; -} -} - -// #include - - -#include // assert -#include // accumulate -#include // string -#include // vector - -// #include - -// #include - -// #include - - -namespace nlohmann -{ -template -class json_pointer -{ - // allow basic_json to access private members - NLOHMANN_BASIC_JSON_TPL_DECLARATION - friend class basic_json; - - public: - /*! - @brief create JSON pointer - - Create a JSON pointer according to the syntax described in - [Section 3 of RFC6901](https://tools.ietf.org/html/rfc6901#section-3). - - @param[in] s string representing the JSON pointer; if omitted, the empty - string is assumed which references the whole JSON value - - @throw parse_error.107 if the given JSON pointer @a s is nonempty and does - not begin with a slash (`/`); see example below - - @throw parse_error.108 if a tilde (`~`) in the given JSON pointer @a s is - not followed by `0` (representing `~`) or `1` (representing `/`); see - example below - - @liveexample{The example shows the construction several valid JSON pointers - as well as the exceptional behavior.,json_pointer} - - @since version 2.0.0 - */ - explicit json_pointer(const std::string& s = "") - : reference_tokens(split(s)) - {} - - /*! - @brief return a string representation of the JSON pointer - - @invariant For each JSON pointer `ptr`, it holds: - @code {.cpp} - ptr == json_pointer(ptr.to_string()); - @endcode - - @return a string representation of the JSON pointer - - @liveexample{The example shows the result of `to_string`., - json_pointer__to_string} - - @since version 2.0.0 - */ - std::string to_string() const noexcept - { - return std::accumulate(reference_tokens.begin(), reference_tokens.end(), - std::string{}, - [](const std::string & a, const std::string & b) - { - return a + "/" + escape(b); - }); - } - - /// @copydoc to_string() - operator std::string() const - { - return to_string(); - } - - /*! - @param[in] s reference token to be converted into an array index - - @return integer representation of @a s - - @throw out_of_range.404 if string @a s could not be converted to an integer - */ - static int array_index(const std::string& s) - { - std::size_t processed_chars = 0; - const int res = std::stoi(s, &processed_chars); - - // check if the string was completely read - if (JSON_UNLIKELY(processed_chars != s.size())) - { - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); - } - - return res; - } - - private: - /*! - @brief remove and return last reference pointer - @throw out_of_range.405 if JSON pointer has no parent - */ - std::string pop_back() - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - auto last = reference_tokens.back(); - reference_tokens.pop_back(); - return last; - } - - /// return whether pointer points to the root document - bool is_root() const - { - return reference_tokens.empty(); - } - - json_pointer top() const - { - if (JSON_UNLIKELY(is_root())) - { - JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent")); - } - - json_pointer result = *this; - result.reference_tokens = {reference_tokens[0]}; - return result; - } - - /*! - @brief create and return a reference to the pointed to value - - @complexity Linear in the number of reference tokens. - - @throw parse_error.109 if array index is not a number - @throw type_error.313 if value cannot be unflattened - */ - BasicJsonType& get_and_create(BasicJsonType& j) const - { - using size_type = typename BasicJsonType::size_type; - auto result = &j; - - // in case no reference tokens exist, return a reference to the JSON value - // j which will be overwritten by a primitive value - for (const auto& reference_token : reference_tokens) - { - switch (result->m_type) - { - case detail::value_t::null: - { - if (reference_token == "0") - { - // start a new array if reference token is 0 - result = &result->operator[](0); - } - else - { - // start a new object otherwise - result = &result->operator[](reference_token); - } - break; - } - - case detail::value_t::object: - { - // create an entry in the object - result = &result->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // create an entry in the array - JSON_TRY - { - result = &result->operator[](static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - /* - The following code is only reached if there exists a reference - token _and_ the current value is primitive. In this case, we have - an error situation, because primitive values may only occur as - single value; that is, with an empty list of reference tokens. - */ - default: - JSON_THROW(detail::type_error::create(313, "invalid value to unflatten")); - } - } - - return *result; - } - - /*! - @brief return a reference to the pointed to value - - @note This version does not throw if a value is not present, but tries to - create nested values instead. For instance, calling this function - with pointer `"/this/that"` on a null value is equivalent to calling - `operator[]("this").operator[]("that")` on that value, effectively - changing the null value to an object. - - @param[in] ptr a JSON value - - @return reference to the JSON value pointed to by the JSON pointer - - @complexity Linear in the length of the JSON pointer. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - BasicJsonType& get_unchecked(BasicJsonType* ptr) const - { - using size_type = typename BasicJsonType::size_type; - for (const auto& reference_token : reference_tokens) - { - // convert null values to arrays or objects before continuing - if (ptr->m_type == detail::value_t::null) - { - // check if reference token is a number - const bool nums = - std::all_of(reference_token.begin(), reference_token.end(), - [](const char x) - { - return (x >= '0' and x <= '9'); - }); - - // change value to array for numbers or "-" or to object otherwise - *ptr = (nums or reference_token == "-") - ? detail::value_t::array - : detail::value_t::object; - } - - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - if (reference_token == "-") - { - // explicitly treat "-" as index beyond the end - ptr = &ptr->operator[](ptr->m_value.array->size()); - } - else - { - // convert array index to number; unchecked access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; - } - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - BasicJsonType& get_checked(BasicJsonType* ptr) const - { - using size_type = typename BasicJsonType::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; - } - - /*! - @brief return a const reference to the pointed to value - - @param[in] ptr a JSON value - - @return const reference to the JSON value pointed to by the JSON - pointer - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const - { - using size_type = typename BasicJsonType::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // use unchecked object access - ptr = &ptr->operator[](reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" cannot be used for const access - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // use unchecked array access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; - } - - /*! - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - */ - const BasicJsonType& get_checked(const BasicJsonType* ptr) const - { - using size_type = typename BasicJsonType::size_type; - for (const auto& reference_token : reference_tokens) - { - switch (ptr->m_type) - { - case detail::value_t::object: - { - // note: at performs range check - ptr = &ptr->at(reference_token); - break; - } - - case detail::value_t::array: - { - if (JSON_UNLIKELY(reference_token == "-")) - { - // "-" always fails the range check - JSON_THROW(detail::out_of_range::create(402, - "array index '-' (" + std::to_string(ptr->m_value.array->size()) + - ") is out of range")); - } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } - break; - } - - default: - JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + reference_token + "'")); - } - } - - return *ptr; - } - - /*! - @brief split the string input to reference tokens - - @note This function is only called by the json_pointer constructor. - All exceptions below are documented there. - - @throw parse_error.107 if the pointer is not empty or begins with '/' - @throw parse_error.108 if character '~' is not followed by '0' or '1' - */ - static std::vector split(const std::string& reference_string) - { - std::vector result; - - // special case: empty reference string -> no reference tokens - if (reference_string.empty()) - { - return result; - } - - // check if nonempty reference string begins with slash - if (JSON_UNLIKELY(reference_string[0] != '/')) - { - JSON_THROW(detail::parse_error::create(107, 1, - "JSON pointer must be empty or begin with '/' - was: '" + - reference_string + "'")); - } - - // extract the reference tokens: - // - slash: position of the last read slash (or end of string) - // - start: position after the previous slash - for ( - // search for the first slash after the first character - std::size_t slash = reference_string.find_first_of('/', 1), - // set the beginning of the first reference token - start = 1; - // we can stop if start == string::npos+1 = 0 - start != 0; - // set the beginning of the next reference token - // (will eventually be 0 if slash == std::string::npos) - start = slash + 1, - // find next slash - slash = reference_string.find_first_of('/', start)) - { - // use the text between the beginning of the reference token - // (start) and the last slash (slash). - auto reference_token = reference_string.substr(start, slash - start); - - // check reference tokens are properly escaped - for (std::size_t pos = reference_token.find_first_of('~'); - pos != std::string::npos; - pos = reference_token.find_first_of('~', pos + 1)) - { - assert(reference_token[pos] == '~'); - - // ~ must be followed by 0 or 1 - if (JSON_UNLIKELY(pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and - reference_token[pos + 1] != '1'))) - { - JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); - } - } - - // finally, store the reference token - unescape(reference_token); - result.push_back(reference_token); - } - - return result; - } - - /*! - @brief replace all occurrences of a substring by another string - - @param[in,out] s the string to manipulate; changed so that all - occurrences of @a f are replaced with @a t - @param[in] f the substring to replace with @a t - @param[in] t the string to replace @a f - - @pre The search string @a f must not be empty. **This precondition is - enforced with an assertion.** - - @since version 2.0.0 - */ - static void replace_substring(std::string& s, const std::string& f, - const std::string& t) - { - assert(not f.empty()); - for (auto pos = s.find(f); // find first occurrence of f - pos != std::string::npos; // make sure f was found - s.replace(pos, f.size(), t), // replace with t, and - pos = s.find(f, pos + t.size())) // find next occurrence of f - {} - } - - /// escape "~"" to "~0" and "/" to "~1" - static std::string escape(std::string s) - { - replace_substring(s, "~", "~0"); - replace_substring(s, "/", "~1"); - return s; - } - - /// unescape "~1" to tilde and "~0" to slash (order is important!) - static void unescape(std::string& s) - { - replace_substring(s, "~1", "/"); - replace_substring(s, "~0", "~"); - } - - /*! - @param[in] reference_string the reference string to the current value - @param[in] value the value to consider - @param[in,out] result the result object to insert values to - - @note Empty objects or arrays are flattened to `null`. - */ - static void flatten(const std::string& reference_string, - const BasicJsonType& value, - BasicJsonType& result) - { - switch (value.m_type) - { - case detail::value_t::array: - { - if (value.m_value.array->empty()) - { - // flatten empty array as null - result[reference_string] = nullptr; - } - else - { - // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) - { - flatten(reference_string + "/" + std::to_string(i), - value.m_value.array->operator[](i), result); - } - } - break; - } - - case detail::value_t::object: - { - if (value.m_value.object->empty()) - { - // flatten empty object as null - result[reference_string] = nullptr; - } - else - { - // iterate object and use keys as reference string - for (const auto& element : *value.m_value.object) - { - flatten(reference_string + "/" + escape(element.first), element.second, result); - } - } - break; - } - - default: - { - // add primitive value with its reference string - result[reference_string] = value; - break; - } - } - } - - /*! - @param[in] value flattened JSON - - @return unflattened JSON - - @throw parse_error.109 if array index is not a number - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - @throw type_error.313 if value cannot be unflattened - */ - static BasicJsonType - unflatten(const BasicJsonType& value) - { - if (JSON_UNLIKELY(not value.is_object())) - { - JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); - } - - BasicJsonType result; - - // iterate the JSON object values - for (const auto& element : *value.m_value.object) - { - if (JSON_UNLIKELY(not element.second.is_primitive())) - { - JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); - } - - // assign value to reference pointed to by JSON pointer; Note that if - // the JSON pointer is "" (i.e., points to the whole value), function - // get_and_create returns a reference to result itself. An assignment - // will then create a primitive value. - json_pointer(element.first).get_and_create(result) = element.second; - } - - return result; - } - - friend bool operator==(json_pointer const& lhs, - json_pointer const& rhs) noexcept - { - return (lhs.reference_tokens == rhs.reference_tokens); - } - - friend bool operator!=(json_pointer const& lhs, - json_pointer const& rhs) noexcept - { - return not (lhs == rhs); - } - - /// the reference tokens - std::vector reference_tokens; -}; -} - -// #include - - -#include - -// #include - -// #include - - -namespace nlohmann -{ -template -struct adl_serializer -{ - /*! - @brief convert a JSON value to any value type - - This function is usually called by the `get()` function of the - @ref basic_json class (either explicit or via conversion operators). - - @param[in] j JSON value to read from - @param[in,out] val value to write to - */ - template - static void from_json(BasicJsonType&& j, ValueType& val) noexcept( - noexcept(::nlohmann::from_json(std::forward(j), val))) - { - ::nlohmann::from_json(std::forward(j), val); - } - - /*! - @brief convert any value type to a JSON value - - This function is usually called by the constructors of the @ref basic_json - class. - - @param[in,out] j JSON value to write to - @param[in] val value to read from - */ - template - static void to_json(BasicJsonType& j, ValueType&& val) noexcept( - noexcept(::nlohmann::to_json(j, std::forward(val)))) - { - ::nlohmann::to_json(j, std::forward(val)); - } -}; -} - - -/*! -@brief namespace for Niels Lohmann -@see https://github.com/nlohmann -@since version 1.0.0 -*/ -namespace nlohmann -{ - -/*! -@brief a class to store JSON values - -@tparam ObjectType type for JSON objects (`std::map` by default; will be used -in @ref object_t) -@tparam ArrayType type for JSON arrays (`std::vector` by default; will be used -in @ref array_t) -@tparam StringType type for JSON strings and object keys (`std::string` by -default; will be used in @ref string_t) -@tparam BooleanType type for JSON booleans (`bool` by default; will be used -in @ref boolean_t) -@tparam NumberIntegerType type for JSON integer numbers (`int64_t` by -default; will be used in @ref number_integer_t) -@tparam NumberUnsignedType type for JSON unsigned integer numbers (@c -`uint64_t` by default; will be used in @ref number_unsigned_t) -@tparam NumberFloatType type for JSON floating-point numbers (`double` by -default; will be used in @ref number_float_t) -@tparam AllocatorType type of the allocator to use (`std::allocator` by -default) -@tparam JSONSerializer the serializer to resolve internal calls to `to_json()` -and `from_json()` (@ref adl_serializer by default) - -@requirement The class satisfies the following concept requirements: -- Basic - - [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible): - JSON values can be default constructed. The result will be a JSON null - value. - - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible): - A JSON value can be constructed from an rvalue argument. - - [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible): - A JSON value can be copy-constructed from an lvalue expression. - - [MoveAssignable](http://en.cppreference.com/w/cpp/concept/MoveAssignable): - A JSON value van be assigned from an rvalue argument. - - [CopyAssignable](http://en.cppreference.com/w/cpp/concept/CopyAssignable): - A JSON value can be copy-assigned from an lvalue expression. - - [Destructible](http://en.cppreference.com/w/cpp/concept/Destructible): - JSON values can be destructed. -- Layout - - [StandardLayoutType](http://en.cppreference.com/w/cpp/concept/StandardLayoutType): - JSON values have - [standard layout](http://en.cppreference.com/w/cpp/language/data_members#Standard_layout): - All non-static data members are private and standard layout types, the - class has no virtual functions or (virtual) base classes. -- Library-wide - - [EqualityComparable](http://en.cppreference.com/w/cpp/concept/EqualityComparable): - JSON values can be compared with `==`, see @ref - operator==(const_reference,const_reference). - - [LessThanComparable](http://en.cppreference.com/w/cpp/concept/LessThanComparable): - JSON values can be compared with `<`, see @ref - operator<(const_reference,const_reference). - - [Swappable](http://en.cppreference.com/w/cpp/concept/Swappable): - Any JSON lvalue or rvalue of can be swapped with any lvalue or rvalue of - other compatible types, using unqualified function call @ref swap(). - - [NullablePointer](http://en.cppreference.com/w/cpp/concept/NullablePointer): - JSON values can be compared against `std::nullptr_t` objects which are used - to model the `null` value. -- Container - - [Container](http://en.cppreference.com/w/cpp/concept/Container): - JSON values can be used like STL containers and provide iterator access. - - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer); - JSON values can be used like STL containers and provide reverse iterator - access. - -@invariant The member variables @a m_value and @a m_type have the following -relationship: -- If `m_type == value_t::object`, then `m_value.object != nullptr`. -- If `m_type == value_t::array`, then `m_value.array != nullptr`. -- If `m_type == value_t::string`, then `m_value.string != nullptr`. -The invariants are checked by member function assert_invariant(). - -@internal -@note ObjectType trick from http://stackoverflow.com/a/9860911 -@endinternal - -@see [RFC 7159: The JavaScript Object Notation (JSON) Data Interchange -Format](http://rfc7159.net/rfc7159) - -@since version 1.0.0 - -@nosubgrouping -*/ -NLOHMANN_BASIC_JSON_TPL_DECLARATION -class basic_json -{ - private: - template friend struct detail::external_constructor; - friend ::nlohmann::json_pointer; - friend ::nlohmann::detail::parser; - friend ::nlohmann::detail::serializer; - template - friend class ::nlohmann::detail::iter_impl; - template - friend class ::nlohmann::detail::binary_writer; - template - friend class ::nlohmann::detail::binary_reader; - - /// workaround type for MSVC - using basic_json_t = NLOHMANN_BASIC_JSON_TPL; - - // convenience aliases for types residing in namespace detail; - using lexer = ::nlohmann::detail::lexer; - using parser = ::nlohmann::detail::parser; - - using primitive_iterator_t = ::nlohmann::detail::primitive_iterator_t; - template - using internal_iterator = ::nlohmann::detail::internal_iterator; - template - using iter_impl = ::nlohmann::detail::iter_impl; - template - using iteration_proxy = ::nlohmann::detail::iteration_proxy; - template using json_reverse_iterator = ::nlohmann::detail::json_reverse_iterator; - - template - using output_adapter_t = ::nlohmann::detail::output_adapter_t; - - using binary_reader = ::nlohmann::detail::binary_reader; - template using binary_writer = ::nlohmann::detail::binary_writer; - - using serializer = ::nlohmann::detail::serializer; - - public: - using value_t = detail::value_t; - /// @copydoc nlohmann::json_pointer - using json_pointer = ::nlohmann::json_pointer; - template - using json_serializer = JSONSerializer; - /// helper type for initializer lists of basic_json values - using initializer_list_t = std::initializer_list>; - - //////////////// - // exceptions // - //////////////// - - /// @name exceptions - /// Classes to implement user-defined exceptions. - /// @{ - - /// @copydoc detail::exception - using exception = detail::exception; - /// @copydoc detail::parse_error - using parse_error = detail::parse_error; - /// @copydoc detail::invalid_iterator - using invalid_iterator = detail::invalid_iterator; - /// @copydoc detail::type_error - using type_error = detail::type_error; - /// @copydoc detail::out_of_range - using out_of_range = detail::out_of_range; - /// @copydoc detail::other_error - using other_error = detail::other_error; - - /// @} - - - ///////////////////// - // container types // - ///////////////////// - - /// @name container types - /// The canonic container types to use @ref basic_json like any other STL - /// container. - /// @{ - - /// the type of elements in a basic_json container - using value_type = basic_json; - - /// the type of an element reference - using reference = value_type&; - /// the type of an element const reference - using const_reference = const value_type&; - - /// a type to represent differences between iterators - using difference_type = std::ptrdiff_t; - /// a type to represent container sizes - using size_type = std::size_t; - - /// the allocator type - using allocator_type = AllocatorType; - - /// the type of an element pointer - using pointer = typename std::allocator_traits::pointer; - /// the type of an element const pointer - using const_pointer = typename std::allocator_traits::const_pointer; - - /// an iterator for a basic_json container - using iterator = iter_impl; - /// a const iterator for a basic_json container - using const_iterator = iter_impl; - /// a reverse iterator for a basic_json container - using reverse_iterator = json_reverse_iterator; - /// a const reverse iterator for a basic_json container - using const_reverse_iterator = json_reverse_iterator; - - /// @} - - - /*! - @brief returns the allocator associated with the container - */ - static allocator_type get_allocator() - { - return allocator_type(); - } - - /*! - @brief returns version information on the library - - This function returns a JSON object with information about the library, - including the version number and information on the platform and compiler. - - @return JSON object holding version information - key | description - ----------- | --------------- - `compiler` | Information on the used compiler. It is an object with the following keys: `c++` (the used C++ standard), `family` (the compiler family; possible values are `clang`, `icc`, `gcc`, `ilecpp`, `msvc`, `pgcpp`, `sunpro`, and `unknown`), and `version` (the compiler version). - `copyright` | The copyright line for the library as string. - `name` | The name of the library as string. - `platform` | The used platform as string. Possible values are `win32`, `linux`, `apple`, `unix`, and `unknown`. - `url` | The URL of the project as string. - `version` | The version of the library. It is an object with the following keys: `major`, `minor`, and `patch` as defined by [Semantic Versioning](http://semver.org), and `string` (the version string). - - @liveexample{The following code shows an example output of the `meta()` - function.,meta} - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @complexity Constant. - - @since 2.1.0 - */ - static basic_json meta() - { - basic_json result; - - result["copyright"] = "(C) 2013-2017 Niels Lohmann"; - result["name"] = "JSON for Modern C++"; - result["url"] = "https://github.com/nlohmann/json"; - result["version"]["string"] = - std::to_string(NLOHMANN_JSON_VERSION_MAJOR) + "." + - std::to_string(NLOHMANN_JSON_VERSION_MINOR) + "." + - std::to_string(NLOHMANN_JSON_VERSION_PATCH); - result["version"]["major"] = NLOHMANN_JSON_VERSION_MAJOR; - result["version"]["minor"] = NLOHMANN_JSON_VERSION_MINOR; - result["version"]["patch"] = NLOHMANN_JSON_VERSION_PATCH; - -#ifdef _WIN32 - result["platform"] = "win32"; -#elif defined __linux__ - result["platform"] = "linux"; -#elif defined __APPLE__ - result["platform"] = "apple"; -#elif defined __unix__ - result["platform"] = "unix"; -#else - result["platform"] = "unknown"; -#endif - -#if defined(__ICC) || defined(__INTEL_COMPILER) - result["compiler"] = {{"family", "icc"}, {"version", __INTEL_COMPILER}}; -#elif defined(__clang__) - result["compiler"] = {{"family", "clang"}, {"version", __clang_version__}}; -#elif defined(__GNUC__) || defined(__GNUG__) - result["compiler"] = {{"family", "gcc"}, {"version", std::to_string(__GNUC__) + "." + std::to_string(__GNUC_MINOR__) + "." + std::to_string(__GNUC_PATCHLEVEL__)}}; -#elif defined(__HP_cc) || defined(__HP_aCC) - result["compiler"] = "hp" -#elif defined(__IBMCPP__) - result["compiler"] = {{"family", "ilecpp"}, {"version", __IBMCPP__}}; -#elif defined(_MSC_VER) - result["compiler"] = {{"family", "msvc"}, {"version", _MSC_VER}}; -#elif defined(__PGI) - result["compiler"] = {{"family", "pgcpp"}, {"version", __PGI}}; -#elif defined(__SUNPRO_CC) - result["compiler"] = {{"family", "sunpro"}, {"version", __SUNPRO_CC}}; -#else - result["compiler"] = {{"family", "unknown"}, {"version", "unknown"}}; -#endif - -#ifdef __cplusplus - result["compiler"]["c++"] = std::to_string(__cplusplus); -#else - result["compiler"]["c++"] = "unknown"; -#endif - return result; - } - - - /////////////////////////// - // JSON value data types // - /////////////////////////// - - /// @name JSON value data types - /// The data types to store a JSON value. These types are derived from - /// the template arguments passed to class @ref basic_json. - /// @{ - -#if defined(JSON_HAS_CPP_14) - // Use transparent comparator if possible, combined with perfect forwarding - // on find() and count() calls prevents unnecessary string construction. - using object_comparator_t = std::less<>; -#else - using object_comparator_t = std::less; -#endif - - /*! - @brief a type for an object - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON objects as follows: - > An object is an unordered collection of zero or more name/value pairs, - > where a name is a string and a value is a string, number, boolean, null, - > object, or array. - - To store objects in C++, a type is defined by the template parameters - described below. - - @tparam ObjectType the container to store objects (e.g., `std::map` or - `std::unordered_map`) - @tparam StringType the type of the keys or names (e.g., `std::string`). - The comparison function `std::less` is used to order elements - inside the container. - @tparam AllocatorType the allocator to use for objects (e.g., - `std::allocator`) - - #### Default type - - With the default values for @a ObjectType (`std::map`), @a StringType - (`std::string`), and @a AllocatorType (`std::allocator`), the default - value for @a object_t is: - - @code {.cpp} - std::map< - std::string, // key_type - basic_json, // value_type - std::less, // key_compare - std::allocator> // allocator_type - > - @endcode - - #### Behavior - - The choice of @a object_t influences the behavior of the JSON class. With - the default type, objects have the following behavior: - - - When all names are unique, objects will be interoperable in the sense - that all software implementations receiving that object will agree on - the name-value mappings. - - When the names within an object are not unique, later stored name/value - pairs overwrite previously stored name/value pairs, leaving the used - names unique. For instance, `{"key": 1}` and `{"key": 2, "key": 1}` will - be treated as equal and both stored as `{"key": 1}`. - - Internally, name/value pairs are stored in lexicographical order of the - names. Objects will also be serialized (see @ref dump) in this order. - For instance, `{"b": 1, "a": 2}` and `{"a": 2, "b": 1}` will be stored - and serialized as `{"a": 2, "b": 1}`. - - When comparing objects, the order of the name/value pairs is irrelevant. - This makes objects interoperable in the sense that they will not be - affected by these differences. For instance, `{"b": 1, "a": 2}` and - `{"a": 2, "b": 1}` will be treated as equal. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the maximum depth of nesting. - - In this class, the object's limit of nesting is not explicitly constrained. - However, a maximum depth of nesting may be introduced by the compiler or - runtime environment. A theoretical limit can be queried by calling the - @ref max_size function of a JSON object. - - #### Storage - - Objects are stored as pointers in a @ref basic_json type. That is, for any - access to object values, a pointer of type `object_t*` must be - dereferenced. - - @sa @ref array_t -- type for an array value - - @since version 1.0.0 - - @note The order name/value pairs are added to the object is *not* - preserved by the library. Therefore, iterating an object may return - name/value pairs in a different order than they were originally stored. In - fact, keys will be traversed in alphabetical order as `std::map` with - `std::less` is used by default. Please note this behavior conforms to [RFC - 7159](http://rfc7159.net/rfc7159), because any order implements the - specified "unordered" nature of JSON objects. - */ - using object_t = ObjectType>>; - - /*! - @brief a type for an array - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON arrays as follows: - > An array is an ordered sequence of zero or more values. - - To store objects in C++, a type is defined by the template parameters - explained below. - - @tparam ArrayType container type to store arrays (e.g., `std::vector` or - `std::list`) - @tparam AllocatorType allocator to use for arrays (e.g., `std::allocator`) - - #### Default type - - With the default values for @a ArrayType (`std::vector`) and @a - AllocatorType (`std::allocator`), the default value for @a array_t is: - - @code {.cpp} - std::vector< - basic_json, // value_type - std::allocator // allocator_type - > - @endcode - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the maximum depth of nesting. - - In this class, the array's limit of nesting is not explicitly constrained. - However, a maximum depth of nesting may be introduced by the compiler or - runtime environment. A theoretical limit can be queried by calling the - @ref max_size function of a JSON array. - - #### Storage - - Arrays are stored as pointers in a @ref basic_json type. That is, for any - access to array values, a pointer of type `array_t*` must be dereferenced. - - @sa @ref object_t -- type for an object value - - @since version 1.0.0 - */ - using array_t = ArrayType>; - - /*! - @brief a type for a string - - [RFC 7159](http://rfc7159.net/rfc7159) describes JSON strings as follows: - > A string is a sequence of zero or more Unicode characters. - - To store objects in C++, a type is defined by the template parameter - described below. Unicode values are split by the JSON class into - byte-sized characters during deserialization. - - @tparam StringType the container to store strings (e.g., `std::string`). - Note this container is used for keys/names in objects, see @ref object_t. - - #### Default type - - With the default values for @a StringType (`std::string`), the default - value for @a string_t is: - - @code {.cpp} - std::string - @endcode - - #### Encoding - - Strings are stored in UTF-8 encoding. Therefore, functions like - `std::string::size()` or `std::string::length()` return the number of - bytes in the string rather than the number of characters or glyphs. - - #### String comparison - - [RFC 7159](http://rfc7159.net/rfc7159) states: - > Software implementations are typically required to test names of object - > members for equality. Implementations that transform the textual - > representation into sequences of Unicode code units and then perform the - > comparison numerically, code unit by code unit, are interoperable in the - > sense that implementations will agree in all cases on equality or - > inequality of two strings. For example, implementations that compare - > strings with escaped characters unconverted may incorrectly find that - > `"a\\b"` and `"a\u005Cb"` are not equal. - - This implementation is interoperable as it does compare strings code unit - by code unit. - - #### Storage - - String values are stored as pointers in a @ref basic_json type. That is, - for any access to string values, a pointer of type `string_t*` must be - dereferenced. - - @since version 1.0.0 - */ - using string_t = StringType; - - /*! - @brief a type for a boolean - - [RFC 7159](http://rfc7159.net/rfc7159) implicitly describes a boolean as a - type which differentiates the two literals `true` and `false`. - - To store objects in C++, a type is defined by the template parameter @a - BooleanType which chooses the type to use. - - #### Default type - - With the default values for @a BooleanType (`bool`), the default value for - @a boolean_t is: - - @code {.cpp} - bool - @endcode - - #### Storage - - Boolean values are stored directly inside a @ref basic_json type. - - @since version 1.0.0 - */ - using boolean_t = BooleanType; - - /*! - @brief a type for a number (integer) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store integer numbers in C++, a type is defined by the template - parameter @a NumberIntegerType which chooses the type to use. - - #### Default type - - With the default values for @a NumberIntegerType (`int64_t`), the default - value for @a number_integer_t is: - - @code {.cpp} - int64_t - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in integer literals lead to an interpretation as octal - number. Internally, the value will be stored as decimal number. For - instance, the C++ integer literal `010` will be serialized to `8`. - During deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the range and precision of numbers. - - When the default type is used, the maximal integer number that can be - stored is `9223372036854775807` (INT64_MAX) and the minimal integer number - that can be stored is `-9223372036854775808` (INT64_MIN). Integer numbers - that are out of range will yield over/underflow when used in a - constructor. During deserialization, too large or small integer numbers - will be automatically be stored as @ref number_unsigned_t or @ref - number_float_t. - - [RFC 7159](http://rfc7159.net/rfc7159) further states: - > Note that when such software is used, numbers that are integers and are - > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense - > that implementations will agree exactly on their numeric values. - - As this range is a subrange of the exactly supported range [INT64_MIN, - INT64_MAX], this class's integer type is interoperable. - - #### Storage - - Integer number values are stored directly inside a @ref basic_json type. - - @sa @ref number_float_t -- type for number values (floating-point) - - @sa @ref number_unsigned_t -- type for number values (unsigned integer) - - @since version 1.0.0 - */ - using number_integer_t = NumberIntegerType; - - /*! - @brief a type for a number (unsigned) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store unsigned integer numbers in C++, a type is defined by the - template parameter @a NumberUnsignedType which chooses the type to use. - - #### Default type - - With the default values for @a NumberUnsignedType (`uint64_t`), the - default value for @a number_unsigned_t is: - - @code {.cpp} - uint64_t - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in integer literals lead to an interpretation as octal - number. Internally, the value will be stored as decimal number. For - instance, the C++ integer literal `010` will be serialized to `8`. - During deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) specifies: - > An implementation may set limits on the range and precision of numbers. - - When the default type is used, the maximal integer number that can be - stored is `18446744073709551615` (UINT64_MAX) and the minimal integer - number that can be stored is `0`. Integer numbers that are out of range - will yield over/underflow when used in a constructor. During - deserialization, too large or small integer numbers will be automatically - be stored as @ref number_integer_t or @ref number_float_t. - - [RFC 7159](http://rfc7159.net/rfc7159) further states: - > Note that when such software is used, numbers that are integers and are - > in the range \f$[-2^{53}+1, 2^{53}-1]\f$ are interoperable in the sense - > that implementations will agree exactly on their numeric values. - - As this range is a subrange (when considered in conjunction with the - number_integer_t type) of the exactly supported range [0, UINT64_MAX], - this class's integer type is interoperable. - - #### Storage - - Integer number values are stored directly inside a @ref basic_json type. - - @sa @ref number_float_t -- type for number values (floating-point) - @sa @ref number_integer_t -- type for number values (integer) - - @since version 2.0.0 - */ - using number_unsigned_t = NumberUnsignedType; - - /*! - @brief a type for a number (floating-point) - - [RFC 7159](http://rfc7159.net/rfc7159) describes numbers as follows: - > The representation of numbers is similar to that used in most - > programming languages. A number is represented in base 10 using decimal - > digits. It contains an integer component that may be prefixed with an - > optional minus sign, which may be followed by a fraction part and/or an - > exponent part. Leading zeros are not allowed. (...) Numeric values that - > cannot be represented in the grammar below (such as Infinity and NaN) - > are not permitted. - - This description includes both integer and floating-point numbers. - However, C++ allows more precise storage if it is known whether the number - is a signed integer, an unsigned integer or a floating-point number. - Therefore, three different types, @ref number_integer_t, @ref - number_unsigned_t and @ref number_float_t are used. - - To store floating-point numbers in C++, a type is defined by the template - parameter @a NumberFloatType which chooses the type to use. - - #### Default type - - With the default values for @a NumberFloatType (`double`), the default - value for @a number_float_t is: - - @code {.cpp} - double - @endcode - - #### Default behavior - - - The restrictions about leading zeros is not enforced in C++. Instead, - leading zeros in floating-point literals will be ignored. Internally, - the value will be stored as decimal number. For instance, the C++ - floating-point literal `01.2` will be serialized to `1.2`. During - deserialization, leading zeros yield an error. - - Not-a-number (NaN) values will be serialized to `null`. - - #### Limits - - [RFC 7159](http://rfc7159.net/rfc7159) states: - > This specification allows implementations to set limits on the range and - > precision of numbers accepted. Since software that implements IEEE - > 754-2008 binary64 (double precision) numbers is generally available and - > widely used, good interoperability can be achieved by implementations - > that expect no more precision or range than these provide, in the sense - > that implementations will approximate JSON numbers within the expected - > precision. - - This implementation does exactly follow this approach, as it uses double - precision floating-point numbers. Note values smaller than - `-1.79769313486232e+308` and values greater than `1.79769313486232e+308` - will be stored as NaN internally and be serialized to `null`. - - #### Storage - - Floating-point number values are stored directly inside a @ref basic_json - type. - - @sa @ref number_integer_t -- type for number values (integer) - - @sa @ref number_unsigned_t -- type for number values (unsigned integer) - - @since version 1.0.0 - */ - using number_float_t = NumberFloatType; - - /// @} - - private: - - /// helper for exception-safe object creation - template - static T* create(Args&& ... args) - { - AllocatorType alloc; - using AllocatorTraits = std::allocator_traits>; - - auto deleter = [&](T * object) - { - AllocatorTraits::deallocate(alloc, object, 1); - }; - std::unique_ptr object(AllocatorTraits::allocate(alloc, 1), deleter); - AllocatorTraits::construct(alloc, object.get(), std::forward(args)...); - assert(object != nullptr); - return object.release(); - } - - //////////////////////// - // JSON value storage // - //////////////////////// - - /*! - @brief a JSON value - - The actual storage for a JSON value of the @ref basic_json class. This - union combines the different storage types for the JSON value types - defined in @ref value_t. - - JSON type | value_t type | used type - --------- | --------------- | ------------------------ - object | object | pointer to @ref object_t - array | array | pointer to @ref array_t - string | string | pointer to @ref string_t - boolean | boolean | @ref boolean_t - number | number_integer | @ref number_integer_t - number | number_unsigned | @ref number_unsigned_t - number | number_float | @ref number_float_t - null | null | *no value is stored* - - @note Variable-length types (objects, arrays, and strings) are stored as - pointers. The size of the union should not exceed 64 bits if the default - value types are used. - - @since version 1.0.0 - */ - union json_value - { - /// object (stored with pointer to save storage) - object_t* object; - /// array (stored with pointer to save storage) - array_t* array; - /// string (stored with pointer to save storage) - string_t* string; - /// boolean - boolean_t boolean; - /// number (integer) - number_integer_t number_integer; - /// number (unsigned integer) - number_unsigned_t number_unsigned; - /// number (floating-point) - number_float_t number_float; - - /// default constructor (for null values) - json_value() = default; - /// constructor for booleans - json_value(boolean_t v) noexcept : boolean(v) {} - /// constructor for numbers (integer) - json_value(number_integer_t v) noexcept : number_integer(v) {} - /// constructor for numbers (unsigned) - json_value(number_unsigned_t v) noexcept : number_unsigned(v) {} - /// constructor for numbers (floating-point) - json_value(number_float_t v) noexcept : number_float(v) {} - /// constructor for empty values of a given type - json_value(value_t t) - { - switch (t) - { - case value_t::object: - { - object = create(); - break; - } - - case value_t::array: - { - array = create(); - break; - } - - case value_t::string: - { - string = create(""); - break; - } - - case value_t::boolean: - { - boolean = boolean_t(false); - break; - } - - case value_t::number_integer: - { - number_integer = number_integer_t(0); - break; - } - - case value_t::number_unsigned: - { - number_unsigned = number_unsigned_t(0); - break; - } - - case value_t::number_float: - { - number_float = number_float_t(0.0); - break; - } - - case value_t::null: - { - object = nullptr; // silence warning, see #821 - break; - } - - default: - { - object = nullptr; // silence warning, see #821 - if (JSON_UNLIKELY(t == value_t::null)) - { - JSON_THROW(other_error::create(500, "961c151d2e87f2686a955a9be24d316f1362bf21 3.1.0")); // LCOV_EXCL_LINE - } - break; - } - } - } - - /// constructor for strings - json_value(const string_t& value) - { - string = create(value); - } - - /// constructor for rvalue strings - json_value(string_t&& value) - { - string = create(std::move(value)); - } - - /// constructor for objects - json_value(const object_t& value) - { - object = create(value); - } - - /// constructor for rvalue objects - json_value(object_t&& value) - { - object = create(std::move(value)); - } - - /// constructor for arrays - json_value(const array_t& value) - { - array = create(value); - } - - /// constructor for rvalue arrays - json_value(array_t&& value) - { - array = create(std::move(value)); - } - - void destroy(value_t t) noexcept - { - switch (t) - { - case value_t::object: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, object); - std::allocator_traits::deallocate(alloc, object, 1); - break; - } - - case value_t::array: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, array); - std::allocator_traits::deallocate(alloc, array, 1); - break; - } - - case value_t::string: - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, string); - std::allocator_traits::deallocate(alloc, string, 1); - break; - } - - default: - { - break; - } - } - } - }; - - /*! - @brief checks the class invariants - - This function asserts the class invariants. It needs to be called at the - end of every constructor to make sure that created objects respect the - invariant. Furthermore, it has to be called each time the type of a JSON - value is changed, because the invariant expresses a relationship between - @a m_type and @a m_value. - */ - void assert_invariant() const noexcept - { - assert(m_type != value_t::object or m_value.object != nullptr); - assert(m_type != value_t::array or m_value.array != nullptr); - assert(m_type != value_t::string or m_value.string != nullptr); - } - - public: - ////////////////////////// - // JSON parser callback // - ////////////////////////// - - /*! - @brief parser event types - - The parser callback distinguishes the following events: - - `object_start`: the parser read `{` and started to process a JSON object - - `key`: the parser read a key of a value in an object - - `object_end`: the parser read `}` and finished processing a JSON object - - `array_start`: the parser read `[` and started to process a JSON array - - `array_end`: the parser read `]` and finished processing a JSON array - - `value`: the parser finished reading a JSON value - - @image html callback_events.png "Example when certain parse events are triggered" - - @sa @ref parser_callback_t for more information and examples - */ - using parse_event_t = typename parser::parse_event_t; - - /*! - @brief per-element parser callback type - - With a parser callback function, the result of parsing a JSON text can be - influenced. When passed to @ref parse, it is called on certain events - (passed as @ref parse_event_t via parameter @a event) with a set recursion - depth @a depth and context JSON value @a parsed. The return value of the - callback function is a boolean indicating whether the element that emitted - the callback shall be kept or not. - - We distinguish six scenarios (determined by the event type) in which the - callback function can be called. The following table describes the values - of the parameters @a depth, @a event, and @a parsed. - - parameter @a event | description | parameter @a depth | parameter @a parsed - ------------------ | ----------- | ------------------ | ------------------- - parse_event_t::object_start | the parser read `{` and started to process a JSON object | depth of the parent of the JSON object | a JSON value with type discarded - parse_event_t::key | the parser read a key of a value in an object | depth of the currently parsed JSON object | a JSON string containing the key - parse_event_t::object_end | the parser read `}` and finished processing a JSON object | depth of the parent of the JSON object | the parsed JSON object - parse_event_t::array_start | the parser read `[` and started to process a JSON array | depth of the parent of the JSON array | a JSON value with type discarded - parse_event_t::array_end | the parser read `]` and finished processing a JSON array | depth of the parent of the JSON array | the parsed JSON array - parse_event_t::value | the parser finished reading a JSON value | depth of the value | the parsed JSON value - - @image html callback_events.png "Example when certain parse events are triggered" - - Discarding a value (i.e., returning `false`) has different effects - depending on the context in which function was called: - - - Discarded values in structured types are skipped. That is, the parser - will behave as if the discarded value was never read. - - In case a value outside a structured type is skipped, it is replaced - with `null`. This case happens if the top-level element is skipped. - - @param[in] depth the depth of the recursion during parsing - - @param[in] event an event of type parse_event_t indicating the context in - the callback function has been called - - @param[in,out] parsed the current intermediate parse result; note that - writing to this value has no effect for parse_event_t::key events - - @return Whether the JSON value which called the function during parsing - should be kept (`true`) or not (`false`). In the latter case, it is either - skipped completely or replaced by an empty discarded object. - - @sa @ref parse for examples - - @since version 1.0.0 - */ - using parser_callback_t = typename parser::parser_callback_t; - - - ////////////////// - // constructors // - ////////////////// - - /// @name constructors and destructors - /// Constructors of class @ref basic_json, copy/move constructor, copy - /// assignment, static functions creating objects, and the destructor. - /// @{ - - /*! - @brief create an empty value with a given type - - Create an empty JSON value with a given type. The value will be default - initialized with an empty value which depends on the type: - - Value type | initial value - ----------- | ------------- - null | `null` - boolean | `false` - string | `""` - number | `0` - object | `{}` - array | `[]` - - @param[in] v the type of the value to create - - @complexity Constant. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows the constructor for different @ref - value_t values,basic_json__value_t} - - @sa @ref clear() -- restores the postcondition of this constructor - - @since version 1.0.0 - */ - basic_json(const value_t v) - : m_type(v), m_value(v) - { - assert_invariant(); - } - - /*! - @brief create a null object - - Create a `null` JSON value. It either takes a null pointer as parameter - (explicitly creating `null`) or no parameter (implicitly creating `null`). - The passed null pointer itself is not read -- it is only used to choose - the right constructor. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this constructor never throws - exceptions. - - @liveexample{The following code shows the constructor with and without a - null pointer parameter.,basic_json__nullptr_t} - - @since version 1.0.0 - */ - basic_json(std::nullptr_t = nullptr) noexcept - : basic_json(value_t::null) - { - assert_invariant(); - } - - /*! - @brief create a JSON value - - This is a "catch all" constructor for all compatible JSON types; that is, - types for which a `to_json()` method exists. The constructor forwards the - parameter @a val to that method (to `json_serializer::to_json` method - with `U = uncvref_t`, to be exact). - - Template type @a CompatibleType includes, but is not limited to, the - following types: - - **arrays**: @ref array_t and all kinds of compatible containers such as - `std::vector`, `std::deque`, `std::list`, `std::forward_list`, - `std::array`, `std::valarray`, `std::set`, `std::unordered_set`, - `std::multiset`, and `std::unordered_multiset` with a `value_type` from - which a @ref basic_json value can be constructed. - - **objects**: @ref object_t and all kinds of compatible associative - containers such as `std::map`, `std::unordered_map`, `std::multimap`, - and `std::unordered_multimap` with a `key_type` compatible to - @ref string_t and a `value_type` from which a @ref basic_json value can - be constructed. - - **strings**: @ref string_t, string literals, and all compatible string - containers can be used. - - **numbers**: @ref number_integer_t, @ref number_unsigned_t, - @ref number_float_t, and all convertible number types such as `int`, - `size_t`, `int64_t`, `float` or `double` can be used. - - **boolean**: @ref boolean_t / `bool` can be used. - - See the examples below. - - @tparam CompatibleType a type such that: - - @a CompatibleType is not derived from `std::istream`, - - @a CompatibleType is not @ref basic_json (to avoid hijacking copy/move - constructors), - - @a CompatibleType is not a @ref basic_json nested type (e.g., - @ref json_pointer, @ref iterator, etc ...) - - @ref @ref json_serializer has a - `to_json(basic_json_t&, CompatibleType&&)` method - - @tparam U = `uncvref_t` - - @param[in] val the value to be forwarded to the respective constructor - - @complexity Usually linear in the size of the passed @a val, also - depending on the implementation of the called `to_json()` - method. - - @exceptionsafety Depends on the called constructor. For types directly - supported by the library (i.e., all types for which no `to_json()` function - was provided), strong guarantee holds: if an exception is thrown, there are - no changes to any JSON value. - - @liveexample{The following code shows the constructor with several - compatible types.,basic_json__CompatibleType} - - @since version 2.1.0 - */ - template , - detail::enable_if_t< - detail::is_compatible_type::value, int> = 0> - basic_json(CompatibleType && val) noexcept(noexcept( - JSONSerializer::to_json(std::declval(), - std::forward(val)))) - { - JSONSerializer::to_json(*this, std::forward(val)); - assert_invariant(); - } - - /*! - @brief create a container (array or object) from an initializer list - - Creates a JSON value of type array or object from the passed initializer - list @a init. In case @a type_deduction is `true` (default), the type of - the JSON value to be created is deducted from the initializer list @a init - according to the following rules: - - 1. If the list is empty, an empty JSON object value `{}` is created. - 2. If the list consists of pairs whose first element is a string, a JSON - object value is created where the first elements of the pairs are - treated as keys and the second elements are as values. - 3. In all other cases, an array is created. - - The rules aim to create the best fit between a C++ initializer list and - JSON values. The rationale is as follows: - - 1. The empty initializer list is written as `{}` which is exactly an empty - JSON object. - 2. C++ has no way of describing mapped types other than to list a list of - pairs. As JSON requires that keys must be of type string, rule 2 is the - weakest constraint one can pose on initializer lists to interpret them - as an object. - 3. In all other cases, the initializer list could not be interpreted as - JSON object type, so interpreting it as JSON array type is safe. - - With the rules described above, the following JSON values cannot be - expressed by an initializer list: - - - the empty array (`[]`): use @ref array(initializer_list_t) - with an empty initializer list in this case - - arrays whose elements satisfy rule 2: use @ref - array(initializer_list_t) with the same initializer list - in this case - - @note When used without parentheses around an empty initializer list, @ref - basic_json() is called instead of this function, yielding the JSON null - value. - - @param[in] init initializer list with JSON values - - @param[in] type_deduction internal parameter; when set to `true`, the type - of the JSON value is deducted from the initializer list @a init; when set - to `false`, the type provided via @a manual_type is forced. This mode is - used by the functions @ref array(initializer_list_t) and - @ref object(initializer_list_t). - - @param[in] manual_type internal parameter; when @a type_deduction is set - to `false`, the created JSON value will use the provided type (only @ref - value_t::array and @ref value_t::object are valid); when @a type_deduction - is set to `true`, this parameter has no effect - - @throw type_error.301 if @a type_deduction is `false`, @a manual_type is - `value_t::object`, but @a init contains an element which is not a pair - whose first element is a string. In this case, the constructor could not - create an object. If @a type_deduction would have be `true`, an array - would have been created. See @ref object(initializer_list_t) - for an example. - - @complexity Linear in the size of the initializer list @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The example below shows how JSON values are created from - initializer lists.,basic_json__list_init_t} - - @sa @ref array(initializer_list_t) -- create a JSON array - value from an initializer list - @sa @ref object(initializer_list_t) -- create a JSON object - value from an initializer list - - @since version 1.0.0 - */ - basic_json(initializer_list_t init, - bool type_deduction = true, - value_t manual_type = value_t::array) - { - // check if each element is an array with two elements whose first - // element is a string - bool is_an_object = std::all_of(init.begin(), init.end(), - [](const detail::json_ref& element_ref) - { - return (element_ref->is_array() and element_ref->size() == 2 and (*element_ref)[0].is_string()); - }); - - // adjust type if type deduction is not wanted - if (not type_deduction) - { - // if array is wanted, do not create an object though possible - if (manual_type == value_t::array) - { - is_an_object = false; - } - - // if object is wanted but impossible, throw an exception - if (JSON_UNLIKELY(manual_type == value_t::object and not is_an_object)) - { - JSON_THROW(type_error::create(301, "cannot create object from initializer list")); - } - } - - if (is_an_object) - { - // the initializer list is a list of pairs -> create object - m_type = value_t::object; - m_value = value_t::object; - - std::for_each(init.begin(), init.end(), [this](const detail::json_ref& element_ref) - { - auto element = element_ref.moved_or_copied(); - m_value.object->emplace( - std::move(*((*element.m_value.array)[0].m_value.string)), - std::move((*element.m_value.array)[1])); - }); - } - else - { - // the initializer list describes an array -> create array - m_type = value_t::array; - m_value.array = create(init.begin(), init.end()); - } - - assert_invariant(); - } - - /*! - @brief explicitly create an array from an initializer list - - Creates a JSON array value from a given initializer list. That is, given a - list of values `a, b, c`, creates the JSON value `[a, b, c]`. If the - initializer list is empty, the empty array `[]` is created. - - @note This function is only needed to express two edge cases that cannot - be realized with the initializer list constructor (@ref - basic_json(initializer_list_t, bool, value_t)). These cases - are: - 1. creating an array whose elements are all pairs whose first element is a - string -- in this case, the initializer list constructor would create an - object, taking the first elements as keys - 2. creating an empty array -- passing the empty initializer list to the - initializer list constructor yields an empty object - - @param[in] init initializer list with JSON values to create an array from - (optional) - - @return JSON array value - - @complexity Linear in the size of @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows an example for the `array` - function.,array} - - @sa @ref basic_json(initializer_list_t, bool, value_t) -- - create a JSON value from an initializer list - @sa @ref object(initializer_list_t) -- create a JSON object - value from an initializer list - - @since version 1.0.0 - */ - static basic_json array(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::array); - } - - /*! - @brief explicitly create an object from an initializer list - - Creates a JSON object value from a given initializer list. The initializer - lists elements must be pairs, and their first elements must be strings. If - the initializer list is empty, the empty object `{}` is created. - - @note This function is only added for symmetry reasons. In contrast to the - related function @ref array(initializer_list_t), there are - no cases which can only be expressed by this function. That is, any - initializer list @a init can also be passed to the initializer list - constructor @ref basic_json(initializer_list_t, bool, value_t). - - @param[in] init initializer list to create an object from (optional) - - @return JSON object value - - @throw type_error.301 if @a init is not a list of pairs whose first - elements are strings. In this case, no object can be created. When such a - value is passed to @ref basic_json(initializer_list_t, bool, value_t), - an array would have been created from the passed initializer list @a init. - See example below. - - @complexity Linear in the size of @a init. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows an example for the `object` - function.,object} - - @sa @ref basic_json(initializer_list_t, bool, value_t) -- - create a JSON value from an initializer list - @sa @ref array(initializer_list_t) -- create a JSON array - value from an initializer list - - @since version 1.0.0 - */ - static basic_json object(initializer_list_t init = {}) - { - return basic_json(init, false, value_t::object); - } - - /*! - @brief construct an array with count copies of given value - - Constructs a JSON array value by creating @a cnt copies of a passed value. - In case @a cnt is `0`, an empty array is created. - - @param[in] cnt the number of JSON copies of @a val to create - @param[in] val the JSON value to copy - - @post `std::distance(begin(),end()) == cnt` holds. - - @complexity Linear in @a cnt. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The following code shows examples for the @ref - basic_json(size_type\, const basic_json&) - constructor.,basic_json__size_type_basic_json} - - @since version 1.0.0 - */ - basic_json(size_type cnt, const basic_json& val) - : m_type(value_t::array) - { - m_value.array = create(cnt, val); - assert_invariant(); - } - - /*! - @brief construct a JSON container given an iterator range - - Constructs the JSON value with the contents of the range `[first, last)`. - The semantics depends on the different types a JSON value can have: - - In case of a null type, invalid_iterator.206 is thrown. - - In case of other primitive types (number, boolean, or string), @a first - must be `begin()` and @a last must be `end()`. In this case, the value is - copied. Otherwise, invalid_iterator.204 is thrown. - - In case of structured types (array, object), the constructor behaves as - similar versions for `std::vector` or `std::map`; that is, a JSON array - or object is constructed from the values in the range. - - @tparam InputIT an input iterator type (@ref iterator or @ref - const_iterator) - - @param[in] first begin of the range to copy from (included) - @param[in] last end of the range to copy from (excluded) - - @pre Iterators @a first and @a last must be initialized. **This - precondition is enforced with an assertion (see warning).** If - assertions are switched off, a violation of this precondition yields - undefined behavior. - - @pre Range `[first, last)` is valid. Usually, this precondition cannot be - checked efficiently. Only certain edge cases are detected; see the - description of the exceptions below. A violation of this precondition - yields undefined behavior. - - @warning A precondition is enforced with a runtime assertion that will - result in calling `std::abort` if this precondition is not met. - Assertions can be disabled by defining `NDEBUG` at compile time. - See http://en.cppreference.com/w/cpp/error/assert for more - information. - - @throw invalid_iterator.201 if iterators @a first and @a last are not - compatible (i.e., do not belong to the same JSON value). In this case, - the range `[first, last)` is undefined. - @throw invalid_iterator.204 if iterators @a first and @a last belong to a - primitive type (number, boolean, or string), but @a first does not point - to the first element any more. In this case, the range `[first, last)` is - undefined. See example code below. - @throw invalid_iterator.206 if iterators @a first and @a last belong to a - null value. In this case, the range `[first, last)` is undefined. - - @complexity Linear in distance between @a first and @a last. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @liveexample{The example below shows several ways to create JSON values by - specifying a subrange with iterators.,basic_json__InputIt_InputIt} - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type = 0> - basic_json(InputIT first, InputIT last) - { - assert(first.m_object != nullptr); - assert(last.m_object != nullptr); - - // make sure iterator fits the current value - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(201, "iterators are not compatible")); - } - - // copy type from first iterator - m_type = first.m_object->m_type; - - // check if iterator range is complete for primitive values - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_UNLIKELY(not first.m_it.primitive_iterator.is_begin() - or not last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range")); - } - break; - } - - default: - break; - } - - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = first.m_object->m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = first.m_object->m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value.number_float = first.m_object->m_value.number_float; - break; - } - - case value_t::boolean: - { - m_value.boolean = first.m_object->m_value.boolean; - break; - } - - case value_t::string: - { - m_value = *first.m_object->m_value.string; - break; - } - - case value_t::object: - { - m_value.object = create(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - m_value.array = create(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - default: - JSON_THROW(invalid_iterator::create(206, "cannot construct with iterators from " + - std::string(first.m_object->type_name()))); - } - - assert_invariant(); - } - - - /////////////////////////////////////// - // other constructors and destructor // - /////////////////////////////////////// - - /// @private - basic_json(const detail::json_ref& ref) - : basic_json(ref.moved_or_copied()) - {} - - /*! - @brief copy constructor - - Creates a copy of a given JSON value. - - @param[in] other the JSON value to copy - - @post `*this == other` - - @complexity Linear in the size of @a other. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes to any JSON value. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - As postcondition, it holds: `other == basic_json(other)`. - - @liveexample{The following code shows an example for the copy - constructor.,basic_json__basic_json} - - @since version 1.0.0 - */ - basic_json(const basic_json& other) - : m_type(other.m_type) - { - // check of passed value is valid - other.assert_invariant(); - - switch (m_type) - { - case value_t::object: - { - m_value = *other.m_value.object; - break; - } - - case value_t::array: - { - m_value = *other.m_value.array; - break; - } - - case value_t::string: - { - m_value = *other.m_value.string; - break; - } - - case value_t::boolean: - { - m_value = other.m_value.boolean; - break; - } - - case value_t::number_integer: - { - m_value = other.m_value.number_integer; - break; - } - - case value_t::number_unsigned: - { - m_value = other.m_value.number_unsigned; - break; - } - - case value_t::number_float: - { - m_value = other.m_value.number_float; - break; - } - - default: - break; - } - - assert_invariant(); - } - - /*! - @brief move constructor - - Move constructor. Constructs a JSON value with the contents of the given - value @a other using move semantics. It "steals" the resources from @a - other and leaves it as JSON null value. - - @param[in,out] other value to move to this object - - @post `*this` has the same value as @a other before the call. - @post @a other is a JSON null value. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this constructor never throws - exceptions. - - @requirement This function helps `basic_json` satisfying the - [MoveConstructible](http://en.cppreference.com/w/cpp/concept/MoveConstructible) - requirements. - - @liveexample{The code below shows the move constructor explicitly called - via std::move.,basic_json__moveconstructor} - - @since version 1.0.0 - */ - basic_json(basic_json&& other) noexcept - : m_type(std::move(other.m_type)), - m_value(std::move(other.m_value)) - { - // check that passed value is valid - other.assert_invariant(); - - // invalidate payload - other.m_type = value_t::null; - other.m_value = {}; - - assert_invariant(); - } - - /*! - @brief copy assignment - - Copy assignment operator. Copies a JSON value via the "copy and swap" - strategy: It is expressed in terms of the copy constructor, destructor, - and the `swap()` member function. - - @param[in] other value to copy from - - @complexity Linear. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - @liveexample{The code below shows and example for the copy assignment. It - creates a copy of value `a` which is then swapped with `b`. Finally\, the - copy of `a` (which is the null value after the swap) is - destroyed.,basic_json__copyassignment} - - @since version 1.0.0 - */ - reference& operator=(basic_json other) noexcept ( - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value and - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value - ) - { - // check that passed value is valid - other.assert_invariant(); - - using std::swap; - swap(m_type, other.m_type); - swap(m_value, other.m_value); - - assert_invariant(); - return *this; - } - - /*! - @brief destructor - - Destroys the JSON value and frees all allocated memory. - - @complexity Linear. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is linear. - - All stored elements are destroyed and all memory is freed. - - @since version 1.0.0 - */ - ~basic_json() noexcept - { - assert_invariant(); - m_value.destroy(m_type); - } - - /// @} - - public: - /////////////////////// - // object inspection // - /////////////////////// - - /// @name object inspection - /// Functions to inspect the type of a JSON value. - /// @{ - - /*! - @brief serialization - - Serialization function for JSON values. The function tries to mimic - Python's `json.dumps()` function, and currently supports its @a indent - and @a ensure_ascii parameters. - - @param[in] indent If indent is nonnegative, then array elements and object - members will be pretty-printed with that indent level. An indent level of - `0` will only insert newlines. `-1` (the default) selects the most compact - representation. - @param[in] indent_char The character to use for indentation if @a indent is - greater than `0`. The default is ` ` (space). - @param[in] ensure_ascii If @a ensure_ascii is true, all non-ASCII characters - in the output are escaped with `\uXXXX` sequences, and the result consists - of ASCII characters only. - - @return string containing the serialization of the JSON value - - @throw type_error.316 if a string stored inside the JSON value is not - UTF-8 encoded - - @complexity Linear. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @liveexample{The following example shows the effect of different @a indent\, - @a indent_char\, and @a ensure_ascii parameters to the result of the - serialization.,dump} - - @see https://docs.python.org/2/library/json.html#json.dump - - @since version 1.0.0; indentation character @a indent_char, option - @a ensure_ascii and exceptions added in version 3.0.0 - */ - string_t dump(const int indent = -1, const char indent_char = ' ', - const bool ensure_ascii = false) const - { - string_t result; - serializer s(detail::output_adapter(result), indent_char); - - if (indent >= 0) - { - s.dump(*this, true, ensure_ascii, static_cast(indent)); - } - else - { - s.dump(*this, false, ensure_ascii, 0); - } - - return result; - } - - /*! - @brief return the type of the JSON value (explicit) - - Return the type of the JSON value as a value from the @ref value_t - enumeration. - - @return the type of the JSON value - Value type | return value - ------------------------- | ------------------------- - null | value_t::null - boolean | value_t::boolean - string | value_t::string - number (integer) | value_t::number_integer - number (unsigned integer) | value_t::number_unsigned - number (floating-point) | value_t::number_float - object | value_t::object - array | value_t::array - discarded | value_t::discarded - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `type()` for all JSON - types.,type} - - @sa @ref operator value_t() -- return the type of the JSON value (implicit) - @sa @ref type_name() -- return the type as string - - @since version 1.0.0 - */ - constexpr value_t type() const noexcept - { - return m_type; - } - - /*! - @brief return whether type is primitive - - This function returns true if and only if the JSON type is primitive - (string, number, boolean, or null). - - @return `true` if type is primitive (string, number, boolean, or null), - `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_primitive()` for all JSON - types.,is_primitive} - - @sa @ref is_structured() -- returns whether JSON value is structured - @sa @ref is_null() -- returns whether JSON value is `null` - @sa @ref is_string() -- returns whether JSON value is a string - @sa @ref is_boolean() -- returns whether JSON value is a boolean - @sa @ref is_number() -- returns whether JSON value is a number - - @since version 1.0.0 - */ - constexpr bool is_primitive() const noexcept - { - return is_null() or is_string() or is_boolean() or is_number(); - } - - /*! - @brief return whether type is structured - - This function returns true if and only if the JSON type is structured - (array or object). - - @return `true` if type is structured (array or object), `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_structured()` for all JSON - types.,is_structured} - - @sa @ref is_primitive() -- returns whether value is primitive - @sa @ref is_array() -- returns whether value is an array - @sa @ref is_object() -- returns whether value is an object - - @since version 1.0.0 - */ - constexpr bool is_structured() const noexcept - { - return is_array() or is_object(); - } - - /*! - @brief return whether value is null - - This function returns true if and only if the JSON value is null. - - @return `true` if type is null, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_null()` for all JSON - types.,is_null} - - @since version 1.0.0 - */ - constexpr bool is_null() const noexcept - { - return (m_type == value_t::null); - } - - /*! - @brief return whether value is a boolean - - This function returns true if and only if the JSON value is a boolean. - - @return `true` if type is boolean, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_boolean()` for all JSON - types.,is_boolean} - - @since version 1.0.0 - */ - constexpr bool is_boolean() const noexcept - { - return (m_type == value_t::boolean); - } - - /*! - @brief return whether value is a number - - This function returns true if and only if the JSON value is a number. This - includes both integer (signed and unsigned) and floating-point values. - - @return `true` if type is number (regardless whether integer, unsigned - integer or floating-type), `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number()` for all JSON - types.,is_number} - - @sa @ref is_number_integer() -- check if value is an integer or unsigned - integer number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 1.0.0 - */ - constexpr bool is_number() const noexcept - { - return is_number_integer() or is_number_float(); - } - - /*! - @brief return whether value is an integer number - - This function returns true if and only if the JSON value is a signed or - unsigned integer number. This excludes floating-point values. - - @return `true` if type is an integer or unsigned integer number, `false` - otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_integer()` for all - JSON types.,is_number_integer} - - @sa @ref is_number() -- check if value is a number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 1.0.0 - */ - constexpr bool is_number_integer() const noexcept - { - return (m_type == value_t::number_integer or m_type == value_t::number_unsigned); - } - - /*! - @brief return whether value is an unsigned integer number - - This function returns true if and only if the JSON value is an unsigned - integer number. This excludes floating-point and signed integer values. - - @return `true` if type is an unsigned integer number, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_unsigned()` for all - JSON types.,is_number_unsigned} - - @sa @ref is_number() -- check if value is a number - @sa @ref is_number_integer() -- check if value is an integer or unsigned - integer number - @sa @ref is_number_float() -- check if value is a floating-point number - - @since version 2.0.0 - */ - constexpr bool is_number_unsigned() const noexcept - { - return (m_type == value_t::number_unsigned); - } - - /*! - @brief return whether value is a floating-point number - - This function returns true if and only if the JSON value is a - floating-point number. This excludes signed and unsigned integer values. - - @return `true` if type is a floating-point number, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_number_float()` for all - JSON types.,is_number_float} - - @sa @ref is_number() -- check if value is number - @sa @ref is_number_integer() -- check if value is an integer number - @sa @ref is_number_unsigned() -- check if value is an unsigned integer - number - - @since version 1.0.0 - */ - constexpr bool is_number_float() const noexcept - { - return (m_type == value_t::number_float); - } - - /*! - @brief return whether value is an object - - This function returns true if and only if the JSON value is an object. - - @return `true` if type is object, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_object()` for all JSON - types.,is_object} - - @since version 1.0.0 - */ - constexpr bool is_object() const noexcept - { - return (m_type == value_t::object); - } - - /*! - @brief return whether value is an array - - This function returns true if and only if the JSON value is an array. - - @return `true` if type is array, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_array()` for all JSON - types.,is_array} - - @since version 1.0.0 - */ - constexpr bool is_array() const noexcept - { - return (m_type == value_t::array); - } - - /*! - @brief return whether value is a string - - This function returns true if and only if the JSON value is a string. - - @return `true` if type is string, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_string()` for all JSON - types.,is_string} - - @since version 1.0.0 - */ - constexpr bool is_string() const noexcept - { - return (m_type == value_t::string); - } - - /*! - @brief return whether value is discarded - - This function returns true if and only if the JSON value was discarded - during parsing with a callback function (see @ref parser_callback_t). - - @note This function will always be `false` for JSON values after parsing. - That is, discarded values can only occur during parsing, but will be - removed when inside a structured value or replaced by null in other cases. - - @return `true` if type is discarded, `false` otherwise. - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies `is_discarded()` for all JSON - types.,is_discarded} - - @since version 1.0.0 - */ - constexpr bool is_discarded() const noexcept - { - return (m_type == value_t::discarded); - } - - /*! - @brief return the type of the JSON value (implicit) - - Implicitly return the type of the JSON value as a value from the @ref - value_t enumeration. - - @return the type of the JSON value - - @complexity Constant. - - @exceptionsafety No-throw guarantee: this member function never throws - exceptions. - - @liveexample{The following code exemplifies the @ref value_t operator for - all JSON types.,operator__value_t} - - @sa @ref type() -- return the type of the JSON value (explicit) - @sa @ref type_name() -- return the type as string - - @since version 1.0.0 - */ - constexpr operator value_t() const noexcept - { - return m_type; - } - - /// @} - - private: - ////////////////// - // value access // - ////////////////// - - /// get a boolean (explicit) - boolean_t get_impl(boolean_t* /*unused*/) const - { - if (JSON_LIKELY(is_boolean())) - { - return m_value.boolean; - } - - JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(type_name()))); - } - - /// get a pointer to the value (object) - object_t* get_impl_ptr(object_t* /*unused*/) noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (object) - constexpr const object_t* get_impl_ptr(const object_t* /*unused*/) const noexcept - { - return is_object() ? m_value.object : nullptr; - } - - /// get a pointer to the value (array) - array_t* get_impl_ptr(array_t* /*unused*/) noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (array) - constexpr const array_t* get_impl_ptr(const array_t* /*unused*/) const noexcept - { - return is_array() ? m_value.array : nullptr; - } - - /// get a pointer to the value (string) - string_t* get_impl_ptr(string_t* /*unused*/) noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (string) - constexpr const string_t* get_impl_ptr(const string_t* /*unused*/) const noexcept - { - return is_string() ? m_value.string : nullptr; - } - - /// get a pointer to the value (boolean) - boolean_t* get_impl_ptr(boolean_t* /*unused*/) noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (boolean) - constexpr const boolean_t* get_impl_ptr(const boolean_t* /*unused*/) const noexcept - { - return is_boolean() ? &m_value.boolean : nullptr; - } - - /// get a pointer to the value (integer number) - number_integer_t* get_impl_ptr(number_integer_t* /*unused*/) noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (integer number) - constexpr const number_integer_t* get_impl_ptr(const number_integer_t* /*unused*/) const noexcept - { - return is_number_integer() ? &m_value.number_integer : nullptr; - } - - /// get a pointer to the value (unsigned number) - number_unsigned_t* get_impl_ptr(number_unsigned_t* /*unused*/) noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (unsigned number) - constexpr const number_unsigned_t* get_impl_ptr(const number_unsigned_t* /*unused*/) const noexcept - { - return is_number_unsigned() ? &m_value.number_unsigned : nullptr; - } - - /// get a pointer to the value (floating-point number) - number_float_t* get_impl_ptr(number_float_t* /*unused*/) noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /// get a pointer to the value (floating-point number) - constexpr const number_float_t* get_impl_ptr(const number_float_t* /*unused*/) const noexcept - { - return is_number_float() ? &m_value.number_float : nullptr; - } - - /*! - @brief helper function to implement get_ref() - - This function helps to implement get_ref() without code duplication for - const and non-const overloads - - @tparam ThisType will be deduced as `basic_json` or `const basic_json` - - @throw type_error.303 if ReferenceType does not match underlying value - type of the current JSON - */ - template - static ReferenceType get_ref_impl(ThisType& obj) - { - // delegate the call to get_ptr<>() - auto ptr = obj.template get_ptr::type>(); - - if (JSON_LIKELY(ptr != nullptr)) - { - return *ptr; - } - - JSON_THROW(type_error::create(303, "incompatible ReferenceType for get_ref, actual type is " + std::string(obj.type_name()))); - } - - public: - /// @name value access - /// Direct access to the stored value of a JSON value. - /// @{ - - /*! - @brief get special-case overload - - This overloads avoids a lot of template boilerplate, it can be seen as the - identity method - - @tparam BasicJsonType == @ref basic_json - - @return a copy of *this - - @complexity Constant. - - @since version 2.1.0 - */ - template::type, basic_json_t>::value, - int> = 0> - basic_json get() const - { - return *this; - } - - /*! - @brief get a value (explicit) - - Explicit type conversion between the JSON value and a compatible value - which is [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) - and [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - ValueType ret; - JSONSerializer::from_json(*this, ret); - return ret; - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json, - - @ref json_serializer has a `from_json()` method of the form - `void from_json(const basic_json&, ValueType&)`, and - - @ref json_serializer does not have a `from_json()` method of - the form `ValueType from_json(const basic_json&)` - - @tparam ValueTypeCV the provided value type - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,get__ValueType_const} - - @since version 2.1.0 - */ - template, - detail::enable_if_t < - not std::is_same::value and - detail::has_from_json::value and - not detail::has_non_default_from_json::value, - int> = 0> - ValueType get() const noexcept(noexcept( - JSONSerializer::from_json(std::declval(), std::declval()))) - { - // we cannot static_assert on ValueTypeCV being non-const, because - // there is support for get(), which is why we - // still need the uncvref - static_assert(not std::is_reference::value, - "get() cannot be used with reference types, you might want to use get_ref()"); - static_assert(std::is_default_constructible::value, - "types must be DefaultConstructible when used with get()"); - - ValueType ret; - JSONSerializer::from_json(*this, ret); - return ret; - } - - /*! - @brief get a value (explicit); special case - - Explicit type conversion between the JSON value and a compatible value - which is **not** [CopyConstructible](http://en.cppreference.com/w/cpp/concept/CopyConstructible) - and **not** [DefaultConstructible](http://en.cppreference.com/w/cpp/concept/DefaultConstructible). - The value is converted by calling the @ref json_serializer - `from_json()` method. - - The function is equivalent to executing - @code {.cpp} - return JSONSerializer::from_json(*this); - @endcode - - This overloads is chosen if: - - @a ValueType is not @ref basic_json and - - @ref json_serializer has a `from_json()` method of the form - `ValueType from_json(const basic_json&)` - - @note If @ref json_serializer has both overloads of - `from_json()`, this one is chosen. - - @tparam ValueTypeCV the provided value type - @tparam ValueType the returned value type - - @return copy of the JSON value, converted to @a ValueType - - @throw what @ref json_serializer `from_json()` method throws - - @since version 2.1.0 - */ - template, - detail::enable_if_t::value and - detail::has_non_default_from_json::value, - int> = 0> - ValueType get() const noexcept(noexcept( - JSONSerializer::from_json(std::declval()))) - { - static_assert(not std::is_reference::value, - "get() cannot be used with reference types, you might want to use get_ref()"); - return JSONSerializer::from_json(*this); - } - - /*! - @brief get a pointer value (explicit) - - Explicit pointer access to the internally stored JSON value. No copies are - made. - - @warning The pointer becomes invalid if the underlying JSON object - changes. - - @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref - object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, - @ref number_unsigned_t, or @ref number_float_t. - - @return pointer to the internally stored JSON value if the requested - pointer type @a PointerType fits to the JSON value; `nullptr` otherwise - - @complexity Constant. - - @liveexample{The example below shows how pointers to internal values of a - JSON value can be requested. Note that no type conversions are made and a - `nullptr` is returned if the value and the requested pointer type does not - match.,get__PointerType} - - @sa @ref get_ptr() for explicit pointer-member access - - @since version 1.0.0 - */ - template::value, int>::type = 0> - PointerType get() noexcept - { - // delegate the call to get_ptr - return get_ptr(); - } - - /*! - @brief get a pointer value (explicit) - @copydoc get() - */ - template::value, int>::type = 0> - constexpr const PointerType get() const noexcept - { - // delegate the call to get_ptr - return get_ptr(); - } - - /*! - @brief get a pointer value (implicit) - - Implicit pointer access to the internally stored JSON value. No copies are - made. - - @warning Writing data to the pointee of the result yields an undefined - state. - - @tparam PointerType pointer type; must be a pointer to @ref array_t, @ref - object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, - @ref number_unsigned_t, or @ref number_float_t. Enforced by a static - assertion. - - @return pointer to the internally stored JSON value if the requested - pointer type @a PointerType fits to the JSON value; `nullptr` otherwise - - @complexity Constant. - - @liveexample{The example below shows how pointers to internal values of a - JSON value can be requested. Note that no type conversions are made and a - `nullptr` is returned if the value and the requested pointer type does not - match.,get_ptr} - - @since version 1.0.0 - */ - template::value, int>::type = 0> - PointerType get_ptr() noexcept - { - // get the type of the PointerType (remove pointer and const) - using pointee_t = typename std::remove_const::type>::type>::type; - // make sure the type matches the allowed types - static_assert( - std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - , "incompatible pointer type"); - - // delegate the call to get_impl_ptr<>() - return get_impl_ptr(static_cast(nullptr)); - } - - /*! - @brief get a pointer value (implicit) - @copydoc get_ptr() - */ - template::value and - std::is_const::type>::value, int>::type = 0> - constexpr const PointerType get_ptr() const noexcept - { - // get the type of the PointerType (remove pointer and const) - using pointee_t = typename std::remove_const::type>::type>::type; - // make sure the type matches the allowed types - static_assert( - std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - or std::is_same::value - , "incompatible pointer type"); - - // delegate the call to get_impl_ptr<>() const - return get_impl_ptr(static_cast(nullptr)); - } - - /*! - @brief get a reference value (implicit) - - Implicit reference access to the internally stored JSON value. No copies - are made. - - @warning Writing data to the referee of the result yields an undefined - state. - - @tparam ReferenceType reference type; must be a reference to @ref array_t, - @ref object_t, @ref string_t, @ref boolean_t, @ref number_integer_t, or - @ref number_float_t. Enforced by static assertion. - - @return reference to the internally stored JSON value if the requested - reference type @a ReferenceType fits to the JSON value; throws - type_error.303 otherwise - - @throw type_error.303 in case passed type @a ReferenceType is incompatible - with the stored JSON value; see example below - - @complexity Constant. - - @liveexample{The example shows several calls to `get_ref()`.,get_ref} - - @since version 1.1.0 - */ - template::value, int>::type = 0> - ReferenceType get_ref() - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /*! - @brief get a reference value (implicit) - @copydoc get_ref() - */ - template::value and - std::is_const::type>::value, int>::type = 0> - ReferenceType get_ref() const - { - // delegate call to get_ref_impl - return get_ref_impl(*this); - } - - /*! - @brief get a value (implicit) - - Implicit type conversion between the JSON value and a compatible value. - The call is realized by calling @ref get() const. - - @tparam ValueType non-pointer type compatible to the JSON value, for - instance `int` for JSON integer numbers, `bool` for JSON booleans, or - `std::vector` types for JSON arrays. The character type of @ref string_t - as well as an initializer list of this type is excluded to avoid - ambiguities as these types implicitly convert to `std::string`. - - @return copy of the JSON value, converted to type @a ValueType - - @throw type_error.302 in case passed type @a ValueType is incompatible - to the JSON value type (e.g., the JSON value is of type boolean, but a - string is requested); see example below - - @complexity Linear in the size of the JSON value. - - @liveexample{The example below shows several conversions from JSON values - to other types. There a few things to note: (1) Floating-point numbers can - be converted to integers\, (2) A JSON array can be converted to a standard - `std::vector`\, (3) A JSON object can be converted to C++ - associative containers such as `std::unordered_map`.,operator__ValueType} - - @since version 1.0.0 - */ - template < typename ValueType, typename std::enable_if < - not std::is_pointer::value and - not std::is_same>::value and - not std::is_same::value -#ifndef _MSC_VER // fix for issue #167 operator<< ambiguity under VS2015 - and not std::is_same>::value -#endif -#if defined(JSON_HAS_CPP_17) - and not std::is_same::value -#endif - , int >::type = 0 > - operator ValueType() const - { - // delegate the call to get<>() const - return get(); - } - - /// @} - - - //////////////////// - // element access // - //////////////////// - - /// @name element access - /// Access to the JSON value. - /// @{ - - /*! - @brief access specified array element with bounds checking - - Returns a reference to the element at specified location @a idx, with - bounds checking. - - @param[in] idx index of the element to access - - @return reference to the element at index @a idx - - @throw type_error.304 if the JSON value is not an array; in this case, - calling `at` with an index makes no sense. See example below. - @throw out_of_range.401 if the index @a idx is out of range of the array; - that is, `idx >= size()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 1.0.0 - - @liveexample{The example below shows how array elements can be read and - written using `at()`. It also demonstrates the different exceptions that - can be thrown.,at__size_type} - */ - reference at(size_type idx) - { - // at only works for arrays - if (JSON_LIKELY(is_array())) - { - JSON_TRY - { - return m_value.array->at(idx); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified array element with bounds checking - - Returns a const reference to the element at specified location @a idx, - with bounds checking. - - @param[in] idx index of the element to access - - @return const reference to the element at index @a idx - - @throw type_error.304 if the JSON value is not an array; in this case, - calling `at` with an index makes no sense. See example below. - @throw out_of_range.401 if the index @a idx is out of range of the array; - that is, `idx >= size()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 1.0.0 - - @liveexample{The example below shows how array elements can be read using - `at()`. It also demonstrates the different exceptions that can be thrown., - at__size_type_const} - */ - const_reference at(size_type idx) const - { - // at only works for arrays - if (JSON_LIKELY(is_array())) - { - JSON_TRY - { - return m_value.array->at(idx); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified object element with bounds checking - - Returns a reference to the element at with specified key @a key, with - bounds checking. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.304 if the JSON value is not an object; in this case, - calling `at` with a key makes no sense. See example below. - @throw out_of_range.403 if the key @a key is is not stored in the object; - that is, `find(key) == end()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Logarithmic in the size of the container. - - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - - @liveexample{The example below shows how object elements can be read and - written using `at()`. It also demonstrates the different exceptions that - can be thrown.,at__object_t_key_type} - */ - reference at(const typename object_t::key_type& key) - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - JSON_TRY - { - return m_value.object->at(key); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified object element with bounds checking - - Returns a const reference to the element at with specified key @a key, - with bounds checking. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @throw type_error.304 if the JSON value is not an object; in this case, - calling `at` with a key makes no sense. See example below. - @throw out_of_range.403 if the key @a key is is not stored in the object; - that is, `find(key) == end()`. See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Logarithmic in the size of the container. - - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - - @liveexample{The example below shows how object elements can be read using - `at()`. It also demonstrates the different exceptions that can be thrown., - at__object_t_key_type_const} - */ - const_reference at(const typename object_t::key_type& key) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - JSON_TRY - { - return m_value.object->at(key); - } - JSON_CATCH (std::out_of_range&) - { - // create better exception explanation - JSON_THROW(out_of_range::create(403, "key '" + key + "' not found")); - } - } - else - { - JSON_THROW(type_error::create(304, "cannot use at() with " + std::string(type_name()))); - } - } - - /*! - @brief access specified array element - - Returns a reference to the element at specified location @a idx. - - @note If @a idx is beyond the range of the array (i.e., `idx >= size()`), - then the array is silently filled up with `null` values to make `idx` a - valid reference to the last stored element. - - @param[in] idx index of the element to access - - @return reference to the element at index @a idx - - @throw type_error.305 if the JSON value is not an array or null; in that - cases, using the [] operator with an index makes no sense. - - @complexity Constant if @a idx is in the range of the array. Otherwise - linear in `idx - size()`. - - @liveexample{The example below shows how array elements can be read and - written using `[]` operator. Note the addition of `null` - values.,operatorarray__size_type} - - @since version 1.0.0 - */ - reference operator[](size_type idx) - { - // implicitly convert null value to an empty array - if (is_null()) - { - m_type = value_t::array; - m_value.array = create(); - assert_invariant(); - } - - // operator[] only works for arrays - if (JSON_LIKELY(is_array())) - { - // fill up array with null values if given idx is outside range - if (idx >= m_value.array->size()) - { - m_value.array->insert(m_value.array->end(), - idx - m_value.array->size() + 1, - basic_json()); - } - - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified array element - - Returns a const reference to the element at specified location @a idx. - - @param[in] idx index of the element to access - - @return const reference to the element at index @a idx - - @throw type_error.305 if the JSON value is not an array; in that case, - using the [] operator with an index makes no sense. - - @complexity Constant. - - @liveexample{The example below shows how array elements can be read using - the `[]` operator.,operatorarray__size_type_const} - - @since version 1.0.0 - */ - const_reference operator[](size_type idx) const - { - // const operator[] only works for arrays - if (JSON_LIKELY(is_array())) - { - return m_value.array->operator[](idx); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element - - Returns a reference to the element at with specified key @a key. - - @note If @a key is not found in the object, then it is silently added to - the object and filled with a `null` value to make `key` a valid reference. - In case the value was `null` before, it is converted to an object. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.305 if the JSON value is not an object or null; in that - cases, using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read and - written using the `[]` operator.,operatorarray__key_type} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - */ - reference operator[](const typename object_t::key_type& key) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - // operator[] only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->operator[](key); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief read-only access specified object element - - Returns a const reference to the element at with specified key @a key. No - bounds checking is performed. - - @warning If the element with key @a key does not exist, the behavior is - undefined. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @pre The element with key @a key must exist. **This precondition is - enforced with an assertion.** - - @throw type_error.305 if the JSON value is not an object; in that case, - using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read using - the `[]` operator.,operatorarray__key_type_const} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.0.0 - */ - const_reference operator[](const typename object_t::key_type& key) const - { - // const operator[] only works for objects - if (JSON_LIKELY(is_object())) - { - assert(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element - - Returns a reference to the element at with specified key @a key. - - @note If @a key is not found in the object, then it is silently added to - the object and filled with a `null` value to make `key` a valid reference. - In case the value was `null` before, it is converted to an object. - - @param[in] key key of the element to access - - @return reference to the element at key @a key - - @throw type_error.305 if the JSON value is not an object or null; in that - cases, using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read and - written using the `[]` operator.,operatorarray__key_type} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.1.0 - */ - template - reference operator[](T* key) - { - // implicitly convert null to object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // at only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->operator[](key); - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief read-only access specified object element - - Returns a const reference to the element at with specified key @a key. No - bounds checking is performed. - - @warning If the element with key @a key does not exist, the behavior is - undefined. - - @param[in] key key of the element to access - - @return const reference to the element at key @a key - - @pre The element with key @a key must exist. **This precondition is - enforced with an assertion.** - - @throw type_error.305 if the JSON value is not an object; in that case, - using the [] operator with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be read using - the `[]` operator.,operatorarray__key_type_const} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref value() for access by value with a default value - - @since version 1.1.0 - */ - template - const_reference operator[](T* key) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - assert(m_value.object->find(key) != m_value.object->end()); - return m_value.object->find(key)->second; - } - - JSON_THROW(type_error::create(305, "cannot use operator[] with " + std::string(type_name()))); - } - - /*! - @brief access specified object element with default value - - Returns either a copy of an object's element at the specified key @a key - or a given default value if no element with key @a key exists. - - The function is basically equivalent to executing - @code {.cpp} - try { - return at(key); - } catch(out_of_range) { - return default_value; - } - @endcode - - @note Unlike @ref at(const typename object_t::key_type&), this function - does not throw if the given key @a key was not found. - - @note Unlike @ref operator[](const typename object_t::key_type& key), this - function does not implicitly add an element to the position defined by @a - key. This function is furthermore also applicable to const objects. - - @param[in] key key of the element to access - @param[in] default_value the value to return if @a key is not found - - @tparam ValueType type compatible to JSON values, for instance `int` for - JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for - JSON arrays. Note the type of the expected value at @a key and the default - value @a default_value must be compatible. - - @return copy of the element at key @a key or @a default_value if @a key - is not found - - @throw type_error.306 if the JSON value is not an object; in that case, - using `value()` with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be queried - with a default value.,basic_json__value} - - @sa @ref at(const typename object_t::key_type&) for access by reference - with range checking - @sa @ref operator[](const typename object_t::key_type&) for unchecked - access by reference - - @since version 1.0.0 - */ - template::value, int>::type = 0> - ValueType value(const typename object_t::key_type& key, const ValueType& default_value) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - // if key is found, return value and given default value otherwise - const auto it = find(key); - if (it != end()) - { - return *it; - } - - return default_value; - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); - } - - /*! - @brief overload for a default value of type const char* - @copydoc basic_json::value(const typename object_t::key_type&, ValueType) const - */ - string_t value(const typename object_t::key_type& key, const char* default_value) const - { - return value(key, string_t(default_value)); - } - - /*! - @brief access specified object element via JSON Pointer with default value - - Returns either a copy of an object's element at the specified key @a key - or a given default value if no element with key @a key exists. - - The function is basically equivalent to executing - @code {.cpp} - try { - return at(ptr); - } catch(out_of_range) { - return default_value; - } - @endcode - - @note Unlike @ref at(const json_pointer&), this function does not throw - if the given key @a key was not found. - - @param[in] ptr a JSON pointer to the element to access - @param[in] default_value the value to return if @a ptr found no value - - @tparam ValueType type compatible to JSON values, for instance `int` for - JSON integer numbers, `bool` for JSON booleans, or `std::vector` types for - JSON arrays. Note the type of the expected value at @a key and the default - value @a default_value must be compatible. - - @return copy of the element at key @a key or @a default_value if @a key - is not found - - @throw type_error.306 if the JSON value is not an objec; in that case, - using `value()` with a key makes no sense. - - @complexity Logarithmic in the size of the container. - - @liveexample{The example below shows how object elements can be queried - with a default value.,basic_json__value_ptr} - - @sa @ref operator[](const json_pointer&) for unchecked access by reference - - @since version 2.0.2 - */ - template::value, int>::type = 0> - ValueType value(const json_pointer& ptr, const ValueType& default_value) const - { - // at only works for objects - if (JSON_LIKELY(is_object())) - { - // if pointer resolves a value, return it or use default value - JSON_TRY - { - return ptr.get_checked(this); - } - JSON_CATCH (out_of_range&) - { - return default_value; - } - } - - JSON_THROW(type_error::create(306, "cannot use value() with " + std::string(type_name()))); - } - - /*! - @brief overload for a default value of type const char* - @copydoc basic_json::value(const json_pointer&, ValueType) const - */ - string_t value(const json_pointer& ptr, const char* default_value) const - { - return value(ptr, string_t(default_value)); - } - - /*! - @brief access the first element - - Returns a reference to the first element in the container. For a JSON - container `c`, the expression `c.front()` is equivalent to `*c.begin()`. - - @return In case of a structured type (array or object), a reference to the - first element is returned. In case of number, string, or boolean values, a - reference to the value is returned. - - @complexity Constant. - - @pre The JSON value must not be `null` (would throw `std::out_of_range`) - or an empty array or object (undefined behavior, **guarded by - assertions**). - @post The JSON value remains unchanged. - - @throw invalid_iterator.214 when called on `null` value - - @liveexample{The following code shows an example for `front()`.,front} - - @sa @ref back() -- access the last element - - @since version 1.0.0 - */ - reference front() - { - return *begin(); - } - - /*! - @copydoc basic_json::front() - */ - const_reference front() const - { - return *cbegin(); - } - - /*! - @brief access the last element - - Returns a reference to the last element in the container. For a JSON - container `c`, the expression `c.back()` is equivalent to - @code {.cpp} - auto tmp = c.end(); - --tmp; - return *tmp; - @endcode - - @return In case of a structured type (array or object), a reference to the - last element is returned. In case of number, string, or boolean values, a - reference to the value is returned. - - @complexity Constant. - - @pre The JSON value must not be `null` (would throw `std::out_of_range`) - or an empty array or object (undefined behavior, **guarded by - assertions**). - @post The JSON value remains unchanged. - - @throw invalid_iterator.214 when called on a `null` value. See example - below. - - @liveexample{The following code shows an example for `back()`.,back} - - @sa @ref front() -- access the first element - - @since version 1.0.0 - */ - reference back() - { - auto tmp = end(); - --tmp; - return *tmp; - } - - /*! - @copydoc basic_json::back() - */ - const_reference back() const - { - auto tmp = cend(); - --tmp; - return *tmp; - } - - /*! - @brief remove element given an iterator - - Removes the element specified by iterator @a pos. The iterator @a pos must - be valid and dereferenceable. Thus the `end()` iterator (which is valid, - but is not dereferenceable) cannot be used as a value for @a pos. - - If called on a primitive type other than `null`, the resulting JSON value - will be `null`. - - @param[in] pos iterator to the element to remove - @return Iterator following the last removed element. If the iterator @a - pos refers to the last element, the `end()` iterator is returned. - - @tparam IteratorType an @ref iterator or @ref const_iterator - - @post Invalidates iterators and references at or after the point of the - erase, including the `end()` iterator. - - @throw type_error.307 if called on a `null` value; example: `"cannot use - erase() with null"` - @throw invalid_iterator.202 if called on an iterator which does not belong - to the current JSON value; example: `"iterator does not fit current - value"` - @throw invalid_iterator.205 if called on a primitive type with invalid - iterator (i.e., any iterator which is not `begin()`); example: `"iterator - out of range"` - - @complexity The complexity depends on the type: - - objects: amortized constant - - arrays: linear in distance between @a pos and the end of the container - - strings: linear in the length of the string - - other types: constant - - @liveexample{The example shows the result of `erase()` for different JSON - types.,erase__IteratorType} - - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type - = 0> - IteratorType erase(IteratorType pos) - { - // make sure iterator fits the current value - if (JSON_UNLIKELY(this != pos.m_object)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_UNLIKELY(not pos.m_it.primitive_iterator.is_begin())) - { - JSON_THROW(invalid_iterator::create(205, "iterator out of range")); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(pos.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(pos.m_it.array_iterator); - break; - } - - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - return result; - } - - /*! - @brief remove elements given an iterator range - - Removes the element specified by the range `[first; last)`. The iterator - @a first does not need to be dereferenceable if `first == last`: erasing - an empty range is a no-op. - - If called on a primitive type other than `null`, the resulting JSON value - will be `null`. - - @param[in] first iterator to the beginning of the range to remove - @param[in] last iterator past the end of the range to remove - @return Iterator following the last removed element. If the iterator @a - second refers to the last element, the `end()` iterator is returned. - - @tparam IteratorType an @ref iterator or @ref const_iterator - - @post Invalidates iterators and references at or after the point of the - erase, including the `end()` iterator. - - @throw type_error.307 if called on a `null` value; example: `"cannot use - erase() with null"` - @throw invalid_iterator.203 if called on iterators which does not belong - to the current JSON value; example: `"iterators do not fit current value"` - @throw invalid_iterator.204 if called on a primitive type with invalid - iterators (i.e., if `first != begin()` and `last != end()`); example: - `"iterators out of range"` - - @complexity The complexity depends on the type: - - objects: `log(size()) + std::distance(first, last)` - - arrays: linear in the distance between @a first and @a last, plus linear - in the distance between @a last and end of the container - - strings: linear in the length of the string - - other types: constant - - @liveexample{The example shows the result of `erase()` for different JSON - types.,erase__IteratorType_IteratorType} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - template::value or - std::is_same::value, int>::type - = 0> - IteratorType erase(IteratorType first, IteratorType last) - { - // make sure iterator fits the current value - if (JSON_UNLIKELY(this != first.m_object or this != last.m_object)) - { - JSON_THROW(invalid_iterator::create(203, "iterators do not fit current value")); - } - - IteratorType result = end(); - - switch (m_type) - { - case value_t::boolean: - case value_t::number_float: - case value_t::number_integer: - case value_t::number_unsigned: - case value_t::string: - { - if (JSON_LIKELY(not first.m_it.primitive_iterator.is_begin() - or not last.m_it.primitive_iterator.is_end())) - { - JSON_THROW(invalid_iterator::create(204, "iterators out of range")); - } - - if (is_string()) - { - AllocatorType alloc; - std::allocator_traits::destroy(alloc, m_value.string); - std::allocator_traits::deallocate(alloc, m_value.string, 1); - m_value.string = nullptr; - } - - m_type = value_t::null; - assert_invariant(); - break; - } - - case value_t::object: - { - result.m_it.object_iterator = m_value.object->erase(first.m_it.object_iterator, - last.m_it.object_iterator); - break; - } - - case value_t::array: - { - result.m_it.array_iterator = m_value.array->erase(first.m_it.array_iterator, - last.m_it.array_iterator); - break; - } - - default: - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - return result; - } - - /*! - @brief remove element from a JSON object given a key - - Removes elements from a JSON object with the key value @a key. - - @param[in] key value of the elements to remove - - @return Number of elements removed. If @a ObjectType is the default - `std::map` type, the return value will always be `0` (@a key was not - found) or `1` (@a key was found). - - @post References and iterators to the erased elements are invalidated. - Other references and iterators are not affected. - - @throw type_error.307 when called on a type other than JSON object; - example: `"cannot use erase() with null"` - - @complexity `log(size()) + count(key)` - - @liveexample{The example shows the effect of `erase()`.,erase__key_type} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const size_type) -- removes the element from an array at - the given index - - @since version 1.0.0 - */ - size_type erase(const typename object_t::key_type& key) - { - // this erase only works for objects - if (JSON_LIKELY(is_object())) - { - return m_value.object->erase(key); - } - - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - - /*! - @brief remove element from a JSON array given an index - - Removes element from a JSON array at the index @a idx. - - @param[in] idx index of the element to remove - - @throw type_error.307 when called on a type other than JSON object; - example: `"cannot use erase() with null"` - @throw out_of_range.401 when `idx >= size()`; example: `"array index 17 - is out of range"` - - @complexity Linear in distance between @a idx and the end of the container. - - @liveexample{The example shows the effect of `erase()`.,erase__size_type} - - @sa @ref erase(IteratorType) -- removes the element at a given position - @sa @ref erase(IteratorType, IteratorType) -- removes the elements in - the given range - @sa @ref erase(const typename object_t::key_type&) -- removes the element - from an object at the given key - - @since version 1.0.0 - */ - void erase(const size_type idx) - { - // this erase only works for arrays - if (JSON_LIKELY(is_array())) - { - if (JSON_UNLIKELY(idx >= size())) - { - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - - m_value.array->erase(m_value.array->begin() + static_cast(idx)); - } - else - { - JSON_THROW(type_error::create(307, "cannot use erase() with " + std::string(type_name()))); - } - } - - /// @} - - - //////////// - // lookup // - //////////// - - /// @name lookup - /// @{ - - /*! - @brief find an element in a JSON object - - Finds an element in a JSON object with key equivalent to @a key. If the - element is not found or the JSON value is not an object, end() is - returned. - - @note This method always returns @ref end() when executed on a JSON type - that is not an object. - - @param[in] key key value of the element to search for. - - @return Iterator to an element with key equivalent to @a key. If no such - element is found or the JSON value is not an object, past-the-end (see - @ref end()) iterator is returned. - - @complexity Logarithmic in the size of the JSON object. - - @liveexample{The example shows how `find()` is used.,find__key_type} - - @since version 1.0.0 - */ - template - iterator find(KeyT&& key) - { - auto result = end(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /*! - @brief find an element in a JSON object - @copydoc find(KeyT&&) - */ - template - const_iterator find(KeyT&& key) const - { - auto result = cend(); - - if (is_object()) - { - result.m_it.object_iterator = m_value.object->find(std::forward(key)); - } - - return result; - } - - /*! - @brief returns the number of occurrences of a key in a JSON object - - Returns the number of elements with key @a key. If ObjectType is the - default `std::map` type, the return value will always be `0` (@a key was - not found) or `1` (@a key was found). - - @note This method always returns `0` when executed on a JSON type that is - not an object. - - @param[in] key key value of the element to count - - @return Number of elements with key @a key. If the JSON value is not an - object, the return value will be `0`. - - @complexity Logarithmic in the size of the JSON object. - - @liveexample{The example shows how `count()` is used.,count} - - @since version 1.0.0 - */ - template - size_type count(KeyT&& key) const - { - // return 0 for all nonobject types - return is_object() ? m_value.object->count(std::forward(key)) : 0; - } - - /// @} - - - /////////////// - // iterators // - /////////////// - - /// @name iterators - /// @{ - - /*! - @brief returns an iterator to the first element - - Returns an iterator to the first element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return iterator to the first element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - @liveexample{The following code shows an example for `begin()`.,begin} - - @sa @ref cbegin() -- returns a const iterator to the beginning - @sa @ref end() -- returns an iterator to the end - @sa @ref cend() -- returns a const iterator to the end - - @since version 1.0.0 - */ - iterator begin() noexcept - { - iterator result(this); - result.set_begin(); - return result; - } - - /*! - @copydoc basic_json::cbegin() - */ - const_iterator begin() const noexcept - { - return cbegin(); - } - - /*! - @brief returns a const iterator to the first element - - Returns a const iterator to the first element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return const iterator to the first element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).begin()`. - - @liveexample{The following code shows an example for `cbegin()`.,cbegin} - - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref end() -- returns an iterator to the end - @sa @ref cend() -- returns a const iterator to the end - - @since version 1.0.0 - */ - const_iterator cbegin() const noexcept - { - const_iterator result(this); - result.set_begin(); - return result; - } - - /*! - @brief returns an iterator to one past the last element - - Returns an iterator to one past the last element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return iterator one past the last element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - @liveexample{The following code shows an example for `end()`.,end} - - @sa @ref cend() -- returns a const iterator to the end - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref cbegin() -- returns a const iterator to the beginning - - @since version 1.0.0 - */ - iterator end() noexcept - { - iterator result(this); - result.set_end(); - return result; - } - - /*! - @copydoc basic_json::cend() - */ - const_iterator end() const noexcept - { - return cend(); - } - - /*! - @brief returns a const iterator to one past the last element - - Returns a const iterator to one past the last element. - - @image html range-begin-end.svg "Illustration from cppreference.com" - - @return const iterator one past the last element - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).end()`. - - @liveexample{The following code shows an example for `cend()`.,cend} - - @sa @ref end() -- returns an iterator to the end - @sa @ref begin() -- returns an iterator to the beginning - @sa @ref cbegin() -- returns a const iterator to the beginning - - @since version 1.0.0 - */ - const_iterator cend() const noexcept - { - const_iterator result(this); - result.set_end(); - return result; - } - - /*! - @brief returns an iterator to the reverse-beginning - - Returns an iterator to the reverse-beginning; that is, the last element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `reverse_iterator(end())`. - - @liveexample{The following code shows an example for `rbegin()`.,rbegin} - - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref crend() -- returns a const reverse iterator to the end - - @since version 1.0.0 - */ - reverse_iterator rbegin() noexcept - { - return reverse_iterator(end()); - } - - /*! - @copydoc basic_json::crbegin() - */ - const_reverse_iterator rbegin() const noexcept - { - return crbegin(); - } - - /*! - @brief returns an iterator to the reverse-end - - Returns an iterator to the reverse-end; that is, one before the first - element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `reverse_iterator(begin())`. - - @liveexample{The following code shows an example for `rend()`.,rend} - - @sa @ref crend() -- returns a const reverse iterator to the end - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - - @since version 1.0.0 - */ - reverse_iterator rend() noexcept - { - return reverse_iterator(begin()); - } - - /*! - @copydoc basic_json::crend() - */ - const_reverse_iterator rend() const noexcept - { - return crend(); - } - - /*! - @brief returns a const reverse iterator to the last element - - Returns a const iterator to the reverse-beginning; that is, the last - element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).rbegin()`. - - @liveexample{The following code shows an example for `crbegin()`.,crbegin} - - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref crend() -- returns a const reverse iterator to the end - - @since version 1.0.0 - */ - const_reverse_iterator crbegin() const noexcept - { - return const_reverse_iterator(cend()); - } - - /*! - @brief returns a const reverse iterator to one before the first - - Returns a const reverse iterator to the reverse-end; that is, one before - the first element. - - @image html range-rbegin-rend.svg "Illustration from cppreference.com" - - @complexity Constant. - - @requirement This function helps `basic_json` satisfying the - [ReversibleContainer](http://en.cppreference.com/w/cpp/concept/ReversibleContainer) - requirements: - - The complexity is constant. - - Has the semantics of `const_cast(*this).rend()`. - - @liveexample{The following code shows an example for `crend()`.,crend} - - @sa @ref rend() -- returns a reverse iterator to the end - @sa @ref rbegin() -- returns a reverse iterator to the beginning - @sa @ref crbegin() -- returns a const reverse iterator to the beginning - - @since version 1.0.0 - */ - const_reverse_iterator crend() const noexcept - { - return const_reverse_iterator(cbegin()); - } - - public: - /*! - @brief wrapper to access iterator member functions in range-based for - - This function allows to access @ref iterator::key() and @ref - iterator::value() during range-based for loops. In these loops, a - reference to the JSON values is returned, so there is no access to the - underlying iterator. - - For loop without iterator_wrapper: - - @code{cpp} - for (auto it = j_object.begin(); it != j_object.end(); ++it) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - Range-based for loop without iterator proxy: - - @code{cpp} - for (auto it : j_object) - { - // "it" is of type json::reference and has no key() member - std::cout << "value: " << it << '\n'; - } - @endcode - - Range-based for loop with iterator proxy: - - @code{cpp} - for (auto it : json::iterator_wrapper(j_object)) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - @note When iterating over an array, `key()` will return the index of the - element as string (see example). - - @param[in] ref reference to a JSON value - @return iteration proxy object wrapping @a ref with an interface to use in - range-based for loops - - @liveexample{The following code shows how the wrapper is used,iterator_wrapper} - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @note The name of this function is not yet final and may change in the - future. - - @deprecated This stream operator is deprecated and will be removed in - future 4.0.0 of the library. Please use @ref items() instead; - that is, replace `json::iterator_wrapper(j)` with `j.items()`. - */ - JSON_DEPRECATED - static iteration_proxy iterator_wrapper(reference ref) noexcept - { - return ref.items(); - } - - /*! - @copydoc iterator_wrapper(reference) - */ - JSON_DEPRECATED - static iteration_proxy iterator_wrapper(const_reference ref) noexcept - { - return ref.items(); - } - - /*! - @brief helper to access iterator member functions in range-based for - - This function allows to access @ref iterator::key() and @ref - iterator::value() during range-based for loops. In these loops, a - reference to the JSON values is returned, so there is no access to the - underlying iterator. - - For loop without `items()` function: - - @code{cpp} - for (auto it = j_object.begin(); it != j_object.end(); ++it) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - Range-based for loop without `items()` function: - - @code{cpp} - for (auto it : j_object) - { - // "it" is of type json::reference and has no key() member - std::cout << "value: " << it << '\n'; - } - @endcode - - Range-based for loop with `items()` function: - - @code{cpp} - for (auto it : j_object.items()) - { - std::cout << "key: " << it.key() << ", value:" << it.value() << '\n'; - } - @endcode - - @note When iterating over an array, `key()` will return the index of the - element as string (see example). For primitive types (e.g., numbers), - `key()` returns an empty string. - - @return iteration proxy object wrapping @a ref with an interface to use in - range-based for loops - - @liveexample{The following code shows how the function is used.,items} - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 3.x.x. - */ - iteration_proxy items() noexcept - { - return iteration_proxy(*this); - } - - /*! - @copydoc items() - */ - iteration_proxy items() const noexcept - { - return iteration_proxy(*this); - } - - /// @} - - - ////////////// - // capacity // - ////////////// - - /// @name capacity - /// @{ - - /*! - @brief checks whether the container is empty. - - Checks if a JSON value has no elements (i.e. whether its @ref size is `0`). - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `true` - boolean | `false` - string | `false` - number | `false` - object | result of function `object_t::empty()` - array | result of function `array_t::empty()` - - @liveexample{The following code uses `empty()` to check if a JSON - object contains any elements.,empty} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their `empty()` functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @note This function does not return whether a string stored as JSON value - is empty - it returns whether the JSON container itself is empty which is - false in the case of a string. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `begin() == end()`. - - @sa @ref size() -- returns the number of elements - - @since version 1.0.0 - */ - bool empty() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return true; - } - - case value_t::array: - { - // delegate call to array_t::empty() - return m_value.array->empty(); - } - - case value_t::object: - { - // delegate call to object_t::empty() - return m_value.object->empty(); - } - - default: - { - // all other types are nonempty - return false; - } - } - } - - /*! - @brief returns the number of elements - - Returns the number of elements in a JSON value. - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `0` - boolean | `1` - string | `1` - number | `1` - object | result of function object_t::size() - array | result of function array_t::size() - - @liveexample{The following code calls `size()` on the different value - types.,size} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their size() functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @note This function does not return the length of a string stored as JSON - value - it returns the number of elements in the JSON value which is 1 in - the case of a string. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of `std::distance(begin(), end())`. - - @sa @ref empty() -- checks whether the container is empty - @sa @ref max_size() -- returns the maximal number of elements - - @since version 1.0.0 - */ - size_type size() const noexcept - { - switch (m_type) - { - case value_t::null: - { - // null values are empty - return 0; - } - - case value_t::array: - { - // delegate call to array_t::size() - return m_value.array->size(); - } - - case value_t::object: - { - // delegate call to object_t::size() - return m_value.object->size(); - } - - default: - { - // all other types have size 1 - return 1; - } - } - } - - /*! - @brief returns the maximum possible number of elements - - Returns the maximum number of elements a JSON value is able to hold due to - system or library implementation limitations, i.e. `std::distance(begin(), - end())` for the JSON value. - - @return The return value depends on the different types and is - defined as follows: - Value type | return value - ----------- | ------------- - null | `0` (same as `size()`) - boolean | `1` (same as `size()`) - string | `1` (same as `size()`) - number | `1` (same as `size()`) - object | result of function `object_t::max_size()` - array | result of function `array_t::max_size()` - - @liveexample{The following code calls `max_size()` on the different value - types. Note the output is implementation specific.,max_size} - - @complexity Constant, as long as @ref array_t and @ref object_t satisfy - the Container concept; that is, their `max_size()` functions have constant - complexity. - - @iterators No changes. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @requirement This function helps `basic_json` satisfying the - [Container](http://en.cppreference.com/w/cpp/concept/Container) - requirements: - - The complexity is constant. - - Has the semantics of returning `b.size()` where `b` is the largest - possible JSON value. - - @sa @ref size() -- returns the number of elements - - @since version 1.0.0 - */ - size_type max_size() const noexcept - { - switch (m_type) - { - case value_t::array: - { - // delegate call to array_t::max_size() - return m_value.array->max_size(); - } - - case value_t::object: - { - // delegate call to object_t::max_size() - return m_value.object->max_size(); - } - - default: - { - // all other types have max_size() == size() - return size(); - } - } - } - - /// @} - - - /////////////// - // modifiers // - /////////////// - - /// @name modifiers - /// @{ - - /*! - @brief clears the contents - - Clears the content of a JSON value and resets it to the default value as - if @ref basic_json(value_t) would have been called with the current value - type from @ref type(): - - Value type | initial value - ----------- | ------------- - null | `null` - boolean | `false` - string | `""` - number | `0` - object | `{}` - array | `[]` - - @post Has the same effect as calling - @code {.cpp} - *this = basic_json(type()); - @endcode - - @liveexample{The example below shows the effect of `clear()` to different - JSON types.,clear} - - @complexity Linear in the size of the JSON value. - - @iterators All iterators, pointers and references related to this container - are invalidated. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @sa @ref basic_json(value_t) -- constructor that creates an object with the - same value than calling `clear()` - - @since version 1.0.0 - */ - void clear() noexcept - { - switch (m_type) - { - case value_t::number_integer: - { - m_value.number_integer = 0; - break; - } - - case value_t::number_unsigned: - { - m_value.number_unsigned = 0; - break; - } - - case value_t::number_float: - { - m_value.number_float = 0.0; - break; - } - - case value_t::boolean: - { - m_value.boolean = false; - break; - } - - case value_t::string: - { - m_value.string->clear(); - break; - } - - case value_t::array: - { - m_value.array->clear(); - break; - } - - case value_t::object: - { - m_value.object->clear(); - break; - } - - default: - break; - } - } - - /*! - @brief add an object to an array - - Appends the given element @a val to the end of the JSON value. If the - function is called on a JSON null value, an empty array is created before - appending @a val. - - @param[in] val the value to add to the JSON array - - @throw type_error.308 when called on a type other than JSON array or - null; example: `"cannot use push_back() with number"` - - @complexity Amortized constant. - - @liveexample{The example shows how `push_back()` and `+=` can be used to - add elements to a JSON array. Note how the `null` value was silently - converted to a JSON array.,push_back} - - @since version 1.0.0 - */ - void push_back(basic_json&& val) - { - // push_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (move semantics) - m_value.array->push_back(std::move(val)); - // invalidate object - val.m_type = value_t::null; - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - reference operator+=(basic_json&& val) - { - push_back(std::move(val)); - return *this; - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - void push_back(const basic_json& val) - { - // push_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array - m_value.array->push_back(val); - } - - /*! - @brief add an object to an array - @copydoc push_back(basic_json&&) - */ - reference operator+=(const basic_json& val) - { - push_back(val); - return *this; - } - - /*! - @brief add an object to an object - - Inserts the given element @a val to the JSON object. If the function is - called on a JSON null value, an empty object is created before inserting - @a val. - - @param[in] val the value to add to the JSON object - - @throw type_error.308 when called on a type other than JSON object or - null; example: `"cannot use push_back() with number"` - - @complexity Logarithmic in the size of the container, O(log(`size()`)). - - @liveexample{The example shows how `push_back()` and `+=` can be used to - add elements to a JSON object. Note how the `null` value was silently - converted to a JSON object.,push_back__object_t__value} - - @since version 1.0.0 - */ - void push_back(const typename object_t::value_type& val) - { - // push_back only works for null objects or objects - if (JSON_UNLIKELY(not(is_null() or is_object()))) - { - JSON_THROW(type_error::create(308, "cannot use push_back() with " + std::string(type_name()))); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to array - m_value.object->insert(val); - } - - /*! - @brief add an object to an object - @copydoc push_back(const typename object_t::value_type&) - */ - reference operator+=(const typename object_t::value_type& val) - { - push_back(val); - return *this; - } - - /*! - @brief add an object to an object - - This function allows to use `push_back` with an initializer list. In case - - 1. the current value is an object, - 2. the initializer list @a init contains only two elements, and - 3. the first element of @a init is a string, - - @a init is converted into an object element and added using - @ref push_back(const typename object_t::value_type&). Otherwise, @a init - is converted to a JSON value and added using @ref push_back(basic_json&&). - - @param[in] init an initializer list - - @complexity Linear in the size of the initializer list @a init. - - @note This function is required to resolve an ambiguous overload error, - because pairs like `{"key", "value"}` can be both interpreted as - `object_t::value_type` or `std::initializer_list`, see - https://github.com/nlohmann/json/issues/235 for more information. - - @liveexample{The example shows how initializer lists are treated as - objects when possible.,push_back__initializer_list} - */ - void push_back(initializer_list_t init) - { - if (is_object() and init.size() == 2 and (*init.begin())->is_string()) - { - basic_json&& key = init.begin()->moved_or_copied(); - push_back(typename object_t::value_type( - std::move(key.get_ref()), (init.begin() + 1)->moved_or_copied())); - } - else - { - push_back(basic_json(init)); - } - } - - /*! - @brief add an object to an object - @copydoc push_back(initializer_list_t) - */ - reference operator+=(initializer_list_t init) - { - push_back(init); - return *this; - } - - /*! - @brief add an object to an array - - Creates a JSON value from the passed parameters @a args to the end of the - JSON value. If the function is called on a JSON null value, an empty array - is created before appending the value created from @a args. - - @param[in] args arguments to forward to a constructor of @ref basic_json - @tparam Args compatible types to create a @ref basic_json object - - @throw type_error.311 when called on a type other than JSON array or - null; example: `"cannot use emplace_back() with number"` - - @complexity Amortized constant. - - @liveexample{The example shows how `push_back()` can be used to add - elements to a JSON array. Note how the `null` value was silently converted - to a JSON array.,emplace_back} - - @since version 2.0.8 - */ - template - void emplace_back(Args&& ... args) - { - // emplace_back only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_array()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace_back() with " + std::string(type_name()))); - } - - // transform null object into an array - if (is_null()) - { - m_type = value_t::array; - m_value = value_t::array; - assert_invariant(); - } - - // add element to array (perfect forwarding) - m_value.array->emplace_back(std::forward(args)...); - } - - /*! - @brief add an object to an object if key does not exist - - Inserts a new element into a JSON object constructed in-place with the - given @a args if there is no element with the key in the container. If the - function is called on a JSON null value, an empty object is created before - appending the value created from @a args. - - @param[in] args arguments to forward to a constructor of @ref basic_json - @tparam Args compatible types to create a @ref basic_json object - - @return a pair consisting of an iterator to the inserted element, or the - already-existing element if no insertion happened, and a bool - denoting whether the insertion took place. - - @throw type_error.311 when called on a type other than JSON object or - null; example: `"cannot use emplace() with number"` - - @complexity Logarithmic in the size of the container, O(log(`size()`)). - - @liveexample{The example shows how `emplace()` can be used to add elements - to a JSON object. Note how the `null` value was silently converted to a - JSON object. Further note how no value is added if there was already one - value stored with the same key.,emplace} - - @since version 2.0.8 - */ - template - std::pair emplace(Args&& ... args) - { - // emplace only works for null objects or arrays - if (JSON_UNLIKELY(not(is_null() or is_object()))) - { - JSON_THROW(type_error::create(311, "cannot use emplace() with " + std::string(type_name()))); - } - - // transform null object into an object - if (is_null()) - { - m_type = value_t::object; - m_value = value_t::object; - assert_invariant(); - } - - // add element to array (perfect forwarding) - auto res = m_value.object->emplace(std::forward(args)...); - // create result iterator and set iterator to the result of emplace - auto it = begin(); - it.m_it.object_iterator = res.first; - - // return pair of iterator and boolean - return {it, res.second}; - } - - /*! - @brief inserts element - - Inserts element @a val before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] val element to insert - @return iterator pointing to the inserted @a val. - - @throw type_error.309 if called on JSON values other than arrays; - example: `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @complexity Constant plus linear in the distance between @a pos and end of - the container. - - @liveexample{The example shows how `insert()` is used.,insert} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, const basic_json& val) - { - // insert only works for arrays - if (JSON_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, val); - return result; - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - /*! - @brief inserts element - @copydoc insert(const_iterator, const basic_json&) - */ - iterator insert(const_iterator pos, basic_json&& val) - { - return insert(pos, val); - } - - /*! - @brief inserts elements - - Inserts @a cnt copies of @a val before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] cnt number of copies of @a val to insert - @param[in] val element to insert - @return iterator pointing to the first element inserted, or @a pos if - `cnt==0` - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @complexity Linear in @a cnt plus linear in the distance between @a pos - and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__count} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, size_type cnt, const basic_json& val) - { - // insert only works for arrays - if (JSON_LIKELY(is_array())) - { - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, cnt, val); - return result; - } - - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - /*! - @brief inserts elements - - Inserts elements from range `[first, last)` before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - @throw invalid_iterator.211 if @a first or @a last are iterators into - container for which insert is called; example: `"passed iterators may not - belong to container"` - - @return iterator pointing to the first element inserted, or @a pos if - `first==last` - - @complexity Linear in `std::distance(first, last)` plus linear in the - distance between @a pos and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__range} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, const_iterator first, const_iterator last) - { - // insert only works for arrays - if (JSON_UNLIKELY(not is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - if (JSON_UNLIKELY(first.m_object == this)) - { - JSON_THROW(invalid_iterator::create(211, "passed iterators may not belong to container")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert( - pos.m_it.array_iterator, - first.m_it.array_iterator, - last.m_it.array_iterator); - return result; - } - - /*! - @brief inserts elements - - Inserts elements from initializer list @a ilist before iterator @a pos. - - @param[in] pos iterator before which the content will be inserted; may be - the end() iterator - @param[in] ilist initializer list to insert the values from - - @throw type_error.309 if called on JSON values other than arrays; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if @a pos is not an iterator of *this; - example: `"iterator does not fit current value"` - - @return iterator pointing to the first element inserted, or @a pos if - `ilist` is empty - - @complexity Linear in `ilist.size()` plus linear in the distance between - @a pos and end of the container. - - @liveexample{The example shows how `insert()` is used.,insert__ilist} - - @since version 1.0.0 - */ - iterator insert(const_iterator pos, initializer_list_t ilist) - { - // insert only works for arrays - if (JSON_UNLIKELY(not is_array())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if iterator pos fits to this JSON value - if (JSON_UNLIKELY(pos.m_object != this)) - { - JSON_THROW(invalid_iterator::create(202, "iterator does not fit current value")); - } - - // insert to array and return iterator - iterator result(this); - result.m_it.array_iterator = m_value.array->insert(pos.m_it.array_iterator, ilist.begin(), ilist.end()); - return result; - } - - /*! - @brief inserts elements - - Inserts elements from range `[first, last)`. - - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.309 if called on JSON values other than objects; example: - `"cannot use insert() with string"` - @throw invalid_iterator.202 if iterator @a first or @a last does does not - point to an object; example: `"iterators first and last must point to - objects"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - - @complexity Logarithmic: `O(N*log(size() + N))`, where `N` is the number - of elements to insert. - - @liveexample{The example shows how `insert()` is used.,insert__range_object} - - @since version 3.0.0 - */ - void insert(const_iterator first, const_iterator last) - { - // insert only works for objects - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(309, "cannot use insert() with " + std::string(type_name()))); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - // passed iterators must belong to objects - if (JSON_UNLIKELY(not first.m_object->is_object())) - { - JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); - } - - m_value.object->insert(first.m_it.object_iterator, last.m_it.object_iterator); - } - - /*! - @brief updates a JSON object from another object, overwriting existing keys - - Inserts all values from JSON object @a j and overwrites existing keys. - - @param[in] j JSON object to read values from - - @throw type_error.312 if called on JSON values other than objects; example: - `"cannot use update() with string"` - - @complexity O(N*log(size() + N)), where N is the number of elements to - insert. - - @liveexample{The example shows how `update()` is used.,update} - - @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update - - @since version 3.0.0 - */ - void update(const_reference j) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); - } - if (JSON_UNLIKELY(not j.is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(j.type_name()))); - } - - for (auto it = j.cbegin(); it != j.cend(); ++it) - { - m_value.object->operator[](it.key()) = it.value(); - } - } - - /*! - @brief updates a JSON object from another object, overwriting existing keys - - Inserts all values from from range `[first, last)` and overwrites existing - keys. - - @param[in] first begin of the range of elements to insert - @param[in] last end of the range of elements to insert - - @throw type_error.312 if called on JSON values other than objects; example: - `"cannot use update() with string"` - @throw invalid_iterator.202 if iterator @a first or @a last does does not - point to an object; example: `"iterators first and last must point to - objects"` - @throw invalid_iterator.210 if @a first and @a last do not belong to the - same JSON value; example: `"iterators do not fit"` - - @complexity O(N*log(size() + N)), where N is the number of elements to - insert. - - @liveexample{The example shows how `update()` is used__range.,update} - - @sa https://docs.python.org/3.6/library/stdtypes.html#dict.update - - @since version 3.0.0 - */ - void update(const_iterator first, const_iterator last) - { - // implicitly convert null value to an empty object - if (is_null()) - { - m_type = value_t::object; - m_value.object = create(); - assert_invariant(); - } - - if (JSON_UNLIKELY(not is_object())) - { - JSON_THROW(type_error::create(312, "cannot use update() with " + std::string(type_name()))); - } - - // check if range iterators belong to the same JSON object - if (JSON_UNLIKELY(first.m_object != last.m_object)) - { - JSON_THROW(invalid_iterator::create(210, "iterators do not fit")); - } - - // passed iterators must belong to objects - if (JSON_UNLIKELY(not first.m_object->is_object() - or not first.m_object->is_object())) - { - JSON_THROW(invalid_iterator::create(202, "iterators first and last must point to objects")); - } - - for (auto it = first; it != last; ++it) - { - m_value.object->operator[](it.key()) = it.value(); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of the JSON value with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other JSON value to exchange the contents with - - @complexity Constant. - - @liveexample{The example below shows how JSON values can be swapped with - `swap()`.,swap__reference} - - @since version 1.0.0 - */ - void swap(reference other) noexcept ( - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value and - std::is_nothrow_move_constructible::value and - std::is_nothrow_move_assignable::value - ) - { - std::swap(m_type, other.m_type); - std::swap(m_value, other.m_value); - assert_invariant(); - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON array with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other array to exchange the contents with - - @throw type_error.310 when JSON value is not an array; example: `"cannot - use swap() with string"` - - @complexity Constant. - - @liveexample{The example below shows how arrays can be swapped with - `swap()`.,swap__array_t} - - @since version 1.0.0 - */ - void swap(array_t& other) - { - // swap only works for arrays - if (JSON_LIKELY(is_array())) - { - std::swap(*(m_value.array), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON object with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other object to exchange the contents with - - @throw type_error.310 when JSON value is not an object; example: - `"cannot use swap() with string"` - - @complexity Constant. - - @liveexample{The example below shows how objects can be swapped with - `swap()`.,swap__object_t} - - @since version 1.0.0 - */ - void swap(object_t& other) - { - // swap only works for objects - if (JSON_LIKELY(is_object())) - { - std::swap(*(m_value.object), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /*! - @brief exchanges the values - - Exchanges the contents of a JSON string with those of @a other. Does not - invoke any move, copy, or swap operations on individual elements. All - iterators and references remain valid. The past-the-end iterator is - invalidated. - - @param[in,out] other string to exchange the contents with - - @throw type_error.310 when JSON value is not a string; example: `"cannot - use swap() with boolean"` - - @complexity Constant. - - @liveexample{The example below shows how strings can be swapped with - `swap()`.,swap__string_t} - - @since version 1.0.0 - */ - void swap(string_t& other) - { - // swap only works for strings - if (JSON_LIKELY(is_string())) - { - std::swap(*(m_value.string), other); - } - else - { - JSON_THROW(type_error::create(310, "cannot use swap() with " + std::string(type_name()))); - } - } - - /// @} - - public: - ////////////////////////////////////////// - // lexicographical comparison operators // - ////////////////////////////////////////// - - /// @name lexicographical comparison operators - /// @{ - - /*! - @brief comparison: equal - - Compares two JSON values for equality according to the following rules: - - Two JSON values are equal if (1) they are from the same type and (2) - their stored values are the same according to their respective - `operator==`. - - Integer and floating-point numbers are automatically converted before - comparison. Note than two NaN values are always treated as unequal. - - Two JSON null values are equal. - - @note Floating-point inside JSON values numbers are compared with - `json::number_float_t::operator==` which is `double::operator==` by - default. To compare floating-point while respecting an epsilon, an alternative - [comparison function](https://github.com/mariokonrad/marnav/blob/master/src/marnav/math/floatingpoint.hpp#L34-#L39) - could be used, for instance - @code {.cpp} - template::value, T>::type> - inline bool is_same(T a, T b, T epsilon = std::numeric_limits::epsilon()) noexcept - { - return std::abs(a - b) <= epsilon; - } - @endcode - - @note NaN values never compare equal to themselves or to other NaN values. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether the values @a lhs and @a rhs are equal - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @complexity Linear. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__equal} - - @since version 1.0.0 - */ - friend bool operator==(const_reference lhs, const_reference rhs) noexcept - { - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - return (*lhs.m_value.array == *rhs.m_value.array); - - case value_t::object: - return (*lhs.m_value.object == *rhs.m_value.object); - - case value_t::null: - return true; - - case value_t::string: - return (*lhs.m_value.string == *rhs.m_value.string); - - case value_t::boolean: - return (lhs.m_value.boolean == rhs.m_value.boolean); - - case value_t::number_integer: - return (lhs.m_value.number_integer == rhs.m_value.number_integer); - - case value_t::number_unsigned: - return (lhs.m_value.number_unsigned == rhs.m_value.number_unsigned); - - case value_t::number_float: - return (lhs.m_value.number_float == rhs.m_value.number_float); - - default: - return false; - } - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) - { - return (static_cast(lhs.m_value.number_integer) == rhs.m_value.number_float); - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) - { - return (lhs.m_value.number_float == static_cast(rhs.m_value.number_integer)); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) - { - return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_float); - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) - { - return (lhs.m_value.number_float == static_cast(rhs.m_value.number_unsigned)); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) - { - return (static_cast(lhs.m_value.number_unsigned) == rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) - { - return (lhs.m_value.number_integer == static_cast(rhs.m_value.number_unsigned)); - } - - return false; - } - - /*! - @brief comparison: equal - @copydoc operator==(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator==(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs == basic_json(rhs)); - } - - /*! - @brief comparison: equal - @copydoc operator==(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator==(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) == rhs); - } - - /*! - @brief comparison: not equal - - Compares two JSON values for inequality by calculating `not (lhs == rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether the values @a lhs and @a rhs are not equal - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__notequal} - - @since version 1.0.0 - */ - friend bool operator!=(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs == rhs); - } - - /*! - @brief comparison: not equal - @copydoc operator!=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator!=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs != basic_json(rhs)); - } - - /*! - @brief comparison: not equal - @copydoc operator!=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator!=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) != rhs); - } - - /*! - @brief comparison: less than - - Compares whether one JSON value @a lhs is less than another JSON value @a - rhs according to the following rules: - - If @a lhs and @a rhs have the same type, the values are compared using - the default `<` operator. - - Integer and floating-point numbers are automatically converted before - comparison - - In case @a lhs and @a rhs have different types, the values are ignored - and the order of the types is considered, see - @ref operator<(const value_t, const value_t). - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is less than @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__less} - - @since version 1.0.0 - */ - friend bool operator<(const_reference lhs, const_reference rhs) noexcept - { - const auto lhs_type = lhs.type(); - const auto rhs_type = rhs.type(); - - if (lhs_type == rhs_type) - { - switch (lhs_type) - { - case value_t::array: - return (*lhs.m_value.array) < (*rhs.m_value.array); - - case value_t::object: - return *lhs.m_value.object < *rhs.m_value.object; - - case value_t::null: - return false; - - case value_t::string: - return *lhs.m_value.string < *rhs.m_value.string; - - case value_t::boolean: - return lhs.m_value.boolean < rhs.m_value.boolean; - - case value_t::number_integer: - return lhs.m_value.number_integer < rhs.m_value.number_integer; - - case value_t::number_unsigned: - return lhs.m_value.number_unsigned < rhs.m_value.number_unsigned; - - case value_t::number_float: - return lhs.m_value.number_float < rhs.m_value.number_float; - - default: - return false; - } - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_integer) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_integer) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_integer); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_float) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_float; - } - else if (lhs_type == value_t::number_float and rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_float < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_integer and rhs_type == value_t::number_unsigned) - { - return lhs.m_value.number_integer < static_cast(rhs.m_value.number_unsigned); - } - else if (lhs_type == value_t::number_unsigned and rhs_type == value_t::number_integer) - { - return static_cast(lhs.m_value.number_unsigned) < rhs.m_value.number_integer; - } - - // We only reach this line if we cannot compare values. In that case, - // we compare types. Note we have to call the operator explicitly, - // because MSVC has problems otherwise. - return operator<(lhs_type, rhs_type); - } - - /*! - @brief comparison: less than - @copydoc operator<(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs < basic_json(rhs)); - } - - /*! - @brief comparison: less than - @copydoc operator<(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) < rhs); - } - - /*! - @brief comparison: less than or equal - - Compares whether one JSON value @a lhs is less than or equal to another - JSON value by calculating `not (rhs < lhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is less than or equal to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__greater} - - @since version 1.0.0 - */ - friend bool operator<=(const_reference lhs, const_reference rhs) noexcept - { - return not (rhs < lhs); - } - - /*! - @brief comparison: less than or equal - @copydoc operator<=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs <= basic_json(rhs)); - } - - /*! - @brief comparison: less than or equal - @copydoc operator<=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator<=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) <= rhs); - } - - /*! - @brief comparison: greater than - - Compares whether one JSON value @a lhs is greater than another - JSON value by calculating `not (lhs <= rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is greater than to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__lessequal} - - @since version 1.0.0 - */ - friend bool operator>(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs <= rhs); - } - - /*! - @brief comparison: greater than - @copydoc operator>(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs > basic_json(rhs)); - } - - /*! - @brief comparison: greater than - @copydoc operator>(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) > rhs); - } - - /*! - @brief comparison: greater than or equal - - Compares whether one JSON value @a lhs is greater than or equal to another - JSON value by calculating `not (lhs < rhs)`. - - @param[in] lhs first JSON value to consider - @param[in] rhs second JSON value to consider - @return whether @a lhs is greater than or equal to @a rhs - - @complexity Linear. - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @liveexample{The example demonstrates comparing several JSON - types.,operator__greaterequal} - - @since version 1.0.0 - */ - friend bool operator>=(const_reference lhs, const_reference rhs) noexcept - { - return not (lhs < rhs); - } - - /*! - @brief comparison: greater than or equal - @copydoc operator>=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>=(const_reference lhs, const ScalarType rhs) noexcept - { - return (lhs >= basic_json(rhs)); - } - - /*! - @brief comparison: greater than or equal - @copydoc operator>=(const_reference, const_reference) - */ - template::value, int>::type = 0> - friend bool operator>=(const ScalarType lhs, const_reference rhs) noexcept - { - return (basic_json(lhs) >= rhs); - } - - /// @} - - /////////////////// - // serialization // - /////////////////// - - /// @name serialization - /// @{ - - /*! - @brief serialize to stream - - Serialize the given JSON value @a j to the output stream @a o. The JSON - value will be serialized using the @ref dump member function. - - - The indentation of the output can be controlled with the member variable - `width` of the output stream @a o. For instance, using the manipulator - `std::setw(4)` on @a o sets the indentation level to `4` and the - serialization result is the same as calling `dump(4)`. - - - The indentation character can be controlled with the member variable - `fill` of the output stream @a o. For instance, the manipulator - `std::setfill('\\t')` sets indentation to use a tab character rather than - the default space character. - - @param[in,out] o stream to serialize to - @param[in] j JSON value to serialize - - @return the stream @a o - - @throw type_error.316 if a string stored inside the JSON value is not - UTF-8 encoded - - @complexity Linear. - - @liveexample{The example below shows the serialization with different - parameters to `width` to adjust the indentation level.,operator_serialize} - - @since version 1.0.0; indentation character added in version 3.0.0 - */ - friend std::ostream& operator<<(std::ostream& o, const basic_json& j) - { - // read width member and use it as indentation parameter if nonzero - const bool pretty_print = (o.width() > 0); - const auto indentation = (pretty_print ? o.width() : 0); - - // reset width to 0 for subsequent calls to this stream - o.width(0); - - // do the actual serialization - serializer s(detail::output_adapter(o), o.fill()); - s.dump(j, pretty_print, false, static_cast(indentation)); - return o; - } - - /*! - @brief serialize to stream - @deprecated This stream operator is deprecated and will be removed in - future 4.0.0 of the library. Please use - @ref operator<<(std::ostream&, const basic_json&) - instead; that is, replace calls like `j >> o;` with `o << j;`. - @since version 1.0.0; deprecated since version 3.0.0 - */ - JSON_DEPRECATED - friend std::ostream& operator>>(const basic_json& j, std::ostream& o) - { - return o << j; - } - - /// @} - - - ///////////////////// - // deserialization // - ///////////////////// - - /// @name deserialization - /// @{ - - /*! - @brief deserialize from a compatible input - - This function reads from a compatible input. Examples are: - - an array of 1-byte values - - strings with character/literal type with size of 1 byte - - input streams - - container with contiguous storage of 1-byte values. Compatible container - types include `std::vector`, `std::string`, `std::array`, - `std::valarray`, and `std::initializer_list`. Furthermore, C-style - arrays can be used with `std::begin()`/`std::end()`. User-defined - containers can be used as long as they implement random-access iterators - and a contiguous storage. - - @pre Each element of the container has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @pre The container storage is contiguous. Violating this precondition - yields undefined behavior. **This precondition is enforced with an - assertion.** - @pre Each element of the container has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @warning There is no way to enforce all preconditions at compile-time. If - the function is called with a noncompliant container and with - assertions switched off, the behavior is undefined and will most - likely yield segmentation violation. - - @param[in] i input to read from - @param[in] cb a parser callback function of type @ref parser_callback_t - which is used to control the deserialization by filtering unwanted values - (optional) - - @return result of the deserialization - - @throw parse_error.101 if a parse error occurs; example: `""unexpected end - of input; expected string literal""` - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. The complexity can be higher if the parser callback function - @a cb has a super-linear complexity. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below demonstrates the `parse()` function reading - from an array.,parse__array__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function with - and without callback function.,parse__string__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function with - and without callback function.,parse__istream__parser_callback_t} - - @liveexample{The example below demonstrates the `parse()` function reading - from a contiguous container.,parse__contiguouscontainer__parser_callback_t} - - @since version 2.0.3 (contiguous containers) - */ - static basic_json parse(detail::input_adapter i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(i, cb, allow_exceptions).parse(true, result); - return result; - } - - /*! - @copydoc basic_json parse(detail::input_adapter, const parser_callback_t) - */ - static basic_json parse(detail::input_adapter& i, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(i, cb, allow_exceptions).parse(true, result); - return result; - } - - static bool accept(detail::input_adapter i) - { - return parser(i).accept(true); - } - - static bool accept(detail::input_adapter& i) - { - return parser(i).accept(true); - } - - /*! - @brief deserialize from an iterator range with contiguous storage - - This function reads from an iterator range of a container with contiguous - storage of 1-byte values. Compatible container types include - `std::vector`, `std::string`, `std::array`, `std::valarray`, and - `std::initializer_list`. Furthermore, C-style arrays can be used with - `std::begin()`/`std::end()`. User-defined containers can be used as long - as they implement random-access iterators and a contiguous storage. - - @pre The iterator range is contiguous. Violating this precondition yields - undefined behavior. **This precondition is enforced with an assertion.** - @pre Each element in the range has a size of 1 byte. Violating this - precondition yields undefined behavior. **This precondition is enforced - with a static assertion.** - - @warning There is no way to enforce all preconditions at compile-time. If - the function is called with noncompliant iterators and with - assertions switched off, the behavior is undefined and will most - likely yield segmentation violation. - - @tparam IteratorType iterator of container with contiguous storage - @param[in] first begin of the range to parse (included) - @param[in] last end of the range to parse (excluded) - @param[in] cb a parser callback function of type @ref parser_callback_t - which is used to control the deserialization by filtering unwanted values - (optional) - @param[in] allow_exceptions whether to throw exceptions in case of a - parse error (optional, true by default) - - @return result of the deserialization - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. The complexity can be higher if the parser callback function - @a cb has a super-linear complexity. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below demonstrates the `parse()` function reading - from an iterator range.,parse__iteratortype__parser_callback_t} - - @since version 2.0.3 - */ - template::iterator_category>::value, int>::type = 0> - static basic_json parse(IteratorType first, IteratorType last, - const parser_callback_t cb = nullptr, - const bool allow_exceptions = true) - { - basic_json result; - parser(detail::input_adapter(first, last), cb, allow_exceptions).parse(true, result); - return result; - } - - template::iterator_category>::value, int>::type = 0> - static bool accept(IteratorType first, IteratorType last) - { - return parser(detail::input_adapter(first, last)).accept(true); - } - - /*! - @brief deserialize from stream - @deprecated This stream operator is deprecated and will be removed in - version 4.0.0 of the library. Please use - @ref operator>>(std::istream&, basic_json&) - instead; that is, replace calls like `j << i;` with `i >> j;`. - @since version 1.0.0; deprecated since version 3.0.0 - */ - JSON_DEPRECATED - friend std::istream& operator<<(basic_json& j, std::istream& i) - { - return operator>>(i, j); - } - - /*! - @brief deserialize from stream - - Deserializes an input stream to a JSON value. - - @param[in,out] i input stream to read a serialized JSON value from - @param[in,out] j JSON value to write the deserialized input to - - @throw parse_error.101 in case of an unexpected token - @throw parse_error.102 if to_unicode fails or surrogate error - @throw parse_error.103 if to_unicode fails - - @complexity Linear in the length of the input. The parser is a predictive - LL(1) parser. - - @note A UTF-8 byte order mark is silently ignored. - - @liveexample{The example below shows how a JSON value is constructed by - reading a serialization from a stream.,operator_deserialize} - - @sa parse(std::istream&, const parser_callback_t) for a variant with a - parser callback function to filter values while parsing - - @since version 1.0.0 - */ - friend std::istream& operator>>(std::istream& i, basic_json& j) - { - parser(detail::input_adapter(i)).parse(false, j); - return i; - } - - /// @} - - /////////////////////////// - // convenience functions // - /////////////////////////// - - /*! - @brief return the type as string - - Returns the type name as string to be used in error messages - usually to - indicate that a function was called on a wrong JSON type. - - @return a string representation of a the @a m_type member: - Value type | return value - ----------- | ------------- - null | `"null"` - boolean | `"boolean"` - string | `"string"` - number | `"number"` (for all number types) - object | `"object"` - array | `"array"` - discarded | `"discarded"` - - @exceptionsafety No-throw guarantee: this function never throws exceptions. - - @complexity Constant. - - @liveexample{The following code exemplifies `type_name()` for all JSON - types.,type_name} - - @sa @ref type() -- return the type of the JSON value - @sa @ref operator value_t() -- return the type of the JSON value (implicit) - - @since version 1.0.0, public since 2.1.0, `const char*` and `noexcept` - since 3.0.0 - */ - const char* type_name() const noexcept - { - { - switch (m_type) - { - case value_t::null: - return "null"; - case value_t::object: - return "object"; - case value_t::array: - return "array"; - case value_t::string: - return "string"; - case value_t::boolean: - return "boolean"; - case value_t::discarded: - return "discarded"; - default: - return "number"; - } - } - } - - - private: - ////////////////////// - // member variables // - ////////////////////// - - /// the type of the current element - value_t m_type = value_t::null; - - /// the value of the current element - json_value m_value = {}; - - ////////////////////////////////////////// - // binary serialization/deserialization // - ////////////////////////////////////////// - - /// @name binary serialization/deserialization support - /// @{ - - public: - /*! - @brief create a CBOR serialization of a given JSON value - - Serializes a given JSON value @a j to a byte vector using the CBOR (Concise - Binary Object Representation) serialization format. CBOR is a binary - serialization format which aims to be more compact than JSON itself, yet - more efficient to parse. - - The library uses the following mapping from JSON values types to - CBOR types according to the CBOR specification (RFC 7049): - - JSON value type | value/range | CBOR type | first byte - --------------- | ------------------------------------------ | ---------------------------------- | --------------- - null | `null` | Null | 0xF6 - boolean | `true` | True | 0xF5 - boolean | `false` | False | 0xF4 - number_integer | -9223372036854775808..-2147483649 | Negative integer (8 bytes follow) | 0x3B - number_integer | -2147483648..-32769 | Negative integer (4 bytes follow) | 0x3A - number_integer | -32768..-129 | Negative integer (2 bytes follow) | 0x39 - number_integer | -128..-25 | Negative integer (1 byte follow) | 0x38 - number_integer | -24..-1 | Negative integer | 0x20..0x37 - number_integer | 0..23 | Integer | 0x00..0x17 - number_integer | 24..255 | Unsigned integer (1 byte follow) | 0x18 - number_integer | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 - number_integer | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A - number_integer | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B - number_unsigned | 0..23 | Integer | 0x00..0x17 - number_unsigned | 24..255 | Unsigned integer (1 byte follow) | 0x18 - number_unsigned | 256..65535 | Unsigned integer (2 bytes follow) | 0x19 - number_unsigned | 65536..4294967295 | Unsigned integer (4 bytes follow) | 0x1A - number_unsigned | 4294967296..18446744073709551615 | Unsigned integer (8 bytes follow) | 0x1B - number_float | *any value* | Double-Precision Float | 0xFB - string | *length*: 0..23 | UTF-8 string | 0x60..0x77 - string | *length*: 23..255 | UTF-8 string (1 byte follow) | 0x78 - string | *length*: 256..65535 | UTF-8 string (2 bytes follow) | 0x79 - string | *length*: 65536..4294967295 | UTF-8 string (4 bytes follow) | 0x7A - string | *length*: 4294967296..18446744073709551615 | UTF-8 string (8 bytes follow) | 0x7B - array | *size*: 0..23 | array | 0x80..0x97 - array | *size*: 23..255 | array (1 byte follow) | 0x98 - array | *size*: 256..65535 | array (2 bytes follow) | 0x99 - array | *size*: 65536..4294967295 | array (4 bytes follow) | 0x9A - array | *size*: 4294967296..18446744073709551615 | array (8 bytes follow) | 0x9B - object | *size*: 0..23 | map | 0xA0..0xB7 - object | *size*: 23..255 | map (1 byte follow) | 0xB8 - object | *size*: 256..65535 | map (2 bytes follow) | 0xB9 - object | *size*: 65536..4294967295 | map (4 bytes follow) | 0xBA - object | *size*: 4294967296..18446744073709551615 | map (8 bytes follow) | 0xBB - - @note The mapping is **complete** in the sense that any JSON value type - can be converted to a CBOR value. - - @note If NaN or Infinity are stored inside a JSON number, they are - serialized properly. This behavior differs from the @ref dump() - function which serializes NaN or Infinity to `null`. - - @note The following CBOR types are not used in the conversion: - - byte strings (0x40..0x5F) - - UTF-8 strings terminated by "break" (0x7F) - - arrays terminated by "break" (0x9F) - - maps terminated by "break" (0xBF) - - date/time (0xC0..0xC1) - - bignum (0xC2..0xC3) - - decimal fraction (0xC4) - - bigfloat (0xC5) - - tagged items (0xC6..0xD4, 0xD8..0xDB) - - expected conversions (0xD5..0xD7) - - simple values (0xE0..0xF3, 0xF8) - - undefined (0xF7) - - half and single-precision floats (0xF9-0xFA) - - break (0xFF) - - @param[in] j JSON value to serialize - @return MessagePack serialization as byte vector - - @complexity Linear in the size of the JSON value @a j. - - @liveexample{The example shows the serialization of a JSON value to a byte - vector in CBOR format.,to_cbor} - - @sa http://cbor.io - @sa @ref from_cbor(detail::input_adapter, const bool strict) for the - analogous deserialization - @sa @ref to_msgpack(const basic_json&) for the related MessagePack format - @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the - related UBJSON format - - @since version 2.0.9 - */ - static std::vector to_cbor(const basic_json& j) - { - std::vector result; - to_cbor(j, result); - return result; - } - - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - static void to_cbor(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_cbor(j); - } - - /*! - @brief create a MessagePack serialization of a given JSON value - - Serializes a given JSON value @a j to a byte vector using the MessagePack - serialization format. MessagePack is a binary serialization format which - aims to be more compact than JSON itself, yet more efficient to parse. - - The library uses the following mapping from JSON values types to - MessagePack types according to the MessagePack specification: - - JSON value type | value/range | MessagePack type | first byte - --------------- | --------------------------------- | ---------------- | ---------- - null | `null` | nil | 0xC0 - boolean | `true` | true | 0xC3 - boolean | `false` | false | 0xC2 - number_integer | -9223372036854775808..-2147483649 | int64 | 0xD3 - number_integer | -2147483648..-32769 | int32 | 0xD2 - number_integer | -32768..-129 | int16 | 0xD1 - number_integer | -128..-33 | int8 | 0xD0 - number_integer | -32..-1 | negative fixint | 0xE0..0xFF - number_integer | 0..127 | positive fixint | 0x00..0x7F - number_integer | 128..255 | uint 8 | 0xCC - number_integer | 256..65535 | uint 16 | 0xCD - number_integer | 65536..4294967295 | uint 32 | 0xCE - number_integer | 4294967296..18446744073709551615 | uint 64 | 0xCF - number_unsigned | 0..127 | positive fixint | 0x00..0x7F - number_unsigned | 128..255 | uint 8 | 0xCC - number_unsigned | 256..65535 | uint 16 | 0xCD - number_unsigned | 65536..4294967295 | uint 32 | 0xCE - number_unsigned | 4294967296..18446744073709551615 | uint 64 | 0xCF - number_float | *any value* | float 64 | 0xCB - string | *length*: 0..31 | fixstr | 0xA0..0xBF - string | *length*: 32..255 | str 8 | 0xD9 - string | *length*: 256..65535 | str 16 | 0xDA - string | *length*: 65536..4294967295 | str 32 | 0xDB - array | *size*: 0..15 | fixarray | 0x90..0x9F - array | *size*: 16..65535 | array 16 | 0xDC - array | *size*: 65536..4294967295 | array 32 | 0xDD - object | *size*: 0..15 | fix map | 0x80..0x8F - object | *size*: 16..65535 | map 16 | 0xDE - object | *size*: 65536..4294967295 | map 32 | 0xDF - - @note The mapping is **complete** in the sense that any JSON value type - can be converted to a MessagePack value. - - @note The following values can **not** be converted to a MessagePack value: - - strings with more than 4294967295 bytes - - arrays with more than 4294967295 elements - - objects with more than 4294967295 elements - - @note The following MessagePack types are not used in the conversion: - - bin 8 - bin 32 (0xC4..0xC6) - - ext 8 - ext 32 (0xC7..0xC9) - - float 32 (0xCA) - - fixext 1 - fixext 16 (0xD4..0xD8) - - @note Any MessagePack output created @ref to_msgpack can be successfully - parsed by @ref from_msgpack. - - @note If NaN or Infinity are stored inside a JSON number, they are - serialized properly. This behavior differs from the @ref dump() - function which serializes NaN or Infinity to `null`. - - @param[in] j JSON value to serialize - @return MessagePack serialization as byte vector - - @complexity Linear in the size of the JSON value @a j. - - @liveexample{The example shows the serialization of a JSON value to a byte - vector in MessagePack format.,to_msgpack} - - @sa http://msgpack.org - @sa @ref from_msgpack(const std::vector&, const size_t) for the - analogous deserialization - @sa @ref to_cbor(const basic_json& for the related CBOR format - @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the - related UBJSON format - - @since version 2.0.9 - */ - static std::vector to_msgpack(const basic_json& j) - { - std::vector result; - to_msgpack(j, result); - return result; - } - - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - static void to_msgpack(const basic_json& j, detail::output_adapter o) - { - binary_writer(o).write_msgpack(j); - } - - /*! - @brief create a UBJSON serialization of a given JSON value - - Serializes a given JSON value @a j to a byte vector using the UBJSON - (Universal Binary JSON) serialization format. UBJSON aims to be more compact - than JSON itself, yet more efficient to parse. - - The library uses the following mapping from JSON values types to - UBJSON types according to the UBJSON specification: - - JSON value type | value/range | UBJSON type | marker - --------------- | --------------------------------- | ----------- | ------ - null | `null` | null | `Z` - boolean | `true` | true | `T` - boolean | `false` | false | `F` - number_integer | -9223372036854775808..-2147483649 | int64 | `L` - number_integer | -2147483648..-32769 | int32 | `l` - number_integer | -32768..-129 | int16 | `I` - number_integer | -128..127 | int8 | `i` - number_integer | 128..255 | uint8 | `U` - number_integer | 256..32767 | int16 | `I` - number_integer | 32768..2147483647 | int32 | `l` - number_integer | 2147483648..9223372036854775807 | int64 | `L` - number_unsigned | 0..127 | int8 | `i` - number_unsigned | 128..255 | uint8 | `U` - number_unsigned | 256..32767 | int16 | `I` - number_unsigned | 32768..2147483647 | int32 | `l` - number_unsigned | 2147483648..9223372036854775807 | int64 | `L` - number_float | *any value* | float64 | `D` - string | *with shortest length indicator* | string | `S` - array | *see notes on optimized format* | array | `[` - object | *see notes on optimized format* | map | `{` - - @note The mapping is **complete** in the sense that any JSON value type - can be converted to a UBJSON value. - - @note The following values can **not** be converted to a UBJSON value: - - strings with more than 9223372036854775807 bytes (theoretical) - - unsigned integer numbers above 9223372036854775807 - - @note The following markers are not used in the conversion: - - `Z`: no-op values are not created. - - `C`: single-byte strings are serialized with `S` markers. - - @note Any UBJSON output created @ref to_ubjson can be successfully parsed - by @ref from_ubjson. - - @note If NaN or Infinity are stored inside a JSON number, they are - serialized properly. This behavior differs from the @ref dump() - function which serializes NaN or Infinity to `null`. - - @note The optimized formats for containers are supported: Parameter - @a use_size adds size information to the beginning of a container and - removes the closing marker. Parameter @a use_type further checks - whether all elements of a container have the same type and adds the - type marker to the beginning of the container. The @a use_type - parameter must only be used together with @a use_size = true. Note - that @a use_size = true alone may result in larger representations - - the benefit of this parameter is that the receiving side is - immediately informed on the number of elements of the container. - - @param[in] j JSON value to serialize - @param[in] use_size whether to add size annotations to container types - @param[in] use_type whether to add type annotations to container types - (must be combined with @a use_size = true) - @return UBJSON serialization as byte vector - - @complexity Linear in the size of the JSON value @a j. - - @liveexample{The example shows the serialization of a JSON value to a byte - vector in UBJSON format.,to_ubjson} - - @sa http://ubjson.org - @sa @ref from_ubjson(detail::input_adapter, const bool strict) for the - analogous deserialization - @sa @ref to_cbor(const basic_json& for the related CBOR format - @sa @ref to_msgpack(const basic_json&) for the related MessagePack format - - @since version 3.1.0 - */ - static std::vector to_ubjson(const basic_json& j, - const bool use_size = false, - const bool use_type = false) - { - std::vector result; - to_ubjson(j, result, use_size, use_type); - return result; - } - - static void to_ubjson(const basic_json& j, detail::output_adapter o, - const bool use_size = false, const bool use_type = false) - { - binary_writer(o).write_ubjson(j, use_size, use_type); - } - - static void to_ubjson(const basic_json& j, detail::output_adapter o, - const bool use_size = false, const bool use_type = false) - { - binary_writer(o).write_ubjson(j, use_size, use_type); - } - - /*! - @brief create a JSON value from an input in CBOR format - - Deserializes a given input @a i to a JSON value using the CBOR (Concise - Binary Object Representation) serialization format. - - The library maps CBOR types to JSON value types as follows: - - CBOR type | JSON value type | first byte - ---------------------- | --------------- | ---------- - Integer | number_unsigned | 0x00..0x17 - Unsigned integer | number_unsigned | 0x18 - Unsigned integer | number_unsigned | 0x19 - Unsigned integer | number_unsigned | 0x1A - Unsigned integer | number_unsigned | 0x1B - Negative integer | number_integer | 0x20..0x37 - Negative integer | number_integer | 0x38 - Negative integer | number_integer | 0x39 - Negative integer | number_integer | 0x3A - Negative integer | number_integer | 0x3B - Negative integer | number_integer | 0x40..0x57 - UTF-8 string | string | 0x60..0x77 - UTF-8 string | string | 0x78 - UTF-8 string | string | 0x79 - UTF-8 string | string | 0x7A - UTF-8 string | string | 0x7B - UTF-8 string | string | 0x7F - array | array | 0x80..0x97 - array | array | 0x98 - array | array | 0x99 - array | array | 0x9A - array | array | 0x9B - array | array | 0x9F - map | object | 0xA0..0xB7 - map | object | 0xB8 - map | object | 0xB9 - map | object | 0xBA - map | object | 0xBB - map | object | 0xBF - False | `false` | 0xF4 - True | `true` | 0xF5 - Nill | `null` | 0xF6 - Half-Precision Float | number_float | 0xF9 - Single-Precision Float | number_float | 0xFA - Double-Precision Float | number_float | 0xFB - - @warning The mapping is **incomplete** in the sense that not all CBOR - types can be converted to a JSON value. The following CBOR types - are not supported and will yield parse errors (parse_error.112): - - byte strings (0x40..0x5F) - - date/time (0xC0..0xC1) - - bignum (0xC2..0xC3) - - decimal fraction (0xC4) - - bigfloat (0xC5) - - tagged items (0xC6..0xD4, 0xD8..0xDB) - - expected conversions (0xD5..0xD7) - - simple values (0xE0..0xF3, 0xF8) - - undefined (0xF7) - - @warning CBOR allows map keys of any type, whereas JSON only allows - strings as keys in object values. Therefore, CBOR maps with keys - other than UTF-8 strings are rejected (parse_error.113). - - @note Any CBOR output created @ref to_cbor can be successfully parsed by - @ref from_cbor. - - @param[in] i an input in CBOR format convertible to an input adapter - @param[in] strict whether to expect the input to be consumed until EOF - (true by default) - @return deserialized JSON value - - @throw parse_error.110 if the given input ends prematurely or the end of - file was not reached when @a strict was set to true - @throw parse_error.112 if unsupported features from CBOR were - used in the given input @a v or if the input is not valid CBOR - @throw parse_error.113 if a string was expected as map key, but not found - - @complexity Linear in the size of the input @a i. - - @liveexample{The example shows the deserialization of a byte vector in CBOR - format to a JSON value.,from_cbor} - - @sa http://cbor.io - @sa @ref to_cbor(const basic_json&) for the analogous serialization - @sa @ref from_msgpack(detail::input_adapter, const bool) for the - related MessagePack format - @sa @ref from_ubjson(detail::input_adapter, const bool) for the related - UBJSON format - - @since version 2.0.9; parameter @a start_index since 2.1.1; changed to - consume input adapters, removed start_index parameter, and added - @a strict parameter since 3.0.0 - */ - static basic_json from_cbor(detail::input_adapter i, - const bool strict = true) - { - return binary_reader(i).parse_cbor(strict); - } - - /*! - @copydoc from_cbor(detail::input_adapter, const bool) - */ - template::value, int> = 0> - static basic_json from_cbor(A1 && a1, A2 && a2, const bool strict = true) - { - return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_cbor(strict); - } - - /*! - @brief create a JSON value from an input in MessagePack format - - Deserializes a given input @a i to a JSON value using the MessagePack - serialization format. - - The library maps MessagePack types to JSON value types as follows: - - MessagePack type | JSON value type | first byte - ---------------- | --------------- | ---------- - positive fixint | number_unsigned | 0x00..0x7F - fixmap | object | 0x80..0x8F - fixarray | array | 0x90..0x9F - fixstr | string | 0xA0..0xBF - nil | `null` | 0xC0 - false | `false` | 0xC2 - true | `true` | 0xC3 - float 32 | number_float | 0xCA - float 64 | number_float | 0xCB - uint 8 | number_unsigned | 0xCC - uint 16 | number_unsigned | 0xCD - uint 32 | number_unsigned | 0xCE - uint 64 | number_unsigned | 0xCF - int 8 | number_integer | 0xD0 - int 16 | number_integer | 0xD1 - int 32 | number_integer | 0xD2 - int 64 | number_integer | 0xD3 - str 8 | string | 0xD9 - str 16 | string | 0xDA - str 32 | string | 0xDB - array 16 | array | 0xDC - array 32 | array | 0xDD - map 16 | object | 0xDE - map 32 | object | 0xDF - negative fixint | number_integer | 0xE0-0xFF - - @warning The mapping is **incomplete** in the sense that not all - MessagePack types can be converted to a JSON value. The following - MessagePack types are not supported and will yield parse errors: - - bin 8 - bin 32 (0xC4..0xC6) - - ext 8 - ext 32 (0xC7..0xC9) - - fixext 1 - fixext 16 (0xD4..0xD8) - - @note Any MessagePack output created @ref to_msgpack can be successfully - parsed by @ref from_msgpack. - - @param[in] i an input in MessagePack format convertible to an input - adapter - @param[in] strict whether to expect the input to be consumed until EOF - (true by default) - - @throw parse_error.110 if the given input ends prematurely or the end of - file was not reached when @a strict was set to true - @throw parse_error.112 if unsupported features from MessagePack were - used in the given input @a i or if the input is not valid MessagePack - @throw parse_error.113 if a string was expected as map key, but not found - - @complexity Linear in the size of the input @a i. - - @liveexample{The example shows the deserialization of a byte vector in - MessagePack format to a JSON value.,from_msgpack} - - @sa http://msgpack.org - @sa @ref to_msgpack(const basic_json&) for the analogous serialization - @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR - format - @sa @ref from_ubjson(detail::input_adapter, const bool) for the related - UBJSON format - - @since version 2.0.9; parameter @a start_index since 2.1.1; changed to - consume input adapters, removed start_index parameter, and added - @a strict parameter since 3.0.0 - */ - static basic_json from_msgpack(detail::input_adapter i, - const bool strict = true) - { - return binary_reader(i).parse_msgpack(strict); - } - - /*! - @copydoc from_msgpack(detail::input_adapter, const bool) - */ - template::value, int> = 0> - static basic_json from_msgpack(A1 && a1, A2 && a2, const bool strict = true) - { - return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_msgpack(strict); - } - - /*! - @brief create a JSON value from an input in UBJSON format - - Deserializes a given input @a i to a JSON value using the UBJSON (Universal - Binary JSON) serialization format. - - The library maps UBJSON types to JSON value types as follows: - - UBJSON type | JSON value type | marker - ----------- | --------------------------------------- | ------ - no-op | *no value, next value is read* | `N` - null | `null` | `Z` - false | `false` | `F` - true | `true` | `T` - float32 | number_float | `d` - float64 | number_float | `D` - uint8 | number_unsigned | `U` - int8 | number_integer | `i` - int16 | number_integer | `I` - int32 | number_integer | `l` - int64 | number_integer | `L` - string | string | `S` - char | string | `C` - array | array (optimized values are supported) | `[` - object | object (optimized values are supported) | `{` - - @note The mapping is **complete** in the sense that any UBJSON value can - be converted to a JSON value. - - @param[in] i an input in UBJSON format convertible to an input adapter - @param[in] strict whether to expect the input to be consumed until EOF - (true by default) - - @throw parse_error.110 if the given input ends prematurely or the end of - file was not reached when @a strict was set to true - @throw parse_error.112 if a parse error occurs - @throw parse_error.113 if a string could not be parsed successfully - - @complexity Linear in the size of the input @a i. - - @liveexample{The example shows the deserialization of a byte vector in - UBJSON format to a JSON value.,from_ubjson} - - @sa http://ubjson.org - @sa @ref to_ubjson(const basic_json&, const bool, const bool) for the - analogous serialization - @sa @ref from_cbor(detail::input_adapter, const bool) for the related CBOR - format - @sa @ref from_msgpack(detail::input_adapter, const bool) for the related - MessagePack format - - @since version 3.1.0 - */ - static basic_json from_ubjson(detail::input_adapter i, - const bool strict = true) - { - return binary_reader(i).parse_ubjson(strict); - } - - template::value, int> = 0> - static basic_json from_ubjson(A1 && a1, A2 && a2, const bool strict = true) - { - return binary_reader(detail::input_adapter(std::forward(a1), std::forward(a2))).parse_ubjson(strict); - } - - /// @} - - ////////////////////////// - // JSON Pointer support // - ////////////////////////// - - /// @name JSON Pointer functions - /// @{ - - /*! - @brief access specified element via JSON Pointer - - Uses a JSON pointer to retrieve a reference to the respective JSON value. - No bound checking is performed. Similar to @ref operator[](const typename - object_t::key_type&), `null` values are created in arrays and objects if - necessary. - - In particular: - - If the JSON pointer points to an object key that does not exist, it - is created an filled with a `null` value before a reference to it - is returned. - - If the JSON pointer points to an array index that does not exist, it - is created an filled with a `null` value before a reference to it - is returned. All indices between the current maximum and the given - index are also filled with `null`. - - The special value `-` is treated as a synonym for the index past the - end. - - @param[in] ptr a JSON pointer - - @return reference to the element pointed to by @a ptr - - @complexity Constant. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.404 if the JSON pointer can not be resolved - - @liveexample{The behavior is shown in the example.,operatorjson_pointer} - - @since version 2.0.0 - */ - reference operator[](const json_pointer& ptr) - { - return ptr.get_unchecked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Uses a JSON pointer to retrieve a reference to the respective JSON value. - No bound checking is performed. The function does not change the JSON - value; no `null` values are created. In particular, the the special value - `-` yields an exception. - - @param[in] ptr JSON pointer to the desired element - - @return const reference to the element pointed to by @a ptr - - @complexity Constant. - - @throw parse_error.106 if an array index begins with '0' - @throw parse_error.109 if an array index was not a number - @throw out_of_range.402 if the array index '-' is used - @throw out_of_range.404 if the JSON pointer can not be resolved - - @liveexample{The behavior is shown in the example.,operatorjson_pointer_const} - - @since version 2.0.0 - */ - const_reference operator[](const json_pointer& ptr) const - { - return ptr.get_unchecked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Returns a reference to the element at with specified JSON pointer @a ptr, - with bounds checking. - - @param[in] ptr JSON pointer to the desired element - - @return reference to the element pointed to by @a ptr - - @throw parse_error.106 if an array index in the passed JSON pointer @a ptr - begins with '0'. See example below. - - @throw parse_error.109 if an array index in the passed JSON pointer @a ptr - is not a number. See example below. - - @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr - is out of range. See example below. - - @throw out_of_range.402 if the array index '-' is used in the passed JSON - pointer @a ptr. As `at` provides checked access (and no elements are - implicitly inserted), the index '-' is always invalid. See example below. - - @throw out_of_range.403 if the JSON pointer describes a key of an object - which cannot be found. See example below. - - @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. - See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 2.0.0 - - @liveexample{The behavior is shown in the example.,at_json_pointer} - */ - reference at(const json_pointer& ptr) - { - return ptr.get_checked(this); - } - - /*! - @brief access specified element via JSON Pointer - - Returns a const reference to the element at with specified JSON pointer @a - ptr, with bounds checking. - - @param[in] ptr JSON pointer to the desired element - - @return reference to the element pointed to by @a ptr - - @throw parse_error.106 if an array index in the passed JSON pointer @a ptr - begins with '0'. See example below. - - @throw parse_error.109 if an array index in the passed JSON pointer @a ptr - is not a number. See example below. - - @throw out_of_range.401 if an array index in the passed JSON pointer @a ptr - is out of range. See example below. - - @throw out_of_range.402 if the array index '-' is used in the passed JSON - pointer @a ptr. As `at` provides checked access (and no elements are - implicitly inserted), the index '-' is always invalid. See example below. - - @throw out_of_range.403 if the JSON pointer describes a key of an object - which cannot be found. See example below. - - @throw out_of_range.404 if the JSON pointer @a ptr can not be resolved. - See example below. - - @exceptionsafety Strong guarantee: if an exception is thrown, there are no - changes in the JSON value. - - @complexity Constant. - - @since version 2.0.0 - - @liveexample{The behavior is shown in the example.,at_json_pointer_const} - */ - const_reference at(const json_pointer& ptr) const - { - return ptr.get_checked(this); - } - - /*! - @brief return flattened JSON value - - The function creates a JSON object whose keys are JSON pointers (see [RFC - 6901](https://tools.ietf.org/html/rfc6901)) and whose values are all - primitive. The original JSON value can be restored using the @ref - unflatten() function. - - @return an object that maps JSON pointers to primitive values - - @note Empty objects and arrays are flattened to `null` and will not be - reconstructed correctly by the @ref unflatten() function. - - @complexity Linear in the size the JSON value. - - @liveexample{The following code shows how a JSON object is flattened to an - object whose keys consist of JSON pointers.,flatten} - - @sa @ref unflatten() for the reverse function - - @since version 2.0.0 - */ - basic_json flatten() const - { - basic_json result(value_t::object); - json_pointer::flatten("", *this, result); - return result; - } - - /*! - @brief unflatten a previously flattened JSON value - - The function restores the arbitrary nesting of a JSON value that has been - flattened before using the @ref flatten() function. The JSON value must - meet certain constraints: - 1. The value must be an object. - 2. The keys must be JSON pointers (see - [RFC 6901](https://tools.ietf.org/html/rfc6901)) - 3. The mapped values must be primitive JSON types. - - @return the original JSON from a flattened version - - @note Empty objects and arrays are flattened by @ref flatten() to `null` - values and can not unflattened to their original type. Apart from - this example, for a JSON value `j`, the following is always true: - `j == j.flatten().unflatten()`. - - @complexity Linear in the size the JSON value. - - @throw type_error.314 if value is not an object - @throw type_error.315 if object values are not primitive - - @liveexample{The following code shows how a flattened JSON object is - unflattened into the original nested JSON object.,unflatten} - - @sa @ref flatten() for the reverse function - - @since version 2.0.0 - */ - basic_json unflatten() const - { - return json_pointer::unflatten(*this); - } - - /// @} - - ////////////////////////// - // JSON Patch functions // - ////////////////////////// - - /// @name JSON Patch functions - /// @{ - - /*! - @brief applies a JSON patch - - [JSON Patch](http://jsonpatch.com) defines a JSON document structure for - expressing a sequence of operations to apply to a JSON) document. With - this function, a JSON Patch is applied to the current JSON value by - executing all operations from the patch. - - @param[in] json_patch JSON patch document - @return patched document - - @note The application of a patch is atomic: Either all operations succeed - and the patched document is returned or an exception is thrown. In - any case, the original value is not changed: the patch is applied - to a copy of the value. - - @throw parse_error.104 if the JSON patch does not consist of an array of - objects - - @throw parse_error.105 if the JSON patch is malformed (e.g., mandatory - attributes are missing); example: `"operation add must have member path"` - - @throw out_of_range.401 if an array index is out of range. - - @throw out_of_range.403 if a JSON pointer inside the patch could not be - resolved successfully in the current JSON value; example: `"key baz not - found"` - - @throw out_of_range.405 if JSON pointer has no parent ("add", "remove", - "move") - - @throw other_error.501 if "test" operation was unsuccessful - - @complexity Linear in the size of the JSON value and the length of the - JSON patch. As usually only a fraction of the JSON value is affected by - the patch, the complexity can usually be neglected. - - @liveexample{The following code shows how a JSON patch is applied to a - value.,patch} - - @sa @ref diff -- create a JSON patch by comparing two JSON values - - @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - @sa [RFC 6901 (JSON Pointer)](https://tools.ietf.org/html/rfc6901) - - @since version 2.0.0 - */ - basic_json patch(const basic_json& json_patch) const - { - // make a working copy to apply the patch to - basic_json result = *this; - - // the valid JSON Patch operations - enum class patch_operations {add, remove, replace, move, copy, test, invalid}; - - const auto get_op = [](const std::string & op) - { - if (op == "add") - { - return patch_operations::add; - } - if (op == "remove") - { - return patch_operations::remove; - } - if (op == "replace") - { - return patch_operations::replace; - } - if (op == "move") - { - return patch_operations::move; - } - if (op == "copy") - { - return patch_operations::copy; - } - if (op == "test") - { - return patch_operations::test; - } - - return patch_operations::invalid; - }; - - // wrapper for "add" operation; add value at ptr - const auto operation_add = [&result](json_pointer & ptr, basic_json val) - { - // adding to the root of the target document means replacing it - if (ptr.is_root()) - { - result = val; - } - else - { - // make sure the top element of the pointer exists - json_pointer top_pointer = ptr.top(); - if (top_pointer != ptr) - { - result.at(top_pointer); - } - - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.pop_back(); - basic_json& parent = result[ptr]; - - switch (parent.m_type) - { - case value_t::null: - case value_t::object: - { - // use operator[] to add value - parent[last_path] = val; - break; - } - - case value_t::array: - { - if (last_path == "-") - { - // special case: append to back - parent.push_back(val); - } - else - { - const auto idx = json_pointer::array_index(last_path); - if (JSON_UNLIKELY(static_cast(idx) > parent.size())) - { - // avoid undefined behavior - JSON_THROW(out_of_range::create(401, "array index " + std::to_string(idx) + " is out of range")); - } - else - { - // default case: insert add offset - parent.insert(parent.begin() + static_cast(idx), val); - } - } - break; - } - - default: - { - // if there exists a parent it cannot be primitive - assert(false); // LCOV_EXCL_LINE - } - } - } - }; - - // wrapper for "remove" operation; remove value at ptr - const auto operation_remove = [&result](json_pointer & ptr) - { - // get reference to parent of JSON pointer ptr - const auto last_path = ptr.pop_back(); - basic_json& parent = result.at(ptr); - - // remove child - if (parent.is_object()) - { - // perform range check - auto it = parent.find(last_path); - if (JSON_LIKELY(it != parent.end())) - { - parent.erase(it); - } - else - { - JSON_THROW(out_of_range::create(403, "key '" + last_path + "' not found")); - } - } - else if (parent.is_array()) - { - // note erase performs range check - parent.erase(static_cast(json_pointer::array_index(last_path))); - } - }; - - // type check: top level value must be an array - if (JSON_UNLIKELY(not json_patch.is_array())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); - } - - // iterate and apply the operations - for (const auto& val : json_patch) - { - // wrapper to get a value for an operation - const auto get_value = [&val](const std::string & op, - const std::string & member, - bool string_type) -> basic_json & - { - // find value - auto it = val.m_value.object->find(member); - - // context-sensitive error message - const auto error_msg = (op == "op") ? "operation" : "operation '" + op + "'"; - - // check if desired value is present - if (JSON_UNLIKELY(it == val.m_value.object->end())) - { - JSON_THROW(parse_error::create(105, 0, error_msg + " must have member '" + member + "'")); - } - - // check if result is of type string - if (JSON_UNLIKELY(string_type and not it->second.is_string())) - { - JSON_THROW(parse_error::create(105, 0, error_msg + " must have string member '" + member + "'")); - } - - // no error: return value - return it->second; - }; - - // type check: every element of the array must be an object - if (JSON_UNLIKELY(not val.is_object())) - { - JSON_THROW(parse_error::create(104, 0, "JSON patch must be an array of objects")); - } - - // collect mandatory members - const std::string op = get_value("op", "op", true); - const std::string path = get_value(op, "path", true); - json_pointer ptr(path); - - switch (get_op(op)) - { - case patch_operations::add: - { - operation_add(ptr, get_value("add", "value", false)); - break; - } - - case patch_operations::remove: - { - operation_remove(ptr); - break; - } - - case patch_operations::replace: - { - // the "path" location must exist - use at() - result.at(ptr) = get_value("replace", "value", false); - break; - } - - case patch_operations::move: - { - const std::string from_path = get_value("move", "from", true); - json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The move operation is functionally identical to a - // "remove" operation on the "from" location, followed - // immediately by an "add" operation at the target - // location with the value that was just removed. - operation_remove(from_ptr); - operation_add(ptr, v); - break; - } - - case patch_operations::copy: - { - const std::string from_path = get_value("copy", "from", true); - const json_pointer from_ptr(from_path); - - // the "from" location must exist - use at() - basic_json v = result.at(from_ptr); - - // The copy is functionally identical to an "add" - // operation at the target location using the value - // specified in the "from" member. - operation_add(ptr, v); - break; - } - - case patch_operations::test: - { - bool success = false; - JSON_TRY - { - // check if "value" matches the one at "path" - // the "path" location must exist - use at() - success = (result.at(ptr) == get_value("test", "value", false)); - } - JSON_CATCH (out_of_range&) - { - // ignore out of range errors: success remains false - } - - // throw an exception if test fails - if (JSON_UNLIKELY(not success)) - { - JSON_THROW(other_error::create(501, "unsuccessful: " + val.dump())); - } - - break; - } - - case patch_operations::invalid: - { - // op must be "add", "remove", "replace", "move", "copy", or - // "test" - JSON_THROW(parse_error::create(105, 0, "operation value '" + op + "' is invalid")); - } - } - } - - return result; - } - - /*! - @brief creates a diff as a JSON patch - - Creates a [JSON Patch](http://jsonpatch.com) so that value @a source can - be changed into the value @a target by calling @ref patch function. - - @invariant For two JSON values @a source and @a target, the following code - yields always `true`: - @code {.cpp} - source.patch(diff(source, target)) == target; - @endcode - - @note Currently, only `remove`, `add`, and `replace` operations are - generated. - - @param[in] source JSON value to compare from - @param[in] target JSON value to compare against - @param[in] path helper value to create JSON pointers - - @return a JSON patch to convert the @a source to @a target - - @complexity Linear in the lengths of @a source and @a target. - - @liveexample{The following code shows how a JSON patch is created as a - diff for two JSON values.,diff} - - @sa @ref patch -- apply a JSON patch - @sa @ref merge_patch -- apply a JSON Merge Patch - - @sa [RFC 6902 (JSON Patch)](https://tools.ietf.org/html/rfc6902) - - @since version 2.0.0 - */ - static basic_json diff(const basic_json& source, const basic_json& target, - const std::string& path = "") - { - // the patch - basic_json result(value_t::array); - - // if the values are the same, return empty patch - if (source == target) - { - return result; - } - - if (source.type() != target.type()) - { - // different types: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - } - else - { - switch (source.type()) - { - case value_t::array: - { - // first pass: traverse common elements - std::size_t i = 0; - while (i < source.size() and i < target.size()) - { - // recursive call to compare array values at index i - auto temp_diff = diff(source[i], target[i], path + "/" + std::to_string(i)); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - ++i; - } - - // i now reached the end of at least one array - // in a second pass, traverse the remaining elements - - // remove my remaining elements - const auto end_index = static_cast(result.size()); - while (i < source.size()) - { - // add operations in reverse order to avoid invalid - // indices - result.insert(result.begin() + end_index, object( - { - {"op", "remove"}, - {"path", path + "/" + std::to_string(i)} - })); - ++i; - } - - // add other remaining elements - while (i < target.size()) - { - result.push_back( - { - {"op", "add"}, - {"path", path + "/" + std::to_string(i)}, - {"value", target[i]} - }); - ++i; - } - - break; - } - - case value_t::object: - { - // first pass: traverse this object's elements - for (auto it = source.cbegin(); it != source.cend(); ++it) - { - // escape the key name to be used in a JSON patch - const auto key = json_pointer::escape(it.key()); - - if (target.find(it.key()) != target.end()) - { - // recursive call to compare object values at key it - auto temp_diff = diff(it.value(), target[it.key()], path + "/" + key); - result.insert(result.end(), temp_diff.begin(), temp_diff.end()); - } - else - { - // found a key that is not in o -> remove it - result.push_back(object( - { - {"op", "remove"}, {"path", path + "/" + key} - })); - } - } - - // second pass: traverse other object's elements - for (auto it = target.cbegin(); it != target.cend(); ++it) - { - if (source.find(it.key()) == source.end()) - { - // found a key that is not in this -> add it - const auto key = json_pointer::escape(it.key()); - result.push_back( - { - {"op", "add"}, {"path", path + "/" + key}, - {"value", it.value()} - }); - } - } - - break; - } - - default: - { - // both primitive type: replace value - result.push_back( - { - {"op", "replace"}, {"path", path}, {"value", target} - }); - break; - } - } - } - - return result; - } - - /// @} - - //////////////////////////////// - // JSON Merge Patch functions // - //////////////////////////////// - - /// @name JSON Merge Patch functions - /// @{ - - /*! - @brief applies a JSON Merge Patch - - The merge patch format is primarily intended for use with the HTTP PATCH - method as a means of describing a set of modifications to a target - resource's content. This function applies a merge patch to the current - JSON value. - - The function implements the following algorithm from Section 2 of - [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396): - - ``` - define MergePatch(Target, Patch): - if Patch is an Object: - if Target is not an Object: - Target = {} // Ignore the contents and set it to an empty Object - for each Name/Value pair in Patch: - if Value is null: - if Name exists in Target: - remove the Name/Value pair from Target - else: - Target[Name] = MergePatch(Target[Name], Value) - return Target - else: - return Patch - ``` - - Thereby, `Target` is the current object; that is, the patch is applied to - the current value. - - @param[in] patch the patch to apply - - @complexity Linear in the lengths of @a patch. - - @liveexample{The following code shows how a JSON Merge Patch is applied to - a JSON document.,merge_patch} - - @sa @ref patch -- apply a JSON patch - @sa [RFC 7396 (JSON Merge Patch)](https://tools.ietf.org/html/rfc7396) - - @since version 3.0.0 - */ - void merge_patch(const basic_json& patch) - { - if (patch.is_object()) - { - if (not is_object()) - { - *this = object(); - } - for (auto it = patch.begin(); it != patch.end(); ++it) - { - if (it.value().is_null()) - { - erase(it.key()); - } - else - { - operator[](it.key()).merge_patch(it.value()); - } - } - } - else - { - *this = patch; - } - } - - /// @} -}; -} // namespace nlohmann - -/////////////////////// -// nonmember support // -/////////////////////// - -// specialization of std::swap, and std::hash -namespace std -{ -/*! -@brief exchanges the values of two JSON objects - -@since version 1.0.0 -*/ -template<> -inline void swap(nlohmann::json& j1, - nlohmann::json& j2) noexcept( - is_nothrow_move_constructible::value and - is_nothrow_move_assignable::value - ) -{ - j1.swap(j2); -} - -/// hash value for JSON objects -template<> -struct hash -{ - /*! - @brief return a hash value for a JSON object - - @since version 1.0.0 - */ - std::size_t operator()(const nlohmann::json& j) const - { - // a naive hashing via the string representation - const auto& h = hash(); - return h(j.dump()); - } -}; - -/// specialization for std::less -/// @note: do not remove the space after '<', -/// see https://github.com/nlohmann/json/pull/679 -template<> -struct less< ::nlohmann::detail::value_t> -{ - /*! - @brief compare two value_t enum values - @since version 3.0.0 - */ - bool operator()(nlohmann::detail::value_t lhs, - nlohmann::detail::value_t rhs) const noexcept - { - return nlohmann::detail::operator<(lhs, rhs); - } -}; - -} // namespace std - -/*! -@brief user-defined string literal for JSON values - -This operator implements a user-defined string literal for JSON objects. It -can be used by adding `"_json"` to a string literal and returns a JSON object -if no parse error occurred. - -@param[in] s a string representation of a JSON object -@param[in] n the length of string @a s -@return a JSON object - -@since version 1.0.0 -*/ -inline nlohmann::json operator "" _json(const char* s, std::size_t n) -{ - return nlohmann::json::parse(s, s + n); -} - -/*! -@brief user-defined string literal for JSON pointer - -This operator implements a user-defined string literal for JSON Pointers. It -can be used by adding `"_json_pointer"` to a string literal and returns a JSON pointer -object if no parse error occurred. - -@param[in] s a string representation of a JSON Pointer -@param[in] n the length of string @a s -@return a JSON pointer object - -@since version 2.0.0 -*/ -inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t n) -{ - return nlohmann::json::json_pointer(std::string(s, n)); -} - -// #include - - -// restore GCC/clang diagnostic settings -#if defined(__clang__) || defined(__GNUC__) || defined(__GNUG__) - #pragma GCC diagnostic pop -#endif -#if defined(__clang__) - #pragma GCC diagnostic pop -#endif - -// clean up -#undef JSON_CATCH -#undef JSON_THROW -#undef JSON_TRY -#undef JSON_LIKELY -#undef JSON_UNLIKELY -#undef JSON_DEPRECATED -#undef JSON_HAS_CPP_14 -#undef JSON_HAS_CPP_17 -#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION -#undef NLOHMANN_BASIC_JSON_TPL -#undef NLOHMANN_JSON_HAS_HELPER - - -#endif diff --git a/version/version.cpp b/version/version.cpp index aadbbeb4..aba36ad1 100644 --- a/version/version.cpp +++ b/version/version.cpp @@ -2,16 +2,17 @@ #include #include -#include "Core/Private/PDBReader/PDBReader.h" -#include "Core/Private/Offsets.h" -#include "Core/Private/HooksImpl.h" -#include "Core/Private/PluginManager/PluginManager.h" +#include "Core/Private/Ark/ArkBaseApi.h" +#include "Core/Private/Atlas/AtlasBaseApi.h" #include "Core/Public/Logger/Logger.h" +#include "Core/Public/Tools.h" #pragma comment(lib, "libMinHook.x64.lib") +#pragma comment(lib, "Crypt32.lib") +#pragma comment(lib, "Iphlpapi.lib") HINSTANCE m_hinst_dll = nullptr; -extern "C" UINT_PTR mProcs[17]{0}; +extern "C" UINT_PTR mProcs[17]{ 0 }; LPCSTR import_names[] = { "GetFileVersionInfoA", "GetFileVersionInfoByHandle", "GetFileVersionInfoExA", "GetFileVersionInfoExW", @@ -25,23 +26,46 @@ void OpenConsole() AllocConsole(); FILE* p_cout; freopen_s(&p_cout, "conout$", "w", stdout); + SetConsoleOutputCP(CP_UTF8); } -void PruneOldLogs() +std::time_t GetFileWriteTime(const std::filesystem::path& filename) { - using namespace ArkApi; + struct _stat64 fileInfo {}; + if (_wstati64(filename.wstring().c_str(), &fileInfo) != 0) + { + throw std::runtime_error("Failed to get last write time."); + } + return fileInfo.st_mtime; +} - namespace fs = std::experimental::filesystem; +void PruneOldLogs() +{ + namespace fs = std::filesystem; const auto now = std::chrono::system_clock::now(); - const std::string current_dir = Tools::GetCurrentDir(); + const std::string current_dir = API::Tools::GetCurrentDir(); for (const auto& file : fs::directory_iterator(current_dir + "/logs")) { - const auto ftime = last_write_time(file); + const std::time_t ftime = GetFileWriteTime(file); + + if (file.path().filename() == "ArkApi.log") + { + tm tm{}; + localtime_s(&tm, &ftime); + + char time_str[64]; + strftime(time_str, 64, "%Y-%m-%d-%H-%M", &tm); + + const std::string new_name = "ArkApi_" + std::string(time_str) + ".log"; + std::rename(file.path().generic_string().data(), (current_dir + "/logs/" + new_name).data()); + } - auto diff = std::chrono::duration_cast(now - ftime); + const auto time_point = std::chrono::system_clock::from_time_t(ftime); + + auto diff = std::chrono::duration_cast(now - time_point); if (diff.count() >= 24 * 14) // 14 days { fs::remove(file); @@ -49,80 +73,82 @@ void PruneOldLogs() } } -void Init() +std::string DetectGame() { - using namespace ArkApi; - - namespace fs = std::experimental::filesystem; + namespace fs = std::filesystem; - OpenConsole(); - - const std::string current_dir = Tools::GetCurrentDir(); + const std::string current_dir = API::Tools::GetCurrentDir(); - if (!fs::exists(current_dir + "/logs")) - fs::create_directory(current_dir + "/logs"); - - PruneOldLogs(); + for (const auto& directory_entry : fs::directory_iterator(current_dir)) + { + const auto& path = directory_entry.path(); + if (is_directory(path)) + { + const auto name = path.filename().stem().generic_string(); + if (name == "ArkApi") + { + return "Ark"; + } + if (name == "AtlasApi") + { + return "Atlas"; + } + } + } - Log::Get().Init("API"); + return ""; +} - Log::GetLog()->info("-----------------------------------------------"); - Log::GetLog()->info("ARK: Server Api V{}", API_VERSION); - Log::GetLog()->info("Loading...\n"); +void Init() +{ + namespace fs = std::filesystem; - PdbReader pdb_reader; + OpenConsole(); - std::unordered_map offsets_dump; - std::unordered_map bitfields_dump; + const std::string current_dir = API::Tools::GetCurrentDir(); - nlohmann::json plugin_pdb_config; - try - { - plugin_pdb_config = PluginManager::GetAllPDBConfigs(); - } - catch (const std::exception& error) + if (!fs::exists(current_dir + "/logs")) { - Log::GetLog()->critical("Failed to read plugin pdb configs - {}", error.what()); - return; + fs::create_directory(current_dir + "/logs"); } - try - { - const std::wstring dir = Tools::ConvertToWideStr(current_dir); - pdb_reader.Read(dir + L"/ShooterGameServer.pdb", plugin_pdb_config, &offsets_dump, &bitfields_dump); - } - catch (const std::exception& error) - { - Log::GetLog()->critical("Failed to read pdb - {}", error.what()); - return; - } + PruneOldLogs(); - Offsets::Get().Init(move(offsets_dump), move(bitfields_dump)); + Log::Get().Init("API"); - InitHooks(); + const std::string game_name = DetectGame(); + if (game_name == "Ark") + API::game_api = std::make_unique(); + else if (game_name == "Atlas") + API::game_api = std::make_unique(); + else + Log::GetLog()->critical("Failed to detect game"); - Log::GetLog()->info("API was successfully loaded"); - Log::GetLog()->info("-----------------------------------------------\n"); + API::game_api->Init(); } -BOOL WINAPI DllMain(HINSTANCE hinst_dll, DWORD fdw_reason, LPVOID) +BOOL WINAPI DllMain(HINSTANCE hinst_dll, DWORD fdw_reason, LPVOID /*unused*/) { if (fdw_reason == DLL_PROCESS_ATTACH) { DisableThreadLibraryCalls(hinst_dll); - CHAR sysDir[MAX_PATH]; - GetSystemDirectoryA(sysDir, MAX_PATH); + CHAR sys_dir[MAX_PATH]; + GetSystemDirectoryA(sys_dir, MAX_PATH); char buffer[MAX_PATH]; - sprintf_s(buffer, "%s\\version.dll", sysDir); + sprintf_s(buffer, "%s\\version.dll", sys_dir); m_hinst_dll = LoadLibraryA(buffer); - if (!m_hinst_dll) + if (m_hinst_dll == nullptr) + { return FALSE; + } for (int i = 0; i < 17; i++) + { mProcs[i] = reinterpret_cast(GetProcAddress(m_hinst_dll, import_names[i])); + } Init(); } @@ -150,4 +176,4 @@ extern "C" void VerInstallFileW_wrapper(); extern "C" void VerLanguageNameA_wrapper(); extern "C" void VerLanguageNameW_wrapper(); extern "C" void VerQueryValueA_wrapper(); -extern "C" void VerQueryValueW_wrapper(); +extern "C" void VerQueryValueW_wrapper(); \ No newline at end of file diff --git a/version/version.vcxproj b/version/version.vcxproj index 943b46af..d75142ae 100644 --- a/version/version.vcxproj +++ b/version/version.vcxproj @@ -1,8 +1,12 @@  - - Release + + Ark + x64 + + + Atlas x64 @@ -10,22 +14,38 @@ - + + + + + + + - + + + + + + + + + + + @@ -44,6 +64,7 @@ + @@ -100,28 +121,39 @@ + + + - - + + + + + $(IntDir)%(RelativeDir) + $(IntDir)%(RelativeDir) + + + - + + @@ -131,40 +163,94 @@ {3941E9F8-2E29-4D69-8717-F74562ED5301} Win32Proj version - 10.0.16299.0 + 10.0 - + + DynamicLibrary + false + true + Unicode + v142 + false + + DynamicLibrary false true Unicode - v141 + v142 + false - + + + + - + + false + false + $(VSInstallDir)\DIA SDK\include;$(IncludePath) + ..\lib;$(VSInstallDir)\DIA SDK\lib;$(LibraryPath) + + false false $(VSInstallDir)\DIA SDK\include;$(IncludePath) ..\lib;$(VSInstallDir)\DIA SDK\lib;$(LibraryPath) + true - + + + Level3 + NotUsing + MaxSpeed + true + true + _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING;WIN32;NDEBUG;_WINDOWS;_USRDLL;VERSION_EXPORTS;ARK_EXPORTS;ATLAS_GAME;POCO_STATIC;%(PreprocessorDefinitions) + stdcpp17 + ..\version\Core\Public;..\include\Poco;..\include\mysql++11;..\include\sqllite;..\include\openssl + $(IntDir)%(RelativeDir) + Default + Speed + Async + + + Windows + true + true + true + version.def + $(OutDir)AtlasApi.lib + /NODEFAULTLIB:libcmt.lib /ignore:4099 + %(AdditionalOptions) + Crypt32.lib;Iphlpapi.lib;ws2_32.lib;winmm.lib;wldap32.lib;%(AdditionalDependencies) + + + copy /Y "$(TargetDir)AtlasApi.lib" "..\out_lib" + Move lib + + + Level3 NotUsing MaxSpeed true true - WIN32;NDEBUG;_WINDOWS;_USRDLL;VERSION_EXPORTS;ARK_EXPORTS;%(PreprocessorDefinitions) + _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING;WIN32;NDEBUG;_WINDOWS;_USRDLL;VERSION_EXPORTS;ARK_EXPORTS;ARK_GAME;POCO_STATIC;%(PreprocessorDefinitions) stdcpp17 - ..\version\Core\Public; + ..\version\Core\Public;..\include\Poco;..\include\openssl + $(IntDir)%(RelativeDir) + Speed + Sync + true Windows @@ -173,8 +259,14 @@ true version.def $(OutDir)ArkApi.lib - /NODEFAULTLIB:libcmt.lib %(AdditionalOptions) + /NODEFAULTLIB:libcmt.lib /ignore:4099 + %(AdditionalOptions) + Crypt32.lib;Iphlpapi.lib;ws2_32.lib;winmm.lib;wldap32.lib;%(AdditionalDependencies) + + Move lib + copy /Y "$(TargetDir)ArkApi.lib" "..\out_lib" + diff --git a/version/version.vcxproj.filters b/version/version.vcxproj.filters index f5358a90..76448993 100644 --- a/version/version.vcxproj.filters +++ b/version/version.vcxproj.filters @@ -65,22 +65,33 @@ {42c6cb7c-645b-4e1d-9da8-7da22b6efea5} + + {c7d53d29-62a7-4d13-b1a2-8c76c6565ce0} + + + {a0a3062f-3730-4f50-812a-72409ba31928} + + + {d3166ee6-2d6e-4a77-8ac2-d9fbaca1fd55} + + + {b3e6d8bd-62de-4dc1-958d-03077e99c9cb} + + + {bab0c67e-ce63-4e52-9209-74abbfd6ffaf} + + + {15bcd933-8ce4-40d3-81a0-8add08818c9b} + - Core\Private\PDBReader - - Core\Public\API - - - Core\Public\API - Core\Public\API\UE @@ -108,9 +119,6 @@ Core\Public\API\ARK - - Core\Private - Core\Public @@ -141,24 +149,12 @@ Core\Private\PluginManager - - Core\Public - - - Core\Private - Core\Public - - Core\Public - Core\Private - - Core\Private - Core\Private @@ -360,6 +356,87 @@ Core\Public + + Core\Private + + + Core\Private\Ark + + + Core\Private\Ark + + + Core\Private\Ark + + + Core\Public\API + + + Core\Private\Atlas + + + Core\Private\Atlas + + + Core\Private\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public\API\Atlas + + + Core\Public + + + Core\Public + + + Core\Public\API\Atlas + + + Core\Public\API\ARK + + + Core\Public\API + + + Core\Public\Ark + + + Core\Public\Atlas + + + Core\Public + + + Core\Private + + + Core\Public\API\UE + + + Core\Private\Ark + @@ -369,15 +446,6 @@ Core\Private - - Core\Private - - - Core\Private - - - Core\Private - Core\Private\PluginManager @@ -399,6 +467,33 @@ Core\Private\Tools + + Core\Private\Ark + + + Core\Private\Ark + + + Core\Private\Ark + + + Core\Private\Atlas + + + Core\Private\Atlas + + + Core\Private\Atlas + + + Core\Private\Tools + + + Core\Private + + + Core\Private\UE +