Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .H
- #include "Runtime/Engine/Classes/Engine/DataTable.h"
- USTRUCT(Blueprintable)
- struct FEventListDataTable : public FTableRowBase
- {
- GENERATED_USTRUCT_BODY()
- /** Full Path of Blueprint */
- UPROPERTY(BlueprintReadOnly, Category = "EVT")
- int32 EventFlowID;
- UPROPERTY(BlueprintReadOnly, Category = "EVT")
- int32 EventCatID;
- UPROPERTY(BlueprintReadOnly, Category = "EVT")
- int32 EventID;
- };
- /**
- *
- */
- //UCLASS()
- UCLASS()
- class AAI_NPC_Character : public AAI_Character
- {
- GENERATED_UCLASS_BODY()
- TArray<FEventArrayStruct*> EventList;
- UPROPERTY()
- UDataTable * eventDatatable;
- //This will show up in the details panel as a TArray when you add a new element it
- //will populate the rows table with the events data from the query in the loadEventListStrutData function.
- UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Default_Events")
- TArray<FDataTableRowHandle> EventListSelection;
- //...
- //...
- //...
- //...
- Cpp:
- void AAI_NPC_Character::loadEventListStrutData(){
- //begin Build Databale String
- int32 result = 0;
- FString SQLQuery = "";
- FString TableString;
- TArray<FString> err;
- TableString = FString(",EventFlowID,EventCatID,EventID\n");
- RPG_DATABASE_CONTROLLER = NewObject<URPG_Database>(this, URPG_Database::StaticClass());
- if (!OpenDatabase(SourceDataBase))return;
- /*TODO: Add event filtering*/
- SQLQuery = "Select EventName, EventID, EventCategoryID, EventFlowGroupID from events;";
- result = RPG_DATABASE_CONTROLLER->BP_Query(SQLQuery);
- if (result == 0 || RPG_DATABASE_CONTROLLER->BP_EndOResult(result))
- {
- if (result)RPG_DATABASE_CONTROLLER->BP_ClearResult(result);
- RPG_DATABASE_CONTROLLER->BP_CloseDatabase();
- return;
- }
- else{
- while (!RPG_DATABASE_CONTROLLER->BP_EndOResult(result))
- {
- FString _EventName = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "EventName"));
- FString _EventID = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "EventID"));
- FString _EventCatID = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "EventCategoryID"));
- FString _EventFlowID = (*RPG_DATABASE_CONTROLLER->BP_GetColumn(result, "EventFlowGroupID"));
- TableString += FString(_EventName + "," + _EventFlowID + "," + _EventCatID + "," + _EventID + "\n");
- RPG_DATABASE_CONTROLLER->BP_NextRow(result);
- }
- }
- if (eventDatatable == nullptr)eventDatatable = NewObject<UDataTable>(this, "EListDataTable");
- eventDatatable->RowStruct = FEventListDataTable().StaticStruct();
- #if WITH_EDITORONLY_DATA
- err = eventDatatable->CreateTableFromCSVString(TableString);
- #endif
- if (err.Num() > 0)
- {
- for (FString tmp : err)UE_LOG(LogTemp, Error, TEXT("%s"), *tmp);
- }else{
- for (int32 i = 0; i < EventListSelection.Num();i++){
- EventListSelection[i].DataTable = eventDatatable;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement