merge
This commit is contained in:
File diff suppressed because one or more lines are too long
BIN
Assets/Models/StackerCrane_01.fbx
Normal file
BIN
Assets/Models/StackerCrane_01.fbx
Normal file
Binary file not shown.
107
Assets/Models/StackerCrane_01.fbx.meta
Normal file
107
Assets/Models/StackerCrane_01.fbx.meta
Normal 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:
|
||||||
8
Assets/Prefabs/StackerCrane.meta
Normal file
8
Assets/Prefabs/StackerCrane.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eef66bc97c459c94b96c86701663c244
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
551
Assets/Prefabs/StackerCrane/StackerCrane.prefab
Normal file
551
Assets/Prefabs/StackerCrane/StackerCrane.prefab
Normal 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}
|
||||||
7
Assets/Prefabs/StackerCrane/StackerCrane.prefab.meta
Normal file
7
Assets/Prefabs/StackerCrane/StackerCrane.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 057179c23841fd344ad9ab4e6e66c496
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
238
Assets/Resources/TestAGV.prefab
Normal file
238
Assets/Resources/TestAGV.prefab
Normal 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}
|
||||||
7
Assets/Resources/TestAGV.prefab.meta
Normal file
7
Assets/Resources/TestAGV.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 53db74a6e1101d2438a0c0083c5c232b
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -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}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
29
Assets/Scripts/Studio/Connect/ConfigConnected.cs
Normal file
29
Assets/Scripts/Studio/Connect/ConfigConnected.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Studio/Connect/ConfigConnected.cs.meta
Normal file
2
Assets/Scripts/Studio/Connect/ConfigConnected.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e8082f730ac49974286f2c71561152dd
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: dcc5387e9d1cf9943b3e1d36a9b2bf17
|
|
||||||
@@ -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);
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
18
Assets/Scripts/Studio/Interfaces/IInfo.cs
Normal file
18
Assets/Scripts/Studio/Interfaces/IInfo.cs
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
2
Assets/Scripts/Studio/Interfaces/IInfo.cs.meta
Normal file
2
Assets/Scripts/Studio/Interfaces/IInfo.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0ae6ca4b2f15db14998f98d2baeb01c5
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 파일을 찾을 수 없습니다.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
8
Assets/Scripts/Studio/TwinObject/DynamicObject.meta
Normal file
8
Assets/Scripts/Studio/TwinObject/DynamicObject.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 5a2cf3d76009c0d41babf08313abbd91
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
138
Assets/Scripts/Studio/TwinObject/DynamicObject/AGV.cs
Normal file
138
Assets/Scripts/Studio/TwinObject/DynamicObject/AGV.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 84ad40885a5aaa04e85eb7de0489cc8d
|
||||||
83
Assets/Scripts/Studio/TwinObject/DynamicObject/AGVManager.cs
Normal file
83
Assets/Scripts/Studio/TwinObject/DynamicObject/AGVManager.cs
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1af5890e725b4a74397a6abcbc5c8b43
|
||||||
8
Assets/Scripts/Studio/TwinObject/StaticObject.meta
Normal file
8
Assets/Scripts/Studio/TwinObject/StaticObject.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2597203444f235d43a8c02da446c3ff8
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
160
Assets/Scripts/Studio/TwinObject/StaticObject/StackerCrane.cs
Normal file
160
Assets/Scripts/Studio/TwinObject/StaticObject/StackerCrane.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0671ba3dd5120d84fa95f82f0b7004ca
|
||||||
54
Assets/Scripts/Studio/TwinObject/StaticObject/Stocker.cs
Normal file
54
Assets/Scripts/Studio/TwinObject/StaticObject/Stocker.cs
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e66bb97ac5ecbe748b9a207098542b4e
|
||||||
@@ -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");
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user