This commit is contained in:
2025-05-25 14:30:10 +09:00
41 changed files with 1750 additions and 133 deletions

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -0,0 +1,107 @@
fileFormatVersion: 2
guid: a567352e336933243b131db7eb5907dd
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eef66bc97c459c94b96c86701663c244
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,551 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &84151496267335565
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3781143750337797595}
- component: {fileID: 8454460130121961209}
- component: {fileID: 2956972442784000634}
m_Layer: 0
m_Name: StackerCrane_01_Lift
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3781143750337797595
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 84151496267335565}
serializedVersion: 2
m_LocalRotation: {x: 0.00000008146034, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6817145635011239913}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8454460130121961209
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 84151496267335565}
m_Mesh: {fileID: 6996815353524655726, guid: a567352e336933243b131db7eb5907dd, type: 3}
--- !u!23 &2956972442784000634
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 84151496267335565}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 7074121452861381994, guid: a567352e336933243b131db7eb5907dd, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &211059046321003065
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3684655462316590942}
- component: {fileID: 269198741979494856}
m_Layer: 0
m_Name: StackerCrane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3684655462316590942
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 211059046321003065}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6862055124170816977}
- {fileID: 6817145635011239913}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &269198741979494856
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 211059046321003065}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0671ba3dd5120d84fa95f82f0b7004ca, type: 3}
m_Name:
m_EditorClassIdentifier:
BANK:
BAY:
LEVEL:
lift: {fileID: 0}
bodyStart: {x: 0, y: 0, z: 0}
bodyEnd: {x: 0, y: 0, z: 0}
--- !u!1 &3264042907083275313
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 577450798675427556}
- component: {fileID: 7961661491815865467}
- component: {fileID: 2712123774187242948}
m_Layer: 0
m_Name: StackerCrane_01_Fork_Rear
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &577450798675427556
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3264042907083275313}
serializedVersion: 2
m_LocalRotation: {x: 0.00000008146034, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6817145635011239913}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7961661491815865467
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3264042907083275313}
m_Mesh: {fileID: -5305828669847631536, guid: a567352e336933243b131db7eb5907dd, type: 3}
--- !u!23 &2712123774187242948
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3264042907083275313}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 7074121452861381994, guid: a567352e336933243b131db7eb5907dd, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &4457033642086699872
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6817145635011239913}
m_Layer: 0
m_Name: lift
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6817145635011239913
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4457033642086699872}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 997135621247390612}
- {fileID: 577450798675427556}
- {fileID: 3781143750337797595}
- {fileID: 535361768049989532}
m_Father: {fileID: 3684655462316590942}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5293074118394098060
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 535361768049989532}
m_Layer: 0
m_Name: StackerCrane_01_Lift_Glass
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &535361768049989532
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5293074118394098060}
serializedVersion: 2
m_LocalRotation: {x: 0.00000008146034, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6817145635011239913}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &5452977827811288836
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7376213727696736814}
- component: {fileID: 6866658327068374132}
- component: {fileID: 49057592000795527}
m_Layer: 0
m_Name: StackerCrane_01_Glass
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7376213727696736814
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452977827811288836}
serializedVersion: 2
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6862055124170816977}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6866658327068374132
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452977827811288836}
m_Mesh: {fileID: 1898404254780704084, guid: a567352e336933243b131db7eb5907dd, type: 3}
--- !u!23 &49057592000795527
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5452977827811288836}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 8556262120643298411, guid: a567352e336933243b131db7eb5907dd, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &8798365256392938815
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6862055124170816977}
- component: {fileID: 8357980336019159288}
- component: {fileID: 4682494491370198293}
m_Layer: 0
m_Name: StackerCrane_01
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6862055124170816977
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8798365256392938815}
serializedVersion: 2
m_LocalRotation: {x: 0.00000008146034, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7376213727696736814}
m_Father: {fileID: 3684655462316590942}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8357980336019159288
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8798365256392938815}
m_Mesh: {fileID: -2303676918162449301, guid: a567352e336933243b131db7eb5907dd, type: 3}
--- !u!23 &4682494491370198293
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8798365256392938815}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 4586366901725999179, guid: a567352e336933243b131db7eb5907dd, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &9062100363697913999
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 997135621247390612}
- component: {fileID: 7246941432848583091}
- component: {fileID: 7792230706349749481}
m_Layer: 0
m_Name: StackerCrane_01_Fork_Front
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &997135621247390612
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9062100363697913999}
serializedVersion: 2
m_LocalRotation: {x: 0.00000008146034, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6817145635011239913}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7246941432848583091
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9062100363697913999}
m_Mesh: {fileID: 3567267625800323532, guid: a567352e336933243b131db7eb5907dd, type: 3}
--- !u!23 &7792230706349749481
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9062100363697913999}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 7074121452861381994, guid: a567352e336933243b131db7eb5907dd, type: 3}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 057179c23841fd344ad9ab4e6e66c496
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,238 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1505508720499862715
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 421374873455346910}
- component: {fileID: 802422837581587047}
m_Layer: 0
m_Name: TestAGV
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &421374873455346910
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1505508720499862715}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3909547189796084948}
- {fileID: 1627652318861080814}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &802422837581587047
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1505508720499862715}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 84ad40885a5aaa04e85eb7de0489cc8d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &4488530822671186643
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1627652318861080814}
- component: {fileID: 5506305391979457121}
- component: {fileID: 4473865689154435547}
m_Layer: 0
m_Name: Sensor
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1627652318861080814
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4488530822671186643}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 421374873455346910}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!135 &5506305391979457121
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4488530822671186643}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 10
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &4473865689154435547
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4488530822671186643}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: a65fe5e7ae0d6a74dbe40d269a1cb6f7, type: 3}
m_Name:
m_EditorClassIdentifier:
obstacleLayer:
serializedVersion: 2
m_Bits: 256
--- !u!1 &7175446550791974323
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8278436267998297966}
m_Layer: 0
m_Name: Pallet_Socket
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8278436267998297966
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7175446550791974323}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7020894527220248915}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &154300052577553464
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 421374873455346910}
m_Modifications:
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4046099219731300723, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
propertyPath: m_Name
value: Palletrobot
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 7154835845995298155, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
insertIndex: -1
addedObject: {fileID: 8278436267998297966}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 6070737613420926900, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
insertIndex: -1
addedObject: {fileID: 5083700428396174471}
m_SourcePrefab: {fileID: 100100000, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
--- !u!4 &3909547189796084948 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3775616689855107308, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
m_PrefabInstance: {fileID: 154300052577553464}
m_PrefabAsset: {fileID: 0}
--- !u!1 &6204755932358581132 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 6070737613420926900, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
m_PrefabInstance: {fileID: 154300052577553464}
m_PrefabAsset: {fileID: 0}
--- !u!114 &5083700428396174471
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6204755932358581132}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5fb7059a769257346badd43882bceb27, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &7020894527220248915 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 7154835845995298155, guid: 586ca79ec44844746b347929276fc0e6, type: 3}
m_PrefabInstance: {fileID: 154300052577553464}
m_PrefabAsset: {fileID: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 53db74a6e1101d2438a0c0083c5c232b
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -14,7 +14,7 @@ OcclusionCullingSettings:
RenderSettings: RenderSettings:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
serializedVersion: 10 serializedVersion: 10
m_Fog: 0 m_Fog: 1
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3 m_FogMode: 3
m_FogDensity: 0.01 m_FogDensity: 0.01
@@ -682,6 +682,65 @@ PrefabInstance:
m_AddedGameObjects: [] m_AddedGameObjects: []
m_AddedComponents: [] m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: a2cabb78a78db4a4fa8074f87fa77991, type: 3} m_SourcePrefab: {fileID: 100100000, guid: a2cabb78a78db4a4fa8074f87fa77991, type: 3}
--- !u!1 &328392813
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 328392815}
- component: {fileID: 328392814}
- component: {fileID: 328392816}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &328392814
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 328392813}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 86d8ea1a81790154fa1c1c2be6398b6a, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!4 &328392815
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 328392813}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
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 &328392816
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 328392813}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1af5890e725b4a74397a6abcbc5c8b43, type: 3}
m_Name:
m_EditorClassIdentifier:
AGVMoveSpeed: 0.35
AGVRotateSpeed: 1
--- !u!1 &349372256 --- !u!1 &349372256
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -864,6 +923,34 @@ PrefabInstance:
propertyPath: m_SizeDelta.y propertyPath: m_SizeDelta.y
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 1
objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 328392814}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: TestConeect
objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: Studio.RJHTest, Assembly-CSharp
objectReference: {fileID: 0}
- target: {fileID: 917407026338800721, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_OnClick.m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0}
- target: {fileID: 1105169851982576340, guid: 13ace7584c1d4514cb2218354647e355, type: 3} - target: {fileID: 1105169851982576340, guid: 13ace7584c1d4514cb2218354647e355, type: 3}
propertyPath: m_Name propertyPath: m_Name
value: Panel_StudioTopbar value: Panel_StudioTopbar
@@ -12252,3 +12339,4 @@ SceneRoots:
- {fileID: 216528118} - {fileID: 216528118}
- {fileID: 481136644} - {fileID: 481136644}
- {fileID: 1833346089} - {fileID: 1833346089}
- {fileID: 328392815}

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using UnityEditor; using UnityEditor;

