Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Unreal Engine 4 DistributionVectorUniformParam Particle Distribution
#include "DistributionVectorUniformParam.h"
#include "Particles/ParticleSystemComponent.h"
UDistributionVectorUniformParam::UDistributionVectorUniformParam(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
FVector UDistributionVectorUniformParam::GetValue(float F, UObject* Data, int32 Extreme, struct FRandomStream* InRandomStream) const
FVector LocalMax = DefaultMax;
FVector LocalMin = DefaultMin;
FVector ParamMax;
bool bFoundParam = GetParamValue(Data, MaxParameterName, ParamMax);
if (bFoundParam)
LocalMax = ParamMax;
FVector ParamMin;
bFoundParam = GetParamValue(Data, MinParameterName, ParamMin);
if (bFoundParam)
LocalMin = ParamMin;
float fX = LocalMin.X + (LocalMax.X - LocalMin.X) * DIST_GET_RANDOM_VALUE(InRandomStream);
float fY = LocalMin.Y + (LocalMax.Y - LocalMin.Y) * DIST_GET_RANDOM_VALUE(InRandomStream);
float fZ = LocalMin.Z + (LocalMax.Z - LocalMin.Z) * DIST_GET_RANDOM_VALUE(InRandomStream);
return FVector(fX, fY, fZ);
bool UDistributionVectorUniformParam::GetParamValue(UObject* Data, FName ParamName, FVector& OutVector) const
bool bFoundParam = false;
UParticleSystemComponent* ParticleComp = Cast<UParticleSystemComponent>(Data);
if (ParticleComp)
bFoundParam = ParticleComp->GetAnyVectorParameter(ParamName, OutVector);
return bFoundParam;
#pragma once
#include "CoreMinimal.h"
#include "Distributions/DistributionVector.h"
#include "DistributionVectorUniformParam.generated.h"
UCLASS(collapsecategories, hidecategories = Object, editinlinenew)
class PROJECT_API UDistributionVectorUniformParam : public UDistributionVector
FName MaxParameterName;
FName MinParameterName;
FVector DefaultMax;
FVector DefaultMin;
virtual FVector GetValue(float F = 0.f, UObject* Data = NULL, int32 LastExtreme = 0, struct FRandomStream* InRandomStream = NULL) const override;
virtual bool CanBeBaked() const override { return false; }
virtual bool IsPostLoadThreadSafe() const override { return true; };
bool GetParamValue(UObject* Data, FName ParamName, FVector& OutVector) const;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.