Skip to content

Commit ce64020

Browse files
committed
4.25 update
- FProperty change was quite substantial for the plugin - not fully thoroughly tested, CopyPropertyToPinnedBuffer and cleanup may not function as expected if assumptions on e.g. add to root are not held
1 parent ae9af04 commit ce64020

File tree

7 files changed

+78
-81
lines changed

7 files changed

+78
-81
lines changed

GlobalEventSystem.uplugin

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"FileVersion": 3,
33
"Version": 1,
4-
"VersionName": "0.4.0",
4+
"VersionName": "0.5.0",
55
"FriendlyName": "GlobalEventSystem",
66
"Description": "Loosely coupled internal event system plugin for the unreal engine.",
77
"Category": "Other",

Source/GlobalEventSystem/Private/GESDataTypes.cpp

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
void FGESPinnedData::CopyPropertyToPinnedBuffer()
44
{
55
//Copy this property data to temp
6-
Property->AddToRoot();
6+
//Property->AddToRoot();
77
int32 Num = Property->GetSize();
88
PropertyData.SetNumUninitialized(Num);
99
FMemory::Memcpy(PropertyData.GetData(), PropertyPtr, Num);
@@ -14,10 +14,6 @@ void FGESPinnedData::CopyPropertyToPinnedBuffer()
1414

1515
void FGESPinnedData::CleanupPinnedData()
1616
{
17-
if (Property && Property->IsValidLowLevelFast())
18-
{
19-
Property->RemoveFromRoot();
20-
}
2117
PropertyData.Empty();
2218
Property = nullptr;
2319
PropertyPtr = nullptr;

Source/GlobalEventSystem/Private/GESHandler.cpp

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ TSharedPtr<FGESHandler> FGESHandler::PrivateDefaultHandler = MakeShareable(new F
55

66
bool FGESHandler::FirstParamIsCppType(UFunction* Function, const FString& TypeString)
77
{
8-
TArray<UProperty*> Properties;
8+
TArray<FProperty*> Properties;
99
FunctionParameters(Function, Properties);
1010
if (Properties.Num() == 0)
1111
{
@@ -16,9 +16,9 @@ bool FGESHandler::FirstParamIsCppType(UFunction* Function, const FString& TypeSt
1616
return (FirstParam == TypeString);
1717
}
1818

19-
bool FGESHandler::FirstParamIsSubclassOf(UFunction* Function, UClass* ClassType)
19+
bool FGESHandler::FirstParamIsSubclassOf(UFunction* Function, FFieldClass* ClassType)
2020
{
21-
TArray<UProperty*> Properties;
21+
TArray<FProperty*> Properties;
2222
FunctionParameters(Function, Properties);
2323
if (Properties.Num() == 0)
2424
{
@@ -42,19 +42,19 @@ FString FGESHandler::EmitEventLogString(const FGESEmitData& EmitData)
4242
return EmitData.Domain + TEXT(".") + EmitData.Event;
4343
}
4444

45-
void FGESHandler::FunctionParameters(UFunction* Function, TArray<UProperty*>& OutParamProperties)
45+
void FGESHandler::FunctionParameters(UFunction* Function, TArray<FProperty*>& OutParamProperties)
4646
{
47-
TFieldIterator<UProperty> Iterator(Function);
47+
TFieldIterator<FProperty> Iterator(Function);
4848

4949
while (Iterator && (Iterator->PropertyFlags & CPF_Parm))
5050
{
51-
UProperty* Prop = *Iterator;
51+
FProperty* Prop = *Iterator;
5252
OutParamProperties.Add(Prop);
5353
++Iterator;
5454
}
5555
}
5656

57-
bool FGESHandler::FunctionHasValidParams(UFunction* Function, UClass* ClassType, const FGESEmitData& EmitData, const FGESEventListener& Listener)
57+
bool FGESHandler::FunctionHasValidParams(UFunction* Function, FFieldClass* ClassType, const FGESEmitData& EmitData, const FGESEventListener& Listener)
5858
{
5959
if (FirstParamIsSubclassOf(Function, ClassType))
6060
{
@@ -110,7 +110,7 @@ void FGESHandler::UnpinEvent(const FString& Domain, const FString& EventName)
110110
{
111111
FGESEvent& Event = EventMap[KeyString];
112112
Event.bPinned = false;
113-
Event.PinnedData.Property->RemoveFromRoot();
113+
//Event.PinnedData.Property->RemoveFromRoot();
114114
//Event.PinnedData.PropertyData.Empty(); not sure if safe to delete instead of rebuilding on next pin
115115
}
116116
}
@@ -325,15 +325,15 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, UStruct* Struct, void*
325325
bool bValidateStructs = Options.bValidateStructTypes;
326326
EmitToListenersWithData(EmitData, [&EmitData, Struct, StructPtr, bValidateStructs](const FGESEventListener& Listener)
327327
{
328-
if (FunctionHasValidParams(Listener.Function, UStructProperty::StaticClass(), EmitData, Listener))
328+
if (FunctionHasValidParams(Listener.Function, FStructProperty::StaticClass(), EmitData, Listener))
329329
{
330330
if (bValidateStructs)
331331
{
332332
//For structs we can have different mismatching structs at this point check class types
333333
//optimization note: unroll the above function for structs to avoid double param lookup
334-
TArray<UProperty*> Properties;
334+
TArray<FProperty*> Properties;
335335
FunctionParameters(Listener.Function, Properties);
336-
UStructProperty* StructProperty = Cast<UStructProperty>(Properties[0]);
336+
FStructProperty* StructProperty = CastField<FStructProperty>(Properties[0]);
337337
if (StructProperty->Struct == Struct)
338338
{
339339
Listener.Receiver->ProcessEvent(Listener.Function, StructPtr);
@@ -360,7 +360,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, const FString& ParamDa
360360
FString MutableParamString = ParamData;
361361
EmitToListenersWithData(EmitData, [&EmitData, &MutableParamString](const FGESEventListener& Listener)
362362
{
363-
if (FunctionHasValidParams(Listener.Function, UStrProperty::StaticClass(), EmitData, Listener))
363+
if (FunctionHasValidParams(Listener.Function, FStrProperty::StaticClass(), EmitData, Listener))
364364
{
365365
Listener.Receiver->ProcessEvent(Listener.Function, &MutableParamString);
366366
}
@@ -371,7 +371,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, UObject* ParamData)
371371
{
372372
EmitToListenersWithData(EmitData, [&EmitData, ParamData](const FGESEventListener& Listener)
373373
{
374-
if (FunctionHasValidParams(Listener.Function, UObjectProperty::StaticClass(), EmitData, Listener))
374+
if (FunctionHasValidParams(Listener.Function, FObjectProperty::StaticClass(), EmitData, Listener))
375375
{
376376
FGESDynamicArg ParamWrapper;
377377
ParamWrapper.Arg01 = ParamData;
@@ -384,7 +384,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, float ParamData)
384384
{
385385
EmitToListenersWithData(EmitData, [&EmitData, &ParamData](const FGESEventListener& Listener)
386386
{
387-
if (FunctionHasValidParams(Listener.Function, UNumericProperty::StaticClass(), EmitData, Listener))
387+
if (FunctionHasValidParams(Listener.Function, FNumericProperty::StaticClass(), EmitData, Listener))
388388
{
389389
Listener.Receiver->ProcessEvent(Listener.Function, &ParamData);
390390
}
@@ -395,7 +395,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, int32 ParamData)
395395
{
396396
EmitToListenersWithData(EmitData, [&EmitData, &ParamData](const FGESEventListener& Listener)
397397
{
398-
if (FunctionHasValidParams(Listener.Function, UNumericProperty::StaticClass(), EmitData, Listener))
398+
if (FunctionHasValidParams(Listener.Function, FNumericProperty::StaticClass(), EmitData, Listener))
399399
{
400400
Listener.Receiver->ProcessEvent(Listener.Function, &ParamData);
401401
}
@@ -406,7 +406,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, bool ParamData)
406406
{
407407
EmitToListenersWithData(EmitData, [&EmitData, &ParamData](const FGESEventListener& Listener)
408408
{
409-
if (FunctionHasValidParams(Listener.Function, UBoolProperty::StaticClass(), EmitData, Listener))
409+
if (FunctionHasValidParams(Listener.Function, FBoolProperty::StaticClass(), EmitData, Listener))
410410
{
411411
Listener.Receiver->ProcessEvent(Listener.Function, &ParamData);
412412
}
@@ -418,7 +418,7 @@ void FGESHandler::EmitEvent(const FGESEmitData& EmitData, const FName& ParamData
418418
FName MutableName = ParamData;
419419
EmitToListenersWithData(EmitData, [&EmitData, &ParamData, &MutableName](const FGESEventListener& Listener)
420420
{
421-
if (FunctionHasValidParams(Listener.Function, UNameProperty::StaticClass(), EmitData, Listener))
421+
if (FunctionHasValidParams(Listener.Function, FNameProperty::StaticClass(), EmitData, Listener))
422422
{
423423
Listener.Receiver->ProcessEvent(Listener.Function, &MutableName);
424424
}
@@ -437,7 +437,7 @@ bool FGESHandler::EmitEvent(const FGESEmitData& EmitData)
437437
}
438438
return false;
439439
}
440-
UProperty* ParameterProp = EmitData.Property;
440+
FProperty* ParameterProp = EmitData.Property;
441441
void* PropPtr = EmitData.PropertyPtr;
442442

443443
//no params specified
@@ -454,12 +454,12 @@ bool FGESHandler::EmitEvent(const FGESEmitData& EmitData)
454454
Listener.OnePropertyFunctionDelegate.ExecuteIfBound(Wrapper);
455455
return;
456456
}
457-
TFieldIterator<UProperty> Iterator(Listener.Function);
457+
TFieldIterator<FProperty> Iterator(Listener.Function);
458458

459-
TArray<UProperty*> Properties;
459+
TArray<FProperty*> Properties;
460460
while (Iterator && (Iterator->PropertyFlags & CPF_Parm))
461461
{
462-
UProperty* Prop = *Iterator;
462+
FProperty* Prop = *Iterator;
463463
Properties.Add(Prop);
464464
++Iterator;
465465
}
@@ -475,29 +475,29 @@ bool FGESHandler::EmitEvent(const FGESEmitData& EmitData)
475475
}
476476
});
477477
}
478-
else if (ParameterProp->IsA<UStructProperty>())
478+
else if (ParameterProp->IsA<FStructProperty>())
479479
{
480-
UStructProperty* StructProperty = ExactCast<UStructProperty>(ParameterProp);
480+
FStructProperty* StructProperty = CastField<FStructProperty>(ParameterProp);
481481
EmitEvent(EmitData, StructProperty->Struct, PropPtr);
482482
return true;
483483
}
484-
else if (ParameterProp->IsA<UStrProperty>())
484+
else if (ParameterProp->IsA<FStrProperty>())
485485
{
486-
UStrProperty* StrProperty = Cast<UStrProperty>(ParameterProp);
486+
FStrProperty* StrProperty = CastField<FStrProperty>(ParameterProp);
487487
FString Data = StrProperty->GetPropertyValue(PropPtr);
488488
EmitEvent(EmitData, Data);
489489
return true;
490490
}
491-
else if (ParameterProp->IsA<UObjectProperty>())
491+
else if (ParameterProp->IsA<FObjectProperty>())
492492
{
493-
UObjectProperty* ObjectProperty = Cast<UObjectProperty>(ParameterProp);
493+
FObjectProperty* ObjectProperty = CastField<FObjectProperty>(ParameterProp);
494494
UObject* Data = ObjectProperty->GetPropertyValue(PropPtr);
495495
EmitEvent(EmitData, Data);
496496
return true;
497497
}
498-
else if (ParameterProp->IsA<UNumericProperty>())
498+
else if (ParameterProp->IsA<FNumericProperty>())
499499
{
500-
UNumericProperty* NumericProperty = Cast<UNumericProperty>(ParameterProp);
500+
FNumericProperty* NumericProperty = CastField<FNumericProperty>(ParameterProp);
501501
if (NumericProperty->IsFloatingPoint())
502502
{
503503
double Data = NumericProperty->GetFloatingPointPropertyValue(PropPtr);
@@ -511,16 +511,16 @@ bool FGESHandler::EmitEvent(const FGESEmitData& EmitData)
511511
return true;
512512
}
513513
}
514-
else if (ParameterProp->IsA<UBoolProperty>())
514+
else if (ParameterProp->IsA<FBoolProperty>())
515515
{
516-
UBoolProperty* BoolProperty = Cast<UBoolProperty>(ParameterProp);
516+
FBoolProperty* BoolProperty = CastField<FBoolProperty>(ParameterProp);
517517
bool Data = BoolProperty->GetPropertyValue(PropPtr);
518518
EmitEvent(EmitData, Data);
519519
return true;
520520
}
521-
else if (ParameterProp->IsA<UNameProperty>())
521+
else if (ParameterProp->IsA<FNameProperty>())
522522
{
523-
UNameProperty* NameProperty = Cast<UNameProperty>(ParameterProp);
523+
FNameProperty* NameProperty = CastField<FNameProperty>(ParameterProp);
524524
FName Data = NameProperty->GetPropertyValue(PropPtr);
525525
EmitEvent(EmitData, Data);
526526
return true;

Source/GlobalEventSystem/Private/GESHandler.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,14 @@ class FGESHandler
7676

7777
//can check function signature vs e.g. FString
7878
static bool FirstParamIsCppType(UFunction* Function, const FString& TypeString);
79-
static bool FirstParamIsSubclassOf(UFunction* Function, UClass* ClassType);
79+
static bool FirstParamIsSubclassOf(UFunction* Function, FFieldClass* ClassType);
8080
static FString ListenerLogString(const FGESEventListener& Listener);
8181
static FString EventLogString(const FGESEvent& Event);
8282
static FString EmitEventLogString(const FGESEmitData& EmitData);
83-
static void FunctionParameters(UFunction* Function, TArray<UProperty*>& OutParamProperties);
83+
static void FunctionParameters(UFunction* Function, TArray<FProperty*>& OutParamProperties);
8484

8585
//this function logs warnings otherwise
86-
static bool FunctionHasValidParams(UFunction* Function, UClass* ClassType, const FGESEmitData& EmitData, const FGESEventListener& Listener);
86+
static bool FunctionHasValidParams(UFunction* Function, FFieldClass* ClassType, const FGESEmitData& EmitData, const FGESEventListener& Listener);
8787

8888
//Key == TargetDomain.TargetFunction
8989
TMap<FString, FGESEvent> EventMap;

0 commit comments

Comments
 (0)