mirror of
https://github.com/Relintai/broken_seals_2d.git
synced 2024-11-11 20:35:10 +01:00
Removed the spritesheet generator.
This commit is contained in:
parent
a343af9cba
commit
9eca3ec0d8
File diff suppressed because one or more lines are too long
@ -1,113 +0,0 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3]
|
||||
[ext_resource path="res://testsave.png" type="Texture" id=4]
|
||||
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
|
||||
[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6]
|
||||
[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7]
|
||||
|
||||
[sub_resource type="Environment" id=1]
|
||||
ssao_enabled = true
|
||||
|
||||
[sub_resource type="World" id=2]
|
||||
environment = SubResource( 1 )
|
||||
|
||||
[node name="TextureAtlasGenerator" type="Node2D"]
|
||||
script = ExtResource( 3 )
|
||||
_sprite_size = 38
|
||||
_sprite_num = 16
|
||||
_show_atlas = true
|
||||
save_texture = true
|
||||
animations = [ "run", "idle", "casting", "rest" ]
|
||||
z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ]
|
||||
instant_preview_path = NodePath("InstantPreview")
|
||||
sprite_preview_path = NodePath("SpritePreview")
|
||||
viewport_path = NodePath("Viewport")
|
||||
atlas_preview_path = NodePath("AtlasPreview")
|
||||
model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel")
|
||||
model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer")
|
||||
model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree")
|
||||
model_side_path = NodePath("Viewport/Node2D/CharacterSideModel")
|
||||
model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer")
|
||||
model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree")
|
||||
cast_animation_index = 2
|
||||
cast_animation_scene = ExtResource( 7 )
|
||||
cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ]
|
||||
|
||||
[node name="Viewport" type="Viewport" parent="."]
|
||||
size = Vector2( 64, 64 )
|
||||
own_world = true
|
||||
world = SubResource( 2 )
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
hdr = false
|
||||
usage = 0
|
||||
render_target_v_flip = true
|
||||
render_target_update_mode = 3
|
||||
|
||||
[node name="Camera" type="Camera2D" parent="Viewport"]
|
||||
position = Vector2( 0, -15.726 )
|
||||
z_index = 2
|
||||
current = true
|
||||
|
||||
[node name="Node2D" type="Node2D" parent="Viewport"]
|
||||
|
||||
[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )]
|
||||
_atlas = ExtResource( 6 )
|
||||
|
||||
[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"]
|
||||
position = Vector2( 0, -2.289 )
|
||||
|
||||
[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"]
|
||||
z_index = 1
|
||||
|
||||
[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"]
|
||||
active = false
|
||||
|
||||
[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )]
|
||||
visible = false
|
||||
rotation = 3.14147
|
||||
scale = Vector2( 1, -1 )
|
||||
_atlas = ExtResource( 6 )
|
||||
|
||||
[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"]
|
||||
position = Vector2( -3.50004, -24.6155 )
|
||||
|
||||
[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"]
|
||||
position = Vector2( -3.50004, -19.1155 )
|
||||
z_index = 1
|
||||
|
||||
[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"]
|
||||
position = Vector2( 0, -2 )
|
||||
|
||||
[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"]
|
||||
active = false
|
||||
|
||||
[node name="InstantPreview" type="Sprite" parent="."]
|
||||
|
||||
[node name="SpritePreview" type="Sprite" parent="."]
|
||||
|
||||
[node name="AtlasPreview" type="Sprite" parent="."]
|
||||
position = Vector2( 603.531, 254.594 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 101.579, 162.161 )
|
||||
texture = ExtResource( 4 )
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
frame = 9
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="Test" type="Sprite" parent="."]
|
||||
position = Vector2( -91.0568, 21.4517 )
|
||||
texture = ExtResource( 4 )
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
current = true
|
||||
|
||||
[editable path="Viewport/Node2D/CharacterFrontModel"]
|
||||
[editable path="Viewport/Node2D/CharacterSideModel"]
|
@ -1,138 +0,0 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://characters/CharacterFrontModel.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://characters/CharacterSideModel.tscn" type="PackedScene" id=2]
|
||||
[ext_resource path="res://spritesheet_generator/SheetGenv2.gd" type="Script" id=3]
|
||||
[ext_resource path="res://testsave.png" type="Texture" id=4]
|
||||
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
|
||||
[ext_resource path="res://characters/naturalist_characteratlas.tres" type="CharacterAtlas" id=6]
|
||||
[ext_resource path="res://modules/entity_classes/naturalist/spell_effects/nature2d/NatureCast.tscn" type="PackedScene" id=7]
|
||||
|
||||
[sub_resource type="Environment" id=1]
|
||||
ssao_enabled = true
|
||||
|
||||
[sub_resource type="World" id=2]
|
||||
environment = SubResource( 1 )
|
||||
|
||||
[sub_resource type="Environment" id=3]
|
||||
|
||||
[sub_resource type="World" id=4]
|
||||
environment = SubResource( 3 )
|
||||
|
||||
[node name="TextureAtlasGenerator" type="Node2D"]
|
||||
script = ExtResource( 3 )
|
||||
_sprite_size = 26
|
||||
_sprite_num = 16
|
||||
outline_color = Color( 0.027451, 0.027451, 0.027451, 1 )
|
||||
_show_atlas = true
|
||||
save_texture = true
|
||||
animations = [ "run", "idle", "casting", "rest" ]
|
||||
z_index_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l") ]
|
||||
wp2_sprite3d_path = NodePath("Viewport2/Sprite3D")
|
||||
instant_preview_path = NodePath("InstantPreview")
|
||||
sprite_preview_path = NodePath("SpritePreview")
|
||||
viewport_path = NodePath("Viewport")
|
||||
viewport2_path = NodePath("Viewport2")
|
||||
atlas_preview_path = NodePath("AtlasPreview")
|
||||
model_front_path = NodePath("Viewport/Node2D/CharacterFrontModel")
|
||||
model_front_animation_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationPlayer")
|
||||
model_front_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterFrontModel/AnimationTree")
|
||||
model_side_path = NodePath("Viewport/Node2D/CharacterSideModel")
|
||||
model_side_animation_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationPlayer")
|
||||
model_side_animation_tree_player_path = NodePath("Viewport/Node2D/CharacterSideModel/AnimationTree")
|
||||
cast_animation_index = 2
|
||||
cast_animation_scene = ExtResource( 7 )
|
||||
cast_animation_paths = [ NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l/hand_l/end"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/remote_arm_r/remote_hand_r/Position2D"), NodePath("Viewport/Node2D/CharacterSideModel/Hip/Torso/arm_l/hand_l/end") ]
|
||||
|
||||
[node name="Viewport" type="Viewport" parent="."]
|
||||
size = Vector2( 64, 64 )
|
||||
own_world = true
|
||||
world = SubResource( 2 )
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
hdr = false
|
||||
usage = 0
|
||||
render_target_v_flip = true
|
||||
render_target_update_mode = 3
|
||||
|
||||
[node name="Camera" type="Camera2D" parent="Viewport"]
|
||||
position = Vector2( 0, -15.726 )
|
||||
z_index = 2
|
||||
current = true
|
||||
|
||||
[node name="Node2D" type="Node2D" parent="Viewport"]
|
||||
|
||||
[node name="CharacterFrontModel" parent="Viewport/Node2D" instance=ExtResource( 1 )]
|
||||
_atlas = ExtResource( 6 )
|
||||
|
||||
[node name="Torso" parent="Viewport/Node2D/CharacterFrontModel/Hip" index="1"]
|
||||
position = Vector2( 0, -2.289 )
|
||||
|
||||
[node name="hand_l" parent="Viewport/Node2D/CharacterFrontModel/Hip/Torso/arm_l" index="0"]
|
||||
z_index = 1
|
||||
|
||||
[node name="AnimationTree" parent="Viewport/Node2D/CharacterFrontModel" index="2"]
|
||||
active = false
|
||||
|
||||
[node name="CharacterSideModel" parent="Viewport/Node2D" instance=ExtResource( 2 )]
|
||||
visible = false
|
||||
rotation = 3.14147
|
||||
scale = Vector2( 1, -1 )
|
||||
_atlas = ExtResource( 6 )
|
||||
|
||||
[node name="arm_r" parent="Viewport/Node2D/CharacterSideModel" index="0"]
|
||||
position = Vector2( -3.50004, -24.6155 )
|
||||
|
||||
[node name="hand_r" parent="Viewport/Node2D/CharacterSideModel" index="1"]
|
||||
position = Vector2( -3.50004, -19.1155 )
|
||||
z_index = 1
|
||||
|
||||
[node name="Torso" parent="Viewport/Node2D/CharacterSideModel/Hip" index="3"]
|
||||
position = Vector2( 0, -2 )
|
||||
|
||||
[node name="AnimationTree" parent="Viewport/Node2D/CharacterSideModel" index="4"]
|
||||
active = false
|
||||
|
||||
[node name="Viewport2" type="Viewport" parent="."]
|
||||
size = Vector2( 64, 64 )
|
||||
own_world = true
|
||||
world = SubResource( 4 )
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
keep_3d_linear = true
|
||||
render_target_v_flip = true
|
||||
render_target_update_mode = 3
|
||||
|
||||
[node name="Camera" type="Camera" parent="Viewport2"]
|
||||
transform = Transform( 1, 0, 0, 0, 0.889783, 0.456384, 0, -0.456384, 0.889783, 0, 0.154229, 0.172536 )
|
||||
projection = 1
|
||||
current = true
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="Viewport2"]
|
||||
|
||||
[node name="InstantPreview" type="Sprite" parent="."]
|
||||
|
||||
[node name="SpritePreview" type="Sprite" parent="."]
|
||||
|
||||
[node name="AtlasPreview" type="Sprite" parent="."]
|
||||
position = Vector2( 603.531, 254.594 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 101.579, 162.161 )
|
||||
texture = ExtResource( 4 )
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
frame = 9
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="Test" type="Sprite" parent="."]
|
||||
position = Vector2( -91.0568, 21.4517 )
|
||||
texture = ExtResource( 4 )
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
current = true
|
||||
|
||||
[editable path="Viewport/Node2D/CharacterFrontModel"]
|
||||
[editable path="Viewport/Node2D/CharacterSideModel"]
|
@ -1,314 +0,0 @@
|
||||
extends Node
|
||||
|
||||
export (int) var _sprite_size
|
||||
export (int) var _sprite_num
|
||||
var _directions : int = 4
|
||||
|
||||
export (bool) var _show_atlas = false
|
||||
|
||||
export (bool) var save_texture = false
|
||||
|
||||
export (bool) var generate : bool = false setget set_generate, get_generate
|
||||
|
||||
export (String) var output_file_name : String = "res://testsave.png"
|
||||
|
||||
export(bool) var outline_image : bool = true
|
||||
export(Color) var outline_color : Color = Color(0, 0, 0, 1)
|
||||
|
||||
export(bool) var modulate_image_color : bool = true
|
||||
export(Color) var modulate_color : Color = Color(1, 1, 1, 1)
|
||||
|
||||
export (Array, String) var animations : Array
|
||||
export (Array, NodePath) var z_index_paths : Array
|
||||
|
||||
export (NodePath) var instant_preview_path
|
||||
export (NodePath) var sprite_preview_path
|
||||
export (NodePath) var viewport_path
|
||||
export (NodePath) var atlas_preview_path
|
||||
|
||||
export (NodePath) var model_front_path
|
||||
export (NodePath) var model_front_animation_player_path
|
||||
export (NodePath) var model_front_animation_tree_player_path
|
||||
export (NodePath) var model_side_path
|
||||
export (NodePath) var model_side_animation_player_path
|
||||
export (NodePath) var model_side_animation_tree_player_path
|
||||
|
||||
export(int) var cast_animation_index : int = 0
|
||||
export(PackedScene) var cast_animation_scene : PackedScene = null
|
||||
export (Array, NodePath) var cast_animation_paths : Array
|
||||
var cast_animations : Array
|
||||
|
||||
var _viewport
|
||||
var _viewport_texture
|
||||
var _atlas
|
||||
var _image_texture
|
||||
var _atlas_texture
|
||||
|
||||
var _instant_preview
|
||||
var _sprite_preview
|
||||
var _atlas_preview
|
||||
|
||||
var _time = 0
|
||||
var _frame = 0
|
||||
var _index = 0
|
||||
var _direction = 0
|
||||
var _current_animation_index = 0
|
||||
var _current_animation_player = null
|
||||
|
||||
var _running = false
|
||||
|
||||
var _model_front
|
||||
var _model_front_animation_player
|
||||
var _model_front_animation_tree_player
|
||||
var _model_side
|
||||
var _model_side_animation_player
|
||||
var _model_side_animation_tree_player
|
||||
|
||||
var _texture
|
||||
|
||||
var _first = true
|
||||
|
||||
func _ready():
|
||||
_viewport = get_node(viewport_path)
|
||||
|
||||
_instant_preview = get_node(instant_preview_path)
|
||||
_sprite_preview = get_node(sprite_preview_path)
|
||||
_atlas_preview = get_node(atlas_preview_path)
|
||||
|
||||
var img = ImageTexture.new()
|
||||
img.flags = 0
|
||||
img.create(_sprite_size, _sprite_size, 5, 0)
|
||||
_sprite_preview.texture = img
|
||||
|
||||
_model_front = get_node(model_front_path)
|
||||
_model_front_animation_player = get_node(model_front_animation_player_path)
|
||||
_model_front_animation_tree_player = get_node(model_front_animation_tree_player_path)
|
||||
|
||||
if _model_side_animation_tree_player:
|
||||
_model_front_animation_tree_player.active = false
|
||||
|
||||
_model_side = get_node(model_side_path)
|
||||
_model_side_animation_player = get_node(model_side_animation_player_path)
|
||||
_model_side_animation_tree_player = get_node(model_side_animation_tree_player_path)
|
||||
|
||||
if _model_side_animation_tree_player:
|
||||
_model_side_animation_tree_player.active = false
|
||||
|
||||
_model_front.hide()
|
||||
_model_side.show()
|
||||
|
||||
_viewport_texture = _viewport.get_texture()
|
||||
|
||||
_texture = Image.new()
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
_texture.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame.get_format())
|
||||
|
||||
_running = true
|
||||
set_process(true)
|
||||
|
||||
func _process(delta):
|
||||
#todo remove, only to make development easier
|
||||
if !_viewport:
|
||||
_ready()
|
||||
|
||||
if _first:
|
||||
_first = false
|
||||
|
||||
setup_direction()
|
||||
|
||||
setup_animation()
|
||||
|
||||
return
|
||||
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
|
||||
if modulate_image_color:
|
||||
apply_modulate(frame)
|
||||
|
||||
if outline_image:
|
||||
generate_outline(frame)
|
||||
|
||||
|
||||
_sprite_preview.get_texture().set_data(frame)
|
||||
|
||||
if not _running:
|
||||
return
|
||||
|
||||
if _frame >= _sprite_num:
|
||||
_frame = 0
|
||||
_index += 1
|
||||
_direction += 1
|
||||
|
||||
if _direction >= _directions:
|
||||
_direction = 0
|
||||
|
||||
_current_animation_index += 1
|
||||
|
||||
setup_direction()
|
||||
|
||||
if (_index >= _directions * animations.size()):
|
||||
_running = false
|
||||
create_atlas()
|
||||
return
|
||||
|
||||
setup_animation()
|
||||
|
||||
return
|
||||
|
||||
var ur = frame.get_used_rect()
|
||||
var xx : float = 0
|
||||
xx = (_sprite_size - ur.size.x) / 2
|
||||
|
||||
_texture.blend_rect(frame, ur, Vector2((_frame * _sprite_size) + xx, (_index * _sprite_size)))
|
||||
|
||||
_current_animation_player.seek(_frame * (_current_animation_player.current_animation_length / (_sprite_num)), true)
|
||||
|
||||
_frame += 1
|
||||
|
||||
func setup_animation():
|
||||
_current_animation_player.play(animations[_current_animation_index])
|
||||
_current_animation_player.seek(0, true)
|
||||
|
||||
if !cast_animation_scene:
|
||||
return
|
||||
|
||||
if _current_animation_index == cast_animation_index:
|
||||
for cap in cast_animation_paths:
|
||||
var n = get_node(cap)
|
||||
|
||||
if !n:
|
||||
continue
|
||||
|
||||
var pa = cast_animation_scene.instance()
|
||||
|
||||
cast_animations.push_back(pa)
|
||||
|
||||
n.add_child(pa)
|
||||
else:
|
||||
for n in cast_animations:
|
||||
n.queue_free()
|
||||
|
||||
cast_animations.clear()
|
||||
|
||||
#enum CharacterFacing
|
||||
# FACING_FRONT = 0,
|
||||
# FACING_BACK = 1,
|
||||
# FACING_RIGHT = 2,
|
||||
# FACING_LEFT = 3,
|
||||
|
||||
func setup_direction():
|
||||
for a in cast_animations:
|
||||
if a.has_method("get_z_index"):
|
||||
a.z_index = 0
|
||||
|
||||
if _direction == 0:
|
||||
_current_animation_player = _model_side_animation_player
|
||||
_model_side.set_facing(2)
|
||||
_model_side.transform.x.x = -1
|
||||
|
||||
_model_side.show()
|
||||
_model_front.hide()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 1:
|
||||
_current_animation_player = _model_side_animation_player
|
||||
_model_side.set_facing(3)
|
||||
_model_side.transform.x.x = 1
|
||||
|
||||
_model_side.show()
|
||||
_model_front.hide()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 2:
|
||||
_current_animation_player = _model_front_animation_player
|
||||
_model_front.set_facing(0)
|
||||
|
||||
_model_side.hide()
|
||||
_model_front.show()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 3:
|
||||
_current_animation_player = _model_front_animation_player
|
||||
_model_front.set_facing(1)
|
||||
|
||||
_model_side.hide()
|
||||
_model_front.show()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = -1
|
||||
|
||||
for a in cast_animations:
|
||||
if a.has_method("get_z_index"):
|
||||
a.z_index = -1
|
||||
|
||||
|
||||
func generate_outline(img : Image):
|
||||
img.lock()
|
||||
|
||||
for x in range(1, img.get_size().x - 1):
|
||||
for y in range(1, img.get_size().y - 1):
|
||||
var c : Color = img.get_pixel(x, y)
|
||||
|
||||
if is_zero_approx(c.a):
|
||||
var cxn : Color = img.get_pixel(x - 1, y)
|
||||
var cxp : Color = img.get_pixel(x + 1, y)
|
||||
var cyn : Color = img.get_pixel(x, y - 1)
|
||||
var cyp : Color = img.get_pixel(x, y + 1)
|
||||
|
||||
if cxn.is_equal_approx(outline_color):
|
||||
cxn.a = 0
|
||||
|
||||
if cxp.is_equal_approx(outline_color):
|
||||
cxp.a = 0
|
||||
|
||||
if cyn.is_equal_approx(outline_color):
|
||||
cyn.a = 0
|
||||
|
||||
if cyp.is_equal_approx(outline_color):
|
||||
cyp.a = 0
|
||||
|
||||
if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a):
|
||||
img.set_pixel(x, y, outline_color)
|
||||
|
||||
img.unlock()
|
||||
|
||||
func apply_modulate(img : Image):
|
||||
img.lock()
|
||||
|
||||
for x in range(1, img.get_width()):
|
||||
for y in range(1, img.get_height()):
|
||||
var c : Color = img.get_pixel(x, y)
|
||||
|
||||
c *= modulate_color
|
||||
|
||||
img.set_pixel(x, y, c)
|
||||
|
||||
img.unlock()
|
||||
|
||||
func create_atlas():
|
||||
_image_texture = ImageTexture.new()
|
||||
_image_texture.create_from_image(_texture, 0)
|
||||
|
||||
_image_texture.get_data().save_png(output_file_name)
|
||||
|
||||
if save_texture:
|
||||
_sprite_preview.set_texture(_image_texture)
|
||||
|
||||
if _show_atlas:
|
||||
_atlas_preview.set_texture(_image_texture)
|
||||
|
||||
|
||||
func set_generate(v : bool) -> void:
|
||||
if !v:
|
||||
return
|
||||
|
||||
#for easier development
|
||||
_ready()
|
||||
_running = true
|
||||
#set_process(true)
|
||||
|
||||
func get_generate() -> bool:
|
||||
return false
|
@ -1,331 +0,0 @@
|
||||
extends Node
|
||||
|
||||
export (int) var _sprite_size
|
||||
export (int) var _sprite_num
|
||||
var _directions : int = 4
|
||||
|
||||
export(bool) var outline_image : bool = true
|
||||
export(Color) var outline_color : Color = Color(0, 0, 0, 1)
|
||||
|
||||
export (bool) var _show_atlas = false
|
||||
|
||||
export (bool) var save_texture = false
|
||||
|
||||
export (bool) var generate : bool = false setget set_generate, get_generate
|
||||
|
||||
export (String) var output_file_name : String = "res://testsave.png"
|
||||
|
||||
export (Array, String) var animations : Array
|
||||
export (Array, NodePath) var z_index_paths : Array
|
||||
|
||||
export (NodePath) var wp2_sprite3d_path
|
||||
|
||||
export (NodePath) var instant_preview_path
|
||||
export (NodePath) var sprite_preview_path
|
||||
export (NodePath) var viewport_path
|
||||
export (NodePath) var viewport2_path
|
||||
export (NodePath) var atlas_preview_path
|
||||
|
||||
export (NodePath) var model_front_path
|
||||
export (NodePath) var model_front_animation_player_path
|
||||
export (NodePath) var model_front_animation_tree_player_path
|
||||
export (NodePath) var model_side_path
|
||||
export (NodePath) var model_side_animation_player_path
|
||||
export (NodePath) var model_side_animation_tree_player_path
|
||||
|
||||
export(int) var cast_animation_index : int = 0
|
||||
export(PackedScene) var cast_animation_scene : PackedScene = null
|
||||
export (Array, NodePath) var cast_animation_paths : Array
|
||||
var cast_animations : Array
|
||||
|
||||
var _wp2_sprite3d
|
||||
|
||||
var _viewport
|
||||
var _viewport_texture
|
||||
var _viewport2
|
||||
var _viewport2_texture
|
||||
var _atlas
|
||||
var _image_texture
|
||||
var _atlas_texture
|
||||
|
||||
var _instant_preview
|
||||
var _sprite_preview
|
||||
var _atlas_preview
|
||||
|
||||
var _time = 0
|
||||
var _frame = 0
|
||||
var _index = 0
|
||||
var _frame_atlas = 0
|
||||
var _index_atlas = 0
|
||||
var _direction = 0
|
||||
var _current_animation_index = 0
|
||||
var _current_animation_player = null
|
||||
|
||||
var _running = false
|
||||
|
||||
var _model_front
|
||||
var _model_front_animation_player
|
||||
var _model_front_animation_tree_player
|
||||
var _model_side
|
||||
var _model_side_animation_player
|
||||
var _model_side_animation_tree_player
|
||||
|
||||
var _texture
|
||||
var _texture2
|
||||
|
||||
var _first = true
|
||||
var _first_frame = true
|
||||
|
||||
func _ready():
|
||||
_viewport = get_node(viewport_path)
|
||||
_viewport2 = get_node(viewport2_path)
|
||||
_wp2_sprite3d = get_node(wp2_sprite3d_path)
|
||||
|
||||
_instant_preview = get_node(instant_preview_path)
|
||||
_sprite_preview = get_node(sprite_preview_path)
|
||||
_atlas_preview = get_node(atlas_preview_path)
|
||||
|
||||
var img = ImageTexture.new()
|
||||
img.flags = 0
|
||||
img.create(_sprite_size, _sprite_size, 5, 0)
|
||||
_sprite_preview.texture = img
|
||||
|
||||
var img2 = ImageTexture.new()
|
||||
img2.flags = 0
|
||||
img2.create(64, 64, 5, 0)
|
||||
_wp2_sprite3d.texture = img2
|
||||
|
||||
_model_front = get_node(model_front_path)
|
||||
_model_front_animation_player = get_node(model_front_animation_player_path)
|
||||
_model_front_animation_tree_player = get_node(model_front_animation_tree_player_path)
|
||||
|
||||
if _model_side_animation_tree_player:
|
||||
_model_front_animation_tree_player.active = false
|
||||
|
||||
_model_side = get_node(model_side_path)
|
||||
_model_side_animation_player = get_node(model_side_animation_player_path)
|
||||
_model_side_animation_tree_player = get_node(model_side_animation_tree_player_path)
|
||||
|
||||
if _model_side_animation_tree_player:
|
||||
_model_side_animation_tree_player.active = false
|
||||
|
||||
_model_front.hide()
|
||||
_model_side.show()
|
||||
|
||||
_viewport_texture = _viewport.get_texture()
|
||||
|
||||
_texture = Image.new()
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
_texture.create(64, 64, false, frame.get_format())
|
||||
|
||||
_texture2 = Image.new()
|
||||
var frame2 = _viewport2.get_texture().get_data()
|
||||
_texture2.create(_sprite_size * _sprite_num, _sprite_size * _directions * animations.size(), false, frame2.get_format())
|
||||
|
||||
|
||||
_running = true
|
||||
set_process(true)
|
||||
|
||||
func _process(delta):
|
||||
if not _running:
|
||||
return
|
||||
|
||||
#todo remove, only to make development easier
|
||||
if !_viewport || !_viewport2:
|
||||
_ready()
|
||||
|
||||
if _first:
|
||||
_first = false
|
||||
|
||||
setup_direction()
|
||||
setup_animation()
|
||||
|
||||
return
|
||||
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
|
||||
_wp2_sprite3d.get_texture().set_data(frame)
|
||||
|
||||
if _first_frame:
|
||||
_first_frame = false
|
||||
#we need to let the second step render the first image from the prev step
|
||||
return
|
||||
|
||||
var frame2 = _viewport2.get_texture().get_data()
|
||||
|
||||
if outline_image:
|
||||
generate_outline(frame2)
|
||||
|
||||
var ur = frame2.get_used_rect()
|
||||
var xx : float = 0
|
||||
xx = (_sprite_size - ur.size.x) / 2
|
||||
_texture2.blend_rect(frame2, ur, Vector2((_frame_atlas * _sprite_size) + xx, (_index_atlas * _sprite_size)))
|
||||
_current_animation_player.seek(_frame_atlas * (_current_animation_player.current_animation_length / (_sprite_num)), true)
|
||||
|
||||
if (_index >= _directions * animations.size()):
|
||||
_running = false
|
||||
create_atlas()
|
||||
return
|
||||
|
||||
_frame_atlas = _frame
|
||||
_index_atlas = _index
|
||||
|
||||
_sprite_preview.get_texture().set_data(frame2)
|
||||
|
||||
if _frame >= _sprite_num:
|
||||
_frame = 0
|
||||
_index += 1
|
||||
_direction += 1
|
||||
|
||||
if _direction >= _directions:
|
||||
_direction = 0
|
||||
|
||||
_current_animation_index += 1
|
||||
|
||||
setup_direction()
|
||||
|
||||
if (_index >= _directions * animations.size()):
|
||||
# _running = false
|
||||
# create_atlas()
|
||||
return
|
||||
|
||||
setup_animation()
|
||||
|
||||
return
|
||||
|
||||
_frame += 1
|
||||
|
||||
func setup_animation():
|
||||
_current_animation_player.play(animations[_current_animation_index])
|
||||
_current_animation_player.seek(0, true)
|
||||
|
||||
if !cast_animation_scene:
|
||||
return
|
||||
|
||||
if _current_animation_index == cast_animation_index:
|
||||
for cap in cast_animation_paths:
|
||||
var n = get_node(cap)
|
||||
|
||||
if !n:
|
||||
continue
|
||||
|
||||
var pa = cast_animation_scene.instance()
|
||||
|
||||
cast_animations.push_back(pa)
|
||||
|
||||
n.add_child(pa)
|
||||
else:
|
||||
for n in cast_animations:
|
||||
n.queue_free()
|
||||
|
||||
cast_animations.clear()
|
||||
|
||||
#enum CharacterFacing
|
||||
# FACING_FRONT = 0,
|
||||
# FACING_BACK = 1,
|
||||
# FACING_RIGHT = 2,
|
||||
# FACING_LEFT = 3,
|
||||
|
||||
func setup_direction():
|
||||
for a in cast_animations:
|
||||
if a.has_method("get_z_index"):
|
||||
a.z_index = 0
|
||||
|
||||
if _direction == 0:
|
||||
_current_animation_player = _model_side_animation_player
|
||||
_model_side.set_facing(2)
|
||||
_model_side.transform.x.x = -1
|
||||
|
||||
_model_side.show()
|
||||
_model_front.hide()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 1:
|
||||
_current_animation_player = _model_side_animation_player
|
||||
_model_side.set_facing(3)
|
||||
_model_side.transform.x.x = 1
|
||||
|
||||
_model_side.show()
|
||||
_model_front.hide()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 2:
|
||||
_current_animation_player = _model_front_animation_player
|
||||
_model_front.set_facing(0)
|
||||
|
||||
_model_side.hide()
|
||||
_model_front.show()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = 0
|
||||
if _direction == 3:
|
||||
_current_animation_player = _model_front_animation_player
|
||||
_model_front.set_facing(1)
|
||||
|
||||
_model_side.hide()
|
||||
_model_front.show()
|
||||
|
||||
for np in z_index_paths:
|
||||
get_node(np).z_index = -1
|
||||
|
||||
for a in cast_animations:
|
||||
if a.has_method("get_z_index"):
|
||||
a.z_index = -1
|
||||
|
||||
|
||||
func generate_outline(img : Image):
|
||||
img.lock()
|
||||
|
||||
for x in range(1, img.get_size().x - 1):
|
||||
for y in range(1, img.get_size().y - 1):
|
||||
var c : Color = img.get_pixel(x, y)
|
||||
|
||||
if is_zero_approx(c.a):
|
||||
var cxn : Color = img.get_pixel(x - 1, y)
|
||||
var cxp : Color = img.get_pixel(x + 1, y)
|
||||
var cyn : Color = img.get_pixel(x, y - 1)
|
||||
var cyp : Color = img.get_pixel(x, y + 1)
|
||||
|
||||
if cxn.is_equal_approx(outline_color):
|
||||
cxn.a = 0
|
||||
|
||||
if cxp.is_equal_approx(outline_color):
|
||||
cxp.a = 0
|
||||
|
||||
if cyn.is_equal_approx(outline_color):
|
||||
cyn.a = 0
|
||||
|
||||
if cyp.is_equal_approx(outline_color):
|
||||
cyp.a = 0
|
||||
|
||||
if !is_zero_approx(cxn.a) || !is_zero_approx(cxp.a) || !is_zero_approx(cyn.a) || !is_zero_approx(cyp.a):
|
||||
img.set_pixel(x, y, outline_color)
|
||||
|
||||
img.unlock()
|
||||
|
||||
func create_atlas():
|
||||
_image_texture = ImageTexture.new()
|
||||
_image_texture.create_from_image(_texture2, 0)
|
||||
|
||||
_image_texture.get_data().save_png(output_file_name)
|
||||
|
||||
if save_texture:
|
||||
_sprite_preview.set_texture(_image_texture)
|
||||
|
||||
if _show_atlas:
|
||||
_atlas_preview.set_texture(_image_texture)
|
||||
|
||||
|
||||
func set_generate(v : bool) -> void:
|
||||
if !v:
|
||||
return
|
||||
|
||||
#for easier development
|
||||
_ready()
|
||||
_running = true
|
||||
#set_process(true)
|
||||
|
||||
func get_generate() -> bool:
|
||||
return false
|
@ -1,22 +0,0 @@
|
||||
[gd_scene load_steps=4 format=2]
|
||||
|
||||
[ext_resource path="res://icon.png" type="Texture" id=1]
|
||||
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2]
|
||||
|
||||
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=1]
|
||||
flags_transparent = true
|
||||
params_billboard_mode = 1
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 )
|
||||
material_override = SubResource( 1 )
|
||||
cast_shadow = 0
|
||||
flip_v = true
|
||||
pixel_size = 0.064
|
||||
texture = ExtResource( 1 )
|
||||
vframes = 16
|
||||
hframes = 16
|
||||
script = ExtResource( 2 )
|
||||
|
@ -1,82 +0,0 @@
|
||||
extends Node
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
var _sprite
|
||||
|
||||
export (bool) var enabled = true
|
||||
export(int) var _animset = 0
|
||||
export(int) var _animset_size = 16
|
||||
export(int) var _animset_count = 16
|
||||
var _min_frame = 0
|
||||
var _max_frame = 16 * 16
|
||||
|
||||
var x = 0
|
||||
var y = 0
|
||||
var timer = 0
|
||||
var _frame = 1
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
_sprite = get_node(".")
|
||||
_sprite.set_frame(_min_frame)
|
||||
#_sprite.set_position(Vector2(x, y))
|
||||
|
||||
func set_movement_vector(vector):
|
||||
var a = Vector2(vector.x, vector.z)
|
||||
a = a.normalized()
|
||||
|
||||
var base = Vector2(0, -1)
|
||||
|
||||
var angle = a.angle_to(base) + PI
|
||||
|
||||
var slice = (2*PI) / _animset_count
|
||||
|
||||
var num_slice = int(angle / slice)
|
||||
|
||||
set_animset(num_slice)
|
||||
|
||||
func set_animset(animest_id):
|
||||
if (animest_id >= _animset_count):
|
||||
_animset = _animset_count - 1
|
||||
|
||||
if (animest_id < 0):
|
||||
_animset = 0
|
||||
|
||||
_animset = animest_id
|
||||
|
||||
|
||||
#_min_frame = _animset * _animset_size
|
||||
#_max_frame = _animset * _animset_size + _animset_size
|
||||
|
||||
func _process(delta):
|
||||
#set_animset(_animset)
|
||||
|
||||
if not enabled:
|
||||
set_process(false)
|
||||
return
|
||||
|
||||
timer += delta
|
||||
|
||||
if (timer > 0.05):
|
||||
timer -= 0.05
|
||||
_frame += 1
|
||||
|
||||
if _frame > _animset_size - 1:
|
||||
_frame = 0
|
||||
|
||||
_sprite.set_frame(_frame + (_animset * _animset_size))
|
||||
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func a_process(delta):
|
||||
#x += int(delta * 300)
|
||||
y += int(delta * 200)
|
||||
|
||||
if y > 700:
|
||||
y = -50
|
||||
|
||||
_sprite.set_position(Vector2(x, y))
|
File diff suppressed because one or more lines are too long
@ -1,137 +0,0 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://spritesheet_generator/SheetGen.gd" type="Script" id=3]
|
||||
[ext_resource path="res://spritesheet_generator_3d/Spatial.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=5]
|
||||
[ext_resource path="res://spritesheet_generator/Sprite3Ds.tscn" type="PackedScene" id=6]
|
||||
|
||||
[sub_resource type="ProceduralSky" id=1]
|
||||
|
||||
[sub_resource type="Environment" id=2]
|
||||
background_mode = 2
|
||||
background_sky = SubResource( 1 )
|
||||
background_color = Color( 0.364706, 0.364706, 0.364706, 1 )
|
||||
background_energy = 0.69
|
||||
ambient_light_color = Color( 1, 1, 1, 1 )
|
||||
ambient_light_energy = 0.68
|
||||
ambient_light_sky_contribution = 0.0
|
||||
|
||||
[sub_resource type="Environment" id=3]
|
||||
background_mode = 1
|
||||
background_energy = 0.57
|
||||
ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 )
|
||||
ambient_light_energy = 0.68
|
||||
ssao_enabled = true
|
||||
|
||||
[sub_resource type="World" id=4]
|
||||
environment = SubResource( 3 )
|
||||
|
||||
[sub_resource type="Environment" id=5]
|
||||
background_mode = 1
|
||||
background_energy = 0.26
|
||||
ambient_light_color = Color( 0.113725, 0.113725, 0.113725, 1 )
|
||||
ambient_light_energy = 0.58
|
||||
ambient_light_sky_contribution = 0.1
|
||||
tonemap_exposure = 0.36
|
||||
tonemap_white = 0.47
|
||||
|
||||
[sub_resource type="ViewportTexture" id=6]
|
||||
viewport_path = NodePath("Viewport")
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=7]
|
||||
flags_transparent = true
|
||||
params_billboard_mode = 1
|
||||
|
||||
[node name="Node" type="Node"]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource( 2 )
|
||||
|
||||
[node name="player2" parent="." instance=ExtResource( 4 )]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -34.2601 )
|
||||
visible = false
|
||||
|
||||
[node name="player" parent="." instance=ExtResource( 4 )]
|
||||
visible = false
|
||||
|
||||
[node name="MicamoChar" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
[node name="Viewport" type="Viewport" parent="."]
|
||||
size = Vector2( 32, 32 )
|
||||
own_world = true
|
||||
world = SubResource( 4 )
|
||||
transparent_bg = true
|
||||
handle_input_locally = false
|
||||
hdr = false
|
||||
render_target_v_flip = true
|
||||
render_target_update_mode = 3
|
||||
script = ExtResource( 3 )
|
||||
_sprite_size = 32
|
||||
_sprite_num = 16
|
||||
save_texture = true
|
||||
|
||||
[node name="MicamoChar" parent="Viewport" instance=ExtResource( 4 )]
|
||||
|
||||
[node name="Camera" type="Camera" parent="Viewport"]
|
||||
transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866025, 0.5, -0.707107, -0.353553, 0.612372, 2.95796, 3.39896, 2.92486 )
|
||||
environment = SubResource( 5 )
|
||||
projection = 1
|
||||
current = true
|
||||
size = 2.2
|
||||
near = 0.01
|
||||
far = 240.8
|
||||
|
||||
[node name="OmniLight" type="OmniLight" parent="Viewport"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3.05496, 1.55159, 3.33238 )
|
||||
layers = 3
|
||||
light_color = Color( 0.952941, 0.929412, 0.807843, 1 )
|
||||
light_energy = 0.74
|
||||
light_indirect_energy = 1.27
|
||||
light_specular = 0.15
|
||||
omni_range = 6.4
|
||||
omni_attenuation = 1.1487
|
||||
|
||||
[node name="OmniLight2" type="OmniLight" parent="Viewport"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.4893, 3.88558, -2.30035 )
|
||||
light_color = Color( 0.898039, 0.898039, 0.729412, 1 )
|
||||
light_energy = 0.58
|
||||
light_indirect_energy = 2.95
|
||||
omni_range = 4.3
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 837.448, 475.588 )
|
||||
centered = false
|
||||
flip_v = true
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 0.707107, -0.353553, 0.612372, 0, 0.866026, 0.5, -0.707107, -0.353553, 0.612372, 13.5879, 9.78323, 18.7533 )
|
||||
projection = 1
|
||||
current = true
|
||||
size = 10.0
|
||||
|
||||
[node name="Sprite2" type="Sprite" parent="."]
|
||||
position = Vector2( 179.55, 160.55 )
|
||||
texture = SubResource( 6 )
|
||||
flip_v = true
|
||||
|
||||
[node name="Sprite3" type="Sprite" parent="."]
|
||||
position = Vector2( 603.531, 254.594 )
|
||||
flip_v = true
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 8.18889, 0, 14.9987 )
|
||||
material_override = SubResource( 7 )
|
||||
cast_shadow = 0
|
||||
flip_v = true
|
||||
pixel_size = 0.0156
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
script = ExtResource( 5 )
|
||||
|
||||
[node name="Sprite3D2" parent="." instance=ExtResource( 6 )]
|
||||
visible = false
|
||||
|
||||
[editable path="Viewport/MicamoChar"]
|
@ -1,129 +0,0 @@
|
||||
extends Node
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
export (int) var _sprite_size
|
||||
export (int) var _sprite_num
|
||||
export (int) var _directions
|
||||
|
||||
export (bool) var _show_atlas = false
|
||||
|
||||
export (bool) var save_texture = false
|
||||
|
||||
export (NodePath) var _atlas_show_sprite_path
|
||||
export (NodePath) var _sprite_path
|
||||
export (NodePath) var _animation_player_path
|
||||
export (NodePath) var _player_path
|
||||
export (NodePath) var _animation_tree_player_path
|
||||
|
||||
var _viewport
|
||||
var _viewport_texture
|
||||
var _sprite
|
||||
var _animation_player
|
||||
var _time = 0
|
||||
var _animation_tree_player
|
||||
var _frame = 0
|
||||
var _rotcount = 0
|
||||
var _rotation = 0
|
||||
var _atlas
|
||||
var _image_texture
|
||||
var _running = false
|
||||
var _atlas_sprite_show_node
|
||||
var _atlas_texture
|
||||
var _player
|
||||
|
||||
var _texture
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
_viewport = get_node(".")
|
||||
#_viewport.set
|
||||
_sprite = get_node(_sprite_path)
|
||||
_atlas_sprite_show_node = get_node(_atlas_show_sprite_path)
|
||||
_animation_player = get_node(_animation_player_path)
|
||||
_player = get_node(_player_path)
|
||||
_animation_tree_player = get_node(_animation_tree_player_path)
|
||||
_viewport_texture = _viewport.get_texture()
|
||||
|
||||
_texture = Image.new()
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
_texture.create(_sprite_size * _sprite_num, _sprite_size * _directions, false, frame.get_format())
|
||||
|
||||
yield(get_tree(), "idle_frame")
|
||||
yield(get_tree(), "idle_frame")
|
||||
|
||||
_running = true
|
||||
|
||||
#_generated_image = Image.new()
|
||||
#_generated_image.
|
||||
#_sprite.set_texture(_viewport_texture)
|
||||
|
||||
|
||||
#_frame_data.clear()
|
||||
|
||||
#_generated_image.create_from_data(64, 64, false, Image.FORMAT_RGBA4444, texture.get_data().get_data())
|
||||
#texture = _viewport.get_texture()
|
||||
#_sprite.set_texture(texture)
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
|
||||
#if not _running and Input.is_key_pressed(KEY_K):
|
||||
# _running = true
|
||||
|
||||
if not _running:
|
||||
return
|
||||
|
||||
#_viewport.update_worlds()
|
||||
|
||||
var frame = _viewport.get_texture().get_data()
|
||||
|
||||
|
||||
#if _frame == 0 and _rotcount == 0:
|
||||
|
||||
_texture.blend_rect(frame, frame.get_used_rect(), Vector2((_frame * _sprite_size), (_rotcount * _sprite_size)))
|
||||
|
||||
#_time += 0.3
|
||||
#_animation_player.seek (_time , true )
|
||||
_frame += 1
|
||||
|
||||
if _frame > _sprite_num - 1:
|
||||
_frame = 0
|
||||
|
||||
_rotcount += 1
|
||||
|
||||
if (_rotcount > _sprite_num - 1):
|
||||
_running = false
|
||||
create_atlas()
|
||||
return
|
||||
|
||||
#var m3 = Basis()
|
||||
#m3 = m3.rotated( Vector3(0,1,0), 0.19625 )
|
||||
_player.rotate_y((PI*2)/float(_directions))
|
||||
|
||||
_animation_player.play("default")
|
||||
#_rotation = _rotcount * 22.5
|
||||
#_player.tra
|
||||
|
||||
|
||||
#return
|
||||
|
||||
#0.83
|
||||
_animation_player.seek(_frame * (_animation_player.current_animation_length / (_sprite_num - 1)), true)
|
||||
#_animation_tree_player.advance(0.05)
|
||||
|
||||
|
||||
func create_atlas():
|
||||
_image_texture = ImageTexture.new()
|
||||
_image_texture.create_from_image(_texture, 0)
|
||||
|
||||
_image_texture.get_data().save_png("res://testsave.png")
|
||||
|
||||
if save_texture:
|
||||
_sprite.set_texture(_image_texture)
|
||||
|
||||
if _show_atlas:
|
||||
_atlas_sprite_show_node.set_texture(_image_texture)
|
||||
|
||||
pass
|
@ -1,3 +0,0 @@
|
||||
[gd_scene format=2]
|
||||
|
||||
[node name="Spatial" type="Spatial"]
|
@ -1,19 +0,0 @@
|
||||
[gd_scene load_steps=4 format=2]
|
||||
|
||||
[ext_resource path="res://testsave.png" type="Texture" id=1]
|
||||
[ext_resource path="res://spritesheet_generator/SpriteMover.gd" type="Script" id=2]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=1]
|
||||
flags_transparent = true
|
||||
params_billboard_mode = 1
|
||||
|
||||
[node name="Sprite3D" type="Sprite3D"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.39352, 0 )
|
||||
material_override = SubResource( 1 )
|
||||
cast_shadow = 0
|
||||
flip_v = true
|
||||
pixel_size = 0.064
|
||||
texture = ExtResource( 1 )
|
||||
hframes = 16
|
||||
vframes = 16
|
||||
script = ExtResource( 2 )
|
@ -1,82 +0,0 @@
|
||||
extends Node
|
||||
|
||||
# Declare member variables here. Examples:
|
||||
# var a = 2
|
||||
# var b = "text"
|
||||
|
||||
var _sprite
|
||||
|
||||
export (bool) var enabled = true
|
||||
export(int) var _animset = 0
|
||||
export(int) var _animset_size = 16
|
||||
export(int) var _animset_count = 16
|
||||
var _min_frame = 0
|
||||
var _max_frame = 16 * 16
|
||||
|
||||
var x = 0
|
||||
var y = 0
|
||||
var timer = 0
|
||||
var _frame = 1
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
_sprite = get_node(".")
|
||||
_sprite.set_frame(_min_frame)
|
||||
#_sprite.set_position(Vector2(x, y))
|
||||
|
||||
func set_movement_vector(vector):
|
||||
var a = Vector2(vector.x, vector.z)
|
||||
a = a.normalized()
|
||||
|
||||
var base = Vector2(0, -1)
|
||||
|
||||
var angle = a.angle_to(base) + PI
|
||||
|
||||
var slice = (2*PI) / _animset_count
|
||||
|
||||
var num_slice = int(angle / slice)
|
||||
|
||||
set_animset(num_slice)
|
||||
|
||||
func set_animset(animest_id):
|
||||
if (animest_id >= _animset_count):
|
||||
_animset = _animset_count - 1
|
||||
|
||||
if (animest_id < 0):
|
||||
_animset = 0
|
||||
|
||||
_animset = animest_id
|
||||
|
||||
|
||||
#_min_frame = _animset * _animset_size
|
||||
#_max_frame = _animset * _animset_size + _animset_size
|
||||
|
||||
func _process(delta):
|
||||
#set_animset(_animset)
|
||||
|
||||
if not enabled:
|
||||
set_process(false)
|
||||
return
|
||||
|
||||
timer += delta
|
||||
|
||||
if (timer > 0.05):
|
||||
timer -= 0.05
|
||||
_frame += 1
|
||||
|
||||
if _frame > _animset_size - 1:
|
||||
_frame = 0
|
||||
|
||||
_sprite.set_frame(_frame + (_animset * _animset_size))
|
||||
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func a_process(delta):
|
||||
#x += int(delta * 300)
|
||||
y += int(delta * 200)
|
||||
|
||||
if y > 700:
|
||||
y = -50
|
||||
|
||||
_sprite.set_position(Vector2(x, y))
|
Loading…
Reference in New Issue
Block a user