Def load selection and basic def alteration
|
@ -77,13 +77,24 @@
|
||||||
<Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\PawnKeyframe.cs" />
|
<Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\PawnKeyframe.cs" />
|
||||||
<Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\ThingKeyFrame.cs" />
|
<Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\ThingKeyFrame.cs" />
|
||||||
<Compile Include="Assets\Scripts\AnimationController.cs" />
|
<Compile Include="Assets\Scripts\AnimationController.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\AnimationDefCard.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\ApplicationManager.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\CameraController.cs" />
|
||||||
<Compile Include="Assets\Scripts\CurvePoint.cs" />
|
<Compile Include="Assets\Scripts\CurvePoint.cs" />
|
||||||
<Compile Include="Assets\Scripts\Defs.cs" />
|
<Compile Include="Assets\Scripts\Defs.cs" />
|
||||||
<Compile Include="Assets\Scripts\DialogBox.cs" />
|
<Compile Include="Assets\Scripts\DialogBoxes\DialogBox.cs" />
|
||||||
<Compile Include="Assets\Scripts\Enums.cs" />
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectAnimationDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectBodyDefTypesDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectBodyPartsDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectDefNamesDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectInteractionDefsDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\DialogBoxes\SelectSexTypesDialog.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\Extensions\IListExtensions.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\Extensions\TransformExtensions.cs" />
|
||||||
<Compile Include="Assets\Scripts\GenMath.cs" />
|
<Compile Include="Assets\Scripts\GenMath.cs" />
|
||||||
<Compile Include="Assets\Scripts\PawnUtility.cs" />
|
<Compile Include="Assets\Scripts\PawnUtility.cs" />
|
||||||
<Compile Include="Assets\Scripts\SimpleCurve.cs" />
|
<Compile Include="Assets\Scripts\SimpleCurve.cs" />
|
||||||
|
<Compile Include="Assets\Scripts\Singleton.cs" />
|
||||||
<Compile Include="Assets\Scripts\StandaloneFileBrowser\IStandaloneFileBrowser.cs" />
|
<Compile Include="Assets\Scripts\StandaloneFileBrowser\IStandaloneFileBrowser.cs" />
|
||||||
<Compile Include="Assets\Scripts\StandaloneFileBrowser\Sample\BasicSample.cs" />
|
<Compile Include="Assets\Scripts\StandaloneFileBrowser\Sample\BasicSample.cs" />
|
||||||
<Compile Include="Assets\Scripts\StandaloneFileBrowser\Sample\CanvasSampleOpenFileImage.cs" />
|
<Compile Include="Assets\Scripts\StandaloneFileBrowser\Sample\CanvasSampleOpenFileImage.cs" />
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7204be46978676a47952e9bc34298f49
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,85 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_Name: LineMaterial
|
||||||
|
m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _AlphaTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- PixelSnap: 0
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _EnableExternalAlpha: 0
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _UVSec: 0
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _Flip: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f0b171738be0e714ca9172d3b464274a
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -67,8 +67,8 @@ SpriteRenderer:
|
||||||
m_AutoUVMaxDistance: 0.5
|
m_AutoUVMaxDistance: 0.5
|
||||||
m_AutoUVMaxAngle: 89
|
m_AutoUVMaxAngle: 89
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: -975737453
|
m_SortingLayerID: -2115984483
|
||||||
m_SortingLayer: 1
|
m_SortingLayer: 22
|
||||||
m_SortingOrder: 1
|
m_SortingOrder: 1
|
||||||
m_Sprite: {fileID: 0}
|
m_Sprite: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
@ -150,8 +150,8 @@ SpriteRenderer:
|
||||||
m_AutoUVMaxDistance: 0.5
|
m_AutoUVMaxDistance: 0.5
|
||||||
m_AutoUVMaxAngle: 89
|
m_AutoUVMaxAngle: 89
|
||||||
m_LightmapParameters: {fileID: 0}
|
m_LightmapParameters: {fileID: 0}
|
||||||
m_SortingLayerID: -975737453
|
m_SortingLayerID: -2115984483
|
||||||
m_SortingLayer: 1
|
m_SortingLayer: 22
|
||||||
m_SortingOrder: 0
|
m_SortingOrder: 0
|
||||||
m_Sprite: {fileID: 0}
|
m_Sprite: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 03afc196af1cd0d48acaf5d63fa41039
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,220 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &999942642962796566
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8203100493891388538}
|
||||||
|
- component: {fileID: 8847150349349997488}
|
||||||
|
- component: {fileID: 2073073151658264442}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8203100493891388538
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 999942642962796566}
|
||||||
|
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: 2587503141886277293}
|
||||||
|
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!222 &8847150349349997488
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 999942642962796566}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &2073073151658264442
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 999942642962796566}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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: Button
|
||||||
|
--- !u!1 &3736683260661080863
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2587503141886277293}
|
||||||
|
- component: {fileID: 1299783525975706047}
|
||||||
|
- component: {fileID: 1216812542036263904}
|
||||||
|
- component: {fileID: 183453519571911134}
|
||||||
|
- component: {fileID: 8166808142109248999}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: OptionButton
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2587503141886277293
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3736683260661080863}
|
||||||
|
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: 8203100493891388538}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 200, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &1299783525975706047
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3736683260661080863}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1216812542036263904
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3736683260661080863}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &183453519571911134
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3736683260661080863}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, 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_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, 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_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 1216812542036263904}
|
||||||
|
m_OnClick:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
--- !u!114 &8166808142109248999
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3736683260661080863}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: -1
|
||||||
|
m_PreferredHeight: -1
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2e25165f0cb6d6f4e903a785d77097d9
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,320 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &567861683340653947
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2881686491829515444}
|
||||||
|
- component: {fileID: 4575271359858537334}
|
||||||
|
- component: {fileID: 5918406714279843560}
|
||||||
|
- component: {fileID: 8814511095938472540}
|
||||||
|
- component: {fileID: 3997469219987850626}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: OptionField
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &2881686491829515444
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 567861683340653947}
|
||||||
|
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: 1881123203552871070}
|
||||||
|
- {fileID: 3827337785720708782}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 30}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &4575271359858537334
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 567861683340653947}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &5918406714279843560
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 567861683340653947}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 1
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!114 &8814511095938472540
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 567861683340653947}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, 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_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, 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_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 5918406714279843560}
|
||||||
|
m_TextComponent: {fileID: 192786065162510962}
|
||||||
|
m_Placeholder: {fileID: 1379880338115507795}
|
||||||
|
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_OnValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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:
|
||||||
|
m_CaretBlinkRate: 0.85
|
||||||
|
m_CaretWidth: 1
|
||||||
|
m_ReadOnly: 0
|
||||||
|
m_ShouldActivateOnSelect: 1
|
||||||
|
--- !u!114 &3997469219987850626
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 567861683340653947}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: -1
|
||||||
|
m_PreferredHeight: -1
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
||||||
|
--- !u!1 &2447800805692704629
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1881123203552871070}
|
||||||
|
- component: {fileID: 2681437479713856466}
|
||||||
|
- component: {fileID: 1379880338115507795}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Placeholder
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &1881123203552871070
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2447800805692704629}
|
||||||
|
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: 2881686491829515444}
|
||||||
|
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!222 &2681437479713856466
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2447800805692704629}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &1379880338115507795
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2447800805692704629}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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!1 &6900237356508662960
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3827337785720708782}
|
||||||
|
- component: {fileID: 7661550734325087226}
|
||||||
|
- component: {fileID: 192786065162510962}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &3827337785720708782
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6900237356508662960}
|
||||||
|
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: 2881686491829515444}
|
||||||
|
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!222 &7661550734325087226
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6900237356508662960}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &192786065162510962
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6900237356508662960}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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:
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9c09247b9acee3645ad8788eab810b2e
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,335 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3255149681040644
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 9117359654058994387}
|
||||||
|
- component: {fileID: 8176689932866819834}
|
||||||
|
- component: {fileID: 4880597327808236415}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Background
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &9117359654058994387
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3255149681040644}
|
||||||
|
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: 5465909837741017854}
|
||||||
|
m_Father: {fileID: 8789161981077347466}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
|
m_AnchoredPosition: {x: 10, y: -10}
|
||||||
|
m_SizeDelta: {x: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &8176689932866819834
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3255149681040644}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &4880597327808236415
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3255149681040644}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &394597905502281511
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5465909837741017854}
|
||||||
|
- component: {fileID: 7371204660720240348}
|
||||||
|
- component: {fileID: 3830541626617390897}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Checkmark
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &5465909837741017854
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 394597905502281511}
|
||||||
|
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: 9117359654058994387}
|
||||||
|
m_RootOrder: 0
|
||||||
|
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: 20, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &7371204660720240348
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 394597905502281511}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &3830541626617390897
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 394597905502281511}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_RaycastTarget: 1
|
||||||
|
m_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
|
||||||
|
m_Type: 0
|
||||||
|
m_PreserveAspect: 0
|
||||||
|
m_FillCenter: 1
|
||||||
|
m_FillMethod: 4
|
||||||
|
m_FillAmount: 1
|
||||||
|
m_FillClockwise: 1
|
||||||
|
m_FillOrigin: 0
|
||||||
|
m_UseSpriteMesh: 0
|
||||||
|
m_PixelsPerUnitMultiplier: 1
|
||||||
|
--- !u!1 &5741932533636286456
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 7815899355165658205}
|
||||||
|
- component: {fileID: 3226953068620577630}
|
||||||
|
- component: {fileID: 5828497545740299654}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: Text
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &7815899355165658205
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5741932533636286456}
|
||||||
|
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: 8789161981077347466}
|
||||||
|
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: 9, y: -0.5}
|
||||||
|
m_SizeDelta: {x: -28, y: -3}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!222 &3226953068620577630
|
||||||
|
CanvasRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5741932533636286456}
|
||||||
|
m_CullTransparentMesh: 0
|
||||||
|
--- !u!114 &5828497545740299654
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5741932533636286456}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_Maskable: 1
|
||||||
|
m_OnCullStateChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
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: 1
|
||||||
|
m_HorizontalOverflow: 0
|
||||||
|
m_VerticalOverflow: 0
|
||||||
|
m_LineSpacing: 1
|
||||||
|
m_Text: Toggle
|
||||||
|
--- !u!1 &8098018029235791166
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8789161981077347466}
|
||||||
|
- component: {fileID: 4928690182810981180}
|
||||||
|
- component: {fileID: 1166102836368688474}
|
||||||
|
m_Layer: 5
|
||||||
|
m_Name: OptionToggle
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!224 &8789161981077347466
|
||||||
|
RectTransform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8098018029235791166}
|
||||||
|
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: 9117359654058994387}
|
||||||
|
- {fileID: 7815899355165658205}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
m_AnchorMin: {x: 0, y: 0}
|
||||||
|
m_AnchorMax: {x: 0, y: 0}
|
||||||
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
|
m_SizeDelta: {x: 0, y: 20}
|
||||||
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
|
--- !u!114 &4928690182810981180
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8098018029235791166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, 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_SelectedSprite: {fileID: 0}
|
||||||
|
m_DisabledSprite: {fileID: 0}
|
||||||
|
m_AnimationTriggers:
|
||||||
|
m_NormalTrigger: Normal
|
||||||
|
m_HighlightedTrigger: Highlighted
|
||||||
|
m_PressedTrigger: Pressed
|
||||||
|
m_SelectedTrigger: Selected
|
||||||
|
m_DisabledTrigger: Disabled
|
||||||
|
m_Interactable: 1
|
||||||
|
m_TargetGraphic: {fileID: 4880597327808236415}
|
||||||
|
toggleTransition: 1
|
||||||
|
graphic: {fileID: 3830541626617390897}
|
||||||
|
m_Group: {fileID: 0}
|
||||||
|
onValueChanged:
|
||||||
|
m_PersistentCalls:
|
||||||
|
m_Calls: []
|
||||||
|
m_IsOn: 1
|
||||||
|
--- !u!114 &1166102836368688474
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8098018029235791166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_IgnoreLayout: 0
|
||||||
|
m_MinWidth: -1
|
||||||
|
m_MinHeight: -1
|
||||||
|
m_PreferredWidth: -1
|
||||||
|
m_PreferredHeight: -1
|
||||||
|
m_FlexibleWidth: -1
|
||||||
|
m_FlexibleHeight: -1
|
||||||
|
m_LayoutPriority: 1
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 860a3bbda6bdfad4791a7fce0c17e672
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 3cc27b848c1f06c4eb7cfeeda3d65450
|
guid: 81aadeb6f4609444195fbadea89430ef
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
@ -45,7 +45,7 @@ TextureImporter:
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
spritePixelsToUnits: 85
|
spritePixelsToUnits: 100
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
|
@ -64,31 +64,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 0
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.7 KiB |
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: cc8871e2537b07b4a8dd35bd708d82ef
|
guid: 0306d51b4688d4640b34bc3d49e250ee
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
@ -45,7 +45,7 @@ TextureImporter:
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
spritePixelsToUnits: 85
|
spritePixelsToUnits: 100
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
|
@ -64,31 +64,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 0
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.8 KiB |
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: ebd49dde7602d1748878373c6ef26eb4
|
guid: 0b37cc6354dc6a94cb2d2de2529baa4e
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
@ -45,7 +45,7 @@ TextureImporter:
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
spritePixelsToUnits: 85
|
spritePixelsToUnits: 100
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
|
@ -64,31 +64,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 0
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 4.6 KiB |
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: e86007512b6df594389539c6a119aa8a
|
guid: 07bac293433ad5f45bad68350b9501d9
|
||||||
TextureImporter:
|
TextureImporter:
|
||||||
internalIDToNameTable: []
|
internalIDToNameTable: []
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
@ -45,7 +45,7 @@ TextureImporter:
|
||||||
spriteMeshType: 1
|
spriteMeshType: 1
|
||||||
alignment: 0
|
alignment: 0
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
spritePixelsToUnits: 85
|
spritePixelsToUnits: 100
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
spriteGenerateFallbackPhysicsShape: 1
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
alphaUsage: 1
|
alphaUsage: 1
|
||||||
|
@ -64,31 +64,7 @@ TextureImporter:
|
||||||
maxTextureSize: 2048
|
maxTextureSize: 2048
|
||||||
resizeAlgorithm: 0
|
resizeAlgorithm: 0
|
||||||
textureFormat: -1
|
textureFormat: -1
|
||||||
textureCompression: 0
|
textureCompression: 1
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Standalone
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
androidETC2FallbackOverride: 0
|
|
||||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
|
||||||
- serializedVersion: 3
|
|
||||||
buildTarget: Android
|
|
||||||
maxTextureSize: 2048
|
|
||||||
resizeAlgorithm: 0
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 0
|
|
||||||
compressionQuality: 50
|
compressionQuality: 50
|
||||||
crunchedCompression: 0
|
crunchedCompression: 0
|
||||||
allowsAlphaSplitting: 0
|
allowsAlphaSplitting: 0
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 56cdd09cf23c04e4fb6321d8fdc4d864
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
After Width: | Height: | Size: 22 KiB |
|
@ -0,0 +1,116 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f2673788e9e92e147b38af939d2fb7fe
|
||||||
|
TextureImporter:
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 11
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapsPreserveCoverage: 0
|
||||||
|
alphaTestReferenceValue: 0.5
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
streamingMipmaps: 0
|
||||||
|
streamingMipmapsPriority: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -100
|
||||||
|
wrapU: 1
|
||||||
|
wrapV: 1
|
||||||
|
wrapW: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spritePixelsToUnits: 20
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spriteGenerateFallbackPhysicsShape: 1
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
singleChannelComponent: 0
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
applyGammaDecoding: 0
|
||||||
|
platformSettings:
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
- serializedVersion: 3
|
||||||
|
buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
resizeAlgorithm: 0
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
androidETC2FallbackOverride: 0
|
||||||
|
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
physicsShape: []
|
||||||
|
bones: []
|
||||||
|
spriteID: 5e97eb03825dee720800000000000000
|
||||||
|
internalID: 0
|
||||||
|
vertices: []
|
||||||
|
indices:
|
||||||
|
edges: []
|
||||||
|
weights: []
|
||||||
|
secondaryTextures: []
|
||||||
|
spritePackingTag:
|
||||||
|
pSDRemoveMatte: 0
|
||||||
|
pSDShowRemoveMatteOption: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -12,10 +12,8 @@ namespace RimWorldAnimationStudio
|
||||||
public InputField bodyOffsetXField;
|
public InputField bodyOffsetXField;
|
||||||
public InputField bodyOffsetZField;
|
public InputField bodyOffsetZField;
|
||||||
public Toggle initiatorToggle;
|
public Toggle initiatorToggle;
|
||||||
public GameObject bodyPartsTags;
|
|
||||||
|
|
||||||
private AnimationDef animationDef;
|
private Actor actor;
|
||||||
private int actorID = 0;
|
|
||||||
|
|
||||||
public string bodyType
|
public string bodyType
|
||||||
{
|
{
|
||||||
|
@ -28,25 +26,49 @@ namespace RimWorldAnimationStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialize(AnimationDef animationDef, int actorID)
|
public void Initialize(Actor actor)
|
||||||
{
|
{
|
||||||
this.animationDef = animationDef;
|
this.actor = actor;
|
||||||
this.actorID = actorID;
|
|
||||||
|
|
||||||
UpdateBodyType();
|
initiatorToggle.isOn = actor.initiator;
|
||||||
initiatorToggle.isOn = animationDef.actors[actorID].initiator;
|
bodyOffsetXField.text = actor.bodyTypeOffset.GetOffset(bodyType).x.ToString();
|
||||||
}
|
bodyOffsetZField.text = actor.bodyTypeOffset.GetOffset(bodyType).z.ToString();
|
||||||
|
|
||||||
public void UpdateBodyType()
|
|
||||||
{
|
|
||||||
bodyOffsetXField.text = animationDef.actors[actorID].bodyTypeOffset.GetOffset(bodyType).x.ToString();
|
|
||||||
bodyOffsetZField.text = animationDef.actors[actorID].bodyTypeOffset.GetOffset(bodyType).z.ToString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateAnimationDef()
|
public void UpdateAnimationDef()
|
||||||
{
|
{
|
||||||
animationDef.actors[actorID].initiator = initiatorToggle.isOn;
|
float.TryParse(bodyOffsetXField.text, out float x);
|
||||||
animationDef.actors[actorID].bodyTypeOffset.SetOffset(bodyType, new Vector2(float.Parse(bodyOffsetXField.text), float.Parse(bodyOffsetZField.text)));
|
float.TryParse(bodyOffsetZField.text, out float z);
|
||||||
|
|
||||||
|
actor.bodyTypeOffset.SetOffset(bodyType, new Vector2(x, z));
|
||||||
|
actor.initiator = initiatorToggle.isOn;
|
||||||
|
|
||||||
|
if (actor.isFucking == null)
|
||||||
|
{ }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenSelectBodyPartsDialog()
|
||||||
|
{
|
||||||
|
var dialog = Resources.FindObjectsOfTypeAll(typeof(SelectBodyPartsDialog)) as SelectBodyPartsDialog[];
|
||||||
|
|
||||||
|
if (dialog != null)
|
||||||
|
{ dialog[0].Initialize(actor); dialog[0].Pop(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenSelectDefNamesDialog()
|
||||||
|
{
|
||||||
|
var dialog = Resources.FindObjectsOfTypeAll(typeof(SelectDefNamesDialog)) as SelectDefNamesDialog[];
|
||||||
|
|
||||||
|
if (dialog != null)
|
||||||
|
{ dialog[0].Initialize(actor); dialog[0].Pop(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenSelectBodyDefTypesDialog()
|
||||||
|
{
|
||||||
|
var dialog = Resources.FindObjectsOfTypeAll(typeof(SelectBodyDefTypesDialog)) as SelectBodyDefTypesDialog[];
|
||||||
|
|
||||||
|
if (dialog != null)
|
||||||
|
{ dialog[0].Initialize(actor); dialog[0].Pop(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,19 +7,31 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class Actor
|
public class Actor
|
||||||
{
|
{
|
||||||
public List<string> defNames = new List<string>();
|
[XmlArray("defNames"), XmlArrayItem("li")] public List<string> defNames = new List<string>();
|
||||||
public List<string> requiredGenitals = new List<string>();
|
[XmlArray("bodyDefTypes"), XmlArrayItem("li")] public List<string> bodyDefTypes = new List<string>();
|
||||||
public bool controlGenitalAngle = false;
|
[XmlArray("requiredGender"), XmlArrayItem("li")] public List<string> requiredGender = new List<string>();
|
||||||
public List<AlienRaceOffset> raceOffsets;
|
[XmlArray("requiredGenitals"), XmlArrayItem("li")] public List<string> requiredGenitals = new List<string>();
|
||||||
public List<string> blacklistedRaces;
|
[XmlArray("raceOffsets"), XmlArrayItem("li")] public List<AlienRaceOffset> raceOffsets = new List<AlienRaceOffset>();
|
||||||
public bool initiator = false;
|
[XmlArray("blacklistedRaces"), XmlArrayItem("li")] public List<string> blacklistedRaces = new List<string>();
|
||||||
|
[XmlArray("tags"), XmlArrayItem("li")] public List<string> tags;
|
||||||
|
|
||||||
public string gender;
|
public string gender;
|
||||||
public bool isFucking = false;
|
|
||||||
public bool isFucked = false;
|
|
||||||
public List<string> bodyDefTypes = new List<string>();
|
|
||||||
public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
|
public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
|
||||||
public Vector3 offset = new Vector2(0, 0);
|
public bool initiator = false;
|
||||||
public List<string> requiredGender;
|
public bool? controlGenitalAngle;
|
||||||
public List<string> tags = new List<string>();
|
public bool? isFucking;
|
||||||
|
public bool? isFucked;
|
||||||
|
|
||||||
|
public bool ShouldSerializedefNames() { return defNames.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializebodyDefTypes() { return bodyDefTypes.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializerequiredGender() { return requiredGender.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializerequiredGenitals() { return requiredGenitals.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializeraceOffsets() { return raceOffsets.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializeblacklistedRaces() { return blacklistedRaces.NotNullOrEmpty(); }
|
||||||
|
public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); }
|
||||||
|
|
||||||
|
public bool ShouldSerializecontrolGenitalAngle() { return controlGenitalAngle != null; }
|
||||||
|
public bool ShouldSerializeisFucking() { return isFucking != null; }
|
||||||
|
public bool ShouldSerializeisFucked() { return isFucked != null; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,13 +6,14 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public abstract class AnimationClip
|
public abstract class AnimationClip
|
||||||
{
|
{
|
||||||
[XmlIgnore]
|
public string layer = "Pawn";
|
||||||
public Dictionary<int, string> SoundEffects = new Dictionary<int, string>();
|
public List<string> tags;
|
||||||
public List<string> types;
|
|
||||||
public int duration;
|
[XmlIgnore] public int duration;
|
||||||
|
[XmlIgnore] public Dictionary<int, string> SoundEffects = new Dictionary<int, string>();
|
||||||
|
|
||||||
public abstract void BuildSimpleCurves();
|
public abstract void BuildSimpleCurves();
|
||||||
public string soundDef = null;
|
|
||||||
public int actor;
|
public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); }
|
||||||
public List<string> tags = new List<string>();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,10 +7,7 @@ namespace RimWorldAnimationStudio
|
||||||
public class PawnAnimationClip : AnimationClip
|
public class PawnAnimationClip : AnimationClip
|
||||||
{
|
{
|
||||||
[XmlAttribute("Class")] public string className = "Rimworld_Animations.PawnAnimationClip";
|
[XmlAttribute("Class")] public string className = "Rimworld_Animations.PawnAnimationClip";
|
||||||
|
|
||||||
[XmlArray("keyframes"), XmlArrayItem("li")] public List<PawnKeyframe> keyframes = new List<PawnKeyframe>();
|
[XmlArray("keyframes"), XmlArrayItem("li")] public List<PawnKeyframe> keyframes = new List<PawnKeyframe>();
|
||||||
|
|
||||||
public AltitudeLayer layer = AltitudeLayer.Pawn;
|
|
||||||
|
|
||||||
[XmlIgnore] public Dictionary<int, bool> quiver = new Dictionary<int, bool>();
|
[XmlIgnore] public Dictionary<int, bool> quiver = new Dictionary<int, bool>();
|
||||||
[XmlIgnore] public SimpleCurve GenitalAngle = new SimpleCurve();
|
[XmlIgnore] public SimpleCurve GenitalAngle = new SimpleCurve();
|
||||||
|
@ -36,70 +33,39 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
if (frame.atTick.HasValue)
|
if (frame.atTick.HasValue)
|
||||||
{
|
{
|
||||||
if (frame.bodyAngle.HasValue)
|
BodyAngle.Add((float)frame.atTick / (float)duration, frame.bodyAngle, true);
|
||||||
BodyAngle.Add((float)frame.atTick / (float)duration, frame.bodyAngle.Value, true);
|
HeadAngle.Add((float)frame.atTick / (float)duration, frame.headAngle, true);
|
||||||
|
BodyOffsetX.Add((float)frame.atTick / (float)duration, frame.bodyOffsetX, true);
|
||||||
if (frame.headAngle.HasValue)
|
BodyOffsetZ.Add((float)frame.atTick / (float)duration, frame.bodyOffsetZ, true);
|
||||||
HeadAngle.Add((float)frame.atTick / (float)duration, frame.headAngle.Value, true);
|
HeadFacing.Add((float)frame.atTick / (float)duration, frame.headFacing, true);
|
||||||
|
BodyFacing.Add((float)frame.atTick / (float)duration, frame.bodyFacing, true);
|
||||||
if (frame.bodyOffsetX.HasValue)
|
HeadBob.Add((float)frame.atTick / (float)duration, frame.headBob, true);
|
||||||
BodyOffsetX.Add((float)frame.atTick / (float)duration, frame.bodyOffsetX.Value, true);
|
|
||||||
|
|
||||||
if (frame.bodyOffsetZ.HasValue)
|
|
||||||
BodyOffsetZ.Add((float)frame.atTick / (float)duration, frame.bodyOffsetZ.Value, true);
|
|
||||||
|
|
||||||
if (frame.headFacing.HasValue)
|
|
||||||
HeadFacing.Add((float)frame.atTick / (float)duration, frame.headFacing.Value, true);
|
|
||||||
|
|
||||||
if (frame.bodyFacing.HasValue)
|
|
||||||
BodyFacing.Add((float)frame.atTick / (float)duration, frame.bodyFacing.Value, true);
|
|
||||||
|
|
||||||
if (frame.headBob.HasValue)
|
|
||||||
HeadBob.Add((float)frame.atTick / (float)duration, frame.headBob.Value, true);
|
|
||||||
|
|
||||||
if (frame.genitalAngle.HasValue)
|
if (frame.genitalAngle.HasValue)
|
||||||
GenitalAngle.Add((float)frame.atTick / (float)duration, frame.genitalAngle.Value, true);
|
{ GenitalAngle.Add((float)frame.atTick / (float)duration, frame.genitalAngle.Value, true); }
|
||||||
|
|
||||||
if (frame.soundEffect != null)
|
if (frame.soundEffect != null)
|
||||||
{
|
{ SoundEffects.Add((int)frame.atTick, frame.soundEffect); }
|
||||||
SoundEffects.Add((int)frame.atTick, frame.soundEffect);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (frame.bodyAngle.HasValue)
|
BodyAngle.Add((float)keyframePosition / (float)duration, frame.bodyAngle, true);
|
||||||
BodyAngle.Add((float)keyframePosition / (float)duration, frame.bodyAngle.Value, true);
|
HeadAngle.Add((float)keyframePosition / (float)duration, frame.headAngle, true);
|
||||||
|
BodyOffsetX.Add((float)keyframePosition / (float)duration, frame.bodyOffsetX, true);
|
||||||
if (frame.headAngle.HasValue)
|
BodyOffsetZ.Add((float)keyframePosition / (float)duration, frame.bodyOffsetZ, true);
|
||||||
HeadAngle.Add((float)keyframePosition / (float)duration, frame.headAngle.Value, true);
|
HeadFacing.Add((float)keyframePosition / (float)duration, frame.headFacing, true);
|
||||||
|
BodyFacing.Add((float)keyframePosition / (float)duration, frame.bodyFacing, true);
|
||||||
if (frame.bodyOffsetX.HasValue)
|
HeadBob.Add((float)keyframePosition / (float)duration, frame.headBob, true);
|
||||||
BodyOffsetX.Add((float)keyframePosition / (float)duration, frame.bodyOffsetX.Value, true);
|
|
||||||
|
|
||||||
if (frame.bodyOffsetZ.HasValue)
|
|
||||||
BodyOffsetZ.Add((float)keyframePosition / (float)duration, frame.bodyOffsetZ.Value, true);
|
|
||||||
|
|
||||||
if (frame.headFacing.HasValue)
|
|
||||||
HeadFacing.Add((float)keyframePosition / (float)duration, frame.headFacing.Value, true);
|
|
||||||
|
|
||||||
if (frame.bodyFacing.HasValue)
|
|
||||||
BodyFacing.Add((float)keyframePosition / (float)duration, frame.bodyFacing.Value, true);
|
|
||||||
|
|
||||||
if (frame.headBob.HasValue)
|
|
||||||
HeadBob.Add((float)keyframePosition / (float)duration, frame.headBob.Value, true);
|
|
||||||
|
|
||||||
if (frame.genitalAngle.HasValue)
|
if (frame.genitalAngle.HasValue)
|
||||||
GenitalAngle.Add((float)keyframePosition / (float)duration, frame.genitalAngle.Value, true);
|
GenitalAngle.Add((float)keyframePosition / (float)duration, frame.genitalAngle.Value, true);
|
||||||
|
|
||||||
if (frame.soundEffect != null)
|
if (frame.soundEffect != null)
|
||||||
{
|
{ SoundEffects.Add(keyframePosition, frame.soundEffect); }
|
||||||
SoundEffects.Add(keyframePosition, frame.soundEffect);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (frame.tickDuration != 1 && frame.quiver.HasValue)
|
if (frame.tickDuration != 1 && frame.quiver.HasValue)
|
||||||
{
|
{
|
||||||
|
|
||||||
quiver.Add(keyframePosition, true);
|
quiver.Add(keyframePosition, true);
|
||||||
quiver.Add(keyframePosition + frame.tickDuration - 1, false);
|
quiver.Add(keyframePosition + frame.tickDuration - 1, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,8 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class ThingAnimationClip : AnimationClip
|
public class ThingAnimationClip : AnimationClip
|
||||||
{
|
{
|
||||||
[XmlAttribute("Class")] public string className = "Rimworld_Animations.PawnAnimationClip";
|
[XmlAttribute("Class")] public string className = "Rimworld_Animations.ThingAnimationClip";
|
||||||
|
|
||||||
[XmlArray("keyframes"), XmlArrayItem("li")] public List<ThingKeyframe> keyframes = new List<ThingKeyframe>();
|
[XmlArray("keyframes"), XmlArrayItem("li")] public List<ThingKeyframe> keyframes = new List<ThingKeyframe>();
|
||||||
public string layer = "Pawn";
|
|
||||||
|
|
||||||
[XmlIgnore] public SimpleCurve PositionX = new SimpleCurve();
|
[XmlIgnore] public SimpleCurve PositionX = new SimpleCurve();
|
||||||
[XmlIgnore] public SimpleCurve PositionZ = new SimpleCurve();
|
[XmlIgnore] public SimpleCurve PositionZ = new SimpleCurve();
|
||||||
|
@ -32,36 +30,22 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
if (frame.atTick.HasValue)
|
if (frame.atTick.HasValue)
|
||||||
{
|
{
|
||||||
if (frame.positionX.HasValue)
|
PositionX.Add((float)frame.atTick / (float)duration, frame.positionX, true);
|
||||||
PositionX.Add((float)frame.atTick / (float)duration, frame.positionX.Value, true);
|
PositionZ.Add((float)frame.atTick / (float)duration, frame.positionZ, true);
|
||||||
|
Rotation.Add((float)frame.atTick / (float)duration, frame.rotation, true);
|
||||||
if (frame.positionZ.HasValue)
|
|
||||||
PositionZ.Add((float)frame.atTick / (float)duration, frame.positionZ.Value, true);
|
|
||||||
|
|
||||||
if (frame.rotation.HasValue)
|
|
||||||
Rotation.Add((float)frame.atTick / (float)duration, frame.rotation.Value, true);
|
|
||||||
|
|
||||||
if (frame.soundEffect != null)
|
if (frame.soundEffect != null)
|
||||||
{
|
{ SoundEffects.Add((int)frame.atTick, frame.soundEffect); }
|
||||||
SoundEffects.Add((int)frame.atTick, frame.soundEffect);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (frame.positionX.HasValue)
|
PositionX.Add((float)keyframePosition / (float)duration, frame.positionX, true);
|
||||||
PositionX.Add((float)keyframePosition / (float)duration, frame.positionX.Value, true);
|
PositionZ.Add((float)keyframePosition / (float)duration, frame.positionZ, true);
|
||||||
|
Rotation.Add((float)keyframePosition / (float)duration, frame.rotation, true);
|
||||||
if (frame.positionZ.HasValue)
|
|
||||||
PositionZ.Add((float)keyframePosition / (float)duration, frame.positionZ.Value, true);
|
|
||||||
|
|
||||||
if (frame.rotation.HasValue)
|
|
||||||
Rotation.Add((float)keyframePosition / (float)duration, frame.rotation.Value, true);
|
|
||||||
|
|
||||||
if (frame.soundEffect != null)
|
if (frame.soundEffect != null)
|
||||||
{
|
{ SoundEffects.Add(keyframePosition, frame.soundEffect); }
|
||||||
SoundEffects.Add(keyframePosition, frame.soundEffect);
|
|
||||||
}
|
|
||||||
|
|
||||||
keyframePosition += frame.tickDuration;
|
keyframePosition += frame.tickDuration;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,12 +9,14 @@ namespace RimWorldAnimationStudio
|
||||||
public string defName = "Undefined";
|
public string defName = "Undefined";
|
||||||
public string label = "Undefined";
|
public string label = "Undefined";
|
||||||
public bool sounds = false;
|
public bool sounds = false;
|
||||||
[XmlIgnore] public int animationTimeTicks = 0;
|
|
||||||
[XmlArray("sexTypes"), XmlArrayItem("li")] public List<string> sexTypes = new List<string>();
|
[XmlArray("sexTypes"), XmlArrayItem("li")] public List<string> sexTypes = new List<string>();
|
||||||
[XmlArray("interactionDefTypes"), XmlArrayItem("li")] public List<string> interactionDefTypes = new List<string>();
|
[XmlArray("interactionDefTypes"), XmlArrayItem("li")] public List<string> interactionDefTypes = new List<string>();
|
||||||
[XmlArray("actors"), XmlArrayItem("li")] public List<Actor> actors = new List<Actor>();
|
[XmlArray("actors"), XmlArrayItem("li")] public List<Actor> actors = new List<Actor>();
|
||||||
[XmlArray("animationStages"), XmlArrayItem("li")] public List<AnimationStage> animationStages = new List<AnimationStage>();
|
[XmlArray("animationStages"), XmlArrayItem("li")] public List<AnimationStage> animationStages = new List<AnimationStage>();
|
||||||
|
|
||||||
|
[XmlIgnore] public int animationTimeTicks = 0;
|
||||||
|
|
||||||
public void Initialize()
|
public void Initialize()
|
||||||
{
|
{
|
||||||
animationTimeTicks = 0;
|
animationTimeTicks = 0;
|
||||||
|
|
|
@ -12,20 +12,19 @@ namespace RimWorldAnimationStudio
|
||||||
public string Hulk;
|
public string Hulk;
|
||||||
public string Fat;
|
public string Fat;
|
||||||
|
|
||||||
public void SetOffset(string bodyType, Vector2 offset)
|
public void SetOffset(string bodyType, Vector2 bodyOffset)
|
||||||
{
|
{
|
||||||
FieldInfo bodyTypeOffsetInfo = typeof(BodyTypeOffset).GetField(bodyType);
|
FieldInfo bodyTypeOffsetInfo = typeof(BodyTypeOffset).GetField(bodyType);
|
||||||
|
|
||||||
if (bodyTypeOffsetInfo == null)
|
if (bodyTypeOffsetInfo == null)
|
||||||
{ return; }
|
{ return; }
|
||||||
|
|
||||||
bodyTypeOffsetInfo.SetValue(this, offset.ToString());
|
string _bodyOffset = "(" + bodyOffset.x + ", " + bodyOffset.y + ")";
|
||||||
|
bodyTypeOffsetInfo.SetValue(this, _bodyOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 GetOffset(string bodyType)
|
public Vector3 GetOffset(string bodyType)
|
||||||
{
|
{
|
||||||
Debug.Log(bodyType);
|
|
||||||
|
|
||||||
FieldInfo bodyTypeOffsetInfo = typeof(BodyTypeOffset).GetField(bodyType);
|
FieldInfo bodyTypeOffsetInfo = typeof(BodyTypeOffset).GetField(bodyType);
|
||||||
|
|
||||||
if (bodyTypeOffsetInfo == null)
|
if (bodyTypeOffsetInfo == null)
|
||||||
|
|
|
@ -6,9 +6,13 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class Keyframe
|
public class Keyframe
|
||||||
{
|
{
|
||||||
public int tickDuration = 1;
|
|
||||||
public float? atTick;
|
public float? atTick;
|
||||||
|
|
||||||
|
public int tickDuration = 1;
|
||||||
public string soundEffect;
|
public string soundEffect;
|
||||||
public List<string> tags = new List<string>();
|
public List<string> tags = new List<string>();
|
||||||
|
|
||||||
|
public bool ShouldSerializeatTick() { return atTick != null; }
|
||||||
|
public bool ShouldSerializetags() { return tags.NotNullOrEmpty(); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,18 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class PawnKeyframe : Keyframe
|
public class PawnKeyframe : Keyframe
|
||||||
{
|
{
|
||||||
public float? bodyAngle;
|
public float bodyAngle;
|
||||||
public float? headAngle;
|
public float headAngle;
|
||||||
public float? headBob;
|
public float headBob;
|
||||||
public float? bodyOffsetX;
|
public float bodyOffsetX;
|
||||||
public float? bodyOffsetZ;
|
public float bodyOffsetZ;
|
||||||
public float? headFacing;
|
public float headFacing;
|
||||||
public float? bodyFacing;
|
public float bodyFacing;
|
||||||
|
|
||||||
public float? genitalAngle;
|
public float? genitalAngle;
|
||||||
public bool? quiver;
|
public bool? quiver;
|
||||||
|
|
||||||
|
public bool ShouldSerializegenitalAngle() { return genitalAngle != null; }
|
||||||
|
public bool ShouldSerializequiver() { return quiver != null; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,8 @@ namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class ThingKeyframe : Keyframe
|
public class ThingKeyframe : Keyframe
|
||||||
{
|
{
|
||||||
public float? positionX;
|
public float positionX;
|
||||||
public float? positionZ;
|
public float positionZ;
|
||||||
public float? rotation;
|
public float rotation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,121 +10,43 @@ using UnityEngine.UI;
|
||||||
|
|
||||||
namespace RimWorldAnimationStudio
|
namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class AnimationController : MonoBehaviour
|
public class AnimationController : Singleton<AnimationController>
|
||||||
{
|
{
|
||||||
public Defs defs;
|
|
||||||
public AnimationDef anim;
|
|
||||||
public bool isAnimating = false;
|
public bool isAnimating = false;
|
||||||
public bool isLooping = true;
|
public bool isLooping = true;
|
||||||
public int stageTick = 0;
|
public int stageTick = 0;
|
||||||
public int stageID = 0;
|
|
||||||
|
|
||||||
public bool autoAdvanceToNextStage = false;
|
public bool autoAdvanceToNextStage = false;
|
||||||
|
|
||||||
//public InputField stageTickField;
|
public Slider stageTimelineSlider;
|
||||||
//public InputField stageLengthField;
|
|
||||||
|
|
||||||
//public InputField stageIDField;
|
public GameObject actorBodyPrefab;
|
||||||
|
|
||||||
public ActorBody actorBodyPrefab;
|
|
||||||
public List<ActorBody> actorBodies = new List<ActorBody>();
|
public List<ActorBody> actorBodies = new List<ActorBody>();
|
||||||
//public List<Dropdown> bodyTypeDropdowns = new List<Dropdown>();
|
|
||||||
|
|
||||||
public Text stageTickField;
|
public Text stageTickText;
|
||||||
public Text stageLengthField;
|
public Text stageLengthText;
|
||||||
|
|
||||||
public Transform actorCards;
|
public Transform actorCards;
|
||||||
public GameObject actorCardPrefab;
|
public GameObject actorCardPrefab;
|
||||||
|
|
||||||
|
public Dropdown stageLoopDropdown;
|
||||||
|
public InputField stageIDField;
|
||||||
|
|
||||||
private float currentTime = 0;
|
private float currentTime = 0;
|
||||||
|
|
||||||
public T ReadDataFromXML<T>(string inputPath)
|
|
||||||
{
|
|
||||||
using (StreamReader stringReader = new StreamReader(inputPath))
|
|
||||||
{
|
|
||||||
XmlSerializer serializer = new XmlSerializer(typeof(T));
|
|
||||||
return (T)serializer.Deserialize(stringReader);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void LoadNewXML(string inputPath)
|
|
||||||
{
|
|
||||||
defs = ReadDataFromXML<Defs>(inputPath);
|
|
||||||
|
|
||||||
if (defs?.animationDefs != null)
|
|
||||||
{
|
|
||||||
Debug.Log(defs.animationDefs.Count);
|
|
||||||
Debug.Log(defs.animationDefs[0].defName);
|
|
||||||
|
|
||||||
anim = defs.animationDefs[0];
|
|
||||||
InitializeAnimation(anim);
|
|
||||||
|
|
||||||
foreach (Actor actor in anim.actors)
|
|
||||||
{
|
|
||||||
AddActor();
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateAnimation();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SaveXML()
|
|
||||||
{
|
|
||||||
if (anim == null)
|
|
||||||
{ return; }
|
|
||||||
|
|
||||||
string path = StandaloneFileBrowser.SaveFilePanel("Save file", "", anim.defName + ".xml", ".xml");
|
|
||||||
|
|
||||||
if (path == null || path == "")
|
|
||||||
{ return; }
|
|
||||||
|
|
||||||
XmlSerializer writer = new XmlSerializer(typeof(AnimationDef));
|
|
||||||
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
|
|
||||||
ns.Add("", "");
|
|
||||||
FileStream file = File.Create(path);
|
|
||||||
|
|
||||||
writer.Serialize(file, anim, ns);
|
|
||||||
file.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OpenFileDialog()
|
|
||||||
{
|
|
||||||
var paths = StandaloneFileBrowser.OpenFilePanel("Open File", "", "", false);
|
|
||||||
|
|
||||||
Debug.Log(paths[0]);
|
|
||||||
LoadNewXML(paths[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void PlayAnimation(bool value)
|
|
||||||
{
|
|
||||||
isAnimating = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ToggleAnimationLoop()
|
|
||||||
{
|
|
||||||
isLooping = !isLooping;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateStageID(InputField stageIDField)
|
|
||||||
{
|
|
||||||
if (anim == null)
|
|
||||||
{
|
|
||||||
stageIDField.text = "0";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int i = int.Parse(stageIDField.text);
|
|
||||||
stageID = Mathf.Clamp(i, 0, anim.animationStages.Count - 1);
|
|
||||||
stageTick = 0;
|
|
||||||
|
|
||||||
stageIDField.text = stageID.ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Update()
|
public void Update()
|
||||||
{
|
{
|
||||||
if (anim == null) { return; }
|
// No animation, exit
|
||||||
|
if (Workspace.animationDef == null) { return; }
|
||||||
|
|
||||||
|
// Dirty animation, reset
|
||||||
|
if (Workspace.animationDef != null && Workspace.isDirty)
|
||||||
|
{ Initialize(); return; }
|
||||||
|
|
||||||
|
// Not animating, update preview
|
||||||
if (isAnimating == false) { UpdateAnimation(); return; }
|
if (isAnimating == false) { UpdateAnimation(); return; }
|
||||||
|
|
||||||
|
// Animating, update stage tick before updating preview
|
||||||
currentTime += Time.deltaTime;
|
currentTime += Time.deltaTime;
|
||||||
|
|
||||||
if (currentTime < 1f/60f)
|
if (currentTime < 1f/60f)
|
||||||
|
@ -133,68 +55,47 @@ namespace RimWorldAnimationStudio
|
||||||
currentTime -= 1f/60f;
|
currentTime -= 1f/60f;
|
||||||
stageTick += 1;
|
stageTick += 1;
|
||||||
|
|
||||||
if (stageTick > anim.animationStages[stageID].playTimeTicks)
|
int stageLenght = Workspace.animationDef.animationStages[Workspace.stageID].playTimeTicks;
|
||||||
|
|
||||||
|
if (stageTick > stageLenght)
|
||||||
{
|
{
|
||||||
if (isLooping)
|
if (stageLoopDropdown.value == 1)
|
||||||
{ stageTick = 1; }
|
{ stageTick = 1; }
|
||||||
|
|
||||||
else if (autoAdvanceToNextStage && stageID < anim.animationStages.Count - 1)
|
else if (stageLoopDropdown.value == 2 && Workspace.stageID < Workspace.animationDef.animationStages.Count - 1)
|
||||||
{ stageTick = 1; stageID++; }
|
{
|
||||||
|
stageTick = 1;
|
||||||
|
Workspace.stageID++;
|
||||||
|
stageIDField.text = Workspace.stageID.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{ stageTick = anim.animationStages[stageID].playTimeTicks; }
|
{ stageTick = stageLenght; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stageTimelineSlider.maxValue = stageLenght;
|
||||||
|
stageTimelineSlider.value = stageTick;
|
||||||
|
|
||||||
UpdateAnimation();
|
UpdateAnimation();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddActor()
|
|
||||||
{
|
|
||||||
GameObject actorCardObject = Instantiate(actorCardPrefab, actorCards);
|
|
||||||
actorCardObject.GetComponent<ActorCard>().Initialize(anim, actorCards.childCount - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void InitializeAnimation(AnimationDef anim)
|
|
||||||
{
|
|
||||||
ResetAnimation();
|
|
||||||
|
|
||||||
anim.Initialize();
|
|
||||||
this.anim = anim;
|
|
||||||
|
|
||||||
for (int actorID = 0; actorID < anim.actors.Count; actorID++)
|
|
||||||
{
|
|
||||||
ActorBody actorBody = Instantiate(actorBodyPrefab, transform) as ActorBody;
|
|
||||||
actorBodies.Add(actorBody);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ResetAnimation()
|
|
||||||
{
|
|
||||||
anim = null;
|
|
||||||
stageID = 0;
|
|
||||||
stageTick = 0;
|
|
||||||
isAnimating = false;
|
|
||||||
actorBodies.Clear();
|
|
||||||
|
|
||||||
foreach (Transform child in transform)
|
|
||||||
{ Destroy(child.gameObject); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateAnimation()
|
public void UpdateAnimation()
|
||||||
{
|
{
|
||||||
stageTickField.text = stageTick.ToString();
|
if (stageTickText != null)
|
||||||
stageLengthField.text = anim.animationStages[stageID].playTimeTicks.ToString();
|
{ stageTickText.text = stageTick.ToString(); }
|
||||||
|
if (stageLengthText != null)
|
||||||
|
{ stageLengthText.text = Workspace.animationDef.animationStages[Workspace.stageID].playTimeTicks.ToString(); }
|
||||||
|
|
||||||
for (int actorID = 0; actorID < actorBodies.Count; actorID++)
|
for (int actorID = 0; actorID < actorBodies.Count; actorID++)
|
||||||
{
|
{
|
||||||
ActorBody actorBody = actorBodies[actorID];
|
ActorBody actorBody = actorBodies[actorID];
|
||||||
string bodyType = actorCards.transform.GetChild(actorID).GetComponent<ActorCard>().bodyType; //bodyTypeDropdowns[actorID].options[bodyTypeDropdowns[actorID].value].text;
|
string bodyType = actorCards.transform.GetChild(actorID).GetComponent<ActorCard>().bodyType; //bodyTypeDropdowns[actorID].options[bodyTypeDropdowns[actorID].value].text;
|
||||||
|
|
||||||
PawnAnimationClip clip = anim.animationStages[stageID].animationClips[actorID];
|
PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[actorID];
|
||||||
float clipPercent = (float)(stageTick % clip.duration) / clip.duration;
|
float clipPercent = (float)(stageTick % clip.duration) / clip.duration;
|
||||||
|
|
||||||
Vector3 deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent), 0, clip.BodyOffsetZ.Evaluate(clipPercent));
|
Vector3 deltaPos = new Vector3(clip.BodyOffsetX.Evaluate(clipPercent), 0, clip.BodyOffsetZ.Evaluate(clipPercent));
|
||||||
deltaPos += anim.actors[actorID].bodyTypeOffset.GetOffset(bodyType);
|
deltaPos += Workspace.animationDef.actors[actorID].bodyTypeOffset.GetOffset(bodyType);
|
||||||
|
|
||||||
float bodyAngle = clip.BodyAngle.Evaluate(clipPercent);
|
float bodyAngle = clip.BodyAngle.Evaluate(clipPercent);
|
||||||
float headAngle = clip.HeadAngle.Evaluate(clipPercent);
|
float headAngle = clip.HeadAngle.Evaluate(clipPercent);
|
||||||
|
@ -222,10 +123,82 @@ namespace RimWorldAnimationStudio
|
||||||
actorBody.bodyRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Bodies/" + bodyType + bodyFacing);
|
actorBody.bodyRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Bodies/" + bodyType + bodyFacing);
|
||||||
actorBody.headRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Heads/Head" + headFacing);
|
actorBody.headRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Heads/Head" + headFacing);
|
||||||
|
|
||||||
actorBody.bodyRenderer.sortingLayerName = clip.layer.ToString();
|
actorBody.bodyRenderer.sortingLayerName = clip.layer;
|
||||||
actorBody.headRenderer.sortingLayerName = clip.layer.ToString();
|
actorBody.headRenderer.sortingLayerName = clip.layer;
|
||||||
actorBody.headRenderer.sortingOrder = headFacing == 2 ? 1 : -1;
|
actorBody.headRenderer.sortingOrder = headFacing == 2 ? 1 : -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void UpdateStageID()
|
||||||
|
{
|
||||||
|
if (Workspace.animationDef == null)
|
||||||
|
{
|
||||||
|
stageIDField.text = "0";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int.TryParse(stageIDField.text, out int i);
|
||||||
|
Workspace.stageID = Mathf.Clamp(i, 0, Workspace.animationDef.animationStages.Count - 1);
|
||||||
|
stageTick = 0;
|
||||||
|
|
||||||
|
stageIDField.text = Workspace.stageID.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
Debug.Log("Initializing animation preview");
|
||||||
|
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int actorID = 0; actorID < Workspace.animationDef.actors.Count; actorID++)
|
||||||
|
{
|
||||||
|
GameObject actorBodyObject = Instantiate(actorBodyPrefab, transform);
|
||||||
|
actorBodies.Add(actorBodyObject.GetComponent<ActorBody>());
|
||||||
|
|
||||||
|
GameObject actorCardObject = Instantiate(actorCardPrefab, actorCards);
|
||||||
|
actorCardObject.GetComponent<ActorCard>().Initialize(Workspace.animationDef.actors[actorID]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Workspace.isDirty = false;
|
||||||
|
|
||||||
|
UpdateAnimation();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Workspace.stageID = 0;
|
||||||
|
stageTick = 0;
|
||||||
|
isAnimating = false;
|
||||||
|
|
||||||
|
foreach (ActorBody actorBody in actorBodies)
|
||||||
|
{ Destroy(actorBody.gameObject); }
|
||||||
|
|
||||||
|
foreach (Transform actorCard in actorCards)
|
||||||
|
{ Destroy(actorCard.gameObject); }
|
||||||
|
|
||||||
|
actorBodies.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ToggleAnimation()
|
||||||
|
{
|
||||||
|
isAnimating = !isAnimating;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ToggleAnimationLoop()
|
||||||
|
{
|
||||||
|
isLooping = !isLooping;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateFromStageTimelineSlider()
|
||||||
|
{
|
||||||
|
if (Workspace.animationDef == null)
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
int stageLenght = Workspace.animationDef.animationStages[Workspace.stageID].playTimeTicks;
|
||||||
|
|
||||||
|
if (stageLenght != (int)stageTimelineSlider.value)
|
||||||
|
{ stageTick = (int)stageTimelineSlider.value; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class AnimationDefCard : MonoBehaviour
|
||||||
|
{
|
||||||
|
public InputField defNameField;
|
||||||
|
public InputField labelField;
|
||||||
|
public Toggle playSoundsToggle;
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
defNameField.text = Workspace.animationDef.defName;
|
||||||
|
labelField.text = Workspace.animationDef.label;
|
||||||
|
playSoundsToggle.isOn = Workspace.animationDef.sounds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateAnimationDef()
|
||||||
|
{
|
||||||
|
Workspace.animationDef.defName = defNameField.text;
|
||||||
|
Workspace.animationDef.label = labelField.text;
|
||||||
|
Workspace.animationDef.sounds = playSoundsToggle.isOn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenSelectSexTypesDialog()
|
||||||
|
{
|
||||||
|
var dialog = Resources.FindObjectsOfTypeAll(typeof(SelectSexTypesDialog)) as SelectSexTypesDialog[];
|
||||||
|
|
||||||
|
if (dialog != null)
|
||||||
|
{ dialog[0].Initialize(); dialog[0].Pop(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OpenSelectInteractionDefsDialog()
|
||||||
|
{
|
||||||
|
var dialog = Resources.FindObjectsOfTypeAll(typeof(SelectInteractionDefsDialog)) as SelectInteractionDefsDialog[];
|
||||||
|
|
||||||
|
if (dialog != null)
|
||||||
|
{ dialog[0].Initialize(); dialog[0].Pop(); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 7a40ab1285a8ce74082b0d1b481d41aa
|
guid: e1d8f33927e6b4d44914a445362b802d
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
|
@ -0,0 +1,104 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
using SFB;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class ApplicationManager : Singleton<ApplicationManager>
|
||||||
|
{
|
||||||
|
public DialogBox exitDialog;
|
||||||
|
public SelectAnimationDialog selectAnimationDialog;
|
||||||
|
|
||||||
|
public void TryToCloseApplication()
|
||||||
|
{
|
||||||
|
exitDialog.Pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CloseApplication()
|
||||||
|
{
|
||||||
|
Debug.Log("Exiting application");
|
||||||
|
Application.Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TryToLoadAnimation()
|
||||||
|
{
|
||||||
|
var paths = StandaloneFileBrowser.OpenFilePanel("Open AnimationDef File", "", "xml", false);
|
||||||
|
|
||||||
|
if (paths == null || paths.Any() == false)
|
||||||
|
{ Debug.LogError("Selected file was null or invalid"); return; }
|
||||||
|
|
||||||
|
Defs defs = XmlUtility.ReadXML<Defs>(paths[0]);
|
||||||
|
|
||||||
|
if (defs?.animationDefs == null)
|
||||||
|
{ Debug.LogError("Selected file contains no animation data"); return; }
|
||||||
|
|
||||||
|
if (defs.animationDefs.Count == 1)
|
||||||
|
{ LoadAnimation(defs.animationDefs[0]); return; }
|
||||||
|
|
||||||
|
selectAnimationDialog.Initialize(defs);
|
||||||
|
selectAnimationDialog.Pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadAnimation(AnimationDef animationDef)
|
||||||
|
{
|
||||||
|
Debug.Log("Loaded AnimationDef: " + animationDef.defName);
|
||||||
|
|
||||||
|
animationDef.Initialize();
|
||||||
|
Workspace.animationDef = animationDef;
|
||||||
|
Workspace.isDirty = true;
|
||||||
|
|
||||||
|
var animationDefCards = Resources.FindObjectsOfTypeAll(typeof(AnimationDefCard)) as AnimationDefCard[];
|
||||||
|
Debug.Log(animationDefCards);
|
||||||
|
if (animationDefCards != null)
|
||||||
|
{
|
||||||
|
animationDefCards[0].Initialize();
|
||||||
|
animationDefCards[0].gameObject.SetActive(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TrySaveAnimation()
|
||||||
|
{
|
||||||
|
if (Workspace.animationDef == null)
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
string defName = Workspace.animationDef.defName != null && Workspace.animationDef.defName != "" ? Workspace.animationDef.defName : "newAnimationDef";
|
||||||
|
|
||||||
|
var path = StandaloneFileBrowser.SaveFilePanel("Save AnimationDef File", "", defName, "xml");
|
||||||
|
|
||||||
|
if (path != null && path != "")
|
||||||
|
{ SaveAnimation(path); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveAnimation(string path)
|
||||||
|
{
|
||||||
|
Debug.Log("Saving AnimationDef: " + Workspace.animationDef.defName);
|
||||||
|
|
||||||
|
Defs defs = new Defs();
|
||||||
|
defs.animationDefs.Add(Workspace.animationDef);
|
||||||
|
|
||||||
|
XmlUtility.WriteXML(defs, path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NewAnimation()
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
|
||||||
|
AnimationDef animationDef = new AnimationDef();
|
||||||
|
|
||||||
|
// Add one stage, add one actor, add one clip, add one frame
|
||||||
|
|
||||||
|
Workspace.animationDef = new AnimationDef();
|
||||||
|
Workspace.isDirty = true;
|
||||||
|
|
||||||
|
var animationDefCards = Resources.FindObjectsOfTypeAll(typeof(AnimationDefCard)) as GameObject[];
|
||||||
|
|
||||||
|
if (animationDefCards != null)
|
||||||
|
{ animationDefCards[0].SetActive(true); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8c0c094e56b459d42850b3632db6c4ef
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,99 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class CameraController : MonoBehaviour
|
||||||
|
{
|
||||||
|
private Camera cam;
|
||||||
|
|
||||||
|
[Header("Scroll controls")]
|
||||||
|
public float scrollSpeed = 100f;
|
||||||
|
|
||||||
|
[Header("Zoom controls")]
|
||||||
|
public float zoom = -5f;
|
||||||
|
public float minZoom = -3f;
|
||||||
|
public float maxZoom = -15f;
|
||||||
|
|
||||||
|
[Header("Max bounds")]
|
||||||
|
public float maxBoundsXAxis = 30;
|
||||||
|
public float maxBoundsYAxis = 30;
|
||||||
|
|
||||||
|
private float x;
|
||||||
|
private float y;
|
||||||
|
|
||||||
|
private float curZoom;
|
||||||
|
private bool mouseDragActive = false;
|
||||||
|
private Vector3 mouseDragOrigin;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
x = transform.position.x;
|
||||||
|
y = transform.position.y;
|
||||||
|
|
||||||
|
curZoom = zoom;
|
||||||
|
|
||||||
|
transform.position = new Vector3(transform.position.x, transform.position.y, -10);
|
||||||
|
cam = this.GetComponent<Camera>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (Input.GetMouseButton(2))
|
||||||
|
{ StartMouseDrag(); }
|
||||||
|
|
||||||
|
else if (Input.GetMouseButtonUp(2))
|
||||||
|
{ ResetMouseDrag(); }
|
||||||
|
|
||||||
|
curZoom += Input.GetAxis("Mouse ScrollWheel") * scrollSpeed * 0.1f;
|
||||||
|
curZoom = Mathf.Clamp(curZoom, maxZoom, minZoom);
|
||||||
|
|
||||||
|
x = transform.position.x + Input.GetAxis("Horizontal") * scrollSpeed * Time.deltaTime;
|
||||||
|
y = transform.position.y + Input.GetAxis("Vertical") * scrollSpeed * Time.deltaTime;
|
||||||
|
|
||||||
|
Vector3 cameraPosition = Vector3.Lerp(transform.position, new Vector3(x, y, -10), 0.2f);
|
||||||
|
transform.position = cameraPosition;
|
||||||
|
cam.orthographicSize = Mathf.Abs(curZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPosition(Vector3 position)
|
||||||
|
{
|
||||||
|
x = position.x;
|
||||||
|
y = position.y;
|
||||||
|
|
||||||
|
transform.position = position;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetZoom(float zoom)
|
||||||
|
{
|
||||||
|
this.zoom = Mathf.Clamp(zoom, maxZoom, minZoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartMouseDrag()
|
||||||
|
{
|
||||||
|
Vector3 delta = cam.ScreenToWorldPoint(Input.mousePosition) - cam.transform.position;
|
||||||
|
|
||||||
|
if (mouseDragActive == false)
|
||||||
|
{
|
||||||
|
mouseDragActive = true;
|
||||||
|
mouseDragOrigin = cam.ScreenToWorldPoint(Input.mousePosition);
|
||||||
|
}
|
||||||
|
|
||||||
|
cam.transform.position = mouseDragOrigin - delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetMouseDrag()
|
||||||
|
{
|
||||||
|
mouseDragActive = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ResetCamera()
|
||||||
|
{
|
||||||
|
cam.transform.position = new Vector3(0, 0, -10);
|
||||||
|
curZoom = zoom;
|
||||||
|
|
||||||
|
mouseDragActive = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 192ae5e804d239d42891ba0bdc42e8b6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -1,35 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
namespace RimWorldAnimationStudio
|
|
||||||
{
|
|
||||||
public class DialogBox : MonoBehaviour
|
|
||||||
{
|
|
||||||
public Image backSplash;
|
|
||||||
|
|
||||||
public void Start()
|
|
||||||
{
|
|
||||||
//backSplash = Instanitate(new Image() { SpriteRenderer }, transform);
|
|
||||||
//SpriteRenderer spriteRenderer = backSplash.GetComponent<SpriteRenderer>();
|
|
||||||
//spriteRenderer.sprite = Resources.Load("whiteSquare");
|
|
||||||
//spriteRenderer.color = new Color(0f, 0f, 0f, 0f.2f);
|
|
||||||
|
|
||||||
//panelRectTransform.anchorMin = new Vector2(1, 0);
|
|
||||||
//panelRectTransform.anchorMax = new Vector2(0, 1);
|
|
||||||
//panelRectTransform.pivot = new Vector2(0.5f, 0.5f);
|
|
||||||
|
|
||||||
// Set layer to backsplash?
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Pop()
|
|
||||||
{
|
|
||||||
//backSplash.SetActive(gameObject.activeSelf == false);
|
|
||||||
gameObject.SetActive(gameObject.activeSelf == false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eabe165e5b1a70744a8073c1b5b541a7
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class DialogBox : MonoBehaviour
|
||||||
|
{
|
||||||
|
public List<GameObject> cloneObjects;
|
||||||
|
|
||||||
|
public void Pop()
|
||||||
|
{
|
||||||
|
gameObject.SetActive(gameObject.activeSelf == false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveCloneObjectsFromParent(Transform parent)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < parent.childCount; i++)
|
||||||
|
{ Destroy(parent.transform.GetChild(i).gameObject); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameObject AddCloneObjectToParent(Transform parent, int i = 0)
|
||||||
|
{
|
||||||
|
GameObject cloneObject = null;
|
||||||
|
|
||||||
|
if (cloneObjects != null && cloneObjects.Count > i)
|
||||||
|
{ cloneObject = Instantiate(cloneObjects[i], parent); }
|
||||||
|
|
||||||
|
return cloneObject;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectAnimationDialog : DialogBox
|
||||||
|
{
|
||||||
|
public void Initialize(Defs defs)
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < defs.animationDefs.Count; i++)
|
||||||
|
{
|
||||||
|
AnimationDef animationDef = defs.animationDefs[i];
|
||||||
|
|
||||||
|
Transform _optionButton = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionButton.Find("Text").GetComponent<Text>().text = animationDef.defName;
|
||||||
|
|
||||||
|
Button buttonComp = _optionButton.GetComponent<Button>();
|
||||||
|
buttonComp.onClick.AddListener(delegate { Pop(); ApplicationManager.Instance.LoadAnimation(animationDef); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6db038d692d34c441b171c72c78e0066
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectBodyDefTypesDialog : DialogBox
|
||||||
|
{
|
||||||
|
private Actor actor;
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddBodyDefType(InputField field)
|
||||||
|
{
|
||||||
|
Debug.Log("Attempting to add new body def type");
|
||||||
|
|
||||||
|
if (field?.text == null || field.text == "")
|
||||||
|
{ Debug.LogWarning("Input field is null"); return; }
|
||||||
|
|
||||||
|
if (Workspace.bodyDefTypes.Contains(field.text))
|
||||||
|
{ Debug.LogWarning("Body def type is null"); field.text = ""; return; }
|
||||||
|
|
||||||
|
Debug.Log("Added new body type def: " + field.text);
|
||||||
|
Workspace.bodyDefTypes.Add(field.text);
|
||||||
|
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize(Actor actor = null)
|
||||||
|
{
|
||||||
|
if (actor != null)
|
||||||
|
{ this.actor = actor; }
|
||||||
|
|
||||||
|
if (actor == null)
|
||||||
|
{ actor = this.actor; }
|
||||||
|
|
||||||
|
if (actor == null) return;
|
||||||
|
|
||||||
|
foreach (string bodyDefType in actor.bodyDefTypes)
|
||||||
|
{
|
||||||
|
if (Workspace.bodyDefTypes.Contains(bodyDefType) == false)
|
||||||
|
{ Workspace.bodyDefTypes.Add(bodyDefType); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < Workspace.bodyDefTypes.Count; i++)
|
||||||
|
{
|
||||||
|
string bodyDefType = Workspace.bodyDefTypes[i];
|
||||||
|
|
||||||
|
Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionToggle.Find("Text").GetComponent<Text>().text = bodyDefType;
|
||||||
|
|
||||||
|
Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
|
||||||
|
toggleComp.isOn = actor.bodyDefTypes.Contains(bodyDefType);
|
||||||
|
toggleComp.onValueChanged.AddListener(delegate {
|
||||||
|
|
||||||
|
if (toggleComp.isOn && actor.bodyDefTypes.Contains(bodyDefType) == false)
|
||||||
|
{ actor.bodyDefTypes.Add(bodyDefType); }
|
||||||
|
|
||||||
|
else if (toggleComp.isOn == false && actor.bodyDefTypes.Contains(bodyDefType))
|
||||||
|
{ actor.bodyDefTypes.Remove(bodyDefType); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
|
||||||
|
_optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new body def type...";
|
||||||
|
|
||||||
|
InputField fieldComp = _optionField.GetComponent<InputField>();
|
||||||
|
fieldComp.onEndEdit.AddListener(delegate { AddBodyDefType(fieldComp); });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b66fb83b0bed5a0438f6fbe11f0c35e0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectBodyPartsDialog : DialogBox
|
||||||
|
{
|
||||||
|
private Actor actor;
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddBodyPart(InputField field)
|
||||||
|
{
|
||||||
|
Debug.Log("Attempting to add new body part");
|
||||||
|
|
||||||
|
if (field?.text == null || field.text == "")
|
||||||
|
{ Debug.LogWarning("Input field is null"); return; }
|
||||||
|
|
||||||
|
if (Workspace.bodyParts.Contains(field.text))
|
||||||
|
{ Debug.LogWarning("Body part is null"); field.text = ""; return; }
|
||||||
|
|
||||||
|
Debug.Log("Add new body part: " + field.text);
|
||||||
|
Workspace.bodyParts.Add(field.text);
|
||||||
|
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize(Actor actor = null)
|
||||||
|
{
|
||||||
|
if (actor != null)
|
||||||
|
{ this.actor = actor; }
|
||||||
|
|
||||||
|
if (actor == null)
|
||||||
|
{ actor = this.actor; }
|
||||||
|
|
||||||
|
if (actor == null) return;
|
||||||
|
|
||||||
|
foreach (string bodyPart in actor.requiredGenitals)
|
||||||
|
{
|
||||||
|
if (Workspace.bodyParts.Contains(bodyPart) == false)
|
||||||
|
{ Workspace.bodyParts.Add(bodyPart); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < Workspace.bodyParts.Count; i++)
|
||||||
|
{
|
||||||
|
string bodyPart = Workspace.bodyParts[i];
|
||||||
|
|
||||||
|
Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionToggle.Find("Text").GetComponent<Text>().text = bodyPart;
|
||||||
|
|
||||||
|
Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
|
||||||
|
toggleComp.isOn = actor.requiredGenitals.Contains(bodyPart);
|
||||||
|
toggleComp.onValueChanged.AddListener(delegate {
|
||||||
|
|
||||||
|
if (toggleComp.isOn && actor.requiredGenitals.Contains(bodyPart) == false)
|
||||||
|
{ actor.requiredGenitals.Add(bodyPart); }
|
||||||
|
|
||||||
|
else if (toggleComp.isOn == false && actor.requiredGenitals.Contains(bodyPart))
|
||||||
|
{ actor.requiredGenitals.Remove(bodyPart); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
|
||||||
|
_optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new body part name...";
|
||||||
|
|
||||||
|
InputField fieldComp = _optionField.GetComponent<InputField>();
|
||||||
|
fieldComp.onEndEdit.AddListener(delegate { AddBodyPart(fieldComp); });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 459a1b2a918e12f468445853ea5821e0
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,87 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectDefNamesDialog : DialogBox
|
||||||
|
{
|
||||||
|
private Actor actor;
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddDefName(InputField field)
|
||||||
|
{
|
||||||
|
Debug.Log("Attempting to add new def name");
|
||||||
|
|
||||||
|
if (field?.text == null || field.text == "")
|
||||||
|
{ Debug.LogWarning("Input field is null"); return; }
|
||||||
|
|
||||||
|
if (Workspace.defNames.Contains(field.text))
|
||||||
|
{ Debug.LogWarning("Def name is null"); field.text = ""; return; }
|
||||||
|
|
||||||
|
Debug.Log("Added new def name: " + field.text);
|
||||||
|
Workspace.defNames.Add(field.text);
|
||||||
|
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize(Actor actor = null)
|
||||||
|
{
|
||||||
|
if (actor != null)
|
||||||
|
{ this.actor = actor; }
|
||||||
|
|
||||||
|
if (actor == null)
|
||||||
|
{ actor = this.actor; }
|
||||||
|
|
||||||
|
if (actor == null) return;
|
||||||
|
|
||||||
|
foreach (string defName in actor.defNames)
|
||||||
|
{
|
||||||
|
if (Workspace.defNames.Contains(defName) == false)
|
||||||
|
{ Workspace.defNames.Add(defName); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < Workspace.defNames.Count; i++)
|
||||||
|
{
|
||||||
|
string defName = Workspace.defNames[i];
|
||||||
|
|
||||||
|
Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionToggle.Find("Text").GetComponent<Text>().text = defName;
|
||||||
|
|
||||||
|
Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
|
||||||
|
toggleComp.isOn = actor.defNames.Contains(defName);
|
||||||
|
toggleComp.onValueChanged.AddListener(delegate {
|
||||||
|
|
||||||
|
if (toggleComp.isOn && actor.defNames.Contains(defName) == false)
|
||||||
|
{ actor.defNames.Add(defName); }
|
||||||
|
|
||||||
|
else if (toggleComp.isOn == false && actor.defNames.Contains(defName))
|
||||||
|
{ actor.defNames.Remove(defName); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
|
||||||
|
_optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new def name...";
|
||||||
|
|
||||||
|
InputField fieldComp = _optionField.GetComponent<InputField>();
|
||||||
|
fieldComp.onEndEdit.AddListener(delegate { AddDefName(fieldComp); });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9842b9e0fd45d4643af5bed7ba2de307
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,76 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectInteractionDefsDialog : DialogBox
|
||||||
|
{
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddBodyPart(InputField field)
|
||||||
|
{
|
||||||
|
if (field?.text == null || field.text == "")
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
if (Workspace.bodyParts.Contains(field.text))
|
||||||
|
{ field.text = ""; return; }
|
||||||
|
|
||||||
|
Workspace.interactionDefTypes.Add(field.text);
|
||||||
|
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
if (Workspace.animationDef == null) return;
|
||||||
|
|
||||||
|
foreach (string interactionDefType in Workspace.animationDef.interactionDefTypes)
|
||||||
|
{
|
||||||
|
if (Workspace.interactionDefTypes.Contains(interactionDefType) == false)
|
||||||
|
{ Workspace.interactionDefTypes.Add(interactionDefType); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < Workspace.bodyParts.Count; i++)
|
||||||
|
{
|
||||||
|
string interactionDefType = Workspace.interactionDefTypes[i];
|
||||||
|
|
||||||
|
Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionToggle.Find("Text").GetComponent<Text>().text = interactionDefType;
|
||||||
|
|
||||||
|
Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
|
||||||
|
toggleComp.isOn = Workspace.animationDef.interactionDefTypes.Contains(interactionDefType);
|
||||||
|
toggleComp.onValueChanged.AddListener(delegate {
|
||||||
|
|
||||||
|
if (toggleComp.isOn && Workspace.animationDef.interactionDefTypes.Contains(interactionDefType) == false)
|
||||||
|
{ Workspace.animationDef.interactionDefTypes.Add(interactionDefType); }
|
||||||
|
|
||||||
|
else if (toggleComp.isOn == false && Workspace.animationDef.interactionDefTypes.Contains(interactionDefType))
|
||||||
|
{ Workspace.animationDef.interactionDefTypes.Remove(interactionDefType); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
|
||||||
|
_optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new interaction def type...";
|
||||||
|
|
||||||
|
InputField fieldComp = _optionField.GetComponent<InputField>();
|
||||||
|
fieldComp.onEndEdit.AddListener(delegate { AddBodyPart(fieldComp); });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cace588a3682dc649b94355d8eee4a77
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,76 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class SelectSexTypesDialog : DialogBox
|
||||||
|
{
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddSexType(InputField field)
|
||||||
|
{
|
||||||
|
if (field?.text == null || field.text == "")
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
if (Workspace.bodyParts.Contains(field.text))
|
||||||
|
{ field.text = ""; return; }
|
||||||
|
|
||||||
|
Workspace.sexTypes.Add(field.text);
|
||||||
|
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
if (Workspace.animationDef == null) return;
|
||||||
|
|
||||||
|
foreach (string sexType in Workspace.animationDef.sexTypes)
|
||||||
|
{
|
||||||
|
if (Workspace.sexTypes.Contains(sexType) == false)
|
||||||
|
{ Workspace.sexTypes.Add(sexType); }
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
Reset();
|
||||||
|
|
||||||
|
for (int i = 0; i < Workspace.bodyParts.Count; i++)
|
||||||
|
{
|
||||||
|
string sexType = Workspace.sexTypes[i];
|
||||||
|
|
||||||
|
Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
|
||||||
|
_optionToggle.Find("Text").GetComponent<Text>().text = sexType;
|
||||||
|
|
||||||
|
Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
|
||||||
|
toggleComp.isOn = Workspace.animationDef.sexTypes.Contains(sexType);
|
||||||
|
toggleComp.onValueChanged.AddListener(delegate {
|
||||||
|
|
||||||
|
if (toggleComp.isOn && Workspace.animationDef.sexTypes.Contains(sexType) == false)
|
||||||
|
{ Workspace.animationDef.sexTypes.Add(sexType); }
|
||||||
|
|
||||||
|
else if (toggleComp.isOn == false && Workspace.animationDef.sexTypes.Contains(sexType))
|
||||||
|
{ Workspace.animationDef.sexTypes.Remove(sexType); }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
|
||||||
|
_optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new sex type...";
|
||||||
|
|
||||||
|
InputField fieldComp = _optionField.GetComponent<InputField>();
|
||||||
|
fieldComp.onEndEdit.AddListener(delegate { AddSexType(fieldComp); });
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
Transform contentWindow = transform.FindDeepChild("Content");
|
||||||
|
RemoveCloneObjectsFromParent(contentWindow);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1d4b7a5a5ddb7d744b726c3c13e2fc5e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -1,43 +0,0 @@
|
||||||
using System.Xml;
|
|
||||||
using System.Xml.Serialization;
|
|
||||||
|
|
||||||
public enum AltitudeLayer
|
|
||||||
{
|
|
||||||
[XmlEnum(Name = "Terrain")] Terrain,
|
|
||||||
[XmlEnum(Name = "TerrainScatter")] TerrainScatter,
|
|
||||||
[XmlEnum(Name = "Floor")] Floor,
|
|
||||||
[XmlEnum(Name = "Conduits")] Conduits,
|
|
||||||
[XmlEnum(Name = "FloorCoverings")] FloorCoverings,
|
|
||||||
[XmlEnum(Name = "FloorEmplacement")] FloorEmplacement,
|
|
||||||
[XmlEnum(Name = "Filth")] Filth,
|
|
||||||
[XmlEnum(Name = "Zone")] Zone,
|
|
||||||
[XmlEnum(Name = "SmallWire")] SmallWire,
|
|
||||||
[XmlEnum(Name = "LowPlant")] LowPlant,
|
|
||||||
[XmlEnum(Name = "MoteLow")] MoteLow,
|
|
||||||
[XmlEnum(Name = "Shadows")] Shadows,
|
|
||||||
[XmlEnum(Name = "DoorMoveable")] DoorMoveable,
|
|
||||||
[XmlEnum(Name = "Building")] Building,
|
|
||||||
[XmlEnum(Name = "BuildingOnTop")] BuildingOnTop,
|
|
||||||
[XmlEnum(Name = "MoteBelowThings")] MoteBelowThings,
|
|
||||||
[XmlEnum(Name = "Item")] Item,
|
|
||||||
[XmlEnum(Name = "ItemImportant")] ItemImportant,
|
|
||||||
[XmlEnum(Name = "LayingPawn")] LayingPawn,
|
|
||||||
[XmlEnum(Name = "PawnRope")] PawnRope,
|
|
||||||
[XmlEnum(Name = "Projectile")] Projectile,
|
|
||||||
[XmlEnum(Name = "Pawn")] Pawn,
|
|
||||||
[XmlEnum(Name = "PawnUnused")] PawnUnused,
|
|
||||||
[XmlEnum(Name = "PawnState")] PawnState,
|
|
||||||
[XmlEnum(Name = "Blueprint")] Blueprint,
|
|
||||||
[XmlEnum(Name = "MoteOverheadLow")] MoteOverheadLow,
|
|
||||||
[XmlEnum(Name = "MoteOverhead")] MoteOverhead,
|
|
||||||
[XmlEnum(Name = "Gas")] Gas,
|
|
||||||
[XmlEnum(Name = "Skyfaller")] Skyfaller,
|
|
||||||
[XmlEnum(Name = "Weather")] Weather,
|
|
||||||
[XmlEnum(Name = "LightingOverlay")] LightingOverlay,
|
|
||||||
[XmlEnum(Name = "VisEffects")] VisEffects,
|
|
||||||
[XmlEnum(Name = "FogOfWar")] FogOfWar,
|
|
||||||
[XmlEnum(Name = "WorldClipper")] WorldClipper,
|
|
||||||
[XmlEnum(Name = "MapDataOverlay")] MapDataOverlay,
|
|
||||||
[XmlEnum(Name = "MetaOverlays")] MetaOverlays,
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b51dcdd346a0cc469b21a6ffe1592fc
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,19 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
public static class IListExtensions
|
||||||
|
{
|
||||||
|
public static bool NullOrEmpty<T>(this IList<T> list)
|
||||||
|
{
|
||||||
|
return list == null || list.Any() == false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool NotNullOrEmpty<T>(this IList<T> list)
|
||||||
|
{
|
||||||
|
return NullOrEmpty<T>(list) == false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a030b2589ac872442a0d1aea7f5b5e70
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,24 @@
|
||||||
|
using UnityEngine;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
public static class TransformExtensions
|
||||||
|
{
|
||||||
|
public static Transform FindDeepChild(this Transform parent, string childName)
|
||||||
|
{
|
||||||
|
Queue<Transform> queue = new Queue<Transform>();
|
||||||
|
queue.Enqueue(parent);
|
||||||
|
|
||||||
|
while (queue.Count > 0)
|
||||||
|
{
|
||||||
|
var c = queue.Dequeue();
|
||||||
|
if (c.name == childName)
|
||||||
|
return c;
|
||||||
|
foreach (Transform t in c)
|
||||||
|
queue.Enqueue(t);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 859d0be8594b5bc46aa3fb70f78149ee
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,52 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace RimWorldAnimationStudio
|
||||||
|
{
|
||||||
|
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour
|
||||||
|
{
|
||||||
|
private static bool shuttingDown = false;
|
||||||
|
private static object threadLock = new object();
|
||||||
|
private static T instance;
|
||||||
|
|
||||||
|
public static T Instance
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (shuttingDown)
|
||||||
|
{
|
||||||
|
Debug.LogWarning("[Singleton] Instance '" + typeof(T) + "' already destroyed. Returning null.");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
lock (threadLock)
|
||||||
|
{
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
instance = (T)FindObjectOfType(typeof(T));
|
||||||
|
|
||||||
|
if (instance == null)
|
||||||
|
{
|
||||||
|
var singletonObject = new GameObject();
|
||||||
|
instance = singletonObject.AddComponent<T>();
|
||||||
|
singletonObject.name = typeof(T).ToString() + " (Singleton)";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
DontDestroyOnLoad(this.gameObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
shuttingDown = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c2afae193e74a1e4ba127241833aea0e
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -7,41 +7,21 @@ using UnityEngine;
|
||||||
|
|
||||||
namespace RimWorldAnimationStudio
|
namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class Workspace : MonoBehaviour
|
public class Workspace : Singleton<Workspace>
|
||||||
{
|
{
|
||||||
public AnimationDef animationDef;
|
public static AnimationDef animationDef;
|
||||||
public int stageID = 0;
|
public static int stageID = 0;
|
||||||
public bool isDirty = false;
|
public static bool isDirty = false;
|
||||||
|
|
||||||
public List<WorkspaceSnapShot> workspaceHistory = new List<WorkspaceSnapShot>();
|
public static List<string> defNames = new List<string>() { "Human" };
|
||||||
public int maxHistoryDepth = 100;
|
public static List<string> bodyParts = new List<string>() { "Penis", "Vagina", "Anus", "Breasts", "Mouth" };
|
||||||
public int historyIndex = 0;
|
public static List<string> bodyDefTypes = new List<string>() { "Human" };
|
||||||
|
public static List<string> sexTypes = new List<string>() { "None", "Vaginal", "Anal", "Oral", "Masturbation", "DoublePenetration", "Boobjob", "Handjob", "Footjob", "Fingering", "Scissoring", "MutualMasturbation", "Fisting", "MechImplant", "Rimming", "Fellatio", "Cunnilingus", "Sixtynine" };
|
||||||
|
public static List<string> interactionDefTypes = new List<string>();
|
||||||
|
|
||||||
public void TryToCloseApplication()
|
private static List<WorkspaceSnapShot> workspaceHistory = new List<WorkspaceSnapShot>();
|
||||||
{
|
private static int maxHistoryDepth = 100;
|
||||||
if (isDirty)
|
private static int historyIndex = 0;
|
||||||
{
|
|
||||||
//exitDialog.Pop();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseApplication();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CloseApplication()
|
|
||||||
{
|
|
||||||
Application.Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void GenerateLoadOptions(Defs defs)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < defs.animationDefs.Count - 1; i++)
|
|
||||||
{
|
|
||||||
//Instantiate child button
|
|
||||||
//button.text
|
|
||||||
//buttoncallback = LoadADef(list[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void TrackChanges()
|
public void TrackChanges()
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,9 +8,9 @@ using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace RimWorldAnimationStudio
|
namespace RimWorldAnimationStudio
|
||||||
{
|
{
|
||||||
public class XmlUtility
|
public static class XmlUtility
|
||||||
{
|
{
|
||||||
public T ReadXML<T>(string path)
|
public static T ReadXML<T>(string path)
|
||||||
{
|
{
|
||||||
using (StreamReader stringReader = new StreamReader(path))
|
using (StreamReader stringReader = new StreamReader(path))
|
||||||
{
|
{
|
||||||
|
@ -20,17 +20,17 @@ namespace RimWorldAnimationStudio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteXML(AnimationDef animationDef, string path)
|
public static void WriteXML(Defs defs, string path)
|
||||||
{
|
{
|
||||||
if (animationDef == null || path == null || path == "")
|
if (defs == null || path == null || path == "")
|
||||||
{ return; }
|
{ return; }
|
||||||
|
|
||||||
XmlSerializer writer = new XmlSerializer(typeof(AnimationDef));
|
XmlSerializer writer = new XmlSerializer(typeof(Defs));
|
||||||
XmlSerializerNamespaces nameSpaces = new XmlSerializerNamespaces();
|
XmlSerializerNamespaces nameSpaces = new XmlSerializerNamespaces();
|
||||||
nameSpaces.Add("", "");
|
nameSpaces.Add("", "");
|
||||||
|
|
||||||
FileStream file = File.Create(path);
|
FileStream file = File.Create(path);
|
||||||
writer.Serialize(file, animationDef, nameSpaces);
|
writer.Serialize(file, defs, nameSpaces);
|
||||||
file.Close();
|
file.Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|