void Start() { // Extra logging is enabled because, as of build 1159, there is a NEW bug with object ownership transfer // that is still causing players to not properly transfer ownership. Repro: a lot of players join a world an once with this pool debug._u_Log("[Slot] " + gameObject.name + " Start"); pool = transform.parent.GetComponent <SlotPool>(); dataObjects = new UdonSharpBehaviour[transform.childCount]; for (int i = 0; i < dataObjects.Length; i++) { dataObjects[i] = (UdonSharpBehaviour)(transform.GetChild(i).GetComponent(typeof(UdonSharpBehaviour))); } startFinished = true; // If you're the first person in the instance, dummy serialize once so buffered deserializations can be // counted by slots for all late joiners to know when full deserialization is complete. if (Networking.IsMaster) { bufferedDeserializationFinished = true; dataObjectsDeserializationFinished = true; pool._u_ReportBufferedDeserialization(); RequestSerialization(); } else { _u_TryReportBufferedDeserialization(); } }
void _u_TryReportBufferedDeserialization() { debug._u_Log("[Slot] " + gameObject.name + " _u_TryReportBufferedDeserialization"); if (!dataObjectsDeserializationFinished && startFinished && bufferedDeserializationFinished && dataObjectDeserializationCount == dataObjects.Length) { dataObjectsDeserializationFinished = true; //debug._u_Log("[Slot] " + gameObject.name + " reporting buffered deserialization to pool"); pool._u_ReportBufferedDeserialization(); } }