Camera, Gizmo, Project Command 추가 #50
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
8
Assets/Scripts/Studio/Command/FileCommand.meta
Normal file
8
Assets/Scripts/Studio/Command/FileCommand.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0344068c97e98f2499c3ef328e804d1c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 34c7091e151c4654f80f16448c43f36d
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 243104ea078b0364e811f6803ef3b3b2
|
||||
Reference in New Issue
Block a user