From bb66cd4925deb441513fe4f2d2a1f4acf1ae9ed5 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 29 Jul 2020 09:58:30 +0900 Subject: [PATCH 01/27] Add log in SDF parser - Root --- Assets/Scripts/Tools/SDF/Root.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/Tools/SDF/Root.cs b/Assets/Scripts/Tools/SDF/Root.cs index 7b07df6c..d845fc7d 100644 --- a/Assets/Scripts/Tools/SDF/Root.cs +++ b/Assets/Scripts/Tools/SDF/Root.cs @@ -38,8 +38,6 @@ public void SetWorldFileName(in string filename) { worldFileName = filename; } - - worldFileName = "/" + worldFileName; } public World World() @@ -74,15 +72,19 @@ public bool DoParse() if (doc != null && worldFileName != null && worldFileName.Length > 0) { - // Console.WriteLine("World SDF FILE PATH: " + worldFileName); - foreach (var worlPath in worldDefaultPath) + // Console.WriteLine("World file, PATH: " + worldFileName); + foreach (var worldPath in worldDefaultPath) { - var fullFilePath = worlPath + worldFileName; + var fullFilePath = worldPath + "/" + worldFileName; if (File.Exists(@fullFilePath)) { - doc.Load(worlPath + worldFileName); + doc.Load(fullFilePath); break; } + else + { + Console.WriteLine("World file not exist: " + worldFileName); + } } } From f2ec047251c99b4b2591c170a55ed89079ce4cfa Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 29 Jul 2020 14:42:19 +0900 Subject: [PATCH 02/27] Remove debuging ray in Sonar sensor --- Assets/Scripts/Devices/Sonar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Scripts/Devices/Sonar.cs b/Assets/Scripts/Devices/Sonar.cs index ea67e6af..b53d94a0 100644 --- a/Assets/Scripts/Devices/Sonar.cs +++ b/Assets/Scripts/Devices/Sonar.cs @@ -202,7 +202,7 @@ void OnTriggerStay(Collider other) if (Physics.Raycast(sensorStartPoint, direction, out var hitInfo)) { - Debug.DrawRay(sensorStartPoint, direction, Color.magenta, 0.01f); + // Debug.DrawRay(sensorStartPoint, direction, Color.magenta, 0.01f); // Debug.Log("Hit Point of contact: " + hitInfo.point); var hitPoint = hitInfo.point; var hitDistance = Vector3.Distance(sensorStartPoint, hitPoint); From 686d53130432c25b7d4650fb41512ed2b160f337 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 29 Jul 2020 20:11:38 +0900 Subject: [PATCH 03/27] Give a axis direction on Prismatic joint and apply position of joint --- Assets/Scripts/Tools/SDFImporter/SDF2Unity.cs | 10 ++--- .../Tools/SDFImporter/SDFImplement.Joint.cs | 38 ++++++++++++++----- .../Tools/SDFImporter/SDFImporter.Joint.cs | 8 ++-- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/Assets/Scripts/Tools/SDFImporter/SDF2Unity.cs b/Assets/Scripts/Tools/SDFImporter/SDF2Unity.cs index 25c3582d..5d9011c8 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDF2Unity.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDF2Unity.cs @@ -9,7 +9,7 @@ public class SDF2Unity { public static Vector3 GetPosition(double x, double y, double z) { - Vector3 pos = new Vector3(); + var pos = new Vector3(); pos.x = (float)x; pos.y = (float)z; pos.z = (float)y; @@ -19,7 +19,7 @@ public static Vector3 GetPosition(double x, double y, double z) public static Vector3 GetPosition(SDF.Vector3 value) { - Vector3 pos = new Vector3(); + var pos = new Vector3(); pos.x = (float)(value.X); pos.y = (float)(value.Z); pos.z = (float)(value.Y); @@ -43,7 +43,7 @@ public static Vector3 GetScale(SDF.Vector3 value) public static Vector3 GetScale(double radius) { - Vector3 pos = new Vector3(); + var pos = new Vector3(); pos.x = (float)(radius);// * 2.0f; pos.y = pos.x; pos.z = pos.y; @@ -52,7 +52,7 @@ public static Vector3 GetScale(double radius) public static void LoadObjMesh(in GameObject targetObject, in string objPath, in string mtlPath) { - GameObject loadedObject = new Dummiesman.OBJLoader().Load(objPath, mtlPath); + var loadedObject = new Dummiesman.OBJLoader().Load(objPath, mtlPath); var meshRotation = new Vector3(90f, 180f, 0f); foreach (var meshFilter in loadedObject.GetComponentsInChildren()) @@ -74,7 +74,7 @@ public static void LoadStlMesh(in GameObject targetObject, in string objPath) { const string commonShader = "Standard (Specular setup)"; - Mesh[] multipleMesh = Parabox.Stl.Importer.Import(objPath, Parabox.Stl.CoordinateSpace.Right, Parabox.Stl.UpAxis.Z, true); + var multipleMesh = Parabox.Stl.Importer.Import(objPath, Parabox.Stl.CoordinateSpace.Right, Parabox.Stl.UpAxis.Z, true); var meshRotation = new Vector3(0.0f, 90.0f, 0.0f); for (int i = 0; i < multipleMesh.Length; i++) diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs index eadc4ffc..42c6d4ad 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs @@ -13,12 +13,31 @@ public partial class SDFImplement { public class Joint { - private static Vector3 GetAxis(SDF.Vector3 value) + private static Vector3 GetAxis(SDF.Vector3 value, SDF.Quaternion rot = null) { - Vector3 pos = new Vector3(); + var pos = new Vector3(); pos.x = -value.X; pos.y = -value.Z; pos.z = -value.Y; + + if (rot != null) + { + if (pos.x != 0) + { + pos.y = pos.x * Mathf.Sin((float)rot.Pitch); + pos.z = pos.x * Mathf.Sin((float)rot.Yaw); + } + else if (pos.y != 0) + { + pos.x = pos.y * Mathf.Sin((float)rot.Roll); + pos.z = pos.y * Mathf.Sin((float)rot.Yaw); + } + else if (pos.z != 0) + { + pos.x = pos.z * Mathf.Sin((float)rot.Roll); + pos.y = pos.z * Mathf.Sin((float)rot.Pitch); + } + } return pos; } @@ -38,7 +57,7 @@ public static UEJoint AddRevolute(in SDF.Axis jointInfo, in GameObject targetObj if (jointInfo.UseLimit()) { - JointLimits jointLimits = new JointLimits(); + var jointLimits = new JointLimits(); jointLimits.min = (float)jointInfo.limit_lower * Mathf.Rad2Deg; jointLimits.max = (float)jointInfo.limit_upper * Mathf.Rad2Deg; hingeJointComponent.useLimits = true; @@ -100,12 +119,12 @@ public static UEJoint AddBall(in GameObject targetObject, in Rigidbody connectBo return jointComponent; } - public static UEJoint AddPrismatic(in SDF.Axis jointInfo, in GameObject targetObject, in Rigidbody connectBody) + public static UEJoint AddPrismatic(in SDF.Axis jointInfo, in SDF.Pose pose, in GameObject targetObject, in Rigidbody connectBody) { var jointComponent = targetObject.AddComponent(); jointComponent.connectedBody = connectBody; jointComponent.secondaryAxis = Vector3.zero; - jointComponent.axis = GetAxis(jointInfo.xyz); + jointComponent.axis = GetAxis(jointInfo.xyz, pose.Rot); var configurableJointMotion = ConfigurableJointMotion.Free; @@ -158,16 +177,16 @@ public static UEJoint AddPrismatic(in SDF.Axis jointInfo, in GameObject targetOb return jointComponent; } - public static void SetCommonConfiguration(UEJoint jointComponent, in GameObject linkObject) + public static void SetCommonConfiguration(UEJoint jointComponent, in SDF.Vector3 jointPosition, in GameObject linkObject) { var linkTransform = linkObject.transform; - jointComponent.anchor = Vector3.zero; + jointComponent.anchor = SDF2Unity.GetPosition(jointPosition); jointComponent.autoConfigureConnectedAnchor = false; if (jointComponent.autoConfigureConnectedAnchor == false) { - var connectedAnchor = new Vector3(); + var connectedAnchor = Vector3.zero; var connectedBody = jointComponent.connectedBody; var modelObject = linkTransform.parent; @@ -178,7 +197,7 @@ public static void SetCommonConfiguration(UEJoint jointComponent, in GameObject if (Array.Exists(childRigidBodies, element => element == connectedBody)) { // Debug.Log("Sibling connected!!!: " + linkTransform.name); - connectedAnchor = linkTransform.localPosition; + connectedAnchor = SDF2Unity.GetPosition(jointPosition) + linkTransform.localPosition; } else { @@ -213,7 +232,6 @@ public static void SetCommonConfiguration(UEJoint jointComponent, in GameObject connectedAnchor = finalAnchor; } - // Debug.LogFormat("JointObject({0}) connectedAnchor: " + connectedAnchor.ToString("F4"), linkObject.name); jointComponent.connectedAnchor = connectedAnchor; } diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs index d6ea3e8f..048c8fb8 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs @@ -49,8 +49,8 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO var transformParent = (parentObject as GameObject).transform; - GameObject linkObjectParent = FindObjectByName(linkNameParent, transformParent); - GameObject linkObjectChild = FindObjectByName(linkNameChild, transformParent); + var linkObjectParent = FindObjectByName(linkNameParent, transformParent); + var linkObjectChild = FindObjectByName(linkNameChild, transformParent); if (linkObjectChild is null || linkObjectParent is null) { @@ -76,7 +76,7 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO } else if (joint.Type.Equals("prismatic")) { - var prismaticJointComponent = SDFImplement.Joint.AddPrismatic(joint.Axis, linkObjectChild, rigidBodyParent); + var prismaticJointComponent = SDFImplement.Joint.AddPrismatic(joint.Axis, joint.Pose, linkObjectChild, rigidBodyParent); jointComponent = prismaticJointComponent as Joint; } else if (joint.Type.Equals("revolute")) @@ -112,7 +112,7 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO if (jointComponent != null) { - SDFImplement.Joint.SetCommonConfiguration(jointComponent, linkObjectChild); + SDFImplement.Joint.SetCommonConfiguration(jointComponent, joint.Pose.Pos, linkObjectChild); } } } From 25016f1b21864e23ccf77fdfcdebfc8751c69c4c Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 30 Jul 2020 18:29:57 +0900 Subject: [PATCH 04/27] Add features in Camera Control - Camera control can move with Right button also. (including wheel click) - Camera pointer can move on edge Change default parameters for Camera Control. --- Assets/Scenes/MainScene.unity | 11 ++++-- Assets/Scripts/UI/CameraControl.cs | 58 ++++++++++++++++++++++++++---- 2 files changed, 60 insertions(+), 9 deletions(-) diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index 5216fb3c..e2ff4ac5 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -771,6 +771,8 @@ MonoBehaviour: pauseOnStart: 0 clearAllOnStart: 1 worldFileName: lg_seocho.world + modelRootDirectories: [] + worldRootDirectories: [] --- !u!114 &249819590 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3801,9 +3803,12 @@ MonoBehaviour: m_EditorClassIdentifier: blockControl: 0 mainSpeed: 10 - shiftAdd: 20 - maxShift: 50 - camSens: 0.1 + shiftAdd: 25 + maxShift: 100 + camSens: 0.25 + edgeWidth: 100 + edgeSens: 0.05 + edgeSensMax: 1 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/UI/CameraControl.cs b/Assets/Scripts/UI/CameraControl.cs index 8cc52817..b50234d2 100644 --- a/Assets/Scripts/UI/CameraControl.cs +++ b/Assets/Scripts/UI/CameraControl.cs @@ -3,7 +3,7 @@ * * SPDX-License-Identifier: MIT */ - + using UnityEngine; public class CameraControl : MonoBehaviour @@ -24,8 +24,15 @@ Converted to C# 27-02-13 - no credit wanted. public float shiftAdd = 20.0f; //multiplied by how long shift is held. Basically running public float maxShift = 50.0f; //Maximum speed when holding shift public float camSens = 0.1f; //How sensitive it with mouse + public float edgeWidth = 100.0f; + public float edgeSens = 0.02f; + public float edgeSensMax = 1.0f; + private Vector3 lastMouse = new Vector3(255, 255, 255); //kind of in the middle of the screen, rather than at the top (play) private float totalRun = 1.0f; + private float edgeSensAccumlated = 0.0f; + + private Vector3 lastMousePrevious = Vector3.zero; void LateUpdate() { @@ -36,13 +43,52 @@ void LateUpdate() lastMouse = Input.mousePosition - lastMouse; lastMouse.Set(-lastMouse.y * camSens, lastMouse.x * camSens, 0); - lastMouse.Set(transform.eulerAngles.x + lastMouse.x, transform.eulerAngles.y + lastMouse.y, 0); + lastMouse.Set(transform.eulerAngles.x + lastMouse.x, transform.eulerAngles.y + lastMouse.y , 0); + + //Mouse camera angle done. + if (Input.GetMouseButton(2) || Input.GetMouseButton(1)) + { + // perspective move during the right or wheel click + // Debug.Log(lastMouse.ToString("F4")); + + if (edgeSensAccumlated < edgeSensMax) + { + edgeSensAccumlated += edgeSens; + } - //Mouse camera angle done. - if (Input.GetMouseButton(2)) + if (Input.mousePosition.x < edgeWidth) + { + // Debug.Log("rotate camera left here"); + lastMouse.y -= edgeSensAccumlated; + transform.eulerAngles = lastMouse; + } + else if (Input.mousePosition.x > Screen.width - edgeWidth) + { + // Debug.Log("rotate camera right here"); + lastMouse.y += edgeSensAccumlated; + transform.eulerAngles = lastMouse; + } + else if (Input.mousePosition.y < edgeWidth) + { + // Debug.Log("rotate camera down here"); + lastMouse.x += edgeSensAccumlated; + transform.eulerAngles = lastMouse; + } + else if (Input.mousePosition.y > Screen.height - edgeWidth) + { + // Debug.Log("rotate camera up here"); + lastMouse.x -= edgeSensAccumlated; + transform.eulerAngles = lastMouse; + } + else + { + edgeSensAccumlated = 0.0f; + transform.eulerAngles = lastMouse; + } + } + else { - // perspective move during the left click - transform.eulerAngles = lastMouse; + edgeSensAccumlated = 0.0f; } lastMouse = Input.mousePosition; From 446351e71cd191f1bd0fac63d6ac7b68d72797d3 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 30 Jul 2020 18:37:16 +0900 Subject: [PATCH 05/27] Change update period for sonar sensor visualization --- Assets/Scripts/Devices/Sonar.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/Devices/Sonar.cs b/Assets/Scripts/Devices/Sonar.cs index b53d94a0..0e2210c5 100644 --- a/Assets/Scripts/Devices/Sonar.cs +++ b/Assets/Scripts/Devices/Sonar.cs @@ -81,18 +81,16 @@ protected override void OnStart() protected override IEnumerator OnVisualize() { - const float visualUpdatePeriod = 0.01f; - const float visualDrawDuration = visualUpdatePeriod * 1.01f; - var waitForSeconds = new WaitForSeconds(visualUpdatePeriod); + var waitForSeconds = new WaitForSeconds(UpdatePeriod); while (true) { var direction = (GetDetectedPoint() - sensorStartPoint).normalized; var detectedRange = GetDetectedRange(); - if (detectedRange < rangeMax && !direction.Equals(Vector3.zero)) + if (detectedRange <= rangeMax && !direction.Equals(Vector3.zero)) { - Debug.DrawRay(sensorStartPoint, direction * detectedRange, Color.blue, visualDrawDuration); + Debug.DrawRay(sensorStartPoint, direction * detectedRange, Color.blue, UpdatePeriod); } yield return waitForSeconds; } @@ -203,7 +201,8 @@ void OnTriggerStay(Collider other) if (Physics.Raycast(sensorStartPoint, direction, out var hitInfo)) { // Debug.DrawRay(sensorStartPoint, direction, Color.magenta, 0.01f); - // Debug.Log("Hit Point of contact: " + hitInfo.point); + + // Debug.Log("Hit Point of contact: " + hitInfo.point + " | " + sensorStartPoint.ToString("F4")); var hitPoint = hitInfo.point; var hitDistance = Vector3.Distance(sensorStartPoint, hitPoint); From c9dfb0a2c087cbd50acbd4612d94571176fe67f9 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 30 Jul 2020 18:54:29 +0900 Subject: [PATCH 06/27] Change OnVisualize() function - draw visualization after finished one frame (all Update() event) using WaitForEndofFrame(). --- Assets/Scripts/Devices/Lidar.cs | 4 ++++ Assets/Scripts/Devices/Sonar.cs | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Assets/Scripts/Devices/Lidar.cs b/Assets/Scripts/Devices/Lidar.cs index b6c0febc..d1a9939c 100644 --- a/Assets/Scripts/Devices/Lidar.cs +++ b/Assets/Scripts/Devices/Lidar.cs @@ -288,11 +288,15 @@ protected override IEnumerator OnVisualize() { const float visualUpdatePeriod = 0.090f; const float visualDrawDuration = visualUpdatePeriod * 1.01f; + var startAngle = defaultRotationOffset + (float)angleMin; + var waitForEndOfFrame = new WaitForEndOfFrame(); var waitForSeconds = new WaitForSeconds(visualUpdatePeriod); while (true) { + yield return waitForEndOfFrame; + var lidarSensorWorldPosition = lidarLink.position + transform.localPosition; var rangeData = GetRangeData(); diff --git a/Assets/Scripts/Devices/Sonar.cs b/Assets/Scripts/Devices/Sonar.cs index 0e2210c5..8701221f 100644 --- a/Assets/Scripts/Devices/Sonar.cs +++ b/Assets/Scripts/Devices/Sonar.cs @@ -81,10 +81,13 @@ protected override void OnStart() protected override IEnumerator OnVisualize() { + var waitForEndOfFrame = new WaitForEndOfFrame(); var waitForSeconds = new WaitForSeconds(UpdatePeriod); while (true) { + yield return waitForEndOfFrame; + var direction = (GetDetectedPoint() - sensorStartPoint).normalized; var detectedRange = GetDetectedRange(); @@ -92,6 +95,7 @@ protected override IEnumerator OnVisualize() { Debug.DrawRay(sensorStartPoint, direction * detectedRange, Color.blue, UpdatePeriod); } + yield return waitForSeconds; } } From 0ff724af552bffb68c02d5ab190a052e26a2f7ac Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 30 Jul 2020 19:18:33 +0900 Subject: [PATCH 07/27] Modify misomSensor device and RobotControl plugin - Add Uss IR support - Code Refactoring RobotControl pluging --- Assets/Scripts/DevicePlugins/RobotControl.cs | 88 +------- Assets/Scripts/Devices/MicomSensor.cs | 208 +++++++++++++++++-- 2 files changed, 198 insertions(+), 98 deletions(-) diff --git a/Assets/Scripts/DevicePlugins/RobotControl.cs b/Assets/Scripts/DevicePlugins/RobotControl.cs index 1b2c1099..709637ab 100644 --- a/Assets/Scripts/DevicePlugins/RobotControl.cs +++ b/Assets/Scripts/DevicePlugins/RobotControl.cs @@ -12,78 +12,20 @@ public class RobotControl : DevicePlugin { private MicomInput micomInput = null; private MicomSensor micomSensor = null; - private SensorDevices.IMU imuSensor = null; - private Motor motorLeft = null; - private Motor motorRight = null; - - public float wheelRadius = 0.0f; // in mether - public float divideWheelRadius = 0.0f; protected override void OnAwake() { micomInput = gameObject.AddComponent(); micomSensor = gameObject.AddComponent(); - - imuSensor = gameObject.GetComponentInChildren(); + micomSensor.SetPluginParameter(parameters); } protected override void OnStart() { - const float MM2M = 0.001f; - var updateRate = parameters.GetValue("update_rate", 20); - micomSensor.SetUpdateRate(updateRate); - - var kp = parameters.GetValue("PID/kp"); - var ki = parameters.GetValue("PID/ki"); - var kd = parameters.GetValue("PID/kd"); - - var pidControl = new PID(kp, ki, kd); - - var wheelBase = parameters.GetValue("wheel/base") * MM2M; - wheelRadius = parameters.GetValue("wheel/radius") * MM2M; - divideWheelRadius = 1.0f/wheelRadius; // for performacne. - - var wheelNameLeft = parameters.GetValue("wheel/location[@type='left']"); - var wheelNameRight = parameters.GetValue("wheel/location[@type='right']"); - var debugging = parameters.GetValue("debug", false); micomInput.EnableDebugging = debugging; - var motorFriction = parameters.GetValue("wheel/friction/motor", 0.1f); // Currently not used - var brakeFriction = parameters.GetValue("wheel/friction/brake", 0.1f); // Currently not used - - var modelList = GetComponentsInChildren(); - foreach (var model in modelList) - { - // Debug.Log(model.name); - if (model.name.Equals(wheelNameLeft)) - { - var jointWheelLeft = model.GetComponentInChildren(); - motorLeft = new Motor("Left", jointWheelLeft, pidControl); - - var wheelLeftBody = jointWheelLeft.gameObject.GetComponent(); - - // Debug.Log("joint Wheel Left found : " + jointWheelLeft.name); - // Debug.Log("joint Wheel Left max angular velocity : " + jointWheelLeft.gameObject.GetComponent().maxAngularVelocity); - } - else if (model.name.Equals(wheelNameRight)) - { - var jointWheelRight = model.GetComponentInChildren(); - motorRight = new Motor("Right", jointWheelRight, pidControl); - - var wheelRightBody = jointWheelRight.gameObject.GetComponent(); - - // Debug.Log("joint Wheel Right found : " + jointWheelRight.name); - // Debug.Log("joint Wheel Right max angular velocity : " + jointWheelRight.gameObject.GetComponent().maxAngularVelocity); - } - - if (motorLeft != null && motorRight != null) - { - break; - } - } - var txHashKey = MakeHashKey("MICOM", "_SENSOR"); if (!RegisterTxDevice(txHashKey)) { @@ -102,33 +44,13 @@ protected override void OnStart() void FixedUpdate() { - var localRotation = transform.rotation; - if (imuSensor != null) + if (micomInput != null && micomSensor != null) { - micomSensor.SetIMU(imuSensor); - micomSensor.SetAccGyro(localRotation.eulerAngles); - // Debug.LogFormat("{0} {1}", localRotation, imuSensor.GetOrientation()); - } - - float linearVelocityLeft = 0; - float linearVelocityRight = 0; + var targetWheelVelocityLeft = micomInput.GetWheelVelocityLeft(); + var targetWheelVelocityRight = micomInput.GetWheelVelocityRight(); - if (motorLeft != null) - { - var targetWheelVelocityLeft = micomInput.GetWheelVelocityLeft() * divideWheelRadius; - motorLeft.SetVelocityTarget(targetWheelVelocityLeft); - linearVelocityLeft = motorLeft.GetCurrentVelocity() * wheelRadius; + micomSensor.SetMotorVelocity(targetWheelVelocityLeft, targetWheelVelocityRight); } - - if (motorRight != null) - { - var targetWheelVelocityRight = micomInput.GetWheelVelocityRight() * divideWheelRadius; - motorRight.SetVelocityTarget(targetWheelVelocityRight); - linearVelocityRight = motorRight.GetCurrentVelocity() * wheelRadius; - } - - // Debug.LogFormat("{0} {1}, {2} {3} | {4}", motorLeft.GetCurrentVelocity(), linearVelocityLeft, motorRight.GetCurrentVelocity(), linearVelocityRight, wheelRadius); - micomSensor.SetOdomData(linearVelocityLeft, linearVelocityRight); } private void Sender() diff --git a/Assets/Scripts/Devices/MicomSensor.cs b/Assets/Scripts/Devices/MicomSensor.cs index f3b48c5a..c5215ed4 100644 --- a/Assets/Scripts/Devices/MicomSensor.cs +++ b/Assets/Scripts/Devices/MicomSensor.cs @@ -4,21 +4,141 @@ * SPDX-License-Identifier: MIT */ +using System.Collections.Generic; using System.Collections; using UnityEngine; using messages = gazebo.msgs; public class MicomSensor : Device { + private PluginParameters parameters = null; private messages.Micom micomSensorData = null; + private Motor motorLeft = null; + private Motor motorRight = null; + + public SensorDevices.IMU imuSensor = null; + public List ussSensors = null; + public List irSensors = null; + // private List magnetSensors = null; + // private List switchSensors = null; + + public float wheelRadius = 0.0f; // in mether + private float divideWheelRadius = 0.0f; // for computational performacne. + protected override void OnAwake() { + imuSensor = gameObject.GetComponentInChildren(); + + ussSensors = new List(); + irSensors = new List(); + + deviceName = "MicomSensor"; } protected override void OnStart() { - deviceName = "MicomSensor"; + const float MM2M = 0.001f; + var modelList = GetComponentsInChildren(); + + var updateRate = parameters.GetValue("update_rate", 20); + SetUpdateRate(updateRate); + + var kp = parameters.GetValue("PID/kp"); + var ki = parameters.GetValue("PID/ki"); + var kd = parameters.GetValue("PID/kd"); + + var pidControl = new PID(kp, ki, kd); + + var wheelBase = parameters.GetValue("wheel/base") * MM2M; + wheelRadius = parameters.GetValue("wheel/radius") * MM2M; + divideWheelRadius = 1.0f/wheelRadius; + + var wheelNameLeft = parameters.GetValue("wheel/location[@type='left']"); + var wheelNameRight = parameters.GetValue("wheel/location[@type='right']"); + + var motorFriction = parameters.GetValue("wheel/friction/motor", 0.1f); // Currently not used + var brakeFriction = parameters.GetValue("wheel/friction/brake", 0.1f); // Currently not used + + foreach (var model in modelList) + { + // Debug.Log(model.name); + if (model.name.Equals(wheelNameLeft)) + { + var jointWheelLeft = model.GetComponentInChildren(); + motorLeft = new Motor("Left", jointWheelLeft, pidControl); + + var wheelLeftBody = jointWheelLeft.gameObject.GetComponent(); + + // Debug.Log("joint Wheel Left found : " + jointWheelLeft.name); + // Debug.Log("joint Wheel Left max angular velocity : " + jointWheelLeft.gameObject.GetComponent().maxAngularVelocity); + } + else if (model.name.Equals(wheelNameRight)) + { + var jointWheelRight = model.GetComponentInChildren(); + motorRight = new Motor("Right", jointWheelRight, pidControl); + + var wheelRightBody = jointWheelRight.gameObject.GetComponent(); + + // Debug.Log("joint Wheel Right found : " + jointWheelRight.name); + // Debug.Log("joint Wheel Right max angular velocity : " + jointWheelRight.gameObject.GetComponent().maxAngularVelocity); + } + + if (motorLeft != null && motorRight != null) + { + break; + } + } + + if (parameters.GetValues("uss/sensor", out var ussList)) + { + foreach (var model in modelList) + { + foreach (var uss in ussList) + { + if (model.name.Equals(uss)) + { + var sonarSensor = model.GetComponentInChildren(); + ussSensors.Add(sonarSensor); + // Debug.Log("ussSensor found : " + sonarSensor.name); + } + } + micomSensorData.uss.Distances = new uint[ussList.Count]; + } + } + + if (parameters.GetValues("ir/sensor", out var irList)) + { + foreach (var model in modelList) + { + foreach (var ir in irList) + { + if (model.name.Equals(ir)) + { + var sonarSensor = model.GetComponentInChildren(); + irSensors.Add(sonarSensor); + // Debug.Log("irSensor found : " + sonarSensor.name); + } + } + micomSensorData.ir.Distances = new uint[irList.Count]; + } + } + + if (parameters.GetValues("magnet/sensor", out var magnetList)) + { + foreach (var model in modelList) + { + // TODO: to be implemented + } + } + + if (parameters.GetValues("bumper/sensor", out var bumperList)) + { + foreach (var model in modelList) + { + // TODO: to be implemented + } + } } protected override IEnumerator MainDeviceWorker() @@ -47,6 +167,8 @@ protected override void InitializeMessages() micomSensorData.Imu.LinearAcceleration = new messages.Vector3d(); micomSensorData.Accgyro = new messages.Micom.AccGyro(); micomSensorData.Odom = new messages.Micom.Odometry(); + micomSensorData.uss = new messages.Micom.Uss(); + micomSensorData.ir = new messages.Micom.Ir(); } protected override void GenerateMessage() @@ -56,18 +178,53 @@ protected override void GenerateMessage() PushData(micomSensorData); } - public bool SetIMU(in SensorDevices.IMU imuSensor) + void FixedUpdate() { - var imu = micomSensorData.Imu; + UpdateIMU(); + UpdateAccGyro(); + UpdateUss(); + UpdateIr(); + } + + private void UpdateUss() + { + if ((micomSensorData == null || micomSensorData.uss == null)) + { + return; + } + + const float M2MM = 1000.0f; + var index = 0; + foreach (var uss in ussSensors) + { + micomSensorData.uss.Distances[index++] = (uint)(uss.GetDetectedRange() * M2MM); + } + } + + private void UpdateIr() + { + if ((micomSensorData == null || micomSensorData.ir == null)) + { + return; + } - if (micomSensorData == null || imu == null) + const float M2MM = 1000.0f; + var index = 0; + foreach (var ir in irSensors) { - return false; + micomSensorData.ir.Distances[index++] = (uint)(ir.GetDetectedRange() * M2MM); } + } + + private void UpdateIMU() + { + var imu = micomSensorData.Imu; - if (imu.Orientation == null || imu.AngularVelocity == null || imu.LinearAcceleration == null) + if ((imuSensor == null) && + (micomSensorData == null || imu == null) && + (imu.Orientation == null || imu.AngularVelocity == null || imu.LinearAcceleration == null)) { - return false; + return; } var orientation = imuSensor.GetOrientation(); @@ -87,17 +244,18 @@ public bool SetIMU(in SensorDevices.IMU imuSensor) imu.LinearAcceleration.Z = linearAcceleration.z; DeviceHelper.SetCurrentTime(micomSensorData.Imu.Stamp); - - return true; } - public bool SetAccGyro(in Vector3 angle) + private void UpdateAccGyro() { + var localRotation = transform.rotation; + var angle = localRotation.eulerAngles; + var accGyro = micomSensorData.Accgyro; if (micomSensorData == null || accGyro == null) { - return false; + return; } accGyro.AngleX = angle.x; @@ -111,11 +269,9 @@ public bool SetAccGyro(in Vector3 angle) accGyro.AngulerRateX = 0; accGyro.AngulerRateY = 0; accGyro.AngulerRateZ = 0; - - return true; } - public bool SetOdomData(in float linearVelocityLeft, in float linearVelocityRight) + private bool SetOdomData(in float linearVelocityLeft, in float linearVelocityRight) { const float M2MM = 1000.0f; @@ -135,4 +291,26 @@ public bool SetOdomData(in float linearVelocityLeft, in float linearVelocityRigh return false; } -} + + public void SetMotorVelocity(in float linearVelocityLeft, in float linearVelocityRight) + { + var angularVelocityLeft = linearVelocityLeft * divideWheelRadius; + var angularVelocityRight = linearVelocityRight * divideWheelRadius; + + if (motorLeft != null && motorRight != null) + { + motorLeft.SetVelocityTarget(angularVelocityLeft); + motorRight.SetVelocityTarget(angularVelocityRight); + + var linearJointVelocityLeft = motorLeft.GetCurrentVelocity() * wheelRadius; + var linearJointVelocityRight = motorRight.GetCurrentVelocity() * wheelRadius; + + SetOdomData(linearJointVelocityLeft, linearJointVelocityRight); + } + } + + public void SetPluginParameter(in PluginParameters pluginParams) + { + parameters = pluginParams; + } +} \ No newline at end of file From 4f0f310d922dbb293a3845bdacf676f5978efd8b Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 31 Jul 2020 10:49:48 +0900 Subject: [PATCH 08/27] Upgrade Unity editor version -> 2019.4.6f1(LTS) --- ProjectSettings/ProjectVersion.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 291a7485..d518aa37 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.5f1 -m_EditorVersionWithRevision: 2019.4.5f1 (81610f64359c) +m_EditorVersion: 2019.4.6f1 +m_EditorVersionWithRevision: 2019.4.6f1 (a7aea80e3716) From d2bf1957ddade8517f1a9a29389f3059bfbbc7bc Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 31 Jul 2020 17:06:23 +0900 Subject: [PATCH 09/27] Change default parameters for Camera Control. - MainScene.unity --- Assets/Scenes/MainScene.unity | 6 +++--- Assets/Scripts/Devices/Camera.cs | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index e2ff4ac5..a8e0a45b 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -3802,13 +3802,13 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: blockControl: 0 - mainSpeed: 10 - shiftAdd: 25 + mainSpeed: 7 + shiftAdd: 10 maxShift: 100 camSens: 0.25 edgeWidth: 100 edgeSens: 0.05 - edgeSensMax: 1 + edgeSensMax: 1.7 --- !u!20 &963194227 Camera: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Devices/Camera.cs b/Assets/Scripts/Devices/Camera.cs index f21b402d..07c4e0bd 100644 --- a/Assets/Scripts/Devices/Camera.cs +++ b/Assets/Scripts/Devices/Camera.cs @@ -228,6 +228,7 @@ protected override void GenerateMessage() { var image = imageStamped.Image; var imageData = camData.GetTextureData(); + if (imageData != null && image.Data.Length == imageData.Length) { image.Data = imageData; From 9752b111fbfea2b89f77e5222eb0e5bc58dcdd1f Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 31 Jul 2020 18:53:36 +0900 Subject: [PATCH 10/27] Bug fix in MicomSensor - null checking condition error --- Assets/Scripts/Devices/MicomSensor.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/Devices/MicomSensor.cs b/Assets/Scripts/Devices/MicomSensor.cs index c5215ed4..b1d79c52 100644 --- a/Assets/Scripts/Devices/MicomSensor.cs +++ b/Assets/Scripts/Devices/MicomSensor.cs @@ -220,8 +220,8 @@ private void UpdateIMU() { var imu = micomSensorData.Imu; - if ((imuSensor == null) && - (micomSensorData == null || imu == null) && + if ((imuSensor == null) || + (micomSensorData == null || imu == null) || (imu.Orientation == null || imu.AngularVelocity == null || imu.LinearAcceleration == null)) { return; From 48ef2e930d56c0461f9a85c28bd6a24dd60cb992 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 31 Jul 2020 19:09:29 +0900 Subject: [PATCH 11/27] Modify TransfromGizmo code for manipulation object - fix type key Move => T Rotate => R All Type => Y Space Toggle => X --- .../Scripts/UI/RuntimeGizmo/TransformGizmo.cs | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs b/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs index 935beec2..ad25d896 100644 --- a/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs +++ b/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs @@ -63,15 +63,15 @@ public partial class TransformGizmo : MonoBehaviour //These are the same as the unity editor hotkeys [Header("Key configurations")] - public KeyCode SetMoveType = KeyCode.W; - public KeyCode SetRotateType = KeyCode.E; - public KeyCode SetScaleType = KeyCode.R; - //public KeyCode SetRectToolType = KeyCode.T; + public KeyCode SetMoveType = KeyCode.T; + public KeyCode SetRotateType = KeyCode.R; + // public KeyCode SetScaleType = KeyCode.L; + //public KeyCode SetRectToolType = KeyCode.G; public KeyCode SetAllTransformType = KeyCode.Y; public KeyCode SetSpaceToggle = KeyCode.X; - public KeyCode SetPivotModeToggle = KeyCode.Z; - public KeyCode SetCenterTypeToggle = KeyCode.C; - public KeyCode SetScaleTypeToggle = KeyCode.S; + // public KeyCode SetPivotModeToggle = KeyCode.Z; + // public KeyCode SetCenterTypeToggle = KeyCode.C; + // public KeyCode SetScaleTypeToggle = KeyCode.S; public KeyCode translationSnapping = KeyCode.LeftControl; public KeyCode AddSelection = KeyCode.LeftShift; public KeyCode RemoveSelection = KeyCode.LeftControl; @@ -268,29 +268,29 @@ void SetSpaceAndType() transformType = TransformType.Move; else if (Input.GetKeyDown(SetRotateType)) transformType = TransformType.Rotate; - else if (Input.GetKeyDown(SetScaleType)) - transformType = TransformType.Scale; + // else if (Input.GetKeyDown(SetScaleType)) + // transformType = TransformType.Scale; //else if (Input.GetKeyDown(SetRectToolType)) type = TransformType.RectTool; else if (Input.GetKeyDown(SetAllTransformType)) transformType = TransformType.All; if (!isTransforming) translatingType = transformType; - if (Input.GetKeyDown(SetPivotModeToggle)) - { - if (pivot == TransformPivot.Pivot) pivot = TransformPivot.Center; - else if (pivot == TransformPivot.Center) pivot = TransformPivot.Pivot; + // if (Input.GetKeyDown(SetPivotModeToggle)) + // { + // if (pivot == TransformPivot.Pivot) pivot = TransformPivot.Center; + // else if (pivot == TransformPivot.Center) pivot = TransformPivot.Pivot; - SetPivotPoint(); - } + // SetPivotPoint(); + // } - if (Input.GetKeyDown(SetCenterTypeToggle)) - { - if (centerType == CenterType.All) centerType = CenterType.Solo; - else if (centerType == CenterType.Solo) centerType = CenterType.All; + // if (Input.GetKeyDown(SetCenterTypeToggle)) + // { + // if (centerType == CenterType.All) centerType = CenterType.Solo; + // else if (centerType == CenterType.Solo) centerType = CenterType.All; - SetPivotPoint(); - } + // SetPivotPoint(); + // } if (Input.GetKeyDown(SetSpaceToggle)) { @@ -300,11 +300,11 @@ void SetSpaceAndType() space = TransformSpace.Global; } - if (Input.GetKeyDown(SetScaleTypeToggle)) - { - if (scaleType == ScaleType.FromPoint) scaleType = ScaleType.FromPointOffset; - else if (scaleType == ScaleType.FromPointOffset) scaleType = ScaleType.FromPoint; - } + // if (Input.GetKeyDown(SetScaleTypeToggle)) + // { + // if (scaleType == ScaleType.FromPoint) scaleType = ScaleType.FromPointOffset; + // else if (scaleType == ScaleType.FromPointOffset) scaleType = ScaleType.FromPoint; + // } if (transformType == TransformType.Scale) { From 34d3644bd7bfc682e18e759eeb582ca8e2622b7f Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Sun, 2 Aug 2020 14:59:50 +0900 Subject: [PATCH 12/27] Modify SDF Joint implement and parser - apply max_force of prismatic joint through 'physics/ode/max_force' element. --- Assets/Scripts/Tools/SDF/Joint.cs | 20 ++++++++- .../Tools/SDFImporter/SDFImplement.Joint.cs | 42 +++++++++---------- .../Tools/SDFImporter/SDFImporter.Joint.cs | 2 +- .../Scripts/UI/RuntimeGizmo/TransformGizmo.cs | 2 +- 4 files changed, 42 insertions(+), 24 deletions(-) diff --git a/Assets/Scripts/Tools/SDF/Joint.cs b/Assets/Scripts/Tools/SDF/Joint.cs index ba84d09d..2a0b0001 100644 --- a/Assets/Scripts/Tools/SDF/Joint.cs +++ b/Assets/Scripts/Tools/SDF/Joint.cs @@ -44,6 +44,11 @@ public bool UseLimit() } } + public class OdePhysics + { + public double max_force = double.PositiveInfinity; + } + public class Joint : Entity { private string parent = string.Empty; @@ -57,6 +62,8 @@ public class Joint : Entity private Axis axis2 = null; // for revolute2(second axis)/universal joints // : TBD + private OdePhysics odePhysics = null; + // : TBD, ??? public string ParentLinkName => parent; @@ -66,9 +73,13 @@ public class Joint : Entity public Axis Axis => axis; public Axis Axis2 => axis2; + public OdePhysics OdePhysics => odePhysics; + public Joint(XmlNode _node) : base(_node) { + odePhysics = new OdePhysics(); + if (root != null) { ParseElements(); @@ -122,7 +133,14 @@ protected override void ParseElements() axis2.limit_upper = GetValue("axis2/limit/upper"); } } - } + if (IsValidNode("physics/ode")) + { + if (IsValidNode("physics/ode/max_force")) + { + odePhysics.max_force = GetValue("physics/ode/max_force"); + } + } + } } } \ No newline at end of file diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs index 42c6d4ad..00526129 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs @@ -41,11 +41,11 @@ private static Vector3 GetAxis(SDF.Vector3 value, SDF.Quaternion ro return pos; } - public static UEJoint AddRevolute(in SDF.Axis jointInfo, in GameObject targetObject, in Rigidbody connectBody) + public static UEJoint AddRevolute(in SDF.Axis axisInfo, in GameObject targetObject, in Rigidbody connectBody) { var hingeJointComponent = targetObject.AddComponent(); hingeJointComponent.connectedBody = connectBody; - hingeJointComponent.axis = GetAxis(jointInfo.xyz); + hingeJointComponent.axis = GetAxis(axisInfo.xyz); hingeJointComponent.useMotor = false; var jointMotor = new JointMotor(); @@ -55,11 +55,11 @@ public static UEJoint AddRevolute(in SDF.Axis jointInfo, in GameObject targetObj hingeJointComponent.motor = jointMotor; - if (jointInfo.UseLimit()) + if (axisInfo.UseLimit()) { var jointLimits = new JointLimits(); - jointLimits.min = (float)jointInfo.limit_lower * Mathf.Rad2Deg; - jointLimits.max = (float)jointInfo.limit_upper * Mathf.Rad2Deg; + jointLimits.min = (float)axisInfo.limit_lower * Mathf.Rad2Deg; + jointLimits.max = (float)axisInfo.limit_upper * Mathf.Rad2Deg; hingeJointComponent.useLimits = true; hingeJointComponent.limits = jointLimits; } @@ -67,19 +67,19 @@ public static UEJoint AddRevolute(in SDF.Axis jointInfo, in GameObject targetObj return hingeJointComponent; } - public static UEJoint AddRevolute2(in SDF.Axis jointInfo1, in SDF.Axis jointInfo2, in GameObject targetObject, in Rigidbody connectBody) + public static UEJoint AddRevolute2(in SDF.Axis axisInfo1, in SDF.Axis axisInfo2, in GameObject targetObject, in Rigidbody connectBody) { var jointComponent = targetObject.AddComponent(); var confJointComponent = targetObject.AddComponent(); - confJointComponent.axis = GetAxis(jointInfo1.xyz); - confJointComponent.secondaryAxis = GetAxis(jointInfo2.xyz); + confJointComponent.axis = GetAxis(axisInfo1.xyz); + confJointComponent.secondaryAxis = GetAxis(axisInfo2.xyz); - // jointInfo1.limit_lower; - // jointInfo1.limit_upper; + // axisInfo1.limit_lower; + // axisInfo1.limit_upper; - // jointInfo2.limit_lower; - // jointInfo2.limit_upper; + // axisInfo2.limit_lower; + // axisInfo2.limit_upper; return jointComponent; } @@ -119,21 +119,21 @@ public static UEJoint AddBall(in GameObject targetObject, in Rigidbody connectBo return jointComponent; } - public static UEJoint AddPrismatic(in SDF.Axis jointInfo, in SDF.Pose pose, in GameObject targetObject, in Rigidbody connectBody) + public static UEJoint AddPrismatic(in SDF.Axis axisInfo, in SDF.OdePhysics physicsInfo, in SDF.Pose pose, in GameObject targetObject, in Rigidbody connectBody) { var jointComponent = targetObject.AddComponent(); jointComponent.connectedBody = connectBody; jointComponent.secondaryAxis = Vector3.zero; - jointComponent.axis = GetAxis(jointInfo.xyz, pose.Rot); + jointComponent.axis = GetAxis(axisInfo.xyz, pose.Rot); var configurableJointMotion = ConfigurableJointMotion.Free; - if (jointInfo.UseLimit()) + if (axisInfo.UseLimit()) { - // Debug.LogWarningFormat("limit uppper{0}, lower{1}", jointInfo.limit_upper, jointInfo.limit_lower); + // Debug.LogWarningFormat("limit uppper{0}, lower{1}", axisInfo.limit_upper, axisInfo.limit_lower); configurableJointMotion = ConfigurableJointMotion.Limited; var linearLimit = new SoftJointLimit(); - linearLimit.limit = (float)(jointInfo.limit_upper); + linearLimit.limit = (float)(axisInfo.limit_upper); jointComponent.linearLimit = linearLimit; } @@ -144,15 +144,15 @@ public static UEJoint AddPrismatic(in SDF.Axis jointInfo, in SDF.Pose po jointComponent.linearLimitSpring = linearLimitSpring; var softJointLimit = new SoftJointLimit(); - softJointLimit.limit = (float)(jointInfo.limit_upper - jointInfo.limit_lower); + softJointLimit.limit = (float)(axisInfo.limit_upper - axisInfo.limit_lower); softJointLimit.bounciness = 0.000f; softJointLimit.contactDistance = 0.0f; jointComponent.linearLimit = softJointLimit; var jointDrive = new JointDrive(); - jointDrive.positionSpring = (float)(jointInfo.dynamics_spring_stiffness); - jointDrive.positionDamper = (float)(jointInfo.dynamics_damping); - jointDrive.maximumForce = Mathf.Infinity; // 3.402823e+38 + jointDrive.positionSpring = (float)axisInfo.dynamics_spring_stiffness; + jointDrive.positionDamper = (float)axisInfo.dynamics_damping; + jointDrive.maximumForce = (float)physicsInfo.max_force; var zeroJointDriver = new JointDrive(); zeroJointDriver.positionSpring = 0; diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs index 048c8fb8..797357a0 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs @@ -76,7 +76,7 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO } else if (joint.Type.Equals("prismatic")) { - var prismaticJointComponent = SDFImplement.Joint.AddPrismatic(joint.Axis, joint.Pose, linkObjectChild, rigidBodyParent); + var prismaticJointComponent = SDFImplement.Joint.AddPrismatic(joint.Axis, joint.OdePhysics, joint.Pose, linkObjectChild, rigidBodyParent); jointComponent = prismaticJointComponent as Joint; } else if (joint.Type.Equals("revolute")) diff --git a/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs b/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs index ad25d896..120c0fbe 100644 --- a/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs +++ b/Assets/Scripts/UI/RuntimeGizmo/TransformGizmo.cs @@ -66,7 +66,7 @@ public partial class TransformGizmo : MonoBehaviour public KeyCode SetMoveType = KeyCode.T; public KeyCode SetRotateType = KeyCode.R; // public KeyCode SetScaleType = KeyCode.L; - //public KeyCode SetRectToolType = KeyCode.G; + // public KeyCode SetRectToolType = KeyCode.G; public KeyCode SetAllTransformType = KeyCode.Y; public KeyCode SetSpaceToggle = KeyCode.X; // public KeyCode SetPivotModeToggle = KeyCode.Z; From 56402b5f24195f375651c4f99b98a49ed982107f Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Sun, 2 Aug 2020 15:05:33 +0900 Subject: [PATCH 13/27] Change default parameter for Camera Control UI - edge width: 100 -> 30 --- Assets/Scenes/MainScene.unity | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index a8e0a45b..1c159aff 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -3806,7 +3806,7 @@ MonoBehaviour: shiftAdd: 10 maxShift: 100 camSens: 0.25 - edgeWidth: 100 + edgeWidth: 30 edgeSens: 0.05 edgeSensMax: 1.7 --- !u!20 &963194227 @@ -3929,12 +3929,8 @@ MonoBehaviour: m_Bits: 1 SetMoveType: 116 SetRotateType: 114 - SetScaleType: 0 SetAllTransformType: 121 SetSpaceToggle: 120 - SetPivotModeToggle: 0 - SetCenterTypeToggle: 0 - SetScaleTypeToggle: 0 translationSnapping: 306 AddSelection: 0 RemoveSelection: 0 From 26c40e100c206e8382edbce8c0166f29fb0f55d2 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Sun, 2 Aug 2020 17:36:16 +0900 Subject: [PATCH 14/27] Add new sensor - Contact Code refactroing SDFPlugin/PluginParamters --- Assets/Scripts/Devices/Contact.cs | 185 ++++++++++++++++++ Assets/Scripts/Devices/Contact.cs.meta | 11 ++ Assets/Scripts/Tools/SDF/Entity.cs | 30 ++- Assets/Scripts/Tools/SDF/Importer.cs | 8 +- Assets/Scripts/Tools/SDF/Scene.cs | 14 +- Assets/Scripts/Tools/SDF/Sensor.Parse.cs | 20 ++ Assets/Scripts/Tools/SDF/Sensor.cs | 8 +- Assets/Scripts/Tools/SDF/SensorType.cs | 6 +- .../Tools/SDFImporter/SDFImplement.Sensor.cs | 52 +++-- .../Tools/SDFImporter/SDFImporter.Sensor.cs | 11 +- .../Tools/SDFPlugins/PluginParameters.cs | 18 +- 11 files changed, 309 insertions(+), 54 deletions(-) create mode 100644 Assets/Scripts/Devices/Contact.cs create mode 100644 Assets/Scripts/Devices/Contact.cs.meta diff --git a/Assets/Scripts/Devices/Contact.cs b/Assets/Scripts/Devices/Contact.cs new file mode 100644 index 00000000..d3710f75 --- /dev/null +++ b/Assets/Scripts/Devices/Contact.cs @@ -0,0 +1,185 @@ +/* + * Copyright (c) 2020 LG Electronics Inc. + * + * SPDX-License-Identifier: MIT + */ + +using System.Collections; +using System.Collections.Generic; +using System; +using UnityEngine; +using Stopwatch = System.Diagnostics.Stopwatch; +using messages = gazebo.msgs; + +namespace SensorDevices +{ + public class ContactTrigger : MonoBehaviour + { + public Action collisionEnter = null; + public Action collisionStay = null; + public Action collisionExit = null; + + private void OnCollisionEnter(Collision other) + { + if (collisionEnter != null) + { + collisionEnter.Invoke(other); + } + } + + private void OnCollisionExit(Collision other) + { + if (collisionExit != null) + { + collisionExit.Invoke(other); + } + } + + private void OnCollisionStay(Collision other) + { + if (collisionStay != null) + { + collisionStay.Invoke(other); + } + } + } + + public class Contact : Device + { + private messages.Contacts contacts = null; + + public List collision = new List(); + public string topic = string.Empty; + + private bool contacted = false; + + protected override void OnAwake() + { + deviceName = name; + } + + protected override void OnStart() + { + } + + protected override IEnumerator OnVisualize() + { + var waitForEndOfFrame = new WaitForEndOfFrame(); + var waitForSeconds = new WaitForSeconds(UpdatePeriod); + + while (true) + { + yield return waitForSeconds; + } + } + + protected override void InitializeMessages() + { + contacts = new messages.Contacts(); + contacts.Time = new messages.Time(); + } + + protected override IEnumerator MainDeviceWorker() + { + var sw = new Stopwatch(); + while (true) + { + sw.Restart(); + GenerateMessage(); + sw.Stop(); + + yield return new WaitForSeconds(WaitPeriod((float)sw.Elapsed.TotalSeconds)); + } + } + + protected override void GenerateMessage() + { + DeviceHelper.SetCurrentTime(contacts.Time); + PushData(contacts); + // if (contacts.contact.Count > 0) + // { + // Debug.Log(contacts.contact[0].Depths.Length + " : " + contacts.contact[0].Normals.Count); + // } + contacts.contact.Clear(); + } + + + public void CollisionEnter(Collision other) + { + if (other.contactCount > 0) + { + contacted = true; + } + } + + public void CollisionStay(Collision other) + { + var newContact = new messages.Contact(); + + // TODO: Need to be implemented; + // newContact.Wrenchs + newContact.Depths = new double[1]; + newContact.World = "default"; + DeviceHelper.SetCurrentTime(newContact.Time); + + foreach (var collisionContact in other.contacts) + { + var collision1 = collisionContact.thisCollider.name; + var collision2 = collisionContact.otherCollider.name; + + // find existing collision set + var existingContact = contacts.contact.Find(x => x.Collision1.Contains(collision1) && x.Collision2.Contains(collision2)); + if (existingContact != null) + { + // Debug.Log("Existing!!"); + var depths = existingContact.Depths; + var depthsLength = depths.Length; + Array.Resize(ref depths, depthsLength + 1); + depths[depthsLength] = collisionContact.separation; + existingContact.Depths = depths; + + var normal = new messages.Vector3d(); + DeviceHelper.SetVector3d(normal, collisionContact.normal); + existingContact.Normals.Add(normal); + + var position = new messages.Vector3d(); + DeviceHelper.SetVector3d(position, collisionContact.point); + existingContact.Positions.Add(position); + } + else + { + newContact.Collision1 = collisionContact.thisCollider.name; + newContact.Collision2 = collisionContact.otherCollider.name; + + newContact.Depths[0] = collisionContact.separation; + + var normal = new messages.Vector3d(); + DeviceHelper.SetVector3d(normal, collisionContact.normal); + newContact.Normals.Add(normal); + + var position = new messages.Vector3d(); + DeviceHelper.SetVector3d(position, collisionContact.point); + newContact.Positions.Add(position); + + contacts.contact.Add(newContact); + } + // Debug.DrawLine(collisionContact.point, collisionContact.normal, Color.white); + } + // Debug.Log(other.contactCount + "," + contacts.contact.Count); + // Debug.Log(contacts.contact[0].Depths.Length + " : " + contacts.contact[0].Normals.Count); + } + + public void CollisionExit(Collision other) + { + if (other.contactCount == 0) + { + contacted = false; + } + } + + public bool IsContacted() + { + return contacted; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Devices/Contact.cs.meta b/Assets/Scripts/Devices/Contact.cs.meta new file mode 100644 index 00000000..b6614926 --- /dev/null +++ b/Assets/Scripts/Devices/Contact.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 26fd959271281d3c6bb3312cc345c380 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/SDF/Entity.cs b/Assets/Scripts/Tools/SDF/Entity.cs index 7e10511a..20e6d152 100644 --- a/Assets/Scripts/Tools/SDF/Entity.cs +++ b/Assets/Scripts/Tools/SDF/Entity.cs @@ -5,6 +5,7 @@ */ using System.Collections.Generic; +using System.Linq; using System.Xml; using System; @@ -40,10 +41,10 @@ protected void LoadData(XmlNode node) //Console.WriteLine("Load {0} Info", typeof(T).Name); - XmlNodeList nodeList = node.SelectNodes(targetTag); + var nodeList = node.SelectNodes(targetTag); // Console.WriteLine("Num Of model nodes: " + nodeList.Count); - foreach (XmlNode nodeItem in nodeList) + foreach (var nodeItem in nodeList) { //Console.WriteLine(" NAME: " + node.Attributes["name"].Value); items.Add((T)Activator.CreateInstance(typeof(T), nodeItem)); @@ -124,6 +125,29 @@ protected XmlNodeList GetNodes(in string xpath) return GetValue(GetNode(xpath), defaultValue); } + protected bool GetValues(in string xpath, out List valueList) + { + var nodeList = new List(GetNodes("contact/collision").Cast()); + if (nodeList == null) + { + valueList = null; + return false; + } + + valueList = nodeList.ConvertAll(node => + { + if (node == null) + { + return default(T); + } + + var value = node.InnerXml.Trim(); + return ConvertValueType(value); + }); + + return true; + } + protected T GetAttribute(in string attributeName, in T defaultValue = default(T)) { var targetAttribute = attributes[attributeName]; @@ -185,7 +209,7 @@ public static T ConvertValueType(string value) return (T)Convert.ChangeType(value, code); } - private static T ConvertXmlNodeToValue(in XmlNode node) + public static T ConvertXmlNodeToValue(in XmlNode node) { if (node == null) { diff --git a/Assets/Scripts/Tools/SDF/Importer.cs b/Assets/Scripts/Tools/SDF/Importer.cs index 97e96716..ab241fa0 100644 --- a/Assets/Scripts/Tools/SDF/Importer.cs +++ b/Assets/Scripts/Tools/SDF/Importer.cs @@ -91,7 +91,7 @@ private void ImportVisuals(IReadOnlyList items, in Object parentObject) foreach (var item in items) { // Console.WriteLine("[Visual] {0}", item.Name); - Object createdObject = ImportVisual(item, parentObject); + var createdObject = ImportVisual(item, parentObject); ImportGeometry(item.GetGeometry(), createdObject); @@ -108,7 +108,7 @@ private void ImportCollisions(IReadOnlyList items, in Object parentOb foreach (var item in items) { // Console.WriteLine("[Collision] {0}", item.Name); - Object createdObject = ImportCollision(item, parentObject); + var createdObject = ImportCollision(item, parentObject); ImportGeometry(item.GetGeometry(), createdObject); @@ -120,7 +120,7 @@ private void ImportSensors(IReadOnlyList items, in Object parentObject) { foreach (var item in items) { - Object createdObject = ImportSensor(item, parentObject); + var createdObject = ImportSensor(item, parentObject); ImportPlugins(item.GetPlugins(), createdObject); } @@ -131,7 +131,7 @@ private void ImportLinks(IReadOnlyList items, in Object parentObject) foreach (var item in items) { // Console.WriteLine("[Link] {0}", item.Name); - Object createdObject = ImportLink(item, parentObject); + var createdObject = ImportLink(item, parentObject); ImportVisuals(item.GetVisuals(), createdObject); diff --git a/Assets/Scripts/Tools/SDF/Scene.cs b/Assets/Scripts/Tools/SDF/Scene.cs index cd0a53c7..86bd58e0 100644 --- a/Assets/Scripts/Tools/SDF/Scene.cs +++ b/Assets/Scripts/Tools/SDF/Scene.cs @@ -12,13 +12,13 @@ public class Scene { private XmlNode root = null; - // ambient - // background - // sky - // shadows - // fog - // grid - // origin_visual + // : TBD + // : TBD + // : TBD + // : TBD + // : TBD + // : TBD + // : TBD public Scene(XmlNode _node) { diff --git a/Assets/Scripts/Tools/SDF/Sensor.Parse.cs b/Assets/Scripts/Tools/SDF/Sensor.Parse.cs index 1af234a4..e31a72a2 100644 --- a/Assets/Scripts/Tools/SDF/Sensor.Parse.cs +++ b/Assets/Scripts/Tools/SDF/Sensor.Parse.cs @@ -22,7 +22,9 @@ private Ray ParseRay() ray.horizontal.max_angle = GetValue("ray/scan/horizontal/max_angle"); if (ray.horizontal.max_angle < ray.horizontal.min_angle) + { Console.WriteLine("Must be greater or equal to min_angle"); + } if (IsValidNode("ray/scan/vertical")) { @@ -32,10 +34,14 @@ private Ray ParseRay() ray.vertical.max_angle = GetValue("ray/scan/vertical/max_angle"); if (ray.vertical.samples == 0) + { Console.WriteLine("vertical sample cannot be zero"); + } if (ray.vertical.max_angle < ray.vertical.min_angle) + { Console.WriteLine("Must be greater or equal to min_angle"); + } } } @@ -262,5 +268,19 @@ private GPS ParseGPS() return gps; } + + private Contact ParseContact() + { + var contact = new Contact(); + + if (GetValues("contact/collision", out var collisionList)) + { + contact.collision = collisionList; + } + + contact.topic = GetValue("contact/topic"); + + return contact; + } } } \ No newline at end of file diff --git a/Assets/Scripts/Tools/SDF/Sensor.cs b/Assets/Scripts/Tools/SDF/Sensor.cs index ab952c5b..432e4f0f 100644 --- a/Assets/Scripts/Tools/SDF/Sensor.cs +++ b/Assets/Scripts/Tools/SDF/Sensor.cs @@ -65,7 +65,7 @@ protected override void ParseElements() // Console.WriteLine("[{0}] P:{1} C:{2}", GetType().Name, parent, child); - if (IsValidNode("ray") && (Type.Equals("gpu_ray") || Type.Equals("ray"))) + if (IsValidNode("ray") && (Type.Equals("gpu_ray") || Type.Equals("ray") || Type.Equals("lidar"))) { sensor = ParseRay(); } @@ -73,7 +73,7 @@ protected override void ParseElements() { if (Type.Equals("multicamera")) { - Cameras cameras = new Cameras(); + var cameras = new Cameras(); cameras.name = "multiple_camera"; var nodes = GetNodes("camera"); @@ -107,6 +107,10 @@ protected override void ParseElements() { sensor = ParseGPS(); } + else if (IsValidNode("contact") && Type.Equals("contact")) + { + sensor = ParseContact(); + } else { Console.WriteLine("Not supported sensor type!!!!! => " + Type); diff --git a/Assets/Scripts/Tools/SDF/SensorType.cs b/Assets/Scripts/Tools/SDF/SensorType.cs index c91b6daa..b2e39e7b 100644 --- a/Assets/Scripts/Tools/SDF/SensorType.cs +++ b/Assets/Scripts/Tools/SDF/SensorType.cs @@ -144,7 +144,11 @@ public class Intrinsics public Lens lens = new Lens(); } - // : TBD + public class Contact : SensorType + { + public List collision = new List(); + public string topic; + } public class GPS : SensorType { diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Sensor.cs b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Sensor.cs index 7233e69c..672d852a 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Sensor.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Sensor.cs @@ -27,7 +27,7 @@ private static string GetFrameName(in GameObject currentObject) return frameName.Substring(2); } - private static void AttachSensor(in GameObject sensorObject, in GameObject targetObject) + private static void AttachSensor(in GameObject sensorObject, in GameObject targetObject, SDF.Pose sensorPose = null) { try { @@ -36,22 +36,17 @@ private static void AttachSensor(in GameObject sensorObject, in GameObject targe sensorTransform.rotation = Quaternion.identity; sensorTransform.SetParent(targetObject.transform, false); sensorTransform.localScale = Vector3.one; - sensorTransform.localPosition = Vector3.zero; - sensorTransform.localRotation = Quaternion.identity; - } - catch - { - Debug.Log("sensorObject is null or Invalid obejct exist"); - } - } - public static void TransformSensor(in GameObject sensorObject, SDF.Pose sensorPose) - { - try - { - var sensorTransform = sensorObject.transform; - sensorTransform.localPosition = SDF2Unity.GetPosition(sensorPose.Pos); - sensorTransform.localRotation = SDF2Unity.GetRotation(sensorPose.Rot); + if (sensorPose == null) + { + sensorTransform.localPosition = Vector3.zero; + sensorTransform.localRotation = Quaternion.identity; + } + else + { + sensorTransform.localPosition = SDF2Unity.GetPosition(sensorPose.Pos); + sensorTransform.localRotation = SDF2Unity.GetRotation(sensorPose.Rot); + } } catch { @@ -84,8 +79,8 @@ public static Device AddLidar(in SDF.Ray element, in GameObject targetObject) public static Device AddCamera(in SDF.Camera element, in GameObject targetObject) { var newSensorObject = new GameObject(); - AttachSensor(newSensorObject, targetObject); - TransformSensor(newSensorObject, element.Pose); + AttachSensor(newSensorObject, targetObject, element.Pose); + var camera = newSensorObject.AddComponent(); camera.deviceName = GetFrameName(newSensorObject); camera.parameters = element; @@ -95,8 +90,7 @@ public static Device AddCamera(in SDF.Camera element, in GameObject targetObject public static Device AddDepthCamera(in SDF.Camera element, in GameObject targetObject) { var newSensorObject = new GameObject(); - AttachSensor(newSensorObject, targetObject); - TransformSensor(newSensorObject, element.Pose); + AttachSensor(newSensorObject, targetObject, element.Pose); var depthCamera = newSensorObject.AddComponent(); depthCamera.deviceName = GetFrameName(newSensorObject); @@ -153,5 +147,23 @@ public static Device AddGps(in SDF.GPS element, in GameObject targetObject) return gps; } + + public static Device AddContact(in SDF.Contact element, in GameObject targetObject) + { + var newSensorObject = new GameObject(); + AttachSensor(newSensorObject, targetObject); + + var contact = newSensorObject.AddComponent(); + contact.deviceName = GetFrameName(newSensorObject); + contact.collision = element.collision; + contact.topic = element.topic; + + var contactTrigger = targetObject.AddComponent(); + contactTrigger.collisionEnter = contact.CollisionEnter; + contactTrigger.collisionExit = contact.CollisionExit; + contactTrigger.collisionStay = contact.CollisionStay; + + return contact; + } } } diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Sensor.cs b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Sensor.cs index 3f523771..c7e6dc05 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Sensor.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Sensor.cs @@ -56,8 +56,12 @@ protected override System.Object ImportSensor(in SDF.Sensor item, in System.Obje var gps = item.GetSensor() as SDF.GPS; sensor = SDFImplement.Sensor.AddGps(gps, targetObject); } - else if (sensorType.Equals("air_pressure") || - sensorType.Equals("altimeter") || sensorType.Equals("contact") || + else if (sensorType.Equals("contact")) + { + var contact = item.GetSensor() as SDF.Contact; + sensor = SDFImplement.Sensor.AddContact(contact, targetObject); + } + else if (sensorType.Equals("air_pressure") || sensorType.Equals("altimeter") || sensorType.Equals("force_torque") || sensorType.Equals("logical_camera") || sensorType.Equals("magnetometer") || sensorType.Equals("rfidtag") || @@ -82,7 +86,8 @@ protected override System.Object ImportSensor(in SDF.Sensor item, in System.Obje { newSensorObject.tag = "Sensor"; newSensorObject.name = item.Name; - SDFImplement.Sensor.TransformSensor(newSensorObject, item.Pose); + newSensorObject.transform.localPosition += SDF2Unity.GetPosition(item.Pose.Pos); + newSensorObject.transform.localRotation *= SDF2Unity.GetRotation(item.Pose.Rot); #if UNITY_EDITOR SceneVisibilityManager.instance.ToggleVisibility(newSensorObject, true); SceneVisibilityManager.instance.DisablePicking(newSensorObject, true); diff --git a/Assets/Scripts/Tools/SDFPlugins/PluginParameters.cs b/Assets/Scripts/Tools/SDFPlugins/PluginParameters.cs index d4fcfd5c..3c47fdda 100644 --- a/Assets/Scripts/Tools/SDFPlugins/PluginParameters.cs +++ b/Assets/Scripts/Tools/SDFPlugins/PluginParameters.cs @@ -19,16 +19,6 @@ public void SetRootData(in XmlNode node) parameters = node.SelectSingleNode("."); } - private static T XmlNodeToValue(in XmlNode node) - { - if (node == null) - { - return default(T); - } - var value = node.InnerXml.Trim(); - return SDF.Entity.ConvertValueType(value); - } - public T GetAttribute(in string xpath, in string attributeName, in T defaultValue = default(T)) { var node = parameters.SelectSingleNode(xpath); @@ -56,7 +46,7 @@ private static T XmlNodeToValue(in XmlNode node) try { var node = parameters.SelectSingleNode(xpath); - return XmlNodeToValue(node); + return SDF.Entity.ConvertXmlNodeToValue(node); } catch (XmlException ex) { @@ -70,7 +60,7 @@ public bool GetValues(in string xpath, out List valueList) valueList = null; var result = GetValues(xpath, out var nodeList); - valueList = nodeList.ConvertAll(s => XmlNodeToValue(s)); + valueList = nodeList.ConvertAll(s => SDF.Entity.ConvertXmlNodeToValue(s)); return result; } @@ -110,8 +100,8 @@ public void PrintData() else { // Print all SDF contents - StringWriter sw = new StringWriter(); - XmlTextWriter xw = new XmlTextWriter(sw); + var sw = new StringWriter(); + var xw = new XmlTextWriter(sw); parameters.WriteTo(xw); Debug.Log(sw.ToString()); } From d55905afcba0be1508ed2e4fd77315de4f503330 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 5 Aug 2020 22:14:59 +0900 Subject: [PATCH 15/27] Cleaning useless protomessages --- .../Tools/ProtobufMessages/path_info.cs | 68 ------------------- .../Tools/ProtobufMessages/path_info.cs.meta | 11 --- .../Tools/ProtobufMessages/robot_path.cs | 37 ---------- .../Tools/ProtobufMessages/robot_path.cs.meta | 11 --- 4 files changed, 127 deletions(-) delete mode 100644 Assets/Scripts/Tools/ProtobufMessages/path_info.cs delete mode 100644 Assets/Scripts/Tools/ProtobufMessages/path_info.cs.meta delete mode 100644 Assets/Scripts/Tools/ProtobufMessages/robot_path.cs delete mode 100644 Assets/Scripts/Tools/ProtobufMessages/robot_path.cs.meta diff --git a/Assets/Scripts/Tools/ProtobufMessages/path_info.cs b/Assets/Scripts/Tools/ProtobufMessages/path_info.cs deleted file mode 100644 index 0611e441..00000000 --- a/Assets/Scripts/Tools/ProtobufMessages/path_info.cs +++ /dev/null @@ -1,68 +0,0 @@ -// -// This file was generated by a tool; you should avoid making direct changes. -// Consider using 'partial classes' to extend these types -// Input: path_info.proto -// - -#pragma warning disable CS0612, CS1591, CS3021, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192 -namespace gazebo.msgs -{ - - [global::ProtoBuf.ProtoContract(Name = @"Path_Info")] - public partial class PathInfo : global::ProtoBuf.IExtensible - { - private global::ProtoBuf.IExtension __pbn__extensionData; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing); - - [global::ProtoBuf.ProtoMember(1, Name = @"datainfo", IsRequired = true)] - public int Datainfo { get; set; } - - [global::ProtoBuf.ProtoMember(2)] - public float fXmm - { - get { return __pbn__fXmm.GetValueOrDefault(); } - set { __pbn__fXmm = value; } - } - public bool ShouldSerializefXmm() => __pbn__fXmm != null; - public void ResetfXmm() => __pbn__fXmm = null; - private float? __pbn__fXmm; - - [global::ProtoBuf.ProtoMember(3)] - public float fYmm - { - get { return __pbn__fYmm.GetValueOrDefault(); } - set { __pbn__fYmm = value; } - } - public bool ShouldSerializefYmm() => __pbn__fYmm != null; - public void ResetfYmm() => __pbn__fYmm = null; - private float? __pbn__fYmm; - - [global::ProtoBuf.ProtoMember(4)] - public float fDeg - { - get { return __pbn__fDeg.GetValueOrDefault(); } - set { __pbn__fDeg = value; } - } - public bool ShouldSerializefDeg() => __pbn__fDeg != null; - public void ResetfDeg() => __pbn__fDeg = null; - private float? __pbn__fDeg; - - [global::ProtoBuf.ProtoMember(5, Name = @"corner")] - public int Corner - { - get { return __pbn__Corner.GetValueOrDefault(); } - set { __pbn__Corner = value; } - } - public bool ShouldSerializeCorner() => __pbn__Corner != null; - public void ResetCorner() => __pbn__Corner = null; - private int? __pbn__Corner; - - [global::ProtoBuf.ProtoMember(6, Name = @"index", IsRequired = true)] - public int Index { get; set; } - - } - -} - -#pragma warning restore CS0612, CS1591, CS3021, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192 diff --git a/Assets/Scripts/Tools/ProtobufMessages/path_info.cs.meta b/Assets/Scripts/Tools/ProtobufMessages/path_info.cs.meta deleted file mode 100644 index a861aad0..00000000 --- a/Assets/Scripts/Tools/ProtobufMessages/path_info.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b1533ae74b43825d0894d344083a41f6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs b/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs deleted file mode 100644 index aaa4b2a9..00000000 --- a/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs +++ /dev/null @@ -1,37 +0,0 @@ -// -// This file was generated by a tool; you should avoid making direct changes. -// Consider using 'partial classes' to extend these types -// Input: robot_path.proto -// - -#pragma warning disable CS0612, CS1591, CS3021, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192 -namespace gazebo.msgs -{ - - [global::ProtoBuf.ProtoContract(Name = @"Robot_Path")] - public partial class RobotPath : global::ProtoBuf.IExtensible - { - private global::ProtoBuf.IExtension __pbn__extensionData; - global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing) - => global::ProtoBuf.Extensible.GetExtensionObject(ref __pbn__extensionData, createIfMissing); - - [global::ProtoBuf.ProtoMember(1, Name = @"datasize", IsRequired = true)] - public int Datasize { get; set; } - - [global::ProtoBuf.ProtoMember(2, Name = @"fXmm")] - public float[] fXmms { get; set; } - - [global::ProtoBuf.ProtoMember(3, Name = @"fYmm")] - public float[] fYmms { get; set; } - - [global::ProtoBuf.ProtoMember(4, Name = @"fDeg")] - public float[] fDegs { get; set; } - - [global::ProtoBuf.ProtoMember(5, Name = @"corner")] - public int[] Corners { get; set; } - - } - -} - -#pragma warning restore CS0612, CS1591, CS3021, IDE1006, RCS1036, RCS1057, RCS1085, RCS1192 diff --git a/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs.meta b/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs.meta deleted file mode 100644 index 37200ee8..00000000 --- a/Assets/Scripts/Tools/ProtobufMessages/robot_path.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 49848780bb0516c9ebd78b23a40da78f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: From 0a2d680e10438b8ecf1644c779000c5b9cbbda21 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 5 Aug 2020 22:16:44 +0900 Subject: [PATCH 16/27] remove partical keyword for class in Devices --- Assets/Scripts/Devices/GPS.cs | 2 +- Assets/Scripts/Devices/IMU.cs | 4 ++-- Assets/Scripts/Devices/MultiCamera.cs | 2 +- Assets/Scripts/Devices/Sonar.cs | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Assets/Scripts/Devices/GPS.cs b/Assets/Scripts/Devices/GPS.cs index 2ff5c279..8a92347c 100644 --- a/Assets/Scripts/Devices/GPS.cs +++ b/Assets/Scripts/Devices/GPS.cs @@ -11,7 +11,7 @@ namespace SensorDevices { - public partial class GPS : Device + public class GPS : Device { private messages.Gps gps = null; diff --git a/Assets/Scripts/Devices/IMU.cs b/Assets/Scripts/Devices/IMU.cs index c7cf2161..824f2999 100644 --- a/Assets/Scripts/Devices/IMU.cs +++ b/Assets/Scripts/Devices/IMU.cs @@ -11,7 +11,7 @@ namespace SensorDevices { - public partial class IMU : Device + public class IMU : Device { private messages.Imu imu = null; @@ -103,7 +103,7 @@ protected override void GenerateMessage() DeviceHelper.SetVector3d(imu.AngularVelocity, imuAngularVelocity * Mathf.Deg2Rad); DeviceHelper.SetVector3d(imu.LinearAcceleration, imuLinearAcceleration); DeviceHelper.SetCurrentTime(imu.Stamp); - SetMessageData(imu); + PushData(imu); } public Quaternion GetOrientation() diff --git a/Assets/Scripts/Devices/MultiCamera.cs b/Assets/Scripts/Devices/MultiCamera.cs index c6893e84..13a3b030 100644 --- a/Assets/Scripts/Devices/MultiCamera.cs +++ b/Assets/Scripts/Devices/MultiCamera.cs @@ -12,7 +12,7 @@ namespace SensorDevices { - public partial class MultiCamera : Device + public class MultiCamera : Device { public List cameras = new List(); diff --git a/Assets/Scripts/Devices/Sonar.cs b/Assets/Scripts/Devices/Sonar.cs index 8701221f..bf1d3a23 100644 --- a/Assets/Scripts/Devices/Sonar.cs +++ b/Assets/Scripts/Devices/Sonar.cs @@ -12,7 +12,7 @@ namespace SensorDevices { - public partial class Sonar : Device + public class Sonar : Device { private messages.SonarStamped sonarStamped = null; @@ -140,7 +140,7 @@ protected override void GenerateMessage() DeviceHelper.SetVector3d(sonar.WorldPose.Position, sonarPosition); DeviceHelper.SetQuaternion(sonar.WorldPose.Orientation, sonarRotation); DeviceHelper.SetCurrentTime(sonarStamped.Time); - SetMessageData(sonarStamped); + PushData(sonarStamped); } private void ResolveSensingArea(in MeshCollider meshCollider) From 95351a4a55526c54b394d97bb1a8207e1d84b8f4 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Wed, 5 Aug 2020 22:17:31 +0900 Subject: [PATCH 17/27] Change to warning log level when file does not exists --- Assets/Scripts/Tools/SDF/Root.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Assets/Scripts/Tools/SDF/Root.cs b/Assets/Scripts/Tools/SDF/Root.cs index d845fc7d..ea514f3b 100644 --- a/Assets/Scripts/Tools/SDF/Root.cs +++ b/Assets/Scripts/Tools/SDF/Root.cs @@ -83,7 +83,9 @@ public bool DoParse() } else { + (Console.Out as DebugLogWriter).SetWarning(true); Console.WriteLine("World file not exist: " + worldFileName); + (Console.Out as DebugLogWriter).SetWarning(false); } } } From b3416476fb9b412005b09dffd228b5357ca79e46 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 6 Aug 2020 09:16:14 +0900 Subject: [PATCH 18/27] Remove UIElementsSchema files generated by default --- UIElementsSchema/UIElements.xsd | 7 - .../UnityEditor.PackageManager.UI.xsd | 294 ------ .../UnityEditor.UIElements.Debugger.xsd | 27 - UIElementsSchema/UnityEditor.UIElements.xsd | 887 ------------------ UIElementsSchema/UnityEngine.UIElements.xsd | 525 ----------- 5 files changed, 1740 deletions(-) delete mode 100644 UIElementsSchema/UIElements.xsd delete mode 100644 UIElementsSchema/UnityEditor.PackageManager.UI.xsd delete mode 100644 UIElementsSchema/UnityEditor.UIElements.Debugger.xsd delete mode 100644 UIElementsSchema/UnityEditor.UIElements.xsd delete mode 100644 UIElementsSchema/UnityEngine.UIElements.xsd diff --git a/UIElementsSchema/UIElements.xsd b/UIElementsSchema/UIElements.xsd deleted file mode 100644 index c0520737..00000000 --- a/UIElementsSchema/UIElements.xsd +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/UIElementsSchema/UnityEditor.PackageManager.UI.xsd b/UIElementsSchema/UnityEditor.PackageManager.UI.xsd deleted file mode 100644 index 433aa4c1..00000000 --- a/UIElementsSchema/UnityEditor.PackageManager.UI.xsd +++ /dev/null @@ -1,294 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/UIElementsSchema/UnityEditor.UIElements.Debugger.xsd b/UIElementsSchema/UnityEditor.UIElements.Debugger.xsd deleted file mode 100644 index 39551353..00000000 --- a/UIElementsSchema/UnityEditor.UIElements.Debugger.xsd +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/UIElementsSchema/UnityEditor.UIElements.xsd b/UIElementsSchema/UnityEditor.UIElements.xsd deleted file mode 100644 index 3a808f49..00000000 --- a/UIElementsSchema/UnityEditor.UIElements.xsd +++ /dev/null @@ -1,887 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/UIElementsSchema/UnityEngine.UIElements.xsd b/UIElementsSchema/UnityEngine.UIElements.xsd deleted file mode 100644 index af7823d1..00000000 --- a/UIElementsSchema/UnityEngine.UIElements.xsd +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 4be41b2f68fa8885e8583a20ef8800c3ac58bd81 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 6 Aug 2020 11:53:59 +0900 Subject: [PATCH 19/27] Support twist driving(linear/angular) in MicomInput Refactoring RobotControl plugin and MicomSensor --- Assets/Scripts/DevicePlugins/RobotControl.cs | 19 ++- Assets/Scripts/Devices/MicomInput.cs | 119 +++++++++++++++---- Assets/Scripts/Devices/MicomSensor.cs | 26 +++- 3 files changed, 138 insertions(+), 26 deletions(-) diff --git a/Assets/Scripts/DevicePlugins/RobotControl.cs b/Assets/Scripts/DevicePlugins/RobotControl.cs index 709637ab..55879ecb 100644 --- a/Assets/Scripts/DevicePlugins/RobotControl.cs +++ b/Assets/Scripts/DevicePlugins/RobotControl.cs @@ -46,10 +46,23 @@ void FixedUpdate() { if (micomInput != null && micomSensor != null) { - var targetWheelVelocityLeft = micomInput.GetWheelVelocityLeft(); - var targetWheelVelocityRight = micomInput.GetWheelVelocityRight(); + switch (micomInput.ControlType) + { + case MicomInput.VelocityType.LinearAndAngular: + var targetLinearVelocityLeft = micomInput.GetLinearVelocity(); + var targetAngularVelocityRight = micomInput.GetAngularVelocity(); + micomSensor.SetTwistDrive(targetLinearVelocityLeft, targetAngularVelocityRight); + break; + + case MicomInput.VelocityType.LeftAndRight: + var targetWheelLeftVelocity = micomInput.GetWheelLeftVelocity(); + var targetWheelRightVelocity = micomInput.GetWheelRightVelocity(); + micomSensor.SetDifferentialDrive(targetWheelLeftVelocity, targetWheelRightVelocity); + break; - micomSensor.SetMotorVelocity(targetWheelVelocityLeft, targetWheelVelocityRight); + case MicomInput.VelocityType.Unknown: + break; + } } } diff --git a/Assets/Scripts/Devices/MicomInput.cs b/Assets/Scripts/Devices/MicomInput.cs index 30e2388e..c571b424 100644 --- a/Assets/Scripts/Devices/MicomInput.cs +++ b/Assets/Scripts/Devices/MicomInput.cs @@ -11,22 +11,31 @@ public class MicomInput : Device { private const float MM2M = 0.001f; + public enum VelocityType {Unknown, LinearAndAngular, LeftAndRight}; private messages.Param micomWritingData = null; + private VelocityType controlType = VelocityType.Unknown; + + public VelocityType ControlType => controlType; + + + // TODO: change to float type?? private int wheelVelocityLeft = 0; // linear velocity in millimeter per second private int wheelVelocityRight = 0; // linear velocity in millimeter per second + private int linearVelocity = 0; // linear velocity in millimeter per second + private int angularVelocity = 0; // angular velocit in deg per second + protected override void OnAwake() { + deviceName = "MicomInput"; } protected override void OnStart() { - deviceName = "MicomInput"; } - protected override IEnumerator MainDeviceWorker() { var waitUntil = new WaitUntil(() => GetDataStream().Length > 0); @@ -61,33 +70,93 @@ protected override void GenerateMessage() micomWritingData = GetMessageData(); if (micomWritingData.Name.Equals("control_type") && - micomWritingData.Value.IntValue == 1 && micomWritingData.Childrens.Count == 2) { - wheelVelocityLeft - = (!micomWritingData.Childrens[0].Name.Equals("nLeftWheelVelocity")) ? - 0 : micomWritingData.Childrens[0].Value.IntValue; + if (micomWritingData.Value.IntValue == 0) + { + controlType = VelocityType.LinearAndAngular; - wheelVelocityRight - = (!micomWritingData.Childrens[1].Name.Equals("nRightWheelVelocity")) ? - 0 : micomWritingData.Childrens[1].Value.IntValue; + linearVelocity + = (!micomWritingData.Childrens[0].Name.Equals("nLinearVelocity")) ? + 0 : micomWritingData.Childrens[0].Value.IntValue; + angularVelocity + = (!micomWritingData.Childrens[1].Name.Equals("nAngularVelocity")) ? + 0 : micomWritingData.Childrens[1].Value.IntValue; + } + else if (micomWritingData.Value.IntValue == 1) + { + controlType = VelocityType.LeftAndRight; + + wheelVelocityLeft + = (!micomWritingData.Childrens[0].Name.Equals("nLeftWheelVelocity")) ? + 0 : micomWritingData.Childrens[0].Value.IntValue; + + wheelVelocityRight + = (!micomWritingData.Childrens[1].Name.Equals("nRightWheelVelocity")) ? + 0 : micomWritingData.Childrens[1].Value.IntValue; + } + else + { + controlType = VelocityType.Unknown; + Debug.LogWarningFormat("MicomInput: Unsupported Control Type({0}", controlType); + } // Debug.Log("nLeftWheelVel: " + wheelVelocityLeft + ", nRightWheelVel : " + wheelVelocityRight); } // Debug.Log("MicomInput: Working OK..."); } - public float GetWheelVelocity(in int index) + public float GetWheelLeftVelocity() + { + return (float)wheelVelocityLeft * MM2M * Mathf.Rad2Deg; + } + + public float GetWheelRightVelocity() + { + return (float)wheelVelocityRight * MM2M * Mathf.Rad2Deg; + } + + public float GetLinearVelocity() + { + return (float)linearVelocity * MM2M; + } + + public float GetAngularVelocity() + { + return (float)angularVelocity * Mathf.Deg2Rad; + } + + public float GetVelocity(in int index) + { + switch (controlType) + { + case VelocityType.LinearAndAngular: + return GetType0Velocity(index); + + case VelocityType.LeftAndRight: + return GetType1Velocity(index); + + case VelocityType.Unknown: + default: + Debug.LogWarning("Unknown control type!!!! nothing to get velocity"); + break; + } + + return 0; + } + + + private float GetType1Velocity(in int index) { var velocity = 0f; switch (index) { case 0: - velocity = GetWheelVelocityLeft(); + velocity = GetWheelLeftVelocity(); break; case 1: - velocity = GetWheelVelocityRight(); + velocity = GetWheelRightVelocity(); break; default: @@ -98,14 +167,24 @@ public float GetWheelVelocity(in int index) return velocity; } - public float GetWheelVelocityLeft() + private float GetType0Velocity(in int index) { - return (float)wheelVelocityLeft * MM2M * Mathf.Rad2Deg; - } + var velocity = 0f; + switch (index) + { + case 0: + velocity = GetLinearVelocity(); + break; - public float GetWheelVelocityRight() - { - return (float)wheelVelocityRight * MM2M * Mathf.Rad2Deg; - } + case 1: + velocity = GetAngularVelocity(); + break; -} + default: + Debug.LogError("Invalid index - " + index); + break; + } + + return velocity; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Devices/MicomSensor.cs b/Assets/Scripts/Devices/MicomSensor.cs index b1d79c52..b5eb1e52 100644 --- a/Assets/Scripts/Devices/MicomSensor.cs +++ b/Assets/Scripts/Devices/MicomSensor.cs @@ -23,7 +23,9 @@ public class MicomSensor : Device // private List magnetSensors = null; // private List switchSensors = null; - public float wheelRadius = 0.0f; // in mether + + private float wheelBase = 0.0f; // in meter + private float wheelRadius = 0.0f; // in meter private float divideWheelRadius = 0.0f; // for computational performacne. protected override void OnAwake() @@ -50,7 +52,7 @@ protected override void OnStart() var pidControl = new PID(kp, ki, kd); - var wheelBase = parameters.GetValue("wheel/base") * MM2M; + wheelBase = parameters.GetValue("wheel/base") * MM2M; wheelRadius = parameters.GetValue("wheel/radius") * MM2M; divideWheelRadius = 1.0f/wheelRadius; @@ -292,11 +294,29 @@ private bool SetOdomData(in float linearVelocityLeft, in float linearVelocityRig return false; } - public void SetMotorVelocity(in float linearVelocityLeft, in float linearVelocityRight) + + public void SetDifferentialDrive(in float linearVelocityLeft, in float linearVelocityRight) { var angularVelocityLeft = linearVelocityLeft * divideWheelRadius; var angularVelocityRight = linearVelocityRight * divideWheelRadius; + SetMotorVelocity(angularVelocityLeft, angularVelocityRight); + } + + public void SetTwistDrive(in float linearVelocity, in float angularVelocity) + { + // m/s, deg/s + // var angularVelocityLeft = ((2 * linearVelocity) + (angularVelocity * wheelBase)) / (2 * wheelRadius); + // var angularVelocityRight = ((2 * linearVelocity) + (angularVelocity * wheelBase)) / (2 * wheelRadius); + var angularCalculation = (angularVelocity * wheelBase * 0.5f); + var angularVelocityLeft = (linearVelocity - angularCalculation) * divideWheelRadius; + var angularVelocityRight = (linearVelocity + angularCalculation) * divideWheelRadius; + + SetMotorVelocity(angularVelocityLeft, angularVelocityRight); + } + + private void SetMotorVelocity(in float angularVelocityLeft, in float angularVelocityRight) + { if (motorLeft != null && motorRight != null) { motorLeft.SetVelocityTarget(angularVelocityLeft); From 6c6531860c364a9475d44d5c7d7b6b45611b69c2 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 6 Aug 2020 16:12:24 +0900 Subject: [PATCH 20/27] Remove ReflectionProbe for MainScene --- Assets/Scenes/MainScene/ReflectionProbe-0.exr | Bin 4159 -> 0 bytes .../MainScene/ReflectionProbe-0.exr.meta | 91 ------------------ 2 files changed, 91 deletions(-) delete mode 100644 Assets/Scenes/MainScene/ReflectionProbe-0.exr delete mode 100644 Assets/Scenes/MainScene/ReflectionProbe-0.exr.meta diff --git a/Assets/Scenes/MainScene/ReflectionProbe-0.exr b/Assets/Scenes/MainScene/ReflectionProbe-0.exr deleted file mode 100644 index 2af7d91c80cc7395b2e984e981e2809e8a32eefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4159 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 Iw%5Ub0nZ}=82|tP diff --git a/Assets/Scenes/MainScene/ReflectionProbe-0.exr.meta b/Assets/Scenes/MainScene/ReflectionProbe-0.exr.meta deleted file mode 100644 index aba9f6f9..00000000 --- a/Assets/Scenes/MainScene/ReflectionProbe-0.exr.meta +++ /dev/null @@ -1,91 +0,0 @@ -fileFormatVersion: 2 -guid: 44fd1c569806b0663abaade849850cab -TextureImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 10 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 1 - linearTexture: 0 - fadeOut: 0 - borderMipMap: 0 - mipMapsPreserveCoverage: 0 - alphaTestReferenceValue: 0.5 - mipMapFadeDistanceStart: 1 - mipMapFadeDistanceEnd: 3 - bumpmap: - convertToNormalMap: 0 - externalNormalMap: 0 - heightScale: 0.25 - normalMapFilter: 0 - isReadable: 0 - streamingMipmaps: 0 - streamingMipmapsPriority: 0 - grayScaleToAlpha: 0 - generateCubemap: 6 - cubemapConvolution: 1 - seamlessCubemap: 1 - textureFormat: 1 - maxTextureSize: 2048 - textureSettings: - serializedVersion: 2 - filterMode: 2 - aniso: 0 - mipBias: 0 - wrapU: 1 - wrapV: 1 - wrapW: 1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - spriteExtrude: 1 - spriteMeshType: 1 - alignment: 0 - spritePivot: {x: 0.5, y: 0.5} - spritePixelsToUnits: 100 - spriteBorder: {x: 0, y: 0, z: 0, w: 0} - spriteGenerateFallbackPhysicsShape: 1 - alphaUsage: 1 - alphaIsTransparency: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 2 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 3 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 100 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - forceMaximumCompressionQuality_BC6H_BC7: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: From 493c63aae555309caca2509aa84ba9c2a086be4b Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 6 Aug 2020 16:32:45 +0900 Subject: [PATCH 21/27] Modify Unity Packages --- Packages/manifest.json | 2 -- Packages/packages-lock.json | 23 ----------------------- 2 files changed, 25 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 4d3a166c..7a61594d 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -16,8 +16,6 @@ "com.unity.modules.physics": "1.0.0", "com.unity.modules.screencapture": "1.0.0", "com.unity.modules.terrain": "1.0.0", - "com.unity.modules.terrainphysics": "1.0.0", - "com.unity.modules.tilemap": "1.0.0", "com.unity.modules.ui": "1.0.0", "com.unity.modules.uielements": "1.0.0", "com.unity.modules.umbra": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 5fe46ffc..57325115 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -95,12 +95,6 @@ "source": "builtin", "dependencies": {} }, - "com.unity.modules.physics2d": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", - "dependencies": {} - }, "com.unity.modules.screencapture": { "version": "1.0.0", "depth": 0, @@ -115,23 +109,6 @@ "source": "builtin", "dependencies": {} }, - "com.unity.modules.terrainphysics": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics": "1.0.0", - "com.unity.modules.terrain": "1.0.0" - } - }, - "com.unity.modules.tilemap": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.physics2d": "1.0.0" - } - }, "com.unity.modules.ui": { "version": "1.0.0", "depth": 0, From 84626473b3fbc4e86304c0dad72a16a4c9e404a5 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Thu, 6 Aug 2020 16:44:01 +0900 Subject: [PATCH 22/27] Update LICENSES --- ...ird_party_license.txt => LICENSE-3RD-PARTY | 0 LICENSES/MIT.txt | 19 ------------------- 2 files changed, 19 deletions(-) rename LICENSES/third_party_license.txt => LICENSE-3RD-PARTY (100%) delete mode 100644 LICENSES/MIT.txt diff --git a/LICENSES/third_party_license.txt b/LICENSE-3RD-PARTY similarity index 100% rename from LICENSES/third_party_license.txt rename to LICENSE-3RD-PARTY diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt deleted file mode 100644 index f9e457d2..00000000 --- a/LICENSES/MIT.txt +++ /dev/null @@ -1,19 +0,0 @@ -MIT License Copyright (c) 2020 LG Electronics Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is furnished -to do so, subject to the following conditions: - -The above copyright notice and this permission notice (including the next -paragraph) shall be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF -OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. From d09e63b884a9c6d59f1f308de65f8f4e02d27d00 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 7 Aug 2020 17:07:08 +0900 Subject: [PATCH 23/27] Handling Bumper sensor in MicomSensor Device --- Assets/Scripts/Devices/MicomSensor.cs | 109 +++++++++++++++--- Assets/Scripts/ModelLoader.cs | 10 +- .../Tools/SDFImporter/SDFImplement.Joint.cs | 4 +- .../Tools/SDFImporter/SDFImporter.Joint.cs | 14 ++- Assets/Scripts/Tools/SDFPlugins/LinkPlugin.cs | 43 +++---- 5 files changed, 128 insertions(+), 52 deletions(-) diff --git a/Assets/Scripts/Devices/MicomSensor.cs b/Assets/Scripts/Devices/MicomSensor.cs index b5eb1e52..3724d849 100644 --- a/Assets/Scripts/Devices/MicomSensor.cs +++ b/Assets/Scripts/Devices/MicomSensor.cs @@ -17,11 +17,13 @@ public class MicomSensor : Device private Motor motorLeft = null; private Motor motorRight = null; - public SensorDevices.IMU imuSensor = null; - public List ussSensors = null; - public List irSensors = null; + private SensorDevices.IMU imuSensor = null; + private List ussSensors = new List(); + private List irSensors = new List(); // private List magnetSensors = null; - // private List switchSensors = null; + + private SensorDevices.Contact bumperContact = null; + private List bumperSensors = new List(); private float wheelBase = 0.0f; // in meter @@ -31,10 +33,6 @@ public class MicomSensor : Device protected override void OnAwake() { imuSensor = gameObject.GetComponentInChildren(); - - ussSensors = new List(); - irSensors = new List(); - deviceName = "MicomSensor"; } @@ -94,9 +92,9 @@ protected override void OnStart() if (parameters.GetValues("uss/sensor", out var ussList)) { - foreach (var model in modelList) + foreach (var uss in ussList) { - foreach (var uss in ussList) + foreach (var model in modelList) { if (model.name.Equals(uss)) { @@ -105,15 +103,15 @@ protected override void OnStart() // Debug.Log("ussSensor found : " + sonarSensor.name); } } - micomSensorData.uss.Distances = new uint[ussList.Count]; } + micomSensorData.uss.Distances = new uint[ussList.Count]; } if (parameters.GetValues("ir/sensor", out var irList)) { - foreach (var model in modelList) + foreach (var ir in irList) { - foreach (var ir in irList) + foreach (var model in modelList) { if (model.name.Equals(ir)) { @@ -122,8 +120,8 @@ protected override void OnStart() // Debug.Log("irSensor found : " + sonarSensor.name); } } - micomSensorData.ir.Distances = new uint[irList.Count]; } + micomSensorData.ir.Distances = new uint[irList.Count]; } if (parameters.GetValues("magnet/sensor", out var magnetList)) @@ -134,13 +132,42 @@ protected override void OnStart() } } - if (parameters.GetValues("bumper/sensor", out var bumperList)) + var targetContactName = parameters.GetAttribute("bumper", "contact"); + // Debug.Log(targetContactName); + + var contactsInChild = GetComponentsInChildren(); + + foreach (var contact in contactsInChild) { - foreach (var model in modelList) + if (contact.name.Equals(targetContactName)) { - // TODO: to be implemented + bumperContact = contact; + // Debug.Log("Found"); } } + + if (bumperContact != null) + { + if (parameters.GetValues("bumper/joint_name", out var bumperJointNameList)) + { + var linkList = GetComponentsInChildren(); + foreach (var link in linkList) + { + foreach (var bumperJointName in bumperJointNameList) + { + if (link.jointList.TryGetValue(bumperJointName, out var jointValue)) + { + bumperSensors.Add(jointValue as ConfigurableJoint); + Debug.Log(bumperJointName); + } + } + } + } + + var bumperCount = (bumperSensors == null || bumperSensors.Count == 0) ? 1 : bumperSensors.Count; + + micomSensorData.bumper.Bumpeds = new bool[bumperCount]; + } } protected override IEnumerator MainDeviceWorker() @@ -171,6 +198,7 @@ protected override void InitializeMessages() micomSensorData.Odom = new messages.Micom.Odometry(); micomSensorData.uss = new messages.Micom.Uss(); micomSensorData.ir = new messages.Micom.Ir(); + micomSensorData.bumper = new messages.Micom.Bumper(); } protected override void GenerateMessage() @@ -186,6 +214,52 @@ void FixedUpdate() UpdateAccGyro(); UpdateUss(); UpdateIr(); + UpdateBumper(); + } + + private void UpdateBumper() + { + if (micomSensorData == null || micomSensorData.bumper == null || bumperContact == null) + { + return; + } + + if (bumperContact.IsContacted()) + { + if (bumperSensors == null || bumperSensors.Count == 0) + { + micomSensorData.bumper.Bumpeds[0] = true; + } + else + { + var index = 0; + foreach (var bumperJoint in bumperSensors) + { + var threshold = bumperJoint.linearLimit.limit/2; + + var normal = bumperJoint.transform.localPosition.normalized; + // Debug.Log(index + ": " + normal.ToString("F6")); + + if (normal.x > 0 && normal.z < 0) + { + micomSensorData.bumper.Bumpeds[index] = true; + // Debug.Log("Left Bumped"); + } + else if (normal.x < 0 && normal.z < 0) + { + micomSensorData.bumper.Bumpeds[index] = true; + // Debug.Log("Right Bumped"); + } + else + { + micomSensorData.bumper.Bumpeds[index] = false; + // Debug.Log("No Bumped"); + } + + index++; + } + } + } } private void UpdateUss() @@ -294,7 +368,6 @@ private bool SetOdomData(in float linearVelocityLeft, in float linearVelocityRig return false; } - public void SetDifferentialDrive(in float linearVelocityLeft, in float linearVelocityRight) { var angularVelocityLeft = linearVelocityLeft * divideWheelRadius; diff --git a/Assets/Scripts/ModelLoader.cs b/Assets/Scripts/ModelLoader.cs index ce433349..45ee2b2a 100644 --- a/Assets/Scripts/ModelLoader.cs +++ b/Assets/Scripts/ModelLoader.cs @@ -31,20 +31,14 @@ public class ModelLoader : MonoBehaviour private string filesRootDirectory = string.Empty; - public List modelRootDirectories; - public List worldRootDirectories; + public List modelRootDirectories = new List(); + public List worldRootDirectories = new List(); private GameObject modelsRoot = null; private bool isResetting = false; private bool resetTriggered = false; - ModelLoader() - { - modelRootDirectories = new List(); - worldRootDirectories= new List(); - } - private void CleanAllModels() { foreach (var child in modelsRoot.GetComponentsInChildren()) diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs index 00526129..96e9e058 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImplement.Joint.cs @@ -30,12 +30,12 @@ private static Vector3 GetAxis(SDF.Vector3 value, SDF.Quaternion ro else if (pos.y != 0) { pos.x = pos.y * Mathf.Sin((float)rot.Roll); - pos.z = pos.y * Mathf.Sin((float)rot.Yaw); + pos.z = pos.y * Mathf.Sin((float)rot.Pitch); } else if (pos.z != 0) { pos.x = pos.z * Mathf.Sin((float)rot.Roll); - pos.y = pos.z * Mathf.Sin((float)rot.Pitch); + pos.y = pos.z * Mathf.Sin((float)rot.Yaw); } } return pos; diff --git a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs index 797357a0..57d932bf 100644 --- a/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs +++ b/Assets/Scripts/Tools/SDFImporter/SDFImporter.Joint.cs @@ -71,13 +71,13 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO if (joint.Type.Equals("ball")) { - var ballJointComponent = SDFImplement.Joint.AddBall(linkObjectChild, rigidBodyParent); - jointComponent = ballJointComponent as Joint; + var ballJoint = SDFImplement.Joint.AddBall(linkObjectChild, rigidBodyParent); + jointComponent = ballJoint as Joint; } else if (joint.Type.Equals("prismatic")) { - var prismaticJointComponent = SDFImplement.Joint.AddPrismatic(joint.Axis, joint.OdePhysics, joint.Pose, linkObjectChild, rigidBodyParent); - jointComponent = prismaticJointComponent as Joint; + var prismaticJoint = SDFImplement.Joint.AddPrismatic(joint.Axis, joint.OdePhysics, joint.Pose, linkObjectChild, rigidBodyParent); + jointComponent = prismaticJoint as Joint; } else if (joint.Type.Equals("revolute")) { @@ -113,6 +113,12 @@ protected override void ImportJoint(in SDF.Joint joint, in System.Object parentO if (jointComponent != null) { SDFImplement.Joint.SetCommonConfiguration(jointComponent, joint.Pose.Pos, linkObjectChild); + + var linkPlugin = linkObjectChild.GetComponent(); + if (linkPlugin != null) + { + linkPlugin.jointList.Add(joint.Name, jointComponent); + } } } } diff --git a/Assets/Scripts/Tools/SDFPlugins/LinkPlugin.cs b/Assets/Scripts/Tools/SDFPlugins/LinkPlugin.cs index 898b5883..e7f46e9d 100644 --- a/Assets/Scripts/Tools/SDFPlugins/LinkPlugin.cs +++ b/Assets/Scripts/Tools/SDFPlugins/LinkPlugin.cs @@ -4,6 +4,7 @@ * SPDX-License-Identifier: MIT */ +using System.Collections.Generic; using UnityEngine; public class LinkPlugin : MonoBehaviour @@ -14,13 +15,13 @@ public class LinkPlugin : MonoBehaviour private PoseControl poseControl = null; - LinkPlugin() - { - poseControl = new PoseControl(); - } + public Dictionary jointList; void Awake() { + poseControl = new PoseControl(); + jointList = new Dictionary(); + tag = "Link"; var modelObject = transform.parent; modelPlugin = modelObject.GetComponent(); @@ -148,26 +149,28 @@ private void MakeStaticLink() private void ScaleMassOnJoint() { - var thisJoint = this.GetComponent(); - - if (thisJoint && thisJoint.GetType() != typeof(FixedJoint)) + var thisJoints = this.GetComponents(); + foreach (var thisJoint in thisJoints) { - var connectedBody = thisJoint.connectedBody; - var connectedBodyObject = thisJoint.connectedBody.gameObject; - - if (connectedBody && connectedBodyObject && connectedBodyObject.tag.Equals("Link")) + if (thisJoint && thisJoint.GetType() != typeof(FixedJoint)) { - var thisBody = GetComponent(); + var connectedBody = thisJoint.connectedBody; + var connectedBodyObject = thisJoint.connectedBody.gameObject; - if (connectedBody.mass > thisBody.mass) - { - thisJoint.massScale = 1; - thisJoint.connectedMassScale = connectedBody.mass/thisBody.mass; - } - else + if (connectedBody && connectedBodyObject && connectedBodyObject.tag.Equals("Link")) { - thisJoint.massScale = thisBody.mass/connectedBody.mass; - thisJoint.connectedMassScale = 1; + var thisBody = GetComponent(); + + if (connectedBody.mass > thisBody.mass) + { + thisJoint.massScale = 1; + thisJoint.connectedMassScale = connectedBody.mass / thisBody.mass; + } + else + { + thisJoint.massScale = thisBody.mass / connectedBody.mass; + thisJoint.connectedMassScale = 1; + } } } } From 341d3217166553f7012b88628dcf24ca42c20d08 Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 7 Aug 2020 18:11:35 +0900 Subject: [PATCH 24/27] Update app version info in Project settings : 1.4.2 -> 1.5.0 Change default screen size -> 1280x1024 --- ProjectSettings/ProjectSettings.asset | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 6909d0eb..6d39ea86 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -42,8 +42,8 @@ PlayerSettings: m_SplashScreenLogos: [] m_VirtualRealitySplashScreen: {fileID: 0} m_HolographicTrackingLossScreen: {fileID: 0} - defaultScreenWidth: 1024 - defaultScreenHeight: 768 + defaultScreenWidth: 1280 + defaultScreenHeight: 1024 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 m_StereoRenderingPath: 0 @@ -111,17 +111,20 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 stadiaPresentMode: 0 stadiaTargetFramerate: 0 vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 + vulkanEnableLateAcquireNextImage: 0 m_SupportedAspectRatios: 4:3: 1 5:4: 1 16:10: 1 16:9: 1 Others: 1 - bundleVersion: 1.4.2 + bundleVersion: 1.5.0 preloadedAssets: [] metroInputSource: 0 wsaTransparentSwapchain: 0 From 087b665f55b3b668a5392a8c440c9efe117beebb Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 7 Aug 2020 18:18:16 +0900 Subject: [PATCH 25/27] Update OSS package information --- oss-pkg-info.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/oss-pkg-info.yaml b/oss-pkg-info.yaml index 9a2f7149..a4f95b75 100644 --- a/oss-pkg-info.yaml +++ b/oss-pkg-info.yaml @@ -1,6 +1,6 @@ Open Source Package: - name: VSCode - version: 2.7 + version: 2.9 source: https://github.com/dotBunny/VSCode license: MIT @@ -10,7 +10,7 @@ Open Source Package: license: MPL-2.0 - name: NetMQ - version: 4.0.0 + version: 4.0.0.207 source: https://github.com/zeromq/netmq license: LGPL-3.0 From f2e5be50d82026a2853d9ccd37ea7862b2597cbc Mon Sep 17 00:00:00 2001 From: Hyunseok Yang Date: Fri, 7 Aug 2020 19:15:40 +0900 Subject: [PATCH 26/27] Upgrade Unity editor version -> 2019.4.7f1(LTS) Update Packages for 2019.4.7f1 --- Packages/manifest.json | 5 +++++ Packages/packages-lock.json | 24 ++++++++++++++++++--- ProjectSettings/AudioManager.asset | Bin 416 -> 4148 bytes ProjectSettings/ClusterInputManager.asset | Bin 114 -> 4104 bytes ProjectSettings/DynamicsManager.asset | Bin 1253 -> 4360 bytes ProjectSettings/EditorBuildSettings.asset | Bin 255 -> 4108 bytes ProjectSettings/EditorSettings.asset | Bin 1107 -> 4276 bytes ProjectSettings/GraphicsSettings.asset | Bin 2782 -> 5492 bytes ProjectSettings/NavMeshAreas.asset | Bin 1308 -> 4464 bytes ProjectSettings/Physics2DSettings.asset | Bin 2024 -> 4448 bytes ProjectSettings/PresetManager.asset | Bin 120 -> 4104 bytes ProjectSettings/ProjectVersion.txt | 4 ++-- ProjectSettings/QualitySettings.asset | Bin 6673 -> 5188 bytes ProjectSettings/TagManager.asset | Bin 441 -> 4308 bytes ProjectSettings/TimeManager.asset | Bin 203 -> 4116 bytes ProjectSettings/UnityConnectSettings.asset | Bin 853 -> 4328 bytes ProjectSettings/VFXManager.asset | Bin 273 -> 4160 bytes 17 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 7a61594d..733b3276 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,5 +1,6 @@ { "dependencies": { + "com.unity.analytics": "3.3.5", "com.unity.ide.vscode": "1.2.1", "com.unity.mathematics": "1.1.0", "com.unity.render-pipelines.core": "7.3.1", @@ -20,6 +21,10 @@ "com.unity.modules.uielements": "1.0.0", "com.unity.modules.umbra": "1.0.0", "com.unity.modules.unityanalytics": "1.0.0", + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.unitywebrequestassetbundle": "1.0.0", + "com.unity.modules.unitywebrequestaudio": "1.0.0", + "com.unity.modules.unitywebrequesttexture": "1.0.0", "com.unity.modules.unitywebrequestwww": "1.0.0", "com.unity.modules.wind": "1.0.0" } diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 57325115..f597c4c8 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,5 +1,14 @@ { "dependencies": { + "com.unity.analytics": { + "version": "3.3.5", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.ugui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, "com.unity.ide.vscode": { "version": "1.2.1", "depth": 0, @@ -141,13 +150,13 @@ }, "com.unity.modules.unitywebrequest": { "version": "1.0.0", - "depth": 1, + "depth": 0, "source": "builtin", "dependencies": {} }, "com.unity.modules.unitywebrequestassetbundle": { "version": "1.0.0", - "depth": 1, + "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.assetbundle": "1.0.0", @@ -156,13 +165,22 @@ }, "com.unity.modules.unitywebrequestaudio": { "version": "1.0.0", - "depth": 1, + "depth": 0, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.audio": "1.0.0" } }, + "com.unity.modules.unitywebrequesttexture": { + "version": "1.0.0", + "depth": 0, + "source": "builtin", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.modules.imageconversion": "1.0.0" + } + }, "com.unity.modules.unitywebrequestwww": { "version": "1.0.0", "depth": 0, diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset index 07ebfb05df3b58b4a596eac64cd19529d36ce565..2aa2c2dd4d0cdce5e0cb415c9ca1103278b3c1f9 100644 GIT binary patch literal 4148 zcmeH~y^ho{6os!h{KN7O4FaX0pjt7o(u#^*2xtpNS|(yzP1G<)#@NM|>8an%Tf_cfqtO;5X9VpzH^Kpnx2l<(TdVg1tgZFo;*5>(R z#6Cl3-`VFy|GEA<=$!vFhn76d+G71PkpESme@OHB18Ubl_XijB2o?97ejanX@%b?S z43YC*V7SS{tTpHN1xw!lMW;8@Rx#AJE5~wIWi)!)x26~=>RDrKnuc*AjiSg-CPro9 zLz(0@qe!K)FnJhHlza}kYljM#XI+kG*wxwU-7!Hv%HX|Z*`*X+hUwU z>!}4Hp2%EFgNSU$6uWwim$pU&J+)(`|pc4-=eSx+qSri F#4lVmroI3G literal 416 zcmZutJx{|h5Z&`Du0xqfRj06c3xvWzMU|jPOwrZ3L3!Vt zBj3G(Sczo$o86{oYoI=h>LwGR zUd$#XUE-Uw_lRL0;rAx?nm3%Ba(mE|8?-7&ag|H5&=VdEo!<0csh*>`&l49@fq!(I PZ<~_7BTa$YYo-4H?oWc8 diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset index e7886b266a005f4d9d80f2fef8d1649dcfd3ed2b..3d21a6e8a88988893a1c1a5ba9c9476bd789b285 100644 GIT binary patch literal 4104 zcmeHFyGjE=6upzpLyhl8B^I_8!4)N>3&cVZ1rf27MMhDQAe%?)fUVzPX=7(+mk+Q_ zVdEEASX#N>GdG4!7WM;VF3g>sbLQSNduE8db)xwRB3j{@C!(!Qzf#&Rl`nnziK0j; z#y&wrQLk8ed;IPn+;!j29=>*7ml>_`z!pTA$Z$zy7sh6r6z_QQ$h;^rSw^t`uLc{y z_nAjO)Mo%1Bnd?skEApG&CN<)zt;b8X21@ zs2OrO=ad$gq!xMR6_l3vCgvrkrxsapDJbN|`zK|kCYN|*rlh*%B&HWzDHwo-!3u%A H=vXcQ9j+l} diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index 29c54bc7b0af729803d83b1d3c5d147711b50d13..4368835abad0a10efe914ba9ed0950e574b5df05 100644 GIT binary patch literal 4360 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 diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 29b2f63df46ad4a985e6a0bbf47ea3e9829dc900..f006a5c9052d4ae7f54cce97888036156de34304 100644 GIT binary patch literal 5492 zcmaKw%a0sK9mlIT8z%%qNHEVNWD`OFLmYc!5+@jE_GNqVPMGY&f$&&rW@=|T?&)s2 zd$PMAL~}tP!6A{5xF8V@ARZ?qIB|#s2avcRVQ~UZK|%`u07xv~Z#`zJd$wJ2*Zk`D zsbBTCfA#2I3vucZA>LI8R6?9;;a4o4J@@pP^JkvgJ172kbaWI1@O^;b=;+Nq{`jXq zyZQZBFPyyVo^QYLuSZ{o_vXA1ZzD!|N{A96N4in!T33Mx#7}M$<*x!!qB~mVay`iJ zLF2=?-hpe*0s9-k^LLEBh&JPIJBB|E-(_4Uaj}nI0z@$WGjNjKjtf#yn?imD`aX;1 zow!cms&b=G!cTp7;POjdAIIjuFuVv z>r>bFb_eWlUEkgCSMyWNA2n3D(f3{W$vD@3sq4Gfhp_AV-Z{go^Lt9il#^cd{9&yh ztM7;KQ{THMk;bU&d(Sc4pWpY+@T$J|fmicW&ENZHxXIry;ita)aQUUK?|vV`uIKN8 z8D7=L?S3nL56*C-@3-(%-vTbb)b%~&L)dkF56|$bz7Oh{a?-0lzmLptqwf#!Q{RUs zk;bU&d-NFY&o9p@zts1~M*we?zmLxFK-|Rn^B4GeexBywB`Z^)FE|GeFY=Gk-7<`| zyZ?O{gXi1Fr$}4m)c+FVc{V&Y!{;mK;~DU({`t!J`1lMr`rm|~`p$Cvl9efS{dkUB z>gPG{7wYFr#p!>-hp+=t)qh_5%1JMB|9t<%3=hQGoG2f_i;4MpauR6_w?5qa1Mj(7 ze&#CUUzp*6*v9xz+VMFTeyNZD3}7|?)$u<$!vj5kZH&+PzvvIH`v&3-tc||C|EDxx znDpZPU&D-j&BkA9;9s}=*#`a%%Ud(t==-MSOPWtBzW@1t{(_jQeQRo@?LQ>3livA%wfvAMn;f`{J`)$z^x`m@z{MMq65xBmWN`PC`X z7WqHH0({u;-LOt?$;y-fUnG3~li>4kecFK6^P zACgZo>=OceqU8PQ$8U|#3#`d<5%=f!%MBg7plep#U$22*0LMQOY2N~BQyhQB@)6vD zSg>>&f6?-|fnTybnc?&L{w>SX$;ifF{;02Q`B&&}8OGYJ{};je{Mi&~%ki=0c>{mN z@}hzN!t!yAU&&-T414*ODvB^3PU6(dWXFjY|)^TykmjPn#C z;@;s_k`+2tv+kvXFc$~nP<$0Jc5pKm=75Qty4y(?8Lh+Z(3_k}W3~G6#pb9EN zPr<4_(`)?@SwxS?BU`!ci1d44RTus9TW7CfWVHSA~lnKC7@Oh)R;`buYKCzk^y z#yMoVDeh!RS1l(8_gpzcR#hRx$jo?KrgW{yyyxaD*@rV1X~xy~ z#Nu*Tn8l;LDwf?yZFD-<^+;hcR9Rc*H!dgHQj`wmGH++*-YmDJG3HPfVGmi@;8GgN zbgRh1G^Hr4y>^gR8jENxMP1cTw)SPw8?MKDNiOOh z0l7-_k_gKt69dr|QjEfQV~h%U!Tscc*D%kT@8rtdemyQ!oO4OpG!S9CCE2zbr7Dxf zSa05qWbnceM}t0r)^j8;#SUQdmZB)xUyCD76*`R56k80lyORzwt`NJ}?7?XcRCnH; z=jm#TX9{t*^Wt|?<;ghfsr>PA457PSa~STb1LV}}=Z(X$+($KSUhX5-wOjD9xVHHt zV%j!;bWGdsBiHrkOOwU5^-CIU{%0J0{AHmn_!kn2?(5leo*kT?_PN)yAGEfMpYz%# QqF$HJI!$#FxZ;8T16&OFC;$Ke literal 2782 zcmb_eTW{Jh6n^JdWDngFRJjlWyrI$y8f>Vcou+9*j(q@cPHZ{OD6RJ2cai|3w9~Rs z9+2W=f9K}o?>qZ4n2asw+-aQ62G`cR?44!EvY#c~Y&>>OW!!Xa$LTj(tyXUJZ0o(# zxYk6iI88$^h9}Fk->|HB{wewn)ZB0eSAyW8W#e)RniIhvf!%{nxlH<&;}zS7umG)r z<%jd*6UhLL+plm%80fzBwBQ0p!@kw&HLYdF8Nwd@7DwMr%WM=v*}tCoxrK$m_%MVb z-U=>*c1@Qd)c{GT2!%WkxvuK5Q`h4dmV|Epx1?Up{Dz>+>Z8;#5tTD@Yxo#Zf?6< z5XP<^4)Oi2-3dHKfij;^;&y_71wJgCfB^itL z`w{KAHlxg|3e)wYE`aa(zVEp`26hy*NzW!O>-5~f$1Wa36VIm_ghZy?&$adSTfusv z(%e9bj6gDBCd3pxe88s;Uh(P^Td?voTD{0pBja00kfx_xf#3;p?w+o<s@z}>ig+_Cw5EES%fnCYvi?vab8j?`l^}@8n`2e7%g79486gY>5A=ei& zj<86mU|unA5)yOz_v5AgA1I~Rn2_|xYd*p(GMb(JcYZ-_|= Ai~s-t diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset index 3b0b7c3d183abdd300112f56965916ef11667f54..7805ef5549204abd1769e4952f6fa8155220f98c 100644 GIT binary patch literal 4464 zcmeH~OHb5L6vt0z81Sw522}95Fp&sC2pgG!iGoprKw?~(%gl8sw$sV9HR{6Dz3g3L zOkC)~L_UCQjcek@xHRsJUx4xaZ*PZoWY#98C)|6_{r`F&=Wv>Ih&pYe?ivvtBRa$b z(eTxw@xhV7v4=yn)o3&fgSF=XjmFInpH_d~|Caf^HYK}8Uv6Gvb&h!km~D(G;3W+; z2~@8-gA96`rQoAMK?f_?5-l?DP39+9z9G_SqFQ|#XfIY1YhLAk{FT`U`U4dGK~;{07oOY*zCBhE+M zyZ_=H^qSc)>$v+KZgE3?5Fh7P@x5`#ew4o%_HqAx-~qbOTJyIb@0l-!@Ib+ zaQ>+scn`B{-1twu3(5aqj@G#T$2C8L^?7umMfFu+j{53{9E1#gYkdts+&~vvYki%K zK#b%4i{8(3&;t#5;QS@tzw^-Yah^-m?*+9c$>Z~2stQ|D$#FfhAKVtMSE$IUxA?RsXNs&e7wct{zG;=4qKG}K{CQC} zeLe~Lv@|QrUg$4aPECgHlx5mWWXW^ z)2ZUNWQ(dVtSM<(3+6MvbL52jqG?H`dyykbCBH5_IcJHIwE0F+>?(+&T=FZ;NXnRT zyf-YtnQF#8%gJ$7;!$U+*wl=>no^=!I;I&&GmvH=%|M!gGy`b{(hU5o3=HtW_`!Nl zSdYY#CHc#H0zV*U9d976b+Cp{P9E~y*n)}wee7TF{Sy0ZMZ9^Ukx3qO>?#AS5xswR T`MR3L7QjVrr+xnBcFgi0O$9M9 literal 1308 zcmeHHO;5r=5WV+TEC)PULMvbCt$`>SKm$bMi45CGS>5e6-K`OSy|aZv6Jxx2Vo%*S zZ{DPD^QQe8&u1*?1YUa`-?3KNViwY<%!J+FBpt5Rb=VDp$n$;QRfBNAt^#iXA9FOj zr$WCWw=1+(WT}Zf#?#(Uv@KyqWtV^)LLVy%sm^@=)gw7%s5)1`G)#kGd6h`a? zK`wz)jH${L|=*C;#J#+RVV%IK|Aa_c`8A zBIb`q!(J~O^oR5aYSRpt|67hINlgitxFfWLM3gRso&Fh|qDXfXEfZzXk3`Rg@U zV=2_ubq)`p#3aQ@q4T=^Fh;?r%UsM0ZOlX%3mGS+V^L&FOeya%CA}V~AS*$RQOXr< zgqq6F_f9aVj&p!KsOW1Uu}Qb5d)OZw{)6+f0Ej2(~<^ik$B(It5-$< diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index 3eea41d4e14ba174b450ed4eb5cfade75c8e4384..6b4c92e473569166c11c80443a6f00a367c6f01d 100644 GIT binary patch literal 4448 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 JUV&$?zymgitwI0* literal 120 zcmY$5boBL6Fw`^TQVnr*S5PcfR47SIw<^ucEU7e3(M!(H)iE+KG_>N<)zt;b8X8-e znOGW{nOiET8FB>_r52}__$KBhrl%HJaVaR|#``B_r6!knWTvFL7%Q6vy8t=?DGbvy?y!b@?ivp=|=Cr7d=1rHx1$H%=RnkgADyoNT+^HT#h` zJ-H`ZsRs^R3PKPGaVV!EaX?&pLrCqB0}>xX2&tzcIKZvp{by!lZ)`Ugjv0ApXWwt$ zoA=(#&aRhe^EIMvc_Mn4=zcyC?cclaVBbLBf$~1Ov$V8iSuA@6U}>rMr(56cyml$N zB}d-5aAMDa97_kfiPiygIY3lrl_hmiSGB4vvgnI$s()osy@w?*i6bfCzpySG0PjkG zIfMVe`n&lW_IXI|jY=1bx~zRH!2u2%bX_yl7IiE8JJ<$T;&0NUi+Mj^oHhFE0qUr9 zv8acRv+f{Y!u|$`>!@_GXkBXjjV!jZ2BJ;tQ{&&GWNChqEn}KQmusBhVOzjtB|S^|1K~`e3=GX=8J6qvf;biaID`C4S%u? zhku_l=N~=Qfq!fG)8N@gC-}F>`ad#vWB9WjcyE{1-_wB~GW@v?{9VJJ z@4y4YU+BQ!H~hsm9QpZ#Ifp*%G5#a<)6EZJRN`f`E(RKHU9ck z{BO2!y+3Z^Ip|@Q<)hjEld*7}XrU;h$nj=Es+<{$gFt$b0W4VAC4Ehvs7R_hHR+Bz zGqcfc0Lvx;xq3_0#<9kL>2>i3M)Fc=ZVM*9BQOG-CB)pO|-A_mn6kOrS z@p3toiFKp1zgXo6Oiv>l(6SmW(0M~DB0M+d+idcj<4sAp8d4-{Q5?u5R^d6J9|eBZ zDNSk;lJFuY=Q<+f^ib%Rqk;$`r{uy{zB(;uWF%B1ffR1!ROEy#yE-@ybDH~2JFYwJ zi@*+tMM(~Ez5-G3Lq}=N6&JjcPMYi6gFFybM9rzhmC^D1sGO57g%O*s@c3g+wIZrv zjx#sMfvgnUcFuLRd3J6E9g`J5SQw0L_O}I2NY9pm48np8h67A!i@K;OXC|Z_n~7UF zfT#^St{fSkknhDZdy=zNbRC}OCgEUQF3X_koKH#F zv5*%9FHFrTSYA`b5-(wIW|)_toiB`Vjw3&yQXEEpMF&=Js*<}%Ud+nHJU0p=njOiL ztd-o@miD9wI5E7)qOu=Ua3Ao9$z@)aMeHu$61an~m+J}*E_vKtYh^71YZ+L}!2gs1 z{29g{Uc9)Smcc@1)SquQjZH{xL{!c3qdoiO)vHG@UA%bY=8e&#f8M^0cLl|DpJq*> zkFH!%+!)9czaa8Yy+vayLmPhy52EQ#7gLY zH@~pXPq|Sb_?)c0#3w!G_95z!t0mS!Y4wS+3be}=JF}Wk_>hB-Njc9Be8*P(;pb?~ zZ(@8#8y{OvI3B;1*nXxs??k0pB}ZNh#R1jEx-3S*b~rfb-~$q0d$w?Wej`yb$fxA= zG5({d<^&&ErW`gpA7+aDG9xp&YBkh-;nUmGer=qUp$Gd;VOH5fOvqO>H(o^hKdW?) Ag#Z8m literal 6673 zcmeHMUvJws5P$clU>~}tIItWi!TjdLa9hBxH7jj56h%RcCxHJTK&1=qJBq$O|2gw=~N8Yc%-hzOLNb~{pP=9s8Oz&>l=CHsF<)GpOIc*bDuHTTQzma~ zo!sRNv=oJ@lqz*~^iavtl8PR9^h>H^$^fPK)FIb~W-%%fl$JRmZ-J^%&8&SvO6Z`9J^Ym(-Z_AReb5{M%kI1UL>>iP?<=Ipdk&DuSir;H7RusSpj(;G|^NTpg`6bvoJ z#13p)ZgR~aW1ukoLr^1C(GZPkkM(Q$Tt%p+ zqM{h9K3j~i9N92@gYh&{IkvdaMyA#+AUv6f6C zRf@6r_zCsd3k#0{5xPFCJZ?m=8L){6R{x(E5p2>wBZ9@}4Mf;3?8AnH2{2xy6_{=H z3H~d6jrUdC@T2>LLq-MHLOkw1;k?R$XH?jU3TIEOQFx6#@or40TQ4^|_?JE=_|UO` zcCg;H1Ic=J=snU-p|;JR9d>sLuJCuv4(`augxZ(?W_GZ*f8Xq2WjruDScWY`sE4+V zw*RS34&BqO3E;3Bg=(d6KQ8#AJoXCr;et=!j|)Ec8W+xg9$c`%_8%q)Yw_KkLhXgS zxL}J@Z|oHI;etJXc&A`_9>RrVyVTi2hB_`!92o+)bMTe}hYbzygi&;NyWqdsAAp5A zo2#y3KP>n{*RT+rKI4MhCjBqCU~%dh6?RS#z0R+P(lAt&-X;;Q_!$*410ddXZziQkheU;y(yFAWEgGHqFZj_Yex>F-umCL>%^^f yaUT^v!2H#?x!@@MR-?*N0U6{uLXmxk{XUn=X}M{&mpr^idz@5rGev#6t$zTbMNZ%V diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 47deb917f50939cd59ec59aabf8e91daad12aad5..65915d600642050e2e3d69b7e6c3356587fd85fe 100644 GIT binary patch literal 4308 zcmeHKJx>%t7=DLa4i!HD6~7AU?1*OwgoaQcdI_4S812jim(Ag^2YY+PbrU=O2!Fte z?*0Isw*Ch!Em)st<}SChmrz>Go9w$Y&$ILHJkRVFuSo4&WbUVk+{Ya^kr&S!>&q+4 zYx@nkEQ&%YU~fqj#gCKkv!{PA&svL*|Eyj-Z9W=OQ=}1VA_hweJ25ufq(sTDnwVM4 z$g`vvCKpPkR09Yv^0wY!#0pl|qlPwY0zqu54lh> z?bWXXwtFn`?@*ETiO)>%P9F{A{;zSJVRBK`cb)LSam-bHH^!75RrS$FzrL^UCg`j5 z-6GE#!=V1MzT3ck-syV)ociu?ondlO)n`AX!HAvIH$SHAi29ykG&;WpqK3(ZlE|L# zI;MR8UBZUR1@`Zq?>)f2{>Yo0^2|kijd|w;DBV6>M9NgaycJvA$eS1i9 z(=glE)yW&3>Lku2*GX5}x*umUso>}8r~eM$9UEWNaK+>4uA((dei zi@(~6!_z4r5`W?l!GYjFa3DAk90(2s2Z95^f#5)J;3@}}K(e9TiuZM|oeP`8-At$5 yBb~)*zWo_L-yj4`7NXbG&feD?G!?NO>!GDJE^w`b-Z@^-G{(X0! z?(FT`v1>u>M78aYkFbdw2&iOa9hRGMH`w|5uopsBbzNuo_71K@)uZZ=QIV4sfG4NX z=x-V?bj0D|wU9=!bp%hi4CvRQ!e20yq#B-^0{;7$-_O3iPKBiVWKhLegLH3XBz+j diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset index 064149571bc2367598c3f8b4ee15ce0e8f61bebf..bad1b8bacda0f91f05034d688ebd55318c38c9fd 100644 GIT binary patch literal 4116 zcmZQzV60?d5D;NtU=Rh;K#GCE$iUE2&qU8W&5+^W|Ns9P8G&M~Ac_C~Z$B!ZwoE@N zB8Kt!6}j#g_t=1$(sP#AbAi*1~7RCpdd&N>>VTpA(^?UzKMB>>8V8w zZkZLSDGDHw;*!(?2H(Vr%-qsk1;?D6{BmT8+<1_h;N--dRJfvm#G;bS4*{<0i)~h~ PT4l$;&|u$x=&KC?*Jwh8 literal 203 zcmZ9Eu?~VT6h-%b#bdxpNDI1jV?hTSO=NL0&+{Tilcjg};cuiXg;Z?vV~>zus+9RNGW diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index 584eee7573dafe94ed65a0274901556713ecaf27..88f2c64eb9293e6e5f046ecd0145624039e6692f 100644 GIT binary patch literal 4328 zcmeHKId9ZJ6drE^A>j)55sq-5+07<_aLXZDAQC7*NQDrxY;R)N*elx`5oqR5P|?%T zP*MUd`~V7SB!m#6pn~OnGallx!9CJGY2J*#Z{GXnvUirT-dV=_KQYF(P)!wMBg56R z<+1X3y~=*I+ik-j>@-}vedXtL|JS>3-o;e6N3IK1|7g(r`UVM11|wgnc``TBCZRZ2`3HwHOfCokI;t(<8aapRx+xD zpnzXNuwf=7+N_IxByNCmAa#Jvmi-}d z`bViQ(m#gy0{!FQ87D6d<4fzGAXw*1>>DZe(BXsrNrV;5e<;W6^T&Hg3517({@#-O z{vm$_pq77ySpR2)f*;QDE4BBxikv1#FJT6KQPc152%-A?dbIhE=6I>!M`r-~W5}wF zPuD+%_yYaYx%|35{mx~^C-;9tvi@g?XBHUG)7r2R?~KmEHgIIo@D9DF6j= z7ZAkZq-Ec~i-1kZ!O!|$yfhj3zH7%bZXA35T*Mac-*Kb(M&P*AtS!2JJl$|+!-jg2 zO^T{}bFz*8Qn_UtH?7}B2ApsdsWOl*a5t0|LAI9j(Lx@s-BQx0iQ z_)Zvj&Yx%5z}yq)rW@9SaKZ9zH$N9Fo!lnr@yr-5QyuH9KxYLyE6`bi&Il8UbCrtK^vW&UD%*{q<&;~v8jLz+J6NbJRx2*<0TIImSoOD^W?|oh>AvE&@b~ms cCtS=`-X{I@4oSUyesm_&|0pN7A4zHcH{08x-2eap literal 853 zcmaiy!Eb^v6vprT74_gw1MIwUV}>~sjb^$fJDJ)(unV-LEoN@n|GpM9!qj=AU;DlH zz2Bq%9?zx-2iWVc;xXz~J!D80Rf3!SkOfp0_YVV%BhUAJcRR!bbcelHcR!Ls05wZ6 zhKo!`9zw->zWK1)GiUIW6Dy*Dl{F|%a{dME4V30mLKs?X;7-|VtEOwF$_ z7fVBwsmfNanBA^?}ESJTD_a-nn2DTrlEUgs=8~3nk9-{6Ah$@XcQ|JqRDt-IyMzc<`eYgd7co! zqHXU<^1Q2j>>yq-KeOYf7aw;owQ;17_D4>s_E9>CoI=lLOIIQadTzX!cQt=+ltzW@H~U&43` z)TN|<3|G)=d!TvFS|#<{7j9aW!;wcRBaY+zb>>g}U=+-zFrefVonx+ejtwIK<#l&^ zV5-+rU{vt@$-uMgjS{jkkleX2QTSxCz|GR|*ZQKW-}5%hu<1%9RnvKWKxJC@vc?3p omMVYlxxO>7)scLmILZ Date: Fri, 7 Aug 2020 20:39:27 +0900 Subject: [PATCH 27/27] Revert "Upgrade Unity editor version" Bug with 2019.4.7f1 - stuck error when open the project This reverts commit f2e5be50d82026a2853d9ccd37ea7862b2597cbc. --- Packages/manifest.json | 5 ----- Packages/packages-lock.json | 24 +++------------------ ProjectSettings/AudioManager.asset | Bin 4148 -> 416 bytes ProjectSettings/ClusterInputManager.asset | Bin 4104 -> 114 bytes ProjectSettings/DynamicsManager.asset | Bin 4360 -> 1253 bytes ProjectSettings/EditorBuildSettings.asset | Bin 4108 -> 255 bytes ProjectSettings/EditorSettings.asset | Bin 4276 -> 1107 bytes ProjectSettings/GraphicsSettings.asset | Bin 5492 -> 2782 bytes ProjectSettings/NavMeshAreas.asset | Bin 4464 -> 1308 bytes ProjectSettings/Physics2DSettings.asset | Bin 4448 -> 2024 bytes ProjectSettings/PresetManager.asset | Bin 4104 -> 120 bytes ProjectSettings/ProjectVersion.txt | 4 ++-- ProjectSettings/QualitySettings.asset | Bin 5188 -> 6673 bytes ProjectSettings/TagManager.asset | Bin 4308 -> 441 bytes ProjectSettings/TimeManager.asset | Bin 4116 -> 203 bytes ProjectSettings/UnityConnectSettings.asset | Bin 4328 -> 853 bytes ProjectSettings/VFXManager.asset | Bin 4160 -> 273 bytes 17 files changed, 5 insertions(+), 28 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 733b3276..7a61594d 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,6 +1,5 @@ { "dependencies": { - "com.unity.analytics": "3.3.5", "com.unity.ide.vscode": "1.2.1", "com.unity.mathematics": "1.1.0", "com.unity.render-pipelines.core": "7.3.1", @@ -21,10 +20,6 @@ "com.unity.modules.uielements": "1.0.0", "com.unity.modules.umbra": "1.0.0", "com.unity.modules.unityanalytics": "1.0.0", - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.unitywebrequestassetbundle": "1.0.0", - "com.unity.modules.unitywebrequestaudio": "1.0.0", - "com.unity.modules.unitywebrequesttexture": "1.0.0", "com.unity.modules.unitywebrequestwww": "1.0.0", "com.unity.modules.wind": "1.0.0" } diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index f597c4c8..57325115 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,14 +1,5 @@ { "dependencies": { - "com.unity.analytics": { - "version": "3.3.5", - "depth": 0, - "source": "registry", - "dependencies": { - "com.unity.ugui": "1.0.0" - }, - "url": "https://packages.unity.com" - }, "com.unity.ide.vscode": { "version": "1.2.1", "depth": 0, @@ -150,13 +141,13 @@ }, "com.unity.modules.unitywebrequest": { "version": "1.0.0", - "depth": 0, + "depth": 1, "source": "builtin", "dependencies": {} }, "com.unity.modules.unitywebrequestassetbundle": { "version": "1.0.0", - "depth": 0, + "depth": 1, "source": "builtin", "dependencies": { "com.unity.modules.assetbundle": "1.0.0", @@ -165,22 +156,13 @@ }, "com.unity.modules.unitywebrequestaudio": { "version": "1.0.0", - "depth": 0, + "depth": 1, "source": "builtin", "dependencies": { "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.audio": "1.0.0" } }, - "com.unity.modules.unitywebrequesttexture": { - "version": "1.0.0", - "depth": 0, - "source": "builtin", - "dependencies": { - "com.unity.modules.unitywebrequest": "1.0.0", - "com.unity.modules.imageconversion": "1.0.0" - } - }, "com.unity.modules.unitywebrequestwww": { "version": "1.0.0", "depth": 0, diff --git a/ProjectSettings/AudioManager.asset b/ProjectSettings/AudioManager.asset index 2aa2c2dd4d0cdce5e0cb415c9ca1103278b3c1f9..07ebfb05df3b58b4a596eac64cd19529d36ce565 100644 GIT binary patch literal 416 zcmZutJx{|h5Z&`Du0xqfRj06c3xvWzMU|jPOwrZ3L3!Vt zBj3G(Sczo$o86{oYoI=h>LwGR zUd$#XUE-Uw_lRL0;rAx?nm3%Ba(mE|8?-7&ag|H5&=VdEo!<0csh*>`&l49@fq!(I PZ<~_7BTa$YYo-4H?oWc8 literal 4148 zcmeH~y^ho{6os!h{KN7O4FaX0pjt7o(u#^*2xtpNS|(yzP1G<)#@NM|>8an%Tf_cfqtO;5X9VpzH^Kpnx2l<(TdVg1tgZFo;*5>(R z#6Cl3-`VFy|GEA<=$!vFhn76d+G71PkpESme@OHB18Ubl_XijB2o?97ejanX@%b?S z43YC*V7SS{tTpHN1xw!lMW;8@Rx#AJE5~wIWi)!)x26~=>RDrKnuc*AjiSg-CPro9 zLz(0@qe!K)FnJhHlza}kYljM#XI+kG*wxwU-7!Hv%HX|Z*`*X+hUwU z>!}4Hp2%EFgNSU$6uWwim$pU&J+)(`|pc4-=eSx+qSri F#4lVmroI3G diff --git a/ProjectSettings/ClusterInputManager.asset b/ProjectSettings/ClusterInputManager.asset index 3d21a6e8a88988893a1c1a5ba9c9476bd789b285..e7886b266a005f4d9d80f2fef8d1649dcfd3ed2b 100644 GIT binary patch literal 114 zcmY$5boBL6Fw`^TQVnr*S5PcfR47SIw<^ucEU7e3(M!(H)iE+KG_>N<)zt;b8X21@ zs2OrO=ad$gq!xMR6_l3vCgvrkrxsapDJbN|`zK|kCYN|*rlh*%B&HWzDHwo-!3u%A H=vXcQ9j+l} literal 4104 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 literal 4276 zcmeI0$!{Y?6o;!5wqXs+49l>DeH%g&kVeP|WyWzJl9MrMGDlFQyJC0f?rK$+6Ni&I zaOK7sxF8J|q!Cvngg9`W^GM8LxNzVIf(z#Ts;Y6fm;41TsTRNQEnTl(yW3{$)bETf ze9ss=O*2i5tuC*;we;rF`TZ64?_eI(AKX0yw3pf7$_KV-Htdg`j z&)6woYUdg2lgYq*=$p|D9`o2Y^Q?c>WBpr50+;AT1AmYBeI$VW96%p~Z62HRR!D*l zP9d4M<{;K=p8ZPfEct-{B1WMB{yy;o>WF)*u_-9*J!AhmiC}vh&>9BY3SOs=;I}(@ zF%|qn$L}bBo53}$Kcjv(^&(#m6P+{hzajzr-$|WPMWb!tOSHEu^bx-AqF&|J|5cL1 zKYF>1`oD)@)xPTg-Z5_T^9#vweK@CbEB1e#gy6Q2h8hL`%kle%$gB!}nhpo{4@}|9 zjz2hsZ#n+Z1djUZ5J&w`t+P^kk^f44ogsWueLV~gAFhqo*CQmaa$Db@yZDd7u8+aC z(fE&%_@ww}!JRFp(fE&#agTjR20v4W-4ihCW3UbN(Im-r$Df3F%`%KQAMigMe`<)# zs^ANBugdcH3cI_Z300Uw&vy88X~>KM26^^c2x4z_&^ zwvEPrjl?I#Ujlcwm`3B{d$P)HeVm!M^5v4PwYPlLarz#woPQ&Xv{b&(I!fC)OFnA! zv`{IJFAJ4NGOf#0D;fLUER#wT_l1gh9DTwy(JdJYk~O1LG|~_rHl*4XM}DB9OvBx} z*yr6?UlbjF7)fOeS}m>K_5+cM3wbW|JEYc9q_?*t+TEC|MtT@2nIO#to9ocw zx?>kcd3Up_=VvO?qQ!%cg$+a3S`xK*hzo4VBcaGyLkAy-p6)79mr15Xo=a6+WCd^V zTn|+$Xj`g;$5Y@%F=E$J@<0UoUD~!X$=ghWxEqQP8BdXG@FP&MG=Yb=AtRuJUFK9>FK!9V7xAu>Gx|wTeTI~6 z%4Vcou+9*j(q@cPHZ{OD6RJ2cai|3w9~Rs z9+2W=f9K}o?>qZ4n2asw+-aQ62G`cR?44!EvY#c~Y&>>OW!!Xa$LTj(tyXUJZ0o(# zxYk6iI88$^h9}Fk->|HB{wewn)ZB0eSAyW8W#e)RniIhvf!%{nxlH<&;}zS7umG)r z<%jd*6UhLL+plm%80fzBwBQ0p!@kw&HLYdF8Nwd@7DwMr%WM=v*}tCoxrK$m_%MVb z-U=>*c1@Qd)c{GT2!%WkxvuK5Q`h4dmV|Epx1?Up{Dz>+>Z8;#5tTD@Yxo#Zf?6< z5XP<^4)Oi2-3dHKfij;^;&y_71wJgCfB^itL z`w{KAHlxg|3e)wYE`aa(zVEp`26hy*NzW!O>-5~f$1Wa36VIm_ghZy?&$adSTfusv z(%e9bj6gDBCd3pxe88s;Uh(P^Td?voTD{0pBja00kfx_xf#3;p?w+o<s@z}>ig+_Cw5EES%fnCYvi?vab8j?`l^}@8n`2e7%g79486gY>5A=ei& zj<86mU|unA5)yOz_v5AgA1I~Rn2_|xYd*p(GMb(JcYZ-_|= Ai~s-t literal 5492 zcmaKw%a0sK9mlIT8z%%qNHEVNWD`OFLmYc!5+@jE_GNqVPMGY&f$&&rW@=|T?&)s2 zd$PMAL~}tP!6A{5xF8V@ARZ?qIB|#s2avcRVQ~UZK|%`u07xv~Z#`zJd$wJ2*Zk`D zsbBTCfA#2I3vucZA>LI8R6?9;;a4o4J@@pP^JkvgJ172kbaWI1@O^;b=;+Nq{`jXq zyZQZBFPyyVo^QYLuSZ{o_vXA1ZzD!|N{A96N4in!T33Mx#7}M$<*x!!qB~mVay`iJ zLF2=?-hpe*0s9-k^LLEBh&JPIJBB|E-(_4Uaj}nI0z@$WGjNjKjtf#yn?imD`aX;1 zow!cms&b=G!cTp7;POjdAIIjuFuVv z>r>bFb_eWlUEkgCSMyWNA2n3D(f3{W$vD@3sq4Gfhp_AV-Z{go^Lt9il#^cd{9&yh ztM7;KQ{THMk;bU&d(Sc4pWpY+@T$J|fmicW&ENZHxXIry;ita)aQUUK?|vV`uIKN8 z8D7=L?S3nL56*C-@3-(%-vTbb)b%~&L)dkF56|$bz7Oh{a?-0lzmLptqwf#!Q{RUs zk;bU&d-NFY&o9p@zts1~M*we?zmLxFK-|Rn^B4GeexBywB`Z^)FE|GeFY=Gk-7<`| zyZ?O{gXi1Fr$}4m)c+FVc{V&Y!{;mK;~DU({`t!J`1lMr`rm|~`p$Cvl9efS{dkUB z>gPG{7wYFr#p!>-hp+=t)qh_5%1JMB|9t<%3=hQGoG2f_i;4MpauR6_w?5qa1Mj(7 ze&#CUUzp*6*v9xz+VMFTeyNZD3}7|?)$u<$!vj5kZH&+PzvvIH`v&3-tc||C|EDxx znDpZPU&D-j&BkA9;9s}=*#`a%%Ud(t==-MSOPWtBzW@1t{(_jQeQRo@?LQ>3livA%wfvAMn;f`{J`)$z^x`m@z{MMq65xBmWN`PC`X z7WqHH0({u;-LOt?$;y-fUnG3~li>4kecFK6^P zACgZo>=OceqU8PQ$8U|#3#`d<5%=f!%MBg7plep#U$22*0LMQOY2N~BQyhQB@)6vD zSg>>&f6?-|fnTybnc?&L{w>SX$;ifF{;02Q`B&&}8OGYJ{};je{Mi&~%ki=0c>{mN z@}hzN!t!yAU&&-T414*ODvB^3PU6(dWXFjY|)^TykmjPn#C z;@;s_k`+2tv+kvXFc$~nP<$0Jc5pKm=75Qty4y(?8Lh+Z(3_k}W3~G6#pb9EN zPr<4_(`)?@SwxS?BU`!ci1d44RTus9TW7CfWVHSA~lnKC7@Oh)R;`buYKCzk^y z#yMoVDeh!RS1l(8_gpzcR#hRx$jo?KrgW{yyyxaD*@rV1X~xy~ z#Nu*Tn8l;LDwf?yZFD-<^+;hcR9Rc*H!dgHQj`wmGH++*-YmDJG3HPfVGmi@;8GgN zbgRh1G^Hr4y>^gR8jENxMP1cTw)SPw8?MKDNiOOh z0l7-_k_gKt69dr|QjEfQV~h%U!Tscc*D%kT@8rtdemyQ!oO4OpG!S9CCE2zbr7Dxf zSa05qWbnceM}t0r)^j8;#SUQdmZB)xUyCD76*`R56k80lyORzwt`NJ}?7?XcRCnH; z=jm#TX9{t*^Wt|?<;ghfsr>PA457PSa~STb1LV}}=Z(X$+($KSUhX5-wOjD9xVHHt zV%j!;bWGdsBiHrkOOwU5^-CIU{%0J0{AHmn_!kn2?(5leo*kT?_PN)yAGEfMpYz%# QqF$HJI!$#FxZ;8T16&OFC;$Ke diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset index 7805ef5549204abd1769e4952f6fa8155220f98c..3b0b7c3d183abdd300112f56965916ef11667f54 100644 GIT binary patch literal 1308 zcmeHHO;5r=5WV+TEC)PULMvbCt$`>SKm$bMi45CGS>5e6-K`OSy|aZv6Jxx2Vo%*S zZ{DPD^QQe8&u1*?1YUa`-?3KNViwY<%!J+FBpt5Rb=VDp$n$;QRfBNAt^#iXA9FOj zr$WCWw=1+(WT}Zf#?#(Uv@KyqWtV^)LLVy%sm^@=)gw7%s5)1`G)#kGd6h`a? zK`wz)jH${L|=*C;#J#+RVV%IK|Aa_c`8A zBIb`q!(J~O^oR5aYSRpt|67hINlgitxFfWLM3gRso&Fh|qDXfXEfZzXk3`Rg@U zV=2_ubq)`p#3aQ@q4T=^Fh;?r%UsM0ZOlX%3mGS+V^L&FOeya%CA}V~AS*$RQOXr< zgqq6F_f9aVj&p!KsOW1Uu}Qb5d)OZw{)6+f0Ej2(~<^ik$B(It5-$< literal 4464 zcmeH~OHb5L6vt0z81Sw522}95Fp&sC2pgG!iGoprKw?~(%gl8sw$sV9HR{6Dz3g3L zOkC)~L_UCQjcek@xHRsJUx4xaZ*PZoWY#98C)|6_{r`F&=Wv>Ih&pYe?ivvtBRa$b z(eTxw@xhV7v4=yn)o3&fgSF=XjmFInpH_d~|Caf^HYK}8Uv6Gvb&h!km~D(G;3W+; z2~@8-gA96`rQoAMK?f_?5-l?DP39+9z9G_SqFQ|#XfIY1YhLAk{FT`U`U4dGK~;{07oOY*zCBhE+M zyZ_=H^qSc)>$v+KZgE3?5Fh7P@x5`#ew4o%_HqAx-~qbOTJyIb@0l-!@Ib+ zaQ>+scn`B{-1twu3(5aqj@G#T$2C8L^?7umMfFu+j{53{9E1#gYkdts+&~vvYki%K zK#b%4i{8(3&;t#5;QS@tzw^-Yah^-m?*+9c$>Z~2stQ|D$#FfhAKVtMSE$IUxA?RsXNs&e7wct{zG;=4qKG}K{CQC} zeLe~Lv@|QrUg$4aPECgHlx5mWWXW^ z)2ZUNWQ(dVtSM<(3+6MvbL52jqG?H`dyykbCBH5_IcJHIwE0F+>?(+&T=FZ;NXnRT zyf-YtnQF#8%gJ$7;!$U+*wl=>no^=!I;I&&GmvH=%|M!gGy`b{(hU5o3=HtW_`!Nl zSdYY#CHc#H0zV*U9d976b+Cp{P9E~y*n)}wee7TF{Sy0ZMZ9^Ukx3qO>?#AS5xswR T`MR3L7QjVrr+xnBcFgi0O$9M9 diff --git a/ProjectSettings/Physics2DSettings.asset b/ProjectSettings/Physics2DSettings.asset index 6b4c92e473569166c11c80443a6f00a367c6f01d..3eea41d4e14ba174b450ed4eb5cfade75c8e4384 100644 GIT binary patch literal 2024 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 JUV&$?zymgitwI0* diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 9eeca0e2..d518aa37 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.7f1 -m_EditorVersionWithRevision: 2019.4.7f1 (e992b1a16e65) +m_EditorVersion: 2019.4.6f1 +m_EditorVersionWithRevision: 2019.4.6f1 (a7aea80e3716) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index 5a172f33557ba943a2d8d761cb93ecf857f6be3b..23c36428f5117102a0fc27bed5aae1a1ec8b1f55 100644 GIT binary patch literal 6673 zcmeHMUvJws5P$clU>~}tIItWi!TjdLa9hBxH7jj56h%RcCxHJTK&1=qJBq$O|2gw=~N8Yc%-hzOLNb~{pP=9s8Oz&>l=CHsF<)GpOIc*bDuHTTQzma~ zo!sRNv=oJ@lqz*~^iavtl8PR9^h>H^$^fPK)FIb~W-%%fl$JRmZ-J^%&8&SvO6Z`9J^Ym(-Z_AReb5{M%kI1UL>>iP?<=Ipdk&DuSir;H7RusSpj(;G|^NTpg`6bvoJ z#13p)ZgR~aW1ukoLr^1C(GZPkkM(Q$Tt%p+ zqM{h9K3j~i9N92@gYh&{IkvdaMyA#+AUv6f6C zRf@6r_zCsd3k#0{5xPFCJZ?m=8L){6R{x(E5p2>wBZ9@}4Mf;3?8AnH2{2xy6_{=H z3H~d6jrUdC@T2>LLq-MHLOkw1;k?R$XH?jU3TIEOQFx6#@or40TQ4^|_?JE=_|UO` zcCg;H1Ic=J=snU-p|;JR9d>sLuJCuv4(`augxZ(?W_GZ*f8Xq2WjruDScWY`sE4+V zw*RS34&BqO3E;3Bg=(d6KQ8#AJoXCr;et=!j|)Ec8W+xg9$c`%_8%q)Yw_KkLhXgS zxL}J@Z|oHI;etJXc&A`_9>RrVyVTi2hB_`!92o+)bMTe}hYbzygi&;NyWqdsAAp5A zo2#y3KP>n{*RT+rKI4MhCjBqCU~%dh6?RS#z0R+P(lAt&-X;;Q_!$*410ddXZziQkheU;y(yFAWEgGHqFZj_Yex>F-umCL>%^^f yaUT^v!2H#?x!@@MR-?*N0U6{uLXmxk{XUn=X}M{&mpr^idz@5rGev#6t$zTbMNZ%V literal 5188 zcmeI0O>7%Q6vy8t=?DGbvy?y!b@?ivp=|=Cr7d=1rHx1$H%=RnkgADyoNT+^HT#h` zJ-H`ZsRs^R3PKPGaVV!EaX?&pLrCqB0}>xX2&tzcIKZvp{by!lZ)`Ugjv0ApXWwt$ zoA=(#&aRhe^EIMvc_Mn4=zcyC?cclaVBbLBf$~1Ov$V8iSuA@6U}>rMr(56cyml$N zB}d-5aAMDa97_kfiPiygIY3lrl_hmiSGB4vvgnI$s()osy@w?*i6bfCzpySG0PjkG zIfMVe`n&lW_IXI|jY=1bx~zRH!2u2%bX_yl7IiE8JJ<$T;&0NUi+Mj^oHhFE0qUr9 zv8acRv+f{Y!u|$`>!@_GXkBXjjV!jZ2BJ;tQ{&&GWNChqEn}KQmusBhVOzjtB|S^|1K~`e3=GX=8J6qvf;biaID`C4S%u? zhku_l=N~=Qfq!fG)8N@gC-}F>`ad#vWB9WjcyE{1-_wB~GW@v?{9VJJ z@4y4YU+BQ!H~hsm9QpZ#Ifp*%G5#a<)6EZJRN`f`E(RKHU9ck z{BO2!y+3Z^Ip|@Q<)hjEld*7}XrU;h$nj=Es+<{$gFt$b0W4VAC4Ehvs7R_hHR+Bz zGqcfc0Lvx;xq3_0#<9kL>2>i3M)Fc=ZVM*9BQOG-CB)pO|-A_mn6kOrS z@p3toiFKp1zgXo6Oiv>l(6SmW(0M~DB0M+d+idcj<4sAp8d4-{Q5?u5R^d6J9|eBZ zDNSk;lJFuY=Q<+f^ib%Rqk;$`r{uy{zB(;uWF%B1ffR1!ROEy#yE-@ybDH~2JFYwJ zi@*+tMM(~Ez5-G3Lq}=N6&JjcPMYi6gFFybM9rzhmC^D1sGO57g%O*s@c3g+wIZrv zjx#sMfvgnUcFuLRd3J6E9g`J5SQw0L_O}I2NY9pm48np8h67A!i@K;OXC|Z_n~7UF zfT#^St{fSkknhDZdy=zNbRC}OCgEUQF3X_koKH#F zv5*%9FHFrTSYA`b5-(wIW|)_toiB`Vjw3&yQXEEpMF&=Js*<}%Ud+nHJU0p=njOiL ztd-o@miD9wI5E7)qOu=Ua3Ao9$z@)aMeHu$61an~m+J}*E_vKtYh^71YZ+L}!2gs1 z{29g{Uc9)Smcc@1)SquQjZH{xL{!c3qdoiO)vHG@UA%bY=8e&#f8M^0cLl|DpJq*> zkFH!%+!)9czaa8Yy+vayLmPhy52EQ#7gLY zH@~pXPq|Sb_?)c0#3w!G_95z!t0mS!Y4wS+3be}=JF}Wk_>hB-Njc9Be8*P(;pb?~ zZ(@8#8y{OvI3B;1*nXxs??k0pB}ZNh#R1jEx-3S*b~rfb-~$q0d$w?Wej`yb$fxA= zG5({d<^&&ErW`gpA7+aDG9xp&YBkh-;nUmGer=qUp$Gd;VOH5fOvqO>H(o^hKdW?) Ag#Z8m diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 65915d600642050e2e3d69b7e6c3356587fd85fe..47deb917f50939cd59ec59aabf8e91daad12aad5 100644 GIT binary patch literal 441 zcmc(czfQw25XSdB#dRnXsp>L-yj4`7NXbG&feD?G!?NO>!GDJE^w`b-Z@^-G{(X0! z?(FT`v1>u>M78aYkFbdw2&iOa9hRGMH`w|5uopsBbzNuo_71K@)uZZ=QIV4sfG4NX z=x-V?bj0D|wU9=!bp%hi4CvRQ!e20yq#B-^0{;7$-_O3iPKBiVWKhLegLH3XBz+j literal 4308 zcmeHKJx>%t7=DLa4i!HD6~7AU?1*OwgoaQcdI_4S812jim(Ag^2YY+PbrU=O2!Fte z?*0Isw*Ch!Em)st<}SChmrz>Go9w$Y&$ILHJkRVFuSo4&WbUVk+{Ya^kr&S!>&q+4 zYx@nkEQ&%YU~fqj#gCKkv!{PA&svL*|Eyj-Z9W=OQ=}1VA_hweJ25ufq(sTDnwVM4 z$g`vvCKpPkR09Yv^0wY!#0pl|qlPwY0zqu54lh> z?bWXXwtFn`?@*ETiO)>%P9F{A{;zSJVRBK`cb)LSam-bHH^!75RrS$FzrL^UCg`j5 z-6GE#!=V1MzT3ck-syV)ociu?ondlO)n`AX!HAvIH$SHAi29ykG&;WpqK3(ZlE|L# zI;MR8UBZUR1@`Zq?>)f2{>Yo0^2|kijd|w;DBV6>M9NgaycJvA$eS1i9 z(=glE)yW&3>Lku2*GX5}x*umUso>}8r~eM$9UEWNaK+>4uA((dei zi@(~6!_z4r5`W?l!GYjFa3DAk90(2s2Z95^f#5)J;3@}}K(e9TiuZM|oeP`8-At$5 yBb~)*zWo_{Tilcjg};cuiXg;Z?vV~>zus+9RNGW literal 4116 zcmZQzV60?d5D;NtU=Rh;K#GCE$iUE2&qU8W&5+^W|Ns9P8G&M~Ac_C~Z$B!ZwoE@N zB8Kt!6}j#g_t=1$(sP#AbAi*1~7RCpdd&N>>VTpA(^?UzKMB>>8V8w zZkZLSDGDHw;*!(?2H(Vr%-qsk1;?D6{BmT8+<1_h;N--dRJfvm#G;bS4*{<0i)~h~ PT4l$;&|u$x=&KC?*Jwh8 diff --git a/ProjectSettings/UnityConnectSettings.asset b/ProjectSettings/UnityConnectSettings.asset index 88f2c64eb9293e6e5f046ecd0145624039e6692f..584eee7573dafe94ed65a0274901556713ecaf27 100644 GIT binary patch literal 853 zcmaiy!Eb^v6vprT74_gw1MIwUV}>~sjb^$fJDJ)(unV-LEoN@n|GpM9!qj=AU;DlH zz2Bq%9?zx-2iWVc;xXz~J!D80Rf3!SkOfp0_YVV%BhUAJcRR!bbcelHcR!Ls05wZ6 zhKo!`9zw->zWK1)GiUIW6Dy*Dl{F|%a{dME4V30mLKs?X;7-|VtEOwF$_ z7fVBwsmfNanBA^j)55sq-5+07<_aLXZDAQC7*NQDrxY;R)N*elx`5oqR5P|?%T zP*MUd`~V7SB!m#6pn~OnGallx!9CJGY2J*#Z{GXnvUirT-dV=_KQYF(P)!wMBg56R z<+1X3y~=*I+ik-j>@-}vedXtL|JS>3-o;e6N3IK1|7g(r`UVM11|wgnc``TBCZRZ2`3HwHOfCokI;t(<8aapRx+xD zpnzXNuwf=7+N_IxByNCmAa#Jvmi-}d z`bViQ(m#gy0{!FQ87D6d<4fzGAXw*1>>DZe(BXsrNrV;5e<;W6^T&Hg3517({@#-O z{vm$_pq77ySpR2)f*;QDE4BBxikv1#FJT6KQPc152%-A?dbIhE=6I>!M`r-~W5}wF zPuD+%_yYaYx%|35{mx~^C-;9tvi@g?XBHUG)7r2R?~KmEHgIIo@D9DF6j= z7ZAkZq-Ec~i-1kZ!O!|$yfhj3zH7%bZXA35T*Mac-*Kb(M&P*AtS!2JJl$|+!-jg2 zO^T{}bFz*8Qn_UtH?7}B2ApsdsWOl*a5t0|LAI9j(Lx@s-BQx0iQ z_)Zvj&Yx%5z}yq)rW@9SaKZ9zH$N9Fo!lnr@yr-5QyuH9KxYLyE6`bi&Il8UbCrtK^vW&UD%*{q<&;~v8jLz+J6NbJRx2*<0TIImSoOD^W?|oh>AvE&@b~ms cCtS=`-X{I@4oSUyesm_&|0pN7A4zHcH{08x-2eap diff --git a/ProjectSettings/VFXManager.asset b/ProjectSettings/VFXManager.asset index 08194238661244530eeaa5aa67cd108bbf8cd57a..6e0eaca40d51a23fde75fc0183b34888ea942945 100644 GIT binary patch literal 273 zcmZ|Iu?~VT5C-7APjL=9384~EyP*a(k!ZviolK<%)<7Xx5{>cQt=+ltzW@H~U&43` z)TN|<3|G)=d!TvFS|#<{7j9aW!;wcRBaY+zb>>g}U=+-zFrefVonx+ejtwIK<#l&^ zV5-+rU{vt@$-uMgjS{jkkleX2QTSxCz|GR|*ZQKW-}5%hu<1%9RnvKWKxJC@vc?3p omMVYlxxO>7)scLmILZ?}ESJTD_a-nn2DTrlEUgs=8~3nk9-{6Ah$@XcQ|JqRDt-IyMzc<`eYgd7co! zqHXU<^1Q2j>>yq-KeOYf7aw;owQ;17_D4>s_E9>CoI=lLOIIQadTzX!