NiagaraDataInterfaceArrayRWTemplate.ush の AtomicMin および AtomicMax の戻り値が正しくない

いつもお世話になっております。

<br/>

NiagaraDataInterfaceArrayRWTemplate.ush の AtomicMin 関数と AtomicMax 関数において out CurrValue を返していますが、

これらの値は PrevValue と Value の加算値ではなく、min/max を取った値ではないでしょうか?

直前に AtomicAdd 関数が実装されているので、そのコードをそのまま持ってきてしまっている可能性が高そうに思いました。

また、NiagaraDataInterfaceMemoryBufferTemplate.ush にも同様の関数が実装されていますが、そちらでは min/max を使用されていました。

<br/>

具体的な再現データなどがなくて申し訳ございませんが、ご確認頂けますと幸いです。

void AtomicMin_{ParameterName}_UEImpureCall(bool bSkip, int Index, int Value, out {VariableType} PrevValue, out {VariableType} CurrValue)
{
	bool bIsValidIndex;
	IsValidIndex_{ParameterName}(Index, bIsValidIndex);
	if ( !bSkip && bIsValidIndex )
	{
		InterlockedMin({ParameterName}_ArrayRWBuffer[Index], Value, PrevValue);
		CurrValue = PrevValue + Value; // = min(PrevValue, Value) ?
	}
	else
	{
		PrevValue = 0;
		CurrValue = 0;
	}
}

void AtomicMax_{ParameterName}_UEImpureCall(bool bSkip, int Index, int Value, out {VariableType} PrevValue, out {VariableType} CurrValue)
{
	bool bIsValidIndex;
	IsValidIndex_{ParameterName}(Index, bIsValidIndex);
	if ( !bSkip && bIsValidIndex )
	{
		InterlockedMax({ParameterName}_ArrayRWBuffer[Index], Value, PrevValue);
		CurrValue = PrevValue + Value; // = max(PrevValue, Value) ?
	}
	else
	{
		PrevValue = 0;
		CurrValue = 0;
	}
}



お世話になっております。

お知らせ頂きありがとうございます。ご指摘頂いた内容について正しい変更です。こちらに関して現在開発チームにフィードバックに反映を行いました。修正が適用されましたらお知らせしたいと思います。

こちらの内容についてはCL#51018905で正式にMainに反映されました。

次のUE5.8にて反映される予定です。ご報告頂きありがとうございました。

ご確認およびフィードバック対応いただきまして、ありがとうございます。

それではこちらの修正を入れた状態で運用していこうと思います。

ご対応ありがとうございました。