Produktion_Digitaler_Medien/Source/BuildingEscape/OpenDoor.h

72 lines
1.6 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Components/AudioComponent.h"
#include "Components/ActorComponent.h"
#include "Engine/TriggerVolume.h"
//#include "Engine/ActorChannel.h"
#include "OpenDoor.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class BUILDINGESCAPE_API UOpenDoor : public UActorComponent
{
GENERATED_BODY()
public:
// Sets default values for this component's properties
UOpenDoor();
protected:
// Called when the game starts
virtual void BeginPlay() override;
public:
// Called every frame
virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
void OpenDoor(float DeltaTime);
void CloseDoor(float DeltaTime);
float TotalMass() const;
void FindAudioComponent();
void FindPressurePlateComponent();
//Tracks if Sound has been Played
bool OpenDoorSoundHasBeenPlayed = false;
bool CloseDoorSoundHasBeenPlayed = true;
private:
float InitialYaw;
float CurrentYaw;
float DoorLastOpened = 0.f;
bool HasSoundBeenPlayed = false;
UPROPERTY(EditAnywhere)
float MassToOpenDoor = 50.f;
UPROPERTY(EditAnywhere)
float TargetAngleOfOpenDoor =90.f;
UPROPERTY(EditAnywhere)
float OpenDoorRotationSpeed = 2.f;
UPROPERTY(EditAnywhere)
float CloseDoorRotationSpeed = 0.5f;
UPROPERTY(EditAnywhere)
float DoorDelay = 2.f; //2 second delay
UPROPERTY(EditAnywhere)
ATriggerVolume* PressurePlate = nullptr;
UPROPERTY(EditAnywhere)
AActor* ActorThatOpens = nullptr;
UPROPERTY()
UAudioComponent* AudioComponent = nullptr;
};