Normcore Unity SDK - Changelog

This changelog’s format is based on Keep a Changelog and Normcore adheres to Semantic Versioning.


[2.3.2] - 2022-09-12

Normcore 2.3.2-rc.1 is released as v 2.3.2

[2.3.2-rc.1] - 2022-09-06

Fixed

  • Fix bug where RealtimeView scene view lifetime flags were not correctly migrated from obsolete serialized properties.

[2.3.1] - 2022-09-06

Normcore 2.3.1-rc.1 is released as v 2.3.1

[2.3.1-rc.1] - 2022-08-17

Fixed

  • Fix bug where Unity could initialize Normcore before ScriptableObject Types were properly loaded.

[2.3.0] - 2022-07-29

Normcore 2.3.0-rc.4 is released as v 2.3.0

[2.3.0-rc.4] - 2022-07-19

Fixed

  • Fix bug where RealtimeTransform could get initialized incorrectly on remote clients.

  • Automatically reject room names that are longer than 512 characters instead of waiting for the server to reject them.

[2.3.0-rc.3] - 2022-06-13

Added

  • Add toggle in Window/Normcore/Warnings to silence warnings about no Realtime instances in the scene.

  • Add RealtimeView#didReplaceAllComponentModels event, emitted after a view has visited & replaced all of its component models.

  • Change position/rotation/scale sync masking on RealtimeTransform to be networked properties.

  • Add RealtimeTransform#SyncPosition(bool), RealtimeTransform#SyncRotation(bool), RealtimeTransform#SyncScale(bool) for changing the sync mask at runtime.

  • Add RealtimeTransform#isSyncingTransform and RealtimeTransform#SyncTransform(bool) for managing the position/rotation/scale sync masks at the same time.

Fixed

  • Fix bug where unowned rigidbodies never go to sleep.

[2.3.0-rc.2] - 2022-05-18

Added

  • Expose ReadStruct/WriteStruct serialization methods for all supported types.

[2.3.0-rc.1] - 2022-05-09

Added

  • Add Room.ConnectOptions API for passing options to connect operations on Realtime and Room.

  • Add support for Normcore Private webhooks via the public SDK.

  • Expose ReadStruct/WriteStruct serialization methods for all supported types.

[2.2.3] - 2022-04-18

Fixed

  • Fix incompatible import in Unity 2021 and newer.

[2.2.3] - 2022-04-18

Fixed

  • Fix incompatible import in Unity 2021 and newer.

[2.2.2] - 2022-04-13

Fixed

  • Fix DLL collision issue in Android builds.
  • Fix Android arm64 native plugin meta file in Unity 2018.

[2.2.1] - 2022-04-12

Added

  • Add RealtimeView#ownerIDSelfDidChange, RealtimeComponent#ownerIDSelfDidChange, and RealtimeModel#ownerIDSelfDidChange events.

Fixed

  • Fix bug where negative sbyte could serialize with incorrect length.
  • Fix incompatible import in Unity 2021 and newer.

[2.1.11] - 2022-02-03

Fixed

  • Improve RealtimeAvatarVoice.Update() performance by improving the audio encoder locking mechanism in the native plugin.

[2.1.10] - 2021-10-13

Fixed

  • Fix bug where calling the Room.Connect API directly would result in a null RealtimePrefabDelegate implementation instead of the default. (edited)

[2.1.9] - 2021-09-26

Fixed

  • Fix a bug where RealtimeTransform would set local transform instead of world transform after instantiation.

  • Fix race condition where a property update that occurs locally before a previous in-flight update is received would cause the model value to flip back to the in-flight value.

[2.1.8] - 2021-07-22

Fixed

  • Fix a ReadStream exception that could be thrown when two clients attempt to connect to the same room at the exact same time.

[2.1.7] - 2021-07-17

Added

  • Add support for arm64 / Apple Silicon builds on macOS.

[2.1.6] - 2021-07-14

Fixed

  • Improve OnAudioFilterRead performance for devices with bad memory barrier performance. (namely Oculus Quest 1)
  • Tweak Opus DTX settings to be more bandwidth efficient.

[2.1.5] - 2021-06-02

Fixed

  • Fix bug with double deserialization.

[2.1.4] - 2021-06-02

Added

  • Add error log if Realtime#Connect is called after the Realtime instance as been destroyed.

Fixed

  • Fix bug where instantiating and destroying a realtime prefab before it was confirmed by the server would cause a serialization exception.
  • Fix bug in Realtime.Instantiate() that would cause destroyWhenX APIs to not function correctly when trying to make objects persist.
  • Fix inspector drawing scene view controls on prefab views.

[2.1.3] - 2021-05-26

Fixed

  • Remove log level DLL variants that were preventing Unity from building on Android.

