From a6819012951765d784a951aa9a85c9b2ca44a372 Mon Sep 17 00:00:00 2001 From: Jackson Wood Date: Mon, 23 Jul 2018 12:10:08 +1000 Subject: [PATCH] initial commit --- LICENSE.meta | 7 + MainScene.unity | 2032 ++++++++++++++++++++++++++++++++ MainScene.unity.meta | 7 + Scripts.meta | 8 + Scripts/Converter.cs | 1229 +++++++++++++++++++ Scripts/Converter.cs.meta | 11 + Scripts/DefinitionNode.cs | 25 + Scripts/DefinitionNode.cs.meta | 11 + Scripts/Definitions.cs | 76 ++ Scripts/Definitions.cs.meta | 11 + Scripts/UIHelper.cs | 34 + Scripts/UIHelper.cs.meta | 11 + 12 files changed, 3462 insertions(+) create mode 100644 LICENSE.meta create mode 100644 MainScene.unity create mode 100644 MainScene.unity.meta create mode 100644 Scripts.meta create mode 100644 Scripts/Converter.cs create mode 100644 Scripts/Converter.cs.meta create mode 100644 Scripts/DefinitionNode.cs create mode 100644 Scripts/DefinitionNode.cs.meta create mode 100644 Scripts/Definitions.cs create mode 100644 Scripts/Definitions.cs.meta create mode 100644 Scripts/UIHelper.cs create mode 100644 Scripts/UIHelper.cs.meta diff --git a/LICENSE.meta b/LICENSE.meta new file mode 100644 index 0000000..fc76f10 --- /dev/null +++ b/LICENSE.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c2e21d592ea224be58f09f4300aa242e +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/MainScene.unity b/MainScene.unity new file mode 100644 index 0000000..4824fb1 --- /dev/null +++ b/MainScene.unity @@ -0,0 +1,2032 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657856, g: 0.49641234, b: 0.57481724, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &78500755 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 78500756} + - component: {fileID: 78500758} + - component: {fileID: 78500757} + m_Layer: 5 + m_Name: Dir_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &78500756 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 78500755} + 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_Children: [] + m_Father: {fileID: 465308905} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &78500757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 78500755} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8113208, g: 0.8113208, b: 0.8113208, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 59 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Doxygen XML Directory +--- !u!222 &78500758 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 78500755} + m_CullTransparentMesh: 0 +--- !u!1 &266491530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 266491531} + - component: {fileID: 266491533} + - component: {fileID: 266491532} + m_Layer: 5 + m_Name: Dir_Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &266491531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 266491530} + 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_Children: [] + m_Father: {fileID: 1144159965} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &266491532 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 266491530} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8113208, g: 0.8113208, b: 0.8113208, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 59 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Wiki Output Directory +--- !u!222 &266491533 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 266491530} + m_CullTransparentMesh: 0 +--- !u!1 &465308904 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 465308905} + m_Layer: 5 + m_Name: Input + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &465308905 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 465308904} + 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_Children: + - {fileID: 78500756} + - {fileID: 1908287743} + - {fileID: 669580909} + m_Father: {fileID: 1910521920} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 70} + m_Pivot: {x: 0, y: 1} +--- !u!1 &557558535 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 557558536} + - component: {fileID: 557558539} + - component: {fileID: 557558538} + - component: {fileID: 557558537} + m_Layer: 5 + m_Name: Dir_Browse + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &557558536 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 557558535} + 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_Children: + - {fileID: 1818587724} + m_Father: {fileID: 1144159965} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -35} + m_SizeDelta: {x: 120, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!114 &557558537 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 557558535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 557558538} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1590239589} + m_MethodName: OpenFileBrowser + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &557558538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 557558535} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, 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 +--- !u!222 &557558539 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 557558535} + m_CullTransparentMesh: 0 +--- !u!1 &669580908 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 669580909} + - component: {fileID: 669580912} + - component: {fileID: 669580911} + - component: {fileID: 669580910} + m_Layer: 5 + m_Name: Dir_Browse + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &669580909 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 669580908} + 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_Children: + - {fileID: 1976728122} + m_Father: {fileID: 465308905} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -35} + m_SizeDelta: {x: 120, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!114 &669580910 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 669580908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 669580911} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1590239589} + m_MethodName: OpenFileBrowser + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &669580911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 669580908} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, 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 +--- !u!222 &669580912 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 669580908} + m_CullTransparentMesh: 0 +--- !u!1 &881848984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 881848985} + - component: {fileID: 881848987} + - component: {fileID: 881848986} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &881848985 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881848984} + 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_Children: [] + m_Father: {fileID: 1937619058} + m_RootOrder: 1 + 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!114 &881848986 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881848984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: /Users/melodatron/Documents/GameDev/mod.io/_wiki/ +--- !u!222 &881848987 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 881848984} + m_CullTransparentMesh: 0 +--- !u!1 &885879689 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 885879690} + - component: {fileID: 885879692} + - component: {fileID: 885879691} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &885879690 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 885879689} + 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_Children: [] + m_Father: {fileID: 1937619058} + m_RootOrder: 0 + 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!114 &885879691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 885879689} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter text... +--- !u!222 &885879692 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 885879689} + m_CullTransparentMesh: 0 +--- !u!1 &932843329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 932843330} + - component: {fileID: 932843332} + - component: {fileID: 932843331} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &932843330 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932843329} + 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_Children: [] + m_Father: {fileID: 1908287743} + m_RootOrder: 0 + 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!114 &932843331 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932843329} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter text... +--- !u!222 &932843332 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 932843329} + m_CullTransparentMesh: 0 +--- !u!1 &946967931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 946967933} + - component: {fileID: 946967932} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &946967932 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946967931} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &946967933 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 946967931} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1002517540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1002517541} + - component: {fileID: 1002517543} + - component: {fileID: 1002517542} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1002517541 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002517540} + 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_Children: [] + m_Father: {fileID: 1908287743} + m_RootOrder: 1 + 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!114 &1002517542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002517540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: /Users/melodatron/Documents/GameDev/mod.io/_documentation/xml +--- !u!222 &1002517543 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1002517540} + m_CullTransparentMesh: 0 +--- !u!1 &1144159964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1144159965} + m_Layer: 5 + m_Name: Output + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1144159965 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1144159964} + 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_Children: + - {fileID: 266491531} + - {fileID: 1937619058} + - {fileID: 557558536} + m_Father: {fileID: 1910521920} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -72} + m_SizeDelta: {x: 0, y: 70} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1337439664 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1337439665} + - component: {fileID: 1337439667} + - component: {fileID: 1337439666} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1337439665 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337439664} + 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_Children: + - {fileID: 1729482000} + - {fileID: 1910521920} + m_Father: {fileID: 2037043518} + m_RootOrder: 0 + 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} + m_SizeDelta: {x: 0, y: 0.000015258789} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1337439666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337439664} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.11320752, g: 0.11320752, b: 0.11320752, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1337439667 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337439664} + m_CullTransparentMesh: 0 +--- !u!1 &1428573601 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1428573605} + - component: {fileID: 1428573604} + - component: {fileID: 1428573603} + - component: {fileID: 1428573602} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1428573602 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1428573601} + m_Enabled: 1 +--- !u!124 &1428573603 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1428573601} + m_Enabled: 1 +--- !u!20 &1428573604 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1428573601} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1428573605 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1428573601} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1480127557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1480127558} + - component: {fileID: 1480127561} + - component: {fileID: 1480127560} + - component: {fileID: 1480127559} + m_Layer: 5 + m_Name: Run + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1480127558 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480127557} + 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_Children: + - {fileID: 1789660749} + m_Father: {fileID: 1910521920} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1480127559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480127557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1480127560} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1590239589} + m_MethodName: RunOnDirectory + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1480127560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480127557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, 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 +--- !u!222 &1480127561 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1480127557} + m_CullTransparentMesh: 0 +--- !u!1 &1590239588 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1590239590} + - component: {fileID: 1590239589} + m_Layer: 0 + m_Name: UIHelper + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1590239589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1590239588} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0286570d8b1294e77b1519117cc0092f, type: 3} + m_Name: + m_EditorClassIdentifier: + xmlDirInputField: {fileID: 1908287744} + outDirInputField: {fileID: 1937619059} +--- !u!4 &1590239590 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1590239588} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 295.90485, y: 469.97318, z: 76.127335} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1635394067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635394070} + - component: {fileID: 1635394069} + - component: {fileID: 1635394068} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1635394068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1635394067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1635394069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1635394067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &1635394070 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1635394067} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1729481999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1729482000} + - component: {fileID: 1729482002} + - component: {fileID: 1729482001} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1729482000 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729481999} + 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_Children: [] + m_Father: {fileID: 1337439665} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 20, y: -20} + m_SizeDelta: {x: -40, y: 40} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1729482001 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729481999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8018868, g: 0.8018868, b: 0.8018868, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 26 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Mod.IO Wiki Generation Tool +--- !u!222 &1729482002 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1729481999} + m_CullTransparentMesh: 0 +--- !u!1 &1789660748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1789660749} + - component: {fileID: 1789660751} + - component: {fileID: 1789660750} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1789660749 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1789660748} + 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_Children: [] + m_Father: {fileID: 1480127558} + m_RootOrder: 0 + 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} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1789660750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1789660748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Run +--- !u!222 &1789660751 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1789660748} + m_CullTransparentMesh: 0 +--- !u!1 &1818587723 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1818587724} + - component: {fileID: 1818587726} + - component: {fileID: 1818587725} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1818587724 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1818587723} + 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_Children: [] + m_Father: {fileID: 557558536} + m_RootOrder: 0 + 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} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1818587725 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1818587723} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Browse +--- !u!222 &1818587726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1818587723} + m_CullTransparentMesh: 0 +--- !u!1 &1908287742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1908287743} + - component: {fileID: 1908287746} + - component: {fileID: 1908287745} + - component: {fileID: 1908287744} + m_Layer: 5 + m_Name: Dir_Field + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1908287743 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908287742} + 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_Children: + - {fileID: 932843330} + - {fileID: 1002517541} + m_Father: {fileID: 465308905} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -35} + m_SizeDelta: {x: -120, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1908287744 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908287742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1908287745} + m_TextComponent: {fileID: 1002517542} + m_Placeholder: {fileID: 932843331} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: /Users/melodatron/Documents/GameDev/mod.io/_documentation/xml + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1908287745 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908287742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &1908287746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1908287742} + m_CullTransparentMesh: 0 +--- !u!1 &1910521919 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1910521920} + m_Layer: 5 + m_Name: MainPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1910521920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1910521919} + 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_Children: + - {fileID: 465308905} + - {fileID: 1144159965} + - {fileID: 1480127558} + m_Father: {fileID: 1337439665} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 20, y: -100} + m_SizeDelta: {x: -40, y: -100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &1937619057 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1937619058} + - component: {fileID: 1937619061} + - component: {fileID: 1937619060} + - component: {fileID: 1937619059} + m_Layer: 5 + m_Name: Dir_Field + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1937619058 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1937619057} + 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_Children: + - {fileID: 885879690} + - {fileID: 881848985} + m_Father: {fileID: 1144159965} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -35} + m_SizeDelta: {x: -120, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1937619059 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1937619057} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1937619060} + m_TextComponent: {fileID: 881848986} + m_Placeholder: {fileID: 885879691} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: /Users/melodatron/Documents/GameDev/mod.io/_wiki/ + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1937619060 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1937619057} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + 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 +--- !u!222 &1937619061 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1937619057} + m_CullTransparentMesh: 0 +--- !u!1 &1976728121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1976728122} + - component: {fileID: 1976728124} + - component: {fileID: 1976728123} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1976728122 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1976728121} + 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_Children: [] + m_Father: {fileID: 669580909} + m_RootOrder: 0 + 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} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1976728123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1976728121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Browse +--- !u!222 &1976728124 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1976728121} + m_CullTransparentMesh: 0 +--- !u!1 &2037043514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2037043518} + - component: {fileID: 2037043517} + - component: {fileID: 2037043516} + - component: {fileID: 2037043515} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2037043515 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037043514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2037043516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037043514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2037043517 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037043514} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &2037043518 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2037043514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1337439665} + m_Father: {fileID: 0} + m_RootOrder: 2 + 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: 0, y: 0} + m_Pivot: {x: 0, y: 0} diff --git a/MainScene.unity.meta b/MainScene.unity.meta new file mode 100644 index 0000000..94ed10c --- /dev/null +++ b/MainScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8e6cca13bcd234a9f8dab3a744f65ca5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts.meta b/Scripts.meta new file mode 100644 index 0000000..450a12f --- /dev/null +++ b/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d1334e78aa9f64e2db1a78c0653594f9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts/Converter.cs b/Scripts/Converter.cs new file mode 100644 index 0000000..7f6bbb8 --- /dev/null +++ b/Scripts/Converter.cs @@ -0,0 +1,1229 @@ +using System; +using System.Text; +using System.Xml; +using System.Collections.Generic; +using System.IO; + +// TASKS +// . enums (in namespace files, memberdefs, children of namespace compounddef) +// . inherited member parent nodes (definition?) +// . inner classes (DONE?) +// . remarks is in detailedDescription! +// . add GitHub links +// . layout/titling work + +public enum WikiMode +{ + Unity = 0, +} + +public static class Converter +{ + private delegate void ProcessNode(XmlNode xmlNode, DefinitionNode parentNode); + + // AS definitionNodeMap + private static Dictionary definitionNodeMap; + private static List rootNodes; + + private static StringBuilder outputLog; + + private static Exception lastRunException = null; + + + // ---------[ BASICS ]--------- + public static WikiMode mode = WikiMode.Unity; + + public static void RunOnFile(string filePath, string outputDirectory) + { + Converter.Initialize(); + + try + { + Converter.ParseFile(filePath); + Converter.BuildWiki(outputDirectory); + } + catch(Exception e) + { + lastRunException = e; + } + + + string logFilePath = (AppDomain.CurrentDomain.BaseDirectory + + "logs/log_" + DateTime.Now.ToFileTime() + ".txt"); + Converter.BuildLog(logFilePath); + System.Diagnostics.Process.Start(logFilePath); + } + + public static void RunOnDirectory(string directory, string outputDirectory) + { + Converter.Initialize(); + + try + { + foreach(string filePath in Directory.GetFiles(directory, "*.xml", SearchOption.AllDirectories)) + { + ParseFile(filePath); + } + Converter.BuildWiki(outputDirectory); + } + catch(Exception e) + { + lastRunException = e; + } + + string logFilePath = (AppDomain.CurrentDomain.BaseDirectory + + "logs/log_" + DateTime.Now.ToFileTime() + ".txt"); + Converter.BuildLog(logFilePath); + System.Diagnostics.Process.Start(logFilePath); + } + + private static void Initialize() + { + outputLog = new StringBuilder(); + definitionNodeMap = new Dictionary(); + rootNodes = new List(); + lastRunException = null; + } + + private static void ParseFile(string filePath) + { + outputLog.Append("\n--------------------\nParsing file: " + filePath + '\n'); + + XmlDocument doc = new XmlDocument(); + doc.Load(filePath); + + ProcessChildNodes(doc.DocumentElement, null); + } + + private static DefinitionNode FindDefinitionNodeById(string d_id) + { + foreach(DefinitionNode node in definitionNodeMap.Keys) + { + if(node.d_id == d_id) { return node; } + } + + return null; + } + + private static IEnumerable FindDefinitionNodesWithName(string name) + { + foreach(DefinitionNode node in definitionNodeMap.Keys) + { + if(node.name == name) { yield return node; } + } + } + + private static DefinitionNode FindDefinitionNodeAt(string nodeHierarchy) + { + string[] nodeNames = nodeHierarchy.Split('.'); + int lastNodeNameIndex = nodeNames.Length - 1; + DefinitionNode foundNode = null; + + foreach(DefinitionNode node in rootNodes) + { + if(node.name == nodeNames[0]) + { + foundNode = node; + break; + } + } + + int childIndex = 0; + int currentDepth = 1; + + while(foundNode != null + && currentDepth < lastNodeNameIndex) + { + DefinitionNode childNode = foundNode.children[childIndex]; + + if(childNode.name == nodeNames[currentDepth]) + { + foundNode = childNode; + ++currentDepth; + childIndex = 0; + } + else + { + ++childIndex; + } + + if(childIndex >= foundNode.children.Count) + { + foundNode = null; + } + } + + return foundNode; + } + + private static DefinitionNode CreateOrGetNodeAt(string nodeHierarchy) + { + outputLog.Append(". node hierachy: "); + + string[] nodeNames = nodeHierarchy.Split('.'); + DefinitionNode lastNode = null; + + foreach(DefinitionNode node in rootNodes) + { + if(node.name == nodeNames[0]) + { + lastNode = node; + break; + } + } + + if(lastNode == null) + { + lastNode = new DefinitionNode(); + lastNode.name = nodeNames[0]; + + definitionNodeMap[lastNode] = null; + + rootNodes.Add(lastNode); + + outputLog.Append("[NEW]"); + } + + outputLog.Append(nodeNames[0] + '.'); + + int childIndex = 0; + int currentDepth = 1; + + while(currentDepth < nodeNames.Length) + { + if(childIndex >= lastNode.children.Count) + { + DefinitionNode newChild = new DefinitionNode(); + newChild.name = nodeNames[currentDepth]; + + definitionNodeMap[newChild] = null; + + lastNode.children.Add(newChild); + newChild.parent = lastNode; + + outputLog.Append("[NEW]"); + } + + DefinitionNode lastNodeChild = lastNode.children[childIndex]; + + if(lastNodeChild.name == nodeNames[currentDepth]) + { + outputLog.Append(nodeNames[currentDepth] + '.'); + + lastNode = lastNodeChild; + ++currentDepth; + childIndex = 0; + } + else + { + ++childIndex; + } + } + + outputLog.Length -= 1; + outputLog.Append('\n'); + + return lastNode; + } + + private static string ParseXMLString(string xmlString) + { + return xmlString.Replace("< ", "[").Replace("<", "[") + .Replace(" >", "]").Replace(">", "]") + .Replace("'","\'"); + } + + private static string ParseDescription(XmlNode descriptionNode) + { + Stack nodeStack = new Stack(); + nodeStack.Push(descriptionNode); + + StringBuilder retVal = new StringBuilder(); + ProcessDescriptionNode(descriptionNode, retVal); + + return retVal.ToString(); + } + + private static void ProcessDescriptionNode(XmlNode node, StringBuilder result) + { + bool isTagUnrecognised = false; + + // - open tag - + switch(node.Name) + { + case "briefdescription": + case "para": + case "#text": + break; + + case "ulink": + { + result.Append('['); + } + break; + + case "ref": + { + result.Append("[["); + } + break; + + default: + { + outputLog.Append("WARNING: Unrecognized tag in description (" + node.Name + ")\n"); + isTagUnrecognised = true; + + result.Append("!START." + node.Name + "!"); + } + break; + } + + // - innards - + if(node.HasChildNodes) + { + foreach(XmlNode childNode in node.ChildNodes) + { + ProcessDescriptionNode(childNode, result); + } + } + else if(node.Value != null) + { + result.Append(ParseXMLString(node.Value)); + } + + // - close tag - + if(isTagUnrecognised) + { + result.Append("!END." + node.Name + "!"); + } + else + { + switch(node.Name) + { + case "para": + { + result.Append("\n\n"); + } + break; + + case "ulink": + { + result.Append("](" + node.Attributes["url"].Value + ")"); + } + break; + + case "ref": + { + result.Append("]]"); + } + break; + } + } + } + + private static TypeDescription ParseTypeDescription(XmlNode node) + { + XmlNode nodeClone = node.CloneNode(true); + + nodeClone.InnerXml = nodeClone.InnerXml.Replace("<", "") + .Replace("const ", "") + .Replace("static ", "") + .Replace("readonly ", ""); + + outputLog.Append(". member type (INNERXML): " + nodeClone.InnerXml + '\n'); + + if(nodeClone.FirstChild == null) { return null; } + + outputLog.Append(". member type (DEBUG): "); + TypeDescription[] results = ProcessTypeNode(nodeClone.FirstChild); + outputLog.Append('\n'); + + + TypeDescription td; + if(results.Length == 1) + { + td = results[0]; + } + else + { + outputLog.Append("WARNING: Unexpected type count returned (" + results.Length + ")\n"); + td = new TypeDescription(); + } + + outputLog.Append(". member type: " + td.name + '\n'); + + return td; + } + + private static TypeDescription[] ProcessTypeNode(XmlNode node) + { + TypeDescription[] retVal; + + switch(node.Name) + { + // Handled by previous node + case "template": + { + outputLog.Append(".t"); + } + return null; + + case "#text": + { + string[] typeNames = node.Value.Replace(" ", "").Split(','); + retVal = new TypeDescription[typeNames.Length]; + + for(int i = 0; i < typeNames.Length; ++i) + { + retVal[i] = new TypeDescription() + { + name = typeNames[i], + isRef = false, + }; + + outputLog.Append(".I:" + retVal[i].name + ','); + } + + outputLog.Length -= 1; + } + break; + + case "ref": + { + TypeDescription desc = new TypeDescription() + { + name = node.InnerText, + d_id = node.Attributes["refid"].Value, + isRef = true, + }; + + retVal = new TypeDescription[1]; + retVal[0] = desc; + + outputLog.Append(".R:" + desc.name); + } + break; + + default: + { + outputLog.Append("WARNING: Unrecognised tag in type node (" + node.Name + ")\n"); + retVal = new TypeDescription[] { new TypeDescription() }; + } + break; + } + + if(node.NextSibling != null + && node.NextSibling.Name == "template") + { + TypeDescription parentDesc = retVal[retVal.Length - 1]; + parentDesc.templatedTypes = new List(); + + outputLog.Append(".T<"); + foreach(XmlNode childNode in node.NextSibling.ChildNodes) + { + parentDesc.templatedTypes.AddRange(ProcessTypeNode(childNode)); + } + outputLog.Append(">"); + } + + return retVal; + } + + private static void BuildLog(string filePath) + { + if(lastRunException == null) + { + outputLog.Insert(0, "WIKIBUILD SUCCEEDED\n"); + } + else + { + outputLog.Insert(0, "WIKIBUILD FAILED\n"); + + outputLog.Append("\n!!! FAILED !!!\n" + + GenerateExceptionDebugString(lastRunException) + '\n'); + } + + Directory.CreateDirectory(Path.GetDirectoryName(filePath)); + + File.WriteAllText(filePath, outputLog.ToString()); + + UnityEngine.Debug.Log("---------[ " + filePath + " ]---------\n" + outputLog); + } + + private static string GenerateExceptionDebugString(Exception e) + { + var debugString = new System.Text.StringBuilder(); + + Exception baseException = e.GetBaseException(); + debugString.Append(baseException.GetType().Name + ": " + baseException.Message + "\n"); + + var stackTrace = new System.Diagnostics.StackTrace(baseException, true); + + int frameCount = Math.Min(stackTrace.FrameCount, 6); + for(int i = 0; i < frameCount; ++i) + { + var stackFrame = stackTrace.GetFrame(i); + var method = stackFrame.GetMethod(); + + debugString.Append(method.ReflectedType + + "." + method.Name + "("); + + var methodsParameters = method.GetParameters(); + foreach(var parameter in methodsParameters) + { + debugString.Append(parameter.ParameterType.Name + " " + + parameter.Name + ", "); + } + if(methodsParameters.Length > 0) + { + debugString.Length -= 2; + } + + debugString.Append(") @ " + stackFrame.GetFileName() + + ":" + stackFrame.GetFileLineNumber() + + "\n"); + } + + return debugString.ToString(); + } + + + // --------- [PROCESSING] --------- + // private static Dictionary> nodeActionMap = new Dictionary> + private static Dictionary nodeActionMap = new Dictionary + { + { "compounddef", Converter.ProcessCompound }, + { "innerclass", Converter.ProcessInnerClass }, + { "sectiondef", Converter.ProcessSection }, + { "memberdef", Converter.ProcessMember }, + { "type", Converter.ProcessType }, + { "location", Converter.ProcessLocation }, + // { "briefdescription", Converter.ProcessBriefDescription }, + { "detaileddescription", Converter.ProcessDetailedDescription }, + }; + + private static List nodesToSkip = new List() + { + "listofallmembers", + "compoundname", + "name", + "briefdescription", + }; + + private static void ProcessChildNodes(XmlNode xmlNode, DefinitionNode parentNode) + { + outputLog.Append("Processing children of " + xmlNode.Name + " for parent " + (parentNode == null ? "NULL" : parentNode.name) + '\n'); + + foreach(XmlNode xmlChildNode in xmlNode.ChildNodes) + { + ProcessNode nodeAction; + if(nodesToSkip.Contains(xmlChildNode.Name)) + { + outputLog.Append("Ignoring " + xmlChildNode.Name + " node\n"); + continue; + } + else if(nodeActionMap.TryGetValue(xmlChildNode.Name, out nodeAction)) + { + outputLog.Append("Processing " + xmlChildNode.Name + " node\n"); + nodeAction(xmlChildNode, parentNode); + } + else + { + ProcessChildNodes(xmlChildNode, parentNode); + } + } + } + + private static void ProcessCompound(XmlNode xmlNode, DefinitionNode parentNode) + { + switch(xmlNode.Attributes["kind"].Value) + { + case "file": + { + outputLog.Append(". is an ignored compound kind (" + xmlNode.Attributes["kind"].Value + ")\n"); + } + break; + + case "class": + { + outputLog.Append(". is class\n"); + ProcessClass(xmlNode, parentNode); + } + break; + + case "interface": + { + outputLog.Append(". is interface\n"); + ProcessInterface(xmlNode, parentNode); + } + break; + + default: + { + outputLog.Append(". is unknown compound kind: \"" + xmlNode.Attributes["kind"].Value + "\"\n"); + ProcessChildNodes(xmlNode, parentNode); + } + break; + } + } + + private static void ProcessClass(XmlNode xmlNode, DefinitionNode parentNode) + { + // - get node - + string nodeId = xmlNode.Attributes["id"].Value; + DefinitionNode classNode = FindDefinitionNodeById(nodeId); + + if(classNode == null) + { + outputLog.Append(". new class node[" + nodeId + "]\n"); + string nodeHierarchy = xmlNode["compoundname"].InnerXml.Replace("::", "."); + classNode = CreateOrGetNodeAt(nodeHierarchy); + classNode.d_id = nodeId; + } + + // - get def - + CompoundDefinition classDef = definitionNodeMap[classNode] as CompoundDefinition; + + if(classDef == null) + { + classDef = new CompoundDefinition(); + classDef.name = classNode.name; + + definitionNodeMap[classNode] = classDef; + + outputLog.Append(". new class definition\n"); + } + + // - attributes - + classDef.kind = xmlNode.Attributes["kind"].Value; // "class", "struct", etc + + // - instantiate member nodes - + outputLog.Append(". processing member list\n"); + foreach(XmlNode memberNode in xmlNode["listofallmembers"].ChildNodes) + { + // outputLog.Append(". member node: " + memberNode.name); + + string memberId = memberNode.Attributes["refid"].Value; + string memberFullName = (DefinitionNode.GenerateFullName(classNode) + + '.' + ParseXMLString(memberNode["name"].InnerXml).Replace("::", ".")); + + DefinitionNode memberDefNode = FindDefinitionNodeById(memberId); + if(memberDefNode == null) + { + outputLog.Append(". instantiating member node [" + memberId + "]\n"); + memberDefNode = CreateOrGetNodeAt(memberFullName); + memberDefNode.d_id = memberId; + } + else + { + outputLog.Append(". existing member node found [" + memberId + "]: " + + DefinitionNode.GenerateFullName(memberDefNode) + '\n'); + } + } + + // - Process Members - + ProcessChildNodes(xmlNode, classNode); + } + + private static void ProcessInterface(XmlNode xmlNode, DefinitionNode parentNode) + { + // - get node - + string nodeId = xmlNode.Attributes["id"].Value; + DefinitionNode interfaceNode = FindDefinitionNodeById(nodeId); + + if(interfaceNode == null) + { + outputLog.Append(". new interface node[" + nodeId + "]\n"); + string nodeHierarchy = xmlNode["compoundname"].InnerXml.Replace("::", "."); + interfaceNode = CreateOrGetNodeAt(nodeHierarchy); + interfaceNode.d_id = nodeId; + } + + // - get def - + CompoundDefinition interfaceDefinition = definitionNodeMap[interfaceNode] as CompoundDefinition; + + if(interfaceDefinition == null) + { + interfaceDefinition = new CompoundDefinition(); + interfaceDefinition.name = interfaceNode.name; + + definitionNodeMap[interfaceNode] = interfaceDefinition; + + outputLog.Append(". new interface definition\n"); + } + + // - attributes - + interfaceDefinition.kind = xmlNode.Attributes["kind"].Value; // "class", "struct", etc + + // - instantiate member nodes - + outputLog.Append(". processing member list\n"); + foreach(XmlNode memberNode in xmlNode["listofallmembers"].ChildNodes) + { + // outputLog.Append(". member node: " + memberNode.name); + + string memberId = memberNode.Attributes["refid"].Value; + string memberFullName = (DefinitionNode.GenerateFullName(interfaceNode) + + '.' + ParseXMLString(memberNode["name"].InnerXml).Replace("::", ".")); + + DefinitionNode memberDefNode = FindDefinitionNodeById(memberId); + if(memberDefNode == null) + { + outputLog.Append(". instantiating member node [" + memberId + "]\n"); + memberDefNode = CreateOrGetNodeAt(memberFullName); + memberDefNode.d_id = memberId; + } + else + { + outputLog.Append(". existing member node found [" + memberId + "]: " + + DefinitionNode.GenerateFullName(memberDefNode) + '\n'); + } + } + + // - Process Members - + ProcessChildNodes(xmlNode, interfaceNode); + } + + private static void ProcessInnerClass(XmlNode xmlNode, DefinitionNode parentNode) + { + // - assert node exists - + string nodeId = xmlNode.Attributes["refid"].Value; + DefinitionNode classNode = FindDefinitionNodeById(nodeId); + + if(classNode == null) + { + outputLog.Append(". new class node [" + nodeId + "]\n"); + string nodeHierarchy = xmlNode.InnerText.Replace("::", "."); + classNode = CreateOrGetNodeAt(nodeHierarchy); + + classNode.d_id = nodeId; + } + else + { + outputLog.Append(". inner class exists: " + DefinitionNode.GenerateFullName(classNode)); + } + } + + private static void ProcessSection(XmlNode node, DefinitionNode parentNode) + { + outputLog.Append(". kind: " + node.Attributes["kind"].Value + '\n'); + ProcessChildNodes(node, parentNode); + } + + private static void ProcessMember(XmlNode xmlNode, DefinitionNode parentNode) + { + // - get name - + string memberName = ParseXMLString(xmlNode["name"].InnerXml).Replace("::", "."); + outputLog.Append(". name: " + memberName + '\n'); + + // - get node - + string nodeId = xmlNode.Attributes["id"].Value; + DefinitionNode memberNode = FindDefinitionNodeById(nodeId); + + if(memberNode == null) + { + outputLog.Append(". not found by id [" + nodeId + "]\n"); + + memberNode = CreateOrGetNodeAt(DefinitionNode.GenerateFullName(parentNode) + + '.' + memberName); + memberNode.d_id = nodeId; + } + else if(memberNode.parent != parentNode) + { + outputLog.Append("WARNING: memberNode.parent [" + (memberNode.parent == null ? "NULL" + : DefinitionNode.GenerateFullName(memberNode.parent)) + "] != parentNode [" + + (parentNode == null ? "NULL" : DefinitionNode.GenerateFullName(parentNode)) + + "]\n"); + } + + // - get def - + MemberDefinition memberDef = definitionNodeMap[memberNode] as MemberDefinition; + + if(memberDef == null) + { + memberDef = new MemberDefinition(); + memberDef.name = memberName; + + definitionNodeMap[memberNode] = memberDef; + + outputLog.Append(". new member definition\n"); + } + + // - build def - + string memberType = xmlNode["type"].InnerText; + if(memberType.Contains("const ")) + { + memberType.Replace("const ", ""); + memberDef.isConst = true; + memberDef.isStatic = (mode == WikiMode.Unity); + } + + if(memberType.Contains("readonly ")) + { + memberType.Replace("readonly ", ""); + memberDef.isConst = true; + } + + memberDef.type = ParseTypeDescription(xmlNode["type"]); + + switch(xmlNode.Attributes["kind"].Value) + { + case "variable": + { + memberDef.kind = MemberKind.Variable; + } + break; + case "function": + { + if(memberDef.type == null) + { + memberDef.kind = MemberKind.Constructor; + } + else + { + memberDef.kind = MemberKind.Method; + } + } + break; + case "event": + { + memberDef.kind = MemberKind.Event; + } + break; + case "property": + { + memberDef.kind = MemberKind.Property; + } + break; + default: + { + outputLog.Append("WARNING: Unrecognized member kind (" + + xmlNode.Attributes["kind"].Value + "). Skipping.\n"); + } + return; + } + + switch(xmlNode.Attributes["prot"].Value) + { + case "public": + { + memberDef.protection = ProtectionLevel.Public; + } + break; + case "private": + { + memberDef.protection = ProtectionLevel.Private; + } + break; + case "protected": + { + memberDef.protection = ProtectionLevel.Protected; + } + break; + } + + memberDef.isStatic = (xmlNode.Attributes["static"].Value == "yes"); + + memberDef.briefDescription = ParseDescription(xmlNode["briefdescription"]).Replace("\n\n", ""); + } + + private static void ProcessType(XmlNode node, DefinitionNode parentNode) + { + outputLog.Append(". not implemented\n"); + } + + private static void ProcessLocation(XmlNode node, DefinitionNode parentNode) + { + outputLog.Append(". not implemented\n"); + } + + private static void ProcessDetailedDescription(XmlNode xmlNode, DefinitionNode parentNode) + { + outputLog.Append(". not implemented\n"); + } + + // ---------[ BUILD WIKI ]--------- + private static void BuildWiki(string outputDirectory) + { + outputLog.Append("\nSTART BUILDING WIKI\n"); + + if(outputDirectory[outputDirectory.Length - 1] != '/') + { + outputDirectory += "/"; + } + + outputDirectory += "generated_pages/"; + Directory.CreateDirectory(outputDirectory); + + CreateAPIIndex(outputDirectory); + + // - sort nodes - + List classNodes = new List(); + List memberNodes = new List(); + + foreach(var kvp in definitionNodeMap) + { + if(kvp.Value is CompoundDefinition) + { + classNodes.Add(kvp.Key); + } + else if(kvp.Value is MemberDefinition) + { + memberNodes.Add(kvp.Key); + } + } + + // - output indicies - + foreach(DefinitionNode classNode in classNodes) + { + CreateClassIndex(classNode, outputDirectory); + } + + foreach(DefinitionNode memberNode in memberNodes) + { + CreateMemberIndex(memberNode, outputDirectory); + } + + outputLog.Append("END BUILDING WIKI\n"); + } + + private static void CreateAPIIndex(string outputDirectory) + { + outputLog.Append("Creating API Index\n"); + + List lines = new List(definitionNodeMap.Count + 20); + List namespaceNodes = new List(rootNodes.Count); + + foreach(DefinitionNode node in rootNodes) + { + if(definitionNodeMap[node] == null) + { + outputLog.Append(". adding root node: " + node.name); + namespaceNodes.Add(node); + } + } + + while(namespaceNodes.Count > 0) + { + DefinitionNode node = namespaceNodes[0]; + namespaceNodes.RemoveAt(0); + + outputLog.Append(". new namespace section: " + node.name); + + + StringBuilder fullNamespace = new StringBuilder(); + DefinitionNode nameNode = node; + while(nameNode != null) + { + fullNamespace.Insert(0, nameNode.name + "."); + nameNode = nameNode.parent; + } + fullNamespace.Length -= 1; + + lines.Add("## Namespace: " + fullNamespace.ToString() + '\n'); + + lines.Add("| Class | Description |"); + lines.Add("| - | - |"); + + foreach(var childNode in node.children) + { + outputLog.Append(". processing node: " + childNode.name); + + if(definitionNodeMap[childNode] == null) + { + namespaceNodes.Insert(0, childNode); + } + else + { + lines.Add("| [" + definitionNodeMap[childNode].name + "](" + + DefinitionNode.GenerateFullName(childNode) + ") " + + "| " + definitionNodeMap[childNode].briefDescription + " |"); + } + } + + lines.Add(""); + } + + string outputFilePath = outputDirectory + "API Index.md"; + File.WriteAllLines(outputFilePath, lines.ToArray()); + } + + // ref: https://docs.unity3d.com/ScriptReference/UI.Button.html + private static void CreateClassIndex(DefinitionNode classNode, + string outputDirectory) + { + string fileName = DefinitionNode.GenerateFullName(classNode) + ".md"; + string filePath = outputDirectory + fileName; + + outputLog.Append("Creating Class Index: " + filePath + '\n'); + + // - collect data - + CompoundDefinition classDefinition = definitionNodeMap[classNode] as CompoundDefinition; + List const_props = new List(); + List static_props = new List(); + List props = new List(); + List const_methods = new List(); + List static_methods = new List(); + List methods = new List(); + + foreach(var childNode in classNode.children) + { + outputLog.Append(". processing " + childNode.name + '\n'); + + MemberDefinition memberDef = definitionNodeMap[childNode] as MemberDefinition; + + if(memberDef == null)// && definitionNodeMap[childNode].protection == ProtectionLevel.Private) + { + outputLog.Append("WARNING: non-member child. Skipping.\n"); + continue; + } + else + { + switch(memberDef.kind) + { + case MemberKind.Variable: + case MemberKind.Property: + { + if(memberDef.isConst) + { + const_props.Add(childNode); + } + else if(memberDef.isStatic) + { + static_props.Add(childNode); + } + else + { + props.Add(childNode); + } + } + break; + case MemberKind.Method: + { + if(memberDef.isConst) + { + const_methods.Add(childNode); + } + else if(memberDef.isStatic) + { + static_methods.Add(childNode); + } + else + { + methods.Add(childNode); + } + } + break; + default: + { + outputLog.Append("WARNING: " + memberDef.name + + " has unrecognized member kind (" + memberDef.kind.ToString() + + "). Ignoring.\n"); + } + break; + } + } + } + + // - build index - + List lines = new List(); + bool isStaticClass = (props.Count == 0 && methods.Count == 0); + + lines.Add("# " + classDefinition.name + "\n"); + lines.Add((isStaticClass ? "static " : "") + + classDefinition.kind.ToLower() + + " in " + DefinitionNode.GenerateFullName(classNode.parent)); + + if(!String.IsNullOrEmpty(classDefinition.briefDescription)) + { + lines.Add("## Description\n"); + lines.Add(classDefinition.briefDescription); + } + + if(const_props.Count > 0) + { + lines.Add("\n# Constant Properties"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in const_props) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + if(static_props.Count > 0) + { + lines.Add("\n# Static Properties"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in static_props) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + if(props.Count > 0) + { + lines.Add("\n# Properties"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in props) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + if(const_methods.Count > 0) + { + lines.Add("\n# Constant Methods"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in const_methods) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + if(static_methods.Count > 0) + { + lines.Add("\n# Static Methods"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in static_methods) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + if(methods.Count > 0) + { + lines.Add("\n# Public Methods"); + lines.Add("| Name | Description |"); + lines.Add("| - | - |"); + + foreach(var memberNode in methods) + { + lines.Add(GenerateClassIndexMemberEntry(memberNode)); + } + } + + // - write file - + File.WriteAllLines(filePath, lines.ToArray()); + } + + private static void CreateMemberIndex(DefinitionNode memberNode, + string outputDirectory) + { + // - Static Member Layout - + // Class.propertyName + // + // definition + // + // # Parameters + // {PARAMETER TABLE} + // + // # Description + // BriefDescription + // DetailedDescription + // + // Example + // + // SeeAlso: + + MemberDefinition memberDefinition = definitionNodeMap[memberNode] as MemberDefinition; + + string fileName = DefinitionNode.GenerateFullName(memberNode) + ".md"; + string filePath = outputDirectory + fileName; + StringBuilder buildString = null; + + outputLog.Append("Creating Member Index: " + filePath + '\n'); + + List lines = new List(); + + lines.Add("# [" + memberNode.parent.name + "](" + DefinitionNode.GenerateFullName(memberNode.parent) + + ")." + memberDefinition.name + '\n'); + + // - definition - + buildString = new StringBuilder(); + buildString.Append(memberDefinition.protection.ToString().ToLower() + " "); + + if(memberDefinition.type != null) + { + buildString.Append(GenerateTypeMDString(memberDefinition.type) + ' '); + } + + buildString.Append(memberDefinition.name + ";\n"); + lines.Add(buildString.ToString()); + + // - parameters - + + // - description - + if(!String.IsNullOrEmpty(memberDefinition.briefDescription) + || !String.IsNullOrEmpty(memberDefinition.detailedDescription)) + { + lines.Add("## Description\n"); + + if(!String.IsNullOrEmpty(memberDefinition.briefDescription)) + { + lines.Add(memberDefinition.briefDescription + '\n'); + } + if(!String.IsNullOrEmpty(memberDefinition.detailedDescription)) + { + lines.Add(memberDefinition.detailedDescription + '\n'); + } + } + + // - example - + + // - seealso - + + + // - create file - + File.WriteAllLines(filePath, lines.ToArray()); + } + + private static string GenerateClassIndexMemberEntry(DefinitionNode node) + { + MemberDefinition memberDef = definitionNodeMap[node] as MemberDefinition; + return("| [" + memberDef.name + "](" + DefinitionNode.GenerateFullName(node) + ") " + + "| " + memberDef.briefDescription + " |"); + } + + private static string GenerateTypeMDString(TypeDescription typeDesc) + { + StringBuilder sb = new StringBuilder(); + + if(typeDesc.isRef) + { + outputLog.Append(". resolving type ref id [" + typeDesc.d_id + "]\n"); + + DefinitionNode typeNode = FindDefinitionNodeById(typeDesc.d_id); + sb.Append("[" + typeNode.name + "](" + DefinitionNode.GenerateFullName(typeNode) + ")"); + } + else + { + sb.Append(typeDesc.name); + } + + if(typeDesc.templatedTypes != null) + { + sb.Append('['); + + foreach(TypeDescription innerDesc in typeDesc.templatedTypes) + { + sb.Append(GenerateTypeMDString(innerDesc) + ','); + } + + sb.Length -= 1; + + sb.Append(']'); + } + + return sb.ToString(); + } +} diff --git a/Scripts/Converter.cs.meta b/Scripts/Converter.cs.meta new file mode 100644 index 0000000..955ce34 --- /dev/null +++ b/Scripts/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d5e2666f24c84147b33c99aa3361793 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts/DefinitionNode.cs b/Scripts/DefinitionNode.cs new file mode 100644 index 0000000..8544eb9 --- /dev/null +++ b/Scripts/DefinitionNode.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; + +public class DefinitionNode +{ + public string d_id = string.Empty; + public string name = string.Empty; + + public DefinitionNode parent = null; + public List children = new List(0); + + public static string GenerateFullName(DefinitionNode node) + { + var fullName = new System.Text.StringBuilder(); + + while(node != null) + { + fullName.Insert(0, node.name + '.'); + node = node.parent; + } + + fullName.Length -= 1; + + return fullName.ToString(); + } +} diff --git a/Scripts/DefinitionNode.cs.meta b/Scripts/DefinitionNode.cs.meta new file mode 100644 index 0000000..e67ee41 --- /dev/null +++ b/Scripts/DefinitionNode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c3bcb8572b034a09968b7776b5be14e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts/Definitions.cs b/Scripts/Definitions.cs new file mode 100644 index 0000000..61acc42 --- /dev/null +++ b/Scripts/Definitions.cs @@ -0,0 +1,76 @@ +using System.Collections.Generic; + +using Debug = UnityEngine.Debug; + +public enum ProtectionLevel +{ + _UNKNOWN_ = 0, + Public, + Private, + Protected +} + +public interface IDefinition +{ + string d_id { get; set; } + string name { get; set; } + string briefDescription { get; set; } + string detailedDescription { get; set; } + ProtectionLevel protection { get; set; } +} + +public class CompoundDefinition : IDefinition +{ + public string d_id { get; set; } + public string name { get; set; } + public string briefDescription { get; set; } + public string detailedDescription { get; set; } + public ProtectionLevel protection { get; set; } + + public string kind = string.Empty; +} + +public enum MemberKind +{ + _UNKNOWN_ = 0, + Variable, + Method, + Event, + Property, + Constructor, +} + +public class MemberDefinition : IDefinition +{ + public string d_id { get; set; } + public string name { get; set; } + public string briefDescription { get; set; } + public string detailedDescription { get; set; } + public ProtectionLevel protection { get; set; } + + public MemberKind kind = MemberKind._UNKNOWN_; + public TypeDescription type = new TypeDescription(); + + public bool isConst = false; + public bool isStatic = false; + + // - function bits - + public List parameters = null; +} + +public class TypeDescription +{ + public string name; + public string d_id; + public bool isRef; + + public List templatedTypes; +} + +public class FunctionParameter +{ + public string name; + public TypeDescription type; + + public string description; +} diff --git a/Scripts/Definitions.cs.meta b/Scripts/Definitions.cs.meta new file mode 100644 index 0000000..cde790f --- /dev/null +++ b/Scripts/Definitions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74ad547709cf04d4aabed7d88f562ec9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Scripts/UIHelper.cs b/Scripts/UIHelper.cs new file mode 100644 index 0000000..b1fc150 --- /dev/null +++ b/Scripts/UIHelper.cs @@ -0,0 +1,34 @@ +using UnityEngine; +using UnityEngine.UI; + +using GracesGames.SimpleFileBrowser.Scripts; + +public class UIHelper : MonoBehaviour +{ + public InputField xmlDirInputField; + public InputField outDirInputField; + + private void Start() + { + #if UNITY_EDITOR + RunOnDirectory(); + #endif + } + + public void OpenFileBrowser() + { + Debug.LogWarning("Not Implemented"); + } + + public void RunOnFile() + { + Debug.Assert(System.IO.File.Exists(xmlDirInputField.text)); + Converter.RunOnFile(xmlDirInputField.text, outDirInputField.text); + } + + public void RunOnDirectory() + { + Debug.Assert(System.IO.Directory.Exists(xmlDirInputField.text)); + Converter.RunOnDirectory(xmlDirInputField.text, outDirInputField.text); + } +} diff --git a/Scripts/UIHelper.cs.meta b/Scripts/UIHelper.cs.meta new file mode 100644 index 0000000..55aa069 --- /dev/null +++ b/Scripts/UIHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0286570d8b1294e77b1519117cc0092f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: