Skip to content

Commit

Permalink
Add better demo mode controls
Browse files Browse the repository at this point in the history
  • Loading branch information
mgschwan committed Sep 26, 2020
1 parent 83608f5 commit f5d454c
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 19 deletions.
43 changes: 30 additions & 13 deletions godot_project/ARVRCamera.gd
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,34 @@ var last_pos = Vector3(0,0,0)
var distance_avg = 0
var vr_mode = true


var keys = {
KEY_UP: false,
KEY_DOWN: false,
KEY_LEFT: false,
KEY_RIGHT: false,
KEY_PAGEUP: false,
KEY_PAGEDOWN: false
}
func manual_position_update(delta):
if keys[KEY_UP]:
translation -= transform.basis.z * delta
elif keys[KEY_DOWN]:
translation += transform.basis.z * delta
elif keys[KEY_LEFT]:
translation.x -= delta
elif keys[KEY_RIGHT]:
translation.x += delta
elif keys[KEY_PAGEUP]:
translation.y += delta
elif keys[KEY_PAGEDOWN]:
translation.y -= delta

func _input(ev):
if not vr_mode:
if ev is InputEventKey:
if ev.scancode == KEY_UP:
translation -= transform.basis.z * 0.1
elif ev.scancode == KEY_DOWN:
translation += transform.basis.z * 0.1
elif ev.scancode == KEY_LEFT:
rotation.y += 0.1
elif ev.scancode == KEY_RIGHT:
rotation.y += -0.1
elif ev.scancode == KEY_PAGEUP:
rotation.x += 0.1
elif ev.scancode == KEY_PAGEDOWN:
rotation.x -= 0.1

if ev.scancode in keys:
keys[ev.scancode] = ev.pressed

#Calculate a running mean of the head height and subtract it from
#the signal (removes the DC component).
Expand Down Expand Up @@ -115,6 +127,11 @@ func _process(delta):
# print ("Average groove time: %.f"%average_groove_time)
# print ("%.2f "%avg_y + " %.2f"%average_interval + " Steps: %d"%steps +" Speed %.2f"%self.get_running_speed())

if not vr_mode:
manual_position_update(delta)



func tint_screen(duration):
get_node("ScreenTint").show()
yield(get_tree().create_timer(duration),"timeout")
Expand Down
49 changes: 43 additions & 6 deletions godot_project/VRScene.gd
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var red_environment = null

var gu = GameUtilities.new()

var demo_mode_player_height = 1.7

var levelselect
var level = null
Expand Down Expand Up @@ -225,7 +226,7 @@ func initialize():
get_viewport().keep_3d_linear = true
else:
#Not running in VR / Demo mode
cam.translation.y = 1.5
cam.translation.y = demo_mode_player_height
cam.rotation.x = -0.4


Expand Down Expand Up @@ -265,9 +266,42 @@ func _ready():
levelselect_blueprint = preload("res://scenes/Levelselect.tscn")
if not vr_mode:
_on_Tracker_added("right", ARVRServer.TRACKER_CONTROLLER, 1)
GameVariables.trackers[0].translation.y = 1.3
GameVariables.trackers[0].translation.x = 0.55

_on_Tracker_added("left", ARVRServer.TRACKER_CONTROLLER, 2)

var xrot = 0.0
var yrot = 0.0
func _input(event):
var update_controllers = false
if not vr_mode:
if event is InputEventMouseButton and event.pressed:
if event.button_index == BUTTON_LEFT:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
elif event.button_index == BUTTON_RIGHT:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
elif event is InputEventMouseMotion:
print("Relative motion %s"%str(event.relative))
#cam.rotate_y(-event.relative[0]/500.0)
#cam.rotate_x(-event.relative[1]/500.0)
#cam.rotation.z = 0
xrot -= event.relative[1]/500.0
yrot -= event.relative[0]/500.0
cam.rotation = Vector3(xrot,0,0)
cam.rotate(Vector3(0,1,0), yrot)
#cam.rotate(Vector3(1,0,0), -event.relative[1]/500.0)
#cam.rotate_object_local(Vector3(0,0,1), 0)

update_controllers = true
elif event is InputEventKey:
update_controllers = true

if update_controllers:
var arm_length = demo_mode_player_height/2.0
var tmp = cam.transform.xform(Vector3(0.1,0,-arm_length))
GameVariables.trackers[0].translation = tmp
tmp = cam.transform.xform(Vector3(-0.1,0,-arm_length))
GameVariables.trackers[1].translation = tmp


func _on_level_finished ():
get_viewport().get_camera().blackout_screen(true)
get_viewport().get_camera().show_hud(false)
Expand Down Expand Up @@ -319,7 +353,8 @@ func _on_level_finished ():
yield(get_tree().create_timer(1), "timeout")
get_viewport().get_camera().blackout_screen(false)
if not vr_mode:
get_node("DemoTimer").start()
pass
#get_node("DemoTimer").start()

var prediction_limit_ms = 200
var prediction_history_size = 10
Expand Down Expand Up @@ -486,6 +521,7 @@ func _on_Area_level_selected(filename, diff, num):
add_child(level)

if not vr_mode:
demo_mode_player_height = level.player_height
level._on_HeartRateData(113)


Expand Down Expand Up @@ -538,7 +574,8 @@ func _on_Splashscreen_finished():
splashscreen.queue_free()
add_child(levelselect)
if not vr_mode:
get_node("DemoTimer").start()
pass
#get_node("DemoTimer").start()


func change_environment(value):
Expand Down
23 changes: 23 additions & 0 deletions godot_project/export_presets.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,26 @@ application/product_name="VRWorkout"
application/file_description=""
application/copyright=""
application/trademarks=""

[preset.2]

name="HTML5"
platform="HTML5"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter="*.json,*.ogg,*.wav,*.ogv"
exclude_filter=""
export_path="../../../../../../tmp/vrworkout/index.html"
patch_list=PoolStringArray( )
script_export_mode=1
script_encryption_key=""

[preset.2.options]

vram_texture_compression/for_desktop=true
vram_texture_compression/for_mobile=true
html/custom_html_shell=""
html/head_include=""
custom_template/release=""
custom_template/debug=""

0 comments on commit f5d454c

Please # to comment.