View File

@@ -0,0 +1,29 @@
using Studio.Manage;
using Studio.Util;
using System.Collections.Generic;
using UnityEngine;
namespace Studio.Conifg
{
public class ConfigConnected
{
public static APISetting APISettings
{
get
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
var result = canvas_Popup.panel_apisetting.GetAPISetting();
return result;
}
}
public static MQTTSetting MQTTSettings
{
get
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
var result = canvas_Popup.panel_mqttsetting.GetMQTTSetting();
return result;
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e8082f730ac49974286f2c71561152dd

View File

@@ -1,12 +0,0 @@
using UnityEngine;
namespace Studio.Conifg
{
public class Constants
{
public static string APIDomain;
public static int APIPort;
public static string MQTTDomain;
public static int MQTTPort;
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: dcc5387e9d1cf9943b3e1d36a9b2bf17

View File

@@ -39,7 +39,7 @@ namespace Studio.Conifg
bodyString = JsonUtility.ToJson(body); bodyString = JsonUtility.ToJson(body);
} }
} }
url = $"http://{Constants.APIDomain}:{Constants.APIPort}{url}"; // url = $"http://{ConfigConnected.APIDomain}:{ConfigConnected.APIPort}{url}";
var request = SelectHTTPRequest(method, url); var request = SelectHTTPRequest(method, url);
// //

View File

