OnOwnershipTransferred()
does not fire at
OnPlayerLeft()
if last owner is passive change.
It only fires if SetOwner() is used after OnOwnershipTransferred().
This can break some behabiour such as owner change detection.
Reproduction:
  1. Create an Udon that implements event detection (such as printing to UI.Text) at
    OnOwnershipTransferred()
    and
    OnPlayerLeft()
    .
  2. Put the Udon to object.
  3. Do
    Build & Test
    and run 2 or more clients.
  4. After every clients are in the instance, close one client that is current object owner.
  5. Observe the result.
Expected results: Leaving the current owner fires
OnOwnershipTransferred()
on other clients so the clients can detect owner changing.
Actual results: Leaving the current owner does not fire
OnOwnershipTransferred()
on other clients, and its owner is silently changed.
---
Picture 1: Event log by the joining player. The last owner leaves after getting the owner with SetOwner. The event is fired to the joining player.
Picture 2: Event log by the joining player. The last owner leaves without using SetOwner. The event is not fired for the joining player.
---
Build: 1258
SDK World: 3.1.10