This commit is contained in:
2021-06-13 10:28:03 +02:00
parent eb70603c85
commit df2d24cbd3
7487 changed files with 943244 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
using System;
using System.IO;
using System.Linq;
using UnityEditor.Presets;
using UnityEditor.U2D.Common;
using UnityEngine;
namespace UnityEditor.U2D.SpriteShape
{
internal static class AssetCreation
{
const int k_SpriteShapeAssetMenuPriority = 9;
static internal Action<int, ProjectWindowCallback.EndNameEditAction, string, Texture2D, string> StartNewAssetNameEditingDelegate = ProjectWindowUtil.StartNameEditingIfProjectWindowExists;
[MenuItem("Assets/Create/2D/Sprite Shape Profile", priority = k_SpriteShapeAssetMenuPriority)]
static void MenuItem_AssetsCreate2DSpriteShapeProfile(MenuCommand menuCommand)
{
var asset = AssetDatabase.LoadAssetAtPath<UnityEngine.U2D.SpriteShape>("Packages/com.unity.2d.spriteshape/Editor/ObjectMenuCreation/DefaultAssets/Sprite Shape Profiles/Sprite Shape Profile.asset");
var preset = new PresetType(asset);
var defaults = Preset.GetDefaultPresetsForType(preset).Count(x => x.enabled);
if (defaults == 0)
CreateAssetObject(asset);
else
CreateAssetObject<UnityEngine.U2D.SpriteShape>(null);
}
static public T CreateAssetObject<T>(T obj) where T : UnityEngine.Object
{
var assetSelectionPath = AssetDatabase.GetAssetPath(Selection.activeObject);
var isFolder = false;
if(!string.IsNullOrEmpty(assetSelectionPath))
isFolder = File.GetAttributes(assetSelectionPath).HasFlag(FileAttributes.Directory);
var path = InternalEditorBridge.GetProjectWindowActiveFolderPath();
if (isFolder)
{
path = assetSelectionPath;
}
string resourceFile = "";
string destName = "";
int instanceId = 0;
string fileName = "";
if (obj != null)
{
resourceFile = AssetDatabase.GetAssetPath(obj);
fileName = System.IO.Path.GetFileName(resourceFile);
}
else
{
obj = ObjectFactory.CreateInstance<T>();
instanceId = obj.GetInstanceID();
fileName = "Sprite Shape Profile.asset";
}
destName = AssetDatabase.GenerateUniqueAssetPath(System.IO.Path.Combine(path, fileName));
var icon = AssetPreview.GetMiniThumbnail(obj);
StartNewAssetNameEditing(resourceFile, destName, icon, instanceId);
return Selection.activeObject as T;
}
static private void StartNewAssetNameEditing(string source, string dest, Texture2D icon, int instanceId)
{
CreateAssetEndNameEditAction action = ScriptableObject.CreateInstance<CreateAssetEndNameEditAction>();
StartNewAssetNameEditingDelegate(instanceId, action, dest, icon, source);
}
internal class CreateAssetEndNameEditAction : ProjectWindowCallback.EndNameEditAction
{
public override void Action(int instanceId, string pathName, string resourceFile)
{
var uniqueName = AssetDatabase.GenerateUniqueAssetPath(pathName);
// ProjectWindowUtil.StartNameEditingIfProjectWindowExists(int instanceID, EndNameEditAction endAction, string pathName, Texture2D icon, string resourceFile)
// will reset the instanceId to Int32.MaxValue - 1 if its 0. Looks like a new trunk change ?
var validInstanceId = (instanceId != 0 && instanceId != InternalEditorBridge.GetAssetCreationInstanceID_ForNonExistingAssets());
if (!validInstanceId && !string.IsNullOrEmpty(resourceFile))
{
AssetDatabase.CopyAsset(resourceFile, uniqueName);
}
else
{
var obj = EditorUtility.InstanceIDToObject(instanceId);
AssetDatabase.CreateAsset(obj, uniqueName);
}
}
}
}
}

View File

@@ -0,0 +1,48 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: af7181f404f1447c0a7a17b3070b952b, type: 3}
m_Name: Sprite Shape Profile
m_EditorClassIdentifier:
m_Angles:
- m_Start: -180
m_End: 180
m_Order: 0
m_Sprites:
- {fileID: 21300000, guid: 0ae2b74b1edd14bb18dd7b65ae916a54, type: 3}
m_FillTexture: {fileID: 2800000, guid: b281b91a70a624a0da1c43adc1c30c7b, type: 3}
m_CornerSprites:
- m_CornerType: 0
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 1
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 2
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 3
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 4
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 5
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 6
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- m_CornerType: 7
m_Sprites:
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
m_FillOffset: 0
m_UseSpriteBorders: 1

