mirror of
https://github.com/Milxnor/Project-Reboot-3.0.git
synced 2026-01-13 19:02:21 +01:00
2.4.2 & zone times proper
This commit is contained in:
@@ -4,16 +4,13 @@
|
||||
#include "NameTypes.h"
|
||||
|
||||
#include "reboot.h"
|
||||
#include "DataTable.h"
|
||||
|
||||
class UCurveTable : public UObject
|
||||
enum class ECurveTableMode : unsigned char
|
||||
{
|
||||
public:
|
||||
};
|
||||
|
||||
struct FCurveTableRowHandle
|
||||
{
|
||||
UCurveTable* CurveTable;
|
||||
FName RowName;
|
||||
Empty,
|
||||
SimpleCurves,
|
||||
RichCurves
|
||||
};
|
||||
|
||||
struct FSimpleCurveKey
|
||||
@@ -24,7 +21,7 @@ struct FSimpleCurveKey
|
||||
|
||||
struct FIndexedCurve
|
||||
{
|
||||
|
||||
|
||||
};
|
||||
|
||||
struct FRealCurve : public FIndexedCurve
|
||||
@@ -38,4 +35,60 @@ struct FSimpleCurve : public FRealCurve
|
||||
static auto KeysOffset = FindOffsetStruct("/Script/Engine.SimpleCurve", "Keys");
|
||||
return *(TArray<FSimpleCurveKey>*)(__int64(this) + KeysOffset);
|
||||
}
|
||||
};
|
||||
|
||||
class UCurveTable : public UObject
|
||||
{
|
||||
public:
|
||||
static int GetCurveTableSize()
|
||||
{
|
||||
static auto CurveTableClass = FindObject<UClass>("/Script/Engine.CurveTable");
|
||||
return CurveTableClass->GetPropertiesSize();
|
||||
}
|
||||
|
||||
ECurveTableMode GetCurveTableMode() const
|
||||
{
|
||||
static auto CurveTableModeOffset = GetCurveTableSize() - 8;
|
||||
return *(ECurveTableMode*)(__int64(this) + CurveTableModeOffset);
|
||||
}
|
||||
|
||||
void* GetKey(const FName& RowName, int Index)
|
||||
{
|
||||
auto CurveTableMode = GetCurveTableMode();
|
||||
|
||||
LOG_INFO(LogDev, "RowName {} CurveTableMode {} Size {}", RowName.ComparisonIndex.Value ? RowName.ToString() : "InvalidComparision", (int)CurveTableMode, GetCurveTableSize());
|
||||
|
||||
if (CurveTableMode == ECurveTableMode::SimpleCurves)
|
||||
{
|
||||
auto& RowMap = ((UDataTable*)this)->GetRowMap<FSimpleCurve>(); // its the same offset so
|
||||
auto Curve = RowMap.Find(RowName);
|
||||
auto& Keys = Curve->GetKeys();
|
||||
return Keys.Num() > Index ? &Curve->GetKeys().at(Index) : nullptr;
|
||||
}
|
||||
else if (CurveTableMode == ECurveTableMode::RichCurves)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
float GetValueOfKey(void* Key)
|
||||
{
|
||||
if (!Key)
|
||||
return 0.f;
|
||||
|
||||
auto CurveTableMode = GetCurveTableMode();
|
||||
|
||||
if (CurveTableMode == ECurveTableMode::SimpleCurves) return ((FSimpleCurveKey*)Key)->Value;
|
||||
else if (CurveTableMode == ECurveTableMode::RichCurves) return 0.f;
|
||||
|
||||
return 0.f;
|
||||
}
|
||||
};
|
||||
|
||||
struct FCurveTableRowHandle
|
||||
{
|
||||
UCurveTable* CurveTable;
|
||||
FName RowName;
|
||||
};
|
||||
Reference in New Issue
Block a user