Keyframe stretching plus appendage manipulation
| 
						 | 
				
			
			@ -63,6 +63,7 @@
 | 
			
		|||
    </Reference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="Assets\Editor\AdvancedPolygonColliderEditor.cs" />
 | 
			
		||||
    <Compile Include="Assets\Editor\KeyframeSliderEditor.cs" />
 | 
			
		||||
    <Reference Include="UnityEngine">
 | 
			
		||||
      <HintPath>C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -63,6 +63,8 @@
 | 
			
		|||
    </Reference>
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonCollider.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonColliderUtilities.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\AnimationComponents\Actor.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\AnimationComponents\AlienRaceOffset.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\AnimationComponents\AnimationClips\AnimationClip.cs" />
 | 
			
		||||
| 
						 | 
				
			
			@ -83,6 +85,7 @@
 | 
			
		|||
    <Compile Include="Assets\Scripts\GUI\ActorBodyPart.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\ActorCard.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\ActorKeyframeCard.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\AddSoundDefButton.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\AnimationDefCard.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\AnimationTimeline.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\DialogBox.cs" />
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +95,9 @@
 | 
			
		|||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectDefNamesDialog.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectInteractionDefsDialog.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectSexTypesDialog.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectSoundDefDialog.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\KeyframeSlider.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\QuiverToggle.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\GUI\StageCard.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\Managers\AnimationController.cs" />
 | 
			
		||||
    <Compile Include="Assets\Scripts\Managers\ApplicationManager.cs" />
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										22
									
								
								Assets/Editor/AdvancedPolygonColliderEditor.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
using UnityEngine;
 | 
			
		||||
using UnityEditor;
 | 
			
		||||
 | 
			
		||||
using System.Collections;
 | 
			
		||||
 | 
			
		||||
namespace DigitalRuby.AdvancedPolygonCollider
 | 
			
		||||
{
 | 
			
		||||
    [CustomEditor(typeof(AdvancedPolygonCollider))]
 | 
			
		||||
    public class AdvancedPolygonColliderEditor : Editor
 | 
			
		||||
    {
 | 
			
		||||
        public override void OnInspectorGUI()
 | 
			
		||||
        {
 | 
			
		||||
            base.OnInspectorGUI();
 | 
			
		||||
 | 
			
		||||
            AdvancedPolygonCollider c = target as AdvancedPolygonCollider;
 | 
			
		||||
            if (c != null)
 | 
			
		||||
            {
 | 
			
		||||
                EditorGUILayout.LabelField("Vertices: " + c.VerticesCount);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								Assets/Editor/AdvancedPolygonColliderEditor.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 08b096b84c0da4945b145bddb76c3761
 | 
			
		||||
timeCreated: 1450482984
 | 
			
		||||
licenseType: Store
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -9,6 +9,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
    {
 | 
			
		||||
        SerializedProperty ghostSlidersProp;
 | 
			
		||||
        SerializedProperty ghostSliderPrefabProp;
 | 
			
		||||
        SerializedProperty handleImageProp;
 | 
			
		||||
        SerializedProperty soundIconProp;
 | 
			
		||||
        SerializedProperty maxGhostsProp;
 | 
			
		||||
 | 
			
		||||
        protected override void OnEnable()
 | 
			
		||||
| 
						 | 
				
			
			@ -16,6 +18,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
            base.OnEnable();
 | 
			
		||||
            ghostSlidersProp = serializedObject.FindProperty("ghostSliders");
 | 
			
		||||
            ghostSliderPrefabProp = serializedObject.FindProperty("ghostSliderPrefab");
 | 
			
		||||
            handleImageProp = serializedObject.FindProperty("handleImage");
 | 
			
		||||
            soundIconProp = serializedObject.FindProperty("soundIcon");
 | 
			
		||||
            maxGhostsProp = serializedObject.FindProperty("maxGhosts");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -23,6 +27,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        {
 | 
			
		||||
            EditorGUILayout.PropertyField(ghostSlidersProp, new GUIContent("Ghost Sliders"));
 | 
			
		||||
            EditorGUILayout.PropertyField(ghostSliderPrefabProp, new GUIContent("Ghost Slider Prefab"));
 | 
			
		||||
            EditorGUILayout.PropertyField(handleImageProp, new GUIContent("Handle Image"));
 | 
			
		||||
            EditorGUILayout.PropertyField(soundIconProp, new GUIContent("Sound Icon"));
 | 
			
		||||
            EditorGUILayout.PropertyField(maxGhostsProp, new GUIContent("Max Ghosts"));
 | 
			
		||||
 | 
			
		||||
            serializedObject.ApplyModifiedProperties();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,8 +10,9 @@ GameObject:
 | 
			
		|||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7929422519883802245}
 | 
			
		||||
  - component: {fileID: 7929422519883802244}
 | 
			
		||||
  - component: {fileID: 9094326343171681927}
 | 
			
		||||
  - component: {fileID: 6126300607907588871}
 | 
			
		||||
  - component: {fileID: 3275330537164762353}
 | 
			
		||||
  - component: {fileID: 7621569460770085946}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: ActorHead
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +28,7 @@ Transform:
 | 
			
		|||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7929422519883802246}
 | 
			
		||||
  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: 0, y: 0, z: 0}
 | 
			
		||||
  m_LocalPosition: {x: 0, y: 0.34, z: 0}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 7929422520673851209}
 | 
			
		||||
| 
						 | 
				
			
			@ -77,28 +78,14 @@ SpriteRenderer:
 | 
			
		|||
  m_FlipX: 0
 | 
			
		||||
  m_FlipY: 0
 | 
			
		||||
  m_DrawMode: 0
 | 
			
		||||
  m_Size: {x: 1.28, y: 1.28}
 | 
			
		||||
  m_Size: {x: 0.64, y: 0.64}
 | 
			
		||||
  m_AdaptiveModeThreshold: 0.5
 | 
			
		||||
  m_SpriteTileMode: 0
 | 
			
		||||
  m_WasSpriteAssigned: 1
 | 
			
		||||
  m_MaskInteraction: 0
 | 
			
		||||
  m_SpriteSortPoint: 0
 | 
			
		||||
--- !u!114 &3275330537164762353
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7929422519883802246}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  bodyPartRenderer: {fileID: 7929422519883802244}
 | 
			
		||||
  parent: {fileID: -4411442180840688308}
 | 
			
		||||
--- !u!61 &7621569460770085946
 | 
			
		||||
BoxCollider2D:
 | 
			
		||||
--- !u!60 &9094326343171681927
 | 
			
		||||
PolygonCollider2D:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
| 
						 | 
				
			
			@ -115,14 +102,75 @@ BoxCollider2D:
 | 
			
		|||
    border: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
    pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
    oldSize: {x: 1.28, y: 1.28}
 | 
			
		||||
    newSize: {x: 1.28, y: 1.28}
 | 
			
		||||
    newSize: {x: 0.64, y: 0.64}
 | 
			
		||||
    adaptiveTilingThreshold: 0.5
 | 
			
		||||
    drawMode: 0
 | 
			
		||||
    adaptiveTiling: 0
 | 
			
		||||
  m_AutoTiling: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Size: {x: 0.5, y: 0.5}
 | 
			
		||||
  m_EdgeRadius: 0
 | 
			
		||||
  m_Points:
 | 
			
		||||
    m_Paths:
 | 
			
		||||
    - - {x: -0.024999999, y: -0.265}
 | 
			
		||||
      - {x: 0.13499999, y: -0.205}
 | 
			
		||||
      - {x: 0.225, y: -0.044999998}
 | 
			
		||||
      - {x: 0.225, y: 0.105}
 | 
			
		||||
      - {x: 0.195, y: 0.16499999}
 | 
			
		||||
      - {x: 0.105, y: 0.225}
 | 
			
		||||
      - {x: -0.074999996, y: 0.235}
 | 
			
		||||
      - {x: -0.175, y: 0.185}
 | 
			
		||||
      - {x: -0.225, y: 0.105}
 | 
			
		||||
      - {x: -0.21499999, y: -0.085}
 | 
			
		||||
      - {x: -0.16499999, y: -0.175}
 | 
			
		||||
      - {x: -0.074999996, y: -0.24499999}
 | 
			
		||||
--- !u!114 &6126300607907588871
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7929422519883802246}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  AlphaTolerance: 20
 | 
			
		||||
  DistanceThreshold: 2
 | 
			
		||||
  Scale: 1
 | 
			
		||||
  Decompose: 0
 | 
			
		||||
  RunInPlayMode: 1
 | 
			
		||||
  UseCache: 0
 | 
			
		||||
  lastAlphaTolerance: 20
 | 
			
		||||
  lastScale: 1
 | 
			
		||||
  lastDistanceThreshold: 2
 | 
			
		||||
  lastDecompose: 0
 | 
			
		||||
  lastSprite: {fileID: 21300000, guid: 0b37cc6354dc6a94cb2d2de2529baa4e, type: 3}
 | 
			
		||||
  lastRect:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    x: 0
 | 
			
		||||
    y: 0
 | 
			
		||||
    width: 128
 | 
			
		||||
    height: 128
 | 
			
		||||
  lastOffset: {x: 64, y: 64}
 | 
			
		||||
  lastPixelsPerUnit: 100
 | 
			
		||||
  lastFlipX: 0
 | 
			
		||||
  lastFlipY: 0
 | 
			
		||||
  editorCache: []
 | 
			
		||||
--- !u!114 &3275330537164762353
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7929422519883802246}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  bodyPartRenderer: {fileID: 7929422519883802244}
 | 
			
		||||
  parent: {fileID: -4411442180840688308}
 | 
			
		||||
  isHead: 1
 | 
			
		||||
  isSelected: 0
 | 
			
		||||
--- !u!1 &7929422520673851210
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -133,7 +181,8 @@ GameObject:
 | 
			
		|||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7929422520673851209}
 | 
			
		||||
  - component: {fileID: 7929422520673851208}
 | 
			
		||||
  - component: {fileID: -7575978412006062152}
 | 
			
		||||
  - component: {fileID: 4571872096250432618}
 | 
			
		||||
  - component: {fileID: 1604891790409609302}
 | 
			
		||||
  - component: {fileID: -4411442180840688308}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: ActorBody
 | 
			
		||||
| 
						 | 
				
			
			@ -154,6 +203,7 @@ Transform:
 | 
			
		|||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_Children:
 | 
			
		||||
  - {fileID: 7929422519883802245}
 | 
			
		||||
  - {fileID: 4090857286061458930}
 | 
			
		||||
  m_Father: {fileID: 0}
 | 
			
		||||
  m_RootOrder: 0
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
| 
						 | 
				
			
			@ -207,8 +257,8 @@ SpriteRenderer:
 | 
			
		|||
  m_WasSpriteAssigned: 1
 | 
			
		||||
  m_MaskInteraction: 0
 | 
			
		||||
  m_SpriteSortPoint: 0
 | 
			
		||||
--- !u!61 &-7575978412006062152
 | 
			
		||||
BoxCollider2D:
 | 
			
		||||
--- !u!60 &4571872096250432618
 | 
			
		||||
PolygonCollider2D:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
| 
						 | 
				
			
			@ -220,7 +270,7 @@ BoxCollider2D:
 | 
			
		|||
  m_IsTrigger: 0
 | 
			
		||||
  m_UsedByEffector: 0
 | 
			
		||||
  m_UsedByComposite: 0
 | 
			
		||||
  m_Offset: {x: 0, y: -0.2}
 | 
			
		||||
  m_Offset: {x: 0, y: 0}
 | 
			
		||||
  m_SpriteTilingProperty:
 | 
			
		||||
    border: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
    pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
| 
						 | 
				
			
			@ -230,9 +280,54 @@ BoxCollider2D:
 | 
			
		|||
    drawMode: 0
 | 
			
		||||
    adaptiveTiling: 0
 | 
			
		||||
  m_AutoTiling: 0
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  m_Size: {x: 0.75, y: 1}
 | 
			
		||||
  m_EdgeRadius: 0
 | 
			
		||||
  m_Points:
 | 
			
		||||
    m_Paths:
 | 
			
		||||
    - - {x: -0.11176471, y: -0.5117647}
 | 
			
		||||
      - {x: 0.1, y: -0.5117647}
 | 
			
		||||
      - {x: 0.20588236, y: -0.44117647}
 | 
			
		||||
      - {x: 0.3, y: -0.052941177}
 | 
			
		||||
      - {x: 0.2882353, y: 0.12352941}
 | 
			
		||||
      - {x: 0.21764706, y: 0.20588236}
 | 
			
		||||
      - {x: -0.04117647, y: 0.24117647}
 | 
			
		||||
      - {x: -0.19411765, y: 0.21764706}
 | 
			
		||||
      - {x: -0.2764706, y: 0.15882353}
 | 
			
		||||
      - {x: -0.3, y: -0.07647059}
 | 
			
		||||
      - {x: -0.21764706, y: -0.41764706}
 | 
			
		||||
      - {x: -0.17058824, y: -0.4882353}
 | 
			
		||||
--- !u!114 &1604891790409609302
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7929422520673851210}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  AlphaTolerance: 19
 | 
			
		||||
  DistanceThreshold: 2
 | 
			
		||||
  Scale: 1
 | 
			
		||||
  Decompose: 0
 | 
			
		||||
  RunInPlayMode: 1
 | 
			
		||||
  UseCache: 0
 | 
			
		||||
  lastAlphaTolerance: 19
 | 
			
		||||
  lastScale: 1
 | 
			
		||||
  lastDistanceThreshold: 2
 | 
			
		||||
  lastDecompose: 0
 | 
			
		||||
  lastSprite: {fileID: 21300000, guid: e6887bc2f64df4d4b91bd2d0ad0ffd98, type: 3}
 | 
			
		||||
  lastRect:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    x: 0
 | 
			
		||||
    y: 0
 | 
			
		||||
    width: 128
 | 
			
		||||
    height: 128
 | 
			
		||||
  lastOffset: {x: 64, y: 64}
 | 
			
		||||
  lastPixelsPerUnit: 85
 | 
			
		||||
  lastFlipX: 0
 | 
			
		||||
  lastFlipY: 0
 | 
			
		||||
  editorCache: []
 | 
			
		||||
--- !u!114 &-4411442180840688308
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -247,5 +342,182 @@ MonoBehaviour:
 | 
			
		|||
  m_EditorClassIdentifier: 
 | 
			
		||||
  actorID: 0
 | 
			
		||||
  bodyType: Male
 | 
			
		||||
  isSelected: 0
 | 
			
		||||
  bodyRenderer: {fileID: 7929422520673851208}
 | 
			
		||||
  headRenderer: {fileID: 7929422519883802244}
 | 
			
		||||
  appendageRenderer: {fileID: 4251726083449519904}
 | 
			
		||||
--- !u!1 &9122292209377678227
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 4090857286061458930}
 | 
			
		||||
  - component: {fileID: 4251726083449519904}
 | 
			
		||||
  - component: {fileID: 3728166245808944226}
 | 
			
		||||
  - component: {fileID: 1975559547785005251}
 | 
			
		||||
  - component: {fileID: 5577329845248860699}
 | 
			
		||||
  m_Layer: 0
 | 
			
		||||
  m_Name: ActorAppendage
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 0
 | 
			
		||||
--- !u!4 &4090857286061458930
 | 
			
		||||
Transform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 9122292209377678227}
 | 
			
		||||
  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
 | 
			
		||||
  m_LocalPosition: {x: 0, y: -0.471, z: 0}
 | 
			
		||||
  m_LocalScale: {x: 1, y: 1, z: 1}
 | 
			
		||||
  m_Children: []
 | 
			
		||||
  m_Father: {fileID: 7929422520673851209}
 | 
			
		||||
  m_RootOrder: 1
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
--- !u!212 &4251726083449519904
 | 
			
		||||
SpriteRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 9122292209377678227}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_CastShadows: 0
 | 
			
		||||
  m_ReceiveShadows: 0
 | 
			
		||||
  m_DynamicOccludee: 1
 | 
			
		||||
  m_MotionVectors: 1
 | 
			
		||||
  m_LightProbeUsage: 1
 | 
			
		||||
  m_ReflectionProbeUsage: 1
 | 
			
		||||
  m_RayTracingMode: 0
 | 
			
		||||
  m_RenderingLayerMask: 1
 | 
			
		||||
  m_RendererPriority: 0
 | 
			
		||||
  m_Materials:
 | 
			
		||||
  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
 | 
			
		||||
  m_StaticBatchInfo:
 | 
			
		||||
    firstSubMesh: 0
 | 
			
		||||
    subMeshCount: 0
 | 
			
		||||
  m_StaticBatchRoot: {fileID: 0}
 | 
			
		||||
  m_ProbeAnchor: {fileID: 0}
 | 
			
		||||
  m_LightProbeVolumeOverride: {fileID: 0}
 | 
			
		||||
  m_ScaleInLightmap: 1
 | 
			
		||||
  m_ReceiveGI: 1
 | 
			
		||||
  m_PreserveUVs: 0
 | 
			
		||||
  m_IgnoreNormalsForChartDetection: 0
 | 
			
		||||
  m_ImportantGI: 0
 | 
			
		||||
  m_StitchLightmapSeams: 1
 | 
			
		||||
  m_SelectedEditorRenderState: 0
 | 
			
		||||
  m_MinimumChartSize: 4
 | 
			
		||||
  m_AutoUVMaxDistance: 0.5
 | 
			
		||||
  m_AutoUVMaxAngle: 89
 | 
			
		||||
  m_LightmapParameters: {fileID: 0}
 | 
			
		||||
  m_SortingLayerID: -2115984483
 | 
			
		||||
  m_SortingLayer: 22
 | 
			
		||||
  m_SortingOrder: 1
 | 
			
		||||
  m_Sprite: {fileID: 21300000, guid: 38c0bc38c0d71b04cb11a1eb610990e1, type: 3}
 | 
			
		||||
  m_Color: {r: 1, g: 1, b: 1, a: 1}
 | 
			
		||||
  m_FlipX: 0
 | 
			
		||||
  m_FlipY: 0
 | 
			
		||||
  m_DrawMode: 0
 | 
			
		||||
  m_Size: {x: 0.64, y: 0.64}
 | 
			
		||||
  m_AdaptiveModeThreshold: 0.5
 | 
			
		||||
  m_SpriteTileMode: 0
 | 
			
		||||
  m_WasSpriteAssigned: 1
 | 
			
		||||
  m_MaskInteraction: 0
 | 
			
		||||
  m_SpriteSortPoint: 0
 | 
			
		||||
--- !u!60 &3728166245808944226
 | 
			
		||||
PolygonCollider2D:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 9122292209377678227}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_Density: 1
 | 
			
		||||
  m_Material: {fileID: 0}
 | 
			
		||||
  m_IsTrigger: 0
 | 
			
		||||
  m_UsedByEffector: 0
 | 
			
		||||
  m_UsedByComposite: 0
 | 
			
		||||
  m_Offset: {x: 0, y: 0}
 | 
			
		||||
  m_SpriteTilingProperty:
 | 
			
		||||
    border: {x: 0, y: 0, z: 0, w: 0}
 | 
			
		||||
    pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
    oldSize: {x: 1.3837838, y: 1.3837838}
 | 
			
		||||
    newSize: {x: 0.64, y: 0.64}
 | 
			
		||||
    adaptiveTilingThreshold: 0.5
 | 
			
		||||
    drawMode: 0
 | 
			
		||||
    adaptiveTiling: 0
 | 
			
		||||
  m_AutoTiling: 0
 | 
			
		||||
  m_Points:
 | 
			
		||||
    m_Paths:
 | 
			
		||||
    - - {x: -0.013513514, y: -0.035135135}
 | 
			
		||||
      - {x: 0.029729731, y: -0.029729731}
 | 
			
		||||
      - {x: 0.040540542, y: -0.0027027028}
 | 
			
		||||
      - {x: 0.045945946, y: 0.12162162}
 | 
			
		||||
      - {x: 0.013513514, y: 0.15945946}
 | 
			
		||||
      - {x: -0.024324324, y: 0.14864865}
 | 
			
		||||
      - {x: -0.040540542, y: 0.12162162}
 | 
			
		||||
      - {x: -0.024324324, y: -0.029729731}
 | 
			
		||||
    - - {x: -0.056756757, y: 0.008108108}
 | 
			
		||||
      - {x: -0.051351354, y: 0.072972976}
 | 
			
		||||
      - {x: -0.056756757, y: 0.029729731}
 | 
			
		||||
    - - {x: 0.056756757, y: 0.008108108}
 | 
			
		||||
      - {x: 0.056756757, y: 0.01891892}
 | 
			
		||||
    - - {x: 0.056756757, y: 0.07837838}
 | 
			
		||||
      - {x: 0.062162165, y: 0.1}
 | 
			
		||||
      - {x: 0.056756757, y: 0.089189194}
 | 
			
		||||
--- !u!114 &1975559547785005251
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 9122292209377678227}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  AlphaTolerance: 20
 | 
			
		||||
  DistanceThreshold: 2
 | 
			
		||||
  Scale: 1
 | 
			
		||||
  Decompose: 0
 | 
			
		||||
  RunInPlayMode: 1
 | 
			
		||||
  UseCache: 0
 | 
			
		||||
  lastAlphaTolerance: 20
 | 
			
		||||
  lastScale: 1
 | 
			
		||||
  lastDistanceThreshold: 2
 | 
			
		||||
  lastDecompose: 0
 | 
			
		||||
  lastSprite: {fileID: 21300000, guid: 38c0bc38c0d71b04cb11a1eb610990e1, type: 3}
 | 
			
		||||
  lastRect:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    x: 0
 | 
			
		||||
    y: 0
 | 
			
		||||
    width: 256
 | 
			
		||||
    height: 256
 | 
			
		||||
  lastOffset: {x: 128, y: 128}
 | 
			
		||||
  lastPixelsPerUnit: 185
 | 
			
		||||
  lastFlipX: 0
 | 
			
		||||
  lastFlipY: 0
 | 
			
		||||
  editorCache: []
 | 
			
		||||
--- !u!114 &5577329845248860699
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 9122292209377678227}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  bodyPartRenderer: {fileID: 4251726083449519904}
 | 
			
		||||
  parent: {fileID: -4411442180840688308}
 | 
			
		||||
  isHead: 0
 | 
			
		||||
  isSelected: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										948
									
								
								Assets/Resources/Prefabs/DialogBox.prefab
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,948 @@
 | 
			
		|||
%YAML 1.1
 | 
			
		||||
%TAG !u! tag:unity3d.com,2011:
 | 
			
		||||
--- !u!1 &7715503543522092287
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503543522092286}
 | 
			
		||||
  - component: {fileID: 7715503543522092284}
 | 
			
		||||
  - component: {fileID: 7715503543522092285}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Handle
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503543522092286
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543522092287}
 | 
			
		||||
  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: 7715503544843436707}
 | 
			
		||||
  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: 20, y: 20}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7715503543522092284
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543522092287}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503543522092285
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543522092287}
 | 
			
		||||
  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 &7715503543609300145
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503543609300144}
 | 
			
		||||
  - component: {fileID: 7715503543609300109}
 | 
			
		||||
  - component: {fileID: 7715503543609300110}
 | 
			
		||||
  - component: {fileID: 7715503543609300111}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Viewport
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503543609300144
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543609300145}
 | 
			
		||||
  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: 7715503544683182666}
 | 
			
		||||
  m_Father: {fileID: 7715503544115872493}
 | 
			
		||||
  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: -17, y: 0}
 | 
			
		||||
  m_Pivot: {x: 0, y: 1}
 | 
			
		||||
--- !u!222 &7715503543609300109
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543609300145}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503543609300110
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543609300145}
 | 
			
		||||
  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: 10917, 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 &7715503543609300111
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503543609300145}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_ShowMaskGraphic: 0
 | 
			
		||||
--- !u!1 &7715503544115872494
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544115872493}
 | 
			
		||||
  - component: {fileID: 7715503544115872490}
 | 
			
		||||
  - component: {fileID: 7715503544115872491}
 | 
			
		||||
  - component: {fileID: 7715503544115872492}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Scroll View
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544115872493
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544115872494}
 | 
			
		||||
  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: 7715503543609300144}
 | 
			
		||||
  - {fileID: 7715503544952922357}
 | 
			
		||||
  m_Father: {fileID: 7715503544296011585}
 | 
			
		||||
  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: 260, y: 200}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7715503544115872490
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544115872494}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544115872491
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544115872494}
 | 
			
		||||
  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: 10907, 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 &7715503544115872492
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544115872494}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_Content: {fileID: 7715503544683182666}
 | 
			
		||||
  m_Horizontal: 1
 | 
			
		||||
  m_Vertical: 1
 | 
			
		||||
  m_MovementType: 1
 | 
			
		||||
  m_Elasticity: 0.1
 | 
			
		||||
  m_Inertia: 1
 | 
			
		||||
  m_DecelerationRate: 0.135
 | 
			
		||||
  m_ScrollSensitivity: 1
 | 
			
		||||
  m_Viewport: {fileID: 7715503543609300144}
 | 
			
		||||
  m_HorizontalScrollbar: {fileID: 0}
 | 
			
		||||
  m_VerticalScrollbar: {fileID: 7715503544952922356}
 | 
			
		||||
  m_HorizontalScrollbarVisibility: 2
 | 
			
		||||
  m_VerticalScrollbarVisibility: 2
 | 
			
		||||
  m_HorizontalScrollbarSpacing: -3
 | 
			
		||||
  m_VerticalScrollbarSpacing: -3
 | 
			
		||||
  m_OnValueChanged:
 | 
			
		||||
    m_PersistentCalls:
 | 
			
		||||
      m_Calls: []
 | 
			
		||||
--- !u!1 &7715503544296011586
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544296011585}
 | 
			
		||||
  - component: {fileID: 7715503544296011614}
 | 
			
		||||
  - component: {fileID: 7715503544296011615}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: DialogBox
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 0
 | 
			
		||||
--- !u!224 &7715503544296011585
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544296011586}
 | 
			
		||||
  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: 7715503544115872493}
 | 
			
		||||
  - {fileID: 7715503544597145778}
 | 
			
		||||
  - {fileID: 7715503544528335668}
 | 
			
		||||
  m_Father: {fileID: 0}
 | 
			
		||||
  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 &7715503544296011614
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544296011586}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544296011615
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544296011586}
 | 
			
		||||
  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: 0, g: 0, b: 0, a: 0.392}
 | 
			
		||||
  m_RaycastTarget: 1
 | 
			
		||||
  m_Maskable: 1
 | 
			
		||||
  m_OnCullStateChanged:
 | 
			
		||||
    m_PersistentCalls:
 | 
			
		||||
      m_Calls: []
 | 
			
		||||
  m_Sprite: {fileID: 10907, 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 &7715503544528335669
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544528335668}
 | 
			
		||||
  - component: {fileID: 7715503544528335665}
 | 
			
		||||
  - component: {fileID: 7715503544528335666}
 | 
			
		||||
  - component: {fileID: 7715503544528335667}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: CloseWindowButton
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544528335668
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544528335669}
 | 
			
		||||
  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: 7715503544754162525}
 | 
			
		||||
  m_Father: {fileID: 7715503544296011585}
 | 
			
		||||
  m_RootOrder: 2
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
  m_AnchorMin: {x: 0.5, y: 0.5}
 | 
			
		||||
  m_AnchorMax: {x: 0.5, y: 0.5}
 | 
			
		||||
  m_AnchoredPosition: {x: 0, y: -115}
 | 
			
		||||
  m_SizeDelta: {x: 260, y: 30}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7715503544528335665
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544528335669}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544528335666
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544528335669}
 | 
			
		||||
  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 &7715503544528335667
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544528335669}
 | 
			
		||||
  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: 7715503544528335666}
 | 
			
		||||
  m_OnClick:
 | 
			
		||||
    m_PersistentCalls:
 | 
			
		||||
      m_Calls:
 | 
			
		||||
      - m_Target: {fileID: 0}
 | 
			
		||||
        m_MethodName: Pop
 | 
			
		||||
        m_Mode: 1
 | 
			
		||||
        m_Arguments:
 | 
			
		||||
          m_ObjectArgument: {fileID: 0}
 | 
			
		||||
          m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
 | 
			
		||||
          m_IntArgument: 0
 | 
			
		||||
          m_FloatArgument: 0
 | 
			
		||||
          m_StringArgument: 
 | 
			
		||||
          m_BoolArgument: 0
 | 
			
		||||
        m_CallState: 2
 | 
			
		||||
--- !u!1 &7715503544597145779
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544597145778}
 | 
			
		||||
  - component: {fileID: 7715503544597145776}
 | 
			
		||||
  - component: {fileID: 7715503544597145777}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Panel
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544597145778
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544597145779}
 | 
			
		||||
  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: 7715503544946347199}
 | 
			
		||||
  m_Father: {fileID: 7715503544296011585}
 | 
			
		||||
  m_RootOrder: 1
 | 
			
		||||
  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: 140}
 | 
			
		||||
  m_SizeDelta: {x: 260, y: 80}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7715503544597145776
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544597145779}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544597145777
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544597145779}
 | 
			
		||||
  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: 10907, 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 &7715503544683182667
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544683182666}
 | 
			
		||||
  - component: {fileID: 7715503544683182664}
 | 
			
		||||
  - component: {fileID: 7715503544683182665}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Content
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544683182666
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544683182667}
 | 
			
		||||
  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: 7715503543609300144}
 | 
			
		||||
  m_RootOrder: 0
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
  m_AnchorMin: {x: 0, y: 1}
 | 
			
		||||
  m_AnchorMax: {x: 1, y: 1}
 | 
			
		||||
  m_AnchoredPosition: {x: 0, y: 0}
 | 
			
		||||
  m_SizeDelta: {x: 0, y: 10}
 | 
			
		||||
  m_Pivot: {x: 0, y: 1}
 | 
			
		||||
--- !u!114 &7715503544683182664
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544683182667}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_Padding:
 | 
			
		||||
    m_Left: 10
 | 
			
		||||
    m_Right: 10
 | 
			
		||||
    m_Top: 10
 | 
			
		||||
    m_Bottom: 10
 | 
			
		||||
  m_ChildAlignment: 1
 | 
			
		||||
  m_Spacing: 5
 | 
			
		||||
  m_ChildForceExpandWidth: 1
 | 
			
		||||
  m_ChildForceExpandHeight: 0
 | 
			
		||||
  m_ChildControlWidth: 1
 | 
			
		||||
  m_ChildControlHeight: 0
 | 
			
		||||
  m_ChildScaleWidth: 0
 | 
			
		||||
  m_ChildScaleHeight: 0
 | 
			
		||||
--- !u!114 &7715503544683182665
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544683182667}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
 | 
			
		||||
  m_Name: 
 | 
			
		||||
  m_EditorClassIdentifier: 
 | 
			
		||||
  m_HorizontalFit: 0
 | 
			
		||||
  m_VerticalFit: 1
 | 
			
		||||
--- !u!1 &7715503544754162526
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544754162525}
 | 
			
		||||
  - component: {fileID: 7715503544754162523}
 | 
			
		||||
  - component: {fileID: 7715503544754162524}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Text
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544754162525
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544754162526}
 | 
			
		||||
  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: 7715503544528335668}
 | 
			
		||||
  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 &7715503544754162523
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544754162526}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544754162524
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544754162526}
 | 
			
		||||
  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: Close window
 | 
			
		||||
--- !u!1 &7715503544843436708
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544843436707}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Sliding Area
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544843436707
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544843436708}
 | 
			
		||||
  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: 7715503543522092286}
 | 
			
		||||
  m_Father: {fileID: 7715503544952922357}
 | 
			
		||||
  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: -20, y: -20}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!1 &7715503544946347168
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544946347199}
 | 
			
		||||
  - component: {fileID: 7715503544946347197}
 | 
			
		||||
  - component: {fileID: 7715503544946347198}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: DescriptiveText
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544946347199
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544946347168}
 | 
			
		||||
  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: 7715503544597145778}
 | 
			
		||||
  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: 260, y: 80}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7715503544946347197
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544946347168}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544946347198
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544946347168}
 | 
			
		||||
  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: 'Select all defs that can
 | 
			
		||||
 | 
			
		||||
    use this animation'
 | 
			
		||||
--- !u!1 &7715503544952922358
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 7715503544952922357}
 | 
			
		||||
  - component: {fileID: 7715503544952922354}
 | 
			
		||||
  - component: {fileID: 7715503544952922355}
 | 
			
		||||
  - component: {fileID: 7715503544952922356}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: Scrollbar Vertical
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 1
 | 
			
		||||
--- !u!224 &7715503544952922357
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544952922358}
 | 
			
		||||
  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: 7715503544843436707}
 | 
			
		||||
  m_Father: {fileID: 7715503544115872493}
 | 
			
		||||
  m_RootOrder: 1
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
  m_AnchorMin: {x: 1, y: 0}
 | 
			
		||||
  m_AnchorMax: {x: 1, y: 0}
 | 
			
		||||
  m_AnchoredPosition: {x: 0, y: 200}
 | 
			
		||||
  m_SizeDelta: {x: 20, y: 200}
 | 
			
		||||
  m_Pivot: {x: 1, y: 1}
 | 
			
		||||
--- !u!222 &7715503544952922354
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544952922358}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &7715503544952922355
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544952922358}
 | 
			
		||||
  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: 10907, 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 &7715503544952922356
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 7715503544952922358}
 | 
			
		||||
  m_Enabled: 1
 | 
			
		||||
  m_EditorHideFlags: 0
 | 
			
		||||
  m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, 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: 7715503543522092285}
 | 
			
		||||
  m_HandleRect: {fileID: 7715503543522092286}
 | 
			
		||||
  m_Direction: 2
 | 
			
		||||
  m_Value: 0
 | 
			
		||||
  m_Size: 1
 | 
			
		||||
  m_NumberOfSteps: 0
 | 
			
		||||
  m_OnValueChanged:
 | 
			
		||||
    m_PersistentCalls:
 | 
			
		||||
      m_Calls: []
 | 
			
		||||
							
								
								
									
										7
									
								
								Assets/Resources/Prefabs/DialogBox.prefab.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,7 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 8b89f6c9e5f696c4997760829c45a505
 | 
			
		||||
PrefabImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +71,80 @@ RectTransform:
 | 
			
		|||
  m_AnchoredPosition: {x: 0, y: 0}
 | 
			
		||||
  m_SizeDelta: {x: 0, y: 0}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!1 &3845252506739069817
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  serializedVersion: 6
 | 
			
		||||
  m_Component:
 | 
			
		||||
  - component: {fileID: 6663487708742390543}
 | 
			
		||||
  - component: {fileID: 7593977218429446981}
 | 
			
		||||
  - component: {fileID: 4593082054722737880}
 | 
			
		||||
  m_Layer: 5
 | 
			
		||||
  m_Name: SoundIcon
 | 
			
		||||
  m_TagString: Untagged
 | 
			
		||||
  m_Icon: {fileID: 0}
 | 
			
		||||
  m_NavMeshLayer: 0
 | 
			
		||||
  m_StaticEditorFlags: 0
 | 
			
		||||
  m_IsActive: 0
 | 
			
		||||
--- !u!224 &6663487708742390543
 | 
			
		||||
RectTransform:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 3845252506739069817}
 | 
			
		||||
  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: 5757681650493455882}
 | 
			
		||||
  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: 30, y: 30}
 | 
			
		||||
  m_Pivot: {x: 0.5, y: 0.5}
 | 
			
		||||
--- !u!222 &7593977218429446981
 | 
			
		||||
CanvasRenderer:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 3845252506739069817}
 | 
			
		||||
  m_CullTransparentMesh: 0
 | 
			
		||||
--- !u!114 &4593082054722737880
 | 
			
		||||
MonoBehaviour:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
  m_CorrespondingSourceObject: {fileID: 0}
 | 
			
		||||
  m_PrefabInstance: {fileID: 0}
 | 
			
		||||
  m_PrefabAsset: {fileID: 0}
 | 
			
		||||
  m_GameObject: {fileID: 3845252506739069817}
 | 
			
		||||
  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: 21300000, guid: 878417b946d114d40a44dc36069ade7a, type: 3}
 | 
			
		||||
  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 &4658118913435815158
 | 
			
		||||
GameObject:
 | 
			
		||||
  m_ObjectHideFlags: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -163,6 +237,8 @@ MonoBehaviour:
 | 
			
		|||
  ghostSliders: {fileID: 2175275438354546744}
 | 
			
		||||
  ghostSliderPrefab: {fileID: 3581489635090573721, guid: 890d76c226858de4fa96adfe7cc85383,
 | 
			
		||||
    type: 3}
 | 
			
		||||
  handleImage: {fileID: 1135382459109805448}
 | 
			
		||||
  soundIcon: {fileID: 3845252506739069817}
 | 
			
		||||
  maxGhosts: 4
 | 
			
		||||
  actorID: 0
 | 
			
		||||
  keyframeID: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -196,7 +272,8 @@ RectTransform:
 | 
			
		|||
  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_Children:
 | 
			
		||||
  - {fileID: 6663487708742390543}
 | 
			
		||||
  m_Father: {fileID: 4629009613275671144}
 | 
			
		||||
  m_RootOrder: 0
 | 
			
		||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										8
									
								
								Assets/Resources/Textures/Humanlike/Appendages.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: cc05b52efdb32b24296180de1e113fc4
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/Appendages/Appendage0.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 473 B  | 
| 
						 | 
				
			
			@ -0,0 +1,116 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 7aa731da3144dfa43b36c2e79b76a763
 | 
			
		||||
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: 1
 | 
			
		||||
  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: 185
 | 
			
		||||
  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: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/Appendages/Appendage1.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 6.2 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,116 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: f99c1906865733343bbe77fb78c66218
 | 
			
		||||
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: 1
 | 
			
		||||
  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: 185
 | 
			
		||||
  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: 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/Appendages/Appendage2.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.6 KiB  | 
| 
						 | 
				
			
			@ -0,0 +1,116 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 38c0bc38c0d71b04cb11a1eb610990e1
 | 
			
		||||
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: 1
 | 
			
		||||
  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: 185
 | 
			
		||||
  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: 
 | 
			
		||||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +71,30 @@ TextureImporter:
 | 
			
		|||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    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: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +71,30 @@ TextureImporter:
 | 
			
		|||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    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: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +71,30 @@ TextureImporter:
 | 
			
		|||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    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: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,7 @@ TextureImporter:
 | 
			
		|||
    externalNormalMap: 0
 | 
			
		||||
    heightScale: 0.25
 | 
			
		||||
    normalMapFilter: 0
 | 
			
		||||
  isReadable: 0
 | 
			
		||||
  isReadable: 1
 | 
			
		||||
  streamingMipmaps: 0
 | 
			
		||||
  streamingMipmapsPriority: 0
 | 
			
		||||
  grayScaleToAlpha: 0
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +71,30 @@ TextureImporter:
 | 
			
		|||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  - serializedVersion: 3
 | 
			
		||||
    buildTarget: Standalone
 | 
			
		||||
    maxTextureSize: 2048
 | 
			
		||||
    resizeAlgorithm: 0
 | 
			
		||||
    textureFormat: -1
 | 
			
		||||
    textureCompression: 1
 | 
			
		||||
    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: 1
 | 
			
		||||
    compressionQuality: 50
 | 
			
		||||
    crunchedCompression: 0
 | 
			
		||||
    allowsAlphaSplitting: 0
 | 
			
		||||
    overridden: 0
 | 
			
		||||
    androidETC2FallbackOverride: 0
 | 
			
		||||
    forceMaximumCompressionQuality_BC6H_BC7: 0
 | 
			
		||||
  spriteSheet:
 | 
			
		||||
    serializedVersion: 2
 | 
			
		||||
    sprites: []
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/UI/sound.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 4.6 KiB  | 
							
								
								
									
										92
									
								
								Assets/Resources/Textures/UI/sound.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,92 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 878417b946d114d40a44dc36069ade7a
 | 
			
		||||
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: 100
 | 
			
		||||
  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: 1
 | 
			
		||||
    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: 
 | 
			
		||||
							
								
								
									
										8
									
								
								Assets/Scripts/AdvancedPolygonCollider.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 177db18368bfbba47a6b714d621984dc
 | 
			
		||||
folderAsset: yes
 | 
			
		||||
DefaultImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,551 @@
 | 
			
		|||
/*
 | 
			
		||||
Advanced Polygon Collider (c) 2015 Digital Ruby, LLC
 | 
			
		||||
http://www.digitalruby.com
 | 
			
		||||
 | 
			
		||||
Source code may not be redistributed. Use in apps and games is fine.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
using System;
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
using UnityEditor;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
namespace DigitalRuby.AdvancedPolygonCollider
 | 
			
		||||
{
 | 
			
		||||
    public struct PolygonParameters
 | 
			
		||||
    {
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Texture - must be readable and writeable.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public Texture2D Texture;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Source rect from the texture containing the sprite.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public Rect Rect;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Offset (pivot) for the sprite
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public Vector2 Offset;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// X multiplier if pixels per unit are used, otherwise 1 (see UpdatePolygonCollider method).
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public float XMultiplier;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Y multiplier if pixels per unit are used, otherwise 1 (see UpdatePolygonCollider method).
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public float YMultiplier;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Alpha tolerance. Pixels with greater than this are considered solid.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public byte AlphaTolerance;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Distance threshold to collapse vertices in pixels.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public int DistanceThreshold;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// True to decompose into convex polygons, false otherwise.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public bool Decompose;
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Whether to use the cache. Values will be cached accordingly.
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        public bool UseCache;
 | 
			
		||||
 | 
			
		||||
        public override int GetHashCode()
 | 
			
		||||
        {
 | 
			
		||||
            int h = Texture.GetHashCode();
 | 
			
		||||
            if (h == 0)
 | 
			
		||||
            {
 | 
			
		||||
                h = 1;
 | 
			
		||||
            }
 | 
			
		||||
            return h * (int)(Rect.GetHashCode() * XMultiplier * YMultiplier * AlphaTolerance * Mathf.Max(DistanceThreshold, 1) * (Decompose ? 2 : 1));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public override bool Equals(object obj)
 | 
			
		||||
        {
 | 
			
		||||
            if (obj is PolygonParameters)
 | 
			
		||||
            {
 | 
			
		||||
                PolygonParameters p = (PolygonParameters)obj;
 | 
			
		||||
                return Texture == p.Texture && Rect == p.Rect &&
 | 
			
		||||
                    XMultiplier == p.XMultiplier && YMultiplier == p.YMultiplier &&
 | 
			
		||||
                    AlphaTolerance == p.AlphaTolerance && DistanceThreshold == p.DistanceThreshold &&
 | 
			
		||||
                    Decompose == p.Decompose;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [RequireComponent(typeof(PolygonCollider2D))]
 | 
			
		||||
    [RequireComponent(typeof(SpriteRenderer))]
 | 
			
		||||
    [ExecuteInEditMode]
 | 
			
		||||
    public class AdvancedPolygonCollider : MonoBehaviour
 | 
			
		||||
    {
 | 
			
		||||
        [Serializable]
 | 
			
		||||
        public struct ArrayWrapper
 | 
			
		||||
        {
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public Vector2[] Array;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Serializable]
 | 
			
		||||
        public struct ListWrapper
 | 
			
		||||
        {
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public List<ArrayWrapper> List;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Serializable]
 | 
			
		||||
        public struct CacheEntry
 | 
			
		||||
        {
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public CacheKey Key;
 | 
			
		||||
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public ListWrapper Value;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Serializable]
 | 
			
		||||
        public struct CacheKey
 | 
			
		||||
        {
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public Texture2D Texture;
 | 
			
		||||
 | 
			
		||||
            [SerializeField]
 | 
			
		||||
            public Rect Rect;
 | 
			
		||||
 | 
			
		||||
            public override int GetHashCode()
 | 
			
		||||
            {
 | 
			
		||||
                return Texture.GetHashCode() * Rect.GetHashCode();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public override bool Equals(object obj)
 | 
			
		||||
            {
 | 
			
		||||
                if (obj is CacheKey)
 | 
			
		||||
                {
 | 
			
		||||
                    CacheKey k = (CacheKey)obj;
 | 
			
		||||
                    return (Texture == k.Texture && Rect == k.Rect);
 | 
			
		||||
                }
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Tooltip("Pixels with alpha greater than this count as solid.")]
 | 
			
		||||
        [Range(0, 254)]
 | 
			
		||||
        public byte AlphaTolerance = 20;
 | 
			
		||||
 | 
			
		||||
        [Tooltip("Points further away than this number of pixels will be consolidated.")]
 | 
			
		||||
        [Range(0, 64)]
 | 
			
		||||
        public int DistanceThreshold = 8;
 | 
			
		||||
 | 
			
		||||
        [Tooltip("Scale of the polygon.")]
 | 
			
		||||
        [Range(0.5f, 2.0f)]
 | 
			
		||||
        public float Scale = 1.0f;
 | 
			
		||||
 | 
			
		||||
        [Tooltip("Whether to decompse vertices into convex only polygons.")]
 | 
			
		||||
        public bool Decompose = false;
 | 
			
		||||
 | 
			
		||||
        [Tooltip("Whether to live update everything when in play mode. Typically for performance this can be false, " +
 | 
			
		||||
            "but if you plan on making changes to the sprite or parameters at runtime, you will want to set this to true.")]
 | 
			
		||||
        public bool RunInPlayMode = false;
 | 
			
		||||
 | 
			
		||||
        [Tooltip("True to use the cache, false otherwise. The cache is populated in editor and play mode and uses the most recent geometry " +
 | 
			
		||||
            "for a texture and rect regardless of other parameters. When ignoring the cache, values will not be added to the cache either. Cache is " +
 | 
			
		||||
            "only useful if you will be changing your sprite at run-time (i.e. animation)")]
 | 
			
		||||
        public bool UseCache;
 | 
			
		||||
 | 
			
		||||
        private SpriteRenderer spriteRenderer;
 | 
			
		||||
        private PolygonCollider2D polygonCollider;
 | 
			
		||||
        private bool dirty;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private byte lastAlphaTolerance;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private float lastScale;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private int lastDistanceThreshold;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private bool lastDecompose;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private Sprite lastSprite;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private Rect lastRect = new Rect();
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private Vector2 lastOffset = new Vector2(-99999.0f, -99999.0f);
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private float lastPixelsPerUnit;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private bool lastFlipX;
 | 
			
		||||
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        [HideInInspector]
 | 
			
		||||
        private bool lastFlipY;
 | 
			
		||||
 | 
			
		||||
        private static readonly Dictionary<CacheKey, List<Vector2[]>> cache = new Dictionary<CacheKey, List<Vector2[]>>();
 | 
			
		||||
 | 
			
		||||
        [Tooltip("All the cached objects from the editor. Do not modify this data.")]
 | 
			
		||||
        [SerializeField]
 | 
			
		||||
        private List<CacheEntry> editorCache = new List<CacheEntry>();
 | 
			
		||||
 | 
			
		||||
        // private readonly AdvancedPolygonColliderAutoGeometry geometryDetector = new AdvancedPolygonColliderAutoGeometry();
 | 
			
		||||
        private readonly TextureConverter geometryDetector = new TextureConverter();
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
        private Texture2D blackBackground;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        private void Awake()
 | 
			
		||||
        {
 | 
			
		||||
            if (Application.isPlaying)
 | 
			
		||||
            {
 | 
			
		||||
                // move editor cache to regular cache
 | 
			
		||||
                foreach (var v in editorCache)
 | 
			
		||||
                {
 | 
			
		||||
                    List<Vector2[]> list = new List<Vector2[]>();
 | 
			
		||||
                    cache[v.Key] = list;
 | 
			
		||||
                    foreach (ArrayWrapper w in v.Value.List)
 | 
			
		||||
                    {
 | 
			
		||||
                        list.Add(w.Array);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Start()
 | 
			
		||||
        {
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
            blackBackground = new Texture2D(1, 1);
 | 
			
		||||
            blackBackground.SetPixel(0, 0, new Color(0.0f, 0.0f, 0.0f, 0.8f));
 | 
			
		||||
            blackBackground.Apply();
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
            polygonCollider = GetComponent<PolygonCollider2D>();
 | 
			
		||||
            spriteRenderer = GetComponent<SpriteRenderer>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void UpdateDirtyState()
 | 
			
		||||
        {
 | 
			
		||||
            if (spriteRenderer.sprite != lastSprite)
 | 
			
		||||
            {
 | 
			
		||||
                lastSprite = spriteRenderer.sprite;
 | 
			
		||||
                dirty = true;
 | 
			
		||||
            }
 | 
			
		||||
            if (spriteRenderer.sprite != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (lastOffset != spriteRenderer.sprite.pivot)
 | 
			
		||||
                {
 | 
			
		||||
                    lastOffset = spriteRenderer.sprite.pivot;
 | 
			
		||||
                    dirty = true;
 | 
			
		||||
                }
 | 
			
		||||
                if (lastRect != spriteRenderer.sprite.rect)
 | 
			
		||||
                {
 | 
			
		||||
                    lastRect = spriteRenderer.sprite.rect;
 | 
			
		||||
                    dirty = true;
 | 
			
		||||
                }
 | 
			
		||||
                if (lastPixelsPerUnit != spriteRenderer.sprite.pixelsPerUnit)
 | 
			
		||||
                {
 | 
			
		||||
                    lastPixelsPerUnit = spriteRenderer.sprite.pixelsPerUnit;
 | 
			
		||||
                    dirty = true;
 | 
			
		||||
                }
 | 
			
		||||
                if (lastFlipX != spriteRenderer.flipX)
 | 
			
		||||
                {
 | 
			
		||||
                    lastFlipX = spriteRenderer.flipX;
 | 
			
		||||
                    dirty = true;
 | 
			
		||||
                }
 | 
			
		||||
                if (lastFlipY != spriteRenderer.flipY)
 | 
			
		||||
                {
 | 
			
		||||
                    lastFlipY = spriteRenderer.flipY;
 | 
			
		||||
                    dirty = true;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (AlphaTolerance != lastAlphaTolerance)
 | 
			
		||||
            {
 | 
			
		||||
                lastAlphaTolerance = AlphaTolerance;
 | 
			
		||||
                dirty = true;
 | 
			
		||||
            }
 | 
			
		||||
            if (Scale != lastScale)
 | 
			
		||||
            {
 | 
			
		||||
                lastScale = Scale;
 | 
			
		||||
                dirty = true;
 | 
			
		||||
            }
 | 
			
		||||
            if (DistanceThreshold != lastDistanceThreshold)
 | 
			
		||||
            {
 | 
			
		||||
                lastDistanceThreshold = DistanceThreshold;
 | 
			
		||||
                dirty = true;
 | 
			
		||||
            }
 | 
			
		||||
            if (Decompose != lastDecompose)
 | 
			
		||||
            {
 | 
			
		||||
                lastDecompose = Decompose;
 | 
			
		||||
                dirty = true;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void Update()
 | 
			
		||||
        {
 | 
			
		||||
            if (Application.isPlaying)
 | 
			
		||||
            {
 | 
			
		||||
                if (!RunInPlayMode)
 | 
			
		||||
                {
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else if (!UseCache)
 | 
			
		||||
            {
 | 
			
		||||
                editorCache.Clear();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            UpdateDirtyState();
 | 
			
		||||
            if (dirty)
 | 
			
		||||
            {
 | 
			
		||||
                RecalculatePolygon();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
        private void OnDrawGizmos()
 | 
			
		||||
        {
 | 
			
		||||
            UnityEditor.Handles.BeginGUI();
 | 
			
		||||
            GUI.color = Color.white;
 | 
			
		||||
            string text = " Vertices: " + VerticesCount + " ";
 | 
			
		||||
            var view = UnityEditor.SceneView.currentDrawingSceneView;
 | 
			
		||||
            Vector3 screenPos = view.camera.WorldToScreenPoint(gameObject.transform.position);
 | 
			
		||||
            Vector2 size = GUI.skin.label.CalcSize(new GUIContent(text));
 | 
			
		||||
            GUI.skin.box.normal.background = blackBackground;
 | 
			
		||||
            Rect rect = new Rect(screenPos.x - (size.x / 2), -screenPos.y + view.position.height + 4, size.x, size.y);
 | 
			
		||||
            GUI.Box(rect, GUIContent.none);
 | 
			
		||||
            GUI.Label(rect, text);
 | 
			
		||||
            UnityEditor.Handles.EndGUI();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void AddEditorCache(ref PolygonParameters p, List<Vector2[]> list)
 | 
			
		||||
        {
 | 
			
		||||
            CacheKey key = new CacheKey();
 | 
			
		||||
            key.Texture = p.Texture;
 | 
			
		||||
            key.Rect = p.Rect;
 | 
			
		||||
 | 
			
		||||
            CacheEntry e = new CacheEntry();
 | 
			
		||||
            e.Key = key;
 | 
			
		||||
            e.Value = new ListWrapper();
 | 
			
		||||
            e.Value.List = new List<ArrayWrapper>();
 | 
			
		||||
            foreach (Vector2[] v in list)
 | 
			
		||||
            {
 | 
			
		||||
                ArrayWrapper w = new ArrayWrapper();
 | 
			
		||||
                w.Array = v;
 | 
			
		||||
                e.Value.List.Add(w);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < editorCache.Count; i++)
 | 
			
		||||
            {
 | 
			
		||||
                if (editorCache[i].Key.Equals(key))
 | 
			
		||||
                {
 | 
			
		||||
                    editorCache.RemoveAt(i);
 | 
			
		||||
                    editorCache.Insert(i, e);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            editorCache.Add(e);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        public void RecalculatePolygon()
 | 
			
		||||
        {
 | 
			
		||||
            if (spriteRenderer.sprite != null)
 | 
			
		||||
            {
 | 
			
		||||
                PolygonParameters p = new PolygonParameters();
 | 
			
		||||
                p.AlphaTolerance = AlphaTolerance;
 | 
			
		||||
                p.Decompose = Decompose;
 | 
			
		||||
                p.DistanceThreshold = DistanceThreshold;
 | 
			
		||||
                p.Rect = spriteRenderer.sprite.rect;
 | 
			
		||||
                p.Offset = spriteRenderer.sprite.pivot;
 | 
			
		||||
                p.Texture = spriteRenderer.sprite.texture;
 | 
			
		||||
                p.XMultiplier = (spriteRenderer.sprite.rect.width * 0.5f) / spriteRenderer.sprite.pixelsPerUnit;
 | 
			
		||||
                p.YMultiplier = (spriteRenderer.sprite.rect.height * 0.5f) / spriteRenderer.sprite.pixelsPerUnit;
 | 
			
		||||
                p.UseCache = UseCache;
 | 
			
		||||
                UpdatePolygonCollider(ref p);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void UpdatePolygonCollider(ref PolygonParameters p)
 | 
			
		||||
        {
 | 
			
		||||
            if (spriteRenderer.sprite == null || spriteRenderer.sprite.texture == null)
 | 
			
		||||
            {
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            dirty = false;
 | 
			
		||||
            List<Vector2[]> cached;
 | 
			
		||||
 | 
			
		||||
            if (Application.isPlaying && p.UseCache)
 | 
			
		||||
            {
 | 
			
		||||
                CacheKey key = new CacheKey();
 | 
			
		||||
                key.Texture = p.Texture;
 | 
			
		||||
                key.Rect = p.Rect;
 | 
			
		||||
 | 
			
		||||
                if (cache.TryGetValue(key, out cached))
 | 
			
		||||
                {
 | 
			
		||||
                    polygonCollider.pathCount = cached.Count;
 | 
			
		||||
                    for (int i = 0; i < cached.Count; i++)
 | 
			
		||||
                    {
 | 
			
		||||
                        polygonCollider.SetPath(i, cached[i]);
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            PopulateCollider(polygonCollider, ref p);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public int VerticesCount
 | 
			
		||||
        {
 | 
			
		||||
            get { return (polygonCollider == null ? 0 : polygonCollider.GetTotalPointCount()); }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Populate the vertices of a collider
 | 
			
		||||
        /// </summary>
 | 
			
		||||
        /// <param name="collider">Collider to setup vertices in.</param>
 | 
			
		||||
        /// <param name="p">Polygon creation parameters</param>
 | 
			
		||||
        public void PopulateCollider(PolygonCollider2D collider, ref PolygonParameters p)
 | 
			
		||||
        {
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                if (p.Texture.format != TextureFormat.ARGB32 && p.Texture.format != TextureFormat.BGRA32 && p.Texture.format != TextureFormat.RGBA32 &&
 | 
			
		||||
                    p.Texture.format != TextureFormat.RGB24 && p.Texture.format != TextureFormat.Alpha8 && p.Texture.format != TextureFormat.RGBAFloat &&
 | 
			
		||||
                    p.Texture.format != TextureFormat.RGBAHalf && p.Texture.format != TextureFormat.RGB565)
 | 
			
		||||
                {
 | 
			
		||||
                    Debug.LogWarning("Advanced Polygon Collider works best with a non-compressed texture in ARGB32, BGRA32, RGB24, RGBA4444, RGB565, RGBAFloat or RGBAHalf format");
 | 
			
		||||
                }
 | 
			
		||||
                int width = (int)p.Rect.width;
 | 
			
		||||
                int height = (int)p.Rect.height;
 | 
			
		||||
                int x = (int)p.Rect.x;
 | 
			
		||||
                int y = (int)p.Rect.y;
 | 
			
		||||
                UnityEngine.Color[] pixels = p.Texture.GetPixels(x, y, width, height, 0);
 | 
			
		||||
                List<Vertices> verts = geometryDetector.DetectVertices(pixels, width, p.AlphaTolerance);
 | 
			
		||||
                int pathIndex = 0;
 | 
			
		||||
                List<Vector2[]> list = new List<Vector2[]>();
 | 
			
		||||
 | 
			
		||||
                for (int i = 0; i < verts.Count; i++)
 | 
			
		||||
                {
 | 
			
		||||
                    ProcessVertices(collider, verts[i], list, ref p, ref pathIndex);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
                if (Application.isPlaying)
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
                    if (p.UseCache)
 | 
			
		||||
                    {
 | 
			
		||||
                        CacheKey key = new CacheKey();
 | 
			
		||||
                        key.Texture = p.Texture;
 | 
			
		||||
                        key.Rect = p.Rect;
 | 
			
		||||
                        cache[key] = list;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
#if UNITY_EDITOR
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                else if (p.UseCache)
 | 
			
		||||
                {
 | 
			
		||||
                    AddEditorCache(ref p, list);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
                Debug.Log("Updated polygon.");
 | 
			
		||||
            }
 | 
			
		||||
            catch (Exception ex)
 | 
			
		||||
            {
 | 
			
		||||
                Debug.LogError("Error creating collider: " + ex);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private List<Vector2[]> ProcessVertices(PolygonCollider2D collider, Vertices v, List<Vector2[]> list, ref PolygonParameters p, ref int pathIndex)
 | 
			
		||||
        {
 | 
			
		||||
            Vector2 offset = p.Offset;
 | 
			
		||||
            float flipXMultiplier = (spriteRenderer.flipX ? -1.0f : 1.0f);
 | 
			
		||||
            float flipYMultiplier = (spriteRenderer.flipY ? -1.0f : 1.0f);
 | 
			
		||||
 | 
			
		||||
			if (p.DistanceThreshold > 1)
 | 
			
		||||
			{
 | 
			
		||||
				v = SimplifyTools.DouglasPeuckerSimplify (v, p.DistanceThreshold);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
            if (p.Decompose)
 | 
			
		||||
            {
 | 
			
		||||
                List<List<Vector2>> points = BayazitDecomposer.ConvexPartition(v);
 | 
			
		||||
                for (int j = 0; j < points.Count; j++)
 | 
			
		||||
                {
 | 
			
		||||
                    List<Vector2> v2 = points[j];
 | 
			
		||||
                    for (int i = 0; i < v2.Count; i++)
 | 
			
		||||
                    {
 | 
			
		||||
						float xValue = (2.0f * (((v2[i].x - offset.x) + 0.5f) / p.Rect.width));
 | 
			
		||||
						float yValue = (2.0f * (((v2[i].y - offset.y) + 0.5f) / p.Rect.height));
 | 
			
		||||
                        v2[i] = new Vector2(xValue * p.XMultiplier * Scale * flipXMultiplier, yValue * p.YMultiplier * Scale * flipYMultiplier);
 | 
			
		||||
                    }
 | 
			
		||||
                    Vector2[] arr = v2.ToArray();
 | 
			
		||||
                    collider.pathCount = pathIndex + 1;
 | 
			
		||||
                    collider.SetPath(pathIndex++, arr);
 | 
			
		||||
                    list.Add(arr);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                collider.pathCount = pathIndex + 1;
 | 
			
		||||
                for (int i = 0; i < v.Count; i++)
 | 
			
		||||
                {
 | 
			
		||||
					float xValue = (2.0f * (((v[i].x - offset.x) + 0.5f) / p.Rect.width));
 | 
			
		||||
					float yValue = (2.0f * (((v[i].y - offset.y) + 0.5f) / p.Rect.height));
 | 
			
		||||
                    v[i] = new Vector2(xValue * p.XMultiplier * Scale * flipXMultiplier, yValue * p.YMultiplier * Scale * flipYMultiplier);
 | 
			
		||||
                }
 | 
			
		||||
                Vector2[] arr = v.ToArray();
 | 
			
		||||
                collider.SetPath(pathIndex++, arr);
 | 
			
		||||
                list.Add(arr);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 8c55c83d4c4dd1145ad5fbbab3c3df36
 | 
			
		||||
timeCreated: 1450474475
 | 
			
		||||
licenseType: Store
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 2d44a3587cd9f0f4ebdfbea6d8a9c789
 | 
			
		||||
timeCreated: 1450472189
 | 
			
		||||
licenseType: Store
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -15,7 +15,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        [XmlArray("blacklistedRaces"), XmlArrayItem("li")] public List<string> blacklistedRaces = new List<string>();      
 | 
			
		||||
        [XmlArray("tags"), XmlArrayItem("li")] public List<string> tags;
 | 
			
		||||
 | 
			
		||||
        public string gender;
 | 
			
		||||
        [XmlIgnore] public ActorGender gender;
 | 
			
		||||
        public BodyTypeOffset bodyTypeOffset = new BodyTypeOffset();
 | 
			
		||||
        public bool initiator = false;
 | 
			
		||||
        public bool? controlGenitalAngle;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -57,9 +57,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
                    HeadFacing.Add((float)keyframe.atTick / (float)duration, keyframe.headFacing, true);
 | 
			
		||||
                    BodyFacing.Add((float)keyframe.atTick / (float)duration, keyframe.bodyFacing, true);
 | 
			
		||||
                    HeadBob.Add((float)keyframe.atTick / (float)duration, keyframe.headBob, true);
 | 
			
		||||
 | 
			
		||||
                    if (keyframe.genitalAngle.HasValue)
 | 
			
		||||
                    { GenitalAngle.Add((float)keyframe.atTick / (float)duration, keyframe.genitalAngle.Value, true); }
 | 
			
		||||
                    GenitalAngle.Add((float)keyframe.atTick / (float)duration, keyframe.genitalAngle, true);
 | 
			
		||||
 | 
			
		||||
                    if (i + 1 < keyframes.Count)
 | 
			
		||||
                    { keyframes[i].tickDuration = keyframes[i + 1].atTick.Value - keyframes[i].atTick.Value; }
 | 
			
		||||
| 
						 | 
				
			
			@ -74,9 +72,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
                    HeadFacing.Add((float)keyframePosition / (float)duration, keyframe.headFacing, true);
 | 
			
		||||
                    BodyFacing.Add((float)keyframePosition / (float)duration, keyframe.bodyFacing, true);
 | 
			
		||||
                    HeadBob.Add((float)keyframePosition / (float)duration, keyframe.headBob, true);
 | 
			
		||||
 | 
			
		||||
                    if (keyframe.genitalAngle.HasValue)
 | 
			
		||||
                    { GenitalAngle.Add((float)keyframePosition / (float)duration, keyframe.genitalAngle.Value, true); }
 | 
			
		||||
                    GenitalAngle.Add((float)keyframePosition / (float)duration, keyframe.genitalAngle, true);
 | 
			
		||||
 | 
			
		||||
                    if (keyframe.tickDuration != 1 && keyframe.quiver.HasValue)
 | 
			
		||||
                    {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,6 +30,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // move to app manager
 | 
			
		||||
        public void RunPreSaveOperations()
 | 
			
		||||
        {
 | 
			
		||||
            // Stage edits
 | 
			
		||||
| 
						 | 
				
			
			@ -45,25 +46,32 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
                int stageWindowSize = animationStages[i].stageWindowSize > 0 ? animationStages[i].stageWindowSize : animationStages[i].animationClips.Select(x => x.duration).Max();
 | 
			
		||||
                int cycles = Mathf.CeilToInt(animationStages[i].playTimeTicks / stageWindowSize);
 | 
			
		||||
 | 
			
		||||
                Debug.Log(animationStages[i].playTimeTicks);
 | 
			
		||||
                Debug.Log(animationStages[i].stageWindowSize);
 | 
			
		||||
                Debug.Log(cycles);
 | 
			
		||||
                stage.isLooping = cycles > 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Body part list edit
 | 
			
		||||
            foreach (Actor actor in actors)
 | 
			
		||||
            // Actor edits
 | 
			
		||||
            for (int i = 0; i < actors.Count; i++)
 | 
			
		||||
            {
 | 
			
		||||
                actor.isFucking = actor.requiredGenitals.Contains("Any appendage");
 | 
			
		||||
                Actor actor = actors[i];
 | 
			
		||||
 | 
			
		||||
                actor.isFucking = actor.requiredGenitals.Contains("Any appendage") ? (bool?)true : null;
 | 
			
		||||
 | 
			
		||||
                if (actor.isFucking == true)
 | 
			
		||||
                { actor.requiredGenitals.Remove("Any appendage"); }
 | 
			
		||||
 | 
			
		||||
                actor.isFucked= actor.requiredGenitals.Contains("Any orifice");
 | 
			
		||||
                actor.isFucked = actor.requiredGenitals.Contains("Any orifice") ? (bool?)true : null;
 | 
			
		||||
 | 
			
		||||
                if (actor.isFucked == true)
 | 
			
		||||
                { actor.requiredGenitals.Remove("Any orifice"); }
 | 
			
		||||
            
 | 
			
		||||
                actor.controlGenitalAngle = animationStages.Any(x => x.animationClips[i].keyframes.Any(y => y.genitalAngle != 0)) ? (bool?)true : null;
 | 
			
		||||
 | 
			
		||||
                //if (actor.requiredGender.Contains("Female")) actor.gender = ActorGender.Female;
 | 
			
		||||
                //else if (actor.requiredGender.Contains("Male")) actor.gender = ActorGender.Male;
 | 
			
		||||
                //else actor.gender = ActorGender.None;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //actors.OrderBy(x => (int)x.gender);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void RunPostLoadOperations()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public float headFacing = 2;
 | 
			
		||||
        public float bodyFacing = 2;
 | 
			
		||||
 | 
			
		||||
        public float? genitalAngle;
 | 
			
		||||
        public float genitalAngle;
 | 
			
		||||
        public bool? quiver;
 | 
			
		||||
 | 
			
		||||
        public bool ShouldSerializegenitalAngle() { return genitalAngle != null; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,16 +9,31 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
    public class ActorBody : MonoBehaviour, IPointerClickHandler, IDragHandler
 | 
			
		||||
    {
 | 
			
		||||
        public int actorID;
 | 
			
		||||
        public string bodyType = "Male"; 
 | 
			
		||||
        public string bodyType = "Male";
 | 
			
		||||
        public bool isSelected = false;
 | 
			
		||||
 | 
			
		||||
        public SpriteRenderer bodyRenderer;
 | 
			
		||||
        public SpriteRenderer headRenderer;
 | 
			
		||||
        public SpriteRenderer appendageRenderer;
 | 
			
		||||
 | 
			
		||||
        public bool actorBodyPartSelected { get { return GetComponentsInChildren<ActorBodyPart>().Any(x => x.isSelected); } }
 | 
			
		||||
 | 
			
		||||
        public void Initialize(int actorID)
 | 
			
		||||
        {
 | 
			
		||||
            this.actorID = actorID;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Update()
 | 
			
		||||
        {
 | 
			
		||||
            if (Workspace.actorID == actorID && Workspace.selectedBodyPart == null)
 | 
			
		||||
            { bodyRenderer.color = Constants.ColorGreen; }
 | 
			
		||||
 | 
			
		||||
            else
 | 
			
		||||
            { bodyRenderer.color = Constants.ColorWhite; }
 | 
			
		||||
 | 
			
		||||
            appendageRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].requiredGenitals.Any(x => x == "Penis" || x == "Any appendage"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnPointerClick(PointerEventData eventData)
 | 
			
		||||
        {
 | 
			
		||||
            if (eventData.pointerCurrentRaycast.gameObject.GetComponent<ActorBody>() == null)
 | 
			
		||||
| 
						 | 
				
			
			@ -31,9 +46,9 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        {
 | 
			
		||||
            Activate();
 | 
			
		||||
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe(true);
 | 
			
		||||
 | 
			
		||||
            if (Workspace.Instance.GetCurrentPawnKeyframe() == null)
 | 
			
		||||
            if (keyframe == null)
 | 
			
		||||
            { Debug.LogWarning("Cannot alter actor - no keyframe data available"); return; }
 | 
			
		||||
 | 
			
		||||
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);        
 | 
			
		||||
| 
						 | 
				
			
			@ -66,18 +81,28 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public void Activate()
 | 
			
		||||
        {
 | 
			
		||||
            Workspace.actorID = actorID;
 | 
			
		||||
            Workspace.selectedBodyPart = null;
 | 
			
		||||
 | 
			
		||||
            foreach (ActorBody actorBody in AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBody>())
 | 
			
		||||
            /*foreach (ActorBody actorBody in AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBody>())
 | 
			
		||||
            {
 | 
			
		||||
                if (actorBody == this)
 | 
			
		||||
                { continue; }
 | 
			
		||||
 | 
			
		||||
                actorBody.bodyRenderer.color = Constants.ColorWhite;
 | 
			
		||||
                actorBody.headRenderer.color = Constants.ColorWhite;
 | 
			
		||||
                actorBody.appendageRenderer.color = Constants.ColorWhite;
 | 
			
		||||
 | 
			
		||||
                actorBody.isSelected = false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bodyRenderer.color = Constants.ColorGreen;
 | 
			
		||||
            headRenderer.color = Constants.ColorGreen;
 | 
			
		||||
            appendageRenderer.color = Constants.ColorGreen;
 | 
			
		||||
 | 
			
		||||
            foreach (ActorBodyPart actorBodyPartSelected in GetComponentsInChildren<ActorBodyPart>())
 | 
			
		||||
            { actorBodyPartSelected.isSelected = false; }
 | 
			
		||||
 | 
			
		||||
            isSelected = true;*/
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,6 +10,17 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
    {
 | 
			
		||||
        public SpriteRenderer bodyPartRenderer;
 | 
			
		||||
        public ActorBody parent;
 | 
			
		||||
        public bool isHead = false;
 | 
			
		||||
        public bool isSelected = false;
 | 
			
		||||
 | 
			
		||||
        public void Update()
 | 
			
		||||
        {
 | 
			
		||||
            if ((Workspace.actorID == parent.actorID && Workspace.selectedBodyPart == null) || Workspace.selectedBodyPart == this)
 | 
			
		||||
            { bodyPartRenderer.color = Constants.ColorGreen; }
 | 
			
		||||
 | 
			
		||||
            else
 | 
			
		||||
            { bodyPartRenderer.color = Constants.ColorWhite; }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnPointerClick(PointerEventData eventData)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			@ -23,38 +34,48 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        {
 | 
			
		||||
            Activate();
 | 
			
		||||
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe(true);
 | 
			
		||||
 | 
			
		||||
            if (Workspace.Instance.GetCurrentPawnKeyframe() == null)
 | 
			
		||||
            if (keyframe == null)
 | 
			
		||||
            { Debug.LogWarning("Cannot alter actor - no keyframe data available"); return; }
 | 
			
		||||
 | 
			
		||||
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
 | 
			
		||||
 | 
			
		||||
            if (Workspace.actorManipulationMode == ActorManipulationMode.Pan)
 | 
			
		||||
            if (isHead)
 | 
			
		||||
            {
 | 
			
		||||
                float distance = ((Vector2)mousePosition - (Vector2)transform.position).y;
 | 
			
		||||
                
 | 
			
		||||
                Vector3 headOffset = new Vector3(0f, 0.34f, 0f);
 | 
			
		||||
                headOffset = Quaternion.Euler(0, 0, keyframe.bodyAngle) * headOffset;
 | 
			
		||||
 
 | 
			
		||||
                distance = Vector2.Dot(parent.transform.up, (Vector2)(mousePosition - parent.transform.position - headOffset));
 | 
			
		||||
                if (Workspace.actorManipulationMode == ActorManipulationMode.Pan)
 | 
			
		||||
                {
 | 
			
		||||
                    Vector3 headOffset = new Vector3(0f, 0.34f, 0f);
 | 
			
		||||
                    headOffset = Quaternion.Euler(0, 0, keyframe.bodyAngle) * headOffset;
 | 
			
		||||
 | 
			
		||||
                keyframe.headBob = distance;
 | 
			
		||||
                    float distance = Vector2.Dot(parent.transform.up, (Vector2)(mousePosition - parent.transform.position - headOffset));
 | 
			
		||||
 | 
			
		||||
                    keyframe.headBob = distance;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else if (Workspace.actorManipulationMode == ActorManipulationMode.Rotate)
 | 
			
		||||
                {
 | 
			
		||||
                    float angle = Vector2.SignedAngle(Vector2.down, (Vector2)mousePosition - (Vector2)transform.position);
 | 
			
		||||
                    keyframe.headAngle = angle;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                else if (Workspace.actorManipulationMode == ActorManipulationMode.Face)
 | 
			
		||||
                {
 | 
			
		||||
                    float angle = Vector2.SignedAngle(Vector2.up, (Vector2)mousePosition - (Vector2)transform.position);
 | 
			
		||||
                    int facing = -Mathf.RoundToInt(angle / 90f);
 | 
			
		||||
                    facing = facing < 0 ? facing + 4 : facing;
 | 
			
		||||
 | 
			
		||||
                    keyframe.headFacing = facing;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            else if (Workspace.actorManipulationMode == ActorManipulationMode.Rotate)
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                float angle = Vector2.SignedAngle(Vector2.down, (Vector2)mousePosition - (Vector2)transform.position);
 | 
			
		||||
                keyframe.headAngle = angle;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            else if (Workspace.actorManipulationMode == ActorManipulationMode.Face)
 | 
			
		||||
            {
 | 
			
		||||
                float angle = Vector2.SignedAngle(Vector2.up, (Vector2)mousePosition - (Vector2)transform.position);
 | 
			
		||||
                int facing = -Mathf.RoundToInt(angle / 90f);
 | 
			
		||||
                facing = facing < 0 ? facing + 4 : facing;
 | 
			
		||||
 | 
			
		||||
                keyframe.headFacing = facing;
 | 
			
		||||
                if (Workspace.actorManipulationMode == ActorManipulationMode.Rotate)
 | 
			
		||||
                {
 | 
			
		||||
                    float angle = Vector2.SignedAngle(Vector2.up, (Vector2)mousePosition - (Vector2)transform.position);
 | 
			
		||||
                    keyframe.genitalAngle = angle;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            PawnAnimationClip clip = Workspace.Instance.GetPawnAnimationClip(parent.actorID);
 | 
			
		||||
| 
						 | 
				
			
			@ -64,14 +85,23 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public void Activate()
 | 
			
		||||
        {
 | 
			
		||||
            Workspace.actorID = parent.actorID;
 | 
			
		||||
            Workspace.selectedBodyPart = this;
 | 
			
		||||
 | 
			
		||||
            /*foreach (ActorBodyPart actorBodyPart in AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBodyPart>())
 | 
			
		||||
            {
 | 
			
		||||
                actorBodyPart.isSelected = false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (ActorBody actorBody in AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBody>())
 | 
			
		||||
            {
 | 
			
		||||
                actorBody.bodyRenderer.color = Constants.ColorWhite;
 | 
			
		||||
                actorBody.headRenderer.color = Constants.ColorWhite;
 | 
			
		||||
                actorBody.appendageRenderer.color = Constants.ColorWhite;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            bodyPartRenderer.color = Constants.ColorGreen;
 | 
			
		||||
 | 
			
		||||
            isSelected = true;*/
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,10 +11,14 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public InputField positionXField;
 | 
			
		||||
        public InputField positionZField;
 | 
			
		||||
        public InputField rotationField;
 | 
			
		||||
        public InputField headBobField;
 | 
			
		||||
        public InputField headRotationField;     
 | 
			
		||||
        public InputField appendageRotationField;
 | 
			
		||||
 | 
			
		||||
        private int lastTick = -1;
 | 
			
		||||
        private bool isDirty = false;
 | 
			
		||||
 | 
			
		||||
        // Move to anim controller
 | 
			
		||||
        public void Update()
 | 
			
		||||
        {
 | 
			
		||||
            if ((Workspace.animationDef == null || AnimationController.Instance.stageTick == lastTick) && isDirty == false)
 | 
			
		||||
| 
						 | 
				
			
			@ -41,15 +45,17 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
            if (headAngle < 0) headAngle = 360 - ((-1f * headAngle) % 360);
 | 
			
		||||
            if (headAngle > 360) headAngle %= 360;
 | 
			
		||||
 | 
			
		||||
            int bodyFacing = (int)clip.BodyFacing.Evaluate(clipPercent);
 | 
			
		||||
            Vector3 headBob = new Vector3(0, 0, clip.HeadBob.Evaluate(clipPercent)) + PawnUtility.BaseHeadOffsetAt(bodyType, bodyFacing);
 | 
			
		||||
 | 
			
		||||
            float headBob = clip.HeadBob.Evaluate(clipPercent);
 | 
			
		||||
            Vector3 bodyPos = new Vector3(deltaPos.x, deltaPos.z, 0);
 | 
			
		||||
            Vector3 headPos = new Vector3(headBob.x, headBob.z, 0);
 | 
			
		||||
 | 
			
		||||
            float appendageRotation = clip.GenitalAngle.Evaluate(clipPercent);
 | 
			
		||||
 | 
			
		||||
            positionXField.text = bodyPos.x.ToString("0.000");
 | 
			
		||||
            positionZField.text = bodyPos.y.ToString("0.000");
 | 
			
		||||
            rotationField.text = bodyAngle.ToString("0.000");
 | 
			
		||||
            headBobField.text = headBob.ToString("0.000");
 | 
			
		||||
            headRotationField.text = headAngle.ToString("0.000");
 | 
			
		||||
            appendageRotationField.text = appendageRotation.ToString("0.000");
 | 
			
		||||
 | 
			
		||||
            lastTick = AnimationController.Instance.stageTick;
 | 
			
		||||
            isDirty = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -57,12 +63,19 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
 | 
			
		||||
        public void OnValueChanged()
 | 
			
		||||
        {
 | 
			
		||||
            Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID].keyframes.FirstOrDefault(x => x.keyframeID == Workspace.keyframeID).bodyOffsetX = float.Parse(positionXField.text);
 | 
			
		||||
            Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID].keyframes.FirstOrDefault(x => x.keyframeID == Workspace.keyframeID).bodyOffsetZ = float.Parse(positionZField.text);
 | 
			
		||||
            Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID].keyframes.FirstOrDefault(x => x.keyframeID == Workspace.keyframeID).bodyAngle = float.Parse(rotationField.text);
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe(true);
 | 
			
		||||
 | 
			
		||||
            keyframe.bodyOffsetX = float.Parse(positionXField.text);
 | 
			
		||||
            keyframe.bodyOffsetZ = float.Parse(positionZField.text);
 | 
			
		||||
            keyframe.bodyAngle = float.Parse(rotationField.text);
 | 
			
		||||
            keyframe.headBob = float.Parse(headBobField.text);
 | 
			
		||||
            keyframe.headAngle = float.Parse(headRotationField.text);
 | 
			
		||||
            keyframe.genitalAngle = float.Parse(appendageRotationField.text);
 | 
			
		||||
 | 
			
		||||
            Workspace.Instance.GetPawnAnimationClip(Workspace.actorID).BuildSimpleCurves();
 | 
			
		||||
            isDirty = true;
 | 
			
		||||
 | 
			
		||||
            Workspace.Instance.MakeDirty();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								Assets/Scripts/GUI/AddSoundDefButton.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using UnityEngine.UI;
 | 
			
		||||
 | 
			
		||||
namespace RimWorldAnimationStudio
 | 
			
		||||
{
 | 
			
		||||
    public class AddSoundDefButton : MonoBehaviour
 | 
			
		||||
    {
 | 
			
		||||
        private Text text;
 | 
			
		||||
 | 
			
		||||
        public void Start()
 | 
			
		||||
        {
 | 
			
		||||
            text = GetComponentInChildren<Text>();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        void Update()
 | 
			
		||||
        {
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
    
 | 
			
		||||
            if (keyframe != null)
 | 
			
		||||
            { text.text = keyframe.soundEffect == null || keyframe.soundEffect == "" ? "None" : keyframe.soundEffect; }
 | 
			
		||||
 | 
			
		||||
            else 
 | 
			
		||||
            { text.text = "None"; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Assets/Scripts/GUI/AddSoundDefButton.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 329a2ecc35813f94fa879c7f434c8fb7
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
							
								
								
									
										88
									
								
								Assets/Scripts/GUI/DialogBoxes/SelectSoundDefDialog.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,88 @@
 | 
			
		|||
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 SelectSoundDefDialog : DialogBox
 | 
			
		||||
    {
 | 
			
		||||
        public void Start()
 | 
			
		||||
        {
 | 
			
		||||
            Initialize();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void AddSoundDef(InputField field)
 | 
			
		||||
        {
 | 
			
		||||
            if (field?.text == null || field.text == "")
 | 
			
		||||
            { return; }
 | 
			
		||||
 | 
			
		||||
            if (Workspace.soundDefs.Contains(field.text))
 | 
			
		||||
            { field.text = "";  return; }
 | 
			
		||||
 | 
			
		||||
            Workspace.soundDefs.Add(field.text);
 | 
			
		||||
 | 
			
		||||
            Initialize(true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Initialize(bool addedNewTag = false)
 | 
			
		||||
        {
 | 
			
		||||
            if (Workspace.animationDef == null) return;
 | 
			
		||||
 | 
			
		||||
            foreach (AnimationStage stage in Workspace.animationDef.animationStages)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (PawnAnimationClip clip in stage.animationClips)
 | 
			
		||||
                {
 | 
			
		||||
                    foreach (string soundDef in clip.keyframes.Select(x => x.soundEffect))
 | 
			
		||||
                    {
 | 
			
		||||
                        if (Workspace.soundDefs.Contains(soundDef) == false && soundDef != "")
 | 
			
		||||
                        { Workspace.soundDefs.Add(soundDef); }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Transform contentWindow = transform.FindDeepChild("Content");
 | 
			
		||||
            Reset();
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < Workspace.soundDefs.Count; i++)
 | 
			
		||||
            {
 | 
			
		||||
                string soundDef = Workspace.soundDefs[i];
 | 
			
		||||
 | 
			
		||||
                Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform;
 | 
			
		||||
                _optionToggle.Find("Text").GetComponent<Text>().text = soundDef;
 | 
			
		||||
 | 
			
		||||
                Toggle toggleComp = _optionToggle.GetComponent<Toggle>();
 | 
			
		||||
                toggleComp.isOn = Workspace.animationDef.sexTypes.Contains(soundDef);
 | 
			
		||||
                toggleComp.onValueChanged.AddListener(delegate {
 | 
			
		||||
 | 
			
		||||
                    PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
 | 
			
		||||
                    if (keyframe != null)
 | 
			
		||||
                    { keyframe.soundEffect = soundDef; }
 | 
			
		||||
                    
 | 
			
		||||
                    Workspace.Instance.MakeDirty();
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                toggleComp.group = contentWindow.GetComponent<ToggleGroup>();
 | 
			
		||||
 | 
			
		||||
                if (addedNewTag && i == Workspace.soundDefs.Count - 1)
 | 
			
		||||
                { toggleComp.isOn = true; }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform;
 | 
			
		||||
            _optionField.Find("Placeholder").GetComponent<Text>().text = "Enter new sound def...";
 | 
			
		||||
 | 
			
		||||
            InputField fieldComp = _optionField.GetComponent<InputField>();
 | 
			
		||||
            fieldComp.onEndEdit.AddListener(delegate { AddSoundDef(fieldComp); });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void Reset()
 | 
			
		||||
        {
 | 
			
		||||
            Transform contentWindow = transform.FindDeepChild("Content");
 | 
			
		||||
            RemoveCloneObjectsFromParent(contentWindow);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Assets/Scripts/GUI/DialogBoxes/SelectSoundDefDialog.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 7cc6afc7ba6ae0f42b3a2df6e73c5b16
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -14,6 +14,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public AnimationTimeline timeline;
 | 
			
		||||
        public Transform ghostSliders;
 | 
			
		||||
        public Slider ghostSliderPrefab;
 | 
			
		||||
        public Image handleImage;
 | 
			
		||||
        public GameObject soundIcon;
 | 
			
		||||
        public int maxGhosts = 4;
 | 
			
		||||
 | 
			
		||||
        public int actorID;
 | 
			
		||||
| 
						 | 
				
			
			@ -131,17 +133,25 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        {
 | 
			
		||||
            base.Update();
 | 
			
		||||
 | 
			
		||||
            if (Workspace.keyframeID == keyframeID && AnimationController.Instance.stageTick == keyframe.atTick.Value)
 | 
			
		||||
            { transform.FindDeepChild("Handle").GetComponent<Image>().color = Constants.ColorPurple; }
 | 
			
		||||
            if (keyframe.atTick.HasValue && Workspace.keyframeID == keyframeID && AnimationController.Instance.stageTick == keyframe.atTick.Value)
 | 
			
		||||
            { handleImage.color = Constants.ColorPurple; }
 | 
			
		||||
 | 
			
		||||
            else if (Workspace.keyframeID == keyframeID)
 | 
			
		||||
            { transform.FindDeepChild("Handle").GetComponent<Image>().color = Constants.ColorCyan; }
 | 
			
		||||
            { handleImage.color = Constants.ColorCyan; }
 | 
			
		||||
 | 
			
		||||
            else if (AnimationController.Instance.stageTick == keyframe.atTick.Value)
 | 
			
		||||
            { transform.FindDeepChild("Handle").GetComponent<Image>().color = Constants.ColorPink; }
 | 
			
		||||
            else if (keyframe.atTick.HasValue && AnimationController.Instance.stageTick == keyframe.atTick.Value)
 | 
			
		||||
            { handleImage.color = Constants.ColorPink; }
 | 
			
		||||
 | 
			
		||||
            else
 | 
			
		||||
            { transform.FindDeepChild("Handle").GetComponent<Image>().color = Constants.ColorWhite; }
 | 
			
		||||
            { handleImage.color = Constants.ColorWhite; }
 | 
			
		||||
 | 
			
		||||
            string soundDef = Workspace.Instance.GetPawnKeyframe(actorID, keyframeID).soundEffect;
 | 
			
		||||
 | 
			
		||||
            if (soundDef != null && soundDef != "" && soundDef != "None")
 | 
			
		||||
            { soundIcon.SetActive(true); }
 | 
			
		||||
 | 
			
		||||
            else
 | 
			
		||||
            { soundIcon.SetActive(false); }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										24
									
								
								Assets/Scripts/GUI/QuiverToggle.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
using UnityEngine.UI;
 | 
			
		||||
 | 
			
		||||
namespace RimWorldAnimationStudio
 | 
			
		||||
{
 | 
			
		||||
    public class QuiverToggle : MonoBehaviour
 | 
			
		||||
    {
 | 
			
		||||
        public void Update()
 | 
			
		||||
        {
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
            GetComponent<Toggle>().isOn = keyframe != null && keyframe.quiver.HasValue && keyframe.quiver.Value;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnValueChanged()
 | 
			
		||||
        {
 | 
			
		||||
            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe();
 | 
			
		||||
 | 
			
		||||
            if (keyframe != null)
 | 
			
		||||
            { keyframe.quiver = GetComponent<Toggle>().isOn; }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Assets/Scripts/GUI/QuiverToggle.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
fileFormatVersion: 2
 | 
			
		||||
guid: 1aaf656fd4e788245accc65162730545
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +26,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public ActorCard actorCard;
 | 
			
		||||
        public Transform animationTimelines;
 | 
			
		||||
        public Transform actorBodies;
 | 
			
		||||
        public Toggle stretchkeyframesToggle;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        [Header("Prefabs")]
 | 
			
		||||
        public ActorBody actorBodyPrefab;
 | 
			
		||||
| 
						 | 
				
			
			@ -151,14 +153,20 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
                Vector3 bodyPos = new Vector3(deltaPos.x, deltaPos.z, 0);
 | 
			
		||||
                Vector3 headPos = new Vector3(headBob.x, headBob.z, 0);
 | 
			
		||||
 | 
			
		||||
                Vector3 appendagePos = PawnUtility.AppendageOffsetAt(bodyType, bodyFacing);
 | 
			
		||||
 | 
			
		||||
                actorBody.transform.position = bodyPos;
 | 
			
		||||
                actorBody.transform.eulerAngles = new Vector3(0, 0, bodyAngle);
 | 
			
		||||
 | 
			
		||||
                actorBody.headRenderer.transform.localPosition = headPos;
 | 
			
		||||
                actorBody.headRenderer.transform.eulerAngles = new Vector3(0, 0, headAngle);
 | 
			
		||||
 | 
			
		||||
                actorBody.appendageRenderer.transform.localPosition = new Vector3(appendagePos.x, appendagePos.z, 0f);
 | 
			
		||||
                actorBody.appendageRenderer.transform.eulerAngles = new Vector3(0,0,clip.GenitalAngle.Evaluate(clipPercent));
 | 
			
		||||
 | 
			
		||||
                actorBody.bodyRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Bodies/" + bodyType + bodyFacing);
 | 
			
		||||
                actorBody.headRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Heads/Head" + headFacing);
 | 
			
		||||
                actorBody.appendageRenderer.sprite = Resources.Load<Sprite>("Textures/Humanlike/Appendages/Appendage" + bodyFacing);
 | 
			
		||||
 | 
			
		||||
                actorBody.bodyRenderer.sortingLayerName = clip.layer;
 | 
			
		||||
                actorBody.headRenderer.sortingLayerName = clip.layer;
 | 
			
		||||
| 
						 | 
				
			
			@ -351,34 +359,58 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        {
 | 
			
		||||
            if (Workspace.animationDef == null) return;
 | 
			
		||||
 | 
			
		||||
            int.TryParse(animationClipLengthField.text, out int newstageWindowSize);
 | 
			
		||||
            newstageWindowSize = Mathf.Clamp(newstageWindowSize, Constants.minAnimationClipLength, Constants.maxAnimationClipLength);
 | 
			
		||||
            int.TryParse(animationClipLengthField.text, out int newStageWindowSize);
 | 
			
		||||
            newStageWindowSize = Mathf.Clamp(newStageWindowSize, Constants.minAnimationClipLength, Constants.maxAnimationClipLength);
 | 
			
		||||
 | 
			
		||||
            Debug.Log("Resizing animation clip length to " + newstageWindowSize.ToString() + " ticks.");
 | 
			
		||||
            Debug.Log("Resizing animation clip length to " + newStageWindowSize.ToString() + " ticks.");
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < Workspace.animationDef.animationStages[Workspace.stageID].animationClips.Count; i++)
 | 
			
		||||
            if (stretchkeyframesToggle.isOn)
 | 
			
		||||
            { StretchKeyframes(newStageWindowSize); }
 | 
			
		||||
 | 
			
		||||
            else
 | 
			
		||||
            {
 | 
			
		||||
                PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[i];
 | 
			
		||||
                List<PawnKeyframe> keyframes = clip.keyframes.Where(x => x.atTick > newstageWindowSize)?.ToList();
 | 
			
		||||
                for (int i = 0; i < Workspace.animationDef.animationStages[Workspace.stageID].animationClips.Count; i++)
 | 
			
		||||
                {
 | 
			
		||||
                    PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[i];
 | 
			
		||||
                    List<PawnKeyframe> keyframes = clip.keyframes.Where(x => x.atTick > newStageWindowSize)?.ToList();
 | 
			
		||||
 | 
			
		||||
                if (keyframes.NullOrEmpty())
 | 
			
		||||
                { continue; }
 | 
			
		||||
                    if (keyframes.NullOrEmpty())
 | 
			
		||||
                    { continue; }
 | 
			
		||||
 | 
			
		||||
                foreach (PawnKeyframe keyframe in keyframes)
 | 
			
		||||
                { 
 | 
			
		||||
                    RemovePawnKeyframe(i, keyframe.keyframeID);
 | 
			
		||||
                    foreach (PawnKeyframe keyframe in keyframes)
 | 
			
		||||
                    {
 | 
			
		||||
                        RemovePawnKeyframe(i, keyframe.keyframeID);
 | 
			
		||||
 | 
			
		||||
                    if (Workspace.animationDef.animationStages[Workspace.stageID].animationClips[i].keyframes.Count <= 2)
 | 
			
		||||
                    { break; }
 | 
			
		||||
                        if (Workspace.animationDef.animationStages[Workspace.stageID].animationClips[i].keyframes.Count <= 2)
 | 
			
		||||
                        { break; }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            animationClipLengthField.text = newstageWindowSize.ToString();
 | 
			
		||||
            Workspace.animationDef.animationStages[Workspace.stageID].stageWindowSize = newstageWindowSize;
 | 
			
		||||
            animationClipLengthField.text = newStageWindowSize.ToString();
 | 
			
		||||
            Workspace.animationDef.animationStages[Workspace.stageID].stageWindowSize = newStageWindowSize;
 | 
			
		||||
 | 
			
		||||
            Workspace.Instance.MakeDirty();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void StretchKeyframes(int newStageWindowSize)
 | 
			
		||||
        {
 | 
			
		||||
            float scale = (float)newStageWindowSize / Workspace.StageWindowSize;
 | 
			
		||||
 | 
			
		||||
            foreach (PawnAnimationClip clip in Workspace.animationDef.animationStages[Workspace.stageID].animationClips)
 | 
			
		||||
            {
 | 
			
		||||
                foreach (PawnKeyframe keyframe in clip.keyframes)
 | 
			
		||||
                {
 | 
			
		||||
                    if (keyframe.atTick == 1) continue;
 | 
			
		||||
 | 
			
		||||
                    keyframe.tickDuration = Mathf.RoundToInt(keyframe.tickDuration * scale);
 | 
			
		||||
                    keyframe.atTick = null;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                clip.BuildSimpleCurves();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public void OnCycleNormalFieldChange()
 | 
			
		||||
        {
 | 
			
		||||
            if (Workspace.animationDef == null) return;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,3 +5,10 @@
 | 
			
		|||
    Face,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
public enum ActorGender
 | 
			
		||||
{
 | 
			
		||||
    Female,
 | 
			
		||||
    None,
 | 
			
		||||
    Male,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,5 +31,34 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
				default: return Vector3.zero;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public static Vector3 AppendageOffsetAt(string bodyType, int rotation)
 | 
			
		||||
		{
 | 
			
		||||
			if (rotation == 0 || rotation == 2)
 | 
			
		||||
			{
 | 
			
		||||
				switch (bodyType)
 | 
			
		||||
				{
 | 
			
		||||
					case "Male": return new Vector3(0.00f, 0f, -0.46f);
 | 
			
		||||
					case "Female": return new Vector3(0.00f, 0f, -0.51f);
 | 
			
		||||
					case "Thin": return new Vector3(0.00f, 0f, -0.46f);
 | 
			
		||||
					case "Hulk": return new Vector3(0.00f, 0f, -0.66f);
 | 
			
		||||
					case "Fat": return new Vector3(0.00f, 0f, -0.52f);
 | 
			
		||||
					default: return Vector3.zero;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				switch (bodyType)
 | 
			
		||||
				{
 | 
			
		||||
					case "Male": return new Vector3(0.07f, 0f, -0.41f);
 | 
			
		||||
					case "Female": return new Vector3(0.07f, 0f, -0.47f);
 | 
			
		||||
					case "Thin": return new Vector3(-0.05f, 0f, -0.43f);
 | 
			
		||||
					case "Hulk": return new Vector3(-0.03f, 0f, -0.64f);
 | 
			
		||||
					case "Fat": return new Vector3(0.24f, 0f, -0.50f);
 | 
			
		||||
					default: return Vector3.zero;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        public static List<string> bodyDefTypes = new List<string>() { "Human", "Bird", "BeetleLike", "BeetleLikeWithClaw", "MechanicalCentipede", "MechanicalTermite", "Lancer", "Pikeman", "Monkey", "QuadrupedAnimalWithClawsTailAndJowl", "QuadrupedAnimalWithHooves", "QuadrupedAnimalWithHoovesAndHorn", "QuadrupedAnimalWithHoovesAndHump", "QuadrupedAnimalWithHoovesAndTusks", "QuadrupedAnimalWithHoovesTusksAndTrunk", "QuadrupedAnimalWithPaws", "QuadrupedAnimalWithPawsAndTail", "Scyther", "Snake", "TurtleLike" };
 | 
			
		||||
        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 static List<string> soundDefs = new List<string>() { "None", "Sex", "Fuck", "Slimy", "Suck", "Cum" };
 | 
			
		||||
 | 
			
		||||
        [SerializeField] private List<WorkspaceSnapShot> workspaceHistory = new List<WorkspaceSnapShot>();     
 | 
			
		||||
        [SerializeField] private int historyIndex = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -26,7 +27,8 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
        private bool isDirty = false;
 | 
			
		||||
 | 
			
		||||
        public static ActorManipulationMode actorManipulationMode = ActorManipulationMode.Pan;
 | 
			
		||||
        
 | 
			
		||||
        public static ActorBodyPart selectedBodyPart;
 | 
			
		||||
 | 
			
		||||
        public static int StageWindowSize 
 | 
			
		||||
        { 
 | 
			
		||||
            get 
 | 
			
		||||
| 
						 | 
				
			
			@ -47,12 +49,12 @@ namespace RimWorldAnimationStudio
 | 
			
		|||
            { TrackChanges(); }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public PawnKeyframe GetCurrentPawnKeyframe()
 | 
			
		||||
        public PawnKeyframe GetCurrentPawnKeyframe(bool makeKeyframe = false)
 | 
			
		||||
        {
 | 
			
		||||
            int stageTick = AnimationController.Instance.stageTick;
 | 
			
		||||
            PawnKeyframe keyframe = animationDef?.animationStages[stageID]?.animationClips[actorID]?.keyframes.FirstOrDefault(x => x.atTick == stageTick);
 | 
			
		||||
 | 
			
		||||
            if (keyframe != null)
 | 
			
		||||
            if (keyframe != null || makeKeyframe == false)
 | 
			
		||||
            { return keyframe; }
 | 
			
		||||
 | 
			
		||||
            AnimationController.Instance.AddPawnKeyframe();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/02/02a1e83c14ede8f0431c53c4c0d3d82f
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/04/04305d59c7875144f2c820afe92bb966
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/05/05b63f8a5f20a85b3e2cf17e49f824f0
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.7 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/05/05fb78e2dabd18ee240964674dcb8491
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/06/06faedb2fb9b026e4f627ec5b706503c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/08/0895fb3fa431cfe31f1b110b9084196b
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/09/09bc196c059a8290af7043c1a2c2908f
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0b/0b7a87f29fafaf876cb8bdd6b4a7f0b6
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0c/0c9e8d430b9f5f3c78fb8f76399faba9
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0d/0d3c7a903d8c5b74c19552769544ea43
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0e/0e1728a746ed2e20f1098552f1eba69c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0e/0e5ab9b3be6c110fc3adf9ef6580434f
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/10/1029c1418cc95eee60c7e63a5277326f
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/10/10fa24518876450faff3fa6c5f6c2b1a
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/11/11c157e29f7edef83599342226ef658f
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/13/13dcd9a67ceba0ebfa397ded58b77c33
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.2 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/13/13f9bfc1b9e667b4a70cbdf5ebc215fb
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.9 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/14/1413e2986673dfbb164ea07b7034bc63
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/14/14ace7a7f5080a3a26a0209d162b9aa3
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.5 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/14/14dc32b6ab7485221af4c05fbd0a22e7
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/17/1707cbb2ef1911546021915634386846
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/17/175837e68f23eb48f695ac7fe233b36a
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/18/189e3c77f69ac8115710e1d19c6aa08d
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  |