/* ******************************************************** */ //! Get Material /*! * @param TextureNo * Serial-number of using texture * @param Operation * Color-Blend Operation for the target * @retval Return-Value * Material */ public Material MaterialGet(int TextureNo, Library_SpriteStudio.KindColorOperation Operation) { int MaterialNo = TextureNo * ((int)Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); MaterialNo += (int)Operation - 1; return(((null != TableMaterial) && (0 <= TextureNo)) ? TableMaterial[MaterialNo] : null); }
/* ******************************************************** */ //! Get Material /*! * @param IndexCellMap * Serial-number of using Cell-Map * @param Operation * Color-Blend Operation for the target * @retval Return-Value * Material */ public Material MaterialGet(int IndexCellMap, Library_SpriteStudio.KindColorOperation KindOperation) { return(((0 <= IndexCellMap) && (DataCellMap.ListDataCellMap.Length > IndexCellMap) && (Library_SpriteStudio.KindColorOperation.NON < KindOperation) && (Library_SpriteStudio.KindColorOperation.TERMINATOR_EFFECT > KindOperation) ) ? TableMaterial[(IndexCellMap * ((int)Library_SpriteStudio.KindColorOperation.TERMINATOR_EFFECT - 1)) + ((int)KindOperation - 1)] : null ); }
public override void OnInspectorGUI() { Script_SpriteStudio_PartsRoot Data = (Script_SpriteStudio_PartsRoot)target; EditorGUILayout.LabelField("[SpriteStudio Parts-Root]"); int LevelIndent = 0; EditorGUILayout.Space(); FoldOutMaterialTable = EditorGUILayout.Foldout(FoldOutMaterialTable, "Based-Material Table"); if (true == FoldOutMaterialTable) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.TableMaterial) { int CountShader = (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); int Count = Data.TableMaterial.Length / CountShader; int MaterialNoTop = 0; Library_SpriteStudio.KindColorOperation MaterialTableNo = 0; string NameField = ""; for (int i = 0; i < Count; i++) { MaterialNoTop = i * (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); EditorGUILayout.LabelField("Material No [" + MaterialNoTop + "-" + ((MaterialNoTop + CountShader) - 1) + "]: Texture-" + i ); EditorGUI.indentLevel = LevelIndent + 2; for (int j = 0; j < CountShader; j++) { MaterialTableNo = (Library_SpriteStudio.KindColorOperation)(j + 1); NameField = "Shader [" + MaterialTableNo.ToString() + "]"; Data.TableMaterial[MaterialNoTop + j] = (Material)(EditorGUILayout.ObjectField(NameField, Data.TableMaterial[MaterialNoTop + j], typeof(Material), false)); } EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutAnimationInformation = EditorGUILayout.Foldout(FoldOutAnimationInformation, "Animation Information"); if (true == FoldOutAnimationInformation) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.ListInformationPlay) { for (int i = 0; i < Data.ListInformationPlay.Length; i++) { EditorGUILayout.LabelField("Animation No [" + i + "]: Name[" + Data.ListInformationPlay[i].Name + "]"); EditorGUI.indentLevel = LevelIndent + 2; EditorGUILayout.LabelField("Start Frame-No [" + Data.ListInformationPlay[i].FrameStart.ToString("D5") + "]"); EditorGUILayout.LabelField("End Frame-No [" + Data.ListInformationPlay[i].FrameEnd.ToString("D5") + "]"); float FPS = 1.0f / (float)Data.ListInformationPlay[i].FramePerSecond; EditorGUILayout.LabelField("Base FPS [" + Data.ListInformationPlay[i].FramePerSecond.ToString("D3") + "]:(" + FPS.ToString() + " Sec.)"); EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutPlayInformation = EditorGUILayout.Foldout(FoldOutPlayInformation, "Initial/Preview Play Setting"); if (true == FoldOutPlayInformation) { bool FlagUpdate = false; EditorGUI.indentLevel = LevelIndent + 1; string[] NameAnimation = new string[Data.ListInformationPlay.Length]; int[] IndexAnimation = new int[Data.ListInformationPlay.Length]; for (int i = 0; i < Data.ListInformationPlay.Length; i++) { IndexAnimation[i] = i; NameAnimation[i] = Data.ListInformationPlay[i].Name; } int AnimationNo = EditorGUILayout.IntPopup("Animation Name", Data.AnimationNo, NameAnimation, IndexAnimation); if (Data.AnimationNo != AnimationNo) { Data.AnimationNo = AnimationNo; FlagUpdate = true; } int FrameNoEnd = Data.ListInformationPlay[Data.AnimationNo].FrameEnd - Data.ListInformationPlay[Data.AnimationNo].FrameStart; int FrameNoInitial = EditorGUILayout.IntField("Start Offset Frame-No", Data.FrameNoInitial); // int FrameNoInitial = EditorGUILayout.IntSlider("Start Offset Frame-No", Data.FrameNoInitial, 0, FrameNoEnd); EditorGUILayout.LabelField("(This-Value influences only at Initial)"); EditorGUILayout.LabelField("(Don't set Negative-Value or OverRun-Value)"); if (0 > FrameNoInitial) { FrameNoInitial = 0; } if (FrameNoEnd < FrameNoInitial) { FrameNoInitial = FrameNoEnd; } if (Data.FrameNoInitial != FrameNoInitial) { Data.FrameNoInitial = FrameNoInitial; FlagUpdate = true; } EditorGUILayout.Space(); Data.RateTimeAnimation = EditorGUILayout.FloatField("Rate Time-Progress", Data.RateTimeAnimation); EditorGUILayout.LabelField("(set Negative-Value, Play Backwards.)"); EditorGUILayout.Space(); Data.PlayTimes = EditorGUILayout.IntField("Number of Plays", Data.PlayTimes); EditorGUILayout.LabelField("(1: No Loop / 0: Infinite Loop)"); EditorGUILayout.Space(); if (true == GUILayout.Button("Reset (Reinitialize)")) { Data.AnimationNo = 0; Data.FrameNoInitial = 0; Data.RateTimeAnimation = 1.0f; Data.PlayTimes = 0; FlagUpdate = true; } EditorGUI.indentLevel = LevelIndent; if (true == FlagUpdate) { Data.AnimationPlay(AnimationNo, Data.PlayTimes, -1, 0.0f); } } EditorGUILayout.Space(); FoldOutDrawSetting = EditorGUILayout.Foldout(FoldOutDrawSetting, "Rendering Setting"); if (true == FoldOutDrawSetting) { EditorGUI.indentLevel = LevelIndent + 1; int CountKindQueue = (int)Script_SpriteStudio_PartsRoot.KindDrawQueue.OVERLAY + 1; int[] IndexDrawKind = new int[CountKindQueue]; for (int i = 0; i < CountKindQueue; i++) { IndexDrawKind[i] = i; } int KindRenderQueueBaseNo = (int)Data.KindRenderQueueBase; KindRenderQueueBaseNo = EditorGUILayout.IntPopup("Render-Queue Base", KindRenderQueueBaseNo, NameDrawKind, IndexDrawKind); Data.KindRenderQueueBase = (Script_SpriteStudio_PartsRoot.KindDrawQueue)KindRenderQueueBaseNo; EditorGUI.indentLevel = LevelIndent + 2; EditorGUILayout.LabelField("Details [" + NameDrawKind[KindRenderQueueBaseNo] + "]"); switch ((Script_SpriteStudio_PartsRoot.KindDrawQueue)KindRenderQueueBaseNo) { case Script_SpriteStudio_PartsRoot.KindDrawQueue.SHADER_SETTING: EditorGUILayout.LabelField("- Value Base: Defined Tag\"Queue\" in Shader (Default: Transparent)"); EditorGUILayout.LabelField("- Offset Range: Depend on Tag\"Queue\"(Default: 0-999)"); break; case Script_SpriteStudio_PartsRoot.KindDrawQueue.USER_SETTING: EditorGUILayout.LabelField("- Value Base: 0"); EditorGUILayout.LabelField("- Offset Range: 1000-4999"); break; default: EditorGUILayout.LabelField("- Value Base: " + Script_SpriteStudio_PartsRoot.ValueKindDrawQueue[KindRenderQueueBaseNo]); EditorGUILayout.LabelField("- Offset Range: 0-" + (Script_SpriteStudio_PartsRoot.ValueKindDrawQueue[KindRenderQueueBaseNo + 1] - Script_SpriteStudio_PartsRoot.ValueKindDrawQueue[KindRenderQueueBaseNo] - 1)); break; } EditorGUI.indentLevel = LevelIndent + 1; EditorGUILayout.Space(); Data.OffsetDrawQueue = EditorGUILayout.IntField("Render-Queue Offset", Data.OffsetDrawQueue); EditorGUILayout.Space(); Data.RateDrawQueueEffectZ = EditorGUILayout.FloatField("Rate Z Effect", Data.RateDrawQueueEffectZ); EditorGUILayout.LabelField("(\"This-Value x ViewPort-Z\" Added to Offset)"); EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); if (true == GUI.changed) { EditorUtility.SetDirty(target); } }
public override void OnInspectorGUI() { Script_SpriteStudio_PartsRoot Data = (Script_SpriteStudio_PartsRoot)target; EditorGUILayout.LabelField("[SpriteStudio Parts-Root]"); int LevelIndent = 0; EditorGUILayout.Space(); FoldOutMaterialTable = EditorGUILayout.Foldout(FoldOutMaterialTable, "Based-Material Table"); if (true == FoldOutMaterialTable) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.TableMaterial) { int CountShader = (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); int Count = Data.TableMaterial.Length / CountShader; int MaterialNoTop = 0; Library_SpriteStudio.KindColorOperation MaterialTableNo = 0; string NameField = ""; for (int i = 0; i < Count; i++) { MaterialNoTop = i * (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); EditorGUILayout.LabelField("Material No [" + MaterialNoTop + "-" + ((MaterialNoTop + CountShader) - 1) + "]: Texture-" + i ); EditorGUI.indentLevel = LevelIndent + 2; for (int j = 0; j < CountShader; j++) { MaterialTableNo = (Library_SpriteStudio.KindColorOperation)(j + 1); NameField = "Shader [" + MaterialTableNo.ToString() + "]"; Data.TableMaterial[MaterialNoTop + j] = (Material)(EditorGUILayout.ObjectField(NameField, Data.TableMaterial[MaterialNoTop + j], typeof(Material), false)); } EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutAnimationInformation = EditorGUILayout.Foldout(FoldOutAnimationInformation, "Animation Information"); if (true == FoldOutAnimationInformation) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.ListInformationPlay) { for (int i = 0; i < Data.ListInformationPlay.Length; i++) { EditorGUILayout.LabelField("Animation No [" + i + "]: Name[" + Data.ListInformationPlay[i].Name + "]"); EditorGUI.indentLevel = LevelIndent + 2; EditorGUILayout.LabelField("Start Frame-No [" + Data.ListInformationPlay[i].FrameStart.ToString("D5") + "]"); EditorGUILayout.LabelField("End Frame-No [" + Data.ListInformationPlay[i].FrameEnd.ToString("D5") + "]"); float FPS = 1.0f / (float)Data.ListInformationPlay[i].FramePerSecond; EditorGUILayout.LabelField("Base FPS [" + Data.ListInformationPlay[i].FramePerSecond.ToString("D3") + "]:(" + FPS.ToString() + " Sec.)"); EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutPlayInformation = EditorGUILayout.Foldout(FoldOutPlayInformation, "Initial/Preview Play Setting"); if (true == FoldOutPlayInformation) { bool FlagUpdate = false; EditorGUI.indentLevel = LevelIndent + 1; string[] NameAnimation = new string[Data.ListInformationPlay.Length]; int[] IndexAnimation = new int[Data.ListInformationPlay.Length]; for (int i = 0; i < Data.ListInformationPlay.Length; i++) { IndexAnimation[i] = i; NameAnimation[i] = Data.ListInformationPlay[i].Name; } int AnimationNo = EditorGUILayout.IntPopup("Animation Name", Data.AnimationNo, NameAnimation, IndexAnimation); if (Data.AnimationNo != AnimationNo) { Data.AnimationNo = AnimationNo; FlagUpdate = true; } int CountLabel = Data.ListInformationPlay[AnimationNo].Label.Length; bool FlagLabelSelectable = (0 < CountLabel) ? true : false; int FrameNoStart = 0; int FrameNoEnd = Data.ListInformationPlay[AnimationNo].FrameEnd - Data.ListInformationPlay[AnimationNo].FrameStart; int FrameNoStartRange = FrameNoStart; int FrameNoEndRange = FrameNoEnd; EditorGUILayout.LabelField("Animation Frames: " + FrameNoStart.ToString() + " to " + FrameNoEnd.ToString()); EditorGUILayout.Space(); string[] NameLabel = null; int[] IndexLabel = null; int[] FrameNoLabel = null; int LabelStart = -1; int LabelEnd = -1; if (true == FlagLabelSelectable) { CountLabel += 2; /* +2 ... "_start" and "_end" (Reserved-Labels) */ NameLabel = new string[CountLabel]; IndexLabel = new int[CountLabel]; FrameNoLabel = new int[CountLabel]; NameLabel[0] = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultStart); IndexLabel[0] = 0; FrameNoLabel[0] = 0; for (int j = 1; j < (CountLabel - 1); j++) { IndexLabel[j] = j; NameLabel[j] = string.Copy(Data.ListInformationPlay[AnimationNo].Label[j - 1].Name); FrameNoLabel[j] = Data.ListInformationPlay[AnimationNo].Label[j - 1].FrameNo; } NameLabel[CountLabel - 1] = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultEnd); IndexLabel[CountLabel - 1] = CountLabel - 1; FrameNoLabel[CountLabel - 1] = FrameNoEnd; for (int j = 0; j < CountLabel; j++) { if (0 == string.Compare(NameLabel[j], Data.NameLabelStart)) { LabelStart = j; } if (0 == string.Compare(NameLabel[j], Data.NameLabelEnd)) { LabelEnd = j; } } if (-1 == LabelStart) { LabelStart = 0; } if (-1 == LabelEnd) { LabelEnd = CountLabel - 1; } } else { CountLabel = 2; NameLabel = new string[CountLabel]; IndexLabel = new int[CountLabel]; FrameNoLabel = new int[CountLabel]; NameLabel[0] = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultStart); IndexLabel[0] = 0; FrameNoLabel[0] = 0; NameLabel[1] = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultEnd); IndexLabel[1] = CountLabel - 1; FrameNoLabel[1] = FrameNoEnd; } EditorGUILayout.Space(); if (true == FlagLabelSelectable) { int LabelOld = LabelStart; LabelStart = EditorGUILayout.IntPopup("Range Start Label", LabelOld, NameLabel, IndexLabel); if ((LabelOld != LabelStart) || (true == string.IsNullOrEmpty(Data.NameLabelStart))) { Data.NameLabelStart = string.Copy(NameLabel[IndexLabel[LabelStart]]); FlagUpdate = true; } FrameNoStartRange = FrameNoLabel[LabelStart]; } int OffsetOld = Data.OffsetFrameStart - FrameNoStart; int OffsetNew = EditorGUILayout.IntField("Range Start Offset: ", OffsetOld); if ((FrameNoStartRange + OffsetNew) >= FrameNoEnd) { OffsetNew = FrameNoEnd - FrameNoStartRange - 1; } if (OffsetOld != OffsetNew) { Data.OffsetFrameStart = OffsetNew; FlagUpdate = true; } EditorGUILayout.LabelField("Range Start: (" + FrameNoStartRange.ToString() + " + " + OffsetNew.ToString() + ")=" + (FrameNoStartRange + OffsetNew).ToString() ); FrameNoStartRange += OffsetNew; EditorGUILayout.Space(); if (true == FlagLabelSelectable) { int LabelOld = LabelEnd; LabelEnd = EditorGUILayout.IntPopup("Range End Lable", LabelOld, NameLabel, IndexLabel); if ((LabelOld != LabelEnd) || (true == string.IsNullOrEmpty(Data.NameLabelEnd))) { Data.NameLabelEnd = string.Copy(NameLabel[IndexLabel[LabelEnd]]); FlagUpdate = true; } FrameNoEndRange = FrameNoLabel[LabelEnd]; } OffsetOld = Data.OffsetFrameEnd; OffsetNew = EditorGUILayout.IntField("Range End Offset", OffsetOld); if ((FrameNoEndRange + OffsetNew) >= FrameNoEnd) { OffsetNew = 0; } if ((FrameNoEndRange + OffsetNew) <= FrameNoStartRange) { OffsetNew = (FrameNoStartRange - FrameNoEndRange) + 1; } if (OffsetOld != OffsetNew) { Data.OffsetFrameEnd = OffsetNew; FlagUpdate = true; } EditorGUILayout.LabelField("Range End: (" + FrameNoEndRange.ToString() + " + " + OffsetNew.ToString() + ")=" + (FrameNoEndRange + OffsetNew).ToString() ); FrameNoEndRange += OffsetNew; EditorGUILayout.Space(); int FrameNoInitialOld = Data.FrameNoInitial; if (0 > FrameNoInitialOld) { FrameNoInitialOld = 0; } if ((FrameNoEnd - FrameNoStart) < FrameNoInitialOld) { FrameNoInitialOld = FrameNoEnd - FrameNoStart; } int FrameNoInitial = EditorGUILayout.IntField("Initial Start Offset", FrameNoInitialOld); EditorGUILayout.LabelField("Valid Value Range: 0 to " + (FrameNoEndRange - FrameNoStartRange).ToString()); if (0 > FrameNoInitial) { FrameNoInitial = 0; } if ((FrameNoEndRange - FrameNoStartRange) < FrameNoInitial) { FrameNoInitial = FrameNoEndRange - FrameNoStartRange; } if (FrameNoInitialOld != FrameNoInitial) { Data.FrameNoInitial = FrameNoInitial; FlagUpdate = true; } EditorGUILayout.Space(); Data.FlagStylePingpong = EditorGUILayout.Toggle("Play-Pingpong", Data.FlagStylePingpong); EditorGUILayout.Space(); Data.RateTimeAnimation = EditorGUILayout.FloatField("Rate Time-Progress", Data.RateTimeAnimation); EditorGUILayout.LabelField("(set Negative-Value, Play Backwards.)"); EditorGUILayout.Space(); Data.PlayTimes = EditorGUILayout.IntField("Number of Plays", Data.PlayTimes); EditorGUILayout.LabelField("(1: No Loop / 0: Infinite Loop)"); EditorGUILayout.Space(); if (true == GUILayout.Button("Reset (Reinitialize)")) { Data.AnimationNo = 0; Data.FrameNoInitial = 0; Data.RateTimeAnimation = 1.0f; Data.PlayTimes = 0; Data.FlagStylePingpong = false; Data.NameLabelStart = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultStart); Data.OffsetFrameStart = 0; Data.NameLabelEnd = string.Copy(Library_SpriteStudio.AnimationInformationPlay.LabelDefaultEnd); Data.OffsetFrameEnd = 0; FlagUpdate = true; } EditorGUI.indentLevel = LevelIndent; if (true == FlagUpdate) { Data.AnimationPlay(); } } EditorGUILayout.Space(); Data.FlagHideForce = EditorGUILayout.Toggle("Force-Hide", Data.FlagHideForce); if (true == GUILayout.Button("Apply \"Force-Hide\" to Children")) { LibraryEditor_SpriteStudio.Utility.HideSetForce(Data.gameObject, Data.FlagHideForce, true, false); } EditorGUILayout.Space(); if (true == GUI.changed) { EditorUtility.SetDirty(target); } }
/* ******************************************************** */ //! Add Mesh to Draw-Manager /*! * @param TextureNo * Serial-number of using texture * @param Operation * Color-Blend Operation for the target * @param DataMeshInformation * Mesh Information * @retval Return-Value * (None) * * Don't use this function. <br> * (This function is for the animation-parts' scripts.) */ public void MeshAdd(int TextureNo, Library_SpriteStudio.KindColorOperation Operation, InformationMeshData DataMeshInformation) { if (0 > TextureNo) { return; } if (null == TableListMesh) { TableListMesh = new ArrayList(); TableListMesh.Clear(); } int MaterialNo = TextureNo * ((int)Library_SpriteStudio.KindColorOperation.TERMINATOR - 1) + ((int)Operation - 1); int CountList = TableListMesh.Count; int ListNo = -1; ListMeshDraw ListMesh = null; if (0 == TableListMesh.Count) { goto MeshAdd_NewListAdd; } else { ListNo = 0; ListMesh = TableListMesh[0] as ListMeshDraw; for (int i = 1; i < CountList; i++) { ListMesh = TableListMesh[i] as ListMeshDraw; if (DataMeshInformation.Priority < ListMesh.PriorityMinimum) { ListNo = i - 1; break; } ListMesh = null; } if (null == ListMesh) { /* Highest-Priority */ ListNo = CountList - 1; ListMesh = TableListMesh[ListNo] as ListMeshDraw; if (ListMesh.MaterialNo != MaterialNo) { if (DataMeshInformation.Priority < ListMesh.PriorityMaximum) { goto MeshAdd_NewListInsertSplit; } else { goto MeshAdd_NewListAdd; } } } else { ListMesh = TableListMesh[ListNo] as ListMeshDraw; if (ListMesh.MaterialNo != MaterialNo) { if (DataMeshInformation.Priority < ListMesh.PriorityMaximum) { goto MeshAdd_NewListInsertSplit; } else { ListNo++; if (CountList <= ListNo) { goto MeshAdd_NewListAdd; } else { ListMeshDraw ListMeshNext = TableListMesh[ListNo] as ListMeshDraw; if (ListMeshNext.MaterialNo != MaterialNo) { ListNo--; goto MeshAdd_NewListInsert; } else { ListMesh = ListMeshNext; } } } } } ListMesh.MeshAdd(ref DataMeshInformation); } return; MeshAdd_NewListAdd: ListMesh = new ListMeshDraw(); ListMesh.MaterialNo = MaterialNo; TableListMesh.Add(ListMesh); ListMesh.MeshAdd(ref DataMeshInformation); return; MeshAdd_NewListInsert: ListMesh = new ListMeshDraw(); ListMesh.MaterialNo = MaterialNo; TableListMesh.Insert(ListNo + 1, ListMesh); ListMesh.MeshAdd(ref DataMeshInformation); return; MeshAdd_NewListInsertSplit: { ListMeshDraw ListMeshSplit = ListMesh.ListSplit(DataMeshInformation.Priority); int ListNoNext = ListNo + 1; if (CountList <= ListNoNext) { TableListMesh.Add(ListMeshSplit); } else { TableListMesh.Insert(ListNoNext, ListMeshSplit); } int CountOld = ListMesh.Count; ListMesh = new ListMeshDraw(); ListMesh.MaterialNo = MaterialNo; TableListMesh.Insert(ListNoNext, ListMesh); if (0 >= CountOld) { TableListMesh.RemoveAt(ListNo); } } ListMesh.MeshAdd(ref DataMeshInformation); return; }
public override void OnInspectorGUI() { Script_SpriteStudio_Root Data = (Script_SpriteStudio_Root)target; EditorGUILayout.LabelField("[SpriteStudio (Parts-)Root]"); int LevelIndent = 0; EditorGUILayout.Space(); Data.InstanceManagerDraw = (Script_SpriteStudio_ManagerDraw)(EditorGUILayout.ObjectField("View (Manager-Draw)", Data.InstanceManagerDraw, typeof(Script_SpriteStudio_ManagerDraw), true)); EditorGUILayout.Space(); FoldOutStaticDatas = EditorGUILayout.Foldout(FoldOutStaticDatas, "Static Datas"); if (true == FoldOutStaticDatas) { EditorGUI.indentLevel = LevelIndent + 1; Data.DataCellMap = (Script_SpriteStudio_DataCell)(EditorGUILayout.ObjectField("Data:CellMap", Data.DataCellMap, typeof(Script_SpriteStudio_DataCell), true)); Data.DataAnimation = (Script_SpriteStudio_DataAnimation)(EditorGUILayout.ObjectField("Data:Animation", Data.DataAnimation, typeof(Script_SpriteStudio_DataAnimation), true)); EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutMaterialTable = EditorGUILayout.Foldout(FoldOutMaterialTable, "Based-Material Table"); if (true == FoldOutMaterialTable) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.TableMaterial) { int CountShader = (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); int Count = Data.TableMaterial.Length / CountShader; int MaterialNoTop = 0; Library_SpriteStudio.KindColorOperation MaterialTableNo = 0; string NameField = ""; for (int i = 0; i < Count; i++) { MaterialNoTop = i * (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR - 1); EditorGUILayout.LabelField("Material No [" + MaterialNoTop + "-" + ((MaterialNoTop + CountShader) - 1) + "]: Texture-" + i ); EditorGUI.indentLevel = LevelIndent + 2; for (int j = 0; j < CountShader; j++) { MaterialTableNo = (Library_SpriteStudio.KindColorOperation)(j + 1); NameField = "Shader [" + MaterialTableNo.ToString() + "]"; Data.TableMaterial[MaterialNoTop + j] = (Material)(EditorGUILayout.ObjectField(NameField, Data.TableMaterial[MaterialNoTop + j], typeof(Material), false)); } EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutPlayInformation = EditorGUILayout.Foldout(FoldOutPlayInformation, "Initial/Preview Play Setting"); if (true == FoldOutPlayInformation) { EditorGUI.indentLevel = LevelIndent + 1; // if((null != Data.DataAnimation) && (null != Data.DataCellMap)) if (null != Data.DataAnimation) { bool FlagUpdate = false; Data.FlagHideForce = EditorGUILayout.Toggle("Hide Force", Data.FlagHideForce); EditorGUILayout.Space(); Data.FlagAnimationStopInitial = EditorGUILayout.Toggle("Initial Stopping Animation", Data.FlagAnimationStopInitial); EditorGUILayout.Space(); /* "Animation" Select */ Library_SpriteStudio.Data.Animation DataAnimationBody = null; int CountAnimation = Data.DataAnimation.CountGetAnimation(); string[] ListNameAnimation = new string[CountAnimation]; for (int i = 0; i < CountAnimation; i++) { DataAnimationBody = Data.DataAnimation.DataGetAnimation(i); if (null != DataAnimationBody) { ListNameAnimation[i] = DataAnimationBody.Name; } else { ListNameAnimation[i] = "(Data Missing)"; } } int IndexAnimationCursor = Data.IndexAnimation; if ((0 > IndexAnimationCursor) || (Data.DataAnimation.ListDataAnimation.Length <= IndexAnimationCursor)) { IndexAnimationCursor = 0; FlagUpdate |= true; } int IndexNow = EditorGUILayout.Popup("Animation Name", IndexAnimationCursor, ListNameAnimation); if (IndexNow != IndexAnimationCursor) { IndexAnimationCursor = IndexNow; Data.IndexAnimation = IndexAnimationCursor; FlagUpdate |= true; } DataAnimationBody = Data.DataAnimation.DataGetAnimation(IndexAnimationCursor); int FrameNoLast = DataAnimationBody.CountFrame - 1; int CountLabel = DataAnimationBody.CountGetLabel(); EditorGUILayout.LabelField("- Frame Count: [" + DataAnimationBody.CountFrame.ToString() + "] (0 - " + FrameNoLast.ToString() + ")"); EditorGUILayout.Space(); /* "Label" Selector Create (for Start-Label / End-Label) */ string[] ListNameLabel = null; int[] ListIndexLabel = null; int[] ListFrameNoLabel = null; if (0 < CountLabel) { /* Has Labels */ CountLabel += 2; /* +2 ... "_start" and "_end" (Reserved-Labels) */ ListNameLabel = new string[CountLabel]; ListIndexLabel = new int[CountLabel]; ListFrameNoLabel = new int[CountLabel]; Library_SpriteStudio.Data.Label DataLabelBody = null; for (int j = 1; j < (CountLabel - 1); j++) { DataLabelBody = DataAnimationBody.DataGetLabel(j - 1); ListNameLabel[j] = DataLabelBody.Name; ListIndexLabel[j] = (j - 1); ListFrameNoLabel[j] = DataLabelBody.FrameNo; } } else { /* Has No-Labels */ CountLabel = 2; ListNameLabel = new string[CountLabel]; ListIndexLabel = new int[CountLabel]; ListFrameNoLabel = new int[CountLabel]; } ListNameLabel[0] = Library_SpriteStudio.ListNameLabelAnimationReserved[(int)Library_SpriteStudio.KindLabelAnimationReserved.START]; ListIndexLabel[0] = (int)(Library_SpriteStudio.KindLabelAnimationReserved.START | Library_SpriteStudio.KindLabelAnimationReserved.INDEX_RESERVED); ListFrameNoLabel[0] = 0; ListNameLabel[CountLabel - 1] = Library_SpriteStudio.ListNameLabelAnimationReserved[(int)Library_SpriteStudio.KindLabelAnimationReserved.END]; ListIndexLabel[CountLabel - 1] = (int)(Library_SpriteStudio.KindLabelAnimationReserved.END | Library_SpriteStudio.KindLabelAnimationReserved.INDEX_RESERVED); ListFrameNoLabel[CountLabel - 1] = FrameNoLast; int IndexListLabelStart = -1; int IndexListLabelEnd = -1; for (int i = 0; i < CountLabel; i++) { if (ListIndexLabel[i] == Data.IndexLabelStart) { IndexListLabelStart = i; } if (ListIndexLabel[i] == Data.IndexLabelEnd) { IndexListLabelEnd = i; } } if (0 > IndexListLabelStart) { IndexListLabelStart = 0; } if (0 > IndexListLabelEnd) { IndexListLabelEnd = CountLabel - 1; } int OffsetStart = Data.FrameOffsetStart; int OffsetEnd = Data.FrameOffsetEnd; int FrameNoStart = ListFrameNoLabel[IndexListLabelStart]; int FrameNoEnd = ListFrameNoLabel[IndexListLabelEnd]; int IndexListLabelNow; int FrameNoLimit; /* Range "Start" */ EditorGUILayout.LabelField("Range Start: (" + FrameNoStart.ToString() + " + " + OffsetStart.ToString() + ") = " + (FrameNoStart + OffsetStart).ToString() ); /* Start-Label Select */ IndexListLabelNow = EditorGUILayout.Popup("Range Start Label", IndexListLabelStart, ListNameLabel); if (IndexListLabelNow != IndexListLabelStart) { /* Data is valid & Changed Animation */ IndexListLabelStart = IndexListLabelNow; FlagUpdate |= true; } Data.IndexLabelStart = ListIndexLabel[IndexListLabelStart]; FrameNoStart = ListFrameNoLabel[IndexListLabelStart]; /* Start-Offset */ FrameNoLimit = FrameNoEnd + OffsetEnd; OffsetStart = EditorGUILayout.IntField("Range Start Offset", Data.FrameOffsetStart); EditorGUILayout.LabelField("- Valid Value Range: Min[" + (-FrameNoStart).ToString() + "] to Max[" + ((FrameNoLimit - FrameNoStart) - 1).ToString() + "] " ); OffsetStart = (FrameNoLimit <= (FrameNoStart + OffsetStart)) ? ((FrameNoLimit - FrameNoStart) - 1) : OffsetStart; OffsetStart = (0 > (FrameNoStart + OffsetStart)) ? (0 - FrameNoStart) : OffsetStart; OffsetStart = (FrameNoLast < (FrameNoStart + OffsetStart)) ? (FrameNoLast - FrameNoStart) : OffsetStart; if (Data.FrameOffsetStart != OffsetStart) { Data.FrameOffsetStart = OffsetStart; FlagUpdate |= true; } EditorGUILayout.Space(); /* Range "End" */ EditorGUILayout.LabelField("Range End: (" + FrameNoEnd.ToString() + " + " + OffsetEnd.ToString() + ") = " + (FrameNoEnd + OffsetEnd).ToString() ); /* End-Label Select */ IndexListLabelNow = EditorGUILayout.Popup("Range End Label", IndexListLabelEnd, ListNameLabel); if (IndexListLabelNow != IndexListLabelEnd) { /* Data is valid & Changed Animation */ IndexListLabelEnd = IndexListLabelNow; FlagUpdate |= true; } Data.IndexLabelEnd = ListIndexLabel[IndexListLabelEnd]; FrameNoEnd = ListFrameNoLabel[IndexListLabelEnd]; /* End-Offset */ FrameNoLimit = FrameNoStart + OffsetStart; OffsetEnd = EditorGUILayout.IntField("Range End Offset", Data.FrameOffsetEnd); EditorGUILayout.LabelField("- Valid Value Range: Min[" + ((FrameNoLimit - FrameNoEnd) + 1).ToString() + "] to Max[" + (FrameNoLast - FrameNoEnd).ToString() + "] " ); OffsetEnd = (FrameNoLimit >= (FrameNoEnd + OffsetEnd)) ? ((FrameNoLimit - FrameNoEnd) + 1) : OffsetEnd; OffsetEnd = (0 > (FrameNoEnd + OffsetEnd)) ? (0 - FrameNoEnd) : OffsetEnd; OffsetEnd = (FrameNoLast < (FrameNoEnd + OffsetEnd)) ? (FrameNoLast - FrameNoEnd) : OffsetEnd; if (Data.FrameOffsetEnd != OffsetEnd) { Data.FrameOffsetEnd = OffsetEnd; FlagUpdate |= true; } EditorGUILayout.Space(); int FrameNoRangeStart = FrameNoStart + OffsetStart; int FrameNoRangeEnd = FrameNoEnd + OffsetEnd; int CountFrameRange = FrameNoRangeEnd - FrameNoRangeStart; int FrameNoOffset = EditorGUILayout.IntField("Initial Start Offset", Data.FrameOffsetInitial); EditorGUILayout.LabelField("- Valid Value Range: Min[0] to Max[" + CountFrameRange.ToString() + "]"); FrameNoOffset = (0 > FrameNoOffset) ? 0 : FrameNoOffset; FrameNoOffset = (CountFrameRange <= FrameNoOffset) ? CountFrameRange : FrameNoOffset; if (FrameNoOffset != Data.FrameOffsetInitial) { Data.FrameOffsetInitial = FrameNoOffset; FlagUpdate |= true; } EditorGUILayout.Space(); bool FlagPingpongNow = EditorGUILayout.Toggle("Play-Pingpong", Data.FlagPingpong); if (FlagPingpongNow != Data.FlagPingpong) { Data.FlagPingpong = FlagPingpongNow; FlagUpdate |= true; } EditorGUILayout.Space(); if (0.0f == Data.RateSpeedInitial) { Data.RateSpeedInitial = 1.0f; } float RateSpeedNow = EditorGUILayout.FloatField("Rate Time-Progress", Data.RateSpeedInitial); EditorGUILayout.LabelField("(set Negative-Value, Play Backwards.)"); if (RateSpeedNow != Data.RateSpeedInitial) { Data.RateSpeedInitial = RateSpeedNow; FlagUpdate |= true; } EditorGUILayout.Space(); int TimesPlayNow = EditorGUILayout.IntField("Number of Plays", Data.TimesPlay); EditorGUILayout.LabelField("(1: No Loop / 0: Infinite Loop)"); if (TimesPlayNow != Data.TimesPlay) { Data.TimesPlay = TimesPlayNow; FlagUpdate |= true; } EditorGUILayout.Space(); if (true == GUILayout.Button("Reset (Reinitialize)")) { Data.IndexAnimation = 0; Data.FrameOffsetInitial = 0; Data.RateSpeedInitial = 1.0f; Data.TimesPlay = 0; Data.FlagPingpong = false; Data.IndexLabelStart = (int)(Library_SpriteStudio.KindLabelAnimationReserved.START | Library_SpriteStudio.KindLabelAnimationReserved.INDEX_RESERVED); Data.FrameOffsetStart = 0; Data.IndexLabelEnd = (int)(Library_SpriteStudio.KindLabelAnimationReserved.END | Library_SpriteStudio.KindLabelAnimationReserved.INDEX_RESERVED); Data.FrameOffsetEnd = 0; Data.FlagAnimationStopInitial = false; FlagUpdate = true; /* Force */ } /* Re-Play Animation */ if (true == FlagUpdate) { Data.AnimationPlay(); if (true == Data.FlagAnimationStopInitial) { Data.AnimationStop(); } } } else { EditorGUILayout.LabelField("Error[Datas Missing! (Fatal)]"); } } EditorGUI.indentLevel = LevelIndent; EditorGUILayout.Space(); // Data.FlagHideForce = EditorGUILayout.Toggle("Force-Hide", Data.FlagHideForce); // if(true == GUILayout.Button("Apply \"Force-Hide\" to Children")) // { // LibraryEditor_SpriteStudio.Utility.HideSetForce(Data.gameObject, Data.FlagHideForce, true, false); // } // EditorGUILayout.Space(); // EditorGUILayout.Space(); // if(true == GUILayout.Button("Reset Parent-\"View\"")) // { // Data.ViewSet(); // } if (true == GUI.changed) { EditorUtility.SetDirty(target); } }
public override void OnInspectorGUI() { Script_SpriteStudio_RootEffect Data = (Script_SpriteStudio_RootEffect)target; EditorGUILayout.LabelField("[SpriteStudio Root-Effect]"); int LevelIndent = 0; EditorGUILayout.Space(); Data.InstanceManagerDraw = (Script_SpriteStudio_ManagerDraw)(EditorGUILayout.ObjectField("View (Manager-Draw)", Data.InstanceManagerDraw, typeof(Script_SpriteStudio_ManagerDraw), true)); EditorGUILayout.Space(); FoldOutStaticDatas = EditorGUILayout.Foldout(FoldOutStaticDatas, "Static Datas"); if (true == FoldOutStaticDatas) { EditorGUI.indentLevel = LevelIndent + 1; Data.DataCellMap = (Script_SpriteStudio_DataCell)(EditorGUILayout.ObjectField("Data:CellMap", Data.DataCellMap, typeof(Script_SpriteStudio_DataCell), true)); Data.DataEffect = (Script_SpriteStudio_DataEffect)(EditorGUILayout.ObjectField("Data:Effect", Data.DataEffect, typeof(Script_SpriteStudio_DataEffect), true)); EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutMaterialTable = EditorGUILayout.Foldout(FoldOutMaterialTable, "Based-Material Table"); if (true == FoldOutMaterialTable) { EditorGUI.indentLevel = LevelIndent + 1; if (null != Data.TableMaterial) { int CountShader = (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR_EFFECT - 1); int Count = Data.TableMaterial.Length / CountShader; int MaterialNoTop = 0; Library_SpriteStudio.KindColorOperation MaterialTableNo = 0; string NameField = ""; for (int i = 0; i < Count; i++) { MaterialNoTop = i * (int)(Library_SpriteStudio.KindColorOperation.TERMINATOR_EFFECT - 1); EditorGUILayout.LabelField("Material No [" + MaterialNoTop + "-" + ((MaterialNoTop + CountShader) - 1) + "]: Texture-" + i ); EditorGUI.indentLevel = LevelIndent + 2; for (int j = 0; j < CountShader; j++) { MaterialTableNo = (Library_SpriteStudio.KindColorOperation)(j + 1); NameField = "Shader [" + MaterialTableNo.ToString() + "]"; Data.TableMaterial[MaterialNoTop + j] = (Material)(EditorGUILayout.ObjectField(NameField, Data.TableMaterial[MaterialNoTop + j], typeof(Material), false)); } EditorGUILayout.Space(); EditorGUI.indentLevel = LevelIndent + 1; } } EditorGUI.indentLevel = LevelIndent; } EditorGUILayout.Space(); FoldOutPlayInformation = EditorGUILayout.Foldout(FoldOutPlayInformation, "Initial/Preview Play Setting"); if (true == FoldOutPlayInformation) { EditorGUI.indentLevel = LevelIndent; Data.FlagHideForce = EditorGUILayout.Toggle("Hide Force", Data.FlagHideForce); EditorGUILayout.Space(); int CountLimitParts = EditorGUILayout.IntField("Count Limit Parts", Data.CountLimitPartsInitial); EditorGUILayout.LabelField("(-1: Default-Value Set)"); if (-1 != CountLimitParts) { if (0 > CountLimitParts) { CountLimitParts = -1; } } if (CountLimitParts != Data.CountLimitPartsInitial) { Data.CountLimitPartsInitial = CountLimitParts; } EditorGUI.indentLevel = LevelIndent; } if (true == GUI.changed) { EditorUtility.SetDirty(target); } }