Actor addons and animation
- Includes addons for hands and sex toys - WIP and very buggy
| 
						 | 
					@ -66,6 +66,7 @@
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonCollider.cs" />
 | 
					    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonCollider.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonColliderUtilities.cs" />
 | 
					    <Compile Include="Assets\Scripts\AdvancedPolygonCollider\AdvancedPolygonColliderUtilities.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\Actor.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\Actor.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\ActorAddon.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\AlienRaceDef.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\AlienRaceDef.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\AlienRaceOffset.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\AlienRaceOffset.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\AnimationClips\AnimationClip.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\AnimationClips\AnimationClip.cs" />
 | 
				
			||||||
| 
						 | 
					@ -77,12 +78,15 @@
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\ButtonWithKeyCode.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\ButtonWithKeyCode.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\Chaser.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\Chaser.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\Defs.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\Defs.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\AddonKeyFrame.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\Keyframe.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\Keyframe.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\PawnKeyframe.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\PawnKeyframe.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\ThingKeyFrame.cs" />
 | 
					    <Compile Include="Assets\Scripts\AnimationComponents\KeyFrames\ThingKeyFrame.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\Extensions\IListExtensions.cs" />
 | 
					    <Compile Include="Assets\Scripts\Extensions\IListExtensions.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\Extensions\ObjectExtensions.cs" />
 | 
					    <Compile Include="Assets\Scripts\Extensions\ObjectExtensions.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\Extensions\TransformExtensions.cs" />
 | 
					    <Compile Include="Assets\Scripts\Extensions\TransformExtensions.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Assets\Scripts\Extensions\Vector3Extension.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Assets\Scripts\GUI\ActorAddonCard.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\ActorBody.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\ActorBody.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\ActorBodyPart.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\ActorBodyPart.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\ActorCard.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\ActorCard.cs" />
 | 
				
			||||||
| 
						 | 
					@ -94,6 +98,7 @@
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\ConsoleMessagesDialog.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\ConsoleMessagesDialog.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\DialogBox.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\DialogBox.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\RaceSettingsDialog.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\RaceSettingsDialog.cs" />
 | 
				
			||||||
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectActorAddonsDialog.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectActorLayerDialog.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectActorLayerDialog.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectAnimationDialog.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectAnimationDialog.cs" />
 | 
				
			||||||
    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectBodyDefTypesDialog.cs" />
 | 
					    <Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectBodyDefTypesDialog.cs" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,348 @@
 | 
				
			||||||
%YAML 1.1
 | 
					%YAML 1.1
 | 
				
			||||||
%TAG !u! tag:unity3d.com,2011:
 | 
					%TAG !u! tag:unity3d.com,2011:
 | 
				
			||||||
 | 
					--- !u!1 &111030959124096607
 | 
				
			||||||
 | 
					GameObject:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  serializedVersion: 6
 | 
				
			||||||
 | 
					  m_Component:
 | 
				
			||||||
 | 
					  - component: {fileID: 523924871185930481}
 | 
				
			||||||
 | 
					  - component: {fileID: 3345967395353432914}
 | 
				
			||||||
 | 
					  - component: {fileID: 7181959437973434010}
 | 
				
			||||||
 | 
					  - component: {fileID: 8578366366517098866}
 | 
				
			||||||
 | 
					  - component: {fileID: 2696481706634536602}
 | 
				
			||||||
 | 
					  m_Layer: 0
 | 
				
			||||||
 | 
					  m_Name: ActorHandRight
 | 
				
			||||||
 | 
					  m_TagString: Untagged
 | 
				
			||||||
 | 
					  m_Icon: {fileID: 0}
 | 
				
			||||||
 | 
					  m_NavMeshLayer: 0
 | 
				
			||||||
 | 
					  m_StaticEditorFlags: 0
 | 
				
			||||||
 | 
					  m_IsActive: 0
 | 
				
			||||||
 | 
					--- !u!4 &523924871185930481
 | 
				
			||||||
 | 
					Transform:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 111030959124096607}
 | 
				
			||||||
 | 
					  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: 7929422520673851209}
 | 
				
			||||||
 | 
					  m_RootOrder: 5
 | 
				
			||||||
 | 
					  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
				
			||||||
 | 
					--- !u!212 &3345967395353432914
 | 
				
			||||||
 | 
					SpriteRenderer:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 111030959124096607}
 | 
				
			||||||
 | 
					  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: 3
 | 
				
			||||||
 | 
					  m_Sprite: {fileID: 21300000, guid: 68b94fce550ad52498142c9433df954b, type: 3}
 | 
				
			||||||
 | 
					  m_Color: {r: 1, g: 1, b: 1, a: 1}
 | 
				
			||||||
 | 
					  m_FlipX: 0
 | 
				
			||||||
 | 
					  m_FlipY: 0
 | 
				
			||||||
 | 
					  m_DrawMode: 0
 | 
				
			||||||
 | 
					  m_Size: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					  m_AdaptiveModeThreshold: 0.5
 | 
				
			||||||
 | 
					  m_SpriteTileMode: 0
 | 
				
			||||||
 | 
					  m_WasSpriteAssigned: 1
 | 
				
			||||||
 | 
					  m_MaskInteraction: 0
 | 
				
			||||||
 | 
					  m_SpriteSortPoint: 0
 | 
				
			||||||
 | 
					--- !u!60 &7181959437973434010
 | 
				
			||||||
 | 
					PolygonCollider2D:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 111030959124096607}
 | 
				
			||||||
 | 
					  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.0039216, y: 1.0039216}
 | 
				
			||||||
 | 
					    newSize: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					    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 &8578366366517098866
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 111030959124096607}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  AlphaTolerance: 50
 | 
				
			||||||
 | 
					  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 &2696481706634536602
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 111030959124096607}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  bodyPartRenderer: {fileID: 3345967395353432914}
 | 
				
			||||||
 | 
					  parent: {fileID: -4411442180840688308}
 | 
				
			||||||
 | 
					  isHead: 0
 | 
				
			||||||
 | 
					  addonName: right hand
 | 
				
			||||||
 | 
					  isSelected: 0
 | 
				
			||||||
 | 
					--- !u!1 &2846713953308910856
 | 
				
			||||||
 | 
					GameObject:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  serializedVersion: 6
 | 
				
			||||||
 | 
					  m_Component:
 | 
				
			||||||
 | 
					  - component: {fileID: 7268521810611446429}
 | 
				
			||||||
 | 
					  - component: {fileID: 4070361490379091543}
 | 
				
			||||||
 | 
					  - component: {fileID: 2766569757332877970}
 | 
				
			||||||
 | 
					  - component: {fileID: 1056544768350913866}
 | 
				
			||||||
 | 
					  - component: {fileID: 8546380208971044199}
 | 
				
			||||||
 | 
					  m_Layer: 0
 | 
				
			||||||
 | 
					  m_Name: ActorHandLeft
 | 
				
			||||||
 | 
					  m_TagString: Untagged
 | 
				
			||||||
 | 
					  m_Icon: {fileID: 0}
 | 
				
			||||||
 | 
					  m_NavMeshLayer: 0
 | 
				
			||||||
 | 
					  m_StaticEditorFlags: 0
 | 
				
			||||||
 | 
					  m_IsActive: 0
 | 
				
			||||||
 | 
					--- !u!4 &7268521810611446429
 | 
				
			||||||
 | 
					Transform:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 2846713953308910856}
 | 
				
			||||||
 | 
					  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: 7929422520673851209}
 | 
				
			||||||
 | 
					  m_RootOrder: 4
 | 
				
			||||||
 | 
					  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
				
			||||||
 | 
					--- !u!212 &4070361490379091543
 | 
				
			||||||
 | 
					SpriteRenderer:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 2846713953308910856}
 | 
				
			||||||
 | 
					  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: 3
 | 
				
			||||||
 | 
					  m_Sprite: {fileID: 21300000, guid: 68b94fce550ad52498142c9433df954b, type: 3}
 | 
				
			||||||
 | 
					  m_Color: {r: 1, g: 1, b: 1, a: 1}
 | 
				
			||||||
 | 
					  m_FlipX: 0
 | 
				
			||||||
 | 
					  m_FlipY: 0
 | 
				
			||||||
 | 
					  m_DrawMode: 0
 | 
				
			||||||
 | 
					  m_Size: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					  m_AdaptiveModeThreshold: 0.5
 | 
				
			||||||
 | 
					  m_SpriteTileMode: 0
 | 
				
			||||||
 | 
					  m_WasSpriteAssigned: 1
 | 
				
			||||||
 | 
					  m_MaskInteraction: 0
 | 
				
			||||||
 | 
					  m_SpriteSortPoint: 0
 | 
				
			||||||
 | 
					--- !u!60 &2766569757332877970
 | 
				
			||||||
 | 
					PolygonCollider2D:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 2846713953308910856}
 | 
				
			||||||
 | 
					  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.0039216, y: 1.0039216}
 | 
				
			||||||
 | 
					    newSize: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					    adaptiveTilingThreshold: 0.5
 | 
				
			||||||
 | 
					    drawMode: 0
 | 
				
			||||||
 | 
					    adaptiveTiling: 0
 | 
				
			||||||
 | 
					  m_AutoTiling: 0
 | 
				
			||||||
 | 
					  m_Points:
 | 
				
			||||||
 | 
					    m_Paths:
 | 
				
			||||||
 | 
					    - - {x: -0.013513514, y: -0.035135135}
 | 
				
			||||||
 | 
					      - {x: 0.035135135, y: -0.01891892}
 | 
				
			||||||
 | 
					      - {x: 0.040540542, y: 0.13243243}
 | 
				
			||||||
 | 
					      - {x: 0.01891892, y: 0.15405406}
 | 
				
			||||||
 | 
					      - {x: -0.013513514, y: 0.15405406}
 | 
				
			||||||
 | 
					      - {x: -0.035135135, y: 0.13243243}
 | 
				
			||||||
 | 
					      - {x: -0.024324324, y: -0.024324324}
 | 
				
			||||||
 | 
					--- !u!114 &1056544768350913866
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 2846713953308910856}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  AlphaTolerance: 50
 | 
				
			||||||
 | 
					  DistanceThreshold: 2
 | 
				
			||||||
 | 
					  Scale: 1
 | 
				
			||||||
 | 
					  Decompose: 0
 | 
				
			||||||
 | 
					  RunInPlayMode: 1
 | 
				
			||||||
 | 
					  UseCache: 0
 | 
				
			||||||
 | 
					  lastAlphaTolerance: 50
 | 
				
			||||||
 | 
					  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 &8546380208971044199
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 2846713953308910856}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  bodyPartRenderer: {fileID: 4070361490379091543}
 | 
				
			||||||
 | 
					  parent: {fileID: -4411442180840688308}
 | 
				
			||||||
 | 
					  isHead: 0
 | 
				
			||||||
 | 
					  addonName: left hand
 | 
				
			||||||
 | 
					  isSelected: 0
 | 
				
			||||||
--- !u!1 &3158459618386162366
 | 
					--- !u!1 &3158459618386162366
 | 
				
			||||||
GameObject:
 | 
					GameObject:
 | 
				
			||||||
  m_ObjectHideFlags: 0
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
| 
						 | 
					@ -142,6 +485,182 @@ MonoBehaviour:
 | 
				
			||||||
  lastFlipX: 0
 | 
					  lastFlipX: 0
 | 
				
			||||||
  lastFlipY: 0
 | 
					  lastFlipY: 0
 | 
				
			||||||
  editorCache: []
 | 
					  editorCache: []
 | 
				
			||||||
 | 
					--- !u!1 &5655091321662588893
 | 
				
			||||||
 | 
					GameObject:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  serializedVersion: 6
 | 
				
			||||||
 | 
					  m_Component:
 | 
				
			||||||
 | 
					  - component: {fileID: 366978152691480472}
 | 
				
			||||||
 | 
					  - component: {fileID: 7367385255154626542}
 | 
				
			||||||
 | 
					  - component: {fileID: 4321381840095243507}
 | 
				
			||||||
 | 
					  - component: {fileID: 6499847047946158724}
 | 
				
			||||||
 | 
					  - component: {fileID: 3259083001588921112}
 | 
				
			||||||
 | 
					  m_Layer: 0
 | 
				
			||||||
 | 
					  m_Name: ActorSexToy
 | 
				
			||||||
 | 
					  m_TagString: Untagged
 | 
				
			||||||
 | 
					  m_Icon: {fileID: 0}
 | 
				
			||||||
 | 
					  m_NavMeshLayer: 0
 | 
				
			||||||
 | 
					  m_StaticEditorFlags: 0
 | 
				
			||||||
 | 
					  m_IsActive: 0
 | 
				
			||||||
 | 
					--- !u!4 &366978152691480472
 | 
				
			||||||
 | 
					Transform:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 5655091321662588893}
 | 
				
			||||||
 | 
					  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: 7929422520673851209}
 | 
				
			||||||
 | 
					  m_RootOrder: 3
 | 
				
			||||||
 | 
					  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
				
			||||||
 | 
					--- !u!212 &7367385255154626542
 | 
				
			||||||
 | 
					SpriteRenderer:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 5655091321662588893}
 | 
				
			||||||
 | 
					  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: 2
 | 
				
			||||||
 | 
					  m_Sprite: {fileID: 21300000, guid: c8db866783ad2a3498006437fd914bc4, type: 3}
 | 
				
			||||||
 | 
					  m_Color: {r: 1, g: 1, b: 1, a: 1}
 | 
				
			||||||
 | 
					  m_FlipX: 0
 | 
				
			||||||
 | 
					  m_FlipY: 0
 | 
				
			||||||
 | 
					  m_DrawMode: 0
 | 
				
			||||||
 | 
					  m_Size: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					  m_AdaptiveModeThreshold: 0.5
 | 
				
			||||||
 | 
					  m_SpriteTileMode: 0
 | 
				
			||||||
 | 
					  m_WasSpriteAssigned: 1
 | 
				
			||||||
 | 
					  m_MaskInteraction: 0
 | 
				
			||||||
 | 
					  m_SpriteSortPoint: 0
 | 
				
			||||||
 | 
					--- !u!60 &4321381840095243507
 | 
				
			||||||
 | 
					PolygonCollider2D:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 5655091321662588893}
 | 
				
			||||||
 | 
					  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.5058824, y: 1.5058824}
 | 
				
			||||||
 | 
					    newSize: {x: 1.3837838, y: 1.3837838}
 | 
				
			||||||
 | 
					    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 &6499847047946158724
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 5655091321662588893}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: 8c55c83d4c4dd1145ad5fbbab3c3df36, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  AlphaTolerance: 50
 | 
				
			||||||
 | 
					  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 &3259083001588921112
 | 
				
			||||||
 | 
					MonoBehaviour:
 | 
				
			||||||
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
 | 
					  m_CorrespondingSourceObject: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabInstance: {fileID: 0}
 | 
				
			||||||
 | 
					  m_PrefabAsset: {fileID: 0}
 | 
				
			||||||
 | 
					  m_GameObject: {fileID: 5655091321662588893}
 | 
				
			||||||
 | 
					  m_Enabled: 1
 | 
				
			||||||
 | 
					  m_EditorHideFlags: 0
 | 
				
			||||||
 | 
					  m_Script: {fileID: 11500000, guid: b23e33f312d52c642b86f5f2138f4030, type: 3}
 | 
				
			||||||
 | 
					  m_Name: 
 | 
				
			||||||
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
 | 
					  bodyPartRenderer: {fileID: 7367385255154626542}
 | 
				
			||||||
 | 
					  parent: {fileID: -4411442180840688308}
 | 
				
			||||||
 | 
					  isHead: 0
 | 
				
			||||||
 | 
					  addonName: dildo
 | 
				
			||||||
 | 
					  isSelected: 0
 | 
				
			||||||
--- !u!1 &7929422519883802246
 | 
					--- !u!1 &7929422519883802246
 | 
				
			||||||
GameObject:
 | 
					GameObject:
 | 
				
			||||||
  m_ObjectHideFlags: 0
 | 
					  m_ObjectHideFlags: 0
 | 
				
			||||||
| 
						 | 
					@ -300,6 +819,7 @@ MonoBehaviour:
 | 
				
			||||||
  bodyPartRenderer: {fileID: 7929422519883802244}
 | 
					  bodyPartRenderer: {fileID: 7929422519883802244}
 | 
				
			||||||
  parent: {fileID: -4411442180840688308}
 | 
					  parent: {fileID: -4411442180840688308}
 | 
				
			||||||
  isHead: 1
 | 
					  isHead: 1
 | 
				
			||||||
 | 
					  addonName: 
 | 
				
			||||||
  isSelected: 0
 | 
					  isSelected: 0
 | 
				
			||||||
--- !u!1 &7929422520673851210
 | 
					--- !u!1 &7929422520673851210
 | 
				
			||||||
GameObject:
 | 
					GameObject:
 | 
				
			||||||
| 
						 | 
					@ -332,6 +852,9 @@ Transform:
 | 
				
			||||||
  - {fileID: 7516402502875270591}
 | 
					  - {fileID: 7516402502875270591}
 | 
				
			||||||
  - {fileID: 7929422519883802245}
 | 
					  - {fileID: 7929422519883802245}
 | 
				
			||||||
  - {fileID: 4090857286061458930}
 | 
					  - {fileID: 4090857286061458930}
 | 
				
			||||||
 | 
					  - {fileID: 366978152691480472}
 | 
				
			||||||
 | 
					  - {fileID: 7268521810611446429}
 | 
				
			||||||
 | 
					  - {fileID: 523924871185930481}
 | 
				
			||||||
  m_Father: {fileID: 0}
 | 
					  m_Father: {fileID: 0}
 | 
				
			||||||
  m_RootOrder: 0
 | 
					  m_RootOrder: 0
 | 
				
			||||||
  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
					  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 | 
				
			||||||
| 
						 | 
					@ -348,7 +871,6 @@ MonoBehaviour:
 | 
				
			||||||
  m_Name: 
 | 
					  m_Name: 
 | 
				
			||||||
  m_EditorClassIdentifier: 
 | 
					  m_EditorClassIdentifier: 
 | 
				
			||||||
  actorID: 0
 | 
					  actorID: 0
 | 
				
			||||||
  bodyType: Male
 | 
					 | 
				
			||||||
  isSelected: 0
 | 
					  isSelected: 0
 | 
				
			||||||
  bodyRenderer: {fileID: 5996161745621340017}
 | 
					  bodyRenderer: {fileID: 5996161745621340017}
 | 
				
			||||||
  headRenderer: {fileID: 7929422519883802244}
 | 
					  headRenderer: {fileID: 7929422519883802244}
 | 
				
			||||||
