Changelog
_ _ _ _ _
/_\ _ _| |_(_) | | __ _| |__ ___
/ _ | || | / | | | |__/ _` | '_ (_-<
/_____\_,_|_\_|__ |____\__,_|_.__/___ _
/ __|___ _ _ (_)_ _ _ _ ___| |/ (_| |_
| (__/ _ | ' \ | | || | '_/ -_| ' <| | _|
\___\___|_||__/ |\_,_|_| \___|_|\_|_|\__|
|__/
All notable changes to ConjureKit will be documented in this file.
Latest release
Conjurekit [0.6.89] - 2024-08-12
Added
- Batch data endpoints, accessible from the
Domainobject- Any batch request with an array, as a result, will be expected to return values in the same order given as the input, returning empty or null objects for missing or invalid results (documentation has been updated to report this)
- Added BatchResultMode enum to define failing behaviors on batch operations
- DDS access is performed as soon as possible so that Domain access will be faster the first time
Fixed
- Using a specific instance id for internal SDK Amplitude logging
- Removed data serialization on MultiPart messages when logging Trace messages
- Allowing Domain API to support Lighthouses without Organisation
Previous releases
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
DdsUriadded 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
IsInitializednot 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.
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
InitRequiredwhich determines if ConjureKit and all of its modules require initialization. - Added
Tagto 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
OnLeftevent: this is still called after the Session is left. However, it provides as an argument an inert copy of the oldSessionobject in its state before the Session was left. This allows us to retain this information after leaving. - Moved the
com.aukilabs.unity.utilpackage 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
OnEntityUpdatePoseWithTimestampevent was removed since it is redundant and the Timestamp is not used. Simply useOnEntityUpdatePose.
ConjureKit [0.6.14] - 2023-04-27
Added
- Added core ECS System support
ISystemintroduced as the interface for a System managing EntityComponents in a Session- Introduced
SystemManagerto whichISystemneed 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
construction: this can now happen offline
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
OnInitevent is provided onIConjureKitto be notified on completion for all modulesOnInitevent is provided onIConjureKitModuleto be notified on completion for a specific module
- 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
onCompleteaction parameter is now available forConjureKit.Connect(); this callback, if specified, will be executed right beforeConjureKit.OnJoinedis invoked; the sameSessionargument is given to theonCompleteas to theOnJoinedsubscription
Make Obsolete all
XXXComponent()functions fromIConjureKit. They should now be used fromSessionGetComponents()will force trigger the latest state from the server, whileGetComponentsCached()will O(1) return the current local state- Now
ComponentTypeId(uint) andComponentTypeName(string) can be used interchangeably - Added a utility function
GetComponentTypeIdCachedto convert in O(1) time an id from a name
Moved Entity and Participant related functions away from
IConjureKittoSession- Moved
AddEntity,DeleteEntity,UpdateEntityPose GetParticipants()is now theParticipantsdictionary property
- Moved
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()andGetNetworkQuality(). 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 toState.Initializing; use a manually set configuration URL by callingConjureKit.Init(your_favorite_config_url)before callingConjureKit.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 ofAukiDebug.LogInfo()
ConjureKit [0.5.24] - 2022-11-09
Fixed
- Bugfix for
ConjureKit.Connect()when given a null sessionId - Calling
ConjureKit.Connect(sessionId)wheresessionIdis the ID of the current session no longer results in disconnection AukiDebug.LogWarningnow produces an alert triangle in the Unity editorAukiDebug.LogErrornow 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
JoinedSessionuntil theSessionvariable is non-null; theOnJoinedcallback 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
OnEntityDeletedcallbacks (1), second one receives all of theOnParticipantLeftcallbacks (2), third the state is changed toDisconnected(3), fourth theOnLeft()callback is invoked (4); the previous order was 3 -> 2 -> 1 -> 4 AukiDebug.Loghas been removed, andAukiDebug.LogInformationhas been renamedAukiDebug.LogInfoAuki.Util.LogLevel.INFORMATIONhas been renamed toINFOAukiDebuglog messages consistently useAukiDebug.LogInfoinstead ofAukiDebug.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