[2.1.2] - 2021-05-25

Fixed

  • Fix infinite recursion in RealtimeViewEditor .

[2.1.1] - 2021-05-25

Fixed

  • Fix native bundle issue on Mac.

[2.1.0] - 2021-05-25

Added

  • Add RealtimeModel#room and RealtimeModel#isRoomConnected getters for easier room access from models.
  • Add RealtimeView#isPrefabView and RealtimeView#isSceneView getters for checking child views.
  • Add RealtimeView#GetParentView() and RealtimeView#GetRootView() for finding the parent/root views of a view.
  • Add TryGetValue , ContainsKey , and Contains to RealtimeDictionary.
  • Add destroyWhenOwnerLeaves and destroyWhenLastClientLeaves to RealtimeView and RealtimeModel .
  • Add new Realtime.Instantiate signature with Realtime.InstantiateOptions parameter.
  • Add error log when lifetime flags are modified on a model with no meta-model.
  • Add joinRoomOnStart and roomToJoinOnStart getters so that applications can query whether Realtime is configured to join a room on start.
  • Add “Destroy” button to the RealtimeView inspector on the root realtime view of a prefab to make it easier to clean up persistent realtime prefabs.
  • Add multi-object editing support to the RealtimeTransform inspector.
  • Add inline documentation to all public C# APIs and include XML docs file for C# IDEs.
  • Add IRealtimePrefabLoadDelegate and IRealtimePrefabInstantiateDelegate interfaces to support hooking realtime prefab loading and instantiation.
  • Add property serializer classes to simplify autogenerated model code and improve memory/performance.

Changed

  • Change Realtime#Connect to go into an error state if the room name or app key is empty.
  • Update RealtimeAvatarVoice to automatically request microphone permissions on Android.
  • Change RealtimeModel#isPersistent to use current ownership to determine if it is persistent.
  • Realtime collections now throw an error if the child model already exists in the datastore.
  • Unsupported versions of Realtime.Instantiate and Realtime.Destroy now create compiler errors.
  • Deprecate Realtime.Instantiate overloads that use destroyWhenOwnerOrLastClientLeaves .
  • Deprecate destroyWhenOwnerOrLastClientLeaves , which can cause a scene view to be destroyed while clients are still in the room. The property has been split into destroyWhenOwnerLeaves and destroyWhenLastClientLeaves . Old clients setting the deprecated property will still work, but they will not see changes from the new properties. Use the new Realtime.Instantiate method signature to instantiate prefabs with the split lifetime flags.

Fixed

  • Fix issue with RealtimeView#destroyWhenOwnerOrLastClientLeaves not forwarding the setter to the model.
  • Fix issue with high CPU usage in RealtimeAvatarVoice on Quest and Quest 2.
  • Fix issue with RealtimeSet where serializing a newly created collection for the first time will only send one item to the server.
  • Fix issue where RealtimeView on a deeply nested game object could end up as the child to two parent views.
  • Fix StringKeyDictionary enumerator signature to iterate through string keys instead of internal ID keys.
  • Fix issue where calling Realtime#Connect inside of Realtime#didConnectToRoom event handler would crash Unity.
  • Fix issue where datastore snapshots larger than 125kb would prevent a new client from connecting to a room.
  • Fix issue where Realtime would try to destroy null game objects after scene unloads.
  • Fix issue where Normcore 1 migration window would show on new projects.
  • Fix SimpleJSON to use all System namespace types explicitly to avoid conflicts if a type with the same name is defined in the global namespace.
  • Fix issue in native plug-in that would cause occasional crashes on macOS when connecting to a room.
  • Fix issue where the internal settings asset would throw an exception while the asset database was loading.
  • Fix warning in RealtimeAvatarManager about using deprecated API.

Removed

  • Remove public parent constructor from autogenerated RealtimeModel code.

[2.0.3] - 2020-11-13

Fixed

  • Fix exception on RealtimeSet#modelRemoved when event is null.
  • Fix issue introduced in 2.0.2 with RealtimeTransform on scene views not initializing correctly.

[2.0.2] - 2020-11-09

Added

  • Add preventOwnershipTakeover and destroyWhenOwnerOrLastClientLeaves properties to RealtimeView .
  • Add support for macOS 10.13 & 10.14 (High Sierra & Mojave).
  • Notarize native plugin on macOS.

Fixed

  • Add Lumin SDK to list of supported platforms for native plugin to fix Magic Leap support.
  • Fix null realtimeView references on disabled game objects.

[2.0.1] - 2020-10-26

Added

  • Add “Never Ask Again” option when Normcore alerts you to a new version.

Fixed

  • Fix thread error when a RealtimeTransform is garbage collected off the main thread.

[2.0.0] - 2020-10-16

Initial changelog release.