Cache IOrderValidator traits on World

This commit is contained in:
reaperrr
2020-09-15 10:38:29 +02:00
committed by Paul Chote
parent ca8341d432
commit 904a5f60d1
2 changed files with 5 additions and 6 deletions

View File

@@ -336,14 +336,10 @@ namespace OpenRA.Network
break;
if (order.GroupedActors == null)
ResolveOrder(order, world.WorldActor.TraitsImplementing<IValidateOrder>(), orderManager, clientId);
ResolveOrder(order, world.OrderValidators, orderManager, clientId);
else
{
// PERF: Cache the result of TraitsImplementing as we are likely to use it for several order subjects
var validateOrders = world.WorldActor.TraitsImplementing<IValidateOrder>().ToArray();
foreach (var subject in order.GroupedActors)
ResolveOrder(Order.FromGroupedOrder(order, subject), validateOrders, orderManager, clientId);
}
ResolveOrder(Order.FromGroupedOrder(order, subject), world.OrderValidators, orderManager, clientId);
break;
}