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
Domain
object- 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
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.
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 oldSession
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 useOnEntityUpdatePose
.
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 whichISystem
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
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
OnInit
event is provided onIConjureKit
to be notified on completion for all modulesOnInit
event is provided onIConjureKitModule
to 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
onComplete
action parameter is now available forConjureKit.Connect()
; this callback, if specified, will be executed right beforeConjureKit.OnJoined
is invoked; the sameSession
argument is given to theonComplete
as to theOnJoined
subscription
Make Obsolete all
XXXComponent()
functions fromIConjureKit
. They should now be used fromSession
GetComponents()
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
GetComponentTypeIdCached
to convert in O(1) time an id from a name
Moved Entity and Participant related functions away from
IConjureKit
toSession
- Moved
AddEntity
,DeleteEntity
,UpdateEntityPose
GetParticipants()
is now theParticipants
dictionary 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)
wheresessionId
is the ID of the current session no longer results in disconnection AukiDebug.LogWarning
now produces an alert triangle in the Unity editorAukiDebug.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 theSession
variable is non-null; theOnJoined
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 theOnParticipantLeft
callbacks (2), third the state is changed toDisconnected
(3), fourth theOnLeft()
callback is invoked (4); the previous order was 3 -> 2 -> 1 -> 4 AukiDebug.Log
has been removed, andAukiDebug.LogInformation
has been renamedAukiDebug.LogInfo
Auki.Util.LogLevel.INFORMATION
has been renamed toINFO
AukiDebug
log messages consistently useAukiDebug.LogInfo
instead 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