11@tool
2- extends Node2D
2+ extends Node
33
44class_name LPCAnimatedSprite2D
55
66@export var SpriteSheets :Array [LPCSpriteSheet ]
77@export var DefaultAnimation :LPCEnum .LPCAnimation = LPCEnum .LPCAnimation .IDLE_DOWN
8+ @export var NodeType :LPCEnum .ESpriteNodeType = LPCEnum .ESpriteNodeType .Sprite_2D
9+
10+ @export_group ("2D Properties" )
11+ @export var Sprite2DTextureFilter :CanvasItem .TextureFilter = CanvasItem .TEXTURE_FILTER_NEAREST
12+
13+ @export_group ("3D Properties" )
14+ const DEFAULT_3D_PIXEL_SIZE :float = 0.01
15+ @export var Sprite3DScale :float = 1
16+ @export var Sprite3DBillboard :BaseMaterial3D .BillboardMode = BaseMaterial3D .BILLBOARD_DISABLED
17+ @export var Sprite3DTextureFilter :BaseMaterial3D .TextureFilter = BaseMaterial3D .TEXTURE_FILTER_NEAREST
18+
19+ var lastOffset :float = 1.0
820
921var AnimationNames :Array
1022func _ready ():
@@ -39,9 +51,9 @@ func LoadAnimations():
3951 if spriteSheet == null :
4052 push_warning ("There are LPCSpriteSheets that are <empty> in the LPCAnimatedSprite2D panel" )
4153 continue
42- var animatedSprite = AnimatedSprite2D . new ()
43- animatedSprite . texture_filter = CanvasItem . TEXTURE_FILTER_NEAREST
44- var spriteFrames = CreateSprites (spriteSheet )
54+
55+ var animatedSprite = CreateAnimatedSprite ()
56+ var spriteFrames = CreateSpritesFrames (spriteSheet )
4557 animatedSprite .frames = spriteFrames
4658 add_child (animatedSprite )
4759 if spriteSheet .Name == null || spriteSheet .Name == "" :
@@ -50,8 +62,23 @@ func LoadAnimations():
5062 animatedSprite .name = spriteSheet .Name
5163 animatedSprite .owner = get_tree ().edited_scene_root
5264 play (DefaultAnimation )
53-
54- func CreateSprites (spriteSheet :LPCSpriteSheet ):
65+
66+ func CreateAnimatedSprite ():
67+ match NodeType :
68+ LPCEnum .ESpriteNodeType .Sprite_3D :
69+ var animatedSprite = AnimatedSprite3D .new ()
70+ animatedSprite .pixel_size = Sprite3DScale * DEFAULT_3D_PIXEL_SIZE
71+ animatedSprite .texture_filter = Sprite3DTextureFilter
72+ animatedSprite .billboard = Sprite3DBillboard
73+ animatedSprite .sorting_offset = lastOffset
74+ lastOffset += 1.0
75+ return animatedSprite
76+ LPCEnum .ESpriteNodeType .Sprite_2D :
77+ var animatedSprite = AnimatedSprite2D .new ()
78+ animatedSprite .texture_filter = Sprite2DTextureFilter
79+ return animatedSprite
80+
81+ func CreateSpritesFrames (spriteSheet :LPCSpriteSheet ):
5582 var spriteFrames = SpriteFrames .new ()
5683 spriteFrames .remove_animation ("default" )
5784
0 commit comments