| 
						 | 
					@ -527,4 +1049,5 @@ MonoBehaviour:
 | 
				
			||||||
  bodyPartRenderer: {fileID: 4251726083449519904}
 | 
					  bodyPartRenderer: {fileID: 4251726083449519904}
 | 
				
			||||||
  parent: {fileID: -4411442180840688308}
 | 
					  parent: {fileID: -4411442180840688308}
 | 
				
			||||||
  isHead: 0
 | 
					  isHead: 0
 | 
				
			||||||
 | 
					  addonName: 
 | 
				
			||||||
  isSelected: 0
 | 
					  isSelected: 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										2869
									
								
								Assets/Resources/Prefabs/AddonToggle.prefab
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										7
									
								
								Assets/Resources/Prefabs/AddonToggle.prefab.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: d66939e9e4faade439d080e91b585d91
 | 
				
			||||||
 | 
					PrefabImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
							
								
								
									
										8
									
								
								Assets/Resources/Textures/Humanlike/Hands.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 7bb557172c280d24589da73a3cddbf36
 | 
				
			||||||
 | 
					folderAsset: yes
 | 
				
			||||||
 | 
					DefaultImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/Hands/HandClean.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										116
									
								
								Assets/Resources/Textures/Humanlike/Hands/HandClean.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 68b94fce550ad52498142c9433df954b
 | 
				
			||||||
 | 
					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: 510
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
							
								
								
									
										8
									
								
								Assets/Resources/Textures/Humanlike/SexToys.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: e8128ddbd38f5c441b417b0318819eca
 | 
				
			||||||
 | 
					folderAsset: yes
 | 
				
			||||||
 | 
					DefaultImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/SexToys/dildo.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 8.6 KiB  | 
							
								
								
									
										116
									
								
								Assets/Resources/Textures/Humanlike/SexToys/dildo.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: c8db866783ad2a3498006437fd914bc4
 | 
				
			||||||
 | 
					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: 170
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
							
								
								
									
										8
									
								
								Assets/Resources/Textures/Humanlike/TestBodies.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 427cbeab2ddfa2f4986e277963c44c40
 | 
				
			||||||
 | 
					folderAsset: yes
 | 
				
			||||||
 | 
					DefaultImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/Humanlike/TestBodies/Female1.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.2 KiB  | 
							
								
								
									
										116
									
								
								Assets/Resources/Textures/Humanlike/TestBodies/Female1.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 370eaed52c0faea47a12bfb38a597f78
 | 
				
			||||||
 | 
					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: 85
 | 
				
			||||||
 | 
					  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/TestBodies/Female2.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.3 KiB  | 
							
								
								
									
										116
									
								
								Assets/Resources/Textures/Humanlike/TestBodies/Female2.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: de27a221cd1d01e4885d489ef8791fa4
 | 
				
			||||||
 | 
					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: 85
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 15 KiB  | 
| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 69bab29188c978041ba44e3ab03ff2dd
 | 
				
			||||||
 | 
					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: 340
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 17 KiB  | 
| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 3681fe620c3c3174abbf83594f9ed3fe
 | 
				
			||||||
 | 
					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: 340
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 4 KiB  | 
| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: ea64f4d2ac76e03419ec4c1bba26ed05
 | 
				
			||||||
 | 
					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: 170
 | 
				
			||||||
 | 
					  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: 
 | 
				
			||||||
| 
		 After Width: | Height: | Size: 4.1 KiB  | 
| 
						 | 
					@ -0,0 +1,116 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: fa72d9ea894f99b40810fa64b0a59da9
 | 
				
			||||||
 | 
					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: 170
 | 
				
			||||||
 | 
					  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/UI/anchor.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										92
									
								
								Assets/Resources/Textures/UI/anchor.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,92 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 4c53bbede3d987943ad88723554dcc5d
 | 
				
			||||||
 | 
					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: 
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/UI/body.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.3 KiB  | 
							
								
								
									
										92
									
								
								Assets/Resources/Textures/UI/body.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,92 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: e2bcb3f6dc4badc45830efec8f94b2fd
 | 
				
			||||||
 | 
					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: 
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Assets/Resources/Textures/UI/layers.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 1.4 KiB  | 
							
								
								
									
										92
									
								
								Assets/Resources/Textures/UI/layers.png.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,92 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 45337b4dc2939584b8c0ab0ec7924dd8
 | 
				
			||||||
 | 
					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: 
 | 
				
			||||||
| 
						 | 
					@ -107,6 +107,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            { Debug.LogWarning("Cannot make new actor - there is no AnimationDef"); return false; }
 | 
					            { Debug.LogWarning("Cannot make new actor - there is no AnimationDef"); return false; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Workspace.animationDef.actors.Add(this);
 | 
					            Workspace.animationDef.actors.Add(this);
 | 
				
			||||||
 | 
					            Workspace.actorID = Workspace.animationDef.actors.Count - 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach (AnimationStage stage in Workspace.animationDef.animationStages)
 | 
					            foreach (AnimationStage stage in Workspace.animationDef.animationStages)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -116,6 +117,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                { 
 | 
					                { 
 | 
				
			||||||
                    stage.animationClips.Add(clip);
 | 
					                    stage.animationClips.Add(clip);
 | 
				
			||||||
                    stage.Initialize();
 | 
					                    stage.Initialize();
 | 
				
			||||||
 | 
					                    stage.OnPostLoad();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										31
									
								
								Assets/Scripts/AnimationComponents/ActorAddon.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using System.Xml.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RimWorldAnimationStudio
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class ActorAddon
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string addonName;
 | 
				
			||||||
 | 
					        public int anchoringActor;
 | 
				
			||||||
 | 
					        public string anchorName;
 | 
				
			||||||
 | 
					        public string layer = "Pawn";
 | 
				
			||||||
 | 
					        public float scale;
 | 
				
			||||||
 | 
					        public bool render;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [XmlIgnore] public SimpleCurve PosX = new SimpleCurve();
 | 
				
			||||||
 | 
					        [XmlIgnore] public SimpleCurve PosZ = new SimpleCurve();
 | 
				
			||||||
 | 
					        [XmlIgnore] public SimpleCurve Rotation = new SimpleCurve();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ActorAddon() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ActorAddon(string addonName, float scale = 1f)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.addonName = addonName;
 | 
				
			||||||
 | 
					            this.scale = scale;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								Assets/Scripts/AnimationComponents/ActorAddon.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: f4d87003a570d5241affe4170ae91045
 | 
				
			||||||
 | 
					MonoImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  serializedVersion: 2
 | 
				
			||||||
 | 
					  defaultReferences: []
 | 
				
			||||||
 | 
					  executionOrder: 0
 | 
				
			||||||
 | 
					  icon: {instanceID: 0}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
| 
						 | 
					@ -9,6 +9,9 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class PawnAnimationClip : AnimationClip
 | 
					    public class PawnAnimationClip : AnimationClip
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        [XmlArray("addons"), XmlArrayItem("li")] public List<ActorAddon> _addons = new List<ActorAddon>();
 | 
				
			||||||
 | 
					        [XmlIgnore] public List<ActorAddon> addons = new List<ActorAddon>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [XmlAttribute("Class")] public string className = "Rimworld_Animations.PawnAnimationClip";
 | 
					        [XmlAttribute("Class")] public string className = "Rimworld_Animations.PawnAnimationClip";
 | 
				
			||||||
        [XmlArray("keyframes"), XmlArrayItem("li")] public List<PawnKeyframe> keyframes = new List<PawnKeyframe>();
 | 
					        [XmlArray("keyframes"), XmlArrayItem("li")] public List<PawnKeyframe> keyframes = new List<PawnKeyframe>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +38,13 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            HeadBob.Clear();
 | 
					            HeadBob.Clear();
 | 
				
			||||||
            GenitalAngle.Clear();
 | 
					            GenitalAngle.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (ActorAddon addon in addons)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                addon.PosX.Clear();
 | 
				
			||||||
 | 
					                addon.PosZ.Clear();
 | 
				
			||||||
 | 
					                addon.Rotation.Clear();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            int keyframePosition = 0;
 | 
					            int keyframePosition = 0;
 | 
				
			||||||
            int duration = 0;
 | 
					            int duration = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -61,6 +71,16 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                    HeadBob.Add((float)keyframe.atTick / (float)duration, keyframe.headBob, true);
 | 
					                    HeadBob.Add((float)keyframe.atTick / (float)duration, keyframe.headBob, true);
 | 
				
			||||||
                    GenitalAngle.Add((float)keyframe.atTick / (float)duration, keyframe.genitalAngle, true);
 | 
					                    GenitalAngle.Add((float)keyframe.atTick / (float)duration, keyframe.genitalAngle, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    foreach (ActorAddon addon in addons)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (keyframe.addonKeyframes.Any(x => x.addonName == addon.addonName) == false)
 | 
				
			||||||
 | 
					                        { keyframe.addonKeyframes.Add(new AddonKeyframe(addon.addonName)); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        addon.PosX.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).posX, true);
 | 
				
			||||||
 | 
					                        addon.PosZ.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).posZ, true);
 | 
				
			||||||
 | 
					                        addon.Rotation.Add((float)keyframe.atTick / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).rotation, true);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (i + 1 < keyframes.Count)
 | 
					                    if (i + 1 < keyframes.Count)
 | 
				
			||||||
                    { keyframes[i].tickDuration = keyframes[i + 1].atTick.Value - keyframes[i].atTick.Value; }
 | 
					                    { keyframes[i].tickDuration = keyframes[i + 1].atTick.Value - keyframes[i].atTick.Value; }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
| 
						 | 
					@ -76,6 +96,16 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                    HeadBob.Add((float)keyframePosition / (float)duration, keyframe.headBob, true);
 | 
					                    HeadBob.Add((float)keyframePosition / (float)duration, keyframe.headBob, true);
 | 
				
			||||||
                    GenitalAngle.Add((float)keyframePosition / (float)duration, keyframe.genitalAngle, true);
 | 
					                    GenitalAngle.Add((float)keyframePosition / (float)duration, keyframe.genitalAngle, true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    foreach (ActorAddon addon in addons)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        if (keyframe.addonKeyframes.Any(x => x.addonName == addon.addonName) == false)
 | 
				
			||||||
 | 
					                        { keyframe.addonKeyframes.Add(new AddonKeyframe(addon.addonName)); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        addon.PosX.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).posX, true);
 | 
				
			||||||
 | 
					                        addon.PosZ.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).posZ, true);
 | 
				
			||||||
 | 
					                        addon.Rotation.Add((float)keyframePosition / (float)duration, keyframe.GetAddonKeyframe(addon.addonName).rotation, true);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (keyframe.tickDuration != 1 && keyframe.quiver.HasValue)
 | 
					                    if (keyframe.tickDuration != 1 && keyframe.quiver.HasValue)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        quiver.Add(keyframePosition, true);
 | 
					                        quiver.Add(keyframePosition, true);
 | 
				
			||||||
| 
						 | 
					@ -88,7 +118,57 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public override void ValidateData() { }
 | 
					        public void AddActorAddon(string addonName, float scale = 1f)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (addons.Any(x => x.addonName == addonName) == false)
 | 
				
			||||||
 | 
					            { 
 | 
				
			||||||
 | 
					                addons.Add(new ActorAddon(addonName, scale));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (PawnKeyframe keyframe in keyframes)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                if (keyframe.addonKeyframes.Any(x => x.addonName == addonName) == false)
 | 
				
			||||||
 | 
					                { keyframe.addonKeyframes.Add(new AddonKeyframe(addonName)); }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void ShowOrHideActorAddon(string addonName, bool flag)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ActorAddon addon = GetActorAddon(addonName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (addon != null)
 | 
				
			||||||
 | 
					            { addon.render = flag; }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public bool IsActorAddonVisible(string addonName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            ActorAddon addon = GetActorAddon(addonName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (addon != null)
 | 
				
			||||||
 | 
					            { return addon.render; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public ActorAddon GetActorAddon(string addonName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return addons.FirstOrDefault(x => x.addonName == addonName);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void ValidateData() 
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            _addons.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (ActorAddon addon in addons)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                Debug.Log(addon.anchorName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (addon.render)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    _addons.Add(addon);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public int GetOwningActorID()
 | 
					        public int GetOwningActorID()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
| 
						 | 
					@ -132,5 +212,19 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            BuildSimpleCurves();
 | 
					            BuildSimpleCurves();
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnPostLoad()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            addons = _addons.Copy();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (PawnKeyframe keyframe in keyframes)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                keyframe.OnPostLoad();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            AddActorAddon("left hand", 0.667f);
 | 
				
			||||||
 | 
					            AddActorAddon("right hand", 0.667f);
 | 
				
			||||||
 | 
					            AddActorAddon("dildo");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -22,10 +22,10 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            foreach (PawnAnimationClip clip in animationClips)
 | 
					            foreach (PawnAnimationClip clip in animationClips)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                clip.BuildSimpleCurves();
 | 
					                clip.BuildSimpleCurves();
 | 
				
			||||||
               
 | 
					
 | 
				
			||||||
                // Select playTimeTicks as longest playtime of all the animations
 | 
					                // Select playTimeTicks as longest playtime of all the animations
 | 
				
			||||||
                if (clip.duration > playTimeTicks)
 | 
					                if (clip.duration > playTimeTicks)
 | 
				
			||||||
                {  playTimeTicks = clip.duration; }
 | 
					                { playTimeTicks = clip.duration; }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,15 +53,23 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            foreach (Actor actor in Workspace.animationDef.actors)
 | 
					            foreach (Actor actor in Workspace.animationDef.actors)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                PawnAnimationClip clip = new PawnAnimationClip();
 | 
					                PawnAnimationClip clip = new PawnAnimationClip();
 | 
				
			||||||
                
 | 
					
 | 
				
			||||||
                if (clip.MakeNew(actor.GetActorID()))
 | 
					                if (clip.MakeNew(actor.GetActorID()))
 | 
				
			||||||
                { animationClips.Add(clip); }
 | 
					                { animationClips.Add(clip); }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Initialize();
 | 
					            Initialize();
 | 
				
			||||||
            playTimeTicksQuick = playTimeTicks;
 | 
					            playTimeTicksQuick = playTimeTicks;
 | 
				
			||||||
            
 | 
					
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnPostLoad()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            foreach (PawnAnimationClip clip in animationClips)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                clip.OnPostLoad();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,21 @@
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Xml;
 | 
				
			||||||
 | 
					using System.Xml.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RimWorldAnimationStudio
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public class AddonKeyframe
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string addonName;
 | 
				
			||||||
 | 
					        public float posX;
 | 
				
			||||||
 | 
					        public float posZ;
 | 
				
			||||||
 | 
					        public float rotation;
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        public AddonKeyframe() { }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public AddonKeyframe(string addonName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            this.addonName = addonName;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 60509e7cd8e74e6419c5c93304440a17
 | 
				
			||||||
 | 
					MonoImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  serializedVersion: 2
 | 
				
			||||||
 | 
					  defaultReferences: []
 | 
				
			||||||
 | 
					  executionOrder: 0
 | 
				
			||||||
 | 
					  icon: {instanceID: 0}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Xml;
 | 
					using System.Xml;
 | 
				
			||||||
using System.Xml.Serialization;
 | 
					using System.Xml.Serialization;
 | 
				
			||||||
| 
						 | 
					@ -19,6 +20,10 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public float genitalAngle;
 | 
					        public float genitalAngle;
 | 
				
			||||||
        public bool? quiver;
 | 
					        public bool? quiver;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        [XmlArray("addonKeyframes"), XmlArrayItem("li")] public List<AddonKeyframe> _addonKeyframes = new List<AddonKeyframe>();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        [XmlIgnore] public List<AddonKeyframe> addonKeyframes = new List<AddonKeyframe>();
 | 
				
			||||||
        [XmlIgnore] public int keyframeID;
 | 
					        [XmlIgnore] public int keyframeID;
 | 
				
			||||||
        [XmlIgnore] public int actorID = -1;
 | 
					        [XmlIgnore] public int actorID = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,12 +33,32 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
        public override void ValidateData()
 | 
					        public override void ValidateData()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            soundEffect = Tags.soundDefs.Concat(CustomTags.soundDefs).Contains(soundEffect) ? soundEffect : null;
 | 
					            soundEffect = Tags.soundDefs.Concat(CustomTags.soundDefs).Contains(soundEffect) ? soundEffect : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            _addonKeyframes.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (AddonKeyframe addonKeyframe in addonKeyframes)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ActorAddon addon = Workspace.Instance.GetAnimationClipThatOwnsKeyframe(keyframeID, out int clipID).GetActorAddon(addonKeyframe.addonName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (addon.render)
 | 
				
			||||||
 | 
					                { _addonKeyframes.Add(addonKeyframe.Copy()); }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnPostLoad()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            addonKeyframes.Clear();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (AddonKeyframe addonKeyframe in _addonKeyframes)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                addonKeyframes.Add(addonKeyframe.Copy());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void GenerateKeyframeID(int actorID)
 | 
					        public void GenerateKeyframeID(int actorID)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            this.actorID = actorID;
 | 
					            this.actorID = actorID;
 | 
				
			||||||
            int _keyframeID = Random.Range(100000, 1000000);
 | 
					            int _keyframeID = UnityEngine.Random.Range(100000, 1000000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (Workspace.animationDef.animationStages.Any(x => x.animationClips.Any(y => y.keyframes.Any(z => z.keyframeID == _keyframeID))))
 | 
					            if (Workspace.animationDef.animationStages.Any(x => x.animationClips.Any(y => y.keyframes.Any(z => z.keyframeID == _keyframeID))))
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -51,5 +76,10 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            return Selectable.allSelectablesArray.FirstOrDefault(x => x.GetComponent<KeyframeSlider>()?.keyframeID == keyframeID)?.GetComponent< KeyframeSlider>();
 | 
					            return Selectable.allSelectablesArray.FirstOrDefault(x => x.GetComponent<KeyframeSlider>()?.keyframeID == keyframeID)?.GetComponent< KeyframeSlider>();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public AddonKeyframe GetAddonKeyframe(string addonName)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return addonKeyframes.FirstOrDefault(x => x.addonName == addonName);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										17
									
								
								Assets/Scripts/Extensions/Vector3Extension.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,17 @@
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					using System.Text;
 | 
				
			||||||
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using UnityEngine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace RimWorldAnimationStudio
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static class Vector3Extension
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public static Vector3 FlipAxes(this Vector3 v)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            return new Vector3(v.x, v.z, v.y);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								Assets/Scripts/Extensions/Vector3Extension.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 1b49e51e0077dee41a199e4e81f26e32
 | 
				
			||||||
 | 
					MonoImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  serializedVersion: 2
 | 
				
			||||||
 | 
					  defaultReferences: []
 | 
				
			||||||
 | 
					  executionOrder: 0
 | 
				
			||||||
 | 
					  icon: {instanceID: 0}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
							
								
								
									
										51
									
								
								Assets/Scripts/GUI/ActorAddonCard.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					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 ActorAddonCard : MonoBehaviour
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public string addonName;
 | 
				
			||||||
 | 
					        public InputField xOffsetField;
 | 
				
			||||||
 | 
					        public InputField zOffsetField;
 | 
				
			||||||
 | 
					        public InputField rotationField;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void Start()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            xOffsetField.onEndEdit.AddListener(delegate { OnFieldValueChanged(); });
 | 
				
			||||||
 | 
					            zOffsetField.onEndEdit.AddListener(delegate { OnFieldValueChanged(); });
 | 
				
			||||||
 | 
					            rotationField.onEndEdit.AddListener(delegate { OnFieldValueChanged(); });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            AnimationController.Instance.animationClipTimeField.onValueChanged.AddListener(delegate { OnKeyframeValueChanged(); });
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnFieldValueChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Workspace.animationDef == null) return;
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.Instance.GetCurrentPawnAnimationClip();
 | 
				
			||||||
 | 
					            PawnKeyframe keyframe = Workspace.Instance.GetCurrentPawnKeyframe(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            keyframe.GetAddonKeyframe(addonName).posX = float.Parse(xOffsetField.text);
 | 
				
			||||||
 | 
					            keyframe.GetAddonKeyframe(addonName).posZ = float.Parse(zOffsetField.text);
 | 
				
			||||||
 | 
					            keyframe.GetAddonKeyframe(addonName).rotation = float.Parse(rotationField.text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            clip.BuildSimpleCurves();
 | 
				
			||||||
 | 
					            Workspace.Instance.RecordEvent("Actor addon position / orientation");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnKeyframeValueChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Workspace.animationDef == null) return;
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.Instance.GetCurrentPawnAnimationClip();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            xOffsetField.SetTextWithoutNotify(clip.GetActorAddon(addonName).PosX.Evaluate((float)AnimationController.Instance.stageTick / Workspace.StageWindowSize).ToString());
 | 
				
			||||||
 | 
					            zOffsetField.SetTextWithoutNotify(clip.GetActorAddon(addonName).PosZ.Evaluate((float)AnimationController.Instance.stageTick / Workspace.StageWindowSize).ToString());
 | 
				
			||||||
 | 
					            rotationField.SetTextWithoutNotify(clip.GetActorAddon(addonName).Rotation.Evaluate((float)AnimationController.Instance.stageTick / Workspace.StageWindowSize).ToString());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										11
									
								
								Assets/Scripts/GUI/ActorAddonCard.cs.meta
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 8a63bb35c73985c46b65383f08d4afd9
 | 
				
			||||||
 | 
					MonoImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  serializedVersion: 2
 | 
				
			||||||
 | 
					  defaultReferences: []
 | 
				
			||||||
 | 
					  executionOrder: 0
 | 
				
			||||||
 | 
					  icon: {instanceID: 0}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,12 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            else
 | 
					            else
 | 
				
			||||||
            { bodyRenderer.color = Constants.ColorWhite; }
 | 
					            { bodyRenderer.color = Constants.ColorWhite; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (ActorAddon addon in Workspace.animationDef.animationStages[Workspace.stageID].animationClips[actorID].addons)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                ActorBodyPart bodyPart = GetComponentsInChildren<ActorBodyPart>(true).FirstOrDefault(x => x.addonName == addon.addonName);
 | 
				
			||||||
 | 
					                bodyPart?.gameObject?.SetActive(addon.render);         
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //headRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].GetAlienRaceDef().isHumanoid);
 | 
					            //headRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].GetAlienRaceDef().isHumanoid);
 | 
				
			||||||
            //appendageRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].requiredGenitals.Any(x => x == "Penis") || Workspace.animationDef.actors[actorID].isFucking);
 | 
					            //appendageRenderer.gameObject.SetActive(Workspace.animationDef.actors[actorID].requiredGenitals.Any(x => x == "Penis") || Workspace.animationDef.actors[actorID].isFucking);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
        public SpriteRenderer bodyPartRenderer;
 | 
					        public SpriteRenderer bodyPartRenderer;
 | 
				
			||||||
        public ActorBody parent;
 | 
					        public ActorBody parent;
 | 
				
			||||||
        public bool isHead = false;
 | 
					        public bool isHead = false;
 | 
				
			||||||
 | 
					        public string addonName;
 | 
				
			||||||
        public bool isSelected = false;
 | 
					        public bool isSelected = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private Vector3 delta = new Vector3();
 | 
					        private Vector3 delta = new Vector3();
 | 
				
			||||||
| 
						 | 
					@ -46,7 +47,56 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
            if (delta == Vector3.zero)
 | 
					            if (delta == Vector3.zero)
 | 
				
			||||||
            { delta = mousePosition - transform.position; }
 | 
					            { delta = mousePosition - transform.position; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (isHead)
 | 
					            if (addonName != null && addonName != "")
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                AddonKeyframe addonKeyframe = keyframe.GetAddonKeyframe(addonName);
 | 
				
			||||||
 | 
					                ActorAddon addon = Workspace.Instance.GetCurrentPawnAnimationClip().GetActorAddon(addonName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (Workspace.actorManipulationMode == ActorManipulationMode.Pan)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    Vector3 anchor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ActorBody anchoringActorBody = AnimationController.Instance.actorBodies.GetComponentsInChildren<ActorBody>()?.FirstOrDefault(x => x.actorID == addon.anchoringActor); 
 | 
				
			||||||
 | 
					                    Vector3 bodyPos = new Vector3(anchoringActorBody.transform.position.x, anchoringActorBody.transform.position.y, 0);
 | 
				
			||||||
 | 
					                    AlienRaceDef alienRaceDef = Workspace.animationDef.actors[addon.anchoringActor].GetAlienRaceDef();
 | 
				
			||||||
 | 
					                    Actor anchoringActor = Workspace.animationDef.actors[addon.anchoringActor];
 | 
				
			||||||
 | 
					                    int bodyFacing = (int)Workspace.animationDef.animationStages[Workspace.stageID].animationClips[addon.anchoringActor].BodyFacing.Evaluate((float)AnimationController.Instance.stageTick / Workspace.StageWindowSize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    switch (addon.anchorName)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        case "torso": anchor = bodyPos; break;
 | 
				
			||||||
 | 
					                        case "head": anchor = new Vector3(anchoringActorBody.transform.Find("ActorHead").position.x, anchoringActorBody.transform.Find("ActorHead").position.y, 0); break;
 | 
				
			||||||
 | 
					                        case "groin": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.GroinOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        case "left breast": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.BreastLeftOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        case "right breast": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.BreastRightOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        default: anchor = new Vector3(); break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    transform.position = new Vector3(mousePosition.x, mousePosition.y, 0f);
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					                    addonKeyframe.posX = transform.position.x - anchor.x;
 | 
				
			||||||
 | 
					                    addonKeyframe.posZ = transform.position.y - anchor.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ActorKeyframeCard.Instance.transform.GetComponentsInChildren<ActorAddonCard>()?.FirstOrDefault(x => x.addonName == addonName)?.OnKeyframeValueChanged();
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                else if (Workspace.actorManipulationMode == ActorManipulationMode.Rotate)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    float angle = -Vector2.SignedAngle(Vector2.down, (Vector2)mousePosition - (Vector2)transform.position);
 | 
				
			||||||
 | 
					                    addonKeyframe.rotation = 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 (isHead)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if (Workspace.actorManipulationMode == ActorManipulationMode.Pan)
 | 
					                if (Workspace.actorManipulationMode == ActorManipulationMode.Pan)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -20,6 +20,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void Pop()
 | 
					        public void Pop()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            Initialize();
 | 
				
			||||||
            gameObject.SetActive(gameObject.activeSelf == false);
 | 
					            gameObject.SetActive(gameObject.activeSelf == false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										215
									
								
								Assets/Scripts/GUI/DialogBoxes/SelectActorAddonsDialog.cs
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
						 | 
					@ -0,0 +1,215 @@
 | 
				
			||||||
 | 
					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 SelectActorAddonsDialog : DialogBox
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        public Toggle handLeftToggle;
 | 
				
			||||||
 | 
					        public Toggle handRightToggle;
 | 
				
			||||||
 | 
					        public Toggle sexToyToggle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Dropdown handLeftAnchor;
 | 
				
			||||||
 | 
					        public Dropdown handRightAnchor;
 | 
				
			||||||
 | 
					        public Dropdown sexToyAnchor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public InputField handLeftAnchoringPawn;
 | 
				
			||||||
 | 
					        public InputField handRightAnchoringPawn;
 | 
				
			||||||
 | 
					        public InputField sexToyAnchoringPawn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public Dropdown handLeftLayer;
 | 
				
			||||||
 | 
					        public Dropdown handRightLayer;
 | 
				
			||||||
 | 
					        public Dropdown sexToyLayer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public GameObject handLeftControls;
 | 
				
			||||||
 | 
					        public GameObject handRightControls;
 | 
				
			||||||
 | 
					        public GameObject sexToyControls;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public override void Initialize(bool addedNewTag = false)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if (Workspace.animationDef == null) return;
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("left hand") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (clip.GetActorAddon("left hand").anchorName)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case "torso": handLeftAnchor.value = 1; break;
 | 
				
			||||||
 | 
					                    case "head": handLeftAnchor.value = 2; break;
 | 
				
			||||||
 | 
					                    case "groin": handLeftAnchor.value = 3; break;
 | 
				
			||||||
 | 
					                    case "left breast": handLeftAnchor.value = 4; break;
 | 
				
			||||||
 | 
					                    case "right breast": handLeftAnchor.value = 5; break;
 | 
				
			||||||
 | 
					                    default: handLeftAnchor.value = 0; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("right hand") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (clip.GetActorAddon("right hand").anchorName)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case "torso": handRightAnchor.value = 1; break;
 | 
				
			||||||
 | 
					                    case "head": handRightAnchor.value = 2; break;
 | 
				
			||||||
 | 
					                    case "groin": handRightAnchor.value = 3; break;
 | 
				
			||||||
 | 
					                    case "left breast": handRightAnchor.value = 4; break;
 | 
				
			||||||
 | 
					                    case "right breast": handRightAnchor.value = 5; break;
 | 
				
			||||||
 | 
					                    default: handRightAnchor.value = 0; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("dildo") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (clip.GetActorAddon("dildo").anchorName)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case "torso": sexToyAnchor.value = 1; break;
 | 
				
			||||||
 | 
					                    case "head": sexToyAnchor.value = 2; break;
 | 
				
			||||||
 | 
					                    case "groin": sexToyAnchor.value = 3; break;
 | 
				
			||||||
 | 
					                    case "left breast": sexToyAnchor.value = 4; break;
 | 
				
			||||||
 | 
					                    case "right breast": sexToyAnchor.value = 5; break;
 | 
				
			||||||
 | 
					                    default: sexToyAnchor.value = 0; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("left hand") != null)
 | 
				
			||||||
 | 
					            { 
 | 
				
			||||||
 | 
					                handLeftLayer.value = handLeftLayer.options.IndexOf(handLeftLayer.options.First(x => x.text == clip.GetActorAddon("left hand").layer));
 | 
				
			||||||
 | 
					                handLeftAnchoringPawn.text = clip.GetActorAddon("left hand").anchoringActor.ToString();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("right hand") != null)
 | 
				
			||||||
 | 
					            { 
 | 
				
			||||||
 | 
					                handRightLayer.value = handRightLayer.options.IndexOf(handRightLayer.options.First(x => x.text == clip.GetActorAddon("right hand").layer)); 
 | 
				
			||||||
 | 
					                handRightAnchoringPawn.text = clip.GetActorAddon("right hand").anchoringActor.ToString(); 
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("dildo") != null)
 | 
				
			||||||
 | 
					            { 
 | 
				
			||||||
 | 
					                sexToyLayer.value = sexToyLayer.options.IndexOf(sexToyLayer.options.First(x => x.text == clip.GetActorAddon("dildo").layer));
 | 
				
			||||||
 | 
					                sexToyAnchoringPawn.text = clip.GetActorAddon("dildo").anchoringActor.ToString();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            handLeftToggle.isOn = clip.IsActorAddonVisible("left hand");
 | 
				
			||||||
 | 
					            handRightToggle.isOn = clip.IsActorAddonVisible("right hand");
 | 
				
			||||||
 | 
					            sexToyToggle.isOn = clip.IsActorAddonVisible("dildo");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //handLeftControls.SetActive(handLeftToggle.isOn);
 | 
				
			||||||
 | 
					            //handRightControls.SetActive(handRightToggle.isOn);
 | 
				
			||||||
 | 
					            //sexToyControls.SetActive(sexToyToggle.isOn);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnToggleChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            clip.ShowOrHideActorAddon("left hand", handLeftToggle.isOn);
 | 
				
			||||||
 | 
					            clip.ShowOrHideActorAddon("right hand", handRightToggle.isOn);
 | 
				
			||||||
 | 
					            clip.ShowOrHideActorAddon("dildo", sexToyToggle.isOn);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Initialize();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnValueChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("left hand") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (handLeftAnchor.value)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case 1: clip.GetActorAddon("left hand").anchorName = "torso"; break;
 | 
				
			||||||
 | 
					                    case 2: clip.GetActorAddon("left hand").anchorName = "head"; break;
 | 
				
			||||||
 | 
					                    case 3: clip.GetActorAddon("left hand").anchorName = "groin"; break;
 | 
				
			||||||
 | 
					                    case 4: clip.GetActorAddon("left hand").anchorName = "left breast"; break;
 | 
				
			||||||
 | 
					                    case 5: clip.GetActorAddon("left hand").anchorName = "right breast"; break;
 | 
				
			||||||
 | 
					                    default: clip.GetActorAddon("left hand").anchorName = null; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("right hand") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (handRightAnchor.value)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case 1: clip.GetActorAddon("right hand").anchorName = "torso"; break;
 | 
				
			||||||
 | 
					                    case 2: clip.GetActorAddon("right hand").anchorName = "head"; break;
 | 
				
			||||||
 | 
					                    case 3: clip.GetActorAddon("right hand").anchorName = "groin"; break;
 | 
				
			||||||
 | 
					                    case 4: clip.GetActorAddon("right hand").anchorName = "left breast"; break;
 | 
				
			||||||
 | 
					                    case 5: clip.GetActorAddon("right hand").anchorName = "right breast"; break;
 | 
				
			||||||
 | 
					                    default: clip.GetActorAddon("right hand").anchorName = null; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("dildo") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                switch (sexToyAnchor.value)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    case 1: clip.GetActorAddon("dildo").anchorName = "torso"; break;
 | 
				
			||||||
 | 
					                    case 2: clip.GetActorAddon("dildo").anchorName = "head"; break;
 | 
				
			||||||
 | 
					                    case 3: clip.GetActorAddon("dildo").anchorName = "groin"; break;
 | 
				
			||||||
 | 
					                    case 4: clip.GetActorAddon("dildo").anchorName = "left breast"; break;
 | 
				
			||||||
 | 
					                    case 5: clip.GetActorAddon("dildo").anchorName = "right breast"; break;
 | 
				
			||||||
 | 
					                    default: clip.GetActorAddon("dildo").anchorName = null; break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Initialize();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnLayerChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("left hand") != null)
 | 
				
			||||||
 | 
					            { clip.GetActorAddon("left hand").layer = handLeftLayer.options[handLeftLayer.value].text; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("right hand") != null)
 | 
				
			||||||
 | 
					            { clip.GetActorAddon("right hand").layer = handRightLayer.options[handRightLayer.value].text; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("dildo") != null)
 | 
				
			||||||
 | 
					            { clip.GetActorAddon("dildo").layer = sexToyLayer.options[sexToyLayer.value].text; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            //Initialize();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public void OnAnchoringPawnChanged()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            PawnAnimationClip clip = Workspace.animationDef.animationStages[Workspace.stageID].animationClips[Workspace.actorID];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("left hand") != null)
 | 
				
			||||||
 | 
					            { 
 | 
				
			||||||
 | 
					                int i = int.Parse(handLeftAnchoringPawn.text);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                if (i < 0) { i = clip.GetOwningActorID(); }
 | 
				
			||||||
 | 
					                i = Mathf.Clamp(i, 0, Workspace.animationDef.actors.Count - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                clip.GetActorAddon("left hand").anchoringActor = i;
 | 
				
			||||||
 | 
					                handLeftAnchoringPawn.SetTextWithoutNotify(i.ToString());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("right hand") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                int i = int.Parse(handRightAnchoringPawn.text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (i < 0) { i = clip.GetOwningActorID(); }
 | 
				
			||||||
 | 
					                i = Mathf.Clamp(i, 0, Workspace.animationDef.actors.Count - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                clip.GetActorAddon("right hand").anchoringActor = i;
 | 
				
			||||||
 | 
					                handRightAnchoringPawn.SetTextWithoutNotify(i.ToString());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (clip?.GetActorAddon("dildo") != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                int i = int.Parse(sexToyAnchoringPawn.text);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (i < 0) { i = clip.GetOwningActorID(); }
 | 
				
			||||||
 | 
					                i = Mathf.Clamp(i, 0, Workspace.animationDef.actors.Count - 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                clip.GetActorAddon("dildo").anchoringActor = i;
 | 
				
			||||||
 | 
					                sexToyAnchoringPawn.SetTextWithoutNotify(i.ToString());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					fileFormatVersion: 2
 | 
				
			||||||
 | 
					guid: 869b2cd91a545c142b38856695c4257a
 | 
				
			||||||
 | 
					MonoImporter:
 | 
				
			||||||
 | 
					  externalObjects: {}
 | 
				
			||||||
 | 
					  serializedVersion: 2
 | 
				
			||||||
 | 
					  defaultReferences: []
 | 
				
			||||||
 | 
					  executionOrder: 0
 | 
				
			||||||
 | 
					  icon: {instanceID: 0}
 | 
				
			||||||
 | 
					  userData: 
 | 
				
			||||||
 | 
					  assetBundleName: 
 | 
				
			||||||
 | 
					  assetBundleVariant: 
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                GameObject obj = Instantiate(linearScaleTickPrefab, transform);
 | 
					                GameObject obj = Instantiate(linearScaleTickPrefab, transform);
 | 
				
			||||||
                obj.GetComponentInChildren<Text>().text = division.ToString();
 | 
					                obj.GetComponentInChildren<Text>().text = division.ToString();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                float xOffset = ((float)(division - 1) / (Workspace.StageWindowSize - 1)) * transform.parent.GetComponent<RectTransform>().rect.width;
 | 
					                float xOffset = ((float)(division - Constants.minTick) / (Workspace.StageWindowSize - Constants.minTick)) * transform.parent.GetComponent<RectTransform>().rect.width;
 | 
				
			||||||
                obj.GetComponent<RectTransform>().localPosition = new Vector3(xOffset, 0, 0);
 | 
					                obj.GetComponent<RectTransform>().localPosition = new Vector3(xOffset, 0, 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }    
 | 
					        }    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -30,6 +30,9 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
        public Button playToggleButton;
 | 
					        public Button playToggleButton;
 | 
				
			||||||
        public Text stageLengthText;
 | 
					        public Text stageLengthText;
 | 
				
			||||||
        public Text animationLengthText;
 | 
					        public Text animationLengthText;
 | 
				
			||||||
 | 
					        public GameObject handLeftControls;
 | 
				
			||||||
 | 
					        public GameObject handRightControls;
 | 
				
			||||||
 | 
					        public GameObject sexToyControls;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        [Header("Prefabs")]
 | 
					        [Header("Prefabs")]
 | 
				
			||||||
        public ActorBody actorBodyPrefab;
 | 
					        public ActorBody actorBodyPrefab;
 | 
				
			||||||
| 
						 | 
					@ -197,7 +200,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                Vector3 bodyPos = new Vector3(deltaPos.x, deltaPos.z, 0);
 | 
					                Vector3 bodyPos = new Vector3(deltaPos.x, deltaPos.z, 0);
 | 
				
			||||||
                Vector3 headPos = new Vector3(headOffset.x, headOffset.z, 0);
 | 
					                Vector3 headPos = new Vector3(headOffset.x, headOffset.z, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Vector3 appendagePos = PawnUtility.AppendageOffsetAt(bodyType, bodyFacing);
 | 
					                Vector3 appendagePos = PawnUtility.GroinOffsetAt(bodyType, bodyFacing);
 | 
				
			||||||
                float appendageRotation = clip.GenitalAngle.Evaluate(clipPercent);
 | 
					                float appendageRotation = clip.GenitalAngle.Evaluate(clipPercent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                actorBody.transform.position = bodyPos + actor.GetFinalTransformOffset();
 | 
					                actorBody.transform.position = bodyPos + actor.GetFinalTransformOffset();
 | 
				
			||||||
| 
						 | 
					@ -236,6 +239,41 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                if (ActorKeyframeCard.Instance.headBobField.isFocused == false) { ActorKeyframeCard.Instance.headBobField.text = headBob.ToString("0.000"); }
 | 
					                if (ActorKeyframeCard.Instance.headBobField.isFocused == false) { ActorKeyframeCard.Instance.headBobField.text = headBob.ToString("0.000"); }
 | 
				
			||||||
                if (ActorKeyframeCard.Instance.headRotationField.isFocused == false) { ActorKeyframeCard.Instance.headRotationField.text = headAngle.ToString("0.000"); }
 | 
					                if (ActorKeyframeCard.Instance.headRotationField.isFocused == false) { ActorKeyframeCard.Instance.headRotationField.text = headAngle.ToString("0.000"); }
 | 
				
			||||||
                if (ActorKeyframeCard.Instance.appendageRotationField.isFocused == false) { ActorKeyframeCard.Instance.appendageRotationField.text = appendageRotation.ToString("0.000"); }
 | 
					                if (ActorKeyframeCard.Instance.appendageRotationField.isFocused == false) { ActorKeyframeCard.Instance.appendageRotationField.text = appendageRotation.ToString("0.000"); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (actorID == Workspace.actorID)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    handLeftControls.SetActive(clip.GetActorAddon("left hand").render);
 | 
				
			||||||
 | 
					                    handRightControls.SetActive(clip.GetActorAddon("right hand").render);
 | 
				
			||||||
 | 
					                    sexToyControls.SetActive(clip.GetActorAddon("dildo").render);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                foreach (ActorAddon addon in clip.addons)
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    ActorBodyPart bodyPart = actorBody.GetComponentsInChildren<ActorBodyPart>()?.FirstOrDefault(x => x.addonName == addon.addonName);
 | 
				
			||||||
 | 
					                    if (bodyPart == null) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    Vector3 anchor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    ActorBody anchoringActorBody = actorBodies.GetComponentsInChildren<ActorBody>()?.FirstOrDefault(x => x.actorID == addon.anchoringActor);
 | 
				
			||||||
 | 
					                    bodyPos = new Vector3(anchoringActorBody.transform.position.x, anchoringActorBody.transform.position.y, 0);
 | 
				
			||||||
 | 
					                    alienRaceDef = Workspace.animationDef.actors[addon.anchoringActor].GetAlienRaceDef();
 | 
				
			||||||
 | 
					                    Actor anchoringActor = Workspace.animationDef.actors[addon.anchoringActor];
 | 
				
			||||||
 | 
					                    bodyFacing = (int)Workspace.animationDef.animationStages[Workspace.stageID].animationClips[addon.anchoringActor].BodyFacing.Evaluate(clipPercent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    switch (addon.anchorName)
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        case "torso": anchor = bodyPos; break;
 | 
				
			||||||
 | 
					                        case "head": anchor = new Vector3(anchoringActorBody.transform.Find("ActorHead").position.x, anchoringActorBody.transform.Find("ActorHead").position.y, 0); break;
 | 
				
			||||||
 | 
					                        case "groin": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.GroinOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        case "left breast": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.BreastLeftOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        case "right breast": anchor = bodyPos + Quaternion.AngleAxis(anchoringActorBody.transform.rotation.eulerAngles.z, Vector3.forward) * PawnUtility.BreastRightOffsetAt(anchoringActor.bodyType, bodyFacing).FlipAxes(); break;
 | 
				
			||||||
 | 
					                        default: anchor = new Vector3(); break;
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    bodyPart.transform.position = anchor + new Vector3(addon.PosX.Evaluate(clipPercent), addon.PosZ.Evaluate(clipPercent), 0);
 | 
				
			||||||
 | 
					                    bodyPart.transform.eulerAngles = new Vector3(0, 0, -addon.Rotation.Evaluate(clipPercent));
 | 
				
			||||||
 | 
					                    bodyPart.GetComponent<SpriteRenderer>().sortingLayerName = addon.layer;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,6 +91,12 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
                else if (animationDef.animationStages.Count == 0)
 | 
					                else if (animationDef.animationStages.Count == 0)
 | 
				
			||||||
                { animationDef.animationStages[0].playTimeTicksQuick = animationDef.animationStages[0].playTimeTicks; }
 | 
					                { animationDef.animationStages[0].playTimeTicksQuick = animationDef.animationStages[0].playTimeTicks; }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            foreach (AnimationStage stage in animationDef.animationStages)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                stage.OnPostLoad();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void TryToSaveAnimation()
 | 
					        public void TryToSaveAnimation()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,7 +43,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
        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> 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>() { "Bestiality_Anal", "Bestiality_Double_Penetration_M", "Bestiality_Oral", "Bestiality_Vaginal", "Breeding_Lick", "Breeding_Fingering", "Breeding_OralS", "Bestiality_Reverse_Anal", "Bestiality_Reverse_Double_Penetration_M", "Bestiality_Reverse_Handjob", "Bestiality_Reverse_Oral", "Bestiality_Reverse_Oral_Service", "Bestiality_Reverse_Vaginal", "AnimalSexChat", "Masturbation_AutoBreastjob", "Masturbation_AutoFellatio", "Masturbation_Breastjob", "Masturbation_HandjobA", "Masturbation_HandjobP", "Masturbation_HandjobV", "rjw_interaction_template", "Necro_Anal", "Necro_DoublePenetration", "Necro_DoublePenetrationM", "Necro_Vaginal", "Necro_Reverse_Anal", "Necro_Reverse_DoublePenetration", "Necro_Reverse_DoublePenetrationM", "Necro_Reverse_Vaginal", "Rape_MechImplant", "Rape_Anal", "Rape_Beakjob", "Rape_Breastjob", "Rape_Cunnilingus", "Rape_DoublePenetration", "Rape_DoublePenetrationM", "Rape_Fellatio", "Rape_Fingering", "Rape_Fisting", "Rape_Footjob", "Rape_Handjob", "Rape_Oral", "Rape_Rimming", "Rape_Scissoring", "Rape_Vaginal", "Rape_Reverse_Anal", "Rape_Reverse_Beakjob", "Rape_Reverse_Breastjob", "Rape_Reverse_Cunnilingus", "Rape_Reverse_DoublePenetration", "Rape_Reverse_DoublePenetrationM", "Rape_Reverse_Fellatio", "Rape_Reverse_Fingering", "Rape_Reverse_Fisting", "Rape_Reverse_Footjob", "Rape_Reverse_Handjob", "Rape_Reverse_Rimming", "Rape_Reverse_Scissoring", "Rape_Reverse_Vaginal", "Sex_Reverse_Anal", "Sex_Reverse_Beakjob", "Sex_Reverse_Breastjob", "Sex_Reverse_Cunnilingus", "Sex_Reverse_DoublePenetration", "Sex_Reverse_DoublePenetrationM", "Sex_Reverse_Fellatio", "Sex_Reverse_Fingering", "Sex_Reverse_Fisting", "Sex_Reverse_Footjob", "Sex_Reverse_Handjob", "Sex_Reverse_Rimming", "Sex_Reverse_Vaginal", "Sex_Anal", "Sex_Beakjob", "Sex_Breastjob", "Sex_Cunnilingus", "Sex_DoublePenetration", "Sex_DoublePenetrationM", "Sex_Fellatio", "Sex_Fingering", "Sex_Fisting", "Sex_Footjob", "Sex_Handjob", "Sex_MutualMasturbation", "Sex_Rimming", "Sex_Scissoring", "Sex_Sixtynine", "Sex_Vaginal" };
 | 
					        public static List<string> interactionDefTypes = new List<string>() { "Bestiality_Anal", "Bestiality_Double_Penetration_M", "Bestiality_Oral", "Bestiality_Vaginal", "Breeding_Lick", "Breeding_Fingering", "Breeding_OralS", "Bestiality_Reverse_Anal", "Bestiality_Reverse_Double_Penetration_M", "Bestiality_Reverse_Handjob", "Bestiality_Reverse_Oral", "Bestiality_Reverse_Oral_Service", "Bestiality_Reverse_Vaginal", "AnimalSexChat", "Masturbation_AutoBreastjob", "Masturbation_AutoFellatio", "Masturbation_Breastjob", "Masturbation_HandjobA", "Masturbation_HandjobP", "Masturbation_HandjobV", "rjw_interaction_template", "Necro_Anal", "Necro_DoublePenetration", "Necro_DoublePenetrationM", "Necro_Vaginal", "Necro_Reverse_Anal", "Necro_Reverse_DoublePenetration", "Necro_Reverse_DoublePenetrationM", "Necro_Reverse_Vaginal", "Rape_MechImplant", "Rape_Anal", "Rape_Beakjob", "Rape_Breastjob", "Rape_Cunnilingus", "Rape_DoublePenetration", "Rape_DoublePenetrationM", "Rape_Fellatio", "Rape_Fingering", "Rape_Fisting", "Rape_Footjob", "Rape_Handjob", "Rape_Oral", "Rape_Rimming", "Rape_Scissoring", "Rape_Vaginal", "Rape_Reverse_Anal", "Rape_Reverse_Beakjob", "Rape_Reverse_Breastjob", "Rape_Reverse_Cunnilingus", "Rape_Reverse_DoublePenetration", "Rape_Reverse_DoublePenetrationM", "Rape_Reverse_Fellatio", "Rape_Reverse_Fingering", "Rape_Reverse_Fisting", "Rape_Reverse_Footjob", "Rape_Reverse_Handjob", "Rape_Reverse_Rimming", "Rape_Reverse_Scissoring", "Rape_Reverse_Vaginal", "Sex_Reverse_Anal", "Sex_Reverse_Beakjob", "Sex_Reverse_Breastjob", "Sex_Reverse_Cunnilingus", "Sex_Reverse_DoublePenetration", "Sex_Reverse_DoublePenetrationM", "Sex_Reverse_Fellatio", "Sex_Reverse_Fingering", "Sex_Reverse_Fisting", "Sex_Reverse_Footjob", "Sex_Reverse_Handjob", "Sex_Reverse_Rimming", "Sex_Reverse_Vaginal", "Sex_Anal", "Sex_Beakjob", "Sex_Breastjob", "Sex_Cunnilingus", "Sex_DoublePenetration", "Sex_DoublePenetrationM", "Sex_Fellatio", "Sex_Fingering", "Sex_Fisting", "Sex_Footjob", "Sex_Handjob", "Sex_MutualMasturbation", "Sex_Rimming", "Sex_Scissoring", "Sex_Sixtynine", "Sex_Vaginal" };
 | 
				
			||||||
        public static List<string> soundDefs = new List<string>() { "None", "Sex", "Fuck", "Slimy", "Suck", "Cum" };
 | 
					        public static List<string> soundDefs = new List<string>() { "None", "Sex", "Fuck", "Slimy", "Suck", "Cum" };
 | 
				
			||||||
        public static List<string> actorLayers = new List<string>() { "Building", "BuildingOnTop", "MoteBelowThings", "Item", "ItemImportant", "LayingPawn", "PawnRope", "Projectile", "Pawn", "PawnUnused", "PawnState" };
 | 
					        public static List<string> actorLayers = new List<string>() { "LayingPawn", "PawnRope", "Projectile", "Pawn", "PawnUnused" };
 | 
				
			||||||
        public static List<string> bodyTypes = new List<string>() { "Male", "Female", "Fat", "Hulk", "Thin" };
 | 
					        public static List<string> bodyTypes = new List<string>() { "Male", "Female", "Fat", "Hulk", "Thin" };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,7 +32,7 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		public static Vector3 AppendageOffsetAt(string bodyType, int rotation)
 | 
							public static Vector3 GroinOffsetAt(string bodyType, int rotation)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if (rotation == 0 || rotation == 2)
 | 
								if (rotation == 0 || rotation == 2)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
| 
						 | 
					@ -73,5 +73,89 @@ namespace RimWorldAnimationStudio
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static Vector3 BreastLeftOffsetAt(string bodyType, int rotation)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if (rotation == 0 || rotation == 2)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(0.035f, 0f, -0.050f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(0.002f, 0f, -0.044f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(0.000f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(0.118f, 0f, -0.194f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(0.141f, 0f, -0.084f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								else if (rotation == 1)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(0.098f, 0f, -0.053f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(0.008f, 0f, -0.008f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(-0.011f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(0.180f, 0f, -0.151f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(0.200f, 0f, -0.034f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(-0.098f, 0f, -0.053f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(-0.008f, 0f, -0.008f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(0.011f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(-0.180f, 0f, -0.151f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(-0.200f, 0f, -0.034f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							public static Vector3 BreastRightOffsetAt(string bodyType, int rotation)
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								if (rotation == 0 || rotation == 2)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(-0.035f, 0f, -0.050f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(-0.002f, 0f, -0.044f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(-0.000f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(-0.118f, 0f, -0.194f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(-0.141f, 0f, -0.084f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								else if (rotation == 1)
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(0.098f, 0f, -0.053f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(0.008f, 0f, -0.008f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(-0.011f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(0.180f, 0f, -0.151f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(0.200f, 0f, -0.034f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									switch (bodyType)
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										case "Male": return new Vector3(-0.098f, 0f, -0.053f);
 | 
				
			||||||
 | 
										case "Female": return new Vector3(-0.008f, 0f, -0.008f);
 | 
				
			||||||
 | 
										case "Thin": return new Vector3(0.011f, 0f, -0.024f);
 | 
				
			||||||
 | 
										case "Hulk": return new Vector3(-0.180f, 0f, -0.151f);
 | 
				
			||||||
 | 
										case "Fat": return new Vector3(-0.200f, 0f, -0.034f);
 | 
				
			||||||
 | 
										default: return Vector3.zero;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ TextureImporter:
 | 
				
			||||||
  spriteMeshType: 1
 | 
					  spriteMeshType: 1
 | 
				
			||||||
  alignment: 0
 | 
					  alignment: 0
 | 
				
			||||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
					  spritePivot: {x: 0.5, y: 0.5}
 | 
				
			||||||
  spritePixelsToUnits: 100
 | 
					  spritePixelsToUnits: 85
 | 
				
			||||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
					  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
				
			||||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
					  spriteGenerateFallbackPhysicsShape: 1
 | 
				
			||||||
  alphaUsage: 1
 | 
					  alphaUsage: 1
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,7 +45,7 @@ TextureImporter:
 | 
				
			||||||
  spriteMeshType: 1
 | 
					  spriteMeshType: 1
 | 
				
			||||||
  alignment: 0
 | 
					  alignment: 0
 | 
				
			||||||
  spritePivot: {x: 0.5, y: 0.5}
 | 
					  spritePivot: {x: 0.5, y: 0.5}
 | 
				
			||||||
  spritePixelsToUnits: 100
 | 
					  spritePixelsToUnits: 85
 | 
				
			||||||
  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
					  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
 | 
				
			||||||
  spriteGenerateFallbackPhysicsShape: 1
 | 
					  spriteGenerateFallbackPhysicsShape: 1
 | 
				
			||||||
  alphaUsage: 1
 | 
					  alphaUsage: 1
 | 
				
			||||||
| 
						 | 
					@ -64,7 +64,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					@ -88,7 +88,7 @@ TextureImporter:
 | 
				
			||||||
    maxTextureSize: 2048
 | 
					    maxTextureSize: 2048
 | 
				
			||||||
    resizeAlgorithm: 0
 | 
					    resizeAlgorithm: 0
 | 
				
			||||||
    textureFormat: -1
 | 
					    textureFormat: -1
 | 
				
			||||||
    textureCompression: 1
 | 
					    textureCompression: 0
 | 
				
			||||||
    compressionQuality: 50
 | 
					    compressionQuality: 50
 | 
				
			||||||
    crunchedCompression: 0
 | 
					    crunchedCompression: 0
 | 
				
			||||||
    allowsAlphaSplitting: 0
 | 
					    allowsAlphaSplitting: 0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/00/007439c1bc1172189b36c574649143f6
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/01/011652856ef22a5a96fcf961d86afeb6
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/05/05307fbc5822acb9b28b69af0acf8076
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/05/056f846ef06f910df64f569d61df78fc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/07/0748742ea3e7399c39e7c04a449cc9ea
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/07/07759b5885c7ba2965b1c78855c39a6d
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/09/09163e07c804eb423732510b9c4625d0
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0a/0a02136f3245e7709dffd0e71d36661b
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 3.6 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0c/0c11e5b34166c7fd2d087e6c9d25c239
									
										
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								Library/Artifacts/0e/0e4714d245736ca5afb8ae372220fc23
									
										
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 2.6 KiB  |