testss
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
|
@@ -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
|
@@ -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
|
Binary file not shown.
After Width: | Height: | Size: 476 B |
Binary file not shown.
After Width: | Height: | Size: 415 B |
Binary file not shown.
After Width: | Height: | Size: 854 B |
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user