Cache IOrderValidator traits on World
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user