10 #ifndef SPRK_STD_OPERATORS_H
11 #define SPRK_STD_OPERATORS_H
21 # define SPRK_API __declspec (dllexport)
23 # define SPRK_API __declspec (dllimport)
28 # if defined(LINUX_SYSTEM) && defined(SPROCKETS)
30 # define SPRK_API __attribute__ ((visibility ("default")))
59 virtual UTF8 GetName()
const {
return "HPS_PanOrbitZoomOperator"; }
65 virtual bool OnMouseDown(
MouseState const & in_state);
70 virtual bool OnMouseUp(
MouseState const & in_state);
75 virtual bool OnMouseMove(
MouseState const & in_state);
81 virtual bool OnTouchDown(
TouchState const & in_state);
86 virtual bool OnTouchUp(
TouchState const & in_state);
91 virtual bool OnTouchMove(
TouchState const & in_state);
97 Vector start_sphere_pos, new_sphere_pos;
104 float zoom_start_field_width;
105 float zoom_start_field_height;
106 Vector zoom_start_camera_look;
109 void UpdateZoom(
float zoom_factor);
110 void UpdateZoomLimit();
111 void UpdatePan(
WorldPoint const & newLocation);
112 void UpdateRoll(
Vector const & relative);
133 virtual bool OnMouseDown(
MouseState const & in_state);
138 virtual bool OnMouseUp(
MouseState const & in_state);
143 virtual bool OnMouseMove(
MouseState const & in_state);
149 virtual bool OnTouchDown(
TouchState const & in_state);
154 virtual bool OnTouchUp(
TouchState const & in_state);
159 virtual bool OnTouchMove(
TouchState const & in_state);
164 bool operator_active;
165 TouchID tracked_touch_ID;
187 virtual bool OnMouseDown(
MouseState const & in_state);
192 virtual bool OnMouseUp(
MouseState const & in_state);
197 virtual bool OnMouseMove(
MouseState const & in_state);
203 virtual bool OnTouchDown(
TouchState const & in_state);
208 virtual bool OnTouchUp(
TouchState const & in_state);
213 virtual bool OnTouchMove(
TouchState const & in_state);
218 bool operator_active;
219 TouchID tracked_touch_ID;
221 Vector start_sphere_pos, new_sphere_pos;
236 virtual UTF8 GetName()
const {
return "HPS_RelativeOrbitOperator"; }
238 virtual bool OnMouseDown(
MouseState const & in_state);
239 virtual bool OnMouseUp(
MouseState const & in_state);
240 virtual bool OnMouseMove(
MouseState const & in_state);
242 virtual bool OnTouchDown(
TouchState const & in_state);
243 virtual bool OnTouchUp(
TouchState const & in_state);
244 virtual bool OnTouchMove(
TouchState const & in_state);
250 bool operator_active;
251 TouchID tracked_touch_ID;
252 Vector start_sphere_pos, new_sphere_pos;
274 virtual bool OnMouseDown(
MouseState const & in_state);
279 virtual bool OnMouseUp(
MouseState const & in_state);
284 virtual bool OnMouseMove(
MouseState const & in_state);
290 virtual bool OnTouchDown(
TouchState const & in_state);
295 virtual bool OnTouchMove(
TouchState const & in_state);
298 bool operator_active;
299 TouchID tracked_touch_ID;
305 float zoom_start_field_width;
306 float zoom_start_field_height;
307 Vector zoom_start_camera_look;
308 Point zoom_start_camera_target;
311 void UpdateZoom(
float zoom_factor);
312 void UpdateZoomLimit();
320 virtual UTF8 GetName()
const {
return "HPS_ConstructRectangleOperator"; }
322 virtual void OnViewAttached();
324 virtual bool OnMouseDown(
MouseState const & in_state);
325 virtual bool OnMouseUp(
MouseState const & in_state);
326 virtual bool OnMouseMove(
MouseState const & in_state);
328 virtual bool OnTouchDown(
TouchState const & in_state);
329 virtual bool OnTouchUp(
TouchState const & in_state);
330 virtual bool OnTouchMove(
TouchState const & in_state);
332 bool IsRectangleValid()
const {
return is_rect_valid; }
338 bool ConstructRectCommon(
WindowPoint const & in_loc);
339 void SetupConstructionSegment();
342 bool use_center_marker;
344 bool operator_active;
351 TouchID tracked_touch_ID;
360 virtual bool OnMouseUp(
MouseState const & in_state);
361 virtual bool OnTouchUp(
TouchState const & in_state);
364 bool ZoomCommon(
WindowKey const & in_window,
KeyPath const & in_event_path);
396 virtual void OnViewAttached();
398 virtual bool OnMouseUp(
MouseState const & in_state);
399 virtual bool OnTouchUp(
TouchState const & in_state);
438 virtual UTF8 GetName()
const {
return "HPS_HighlightAreaOperator"; }
440 virtual void OnViewAttached();
442 virtual bool OnMouseUp(
MouseState const & in_state);
443 virtual bool OnTouchUp(
TouchState const & in_state);
493 virtual bool OnMouseDown(
MouseState const & in_state);
494 virtual bool OnTouchDown(
TouchState const & in_state);
531 virtual bool OnMouseDown(
MouseState const & in_state);
532 virtual bool OnTouchDown(
TouchState const & in_state);
568 void UpdateZoomLimit();
570 virtual bool OnMouseWheel(
MouseState const & in_state);
572 virtual void OnModelAttached();
603 virtual bool OnMouseDown(
MouseState const & in_state);
608 virtual bool OnMouseUp(
MouseState const & in_state);
613 virtual bool OnMouseMove(
MouseState const & in_state);
618 virtual bool OnMouseWheel(
MouseState const & in_state);
625 virtual bool OnTouchDown(
TouchState const & in_state);
630 virtual bool OnTouchUp(
TouchState const & in_state);
636 virtual bool OnTouchMove(
TouchState const & in_state);
640 void CalculateCenterPoint(
WindowKey const & window,
Point const & location);
642 bool operator_active;
643 bool center_point_set;
645 TouchID tracked_touch_ID;
659 virtual UTF8 GetName()
const {
return "HPS_ZoomFitTouchOperator"; }
665 virtual bool OnTouchDown(
TouchState const & in_state);
670 virtual bool OnTouchUp(
TouchState const & in_state);
673 TouchID tracked_touch_ID;
729 virtual bool OnMouseDown(
MouseState const & in_state);
733 virtual bool OnMouseUp(
MouseState const & in_state);
738 virtual bool OnMouseMove(
MouseState const & in_state);
744 virtual bool OnMouseWheel(
MouseState const & in_state);
750 virtual bool OnTouchDown(
TouchState const & in_state);
754 virtual bool OnTouchUp(
TouchState const & in_state);
759 virtual bool OnTouchMove(
TouchState const & in_state);
767 virtual void OnModelAttached();
768 virtual void OnViewAttached();
769 virtual void OnViewDetached();
772 void InvertXAxis() { invert_x_axis = !invert_x_axis;}
773 void InvertYAxis() { invert_y_axis = !invert_y_axis;}
774 bool IsXAxisInverted() {
return invert_x_axis; }
775 bool IsYAxisInverted() {
return invert_y_axis; }
779 float GetKeyboardSensitivity() {
return keyboard_sensitivity; }
780 void SetKeyboardSensitivity(
float in_keyboard_sensitivity) { keyboard_sensitivity = in_keyboard_sensitivity; }
783 float GetMouseSensitivity() {
return mouse_sensitivity; }
784 void SetMouseSensitivity(
float in_mouse_sensitivity) { mouse_sensitivity = in_mouse_sensitivity; }
787 float GetLeftJoystickSensitivity() {
return left_joystick_sensitivity; }
788 void SetLeftJoystickSensitivity(
float in_left_joystick_sensitivity) { left_joystick_sensitivity = in_left_joystick_sensitivity; }
791 float GetRightJoystickSensitivity() {
return right_joystick_sensitivity; }
792 void SetRightJoystickSensitivity(
float right_joystick_sensitivity) { right_joystick_sensitivity = right_joystick_sensitivity; }
798 float GetJoystickDeadZone() {
return joystick_dead_zone; }
799 void SetJoystickDeadZone(
float in_dead_zone) { joystick_dead_zone = in_dead_zone; }
805 no_movement = 0x0000,
806 moving_forward = 0x0001,
807 moving_back = 0x0002,
808 moving_left = 0x0004,
809 moving_right = 0x0008,
811 moving_down = 0x0020,
815 move_with_touch = 0x0200,
816 rotate_with_touch = 0x0400
819 unsigned int movement_flags;
826 void MoveForward(
Point & position,
Point & target,
Vector const & direction);
829 void RotateScene(
Point & position,
Point & target);
830 void RotateWithTouch(
Point & position,
Point & target);
831 void RotateCommon(
Point const & delta,
Point & position,
Point & target);
835 enum class TouchPosition
843 TouchID left_side_touch;
844 TouchID right_side_touch;
845 TouchID second_right_touch;
859 float joystick_dead_zone;
862 float keyboard_sensitivity;
863 float old_keyboard_sensitivity;
864 float left_joystick_sensitivity;
865 float old_left_joystick_sensitivity;
866 float right_joystick_sensitivity;
867 float old_right_joystick_sensitivity;
868 float mouse_sensitivity;
871 bool two_right_fingers_down;
882 void UpdateKeyboardState(KeyboardState
const & in_state);
883 void ComputeReasonableStepLength();
884 void CreateJoystick(
TouchState const & in_state, TouchPosition touch_position);
926 virtual void OnViewAttached();
935 void SetGroundPlane(
Plane const & in_plane) { ground = in_plane; }
936 Plane GetGroundPlane() {
return ground; }
939 void SetWalkerHeight(
float height) { height_off_ground = height; }
940 float GetWalkerHeight() {
return height_off_ground; }
945 float height_off_ground;
947 void CalculateGroundPlane();
949 void AdjustWalkingDirection(
Vector const & camera_direction,
Vector const & camera_up);
987 virtual bool OnMouseDown(
MouseState const & in_state);
992 virtual bool OnMouseMove(
MouseState const & in_state);
996 virtual bool OnMouseUp(
MouseState const & in_state);
1020 void MoveWithMouse(
Point & position,
Point & target);
1094 virtual void OnModelAttached();
1095 virtual void OnViewAttached();
1096 virtual void OnViewDetached();
1102 void InsertCuttingPlaneFromEquation(
Plane const & in_plane);
1109 virtual bool OnMouseDown(
MouseState const & in_state);
1114 virtual bool OnMouseUp(
MouseState const & in_state);
1121 virtual bool OnMouseMove(
MouseState const & in_state);
1128 virtual bool OnTouchDown(
TouchState const & in_state);
1133 virtual bool OnTouchUp(
TouchState const & in_state);
1139 virtual bool OnTouchMove(
TouchState const & in_state);
1177 void SetMouseOverHighlighting(
bool in_enable_mouse_over_highlighting) { enable_mouse_over_highlighting = in_enable_mouse_over_highlighting; }
1188 void InsertNormalIndicator(
float scale);
1189 void InsertCuttingPlaneGeometry();
1190 void MouseOverHighlighting(MouseState
const & in_state);
1191 void TranslateCuttingPlane(KeyPath
const & in_event_path, WindowPoint
const & in_event_location);
1192 bool HandleMouseAndTouchDown(WindowKey
const & in_event_source,
int in_number_of_clicks,
1193 KeyPath
const & in_event_path, WindowPoint
const & in_event_location);
1195 TouchID tracked_touch_ID;
1196 CuttingSectionKey section_key;
1197 SegmentKey plane_segment_key;
1199 MaterialMappingKit plane_material;
1200 SegmentKey indicator_seg;
1202 WorldPoint start_world_point;
1203 SelectionOptionsKit selection_options;
1204 SelectionOptionsKit mouse_over_selection_options;
1205 float indicator_scale;
1206 Vector plane_normal;
1207 bool plane_normal_valid;
1208 WorldPoint anchor_point;
1209 SimpleCuboid model_bounding;
1211 UpdateNotifier last_highlight_notifier;
1212 bool last_skipped_highlight_state_valid;
1213 MouseState last_skipped_highlight_state;
1214 bool is_plane_highlighted;
1215 PortfolioKey portfolio;
1216 SegmentKey style_segment;
1217 HighlightOptionsKit highlight_options;
1218 bool enable_mouse_over_highlighting;
1221 KeyArray navigation_keys;
Handedness
Definition: hps.h:1261
virtual UTF8 GetName() const
Definition: sprk_ops.h:491
virtual bool OnMouseWheel(MouseState const &in_state)
Definition: sprk_ops.h:981
Definition: sprk_ops.h:961
Definition: sprk_ops.h:263
virtual UTF8 GetName() const
Definition: sprk_ops.h:181
HighlightOptionsKit GetHighlightOptions() const
Definition: sprk_ops.h:455
Definition: sprk_ops.h:377
SelectionOptionsKit GetSelectionOptions() const
Definition: sprk_ops.h:510
virtual UTF8 GetName() const
Definition: sprk_ops.h:967
Definition: sprk_ops.h:54
ZoomType
Definition: sprk_ops.h:553
void SetIndicatorScale(float in_scale)
Definition: sprk_ops.h:1153
virtual UTF8 GetName() const
Definition: sprk_ops.h:236
virtual UTF8 GetName() const
Definition: sprk_ops.h:438
SelectionOptionsKit GetSelectionOptions() const
Definition: sprk_ops.h:417
Definition: sprk_ops.h:591
virtual bool OnTouchDown(TouchState const &in_state)
Definition: sprk_ops.h:1002
void SetPlaneHighlightOptions(HighlightOptionsKit const &in_highlight_options)
Definition: sprk_ops.h:1169
Definition: sprk_ops.h:474
Definition: sprk_ops.h:176
Definition: sprk_ops.h:316
Definition: sprk_ops.h:654
virtual bool OnTouchMove(TouchState const &in_state)
Definition: sprk_ops.h:1007
void SetSelectionOptions(SelectionOptionsKit const &in_options)
Definition: sprk_ops.h:505
Definition: sprk_ops.h:1086
virtual UTF8 GetName() const
Definition: sprk_ops.h:320
Definition: sprk_ops.h:698
Definition: sprk_ops.h:427
virtual UTF8 GetName() const
Definition: sprk_ops.h:394
virtual UTF8 GetName() const
Definition: sprk_ops.h:565
virtual UTF8 GetName() const
Definition: sprk_ops.h:924
virtual UTF8 GetName() const
Definition: sprk_ops.h:127
virtual UTF8 GetName() const
Definition: sprk_ops.h:659
virtual bool OnTouchUp(TouchState const &in_state)
Definition: sprk_ops.h:1011
virtual UTF8 GetName() const
Definition: sprk_ops.h:358
Definition: sprk_ops.h:520
virtual UTF8 GetName() const
Definition: sprk_ops.h:1092
bool GetMouseOverHighlighting() const
Definition: sprk_ops.h:1173
virtual UTF8 GetName() const
Definition: sprk_ops.h:529
Rectangle GetRectangle() const
Definition: sprk_ops.h:335
void SetSelectionOptions(SelectionOptionsKit const &in_options)
Definition: sprk_ops.h:412
virtual bool OnKeyDown(KeyboardState const &in_state)
Definition: sprk_ops.h:972
void SetMouseOverHighlighting(bool in_enable_mouse_over_highlighting)
Definition: sprk_ops.h:1177
Definition: sprk_ops.h:225
void SetHighlightOptions(HighlightOptionsKit const &in_options)
Definition: sprk_ops.h:450
float GetIndicatorScale() const
Definition: sprk_ops.h:1149
HighlightOptionsKit GetHighlightOptions() const
Definition: sprk_ops.h:542
virtual UTF8 GetName() const
Definition: sprk_ops.h:268
Definition: sprk_ops.h:550
virtual UTF8 GetName() const
Definition: sprk_ops.h:596
Definition: sprk_ops.h:918
static ModifierKeys KeyControl()
Definition: hps.h:40227
MaterialMappingKit GetPlaneMaterial() const
Definition: sprk_ops.h:1157
virtual UTF8 GetName() const
Definition: sprk_ops.h:59
virtual UTF8 GetName() const
Definition: sprk_ops.h:703
Definition: sprk_ops.h:122
virtual bool OnKeyUp(KeyboardState const &in_state)
Definition: sprk_ops.h:976
HighlightOptionsKit GetPlaneHighlightOptions() const
Definition: sprk_ops.h:1165
void SetHighlightOptions(HighlightOptionsKit const &in_options)
Definition: sprk_ops.h:537
Definition: sprk_ops.h:354