Prevent multiple Transforms from triggering in the same tick.
This leads to actor duplication.
This commit is contained in:
@@ -42,6 +42,7 @@ namespace OpenRA
|
||||
public Player Owner { get; internal set; }
|
||||
|
||||
public bool IsInWorld { get; internal set; }
|
||||
public bool WillDispose { get; private set; }
|
||||
public bool Disposed { get; private set; }
|
||||
|
||||
public Activity CurrentActivity { get; private set; }
|
||||
@@ -284,6 +285,9 @@ namespace OpenRA
|
||||
if (CurrentActivity != null)
|
||||
CurrentActivity.RootActivity.OnActorDisposeOuter(this);
|
||||
|
||||
// Allow traits/activities to prevent a race condition when they depend on disposing the actor (e.g. Transforms)
|
||||
WillDispose = true;
|
||||
|
||||
World.AddFrameEndTask(w =>
|
||||
{
|
||||
if (Disposed)
|
||||
|
||||
Reference in New Issue
Block a user