AMeasurementGate::AMeasurementGate(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer.SetDefaultSubobjectClass<UBoxComponent>(TEXT("CollisionComp"))) {
	UBoxComponent* BoxCollisionComponent = CastChecked<UBoxComponent>(GetCollisionComponent());

	BoxCollisionComponent->ShapeColor = TriggerBaseColor;
	BoxCollisionComponent->InitBoxExtent(FVector(40.0f, 40.0f, 40.0f));

	static FName CollisionProfileName(TEXT("Trigger"));
	BoxCollisionComponent->SetCollisionProfileName(CollisionProfileName);

	if (GetSpriteComponent())
	{
		GetSpriteComponent()->AttachParent = BoxCollisionComponent;
	}

	OnActorBeginOverlap.AddDynamic(this, &AMeasurementGate::OnBeginOverlap);
}
AExponentialHeightFog::AExponentialHeightFog(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
	Component = ObjectInitializer.CreateDefaultSubobject<UExponentialHeightFogComponent>(this, TEXT("HeightFogComponent0"));
	RootComponent = Component;

	bHidden = false;

#if WITH_EDITORONLY_DATA
	if (!IsRunningCommandlet() && (GetSpriteComponent() != NULL))
	{
		// Structure to hold one-time initialization
		struct FConstructorStatics
		{
			ConstructorHelpers::FObjectFinderOptional<UTexture2D> FogTextureObject;
			FName ID_Fog;
			FText NAME_Fog;
			FConstructorStatics()
				: FogTextureObject(TEXT("/Engine/EditorResources/S_ExpoHeightFog"))
				, ID_Fog(TEXT("Fog"))
				, NAME_Fog(NSLOCTEXT("SpriteCategory", "Fog", "Fog"))
			{
			}
		};
		static FConstructorStatics ConstructorStatics;

		GetSpriteComponent()->Sprite = ConstructorStatics.FogTextureObject.Get();
		GetSpriteComponent()->RelativeScale3D = FVector(0.5f, 0.5f, 0.5f);
		GetSpriteComponent()->SpriteInfo.Category = ConstructorStatics.ID_Fog;
		GetSpriteComponent()->SpriteInfo.DisplayName = ConstructorStatics.NAME_Fog;
		GetSpriteComponent()->AttachParent = Component;
	}
#endif // WITH_EDITORONLY_DATA
}
AAtmosphericFog::AAtmosphericFog(const FObjectInitializer& ObjectInitializer)
    : Super(ObjectInitializer)
{
    AtmosphericFogComponent = CreateDefaultSubobject<UAtmosphericFogComponent>(TEXT("AtmosphericFogComponent0"));
    RootComponent = AtmosphericFogComponent;

#if WITH_EDITORONLY_DATA
    ArrowComponent = CreateEditorOnlyDefaultSubobject<UArrowComponent>(TEXT("ArrowComponent0"));

    if (!IsRunningCommandlet())
    {
        // Structure to hold one-time initialization
        struct FConstructorStatics
        {
            ConstructorHelpers::FObjectFinderOptional<UTexture2D> FogTextureObject;
            FName ID_Fog;
            FText NAME_Fog;
            FConstructorStatics()
                : FogTextureObject(TEXT("/Engine/EditorResources/S_ExpoHeightFog"))
                , ID_Fog(TEXT("Fog"))
                , NAME_Fog(NSLOCTEXT("SpriteCategory", "Fog", "Fog"))
            {
            }
        };
        static FConstructorStatics ConstructorStatics;

        if (GetSpriteComponent())
        {
            GetSpriteComponent()->Sprite = ConstructorStatics.FogTextureObject.Get();
            GetSpriteComponent()->RelativeScale3D = FVector(0.5f, 0.5f, 0.5f);
            GetSpriteComponent()->SpriteInfo.Category = ConstructorStatics.ID_Fog;
            GetSpriteComponent()->SpriteInfo.DisplayName = ConstructorStatics.NAME_Fog;
            GetSpriteComponent()->AttachParent = AtmosphericFogComponent;
        }

        if (ArrowComponent)
        {
            ArrowComponent->ArrowColor = FColor(150, 200, 255);

            ArrowComponent->bTreatAsASprite = true;
            ArrowComponent->SpriteInfo.Category = ConstructorStatics.ID_Fog;
            ArrowComponent->SpriteInfo.DisplayName = ConstructorStatics.NAME_Fog;
            ArrowComponent->AttachParent = AtmosphericFogComponent;
            ArrowComponent->bLightAttachment = true;
            ArrowComponent->bIsScreenSizeScaled = true;
        }
    }
#endif // WITH_EDITORONLY_DATA


    PrimaryActorTick.bCanEverTick = true;
    bHidden = false;
}
AWindDirectionalSource::AWindDirectionalSource(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
{
	Component = CreateDefaultSubobject<UWindDirectionalSourceComponent>(TEXT("WindDirectionalSourceComponent0"));
	RootComponent = Component;

#if WITH_EDITORONLY_DATA
	ArrowComponent = CreateEditorOnlyDefaultSubobject<UArrowComponent>(TEXT("ArrowComponent0"));

	if (!IsRunningCommandlet())
	{
		// Structure to hold one-time initialization
		struct FConstructorStatics
		{
			ConstructorHelpers::FObjectFinderOptional<UTexture2D> SpriteTexture;
			FName ID_Wind;
			FText NAME_Wind;
			FConstructorStatics()
				: SpriteTexture(TEXT("/Engine/EditorResources/S_WindDirectional"))
				, ID_Wind(TEXT("Wind"))
				, NAME_Wind(NSLOCTEXT("SpriteCategory", "Wind", "Wind"))
			{
			}
		};
		static FConstructorStatics ConstructorStatics;

		if (ArrowComponent)
		{
			ArrowComponent->ArrowColor = FColor(150, 200, 255);
			ArrowComponent->bTreatAsASprite = true;
			ArrowComponent->SpriteInfo.Category = ConstructorStatics.ID_Wind;
			ArrowComponent->SpriteInfo.DisplayName = ConstructorStatics.NAME_Wind;
			ArrowComponent->AttachParent = Component;
			ArrowComponent->bIsScreenSizeScaled = true;
			ArrowComponent->bUseInEditorScaling = true;
		}

		if (GetSpriteComponent())
		{
			GetSpriteComponent()->Sprite = ConstructorStatics.SpriteTexture.Get();
			GetSpriteComponent()->RelativeScale3D = FVector(0.5f, 0.5f, 0.5f);
			GetSpriteComponent()->SpriteInfo.Category = ConstructorStatics.ID_Wind;
			GetSpriteComponent()->SpriteInfo.DisplayName = ConstructorStatics.NAME_Wind;
			GetSpriteComponent()->AttachParent = Component;
		}
	}
#endif // WITH_EDITORONLY_DATA
}