시작화면 모달 #70

Merged
UVCXR merged 4 commits from pgd/20250512_1 into main 2025-05-13 14:55:33 +09:00
22 changed files with 7500 additions and 18 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -12,6 +12,23 @@ namespace XED.Manage
canvas_popup.panel_selectlogic.onClickMQTTConnection += canvas_popup.panel_applogiclist.OnSelectLogic;
canvas_popup.panel_selectlogic.onClickCreate3DObject += canvas_popup.panel_applogiclist.OnSelectLogic;
canvas_popup.panel_selectlogic.onClickCreateUI += canvas_popup.panel_applogiclist.OnSelectLogic;
canvas_popup.panel_quickstart.onClickNewProject += canvas_popup.panel_newprojectinfo.Open;
canvas_popup.panel_quickstart.onClickNewProject += canvas_popup.panel_openprojectinfo.Close;
canvas_popup.panel_quickstart.onClickOpenProject += canvas_popup.panel_newprojectinfo.Close;
canvas_popup.panel_quickstart.onClickOpenProject += canvas_popup.panel_openprojectinfo.Open;
canvas_popup.panel_newprojectinfo.onClickCreate += canvas_popup.panel_startimage.Open;
canvas_popup.panel_newprojectinfo.onClickCreate += canvas_popup.panel_applogiclist.Open;
canvas_popup.panel_newprojectinfo.onClickCreate += canvas_popup.panel_inspector.Open;
canvas_popup.panel_newprojectinfo.onClickCreate += canvas_popup.panel_quickstart.Close;
canvas_popup.panel_newprojectinfo.onClickCreate += canvas_popup.panel_newprojectinfo.Close;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_startimage.Open;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_applogiclist.Open;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_inspector.Open;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_quickstart.Close;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_openprojectinfo.Close;
}
}
}

View File

@@ -7,10 +7,15 @@ namespace XED
{
public class StudioCanvas_Popup : CanvasBase
{
public Panel_StartImage panel_startimage;
public Panel_AppLogicList panel_applogiclist;
public Panel_Inspector panel_inspector;
public Panel_SelectLogic panel_selectlogic;
public Panel_AppSetting panel_appsetting;
public Panel_Authentication panel_authentication;
public Panel_QuickStart panel_quickstart;
public Panel_NewProjectInfo panel_newprojectinfo;
public Panel_OpenProjectInfo panel_openprojectinfo;
private void Awake()
{

View File

@@ -0,0 +1,108 @@
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using XRLib.UI;
namespace XED.UI
{
public class ProjectTemplateDropdown : UIBase
{
private GameObject optionItemPrefab;
private RectTransform TemplateDropdown;
private RectTransform Content;
public TMP_InputField InputField_ProjectTemplate;
private List<string> options = new();
private List<GameObject> activeOptionItems = new List<GameObject>();
public enum EType
{
Test1,
Test2,
Test3,
Test4,
Test5,
Test6,
Test7,
}
public override void AfterAwake()
{
optionItemPrefab = Resources.Load<GameObject>("Prefabs/UI/PRF_QuickStartItem");
InputField_ProjectTemplate.onValueChanged.AddListener(FilteringOption);
InputField_ProjectTemplate.onSelect.AddListener(ShowDropdown);
HideDropdown();
}
private void Start()
{
CreateDropdown();
}
private void ShowDropdown(string input)
{
TemplateDropdown.gameObject.SetActive(true);
}
private void HideDropdown()
{
TemplateDropdown.gameObject.SetActive(false);
}
private void CreateDropdown()
{
ClearDropdownItems();
options = Enum.GetNames(typeof(EType)).ToList();
foreach (string option in options)
{
CreateOption(option);
}
}
private void CreateOption(string text)
{
UI_QuickStartItem item = Instantiate(optionItemPrefab, Content).GetComponent<UI_QuickStartItem>();
item.Init(text, () => OnClickOptionItem(text));
activeOptionItems.Add(item.gameObject);
}
private void OnClickOptionItem(string text)
{
InputField_ProjectTemplate.text = text;
HideDropdown();
EventSystem.current.SetSelectedGameObject(null);
}
private void FilteringOption(string input)
{
ClearDropdownItems();
foreach (string option in options)
{
if (option.ToLower().Contains(input.ToLower()))
{
CreateOption(option);
}
}
TemplateDropdown.gameObject.SetActive(true);
}
private void ClearDropdownItems()
{
foreach (GameObject item in activeOptionItems)
{
Destroy(item);
}
activeOptionItems.Clear();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 03b6d3a46836e8b45abda03e9bab7e4f

View File

@@ -0,0 +1,27 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XRLib.UI;
namespace XED.UI
{
public class UI_QuickStartItem : UIBase, IPointerDownHandler
{
public TextMeshProUGUI Text_Name;
public Action onClickButton;
public void Init(string name, Action clickEvent)
{
Text_Name.text = name;
onClickButton = clickEvent;
}
public void OnPointerDown(PointerEventData eventData)
{
onClickButton?.Invoke();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5e3bcb61a0d32304593b60cea80f55e0

View File

@@ -12,6 +12,8 @@ namespace XED.UI
{
public class Panel_AppLogicList : PanelBase
{
StudioCanvas_Popup studioCanvas_popup;
private List<UI_LogicItem> itemList = new();
public GameObject logicItem;
public RectTransform itemRoot;
@@ -22,6 +24,7 @@ namespace XED.UI
public override void AfterAwake()
{
logicItem = Resources.Load<GameObject>("Prefabs/UI/PRF_LogicItem");
studioCanvas_popup = EventConnector.instance.GetCanvas<StudioCanvas_Popup>();
CreateItem();
}
@@ -37,7 +40,7 @@ namespace XED.UI
private void OnClickAdd(UI_LogicItem item)
{
selectItem = item;
EventConnector.instance.GetCanvas<StudioCanvas_Popup>().panel_selectlogic.Open(true);
studioCanvas_popup.panel_selectlogic.Open(true);
}
private void OnClickEdit(ELogic logic)
@@ -51,10 +54,10 @@ namespace XED.UI
switch (logic)
{
case ELogic.AppSetting:
curInspectorPanel = EventConnector.instance.GetCanvas<StudioCanvas_Popup>().panel_appsetting.gameObject;
curInspectorPanel = studioCanvas_popup.panel_appsetting.gameObject;
break;
case ELogic.Authentication:
curInspectorPanel = EventConnector.instance.GetCanvas<StudioCanvas_Popup>().panel_authentication.gameObject;
curInspectorPanel = studioCanvas_popup.panel_authentication.gameObject;
break;
case ELogic.Language:
break;
@@ -96,7 +99,12 @@ namespace XED.UI
{
selectItem.OnSelectLogic(logic);
CreateItem();
EventConnector.instance.GetCanvas<StudioCanvas_Popup>().panel_selectlogic.Open(false);
studioCanvas_popup.panel_selectlogic.Open(false);
}
public void Open()
{
SetActive(true);
}
}
}

View File

@@ -1,3 +1,5 @@
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
@@ -7,11 +9,14 @@ namespace XED.UI
public class Panel_AppSetting : PanelBase
{
private GameObject itemPrefab;
private List<GameObject> items = new();
private RectTransform Info;
public Button Button_Add;
public Button Button_Save;
public Action onRemove;
public override void AfterAwake()
{
itemPrefab = Resources.Load<GameObject>("Prefabs/UI/PRF_AppSettingItem");
@@ -26,16 +31,21 @@ namespace XED.UI
{
GameObject item = Instantiate(itemPrefab, Info);
item.transform.SetSiblingIndex(Info.childCount - 2);
items.Add(item);
}
private void Init()
{
foreach (GameObject item in items)
{
Destroy(item);
}
items.Clear();
}
private void OnClickSave()
{
}
public void Open(bool isOpen)
{
SetActive(isOpen);
}
}
}

View File

@@ -33,10 +33,5 @@ namespace XED.UI
{
}
public void Open(bool isOpen)
{
SetActive(isOpen);
}
}
}

View File

@@ -0,0 +1,13 @@
using UnityEngine;
using XRLib.UI;
namespace XED.UI
{
public class Panel_Inspector : PanelBase
{
public void Open()
{
SetActive(true);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6b563b9e40cde7b40830125d687c2345

View File

@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XRLib.UI;
namespace XED.UI
{
public class Panel_NewProjectInfo : PanelBase
{
public TMP_InputField InputField_ProjectName;
public TMP_InputField InputField_ProjectRoute;
public TMP_InputField InputField_ProjectTemplate;
public Button Button_FileExplorer;
public Button Button_Dropdown;
public Button Button_Create;
public Action onClickFileExplorer;
public Action onClickCreate;
private string defaultPath = "C:\\Users\\";
public override void AfterAwake()
{
Button_FileExplorer.onClick.AddListener(OnClickFileExplorer);
Button_Create.onClick.AddListener(OnClickCreate);
InputField_ProjectRoute.text = defaultPath;
}
private void OnClickFileExplorer()
{
onClickFileExplorer?.Invoke();
}
private void OnClickCreate()
{
onClickCreate?.Invoke();
}
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 706d4d7d5e85d024793ed437d7924e95

View File

@@ -0,0 +1,80 @@
using Ookii.Dialogs;
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace XED.UI
{
public class Panel_OpenProjectInfo : PanelBase
{
private GameObject recentProjectItemPrefab;
public TMP_InputField InputField_ProjectRoute;
public Button Button_FileExplorer;
public Button Button_Server;
public RectTransform Content;
public Action onClickFileExplorer;
public Action onClickServer;
private RectTransform Footer;
public TextMeshProUGUI Text_ProjectName;
public TextMeshProUGUI Text_ProjectMetaInfo;
public Button Button_Open;
public Action onClickOpen;
public override void AfterAwake()
{
recentProjectItemPrefab = Resources.Load<GameObject>("Prefabs/UI/PRF_QuickStartItem");
Button_FileExplorer.onClick.AddListener(OnClickFileExplorer);
Button_Open.onClick.AddListener(OnClickOpen);
// Test
for (int i = 0; i < 3; i++)
{
CreateRecentProjectItem();
}
}
private void OnClickFileExplorer()
{
onClickFileExplorer?.Invoke();
}
private void OnClickServer()
{
onClickServer?.Invoke();
}
private void CreateRecentProjectItem()
{
UI_QuickStartItem item = Instantiate(recentProjectItemPrefab, Content).GetComponent<UI_QuickStartItem>();
item.Init(name, OnClickItem);
}
private void OnClickItem()
{
Footer.gameObject.SetActive(true);
Text_ProjectName.text = "test Name";
Text_ProjectMetaInfo.text = "test MetaInfo";
}
private void OnClickOpen()
{
onClickOpen?.Invoke();
}
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1575215ddcee30041b0a614b4c4e8499

View File

@@ -0,0 +1,47 @@
using Ookii.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using XRLib.UI;
namespace XED.UI
{
public class Panel_QuickStart : PanelBase
{
public Button Button_NewProject;
public Button Button_OpenProject;
public Action onClickNewProject;
public Action onClickOpenProject;
public override void AfterAwake()
{
Button_NewProject.onClick.AddListener(OnClickNewProject);
Button_OpenProject.onClick.AddListener(OnClickOpenProject);
}
private void OnClickNewProject()
{
onClickNewProject?.Invoke();
}
private void OnClickOpenProject()
{
onClickOpenProject?.Invoke();
}
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}

View File

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

View File

@@ -13,5 +13,15 @@ namespace XED.UI
{
}
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}

View File

@@ -0,0 +1,228 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5094190157828326286
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2017888412255470814}
- component: {fileID: 1094340256984082610}
- component: {fileID: 8340526939583729682}
- component: {fileID: 7129880062156813569}
m_Layer: 5
m_Name: PRF_QuickStartItem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2017888412255470814
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5094190157828326286}
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: 7148737724568391289}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 330, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1094340256984082610
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5094190157828326286}
m_CullTransparentMesh: 1
--- !u!114 &8340526939583729682
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5094190157828326286}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7129880062156813569
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5094190157828326286}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5e3bcb61a0d32304593b60cea80f55e0, type: 3}
m_Name:
m_EditorClassIdentifier:
Text_Name: {fileID: 828214274413025774}
--- !u!1 &5177464960243708506
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7148737724568391289}
- component: {fileID: 3350520019705126595}
- component: {fileID: 828214274413025774}
m_Layer: 5
m_Name: Text_Name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7148737724568391289
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5177464960243708506}
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: 2017888412255470814}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: -0.5}
m_SizeDelta: {x: -20, y: -13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3350520019705126595
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5177464960243708506}
m_CullTransparentMesh: 1
--- !u!114 &828214274413025774
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5177464960243708506}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u200B"
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4281479730
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 22
m_fontSizeBase: 22
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 3
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 1
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

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

View File

@@ -54,8 +54,8 @@ namespace XED.AssetLibraryTree
item.onLoadProgress.AddListener(OnLoadProgress);
loadProgress.gameObject.SetActive(false);
CustomAssetData data = fbxFileManager.GetCustomAssetData(item.name);
thumbnail.gameObject.SetActive(data != null);
thumbnail.gameObject.SetActive(item.type != AssetLibraryItemType.folder);
thumbnail.texture = data != null ? data.thumbnail : null;
//if (texture != null) thumbnail.texture = texture;