Camera, Gizmo, Project Command 추가 #50

Merged
UVCXR merged 3 commits from pgd/20250417 into main 2025-04-21 16:35:45 +09:00
6 changed files with 172 additions and 65 deletions
Showing only changes of commit cef08df8e0 - Show all commits

View File

@@ -10,6 +10,8 @@ using System;
using System.Linq;
using XED.Repositories;
using XED.Asset;
using Ookii.Dialogs;
using XED.Command;
namespace XED.Manage
{
@@ -94,7 +96,10 @@ namespace XED.Manage
isLoadTaskComplete = true;
return;
}
// var command = new ActivateMoveGizmoCommand(rtgController);
//CommandInvoker.instance.Invoke(command);
CoroutineRunner.instance.StartCoroutine(CoroutineLoadFromLocalData(filePath));
}
@@ -128,7 +133,6 @@ namespace XED.Manage
IEnumerator CoroutineLoadFromLocalData(string filePath)
{
isLoadTaskComplete = false;
float loadTime = 0;
Task<SaveData> task = Task<SaveData>.Run(() => messagePacker.LoadAsync(filePath));
yield return new WaitUntil(() => task.IsCompleted);
@@ -140,72 +144,19 @@ namespace XED.Manage
isLoadTaskComplete = true;
yield break;
}
saveData = task.Result;
// float loadTime = 0f;
var command = new LoadLocalTextureDataCommand(sharedMaterial, saveData.textureDatas);
CommandInvoker.instance.Invoke(command);
var command2 = new LoadLocalModelDataCommand(saveData, dataRepo, fbxAnchor, sharedMaterial);
CommandInvoker.instance.Invoke(command2);
for (int i = 0; i < saveData.textureDatas.Length; i++)
{
TextureData texData = saveData.textureDatas[i];
sharedMaterial.AddTextureData(texData);
loadTime += Time.deltaTime;
if (loadTime > 1.0f / 30.0f)
{
loadTime = 0;
yield return null;
}
}
for (int i = 0; i < saveData.modelDatas.Length; i++)
{
if (!LoadSaveData(saveData, i))
{
continue;
}
loadTime += Time.deltaTime;
if (loadTime > 1.0f / 30.0f)
{
loadTime = 0;
yield return null;
}
}
isLoadTaskComplete = true;
yield return null;
}
bool LoadSaveData(SaveData saveData, int index)
{
var modelData = saveData.modelDatas[index];
string assetName = modelData.attributes.FirstOrDefault(x => x[0].Equals("assetName"))?[1];
if (dataRepo.TryGetDataFromName(assetName, out var p))
return false;
string folderName = modelData.attributes.FirstOrDefault(x => x[0].Equals("folderName"))?[1];
string createDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("createDate"))?[1];
string lastRevisionDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("lastRevisionDate"))?[1];
string uploadDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("uploadDate"))?[1];
string creator = modelData.attributes.FirstOrDefault(x => x[0].Equals("creator"))?[1];
string manager = modelData.attributes.FirstOrDefault(x => x[0].Equals("manager"))?[1];
Texture2D thumbnail = new Texture2D(1, 1);
thumbnail.LoadImage(saveData.thumbnailDatas[index].data);
GameObject newObject = new GameObject(assetName);
newObject.transform.parent = fbxAnchor;
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
assetData.assetName = assetName;
assetData.folderName = folderName;
assetData.createDate = createDate;
assetData.LastRevisionDate = lastRevisionDate;
assetData.UploadDate = uploadDate;
assetData.Creator = creator;
assetData.Manager = manager;
assetData.loadedObject = modelData.LoadModelData(sharedMaterial);
assetData.thumbnail = thumbnail;
assetData.OnLoadComplete();
dataRepo.Add(assetData);
//listAssets.Add(assetData);
ManagerHub.instance.Get<CustomAssetConnector>().assetDataHandler.OnLoadFbxFile(assetData.assetName, assetData.folderName, assetData);
return true;
}
}
}

View File

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

View File

