A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
StoryComponent.cpp
Go to the documentation of this file.
1// Copyright(c) Pixo Group. All Rights Reserved.
2
4#include "GameFramework/GameModeBase.h"
7
9{
10 Super::BeginPlay();
11
12 if(GetOwner()->GetClass()->ImplementsInterface(UPixoVRStoryObject::StaticClass()))
13 {
14 if(GetWorld()->GetAuthGameMode()->GetClass()->ImplementsInterface(UPixoCoreInterface::StaticClass()))
15 {
16 const auto GameMode = GetWorld()->GetAuthGameMode();
17 GameManager = Cast<UGameManager>(IPixoCoreInterface::Execute_GetManagerRef(GameMode, UGameManager::StaticClass()));
18 StoryManager = Cast<UStoryManager>(IPixoCoreInterface::Execute_GetManagerRef(GameMode, UStoryManager::StaticClass()));
19 if (StoryManager)
20 {
24
26 }
27 }
28 else
29 {
30 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "Error - GameMode doesn't implement UPixoCoreInterface!");
31 }
32 }
33 else
34 {
35 const FString ErrorMassage = "WARNING___Actor__" + GetOwner()->GetName() + "__Has_Not_Implemented_BI_InteractableObjectInterface";
36 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, ErrorMassage);
37 }
38}
39
41{
43 {
45 {
47 for (auto ScriptInstance : GameManager->ScriptInstancesData)
48 {
49 if (ScriptInstance.StepName.EqualTo(StepName))
50 {
51 ScriptInstance.StepScriptInstance->ExecuteScript(GetOwner());
52 }
53 }
54 }
55 }
56 else
57 UE_LOG(LogTemp, Error, TEXT("Error - StoryComponent - GameManager, Story Manager is not valid!"));
58}
59
60void UStoryComponent::NewStep(FStoryStep NewStep, bool IsForward)
61{
64
65 bool StepFound = false;
66 bool SubStepFound = false;
67 for(auto Step : ActiveSteps)
68 {
69 if(ActiveStep.EqualTo(Step))
70 {
71 StepFound = true;
72 break;
73 }
74 }
75 for(auto SubStep : ActiveSubSteps)
76 {
77 if (ActiveSubStep.EqualTo(SubStep))
78 {
79 SubStepFound = true;
80 break;
81 }
82 }
83 if(GetOwner()->GetClass()->ImplementsInterface(UPixoVRStoryObject::StaticClass()))
84 {
85 if(StepFound && (SubStepFound || ActiveSubSteps.Num() == 0 || ActiveSubStep.IsEmpty()))
86 {
89 ObjectActive = true;
90 IPixoVRStoryObject::Execute_ObjectActivated(GetOwner());
91 }
92 else
93 {
94 ObjectActive = false;
95 IPixoVRStoryObject::Execute_ObjectDeactivated(GetOwner());
96 }
97 }
98 else
99 {
100 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "PixoVRInteractiveObject interface not implemented!!!");
101 }
102}
103
105{
107 ActiveSubStep = NewSubStep.StepName;
108
109 bool StepFound = false;
110 bool SubStepFound = false;
111 for(auto Step : ActiveSteps)
112 {
113 if(ActiveStep.EqualTo(Step))
114 {
115 StepFound = true;
116 break;
117 }
118 }
119 for(auto SubStep : ActiveSubSteps)
120 {
121 if (ActiveSubStep.EqualTo(SubStep))
122 {
123 SubStepFound = true;
124 break;
125 }
126 }
127 if(GetOwner()->GetClass()->ImplementsInterface(UPixoVRStoryObject::StaticClass()))
128 {
129 if (StepFound && (SubStepFound || ActiveSubSteps.Num() == 0))
130 {
133 ObjectActive = true;
134 IPixoVRStoryObject::Execute_ObjectActivated(GetOwner());
135 }
136 else
137 {
138 ObjectActive = false;
139 IPixoVRStoryObject::Execute_ObjectDeactivated(GetOwner());
140 }
141 }
142 else
143 {
144 GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "PixoVRInteractiveObject interface not implemented!!!");
145 }
146}
147
TArray< FScriptInstanceData > ScriptInstancesData
UPROPERTY(BlueprintReadOnly, Category = "GamaManager|Script")
bool IsUsingStoryScriptData
UPROPERTY(EditDefaultsOnly, Category = "GameManager|Script")
FText ActiveStep
UPROPERTY(BlueprintReadWrite)
virtual void BeginPlay() override
TArray< FText > ActiveSteps
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Story|Setup")
UGameManager * GameManager
UPROPERTY(BlueprintReadOnly, Category = "Story|Setup")
void NewStep(FStoryStep NewStep, bool IsForward)
Called when a new step is reached in the story.
bool ObjectActive
UPROPERTY(BlueprintReadWrite)
FText ActiveSubStep
UPROPERTY(BlueprintReadWrite)
void StoryLoaded()
Called when the story is loaded.
void ExecuteScript()
UFUNCTION(BlueprintCallable, Category = "Story|Script")
void NewSubStep(FStoryStep NewSubStep)
Called when a new substep is reached in the story.
TArray< FText > ActiveSubSteps
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Story|Setup")
UStoryManager * StoryManager
UPROPERTY(BlueprintReadWrite)
FOnNewStep OnNewStep
UPROPERTY(BlueprintAssignable, Category = "Story Delegate")
FStoryStep CurrentSubStep
UPROPERTY(BlueprintReadWrite, Replicated)
FOnStoryLoaded OnStoryLoaded
UPROPERTY(BlueprintAssignable, Category = "Story Delegate")
FOnNewSubStep OnNewSubStep
UPROPERTY(BlueprintAssignable, Category = "Story Delegate")
FStoryStep CurrentStep
UPROPERTY(BlueprintReadWrite, Replicated)
USTRUCT(BlueprintType)
FText StepName
UPROPERTY(BlueprintReadWrite, EditAnywhere)