Skip to content

Commit 2c0cfc1

Browse files
committed
added ability to create ImageAnimator3000 and SpriteAnimator3000 via editor-based context menu
1 parent 83502ac commit 2c0cfc1

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

Runtime/BaseSpriteAnimator3000.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,22 @@ public void EditorRefresh()
341341
spritesheet.EditorRefresh();
342342
}
343343
}
344+
345+
protected static void EditorCreateAsset<A>(Func<A, T> func) where A : BaseSpriteAnimator3000<T>
346+
{
347+
var obj = new GameObject(typeof(A).Name);
348+
349+
var animator = obj.AddComponent<A>();
350+
animator.m_renderer = func(animator);
351+
animator.m_copyRenderers = new List<T>();
352+
353+
var activeObject = UnityEditor.Selection.activeGameObject;
354+
var activeParent = activeObject != null ? activeObject.transform : null;
355+
obj.transform.SetParent(activeParent);
356+
obj.transform.localPosition = Vector3.zero;
357+
358+
UnityEditor.Selection.activeGameObject = obj;
359+
}
344360
#endif
345361
}
346362
}

Runtime/ImageAnimator3000.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,25 @@ protected override void SetRendererFlip(Image renderer, bool flipX, bool flipY)
2828
{
2929
//do nothing
3030
}
31+
32+
#if UNITY_EDITOR
33+
[UnityEditor.MenuItem("Assets/Create/UI/Spritesheet 3000/Image Animator", validate = false)]
34+
[UnityEditor.MenuItem("GameObject/UI/Spritesheet 3000/Image Animator", validate = false)]
35+
private static void EditorCreateAsset()
36+
{
37+
EditorCreateAsset<ImageAnimator3000>((obj) =>
38+
{
39+
obj.m_spritesheets = new List<SpriteAnimationClip3000>();
40+
obj.timeThread = ESpriteAnimatorThread.UnscaledTime;
41+
42+
var canvasRenderer = obj.gameObject.AddComponent<CanvasRenderer>();
43+
44+
var image = obj.gameObject.AddComponent<Image>();
45+
image.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
46+
image.type = UnityEngine.UI.Image.Type.Sliced;
47+
return image;
48+
});
49+
}
50+
#endif
3151
}
3252
}

Runtime/SpriteAnimator3000.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,23 @@ protected override void SetRendererFlip(SpriteRenderer renderer, bool flipX, boo
2828
renderer.flipX = flipX;
2929
renderer.flipY = flipY;
3030
}
31+
32+
#if UNITY_EDITOR
33+
[UnityEditor.MenuItem("Assets/Create/UI/Spritesheet 3000/Sprite Animator", validate = false)]
34+
[UnityEditor.MenuItem("GameObject/UI/Spritesheet 3000/Sprite Animator", validate = false)]
35+
private static void EditorCreateAsset()
36+
{
37+
EditorCreateAsset<SpriteAnimator3000>((obj) =>
38+
{
39+
obj.m_spritesheets = new List<SpriteAnimationClip3000>();
40+
obj.timeThread = ESpriteAnimatorThread.RelatedOnTimeScale;
41+
42+
var spriteRenderer = obj.gameObject.AddComponent<SpriteRenderer>();
43+
spriteRenderer.sprite = UnityEditor.AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
44+
spriteRenderer.drawMode = SpriteDrawMode.Simple;
45+
return spriteRenderer;
46+
});
47+
}
48+
#endif
3149
}
3250
}

0 commit comments

Comments
 (0)