virtual bool GetFunctionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, const FNiagaraDataInterfaceGeneratedFunction& FunctionInfo, int FunctionInstanceIndex, FString& OutHLSL) override;virtual void GetParameterDefinitionHLSL(const FNiagaraDataInterfaceGPUParamInfo& ParamInfo, FString& OutHLSL) override;#endifvirtual void BuildShaderParameters(FNiagaraShaderParametersBuilder& ShaderParametersBuilder) const override;virtual void SetShaderParameters(const FNiagaraDataInterfaceSetShaderParametersContext& Context) const override;virtual bool InitPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;virtual void DestroyPerInstanceData(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance) override;virtual int32 PerInstanceDataSize() const override;virtual bool HasPreSimulateTick() const override { return true; }virtual bool PerInstanceTick(void* PerInstanceData, FNiagaraSystemInstance* SystemInstance, float DeltaSeconds) override;virtual void ProvidePerInstanceDataForRenderThread(void* DataForRenderThread, void* PerInstanceData, const FNiagaraSystemInstanceID& SystemInstance) override;
void UNiagaraDataInterfaceMousePosition::GetFunctionsInternal(TArray<FNiagaraFunctionSignature>& OutFunctions) const{FNiagaraFunctionSignature Sig;Sig.Name = GetMousePositionName;Sig.Description = LOCTEXT("GetMousePositionNameFunctionDescription", "Returns the mouse position in screen space.");Sig.bMemberFunction = true;Sig.AddInput(FNiagaraVariable(FNiagaraTypeDefinition(GetClass()), TEXT("MousePosition interface")));Sig.AddInput(FNiagaraVariable(FNiagaraTypeDefinition::GetBoolDef(), TEXT("Normalized")));Sig.AddOutput(FNiagaraVariable(FNiagaraTypeDefinition::GetFloatDef(), TEXT("PosX")), LOCTEXT("MousePosXDescription", "Returns the x coordinates in pixels or 0-1 range if normalized"));Sig.AddOutput(FNiagaraVariable(FNiagaraTypeDefinition::GetFloatDef(), TEXT("PosY")), LOCTEXT("MousePosYDescription", "Returns the y coordinates in pixels or 0-1 range if normalized"));OutFunctions.Add(Sig);}
Niagara Data Interfaces: These sound perfect, except that the docs only tell you how to define them, not how to actually hook them up to a Niagara system. As it turns out, you don’t need to use these directly at all, but you can spend a long time crawling down the APIs without knowing that, squinting in the dark looking for a crack of daylight that tells you how to link these things together.
UFUNCTION(BlueprintCallable, Category = "Weather")bool loadData(TArray<FVector> &data);UFUNCTION(BlueprintCallable, Category = "Weather")bool initGridData(int x, int y, int z, float magnification, TArray<FVector> &data);
25 人关注
3760 人关注
评论区
共 2 条评论热门最新