Gamefield subsampling for low-end devices
This commit is contained in:
parent
48e275153c
commit
d9914c4552
|
@ -12,6 +12,11 @@ var tex_judgement_text := preload("res://assets/text-4k.png")
|
||||||
var tex_slide_arrow := preload("res://assets/slide-arrow-4k.png")
|
var tex_slide_arrow := preload("res://assets/slide-arrow-4k.png")
|
||||||
var slide_trail_shadermaterial := preload("res://shaders/slidetrail.tres")
|
var slide_trail_shadermaterial := preload("res://shaders/slidetrail.tres")
|
||||||
|
|
||||||
|
var SlideTrailHandler
|
||||||
|
var JudgeText
|
||||||
|
var notelines
|
||||||
|
var meshinstance
|
||||||
|
|
||||||
var snd_miss := preload("res://assets/miss.wav")
|
var snd_miss := preload("res://assets/miss.wav")
|
||||||
var snd_clap := preload("res://assets/softclap.wav")
|
var snd_clap := preload("res://assets/softclap.wav")
|
||||||
var snd_count_in := snd_clap
|
var snd_count_in := snd_clap
|
||||||
|
@ -439,14 +444,14 @@ func _draw():
|
||||||
noteline_data.unlock()
|
noteline_data.unlock()
|
||||||
var noteline_data_tex = ImageTexture.new()
|
var noteline_data_tex = ImageTexture.new()
|
||||||
noteline_data_tex.create_from_image(noteline_data, 0)
|
noteline_data_tex.create_from_image(noteline_data, 0)
|
||||||
$notelines.set_texture(noteline_data_tex)
|
notelines.set_texture(noteline_data_tex)
|
||||||
|
|
||||||
$meshinstance.set_mesh(mesh)
|
meshinstance.set_mesh(mesh)
|
||||||
|
|
||||||
var textmesh := ArrayMesh.new()
|
var textmesh := ArrayMesh.new()
|
||||||
for text in active_judgement_texts:
|
for text in active_judgement_texts:
|
||||||
make_judgement_text(textmesh, TextJudgement[text.judgement], text.col, (t-text.time)/GameTheme.judge_text_duration)
|
make_judgement_text(textmesh, TextJudgement[text.judgement], text.col, (t-text.time)/GameTheme.judge_text_duration)
|
||||||
$JudgeText.set_mesh(textmesh)
|
JudgeText.set_mesh(textmesh)
|
||||||
|
|
||||||
|
|
||||||
func _input(event):
|
func _input(event):
|
||||||
|
@ -482,7 +487,7 @@ func set_time(seconds: float):
|
||||||
time_zero_msec = msecs - (seconds * 1000)
|
time_zero_msec = msecs - (seconds * 1000)
|
||||||
time = seconds
|
time = seconds
|
||||||
t = game_time(time)
|
t = game_time(time)
|
||||||
|
|
||||||
func make_noteline_mesh_old() -> ArrayMesh:
|
func make_noteline_mesh_old() -> ArrayMesh:
|
||||||
var rec_scale1 = (float(screen_height)/float(GameTheme.receptor_ring_radius))*0.5
|
var rec_scale1 = (float(screen_height)/float(GameTheme.receptor_ring_radius))*0.5
|
||||||
var uv_array_playfield := PoolVector2Array([Vector2(-1.0, -1.0)*rec_scale1, Vector2(-1.0, 1.0)*rec_scale1, Vector2(1.0, -1.0)*rec_scale1, Vector2(1.0, 1.0)*rec_scale1])
|
var uv_array_playfield := PoolVector2Array([Vector2(-1.0, -1.0)*rec_scale1, Vector2(-1.0, 1.0)*rec_scale1, Vector2(1.0, -1.0)*rec_scale1, Vector2(1.0, 1.0)*rec_scale1])
|
||||||
|
@ -503,7 +508,7 @@ func make_noteline_mesh(vertices := 32) -> ArrayMesh:
|
||||||
var rec_scale1 = (float(screen_height)/float(GameTheme.receptor_ring_radius))*0.5
|
var rec_scale1 = (float(screen_height)/float(GameTheme.receptor_ring_radius))*0.5
|
||||||
var uv_array_playfield := PoolVector2Array([Vector2(0.0, 0.0)])
|
var uv_array_playfield := PoolVector2Array([Vector2(0.0, 0.0)])
|
||||||
var vertex_array_playfield := PoolVector2Array([Vector2(0.0, 0.0)])
|
var vertex_array_playfield := PoolVector2Array([Vector2(0.0, 0.0)])
|
||||||
|
|
||||||
var angle_increment = TAU/float(vertices)
|
var angle_increment = TAU/float(vertices)
|
||||||
# Outer polygon side-length = inner side-length / sin(inside angle/2)
|
# Outer polygon side-length = inner side-length / sin(inside angle/2)
|
||||||
# inside angle for a polygon is pi-tau/n. We already precalculated tau/n for other purposes.
|
# inside angle for a polygon is pi-tau/n. We already precalculated tau/n for other purposes.
|
||||||
|
@ -513,7 +518,7 @@ func make_noteline_mesh(vertices := 32) -> ArrayMesh:
|
||||||
var angle = i * angle_increment
|
var angle = i * angle_increment
|
||||||
uv_array_playfield.append(polar2cartesian(UV_r, -angle))
|
uv_array_playfield.append(polar2cartesian(UV_r, -angle))
|
||||||
vertex_array_playfield.append(polar2cartesian(r, angle))
|
vertex_array_playfield.append(polar2cartesian(r, angle))
|
||||||
|
|
||||||
var mesh_playfield := ArrayMesh.new()
|
var mesh_playfield := ArrayMesh.new()
|
||||||
var arrays = []
|
var arrays = []
|
||||||
arrays.resize(Mesh.ARRAY_MAX)
|
arrays.resize(Mesh.ARRAY_MAX)
|
||||||
|
@ -524,8 +529,14 @@ func make_noteline_mesh(vertices := 32) -> ArrayMesh:
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
$notelines.set_mesh(make_noteline_mesh())
|
SlideTrailHandler = $"Viewport/Center/SlideTrailHandler"
|
||||||
$notelines.material.set_shader_param("bps", bpm/60.0)
|
JudgeText = $"Viewport/Center/JudgeText"
|
||||||
|
notelines = $"Viewport/Center/notelines"
|
||||||
|
meshinstance = $"Viewport/Center/meshinstance"
|
||||||
|
|
||||||
|
notelines.set_mesh(make_noteline_mesh())
|
||||||
|
notelines.material.set_shader_param("bps", bpm/60.0)
|
||||||
|
|
||||||
|
|
||||||
noteline_array_image.create(16, 16, false, Image.FORMAT_RGBF)
|
noteline_array_image.create(16, 16, false, Image.FORMAT_RGBF)
|
||||||
noteline_array_image.fill(Color(0.0, 0.0, 0.0))
|
noteline_array_image.fill(Color(0.0, 0.0, 0.0))
|
||||||
|
@ -559,11 +570,11 @@ func load_track(data: Dictionary, difficulty_idx: int):
|
||||||
if note.type == Note.NOTE_SLIDE:
|
if note.type == Note.NOTE_SLIDE:
|
||||||
slide_trail_meshes[note.slide_id] = make_slide_trail_mesh(note)
|
slide_trail_meshes[note.slide_id] = make_slide_trail_mesh(note)
|
||||||
|
|
||||||
$meshinstance.material.set_shader_param("star_color", GameTheme.COLOR_STAR)
|
meshinstance.material.set_shader_param("star_color", GameTheme.COLOR_STAR)
|
||||||
$meshinstance.material.set_shader_param("held_color", GameTheme.COLOR_HOLD_HELD)
|
meshinstance.material.set_shader_param("held_color", GameTheme.COLOR_HOLD_HELD)
|
||||||
$meshinstance.material.set_shader_param("bps", bpm/60.0)
|
meshinstance.material.set_shader_param("bps", bpm/60.0)
|
||||||
$meshinstance.material.set_shader_param("screen_size", get_viewport().get_size())
|
meshinstance.material.set_shader_param("screen_size", get_viewport().get_size())
|
||||||
$meshinstance.set_texture(tex)
|
meshinstance.set_texture(tex)
|
||||||
|
|
||||||
func stop():
|
func stop():
|
||||||
$"/root/main/music".stop()
|
$"/root/main/music".stop()
|
||||||
|
@ -596,8 +607,8 @@ func _process(delta):
|
||||||
if !running:
|
if !running:
|
||||||
return
|
return
|
||||||
|
|
||||||
$meshinstance.material.set_shader_param("bps", bpm/60.0)
|
meshinstance.material.set_shader_param("bps", bpm/60.0)
|
||||||
$notelines.material.set_shader_param("bps", bpm/60.0)
|
notelines.material.set_shader_param("bps", bpm/60.0)
|
||||||
|
|
||||||
var t_old := game_time(time)
|
var t_old := game_time(time)
|
||||||
# time += delta
|
# time += delta
|
||||||
|
@ -635,7 +646,7 @@ func _process(delta):
|
||||||
var note = active_notes[i]
|
var note = active_notes[i]
|
||||||
if note.time_death < t:
|
if note.time_death < t:
|
||||||
if note.type == Note.NOTE_SLIDE:
|
if note.type == Note.NOTE_SLIDE:
|
||||||
$SlideTrailHandler.remove_child(slide_trail_mesh_instances[note.slide_id])
|
SlideTrailHandler.remove_child(slide_trail_mesh_instances[note.slide_id])
|
||||||
slide_trail_mesh_instances.erase(note.slide_id)
|
slide_trail_mesh_instances.erase(note.slide_id)
|
||||||
var idx = active_slide_trails.find(note)
|
var idx = active_slide_trails.find(note)
|
||||||
if idx >= 0:
|
if idx >= 0:
|
||||||
|
@ -681,7 +692,7 @@ func _process(delta):
|
||||||
meshi.material.set_shader_param("trail_progress", 0.0)
|
meshi.material.set_shader_param("trail_progress", 0.0)
|
||||||
meshi.set_texture(tex_slide_arrow)
|
meshi.set_texture(tex_slide_arrow)
|
||||||
slide_trail_mesh_instances[note.slide_id] = meshi
|
slide_trail_mesh_instances[note.slide_id] = meshi
|
||||||
$SlideTrailHandler.add_child(meshi)
|
SlideTrailHandler.add_child(meshi)
|
||||||
|
|
||||||
next_note_to_load += 1
|
next_note_to_load += 1
|
||||||
|
|
||||||
|
@ -695,5 +706,6 @@ func _process(delta):
|
||||||
emit_signal("finished_song", song_key, scores)
|
emit_signal("finished_song", song_key, scores)
|
||||||
|
|
||||||
# Redraw
|
# Redraw
|
||||||
$meshinstance.material.set_shader_param("screen_size", get_viewport().get_size())
|
meshinstance.material.set_shader_param("screen_size", get_viewport().get_size())
|
||||||
update()
|
update()
|
||||||
|
$Painter.update()
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
extends Node2D
|
||||||
|
|
||||||
|
func _draw():
|
||||||
|
draw_texture_rect($"../Viewport".get_texture(), Rect2(-540, -540, 1080, 1080), false)
|
|
@ -0,0 +1,16 @@
|
||||||
|
extends Viewport
|
||||||
|
|
||||||
|
func set_render_scale(scale: Vector2):
|
||||||
|
size = Vector2(1080, 1080) * scale
|
||||||
|
$Center.position = size * 0.5
|
||||||
|
$Center.scale = scale
|
||||||
|
|
||||||
|
func slider_slot(arg1):
|
||||||
|
set_render_scale(Vector2($"/root/main/InputHandler/SSXSlider".value, $"/root/main/InputHandler/SSYSlider".value))
|
||||||
|
|
||||||
|
# Called when the node enters the scene tree for the first time.
|
||||||
|
func _ready():
|
||||||
|
# set_render_scale(Vector2(0.5, 1.0))
|
||||||
|
$"/root/main/InputHandler/SSXSlider".connect("value_changed", self, "slider_slot")
|
||||||
|
$"/root/main/InputHandler/SSYSlider".connect("value_changed", self, "slider_slot")
|
||||||
|
slider_slot(1)
|
26
Receptors.gd
26
Receptors.gd
|
@ -30,7 +30,7 @@ func make_ring_mesh(inner_vertices: int, thickness: float, radius: float, skew:=
|
||||||
var r2 = (radius + thickness*0.5)/sin((PI-angle_increment)/2)
|
var r2 = (radius + thickness*0.5)/sin((PI-angle_increment)/2)
|
||||||
var UV_r1 = r1/radius
|
var UV_r1 = r1/radius
|
||||||
var UV_r2 = r2/radius
|
var UV_r2 = r2/radius
|
||||||
|
|
||||||
var vertex_list = PoolVector2Array()
|
var vertex_list = PoolVector2Array()
|
||||||
var UV_list = PoolVector2Array()
|
var UV_list = PoolVector2Array()
|
||||||
var inner_list = PoolVector2Array()
|
var inner_list = PoolVector2Array()
|
||||||
|
@ -52,7 +52,7 @@ func make_ring_mesh(inner_vertices: int, thickness: float, radius: float, skew:=
|
||||||
UV_list.push_back(UV_list[0])
|
UV_list.push_back(UV_list[0])
|
||||||
UV_list.push_back(UV_list[1])
|
UV_list.push_back(UV_list[1])
|
||||||
return [vertex_list, inner_list, outer_list, UV_list]
|
return [vertex_list, inner_list, outer_list, UV_list]
|
||||||
|
|
||||||
func triangle_area(a: Vector2, b: Vector2, c: Vector2) -> float:
|
func triangle_area(a: Vector2, b: Vector2, c: Vector2) -> float:
|
||||||
return 0.5 * abs((a.x-c.x)*(b.y-a.y) - (a.x-b.x)*(c.y-a.y))
|
return 0.5 * abs((a.x-c.x)*(b.y-a.y) - (a.x-b.x)*(c.y-a.y))
|
||||||
|
|
||||||
|
@ -91,8 +91,8 @@ func draw_tris():
|
||||||
|
|
||||||
var ring_vertices
|
var ring_vertices
|
||||||
func update_ring_mesh():
|
func update_ring_mesh():
|
||||||
var mesh_v = $VerticesSlider.value
|
var mesh_v = $"../InputHandler/VerticesSlider".value
|
||||||
var skew = $SkewSlider.value
|
var skew = $"../InputHandler/SkewSlider".value
|
||||||
var ring_thickness = receptor_px + shadow_px*2
|
var ring_thickness = receptor_px + shadow_px*2
|
||||||
ring_vertices = make_ring_mesh(mesh_v, ring_thickness, GameTheme.receptor_ring_radius, skew)
|
ring_vertices = make_ring_mesh(mesh_v, ring_thickness, GameTheme.receptor_ring_radius, skew)
|
||||||
var temp_mesh = ArrayMesh.new()
|
var temp_mesh = ArrayMesh.new()
|
||||||
|
@ -103,24 +103,24 @@ func update_ring_mesh():
|
||||||
# mesh_arrays[Mesh.ARRAY_COLOR] = colors
|
# mesh_arrays[Mesh.ARRAY_COLOR] = colors
|
||||||
temp_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLE_STRIP, mesh_arrays)
|
temp_mesh.add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLE_STRIP, mesh_arrays)
|
||||||
mesh = temp_mesh
|
mesh = temp_mesh
|
||||||
|
|
||||||
|
|
||||||
func _draw():
|
func _draw():
|
||||||
# draw_old(true, true)
|
# draw_old(true, true)
|
||||||
# draw_tris()
|
# draw_tris()
|
||||||
var mesh_v = $VerticesSlider.value
|
var mesh_v = $"../InputHandler/VerticesSlider".value
|
||||||
var skew = $SkewSlider.value
|
var skew = $"../InputHandler/SkewSlider".value
|
||||||
var ring_thickness = receptor_px + shadow_px*2
|
var ring_thickness = receptor_px + shadow_px*2
|
||||||
var estimated_area = circumscribe_polygon_area(GameTheme.receptor_ring_radius+ring_thickness*0.5, mesh_v) - inscribe_polygon_area(GameTheme.receptor_ring_radius-ring_thickness*0.5, mesh_v)
|
var estimated_area = circumscribe_polygon_area(GameTheme.receptor_ring_radius+ring_thickness*0.5, mesh_v) - inscribe_polygon_area(GameTheme.receptor_ring_radius-ring_thickness*0.5, mesh_v)
|
||||||
var ideal_ring_area = PI * (pow(GameTheme.receptor_ring_radius+receptor_px/2+shadow_px, 2) - pow(GameTheme.receptor_ring_radius-receptor_px/2-shadow_px, 2))
|
var ideal_ring_area = PI * (pow(GameTheme.receptor_ring_radius+receptor_px/2+shadow_px, 2) - pow(GameTheme.receptor_ring_radius-receptor_px/2-shadow_px, 2))
|
||||||
|
|
||||||
# var l = len(ring_vertices)
|
# var l = len(ring_vertices)
|
||||||
# for i in l:
|
# for i in l:
|
||||||
# estimated_area += triangle_area(ring_vertices[i], ring_vertices[(i+1)%l], ring_vertices[(i+2)%l])
|
# estimated_area += triangle_area(ring_vertices[i], ring_vertices[(i+1)%l], ring_vertices[(i+2)%l])
|
||||||
var quad_area = 4*pow(GameTheme.receptor_ring_radius+receptor_px/2+shadow_px, 2)
|
var quad_area = 4*pow(GameTheme.receptor_ring_radius+receptor_px/2+shadow_px, 2)
|
||||||
var fps = Performance.get_monitor(Performance.TIME_FPS)
|
var fps = Performance.get_monitor(Performance.TIME_FPS)
|
||||||
$"/root/main/InputHandler".text = "Vertices: %d*2 Skew: %.3f\nArea: %.0f\n(%.0f%% ideal ring)\n(%.0f%% quad)\nFPS: %.0f"%[mesh_v, skew, estimated_area, 100.0*estimated_area/ideal_ring_area, 100.0*estimated_area/quad_area, fps]
|
$"/root/main/InputHandler".text = "Vertices: %d*2 Skew: %.3f\nArea: %.0f\n(%.0f%% ideal ring)\n(%.0f%% quad)\nFPS: %.0f"%[mesh_v, skew, estimated_area, 100.0*estimated_area/ideal_ring_area, 100.0*estimated_area/quad_area, fps]
|
||||||
|
|
||||||
material.set_shader_param("dot_radius", 0.5*receptor_px/GameTheme.receptor_ring_radius)
|
material.set_shader_param("dot_radius", 0.5*receptor_px/GameTheme.receptor_ring_radius)
|
||||||
material.set_shader_param("line_thickness", 0.5*ring_px/GameTheme.receptor_ring_radius)
|
material.set_shader_param("line_thickness", 0.5*ring_px/GameTheme.receptor_ring_radius)
|
||||||
material.set_shader_param("shadow_thickness", shadow_px/GameTheme.receptor_ring_radius)
|
material.set_shader_param("shadow_thickness", shadow_px/GameTheme.receptor_ring_radius)
|
||||||
|
@ -142,12 +142,12 @@ func _ready():
|
||||||
receptor_data_tex.create_from_image(receptor_array_image, 0)
|
receptor_data_tex.create_from_image(receptor_array_image, 0)
|
||||||
set_texture(receptor_data_tex)
|
set_texture(receptor_data_tex)
|
||||||
material.set_shader_param("num_receptors", Rules.COLS)
|
material.set_shader_param("num_receptors", Rules.COLS)
|
||||||
|
|
||||||
update_ring_mesh()
|
update_ring_mesh()
|
||||||
$VerticesSlider.connect("value_changed", self, "update_ring_mesh_1arg")
|
$"../InputHandler/VerticesSlider".connect("value_changed", self, "update_ring_mesh_1arg")
|
||||||
$SkewSlider.connect("value_changed", self, "update_ring_mesh_1arg")
|
$"../InputHandler/SkewSlider".connect("value_changed", self, "update_ring_mesh_1arg")
|
||||||
$"/root".connect("size_changed", self, "update")
|
$"/root".connect("size_changed", self, "update")
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if not Engine.editor_hint:
|
if not Engine.editor_hint:
|
||||||
update()
|
update()
|
2
main.gd
2
main.gd
|
@ -10,7 +10,7 @@ func resize():
|
||||||
var screen_size = $"/root".get_visible_rect().size
|
var screen_size = $"/root".get_visible_rect().size
|
||||||
screen_center = screen_size*0.5
|
screen_center = screen_size*0.5
|
||||||
position = screen_center
|
position = screen_center
|
||||||
|
|
||||||
screen_height = screen_size.y
|
screen_height = screen_size.y
|
||||||
x_margin = max((screen_size.x - screen_size.y)/2.0, 0.0)
|
x_margin = max((screen_size.x - screen_size.y)/2.0, 0.0)
|
||||||
y_margin = max((screen_size.y - screen_size.x)/2.0, 0.0)
|
y_margin = max((screen_size.y - screen_size.x)/2.0, 0.0)
|
||||||
|
|
172
main.tscn
172
main.tscn
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=19 format=2]
|
[gd_scene load_steps=22 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://main.gd" type="Script" id=1]
|
[ext_resource path="res://main.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://video.gd" type="Script" id=2]
|
[ext_resource path="res://video.gd" type="Script" id=2]
|
||||||
|
@ -6,17 +6,19 @@
|
||||||
[ext_resource path="res://shaders/receptors.shader" type="Shader" id=4]
|
[ext_resource path="res://shaders/receptors.shader" type="Shader" id=4]
|
||||||
[ext_resource path="res://Receptors.gd" type="Script" id=5]
|
[ext_resource path="res://Receptors.gd" type="Script" id=5]
|
||||||
[ext_resource path="res://NoteHandler.gd" type="Script" id=6]
|
[ext_resource path="res://NoteHandler.gd" type="Script" id=6]
|
||||||
[ext_resource path="res://assets/text-4k.png" type="Texture" id=7]
|
[ext_resource path="res://NoteViewport.gd" type="Script" id=7]
|
||||||
[ext_resource path="res://shaders/notelines.shader" type="Shader" id=8]
|
[ext_resource path="res://assets/text-4k.png" type="Texture" id=8]
|
||||||
[ext_resource path="res://shaders/notemesh.shader" type="Shader" id=9]
|
[ext_resource path="res://shaders/notemesh.shader" type="Shader" id=9]
|
||||||
[ext_resource path="res://Menu.gd" type="Script" id=10]
|
[ext_resource path="res://shaders/notelines.shader" type="Shader" id=10]
|
||||||
[ext_resource path="res://shaders/scoretext.tres" type="Material" id=11]
|
[ext_resource path="res://NotePainter.gd" type="Script" id=11]
|
||||||
[ext_resource path="res://ScoreText.gd" type="Script" id=12]
|
[ext_resource path="res://Menu.gd" type="Script" id=12]
|
||||||
[ext_resource path="res://Bezel.gd" type="Script" id=13]
|
[ext_resource path="res://shaders/scoretext.tres" type="Material" id=13]
|
||||||
[ext_resource path="res://assets/NotoSans.tres" type="DynamicFont" id=14]
|
[ext_resource path="res://ScoreText.gd" type="Script" id=14]
|
||||||
[ext_resource path="res://InputHandler.gd" type="Script" id=15]
|
[ext_resource path="res://Bezel.gd" type="Script" id=15]
|
||||||
|
[ext_resource path="res://assets/NotoSans.tres" type="DynamicFont" id=16]
|
||||||
|
[ext_resource path="res://InputHandler.gd" type="Script" id=17]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=4]
|
[sub_resource type="ShaderMaterial" id=1]
|
||||||
shader = ExtResource( 4 )
|
shader = ExtResource( 4 )
|
||||||
shader_param/num_receptors = 8
|
shader_param/num_receptors = 8
|
||||||
shader_param/line_color = Color( 0, 0, 1, 1 )
|
shader_param/line_color = Color( 0, 0, 1, 1 )
|
||||||
|
@ -28,11 +30,18 @@ shader_param/shadow_thickness = 0.01
|
||||||
shader_param/shadow_thickness_taper = 0.33
|
shader_param/shadow_thickness_taper = 0.33
|
||||||
shader_param/px = 0.002
|
shader_param/px = 0.002
|
||||||
|
|
||||||
|
[sub_resource type="ShaderMaterial" id=3]
|
||||||
|
shader = ExtResource( 9 )
|
||||||
|
shader_param/bps = null
|
||||||
|
shader_param/star_color = null
|
||||||
|
shader_param/held_color = null
|
||||||
|
shader_param/screen_size = null
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=2]
|
[sub_resource type="ShaderMaterial" id=2]
|
||||||
shader = ExtResource( 8 )
|
shader = ExtResource( 10 )
|
||||||
shader_param/line_color = Plane( 0.8, 0.8, 1, 0.8 )
|
shader_param/line_color = Color( 0.8, 0.8, 1, 0.8 )
|
||||||
shader_param/line_color_double = Plane( 1, 1, 0.6, 0.9 )
|
shader_param/line_color_double = Color( 1, 1, 0.6, 0.9 )
|
||||||
shader_param/dot_color = Plane( 1, 1, 1, 0.8 )
|
shader_param/dot_color = Color( 1, 1, 1, 0.8 )
|
||||||
shader_param/bps = 1.0
|
shader_param/bps = 1.0
|
||||||
shader_param/line_thickness = 0.012
|
shader_param/line_thickness = 0.012
|
||||||
shader_param/line_thickness_min = 0.0
|
shader_param/line_thickness_min = 0.0
|
||||||
|
@ -41,12 +50,8 @@ shader_param/dot_fullbright_thickness = 0.013
|
||||||
shader_param/max_angle = 1.0708
|
shader_param/max_angle = 1.0708
|
||||||
shader_param/max_dist = 1.25
|
shader_param/max_dist = 1.25
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id=3]
|
[sub_resource type="CanvasItemMaterial" id=4]
|
||||||
shader = ExtResource( 9 )
|
blend_mode = 4
|
||||||
shader_param/bps = null
|
|
||||||
shader_param/star_color = null
|
|
||||||
shader_param/held_color = null
|
|
||||||
shader_param/screen_size = null
|
|
||||||
|
|
||||||
[node name="main" type="Node2D"]
|
[node name="main" type="Node2D"]
|
||||||
position = Vector2( 540, 540 )
|
position = Vector2( 540, 540 )
|
||||||
|
@ -77,65 +82,110 @@ __meta__ = {
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
|
|
||||||
[node name="Receptors" type="MeshInstance2D" parent="."]
|
[node name="Receptors" type="MeshInstance2D" parent="."]
|
||||||
material = SubResource( 4 )
|
material = SubResource( 1 )
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
|
|
||||||
[node name="SkewSlider" type="HSlider" parent="Receptors"]
|
|
||||||
visible = false
|
|
||||||
margin_left = -200.0
|
|
||||||
margin_top = -30.0
|
|
||||||
margin_right = 200.0
|
|
||||||
margin_bottom = 30.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
|
||||||
size_flags_horizontal = 3
|
|
||||||
size_flags_vertical = 3
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
tick_count = 3
|
|
||||||
ticks_on_borders = true
|
|
||||||
|
|
||||||
[node name="VerticesSlider" type="HSlider" parent="Receptors"]
|
|
||||||
visible = false
|
|
||||||
margin_left = -200.0
|
|
||||||
margin_top = -100.0
|
|
||||||
margin_right = 200.0
|
|
||||||
margin_bottom = -84.0
|
|
||||||
min_value = 3.0
|
|
||||||
max_value = 72.0
|
|
||||||
value = 36.0
|
|
||||||
tick_count = 2
|
|
||||||
ticks_on_borders = true
|
|
||||||
|
|
||||||
[node name="NoteHandler" type="Node2D" parent="."]
|
[node name="NoteHandler" type="Node2D" parent="."]
|
||||||
script = ExtResource( 6 )
|
script = ExtResource( 6 )
|
||||||
|
|
||||||
[node name="SlideTrailHandler" type="Node2D" parent="NoteHandler"]
|
[node name="Viewport" type="Viewport" parent="NoteHandler"]
|
||||||
|
size = Vector2( 540, 540 )
|
||||||
|
transparent_bg = true
|
||||||
|
usage = 1
|
||||||
|
render_target_v_flip = true
|
||||||
|
script = ExtResource( 7 )
|
||||||
|
|
||||||
[node name="JudgeText" type="MeshInstance2D" parent="NoteHandler"]
|
[node name="Center" type="Node2D" parent="NoteHandler/Viewport"]
|
||||||
texture = ExtResource( 7 )
|
position = Vector2( 270, 270 )
|
||||||
|
scale = Vector2( 0.5, 0.5 )
|
||||||
|
|
||||||
[node name="notelines" type="MeshInstance2D" parent="NoteHandler"]
|
[node name="SlideTrailHandler" type="Node2D" parent="NoteHandler/Viewport/Center"]
|
||||||
material = SubResource( 2 )
|
|
||||||
|
|
||||||
[node name="meshinstance" type="MeshInstance2D" parent="NoteHandler"]
|
[node name="JudgeText" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
||||||
|
texture = ExtResource( 8 )
|
||||||
|
|
||||||
|
[node name="meshinstance" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
||||||
material = SubResource( 3 )
|
material = SubResource( 3 )
|
||||||
|
|
||||||
[node name="Menu" type="Node2D" parent="."]
|
[node name="notelines" type="MeshInstance2D" parent="NoteHandler/Viewport/Center"]
|
||||||
script = ExtResource( 10 )
|
material = SubResource( 2 )
|
||||||
|
|
||||||
[node name="ScoreText" type="Node2D" parent="Menu"]
|
[node name="Painter" type="Node2D" parent="NoteHandler"]
|
||||||
material = ExtResource( 11 )
|
material = SubResource( 4 )
|
||||||
|
script = ExtResource( 11 )
|
||||||
|
|
||||||
|
[node name="Menu" type="Node2D" parent="."]
|
||||||
script = ExtResource( 12 )
|
script = ExtResource( 12 )
|
||||||
|
|
||||||
|
[node name="ScoreText" type="Node2D" parent="Menu"]
|
||||||
|
material = ExtResource( 13 )
|
||||||
|
script = ExtResource( 14 )
|
||||||
|
|
||||||
[node name="Bezel" type="Node2D" parent="."]
|
[node name="Bezel" type="Node2D" parent="."]
|
||||||
script = ExtResource( 13 )
|
script = ExtResource( 15 )
|
||||||
|
|
||||||
[node name="InputHandler" type="Label" parent="."]
|
[node name="InputHandler" type="Label" parent="."]
|
||||||
margin_left = -540.0
|
margin_left = -540.0
|
||||||
margin_top = -540.0
|
margin_top = -540.0
|
||||||
margin_right = 540.0
|
margin_right = 540.0
|
||||||
margin_bottom = 540.0
|
margin_bottom = 540.0
|
||||||
custom_fonts/font = ExtResource( 14 )
|
custom_fonts/font = ExtResource( 16 )
|
||||||
text = "Fingers on the screen:"
|
text = "Fingers on the screen:"
|
||||||
script = ExtResource( 15 )
|
script = ExtResource( 17 )
|
||||||
|
|
||||||
|
[node name="VerticesSlider" type="HSlider" parent="InputHandler"]
|
||||||
|
margin_left = 10.0
|
||||||
|
margin_top = 280.0
|
||||||
|
margin_right = 310.0
|
||||||
|
margin_bottom = 296.0
|
||||||
|
min_value = 3.0
|
||||||
|
max_value = 72.0
|
||||||
|
value = 36.0
|
||||||
|
tick_count = 2
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="SkewSlider" type="HSlider" parent="InputHandler"]
|
||||||
|
margin_left = 10.0
|
||||||
|
margin_top = 310.0
|
||||||
|
margin_right = 310.0
|
||||||
|
margin_bottom = 320.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
max_value = 0.5
|
||||||
|
step = 0.01
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="SSXSlider" type="HSlider" parent="InputHandler"]
|
||||||
|
margin_left = 10.0
|
||||||
|
margin_top = 400.0
|
||||||
|
margin_right = 310.0
|
||||||
|
margin_bottom = 410.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
min_value = 0.1
|
||||||
|
max_value = 2.0
|
||||||
|
step = 0.01
|
||||||
|
value = 1.0
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="SSYSlider" type="HSlider" parent="InputHandler"]
|
||||||
|
margin_left = 10.0
|
||||||
|
margin_top = 430.0
|
||||||
|
margin_right = 310.0
|
||||||
|
margin_bottom = 440.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
min_value = 0.1
|
||||||
|
max_value = 2.0
|
||||||
|
step = 0.01
|
||||||
|
value = 1.0
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
|
@ -44,12 +44,12 @@ gdscript/warnings/integer_division=false
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/width=1080
|
window/size/width=1920
|
||||||
window/size/height=1080
|
window/size/height=1080
|
||||||
window/size/fullscreen=true
|
window/size/fullscreen=true
|
||||||
window/handheld/orientation="sensor"
|
window/handheld/orientation="sensor"
|
||||||
window/stretch/mode="2d"
|
window/stretch/mode="2d"
|
||||||
window/stretch/aspect="expand"
|
window/stretch/aspect="keep_height"
|
||||||
|
|
||||||
[gdnative]
|
[gdnative]
|
||||||
|
|
||||||
|
@ -57,6 +57,7 @@ singletons=[ "res://addons/videodecoder.gdnlib" ]
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
|
vram_compression/import_etc=true
|
||||||
environment/default_clear_color=Color( 0, 0, 0, 1 )
|
environment/default_clear_color=Color( 0, 0, 0, 1 )
|
||||||
quality/filters/msaa=1
|
quality/filters/msaa=1
|
||||||
environment/default_environment="res://default_env.tres"
|
environment/default_environment="res://default_env.tres"
|
||||||
|
|
Loading…
Reference in New Issue