@@ -0,0 +1,94 @@
using System.Collections;
using System.Linq;
using UnityEngine;
using XED.Asset;
using XED.Manage;
using XED.Repositories;
using XED.Util;
namespace XED.Command
{
public class LoadLocalModelDataCommand : IIrreversibleCommand
{
private SaveData saveData;
private CustomAssetDataRepository dataRepo;
private Transform fbxAnchor;
private SharedMaterial sharedMaterial;
float loadTime = 0f;
public LoadLocalModelDataCommand(SaveData saveData, CustomAssetDataRepository dataRepo, Transform fbxAnchor, SharedMaterial sharedMaterial)
{
this.saveData = saveData;
this.dataRepo = dataRepo;
this.fbxAnchor = fbxAnchor;
this.sharedMaterial = sharedMaterial;
}
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
public bool CanExecute()
{
throw new System.NotImplementedException();
}
public void Execute()
{
for (int i = 0; i < saveData.modelDatas.Length; i++)
{
CoroutineRunner.instance.StartCoroutine(LoadModelData(i));
}
}
IEnumerator LoadModelData(int index)
{
if (!LoadSaveData(saveData, index))
yield break;
loadTime += Time.deltaTime;
if (loadTime > 1f / 30f)
{
loadTime = 0f;
yield return null;
}
}
bool LoadSaveData(SaveData saveData, int index)
{
var modelData = saveData.modelDatas[index];
string assetName = modelData.attributes.FirstOrDefault(x => x[0].Equals("assetName"))?[1];
if (dataRepo.TryGetDataFromName(assetName, out var p))
return false;
string folderName = modelData.attributes.FirstOrDefault(x => x[0].Equals("folderName"))?[1];
string createDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("createDate"))?[1];
string lastRevisionDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("lastRevisionDate"))?[1];
string uploadDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("uploadDate"))?[1];
string creator = modelData.attributes.FirstOrDefault(x => x[0].Equals("creator"))?[1];
string manager = modelData.attributes.FirstOrDefault(x => x[0].Equals("manager"))?[1];
Texture2D thumbnail = new Texture2D(1, 1);
thumbnail.LoadImage(saveData.thumbnailDatas[index].data);
GameObject newObject = new GameObject(assetName);
newObject.transform.parent = fbxAnchor;
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
assetData.assetName = assetName;
assetData.folderName = folderName;
assetData.createDate = createDate;
assetData.LastRevisionDate = lastRevisionDate;
assetData.UploadDate = uploadDate;
assetData.Creator = creator;
assetData.Manager = manager;
assetData.loadedObject = modelData.LoadModelData(sharedMaterial);
assetData.thumbnail = thumbnail;
assetData.OnLoadComplete();
dataRepo.Add(assetData);
//listAssets.Add(assetData);
ManagerHub.instance.Get<CustomAssetConnector>().assetDataHandler.OnLoadFbxFile(assetData.assetName, assetData.folderName, assetData);
return true;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 34c7091e151c4654f80f16448c43f36d

View File

@@ -0,0 +1,50 @@
using System.Collections;
using UnityEngine;
using XED.Manage;
namespace XED.Command
{
public class LoadLocalTextureDataCommand : IIrreversibleCommand
{
private SharedMaterial sharedMaterial;
private TextureData[] textureData;
float loadTime = 0f;
public LoadLocalTextureDataCommand(SharedMaterial sharedMaterial, TextureData[] textureData)
{
this.sharedMaterial = sharedMaterial;
this.textureData = textureData;
}
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
public bool CanExecute()
{
throw new System.NotImplementedException();
}
public void Execute()
{
foreach (var tex in textureData)
{
CoroutineRunner.instance.StartCoroutine(LoadTextureData(tex));
}
}
IEnumerator LoadTextureData(TextureData texData)
{
sharedMaterial.AddTextureData(texData);
loadTime += Time.deltaTime;
if (loadTime > 1f / 30f)
{
loadTime = 0f;
yield return null;
}
// yield return null;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 243104ea078b0364e811f6803ef3b3b2