@@ -32,26 +32,30 @@ namespace Studio
//MQTTCreateConnect(); //MQTTCreateConnect();
Application.quitting += OnDestroy; Application.quitting += OnDestroy;
} }
private Dictionary<string, MQTTClient> clients =new();
public void MQTTCreateConnect() public void MQTTCreateConnect(string MQTTDomain,string MQTTPort)
{ {
Debug.Log($"MQTT Domain{Constants.MQTTDomain} , MQTTPORT{Constants.MQTTPort}"); var conntedInfo = $"MQTT Domain : {MQTTDomain} , MQTTPORT :{MQTTPort}";
Debug.Log(conntedInfo);
var port = int.Parse(MQTTPort);
var options = new ConnectionOptionsBuilder() var options = new ConnectionOptionsBuilder()
.WithTCP(Constants.MQTTDomain, Constants.MQTTPort) .WithTCP(MQTTDomain, port)
.Build(); .Build();
if (client != null) if(clients.ContainsKey(conntedInfo))
{ {
client.OnConnected -= OnConnectedMQTT; clients[conntedInfo].OnConnected -= OnConnectedMQTT;
client.OnStateChanged -= OnStateChangedMQTT; clients[conntedInfo].OnStateChanged -= OnStateChangedMQTT;
client.OnDisconnect -= OnDisconnectedMQTT; clients[conntedInfo].OnDisconnect -= OnDisconnectedMQTT;
client.OnError -= OnErrorMQTT; clients[conntedInfo].OnError -= OnErrorMQTT;
} }
client = new MQTTClient(options);
client.OnConnected += OnConnectedMQTT; clients[conntedInfo] = new MQTTClient(options);
client.OnStateChanged += OnStateChangedMQTT; clients[conntedInfo].OnConnected += OnConnectedMQTT;
client.OnDisconnect += OnDisconnectedMQTT; clients[conntedInfo].OnStateChanged += OnStateChangedMQTT;
client.OnError += OnErrorMQTT; clients[conntedInfo].OnDisconnect += OnDisconnectedMQTT;
clients[conntedInfo].OnError += OnErrorMQTT;
} }
private ConnectPacketBuilder ConnectPacketBuilderCallback(MQTTClient client, ConnectPacketBuilder builder) private ConnectPacketBuilder ConnectPacketBuilderCallback(MQTTClient client, ConnectPacketBuilder builder)
{ {
@@ -78,9 +82,9 @@ namespace Studio
} }
} }
public void MQTTConnect() public void MQTTConnect(string key)
{ {
client.BeginConnect(ConnectPacketBuilderCallback); clients[key].BeginConnect(ConnectPacketBuilderCallback);
} }
private void OnErrorMQTT(MQTTClient client, string error) private void OnErrorMQTT(MQTTClient client, string error)
@@ -96,6 +100,7 @@ namespace Studio
} }
} }
private void OnStateChangedMQTT(MQTTClient client, ClientStates oldState, ClientStates newState) private void OnStateChangedMQTT(MQTTClient client, ClientStates oldState, ClientStates newState)
{ {
Debug.Log($"{oldState} => {newState}"); Debug.Log($"{oldState} => {newState}");
@@ -104,6 +109,12 @@ namespace Studio
private void OnConnectedMQTT(MQTTClient client) private void OnConnectedMQTT(MQTTClient client)
{ {
var conntedInfo = $"MQTT Domain : {client.Options.Host} , MQTTPORT :{client.Options.Port}";
var topics = StudioService.instance.TopciTable[conntedInfo];
foreach(var topic in topics)
{
Subscribe(client, topic.topic);
}
Debug.Log($"MQTT OnConnected"); Debug.Log($"MQTT OnConnected");
} }
@@ -111,7 +122,7 @@ namespace Studio
/// 구독 /// 구독
/// </summary> /// </summary>
/// <param name="topic"></param> /// <param name="topic"></param>
public void Subscribe(string topic) private void Subscribe(MQTTClient client,string topic)
{ {
client.CreateBulkSubscriptionBuilder() client.CreateBulkSubscriptionBuilder()
.WithTopic(new SubscribeTopicBuilder(topic).WithMessageCallback(OnTopic)) .WithTopic(new SubscribeTopicBuilder(topic).WithMessageCallback(OnTopic))
@@ -122,7 +133,7 @@ namespace Studio
/// 구독 취소 /// 구독 취소
/// </summary> /// </summary>
/// <param name="topic"></param> /// <param name="topic"></param>
public void UnSubscibe(string topic) public void UnSubscibe(MQTTClient client, string topic)
{ {
client.CreateUnsubscribePacketBuilder(topic) client.CreateUnsubscribePacketBuilder(topic)
.WithAcknowledgementCallback((client, topicFilter, reasonCode) => Debug.Log($"Unsubscribe request to topic filter '{topicFilter}' returned with code: {reasonCode}")) .WithAcknowledgementCallback((client, topicFilter, reasonCode) => Debug.Log($"Unsubscribe request to topic filter '{topicFilter}' returned with code: {reasonCode}"))
@@ -139,13 +150,12 @@ namespace Studio
{ {
string key = prop.Name.ToString(); string key = prop.Name.ToString();
string value = prop.Value.ToString(); string value = prop.Value.ToString();
// Debug.Log($"kEY : {key}, Value:{value}");
} }
var T = json["data"]; var T = json["data"];
var split = T.ToString().Split('['); var split = T.ToString().Split('[');
var t = $"[{split[1]}"; var t = $"[{split[1]}";
//Debug.Log(T.ToString());
JArray jarray = JArray.Parse(t); JArray jarray = JArray.Parse(t);
var list = new Dictionary<string, Dictionary<string, string>>(); var list = new Dictionary<string, Dictionary<string, string>>();
foreach (JObject obj in jarray.Children()) foreach (JObject obj in jarray.Children())
@@ -181,10 +191,14 @@ namespace Studio
private void OnDestroy() private void OnDestroy()
{ {
client?.CreateDisconnectPacketBuilder() foreach(var client in clients)
.WithReasonCode(DisconnectReasonCodes.NormalDisconnection) {
.WithReasonString($"{Constants.MQTTDomain} Disconnecting") client.Value?.CreateDisconnectPacketBuilder()
.BeginDisconnect(); .WithReasonCode(DisconnectReasonCodes.NormalDisconnection)
.WithReasonString($"{client.Value.Options.Host} Disconnecting")
.BeginDisconnect();
}
} }
} }
} }

View File

@@ -1,44 +1,71 @@
using Newtonsoft.Json.Linq; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
using Studio.Conifg;
using Studio.Core;
using Studio.Setting.Connect; using Studio.Setting.Connect;
using Studio.Util;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using UnityEngine; using UnityEngine;
using Studio;
using Studio.Core;
using Studio.Conifg;
namespace Studio namespace Studio
{ {
public class StudioServiceIdEventArgs : EventArgs
{
public readonly string Type;
public Dictionary<string, string> Entity;
public StudioServiceIdEventArgs(string type, Dictionary<string, string> entity)
{
Type = type;
Entity = entity;
}
}
public class StudioServiceTypeEventArgs : EventArgs public class StudioServiceTypeEventArgs : EventArgs
{ {
public readonly string Type; public readonly string Type;
Dictionary<string, string> Entitis; public Dictionary<string, Dictionary<string, string>> Entitis;
public StudioServiceTypeEventArgs(string type, Dictionary<string, string> entity) public StudioServiceTypeEventArgs(string type, Dictionary<string, Dictionary<string, string>> entitis)
{ {
Type = type; Type = type;
Entitis = entity; Entitis = entitis;
} }
} }
public class StudioService : UnitySingleton<StudioService> public class StudioService : UnitySingleton<StudioService>
{ {
private Dictionary<string, Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>> listenerIdMap; private Dictionary<string, Dictionary<string, EventHandler<StudioServiceIdEventArgs>>> listenerIdMap;
private Dictionary<string, EventHandler<StudioServiceTypeEventArgs>> listenerTypeMap;
private StudioRepoistory repository; private StudioRepoistory repository;
private Dictionary<string, float> updateTime = new(); private Dictionary<string, float> updateTime = new();
public bool isConnected
{
get
{
return repository.isConnected;
}
}
#region
private int totalRequestPacket; private int totalRequestPacket;
private int totalResponsePacket; private int totalResponsePacket;
private long maxElapsedTime; private long maxElapsedTime;
private long totalElapsedTime; private long totalElapsedTime;
private int maxReponesSize; private int maxReponesSize;
private int maxReuqestSize; private int maxReuqestSize;
private string maxReuqestApi; private string maxReuqestApi;
private string maxResponseApi; private string maxResponseApi;
private string maxResponseTimeApi; private string maxResponseTimeApi;
#endregion
public Dictionary<string, StudioEntityWithState<object>> apiData = new(); public Dictionary<string, StudioEntityWithState<List<Dictionary<string, string>>>> apiData = new();
public Dictionary<string, (Dictionary<string, Dictionary<string, string>>, TimeSpan)> mqttData = new(); public Dictionary<string, (Dictionary<string, Dictionary<string, string>>, TimeSpan)> mqttData = new();
private Dictionary<string, DateTime> lastUpdateTime = new(); private Dictionary<string, DateTime> lastUpdateTime = new();
@@ -46,26 +73,27 @@ namespace Studio
public event Action<string, StudioEntityWithState<object>> onAPIDataLoaded; public event Action<string, StudioEntityWithState<object>> onAPIDataLoaded;
public event Action<string, Dictionary<string, Dictionary<string, string>>, TimeSpan> onMQTTDataLoaded; public event Action<string, Dictionary<string, Dictionary<string, string>>, TimeSpan> onMQTTDataLoaded;
public void ConnectMQTT() private Dictionary<string, List<Topic>> topicTable = new();
public Dictionary<string, List<Topic>> TopciTable { get { return topicTable; } }
public void ConnectMQTT(string domain, string port, List<Util.Topic> topics)
{ {
this.repository = new StudioRepoistory(); this.repository = new StudioRepoistory();
listenerIdMap = new Dictionary<string, Dictionary<string, EventHandler<StudioServiceIdEventArgs>>>();
// ✅ 명시적으로 필요한 Dictionary들 초기화 listenerTypeMap = new Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>();
listenerIdMap = new Dictionary<string, Dictionary<string, EventHandler<StudioServiceTypeEventArgs>>>();
lastUpdateTime = new Dictionary<string, DateTime>();
updateTime = new Dictionary<string, float>();
apiData = new Dictionary<string, StudioEntityWithState<object>>();
mqttData = new Dictionary<string, (Dictionary<string, Dictionary<string, string>>, TimeSpan)>();
repository.OnTopicList += OnTopicList; repository.OnTopicList += OnTopicList;
repository.MQTTConnect();
var conntedInfo = $"MQTT Domain : {domain} , MQTTPORT :{port}";
if (!topicTable.ContainsKey(conntedInfo))
topicTable.Add(conntedInfo, new());
topicTable[conntedInfo] = topics;
repository.MQTTCreateConnect(domain, port);
repository.MQTTConnect(conntedInfo);
} }
public void SubscribeMQTT(string topic)
{
repository.Subscribe(topic);
}
//Que에 담아둔다?
private void OnTopicList(string type, Dictionary<string, Dictionary<string, string>> entities) private void OnTopicList(string type, Dictionary<string, Dictionary<string, string>> entities)
{ {
DateTime now = DateTime.Now; DateTime now = DateTime.Now;
@@ -97,29 +125,24 @@ namespace Studio
{ {
mqttData[type] = (entities, elapsedTime); mqttData[type] = (entities, elapsedTime);
} }
onMQTTDataLoaded?.Invoke(type, entities, elapsedTime); // 나중에 클래스 밖으로 이동 필요
} }
private async Task UpdateTopicData(string type, string id, Dictionary<string, string> entity) private void UpdateTopicData(string type, string id, Dictionary<string, string> entity)
{ {
if (!updateTime.ContainsKey(type)) if (!updateTime.ContainsKey(type))
updateTime.Add(type, 0.5f); updateTime.Add(type, 0.5f);
var time = updateTime[type]; var time = updateTime[type];
var task = Task.Factory.StartNew(async () =>
var task = Task.Run(async () =>
{ {
var st = string.Empty;
st = $"{type}:";
int delayTime = (int)(time * 1000); int delayTime = (int)(time * 1000);
await Task.Delay(delayTime); await Task.Delay(delayTime);
DispatchMachineEvent(type, id, entity); DispatchMachineEvent(type, id, entity);
}); }, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.FromCurrentSynchronizationContext());
} }
private Dictionary<string, Dictionary<string, Dictionary<string, string>>> timelineEntity = new(); private Dictionary<string, Dictionary<string, Dictionary<string, string>>> timelineEntity = new();
public bool TryGetRecentTimelineEntity(string type, string id, out Dictionary<string, string> result) public bool TryGetRecentTimelineEntity(string type, string id, out Dictionary<string, string> result)
{ {
result = null; result = null;
@@ -137,13 +160,16 @@ namespace Studio
return result != null; return result != null;
} }
public void AddTypeListener(string type, string id, EventHandler<StudioServiceTypeEventArgs> listener) public void AddTypeIdListener(string type, string id = null, EventHandler<StudioServiceIdEventArgs> listener = null)
{ {
if (!listenerIdMap.ContainsKey(type)) if (!listenerIdMap.ContainsKey(type))
{ {
listenerIdMap.Add(type, new()); listenerIdMap.Add(type, new());
//Debug.LogError($"Key Value is missing!!!! -Key:{type}-");
} }
if (id == null)
return;
if (!listenerIdMap[type].ContainsKey(id)) if (!listenerIdMap[type].ContainsKey(id))
{ {
listenerIdMap[type][id] = listener; listenerIdMap[type][id] = listener;
@@ -153,6 +179,23 @@ namespace Studio
listenerIdMap[type][id] += listener; listenerIdMap[type][id] += listener;
} }
} }
public void AddTypeListener(string type, EventHandler<StudioServiceTypeEventArgs> listener =null)
{
listenerTypeMap[type] = listener;
}
public void RemoveTypeListener(string type)
{
if (!listenerTypeMap.ContainsKey(type))
return;
listenerTypeMap.Remove(type);
}
public void RemoveTypeIdListener(string type,string id)
{
if (!listenerIdMap[type].ContainsKey(id))
return;
listenerIdMap[type].Remove(id);
}
public async Task LoadBaseData(string url) public async Task LoadBaseData(string url)
{ {
@@ -173,9 +216,10 @@ namespace Studio
data.lastRequestTime = startTime; data.lastRequestTime = startTime;
data.lastResponseTime = endTime; data.lastResponseTime = endTime;
data.elapsedTime = sw.Elapsed; data.elapsedTime = sw.Elapsed;
apiData[url] = data;
CheckAPIBoarder(data.Entity.ToString(), data.ReqSize, url, t); CheckAPIBoarder(data.Entity.ToString(), data.ReqSize, url, t);
UpdateEntity(url, data.Entity.ToString()); var entity = UpdateEntity(url, data.Entity.ToString());
StudioEntityWithState<List<Dictionary<string, string>>> convertData = new(data.State, entity, data.ReqSize, data.Message);
apiData[url] = convertData;
} }
else if (data.State == APIState.Error) else if (data.State == APIState.Error)
{ {
@@ -223,10 +267,9 @@ namespace Studio
boardEntity.MaximumResponsePacketAPI = maxResponseApi; boardEntity.MaximumResponsePacketAPI = maxResponseApi;
boardEntity.MaximumResponseTimeAPI = maxResponseTimeApi; boardEntity.MaximumResponseTimeAPI = maxResponseTimeApi;
return boardEntity; return boardEntity;
//JsonUtility.ToJson()
} }
public void UpdateEntity(string type, string data) public List<Dictionary<string, string>> UpdateEntity(string type, string data)
{ {
//Dcitionary 형으로 바꿈 //Dcitionary 형으로 바꿈
JObject json = JObject.Parse(data); JObject json = JObject.Parse(data);
@@ -238,36 +281,54 @@ namespace Studio
} }
var datas = json["rows"].ToString(); var datas = json["rows"].ToString();
var list = new List<Dictionary<string, string>>();
JArray jarray = JArray.Parse(datas); JArray jarray = JArray.Parse(datas);
foreach (JObject obj in jarray.Children()) foreach (JObject obj in jarray.Children())
{ {
Dictionary<string, string> keyvalue = new(); Dictionary<string, string> keyvalue = new();
int index = 0;
string id = string.Empty; string id = string.Empty;
foreach (JProperty prop in obj.Children()) foreach (JProperty prop in obj.Children())
{ {
string key = prop.Name.ToString(); string key = prop.Name.ToString();
string value = prop.Value.ToString(); string value = prop.Value.ToString();
if (index == 0)
{
id = value;
index = 1;
}
keyvalue.Add(key, value); keyvalue.Add(key, value);
} }
DispatchMachineEvent(type, id, keyvalue); list.Add(keyvalue);
} }
return list;
} }
private void DispatchMachineEvent(string type, string id, Dictionary<string, string> entity) private void DispatchMachineEvent(string type, string id, Dictionary<string, string> entity)
{ {
if (!listenerIdMap.ContainsKey(type)) if (!listenerIdMap.ContainsKey(type))
{ {
Debug.LogError($"Key Value is missing!!!! -Key:{type}-"); Debug.Log($"Key Value is missing!!!! -Key:{type}-");
} }
if (listenerIdMap[type].ContainsKey(id)) if (listenerIdMap[type].ContainsKey(id))
{ {
listenerIdMap[type][id].Invoke(this, new StudioServiceTypeEventArgs(type, entity)); listenerIdMap[type][id].Invoke(this, new StudioServiceIdEventArgs(type, entity));
}
else
{
if (!listenerTypeMap.ContainsKey(type))
return;
var data = new Dictionary<string, Dictionary<string, string>>();
data.Add(id, entity);
if (entity == null)
return;
DispatchTypeMachineEvent(type, data);
}
}
private void DispatchTypeMachineEvent(string type, Dictionary<string, Dictionary<string, string>> entities)
{
if (listenerTypeMap.ContainsKey(type))
{
listenerTypeMap[type].Invoke(this, new(type, entities));
} }
} }

View File

@@ -0,0 +1,18 @@
using System.Collections.Generic;
using UnityEngine;
namespace Studio.VirtualFactory.Info
{
public interface IInfo
{
public abstract Dictionary<string, string> Info
{
get;
}
public abstract Dictionary<string, string> Label
{
get;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0ae6ca4b2f15db14998f98d2baeb01c5

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
@@ -340,5 +340,7 @@ namespace Studio.Test
{ {
updateAction.Invoke(); updateAction.Invoke();
} }
} }
} }

View File

@@ -1,4 +1,4 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using Studio.Test; using Studio.Test;

View File

@@ -1,3 +1,4 @@
using System.Collections; using System.Collections;
using UnityEngine; using UnityEngine;
using System; using System;
@@ -26,7 +27,7 @@ public class DataReader : MonoBehaviour
void Start() void Start()
{ {
//ReplayTimer.gameObject.SetActive(true); //ReplayTimer.gameObject.SetActive(true);
// Resources 폴더에서 파일을 불러옵니다. // Resources 폴더에서 파일을 불러옵니다.
csvFile = Resources.Load<TextAsset>($"LogData/DataLog"); csvFile = Resources.Load<TextAsset>($"LogData/DataLog");
if (csvFile != null) if (csvFile != null)
@@ -38,7 +39,7 @@ public class DataReader : MonoBehaviour
} }
else else
{ {
Debug.LogError("CSV 파일을 찾을 수 없습니다."); Debug.LogError("CSV 파일을 찾을 수 없습니다.");
} }
} }

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5a2cf3d76009c0d41babf08313abbd91
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,138 @@
using Studio.VirtualFactory;
using System;
using System.Linq;
using System.Collections.Generic;
using UnityEngine;
using Studio.VirtualFactory.Info;
namespace Studio.Dynamic.TwinObject
{
public class AGV : MonoBehaviour, IInfo
{
float dp;
Vector3 nextPos;
float startX;
float endX;
float startY;
float endY;
float rotSpeed;
float moveSpeed;
float xp;
float yp;
Vector3 endPos;
Quaternion startRot;
Quaternion endRot;
private Dictionary<string, string> CurrentEntity;
private bool isPlay = false;
public Dictionary<string, string> Info {
get
{
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
return CurrentEntity;
}
}
public Dictionary<string, string> Label {
get
{
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
return CurrentEntity;
}
}
public void Init(string type,Vector3 pos)
{
transform.position = pos;
startX = transform.position.x;
startY = transform.position.z;
endX = transform.position.x;
endY = transform.position.z;
startRot = Quaternion.identity;
endRot = Quaternion.identity;
isPlay = true;
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
}
internal void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
CurrentEntity = e.Entity;
var s = "{";
foreach(var t in e.Entity)
{
s += $"{t.Key}: {t.Value},";
}
s += "}";
Debug.Log(s);
SetPos();
}
private void SetPos()
{
dp = 0f;
xp = 0f;
yp = 0f;
var xpos = CurrentEntity.FirstOrDefault(x => x.Key.Equals("x", StringComparison.OrdinalIgnoreCase));
var ypos = CurrentEntity.FirstOrDefault(x => x.Key.Equals("y", StringComparison.OrdinalIgnoreCase));
var x = float.Parse(xpos.Value) * 0.001f;
var z = float.Parse(ypos.Value) * 0.001f;
endPos = new Vector3(x, transform.position.y, z);
startX = transform.position.x;
startY = transform.position.z;
endX = endPos.x;
endY = endPos.z;
//노드방향으로 회전값알기
var degree =CurrentEntity.FirstOrDefault(x => x.Key.Equals("DEGREE", StringComparison.OrdinalIgnoreCase));
var deg = float.Parse(degree.Value);
deg = 360f - deg;
startRot = transform.rotation;
endRot = Quaternion.AngleAxis(deg, Vector3.up);
}
void PerforcedRotation()
{
if (dp >= 1f)
return;
dp += Time.deltaTime * rotSpeed;
transform.rotation = Quaternion.Lerp(startRot, endRot, dp);
}
private void Update()
{
if (isPlay == false)
return;
PerforcedMovement();
PerforcedRotation();
}
void PerforcedMovement()
{
xp += Time.deltaTime * moveSpeed;
yp += Time.deltaTime * moveSpeed;
var nx = Mathf.Lerp(startX, endX, xp);
var ny = Mathf.Lerp(startY, endY, yp);
nextPos = new Vector3(nx, 0, ny);
transform.position = nextPos;
}
public void SetMoveSpeed(float speed)
{
moveSpeed = speed;
}
public void SetRotateSpeed(float aGVRotateSpeed)
{
rotSpeed = aGVRotateSpeed;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 84ad40885a5aaa04e85eb7de0489cc8d

View File

@@ -0,0 +1,83 @@
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Studio.Dynamic.TwinObject;
using Studio.Core;
namespace Studio.Dynamic.M
{
public class AGVManager : UnitySingleton<AGVManager>
{
private AGV prf_AGV;
public HashSet<AGV> agvs = new();
public float AGVMoveSpeed;
public float AGVRotateSpeed;
public Queue<Dictionary<string, Dictionary<string, string>>> createAgvs = new();
public void Init()
{
prf_AGV = Resources.Load<AGV>("TestAGV");
StudioService.instance.AddTypeListener("AGV", OnDataUpdate);
StudioService.instance.AddTypeIdListener("AGV");
}
/// <summary>
/// MQTT
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OnDataUpdate(object sender, StudioServiceTypeEventArgs e)
{
var entities = e.Entitis;
foreach(var entity in entities)
{
var key = entity.Key;
var value = entity.Value;
if (agvs.FirstOrDefault(x => x.name.Equals(key)))
{
Debug.Log($"중복된 ID {key}");
continue;
}
var item = CreateAGV(e.Type, key,value);
agvs.Add(item);
}
}
private AGV CreateAGV(string type, string id ,Dictionary<string,string> entity)
{
var agv = Instantiate<AGV>(prf_AGV,transform);
agv.transform.position = Vector3.zero;
agv.name = id;
agv.SetMoveSpeed(AGVMoveSpeed);
agv.SetRotateSpeed(AGVRotateSpeed);
var xPos = entity.FirstOrDefault(x => x.Key.Equals("X", StringComparison.OrdinalIgnoreCase));
var yPos = entity.FirstOrDefault(x => x.Key.Equals("Y", StringComparison.OrdinalIgnoreCase));
float.TryParse(xPos.Value, out var x);
float.TryParse(yPos.Value, out var y);
var pos = new Vector3(x * 0.001f, 0, y * 0.001f);
agv.Init(type,pos);
return agv;
}
/// <summary>
/// API 연결했을때
/// </summary>
private void SetBaseUpdate()
{
var baseDatas = StudioService.instance.apiData;
var agvKey = baseDatas.Keys.FirstOrDefault(x => x.Contains("AGV", StringComparison.OrdinalIgnoreCase));
var agvDatas = baseDatas[agvKey].Entity;
foreach(var data in agvDatas)
{
var id = data.FirstOrDefault(x => x.Key.Equals("ID", StringComparison.OrdinalIgnoreCase));
CreateAGV("AGV", id.Value, data);
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1af5890e725b4a74397a6abcbc5c8b43

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2597203444f235d43a8c02da446c3ff8
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,160 @@
using Studio.VirtualFactory.Info;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.Mathematics;
using UnityEngine;
namespace Studio.Staic.STKC
{
public class StackerCrane : MonoBehaviour, IInfo
{
private Dictionary<string, string> CurrentEntity;
public Dictionary<string, string> Info
{
get
{
return CurrentEntity;
}
}
public Dictionary<string, string> Label
{
get
{
return CurrentEntity;
}
}
public string BANK;
public string BAY;
public string LEVEL;
private float liftSpeed;
private float bodySpeed;
private float bodyProcess;
private float liftProcess;
private float liftStartY;
private float liftEndY;
public Transform lift;
public Vector3 bodyStart;
public Vector3 bodyEnd;
private Action onMotionStart;
private int[] values = new int[3];
private string curType;
public void Init(string type)
{
curType = type;
bodySpeed = 0.3f;
liftSpeed = 0.3f;
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
onMotionStart = StartAnim;
}
public void AddInit(string type)
{
StudioService.instance.AddTypeIdListener(type, transform.name, OnAddOtherUpdateData);
}
private void OnAddOtherUpdateData(object sender, StudioServiceIdEventArgs e)
{
}
private void StartAnim()
{
StopAllCoroutines();
StartCoroutine(MotionStart());
}
IEnumerator MotionStart()
{
while (liftProcess < 1f)
{
Sliding();
Lifiting();
yield return null;
}
}
void Sliding()
{
bodyProcess += Time.deltaTime * bodySpeed;
if (bodyProcess >= 1f)
bodyProcess = 1f;
var pos = math.lerp(bodyStart, bodyEnd, bodyProcess);
transform.localPosition = pos;
}
void Lifiting()
{
liftProcess += Time.deltaTime * liftSpeed;
if (liftProcess >= 1f)
{
liftProcess = 1f;
}
var liftY = math.lerp(liftStartY, liftEndY, liftProcess);
var liftPos = lift.position;
liftPos.y = liftY;
lift.position = liftPos;
}
private void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
CurrentEntity = e.Entity;
BANK = CurrentEntity.FirstOrDefault(x => x.Key.Equals(nameof(BANK), StringComparison.OrdinalIgnoreCase)).Value;
BAY = CurrentEntity.FirstOrDefault(x => x.Key.Equals(nameof(BAY), StringComparison.OrdinalIgnoreCase)).Value;
LEVEL = CurrentEntity.FirstOrDefault(x => x.Key.Equals(nameof(LEVEL), StringComparison.OrdinalIgnoreCase)).Value;
var x = int.Parse(BANK);
var y = int.Parse(LEVEL);
var z = int.Parse(BAY);
if (IsSameValue(x, y, z))
return;
bodyProcess = 0f;
liftProcess = 0f;
bodyStart = transform.localPosition;
bodyEnd = bodyStart;
bodyEnd.z = z;
liftStartY = lift.position.y;
liftEndY = y;
onMotionStart?.Invoke();
}
private bool IsSameValue(int bank, int bay, int level)
{
var sameBank = values[0].Equals(bank);
var sameLevel = values[1].Equals(level);
var sameBay = values[2].Equals(bay);
if (sameBank && sameLevel && sameLevel)
return true;
values[0] = bank;
values[1] = level;
values[2] = bay;
return false;
}
private void OnDestroy()
{
StudioService.instance.RemoveTypeIdListener(curType, transform.name);
onMotionStart -= StartAnim;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0671ba3dd5120d84fa95f82f0b7004ca

View File

@@ -0,0 +1,54 @@
using Studio.VirtualFactory.Info;
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Studio.Staic.STK
{
public class Stocker : MonoBehaviour, IInfo
{
private Dictionary<string, string> CurrentEntity;
public Dictionary<string, string> Info
{
get
{
return CurrentEntity;
}
}
public Dictionary<string, string> Label
{
get
{
return CurrentEntity;
}
}
public void Init(string type)
{
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
}
public void AddInit(string type)
{
StudioService.instance.AddTypeIdListener(type, transform.name, OnAddOtherUpdateData);
}
private void OnAddOtherUpdateData(object sender, StudioServiceIdEventArgs e)
{
foreach(var keyvalue in e.Entity)
{
if (!CurrentEntity.ContainsKey(keyvalue.Key))
CurrentEntity.Add(keyvalue.Key, "");
CurrentEntity[keyvalue.Key] = keyvalue.Value;
}
}
private void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
CurrentEntity = e.Entity;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e66bb97ac5ecbe748b9a207098542b4e

View File

@@ -1,4 +1,4 @@
using UnityEngine; using UnityEngine;
using XRLib.UI; using XRLib.UI;
using TMPro; using TMPro;
using UnityEngine.UI; using UnityEngine.UI;
@@ -49,9 +49,9 @@ namespace Studio
{ {
onTestAPI?.Invoke(); onTestAPI?.Invoke();
// API ¿¬°á // API 연결
Constants.APIDomain = InputField_Domain.text; //ConfigConnected.APIDomain = InputField_Domain.text;
Constants.APIPort = int.Parse(InputField_Port.text); // ConfigConnected.APIPort = int.Parse(InputField_Port.text);
//StudioService.instance.ConnectMQTT(); //StudioService.instance.ConnectMQTT();
await AuthService.Instance.Login("xr", "@dbqlTl1"); await AuthService.Instance.Login("xr", "@dbqlTl1");

View File

@@ -1,4 +1,4 @@
using System.Collections; using System.Collections;
using UnityEngine; using UnityEngine;
using UnityEngine.Events; using UnityEngine.Events;
using UnityEngine.EventSystems; using UnityEngine.EventSystems;

View File

@@ -1,6 +1,6 @@
using UnityEngine; using Studio.Core;
using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using Studio.Core;
using XRLib; using XRLib;
namespace Studio.UI.Modal namespace Studio.UI.Modal

View File

@@ -1,4 +1,4 @@
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs; using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
using Newtonsoft.Json; using Newtonsoft.Json;
using Studio.Setting.Connect; using Studio.Setting.Connect;
using System.Collections.Generic; using System.Collections.Generic;
@@ -29,7 +29,7 @@ namespace Studio.UI
RawDataFoldButton.GetComponent<Button>().onClick.AddListener(OnClickRawDataFoldButton); RawDataFoldButton.GetComponent<Button>().onClick.AddListener(OnClickRawDataFoldButton);
} }
public void ShowData(StudioEntityWithState<object> data) public void ShowData<T>(StudioEntityWithState<T> data)
{ {
RawData.text = JsonConvert.SerializeObject(data.Entity, Formatting.Indented); RawData.text = JsonConvert.SerializeObject(data.Entity, Formatting.Indented);

View File

@@ -1,4 +1,4 @@
using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs; using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
using Studio; using Studio;
using Studio.Setting.Connect; using Studio.Setting.Connect;
using Studio.UI; using Studio.UI;
@@ -114,11 +114,11 @@ namespace Studio
StudioService.instance.onMQTTDataLoaded -= UpdateMQTTDataButton; StudioService.instance.onMQTTDataLoaded -= UpdateMQTTDataButton;
} }
void UpdateAPIDataButton(string name, StudioEntityWithState<object> value) void UpdateAPIDataButton<T>(string name, StudioEntityWithState<T> value)
{ {
if (!apiButtons.ContainsKey(name)) if (!apiButtons.ContainsKey(name))
{ {
// 버튼 새로 생성 // 버튼 새로 생성
var button = Instantiate(apiDataButtonPrefab, APIDataList.transform); var button = Instantiate(apiDataButtonPrefab, APIDataList.transform);
apiButtons.Add(name, button); apiButtons.Add(name, button);
button.panel_Repository = this; button.panel_Repository = this;
@@ -128,8 +128,8 @@ namespace Studio
} }
else else
{ {
// 버튼 데이터 업데이트 // 버튼 데이터 업데이트
apiButtons[name].SetButtonData(name, value); apiButtons[name].SetButtonData<T>(name, value);
} }
} }
@@ -178,7 +178,7 @@ namespace Studio
Panel_MQTTDataInfo.gameObject.SetActive(false); Panel_MQTTDataInfo.gameObject.SetActive(false);
} }
public void ShowInformation_APIData(StudioEntityWithState<object> baseDataValue) public void ShowInformation_APIData<T>(StudioEntityWithState<T> baseDataValue)
{ {
Panel_APIDataInfo.GetComponent<Panel_APIDataInfo>().ShowData(baseDataValue); Panel_APIDataInfo.GetComponent<Panel_APIDataInfo>().ShowData(baseDataValue);

View File

@@ -1,6 +1,6 @@
using UnityEngine; using Studio.Core;
using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using Studio.Core;
using XRLib; using XRLib;
namespace Studio.UI.Popup namespace Studio.UI.Popup

View File

@@ -1,7 +1,7 @@
using System; using Studio.Core;
using System;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
using Studio.Core;
using XRLib; using XRLib;
namespace Studio.UI.Popup namespace Studio.UI.Popup

View File

@@ -1,6 +1,8 @@
using Studio; using Studio;
using Studio.Auth; using Studio.Auth;
using Studio.Conifg; using Studio.Conifg;
using Studio.Dynamic.M;
using Studio.Staic.STKC;
using System.Threading.Tasks; using System.Threading.Tasks;
using UnityEngine; using UnityEngine;
@@ -10,15 +12,27 @@ namespace Studio
{ {
// Start is called once before the first execution of Update after the MonoBehaviour is created // Start is called once before the first execution of Update after the MonoBehaviour is created
private int aa; private int aa;
public StackerCrane testcrane;
void Awake() void Awake()
{ {
Constants.MQTTDomain = "220.90.135.190"; //ConfigConnected.MQTTDomain = "220.90.135.190";
Constants.APIDomain = "220.90.135.190"; //ConfigConnected.APIDomain = "220.90.135.190";
Constants.APIPort = 23000; //ConfigConnected.APIPort = 23000;
Constants.MQTTPort = 8088; //ConfigConnected.MQTTPort = 8088;
StudioService.instance.ConnectMQTT();
} }
public void TestConeect()
{
var mqttsettings = ConfigConnected.MQTTSettings;
foreach(var mqtt in mqttsettings.mqttConnections)
{
StudioService.instance.ConnectMQTT(mqtt.domain,mqtt.port,mqtt.topics);
}
testcrane.Init("STOCKER_CRANE");
AGVManager.instance.Init();
}
private async void Test() private async void Test()
{ {
await AuthService.Instance.Login("xr", "@dbqlTl1"); await AuthService.Instance.Login("xr", "@dbqlTl1");
@@ -34,12 +48,12 @@ namespace Studio
} }
if (Input.GetKeyDown(KeyCode.I)) if (Input.GetKeyDown(KeyCode.I))
{ {
StudioService.instance.SubscribeMQTT("STOCKER_CRANE"); // StudioService.instance.SubscribeMQTT("STOCKER_CRANE");
} }
if(Input.GetKeyDown(KeyCode.U)) if(Input.GetKeyDown(KeyCode.U))
{ {
StudioService.instance.SubscribeMQTT("AGV"); // StudioService.instance.SubscribeMQTT("AGV");
} }
if(Input.GetKeyDown(KeyCode.T)) if(Input.GetKeyDown(KeyCode.T))
{ {

View File

@@ -1,4 +1,4 @@
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using Studio.UI; using Studio.UI;
@@ -31,10 +31,10 @@ namespace Studio
panel_Repository.ShowInformation_APIData(dataValue); panel_Repository.ShowInformation_APIData(dataValue);
} }
public void SetButtonData(string name, StudioEntityWithState<object> data) public void SetButtonData<T>(string name, StudioEntityWithState<T> data)
{ {
baseDataKey = name; baseDataKey = name;
dataValue = data; dataValue = data as StudioEntityWithState<object>;
buttonName.text = name; buttonName.text = name;
} }