From b664497c7936db7719ea67cbee975ef5828bb059 Mon Sep 17 00:00:00 2001 From: UVCLimHun Date: Tue, 29 Apr 2025 12:04:47 +0900 Subject: [PATCH 1/4] Update MQTTManager.cs --- Assets/WorkSpace/LH/MQTTManager.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/WorkSpace/LH/MQTTManager.cs b/Assets/WorkSpace/LH/MQTTManager.cs index ec47a3d8..ef2dea3b 100644 --- a/Assets/WorkSpace/LH/MQTTManager.cs +++ b/Assets/WorkSpace/LH/MQTTManager.cs @@ -83,6 +83,7 @@ namespace Octopus.Simulator.Networks clientTable.Add(clientName, client); onConnected?.Invoke(client); SubscriptionTopic(client, "simulation/435faabb-6183-4690-a81f-027dd96d5827/#"); + Debug.Log("test"); } private ConnectPacketBuilder ConnectPacketBuilderCallback(MQTTClient client, ConnectPacketBuilder builder) From 60eae20b92da888f511ea0496956d7dfd270ec28 Mon Sep 17 00:00:00 2001 From: UVCLimHun Date: Wed, 30 Apr 2025 12:15:05 +0900 Subject: [PATCH 2/4] webmanager --- Assets/StreamingAssets/WebConfig.json | 9 + Assets/StreamingAssets/WebConfig.json.meta | 7 + Assets/WorkSpace/LH/BaseSimulationMessage.cs | 25 ++ .../LH/BaseSimulationMessage.cs.meta | 2 + Assets/WorkSpace/LH/MQTTManager.cs | 30 +- Assets/WorkSpace/LH/WebConfig.cs | 17 + Assets/WorkSpace/LH/WebConfig.cs.meta | 2 + Assets/WorkSpace/LH/WebManager.cs | 160 +++++++ Assets/WorkSpace/LH/WebManager.cs.meta | 2 + Assets/asdf.unity | 420 ++++++++++++++++++ Assets/asdf.unity.meta | 7 + ProjectSettings/ProjectSettings.asset | 2 +- ProjectSettings/SceneTemplateSettings.json | 121 +++++ 13 files changed, 799 insertions(+), 5 deletions(-) create mode 100644 Assets/StreamingAssets/WebConfig.json create mode 100644 Assets/StreamingAssets/WebConfig.json.meta create mode 100644 Assets/WorkSpace/LH/BaseSimulationMessage.cs create mode 100644 Assets/WorkSpace/LH/BaseSimulationMessage.cs.meta create mode 100644 Assets/WorkSpace/LH/WebConfig.cs create mode 100644 Assets/WorkSpace/LH/WebConfig.cs.meta create mode 100644 Assets/WorkSpace/LH/WebManager.cs create mode 100644 Assets/WorkSpace/LH/WebManager.cs.meta create mode 100644 Assets/asdf.unity create mode 100644 Assets/asdf.unity.meta create mode 100644 ProjectSettings/SceneTemplateSettings.json diff --git a/Assets/StreamingAssets/WebConfig.json b/Assets/StreamingAssets/WebConfig.json new file mode 100644 index 00000000..f1fc11db --- /dev/null +++ b/Assets/StreamingAssets/WebConfig.json @@ -0,0 +1,9 @@ +{ + "configs": [ + { + "host": "http://220.90.135.42", + "port": 3037, + "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcmlkIjoic3lzdGVtIiwibmFtZSI6IuyLnOyKpO2FnOq0gOumrOyekCIsImF1dGgiOiJzeXN0ZW0iLCJjb21wYW55SWQiOm51bGwsImlhdCI6MTczNTYwOTgyOCwiZXhwIjoxNzcxNjA5ODI4fQ.ApXLL_RsWWaa2KwRKrg1z8iT9MNYdZFqN-6Mn1Lvq8Q" + } + ] +} \ No newline at end of file diff --git a/Assets/StreamingAssets/WebConfig.json.meta b/Assets/StreamingAssets/WebConfig.json.meta new file mode 100644 index 00000000..c9613c3e --- /dev/null +++ b/Assets/StreamingAssets/WebConfig.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b3033261fdbbc4e4d870290340c9da77 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WorkSpace/LH/BaseSimulationMessage.cs b/Assets/WorkSpace/LH/BaseSimulationMessage.cs new file mode 100644 index 00000000..19bf27aa --- /dev/null +++ b/Assets/WorkSpace/LH/BaseSimulationMessage.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using System; +using System.Collections.Generic; + +namespace Octopus.Simulator +{ + public enum SimulationType + { + generator_event, + transporter_event, + processor_event, + resource_component_event + } + + [Serializable] + public class BaseSimulationMessage + { + public string type; + public string _event; + public string component_type; + public string component_id; + //public List data; + public string timestamp; + } +} \ No newline at end of file diff --git a/Assets/WorkSpace/LH/BaseSimulationMessage.cs.meta b/Assets/WorkSpace/LH/BaseSimulationMessage.cs.meta new file mode 100644 index 00000000..1fa4ebcb --- /dev/null +++ b/Assets/WorkSpace/LH/BaseSimulationMessage.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ba32b616352b8374d9b54c448e19ae15 \ No newline at end of file diff --git a/Assets/WorkSpace/LH/MQTTManager.cs b/Assets/WorkSpace/LH/MQTTManager.cs index ef2dea3b..b46bf125 100644 --- a/Assets/WorkSpace/LH/MQTTManager.cs +++ b/Assets/WorkSpace/LH/MQTTManager.cs @@ -8,6 +8,7 @@ using System; using System.Collections.Generic; using System.Text; using System.Collections; +using Octopus.Simulator; namespace Octopus.Simulator.Networks { @@ -16,16 +17,33 @@ namespace Octopus.Simulator.Networks public static MQTTManager mqttManager; public Dictionary clientTable = new Dictionary(); + public BaseSimulationMessage basemessage; [SerializeField] string MQTTpath = ""; MQTTClient client; + [SerializeField] + string _topic; + [SerializeField] + public string topic + { + get + { + return _topic; + } + set + { + _topic = value; + } + } + public event Action onConnectedEvent; public event Action onDisconnectedEvent; public event Action onMessageReceived; public event Action onErrorEvent; public event Action onCompletedTimerEvent; + public // Start is called once before the first execution of Update after the MonoBehaviour is created void Awake() { @@ -52,7 +70,7 @@ namespace Octopus.Simulator.Networks } } - public void SubscriptionTopic(MQTTClient client, string topic) + public void SubscribeTopic(MQTTClient client, string topic) { client.AddTopicAlias(topic); @@ -60,7 +78,11 @@ namespace Octopus.Simulator.Networks .WithMessageCallback(OnMessage) .WithMaximumQoS(QoSLevels.ExactlyOnceDelivery) .BeginSubscribe(); + } + public void UnsubscribeTopic(MQTTClient client,string topic) + { + client.CreateUnsubscribePacketBuilder(topic).BeginUnsubscribe(); } public void Connect(string clientName, string host,int port) @@ -79,11 +101,10 @@ namespace Octopus.Simulator.Networks public event Action onConnected; private void OnConnected(MQTTClient client,string clientName) { - Debug.Log("connect"); clientTable.Add(clientName, client); onConnected?.Invoke(client); - SubscriptionTopic(client, "simulation/435faabb-6183-4690-a81f-027dd96d5827/#"); - Debug.Log("test"); + + SubscribeTopic(client, topic); } private ConnectPacketBuilder ConnectPacketBuilderCallback(MQTTClient client, ConnectPacketBuilder builder) @@ -100,6 +121,7 @@ namespace Octopus.Simulator.Networks { var payload = Encoding.UTF8.GetString(message.Payload.Data, message.Payload.Offset, message.Payload.Count); Debug.Log(payload); + basemessage = JsonConvert.DeserializeObject(payload); onMessageReceived?.Invoke(topicName, payload); } diff --git a/Assets/WorkSpace/LH/WebConfig.cs b/Assets/WorkSpace/LH/WebConfig.cs new file mode 100644 index 00000000..7d9614e1 --- /dev/null +++ b/Assets/WorkSpace/LH/WebConfig.cs @@ -0,0 +1,17 @@ +using UnityEngine; +using System.Collections.Generic; + +namespace Octopus.Simulator.Networks +{ + public class WebConfigList + { + public List configs = new List(); + } + + public class WebConfig + { + public string host; + public int port; + public string accessToken; + } +} \ No newline at end of file diff --git a/Assets/WorkSpace/LH/WebConfig.cs.meta b/Assets/WorkSpace/LH/WebConfig.cs.meta new file mode 100644 index 00000000..58b52559 --- /dev/null +++ b/Assets/WorkSpace/LH/WebConfig.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9fb125d8e16ae974e916d72c4b58ea5a \ No newline at end of file diff --git a/Assets/WorkSpace/LH/WebManager.cs b/Assets/WorkSpace/LH/WebManager.cs new file mode 100644 index 00000000..3f14a928 --- /dev/null +++ b/Assets/WorkSpace/LH/WebManager.cs @@ -0,0 +1,160 @@ +using Newtonsoft.Json; +using Octopus.Simulator.Networks; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using Unity.VisualScripting.Antlr3.Runtime; +using UnityEngine; +using UnityEngine.Networking; + +namespace LH +{ + //API를 통해 서버와 통신하기 위한 함수들이 내장되어 있습니다. + //Post, Get. Put을 사용하며, Post의 경우엔 Class를 입력으로 받아 Json형식으로 변환하여 업로드합니다. + //비동기로 실행하기 위해 Coroutine으로 제작되었으며, callback의 bool값을 통해 서버로부터 + //정상적으로 API가 입력, 결과가 출력되었는지를 확인할 수 있습니다. + public class WebManager : MonoBehaviour + { + public static WebManager webManager; + + [SerializeField] + string WebPath = ""; + string host = ""; + string token = ""; + int port; + string http; + + void Awake() + { + webManager = this; + SetMqttConfig(); + } + + private void SetMqttConfig() + { + string path = Application.streamingAssetsPath + WebPath; + string json; + using (StreamReader reader = new StreamReader(path)) + { + json = reader.ReadToEnd(); + } + WebConfigList ConfigList = JsonConvert.DeserializeObject(json); + var config = ConfigList.configs[0]; + host = config.host; + port = config.port; + token = config.accessToken; + http = $"http://{host}:{port}"; + } + + //Post동작을 실행하는 함수입니다 + public void Request_Post(object inputclass, string type, System.Action ResultCallback) + { + //입력된 클래스를 json데이터로 변환합니다. + string json = JsonConvert.SerializeObject(inputclass); + StartCoroutine(Web_Post(http + type, json, (result, text) => + { + ResultCallback(result, text); + })); + } + + //Get동작을 실행하는 함수입니다. + public void Request_Get(string type, System.Action ResultCallback) + { + StartCoroutine(Web_Get(http + type, (result, text) => + { + ResultCallback(result, text); + })); + } + + //Put동작을 실행하는 함수입니다. + public void Request_Put(string type, System.Action ResultCallback) + { + StartCoroutine(Web_Put(http + type, (result, text) => + { + ResultCallback(result, text); + })); + } + + IEnumerator Web_Post(string URL, string json, System.Action callback) + { + using (UnityWebRequest request = UnityWebRequest.PostWwwForm(URL, json)) + { + byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json); + + request.uploadHandler.Dispose(); + request.uploadHandler = new UploadHandlerRaw(jsonToSend); + request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); + request.SetRequestHeader("Content-Type", "application/json"); + + yield return request.SendWebRequest(); + + //result가 에러로 왔다면 + if ((request.result == UnityWebRequest.Result.ConnectionError) || (request.result == UnityWebRequest.Result.ProtocolError)) + { + Debug.Log(request.error); + //callback을 false로 하고 텍스트를 리턴합니다. + callback(false, request.downloadHandler.text); + } + else + { + //result가 에러가 아니라면, callback을 true로 하고 텍스트를 리턴합니다. + Debug.Log(request.downloadHandler.text); + callback(true, request.downloadHandler.text); + } + } + } + + IEnumerator Web_Get(string URL, System.Action callback) + { + using (UnityWebRequest request = UnityWebRequest.Get(URL)) + { + request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); + request.SetRequestHeader("Authorization", "Bearer " + token); + + + yield return request.SendWebRequest(); + + //result가 에러로 왔다면 + if ((request.result == UnityWebRequest.Result.ConnectionError) || (request.result == UnityWebRequest.Result.ProtocolError)) + { + Debug.Log(request.error); + //callback을 false로 하고 텍스트를 리턴합니다. + callback(false, request.downloadHandler.text); + } + else + { + //result가 에러가 아니라면, callback을 true로 하고 텍스트를 리턴합니다. + Debug.Log(request.downloadHandler.text); + callback(true, request.downloadHandler.text); + } + } + } + + IEnumerator Web_Put(string URL, System.Action callback) + { + byte[] data = { }; + using (UnityWebRequest request = UnityWebRequest.Put(URL, data)) + { + request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); + request.SetRequestHeader("Content-Type", "application/json"); + + + yield return request.SendWebRequest(); + + //result가 에러로 왔다면 + if ((request.result == UnityWebRequest.Result.ConnectionError) || (request.result == UnityWebRequest.Result.ProtocolError)) + { + Debug.Log(request.error); + //callback을 false로 하고 텍스트를 리턴합니다. + callback(false, request.downloadHandler.text); + } + else + { + //result가 에러가 아니라면, callback을 true로 하고 텍스트를 리턴합니다. + Debug.Log(request.downloadHandler.text); + callback(true, request.downloadHandler.text); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/WorkSpace/LH/WebManager.cs.meta b/Assets/WorkSpace/LH/WebManager.cs.meta new file mode 100644 index 00000000..ca5047b3 --- /dev/null +++ b/Assets/WorkSpace/LH/WebManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 128c906b71c22fb428a05e13831af396 \ No newline at end of file diff --git a/Assets/asdf.unity b/Assets/asdf.unity new file mode 100644 index 00000000..b0583e47 --- /dev/null +++ b/Assets/asdf.unity @@ -0,0 +1,420 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &139504208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 139504211} + - component: {fileID: 139504210} + - component: {fileID: 139504209} + - component: {fileID: 139504213} + - component: {fileID: 139504212} + - component: {fileID: 139504214} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &139504209 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + m_Enabled: 1 +--- !u!20 &139504210 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &139504211 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &139504212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6c81b4b1ce2fb4345950d24862ca380c, type: 3} + m_Name: + m_EditorClassIdentifier: + basemessage: + type: + _event: + component_type: + component_id: + timestamp: + MQTTpath: /mqttconfig.json + _topic: simulation/7da9c033-5c75-4212-8eba-bf28f325e122/# +--- !u!114 &139504213 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!114 &139504214 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139504208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 128c906b71c22fb428a05e13831af396, type: 3} + m_Name: + m_EditorClassIdentifier: + WebPath: /webconfig.json +--- !u!1 &1724353346 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1724353349} + - component: {fileID: 1724353348} + - component: {fileID: 1724353347} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1724353347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1724353346} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!108 &1724353348 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1724353346} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1724353349 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1724353346} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 139504211} + - {fileID: 1724353349} diff --git a/Assets/asdf.unity.meta b/Assets/asdf.unity.meta new file mode 100644 index 00000000..4416a853 --- /dev/null +++ b/Assets/asdf.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0764dd5e23cffbf47b72ff0cab7a37d6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 5d047b28..8c23e351 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -925,6 +925,6 @@ PlayerSettings: hmiLoadingImage: {fileID: 0} platformRequiresReadableAssets: 0 virtualTexturingSupportEnabled: 0 - insecureHttpOption: 0 + insecureHttpOption: 2 androidVulkanDenyFilterList: [] androidVulkanAllowFilterList: [] diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 00000000..ede5887b --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,121 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "defaultInstantiationMode": 1 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "defaultInstantiationMode": 0 + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "defaultInstantiationMode": 0 + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "defaultInstantiationMode": 1 + }, + "newSceneOverride": 0 +} \ No newline at end of file From 0fe0d2cfe13f169fa57c83bee5180eefa645ebb2 Mon Sep 17 00:00:00 2001 From: UVCLimHun Date: Wed, 30 Apr 2025 17:23:52 +0900 Subject: [PATCH 3/4] web --- Assets/WorkSpace/LH/SimulationInfo.cs | 151 +++++++++++++++++++++ Assets/WorkSpace/LH/SimulationInfo.cs.meta | 2 + Assets/WorkSpace/LH/WebManager.cs | 15 +- 3 files changed, 166 insertions(+), 2 deletions(-) create mode 100644 Assets/WorkSpace/LH/SimulationInfo.cs create mode 100644 Assets/WorkSpace/LH/SimulationInfo.cs.meta diff --git a/Assets/WorkSpace/LH/SimulationInfo.cs b/Assets/WorkSpace/LH/SimulationInfo.cs new file mode 100644 index 00000000..d02a3304 --- /dev/null +++ b/Assets/WorkSpace/LH/SimulationInfo.cs @@ -0,0 +1,151 @@ +using UnityEngine; +using System; +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Octopus.Simulator +{ + [Serializable] + public class SimulationInfo + { + public int status; + public string code; + public string message; + public SimulationData data; + public Meta meta; + public string timestamp; + + } + + [Serializable] + public class SimulationData + { + public int id; + public int projectId; + public int logicId; + public int userId; + public string name; + public string simulationCode; + public logicData logicData; + public Parameters parameters; + public string status; + public string resultData; + public string createdAt; + public string updatedAt; + public string deletedAt; + public SimulationProject project; + public SimulationComponent component; + public SimulationUser user; + } + + [Serializable] + public class logicData + { + public string name; + public bool trace; + public List queues; + public List resources; + public List components; + public int simulation_time; + } + + public class Parameters + { + public int speed; + public int duration; + public bool realtime; + } + + [Serializable] + public class LogicQueue + { + public string name; + public string description; + } + + [Serializable] + public class LogicResources + { + public string name; + public int capacity; + public string description; + public int repair_time; + public double speed_factor; + public OperationHours OperationHours; + public int breakdown_interval; + } + + [Serializable] + public class OperationHours + { + public int end; + public int start; + } + + [Serializable] + public class LogicComponents + { + public string name; + public int rate; + public string type; + public string description; + public string output_queue; + public string output_resource; + public int transport_time; + public string required_resource; + public int processing_time; + } + + [Serializable] + public class SimulationProject + { + public int id; + public int userId; + public string name; + public string description; + public string createdAt; + public string updatedAt; + } + + [Serializable] + public class SimulationComponent + { + public int id; + public int userId; + public string name; + public string description; + public string createdAt; + public string updatedAt; + } + + public class SimulationUser + { + public int id; + public string ccPositionId; + public string userid; + public string name; + public string auth; + public string email; + public bool active; + public string joinDate; + public bool activeClassifyRule; + public string signatureId; + public string employeeNumber; + public string resignationDate; + public string profileId; + public string createdAt; + public string updatedAt; + } + + [Serializable] + public class Meta + { + public Param param; + } + + [Serializable] + public class Param + { + public int id; + } +} \ No newline at end of file diff --git a/Assets/WorkSpace/LH/SimulationInfo.cs.meta b/Assets/WorkSpace/LH/SimulationInfo.cs.meta new file mode 100644 index 00000000..7ccc086d --- /dev/null +++ b/Assets/WorkSpace/LH/SimulationInfo.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1072c1c763a385641be459bd4dec0d37 \ No newline at end of file diff --git a/Assets/WorkSpace/LH/WebManager.cs b/Assets/WorkSpace/LH/WebManager.cs index 3f14a928..744e7aa1 100644 --- a/Assets/WorkSpace/LH/WebManager.cs +++ b/Assets/WorkSpace/LH/WebManager.cs @@ -6,8 +6,9 @@ using System.IO; using Unity.VisualScripting.Antlr3.Runtime; using UnityEngine; using UnityEngine.Networking; +using Octopus.Simulator; -namespace LH +namespace Octopus.Simulator.Networks { //API를 통해 서버와 통신하기 위한 함수들이 내장되어 있습니다. //Post, Get. Put을 사용하며, Post의 경우엔 Class를 입력으로 받아 Json형식으로 변환하여 업로드합니다. @@ -16,6 +17,7 @@ namespace LH public class WebManager : MonoBehaviour { public static WebManager webManager; + public SimulationInfo info; [SerializeField] string WebPath = ""; @@ -28,6 +30,14 @@ namespace LH { webManager = this; SetMqttConfig(); + Request_Get("/simulation/histories/3", (flag, value) => + { + if (flag) + { + Debug.Log(value); + info = JsonConvert.DeserializeObject(value); + } + }); } private void SetMqttConfig() @@ -43,7 +53,8 @@ namespace LH host = config.host; port = config.port; token = config.accessToken; - http = $"http://{host}:{port}"; + http = $"{host}:{port}"; + Debug.Log(http); } //Post동작을 실행하는 함수입니다 From 9b30e9598ed25abb744c15f7484f70b91ed7c724 Mon Sep 17 00:00:00 2001 From: UVCLimHun Date: Wed, 30 Apr 2025 17:27:44 +0900 Subject: [PATCH 4/4] Update asdf.unity --- Assets/asdf.unity | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Assets/asdf.unity b/Assets/asdf.unity index b0583e47..2b64d2f6 100644 --- a/Assets/asdf.unity +++ b/Assets/asdf.unity @@ -290,6 +290,47 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 128c906b71c22fb428a05e13831af396, type: 3} m_Name: m_EditorClassIdentifier: + info: + status: 0 + code: + message: + data: + id: 0 + projectId: 0 + logicId: 0 + userId: 0 + name: + simulationCode: + logicData: + name: + trace: 0 + queues: [] + resources: [] + components: [] + simulation_time: 0 + status: + resultData: + createdAt: + updatedAt: + deletedAt: + project: + id: 0 + userId: 0 + name: + description: + createdAt: + updatedAt: + component: + id: 0 + userId: 0 + name: + description: + createdAt: + updatedAt: + meta: + param: + id: 0 + timestamp: WebPath: /webconfig.json --- !u!1 &1724353346 GameObject: