diff --git a/Assets/Resources/SHI/Images/bg_task_cell_18x18.png b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png
new file mode 100644
index 00000000..e42f577c
Binary files /dev/null and b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png differ
diff --git a/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta
new file mode 100644
index 00000000..e6faa190
--- /dev/null
+++ b/Assets/Resources/SHI/Images/bg_task_cell_18x18.png.meta
@@ -0,0 +1,143 @@
+fileFormatVersion: 2
+guid: 493746fbc3e7b294b863c3c3815af746
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 0
+ wrapV: 0
+ wrapW: 0
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 32
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WebGL
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: WindowsStoreApps
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID: 5e97eb03825dee720800000000000000
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable: {}
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss
index d9164518..c790120e 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uss
@@ -1,3 +1,38 @@
+/*
+ * ISOPChart.uss - ISOP 간트 차트 스타일시트
+ *
+ * [개요]
+ * 간트 차트(Gantt Chart)의 스타일을 정의합니다.
+ * 작업 행, 타임라인 셀, 호버 효과 등의 스타일을 포함합니다.
+ *
+ * [스타일 구조]
+ * 1. :root - 루트 요소 기본 설정
+ * 2. #gantt-container - 간트 차트 전체 컨테이너
+ * 3. .task-row - 작업 행 스타일 (호버 효과 포함)
+ * 4. .task-txt - 작업 레벨(L1~L8) 셀 스타일
+ *
+ * [색상 팔레트]
+ * - 배경: rgb(250, 250, 250) - 밝은 회색
+ * - 작업 행: rgb(136, 190, 230) - 하늘색 (테두리)
+ * - 레벨 셀: rgb(228, 236, 255) - 연한 파랑 (배경)
+ * - 호버: rgb(228, 236, 255) - 연한 파랑
+ * - 텍스트: rgb(34, 34, 34) - 진한 회색
+ *
+ * [레이아웃]
+ * - 작업 행 높이: 49px (40px 컨텐츠 + 테두리)
+ * - 레벨 셀 너비: 40px (L1~L8 각각)
+ * - 일 셀 너비: 18px (pixelsPerDay와 일치)
+ *
+ * [연관 파일]
+ * - ISOPChart.uxml : 메인 레이아웃
+ * - ISOPChartRow.uxml : 작업 행 템플릿
+ * - ISOPChart.cs : C# 컨트롤러
+ */
+
+/* ===================================
+ 루트 요소 기본 설정
+ Flexbox 레이아웃 초기화
+ =================================== */
:root {
flex-grow: 1;
flex-shrink: 1;
@@ -6,20 +41,28 @@
overflow: hidden;
}
+/* ===================================
+ 간트 차트 메인 컨테이너
+ 세로 방향 Flexbox 레이아웃
+ =================================== */
#gantt-container {
flex-grow: 1;
flex-shrink: 1;
flex-direction: column;
- background-color: rgb(250, 250, 250);
+ background-color: rgb(250, 250, 250); /* 밝은 회색 배경 */
min-width: 0;
overflow: hidden;
}
+/* ===================================
+ 작업 행 스타일
+ 각 작업(Task)을 표시하는 행
+ =================================== */
.task-row {
flex-direction: row;
height: 49px;
width: 390px;
- background-color: rgb(136, 190, 230);
+ background-color: rgb(136, 190, 230); /* 하늘색 (테두리용) */
border-top-style: solid;
border-bottom-style: solid;
border-left-style: solid;
@@ -34,27 +77,33 @@
box-sizing: border-box;
-unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular');
font-size: 10px;
- color: rgb(34, 34, 34);
+ color: rgb(34, 34, 34); /* 진한 회색 텍스트 */
}
+/* 첫 번째 행: 상단 테두리 추가 */
.task-row:first-child {
border-top-width: 1px;
border-top-color: rgb(136, 190, 230);
}
+/* 호버 상태: 연한 파란색 배경 */
.task-row:hover {
background-color: rgb(228, 236, 255);
}
+/* ===================================
+ 작업 레벨 셀 스타일
+ L1~L8 각 레벨의 텍스트 셀
+ =================================== */
.task-txt {
- width: 40px;
+ width: 40px; /* 고정 너비 40px */
height: 40px;
flex-grow: 0;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
- -unity-text-align: middle-center;
+ -unity-text-align: middle-center; /* 텍스트 중앙 정렬 */
font-size: 10px;
color: rgb(34, 34, 34);
border-left-width: 0;
@@ -63,7 +112,7 @@
box-sizing: border-box;
-unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular');
border-top-width: 0;
- border-right-width: 1px;
+ border-right-width: 1px; /* 오른쪽 구분선 */
border-bottom-width: 0;
margin-top: 0;
margin-right: 0;
@@ -74,9 +123,10 @@
padding-bottom: 0;
padding-left: 0;
flex-direction: row;
- border-right-color: rgb(255, 255, 255);
+ border-right-color: rgb(255, 255, 255); /* 흰색 구분선 */
}
+/* 첫 번째 레벨 셀: 왼쪽 테두리 없음 */
.task-txt:first-child {
border-left-width: 0;
}
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml
index 438466ba..81026426 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPChart.uxml
@@ -1,21 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPChartRow.uxml b/Assets/Resources/SHI/Modal/ISOP/ISOPChartRow.uxml
index 4b97380c..2594b169 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPChartRow.uxml
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPChartRow.uxml
@@ -1,9 +1,52 @@
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uss b/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uss
index 0868c04a..6b12434c 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uss
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uss
@@ -1,29 +1,68 @@
+/*
+ * ISOPModal.uss - ISOP 모달 전역 스타일시트
+ *
+ * [개요]
+ * ISOP 모달 창 전체에 적용되는 스타일을 정의합니다.
+ * 주로 스크롤바 커스터마이징과 기본 텍스트 스타일을 포함합니다.
+ *
+ * [스타일 구조]
+ * 1. .unity-text-element : 기본 텍스트 스타일 (Pretendard 폰트, 10px)
+ * 2. .unity-scroller--vertical : 세로 스크롤바 커스터마이징
+ * 3. .unity-scroller--horizontal : 가로 스크롤바 커스터마이징
+ *
+ * [스크롤바 디자인]
+ * - 너비/높이: 6px (슬림한 디자인)
+ * - 트랙: 흰색 배경 (#FFFFFF)
+ * - 드래거: 밝은 회색 (#D8D8D8), 둥근 모서리 (3px)
+ * - 화살표 버튼: 숨김 처리
+ *
+ * [폰트 설정]
+ * - 기본 폰트: Pretendard-Regular
+ * - 기본 색상: rgb(34, 34, 34) - 진한 회색
+ * - 기본 크기: 10px
+ *
+ * [연관 파일]
+ * - ISOPModal.uxml : 메인 레이아웃
+ * - ISOPChart.uss : 간트 차트 스타일
+ * - ISOPModelView.uss : 모델 뷰 스타일
+ */
+
+/* ===================================
+ 기본 텍스트 스타일
+ 모달 내 모든 텍스트 요소에 적용
+ =================================== */
.unity-text-element {
-unity-font: url('project://database/Assets/Fonts/Pretendard-Regular.otf');
-unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular');
- color: rgb(34, 34, 34);
+ color: rgb(34, 34, 34); /* 진한 회색 텍스트 */
font-size: 10px;
}
-/* 세로 스크롤바 */
+/* ===================================
+ 세로 스크롤바 스타일
+ 슬림한 6px 너비의 커스텀 스크롤바
+ =================================== */
.unity-scroller--vertical {
- width: 6px;
+ width: 6px; /* 슬림한 너비 */
margin-right: 4px;
margin-bottom: 0px;
}
+/* 세로 스크롤바 트랙 (배경) */
.unity-scroller--vertical .unity-base-slider__tracker {
- background-color: rgb(255, 255, 255);
+ background-color: rgb(255, 255, 255); /* 흰색 배경 */
border-width: 0;
}
+/* 세로 스크롤바 드래거 (핸들) */
.unity-scroller--vertical .unity-base-slider__dragger {
- background-color: rgb(216, 216, 216);
+ background-color: rgb(216, 216, 216); /* 밝은 회색 */
border-width: 0;
- border-radius: 3px;
+ border-radius: 3px; /* 둥근 모서리 */
width: 6px;
}
+/* 세로 스크롤바 화살표 버튼 숨김 */
.unity-scroller--vertical .unity-repeat-button {
display: none;
width: 0;
@@ -32,29 +71,36 @@
min-height: 0;
}
+/* 세로 스크롤바 슬라이더 마진 제거 */
.unity-scroller--vertical .unity-slider {
margin: 0;
}
-/* 가로 스크롤바 */
+/* ===================================
+ 가로 스크롤바 스타일
+ 슬림한 6px 높이의 커스텀 스크롤바
+ =================================== */
.unity-scroller--horizontal {
- height: 6px;
+ height: 6px; /* 슬림한 높이 */
margin-bottom: 4px;
margin-right: 0px;
}
+/* 가로 스크롤바 트랙 (배경) */
.unity-scroller--horizontal .unity-base-slider__tracker {
- background-color: rgb(255, 255, 255);
+ background-color: rgb(255, 255, 255); /* 흰색 배경 */
border-width: 0;
}
+/* 가로 스크롤바 드래거 (핸들) */
.unity-scroller--horizontal .unity-base-slider__dragger {
- background-color: rgb(216, 216, 216);
+ background-color: rgb(216, 216, 216); /* 밝은 회색 */
border-width: 0;
- border-radius: 3px;
+ border-radius: 3px; /* 둥근 모서리 */
height: 6px;
}
+/* 가로 스크롤바 화살표 버튼 숨김 */
.unity-scroller--horizontal .unity-repeat-button {
display: none;
width: 0;
@@ -63,6 +109,7 @@
min-height: 0;
}
+/* 가로 스크롤바 슬라이더 마진 제거 */
.unity-scroller--horizontal .unity-slider {
margin: 0;
}
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uxml b/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uxml
index e1db1615..01437808 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uxml
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPModal.uxml
@@ -1,14 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uss b/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uss
index 7690deba..52133eed 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uss
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uss
@@ -1,7 +1,36 @@
+/*
+ * ISOPModelView.uss - 3D 모델 뷰어 스타일시트
+ *
+ * [개요]
+ * ISOPModelView 컴포넌트의 루트 요소 스타일을 정의합니다.
+ * 주로 Flexbox 레이아웃 설정을 포함합니다.
+ *
+ * [스타일 구조]
+ * - :root - 루트 요소 Flexbox 설정
+ *
+ * [레이아웃]
+ * - flex-grow: 1, flex-shrink: 1, flex-basis: 0
+ * → ISOPModal에서 ISOPChart와 동일한 비율로 공간 분할
+ * - min-width: 0 → Flexbox에서 컨텐츠 오버플로우 방지
+ * - overflow: hidden → 자식 요소 잘림 처리
+ *
+ * [참고]
+ * 3D 렌더링은 C#에서 RenderTexture를 통해 처리되므로
+ * 이 스타일시트는 레이아웃 설정만 담당합니다.
+ *
+ * [연관 파일]
+ * - ISOPModelView.uxml : UI 레이아웃
+ * - ISOPModelView.cs : C# 컨트롤러 (렌더링 처리)
+ */
+
+/* ===================================
+ 루트 요소 기본 설정
+ ISOPChart와 동일한 비율로 공간 분할
+ =================================== */
:root {
- flex-grow: 1;
- flex-shrink: 1;
- flex-basis: 0;
- min-width: 0;
- overflow: hidden;
-}
\ No newline at end of file
+ flex-grow: 1; /* 남은 공간 채우기 */
+ flex-shrink: 1; /* 공간 부족 시 축소 허용 */
+ flex-basis: 0; /* 초기 크기 0 (grow로 분배) */
+ min-width: 0; /* Flexbox 오버플로우 방지 */
+ overflow: hidden; /* 자식 요소 잘림 처리 */
+}
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uxml b/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uxml
index a1275a85..788d90f0 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uxml
+++ b/Assets/Resources/SHI/Modal/ISOP/ISOPModelView.uxml
@@ -1,5 +1,43 @@
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModalSetting.asset b/Assets/Resources/SHI/Modal/ModalSetting.asset
similarity index 98%
rename from Assets/Resources/SHI/Modal/ISOP/ISOPModalSetting.asset
rename to Assets/Resources/SHI/Modal/ModalSetting.asset
index a59de87a..75697c00 100644
--- a/Assets/Resources/SHI/Modal/ISOP/ISOPModalSetting.asset
+++ b/Assets/Resources/SHI/Modal/ModalSetting.asset
@@ -10,7 +10,7 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 19101, guid: 0000000000000000e000000000000000, type: 0}
- m_Name: ISOPModalSetting
+ m_Name: ModalSetting
m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.PanelSettings
themeUss: {fileID: -4733365628477956816, guid: 7f6362c1cd0b3074ab0f0f88dd27536b, type: 3}
m_DisableNoThemeWarning: 0
diff --git a/Assets/Resources/SHI/Modal/ISOP/ISOPModalSetting.asset.meta b/Assets/Resources/SHI/Modal/ModalSetting.asset.meta
similarity index 100%
rename from Assets/Resources/SHI/Modal/ISOP/ISOPModalSetting.asset.meta
rename to Assets/Resources/SHI/Modal/ModalSetting.asset.meta
diff --git a/Assets/Resources/SHI/Modal/NW.meta b/Assets/Resources/SHI/Modal/NW.meta
new file mode 100644
index 00000000..b7976e87
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a0883edd2b7ff3b439985de5d8021231
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/SHI/Modal/NW/NWChart.uss b/Assets/Resources/SHI/Modal/NW/NWChart.uss
new file mode 100644
index 00000000..eb8b4c4e
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWChart.uss
@@ -0,0 +1,246 @@
+/*
+ * NWChart.uss - NW 네트워크 다이어그램 스타일시트
+ *
+ * [개요]
+ * 네트워크 다이어그램(Network Diagram)의 스타일을 정의합니다.
+ * 노드, 연결선, 타임라인 헤더 등의 스타일을 포함합니다.
+ *
+ * [스타일 구조]
+ * 1. 레이아웃 기본 설정
+ * - :root, .nw-container, .header-container, .header, .header-timeline
+ * 2. 네트워크 캔버스
+ * - .network-canvas, .grid-layer, .lines-layer, .nodes-layer
+ * 3. 노드 스타일
+ * - .nw-node (기본), .nw-node-end (종료), .nw-node-critical (크리티컬)
+ * - .nw-node-completed (완료), .nw-node-dragging (드래그 중)
+ * 4. 연결선 스타일
+ * - .connection-line, .connection-arrow
+ * 5. 버튼 스타일
+ * - .expand-btn
+ *
+ * [색상 팔레트]
+ * - 배경: rgb(245, 245, 245) - 밝은 회색
+ * - 기본 노드: rgb(51, 153, 230) - 파란색
+ * - 종료 노드: rgb(230, 204, 51) - 노란색
+ * - 크리티컬 노드: rgb(230, 80, 80) - 빨간색
+ * - 완료 노드: rgb(80, 180, 80) - 초록색
+ * - 연결선: rgb(80, 80, 80) - 진한 회색
+ *
+ * [노드 상태]
+ * - 기본: 파란색 배경, 호버 시 밝아짐
+ * - 드래그 중: 1.1배 확대, 흰색 테두리, cursor: move
+ * - 종료/크리티컬/완료: 각각 다른 색상
+ *
+ * [연관 파일]
+ * - NWChart.uxml : UI 레이아웃
+ * - NWChart.cs : C# 컨트롤러 (노드 생성, 연결선 렌더링)
+ */
+
+/* ===================================
+ 루트 요소 기본 설정
+ Flexbox 레이아웃 초기화
+ =================================== */
+:root {
+ flex-grow: 1;
+ flex-shrink: 1;
+ flex-basis: 0;
+ min-width: 0;
+ overflow: hidden;
+}
+
+/* ===================================
+ 네트워크 다이어그램 메인 컨테이너
+ 세로 방향 Flexbox 레이아웃
+ =================================== */
+.nw-container {
+ flex-grow: 1;
+ flex-shrink: 1;
+ flex-direction: column;
+ background-color: rgb(245, 245, 245); /* 밝은 회색 배경 */
+ min-width: 0;
+ overflow: hidden;
+ height: 100%;
+}
+
+/* ===================================
+ 헤더 영역 스타일
+ 타임라인 헤더를 담는 컨테이너
+ =================================== */
+.header-container {
+ flex-grow: 0;
+ height: 56px; /* 2단 헤더 높이 (36 + 18 + 2px 테두리) */
+ min-height: 56px;
+ flex-shrink: 0;
+ overflow: hidden;
+}
+
+.header {
+ flex-grow: 0;
+ height: 56px;
+ flex-direction: row;
+ min-height: 56px;
+ flex-shrink: 0;
+ position: relative;
+}
+
+.header-timeline {
+ flex-grow: 0;
+ flex-shrink: 0;
+ background-color: rgb(240, 240, 240); /* 밝은 회색 배경 */
+ height: 56px;
+ border-bottom-width: 1px;
+ border-bottom-color: rgb(141, 141, 141);
+}
+
+/* 타임라인 행 (월, 일) */
+.timeline-row {
+ flex-grow: 0;
+ height: 18px; /* 기본 높이 (일 레이어) */
+ flex-shrink: 0;
+ flex-direction: row;
+ border-bottom-width: 1px;
+ border-bottom-color: rgb(255, 255, 255);
+}
+
+/* ===================================
+ 스크롤 영역 스타일
+ =================================== */
+.content-scroll {
+ flex-grow: 1;
+}
+
+/* ===================================
+ 네트워크 캔버스 스타일
+ 노드와 연결선이 그려지는 영역
+ =================================== */
+.network-canvas {
+ flex-grow: 0;
+ flex-shrink: 0;
+ position: relative; /* 자식 요소의 절대 위치 기준 */
+ background-image: resource('SHI/Images/bg_task_cell_18x18'); /* 그리드 배경 */
+ background-repeat: repeat repeat;
+ background-size: 18px 18px; /* 일 단위 그리드 */
+}
+
+/* 그리드 레이어 (가장 아래) */
+.grid-layer {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+/* 연결선 레이어 (중간) */
+.lines-layer {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+/* 노드 레이어 (최상단) */
+.nodes-layer {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+/* ===================================
+ 확장 버튼 스타일
+ 전체 화면으로 확장하는 버튼
+ =================================== */
+.expand-btn {
+ position: absolute;
+ top: 20px;
+ left: 10px;
+ width: 36px;
+ height: 36px;
+ margin: 0;
+ padding: 0;
+ border-width: 0;
+ background-color: rgba(255, 255, 255, 0); /* 투명 배경 */
+ background-image: resource('SHI/Images/btn_expand_36');
+}
+
+/* ===================================
+ 노드 스타일
+ 네트워크 다이어그램의 작업 노드
+ =================================== */
+.nw-node {
+ background-color: rgb(51, 153, 230); /* 파란색 (기본) */
+ border-radius: 4px; /* 둥근 모서리 */
+ border-width: 1px;
+ border-color: rgba(51, 51, 51, 0.5); /* 반투명 회색 테두리 */
+ justify-content: center;
+ align-items: center;
+ cursor: link; /* 클릭 가능 커서 */
+ transition-duration: 0.15s; /* 호버 애니메이션 */
+}
+
+/* 노드 호버 상태 */
+.nw-node:hover {
+ background-color: rgb(71, 173, 250); /* 밝은 파란색 */
+}
+
+/* 노드 드래그 중 상태 */
+.nw-node-dragging {
+ scale: 1.1; /* 10% 확대 */
+ border-width: 2px;
+ border-color: rgb(255, 255, 255); /* 흰색 테두리 */
+ cursor: move; /* 이동 커서 */
+}
+
+/* 노드 라벨 스타일 */
+.nw-node-label {
+ -unity-text-align: middle-center;
+ font-size: 9px;
+ color: rgb(255, 255, 255); /* 흰색 텍스트 */
+ -unity-font-style: bold;
+ margin: 0;
+ padding: 2px;
+ overflow: hidden;
+ text-overflow: ellipsis; /* 긴 텍스트 말줄임 */
+ white-space: nowrap;
+ -unity-font-definition: resource('Fonts/Pretendard/Pretendard-Bold');
+}
+
+/* ===================================
+ 연결선 스타일
+ 노드 간 의존성을 표시하는 선
+ =================================== */
+.connection-line {
+ background-color: rgb(80, 80, 80); /* 진한 회색 */
+}
+
+.connection-arrow {
+ background-color: transparent; /* 화살표 머리 (투명) */
+}
+
+/* ===================================
+ 노드 상태별 색상
+ =================================== */
+
+/* 종료 노드 (노란색) */
+.nw-node-end {
+ background-color: rgb(230, 204, 51);
+}
+
+.nw-node-end:hover {
+ background-color: rgb(250, 224, 71);
+}
+
+/* 크리티컬 노드 (빨간색) - 일정이 촉박한 작업 */
+.nw-node-critical {
+ background-color: rgb(230, 80, 80);
+}
+
+.nw-node-critical:hover {
+ background-color: rgb(250, 100, 100);
+}
+
+/* 완료 노드 (초록색) */
+.nw-node-completed {
+ background-color: rgb(80, 180, 80);
+}
+
+.nw-node-completed:hover {
+ background-color: rgb(100, 200, 100);
+}
diff --git a/Assets/Resources/SHI/Modal/NW/NWChart.uss.meta b/Assets/Resources/SHI/Modal/NW/NWChart.uss.meta
new file mode 100644
index 00000000..be039761
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWChart.uss.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cd76aa40483871140a3bc357d1a40c1a
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
+ disableValidation: 0
diff --git a/Assets/Resources/SHI/Modal/NW/NWChart.uxml b/Assets/Resources/SHI/Modal/NW/NWChart.uxml
new file mode 100644
index 00000000..92565a54
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWChart.uxml
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/NW/NWChart.uxml.meta b/Assets/Resources/SHI/Modal/NW/NWChart.uxml.meta
new file mode 100644
index 00000000..f961ea32
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWChart.uxml.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 548c90f1544b68c46b8a3a35bdb49a3f
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Assets/Resources/SHI/Modal/NW/NWModal.uss b/Assets/Resources/SHI/Modal/NW/NWModal.uss
new file mode 100644
index 00000000..81360e9c
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModal.uss
@@ -0,0 +1,116 @@
+/*
+ * NWModal.uss - NW 모달 전역 스타일시트
+ *
+ * [개요]
+ * NW 모달 창 전체에 적용되는 스타일을 정의합니다.
+ * ISOPModal.uss와 동일한 스타일을 사용합니다.
+ * 주로 스크롤바 커스터마이징과 기본 텍스트 스타일을 포함합니다.
+ *
+ * [스타일 구조]
+ * 1. .unity-text-element : 기본 텍스트 스타일 (Pretendard 폰트, 10px)
+ * 2. .unity-scroller--vertical : 세로 스크롤바 커스터마이징
+ * 3. .unity-scroller--horizontal : 가로 스크롤바 커스터마이징
+ *
+ * [스크롤바 디자인]
+ * - 너비/높이: 6px (슬림한 디자인)
+ * - 트랙: 흰색 배경 (#FFFFFF)
+ * - 드래거: 밝은 회색 (#D8D8D8), 둥근 모서리 (3px)
+ * - 화살표 버튼: 숨김 처리
+ *
+ * [폰트 설정]
+ * - 기본 폰트: Pretendard-Regular
+ * - 기본 색상: rgb(34, 34, 34) - 진한 회색
+ * - 기본 크기: 10px
+ *
+ * [연관 파일]
+ * - NWModal.uxml : 메인 레이아웃
+ * - NWChart.uss : 네트워크 다이어그램 스타일
+ * - NWModalView.uss : 모델 뷰 스타일
+ */
+
+/* ===================================
+ 기본 텍스트 스타일
+ 모달 내 모든 텍스트 요소에 적용
+ =================================== */
+.unity-text-element {
+ -unity-font: url('project://database/Assets/Fonts/Pretendard-Regular.otf');
+ -unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular');
+ color: rgb(34, 34, 34); /* 진한 회색 텍스트 */
+ font-size: 10px;
+}
+
+/* ===================================
+ 세로 스크롤바 스타일
+ 슬림한 6px 너비의 커스텀 스크롤바
+ =================================== */
+.unity-scroller--vertical {
+ width: 6px; /* 슬림한 너비 */
+ margin-right: 4px;
+ margin-bottom: 0px;
+}
+
+/* 세로 스크롤바 트랙 (배경) */
+.unity-scroller--vertical .unity-base-slider__tracker {
+ background-color: rgb(255, 255, 255); /* 흰색 배경 */
+ border-width: 0;
+}
+
+/* 세로 스크롤바 드래거 (핸들) */
+.unity-scroller--vertical .unity-base-slider__dragger {
+ background-color: rgb(216, 216, 216); /* 밝은 회색 */
+ border-width: 0;
+ border-radius: 3px; /* 둥근 모서리 */
+ width: 6px;
+}
+
+/* 세로 스크롤바 화살표 버튼 숨김 */
+.unity-scroller--vertical .unity-repeat-button {
+ display: none;
+ width: 0;
+ height: 0;
+ min-width: 0;
+ min-height: 0;
+}
+
+/* 세로 스크롤바 슬라이더 마진 제거 */
+.unity-scroller--vertical .unity-slider {
+ margin: 0;
+}
+
+/* ===================================
+ 가로 스크롤바 스타일
+ 슬림한 6px 높이의 커스텀 스크롤바
+ =================================== */
+.unity-scroller--horizontal {
+ height: 6px; /* 슬림한 높이 */
+ margin-bottom: 4px;
+ margin-right: 0px;
+}
+
+/* 가로 스크롤바 트랙 (배경) */
+.unity-scroller--horizontal .unity-base-slider__tracker {
+ background-color: rgb(255, 255, 255); /* 흰색 배경 */
+ border-width: 0;
+}
+
+/* 가로 스크롤바 드래거 (핸들) */
+.unity-scroller--horizontal .unity-base-slider__dragger {
+ background-color: rgb(216, 216, 216); /* 밝은 회색 */
+ border-width: 0;
+ border-radius: 3px; /* 둥근 모서리 */
+ height: 6px;
+}
+
+/* 가로 스크롤바 화살표 버튼 숨김 */
+.unity-scroller--horizontal .unity-repeat-button {
+ display: none;
+ width: 0;
+ height: 0;
+ min-width: 0;
+ min-height: 0;
+}
+
+/* 가로 스크롤바 슬라이더 마진 제거 */
+.unity-scroller--horizontal .unity-slider {
+ margin: 0;
+}
diff --git a/Assets/Resources/SHI/Modal/NW/NWModal.uss.meta b/Assets/Resources/SHI/Modal/NW/NWModal.uss.meta
new file mode 100644
index 00000000..91d39525
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModal.uss.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 067929ea94907c248a545d139eb77664
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
+ disableValidation: 0
diff --git a/Assets/Resources/SHI/Modal/NW/NWModal.uxml b/Assets/Resources/SHI/Modal/NW/NWModal.uxml
new file mode 100644
index 00000000..b261270f
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModal.uxml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/NW/NWModal.uxml.meta b/Assets/Resources/SHI/Modal/NW/NWModal.uxml.meta
new file mode 100644
index 00000000..9ca26663
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModal.uxml.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: bf6f1e10aef6efd4fb9ac771b0a2c1c2
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Assets/Resources/SHI/Modal/NW/NWModalView.uss b/Assets/Resources/SHI/Modal/NW/NWModalView.uss
new file mode 100644
index 00000000..caf7eb86
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModalView.uss
@@ -0,0 +1,37 @@
+/*
+ * NWModalView.uss - NW 3D 모델 뷰어 스타일시트
+ *
+ * [개요]
+ * NWModelView 컴포넌트의 루트 요소 스타일을 정의합니다.
+ * ISOPModelView.uss와 동일한 스타일을 사용합니다.
+ * 주로 Flexbox 레이아웃 설정을 포함합니다.
+ *
+ * [스타일 구조]
+ * - :root - 루트 요소 Flexbox 설정
+ *
+ * [레이아웃]
+ * - flex-grow: 1, flex-shrink: 1, flex-basis: 0
+ * → NWModal에서 NWChart와 동일한 비율로 공간 분할
+ * - min-width: 0 → Flexbox에서 컨텐츠 오버플로우 방지
+ * - overflow: hidden → 자식 요소 잘림 처리
+ *
+ * [참고]
+ * 3D 렌더링은 C#에서 RenderTexture를 통해 처리되므로
+ * 이 스타일시트는 레이아웃 설정만 담당합니다.
+ *
+ * [연관 파일]
+ * - NWModelView.uxml : UI 레이아웃
+ * - NWModelView.cs : C# 컨트롤러 (렌더링 처리)
+ */
+
+/* ===================================
+ 루트 요소 기본 설정
+ NWChart와 동일한 비율로 공간 분할
+ =================================== */
+:root {
+ flex-grow: 1; /* 남은 공간 채우기 */
+ flex-shrink: 1; /* 공간 부족 시 축소 허용 */
+ flex-basis: 0; /* 초기 크기 0 (grow로 분배) */
+ min-width: 0; /* Flexbox 오버플로우 방지 */
+ overflow: hidden; /* 자식 요소 잘림 처리 */
+}
diff --git a/Assets/Resources/SHI/Modal/NW/NWModalView.uss.meta b/Assets/Resources/SHI/Modal/NW/NWModalView.uss.meta
new file mode 100644
index 00000000..22380053
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModalView.uss.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1560514d54fae614c95172346d95c812
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 12385, guid: 0000000000000000e000000000000000, type: 0}
+ disableValidation: 0
diff --git a/Assets/Resources/SHI/Modal/NW/NWModelView.uxml b/Assets/Resources/SHI/Modal/NW/NWModelView.uxml
new file mode 100644
index 00000000..877d1d1a
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModelView.uxml
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Assets/Resources/SHI/Modal/NW/NWModelView.uxml.meta b/Assets/Resources/SHI/Modal/NW/NWModelView.uxml.meta
new file mode 100644
index 00000000..3c852b63
--- /dev/null
+++ b/Assets/Resources/SHI/Modal/NW/NWModelView.uxml.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4436869137226ee45a379ecc6b4696a2
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 13804, guid: 0000000000000000e000000000000000, type: 0}
diff --git a/Assets/Resources/SHI/Modal/TreeList.uss b/Assets/Resources/SHI/Modal/TreeList.uss
index e6916da5..4e0018c7 100644
--- a/Assets/Resources/SHI/Modal/TreeList.uss
+++ b/Assets/Resources/SHI/Modal/TreeList.uss
@@ -1,18 +1,53 @@
+/*
+ * TreeList.uss - TreeList 컴포넌트 스타일시트
+ *
+ * [개요]
+ * TreeList.uxml과 TreeListItem.uxml에서 사용하는 스타일을 정의합니다.
+ * 어두운 테마(Dark Theme)에 맞춰 디자인되었습니다.
+ *
+ * [스타일 구조]
+ * 1. .tree-menu-container : 메인 컨테이너 (어두운 배경, 240px 너비)
+ * 2. .search-field : 검색 입력 필드 (흰색 배경, 둥근 모서리)
+ * 3. #main-tree-view : TreeView 기본 설정 (들여쓰기 10px)
+ * 4. .unity-tree-view__item-toggle : 펼침/접기 토글 버튼
+ * 5. .unity-collection-view__item : 항목 배경색 (기본/호버/선택)
+ * 6. .visibility-toggle : 가시성 토글 버튼 (눈 아이콘)
+ *
+ * [색상 팔레트]
+ * - 배경: rgb(40, 44, 52) - 어두운 회색
+ * - 호버: rgba(0, 10, 37, 0.25) - 반투명 파랑
+ * - 선택: rgba(0, 10, 37, 0.5) - 더 진한 반투명 파랑
+ * - 텍스트: rgb(255, 255, 255) - 흰색
+ *
+ * [연관 파일]
+ * - TreeList.uxml : 메인 레이아웃
+ * - TreeListItem.uxml : 개별 항목 템플릿
+ * - TreeList.cs : C# 컨트롤러
+ */
+
+/* ===================================
+ 메인 컨테이너 스타일
+ 사이드 패널 전체를 감싸는 컨테이너
+ =================================== */
.tree-menu-container {
- background-color: rgb(40, 44, 52);
- flex-grow: 1;
+ background-color: rgb(40, 44, 52); /* 어두운 회색 배경 */
+ flex-grow: 1; /* 부모 영역 채우기 */
padding: 5px;
padding-top: 25px;
padding-bottom: 25px;
padding-left: 20px;
padding-right: 20px;
- width: 240px;
+ width: 240px; /* 고정 너비 */
}
+/* ===================================
+ 검색 입력 필드 스타일
+ 흰색 배경의 둥근 입력창
+ =================================== */
.search-field {
margin-bottom: 20px;
- background-color: rgb(255, 255, 255);
- border-radius: 4px;
+ background-color: rgb(255, 255, 255); /* 흰색 배경 */
+ border-radius: 4px; /* 둥근 모서리 */
height: 30px;
width: auto;
margin-top: 0;
@@ -21,54 +56,75 @@
-unity-font-definition: resource('Fonts/Pretendard/Pretendard-Regular');
}
+/* 검색 필드 내부 텍스트 입력 영역 */
#search-field > #unity-text-input {
padding-top: 4px;
- padding-right: 24px;
+ padding-right: 24px; /* 오른쪽 아이콘 공간 확보 */
padding-bottom: 4px;
padding-left: 4px;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
border-bottom-left-radius: 3px;
- border-top-width: 0;
+ border-top-width: 0; /* 테두리 제거 */
border-right-width: 0;
border-bottom-width: 0;
border-left-width: 0;
}
+/* ===================================
+ 체크박스 스타일
+ =================================== */
#unity-checkmark {
-unity-background-image-tint-color: rgb(255, 255, 255);
}
+/* ===================================
+ TreeView 기본 설정
+ =================================== */
#main-tree-view {
- --unity-item-indent-width: 10;
+ --unity-item-indent-width: 10; /* 계층별 들여쓰기 너비 */
}
+/* 펼침/접기 토글 아이콘 컨테이너 */
#unity-tree-view__item-toggle > VisualElement > VisualElement {
margin-left: 0;
margin-right: 0;
- width: 22px;
+ width: 22px; /* 토글 아이콘 너비 */
}
+/* 펼침/접기 토글 버튼 */
.unity-tree-view__item-toggle {
- margin-right: 5px;
+ margin-right: 5px; /* 라벨과의 간격 */
}
+/* ===================================
+ 항목 배경색 스타일
+ 기본, 호버, 선택 상태별 배경색
+ =================================== */
+
+/* 기본 상태: 투명 배경 */
.unity-collection-view__item {
background-color: rgba(50, 50, 50, 0);
}
+/* 호버 상태: 반투명 파란색 배경 */
.unity-collection-view__item:hover {
background-color: rgba(0, 10, 37, 0.25);
}
+/* 선택 상태: 더 진한 반투명 파란색 배경 */
.unity-collection-view__item--selected {
background-color: rgba(0, 10, 37, 0.5);
}
+/* ===================================
+ 가시성 토글 버튼 스타일
+ 눈 아이콘으로 3D 모델 가시성 제어
+ =================================== */
.visibility-toggle {
- background-color: rgba(0, 0, 0, 0);
- border-width: 0;
+ background-color: rgba(0, 0, 0, 0); /* 투명 배경 */
+ border-width: 0; /* 테두리 없음 */
width: 16px;
height: 16px;
margin-top: 0;
@@ -81,14 +137,16 @@
padding-right: 0;
padding-left: 0;
margin-left: 0;
- flex-shrink: 0;
- background-image: resource('SHI/Images/icon_visibility_on_64');
+ flex-shrink: 0; /* 크기 축소 방지 */
+ background-image: resource('SHI/Images/icon_visibility_on_64'); /* 기본: 보이는 상태 */
}
+/* 가시성 켜짐 상태 (눈 열린 아이콘) */
.visibility-on {
background-image: resource('SHI/Images/icon_visibility_on_64');
}
+/* 가시성 꺼짐 상태 (눈 닫힌 아이콘) */
.visibility-off {
background-image: resource('SHI/Images/icon_visibility_off_64');
}
diff --git a/Assets/Resources/SHI/Modal/TreeList.uxml b/Assets/Resources/SHI/Modal/TreeList.uxml
index 2503c881..99693009 100644
--- a/Assets/Resources/SHI/Modal/TreeList.uxml
+++ b/Assets/Resources/SHI/Modal/TreeList.uxml
@@ -1,14 +1,57 @@
+
+
+
diff --git a/Assets/Resources/SHI/Modal/TreeListItem.uxml b/Assets/Resources/SHI/Modal/TreeListItem.uxml
index 271a4d4c..2d83cd44 100644
--- a/Assets/Resources/SHI/Modal/TreeListItem.uxml
+++ b/Assets/Resources/SHI/Modal/TreeListItem.uxml
@@ -1,7 +1,40 @@
+
-
+
+
+
-
+
+
+
diff --git a/Assets/Resources/SHI/Prefabs/NWModal.prefab b/Assets/Resources/SHI/Prefabs/NWModal.prefab
new file mode 100644
index 00000000..3cb5742a
--- /dev/null
+++ b/Assets/Resources/SHI/Prefabs/NWModal.prefab
@@ -0,0 +1,67 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4549899540058300928
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2731666058294664743}
+ - component: {fileID: 428273902588860676}
+ - component: {fileID: 429179680282747418}
+ m_Layer: 0
+ m_Name: NWModal
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2731666058294664743
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4549899540058300928}
+ 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 &428273902588860676
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4549899540058300928}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_PanelSettings: {fileID: 11400000, guid: 23c44a2b28cd90c418bdfb0ea56f91e8, type: 2}
+ m_ParentUI: {fileID: 0}
+ sourceAsset: {fileID: 9197481963319205126, guid: bf6f1e10aef6efd4fb9ac771b0a2c1c2, type: 3}
+ m_SortingOrder: 100
+ m_WorldSpaceSizeMode: 1
+ m_WorldSpaceWidth: 1920
+ m_WorldSpaceHeight: 1080
+--- !u!114 &429179680282747418
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 4549899540058300928}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 89260a4496ad3e249b64cfb24481d9fb, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ uiDocument: {fileID: 428273902588860676}
diff --git a/Assets/Resources/SHI/Prefabs/NWModal.prefab.meta b/Assets/Resources/SHI/Prefabs/NWModal.prefab.meta
new file mode 100644
index 00000000..9fc7f754
--- /dev/null
+++ b/Assets/Resources/SHI/Prefabs/NWModal.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5295f7b9a5b84ae4c8230c52ebdabef2
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Sample/ShiPopupSample.cs b/Assets/Scenes/Sample/ShiPopupSample.cs
index fbadd279..9eb7d1d5 100644
--- a/Assets/Scenes/Sample/ShiPopupSample.cs
+++ b/Assets/Scenes/Sample/ShiPopupSample.cs
@@ -1,7 +1,7 @@
+#nullable enable
using Cysharp.Threading.Tasks;
using SHI.Modal.ISOP;
-using System;
-using System.Globalization;
+using SHI.Modal.NW;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
@@ -13,32 +13,53 @@ using UnityEngine.UI;
public class ShiPopupSample : MonoBehaviour
{
[SerializeField]
- private ISOPModal isopModal;
- // private GameObject blockDetailModalPrefab;
+ private GameObject isopModalPrefab;
[SerializeField]
- private Button openModalButton;
+ private GameObject nwModalPrefab;
- // private BlockDetailModal blockDetailModal;
+ [SerializeField]
+ private Button openISOPModalButton;
+
+ [SerializeField]
+ private Button openNWModalButton;
+
+ private ISOPModal? isopModal;
+ private NWModal? nwModal;
private void Start()
{
- if (openModalButton != null)
+ if (openISOPModalButton != null)
{
- openModalButton.onClick.AddListener(() =>
+ openISOPModalButton.onClick.AddListener(() =>
{
- // if (blockDetailModal == null && blockDetailModalPrefab != null)
- // {
- // Canvas canvas = Canvas.FindFirstObjectByType