View File

@@ -0,0 +1,161 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &791884194307863000
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2651882290663359782}
- component: {fileID: 4687501738149120438}
- component: {fileID: 2153311463896626545}
m_Layer: 0
m_Name: Closed Sprite Shape
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2651882290663359782
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 791884194307863000}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1971053207 &4687501738149120438
SpriteShapeRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 791884194307863000}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- {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: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_MaskInteraction: 0
m_ShapeTexture: {fileID: 2800000, guid: b281b91a70a624a0da1c43adc1c30c7b, type: 3}
m_Sprites:
- {fileID: 21300000, guid: 0ae2b74b1edd14bb18dd7b65ae916a54, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
- {fileID: 21300000, guid: 608e61deb05c54660bebf5a4dd2ee02d, type: 3}
m_LocalAABB:
m_Center: {x: 0.00027251244, y: -0.0002720356, z: -0.00005}
m_Extent: {x: 2.589231, y: 1.2500671, z: 0.00005}
--- !u!114 &2153311463896626545
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 791884194307863000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Spline:
m_IsOpenEnded: 0
m_ControlPoints:
- position: {x: -1, y: -1, z: 0}
leftTangent: {x: 0.53597367, y: -0.00048214197, z: -0}
rightTangent: {x: -0.53597367, y: 0.00048214197, z: 0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
- position: {x: -2, y: 1, z: 0}
leftTangent: {x: -1.0023332, y: 0.0010559559, z: 0}
rightTangent: {x: 1.0023332, y: -0.0010559559, z: -0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
- position: {x: 2, y: 1, z: 0}
leftTangent: {x: -1.0005913, y: -0.0016920567, z: -0}
rightTangent: {x: 1.0005913, y: 0.0016920567, z: 0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
- position: {x: 1, y: -1, z: 0}
leftTangent: {x: 0.54391515, y: 0.0004222989, z: 0}
rightTangent: {x: -0.54391515, y: -0.0004222989, z: -0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
m_SpriteShape: {fileID: 11400000, guid: f24cddf7c09a6442abbce710a6fd7397, type: 2}
m_FillPixelPerUnit: 256
m_StretchTiling: 1
m_SplineDetail: 16
m_AdaptiveUV: 1
m_StretchUV: 0
m_WorldSpaceUV: 0
m_CornerAngleThreshold: 30
m_ColliderDetail: 16
m_ColliderOffset: 0.5
m_UpdateCollider: 1
m_OptimizeCollider: 1
m_OptimizeGeometry: 1
m_EnableTangents: 0
m_GeometryCached: 0

View File

@@ -0,0 +1,143 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6890171417896752708
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8407649417597309679}
- component: {fileID: 3074921751109605677}
- component: {fileID: 7273541427232933439}
m_Layer: 0
m_Name: Open Sprite Shape
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8407649417597309679
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6890171417896752708}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1971053207 &3074921751109605677
SpriteShapeRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6890171417896752708}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
- {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: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_MaskInteraction: 0
m_ShapeTexture: {fileID: 2800000, guid: cb35359504814441a895fe5e3ce2f9fe, type: 3}
m_Sprites:
- {fileID: 21300000, guid: 2f3056e08c07b4cfabadcfee59be0309, type: 3}
m_LocalAABB:
m_Center: {x: 0.00037574768, y: 0.13772076, z: -0.00005}
m_Extent: {x: 2.3613043, y: 0.483122, z: 0.00005}
--- !u!114 &7273541427232933439
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6890171417896752708}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 90539df1cd5704abcb25fec9f3f5f84b, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Spline:
m_IsOpenEnded: 1
m_ControlPoints:
- position: {x: -2, y: 0, z: 0}
leftTangent: {x: -0.9738884, y: -0.9367374, z: -0}
rightTangent: {x: 0.8658923, y: 0.83286107, z: 0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
- position: {x: 0, y: 0, z: 0}
leftTangent: {x: -0.92568946, y: 0.003089726, z: -0}
rightTangent: {x: 0.92568946, y: -0.003089726, z: 0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
- position: {x: 2, y: 0, z: 0}
leftTangent: {x: -0.78340197, y: 0.751823, z: 0}
rightTangent: {x: 0.6651766, y: -0.6383633, z: -0}
mode: 1
height: 1
bevelCutoff: 0
bevelSize: 0
spriteIndex: 0
corner: 1
m_CornerMode: 1
m_SpriteShape: {fileID: 11400000, guid: f24cddf7c09a6442abbce710a6fd7397, type: 2}
m_FillPixelPerUnit: 256
m_StretchTiling: 1
m_SplineDetail: 16
m_AdaptiveUV: 1
m_StretchUV: 0
m_WorldSpaceUV: 0
m_CornerAngleThreshold: 30
m_ColliderDetail: 16
m_ColliderOffset: 0
m_UpdateCollider: 1
m_OptimizeCollider: 1
m_OptimizeGeometry: 1
m_EnableTangents: 0
m_GeometryCached: 0

View File

@@ -0,0 +1,110 @@
using System;
using System.Linq;
using UnityEditor.Presets;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.U2D;
namespace UnityEditor.U2D.SpriteShape
{
class GameObjectCreation
{
const int k_MenuPriority = 4;
[MenuItem("GameObject/2D Object/Sprite Shape/Open Shape", false, k_MenuPriority)]
static void MenuItem_GameObject2DObjectSpriteShapeOpenShape(MenuCommand menuCommand)
{
var asset = AssetDatabase.LoadAssetAtPath<GameObject>("Packages/com.unity.2d.spriteshape/Editor/ObjectMenuCreation/DefaultAssets/Sprite Shapes/Open Sprite Shape.prefab") as GameObject;
var preset = new PresetType(asset.GetComponent<SpriteShapeController>());
var defaults = Preset.GetDefaultPresetsForType(preset).Count(x => x.enabled);
if(defaults == 0)
CreateGameObjectFromTemplate(asset, menuCommand);
else
{
var go = CreateGameObject("Open Sprite Shape", menuCommand, new []{typeof(SpriteShapeController)});
go.GetComponent<SpriteShapeController>().spline.isOpenEnded = true;
}
}
[MenuItem("GameObject/2D Object/Sprite Shape/Closed Shape", false, k_MenuPriority)]
static void MenuItem_GameObject2DObjectSpriteShapeClosedShape(MenuCommand menuCommand)
{
var asset = AssetDatabase.LoadAssetAtPath<GameObject>("Packages/com.unity.2d.spriteshape/Editor/ObjectMenuCreation/DefaultAssets/Sprite Shapes/Closed Sprite Shape.prefab") as GameObject;
var preset = new PresetType(asset.GetComponent<SpriteShapeController>());
var defaults = Preset.GetDefaultPresetsForType(preset).Count(x => x.enabled);
if(defaults == 0)
CreateGameObjectFromTemplate(asset, menuCommand);
else
{
var go = CreateGameObject("Closed Sprite Shape", menuCommand, new []{typeof(SpriteShapeController)});
go.GetComponent<SpriteShapeController>().spline.isOpenEnded = false;
}
}
static public GameObject CreateGameObjectFromTemplate(GameObject template, MenuCommand menuCommand)
{
var parent = menuCommand.context as GameObject;
var fileName = System.IO.Path.GetFileNameWithoutExtension(AssetDatabase.GetAssetPath(template));
var newGO = GameObject.Instantiate(template);
newGO.name = fileName;
Selection.activeObject = newGO;
Place(newGO, parent);
Undo.RegisterCreatedObjectUndo(newGO, string.Format("Create {0}", fileName));
return newGO;
}
static public GameObject CreateGameObject(string name, MenuCommand menuCommand, params Type[] components)
{
var parent = menuCommand.context as GameObject;
var newGO = ObjectFactory.CreateGameObject(name, components);
newGO.name = name;
Selection.activeObject = newGO;
Place(newGO, parent);
Undo.RegisterCreatedObjectUndo(newGO, string.Format("Create {0}", name));
return newGO;
}
internal static void Place(GameObject go, GameObject parentTransform)
{
if (parentTransform != null)
{
var transform = go.transform;
Undo.SetTransformParent(transform, parentTransform.transform, "Reparenting");
transform.localPosition = Vector3.zero;
transform.localRotation = Quaternion.identity;
transform.localScale = Vector3.one;
go.layer = parentTransform.gameObject.layer;
if (parentTransform.GetComponent<RectTransform>())
ObjectFactory.AddComponent<RectTransform>(go);
}
else
{
PlaceGameObjectInFrontOfSceneView(go);
StageUtility.PlaceGameObjectInCurrentStage(go); // may change parent
}
// Only at this point do we know the actual parent of the object and can modify its name accordingly.
GameObjectUtility.EnsureUniqueNameForSibling(go);
Undo.SetCurrentGroupName("Create " + go.name);
Selection.activeGameObject = go;
if (EditorSettings.defaultBehaviorMode == EditorBehaviorMode.Mode2D)
{
var position = go.transform.position;
position.z = 0;
go.transform.position = position;
}
}
internal static void PlaceGameObjectInFrontOfSceneView(GameObject go)
{
var view = SceneView.lastActiveSceneView;
if (view != null)
{
view.MoveToView(go.transform);
}
}
}
}