에셋불러오기 후 agv 자동생성. #95

Merged
UVCXR merged 2 commits from njh/250526_00 into main 2025-05-26 10:10:21 +09:00
8 changed files with 5579 additions and 15 deletions

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,107 @@
fileFormatVersion: 2
guid: c9dceccac23106a4ba09d4cd1ff0646b
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

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Events;
@@ -40,7 +40,6 @@ namespace Studio.AssetTool
sharedMaterial = new SharedMaterial();
messagePacker = new MessagePackFileManager<SaveData>();
messagePacker.Initialize();
identifier = string.IsNullOrEmpty(identifier) ? "defaultAssetData" : identifier;
fbxAnchor = new GameObject("LocalAssetDataAnchor").transform;
}

View File

@@ -25,5 +25,15 @@ namespace Studio.Conifg
return result;
}
}
public static Dictionary<string,CustomAssetData> AssetSettings
{
get
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
var result = canvas_Popup.panel_3dfactorysetting.GetAssetDatas();
return result;
}
}
}
}

View File

@@ -4,22 +4,28 @@ using System.Linq;
using UnityEngine;
using Studio.Dynamic.TwinObject;
using Studio.Core;
using Studio.Conifg;
namespace Studio.Dynamic.M
{
public class AGVManager : UnitySingleton<AGVManager>
{
private AGV prf_AGV;
public HashSet<AGV> agvs = new();
private GameObject prf_AGV;
private HashSet<AGV> agvs = new();
public float AGVMoveSpeed;
public float AGVRotateSpeed;
public Queue<Dictionary<string, Dictionary<string, string>>> createAgvs = new();
public void Init()
public void Init(string type)
{
prf_AGV = Resources.Load<AGV>("TestAGV");
StudioService.instance.AddTypeListener("AGV", OnDataUpdate);
StudioService.instance.AddTypeIdListener("AGV");
var assets = ConfigConnected.AssetSettings;
prf_AGV = assets[type].loadedObject;
if (prf_AGV == null)
{
//todo::팝업메시지 나주엥 설정....
return;
}
StudioService.instance.AddTypeListener(type, OnDataUpdate);
StudioService.instance.AddTypeIdListener(type);
}
/// <summary>
/// MQTT
@@ -45,7 +51,8 @@ namespace Studio.Dynamic.M
private AGV CreateAGV(string type, string id ,Dictionary<string,string> entity)
{
var agv = Instantiate<AGV>(prf_AGV,transform);
var agv = Instantiate<GameObject>(prf_AGV,transform).AddComponent<AGV>();
agv.gameObject.SetActive(true);
agv.transform.position = Vector3.zero;
agv.name = id;
agv.SetMoveSpeed(AGVMoveSpeed);

View File

@@ -1,4 +1,4 @@
using UnityEngine;
using UnityEngine;
using XRLib.UI;
using UnityEngine.UI;
using TMPro;
@@ -114,6 +114,18 @@ namespace Studio
}
return dynamic3DModelSetting;
}
public Dictionary<string,CustomAssetData> GetAssetDatas()
{
var datas = new Dictionary<string, CustomAssetData>();
foreach (var modelData in dynamicObjectItems)
{
var splitdata = modelData.GetDynamic3DModelConnection().dataName.Split('/');
var topic = splitdata[splitdata.Length - 1];
datas.Add(topic, modelData.selectedModel);
}
return datas;
}
public void SetDynamic3DModelSetting(Dynamic3DModelSetting saveModelDatas)
{
foreach(var item in dynamicObjectItems)

View File

@@ -29,9 +29,8 @@ namespace Studio
{
StudioService.instance.ConnectMQTT(mqtt.domain,mqtt.port,mqtt.topics);
}
testcrane.Init("STOCKER_CRANE");
AGVManager.instance.Init();
//testcrane.Init("STOCKER_CRANE");
//AGVManager.instance.Init("AGV");
}
private async void Test()
{