From 001b24b41477863cce7d4f21745ad236dcdd6534 Mon Sep 17 00:00:00 2001 From: u15767 Date: Tue, 25 Jan 2022 11:30:46 +0100 Subject: [PATCH] updated to new API version --- Editor/CreateARTrackable.cs | 173 +++---- Plugins/JsonSubTypes.dll.meta | 2 +- Plugins/Newtonsoft.Json.dll.meta | 2 +- Plugins/Org.OpenAPITools.dll | Bin 45056 -> 63488 bytes Plugins/Org.OpenAPITools.dll.meta | 2 +- Plugins/Org.OpenAPITools.xml | 767 +++++++++++++++++++++++------- Plugins/RestSharp.dll.meta | 2 +- Scripts/RESTRequest.cs | 77 ++- 8 files changed, 717 insertions(+), 308 deletions(-) diff --git a/Editor/CreateARTrackable.cs b/Editor/CreateARTrackable.cs index 75a6dc4..59ccab2 100644 --- a/Editor/CreateARTrackable.cs +++ b/Editor/CreateARTrackable.cs @@ -2,100 +2,107 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; +using UnityEngine.UIElements; public class CreateARTrackable : EditorWindow { - bool groupEnabled; - - string uid = "0"; - string basePath = "http://localhost:8080"; - string type = "?"; - string unit = "?"; - Vector2Int dim; - - [MenuItem("ISG-ARF/AR Trackables and Anchors Editor")] - public static void ShowWindow() - { - EditorWindow.GetWindow(typeof(CreateARTrackable), false, "ETSI ARF - Authoring Editor"); - } - - void OnGUI() - { - Color ori = GUI.backgroundColor; - Color button = new Color(0.5f, 1, 0); - GUILayoutOption[] opt = new GUILayoutOption[] { null }; - - // Title - GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel); - GUILayout.Label("BSD 3-Clause License"); - GUILayout.Label("Copyright(c) 2022, ETSI"); - - EditorGUILayout.Space(); - basePath = EditorGUILayout.TextField("Base Path", basePath); - - EditorGUILayout.Space(); - GUILayout.Label("AR Trackable:", EditorStyles.boldLabel); - GUILayout.BeginVertical("", "window"); + bool groupEnabled; + + string uid = "0"; + string basePath = "http://localhost:8080"; + string type = "?"; + string unit = "?"; + Vector2Int dim; + + [MenuItem("ISG-ARF/AR Trackables and Anchors Editor")] + public static void ShowWindow() { - uid = EditorGUILayout.TextField("Creator UID", uid); - GUILayout.Button("Generate UID"); - - EditorGUILayout.Space(); - GUILayout.Label("Metadata:", EditorStyles.boldLabel); - type = EditorGUILayout.TextField("Trackable Type", type); - unit = EditorGUILayout.TextField("Unit System", unit); - - EditorGUILayout.Space(); - dim = EditorGUILayout.Vector2IntField("Dimension", dim); - - EditorGUILayout.Space(); - GUILayout.Button("Payload from File.."); - - EditorGUILayout.Space(); - GUILayout.Label("Optional Parameters:", EditorStyles.boldLabel); - //GUILayout.BeginVertical("Optional Parameters", "window"); - { - groupEnabled = EditorGUILayout.BeginToggleGroup("Key Values", groupEnabled); - EditorGUILayout.IntField("Number of KeyValues", 0); - EditorGUILayout.Space(); - EditorGUILayout.TextField("Key", ""); - EditorGUILayout.TextField("Value", ""); - EditorGUILayout.EndToggleGroup(); - } - //GUILayout.EndVertical(); + EditorWindow wnd = GetWindow(); + wnd.titleContent = new GUIContent("ETSI ARF - Authoring Editor"); } - GUILayout.EndVertical(); - GUI.backgroundColor = button; - if (GUILayout.Button("Create Trackable")) + /*public void CreateGUI() { - RESTRequest.PostAddTrackable(basePath); - Debug.Log("PostAddTrackable"); - } - GUI.backgroundColor = ori; + rootVisualElement.Add(new Label("Hello")); + }*/ - EditorGUILayout.Space(); - GUILayout.Label("AR World Anchor:", EditorStyles.boldLabel); - GUILayout.BeginVertical("", "window"); + void OnGUI() { - uid = EditorGUILayout.TextField("Creator UID", uid); - GUILayout.Button("Generate UID"); + Color ori = GUI.backgroundColor; + Color button = new Color(0.5f, 1, 0); + GUILayoutOption[] opt = new GUILayoutOption[] { null }; - EditorGUILayout.Space(); - GUILayout.Label("Metadata:", EditorStyles.boldLabel); - type = EditorGUILayout.TextField("Anchor Type", type); - unit = EditorGUILayout.TextField("Unit System", unit); - } - GUILayout.EndVertical(); + // Title + GUILayout.Label("Augmented Reality Framework", EditorStyles.boldLabel); + GUILayout.Label("BSD 3-Clause License"); + GUILayout.Label("Copyright(c) 2022, ETSI"); - GUI.backgroundColor = button; - if (GUILayout.Button("Create Anchor")) - { - RESTRequest.PostAddWorldAnchor(basePath); - Debug.Log("PostAddWorldAnchor"); - } - GUI.backgroundColor = ori; - } + EditorGUILayout.Space(); + basePath = EditorGUILayout.TextField("Base Path", basePath); + + EditorGUILayout.Space(); + GUILayout.Label("AR Trackable:", EditorStyles.boldLabel); + GUILayout.BeginVertical("", "window"); + { + uid = EditorGUILayout.TextField("Creator UID", uid); + GUILayout.Button("Generate UID"); + + EditorGUILayout.Space(); + GUILayout.Label("Metadata:", EditorStyles.boldLabel); + type = EditorGUILayout.TextField("Trackable Type", type); + unit = EditorGUILayout.TextField("Unit System", unit); + + EditorGUILayout.Space(); + dim = EditorGUILayout.Vector2IntField("Dimension", dim); + + EditorGUILayout.Space(); + GUILayout.Button("Payload from File.."); + + EditorGUILayout.Space(); + GUILayout.Label("Optional Parameters:", EditorStyles.boldLabel); + //GUILayout.BeginVertical("Optional Parameters", "window"); + { + groupEnabled = EditorGUILayout.BeginToggleGroup("Key Values", groupEnabled); + EditorGUILayout.IntField("Number of KeyValues", 0); + EditorGUILayout.Space(); + EditorGUILayout.TextField("Key", ""); + EditorGUILayout.TextField("Value", ""); + EditorGUILayout.EndToggleGroup(); + } + //GUILayout.EndVertical(); + } + GUILayout.EndVertical(); + + GUI.backgroundColor = button; + if (GUILayout.Button("Create Trackable")) + { + RESTRequest.PostAddTrackable(basePath); + Debug.Log("PostAddTrackable"); + } + GUI.backgroundColor = ori; + EditorGUILayout.Space(); + GUILayout.Label("AR World Anchor:", EditorStyles.boldLabel); + GUILayout.BeginVertical("", "window"); + { + uid = EditorGUILayout.TextField("Creator UID", uid); + GUILayout.Button("Generate UID"); + + EditorGUILayout.Space(); + GUILayout.Label("Metadata:", EditorStyles.boldLabel); + type = EditorGUILayout.TextField("Anchor Type", type); + unit = EditorGUILayout.TextField("Unit System", unit); + } + GUILayout.EndVertical(); + + GUI.backgroundColor = button; + if (GUILayout.Button("Create Anchor")) + { + RESTRequest.PostAddWorldAnchor(basePath); + Debug.Log("PostAddWorldAnchor"); + } + GUI.backgroundColor = ori; + } + } diff --git a/Plugins/JsonSubTypes.dll.meta b/Plugins/JsonSubTypes.dll.meta index 0746bdf..64dc94c 100644 --- a/Plugins/JsonSubTypes.dll.meta +++ b/Plugins/JsonSubTypes.dll.meta @@ -7,7 +7,7 @@ PluginImporter: executionOrder: {} defineConstraints: [] isPreloaded: 0 - isOverridable: 0 + isOverridable: 1 isExplicitlyReferenced: 0 validateReferences: 1 platformData: diff --git a/Plugins/Newtonsoft.Json.dll.meta b/Plugins/Newtonsoft.Json.dll.meta index c6bb8f7..d77fb2a 100644 --- a/Plugins/Newtonsoft.Json.dll.meta +++ b/Plugins/Newtonsoft.Json.dll.meta @@ -7,7 +7,7 @@ PluginImporter: executionOrder: {} defineConstraints: [] isPreloaded: 0 - isOverridable: 0 + isOverridable: 1 isExplicitlyReferenced: 0 validateReferences: 1 platformData: diff --git a/Plugins/Org.OpenAPITools.dll b/Plugins/Org.OpenAPITools.dll index 8e52cd7913fcd4b3cf35cd6f46642bced3278c77..c7d871049a4b55c26cec01772ae43771a72c3f71 100644 GIT binary patch literal 63488 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 literal 45056 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.OpenAPITools - + Represents a collection of functions to interact with the API endpoints @@ -31,120 +31,134 @@ Provides a factory method hook for the creation of exceptions. - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) string - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) ApiResponse of string - + - Create a trackable + Test the server availability + + + + + Thrown when fails to make API call + + + + + Test the server availability + + + + + Thrown when fails to make API call + ApiResponse of Object(void) + + + + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) Cancellation Token to cancel request (optional) Task of string - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) Cancellation Token to cancel request (optional) Task of ApiResponse (string) - + + + Test the server availability + + + + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of void + + + + Test the server availability + + + + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of ApiResponse + + Represents a collection of functions to interact with the API endpoints - + - Initializes a new instance of the class. + Initializes a new instance of the class. - + - Initializes a new instance of the class + Initializes a new instance of the class - + - Initializes a new instance of the class + Initializes a new instance of the class using Configuration object An instance of Configuration - + Gets the base path of the API client. The base path - + Sets the base path of the API client. The base path - + Gets the default header. Dictionary of HTTP header - + Add default header. @@ -152,178 +166,306 @@ Header field value. - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) string - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) ApiResponse of string - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) Cancellation Token to cancel request (optional) Task of string - + - Create a trackable + Get the version of the API Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the trackable - Extensible list of trackable types possibly handled by complient World Storage implementation - Identifies targeted framework and version of the format. - The data provided to create the trackable in a specific format handled by the World Storage service. - Unit of length - Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables - List of additional parameters to be stored with the trackable. (optional) Cancellation Token to cancel request (optional) Task of ApiResponse (string) - + + + Test the server availability + + Thrown when fails to make API call + + + + + Test the server availability + + Thrown when fails to make API call + ApiResponse of Object(void) + + + + Test the server availability + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of void + + + + Test the server availability + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of ApiResponse + + Gets or sets the configuration object An instance of the Configuration - + Provides a factory method hook for the creation of exceptions. - + Represents a collection of functions to interact with the API endpoints - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage string - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage ApiResponse of string - + + + Deletes a trackable + + + + + Thrown when fails to make API call + trackable id to delete + + + + + Deletes a trackable + + + + + Thrown when fails to make API call + trackable id to delete + ApiResponse of Object(void) + + + + Find a trackable by his ID + + + + + Thrown when fails to make API call + ID of the trackable to retrieve + Trackable + + + + Find a trackable by his ID + + + + + Thrown when fails to make API call + ID of the trackable to retrieve + ApiResponse of Trackable + + + + returns the list of all trackables defined by the world storage. + + + + + Thrown when fails to make API call + List<Trackable> + + + + returns the list of all trackables defined by the world storage. + + + + + Thrown when fails to make API call + ApiResponse of List<Trackable> + + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage Cancellation Token to cancel request (optional) Task of string - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage Cancellation Token to cancel request (optional) Task of ApiResponse (string) - + + + Deletes a trackable + + + + + Thrown when fails to make API call + trackable id to delete + Cancellation Token to cancel request (optional) + Task of void + + + + Deletes a trackable + + + + + Thrown when fails to make API call + trackable id to delete + Cancellation Token to cancel request (optional) + Task of ApiResponse + + + + Find a trackable by his ID + + + + + Thrown when fails to make API call + ID of the trackable to retrieve + Cancellation Token to cancel request (optional) + Task of Trackable + + + + Find a trackable by his ID + + + + + Thrown when fails to make API call + ID of the trackable to retrieve + Cancellation Token to cancel request (optional) + Task of ApiResponse (Trackable) + + + + returns the list of all trackables defined by the world storage. + + + + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of List<Trackable> + + + + returns the list of all trackables defined by the world storage. + + + + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of ApiResponse (List<Trackable>) + + Represents a collection of functions to interact with the API endpoints - + - Initializes a new instance of the class. + Initializes a new instance of the class. - + - Initializes a new instance of the class + Initializes a new instance of the class - + - Initializes a new instance of the class + Initializes a new instance of the class using Configuration object An instance of Configuration - + Gets the base path of the API client. The base path - + Sets the base path of the API client. The base path - + Gets the default header. Dictionary of HTTP header - + Add default header. @@ -331,55 +473,145 @@ Header field value. - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage string - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage ApiResponse of string - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage Cancellation Token to cancel request (optional) Task of string - + - Create a world anchor + Create a trackable Thrown when fails to make API call - A Universally Unique IDentifier identifying the creator of the world anchor - Unit of length - List of additional parameters to be stored with the world anchor. (optional) + the trackable to be added to the world storage Cancellation Token to cancel request (optional) Task of ApiResponse (string) - + + + Deletes a trackable + + Thrown when fails to make API call + trackable id to delete + + + + + Deletes a trackable + + Thrown when fails to make API call + trackable id to delete + ApiResponse of Object(void) + + + + Deletes a trackable + + Thrown when fails to make API call + trackable id to delete + Cancellation Token to cancel request (optional) + Task of void + + + + Deletes a trackable + + Thrown when fails to make API call + trackable id to delete + Cancellation Token to cancel request (optional) + Task of ApiResponse + + + + Find a trackable by his ID + + Thrown when fails to make API call + ID of the trackable to retrieve + Trackable + + + + Find a trackable by his ID + + Thrown when fails to make API call + ID of the trackable to retrieve + ApiResponse of Trackable + + + + Find a trackable by his ID + + Thrown when fails to make API call + ID of the trackable to retrieve + Cancellation Token to cancel request (optional) + Task of Trackable + + + + Find a trackable by his ID + + Thrown when fails to make API call + ID of the trackable to retrieve + Cancellation Token to cancel request (optional) + Task of ApiResponse (Trackable) + + + + returns the list of all trackables defined by the world storage. + + Thrown when fails to make API call + List<Trackable> + + + + returns the list of all trackables defined by the world storage. + + Thrown when fails to make API call + ApiResponse of List<Trackable> + + + + returns the list of all trackables defined by the world storage. + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of List<Trackable> + + + + returns the list of all trackables defined by the world storage. + + Thrown when fails to make API call + Cancellation Token to cancel request (optional) + Task of ApiResponse (List<Trackable>) + + Gets or sets the configuration object An instance of the Configuration - + Provides a factory method hook for the creation of exceptions. @@ -398,7 +630,7 @@ Initializes a new instance of the class - with default base path (http://dummy.org). + with default base path (http://localhost:8080). An instance of Configuration. @@ -946,6 +1178,95 @@ Initializes a new instance of the class. + + + EncodingInformationStructure + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Identifier of the target framework (required). + The version of the format (required). + + + + Returns the string presentation of the object + + String presentation of the object + + + + Returns the JSON string presentation of the object + + JSON string presentation of the object + + + + Returns true if objects are equal + + Object to be compared + Boolean + + + + Returns true if EncodingInformationStructure instances are equal + + Instance of EncodingInformationStructure to be compared + Boolean + + + + Gets the hash code + + Hash code + + + + To validate all properties of the instance + + Validation context + Validation Result + + + + Identifier of the target framework + + Identifier of the target framework + + + + The version of the format + + The version of the format + + + + Identifier of the target framework + + Identifier of the target framework + + + + Enum HOLOLENS for value: HOLOLENS + + + + + Enum ARKIT for value: ARKIT + + + + + Enum ARCORE for value: ARCORE + + Error @@ -1012,109 +1333,201 @@ Gets or Sets Message - + - TrackableEncodingInformationStructure + Trackable - + - Initializes a new instance of the class. + Initializes a new instance of the class. - + - Initializes a new instance of the class. + Initializes a new instance of the class. - Identifier of the target framework (required). - The version of the format (required). + A Universally Unique IDentifier identifying the creator of the trackable (required). + Extensible list of trackable types possibly handled by complient World Storage implementation (required). + trackableEncodingInformation (required). + The data provided to create the trackable in a specific format handled by the World Storage service. (required). + Coordinate reference system of the trackable, a 4*4 matrix (rowmajor) represented by a float vector. + Unit of length (required). + Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables (required). + List of additional parameters to be stored with the trackable. (required). - + Returns the string presentation of the object String presentation of the object - + Returns the JSON string presentation of the object JSON string presentation of the object - + Returns true if objects are equal Object to be compared Boolean - + - Returns true if TrackableEncodingInformationStructure instances are equal + Returns true if Trackable instances are equal - Instance of TrackableEncodingInformationStructure to be compared + Instance of Trackable to be compared Boolean - + Gets the hash code Hash code - + To validate all properties of the instance Validation context Validation Result - + - Identifier of the target framework + Extensible list of trackable types possibly handled by complient World Storage implementation - Identifier of the target framework + Extensible list of trackable types possibly handled by complient World Storage implementation - + - The version of the format + Unit of length - The version of the format + Unit of length - + - Identifier of the target framework + A Universally Unique IDentifier identifying the creator of the trackable - Identifier of the target framework + A Universally Unique IDentifier identifying the creator of the trackable - + - Enum HOLOLENS for value: HOLOLENS + Gets or Sets TrackableEncodingInformation - + - Enum ARKIT for value: ARKIT + The data provided to create the trackable in a specific format handled by the World Storage service. + The data provided to create the trackable in a specific format handled by the World Storage service. - + - Enum ARCORE for value: ARCORE + Coordinate reference system of the trackable, a 4*4 matrix (rowmajor) represented by a float vector + + Coordinate reference system of the trackable, a 4*4 matrix (rowmajor) represented by a float vector + + + + Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables + + Bounding box of the Trackable, {width, length, 0} for 2D trackables, {width, length, depth} for 3D trackables + + + + List of additional parameters to be stored with the trackable. + + List of additional parameters to be stored with the trackable. + + + + Extensible list of trackable types possibly handled by complient World Storage implementation + + Extensible list of trackable types possibly handled by complient World Storage implementation + + + + Enum FIDUCIALMARKER for value: FIDUCIAL_MARKER + + + + + Enum IMAGEMARKER for value: IMAGE_MARKER + + + + + Enum MAP for value: MAP + + + + + Enum OTHER for value: OTHER + + + + + Unit of length + + Unit of length + + + + Enum MM for value: MM + + + + + Enum CM for value: CM + + + + + Enum DM for value: DM + + + + + Enum M for value: M - + - Defines unitSystemEnum + Enum DAM for value: DAM - + - Enum METERS for value: METERS + Enum HM for value: HM - + + + Enum KM for value: KM + + + Enum INCH for value: INCH + + + Enum FOOT for value: FOOT + + + + + Enum YARD for value: YARD + + + + + Enum MILE for value: MILE + + diff --git a/Plugins/RestSharp.dll.meta b/Plugins/RestSharp.dll.meta index bde200b..3840a62 100644 --- a/Plugins/RestSharp.dll.meta +++ b/Plugins/RestSharp.dll.meta @@ -7,7 +7,7 @@ PluginImporter: executionOrder: {} defineConstraints: [] isPreloaded: 0 - isOverridable: 0 + isOverridable: 1 isExplicitlyReferenced: 0 validateReferences: 1 platformData: diff --git a/Scripts/RESTRequest.cs b/Scripts/RESTRequest.cs index e61129d..d538dff 100644 --- a/Scripts/RESTRequest.cs +++ b/Scripts/RESTRequest.cs @@ -23,62 +23,51 @@ using IO.Swagger.Model; #if UNITY_EDITOR public class RESTRequest { - static public void PostAddTrackable(string basePath) - { - Debug.Log("Posting Add Trackable to Server"); - TrackablesApi api = new TrackablesApi(basePath); - Debug.Log("created Trackables API"); - - TrackableEncodingInformationStructure trackableEncodingInformation = - new TrackableEncodingInformationStructure(TrackableEncodingInformationStructure.DataFormatEnum.ARCORE, "1.0"); - Debug.Log("created encoding information"); + static public void PostAddTrackable(string basePath) + { + Debug.Log("Posting Add Trackable to Server"); + TrackablesApi api = new TrackablesApi(basePath); + Debug.Log("created Trackables API"); -#if USING_OPENAPI_GENERATOR - List trackableDimension = new List(); -#else - List trackableDimension = new List(); -#endif - trackableDimension.Add(5); - trackableDimension.Add(5); - Debug.Log("created dimension"); + EncodingInformationStructure trackableEncodingInformation = + new EncodingInformationStructure(EncodingInformationStructure.DataFormatEnum.ARCORE, "1.0"); - byte[] bytes = new byte[100]; + List trackableDimension = new List { 5, 5, 5 }; - for (int i = 0; i < bytes.Length; i++) - { - bytes[i] = (byte)i; - } + byte[] bytes = new byte[100]; - string result = api.AddTrackable("testCreatorUID", "FIDUCIAL_MARKER", trackableEncodingInformation, bytes, UnitSystemEnum.METERS, trackableDimension); + for (int i = 0; i < bytes.Length; i++) + { + bytes[i] = (byte)i; + } - Debug.Log(result); - } + Dictionary> keyvalueTagList = new Dictionary>(); - static public void PostAddWorldAnchor(string basePath) - { - Debug.Log("Posting Add World Anchor to Server"); - WorldAnchorsApi api = new WorldAnchorsApi(basePath); - Debug.Log("created World Anchors API"); + keyvalueTagList.Add("key", new List { "value" }); - TrackableEncodingInformationStructure trackableEncodingInformation = - new TrackableEncodingInformationStructure(TrackableEncodingInformationStructure.DataFormatEnum.ARCORE, "1.0"); - Debug.Log("created encoding information"); + Trackable trackable = new Trackable(new System.Guid("67584958-3456-2342-4564-456723332345"), + Trackable.TrackableTypeEnum.FIDUCIALMARKER, + trackableEncodingInformation, + bytes, + new List() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }, + Trackable.UnitSystemEnum.M, + trackableDimension, + keyvalueTagList); - List trackableDimension = new List(); - trackableDimension.Add(5); - trackableDimension.Add(5); - Debug.Log("created dimension"); + string result = api.AddTrackable(trackable); - byte[] bytes = new byte[100]; + Debug.Log(result); + } - for (int i = 0; i < bytes.Length; i++) + static public void PostAddWorldAnchor(string basePath) { - bytes[i] = (byte)i; - } + Debug.Log("Posting Add World Anchor to Server"); + //WorldAnchorsApi api = new WorldAnchorsApi(basePath); + Debug.Log("created World Anchors API"); - string result = api.AddWorldAnchor("testCreatorUID", UnitSystemEnum.METERS); + //string result = api.AddWorldAnchor("testCreatorUID", "METERS"); - Debug.Log(result); - } + //Debug.Log(result); + } } #endif \ No newline at end of file -- GitLab