void CCustomPreferences::FillProp(PropItemVec& props) { PHelper().CreateFlag32 (props,"Objects\\Library\\Discard Instance", &object_flags, epoDiscardInstance); PHelper().CreateFlag32 (props,"Objects\\Skeleton\\Draw Joints", &object_flags, epoDrawJoints); PHelper().CreateFlag32 (props,"Objects\\Skeleton\\Draw Bone Axis", &object_flags, epoDrawBoneAxis); PHelper().CreateFlag32 (props,"Objects\\Skeleton\\Draw Bone Names", &object_flags, epoDrawBoneNames); PHelper().CreateFlag32 (props,"Objects\\Skeleton\\Draw Bone Shapes", &object_flags, epoDrawBoneShapes); PHelper().CreateFlag32 (props,"Objects\\Show\\Hint", &object_flags, epoShowHint); PHelper().CreateFlag32 (props,"Objects\\Show\\Pivot", &object_flags, epoDrawPivot); PHelper().CreateFlag32 (props,"Objects\\Show\\Animation Path", &object_flags, epoDrawAnimPath); PHelper().CreateFlag32 (props,"Objects\\Show\\LOD", &object_flags, epoDrawLOD); PHelper().CreateFlag32 (props,"Objects\\Loading\\Deffered Loading RB", &object_flags, epoDeffLoadRB); PHelper().CreateFlag32 (props,"Objects\\Loading\\Deffered Loading CF", &object_flags, epoDeffLoadCF); PHelper().CreateU32 (props,"Scene\\Common\\Recent Count", &scene_recent_count,0, 25); PHelper().CreateU32 (props,"Scene\\Common\\Undo Level", &scene_undo_level, 0, 125); PHelper().CreateFloat (props,"Scene\\Grid\\Cell Size", &grid_cell_size, 0.1f, 10.f); PHelper().CreateU32 (props,"Scene\\Grid\\Cell Count", &grid_cell_count, 10, 1000); PHelper().CreateBOOL (props,"Tools\\Box Pick\\Limited Depth", &bp_lim_depth); PHelper().CreateBOOL (props,"Tools\\Box Pick\\Back Face Culling", &bp_cull); PHelper().CreateFloat (props,"Tools\\Box Pick\\Depth Tolerance", &bp_depth_tolerance,0.f, 10000.f); PHelper().CreateFloat (props,"Tools\\Sens\\Move", &tools_sens_move); PHelper().CreateFloat (props,"Tools\\Sens\\Rotate", &tools_sens_rot); PHelper().CreateFloat (props,"Tools\\Sens\\Scale", &tools_sens_scale); PHelper().CreateAngle (props,"Tools\\Snap\\Angle", &snap_angle, 0, PI_MUL_2); PHelper().CreateFloat (props,"Tools\\Snap\\Move", &snap_move, 0.01f, 1000.f); PHelper().CreateFloat (props,"Tools\\Snap\\Move To", &snap_moveto, 0.01f, 1000.f); PHelper().CreateFlag32 (props,"Sounds\\Use\\Hardware", &psSoundFlags, ss_Hardware); PHelper().CreateFlag32 (props,"Sounds\\Use\\EAX", &psSoundFlags, ss_EAX); PHelper().CreateFloat (props,"Viewport\\Camera\\Move Sens", &cam_sens_move); PHelper().CreateFloat (props,"Viewport\\Camera\\Rotate Sens", &cam_sens_rot); PHelper().CreateFloat (props,"Viewport\\Camera\\Fly Speed", &cam_fly_speed, 0.01f, 100.f); PHelper().CreateFloat (props,"Viewport\\Camera\\Fly Altitude", &cam_fly_alt, 0.f, 1000.f); PHelper().CreateColor (props,"Viewport\\Fog\\Color", &fog_color ); PHelper().CreateFloat (props,"Viewport\\Fog\\Fogness", &fog_fogness, 0.f, 100.f); PHelper().CreateFloat (props,"Viewport\\Near Plane", &view_np, 0.01f, 10.f); PHelper().CreateFloat (props,"Viewport\\Far Plane", &view_fp, 10.f, 10000.f); PHelper().CreateAngle (props,"Viewport\\FOV", &view_fov, deg2rad(0.1f), deg2rad(170.f)); PHelper().CreateColor (props,"Viewport\\Clear Color", &scene_clear_color ); ButtonValue* B = PHelper().CreateButton (props,"Keyboard\\Common\\File","Load,Save", 0); B->OnBtnClickEvent.bind (this,&CCustomPreferences::OnKeyboardCommonFileClick); ECommandVec& cmds = GetEditorCommands(); for (u32 cmd_idx=0; cmd_idx<cmds.size(); cmd_idx++){ SECommand*& CMD = cmds[cmd_idx]; if (CMD&&CMD->editable){ VERIFY(!CMD->sub_commands.empty()); for (u32 sub_cmd_idx=0; sub_cmd_idx<CMD->sub_commands.size(); sub_cmd_idx++){ SESubCommand*& SUB_CMD = CMD->sub_commands[sub_cmd_idx]; string128 nm; sprintf(nm,"%s%s%s",CMD->Desc(),!SUB_CMD->desc.empty()?"\\":"",SUB_CMD->desc.c_str()); ShortcutValue* V = PHelper().CreateShortcut(props,PrepareKey("Keyboard\\Shortcuts",nm), &SUB_CMD->shortcut); V->OnValidateResultEvent.bind(CheckValidate); } } } }
void __fastcall TfraBottomBar::ebMacroMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { SECommand* CMD = GetEditorCommands()[COMMAND_RUN_MACRO]; VERIFY(CMD); // fill macroses pmMacro->Items->Clear(); TMenuItem* mi; for (u32 k=0; k<CMD->sub_commands.size(); ++k){ SESubCommand* SUB = CMD->sub_commands[k]; BOOL bValid = !xr_string(SUB->p0).empty(); mi = xr_new<TMenuItem>((TComponent*)0); mi->Caption = AnsiString().sprintf("%d: %s",k+1,bValid?xr_string(SUB->p0).c_str():"<empty>"); TMenuItem* e = xr_new<TMenuItem>((TComponent*)0); e->Caption = "Execute"; e->OnClick = MacroExecuteClick; e->Enabled = bValid; e->Tag = k; e->ShortCut = SUB->shortcut.hotkey; TMenuItem* a = xr_new<TMenuItem>((TComponent*)0); a->Caption = "Assign"; a->OnClick = MacroAssignClick; a->Tag = k; TMenuItem* c = xr_new<TMenuItem>((TComponent*)0); c->Caption = "Clear"; c->OnClick = MacroClearClick; c->Tag = k; mi->Add (e); mi->Add (a); mi->Add (c); pmMacro->Items->Add(mi); } mi = xr_new<TMenuItem>((TComponent*)0); mi->Caption = "-"; pmMacro->Items->Add(mi); mi = xr_new<TMenuItem>((TComponent*)0); mi->Caption = "Edit Command List..."; mi->OnClick = MacroEditCommandListClick; pmMacro->Items->Add(mi); mi = xr_new<TMenuItem>((TComponent*)0); mi->Caption = "Log Commands"; mi->AutoCheck = true; mi->Checked = AllowLogCommands(); mi->OnClick = MacroLogCommandsClick; pmMacro->Items->Add(mi); // popup menu POINT pt; GetCursorPos (&pt); pmMacro->Popup (pt.x,pt.y); TExtBtn* btn = dynamic_cast<TExtBtn*>(Sender); VERIFY(btn); btn->MouseManualUp(); }
void CheckValidate(ShortcutValue*, const xr_shortcut& new_val, bool& result) { result = true; ECommandVec& cmds = GetEditorCommands(); for (u32 cmd_idx=0; cmd_idx<cmds.size(); cmd_idx++){ SECommand*& CMD = cmds[cmd_idx]; if (CMD&&CMD->editable){ VERIFY(!CMD->sub_commands.empty()); for (u32 sub_cmd_idx=0; sub_cmd_idx<CMD->sub_commands.size(); sub_cmd_idx++){ SESubCommand*& SUB_CMD = CMD->sub_commands[sub_cmd_idx]; if (SUB_CMD->shortcut.similar(new_val)){ result = false; return;} } } } }