Skip to main content

Changelog

    _       _   _   _         _            
/_\ _ _| |_(_) | | __ _| |__ ___
/ _ | || | / | | | |__/ _` | '_ (_-<
/_____\_,_|_\_|__ |____\__,_|_.__/___ _
/ __|___ _ _ (_)_ _ _ _ ___| |/ (_| |_
| (__/ _ | ' \ | | || | '_/ -_| ' <| | _|
\___\___|_||__/ |\_,_|_| \___|_|\_|_|\__|
|__/

All notable changes to ConjureKit will be documented in this file.

Latest release

ConjureKit [0.6.82] - 2024-04-29

Added

  • Domains and Domain SDK: massive functionality addition to Conjurekit via IDomainSDK interface. Read about it here!.
  • Property DdsUri added to configuration: this is used to find the DDS Server.
  • [beta] Run Conjurekit offline with 'Offline' Hagall mode: can be activated using configuration uri 'offline'. This is still experimental.
  • Internal SDK telemetry support for error reporting and usage statistics

Fixed

  • Bugs fixed related on connection/socket and session joining
  • IsInitialized not working as expected

Removed

  • Static method Conjurekit.Get() has been removed. Supported ways of obtaining a configuration now are:
    • Static method ConjurekitConfiguration.TryGet(url) - will parse and return a ConjureKitConfiguration object from your url
    • Static method ConjurekitConfiguration.TryGet() - will parse and return a ConjureKitConfiguration object from ConjurekitConfiguration.DefaultConfigUri
    • _yourConjurekitInstance.GetConfiguration() - will return the configuration currently set on your instance
  • Directly passing a url to _yourConjurekitInstance.Init(url) or _yourConjurekitInstance.Connect(url) will do the above steps for you.

Previous releases

ConjureKit [0.6.69] - 2024-01-25

Fixed

  • Restore a case where the JoinedSession state was not set but directly skipped

Added

  • Released a utility class "AtomicConditionVariable" which allows guarding code for thread-safe execution without blocking threads

ConjureKit [0.6.44] - 2023-12-20

Added

  • Added function InitRequired which determines if ConjureKit and all of its modules require initialization.
  • Added Tag to Session object: Write-once string that marks the connection origin of the Session
  • Added support for Hagall network metrics, whose parameters are now added in the configuration:
    • PmsUri: The URI for the posemesh metrics service
    • PingInterval: Ping interval for PMS
    • PmsFirstReportInterval: Time until the first report for PMS is sent after connecting
    • PmsNextReportInterval: Time until successive (after the first) reports for PMS are sent
    • PmsMessageTypes: Hagall message types that will also be used to track latency
  • Added inline documentation for developers: now SDK has full code XML documentation visible from the code

Fixed

  • Fixed an error on the Socket when being closed incorrectly
  • Improved information on errors being logged

ConjureKit [0.6.44] - 2023-10-20

Fixed

  • Fixed an ECS bug appearing when deleting a component from Entity.
  • Improved handling high number of parallel network requests (10000+)
  • Fixed WebSocket hanging issues which blocked the main thread when emitting exceptions

ConjureKit [0.6.31] - 2023-09-18

Added

  • The SetHagallMinVersion() method was added, where a specific supported version of Hagall can be set by the user.
  • Add line numbers to AukiDebug.LogError() messages

Changed

  • Updated the behavior of the OnLeft event: this is still called after the Session is left. However, it provides as an argument an inert copy of the old Session object in its state before the Session was left. This allows us to retain this information after leaving.
  • Moved the com.aukilabs.unity.util package as part of the ConjureKit module.

Fixed

  • Fixed an ECS bug appearing when dealing with entities owned by self.
  • Fixed other minor bugs related to ECS and Hagall

Removed

  • The OnEntityUpdatePoseWithTimestamp event was removed since it is redundant and the Timestamp is not used. Simply use OnEntityUpdatePose.

ConjureKit [0.6.14] - 2023-04-27

Added

  • Added core ECS System support
    • ISystem introduced as the interface for a System managing EntityComponents in a Session
    • Introduced SystemManager to which ISystem need to be registered
    • Systems and SystemManager will be created and started on each new Session

Changed

  • A module startup is now made of three steps

    1. construction: this can now happen offline

    2. initialization (new): sets up the module with a given configuration. This can happen both offline (if a ConjureKitConfiguration object is provided) or online (given a configuration URL). Does not need to be explicit, since this step is automatically performed on the connection stage if needed.

    • You can trigger this anytime using IConjureKit.Init()
    • It will actually take effect only if a change in configuration is detected
    • OnInit event is provided on IConjureKit to be notified on completion for all modules
    • OnInit event is provided on IConjureKitModule to be notified on completion for a specific module
    1. connection: online only, just like before. You can also provide a configuration or configuration URL at this stage, triggering a preemptive initialization if needed.
    • No configuration will mean the default configuration (or the one set before) will be used.
    • New overloads of the IConjureKit.Connect() are provided to support a configuration
    • An optional onComplete action parameter is now available for ConjureKit.Connect(); this callback, if specified, will be executed right before ConjureKit.OnJoined is invoked; the same Session argument is given to the onComplete as to the OnJoined subscription
  • Make Obsolete allXXXComponent() functions from IConjureKit. They should now be used from Session

    • GetComponents() will force trigger the latest state from the server, while GetComponentsCached() will O(1) return the current local state
    • Now ComponentTypeId (uint) and ComponentTypeName (string) can be used interchangeably
    • Added a utility function GetComponentTypeIdCached to convert in O(1) time an id from a name
  • Moved Entity and Participant related functions away from IConjureKit to Session

    • Moved AddEntity, DeleteEntity, UpdateEntityPose
    • GetParticipants() is now the Participants dictionary property

ConjureKit [0.5.51] - 15-03-2023

Added

  • WebSocket recycling between sessions for sessions taking place on the same node
  • Network Quality metrics in Hagall, measuring package round-trip time in milliseconds (RTT), with MeasurePing() and GetNetworkQuality(). The report covers:
    • average RTT
    • last sample RTT
    • longest RTT
    • shortest RTT
    • average RTT for the last 10 samples
  • Initializing state in Conjurekit: ConjureKit can now be instantiated offline without a configuration object and will automatically try to fetch its configuration object the first time ConjureKit.Connect() is called while changing its state to State.Initializing; use a manually set configuration URL by calling ConjureKit.Init(your_favorite_config_url) before calling ConjureKit.Connect()
  • Device offsets are downloaded at runtime to allow for continuously improving the calibration of specific devices

Changed

  • Newtonsoft Json is being used now for configuration

Fixed

  • Error messages refactoring
  • Various Hagall bugfixes
    • OnDestroy() callback on Hagall
    • Missing request Id
    • RequestManager can be interrupted by WsClient being stopped or in error
  • Race condition between camera calibration and participant entity being created (causing a bug in Odal) for Calibrated state.

Deprecated

  • AukiDebug.LogInformation() has been deprecated in favour of AukiDebug.LogInfo()

ConjureKit [0.5.24] - 2022-11-09

Fixed

  • Bugfix for ConjureKit.Connect() when given a null sessionId
  • Calling ConjureKit.Connect(sessionId) where sessionId is the ID of the current session no longer results in disconnection
  • AukiDebug.LogWarning now produces an alert triangle in the Unity editor
  • AukiDebug.LogError now produces a red stop sign in the Unity editor
  • ConjureKit's state is initialized to Disconnected at startup instead of Connecting

Changed

  • If ConjureKit.Connect() fails, it now calls the onError callback before resetting the state to Disconnected
  • ConjureKit now waits to set its state to JoinedSession until the Session variable is non-null; the OnJoined callback now occurs immediately after this state change
  • The order of deletions and state changes upon leaving a session has changed: first, one receives all of the OnEntityDeleted callbacks (1), second one receives all of the OnParticipantLeft callbacks (2), third the state is changed to Disconnected (3), fourth the OnLeft() callback is invoked (4); the previous order was 3 -> 2 -> 1 -> 4
  • AukiDebug.Log has been removed, and AukiDebug.LogInformation has been renamed AukiDebug.LogInfo
  • Auki.Util.LogLevel.INFORMATION has been renamed to INFO
  • AukiDebug log messages consistently use AukiDebug.LogInfo instead of AukiDebug.LogDebug (i.e., the INFO priority level of logging instead of the DEBUG priority level)

ConjureKit [0.5.0] - 2022-10-17

Added

  • ConjureKit constructor takes a camera transform.

Changed

  • Removed dependency on ARFoundation
  • Updated namespace to Auki.ConjureKit.*
  • Updated package name and description
  • Updated samples