Skip to content

Outline auto-removal bug [Mac] #59

@KSunyo

Description

@KSunyo

Describe the bug
There seems to be a bug present in certain builds that affects outline removal. It is possible to have the outline effect on multiple objects, even though that's unexpected.

To Reproduce
Steps to reproduce the behavior: (use MAC build)

  1. Go to for example walls
  2. Place some walls
  3. Quickly move mouse over walls or other objects
  4. See error (multiple objects with outline)

Expected behavior
It is expected to work on mac as it works on other builds.

Screenshots

Desktop (please complete the following information):

  • OS: MacOS 15.6.1
  • Program Version: latest Dev build (26.01.26)

Additional context
I've been trying to find the underlying issue and so far my best guess is that it is due to a race condition between AddObject and RemoveObject (OutlineCoordinator.cs). In the Unity editor these methods seem to be periodically recalled every 1 second, however on mac, on an initial hover it just spams my console. After hover = false it seems like it applies the outline one more time right after removal:

Example log:

Removed outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

Added outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

Added outline for X: 3 Y: 2
Wooden wall
Reversed = True
Slope = 0

Seems like it also adds the outline 3 times and removes it once after those 3 times.

Example log:

Added outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

Added outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

Added outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

Removed outline for X: 2 Y: 2
Wooden wall
Reversed = False
Slope = 0

In the editor it seems the outline's are reapplied every second and in proper add/remove pairs:

Adding Neutral to X: 9 Y: 2
Wooden wall
Reversed = False
Slope = 0
UnityEngine.Debug:Log (object)
Warlander.Deedplanner.Logic.OutlineCoordinator:AddObject (Warlander.Deedplanner.Data.DynamicModelBehaviour,Warlander.Deedplanner.Logic.OutlineType,int) (at Assets/Warlander/Deedplanner/Logic/OutlineCoordinator.cs:38)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:RenderRaytrace () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:461)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:OnRenderObject () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:444)

Removing X: 9 Y: 2
Wooden wall
Reversed = False
Slope = 0 from Wooden_Wall(Clone) (UnityEngine.GameObject)
UnityEngine.Debug:Log (object)
Warlander.Deedplanner.Logic.OutlineCoordinator:RemoveObject (Warlander.Deedplanner.Data.DynamicModelBehaviour,int) (at Assets/Warlander/Deedplanner/Logic/OutlineCoordinator.cs:74)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:OnPostRender () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:545)

Adding Neutral to X: 9 Y: 2
Wooden wall
Reversed = False
Slope = 0
UnityEngine.Debug:Log (object)
Warlander.Deedplanner.Logic.OutlineCoordinator:AddObject (Warlander.Deedplanner.Data.DynamicModelBehaviour,Warlander.Deedplanner.Logic.OutlineType,int) (at Assets/Warlander/Deedplanner/Logic/OutlineCoordinator.cs:38)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:RenderRaytrace () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:461)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:OnRenderObject () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:444)

Removing X: 9 Y: 2
Wooden wall
Reversed = False
Slope = 0 from Wooden_Wall(Clone) (UnityEngine.GameObject)
UnityEngine.Debug:Log (object)
Warlander.Deedplanner.Logic.OutlineCoordinator:RemoveObject (Warlander.Deedplanner.Data.DynamicModelBehaviour,int) (at Assets/Warlander/Deedplanner/Logic/OutlineCoordinator.cs:74)
Warlander.Deedplanner.Logic.Cameras.MultiCamera:OnPostRender () (at Assets/Warlander/Deedplanner/Logic/Cameras/MultiCamera.cs:545)

@Warlander Let me know if based on this you have any idea what could be causing this issue, I haven't looked too much yet at how these methods are called, but will check it more today. Also if you want any logs from my tests let me know, I can also modify what to look for.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions