Code refactor

This commit is contained in:
AbstractConcept 2022-10-31 19:58:41 -05:00
parent e14a12f2ab
commit af4dab5546
278 changed files with 468 additions and 668 deletions

View file

@ -65,6 +65,7 @@
<ItemGroup>
<Compile Include="Assets\Editor\AdvancedPolygonColliderEditor.cs" />
<Compile Include="Assets\Editor\ButtonWithKeyCodeEditor.cs" />
<Compile Include="Assets\Editor\FindMissingScriptsRecursively.cs" />
<Compile Include="Assets\Editor\KeyframeSliderEditor.cs" />
<Reference Include="UnityEngine">
<HintPath>C:/Program Files/Unity/Hub/Editor/2019.4.20f1/Editor/Data/Managed/UnityEngine/UnityEngine.dll</HintPath>

View file

@ -87,12 +87,14 @@
<Compile Include="Assets\Scripts\Extensions\ObjectExtensions.cs" />
<Compile Include="Assets\Scripts\Extensions\TransformExtensions.cs" />
<Compile Include="Assets\Scripts\Extensions\Vector3Extension.cs" />
<Compile Include="Assets\Scripts\GUI\ActorManipulator.cs" />
<Compile Include="Assets\Scripts\GUI\Actors\ActorBody.cs" />
<Compile Include="Assets\Scripts\GUI\Actors\ActorBodyPart.cs" />
<Compile Include="Assets\Scripts\GUI\AddSoundDefButton.cs" />
<Compile Include="Assets\Scripts\GUI\AddonAnchorDropdown.cs" />
<Compile Include="Assets\Scripts\GUI\AnimationLengthsCard.cs" />
<Compile Include="Assets\Scripts\GUI\AnimationTimeline.cs" />
<Compile Include="Assets\Scripts\GUI\ButtonWithKeyCode.cs" />
<Compile Include="Assets\Scripts\GUI\Cards\ActorAddonCard.cs" />
<Compile Include="Assets\Scripts\GUI\Cards\ActorAddonKeyframeCard.cs" />
<Compile Include="Assets\Scripts\GUI\Cards\ActorCard.cs" />
@ -101,6 +103,7 @@
<Compile Include="Assets\Scripts\GUI\Cards\AnimationDefCard.cs" />
<Compile Include="Assets\Scripts\GUI\Cards\StageCard.cs" />
<Compile Include="Assets\Scripts\GUI\Cards\StageLoopsCard.cs" />
<Compile Include="Assets\Scripts\GUI\Chaser.cs" />
<Compile Include="Assets\Scripts\GUI\DialogBoxes\ConsoleMessagesDialog.cs" />
<Compile Include="Assets\Scripts\GUI\DialogBoxes\DialogBox.cs" />
<Compile Include="Assets\Scripts\GUI\DialogBoxes\RaceSettingsDialog.cs" />
@ -114,21 +117,19 @@
<Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectSexTypesDialog.cs" />
<Compile Include="Assets\Scripts\GUI\DialogBoxes\SelectSoundDefDialog.cs" />
<Compile Include="Assets\Scripts\GUI\DropdownMenu.cs" />
<Compile Include="Assets\Scripts\GUI\InactiveDuringAnimationPreview.cs" />
<Compile Include="Assets\Scripts\GUI\KeybindLabel.cs" />
<Compile Include="Assets\Scripts\GUI\KeyframeSlider.cs" />
<Compile Include="Assets\Scripts\GUI\LinearScale.cs" />
<Compile Include="Assets\Scripts\GUI\Props\SexProp.cs" />
<Compile Include="Assets\Scripts\GUI\Props\SexPropManager.cs" />
<Compile Include="Assets\Scripts\GUI\QuiverToggle.cs" />
<Compile Include="Assets\Scripts\GUI\RequiresAnimationDef.cs" />
<Compile Include="Assets\Scripts\GUI\SelectActorLayerButton.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\ActorManipulator.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\ButtonWithKeyCode.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\Chaser.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\InactiveDuringAnimationPreview.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\RequiresAnimationDef.cs" />
<Compile Include="Assets\Scripts\GUI\SelfContained\SnapToKeyframe.cs" />
<Compile Include="Assets\Scripts\GUI\SnapToKeyframe.cs" />
<Compile Include="Assets\Scripts\GUI\Tooltips\Tooltip.cs" />
<Compile Include="Assets\Scripts\GUI\Tooltips\TooltipMessage.cs" />
<Compile Include="Assets\Scripts\Graphics\GraphicData.cs" />
<Compile Include="Assets\Scripts\Graphics\MultiDirectionalGraphic.cs" />
<Compile Include="Assets\Scripts\Graphics\SingleGraphic.cs" />
<Compile Include="Assets\Scripts\Keybinds\Keybind.cs" />

View file

@ -0,0 +1,130 @@
using UnityEditor;
using UnityEngine;
namespace AndroidUltimatePlugin.Helpers.Editor
{
public class FindMissingScriptsRecursively : EditorWindow
{
static int _goCount = 0, _componentsCount = 0, _missingCount = 0;
[MenuItem("Window/FindMissingScriptsRecursively")]
public static void ShowWindow()
{
GetWindow(typeof(FindMissingScriptsRecursively));
}
public void OnGUI()
{
if (GUILayout.Button("Find Missing Scripts in selected GameObjects"))
{
FindInSelected();
}
if (GUILayout.Button("Find Missing Scripts"))
{
FindAll();
}
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("Component Scanned:");
EditorGUILayout.LabelField("" + (_componentsCount == -1 ? "---" : _componentsCount.ToString()));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("Object Scanned:");
EditorGUILayout.LabelField("" + (_goCount == -1 ? "---" : _goCount.ToString()));
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
{
EditorGUILayout.LabelField("Possible Missing Scripts:");
EditorGUILayout.LabelField("" + (_missingCount == -1 ? "---" : _missingCount.ToString()));
}
EditorGUILayout.EndHorizontal();
}
private static void FindAll()
{
_componentsCount = 0;
_goCount = 0;
_missingCount = 0;
string[] assetsPaths = AssetDatabase.GetAllAssetPaths();
foreach (string assetPath in assetsPaths)
{
Object[] data = LoadAllAssetsAtPath(assetPath);
foreach (Object o in data)
{
if (o != null)
{
if (o is GameObject)
{
FindInGO((GameObject) o);
}
}
}
}
Debug.Log($"Searched {_goCount} GameObjects, {_componentsCount} components, found {_missingCount} missing");
}
public static Object[] LoadAllAssetsAtPath(string assetPath)
{
return typeof(SceneAsset).Equals(AssetDatabase.GetMainAssetTypeAtPath(assetPath))
?
// prevent error "Do not use readobjectthreaded on scene objects!"
new[] {AssetDatabase.LoadMainAssetAtPath(assetPath)}
: AssetDatabase.LoadAllAssetsAtPath(assetPath);
}
private static void FindInSelected()
{
GameObject[] go = Selection.gameObjects;
_goCount = 0;
_componentsCount = 0;
_missingCount = 0;
foreach (GameObject g in go)
{
FindInGO(g);
}
Debug.Log($"Searched {_goCount} GameObjects, {_componentsCount} components, found {_missingCount} missing");
}
private static void FindInGO(GameObject g)
{
_goCount++;
Component[] components = g.GetComponents<Component>();
for (int i = 0; i < components.Length; i++)
{
_componentsCount++;
if (components[i] == null)
{
_missingCount++;
string s = g.name;
Transform t = g.transform;
while (t.parent != null)
{
var parent = t.parent;
s = parent.name + "/" + s;
t = parent;
}
Debug.Log(s + " has an empty script attached in position: " + i, g);
}
}
// Now recurse through each child GO (if there are any):
foreach (Transform childT in g.transform)
{
//Debug.Log("Searching " + childT.name + " " );
FindInGO(childT.gameObject);
}
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f991f27152653b841901199172a12809
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,344 +1,5 @@
%YAML 1.1
%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}
bodyPart: right hand
--- !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}
bodyPart: left hand
--- !u!1 &3158459618386162366
GameObject:
m_ObjectHideFlags: 0
@ -670,9 +331,6 @@ Transform:
- {fileID: 7516402502875270591}
- {fileID: 7929422519883802245}
- {fileID: 4090857286061458930}
- {fileID: 366978152691480472}
- {fileID: 7268521810611446429}
- {fileID: 523924871185930481}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -690,6 +348,8 @@ MonoBehaviour:
m_EditorClassIdentifier:
actorID: 0
bodyRenderer: {fileID: 5996161745621340017}
actorBodyPartPrefab: {fileID: 6079743031150361545, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
--- !u!1 &9122292209377678227
GameObject:
m_ObjectHideFlags: 0
@ -864,114 +524,3 @@ MonoBehaviour:
bodyPartRenderer: {fileID: 4251726083449519904}
parent: {fileID: -4411442180840688308}
bodyPart: appendage
--- !u!1001 &8747398589072214225
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 7929422520673851209}
m_Modifications:
- target: {fileID: 2259458396607883071, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_Size.x
value: 1.5058824
objectReference: {fileID: 0}
- target: {fileID: 2259458396607883071, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_Size.y
value: 1.5058824
objectReference: {fileID: 0}
- target: {fileID: 2259458396607883071, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_Sprite
value:
objectReference: {fileID: 21300000, guid: c8db866783ad2a3498006437fd914bc4,
type: 3}
- target: {fileID: 2259458396607883071, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_WasSpriteAssigned
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3972152003096792844, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_Name
value: ActorSexToy
objectReference: {fileID: 0}
- target: {fileID: 4800170110735377442, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_SpriteTilingProperty.newSize.x
value: 1.5058824
objectReference: {fileID: 0}
- target: {fileID: 4800170110735377442, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_SpriteTilingProperty.newSize.y
value: 1.5058824
objectReference: {fileID: 0}
- target: {fileID: 6079743031150361545, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: parent
value:
objectReference: {fileID: -4411442180840688308}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_RootOrder
value: 3
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: ffbd7531e8f98f94dba0fddefcae2441, type: 3}
--- !u!4 &366978152691480472 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 8967445332558757705, guid: ffbd7531e8f98f94dba0fddefcae2441,
type: 3}
m_PrefabInstance: {fileID: 8747398589072214225}
m_PrefabAsset: {fileID: 0}

View file

@ -14,7 +14,7 @@ GameObject:
- component: {fileID: 2544842580858030677}
- component: {fileID: 6079743031150361545}
m_Layer: 0
m_Name: ActorSexToy
m_Name: ActorBodyPArt
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
@ -173,4 +173,4 @@ MonoBehaviour:
m_EditorClassIdentifier:
bodyPartRenderer: {fileID: 2259458396607883071}
parent: {fileID: 0}
bodyPart: dildo
bodyPart:

View file

@ -1696,8 +1696,9 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1179107127}
- {fileID: 681903173}
m_Father: {fileID: 1552819969}
m_RootOrder: 2
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 0}
@ -12633,14 +12634,14 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1552819969}
m_Father: {fileID: 121643454}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 145.19, y: 0}
m_SizeDelta: {x: 30, y: 30}
m_Pivot: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 5, y: 0}
m_SizeDelta: {x: 25, y: 25}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &681903174
MonoBehaviour:
m_ObjectHideFlags: 0
@ -17847,12 +17848,12 @@ RectTransform:
- {fileID: 225041961}
- {fileID: 593007063}
m_Father: {fileID: 1216651060}
m_RootOrder: 5
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -10, y: -60}
m_SizeDelta: {x: 120, y: 30}
m_AnchoredPosition: {x: -9, y: -60}
m_SizeDelta: {x: 145, y: 30}
m_Pivot: {x: 1, y: 1}
--- !u!114 &1001419736
MonoBehaviour:
@ -20173,8 +20174,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -7.5, y: -0.5}
m_SizeDelta: {x: -35, y: -13}
m_AnchoredPosition: {x: 5.13, y: -0.5}
m_SizeDelta: {x: -60.255554, y: -13}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1151323894
MonoBehaviour:
@ -20298,7 +20299,7 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 922060210}
m_HandleRect: {fileID: 922060209}
m_Direction: 2
m_Value: 0
m_Value: 1
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
@ -21086,8 +21087,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchoredPosition: {x: 16.48, y: 0}
m_SizeDelta: {x: -32.94964, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1179107128
MonoBehaviour:
@ -21115,7 +21116,7 @@ MonoBehaviour:
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 4
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
@ -21692,8 +21693,8 @@ RectTransform:
- {fileID: 4300837137793644386}
- {fileID: 4070467796814498374}
- {fileID: 6085830301866471447}
- {fileID: 1470937577}
- {fileID: 1001419735}
- {fileID: 1470937577}
- {fileID: 935483303288600285}
- {fileID: 1012383901}
- {fileID: 11575766}
@ -22461,7 +22462,7 @@ PrefabInstance:
- target: {fileID: 7715503544296011585, guid: 8b89f6c9e5f696c4997760829c45a505,
type: 3}
propertyPath: m_RootOrder
value: 12
value: 11
objectReference: {fileID: 0}
- target: {fileID: 7715503544296011585, guid: 8b89f6c9e5f696c4997760829c45a505,
type: 3}
@ -23039,7 +23040,7 @@ MonoBehaviour:
m_GameObject: {fileID: 1289465653}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9b19816966eab6a4eba748f04532fb61, type: 3}
m_Script: {fileID: 11500000, guid: 09b43781ddbab9c49b81b88c7a8b4076, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1293104865
@ -27076,11 +27077,11 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 1216651060}
m_RootOrder: 4
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -141, y: -63}
m_AnchoredPosition: {x: -137, y: -63}
m_SizeDelta: {x: 24, y: 24}
m_Pivot: {x: 0.5, y: 1}
--- !u!114 &1470937578
@ -28694,7 +28695,6 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 1190554011}
- {fileID: 681903173}
- {fileID: 121643454}
m_Father: {fileID: 1257725762}
m_RootOrder: 0
@ -30103,18 +30103,7 @@ MonoBehaviour:
m_CharacterLimit: 0
m_OnEndEdit:
m_PersistentCalls:
m_Calls:
- m_Target: {fileID: 629081417}
m_MethodName: OnValueChanged
m_Mode: 1
m_Arguments:
m_ObjectArgument: {fileID: 0}
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
m_IntArgument: 0
m_FloatArgument: 0
m_StringArgument:
m_BoolArgument: 0
m_CallState: 2
m_Calls: []
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []

View file

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: ff71352a02fb53440a35dbeabb9ebc87
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -15,13 +15,12 @@ namespace RimWorldAnimationStudio
public int? anchoringActor;
public string anchorName;
public string layer = "Pawn";
public float? scale;
public GraphicData graphicData;
public bool? render;
// Data serialization control
public bool ShouldSerializeanchorName() { return string.IsNullOrEmpty(anchorName) == false && anchorName.ToLower() != "none"; }
public bool ShouldSerializeanchoringActor() { return anchoringActor.HasValue; }
public bool ShouldSerializescale() { return scale.HasValue; }
public bool ShouldSerializerender() { return render == true; }
// Data helper functions
@ -49,10 +48,11 @@ namespace RimWorldAnimationStudio
set { layer = value; }
}
[XmlIgnore] public float Scale
[XmlIgnore]
public GraphicData GraphicData
{
get { return scale.HasValue ? scale.Value : 0f; }
set { scale = value; }
get { return graphicData; }
set { graphicData = value; }
}
[XmlIgnore] public bool Render
@ -69,10 +69,10 @@ namespace RimWorldAnimationStudio
// Constructors
public ActorAddon() { }
public ActorAddon(string addonName, float scale = 1f)
public ActorAddon(ActorAddonDef actorAddonDef)
{
this.AddonName = addonName;
this.Scale = scale;
this.AddonName = actorAddonDef.addonName;
this.GraphicData = actorAddonDef.graphicData.Copy();
}
}
}

View file

@ -11,5 +11,7 @@ namespace RimWorldAnimationStudio
public string addonName;
public string label;
public float scale = 1f;
public GraphicData graphicData;
}
}

View file

@ -62,6 +62,10 @@ namespace RimWorldAnimationStudio
// Methods
public void BuildSimpleCurves()
{
// Add addon data (if missing)
foreach (ActorAddonDef actorAddonDef in ActorAddonDefs.allDefs)
{ AddActorAddon(actorAddonDef); }
// Clear simple curve data
BodyAngle.Clear();
HeadAngle.Clear();
@ -72,10 +76,6 @@ namespace RimWorldAnimationStudio
HeadBob.Clear();
GenitalAngle.Clear();
AddActorAddon("left hand", 0.667f);
AddActorAddon("right hand", 0.667f);
AddActorAddon("dildo");
foreach (ActorAddon addon in Addons)
{
addon.PosX.Clear();
@ -83,7 +83,7 @@ namespace RimWorldAnimationStudio
addon.Rotation.Clear();
}
// Start
// Start building simple curves
int keyframePosition = 0;
int duration = 0;
@ -151,17 +151,15 @@ namespace RimWorldAnimationStudio
}
}
public void AddActorAddon(string addonName, float scale = 1f)
public void AddActorAddon(ActorAddonDef actorAddonDef)
{
if (Addons.Any(x => x.AddonName == addonName) == false)
{
Addons.Add(new ActorAddon(addonName, scale));
}
if (Addons.Any(x => x.AddonName == actorAddonDef.addonName) == false)
{ Addons.Add(new ActorAddon(actorAddonDef)); }
foreach (PawnKeyframe keyframe in Keyframes)
{
if (keyframe.AddonKeyframes.Any(x => x.AddonName == addonName) == false)
{ keyframe.AddonKeyframes.Add(new AddonKeyframe(addonName)); }
if (keyframe.AddonKeyframes.Any(x => x.AddonName == actorAddonDef.addonName) == false)
{ keyframe.AddonKeyframes.Add(new AddonKeyframe(actorAddonDef.addonName)); }
}
}

View file

@ -10,6 +10,7 @@ namespace RimWorldAnimationStudio
{
public int actorID;
public SpriteRenderer bodyRenderer;
public ActorBodyPart actorBodyPartPrefab;
private Vector3 dragDelta = new Vector3();
@ -20,6 +21,12 @@ namespace RimWorldAnimationStudio
if (Workspace.ActorID == actorID)
{ Activate(); }
foreach (ActorAddonDef actorAddonDef in ActorAddonDefs.allDefs)
{
ActorBodyPart actorBodyPart = Instantiate(actorBodyPartPrefab, transform);
actorBodyPart.Initialize(this, actorAddonDef);
}
}
public void OnActorBodySelected(ActorBody actorBody)

View file

@ -14,8 +14,10 @@ namespace RimWorldAnimationStudio
private Vector3 dragDelta = new Vector3();
public void Start()
private void Start()
{
if (parent == null) return;
EventsManager.onActorBodyPartSelected.AddListener(delegate (ActorBodyPart bodyPart) { OnActorBodyPartSelected(bodyPart); });
EventsManager.onActorBodySelected.AddListener(delegate (ActorBody actorBody) { OnActorBodySelected(actorBody); });
@ -23,6 +25,17 @@ namespace RimWorldAnimationStudio
{ parent.Activate(); }
}
public void Initialize(ActorBody parent, ActorAddonDef actorAddonDef)
{
this.parent = parent;
this.bodyPart = actorAddonDef.addonName;
bodyPartRenderer.sprite = actorAddonDef.graphicData.GetSprite();
bodyPartRenderer.transform.localScale = (Vector3)actorAddonDef.graphicData.GetDrawSize();
Start();
}
public void OnActorAddonChange(ActorAddon actorAddon)
{
if (actorAddon.AddonName == bodyPart)

View file

@ -52,6 +52,8 @@ namespace RimWorldAnimationStudio
layerDropdown.SetValueWithoutNotify(layerDropdown.options.IndexOf(layerDropdown.options.First(x => x.text == clip.GetActorAddon(addonName).Layer)));
anchoringPawnField.SetTextWithoutNotify(clip.GetActorAddon(addonName).AnchoringActor.ToString());
toggle.SetIsOnWithoutNotify(clip.IsActorAddonVisible(addonName));
anchoringPawnField.interactable = anchorDropdown.value != 0;
}
}

View file

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 96cc86ae315a7c34c91b9af2499fa23c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 9b19816966eab6a4eba748f04532fb61
guid: 09b43781ddbab9c49b81b88c7a8b4076
MonoImporter:
externalObjects: {}
serializedVersion: 2

View file

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Reflection;
using System.IO;
using UnityEngine;
namespace RimWorldAnimationStudio
{
[Serializable]
public class GraphicData
{
public string texPath;
public string graphicClass;
public string shaderType;
public string drawSize;
private Sprite sprite;
public void SetDrawSize(Vector2 drawSize)
{
this.drawSize = "(" + drawSize.x + ", " + drawSize.y + ")";
}
public Vector3 GetDrawSize()
{
string drawSizeString = drawSize;
drawSizeString = drawSizeString.Trim();
drawSizeString = drawSizeString.Replace("(", "");
drawSizeString = drawSizeString.Replace(")", "");
var drawSizeStrings = drawSizeString.Split(',');
return new Vector3(float.Parse(drawSizeStrings[0]), float.Parse(drawSizeStrings[1]));
}
public Sprite GetSprite()
{
if (sprite != null) return sprite;
if (string.IsNullOrEmpty(texPath)) return null;
string fullPath = Path.GetFullPath(Path.Combine(Application.streamingAssetsPath, texPath)) + ".png";
if (File.Exists(fullPath) == false) return null;
byte[] pngBytes = File.ReadAllBytes(fullPath);
Texture2D texture = new Texture2D(2, 2);
texture.LoadImage(pngBytes);
float scale = Mathf.Min(texture.width, texture.height) / 128f;
sprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f), 85.0f * scale);
return sprite;
}
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6e8b46532a4e0ce42b40b1a1fd03935a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -45,7 +45,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 510
spritePixelsToUnits: 85
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1

View file

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e8128ddbd38f5c441b417b0318819eca
guid: 43f10c9566894a04d9e5774d580927d2
folderAsset: yes
DefaultImporter:
externalObjects: {}

View file

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View file

@ -45,7 +45,7 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 170
spritePixelsToUnits: 85
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1

View file

@ -4,19 +4,35 @@
<ActorAddonDef>
<addonName>left hand</addonName>
<label>Hand (left)</label>
<scale>0.6667</scale>
<graphicData>
<texPath>Textures/Humanlike/Hands/HandClean</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(0.6,0.6)</drawSize>
</graphicData>
</ActorAddonDef>
<ActorAddonDef>
<addonName>right hand</addonName>
<label>Hand (right)</label>
<scale>0.6667</scale>
<graphicData>
<texPath>Textures/Humanlike/Hands/HandClean</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(0.6,0.6)</drawSize>
</graphicData>
</ActorAddonDef>
<ActorAddonDef>
<addonName>dildo</addonName>
<label>Sex toy</label>
<scale>1</scale>
<graphicData>
<texPath>Textures/SexToys/Dildo</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(1,1)</drawSize>
</graphicData>
</ActorAddonDef>
</ArrayOfActorAddonDef>

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View file

@ -4,19 +4,35 @@
<ActorAddonDef>
<addonName>left hand</addonName>
<label>Hand (left)</label>
<scale>0.6667</scale>
<graphicData>
<texPath>Textures/Humanlike/Hands/HandClean</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(0.6,0.6)</drawSize>
</graphicData>
</ActorAddonDef>
<ActorAddonDef>
<addonName>right hand</addonName>
<label>Hand (right)</label>
<scale>0.6667</scale>
<graphicData>
<texPath>Textures/Humanlike/Hands/HandClean</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(0.6,0.6)</drawSize>
</graphicData>
</ActorAddonDef>
<ActorAddonDef>
<addonName>dildo</addonName>
<label>Sex toy</label>
<scale>1</scale>
<graphicData>
<texPath>Textures/SexToys/Dildo</texPath>
<graphicClass>Graphic_Single</graphicClass>
<shaderType>Cutout</shaderType>
<drawSize>(1,1)</drawSize>
</graphicData>
</ActorAddonDef>
</ArrayOfActorAddonDef>

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more