|
@@ -10,9 +10,11 @@
|
|
|
*
|
|
|
*/
|
|
|
|
|
|
+#include <AzCore/Casting/numeric_cast.h>
|
|
|
#include <AzCore/Component/ComponentApplicationBus.h>
|
|
|
#include <AzCore/Serialization/IdUtils.h>
|
|
|
#include <AzCore/Serialization/SerializeContext.h>
|
|
|
+#include <AzCore/Settings/SettingsRegistry.h>
|
|
|
#include <AzCore/std/parallel/scoped_lock.h>
|
|
|
#include <AzCore/std/smart_ptr/make_shared.h>
|
|
|
#include <AzFramework/Components/TransformComponent.h>
|
|
@@ -26,7 +28,7 @@ namespace AzFramework
|
|
|
void SpawnableEntitiesManager::QueueRequest(EntitySpawnTicket& ticket, SpawnablePriority priority, T&& request)
|
|
|
{
|
|
|
request.m_ticket = &GetTicketPayload<Ticket>(ticket);
|
|
|
- Queue& queue = priority <= HighPriorityThreshold ? m_highPriorityQueue : m_regularPriorityQueue;
|
|
|
+ Queue& queue = priority <= m_highPriorityThreshold ? m_highPriorityQueue : m_regularPriorityQueue;
|
|
|
{
|
|
|
AZStd::scoped_lock queueLock(queue.m_pendingRequestMutex);
|
|
|
request.m_requestId = GetTicketPayload<Ticket>(ticket).m_nextRequestId++;
|
|
@@ -34,6 +36,16 @@ namespace AzFramework
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ SpawnableEntitiesManager::SpawnableEntitiesManager()
|
|
|
+ {
|
|
|
+ if (auto settingsRegistry = AZ::SettingsRegistry::Get(); settingsRegistry != nullptr)
|
|
|
+ {
|
|
|
+ AZ::u64 value = 64;
|
|
|
+ settingsRegistry->Get(value, "/O3DE/AzFramework/Spawnables/HighPriorityThreshold");
|
|
|
+ m_highPriorityThreshold = aznumeric_cast<SpawnablePriority>(AZStd::clamp(value, 0llu, 255llu));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
void SpawnableEntitiesManager::SpawnAllEntities(
|
|
|
EntitySpawnTicket& ticket, SpawnablePriority priority, EntityPreInsertionCallback preInsertionCallback,
|
|
|
EntitySpawnCallback completionCallback)
|
|
@@ -608,24 +620,4 @@ namespace AzFramework
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- bool SpawnableEntitiesManager::IsEqualTicket(const EntitySpawnTicket* lhs, const EntitySpawnTicket* rhs)
|
|
|
- {
|
|
|
- return GetTicketPayload<Ticket>(lhs) == GetTicketPayload<Ticket>(rhs);
|
|
|
- }
|
|
|
-
|
|
|
- bool SpawnableEntitiesManager::IsEqualTicket(const Ticket* lhs, const EntitySpawnTicket* rhs)
|
|
|
- {
|
|
|
- return lhs == GetTicketPayload<Ticket>(rhs);
|
|
|
- }
|
|
|
-
|
|
|
- bool SpawnableEntitiesManager::IsEqualTicket(const EntitySpawnTicket* lhs, const Ticket* rhs)
|
|
|
- {
|
|
|
- return GetTicketPayload<Ticket>(lhs) == rhs;
|
|
|
- }
|
|
|
-
|
|
|
- bool SpawnableEntitiesManager::IsEqualTicket(const Ticket* lhs, const Ticket* rhs)
|
|
|
- {
|
|
|
- return lhs = rhs;
|
|
|
- }
|
|
|
} // namespace AzFramework
|