Added basic data structure for project files.
This commit is contained in:
parent
d285f7a12d
commit
34a7a8dd6d
|
@ -0,0 +1,12 @@
|
||||||
|
[gd_resource type="Resource" load_steps=4 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://addons/summer_day/data/scene/scene.gd" type="Script" id=1]
|
||||||
|
[ext_resource path="res://addons/summer_day/data/document/document.gd" type="Script" id=2]
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=1]
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
aspect_ratio = Vector2( 12, 9 )
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
scene = SubResource( 1 )
|
|
@ -5,8 +5,9 @@ extends Resource
|
||||||
class_name SummerDayBlueprint
|
class_name SummerDayBlueprint
|
||||||
|
|
||||||
|
|
||||||
var editables = []
|
func create_model() -> PackedScene: # Virtual.
|
||||||
|
return null
|
||||||
|
|
||||||
|
|
||||||
func _setup_editables():
|
func create_cell() -> SummerDayCell: # Virtual.
|
||||||
pass
|
return null
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
tool
|
||||||
|
extends Resource
|
||||||
|
class_name SummerDayCell
|
||||||
|
|
||||||
|
|
||||||
|
var editable_list = []
|
|
@ -4,6 +4,14 @@ class_name SummerDayDocument
|
||||||
|
|
||||||
|
|
||||||
export(Resource) var scene = _scene_generation()
|
export(Resource) var scene = _scene_generation()
|
||||||
|
export(Array, Resource) var tracks
|
||||||
|
|
||||||
|
|
||||||
|
func add_blueprint(blueprint: SummerDayBlueprint):
|
||||||
|
var track = SummerDayTrack.new()
|
||||||
|
track.blueprint = blueprint
|
||||||
|
track.add_drawing()
|
||||||
|
tracks.append(track)
|
||||||
|
|
||||||
|
|
||||||
func _scene_generation() -> SummerDayScene:
|
func _scene_generation() -> SummerDayScene:
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
tool
|
||||||
|
extends Resource
|
||||||
|
class_name SummerDayTrack
|
||||||
|
|
||||||
|
|
||||||
|
export(Resource) var blueprint
|
||||||
|
export(Array, Resource) var drawings
|
||||||
|
|
||||||
|
|
||||||
|
func add_drawing():
|
||||||
|
var new_drawing = blueprint.duplicate(true)
|
||||||
|
drawings.append(new_drawing)
|
|
@ -0,0 +1,3 @@
|
||||||
|
tool
|
||||||
|
extends Resource
|
||||||
|
class_name SummerDaySceneFrame
|
|
@ -1,6 +1,7 @@
|
||||||
tool
|
tool
|
||||||
extends EditorPlugin
|
extends EditorPlugin
|
||||||
|
|
||||||
|
signal document_changed(new_doc)
|
||||||
signal sd_scene_changed(new_scene)
|
signal sd_scene_changed(new_scene)
|
||||||
|
|
||||||
const MainScreen = preload("res://addons/summer_day/main_screen.tscn")
|
const MainScreen = preload("res://addons/summer_day/main_screen.tscn")
|
||||||
|
@ -21,6 +22,8 @@ func _enter_tree():
|
||||||
main_screen_instance = MainScreen.instance()
|
main_screen_instance = MainScreen.instance()
|
||||||
Canvas = main_screen_instance.get_node("Canvas")
|
Canvas = main_screen_instance.get_node("Canvas")
|
||||||
Canvas.tool_context = tool_context
|
Canvas.tool_context = tool_context
|
||||||
|
self.connect("document_changed",
|
||||||
|
Canvas, "_on_SummerDay_document_changed")
|
||||||
self.connect("sd_scene_changed",
|
self.connect("sd_scene_changed",
|
||||||
Canvas, "_on_SummerDay_scene_changed"
|
Canvas, "_on_SummerDay_scene_changed"
|
||||||
)
|
)
|
||||||
|
@ -79,6 +82,7 @@ func handles(object):
|
||||||
|
|
||||||
|
|
||||||
func edit(object):
|
func edit(object):
|
||||||
|
emit_signal("document_changed", object)
|
||||||
emit_signal("sd_scene_changed", object.scene)
|
emit_signal("sd_scene_changed", object.scene)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ var hand_grabbed = false
|
||||||
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT:
|
if event.button_index == BUTTON_LEFT:
|
||||||
hand_grabbed = event.is_pressed() and event.control
|
hand_grabbed = event.is_pressed() and event.alt
|
||||||
if event.button_index == BUTTON_MIDDLE:
|
if event.button_index == BUTTON_MIDDLE:
|
||||||
hand_grabbed = event.is_pressed()
|
hand_grabbed = event.is_pressed()
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ func _init():
|
||||||
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT:
|
if event.button_index == BUTTON_LEFT:
|
||||||
if event.is_pressed() and event.shift and event.control:
|
if event.is_pressed() and event.control and event.alt:
|
||||||
initial_transform = tool_context.canvas_state.canvas_transform
|
initial_transform = tool_context.canvas_state.canvas_transform
|
||||||
var canvas_center = tool_context.canvas_state.rect_size * 0.5
|
var canvas_center = tool_context.canvas_state.rect_size * 0.5
|
||||||
initial_angle = event.position.angle_to_point(canvas_center)
|
initial_angle = event.position.angle_to_point(canvas_center)
|
||||||
|
|
|
@ -5,6 +5,7 @@ class_name SummerDayZoomCanvasTool
|
||||||
var zoom_activated := false
|
var zoom_activated := false
|
||||||
var initial_transform: Transform2D
|
var initial_transform: Transform2D
|
||||||
var initial_mouse_position: Vector2
|
var initial_mouse_position: Vector2
|
||||||
|
var is_space_pressed = false
|
||||||
|
|
||||||
|
|
||||||
func _init():
|
func _init():
|
||||||
|
@ -12,10 +13,16 @@ func _init():
|
||||||
modifier_layer = 1
|
modifier_layer = 1
|
||||||
|
|
||||||
|
|
||||||
|
func _handle_global_input(event: InputEvent):
|
||||||
|
if event is InputEventKey:
|
||||||
|
if event.scancode == KEY_SPACE:
|
||||||
|
is_space_pressed = event.is_pressed()
|
||||||
|
|
||||||
|
|
||||||
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
func _check_for_use(event: InputEvent, tool_context: SummerDayToolContext):
|
||||||
if event is InputEventMouseButton:
|
if event is InputEventMouseButton:
|
||||||
if event.button_index == BUTTON_LEFT:
|
if event.button_index == BUTTON_LEFT:
|
||||||
if event.is_pressed() and event.shift:
|
if event.is_pressed() and is_space_pressed:
|
||||||
initial_transform = tool_context.canvas_state.canvas_transform
|
initial_transform = tool_context.canvas_state.canvas_transform
|
||||||
initial_mouse_position = event.position
|
initial_mouse_position = event.position
|
||||||
zoom_activated = true
|
zoom_activated = true
|
||||||
|
|
|
@ -5,9 +5,13 @@ var priority = 0
|
||||||
var modifier_layer = 0
|
var modifier_layer = 0
|
||||||
|
|
||||||
|
|
||||||
|
func _handle_global_input(event: InputEvent): # Virtual.
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
func _check_for_use(
|
func _check_for_use(
|
||||||
event: InputEvent, tool_context: SummerDayToolContext
|
event: InputEvent, tool_context: SummerDayToolContext
|
||||||
) -> bool: # Virtual.
|
) -> bool: # Virtual.
|
||||||
return false
|
return false
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,12 @@ var persistent_tool_pool = []
|
||||||
var modifiable_tool_pool = []
|
var modifiable_tool_pool = []
|
||||||
|
|
||||||
|
|
||||||
|
func pass_global_input(event):
|
||||||
|
for list in [persistent_tool_pool, modifiable_tool_pool]:
|
||||||
|
for i in list:
|
||||||
|
i._handle_global_input(event)
|
||||||
|
|
||||||
|
|
||||||
func run_most_prior(
|
func run_most_prior(
|
||||||
event: InputEvent, tool_context: SummerDayToolContext):
|
event: InputEvent, tool_context: SummerDayToolContext):
|
||||||
var priority_high_score = 0
|
var priority_high_score = 0
|
||||||
|
|
|
@ -2,6 +2,7 @@ tool
|
||||||
extends PanelContainer
|
extends PanelContainer
|
||||||
class_name SummerDayCanvas
|
class_name SummerDayCanvas
|
||||||
|
|
||||||
|
var document: SummerDayDocument
|
||||||
var scene: SummerDayScene
|
var scene: SummerDayScene
|
||||||
var canvas_state := SummerDayCanvasState.new()
|
var canvas_state := SummerDayCanvasState.new()
|
||||||
var tool_pool := SummerDayCanvasToolPool.new()
|
var tool_pool := SummerDayCanvasToolPool.new()
|
||||||
|
@ -13,6 +14,8 @@ func _ready():
|
||||||
tool_context.canvas_state = canvas_state
|
tool_context.canvas_state = canvas_state
|
||||||
canvas_state.connect("view_transform_changed",
|
canvas_state.connect("view_transform_changed",
|
||||||
self, "_on_view_transform_changed")
|
self, "_on_view_transform_changed")
|
||||||
|
canvas_state.connect("canvas_polygon_changed",
|
||||||
|
self, "_on_canvas_polygon_changed")
|
||||||
|
|
||||||
|
|
||||||
func _gui_input(event):
|
func _gui_input(event):
|
||||||
|
@ -27,17 +30,33 @@ func _gui_input(event):
|
||||||
func _input(event):
|
func _input(event):
|
||||||
if event is InputEventScreenTouch and !event.is_pressed():
|
if event is InputEventScreenTouch and !event.is_pressed():
|
||||||
_gui_input(event)
|
_gui_input(event)
|
||||||
|
tool_pool.pass_global_input(event)
|
||||||
|
|
||||||
|
|
||||||
|
func can_drop_data(position, data):
|
||||||
|
return data.has("files")
|
||||||
|
|
||||||
|
|
||||||
|
func drop_data(position, data):
|
||||||
|
var file_path = data["files"][0]
|
||||||
|
var instance = load(file_path)
|
||||||
|
if instance is SummerDayBlueprint:
|
||||||
|
document.add_blueprint(instance)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_SummerDay_document_changed(new_doc):
|
||||||
|
if new_doc != document:
|
||||||
|
document = new_doc
|
||||||
|
|
||||||
|
|
||||||
func _on_SummerDay_scene_changed(new_scene):
|
func _on_SummerDay_scene_changed(new_scene):
|
||||||
scene = new_scene
|
if new_scene != scene:
|
||||||
canvas_state.update_fill_transform(scene)
|
scene = new_scene
|
||||||
scene.connect("aspect_ratio_changed",
|
canvas_state.update_fill_transform(scene)
|
||||||
self, "_on_scene_aspect_ratio_changed")
|
scene.connect("aspect_ratio_changed",
|
||||||
canvas_state.connect("canvas_polygon_changed",
|
self, "_on_scene_aspect_ratio_changed")
|
||||||
self, "_on_canvas_polygon_changed")
|
$Render/Label.text = str(scene) + "\n" + str(scene.aspect_ratio)
|
||||||
$Render/Label.text = str(scene) + "\n" + str(scene.aspect_ratio)
|
canvas_state.update_fill_transform(scene)
|
||||||
canvas_state.update_fill_transform(scene)
|
|
||||||
|
|
||||||
|
|
||||||
func _on_Canvas_resized():
|
func _on_Canvas_resized():
|
||||||
|
|
|
@ -6,3 +6,4 @@
|
||||||
[resource]
|
[resource]
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
scene = ExtResource( 2 )
|
scene = ExtResource( 2 )
|
||||||
|
tracks = [ ]
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
[gd_resource type="Resource" load_steps=3 format=2]
|
||||||
|
|
||||||
|
[ext_resource path="res://production/blueprints/mannequin/mat.tres" type="Material" id=1]
|
||||||
|
|
||||||
|
[sub_resource type="GDScript" id=1]
|
||||||
|
script/source = "tool
|
||||||
|
extends SummerDayBlueprint
|
||||||
|
|
||||||
|
|
||||||
|
export(Resource) var custom_material
|
||||||
|
var table: Image
|
||||||
|
var model: PackedScene = null
|
||||||
|
|
||||||
|
|
||||||
|
func _setup_editables():
|
||||||
|
pass
|
||||||
|
|
||||||
|
func provide_model():
|
||||||
|
if model == null:
|
||||||
|
var caps = CapsuleMesh.new()
|
||||||
|
var arr_mesh := ArrayMesh.new()
|
||||||
|
arr_mesh.add_surface_from_arrays(
|
||||||
|
Mesh.PRIMITIVE_TRIANGLES, caps.get_mesh_arrays
|
||||||
|
)
|
||||||
|
|
||||||
|
var m = MeshInstance.new()
|
||||||
|
m.material = custom_material
|
||||||
|
m.add_to_group(\"SummerDaySpatialTransform\")
|
||||||
|
m.mesh = arr_mesh
|
||||||
|
|
||||||
|
table = Image.new()
|
||||||
|
table.create(8, 1, false, Image.FORMAT_RGBAF)
|
||||||
|
#
|
||||||
|
var texture = ImageTexture.new()
|
||||||
|
#
|
||||||
|
texture.create_from_image(table, 0)
|
||||||
|
m.material.set_shader_param(\"table\", table)
|
||||||
|
|
||||||
|
|
||||||
|
model = PackedScene.new()
|
||||||
|
var result = model.pack(m)
|
||||||
|
return model
|
||||||
|
"
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = SubResource( 1 )
|
||||||
|
custom_material = ExtResource( 1 )
|
|
@ -0,0 +1,51 @@
|
||||||
|
[gd_resource type="ShaderMaterial" load_steps=2 format=2]
|
||||||
|
|
||||||
|
[sub_resource type="Shader" id=1]
|
||||||
|
code = "shader_type spatial;
|
||||||
|
render_mode blend_mix,depth_draw_opaque,cull_disabled,skip_vertex_transform;
|
||||||
|
|
||||||
|
|
||||||
|
uniform mat3 canvas_transform;
|
||||||
|
uniform sampler2D table : hint_albedo;
|
||||||
|
|
||||||
|
|
||||||
|
vec4 indx(int i) {
|
||||||
|
//return vec4(1.0, 1.0, 0.0, 1.0);
|
||||||
|
return textureLod(table, vec2(float(i) * 0.125 + 0.0625), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void vertex() {
|
||||||
|
vec4 row0;
|
||||||
|
vec4 row1;
|
||||||
|
vec4 row2;
|
||||||
|
vec4 row3;
|
||||||
|
|
||||||
|
if (VERTEX.z >= 0.0) {
|
||||||
|
row0 = vec4(indx(0).x, indx(0).y, indx(0).z, indx(0).w);
|
||||||
|
row1 = vec4(indx(1).x, indx(1).y, indx(1).z, indx(1).w);
|
||||||
|
row2 = vec4(indx(2).x, indx(2).y, indx(2).z, indx(2).w);
|
||||||
|
row3 = vec4(indx(3).x, indx(3).y, indx(3).z, indx(3).w);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
row0 = vec4(indx(4).x, indx(4).y, indx(4).z, indx(4).w);
|
||||||
|
row1 = vec4(indx(5).x, indx(5).y, indx(5).z, indx(5).w);
|
||||||
|
row2 = vec4(indx(6).x, indx(6).y, indx(6).z, indx(6).w);
|
||||||
|
row3 = vec4(indx(7).x, indx(7).y, indx(7).z, indx(7).w);
|
||||||
|
}
|
||||||
|
mat4 crank_matrix = mat4(row0, row1, row2, row3);
|
||||||
|
|
||||||
|
|
||||||
|
vec4 pre = vec4(VERTEX, 1.0) * crank_matrix;
|
||||||
|
vec3 transformed_xy = vec3(pre.xy, 1.0) * transpose(canvas_transform);
|
||||||
|
vec4 post = vec4(transformed_xy.x, transformed_xy.y, pre.z, pre.w);
|
||||||
|
POSITION = post;
|
||||||
|
VERTEX = (post / post.w).xyz;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fragment() {
|
||||||
|
ALBEDO = vec3(0.33, 0.81, 0.95);
|
||||||
|
}"
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
shader = SubResource( 1 )
|
||||||
|
shader_param/canvas_transform = null
|
|
@ -59,6 +59,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/summer_day/tools/canvas/tools/tool_pool.gd"
|
"path": "res://addons/summer_day/tools/canvas/tools/tool_pool.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Resource",
|
||||||
|
"class": "SummerDayCell",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://addons/summer_day/data/document/cell.gd"
|
||||||
|
}, {
|
||||||
"base": "Control",
|
"base": "Control",
|
||||||
"class": "SummerDayDisplay",
|
"class": "SummerDayDisplay",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
@ -109,6 +114,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/summer_day/data/scene/scene.gd"
|
"path": "res://addons/summer_day/data/scene/scene.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Resource",
|
||||||
|
"class": "SummerDaySceneFrame",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://addons/summer_day/data/scene/frame.gd"
|
||||||
|
}, {
|
||||||
"base": "EditorInspectorPlugin",
|
"base": "EditorInspectorPlugin",
|
||||||
"class": "SummerDayScenePicker",
|
"class": "SummerDayScenePicker",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
@ -134,6 +144,11 @@ _global_script_classes=[ {
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
"path": "res://addons/summer_day/tools/tool_system/tool_pool.gd"
|
"path": "res://addons/summer_day/tools/tool_system/tool_pool.gd"
|
||||||
}, {
|
}, {
|
||||||
|
"base": "Resource",
|
||||||
|
"class": "SummerDayTrack",
|
||||||
|
"language": "GDScript",
|
||||||
|
"path": "res://addons/summer_day/data/document/track.gd"
|
||||||
|
}, {
|
||||||
"base": "Viewport",
|
"base": "Viewport",
|
||||||
"class": "SummerDayViewportHandler",
|
"class": "SummerDayViewportHandler",
|
||||||
"language": "GDScript",
|
"language": "GDScript",
|
||||||
|
@ -160,6 +175,7 @@ _global_script_class_icons={
|
||||||
"SummerDayCanvas": "",
|
"SummerDayCanvas": "",
|
||||||
"SummerDayCanvasState": "",
|
"SummerDayCanvasState": "",
|
||||||
"SummerDayCanvasToolPool": "",
|
"SummerDayCanvasToolPool": "",
|
||||||
|
"SummerDayCell": "",
|
||||||
"SummerDayDisplay": "",
|
"SummerDayDisplay": "",
|
||||||
"SummerDayDocument": "",
|
"SummerDayDocument": "",
|
||||||
"SummerDayEditable": "",
|
"SummerDayEditable": "",
|
||||||
|
@ -170,11 +186,13 @@ _global_script_class_icons={
|
||||||
"SummerDayMathHelper": "",
|
"SummerDayMathHelper": "",
|
||||||
"SummerDayRotationCanvasTool": "",
|
"SummerDayRotationCanvasTool": "",
|
||||||
"SummerDayScene": "",
|
"SummerDayScene": "",
|
||||||
|
"SummerDaySceneFrame": "",
|
||||||
"SummerDayScenePicker": "",
|
"SummerDayScenePicker": "",
|
||||||
"SummerDayTimeline": "",
|
"SummerDayTimeline": "",
|
||||||
"SummerDayTool": "",
|
"SummerDayTool": "",
|
||||||
"SummerDayToolContext": "",
|
"SummerDayToolContext": "",
|
||||||
"SummerDayToolPool": "",
|
"SummerDayToolPool": "",
|
||||||
|
"SummerDayTrack": "",
|
||||||
"SummerDayViewportHandler": "",
|
"SummerDayViewportHandler": "",
|
||||||
"SummerDayZoomCanvasTool": "",
|
"SummerDayZoomCanvasTool": "",
|
||||||
"VeryWorse": ""
|
"VeryWorse": ""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user