| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | /*******************************************************************************The content of this file includes portions of the proprietary AUDIOKINETIC WwiseTechnology released in source code form as part of the game integration package.The content of this file may not be used without valid licenses to theAUDIOKINETIC Wwise Technology.Note that the use of the game engine is subject to the Unreal(R) Engine End UserLicense Agreement at https://www.unrealengine.com/en-US/eula/unreal License Usage Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may usethis file in accordance with the end user license agreement provided with thesoftware or, alternatively, in accordance with the terms containedin a written agreement between you and Audiokinetic Inc.Copyright (c) 2023 Audiokinetic Inc.*******************************************************************************/#pragma once#include "AkInclude.h"#include "AkSettings.h"#include "AkAcousticTexture.h"#include "Components/SceneComponent.h"#include "AkAcousticTextureSetComponent.generated.h"struct FAkReverbDescriptor;UCLASS(ClassGroup = Audiokinetic, abstract)class AKAUDIO_API UAkAcousticTextureSetComponent : public USceneComponent{	GENERATED_BODY()public:	UAkAcousticTextureSetComponent(const class FObjectInitializer& ObjectInitializer);	virtual void GetTexturesAndSurfaceAreas(TArray<FAkAcousticTextureParams>& textures, TArray<float>& surfaceAreas) const { check(0 && "This function must be overidden"); }	void SetReverbDescriptor(FAkReverbDescriptor* reverbDescriptor);	virtual void OnRegister() override;	virtual void OnUnregister() override;	virtual void BeginPlay() override;	virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;	virtual AkGeometrySetID GetGeometrySetID() const { return AkGeometrySetID(this); }	virtual bool GetGeometryHasBeenSent() const { return GeometryHasBeenSent; }	virtual bool GetGeometryInstanceHasBeenSent() const { return GeometryInstanceHasBeenSent; }protected:	void RecalculateHFDamping();#if WITH_EDITOR	virtual void BeginDestroy() override;	virtual void HandleObjectsReplaced(const TMap<UObject*, UObject*>& ReplacementMap);	void RegisterReverbRTPCChangedCallback();	FDelegateHandle RTPCChangedHandle;	virtual void RegisterAllTextureParamCallbacks() { check(0 && "This function must be overidden"); }	void RegisterTextureParamChangeCallback(FGuid textureID);	void UnregisterTextureParamChangeCallbacks();	/* Register param changed callbacks for any textures that have not been registered. Called when the AcousticPolys array is updated */	TMap<FGuid, FDelegateHandle> TextureDelegateHandles;#endif	FAkReverbDescriptor* ReverbDescriptor = nullptr;	bool DampingEstimationNeedsUpdate = false;	virtual bool ShouldSendGeometry() const;	/* Add or update a geometry in Spatial Audio. It is necessary to create at least one geometry instance	* for each geometry that is to be used for diffraction and reflection simulation. See SendGeometryInstanceToWwise(). */	void SendGeometryToWwise(const AkGeometryParams& params);	/* Add or update an instance of the geometry. A geometry instance is a unique instance of a geometry set with a specified transform (position, rotation and scale) and room association. 	* It is necessary to create at least one geometry instance for each geometry set that is to be used for diffraction and reflection simulation. */	void SendGeometryInstanceToWwise(const FRotator& rotation, const FVector& location, const FVector& scale, const AkRoomID roomID, bool useForReflectionAndDiffraction);	/* Remove a geometry and the corresponding instance from Wwise. */	void RemoveGeometryFromWwise();	/* Remove a geometry instance from Wwise. */	void RemoveGeometryInstanceFromWwise();private:#if WITH_EDITOR	virtual bool ContainsTexture(const FGuid& textureID)	{		check(0 && "This function must be overidden");		return false;	}#endif	float SecondsSinceDampingUpdate = 0.0f;	bool GeometryHasBeenSent = false;	bool GeometryInstanceHasBeenSent = false;};
 |