123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "AkEnvironmentIndex.h"
- #include "AkAudioDevice.h"
- void FAkEnvironmentOctreeSemantics::SetElementId(AK_OCTREE_TYPE<FAkEnvironmentOctreeElement, FAkEnvironmentOctreeSemantics>& OctreeOwner, const FAkEnvironmentOctreeElement& Element, AK_OCTREE_ELEMENT_ID Id)
- {
- static_cast<UAkEnvironmentOctree&>(OctreeOwner).ObjectToOctreeId.Add(Element.Component->GetUniqueID(), Id);
- }
- void FAkEnvironmentIndex::Add(USceneComponent* EnvironmentToAdd)
- {
- UWorld* CurrentWorld = EnvironmentToAdd->GetWorld();
- TUniquePtr<UAkEnvironmentOctree>& Octree = Map.FindOrAdd(CurrentWorld);
-
- if (Octree == nullptr)
- {
- Octree = MakeUnique<UAkEnvironmentOctree>();
- }
- if (Octree != nullptr)
- {
- FAkEnvironmentOctreeElement Element(EnvironmentToAdd);
- Octree->AddElement(Element);
- }
- }
- bool FAkEnvironmentIndex::Remove(USceneComponent* EnvironmentToRemove)
- {
- UWorld* CurrentWorld = EnvironmentToRemove->GetWorld();
- TUniquePtr<UAkEnvironmentOctree>* Octree = Map.Find(CurrentWorld);
- if (Octree != nullptr && EnvironmentToRemove != nullptr)
- {
- AK_OCTREE_ELEMENT_ID* Id = (*Octree)->ObjectToOctreeId.Find(EnvironmentToRemove->GetUniqueID());
- if (Id != nullptr && (*Octree)->IsValidElementId(*Id))
- {
- (*Octree)->RemoveElement(*Id);
- }
- (*Octree)->ObjectToOctreeId.Remove(EnvironmentToRemove->GetUniqueID());
- return true;
- }
- return false;
- }
- void FAkEnvironmentIndex::Update(USceneComponent* Environment)
- {
- Remove(Environment);
- Add(Environment);
- }
- void FAkEnvironmentIndex::Clear(const UWorld* World)
- {
- Map.Remove(World);
- }
- bool FAkEnvironmentIndex::IsEmpty(const UWorld* World)
- {
- TUniquePtr<UAkEnvironmentOctree>* Octree = Map.Find(World);
- return Octree == nullptr;
- }
|