diff --git a/Content/Configurations/aixcave.cfg b/Content/Configurations/aixcave.cfg new file mode 100644 index 0000000000000000000000000000000000000000..4b6b49d60c45ffc5848331061a95844073fb0570 --- /dev/null +++ b/Content/Configurations/aixcave.cfg @@ -0,0 +1,311 @@ +##################################################################### +# nDisplay config file +# +# This file demonstrates how to configure for the AixCAVE. +##################################################################### + +##################################################################### +# List of cluster nodes +#******************************************************************** +# Cluster node is an application instance. It's allowed to use +# multiple instances on the same PC. Sometimes its necessary. +# +# Properties: +# id - unique node name +# addr - network address (IPv4 only) +# screen - projection screen ID to use +# viewport - viewport ID to use +# master - specifies if current node is master; default is 'false' +# port_cs - Cluster Synchronization port (required on master node only) +# port_ss - Swap Synchronization port (required on master node only) +# +# Optional properties: +# sound - turns on/off sound for this application instance; default is 'false' +#******************************************************************** +[cluster_node] id=node_main addr=10.0.1.29 screen=screen_main viewport=vp_1000 port_cs=41001 port_ss=41002 master=true sound=true + +[cluster_node] id=node_front_upper_left_eye_left addr=10.0.1.1 screen=screen_front_upper_left viewport=vp_1200 +[cluster_node] id=node_front_upper_left_eye_right addr=10.0.1.1 screen=screen_front_upper_left viewport=vp_1200 +[cluster_node] id=node_front_upper_right_eye_left addr=10.0.1.2 screen=screen_front_upper_right viewport=vp_1200 +[cluster_node] id=node_front_upper_right_eye_right addr=10.0.1.2 screen=screen_front_upper_right viewport=vp_1200 +[cluster_node] id=node_front_lower_left_eye_left addr=10.0.1.3 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_left_eye_right addr=10.0.1.3 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_right_eye_left addr=10.0.1.4 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_right_eye_right addr=10.0.1.4 screen=screen_front_lower_left viewport=vp_1200 + +[cluster_node] id=node_left_upper_left_eye_left addr=10.0.1.5 screen=screen_left_upper_left viewport=vp_1200 +[cluster_node] id=node_left_upper_left_eye_right addr=10.0.1.5 screen=screen_left_upper_left viewport=vp_1200 +[cluster_node] id=node_left_upper_right_eye_left addr=10.0.1.6 screen=screen_left_upper_right viewport=vp_1200 +[cluster_node] id=node_left_upper_right_eye_right addr=10.0.1.6 screen=screen_left_upper_right viewport=vp_1200 +[cluster_node] id=node_left_lower_left_eye_left addr=10.0.1.7 screen=screen_left_lower_left viewport=vp_1200 +[cluster_node] id=node_left_lower_left_eye_right addr=10.0.1.7 screen=screen_left_lower_left viewport=vp_1200 +[cluster_node] id=node_left_lower_right_eye_left addr=10.0.1.8 screen=screen_left_lower_right viewport=vp_1200 +[cluster_node] id=node_left_lower_right_eye_right addr=10.0.1.8 screen=screen_left_lower_right viewport=vp_1200 + +[cluster_node] id=node_right_upper_left_eye_left addr=10.0.1.9 screen=screen_right_upper_left viewport=vp_1200 +[cluster_node] id=node_right_upper_left_eye_right addr=10.0.1.9 screen=screen_right_upper_left viewport=vp_1200 +[cluster_node] id=node_right_upper_right_eye_left addr=10.0.1.10 screen=screen_right_upper_right viewport=vp_1200 +[cluster_node] id=node_right_upper_right_eye_right addr=10.0.1.10 screen=screen_right_upper_right viewport=vp_1200 +[cluster_node] id=node_right_lower_left_eye_left addr=10.0.1.11 screen=screen_right_lower_left viewport=vp_1200 +[cluster_node] id=node_right_lower_left_eye_right addr=10.0.1.11 screen=screen_right_lower_left viewport=vp_1200 +[cluster_node] id=node_right_lower_right_eye_left addr=10.0.1.12 screen=screen_right_lower_right viewport=vp_1200 +[cluster_node] id=node_right_lower_right_eye_right addr=10.0.1.12 screen=screen_right_lower_right viewport=vp_1200 + +[cluster_node] id=node_back_upper_left_eye_left addr=10.0.1.13 screen=screen_back_upper_left viewport=vp_1200 +[cluster_node] id=node_back_upper_left_eye_right addr=10.0.1.13 screen=screen_back_upper_left viewport=vp_1200 +[cluster_node] id=node_back_upper_right_eye_left addr=10.0.1.14 screen=screen_back_upper_right viewport=vp_1200 +[cluster_node] id=node_back_upper_right_eye_right addr=10.0.1.14 screen=screen_back_upper_right viewport=vp_1200 +[cluster_node] id=node_back_lower_left_eye_left addr=10.0.1.15 screen=screen_back_lower_left viewport=vp_1200 +[cluster_node] id=node_back_lower_left_eye_right addr=10.0.1.15 screen=screen_back_lower_left viewport=vp_1200 +[cluster_node] id=node_back_lower_right_eye_left addr=10.0.1.16 screen=screen_back_lower_right viewport=vp_1200 +[cluster_node] id=node_back_lower_right_eye_right addr=10.0.1.16 screen=screen_back_lower_right viewport=vp_1200 + +[cluster_node] id=node_floor_front_upper_left_eye_left addr=10.0.1.17 screen=screen_floor_front_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_left_eye_right addr=10.0.1.17 screen=screen_floor_front_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_right_eye_left addr=10.0.1.19 screen=screen_floor_front_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_right_eye_right addr=10.0.1.19 screen=screen_floor_front_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_left_eye_left addr=10.0.1.18 screen=screen_floor_front_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_left_eye_right addr=10.0.1.18 screen=screen_floor_front_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_right_eye_left addr=10.0.1.20 screen=screen_floor_front_lower_right viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_right_eye_right addr=10.0.1.20 screen=screen_floor_front_lower_right viewport=vp_1200 + +[cluster_node] id=node_floor_back_upper_left_eye_left addr=10.0.1.21 screen=screen_floor_back_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_left_eye_right addr=10.0.1.21 screen=screen_floor_back_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_right_eye_left addr=10.0.1.23 screen=screen_floor_back_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_right_eye_right addr=10.0.1.23 screen=screen_floor_back_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_left_eye_left addr=10.0.1.22 screen=screen_floor_back_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_left_eye_right addr=10.0.1.22 screen=screen_floor_back_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_right_eye_left addr=10.0.1.24 screen=screen_floor_back_lower_right viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_right_eye_right addr=10.0.1.24 screen=screen_floor_back_lower_right viewport=vp_1200 +##################################################################### + + +##################################################################### +# List of projection screens +#******************************************************************** +# Projection screen is a rectangle which determines the camera frustum. +# Usually the projection screen has the same dimensions as an output +# display but in some cases it may differ. +# +# Properties: +# id - unique projection screen name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. The pivot is a screen's +# center and the values are in meters. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. The pivot is a screen's +# center and the values are in degrees. +# size - width (X) and height (Y) of the screen. Values are in meters. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[screen] id=screen_main loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=0.433333,Y=0.270833" parent=display_main +[screen] id=screen_front_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_upper_left +[screen] id=screen_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_upper_right +[screen] id=screen_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_lower_left +[screen] id=screen_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_lower_left +[screen] id=screen_left_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_upper_left +[screen] id=screen_left_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_upper_right +[screen] id=screen_left_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_lower_left +[screen] id=screen_left_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_lower_right +[screen] id=screen_right_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_upper_left +[screen] id=screen_right_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_upper_right +[screen] id=screen_right_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_lower_left +[screen] id=screen_right_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_lower_right +[screen] id=screen_back_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_upper_left +[screen] id=screen_back_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_upper_right +[screen] id=screen_back_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_lower_left +[screen] id=screen_back_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_lower_right +[screen] id=screen_floor_front_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_upper_left +[screen] id=screen_floor_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_upper_right +[screen] id=screen_floor_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_lower_left +[screen] id=screen_floor_front_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_lower_right +[screen] id=screen_floor_back_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_upper_left +[screen] id=screen_floor_back_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_upper_right +[screen] id=screen_floor_back_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_lower_left +[screen] id=screen_floor_back_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_lower_right +############################################################### + + +##################################################################### +# List of viewport configurations +#******************************************************************** +# Viewport is a rectangle area of game window where rendered frame is +# mapped. Usually the viewport starts at 0:0 and has the same size as +# its parent window but in some cases these settings may differ. +# +# Properties: +# id - unique viewport name +# x - X coordinate of viewport's top left corner +# y - Y coordinate of viewport's top left corner +# width - width of viewport in pixels +# height - height of viewport in pixels +# +# Optional properties: +# flip_h - flip image horizontally; default is 'false' +# flip_v - flip image vertically; default is 'false' +#******************************************************************** +[viewport] id=vp_1000 x=0 y=0 width=1600 height=1000 flip_h=False flip_v=False +[viewport] id=vp_1200 x=0 y=0 width=1920 height=1200 flip_h=False flip_v=False +##################################################################### + + +##################################################################### +# List of cameras +#******************************************************************** +# Camera is a predefined point frome where the stereoscopic view built. +# It's possible to define multiple cameras and swith the active one +# during runtime. You're free to attach any camera to a tracking device +# for head tracking. Consider a camera as a viewer's head. +# +# Properties: +# id - unique camera name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[camera] id=camera_dynamic loc="X=0,Y=0,Z=0" parent=shutter_glasses +##################################################################### + + +##################################################################### +# List of scene nodes nodes (hierarchy transforms) +#******************************************************************** +# Scene node is an actor component which is basically a transformation +# matrix. Scene nodes can be helpful to build a component hierarchy, to +# define some special places (like a socket) within VR space. +# +# It might be difficult to understand what VR space origin is. Consider +# it as a point in space where VR space starts. Any componenent listed +# in this config file is relative to its parent or this origin. +# +# Properties: +# id - unique scene node name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[scene_node] id=cave_origin loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" +[scene_node] id=cave_center loc="X=0,Y=0,Z=1.65" rot="P=0,Y=0,R=0" parent=cave_origin + +[scene_node] id=flystick loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=cave_origin tracker_id=dtrack_tracker tracker_ch=7 +[scene_node] id=shutter_glasses loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=cave_origin tracker_id=dtrack_tracker tracker_ch=0 +[scene_node] id=display_main loc="X=0.40.0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=shutter_glasses + +[scene_node] id=angle_left loc="X=0,Y=0,Z=0" rot="P=0,Y=-90,R=0" parent=cave_center +[scene_node] id=angle_right loc="X=0,Y=0,Z=0" rot="P=0,Y=90,R=0" parent=cave_center +[scene_node] id=angle_back loc="X=0,Y=0,Z=0" rot="P=0,Y=180,R=0" parent=cave_center +[scene_node] id=angle_floor loc="X=0,Y=0,Z=0" rot="P=-90,Y=0,R=0" parent=cave_origin + +[scene_node] id=display_front_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_lower_left loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=cave_center + +[scene_node] id=display_left_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_left + +[scene_node] id=display_right_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_right + +[scene_node] id=display_back_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_back + +[scene_node] id=display_floor_front_upper_left loc="X=0,Y=-1.125,Z=+1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_upper_right loc="X=0,Y=1.125,Z=+1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_lower_left loc="X=0,Y=-1.125,Z=+0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_lower_right loc="X=0,Y=1.125,Z=+0.9375" rot="P=0,Y=0,R=0" parent=angle_floor + +[scene_node] id=display_floor_back_upper_left loc="X=0,Y=-1.125,Z=-0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_upper_right loc="X=0,Y=1.125,Z=-0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_lower_left loc="X=0,Y=-1.125,Z=-1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_lower_right loc="X=0,Y=1.125,Z=-1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +##################################################################### + + +##################################################################### +# List of input devices +#******************************************************************** +# Input devices are VRPN devices. The nDisplay supports the following +# types: analog, button and tracker. Many of physical input devices +# can be connected via VRPN. +# +# Properties: +# id - nique device name +# type - VRPN type (analog, button or tracker). +# addr - address of a VRPN server which handles this particular device. +# The value must match the following format: DEVICENAME@SERVER_ADDRESS +# where DEVICENAME is a VRPN name of this device and SERVER_ADDRESS +# is IPv4 address of VRPN server. +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# front (tracker only) - mapping of a tracking system axis to X axis of VR origin +# right (tracker only) - mapping of a tracking system axis to Y axis of VR origin +# up (tracker only) - mapping of a tracking system axis to Z axis of VR origin +# * The following values are allowed for axes mapping: X, -X, Y, -Y, Z, -Z +# +# Optional properties: +# remap - VRPN device channel remapping. Value format is: "from0:to0,from1:to1,...,fromN:toN". +# For example: remap="0:3,1:4,5:2" +#******************************************************************** +[input] id=dtrack_axis type=analog addr=DTrack2@10.0.1.29 +[input] id=dtrack_buttons type=buttons addr=DTrack2@10.0.1.29 +[input] id=dtrack_tracker type=tracker addr=DTrack2@10.0.1.29 loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" right=X up=Y front=-Z +##################################################################### + + +##################################################################### +# Stereoscopic settings +#******************************************************************** +# Properties: +# eye_swap - swap left and right eyes: +# false - L|R +# true - R|L +# eye_dist - interoccular distance in meters +[stereo] eye_swap=True eye_dist=0.064 +##################################################################### + + +##################################################################### +# General settings +#******************************************************************** +# Properties: +# swap_sync_policy - swap synchronization policy +# - 0 - no synchronization +# - 1 - software swap synchronization +# - 2 - NV swap lock (Nvidia cards only, OpenGL only) +[general] swap_sync_policy=2 +##################################################################### + + +##################################################################### +# Custom arguments +#******************************************************************** +# Any custom arguments available in runtime can be specified here. +# Format: ARG_NAME=ARG_VAL +[custom] +##################################################################### diff --git a/Content/Configurations/aixcave_infiniband.cfg b/Content/Configurations/aixcave_infiniband.cfg new file mode 100644 index 0000000000000000000000000000000000000000..f2cb3edd0dfdb692988dfa5900bf5b6fdbcde265 --- /dev/null +++ b/Content/Configurations/aixcave_infiniband.cfg @@ -0,0 +1,311 @@ +##################################################################### +# nDisplay config file +# +# This file demonstrates how to configure for the AixCAVE. +##################################################################### + +##################################################################### +# List of cluster nodes +#******************************************************************** +# Cluster node is an application instance. It's allowed to use +# multiple instances on the same PC. Sometimes its necessary. +# +# Properties: +# id - unique node name +# addr - network address (IPv4 only) +# screen - projection screen ID to use +# viewport - viewport ID to use +# master - specifies if current node is master; default is 'false' +# port_cs - Cluster Synchronization port (required on master node only) +# port_ss - Swap Synchronization port (required on master node only) +# +# Optional properties: +# sound - turns on/off sound for this application instance; default is 'false' +#******************************************************************** +[cluster_node] id=node_main addr=134.61.47.29 screen=screen_main viewport=vp_1000 port_cs=41001 port_ss=41002 master=true sound=true + +[cluster_node] id=node_front_upper_left_eye_left addr=134.61.47.132 screen=screen_front_upper_left viewport=vp_1200 +[cluster_node] id=node_front_upper_left_eye_right addr=134.61.47.132 screen=screen_front_upper_left viewport=vp_1200 +[cluster_node] id=node_front_upper_right_eye_left addr=134.61.47.133 screen=screen_front_upper_right viewport=vp_1200 +[cluster_node] id=node_front_upper_right_eye_right addr=134.61.47.133 screen=screen_front_upper_right viewport=vp_1200 +[cluster_node] id=node_front_lower_left_eye_left addr=134.61.47.134 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_left_eye_right addr=134.61.47.134 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_right_eye_left addr=134.61.47.135 screen=screen_front_lower_left viewport=vp_1200 +[cluster_node] id=node_front_lower_right_eye_right addr=134.61.47.135 screen=screen_front_lower_left viewport=vp_1200 + +[cluster_node] id=node_left_upper_left_eye_left addr=134.61.47.136 screen=screen_left_upper_left viewport=vp_1200 +[cluster_node] id=node_left_upper_left_eye_right addr=134.61.47.136 screen=screen_left_upper_left viewport=vp_1200 +[cluster_node] id=node_left_upper_right_eye_left addr=134.61.47.137 screen=screen_left_upper_right viewport=vp_1200 +[cluster_node] id=node_left_upper_right_eye_right addr=134.61.47.137 screen=screen_left_upper_right viewport=vp_1200 +[cluster_node] id=node_left_lower_left_eye_left addr=134.61.47.138 screen=screen_left_lower_left viewport=vp_1200 +[cluster_node] id=node_left_lower_left_eye_right addr=134.61.47.138 screen=screen_left_lower_left viewport=vp_1200 +[cluster_node] id=node_left_lower_right_eye_left addr=134.61.47.139 screen=screen_left_lower_right viewport=vp_1200 +[cluster_node] id=node_left_lower_right_eye_right addr=134.61.47.139 screen=screen_left_lower_right viewport=vp_1200 + +[cluster_node] id=node_right_upper_left_eye_left addr=134.61.47.140 screen=screen_right_upper_left viewport=vp_1200 +[cluster_node] id=node_right_upper_left_eye_right addr=134.61.47.140 screen=screen_right_upper_left viewport=vp_1200 +[cluster_node] id=node_right_upper_right_eye_left addr=134.61.47.141 screen=screen_right_upper_right viewport=vp_1200 +[cluster_node] id=node_right_upper_right_eye_right addr=134.61.47.141 screen=screen_right_upper_right viewport=vp_1200 +[cluster_node] id=node_right_lower_left_eye_left addr=134.61.47.142 screen=screen_right_lower_left viewport=vp_1200 +[cluster_node] id=node_right_lower_left_eye_right addr=134.61.47.142 screen=screen_right_lower_left viewport=vp_1200 +[cluster_node] id=node_right_lower_right_eye_left addr=134.61.47.143 screen=screen_right_lower_right viewport=vp_1200 +[cluster_node] id=node_right_lower_right_eye_right addr=134.61.47.143 screen=screen_right_lower_right viewport=vp_1200 + +[cluster_node] id=node_back_upper_left_eye_left addr=134.61.47.144 screen=screen_back_upper_left viewport=vp_1200 +[cluster_node] id=node_back_upper_left_eye_right addr=134.61.47.144 screen=screen_back_upper_left viewport=vp_1200 +[cluster_node] id=node_back_upper_right_eye_left addr=134.61.47.145 screen=screen_back_upper_right viewport=vp_1200 +[cluster_node] id=node_back_upper_right_eye_right addr=134.61.47.145 screen=screen_back_upper_right viewport=vp_1200 +[cluster_node] id=node_back_lower_left_eye_left addr=134.61.47.146 screen=screen_back_lower_left viewport=vp_1200 +[cluster_node] id=node_back_lower_left_eye_right addr=134.61.47.146 screen=screen_back_lower_left viewport=vp_1200 +[cluster_node] id=node_back_lower_right_eye_left addr=134.61.47.147 screen=screen_back_lower_right viewport=vp_1200 +[cluster_node] id=node_back_lower_right_eye_right addr=134.61.47.147 screen=screen_back_lower_right viewport=vp_1200 + +[cluster_node] id=node_floor_front_upper_left_eye_left addr=134.61.47.148 screen=screen_floor_front_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_left_eye_right addr=134.61.47.148 screen=screen_floor_front_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_right_eye_left addr=134.61.47.150 screen=screen_floor_front_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_front_upper_right_eye_right addr=134.61.47.150 screen=screen_floor_front_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_left_eye_left addr=134.61.47.149 screen=screen_floor_front_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_left_eye_right addr=134.61.47.149 screen=screen_floor_front_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_right_eye_left addr=134.61.47.151 screen=screen_floor_front_lower_right viewport=vp_1200 +[cluster_node] id=node_floor_front_lower_right_eye_right addr=134.61.47.151 screen=screen_floor_front_lower_right viewport=vp_1200 + +[cluster_node] id=node_floor_back_upper_left_eye_left addr=134.61.47.152 screen=screen_floor_back_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_left_eye_right addr=134.61.47.152 screen=screen_floor_back_upper_left viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_right_eye_left addr=134.61.47.154 screen=screen_floor_back_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_back_upper_right_eye_right addr=134.61.47.154 screen=screen_floor_back_upper_right viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_left_eye_left addr=134.61.47.153 screen=screen_floor_back_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_left_eye_right addr=134.61.47.153 screen=screen_floor_back_lower_left viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_right_eye_left addr=134.61.47.155 screen=screen_floor_back_lower_right viewport=vp_1200 +[cluster_node] id=node_floor_back_lower_right_eye_right addr=134.61.47.155 screen=screen_floor_back_lower_right viewport=vp_1200 +##################################################################### + + +##################################################################### +# List of projection screens +#******************************************************************** +# Projection screen is a rectangle which determines the camera frustum. +# Usually the projection screen has the same dimensions as an output +# display but in some cases it may differ. +# +# Properties: +# id - unique projection screen name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. The pivot is a screen's +# center and the values are in meters. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. The pivot is a screen's +# center and the values are in degrees. +# size - width (X) and height (Y) of the screen. Values are in meters. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[screen] id=screen_main loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=0.433333,Y=0.270833" parent=display_main +[screen] id=screen_front_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_upper_left +[screen] id=screen_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_upper_right +[screen] id=screen_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_lower_left +[screen] id=screen_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_front_lower_left +[screen] id=screen_left_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_upper_left +[screen] id=screen_left_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_upper_right +[screen] id=screen_left_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_lower_left +[screen] id=screen_left_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_left_lower_right +[screen] id=screen_right_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_upper_left +[screen] id=screen_right_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_upper_right +[screen] id=screen_right_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_lower_left +[screen] id=screen_right_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_right_lower_right +[screen] id=screen_back_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_upper_left +[screen] id=screen_back_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_upper_right +[screen] id=screen_back_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_lower_left +[screen] id=screen_back_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3.14285,Y=1.964285" parent=display_back_lower_right +[screen] id=screen_floor_front_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_upper_left +[screen] id=screen_floor_front_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_upper_right +[screen] id=screen_floor_front_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_lower_left +[screen] id=screen_floor_front_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_front_lower_right +[screen] id=screen_floor_back_upper_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_upper_left +[screen] id=screen_floor_back_upper_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_upper_right +[screen] id=screen_floor_back_lower_left loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_lower_left +[screen] id=screen_floor_back_lower_right loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" size="X=3,Y=1.875" parent=display_floor_back_lower_right +############################################################### + + +##################################################################### +# List of viewport configurations +#******************************************************************** +# Viewport is a rectangle area of game window where rendered frame is +# mapped. Usually the viewport starts at 0:0 and has the same size as +# its parent window but in some cases these settings may differ. +# +# Properties: +# id - unique viewport name +# x - X coordinate of viewport's top left corner +# y - Y coordinate of viewport's top left corner +# width - width of viewport in pixels +# height - height of viewport in pixels +# +# Optional properties: +# flip_h - flip image horizontally; default is 'false' +# flip_v - flip image vertically; default is 'false' +#******************************************************************** +[viewport] id=vp_1000 x=0 y=0 width=1600 height=1000 flip_h=False flip_v=False +[viewport] id=vp_1200 x=0 y=0 width=1920 height=1200 flip_h=False flip_v=False +##################################################################### + + +##################################################################### +# List of cameras +#******************************************************************** +# Camera is a predefined point frome where the stereoscopic view built. +# It's possible to define multiple cameras and swith the active one +# during runtime. You're free to attach any camera to a tracking device +# for head tracking. Consider a camera as a viewer's head. +# +# Properties: +# id - unique camera name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[camera] id=camera_dynamic loc="X=0,Y=0,Z=0" parent=shutter_glasses +##################################################################### + + +##################################################################### +# List of scene nodes nodes (hierarchy transforms) +#******************************************************************** +# Scene node is an actor component which is basically a transformation +# matrix. Scene nodes can be helpful to build a component hierarchy, to +# define some special places (like a socket) within VR space. +# +# It might be difficult to understand what VR space origin is. Consider +# it as a point in space where VR space starts. Any componenent listed +# in this config file is relative to its parent or this origin. +# +# Properties: +# id - unique scene node name +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# Optional properties: +# parent - ID of parent component in VR hierarchy; default is VR root. +# tracker_id - ID of tracking device; no tracking by default. +# tracker_ch - ID of tracking device's channel; no tracking by default. +#******************************************************************** +[scene_node] id=cave_origin loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" +[scene_node] id=cave_center loc="X=0,Y=0,Z=1.65" rot="P=0,Y=0,R=0" parent=cave_origin + +[scene_node] id=flystick loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=cave_origin tracker_id=DTrackTracker tracker_ch=7 +[scene_node] id=shutter_glasses loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=cave_origin tracker_id=DTrackTracker tracker_ch=0 +[scene_node] id=display_main loc="X=0.40.0,Y=0,Z=0" rot="P=0,Y=0,R=0" parent=shutter_glasses + +[scene_node] id=angle_left loc="X=0,Y=0,Z=0" rot="P=0,Y=-90,R=0" parent=cave_center +[scene_node] id=angle_right loc="X=0,Y=0,Z=0" rot="P=0,Y=90,R=0" parent=cave_center +[scene_node] id=angle_back loc="X=0,Y=0,Z=0" rot="P=0,Y=180,R=0" parent=cave_center +[scene_node] id=angle_floor loc="X=0,Y=0,Z=0" rot="P=-90,Y=0,R=0" parent=cave_origin + +[scene_node] id=display_front_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=cave_center +[scene_node] id=display_front_lower_left loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=cave_center + +[scene_node] id=display_left_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_left +[scene_node] id=display_left_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_left + +[scene_node] id=display_right_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_right +[scene_node] id=display_right_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_right + +[scene_node] id=display_back_upper_left loc="X=2.625,Y=-1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_upper_right loc="X=2.625,Y=+1.053575,Z=+0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_lower_left loc="X=2.625,Y=-1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_back +[scene_node] id=display_back_lower_right loc="X=2.625,Y=+1.053575,Z=-0.6678575" rot="P=0,Y=0,R=0" parent=angle_back + +[scene_node] id=display_floor_front_upper_left loc="X=0,Y=-1.125,Z=+1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_upper_right loc="X=0,Y=1.125,Z=+1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_lower_left loc="X=0,Y=-1.125,Z=+0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_front_lower_right loc="X=0,Y=1.125,Z=+0.9375" rot="P=0,Y=0,R=0" parent=angle_floor + +[scene_node] id=display_floor_back_upper_left loc="X=0,Y=-1.125,Z=-0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_upper_right loc="X=0,Y=1.125,Z=-0.9375" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_lower_left loc="X=0,Y=-1.125,Z=-1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +[scene_node] id=display_floor_back_lower_right loc="X=0,Y=1.125,Z=-1.6875" rot="P=0,Y=0,R=0" parent=angle_floor +##################################################################### + + +##################################################################### +# List of input devices +#******************************************************************** +# Input devices are VRPN devices. The nDisplay supports the following +# types: analog, button and tracker. Many of physical input devices +# can be connected via VRPN. +# +# Properties: +# id - nique device name +# type - VRPN type (analog, button or tracker). +# addr - address of a VRPN server which handles this particular device. +# The value must match the following format: DEVICENAME@SERVER_ADDRESS +# where DEVICENAME is a VRPN name of this device and SERVER_ADDRESS +# is IPv4 address of VRPN server. +# loc - relative location to the parent component. Location is relative +# to the VR root if no parent specified. +# rot - relative rotation to the parent component. Rotation is relative +# to the VR root if no parent specified. +# +# front (tracker only) - mapping of a tracking system axis to X axis of VR origin +# right (tracker only) - mapping of a tracking system axis to Y axis of VR origin +# up (tracker only) - mapping of a tracking system axis to Z axis of VR origin +# * The following values are allowed for axes mapping: X, -X, Y, -Y, Z, -Z +# +# Optional properties: +# remap - VRPN device channel remapping. Value format is: "from0:to0,from1:to1,...,fromN:toN". +# For example: remap="0:3,1:4,5:2" +#******************************************************************** +[input] id=DTrackAxis type=analog addr=DTrack2@10.0.1.29 +[input] id=DTrackButtons type=buttons addr=DTrack2@10.0.1.29 +[input] id=DTrackTracker type=tracker addr=DTrack2@10.0.1.29 loc="X=0,Y=0,Z=0" rot="P=0,Y=0,R=0" right=X up=Y front=-Z +##################################################################### + + +##################################################################### +# Stereoscopic settings +#******************************************************************** +# Properties: +# eye_swap - swap left and right eyes: +# false - L|R +# true - R|L +# eye_dist - interoccular distance in meters +[stereo] eye_swap=True eye_dist=0.064 +##################################################################### + + +##################################################################### +# General settings +#******************************************************************** +# Properties: +# swap_sync_policy - swap synchronization policy +# - 0 - no synchronization +# - 1 - software swap synchronization +# - 2 - NV swap lock (Nvidia cards only, OpenGL only) +[general] swap_sync_policy=2 +##################################################################### + + +##################################################################### +# Custom arguments +#******************************************************************** +# Any custom arguments available in runtime can be specified here. +# Format: ARG_NAME=ARG_VAL +[custom] +##################################################################### diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp index 270e3f17e86eca27e4a5ce3d22b4901766d7762c..b55f5209b7be33e4305a19e0a81cac174493f1d4 100644 --- a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp +++ b/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp @@ -144,10 +144,10 @@ void ADisplayClusterPawnBase::SetupPlayerInputComponent(UInputComponent* PlayerI Super::SetupPlayerInputComponent(PlayerInputComponent); if (PlayerInputComponent) { - PlayerInputComponent->BindAxis("MoveForward", this, &ADisplayClusterPawnBase::MoveForward ); - PlayerInputComponent->BindAxis("MoveRight" , this, &ADisplayClusterPawnBase::MoveRight ); - PlayerInputComponent->BindAxis("MoveUp" , this, &ADisplayClusterPawnBase::MoveUp ); - PlayerInputComponent->BindAxis("TurnRate" , this, &ADisplayClusterPawnBase::TurnAtRate2 ); - PlayerInputComponent->BindAxis("LookUpRate" , this, &ADisplayClusterPawnBase::LookUpAtRate); + PlayerInputComponent->BindAxis("MoveForward", this, &ADisplayClusterPawnBase::MoveForward ); + PlayerInputComponent->BindAxis("MoveRight" , this, &ADisplayClusterPawnBase::MoveRight ); + PlayerInputComponent->BindAxis("MoveUp" , this, &ADisplayClusterPawnBase::MoveUp ); + PlayerInputComponent->BindAxis("TurnRate" , this, &ADisplayClusterPawnBase::TurnAtRate2 ); + PlayerInputComponent->BindAxis("LookUpRate" , this, &ADisplayClusterPawnBase::LookUpAtRate); } } diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp index 9b68ab1dbbe84e253fd2c0aae0bbef77a89c99b9..7ec14b842f6712634895bd9f1607ee4ea3086bd0 100644 --- a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp +++ b/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp @@ -1,16 +1,54 @@ #include "DisplayClusterPawnCAVE.h" +#include "Cluster/IDisplayClusterClusterManager.h" #include "Game/IDisplayClusterGameManager.h" +#include "Input/IDisplayClusterInputManager.h" #include "IDisplayCluster.h" -void ADisplayClusterPawnCAVE::BeginPlay() +void ADisplayClusterPawnCAVE::OnAxisEvent_Implementation (FVector2D Value ) { - Super::BeginPlay(); - Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById("flystick"); + if (!IDisplayCluster::Get().GetClusterMgr()->IsMaster()) return; + AddMovementInput(Flystick->GetRightVector (), Value[0]); + AddMovementInput(Flystick->GetForwardVector(), Value[1]); } -void ADisplayClusterPawnCAVE::MoveForward(float Value) +void ADisplayClusterPawnCAVE::OnTriggerEvent_Implementation(bool Pressed ) { - if (!Flystick) - Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById("flystick"); - Flystick ? AddMovementInput(Flystick->GetForwardVector(), Value) : Super::MoveForward(Value); + +} +void ADisplayClusterPawnCAVE::OnButtonEvent_Implementation (bool Pressed , int32 Index) +{ + +} + +void ADisplayClusterPawnCAVE::Tick (float DeltaSeconds) +{ + // Due to these declarations, this class is bound to aixcave.cfg. + static const auto flystick_name = FString(TEXT("flystick" )); + static const auto axis_name = FString(TEXT("dtrack_axis" )); + static const auto buttons_name = FString(TEXT("dtrack_buttons")); + + Super::Tick(DeltaSeconds); + + if (!Flystick) Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById(flystick_name); + if (!Flystick) return; + + FVector2D Axes; + IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 0, Axes[0]); + IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 1, Axes[1]); + if (Axes[0] != 0.0f || Axes[1] != 0.0f) OnAxisEvent_Implementation(Axes); + + bool TriggerPressed = false, TriggerReleased = false; + IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, 0, TriggerPressed ); + IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, 0, TriggerReleased); + if (TriggerPressed ) OnTriggerEvent_Implementation(true ); + if (TriggerReleased) OnTriggerEvent_Implementation(false); + + for (auto i = 1; i < 6; ++i) + { + bool ButtonPressed = false, ButtonReleased = false; + IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, i, ButtonPressed ); + IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, i, ButtonReleased); + if (ButtonPressed ) OnButtonEvent_Implementation(true , i); + if (ButtonReleased) OnButtonEvent_Implementation(false, i); + } } diff --git a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp b/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp index 8b2d5aadf5dd4a4a3f1d9405205cc4f530ac3b9c..aa70c4ae1fbf68dbd65102a8437bb21bd3557df6 100644 --- a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp +++ b/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp @@ -2,7 +2,7 @@ #define LOCTEXT_NAMESPACE "FnDisplayExtensionsModule" -void FnDisplayExtensionsModule::StartupModule() +void FnDisplayExtensionsModule::StartupModule () { } diff --git a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h b/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h index 2c68f15d371f05d18fb4f6fc97196b3e772fe0b6..34d1ed7fbd5eeb78a93e41f2ac7418e51cd7064a 100644 --- a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h +++ b/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h @@ -2,6 +2,7 @@ #include "CoreMinimal.h" #include "DisplayClusterGameMode.h" + #include "DisplayClusterGameModeCAVE.generated.h" UCLASS() diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h index 5eb76f52ff42409c369b56f14f3ff7f3e0403217..9cdc7a1f036a47ca730948d76462817c1b3879ea 100644 --- a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h +++ b/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h @@ -6,6 +6,7 @@ #include "GameFramework/RotatingMovementComponent.h" #include "CoreMinimal.h" #include "DisplayClusterPawn.h" + #include "DisplayClusterPawnBase.generated.h" UCLASS() diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h index 99bd5b796542b073f911e0350219800c13a012ff..e60cf9540616bf689b9f400acd8fce905898621c 100644 --- a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h +++ b/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h @@ -3,6 +3,7 @@ #include "CoreMinimal.h" #include "DisplayClusterPawnBase.h" #include "DisplayClusterSceneComponent.h" + #include "DisplayClusterPawnCAVE.generated.h" UCLASS() @@ -11,9 +12,12 @@ class NDISPLAYEXTENSIONS_API ADisplayClusterPawnCAVE : public ADisplayClusterPaw GENERATED_BODY() public: - virtual void BeginPlay() override; - virtual void MoveForward(float Value) override; + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnAxisEvent (FVector2D Value ); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnButtonEvent (bool Pressed, int32 Index); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnTriggerEvent(bool Pressed); + +protected: + virtual void Tick (float DeltaSeconds) override; - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Pawn") UDisplayClusterSceneComponent* Flystick = nullptr; }; diff --git a/Source/nDisplayExtensions/Public/nDisplayExtensions.h b/Source/nDisplayExtensions/Public/nDisplayExtensions.h index d5e9096991ad70694240b1ce329f2222ba2456cb..275de5791b5de51cbd5d31f76abeb60f0e953b2a 100644 --- a/Source/nDisplayExtensions/Public/nDisplayExtensions.h +++ b/Source/nDisplayExtensions/Public/nDisplayExtensions.h @@ -6,6 +6,6 @@ class NDISPLAYEXTENSIONS_API FnDisplayExtensionsModule : public IModuleInterface { public: - virtual void StartupModule() override; + virtual void StartupModule () override; virtual void ShutdownModule() override; };